From 178de0871d690556af74f3768c11bc812b07f347 Mon Sep 17 00:00:00 2001 From: Taco Hoekwater Date: Fri, 27 Mar 2009 15:30:55 +0000 Subject: Import of luatex 0.37.0 (autoreconf has not been run yet!) git-svn-id: svn://tug.org/texlive/trunk@12529 c570f23f-e606-0410-a88d-b1316a301751 --- .../texk/web2c/luatexdir/luafontloader/ChangeLog | 5 + .../web2c/luatexdir/luafontloader/ff-config.in | 49 + .../luatexdir/luafontloader/fontforge/AUTHORS | 1 + .../luatexdir/luafontloader/fontforge/INSTALL | 182 + .../luatexdir/luafontloader/fontforge/LICENSE | 29 + .../luatexdir/luafontloader/fontforge/Makefile.in | 160 + .../luafontloader/fontforge/Unicode/ArabicForms.c | 260 + .../luafontloader/fontforge/Unicode/Makefile.in | 36 + .../luafontloader/fontforge/Unicode/alphabet.c | 3348 ++ .../luafontloader/fontforge/Unicode/backtrns.c | 7434 ++++ .../luafontloader/fontforge/Unicode/char.c | 96 + .../luafontloader/fontforge/Unicode/cjk.c | 43019 +++++++++++++++++++ .../luafontloader/fontforge/Unicode/combiners.h | 1014 + .../luafontloader/fontforge/Unicode/dump.c | 994 + .../luafontloader/fontforge/Unicode/gwwiconv.c | 1076 + .../luafontloader/fontforge/Unicode/memory.c | 90 + .../luafontloader/fontforge/Unicode/ucharmap.c | 675 + .../luafontloader/fontforge/Unicode/unialt.c | 8885 ++++ .../luafontloader/fontforge/Unicode/ustring.c | 890 + .../luafontloader/fontforge/Unicode/utype.c | 24588 +++++++++++ .../luatexdir/luafontloader/fontforge/VERSION | 1 + .../luafontloader/fontforge/configure-options | 1 + .../luatexdir/luafontloader/fontforge/configure.in | 704 + .../luafontloader/fontforge/fontforge/Makefile.in | 71 + .../luafontloader/fontforge/fontforge/PfEd.h | 218 + .../luafontloader/fontforge/fontforge/autohint.c | 2143 + .../luafontloader/fontforge/fontforge/baseviews.h | 541 + .../luafontloader/fontforge/fontforge/clipnoui.c | 68 + .../fontforge/fontforge/configure-pfaedit.h | 292 + .../luafontloader/fontforge/fontforge/cvundoes.c | 134 + .../luafontloader/fontforge/fontforge/dumppfa.c | 221 + .../luafontloader/fontforge/fontforge/edgelist.h | 149 + .../luafontloader/fontforge/fontforge/edgelist2.h | 49 + .../luafontloader/fontforge/fontforge/encoding.c | 1152 + .../luafontloader/fontforge/fontforge/encoding.h | 18 + .../fontforge/fontforge/featurefile.c | 4208 ++ .../fontforge/fontforge/fontforgevw.h | 34 + .../fontforge/fontforge/fontviewbase.c | 286 + .../luafontloader/fontforge/fontforge/fvcomposit.c | 160 + .../luafontloader/fontforge/fontforge/fvfonts.c | 572 + .../luafontloader/fontforge/fontforge/libffstamp.h | 3 + .../luafontloader/fontforge/fontforge/libstamp.pre | 103 + .../luafontloader/fontforge/fontforge/lookups.c | 4468 ++ .../luafontloader/fontforge/fontforge/lookups.h | 2 + .../luafontloader/fontforge/fontforge/macbinary.c | 1201 + .../luafontloader/fontforge/fontforge/macenc.c | 2244 + .../fontforge/fontforge/mathconstants.c | 99 + .../luafontloader/fontforge/fontforge/mm.c | 235 + .../luafontloader/fontforge/fontforge/mm.h | 32 + .../luafontloader/fontforge/fontforge/namelist.c | 19799 +++++++++ .../luafontloader/fontforge/fontforge/noprefs.c | 602 + .../luafontloader/fontforge/fontforge/nouiutil.c | 203 + .../luafontloader/fontforge/fontforge/parsepfa.c | 2740 ++ .../luafontloader/fontforge/fontforge/parsettf.c | 6489 +++ .../fontforge/fontforge/parsettfatt.c | 5594 +++ .../fontforge/fontforge/parsettfvar.c | 771 + .../luafontloader/fontforge/fontforge/pfaedit.h | 103 + .../luafontloader/fontforge/fontforge/plugins.h | 99 + .../luafontloader/fontforge/fontforge/psfont.h | 191 + .../luafontloader/fontforge/fontforge/psread.c | 4123 ++ .../luafontloader/fontforge/fontforge/pua.c | 1612 + .../luafontloader/fontforge/fontforge/python.c | 320 + .../luafontloader/fontforge/fontforge/scripting.h | 140 + .../luafontloader/fontforge/fontforge/sd.h | 163 + .../luafontloader/fontforge/fontforge/sfd1.c | 48 + .../luafontloader/fontforge/fontforge/sfd1.h | 112 + .../luafontloader/fontforge/fontforge/splinechar.c | 266 + .../luafontloader/fontforge/fontforge/splinefill.c | 535 + .../luafontloader/fontforge/fontforge/splinefont.c | 642 + .../luafontloader/fontforge/fontforge/splinefont.h | 3044 ++ .../fontforge/fontforge/splineorder2.c | 1508 + .../fontforge/fontforge/splineoverlap.c | 2396 ++ .../fontforge/fontforge/splinerefigure.c | 101 + .../luafontloader/fontforge/fontforge/splinesave.c | 3121 ++ .../fontforge/fontforge/splinesaveafm.c | 261 + .../fontforge/fontforge/splinestroke.c | 1875 + .../luafontloader/fontforge/fontforge/splineutil.c | 4624 ++ .../fontforge/fontforge/splineutil2.c | 2329 + .../luafontloader/fontforge/fontforge/start.c | 77 + .../luafontloader/fontforge/fontforge/stemdb.c | 40 + .../luafontloader/fontforge/fontforge/stemdb.h | 210 + .../luafontloader/fontforge/fontforge/tottf.c | 2048 + .../luafontloader/fontforge/fontforge/tottfaat.c | 134 + .../luafontloader/fontforge/fontforge/tottfgpos.c | 366 + .../luafontloader/fontforge/fontforge/ttf.h | 888 + .../luafontloader/fontforge/fontforge/ttfspecial.c | 903 + .../fontforge/fontforge/uiinterface.h | 511 + .../fontforge/fontforge/unicoderange.h | 38 + .../luafontloader/fontforge/fontforge/views.h | 1087 + .../luafontloader/fontforge/gdraw/Makefile.in | 0 .../luafontloader/fontforge/gutils/Makefile.in | 45 + .../luafontloader/fontforge/gutils/fsys.c | 487 + .../luafontloader/fontforge/gutils/gwwintl.c | 136 + .../luatexdir/luafontloader/fontforge/inc/basics.h | 78 + .../luafontloader/fontforge/inc/chardata.h | 78 + .../luafontloader/fontforge/inc/charset.h | 71 + .../luafontloader/fontforge/inc/config.h.in | 67 + .../luafontloader/fontforge/inc/dynamic.h | 62 + .../luafontloader/fontforge/inc/fileutil.h | 43 + .../luatexdir/luafontloader/fontforge/inc/gdraw.h | 532 + .../luatexdir/luafontloader/fontforge/inc/gfile.h | 62 + .../luafontloader/fontforge/inc/ggadget.h | 509 + .../luatexdir/luafontloader/fontforge/inc/gicons.h | 58 + .../luatexdir/luafontloader/fontforge/inc/gimage.h | 168 + .../luatexdir/luafontloader/fontforge/inc/gio.h | 109 + .../luafontloader/fontforge/inc/gkeysym.h | 298 + .../luafontloader/fontforge/inc/gprogress.h | 79 + .../luafontloader/fontforge/inc/gresource.h | 58 + .../luafontloader/fontforge/inc/gwidget.h | 222 + .../luafontloader/fontforge/inc/gwwiconv.h | 56 + .../luatexdir/luafontloader/fontforge/inc/intl.h | 107 + .../luafontloader/fontforge/inc/ustring.h | 129 + .../luatexdir/luafontloader/fontforge/inc/utype.h | 100 + .../luafontloader/fontforge/plugins/Makefile.in | 0 .../web2c/luatexdir/luafontloader/src/ffdummies.c | 256 + .../web2c/luatexdir/luafontloader/src/luafflib.c | 2379 + 116 files changed, 188542 insertions(+) create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/ChangeLog create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/ff-config.in create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/AUTHORS create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/INSTALL create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/LICENSE create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/Makefile.in create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/Unicode/ArabicForms.c create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/Unicode/Makefile.in create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/Unicode/alphabet.c create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/Unicode/backtrns.c create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/Unicode/char.c create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/Unicode/cjk.c create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/Unicode/combiners.h create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/Unicode/dump.c create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/Unicode/gwwiconv.c create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/Unicode/memory.c create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/Unicode/ucharmap.c create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/Unicode/unialt.c create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/Unicode/ustring.c create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/Unicode/utype.c create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/VERSION create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/configure-options create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/configure.in create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/Makefile.in create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/PfEd.h create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/autohint.c create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/baseviews.h create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/clipnoui.c create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/configure-pfaedit.h create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/cvundoes.c create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/dumppfa.c create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/edgelist.h create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/edgelist2.h create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/encoding.c create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/encoding.h create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/featurefile.c create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/fontforgevw.h create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/fontviewbase.c create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/fvcomposit.c create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/fvfonts.c create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/libffstamp.h create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/libstamp.pre create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/lookups.c create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/lookups.h create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/macbinary.c create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/macenc.c create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/mathconstants.c create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/mm.c create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/mm.h create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/namelist.c create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/noprefs.c create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/nouiutil.c create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/parsepfa.c create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/parsettf.c create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/parsettfatt.c create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/parsettfvar.c create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/pfaedit.h create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/plugins.h create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/psfont.h create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/psread.c create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/pua.c create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/python.c create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/scripting.h create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/sd.h create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/sfd1.c create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/sfd1.h create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/splinechar.c create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/splinefill.c create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/splinefont.c create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/splinefont.h create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/splineorder2.c create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/splineoverlap.c create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/splinerefigure.c create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/splinesave.c create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/splinesaveafm.c create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/splinestroke.c create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/splineutil.c create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/splineutil2.c create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/start.c create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/stemdb.c create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/stemdb.h create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/tottf.c create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/tottfaat.c create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/tottfgpos.c create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/ttf.h create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/ttfspecial.c create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/uiinterface.h create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/unicoderange.h create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/views.h create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/gdraw/Makefile.in create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/gutils/Makefile.in create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/gutils/fsys.c create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/gutils/gwwintl.c create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/inc/basics.h create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/inc/chardata.h create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/inc/charset.h create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/inc/config.h.in create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/inc/dynamic.h create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/inc/fileutil.h create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/inc/gdraw.h create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/inc/gfile.h create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/inc/ggadget.h create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/inc/gicons.h create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/inc/gimage.h create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/inc/gio.h create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/inc/gkeysym.h create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/inc/gprogress.h create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/inc/gresource.h create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/inc/gwidget.h create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/inc/gwwiconv.h create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/inc/intl.h create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/inc/ustring.h create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/inc/utype.h create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/fontforge/plugins/Makefile.in create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/src/ffdummies.c create mode 100644 Build/source/texk/web2c/luatexdir/luafontloader/src/luafflib.c (limited to 'Build/source/texk/web2c/luatexdir/luafontloader') diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/ChangeLog b/Build/source/texk/web2c/luatexdir/luafontloader/ChangeLog new file mode 100644 index 00000000000..b21d051c62b --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/ChangeLog @@ -0,0 +1,5 @@ +2009-03-05 Peter Breitenlohner + + * ff-config.in: new configuration header replacing lots of + defines on the command line. + * fontforge/fontforge/configure-pfaedit.h: include ff-config.h. diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/ff-config.in b/Build/source/texk/web2c/luatexdir/luafontloader/ff-config.in new file mode 100644 index 00000000000..f36a6ebad3c --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/ff-config.in @@ -0,0 +1,49 @@ +/* @configure_input@ */ + +/* Guard against double inclusion. */ +#ifndef FF_CONFIG_H +#define FF_CONFIG_H + +#define _NO_FFSCRIPT 1 + +/* Define to 1 if you have the header file. */ +#undef HAVE_INTTYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_LANGINFO_H + +/* Define to 1 if the system has the type `long double'. */ +#undef HAVE_LONG_DOUBLE + +/* Define to 1 if the system has the type `long long int'. */ +#undef HAVE_LONG_LONG_INT + +/* Define to 1 if you have the header file. */ +#undef HAVE_MEMORY_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDLIB_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRINGS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRING_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_STAT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H + +/* Define to 1 if you have the ANSI C header files. */ +#undef STDC_HEADERS + +#ifdef HAVE_LONG_LONG_INT +# define _HAS_LONGLONG 1 +#endif + +#endif /* !FF_CONFIG_H */ diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/AUTHORS b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/AUTHORS new file mode 100644 index 00000000000..9b6fb61e4f4 --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/AUTHORS @@ -0,0 +1 @@ +George Williams diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/INSTALL b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/INSTALL new file mode 100644 index 00000000000..b42a17ac464 --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/INSTALL @@ -0,0 +1,182 @@ +Basic Installation +================== + + These are generic installation instructions. + + The `configure' shell script attempts to guess correct values for +various system-dependent variables used during compilation. It uses +those values to create a `Makefile' in each directory of the package. +It may also create one or more `.h' files containing system-dependent +definitions. Finally, it creates a shell script `config.status' that +you can run in the future to recreate the current configuration, a file +`config.cache' that saves the results of its tests to speed up +reconfiguring, and a file `config.log' containing compiler output +(useful mainly for debugging `configure'). + + If you need to do unusual things to compile the package, please try +to figure out how `configure' could check whether to do them, and mail +diffs or instructions to the address given in the `README' so they can +be considered for the next release. If at some point `config.cache' +contains results you don't want to keep, you may remove or edit it. + + The file `configure.in' is used to create `configure' by a program +called `autoconf'. You only need `configure.in' if you want to change +it or regenerate `configure' using a newer version of `autoconf'. + +The simplest way to compile this package is: + + 1. `cd' to the directory containing the package's source code and type + `./configure' to configure the package for your system. If you're + using `csh' on an old version of System V, you might need to type + `sh ./configure' instead to prevent `csh' from trying to execute + `configure' itself. + + Running `configure' takes awhile. While running, it prints some + messages telling which features it is checking for. + + 2. Type `make' to compile the package. + + 3. Optionally, type `make check' to run any self-tests that come with + the package. + + 4. Type `make install' to install the programs and any data files and + documentation. + + 5. You can remove the program binaries and object files from the + source code directory by typing `make clean'. To also remove the + files that `configure' created (so you can compile the package for + a different kind of computer), type `make distclean'. There is + also a `make maintainer-clean' target, but that is intended mainly + for the package's developers. If you use it, you may have to get + all sorts of other programs in order to regenerate files that came + with the distribution. + +Compilers and Options +===================== + + Some systems require unusual options for compilation or linking that +the `configure' script does not know about. You can give `configure' +initial values for variables by setting them in the environment. Using +a Bourne-compatible shell, you can do that on the command line like +this: + CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure + +Or on systems that have the `env' program, you can do it like this: + env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure + +Compiling For Multiple Architectures +==================================== + + You can compile the package for more than one kind of computer at the +same time, by placing the object files for each architecture in their +own directory. To do this, you must use a version of `make' that +supports the `VPATH' variable, such as GNU `make'. `cd' to the +directory where you want the object files and executables to go and run +the `configure' script. `configure' automatically checks for the +source code in the directory that `configure' is in and in `..'. + + If you have to use a `make' that does not supports the `VPATH' +variable, you have to compile the package for one architecture at a time +in the source code directory. After you have installed the package for +one architecture, use `make distclean' before reconfiguring for another +architecture. + +Installation Names +================== + + By default, `make install' will install the package's files in +`/usr/local/bin', `/usr/local/man', etc. You can specify an +installation prefix other than `/usr/local' by giving `configure' the +option `--prefix=PATH'. + + You can specify separate installation prefixes for +architecture-specific files and architecture-independent files. If you +give `configure' the option `--exec-prefix=PATH', the package will use +PATH as the prefix for installing programs and libraries. +Documentation and other data files will still use the regular prefix. + + In addition, if you use an unusual directory layout you can give +options like `--bindir=PATH' to specify different values for particular +kinds of files. Run `configure --help' for a list of the directories +you can set and what kinds of files go in them. + + If the package supports it, you can cause programs to be installed +with an extra prefix or suffix on their names by giving `configure' the +option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. + +Optional Features +================= + + Some packages pay attention to `--enable-FEATURE' options to +`configure', where FEATURE indicates an optional part of the package. +They may also pay attention to `--with-PACKAGE' options, where PACKAGE +is something like `gnu-as' or `x' (for the X Window System). The +`README' should mention any `--enable-' and `--with-' options that the +package recognizes. + + For packages that use the X Window System, `configure' can usually +find the X include and library files automatically, but if it doesn't, +you can use the `configure' options `--x-includes=DIR' and +`--x-libraries=DIR' to specify their locations. + +Specifying the System Type +========================== + + There may be some features `configure' can not figure out +automatically, but needs to determine by the type of host the package +will run on. Usually `configure' can figure that out, but if it prints +a message saying it can not guess the host type, give it the +`--host=TYPE' option. TYPE can either be a short name for the system +type, such as `sun4', or a canonical name with three fields: + CPU-COMPANY-SYSTEM + +See the file `config.sub' for the possible values of each field. If +`config.sub' isn't included in this package, then this package doesn't +need to know the host type. + + If you are building compiler tools for cross-compiling, you can also +use the `--target=TYPE' option to select the type of system they will +produce code for and the `--build=TYPE' option to select the type of +system on which you are compiling the package. + +Sharing Defaults +================ + + If you want to set default values for `configure' scripts to share, +you can create a site shell script called `config.site' that gives +default values for variables like `CC', `cache_file', and `prefix'. +`configure' looks for `PREFIX/share/config.site' if it exists, then +`PREFIX/etc/config.site' if it exists. Or, you can set the +`CONFIG_SITE' environment variable to the location of the site script. +A warning: not all `configure' scripts look for a site script. + +Operation Controls +================== + + `configure' recognizes the following options to control how it +operates. + +`--cache-file=FILE' + Use and save the results of the tests in FILE instead of + `./config.cache'. Set FILE to `/dev/null' to disable caching, for + debugging `configure'. + +`--help' + Print a summary of the options to `configure', and exit. + +`--quiet' +`--silent' +`-q' + Do not print messages saying which checks are being made. To + suppress all normal output, redirect it to `/dev/null' (any error + messages will still be shown). + +`--srcdir=DIR' + Look for the package's source code in directory DIR. Usually + `configure' can determine that directory automatically. + +`--version' + Print the version of Autoconf used to generate the `configure' + script, and exit. + +`configure' also accepts some other, not widely useful, options. diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/LICENSE b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/LICENSE new file mode 100644 index 00000000000..1788d6d0f59 --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/LICENSE @@ -0,0 +1,29 @@ +FontForge is copyright (C) 2000,2001,2002,2003,2004,2005,2006,2007,2008 +by George Williams. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +The configure script is subject to the GNU public license. See the file +COPYING. diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/Makefile.in b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/Makefile.in new file mode 100644 index 00000000000..2264a813c90 --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/Makefile.in @@ -0,0 +1,160 @@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ + +bindir = @bindir@ +libdir = @libdir@ +mandir = @mandir@ +includedir = @includedir@ +sharedir = $(prefix)/share/fontforge +pixmapsdir = $(sharedir)/pixmaps +docdir = $(prefix)/share/doc/fontforge +localedir = $(prefix)/share/locale +pythondir = $(sharedir)/python + +srcdir = @srcdir@ +top_builddir = . + +LIBTOOL = @LIBTOOL@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ + +all: fontforge + +libs: libgunicode libgutils @GDRAW_LIB@ + +fontforge: libgunicode libgutils @GDRAW_LIB@ + ( cd fontforge ; $(MAKE) ) + +libgunicode: + ( cd Unicode ; $(MAKE) ) + +libgutils: libgunicode + ( cd gutils ; $(MAKE) ) + +libgdraw: libgutils libgunicode + ( cd gdraw ; $(MAKE) ) + +fontforgegtk: fontforge + ( cd gtkui ; $(MAKE) ) + +clean: + ( cd fontforge ; $(MAKE) clean ) + ( cd Unicode ; $(MAKE) clean ) + ( cd gutils ; $(MAKE) clean ) + ( cd gdraw ; $(MAKE) clean ) + ( cd plugins ; $(MAKE) clean ) + if test -d gtkui; then cd gtkui ; $(MAKE) clean ; fi + -( cd pyhook ; for dir in * ; do if test -d $$dir -a "$$dir" != "CVS" ; then rm -rf $$dir ; fi; done ) + -rm -rf .libs + +distclean cleaner: + ( cd fontforge ; $(MAKE) distclean ) + ( cd Unicode ; $(MAKE) distclean ) + ( cd gutils ; $(MAKE) distclean ) + ( cd gdraw ; $(MAKE) distclean ) + ( cd plugins ; $(MAKE) distclean ) + if test -d gtkui; then cd gtkui ; $(MAKE) distclean ; fi + -( cd pyhook ; rm setup.py ; for dir in * ; do if test -d $$dir -a "$$dir" != "CVS" ; then rm -rf $$dir ; fi; done) + -rm -rf .libs + -rm Makefile config.cache config.log config.status libtool fontforge.pc systemspecific inc/config.h + +install_libs: libs +# You may need to be root to do the install + mkdir -p $(DESTDIR)$(libdir) + #-rm $(DESTDIR)$(libdir)/libgdraw.so* $(DESTDIR)$(libdir)/libgunicode.so.* + $(LIBTOOL) --mode=install $(INSTALL) -c libgunicode.la $(DESTDIR)$(libdir)/libgunicode.la + $(LIBTOOL) --mode=install $(INSTALL) -c libgutils.la $(DESTDIR)$(libdir)/libgutils.la + $(LIBTOOL) --mode=install $(INSTALL) -c libgioftp.la $(DESTDIR)$(libdir)/libgioftp.la +#We don't build gdraw if no X + if test -r libgdraw.la ; then $(LIBTOOL) --mode=install $(INSTALL) -c libgdraw.la $(DESTDIR)$(libdir)/libgdraw.la ; fi +#We don't always build libfontforge + if test -r libfontforge.la ; then $(LIBTOOL) --mode=install $(INSTALL) -c libfontforge.la $(DESTDIR)$(libdir)/libfontforge.la ; fi + $(LIBTOOL) --mode=finish $(DESTDIR)$(libdir) + mkdir -p $(DESTDIR)$(libdir)/pkgconfig + $(INSTALL_DATA) fontforge.pc $(DESTDIR)$(libdir)/pkgconfig + +install_incs: + mkdir -p $(DESTDIR)$(includedir)/fontforge + $(INSTALL_DATA) $(srcdir)/inc/*.h $(DESTDIR)$(includedir)/fontforge +# $(INSTALL_DATA) `grep -L GGadget $(srcdir)/fontforge/*.h` $(DESTDIR)$(includedir)/fontforge + ( for file in $(srcdir)/fontforge/*.h ; do if grep GGadget $$file >/dev/null 2>&1 ; then echo pointless >/dev/null ; else $(INSTALL_DATA) $$file $(DESTDIR)$(includedir)/fontforge ; fi ; done ) + +install_docs: + mkdir -p $(DESTDIR)$(docdir) + mkdir -p $(DESTDIR)$(docdir)/flags $(DESTDIR)$(docdir)/ja +#explicit use of sh to make sure we don't invoke csh with different "if" syntax + -sh -c "if test -d $(srcdir)/htdocs/ja >/dev/null ; then mkdir -p $(DESTDIR)$(docdir)/ja ; fi" + -$(INSTALL_DATA) $(srcdir)/htdocs/*.{html,png,gif,pdf} $(DESTDIR)$(docdir) + -$(INSTALL_DATA) $(srcdir)/htdocs/flags/* $(DESTDIR)$(docdir)/flags + -$(INSTALL_DATA) $(srcdir)/htdocs/ja/* $(DESTDIR)$(docdir)/ja + +install_pycontrib: + mkdir -p $(DESTDIR)$(pythondir) + ( cd pycontrib ; $(INSTALL_DATA) *.py $(DESTDIR)$(pythondir) ) + +install_prog: + mkdir -p $(DESTDIR)$(bindir) + mkdir -p $(DESTDIR)$(mandir)/man1 + mkdir -p $(DESTDIR)$(sharedir) + mkdir -p $(DESTDIR)$(pixmapsdir) + $(LIBTOOL) --mode=install $(INSTALL) -c fontforge/fontforge $(DESTDIR)$(bindir) + $(LIBTOOL) --mode=install $(INSTALL) -c fontforge/sfddiff $(DESTDIR)$(bindir) + $(LIBTOOL) --mode=install $(INSTALL) -c fontforge/fontimage $(DESTDIR)$(bindir) + $(LIBTOOL) --mode=install $(INSTALL) -c fontforge/fontlint $(DESTDIR)$(bindir) +# -rm -f $(DESTDIR)$(bindir)/pfaedit +# (cd $(DESTDIR)$(bindir) ; ln -s fontforge pfaedit) +# $(INSTALL_DATA) fontforge/pfaedit-*.ui $(DESTDIR)$(sharedir) +#The next line will fail for most installs. If you have downloaded the cidmaps +# this will install them. If you haven't it won't. You only need the cidmaps +# if you are editing CID keyed files (and even then you can live without them + -$(INSTALL_DATA) $(srcdir)/cidmap/*.cidmap $(DESTDIR)$(sharedir) >/dev/null 2>&1 + -$(INSTALL_DATA) $(srcdir)/fontforge/pixmaps/*.png $(DESTDIR)$(pixmapsdir) + $(INSTALL_DATA) $(srcdir)/fontforge/fontforge.1 $(DESTDIR)$(mandir)/man1 + $(INSTALL_DATA) $(srcdir)/fontforge/sfddiff.1 $(DESTDIR)$(mandir)/man1 + $(INSTALL_DATA) $(srcdir)/fontforge/fontimage.1 $(DESTDIR)$(mandir)/man1 + $(INSTALL_DATA) $(srcdir)/fontforge/fontlint.1 $(DESTDIR)$(mandir)/man1 + +install: $(DESTDIR)$(sharedir) all install_libs install_incs install_prog install_pycontrib +# You may need to be root to do the install +#explicit use of sh to make sure we don't invoke csh with different "if" syntax + sh -c "if test -d $(srcdir)/htdocs >/dev/null ; then $(MAKE) install_docs ; fi" + sh -c "if test -d fontforge/FontForge.app >/dev/null ; then rm -rf /Applications/FontForge.app ; mv fontforge/FontForge.app /Applications ; ln -s /usr/local/bin/fontforge /Applications/FontForge.app/Contents/MacOS/FontForge ; fi" + sh < systemspecific +#we don't always create a setup.py + -(cd pyhook ; if test -r setup.py ; then python setup.py install --prefix=$(prefix) --root=$(DESTDIR); for dir in * ; do if test -d $$dir -a "$$dir" != "CVS" ; then rm -rf $$dir ; fi; done ; fi ) + +install_py: $(DESTDIR)$(sharedir) all install_libs install_incs install_prog install_pycontrib +# You may need to be root to do the install +#explicit use of sh to make sure we don't invoke csh with different "if" syntax + sh -c "if test -d $(srcdir)/htdocs >/dev/null ; then $(MAKE) install_docs ; for dir in * ; do if test -d $$dir ; then rm -rf $$dir ; fi; done ; fi" + sh -c "if test -d fontforge/FontForge.app >/dev/null ; then rm -rf /Applications/FontForge.app ; mv fontforge/FontForge.app /Applications ; ln -s /usr/local/bin/fontforge /Applications/FontForge.app/Contents/MacOS/FontForge ; fi" + sh < systemspecific + -(cd pyhook ; python setup.py bdist --formats=gztar ; cp dist/fontforge-*.tar.gz $(DESTDIR)/tmp; for dir in * ; do if test -d $$dir -a "$$dir" != "CVS" ; then rm -rf $$dir ; fi; done ) + +install_gtk: fontforgegtk + (cd gtkui ; $(MAKE) install ) + +uninstall: + -rm $(DESTDIR)$(bindir)/fontforge + -rm $(DESTDIR)$(bindir)/sfddiff + -rm $(DESTDIR)$(bindir)/fontimage + -rm $(DESTDIR)$(bindir)/fontlint + -rm $(DESTDIR)$(sharedir)/pfaedit-*.ui + -rm $(DESTDIR)$(localedir)/*/LC_MESSAGES/FontForge.mo + -rm $(DESTDIR)$(mandir)/man1/fontimage.1 + -rm $(DESTDIR)$(mandir)/man1/fontforge.1 + -rm $(DESTDIR)$(mandir)/man1/sfddiff.1 + -rm $(DESTDIR)$(mandir)/man1/fontlint.1 + -rm $(DESTDIR)$(libdir)/libgdraw.* + -rm $(DESTDIR)$(libdir)/libgutils.* + -rm $(DESTDIR)$(libdir)/libgioftp.* + -rm $(DESTDIR)$(libdir)/libgunicode.* + -rm $(DESTDIR)$(libdir)/libfontforge.* + -rm $(DESTDIR)$(sharedir)/*.cidmap + -rm $(DESTDIR)$(includedir)/fontforge/*.h + -rm -rf $(DESTDIR)$(docdir)/* + -rm $(DESTDIR)$(libdir)/pkgconfig/fontforge.pc + -rm $(DESTDIR)$(pythondir)/* + +$(DESTDIR)$(sharedir): + mkdir -p $(DESTDIR)$(sharedir) diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/Unicode/ArabicForms.c b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/Unicode/ArabicForms.c new file mode 100644 index 00000000000..7fe973b1c8e --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/Unicode/ArabicForms.c @@ -0,0 +1,260 @@ +#include + +struct arabicforms ArabicForms[] = { + { 0x0600, 0x0600, 0x0600, 0x0600, 0, 0, 0 }, + { 0x0601, 0x0601, 0x0601, 0x0601, 0, 0, 0 }, + { 0x0602, 0x0602, 0x0602, 0x0602, 0, 0, 0 }, + { 0x0603, 0x0603, 0x0603, 0x0603, 0, 0, 0 }, + { 0x0000, 0x0000, 0x0000, 0x0000, 0, 0, 0 }, + { 0x0000, 0x0000, 0x0000, 0x0000, 0, 0, 0 }, + { 0x0606, 0x0606, 0x0606, 0x0606, 0, 0, 0 }, + { 0x0607, 0x0607, 0x0607, 0x0607, 0, 0, 0 }, + { 0x0608, 0x0608, 0x0608, 0x0608, 0, 0, 0 }, + { 0x0609, 0x0609, 0x0609, 0x0609, 0, 0, 0 }, + { 0x060a, 0x060a, 0x060a, 0x060a, 0, 0, 0 }, + { 0x060b, 0x060b, 0x060b, 0x060b, 0, 0, 0 }, + { 0x060c, 0x060c, 0x060c, 0x060c, 0, 0, 0 }, + { 0x060d, 0x060d, 0x060d, 0x060d, 0, 0, 0 }, + { 0x060e, 0x060e, 0x060e, 0x060e, 0, 0, 0 }, + { 0x060f, 0x060f, 0x060f, 0x060f, 0, 0, 0 }, + { 0x0610, 0x0610, 0x0610, 0x0610, 0, 0, 0 }, + { 0x0611, 0x0611, 0x0611, 0x0611, 0, 0, 0 }, + { 0x0612, 0x0612, 0x0612, 0x0612, 0, 0, 0 }, + { 0x0613, 0x0613, 0x0613, 0x0613, 0, 0, 0 }, + { 0x0614, 0x0614, 0x0614, 0x0614, 0, 0, 0 }, + { 0x0615, 0x0615, 0x0615, 0x0615, 0, 0, 0 }, + { 0x0616, 0x0616, 0x0616, 0x0616, 0, 0, 0 }, + { 0x0617, 0x0617, 0x0617, 0x0617, 0, 0, 0 }, + { 0x0618, 0x0618, 0x0618, 0x0618, 0, 0, 0 }, + { 0x0619, 0x0619, 0x0619, 0x0619, 0, 0, 0 }, + { 0x061a, 0x061a, 0x061a, 0x061a, 0, 0, 0 }, + { 0x061b, 0x061b, 0x061b, 0x061b, 0, 0, 0 }, + { 0x0000, 0x0000, 0x0000, 0x0000, 0, 0, 0 }, + { 0x0000, 0x0000, 0x0000, 0x0000, 0, 0, 0 }, + { 0x061e, 0x061e, 0x061e, 0x061e, 0, 0, 0 }, + { 0x061f, 0x061f, 0x061f, 0x061f, 0, 0, 0 }, + { 0x0000, 0x0000, 0x0000, 0x0000, 0, 0, 0 }, + { 0x0621, 0x0621, 0x0621, 0xfe80, 1, 0, 0 }, + { 0x0622, 0x0622, 0xfe82, 0xfe81, 1, 0, 0 }, + { 0x0623, 0x0623, 0xfe84, 0xfe83, 1, 0, 0 }, + { 0x0624, 0x0624, 0xfe86, 0xfe85, 1, 0, 0 }, + { 0x0625, 0x0625, 0xfe88, 0xfe87, 1, 0, 0 }, + { 0xfe8b, 0xfe8c, 0xfe8a, 0xfe89, 1, 1, 0 }, + { 0x0627, 0x0627, 0xfe8e, 0xfe8d, 1, 0, 0 }, + { 0xfe91, 0xfe92, 0xfe90, 0xfe8f, 1, 1, 0 }, + { 0x0629, 0x0629, 0xfe94, 0xfe93, 1, 0, 0 }, + { 0xfe97, 0xfe98, 0xfe96, 0xfe95, 1, 1, 0 }, + { 0xfe9b, 0xfe9c, 0xfe9a, 0xfe99, 1, 1, 0 }, + { 0xfe9f, 0xfea0, 0xfe9e, 0xfe9d, 1, 1, 0 }, + { 0xfea3, 0xfea4, 0xfea2, 0xfea1, 1, 1, 0 }, + { 0xfea7, 0xfea8, 0xfea6, 0xfea5, 1, 1, 0 }, + { 0x062f, 0x062f, 0xfeaa, 0xfea9, 1, 0, 0 }, + { 0x0630, 0x0630, 0xfeac, 0xfeab, 1, 0, 0 }, + { 0x0631, 0x0631, 0xfeae, 0xfead, 1, 0, 0 }, + { 0x0632, 0x0632, 0xfeb0, 0xfeaf, 1, 0, 0 }, + { 0xfeb3, 0xfeb4, 0xfeb2, 0xfeb1, 1, 1, 0 }, + { 0xfeb7, 0xfeb8, 0xfeb6, 0xfeb5, 1, 1, 0 }, + { 0xfebb, 0xfebc, 0xfeba, 0xfeb9, 1, 1, 0 }, + { 0xfebf, 0xfec0, 0xfebe, 0xfebd, 1, 1, 0 }, + { 0xfec3, 0xfec4, 0xfec2, 0xfec1, 1, 1, 0 }, + { 0xfec7, 0xfec8, 0xfec6, 0xfec5, 1, 1, 0 }, + { 0xfecb, 0xfecc, 0xfeca, 0xfec9, 1, 1, 0 }, + { 0xfecf, 0xfed0, 0xfece, 0xfecd, 1, 1, 0 }, + { 0x063b, 0x063b, 0x063b, 0x063b, 1, 0, 0 }, + { 0x063c, 0x063c, 0x063c, 0x063c, 1, 0, 0 }, + { 0x063d, 0x063d, 0x063d, 0x063d, 1, 0, 0 }, + { 0x063e, 0x063e, 0x063e, 0x063e, 1, 0, 0 }, + { 0x063f, 0x063f, 0x063f, 0x063f, 1, 0, 0 }, + { 0x0640, 0x0640, 0x0640, 0x0640, 0, 0, 0 }, + { 0xfed3, 0xfed4, 0xfed2, 0xfed1, 1, 1, 0 }, + { 0xfed7, 0xfed8, 0xfed6, 0xfed5, 1, 1, 0 }, + { 0xfedb, 0xfedc, 0xfeda, 0xfed9, 1, 1, 0 }, + { 0xfedf, 0xfee0, 0xfede, 0xfedd, 1, 1, 1 }, + { 0xfee3, 0xfee4, 0xfee2, 0xfee1, 1, 1, 0 }, + { 0xfee7, 0xfee8, 0xfee6, 0xfee5, 1, 1, 0 }, + { 0xfeeb, 0xfeec, 0xfeea, 0xfee9, 1, 1, 0 }, + { 0x0648, 0x0648, 0xfeee, 0xfeed, 1, 0, 0 }, + { 0x0649, 0x0649, 0xfef0, 0xfeef, 1, 0, 0 }, + { 0xfef3, 0xfef4, 0xfef2, 0xfef1, 1, 1, 0 }, + { 0x064b, 0x064b, 0x064b, 0x064b, 0, 0, 0 }, + { 0x064c, 0x064c, 0x064c, 0x064c, 0, 0, 0 }, + { 0x064d, 0x064d, 0x064d, 0x064d, 0, 0, 0 }, + { 0x064e, 0x064e, 0x064e, 0x064e, 0, 0, 0 }, + { 0x064f, 0x064f, 0x064f, 0x064f, 0, 0, 0 }, + { 0x0650, 0x0650, 0x0650, 0x0650, 0, 0, 0 }, + { 0x0651, 0x0651, 0x0651, 0x0651, 0, 0, 0 }, + { 0x0652, 0x0652, 0x0652, 0x0652, 0, 0, 0 }, + { 0x0653, 0x0653, 0x0653, 0x0653, 0, 0, 0 }, + { 0x0654, 0x0654, 0x0654, 0x0654, 0, 0, 0 }, + { 0x0655, 0x0655, 0x0655, 0x0655, 0, 0, 0 }, + { 0x0656, 0x0656, 0x0656, 0x0656, 0, 0, 0 }, + { 0x0657, 0x0657, 0x0657, 0x0657, 0, 0, 0 }, + { 0x0658, 0x0658, 0x0658, 0x0658, 0, 0, 0 }, + { 0x0659, 0x0659, 0x0659, 0x0659, 0, 0, 0 }, + { 0x065a, 0x065a, 0x065a, 0x065a, 0, 0, 0 }, + { 0x065b, 0x065b, 0x065b, 0x065b, 0, 0, 0 }, + { 0x065c, 0x065c, 0x065c, 0x065c, 0, 0, 0 }, + { 0x065d, 0x065d, 0x065d, 0x065d, 0, 0, 0 }, + { 0x065e, 0x065e, 0x065e, 0x065e, 0, 0, 0 }, + { 0x0000, 0x0000, 0x0000, 0x0000, 0, 0, 0 }, + { 0x0660, 0x0660, 0x0660, 0x0660, 0, 0, 0 }, + { 0x0661, 0x0661, 0x0661, 0x0661, 0, 0, 0 }, + { 0x0662, 0x0662, 0x0662, 0x0662, 0, 0, 0 }, + { 0x0663, 0x0663, 0x0663, 0x0663, 0, 0, 0 }, + { 0x0664, 0x0664, 0x0664, 0x0664, 0, 0, 0 }, + { 0x0665, 0x0665, 0x0665, 0x0665, 0, 0, 0 }, + { 0x0666, 0x0666, 0x0666, 0x0666, 0, 0, 0 }, + { 0x0667, 0x0667, 0x0667, 0x0667, 0, 0, 0 }, + { 0x0668, 0x0668, 0x0668, 0x0668, 0, 0, 0 }, + { 0x0669, 0x0669, 0x0669, 0x0669, 0, 0, 0 }, + { 0x066a, 0x066a, 0x066a, 0x066a, 0, 0, 0 }, + { 0x066b, 0x066b, 0x066b, 0x066b, 0, 0, 0 }, + { 0x066c, 0x066c, 0x066c, 0x066c, 0, 0, 0 }, + { 0x066d, 0x066d, 0x066d, 0x066d, 0, 0, 0 }, + { 0x066e, 0x066e, 0x066e, 0x066e, 1, 0, 0 }, + { 0x066f, 0x066f, 0x066f, 0x066f, 1, 0, 0 }, + { 0x0670, 0x0670, 0x0670, 0x0670, 1, 0, 0 }, + { 0x0671, 0x0671, 0xfb51, 0xfb50, 1, 0, 0 }, + { 0x0672, 0x0672, 0x0672, 0x0672, 1, 0, 0 }, + { 0x0673, 0x0673, 0x0673, 0x0673, 1, 0, 0 }, + { 0x0674, 0x0674, 0x0674, 0x0674, 1, 0, 0 }, + { 0x0675, 0x0675, 0x0675, 0x0675, 1, 0, 0 }, + { 0x0676, 0x0676, 0x0676, 0x0676, 1, 0, 0 }, + { 0x0677, 0x0677, 0x0677, 0xfbdd, 1, 0, 0 }, + { 0x0678, 0x0678, 0x0678, 0x0678, 1, 0, 0 }, + { 0xfb68, 0xfb69, 0xfb67, 0xfb66, 1, 1, 0 }, + { 0xfb60, 0xfb61, 0xfb5f, 0xfb5e, 1, 1, 0 }, + { 0xfb54, 0xfb55, 0xfb53, 0xfb52, 1, 1, 0 }, + { 0x067c, 0x067c, 0x067c, 0x067c, 1, 0, 0 }, + { 0x067d, 0x067d, 0x067d, 0x067d, 1, 0, 0 }, + { 0xfb58, 0xfb59, 0xfb57, 0xfb56, 1, 1, 0 }, + { 0xfb64, 0xfb65, 0xfb63, 0xfb62, 1, 1, 0 }, + { 0xfb5c, 0xfb5d, 0xfb5b, 0xfb5a, 1, 1, 0 }, + { 0x0681, 0x0681, 0x0681, 0x0681, 1, 0, 0 }, + { 0x0682, 0x0682, 0x0682, 0x0682, 1, 0, 0 }, + { 0xfb78, 0xfb79, 0xfb77, 0xfb76, 1, 1, 0 }, + { 0xfb74, 0xfb75, 0xfb73, 0xfb72, 1, 1, 0 }, + { 0x0685, 0x0685, 0x0685, 0x0685, 1, 0, 0 }, + { 0xfb7c, 0xfb7d, 0xfb7b, 0xfb7a, 1, 1, 0 }, + { 0xfb80, 0xfb81, 0xfb7f, 0xfb7e, 1, 1, 0 }, + { 0x0688, 0x0688, 0xfb89, 0xfb88, 1, 0, 0 }, + { 0x0689, 0x0689, 0x0689, 0x0689, 1, 0, 0 }, + { 0x068a, 0x068a, 0x068a, 0x068a, 1, 0, 0 }, + { 0x068b, 0x068b, 0x068b, 0x068b, 1, 0, 0 }, + { 0x068c, 0x068c, 0xfb85, 0xfb84, 1, 0, 0 }, + { 0x068d, 0x068d, 0xfb83, 0xfb82, 1, 0, 0 }, + { 0x068e, 0x068e, 0xfb87, 0xfb86, 1, 0, 0 }, + { 0x068f, 0x068f, 0x068f, 0x068f, 1, 0, 0 }, + { 0x0690, 0x0690, 0x0690, 0x0690, 1, 0, 0 }, + { 0x0691, 0x0691, 0xfb8d, 0xfb8c, 1, 0, 0 }, + { 0x0692, 0x0692, 0x0692, 0x0692, 1, 0, 0 }, + { 0x0693, 0x0693, 0x0693, 0x0693, 1, 0, 0 }, + { 0x0694, 0x0694, 0x0694, 0x0694, 1, 0, 0 }, + { 0x0695, 0x0695, 0x0695, 0x0695, 1, 0, 0 }, + { 0x0696, 0x0696, 0x0696, 0x0696, 1, 0, 0 }, + { 0x0697, 0x0697, 0x0697, 0x0697, 1, 0, 0 }, + { 0x0698, 0x0698, 0xfb8b, 0xfb8a, 1, 0, 0 }, + { 0x0699, 0x0699, 0x0699, 0x0699, 1, 0, 0 }, + { 0x069a, 0x069a, 0x069a, 0x069a, 1, 0, 0 }, + { 0x069b, 0x069b, 0x069b, 0x069b, 1, 0, 0 }, + { 0x069c, 0x069c, 0x069c, 0x069c, 1, 0, 0 }, + { 0x069d, 0x069d, 0x069d, 0x069d, 1, 0, 0 }, + { 0x069e, 0x069e, 0x069e, 0x069e, 1, 0, 0 }, + { 0x069f, 0x069f, 0x069f, 0x069f, 1, 0, 0 }, + { 0x06a0, 0x06a0, 0x06a0, 0x06a0, 1, 0, 0 }, + { 0x06a1, 0x06a1, 0x06a1, 0x06a1, 1, 0, 0 }, + { 0x06a2, 0x06a2, 0x06a2, 0x06a2, 1, 0, 0 }, + { 0x06a3, 0x06a3, 0x06a3, 0x06a3, 1, 0, 0 }, + { 0xfb6c, 0xfb6d, 0xfb6b, 0xfb6a, 1, 1, 0 }, + { 0x06a5, 0x06a5, 0x06a5, 0x06a5, 1, 0, 0 }, + { 0xfb70, 0xfb71, 0xfb6f, 0xfb6e, 1, 1, 0 }, + { 0x06a7, 0x06a7, 0x06a7, 0x06a7, 1, 0, 0 }, + { 0x06a8, 0x06a8, 0x06a8, 0x06a8, 1, 0, 0 }, + { 0xfb90, 0xfb91, 0xfb8f, 0xfb8e, 1, 1, 0 }, + { 0x06aa, 0x06aa, 0x06aa, 0x06aa, 1, 0, 0 }, + { 0x06ab, 0x06ab, 0x06ab, 0x06ab, 1, 0, 0 }, + { 0x06ac, 0x06ac, 0x06ac, 0x06ac, 1, 0, 0 }, + { 0xfbd5, 0xfbd6, 0xfbd4, 0xfbd3, 1, 1, 0 }, + { 0x06ae, 0x06ae, 0x06ae, 0x06ae, 1, 0, 0 }, + { 0xfb94, 0xfb95, 0xfb93, 0xfb92, 1, 1, 0 }, + { 0x06b0, 0x06b0, 0x06b0, 0x06b0, 1, 0, 0 }, + { 0xfb9c, 0xfb9d, 0xfb9b, 0xfb9a, 1, 1, 0 }, + { 0x06b2, 0x06b2, 0x06b2, 0x06b2, 1, 0, 0 }, + { 0xfb98, 0xfb99, 0xfb97, 0xfb96, 1, 1, 0 }, + { 0x06b4, 0x06b4, 0x06b4, 0x06b4, 1, 0, 0 }, + { 0x06b5, 0x06b5, 0x06b5, 0x06b5, 1, 0, 0 }, + { 0x06b6, 0x06b6, 0x06b6, 0x06b6, 1, 0, 0 }, + { 0x06b7, 0x06b7, 0x06b7, 0x06b7, 1, 0, 0 }, + { 0x06b8, 0x06b8, 0x06b8, 0x06b8, 1, 0, 0 }, + { 0x06b9, 0x06b9, 0x06b9, 0x06b9, 1, 0, 0 }, + { 0x06ba, 0x06ba, 0xfb9f, 0xfb9e, 1, 0, 0 }, + { 0xfba2, 0xfba3, 0xfba1, 0xfba0, 1, 1, 0 }, + { 0x06bc, 0x06bc, 0x06bc, 0x06bc, 1, 0, 0 }, + { 0x06bd, 0x06bd, 0x06bd, 0x06bd, 1, 0, 0 }, + { 0xfbac, 0xfbad, 0xfbab, 0xfbaa, 1, 1, 0 }, + { 0x06bf, 0x06bf, 0x06bf, 0x06bf, 1, 0, 0 }, + { 0x06c0, 0x06c0, 0xfba5, 0xfba4, 1, 0, 0 }, + { 0xfba8, 0xfba9, 0xfba7, 0xfba6, 1, 1, 0 }, + { 0x06c2, 0x06c2, 0x06c2, 0x06c2, 1, 0, 0 }, + { 0x06c3, 0x06c3, 0x06c3, 0x06c3, 1, 0, 0 }, + { 0x06c4, 0x06c4, 0x06c4, 0x06c4, 1, 0, 0 }, + { 0x06c5, 0x06c5, 0xfbe1, 0xfbe0, 1, 0, 0 }, + { 0x06c6, 0x06c6, 0xfbda, 0xfbd9, 1, 0, 0 }, + { 0x06c7, 0x06c7, 0xfbd8, 0xfbd7, 1, 0, 0 }, + { 0x06c8, 0x06c8, 0xfbdc, 0xfbdb, 1, 0, 0 }, + { 0x06c9, 0x06c9, 0xfbe3, 0xfbe2, 1, 0, 0 }, + { 0x06ca, 0x06ca, 0x06ca, 0x06ca, 1, 0, 0 }, + { 0x06cb, 0x06cb, 0xfbdf, 0xfbde, 1, 0, 0 }, + { 0xfbfe, 0xfbff, 0xfbfd, 0xfbfc, 1, 1, 0 }, + { 0x06cd, 0x06cd, 0x06cd, 0x06cd, 1, 0, 0 }, + { 0x06ce, 0x06ce, 0x06ce, 0x06ce, 1, 0, 0 }, + { 0x06cf, 0x06cf, 0x06cf, 0x06cf, 1, 0, 0 }, + { 0xfbe6, 0xfbe7, 0xfbe5, 0xfbe4, 1, 1, 0 }, + { 0x06d1, 0x06d1, 0x06d1, 0x06d1, 1, 0, 0 }, + { 0x06d2, 0x06d2, 0xfbaf, 0xfbae, 1, 0, 0 }, + { 0x06d3, 0x06d3, 0xfbb1, 0xfbb0, 1, 0, 0 }, + { 0x06d4, 0x06d4, 0x06d4, 0x06d4, 0, 0, 0 }, + { 0x06d5, 0x06d5, 0x06d5, 0x06d5, 1, 0, 0 }, + { 0x06d6, 0x06d6, 0x06d6, 0x06d6, 0, 0, 0 }, + { 0x06d7, 0x06d7, 0x06d7, 0x06d7, 0, 0, 0 }, + { 0x06d8, 0x06d8, 0x06d8, 0x06d8, 0, 0, 0 }, + { 0x06d9, 0x06d9, 0x06d9, 0x06d9, 0, 0, 0 }, + { 0x06da, 0x06da, 0x06da, 0x06da, 0, 0, 0 }, + { 0x06db, 0x06db, 0x06db, 0x06db, 0, 0, 0 }, + { 0x06dc, 0x06dc, 0x06dc, 0x06dc, 0, 0, 0 }, + { 0x06dd, 0x06dd, 0x06dd, 0x06dd, 0, 0, 0 }, + { 0x06de, 0x06de, 0x06de, 0x06de, 0, 0, 0 }, + { 0x06df, 0x06df, 0x06df, 0x06df, 0, 0, 0 }, + { 0x06e0, 0x06e0, 0x06e0, 0x06e0, 0, 0, 0 }, + { 0x06e1, 0x06e1, 0x06e1, 0x06e1, 0, 0, 0 }, + { 0x06e2, 0x06e2, 0x06e2, 0x06e2, 0, 0, 0 }, + { 0x06e3, 0x06e3, 0x06e3, 0x06e3, 0, 0, 0 }, + { 0x06e4, 0x06e4, 0x06e4, 0x06e4, 0, 0, 0 }, + { 0x06e5, 0x06e5, 0x06e5, 0x06e5, 0, 0, 0 }, + { 0x06e6, 0x06e6, 0x06e6, 0x06e6, 0, 0, 0 }, + { 0x06e7, 0x06e7, 0x06e7, 0x06e7, 0, 0, 0 }, + { 0x06e8, 0x06e8, 0x06e8, 0x06e8, 0, 0, 0 }, + { 0x06e9, 0x06e9, 0x06e9, 0x06e9, 0, 0, 0 }, + { 0x06ea, 0x06ea, 0x06ea, 0x06ea, 0, 0, 0 }, + { 0x06eb, 0x06eb, 0x06eb, 0x06eb, 0, 0, 0 }, + { 0x06ec, 0x06ec, 0x06ec, 0x06ec, 0, 0, 0 }, + { 0x06ed, 0x06ed, 0x06ed, 0x06ed, 0, 0, 0 }, + { 0x06ee, 0x06ee, 0x06ee, 0x06ee, 1, 0, 0 }, + { 0x06ef, 0x06ef, 0x06ef, 0x06ef, 1, 0, 0 }, + { 0x06f0, 0x06f0, 0x06f0, 0x06f0, 0, 0, 0 }, + { 0x06f1, 0x06f1, 0x06f1, 0x06f1, 0, 0, 0 }, + { 0x06f2, 0x06f2, 0x06f2, 0x06f2, 0, 0, 0 }, + { 0x06f3, 0x06f3, 0x06f3, 0x06f3, 0, 0, 0 }, + { 0x06f4, 0x06f4, 0x06f4, 0x06f4, 0, 0, 0 }, + { 0x06f5, 0x06f5, 0x06f5, 0x06f5, 0, 0, 0 }, + { 0x06f6, 0x06f6, 0x06f6, 0x06f6, 0, 0, 0 }, + { 0x06f7, 0x06f7, 0x06f7, 0x06f7, 0, 0, 0 }, + { 0x06f8, 0x06f8, 0x06f8, 0x06f8, 0, 0, 0 }, + { 0x06f9, 0x06f9, 0x06f9, 0x06f9, 0, 0, 0 }, + { 0x06fa, 0x06fa, 0x06fa, 0x06fa, 1, 0, 0 }, + { 0x06fb, 0x06fb, 0x06fb, 0x06fb, 1, 0, 0 }, + { 0x06fc, 0x06fc, 0x06fc, 0x06fc, 1, 0, 0 }, + { 0x06fd, 0x06fd, 0x06fd, 0x06fd, 0, 0, 0 }, + { 0x06fe, 0x06fe, 0x06fe, 0x06fe, 0, 0, 0 }, + { 0x06ff, 0x06ff, 0x06ff, 0x06ff, 1, 0, 0 } +}; diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/Unicode/Makefile.in b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/Unicode/Makefile.in new file mode 100644 index 00000000000..ea21c43be1d --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/Unicode/Makefile.in @@ -0,0 +1,36 @@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ + +top_srcdir = @top_srcdir@ +top_builddir = .. +libdir = @libdir@ +VPATH = @srcdir@ +bindir = @bindir@ + +GU_VERSION=3 +GU_REVISION=1 +GU_AGE=0 + +LIBTOOL = @LIBTOOL@ +CC = @CC@ + +libgunicode_OBJECTS = ArabicForms.lo alphabet.lo backtrns.lo char.lo \ + cjk.lo memory.lo ucharmap.lo unialt.lo ustring.lo utype.lo \ + gwwiconv.lo + +Incs = -I$(top_builddir)/inc -I$(top_srcdir)/inc -I/usr/pkg/include -I/usr/pkg/include/giflib +CFLAGS = @CFLAGS@ @CPPFLAGS@ $(Incs) @WFLAGS@ @DEFS@ + +../libgunicode.la: $(libgunicode_OBJECTS) + $(LIBTOOL) --mode=link $(CC) $(CFLAGS) -no-undefined @LDFLAGS@ -o ../libgunicode.la $(libgunicode_OBJECTS) \ + @LIBS@ \ + -rpath $(libdir) -version-info $(GU_VERSION):$(GU_REVISION):$(GU_AGE) + +%.lo: %.c + $(LIBTOOL) --mode=compile $(CC) $(CFLAGS) -c $< + +clean: + -rm -f *.o *.lo ../libgunicode.la .libs/* + +distclean cleaner: + -rm -f *.o *.lo ../libgunicode.la .libs/* Makefile diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/Unicode/alphabet.c b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/Unicode/alphabet.c new file mode 100644 index 00000000000..166a33208a7 --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/Unicode/alphabet.c @@ -0,0 +1,3348 @@ +#include + +const unsigned char c_allzeros[256] = { 0 }; + +const unichar_t unicode_from_i8859_1[] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, + 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, + 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, + 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, + 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, + 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, + 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, + 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, + 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, + 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, + 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, + 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, + 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, + 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, + 0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, + 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, + 0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf, + 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, + 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, + 0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7, + 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df, + 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, + 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, + 0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7, + 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x00ff +}; + +static const unsigned char i8859_1_from_unicode_0[] = { + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, + 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, + 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, + 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, + 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, + 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, + 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, + 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, + 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, + 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, + 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, + 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, + 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff +}; + +static const unsigned char * const i8859_1_from_unicode_[] = { + i8859_1_from_unicode_0 +}; + +struct charmap i8859_1_from_unicode = { 0, 0, (unsigned char **) i8859_1_from_unicode_, (unichar_t *) unicode_from_i8859_1 }; + +const unichar_t unicode_from_i8859_2[] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, + 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, + 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, + 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, + 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, + 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, + 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, + 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, + 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, + 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, + 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, + 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, + 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, + 0x00a0, 0x0104, 0x02d8, 0x0141, 0x00a4, 0x013d, 0x015a, 0x00a7, + 0x00a8, 0x0160, 0x015e, 0x0164, 0x0179, 0x00ad, 0x017d, 0x017b, + 0x00b0, 0x0105, 0x02db, 0x0142, 0x00b4, 0x013e, 0x015b, 0x02c7, + 0x00b8, 0x0161, 0x015f, 0x0165, 0x017a, 0x02dd, 0x017e, 0x017c, + 0x0154, 0x00c1, 0x00c2, 0x0102, 0x00c4, 0x0139, 0x0106, 0x00c7, + 0x010c, 0x00c9, 0x0118, 0x00cb, 0x011a, 0x00cd, 0x00ce, 0x010e, + 0x0110, 0x0143, 0x0147, 0x00d3, 0x00d4, 0x0150, 0x00d6, 0x00d7, + 0x0158, 0x016e, 0x00da, 0x0170, 0x00dc, 0x00dd, 0x0162, 0x00df, + 0x0155, 0x00e1, 0x00e2, 0x0103, 0x00e4, 0x013a, 0x0107, 0x00e7, + 0x010d, 0x00e9, 0x0119, 0x00eb, 0x011b, 0x00ed, 0x00ee, 0x010f, + 0x0111, 0x0144, 0x0148, 0x00f3, 0x00f4, 0x0151, 0x00f6, 0x00f7, + 0x0159, 0x016f, 0x00fa, 0x0171, 0x00fc, 0x00fd, 0x0163, 0x02d9 +}; + +static const unsigned char i8859_2_from_unicode_0[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, + 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, + 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, + 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, + 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xa0, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0xa7, 0xa8, 0x00, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, + 0xb0, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xc1, 0xc2, 0x00, 0xc4, 0x00, 0x00, 0xc7, 0x00, 0xc9, 0x00, 0xcb, 0x00, 0xcd, 0xce, 0x00, + 0x00, 0x00, 0x00, 0xd3, 0xd4, 0x00, 0xd6, 0xd7, 0x00, 0x00, 0xda, 0x00, 0xdc, 0xdd, 0x00, 0xdf, + 0x00, 0xe1, 0xe2, 0x00, 0xe4, 0x00, 0x00, 0xe7, 0x00, 0xe9, 0x00, 0xeb, 0x00, 0xed, 0xee, 0x00, + 0x00, 0x00, 0x00, 0xf3, 0xf4, 0x00, 0xf6, 0xf7, 0x00, 0x00, 0xfa, 0x00, 0xfc, 0xfd, 0x00, 0x00 +}; + +static const unsigned char i8859_2_from_unicode_1[] = { + 0x00, 0x00, 0xc3, 0xe3, 0xa1, 0xb1, 0xc6, 0xe6, 0x00, 0x00, 0x00, 0x00, 0xc8, 0xe8, 0xcf, 0xef, + 0xd0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xca, 0xea, 0xcc, 0xec, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc5, 0xe5, 0x00, 0x00, 0xa5, 0xb5, 0x00, + 0x00, 0xa3, 0xb3, 0xd1, 0xf1, 0x00, 0x00, 0xd2, 0xf2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xd5, 0xf5, 0x00, 0x00, 0xc0, 0xe0, 0x00, 0x00, 0xd8, 0xf8, 0xa6, 0xb6, 0x00, 0x00, 0xaa, 0xba, + 0xa9, 0xb9, 0xde, 0xfe, 0xab, 0xbb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd9, 0xf9, + 0xdb, 0xfb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xac, 0xbc, 0xaf, 0xbf, 0xae, 0xbe, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned char i8859_2_from_unicode_2[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa2, 0xff, 0x00, 0xb2, 0x00, 0xbd, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned char * const i8859_2_from_unicode_[] = { + i8859_2_from_unicode_0, + i8859_2_from_unicode_1, + i8859_2_from_unicode_2 +}; + +struct charmap i8859_2_from_unicode = { 0, 2, (unsigned char **) i8859_2_from_unicode_, (unichar_t *) unicode_from_i8859_2 }; + +const unichar_t unicode_from_i8859_3[] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, + 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, + 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, + 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, + 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, + 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, + 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, + 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, + 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, + 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, + 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, + 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, + 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, + 0x00a0, 0x0126, 0x02d8, 0x00a3, 0x00a4, 0x0000, 0x0124, 0x00a7, + 0x00a8, 0x0130, 0x015e, 0x011e, 0x0134, 0x00ad, 0x0000, 0x017b, + 0x00b0, 0x0127, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x0125, 0x00b7, + 0x00b8, 0x0131, 0x015f, 0x011f, 0x0135, 0x00bd, 0x0000, 0x017c, + 0x00c0, 0x00c1, 0x00c2, 0x0000, 0x00c4, 0x010a, 0x0108, 0x00c7, + 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, + 0x0000, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x0120, 0x00d6, 0x00d7, + 0x011c, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x016c, 0x015c, 0x00df, + 0x00e0, 0x00e1, 0x00e2, 0x0000, 0x00e4, 0x010b, 0x0109, 0x00e7, + 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, + 0x0000, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x0121, 0x00f6, 0x00f7, + 0x011d, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x016d, 0x015d, 0x02d9 +}; + +static const unsigned char i8859_3_from_unicode_0[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, + 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, + 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, + 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, + 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xa0, 0x00, 0x00, 0xa3, 0xa4, 0x00, 0x00, 0xa7, 0xa8, 0x00, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, + 0xb0, 0x00, 0xb2, 0xb3, 0xb4, 0xb5, 0x00, 0xb7, 0xb8, 0x00, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, + 0xc0, 0xc1, 0xc2, 0x00, 0xc4, 0x00, 0x00, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, + 0x00, 0xd1, 0xd2, 0xd3, 0xd4, 0x00, 0xd6, 0xd7, 0x00, 0xd9, 0xda, 0xdb, 0xdc, 0x00, 0x00, 0xdf, + 0xe0, 0xe1, 0xe2, 0x00, 0xe4, 0x00, 0x00, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, + 0x00, 0xf1, 0xf2, 0xf3, 0xf4, 0x00, 0xf6, 0xf7, 0x00, 0xf9, 0xfa, 0xfb, 0xfc, 0x00, 0x00, 0x00 +}; + +static const unsigned char i8859_3_from_unicode_1[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xe6, 0xc5, 0xe5, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0xf8, 0xab, 0xbb, + 0xd5, 0xf5, 0x00, 0x00, 0xa6, 0xb6, 0xa1, 0xb1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xa9, 0xb9, 0x00, 0x00, 0xac, 0xbc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xde, 0xfe, 0xaa, 0xba, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdd, 0xfd, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaf, 0xbf, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned char i8859_3_from_unicode_2[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa2, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned char * const i8859_3_from_unicode_[] = { + i8859_3_from_unicode_0, + i8859_3_from_unicode_1, + i8859_3_from_unicode_2 +}; + +struct charmap i8859_3_from_unicode = { 0, 2, (unsigned char **) i8859_3_from_unicode_, (unichar_t *) unicode_from_i8859_3 }; + +const unichar_t unicode_from_i8859_4[] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, + 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, + 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, + 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, + 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, + 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, + 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, + 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, + 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, + 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, + 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, + 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, + 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, + 0x00a0, 0x0104, 0x0138, 0x0156, 0x00a4, 0x0128, 0x013b, 0x00a7, + 0x00a8, 0x0160, 0x0112, 0x0122, 0x0166, 0x00ad, 0x017d, 0x00af, + 0x00b0, 0x0105, 0x02db, 0x0157, 0x00b4, 0x0129, 0x013c, 0x02c7, + 0x00b8, 0x0161, 0x0113, 0x0123, 0x0167, 0x014a, 0x017e, 0x014b, + 0x0100, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x012e, + 0x010c, 0x00c9, 0x0118, 0x00cb, 0x0116, 0x00cd, 0x00ce, 0x012a, + 0x0110, 0x0145, 0x014c, 0x0136, 0x00d4, 0x00d5, 0x00d6, 0x00d7, + 0x00d8, 0x0172, 0x00da, 0x00db, 0x00dc, 0x0168, 0x016a, 0x00df, + 0x0101, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x012f, + 0x010d, 0x00e9, 0x0119, 0x00eb, 0x0117, 0x00ed, 0x00ee, 0x012b, + 0x0111, 0x0146, 0x014d, 0x0137, 0x00f4, 0x00f5, 0x00f6, 0x00f7, + 0x00f8, 0x0173, 0x00fa, 0x00fb, 0x00fc, 0x0169, 0x016b, 0x02d9 +}; + +static const unsigned char i8859_4_from_unicode_0[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, + 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, + 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, + 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, + 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xa0, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0xa7, 0xa8, 0x00, 0x00, 0x00, 0x00, 0xad, 0x00, 0xaf, + 0xb0, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0x00, 0x00, 0xc9, 0x00, 0xcb, 0x00, 0xcd, 0xce, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0x00, 0xda, 0xdb, 0xdc, 0x00, 0x00, 0xdf, + 0x00, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0x00, 0x00, 0xe9, 0x00, 0xeb, 0x00, 0xed, 0xee, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0x00, 0xfa, 0xfb, 0xfc, 0x00, 0x00, 0x00 +}; + +static const unsigned char i8859_4_from_unicode_1[] = { + 0xc0, 0xe0, 0x00, 0x00, 0xa1, 0xb1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0xe8, 0x00, 0x00, + 0xd0, 0xf0, 0xaa, 0xba, 0x00, 0x00, 0xcc, 0xec, 0xca, 0xea, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xab, 0xbb, 0x00, 0x00, 0x00, 0x00, 0xa5, 0xb5, 0xcf, 0xef, 0x00, 0x00, 0xc7, 0xe7, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd3, 0xf3, 0xa2, 0x00, 0x00, 0xa6, 0xb6, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xd1, 0xf1, 0x00, 0x00, 0x00, 0xbd, 0xbf, 0xd2, 0xf2, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xa9, 0xb9, 0x00, 0x00, 0x00, 0x00, 0xac, 0xbc, 0xdd, 0xfd, 0xde, 0xfe, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xd9, 0xf9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xae, 0xbe, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned char i8859_4_from_unicode_2[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xb2, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned char * const i8859_4_from_unicode_[] = { + i8859_4_from_unicode_0, + i8859_4_from_unicode_1, + i8859_4_from_unicode_2 +}; + +struct charmap i8859_4_from_unicode = { 0, 2, (unsigned char **) i8859_4_from_unicode_, (unichar_t *) unicode_from_i8859_4 }; + +const unichar_t unicode_from_i8859_5[] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, + 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, + 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, + 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, + 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, + 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, + 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, + 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, + 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, + 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, + 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, + 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, + 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, + 0x00a0, 0x0401, 0x0402, 0x0403, 0x0404, 0x0405, 0x0406, 0x0407, + 0x0408, 0x0409, 0x040a, 0x040b, 0x040c, 0x00ad, 0x040e, 0x040f, + 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, + 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f, + 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, + 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f, + 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, + 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, + 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, + 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f, + 0x2116, 0x0451, 0x0452, 0x0453, 0x0454, 0x0455, 0x0456, 0x0457, + 0x0458, 0x0459, 0x045a, 0x045b, 0x045c, 0x00a7, 0x045e, 0x045f +}; + +static const unsigned char i8859_5_from_unicode_0[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, + 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, + 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, + 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, + 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned char i8859_5_from_unicode_4[] = { + 0x00, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0x00, 0xae, 0xaf, + 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, + 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, + 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, + 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, + 0x00, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0x00, 0xfe, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned char i8859_5_from_unicode_21[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned char * const i8859_5_from_unicode_[] = { + i8859_5_from_unicode_0, + c_allzeros, + c_allzeros, + c_allzeros, + i8859_5_from_unicode_4, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + i8859_5_from_unicode_21 +}; + +struct charmap i8859_5_from_unicode = { 0, 33, (unsigned char **) i8859_5_from_unicode_, (unichar_t *) unicode_from_i8859_5 }; + +const unichar_t unicode_from_i8859_6[] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, + 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, + 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, + 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, + 0x0660, 0x0661, 0x0662, 0x0663, 0x0664, 0x0665, 0x0666, 0x0667, + 0x0668, 0x0669, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, + 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, + 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, + 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, + 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, + 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, + 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, + 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, + 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, + 0x00a0, 0x0000, 0x0000, 0x0000, 0x00a4, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x060c, 0x00ad, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x061b, 0x0000, 0x0000, 0x0000, 0x061f, + 0x0000, 0x0621, 0x0622, 0x0623, 0x0624, 0x0625, 0x0626, 0x0627, + 0x0628, 0x0629, 0x062a, 0x062b, 0x062c, 0x062d, 0x062e, 0x062f, + 0x0630, 0x0631, 0x0632, 0x0633, 0x0634, 0x0635, 0x0636, 0x0637, + 0x0638, 0x0639, 0x063a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0640, 0x0641, 0x0642, 0x0643, 0x0644, 0x0645, 0x0646, 0x0647, + 0x0648, 0x0649, 0x064a, 0x064b, 0x064c, 0x064d, 0x064e, 0x064f, + 0x0650, 0x0651, 0x0652, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned char i8859_6_from_unicode_0[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, + 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, + 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, + 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, + 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xa0, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned char i8859_6_from_unicode_6[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0xbf, + 0x00, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, + 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, + 0xf0, 0xf1, 0xf2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned char * const i8859_6_from_unicode_[] = { + i8859_6_from_unicode_0, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + i8859_6_from_unicode_6 +}; + +struct charmap i8859_6_from_unicode = { 0, 6, (unsigned char **) i8859_6_from_unicode_, (unichar_t *) unicode_from_i8859_6 }; + +const unichar_t unicode_from_i8859_7[] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, + 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, + 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, + 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, + 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, + 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, + 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, + 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, + 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, + 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, + 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, + 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, + 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, + 0x00a0, 0x02bd, 0x02bc, 0x00a3, 0x0000, 0x0000, 0x00a6, 0x00a7, + 0x00a8, 0x00a9, 0x0000, 0x00ab, 0x00ac, 0x00ad, 0x0000, 0x2015, + 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x0384, 0x0385, 0x0386, 0x00b7, + 0x0388, 0x0389, 0x038a, 0x00bb, 0x038c, 0x00bd, 0x038e, 0x038f, + 0x0390, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, + 0x0398, 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, + 0x03a0, 0x03a1, 0x0000, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, + 0x03a8, 0x03a9, 0x03aa, 0x03ab, 0x03ac, 0x03ad, 0x03ae, 0x03af, + 0x03b0, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, + 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, + 0x03c0, 0x03c1, 0x03c2, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, + 0x03c8, 0x03c9, 0x03ca, 0x03cb, 0x03cc, 0x03cd, 0x03ce, 0x0000 +}; + +static const unsigned char i8859_7_from_unicode_0[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, + 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, + 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, + 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, + 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xa0, 0x00, 0x00, 0xa3, 0x00, 0x00, 0xa6, 0xa7, 0xa8, 0xa9, 0x00, 0xab, 0xac, 0xad, 0x00, 0x00, + 0xb0, 0xb1, 0xb2, 0xb3, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, 0xbb, 0x00, 0xbd, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned char i8859_7_from_unicode_2[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa2, 0xa1, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned char i8859_7_from_unicode_3[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xb4, 0xb5, 0xb6, 0x00, 0xb8, 0xb9, 0xba, 0x00, 0xbc, 0x00, 0xbe, 0xbf, + 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, + 0xd0, 0xd1, 0x00, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, + 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, + 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned char i8859_7_from_unicode_20[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned char * const i8859_7_from_unicode_[] = { + i8859_7_from_unicode_0, + c_allzeros, + i8859_7_from_unicode_2, + i8859_7_from_unicode_3, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + i8859_7_from_unicode_20 +}; + +struct charmap i8859_7_from_unicode = { 0, 32, (unsigned char **) i8859_7_from_unicode_, (unichar_t *) unicode_from_i8859_7 }; + +const unichar_t unicode_from_i8859_8[] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, + 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, + 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, + 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, + 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, + 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, + 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, + 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, + 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, + 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, + 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, + 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, + 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, + 0x00a0, 0x0000, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, + 0x00a8, 0x00a9, 0x00d7, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x203e, + 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, + 0x00b8, 0x00b9, 0x00f7, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2017, + 0x05d0, 0x05d1, 0x05d2, 0x05d3, 0x05d4, 0x05d5, 0x05d6, 0x05d7, + 0x05d8, 0x05d9, 0x05da, 0x05db, 0x05dc, 0x05dd, 0x05de, 0x05df, + 0x05e0, 0x05e1, 0x05e2, 0x05e3, 0x05e4, 0x05e5, 0x05e6, 0x05e7, + 0x05e8, 0x05e9, 0x05ea, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned char i8859_8_from_unicode_0[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, + 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, + 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, + 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, + 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xa0, 0x00, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0x00, 0xab, 0xac, 0xad, 0xae, 0x00, + 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0x00, 0xbb, 0xbc, 0xbd, 0xbe, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned char i8859_8_from_unicode_5[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, + 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned char i8859_8_from_unicode_20[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaf, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned char * const i8859_8_from_unicode_[] = { + i8859_8_from_unicode_0, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + i8859_8_from_unicode_5, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + i8859_8_from_unicode_20 +}; + +struct charmap i8859_8_from_unicode = { 0, 32, (unsigned char **) i8859_8_from_unicode_, (unichar_t *) unicode_from_i8859_8 }; + +const unichar_t unicode_from_i8859_9[] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, + 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, + 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, + 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, + 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, + 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, + 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, + 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, + 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, + 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, + 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, + 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, + 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, + 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, + 0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, + 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, + 0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf, + 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, + 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, + 0x011e, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7, + 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x0130, 0x015e, 0x00df, + 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, + 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, + 0x011f, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7, + 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x0131, 0x015f, 0x00ff +}; + +static const unsigned char i8859_9_from_unicode_0[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, + 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, + 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, + 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, + 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, + 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, + 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, + 0x00, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0x00, 0x00, 0xdf, + 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, + 0x00, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0x00, 0x00, 0xff +}; + +static const unsigned char i8859_9_from_unicode_1[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0xf0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xdd, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xde, 0xfe, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned char * const i8859_9_from_unicode_[] = { + i8859_9_from_unicode_0, + i8859_9_from_unicode_1 +}; + +struct charmap i8859_9_from_unicode = { 0, 1, (unsigned char **) i8859_9_from_unicode_, (unichar_t *) unicode_from_i8859_9 }; + +const unichar_t unicode_from_i8859_10[] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, + 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, + 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, + 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, + 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, + 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, + 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, + 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, + 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, + 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, + 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, + 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, + 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, + 0x00a0, 0x0104, 0x0112, 0x0122, 0x012a, 0x0128, 0x0136, 0x00a7, + 0x013b, 0x0110, 0x0160, 0x0166, 0x017d, 0x00ad, 0x016a, 0x014a, + 0x00b0, 0x0105, 0x0113, 0x0123, 0x012b, 0x0129, 0x0137, 0x0000, + 0x013c, 0x0111, 0x0161, 0x0167, 0x017e, 0x00af, 0x016b, 0x014b, + 0x0100, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x012e, + 0x010c, 0x00c9, 0x0118, 0x00cb, 0x0112, 0x00cd, 0x00ce, 0x00cf, + 0x00d0, 0x0145, 0x014c, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x0168, + 0x00d8, 0x0172, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df, + 0x0101, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x012f, + 0x010d, 0x00e9, 0x0119, 0x00eb, 0x0113, 0x00ed, 0x00ee, 0x00ef, + 0x00f0, 0x0146, 0x014d, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x0169, + 0x00f8, 0x0173, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x0138 +}; + +static const unsigned char i8859_10_from_unicode_0[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, + 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, + 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, + 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, + 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, 0x00, 0x00, 0xad, 0x00, 0xbd, + 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0x00, 0x00, 0xc9, 0x00, 0xcb, 0x00, 0xcd, 0xce, 0xcf, + 0xd0, 0x00, 0x00, 0xd3, 0xd4, 0xd5, 0xd6, 0x00, 0xd8, 0x00, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, + 0x00, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0x00, 0x00, 0xe9, 0x00, 0xeb, 0x00, 0xed, 0xee, 0xef, + 0xf0, 0x00, 0x00, 0xf3, 0xf4, 0xf5, 0xf6, 0x00, 0xf8, 0x00, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0x00 +}; + +static const unsigned char i8859_10_from_unicode_1[] = { + 0xc0, 0xe0, 0x00, 0x00, 0xa1, 0xb1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0xe8, 0x00, 0x00, + 0xa9, 0xb9, 0xcc, 0xec, 0x00, 0x00, 0x00, 0x00, 0xca, 0xea, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xa3, 0xb3, 0x00, 0x00, 0x00, 0x00, 0xa5, 0xb5, 0xa4, 0xb4, 0x00, 0x00, 0xc7, 0xe7, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa6, 0xb6, 0xff, 0x00, 0x00, 0xa8, 0xb8, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xd1, 0xf1, 0x00, 0x00, 0x00, 0xaf, 0xbf, 0xd2, 0xf2, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xaa, 0xba, 0x00, 0x00, 0x00, 0x00, 0xab, 0xbb, 0xd7, 0xf7, 0xae, 0xbe, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xd9, 0xf9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xac, 0xbc, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned char * const i8859_10_from_unicode_[] = { + i8859_10_from_unicode_0, + i8859_10_from_unicode_1 +}; + +struct charmap i8859_10_from_unicode = { 0, 1, (unsigned char **) i8859_10_from_unicode_, (unichar_t *) unicode_from_i8859_10 }; + +const unichar_t unicode_from_i8859_11[] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, + 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, + 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, + 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, + 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, + 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, + 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, + 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, + 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, + 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, + 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, + 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, + 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, + 0x00a0, 0x0e01, 0x0e02, 0x0e03, 0x0e04, 0x0e05, 0x0e06, 0x0e07, + 0x0e08, 0x0e09, 0x0e0a, 0x0e0b, 0x0e0c, 0x0e0d, 0x0e0e, 0x0e0f, + 0x0e10, 0x0e11, 0x0e12, 0x0e13, 0x0e14, 0x0e15, 0x0e16, 0x0e17, + 0x0e18, 0x0e19, 0x0e1a, 0x0e1b, 0x0e1c, 0x0e1d, 0x0e1e, 0x0e1f, + 0x0e20, 0x0e21, 0x0e22, 0x0e23, 0x0e24, 0x0e25, 0x0e26, 0x0e27, + 0x0e28, 0x0e29, 0x0e2a, 0x0e2b, 0x0e2c, 0x0e2d, 0x0e2e, 0x0e2f, + 0x0e30, 0x0e31, 0x0e32, 0x0e33, 0x0e34, 0x0e35, 0x0e36, 0x0e37, + 0x0e38, 0x0e39, 0x0e3a, 0x0000, 0x0020, 0x0000, 0x0000, 0x0e3f, + 0x0e40, 0x0e41, 0x0e42, 0x0e43, 0x0e44, 0x0e45, 0x0e46, 0x0e47, + 0x0e48, 0x0e49, 0x0e4a, 0x0e4b, 0x0e4c, 0x0e4d, 0x0e4e, 0x0e4f, + 0x0e50, 0x0e51, 0x0e52, 0x0e53, 0x0e54, 0x0e55, 0x0e56, 0x0e57, + 0x0e58, 0x0e59, 0x0e5a, 0x0e5b, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned char i8859_11_from_unicode_0[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xdc, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, + 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, + 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, + 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, + 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned char i8859_11_from_unicode_e[] = { + 0x00, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, + 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, + 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, + 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0x00, 0x00, 0x00, 0x00, 0xdf, + 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, + 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned char * const i8859_11_from_unicode_[] = { + i8859_11_from_unicode_0, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + i8859_11_from_unicode_e +}; + +struct charmap i8859_11_from_unicode = { 0, 14, (unsigned char **) i8859_11_from_unicode_, (unichar_t *) unicode_from_i8859_11 }; + +const unichar_t unicode_from_i8859_13[] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, + 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, + 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, + 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, + 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, + 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, + 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, + 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, + 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, + 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, + 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, + 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, + 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, + 0x00a0, 0x201d, 0x00a2, 0x00a3, 0x00a4, 0x201e, 0x00a6, 0x00a7, + 0x00d8, 0x00a9, 0x0157, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00c6, + 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x201c, 0x00b5, 0x00b6, 0x00b7, + 0x00f8, 0x00b9, 0x0000, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00e6, + 0x0104, 0x012e, 0x0100, 0x0106, 0x00c4, 0x00c5, 0x0118, 0x0112, + 0x010c, 0x00c9, 0x0179, 0x0116, 0x0122, 0x0136, 0x012a, 0x013b, + 0x0160, 0x0143, 0x0145, 0x00d3, 0x014c, 0x00d5, 0x00d6, 0x00d7, + 0x0172, 0x0141, 0x00da, 0x00db, 0x00dc, 0x017b, 0x017d, 0x00df, + 0x0105, 0x012e, 0x0101, 0x0107, 0x00e4, 0x00e5, 0x0119, 0x0113, + 0x010d, 0x00e9, 0x017a, 0x0117, 0x0123, 0x0137, 0x012b, 0x013c, + 0x0161, 0x0144, 0x0146, 0x00f3, 0x014d, 0x00f5, 0x00f6, 0x00f7, + 0x0173, 0x0142, 0x00fa, 0x00fb, 0x00fc, 0x017c, 0x017e, 0x2019 +}; + +static const unsigned char i8859_13_from_unicode_0[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, + 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, + 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, + 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, + 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xa0, 0x00, 0xa2, 0xa3, 0xa4, 0x00, 0xa6, 0xa7, 0x00, 0xa9, 0x00, 0xab, 0xac, 0xad, 0xae, 0x00, + 0xb0, 0xb1, 0xb2, 0xb3, 0x00, 0xb5, 0xb6, 0xb7, 0x00, 0xb9, 0x00, 0xbb, 0xbc, 0xbd, 0xbe, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xc4, 0xc5, 0xaf, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xd3, 0x00, 0xd5, 0xd6, 0xd7, 0xa8, 0x00, 0xda, 0xdb, 0xdc, 0x00, 0x00, 0xdf, + 0x00, 0x00, 0x00, 0x00, 0xe4, 0xe5, 0xbf, 0x00, 0x00, 0xe9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xf3, 0x00, 0xf5, 0xf6, 0xf7, 0xb8, 0x00, 0xfa, 0xfb, 0xfc, 0x00, 0x00, 0x00 +}; + +static const unsigned char i8859_13_from_unicode_1[] = { + 0xc2, 0xe2, 0x00, 0x00, 0xc0, 0xe0, 0xc3, 0xe3, 0x00, 0x00, 0x00, 0x00, 0xc8, 0xe8, 0x00, 0x00, + 0x00, 0x00, 0xc7, 0xe7, 0x00, 0x00, 0xcb, 0xeb, 0xc6, 0xe6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xcc, 0xec, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xce, 0xee, 0x00, 0x00, 0xe1, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcd, 0xed, 0x00, 0x00, 0x00, 0xcf, 0xef, 0x00, 0x00, 0x00, + 0x00, 0xd9, 0xf9, 0xd1, 0xf1, 0xd2, 0xf2, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd4, 0xf4, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xd0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xd8, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0xca, 0xea, 0xdd, 0xfd, 0xde, 0xfe, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned char i8859_13_from_unicode_20[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0xb4, 0xa1, 0xa5, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned char * const i8859_13_from_unicode_[] = { + i8859_13_from_unicode_0, + i8859_13_from_unicode_1, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + i8859_13_from_unicode_20 +}; + +struct charmap i8859_13_from_unicode = { 0, 32, (unsigned char **) i8859_13_from_unicode_, (unichar_t *) unicode_from_i8859_13 }; + +const unichar_t unicode_from_i8859_14[] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, + 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, + 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, + 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, + 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, + 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, + 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, + 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, + 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, + 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, + 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, + 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, + 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, + 0x00a0, 0x1e02, 0x1e03, 0x00a3, 0x010a, 0x010b, 0x1e0a, 0x00a7, + 0x1e80, 0x00a9, 0x1e82, 0x1e0b, 0x1ef2, 0x00ad, 0x00ae, 0x0178, + 0x1e1e, 0x1e1f, 0x0120, 0x0121, 0x1e40, 0x1e41, 0x00b6, 0x1e56, + 0x1e81, 0x1e57, 0x1e83, 0x1e60, 0x1ef3, 0x1e84, 0x1e85, 0x1e61, + 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, + 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, + 0x0174, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x1e6a, + 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x0176, 0x00df, + 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, + 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, + 0x0175, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x1e6b, + 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x0177, 0x00ff +}; + +static const unsigned char i8859_14_from_unicode_0[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, + 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, + 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, + 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, + 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xa0, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, 0xa7, 0x00, 0xa9, 0x00, 0x00, 0x00, 0xad, 0xae, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, + 0x00, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0x00, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0x00, 0xdf, + 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, + 0x00, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0x00, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0x00, 0xff +}; + +static const unsigned char i8859_14_from_unicode_1[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa4, 0xa5, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xb2, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xd0, 0xf0, 0xde, 0xfe, 0xaf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned char i8859_14_from_unicode_1e[] = { + 0x00, 0x00, 0xa1, 0xa2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa6, 0xab, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0xb1, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xb4, 0xb5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb7, 0xb9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xbb, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd7, 0xf7, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xa8, 0xb8, 0xaa, 0xba, 0xbd, 0xbe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xac, 0xbc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned char * const i8859_14_from_unicode_[] = { + i8859_14_from_unicode_0, + i8859_14_from_unicode_1, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + i8859_14_from_unicode_1e +}; + +struct charmap i8859_14_from_unicode = { 0, 30, (unsigned char **) i8859_14_from_unicode_, (unichar_t *) unicode_from_i8859_14 }; + +const unichar_t unicode_from_i8859_15[] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, + 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, + 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, + 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, + 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, + 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, + 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, + 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, + 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, + 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, + 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, + 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, + 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, + 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x20ac, 0x00a5, 0x0160, 0x00a7, + 0x0161, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, + 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x017d, 0x00b5, 0x00b6, 0x00b7, + 0x017e, 0x00b9, 0x00ba, 0x00bb, 0x0152, 0x0153, 0x0178, 0x00bf, + 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, + 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, + 0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7, + 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df, + 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, + 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, + 0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7, + 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x00ff +}; + +static const unsigned char i8859_15_from_unicode_0[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, + 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, + 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, + 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, + 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xa0, 0xa1, 0xa2, 0xa3, 0x00, 0xa5, 0x00, 0xa7, 0x00, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, + 0xb0, 0xb1, 0xb2, 0xb3, 0x00, 0xb5, 0xb6, 0xb7, 0x00, 0xb9, 0xba, 0xbb, 0x00, 0x00, 0x00, 0xbf, + 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, + 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, + 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, + 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff +}; + +static const unsigned char i8859_15_from_unicode_1[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xbc, 0xbd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xa6, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbe, 0x00, 0x00, 0x00, 0x00, 0xb4, 0xb8, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned char i8859_15_from_unicode_20[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned char * const i8859_15_from_unicode_[] = { + i8859_15_from_unicode_0, + i8859_15_from_unicode_1, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + i8859_15_from_unicode_20 +}; + +struct charmap i8859_15_from_unicode = { 0, 32, (unsigned char **) i8859_15_from_unicode_, (unichar_t *) unicode_from_i8859_15 }; + +const unichar_t unicode_from_koi8_r[] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, + 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, + 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, + 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, + 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, + 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, + 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, + 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, + 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x0000, + 0x2500, 0x2502, 0x250c, 0x2510, 0x2514, 0x2518, 0x251c, 0x2524, + 0x252c, 0x2534, 0x253c, 0x2580, 0x2584, 0x2588, 0x258c, 0x2590, + 0x2591, 0x2592, 0x2593, 0x2320, 0x25a0, 0x2219, 0x221a, 0x2248, + 0x2264, 0x2265, 0x00a0, 0x2321, 0x00b0, 0x00b2, 0x00b7, 0x00f7, + 0x2550, 0x2551, 0x2552, 0x0451, 0x2553, 0x2554, 0x2555, 0x2556, + 0x2557, 0x2558, 0x2559, 0x255a, 0x255b, 0x255c, 0x255d, 0x255e, + 0x255f, 0x2560, 0x2561, 0x0401, 0x2562, 0x2563, 0x2564, 0x2565, + 0x2566, 0x2567, 0x2568, 0x2569, 0x256a, 0x256b, 0x256c, 0x00a9, + 0x044e, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433, + 0x0445, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, + 0x043f, 0x044f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432, + 0x044c, 0x044b, 0x0437, 0x0448, 0x044d, 0x0449, 0x0447, 0x044a, + 0x042e, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413, + 0x0425, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, + 0x041f, 0x042f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412, + 0x042c, 0x042b, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x042a +}; + +static const unsigned char koi8_r_from_unicode_0[] = { + 0x7f, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, + 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, + 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, + 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, + 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, + 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x9c, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x00, 0x9e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned char koi8_r_from_unicode_4[] = { + 0x00, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xe1, 0xe2, 0xf7, 0xe7, 0xe4, 0xe5, 0xf6, 0xfa, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0, + 0xf2, 0xf3, 0xf4, 0xf5, 0xe6, 0xe8, 0xe3, 0xfe, 0xfb, 0xfd, 0xff, 0xf9, 0xf8, 0xfc, 0xe0, 0xf1, + 0xc1, 0xc2, 0xd7, 0xc7, 0xc4, 0xc5, 0xd6, 0xda, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, + 0xd2, 0xd3, 0xd4, 0xd5, 0xc6, 0xc8, 0xc3, 0xde, 0xdb, 0xdd, 0xdf, 0xd9, 0xd8, 0xdc, 0xc0, 0xd1, + 0x00, 0xa3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned char koi8_r_from_unicode_22[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x95, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x98, 0x99, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned char koi8_r_from_unicode_23[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x93, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned char koi8_r_from_unicode_25[] = { + 0x80, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, + 0x83, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xa0, 0xa1, 0xa2, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, + 0xb1, 0xb2, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x8b, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, + 0x8f, 0x90, 0x91, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned char * const koi8_r_from_unicode_[] = { + koi8_r_from_unicode_0, + c_allzeros, + c_allzeros, + c_allzeros, + koi8_r_from_unicode_4, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + koi8_r_from_unicode_22, + koi8_r_from_unicode_23, + c_allzeros, + koi8_r_from_unicode_25 +}; + +struct charmap koi8_r_from_unicode = { 0, 37, (unsigned char **) koi8_r_from_unicode_, (unichar_t *) unicode_from_koi8_r }; + +const unichar_t unicode_from_jis201[] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, + 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, + 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, + 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, + 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, + 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, + 0x0058, 0x0059, 0x005a, 0x005b, 0x00a5, 0x005d, 0x005e, 0x005f, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, + 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, + 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x203e, 0x007f, + 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, + 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, + 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, + 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, + 0x0000, 0xff61, 0xff62, 0xff63, 0xff64, 0xff65, 0xff66, 0xff67, + 0xff68, 0xff69, 0xff6a, 0xff6b, 0xff6c, 0xff6d, 0xff6e, 0xff6f, + 0xff70, 0xff71, 0xff72, 0xff73, 0xff74, 0xff75, 0xff76, 0xff77, + 0xff78, 0xff79, 0xff7a, 0xff7b, 0xff7c, 0xff7d, 0xff7e, 0xff7f, + 0xff80, 0xff81, 0xff82, 0xff83, 0xff84, 0xff85, 0xff86, 0xff87, + 0xff88, 0xff89, 0xff8a, 0xff8b, 0xff8c, 0xff8d, 0xff8e, 0xff8f, + 0xff90, 0xff91, 0xff92, 0xff93, 0xff94, 0xff95, 0xff96, 0xff97, + 0xff98, 0xff99, 0xff9a, 0xff9b, 0xff9c, 0xff9d, 0xff9e, 0xff9f, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned char jis201_from_unicode_0[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, + 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, + 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x00, 0x5d, 0x5e, 0x5f, + 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, + 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned char jis201_from_unicode_20[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned char jis201_from_unicode_ff[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, + 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, + 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, + 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned char * const jis201_from_unicode_[] = { + jis201_from_unicode_0, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + jis201_from_unicode_20, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + jis201_from_unicode_ff +}; + +struct charmap jis201_from_unicode = { 0, 255, (unsigned char **) jis201_from_unicode_, (unichar_t *) unicode_from_jis201 }; + +const unichar_t unicode_from_win[] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, + 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, + 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, + 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, + 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, + 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, + 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, + 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, + 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, + 0x20ac, 0x0081, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021, + 0x02c6, 0x2030, 0x0160, 0x2039, 0x0152, 0x008d, 0x008e, 0x008f, + 0x0090, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, + 0x02dc, 0x2122, 0x0161, 0x203a, 0x0153, 0x009d, 0x009e, 0x0178, + 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, + 0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, + 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, + 0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf, + 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, + 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, + 0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7, + 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df, + 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, + 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, + 0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7, + 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x00ff +}; + +static const unsigned char win_from_unicode_0[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, + 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, + 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, + 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, + 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, + 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, + 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, + 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, + 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, + 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff +}; + +static const unsigned char win_from_unicode_1[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x8c, 0x9c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x8a, 0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned char win_from_unicode_2[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned char win_from_unicode_20[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x96, 0x97, 0x00, 0x00, 0x00, 0x91, 0x92, 0x82, 0x00, 0x93, 0x94, 0x84, 0x00, + 0x86, 0x87, 0x95, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, 0x9b, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned char win_from_unicode_21[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned char * const win_from_unicode_[] = { + win_from_unicode_0, + win_from_unicode_1, + win_from_unicode_2, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + win_from_unicode_20, + win_from_unicode_21 +}; + +struct charmap win_from_unicode = { 0, 33, (unsigned char **) win_from_unicode_, (unichar_t *) unicode_from_win }; + +const unichar_t unicode_from_mac[] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, + 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, + 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, + 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, + 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, + 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, + 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, + 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, + 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, + 0x00c4, 0x00c5, 0x00c7, 0x00c9, 0x00d1, 0x00d6, 0x00dc, 0x00e1, + 0x00e0, 0x00e2, 0x00e4, 0x00e3, 0x00e5, 0x00e7, 0x00e9, 0x00e8, + 0x00ea, 0x00eb, 0x00ed, 0x00ec, 0x00ee, 0x00ef, 0x00f1, 0x00f3, + 0x00f2, 0x00f4, 0x00f6, 0x00f5, 0x00fa, 0x00f9, 0x00fb, 0x00fc, + 0x2020, 0x00b0, 0x00a2, 0x00a3, 0x00a7, 0x2022, 0x00b6, 0x00df, + 0x00ae, 0x00a9, 0x2122, 0x00b4, 0x00a8, 0x2260, 0x00c6, 0x00d8, + 0x221e, 0x00b1, 0x2264, 0x2265, 0x00a5, 0x00b5, 0x2202, 0x2211, + 0x220f, 0x03c0, 0x222b, 0x00aa, 0x00ba, 0x03a9, 0x00e6, 0x00f8, + 0x00bf, 0x00a1, 0x00ac, 0x221a, 0x0192, 0x2248, 0x2206, 0x00ab, + 0x00bb, 0x2026, 0x00a0, 0x00c0, 0x00c3, 0x00d5, 0x0152, 0x0153, + 0x2013, 0x2014, 0x201c, 0x201d, 0x2018, 0x2019, 0x00f7, 0x25ca, + 0x00ff, 0x0178, 0x2044, 0x20ac, 0x2039, 0x203a, 0xfb01, 0xfb02, + 0x2021, 0x00b7, 0x201a, 0x201e, 0x2030, 0x00c2, 0x00ca, 0x00c1, + 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x00d3, 0x00d4, + 0xf8ff, 0x00d2, 0x00da, 0x00db, 0x00d9, 0x0131, 0x02c6, 0x02dc, + 0x00af, 0x02d8, 0x02d9, 0x02da, 0x00b8, 0x02dd, 0x02db, 0x02c7 +}; + +static const unsigned char mac_from_unicode_0[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, + 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, + 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, + 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, + 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xca, 0xc1, 0xa2, 0xa3, 0x00, 0xb4, 0x00, 0xa4, 0xac, 0xa9, 0xbb, 0xc7, 0xc2, 0x00, 0xa8, 0xf8, + 0xa1, 0xb1, 0x00, 0x00, 0xab, 0xb5, 0xa6, 0xe1, 0xfc, 0x00, 0xbc, 0xc8, 0x00, 0x00, 0x00, 0xc0, + 0xcb, 0xe7, 0xe5, 0xcc, 0x80, 0x81, 0xae, 0x82, 0xe9, 0x83, 0xe6, 0xe8, 0xed, 0xea, 0xeb, 0xec, + 0x00, 0x84, 0xf1, 0xee, 0xef, 0xcd, 0x85, 0x00, 0xaf, 0xf4, 0xf2, 0xf3, 0x86, 0x00, 0x00, 0xa7, + 0x88, 0x87, 0x89, 0x8b, 0x8a, 0x8c, 0xbe, 0x8d, 0x8f, 0x8e, 0x90, 0x91, 0x93, 0x92, 0x94, 0x95, + 0x00, 0x96, 0x98, 0x97, 0x99, 0x9b, 0x9a, 0xd6, 0xbf, 0x9d, 0x9c, 0x9e, 0x9f, 0x00, 0x00, 0xd8 +}; + +static const unsigned char mac_from_unicode_1[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xce, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned char mac_from_unicode_2[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf9, 0xfa, 0xfb, 0xfe, 0xf7, 0xfd, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned char mac_from_unicode_3[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xb9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned char mac_from_unicode_20[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xd0, 0xd1, 0x00, 0x00, 0x00, 0xd4, 0xd5, 0xe2, 0x00, 0xd2, 0xd3, 0xe3, 0x00, + 0xa0, 0xe0, 0xa5, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xe4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0xdd, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdb, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned char mac_from_unicode_21[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned char mac_from_unicode_22[] = { + 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb8, + 0x00, 0xb7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0xb0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xad, 0x00, 0x00, 0x00, 0xb2, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned char mac_from_unicode_25[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd7, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned char mac_from_unicode_f8[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0 +}; + +static const unsigned char mac_from_unicode_fb[] = { + 0x00, 0xde, 0xdf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned char * const mac_from_unicode_[] = { + mac_from_unicode_0, + mac_from_unicode_1, + mac_from_unicode_2, + mac_from_unicode_3, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + mac_from_unicode_20, + mac_from_unicode_21, + mac_from_unicode_22, + c_allzeros, + c_allzeros, + mac_from_unicode_25, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + mac_from_unicode_f8, + c_allzeros, + c_allzeros, + mac_from_unicode_fb +}; + +struct charmap mac_from_unicode = { 0, 251, (unsigned char **) mac_from_unicode_, (unichar_t *) unicode_from_mac }; + +const unichar_t unicode_from_MacSymbol[] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, + 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, + 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, + 0x0020, 0x0021, 0x2200, 0x0023, 0x2203, 0x0025, 0x0026, 0x220d, + 0x0028, 0x0029, 0x2217, 0x002b, 0x002c, 0x2212, 0x002e, 0x002f, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, + 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, + 0x2245, 0x0391, 0x0392, 0x03a7, 0x0394, 0x0395, 0x03a6, 0x0393, + 0x0397, 0x0399, 0x03d1, 0x039a, 0x039b, 0x039c, 0x039d, 0x039f, + 0x03a0, 0x0398, 0x03a1, 0x03a3, 0x03a4, 0x03a5, 0x03c2, 0x03a9, + 0x039e, 0x03a8, 0x0396, 0x005b, 0x2234, 0x005d, 0x22a5, 0x005f, + 0xf8e5, 0x03b1, 0x03b2, 0x03c7, 0x03b4, 0x03b5, 0x03c6, 0x03b3, + 0x03b7, 0x03b9, 0x03d5, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03bf, + 0x03c0, 0x03b8, 0x03c1, 0x03c3, 0x03c4, 0x03c5, 0x03d6, 0x03c9, + 0x03be, 0x03c8, 0x03b6, 0x007b, 0x007c, 0x007d, 0x223c, 0x007f, + 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, + 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, + 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, + 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, + 0x0000, 0x03d2, 0x2032, 0x2264, 0x2044, 0x221e, 0x0192, 0x2663, + 0x2666, 0x2665, 0x2660, 0x2194, 0x2190, 0x2191, 0x2192, 0x2193, + 0x00b0, 0x00b1, 0x2033, 0x2265, 0x00d7, 0x221d, 0x2202, 0x2022, + 0x00f7, 0x2260, 0x2261, 0x2248, 0x2026, 0xf8e6, 0xf8e7, 0x21b5, + 0x2135, 0x2111, 0x211c, 0x2118, 0x2297, 0x2295, 0x2205, 0x2229, + 0x222a, 0x2283, 0x2287, 0x2284, 0x2282, 0x2286, 0x2208, 0x2209, + 0x2220, 0x2207, 0x00ae, 0x00a9, 0x2122, 0x220f, 0x221a, 0x22c5, + 0x00ac, 0x2227, 0x2228, 0x21d4, 0x21d0, 0x21d1, 0x21d2, 0x21d3, + 0x22c4, 0x2329, 0xf8e8, 0xf8e9, 0xf8ea, 0x2211, 0xf8eb, 0xf8ec, + 0xf8ed, 0xf8ee, 0xf8ef, 0xf8f0, 0xf8f1, 0xf8f2, 0xf8f3, 0xf8f4, + 0xf8ff, 0x232a, 0x222b, 0x2320, 0xf8f5, 0x2321, 0xf8f6, 0xf8f7, + 0xf8f8, 0xf8f9, 0xf8fa, 0xf8fb, 0xf8fc, 0xf8fd, 0xf8fe, 0x02c7 +}; + +static const unsigned char MacSymbol_from_unicode_0[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x20, 0x21, 0x00, 0x23, 0x00, 0x25, 0x26, 0x00, 0x28, 0x29, 0x00, 0x2b, 0x2c, 0x00, 0x2e, 0x2f, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x5d, 0x00, 0x5f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7b, 0x7c, 0x7d, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0xd8, 0x00, 0xd2, 0x00, + 0xb0, 0xb1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned char MacSymbol_from_unicode_1[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xa6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned char MacSymbol_from_unicode_2[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned char MacSymbol_from_unicode_3[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x41, 0x42, 0x47, 0x44, 0x45, 0x5a, 0x48, 0x51, 0x49, 0x4b, 0x4c, 0x4d, 0x4e, 0x58, 0x4f, + 0x50, 0x52, 0x00, 0x53, 0x54, 0x55, 0x46, 0x43, 0x59, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x61, 0x62, 0x67, 0x64, 0x65, 0x7a, 0x68, 0x71, 0x69, 0x6b, 0x6c, 0x6d, 0x6e, 0x78, 0x6f, + 0x70, 0x72, 0x56, 0x73, 0x74, 0x75, 0x66, 0x63, 0x79, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x4a, 0xa1, 0x00, 0x00, 0x6a, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned char MacSymbol_from_unicode_20[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xa2, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned char MacSymbol_from_unicode_21[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0xc2, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xac, 0xad, 0xae, 0xaf, 0xab, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xdc, 0xdd, 0xde, 0xdf, 0xdb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned char MacSymbol_from_unicode_22[] = { + 0x22, 0x00, 0xb6, 0x24, 0x00, 0xc6, 0x00, 0xd1, 0xce, 0xcf, 0x00, 0x00, 0x00, 0x27, 0x00, 0xd5, + 0x00, 0xe5, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0xd6, 0x00, 0x00, 0xb5, 0xa5, 0x00, + 0xd0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd9, 0xda, 0xc7, 0xc8, 0xf2, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xb9, 0xba, 0x00, 0x00, 0xa3, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xcc, 0xc9, 0xcb, 0x00, 0xcd, 0xca, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xc5, 0x00, 0xc4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xe0, 0xd7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned char MacSymbol_from_unicode_23[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xf3, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe1, 0xf1, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned char MacSymbol_from_unicode_26[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xaa, 0x00, 0x00, 0xa7, 0x00, 0xa9, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned char MacSymbol_from_unicode_f8[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xbd, 0xbe, 0xe2, 0xe3, 0xe4, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, + 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf4, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xf0 +}; + +static const unsigned char * const MacSymbol_from_unicode_[] = { + MacSymbol_from_unicode_0, + MacSymbol_from_unicode_1, + MacSymbol_from_unicode_2, + MacSymbol_from_unicode_3, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + MacSymbol_from_unicode_20, + MacSymbol_from_unicode_21, + MacSymbol_from_unicode_22, + MacSymbol_from_unicode_23, + c_allzeros, + c_allzeros, + MacSymbol_from_unicode_26, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + c_allzeros, + MacSymbol_from_unicode_f8 +}; + +struct charmap MacSymbol_from_unicode = { 0, 248, (unsigned char **) MacSymbol_from_unicode_, (unichar_t *) unicode_from_MacSymbol }; + +const unichar_t unicode_from_ZapfDingbats[] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, + 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, + 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, + 0x0020, 0x2701, 0x2702, 0x2703, 0x2704, 0x260e, 0x2706, 0x2707, + 0x2708, 0x2709, 0x261b, 0x261e, 0x270c, 0x270d, 0x270e, 0x270f, + 0x2710, 0x2711, 0x2712, 0x2713, 0x2714, 0x2715, 0x2716, 0x2717, + 0x2718, 0x2719, 0x271a, 0x271b, 0x271c, 0x271d, 0x271e, 0x271f, + 0x2720, 0x2721, 0x2722, 0x2723, 0x2724, 0x2725, 0x2726, 0x2727, + 0x2605, 0x2729, 0x272a, 0x272b, 0x272c, 0x272d, 0x272e, 0x272f, + 0x2730, 0x2731, 0x2732, 0x2733, 0x2734, 0x2735, 0x2736, 0x2737, + 0x2738, 0x2739, 0x273a, 0x273b, 0x273c, 0x273d, 0x273e, 0x273f, + 0x2740, 0x2741, 0x2742, 0x2743, 0x2744, 0x2745, 0x2746, 0x2747, + 0x2748, 0x2749, 0x274a, 0x274b, 0x25cf, 0x274d, 0x25a0, 0x274f, + 0x2750, 0x2751, 0x2752, 0x25b2, 0x25bc, 0x25c6, 0x2756, 0x25d7, + 0x2758, 0x2759, 0x275a, 0x275b, 0x275c, 0x275d, 0x275e, 0x007f, + 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, + 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, + 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, + 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, + 0x0000, 0x2761, 0x2762, 0x2763, 0x2764, 0x2765, 0x2766, 0x2767, + 0x2663, 0x2666, 0x2665, 0x2660, 0x2460, 0x2461, 0x2462, 0x2463, + 0x2464, 0x2465, 0x2465, 0x2466, 0x2467, 0x2468, 0x2469, 0x2777, + 0x2778, 0x2779, 0x277a, 0x277b, 0x277c, 0x277d, 0x277e, 0x277f, + 0x2780, 0x2781, 0x2782, 0x2783, 0x2784, 0x2785, 0x2786, 0x2787, + 0x2788, 0x2789, 0x278a, 0x278b, 0x278c, 0x278d, 0x278e, 0x278f, + 0x2790, 0x2791, 0x2792, 0x2793, 0x2794, 0x2192, 0x2194, 0x2195, + 0x2798, 0x2799, 0x279a, 0x279b, 0x279c, 0x279d, 0x279e, 0x279f, + 0x27a0, 0x27a1, 0x27a2, 0x27a3, 0x27a4, 0x27a5, 0x27a6, 0x27a7, + 0x27a8, 0x27a9, 0x27aa, 0x27ab, 0x27ac, 0x27ad, 0x27ae, 0x27af, + 0x0000, 0x27b1, 0x27b2, 0x27b3, 0x27b4, 0x27b5, 0x27b6, 0x27b7, + 0x27b8, 0x27b9, 0x27ba, 0x27bb, 0x27bc, 0x27bd, 0x27be, 0x27bf +}; + +static const unsigned char ZapfDingbats_from_unicode_21[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xd5, 0x00, 0xd6, 0xd7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned char ZapfDingbats_from_unicode_24[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned char ZapfDingbats_from_unicode_25[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x6e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned char ZapfDingbats_from_unicode_26[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x2b, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xab, 0x00, 0x00, 0xa8, 0x00, 0xaa, 0xa9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned char ZapfDingbats_from_unicode_27[] = { + 0x00, 0x21, 0x22, 0x23, 0x24, 0x00, 0x26, 0x27, 0x28, 0x29, 0x00, 0x00, 0x2c, 0x2d, 0x2e, 0x2f, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, + 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x00, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, + 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, + 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x00, 0x6d, 0x00, 0x6f, + 0x70, 0x71, 0x72, 0x00, 0x00, 0x00, 0x76, 0x00, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x00, + 0x00, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, + 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, + 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0x00, 0x00, 0x00, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, + 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, + 0x00, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const unsigned char * const ZapfDingbats_from_unicode_[] = { + ZapfDingbats_from_unicode_21, + c_allzeros, + c_allzeros, + ZapfDingbats_from_unicode_24, + ZapfDingbats_from_unicode_25, + ZapfDingbats_from_unicode_26, + ZapfDingbats_from_unicode_27 +}; + +struct charmap ZapfDingbats_from_unicode = { 33, 39, (unsigned char **) ZapfDingbats_from_unicode_, (unichar_t *) unicode_from_ZapfDingbats }; + +unichar_t *unicode_from_alphabets[]={ + (unichar_t *) unicode_from_win, 0,0, + (unichar_t *) unicode_from_i8859_1, + (unichar_t *) unicode_from_i8859_2, + (unichar_t *) unicode_from_i8859_3, + (unichar_t *) unicode_from_i8859_4, + (unichar_t *) unicode_from_i8859_5, + (unichar_t *) unicode_from_i8859_6, + (unichar_t *) unicode_from_i8859_7, + (unichar_t *) unicode_from_i8859_8, + (unichar_t *) unicode_from_i8859_9, + (unichar_t *) unicode_from_i8859_10, + (unichar_t *) unicode_from_i8859_11, + (unichar_t *) unicode_from_i8859_13, + (unichar_t *) unicode_from_i8859_14, + (unichar_t *) unicode_from_i8859_15, + (unichar_t *) unicode_from_koi8_r, + (unichar_t *) unicode_from_jis201, + (unichar_t *) unicode_from_win, + (unichar_t *) unicode_from_mac, + (unichar_t *) unicode_from_MacSymbol, + (unichar_t *) unicode_from_ZapfDingbats, + (unichar_t *) unicode_from_i8859_1, /* Place holder for user-defined map */ + 0 +}; + +struct charmap *alphabets_from_unicode[]={ 0,0,0, + &i8859_1_from_unicode, + &i8859_2_from_unicode, + &i8859_3_from_unicode, + &i8859_4_from_unicode, + &i8859_5_from_unicode, + &i8859_6_from_unicode, + &i8859_7_from_unicode, + &i8859_8_from_unicode, + &i8859_9_from_unicode, + &i8859_10_from_unicode, + &i8859_11_from_unicode, + &i8859_13_from_unicode, + &i8859_14_from_unicode, + &i8859_15_from_unicode, + &koi8_r_from_unicode, + &jis201_from_unicode, + &win_from_unicode, + &mac_from_unicode, + &MacSymbol_from_unicode, + &ZapfDingbats_from_unicode, + &i8859_1_from_unicode, /* Place holder for user-defined map*/ + 0 +}; diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/Unicode/backtrns.c b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/Unicode/backtrns.c new file mode 100644 index 00000000000..f674dc3ba71 --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/Unicode/backtrns.c @@ -0,0 +1,7434 @@ +static const unsigned long l_allzeros[256] = { 0 }; +static const unsigned long unicode_backtrans_0[] = { + 0x0fffff, 0x0fffff, 0x0fffff, 0x0fffff, 0x0fffff, 0x0fffff, 0x0fffff, 0x0fffff, + 0x0fffff, 0x0fffff, 0x0fffff, 0x0fffff, 0x0fffff, 0x0fffff, 0x0fffff, 0x0fffff, + 0x0fffff, 0x0fffff, 0x0fffff, 0x0fffff, 0x0fffff, 0x0fffff, 0x0fffff, 0x0fffff, + 0x0fffff, 0x0fffff, 0x0fffff, 0x0fffff, 0x0fffff, 0x0fffff, 0x0fffff, 0x0fffff, + 0x07ffff, 0x07ffff, 0x03ffff, 0x07ffff, 0x03ffff, 0x07ffff, 0x07ffff, 0x03ffff, + 0x07ffff, 0x07ffff, 0x03ffff, 0x07ffff, 0x07ffff, 0x03ffff, 0x07ffff, 0x07ffff, + 0x07ffdf, 0x07ffdf, 0x07ffdf, 0x07ffdf, 0x07ffdf, 0x07ffdf, 0x07ffdf, 0x07ffdf, + 0x07ffdf, 0x07ffdf, 0x07ffff, 0x07ffff, 0x07ffff, 0x07ffff, 0x07ffff, 0x07ffff, + 0x03ffff, 0x03ffff, 0x03ffff, 0x03ffff, 0x03ffff, 0x03ffff, 0x03ffff, 0x03ffff, + 0x03ffff, 0x03ffff, 0x03ffff, 0x03ffff, 0x03ffff, 0x03ffff, 0x03ffff, 0x03ffff, + 0x03ffff, 0x03ffff, 0x03ffff, 0x03ffff, 0x03ffff, 0x03ffff, 0x03ffff, 0x03ffff, + 0x03ffff, 0x03ffff, 0x03ffff, 0x07ffff, 0x037fff, 0x07ffff, 0x03ffff, 0x07ffff, + 0x03ffff, 0x03ffff, 0x03ffff, 0x03ffff, 0x03ffff, 0x03ffff, 0x03ffff, 0x03ffff, + 0x03ffff, 0x03ffff, 0x03ffff, 0x03ffff, 0x03ffff, 0x03ffff, 0x03ffff, 0x03ffff, + 0x03ffff, 0x03ffff, 0x03ffff, 0x03ffff, 0x03ffff, 0x03ffff, 0x03ffff, 0x03ffff, + 0x03ffff, 0x03ffff, 0x03ffff, 0x07ffff, 0x07ffff, 0x07ffff, 0x437fff, 0x000001, + 0x000001, 0x000001, 0x000001, 0x000001, 0x000001, 0x000001, 0x000001, 0x000001, + 0x000001, 0x000001, 0x000001, 0x000001, 0x000001, 0x000001, 0x000001, 0x000001, + 0x000001, 0x000001, 0x000001, 0x000001, 0x000001, 0x000001, 0x000001, 0x000001, + 0x000001, 0x000001, 0x000001, 0x000001, 0x000001, 0x000001, 0x000001, 0x000001, + 0x037fff, 0x8c32101, 0x2032981, 0x20339c5, 0x9c109af, 0x203a181, 0x4109c1, 0xfa33bdf, + 0xda301cf, 0x4779c1, 0x8c32101, 0x88329c1, 0x0729c1, 0x013bff, 0x473981, 0x6432309, + 0xfa76bcf, 0xfa729c1, 0x88169c5, 0x88129c5, 0x8a3018f, 0x032985, 0x8a33981, 0x70369c5, + 0x8c3018f, 0x8812981, 0x8c32101, 0x88329c1, 0x8810981, 0x88109c5, 0x8810981, 0x8c32101, + 0x4433105, 0x443330f, 0x43330f, 0x433309, 0x433b0f, 0x433b09, 0x8c33b09, 0x433107, + 0x4433105, 0x4433b0f, 0x4433105, 0x43330f, 0x433105, 0x43330f, 0x43330f, 0x433305, + 0x8812201, 0x433105, 0x4433105, 0x4433b07, 0x43330f, 0x433b09, 0x433b0f, 0xfa5298f, + 0x8c33b09, 0x433105, 0x433b0f, 0x433b0d, 0x433b0f, 0x413203, 0x8c12201, 0x8c33b0f, + 0x5433105, 0x543330f, 0x43330f, 0x433309, 0x433b0f, 0x433b09, 0x8c33b09, 0x433107, + 0x5433105, 0x5433b0f, 0x5433105, 0x43330f, 0x5433105, 0x543330f, 0x43330f, 0x433305, + 0x8c12201, 0x433105, 0x5433105, 0x5433b07, 0x43330f, 0x433b09, 0x433b0f, 0xfa7698f, + 0xcc33b09, 0x5433105, 0x5433b0f, 0x433b0d, 0x5433b0f, 0x413203, 0x8c12201, 0x433101 +}; + +static const unsigned long unicode_backtrans_1[] = { + 0x4400a08, 0x5400a08, 0x400002, 0x400002, 0x400a0a, 0x400a0a, 0x400802, 0x400802, + 0x400004, 0x400004, 0x401004, 0x401004, 0x400a0a, 0x400a0a, 0x400002, 0x400002, + 0x40020a, 0x8c0020a, 0x4400a08, 0x5400a08, 0x000000, 0x000000, 0x400808, 0x400808, + 0x400a0a, 0x400a0a, 0x4400002, 0x5400002, 0x400004, 0x400004, 0x400104, 0x400104, + 0x401004, 0x401004, 0x400a08, 0x000a08, 0x400004, 0x400004, 0x8c00004, 0x8c00004, + 0x400208, 0x400208, 0x400a08, 0x5400a08, 0x000000, 0x000000, 0x400a08, 0x400208, + 0x400104, 0x8c20104, 0x8c00000, 0x8c00000, 0x400004, 0x400004, 0x400a08, 0x400a08, + 0x8c00208, 0x400002, 0x400002, 0x400a08, 0x400a08, 0x400002, 0x400002, 0x8c00000, + 0x8c00000, 0x8c00802, 0x8c00802, 0x400802, 0x1400802, 0x400a08, 0x400a08, 0x400002, + 0x1400002, 0x8c00000, 0x8c00208, 0xcc00208, 0x4400a08, 0x5400a08, 0x000000, 0x000000, + 0x400002, 0x400002, 0x8c32000, 0xcc32000, 0x400002, 0x400002, 0x400808, 0x400808, + 0x400002, 0x400002, 0x400002, 0x400002, 0x400004, 0x400004, 0x400106, 0x400106, + 0x412a0a, 0x412a0a, 0x400002, 0x400002, 0x400002, 0x400002, 0x8c00208, 0x8c00208, + 0x400208, 0x400208, 0x400208, 0x5400208, 0x400004, 0x400004, 0x400002, 0x400002, + 0x400002, 0x400002, 0x400a08, 0x400a08, 0x401000, 0x401000, 0x401000, 0x401000, + 0x433000, 0x400802, 0x400802, 0x400806, 0x400806, 0x402a0a, 0x402a0a, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x070000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4400000, 0x5400000, 0x400000, + 0x5400000, 0x4400000, 0x5400000, 0x400000, 0x5400000, 0x400000, 0x5400000, 0x400000, + 0x5400000, 0x400000, 0x5400000, 0x400000, 0x5400000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x400000, 0x000000, 0x000000, + 0x000000, 0x1000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000 +}; + +static const unsigned long unicode_backtrans_2[] = { + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x4000000, 0x5000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x5000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000040, 0x000040, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4030000, 0xfc6000a, + 0x000000, 0x5000000, 0x6000000, 0x6000000, 0x000000, 0x6000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x8c20006, 0xec2000e, 0x8c20000, 0x8c2000a, 0x8830000, 0x8c20002, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000 +}; + +static const unsigned long unicode_backtrans_3[] = { + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x400040, 0x400040, 0x400040, 0x000000, + 0x400040, 0x400040, 0x400040, 0x000000, 0x400040, 0x000000, 0x400040, 0x400040, + 0x400040, 0xfa40040, 0xfa40040, 0xfa40040, 0xfa40040, 0xfa40040, 0xfa40040, 0xfa40040, + 0xfa40040, 0xfa40040, 0xfa40040, 0xfa40040, 0xfa40040, 0xfa40040, 0xfa40040, 0xfa40040, + 0xfa40040, 0xfa40040, 0x000000, 0xfa40040, 0xfa40040, 0xfa40040, 0xfa40040, 0xfa40040, + 0xfa40040, 0xfa60040, 0x400040, 0x400040, 0x400040, 0x400040, 0x400040, 0x400040, + 0x400040, 0xfa40040, 0xfa40040, 0xfa40040, 0xfa40040, 0xfa40040, 0xfa40040, 0xfa40040, + 0xfa40040, 0xfa40040, 0xfa40040, 0xfa40040, 0xfa40040, 0xfa40040, 0xfa40040, 0xfa40040, + 0xfa60040, 0xfa40040, 0x440040, 0xfa40040, 0xfa40040, 0xfa40040, 0xfa40040, 0xfa40040, + 0xfa40040, 0xfa40040, 0x400040, 0x400040, 0x400040, 0x400040, 0x400040, 0x000000, + 0x000000, 0x040000, 0x040000, 0x000000, 0x000000, 0x040000, 0x040000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000 +}; + +static const unsigned long unicode_backtrans_4[] = { + 0x000000, 0xda04010, 0x400010, 0x400010, 0x400010, 0x400010, 0x400010, 0x400010, + 0x400010, 0x400010, 0x400010, 0x400010, 0x400010, 0x000000, 0x400010, 0x400010, + 0xda04010, 0xda04010, 0xda04010, 0xda04010, 0xda04010, 0xda04010, 0xda04010, 0xda04010, + 0xda04010, 0xda04010, 0xda04010, 0xda04010, 0xda04010, 0xda04010, 0xda04010, 0xda04010, + 0xda04010, 0xda04010, 0xda04010, 0xda04010, 0xda04010, 0xda04010, 0xda04010, 0xda04010, + 0xda04010, 0xda04010, 0xda04010, 0xda04010, 0xda04010, 0xda04010, 0xda04010, 0xda04010, + 0xda04010, 0xda04010, 0xda04010, 0xda04010, 0xda04010, 0xda04010, 0xda04010, 0xda04010, + 0xda04010, 0xda04010, 0xda04010, 0xda04010, 0xda04010, 0xda04010, 0xda04010, 0xda04010, + 0xda04010, 0xda04010, 0xda04010, 0xda04010, 0xda04010, 0xda04010, 0xda04010, 0xda04010, + 0xda04010, 0xda04010, 0xda04010, 0xda04010, 0xda04010, 0xda04010, 0xda04010, 0xda04010, + 0x000000, 0xda04010, 0x400010, 0x400010, 0x400010, 0x400010, 0x400010, 0x400010, + 0x400010, 0x400010, 0x400010, 0x400010, 0x400010, 0x000000, 0x400010, 0x400010, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000 +}; + +static const unsigned long unicode_backtrans_5[] = { + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000080, 0x000080, 0x000080, 0x000080, 0x000080, 0x000080, 0x000080, 0x000080, + 0x000080, 0x000080, 0x000080, 0x000080, 0x000080, 0x000080, 0x000080, 0x000080, + 0x000080, 0x000080, 0x000080, 0x000080, 0x000080, 0x000080, 0x000080, 0x000080, + 0x000080, 0x000080, 0x000080, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000 +}; + +static const unsigned long unicode_backtrans_6[] = { + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000020, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000020, 0x000000, 0x000000, 0x000000, 0x000020, + 0x000000, 0x000020, 0x000020, 0x000020, 0x000020, 0x000020, 0x000020, 0x000020, + 0x000020, 0x000020, 0x000020, 0x000020, 0x000020, 0x000020, 0x000020, 0x000020, + 0x000020, 0x000020, 0x000020, 0x000020, 0x000020, 0x000020, 0x000020, 0x000020, + 0x000020, 0x000020, 0x000020, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000020, 0x000020, 0x000020, 0x000020, 0x000020, 0x000020, 0x000020, 0x000020, + 0x000020, 0x000020, 0x000020, 0x000020, 0x000020, 0x000020, 0x000020, 0x000020, + 0x000020, 0x000020, 0x000020, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000020, 0x000020, 0x000020, 0x000020, 0x000020, 0x000020, 0x000020, 0x000020, + 0x000020, 0x000020, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000 +}; + +static const unsigned long unicode_backtrans_e[] = { + 0x000000, 0x000400, 0x000400, 0x000400, 0x000400, 0x000400, 0x000400, 0x000400, + 0x000400, 0x000400, 0x000400, 0x000400, 0x000400, 0x000400, 0x000400, 0x000400, + 0x000400, 0x000400, 0x000400, 0x000400, 0x000400, 0x000400, 0x000400, 0x000400, + 0x000400, 0x000400, 0x000400, 0x000400, 0x000400, 0x000400, 0x000400, 0x000400, + 0x000400, 0x000400, 0x000400, 0x000400, 0x000400, 0x000400, 0x000400, 0x000400, + 0x000400, 0x000400, 0x000400, 0x000400, 0x000400, 0x000400, 0x000400, 0x000400, + 0x000400, 0x000400, 0x000400, 0x000400, 0x000400, 0x000400, 0x000400, 0x000400, + 0x000400, 0x000400, 0x000400, 0x000000, 0x000000, 0x000000, 0x000000, 0x000400, + 0x000400, 0x000400, 0x000400, 0x000400, 0x000400, 0x000400, 0x000400, 0x000400, + 0x000400, 0x000400, 0x000400, 0x000400, 0x000400, 0x000400, 0x000400, 0x000400, + 0x000400, 0x000400, 0x000400, 0x000400, 0x000400, 0x000400, 0x000400, 0x000400, + 0x000400, 0x000400, 0x000400, 0x000400, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000 +}; + +static const unsigned long unicode_backtrans_1e[] = { + 0x000000, 0x000000, 0x001000, 0x001000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x001000, 0x001000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x001000, 0x001000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x1000000, + 0x001000, 0x001000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x001000, 0x001000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x001000, 0x001000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x001000, 0x001000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x001000, 0x001000, 0x001000, 0x001000, 0x001000, 0x001000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x001000, 0x001000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000 +}; + +static const unsigned long unicode_backtrans_20[] = { + 0x000000, 0x000000, 0x000000, 0x200000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x200000, 0x000000, 0x000000, 0xe830000, 0xf830000, 0x200040, 0x9a00000, 0x000080, + 0xf830000, 0xf830800, 0x030000, 0x000000, 0xf830800, 0xf830800, 0x030800, 0x000000, + 0x8a30000, 0x8a30000, 0x2070000, 0x000000, 0x000000, 0xea00000, 0x7270000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x9a30000, 0x000000, 0xfa40000, 0x9a40000, 0x000000, 0x6000000, 0x000000, 0x000000, + 0x000000, 0x030000, 0x030000, 0xfa00000, 0x000000, 0x000000, 0x008080, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x060000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x1000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x8800000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x8800000, + 0x000000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x032000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000 +}; + +static const unsigned long unicode_backtrans_21[] = { + 0x000000, 0x000000, 0x000000, 0xfa00000, 0x000000, 0x6000000, 0x000000, 0x000000, + 0x000000, 0xe800000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x040000, 0x000000, 0x8800000, 0x000000, 0x000000, 0xdc00010, 0x000000, + 0x040000, 0x000000, 0x000000, 0x000000, 0x040000, 0x000000, 0x000000, 0x000000, + 0x000000, 0xc800000, 0x8c70000, 0x000000, 0x000000, 0x000000, 0x8800000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x8a00000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x040000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x8800000, 0x8800000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x000000, + 0xf800000, 0xf800000, 0xf800000, 0xf800000, 0xf800000, 0xf800000, 0xf800000, 0xf800000, + 0xf800000, 0xf800000, 0x1000000, 0x1000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0xc800000, 0xc800000, 0xc800000, 0xc800000, 0xc800000, 0xc800000, 0xc800000, 0xc800000, + 0xc800000, 0xc800000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0xfa40000, 0xfa40000, 0xfac0000, 0xfa40000, 0x88c0000, 0x8880000, 0xe800000, 0xe800000, + 0xe800000, 0xe800000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x040000, 0x000000, 0x000000, + 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x040000, 0x040000, 0x8a40000, 0x040000, 0x8a40000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000 +}; + +static const unsigned long unicode_backtrans_22[] = { + 0x8a40000, 0x000000, 0x8a60000, 0x8a40000, 0x000000, 0x040000, 0x020000, 0x8a40000, + 0x9a40000, 0x040000, 0x000000, 0x8a00000, 0x000000, 0x040000, 0x000000, 0x9860000, + 0x000000, 0x9860000, 0x240000, 0x000000, 0x000000, 0x6000000, 0x000000, 0x040000, + 0x000000, 0x004000, 0xfa64000, 0x000000, 0x000000, 0x9a40000, 0xfa60000, 0x6000000, + 0xfa40000, 0x000000, 0x000000, 0x6000000, 0x000000, 0x7000000, 0x000000, 0x9a40000, + 0x9a40000, 0xfa40000, 0xfa40000, 0xfa60000, 0x8a00000, 0x000000, 0xf800000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0xfa40000, 0xfa00000, 0x9800000, 0x1000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x2040000, 0x9a00000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x040000, 0x000000, 0x000000, + 0x1064000, 0x000000, 0x000000, 0x000000, 0x1000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0xea00000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0xfa60000, 0xfa40000, 0x000000, 0x000000, 0x9864000, 0x9864000, 0x6200000, 0x6200000, + 0x000000, 0x000000, 0x200000, 0x200000, 0x000000, 0x000000, 0x1000000, 0x1000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x8a40000, 0x8a40000, 0x040000, 0x000000, 0x8a40000, 0x8a40000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x6040000, 0x000000, 0x040000, + 0x000000, 0x7000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xfa40000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x6000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x040000, 0x040000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x8800000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000 +}; + +static const unsigned long unicode_backtrans_23[] = { + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x9a00000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x044000, 0x044000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x040000, 0x040000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000 +}; + +static const unsigned long unicode_backtrans_24[] = { + 0x2000000, 0x2000000, 0x2000000, 0x2000000, 0x2000000, 0x2000000, 0x2000000, 0x2000000, + 0x2000000, 0x2000000, 0x2000000, 0x2000000, 0x2000000, 0x2000000, 0x2000000, 0x2000000, + 0x2000000, 0x2000000, 0x2000000, 0x2000000, 0x2000000, 0x2000000, 0x2000000, 0x2000000, + 0x2000000, 0x2000000, 0x2000000, 0x2000000, 0x2000000, 0x2000000, 0x2000000, 0x2000000, + 0x000000, 0x2000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0xd880000, 0xd880000, 0xd880000, 0xd880000, 0xd880000, 0xd880000, 0xd880000, 0xd880000, + 0xd880000, 0xd880000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0xd800000, 0xd800000, 0xd800000, 0xd800000, + 0xd800000, 0xd800000, 0xd800000, 0xd800000, 0xd800000, 0xd800000, 0x9800000, 0x9800000, + 0x9800000, 0x9800000, 0x9800000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, + 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, + 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, + 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, + 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, + 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, + 0x8800000, 0x8800000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000 +}; + +static const unsigned long unicode_backtrans_25[] = { + 0xfa04000, 0x9a00000, 0xfa04000, 0x9a00000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0xfa04000, 0x9800000, 0x9800000, 0x9a00000, + 0xfa04000, 0x9800000, 0x9800000, 0x9a00000, 0xfa04000, 0x9800000, 0x9800000, 0x9a00000, + 0xfa04000, 0x9800000, 0x9800000, 0x9a00000, 0xfa04000, 0x9a00000, 0x9800000, 0x9800000, + 0x9a00000, 0x9800000, 0x9800000, 0x9a00000, 0xfa04000, 0x9a00000, 0x9800000, 0x9800000, + 0x9a00000, 0x9800000, 0x9800000, 0x9a00000, 0xfa04000, 0x9800000, 0x9800000, 0x9a00000, + 0x9a00000, 0x9800000, 0x9800000, 0x9a00000, 0xfa04000, 0x9800000, 0x9800000, 0x9a00000, + 0x9a00000, 0x9800000, 0x9800000, 0x9a00000, 0xfa04000, 0x9800000, 0x9800000, 0x9a00000, + 0x9800000, 0x9800000, 0x9a00000, 0x9800000, 0x9800000, 0x9800000, 0x9800000, 0x9800000, + 0x9800000, 0x9800000, 0x9800000, 0x9a00000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x6004000, 0x4004000, 0x4004000, 0x4004000, 0x4004000, 0x4004000, 0x4004000, 0x4004000, + 0x4004000, 0x4004000, 0x4004000, 0x4004000, 0x4004000, 0x4004000, 0x6004000, 0x4004000, + 0x4004000, 0x6004000, 0x4004000, 0x4004000, 0x4004000, 0x4004000, 0x4004000, 0x4004000, + 0x4004000, 0x4004000, 0x6004000, 0x4004000, 0x4004000, 0x6000000, 0x6000000, 0x6000000, + 0x6000000, 0x6000000, 0x6000000, 0x6000000, 0x6000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x004000, 0x6000000, 0x6000000, 0x6000000, 0x6004000, 0x6000000, 0x6000000, 0x6000000, + 0x6004000, 0x6000000, 0x6000000, 0x6000000, 0x6004000, 0x6000000, 0x6000000, 0x6000000, + 0x004000, 0x004000, 0x8804000, 0x004000, 0x6000000, 0x6000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0xfa84000, 0xfa00000, 0x000000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, + 0x8800000, 0x8800000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0xfa80000, 0xfa00000, 0x000000, 0x000000, 0x8800000, 0x8800000, + 0x000000, 0x000000, 0x000000, 0x000000, 0xea80000, 0xea00000, 0x000000, 0x000000, + 0x8800000, 0x8800000, 0x000000, 0x000000, 0x000000, 0x000000, 0xfa80000, 0xfa00000, + 0x8800000, 0x8800000, 0x020000, 0xfa00000, 0x000000, 0x000000, 0xfa00000, 0xfa80000, + 0x8800000, 0x8800000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x080000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x6000000, 0x6000000, 0x6000000, 0x6000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x200000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000 +}; + +static const unsigned long unicode_backtrans_26[] = { + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xfa80000, 0xfa00000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x8880000, 0x8800000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x080000, 0x8800000, 0x000000, 0x8880000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0xfa00000, 0x000000, 0xfa00000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x88c0000, 0x8800000, 0x000000, 0x88c0000, 0x8800000, 0x88c0000, 0x0c0000, 0x8800000, + 0x8800000, 0x8800000, 0x8a00000, 0x000000, 0x8800000, 0x8a00000, 0x000000, 0x200000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000 +}; + +static const unsigned long unicode_backtrans_27[] = { + 0x000000, 0x080000, 0x080000, 0x080000, 0x080000, 0x000000, 0x080000, 0x080000, + 0x080000, 0x080000, 0x000000, 0x000000, 0x080000, 0x080000, 0x080000, 0x080000, + 0x080000, 0x080000, 0x080000, 0x080000, 0x080000, 0x080000, 0x080000, 0x080000, + 0x080000, 0x080000, 0x080000, 0x080000, 0x080000, 0x080000, 0x080000, 0x080000, + 0x080000, 0x080000, 0x080000, 0x080000, 0x080000, 0x080000, 0x080000, 0x080000, + 0x000000, 0x080000, 0x080000, 0x080000, 0x080000, 0x080000, 0x080000, 0x080000, + 0x080000, 0x080000, 0x080000, 0x080000, 0x080000, 0x080000, 0x080000, 0x080000, + 0x080000, 0x080000, 0x080000, 0x080000, 0x080000, 0x4080000, 0x080000, 0x080000, + 0x080000, 0x080000, 0x080000, 0x080000, 0x080000, 0x080000, 0x080000, 0x080000, + 0x080000, 0x080000, 0x080000, 0x080000, 0x000000, 0x080000, 0x000000, 0x080000, + 0x080000, 0x080000, 0x080000, 0x000000, 0x000000, 0x000000, 0x080000, 0x000000, + 0x080000, 0x080000, 0x080000, 0x080000, 0x080000, 0x080000, 0x080000, 0x000000, + 0x000000, 0x080000, 0x080000, 0x080000, 0x080000, 0x080000, 0x080000, 0x080000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x080000, + 0x080000, 0x080000, 0x080000, 0x080000, 0x080000, 0x080000, 0x080000, 0x080000, + 0x080000, 0x080000, 0x080000, 0x080000, 0x080000, 0x080000, 0x080000, 0x080000, + 0x080000, 0x080000, 0x080000, 0x080000, 0x080000, 0x080000, 0x080000, 0x080000, + 0x080000, 0x080000, 0x080000, 0x080000, 0x080000, 0x000000, 0x000000, 0x000000, + 0x080000, 0x080000, 0x080000, 0x080000, 0x080000, 0x080000, 0x080000, 0x080000, + 0x080000, 0x080000, 0x080000, 0x080000, 0x080000, 0x080000, 0x080000, 0x080000, + 0x080000, 0x080000, 0x080000, 0x080000, 0x080000, 0x080000, 0x080000, 0x080000, + 0x000000, 0x080000, 0x080000, 0x080000, 0x080000, 0x080000, 0x080000, 0x080000, + 0x080000, 0x080000, 0x080000, 0x080000, 0x080000, 0x080000, 0x080000, 0x080000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000 +}; + +static const unsigned long unicode_backtrans_2e[] = { + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, + 0x4000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000 +}; + +static const unsigned long unicode_backtrans_2f[] = { + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000 +}; + +static const unsigned long unicode_backtrans_30[] = { + 0x7000000, 0xfa00000, 0xfa00000, 0xfa00000, 0x000000, 0x5200000, 0x4200000, 0x4200000, + 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, + 0xfa00000, 0xfa00000, 0x6200000, 0x9a00000, 0xfa00000, 0xfa00000, 0x1000000, 0x1000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x200000, 0x6000000, 0x6000000, 0x000000, + 0x000000, 0x6000000, 0x6000000, 0x6000000, 0x6000000, 0x6000000, 0x6000000, 0x6000000, + 0x6000000, 0x6000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x2000000, 0x000000, 0x2000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, + 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, + 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, + 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, + 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, + 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, + 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, + 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, + 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, + 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, + 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4200000, 0x4200000, 0x4200000, 0x4200000, 0x000000, + 0x000000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, + 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, + 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, + 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, + 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, + 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, + 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, + 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, + 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, + 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, + 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0xda00000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x8a00000, 0x4200000, 0x4200000, 0x4200000, 0x000000 +}; + +static const unsigned long unicode_backtrans_31[] = { + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x7000000, 0x7000000, 0x7000000, + 0x7000000, 0x7000000, 0x7000000, 0x7000000, 0x7000000, 0x7000000, 0x7000000, 0x7000000, + 0x7000000, 0x7000000, 0x7000000, 0x7000000, 0x7000000, 0x7000000, 0x7000000, 0x7000000, + 0x7000000, 0x7000000, 0x7000000, 0x7000000, 0x7000000, 0x7000000, 0x7000000, 0x7000000, + 0x7000000, 0x7000000, 0x7000000, 0x7000000, 0x7000000, 0x7000000, 0x7000000, 0x7000000, + 0x7000000, 0x7000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, + 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, + 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, + 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, + 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, + 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, + 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, + 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, + 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, + 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, + 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, + 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000 +}; + +static const unsigned long unicode_backtrans_32[] = { + 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, + 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, + 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, + 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x000000, 0x000000, 0x000000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, + 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, + 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, + 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x000000, 0x000000, 0x000000, 0x8800000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x6000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000 +}; + +static const unsigned long unicode_backtrans_33[] = { + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x000000, 0x000000, 0x000000, + 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0xe800000, 0xe800000, + 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, + 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0xe800000, 0xe800000, 0xe800000, 0x8800000, + 0x8800000, 0xe800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, + 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, + 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, + 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, + 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0xe800000, 0x8800000, 0x8800000, 0x8800000, + 0x8800000, 0x8800000, 0x8800000, 0x000000, 0x000000, 0x000000, 0x6000000, 0x8800000, + 0x8800000, 0x6000000, 0x6000000, 0x8800000, 0x000000, 0x6000000, 0x8800000, 0x000000, + 0x8800000, 0x000000, 0x000000, 0x8800000, 0x8800000, 0x8800000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000 +}; + +static const unsigned long unicode_backtrans_34[] = { + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000 +}; + +static const unsigned long unicode_backtrans_35[] = { + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x4000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x000000 +}; + +static const unsigned long unicode_backtrans_36[] = { + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x4000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000 +}; + +static const unsigned long unicode_backtrans_37[] = { + 0x000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x4000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, + 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000 +}; + +static const unsigned long unicode_backtrans_38[] = { + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000 +}; + +static const unsigned long unicode_backtrans_39[] = { + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x000000 +}; + +static const unsigned long unicode_backtrans_3a[] = { + 0x000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x4000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000 +}; + +static const unsigned long unicode_backtrans_3b[] = { + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000 +}; + +static const unsigned long unicode_backtrans_3c[] = { + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000 +}; + +static const unsigned long unicode_backtrans_3d[] = { + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, + 0x000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x4000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000 +}; + +static const unsigned long unicode_backtrans_3e[] = { + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, + 0x000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x4000000 +}; + +static const unsigned long unicode_backtrans_3f[] = { + 0x4000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000 +}; + +static const unsigned long unicode_backtrans_40[] = { + 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000 +}; + +static const unsigned long unicode_backtrans_41[] = { + 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000 +}; + +static const unsigned long unicode_backtrans_42[] = { + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000 +}; + +static const unsigned long unicode_backtrans_43[] = { + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000 +}; + +static const unsigned long unicode_backtrans_44[] = { + 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x4000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000 +}; + +static const unsigned long unicode_backtrans_45[] = { + 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000 +}; + +static const unsigned long unicode_backtrans_46[] = { + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000 +}; + +static const unsigned long unicode_backtrans_47[] = { + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000 +}; + +static const unsigned long unicode_backtrans_48[] = { + 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000 +}; + +static const unsigned long unicode_backtrans_49[] = { + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000 +}; + +static const unsigned long unicode_backtrans_4a[] = { + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000 +}; + +static const unsigned long unicode_backtrans_4b[] = { + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x4000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000 +}; + +static const unsigned long unicode_backtrans_4c[] = { + 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000 +}; + +static const unsigned long unicode_backtrans_4d[] = { + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000 +}; + +static const unsigned long unicode_backtrans_4e[] = { + 0xfa00000, 0xfa00000, 0x400000, 0xfa00000, 0x4400000, 0x400000, 0x000000, 0xfa00000, + 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, 0x7400000, 0xfa00000, 0x7200000, 0x6000000, + 0x7200000, 0xfa00000, 0x400000, 0x1000000, 0xfa00000, 0xfa00000, 0xfa00000, 0x200000, + 0xfa00000, 0xfa00000, 0x5000000, 0x1000000, 0x5000000, 0x1000000, 0xfa00000, 0x6400000, + 0x000000, 0x4200000, 0x1000000, 0x400000, 0x5400000, 0x1000000, 0x6200000, 0x1000000, + 0x5400000, 0x000000, 0x5200000, 0x7400000, 0x5000000, 0xfa00000, 0x6400000, 0x4400000, + 0x7400000, 0x6200000, 0xfa00000, 0x6000000, 0x1000000, 0x400000, 0x5200000, 0x4000000, + 0xfa00000, 0xfa00000, 0x1000000, 0xfa00000, 0x6200000, 0x5000000, 0x1000000, 0x5200000, + 0x400000, 0x400000, 0xea00000, 0xfa00000, 0x400000, 0xfa00000, 0x000000, 0x7400000, + 0x7000000, 0x5000000, 0x000000, 0xfa00000, 0x1000000, 0xfa00000, 0xfa00000, 0xfa00000, + 0x1000000, 0x400000, 0x7000000, 0x7000000, 0x1000000, 0x200000, 0xfa00000, 0x200000, + 0xfa00000, 0xfa00000, 0x4400000, 0x4000000, 0x7400000, 0xfa00000, 0xfa00000, 0xfa00000, + 0x1000000, 0x1000000, 0x200000, 0x400000, 0x000000, 0x000000, 0x1000000, 0x000000, + 0x400000, 0x7400000, 0x4000000, 0x8800000, 0x000000, 0x8800000, 0x000000, 0x000000, + 0x1000000, 0x1200000, 0x000000, 0xfa00000, 0x400000, 0x400000, 0x8800000, 0x8800000, + 0x4000000, 0x400000, 0x000000, 0x000000, 0x000000, 0x000000, 0xfa00000, 0x6400000, + 0x4200000, 0x4000000, 0xea00000, 0x6000000, 0x6000000, 0x4200000, 0xfa00000, 0x4000000, + 0xfa00000, 0x5200000, 0x200000, 0xfa00000, 0xfa00000, 0x7400000, 0xfa00000, 0x1000000, + 0x8800000, 0xfa00000, 0xfa00000, 0x7000000, 0xfa00000, 0xfa00000, 0x400000, 0x400000, + 0xda00000, 0x6200000, 0x5000000, 0xfa00000, 0x200000, 0x400000, 0xea00000, 0x7200000, + 0x5200000, 0xfa00000, 0xfa00000, 0x4000000, 0xfa00000, 0xfa00000, 0xfa00000, 0x1000000, + 0xfa00000, 0x1000000, 0x000000, 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, 0x400000, + 0x200000, 0x000000, 0x1000000, 0x7200000, 0x000000, 0x1000000, 0xea00000, 0x4000000, + 0x000000, 0x6400000, 0xfa00000, 0x5000000, 0x4000000, 0x000000, 0x000000, 0x5000000, + 0xfa00000, 0xfa00000, 0x7200000, 0x7400000, 0xfa00000, 0x1000000, 0x7200000, 0xfa00000, + 0x6000000, 0x7000000, 0xfa00000, 0xfa00000, 0x000000, 0xfa00000, 0x5200000, 0x200000, + 0x400000, 0x1000000, 0x000000, 0x1000000, 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, + 0xfa00000, 0xfa00000, 0x6400000, 0x400000, 0x6000000, 0xfa00000, 0x7200000, 0xfa00000, + 0x400000, 0x7400000, 0x400000, 0xfa00000, 0xfa00000, 0xfa00000, 0x000000, 0x000000, + 0x7400000, 0x6000000, 0x5000000, 0x5000000, 0x1000000, 0x200000, 0x4200000, 0x400000, + 0xfa00000, 0x6400000, 0xfa00000, 0x7400000, 0x6000000, 0x7400000, 0xfa00000, 0xfa00000, + 0x4000000, 0x000000, 0x000000, 0xfa00000, 0x000000, 0x7400000, 0x400000, 0x7400000 +}; + +static const unsigned long unicode_backtrans_4f[] = { + 0x6400000, 0xfa00000, 0x6400000, 0x4400000, 0x6000000, 0x6000000, 0x000000, 0x000000, + 0x6400000, 0xfa00000, 0xfa00000, 0xec00000, 0x400000, 0xfa00000, 0xfa00000, 0xfa00000, + 0xfa00000, 0xfa00000, 0x6400000, 0x6000000, 0x6000000, 0x6400000, 0x400000, 0x5400000, + 0x7000000, 0x7400000, 0x5200000, 0x1000000, 0x200000, 0x6200000, 0x1000000, 0x1000000, + 0x1000000, 0x000000, 0x7000000, 0x000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, + 0x4000000, 0x4000000, 0x1000000, 0x1000000, 0x6000000, 0x6000000, 0x400000, 0xfa00000, + 0x7200000, 0x400000, 0x5000000, 0x6400000, 0xfa00000, 0x400000, 0xfa00000, 0x4400000, + 0xfa00000, 0x4400000, 0xfa00000, 0x6400000, 0xfa00000, 0xfa00000, 0x6400000, 0x6000000, + 0x400000, 0x6000000, 0x4400000, 0xfa00000, 0x000000, 0x4000000, 0xfa00000, 0xea00000, + 0xec00000, 0x6400000, 0x000000, 0x4400000, 0x6400000, 0xfa00000, 0xfa00000, 0xfa00000, + 0xfa00000, 0xfa00000, 0x6400000, 0x7200000, 0x6400000, 0xfa00000, 0x6400000, 0x7200000, + 0x7400000, 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, 0x7200000, 0x7200000, 0x7400000, + 0x7400000, 0x6000000, 0x6000000, 0x7400000, 0x7000000, 0x1000000, 0x000000, 0x7000000, + 0x000000, 0xfa00000, 0x6400000, 0x6000000, 0x7400000, 0x000000, 0x6400000, 0xfa00000, + 0xfa00000, 0x400000, 0x4000000, 0xfa00000, 0x7000000, 0x6200000, 0xfa00000, 0x6400000, + 0x6400000, 0x6400000, 0xec00000, 0x7200000, 0x7200000, 0x6400000, 0xfc00000, 0xfa00000, + 0x6000000, 0xec00000, 0x6400000, 0xfa00000, 0xfc00000, 0x6400000, 0xea00000, 0x6000000, + 0xfa00000, 0x7400000, 0xcc00000, 0xfa00000, 0x400000, 0xfa00000, 0x400000, 0xfa00000, + 0x6400000, 0xfa00000, 0x6400000, 0x400000, 0x7400000, 0x6000000, 0xea00000, 0x7400000, + 0xea00000, 0x400000, 0x6400000, 0xfa00000, 0x6000000, 0xfa00000, 0x6400000, 0x400000, + 0x1200000, 0x200000, 0x4000000, 0x1000000, 0x000000, 0x1000000, 0x1000000, 0x1000000, + 0x5000000, 0x1000000, 0x1000000, 0x4200000, 0x1000000, 0x200000, 0xfa00000, 0xfa00000, + 0x4000000, 0x000000, 0x6400000, 0x6000000, 0x000000, 0xfa00000, 0xea00000, 0x6400000, + 0x000000, 0x6400000, 0x6000000, 0x6400000, 0x400000, 0x4400000, 0x400000, 0xfa00000, + 0x6400000, 0x6400000, 0xea00000, 0xfa00000, 0xfa00000, 0x7400000, 0x400000, 0x6000000, + 0x4400000, 0xec00000, 0xfa00000, 0x6400000, 0x4400000, 0x6400000, 0xfa00000, 0x7400000, + 0x7200000, 0xfa00000, 0x400000, 0xe800000, 0xea00000, 0x000000, 0x6000000, 0xfa00000, + 0x7200000, 0x6000000, 0xfa00000, 0x6200000, 0x7400000, 0xfa00000, 0x7000000, 0xfa00000, + 0xec00000, 0xfa00000, 0x400000, 0x1200000, 0x4200000, 0x4200000, 0x1000000, 0x000000, + 0x1000000, 0x1000000, 0x1000000, 0x000000, 0x6000000, 0x1000000, 0xfa00000, 0xfa00000, + 0x4400000, 0xf800000, 0x4400000, 0xfa00000, 0x6000000, 0xea00000, 0x6200000, 0x6000000, + 0xfa00000, 0x4000000, 0xfa00000, 0x000000, 0x400000, 0x4400000, 0x7200000, 0x400000 +}; + +static const unsigned long unicode_backtrans_50[] = { + 0x6400000, 0x400000, 0x8800000, 0x4000000, 0x400000, 0x6200000, 0xea00000, 0x6400000, + 0x4000000, 0xea00000, 0x400000, 0xea00000, 0x7400000, 0xfa00000, 0x6400000, 0x7200000, + 0x400000, 0xea00000, 0xfa00000, 0x6400000, 0x7200000, 0x6000000, 0xea00000, 0x6400000, + 0x7400000, 0xfa00000, 0xfa00000, 0x6400000, 0xfc00000, 0x400000, 0xec00000, 0xfa00000, + 0x6000000, 0xfa00000, 0x6400000, 0xea00000, 0x8a00000, 0x7200000, 0xfa00000, 0xec00000, + 0xfa00000, 0x7200000, 0xfa00000, 0xea00000, 0xfa00000, 0xfa00000, 0x5400000, 0x6000000, + 0x6400000, 0x6000000, 0x400000, 0x6400000, 0x4000000, 0x6400000, 0x200000, 0x6000000, + 0x000000, 0x200000, 0x1000000, 0xcc00000, 0x7000000, 0x000000, 0x1000000, 0x000000, + 0x6400000, 0x6400000, 0x400000, 0xfa00000, 0x000000, 0x6400000, 0x6400000, 0xfa00000, + 0xfa00000, 0xea00000, 0x6400000, 0x6000000, 0x7400000, 0x6000000, 0x7400000, 0xfa00000, + 0x200000, 0x6400000, 0x400000, 0x6400000, 0x000000, 0xfa00000, 0x4200000, 0x6400000, + 0x4000000, 0x400000, 0xfa00000, 0x6000000, 0xfa00000, 0x6000000, 0x6000000, 0x6400000, + 0x6400000, 0x6000000, 0x6400000, 0x6400000, 0x6000000, 0xfa00000, 0x4400000, 0x400000, + 0x6000000, 0x6000000, 0x6400000, 0x6000000, 0x5200000, 0x6400000, 0x6000000, 0x6000000, + 0x6400000, 0x400000, 0x6200000, 0x6000000, 0xea00000, 0xea00000, 0xfa00000, 0x7000000, + 0x8a00000, 0x000000, 0x6000000, 0x1000000, 0x000000, 0x6200000, 0x1000000, 0x1000000, + 0xfa00000, 0x4400000, 0x6000000, 0x6400000, 0x400000, 0xfa00000, 0x400000, 0x6000000, + 0x5000000, 0x000000, 0x400000, 0x6000000, 0x6000000, 0xfa00000, 0x6400000, 0x400000, + 0x4400000, 0xea00000, 0x6400000, 0x400000, 0x6400000, 0x6000000, 0x6400000, 0x000000, + 0xea00000, 0xea00000, 0x6200000, 0x6400000, 0x6400000, 0x6000000, 0x6400000, 0x400000, + 0x400000, 0x400000, 0x6400000, 0x7000000, 0x000000, 0x1000000, 0x4000000, 0x1000000, + 0x1000000, 0x1000000, 0x400000, 0x000000, 0xfa00000, 0xea00000, 0x6000000, 0x6400000, + 0x6400000, 0x6000000, 0xfa00000, 0xea00000, 0x6200000, 0xea00000, 0x6000000, 0xea00000, + 0x6000000, 0x400000, 0x7400000, 0x7000000, 0x4000000, 0x6400000, 0xea00000, 0x6000000, + 0x400000, 0x6000000, 0x6200000, 0x400000, 0x6400000, 0xea00000, 0x6000000, 0x6400000, + 0x6000000, 0xea00000, 0xea00000, 0x6000000, 0x400000, 0x4200000, 0x6400000, 0xfa00000, + 0x4400000, 0xea00000, 0x000000, 0x6400000, 0x6400000, 0xea00000, 0xfa00000, 0x6000000, + 0x400000, 0x4000000, 0xfa00000, 0x6000000, 0x400000, 0x6400000, 0x8a00000, 0x4400000, + 0x6000000, 0x4000000, 0x400000, 0x6200000, 0x6400000, 0xea00000, 0x7400000, 0xfa00000, + 0x6400000, 0x6400000, 0x6000000, 0x000000, 0x7000000, 0xfa00000, 0x7200000, 0x6400000, + 0x6000000, 0x6400000, 0x400000, 0x7000000, 0x4000000, 0x7200000, 0x6400000, 0x000000, + 0x6000000, 0xea00000, 0x400000, 0xfa00000, 0x4000000, 0x6000000, 0x6400000, 0xe800000 +}; + +static const unsigned long unicode_backtrans_51[] = { + 0xea00000, 0xca00000, 0x6200000, 0x6400000, 0xea00000, 0x6000000, 0xfc00000, 0x7400000, + 0x6400000, 0xea00000, 0x6000000, 0x7400000, 0x6400000, 0x4400000, 0x4400000, 0x000000, + 0x6400000, 0x6000000, 0xfa00000, 0x6000000, 0x6200000, 0x6200000, 0x200000, 0x6400000, + 0x6200000, 0x400000, 0x6200000, 0x400000, 0x6400000, 0x400000, 0x400000, 0xea00000, + 0x6000000, 0xfa00000, 0x6000000, 0x400000, 0x6000000, 0x6000000, 0x6000000, 0x400000, + 0x400000, 0x6000000, 0xea00000, 0x4000000, 0x400000, 0x6400000, 0x6000000, 0x400000, + 0x6000000, 0x6400000, 0xea00000, 0x6400000, 0x6400000, 0x6400000, 0x000000, 0xea00000, + 0x6400000, 0x6400000, 0xea00000, 0x6200000, 0xea00000, 0x6000000, 0x000000, 0x7200000, + 0xfa00000, 0xfa00000, 0x400000, 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, 0xea00000, + 0xfa00000, 0xfa00000, 0x400000, 0xfa00000, 0xea00000, 0xfa00000, 0x8a00000, 0x400000, + 0x200000, 0x1000000, 0xea00000, 0x400000, 0x7200000, 0x7400000, 0x5000000, 0x6400000, + 0x400000, 0x6000000, 0x7200000, 0x6000000, 0xfa00000, 0x6000000, 0x6000000, 0x6400000, + 0x4000000, 0x6000000, 0xfa00000, 0x6000000, 0x400000, 0xfa00000, 0x400000, 0xe800000, + 0xfa00000, 0xea00000, 0xca00000, 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, 0x000000, + 0x1000000, 0xfa00000, 0x000000, 0x1000000, 0x5000000, 0xfa00000, 0xfa00000, 0xfa00000, + 0xfa00000, 0x5000000, 0x000000, 0x1000000, 0xfa00000, 0x1000000, 0x400000, 0x000000, + 0xfa00000, 0x1000000, 0x5200000, 0x400000, 0x400000, 0x1200000, 0xca00000, 0x6000000, + 0x5000000, 0x7200000, 0xea00000, 0x400000, 0x1200000, 0xfa00000, 0x400000, 0x6200000, + 0x200000, 0x6200000, 0xfa00000, 0x6200000, 0x6000000, 0xfa00000, 0x5200000, 0xfa00000, + 0x6400000, 0x1200000, 0x4000000, 0x1000000, 0x5000000, 0x400000, 0x6000000, 0x000000, + 0xfa00000, 0x400000, 0x7200000, 0x400000, 0x7200000, 0xfa00000, 0x200000, 0x4000000, + 0x4200000, 0x200000, 0xea00000, 0x5200000, 0xfa00000, 0x400000, 0x4000000, 0x1000000, + 0x7200000, 0x7200000, 0x5200000, 0x5200000, 0x4200000, 0x5200000, 0xfa00000, 0xfa00000, + 0x4400000, 0x6000000, 0x400000, 0x1000000, 0x7400000, 0xfa00000, 0x6400000, 0x400000, + 0x1000000, 0x000000, 0x400000, 0x4000000, 0xfa00000, 0x6200000, 0xfa00000, 0x5000000, + 0x6400000, 0xda00000, 0x6000000, 0xfa00000, 0xfa00000, 0xea00000, 0x6000000, 0x5400000, + 0x6000000, 0x5400000, 0x4400000, 0x4400000, 0x6000000, 0x400000, 0x200000, 0x6000000, + 0x6400000, 0x000000, 0x000000, 0x5200000, 0xea00000, 0xfa00000, 0xec00000, 0x4000000, + 0x7200000, 0xfa00000, 0x4400000, 0x000000, 0x5000000, 0x400000, 0x200000, 0x200000, + 0x000000, 0x200000, 0x200000, 0x1000000, 0x000000, 0x5200000, 0x400000, 0x1000000, + 0xfa00000, 0xea00000, 0x400000, 0x7400000, 0x4400000, 0x7200000, 0xfa00000, 0x400000, + 0xfa00000, 0xfa00000, 0xfa00000, 0x1000000, 0x5000000, 0xfa00000, 0x4200000, 0x1000000 +}; + +static const unsigned long unicode_backtrans_52[] = { + 0xfa00000, 0x7400000, 0x5400000, 0xfa00000, 0x200000, 0x4400000, 0xfa00000, 0xfa00000, + 0xfa00000, 0x6000000, 0xfa00000, 0x4200000, 0x6000000, 0x1000000, 0xfa00000, 0x000000, + 0x6000000, 0xfa00000, 0x7400000, 0x6400000, 0x200000, 0x400000, 0x7400000, 0xfa00000, + 0x1400000, 0x1000000, 0x1000000, 0x1000000, 0x6000000, 0xfa00000, 0x6000000, 0x4000000, + 0x5000000, 0x6000000, 0x400000, 0x000000, 0xfa00000, 0xea00000, 0x4000000, 0x4200000, + 0x7400000, 0xfa00000, 0xea00000, 0x1000000, 0x000000, 0x1000000, 0xfa00000, 0x000000, + 0xfa00000, 0x6400000, 0x6400000, 0x7200000, 0x4000000, 0x6400000, 0xfa00000, 0xfa00000, + 0xfa00000, 0x9a00000, 0xfa00000, 0xfa00000, 0x4400000, 0x1000000, 0x000000, 0x1000000, + 0x1000000, 0x7000000, 0x1000000, 0xfa00000, 0x6200000, 0x400000, 0x6000000, 0xea00000, + 0x000000, 0x6400000, 0xfa00000, 0xea00000, 0xfa00000, 0xfa00000, 0x6000000, 0x200000, + 0x1000000, 0x1000000, 0x6000000, 0x000000, 0xfa00000, 0x6400000, 0xfa00000, 0x4400000, + 0x400000, 0x4000000, 0x6400000, 0xea00000, 0x7400000, 0xe800000, 0x7200000, 0x6400000, + 0x4400000, 0xfc00000, 0x6000000, 0x200000, 0x200000, 0x1200000, 0x400000, 0x1000000, + 0x4000000, 0xfa00000, 0xfa00000, 0x6000000, 0x6000000, 0x6000000, 0x6400000, 0xfa00000, + 0x200000, 0x200000, 0xfa00000, 0x4200000, 0x6200000, 0xea00000, 0x000000, 0x6400000, + 0x6400000, 0x4400000, 0x6000000, 0x6000000, 0x6000000, 0xfa00000, 0x000000, 0xfa00000, + 0x6400000, 0x7000000, 0x7400000, 0xea00000, 0x6000000, 0x400000, 0x000000, 0xea00000, + 0xfa00000, 0xea00000, 0x6400000, 0x6000000, 0x6400000, 0xea00000, 0x000000, 0x4000000, + 0x5000000, 0xea00000, 0x8a00000, 0x7400000, 0x4200000, 0x400000, 0x6400000, 0x6400000, + 0x6400000, 0x6000000, 0x4400000, 0xfa00000, 0x400000, 0x1000000, 0x1000000, 0xfa00000, + 0xfa00000, 0x5000000, 0x1000000, 0xfa00000, 0xcc00000, 0x400000, 0x6400000, 0x400000, + 0x5000000, 0xfa00000, 0xfa00000, 0xfa00000, 0x7200000, 0x7200000, 0x6000000, 0x400000, + 0x400000, 0x1200000, 0x1000000, 0x1000000, 0x200000, 0x4200000, 0x400000, 0x400000, + 0x400000, 0x4200000, 0x400000, 0x6400000, 0x6200000, 0x400000, 0xfa00000, 0x1000000, + 0x6400000, 0xea00000, 0x6000000, 0xfa00000, 0x400000, 0xca00000, 0x400000, 0xfa00000, + 0x400000, 0xfa00000, 0x000000, 0x1000000, 0x4400000, 0xea00000, 0x000000, 0x400000, + 0x5000000, 0x4400000, 0xfa00000, 0x6000000, 0x400000, 0xea00000, 0xfc00000, 0x6200000, + 0xfa00000, 0xea00000, 0x000000, 0xec00000, 0x400000, 0xea00000, 0xea00000, 0xfa00000, + 0x4200000, 0x4400000, 0xea00000, 0xea00000, 0xfa00000, 0x400000, 0x6200000, 0x200000, + 0x400000, 0x6400000, 0x400000, 0x6000000, 0x400000, 0x000000, 0x000000, 0x6000000, + 0x7400000, 0x6400000, 0x200000, 0xea00000, 0x6400000, 0xea00000, 0x400000, 0x6400000, + 0xea00000, 0x5200000, 0xfa00000, 0xe800000, 0x6000000, 0x000000, 0xfa00000, 0xfa00000 +}; + +static const unsigned long unicode_backtrans_53[] = { + 0x1400000, 0x4200000, 0x200000, 0x400000, 0x000000, 0xda00000, 0x7200000, 0x000000, + 0xfa00000, 0x6000000, 0x6400000, 0x6400000, 0x400000, 0xfa00000, 0x6000000, 0xfa00000, + 0xfa00000, 0x6400000, 0x6000000, 0x400000, 0x000000, 0xfa00000, 0xfa00000, 0xfa00000, + 0x400000, 0xfa00000, 0x7200000, 0x400000, 0x6400000, 0x7200000, 0x400000, 0x6400000, + 0xfa00000, 0xfa00000, 0x6000000, 0xfa00000, 0x4000000, 0x400000, 0x1000000, 0x4400000, + 0x400000, 0x400000, 0xfa00000, 0x400000, 0x4400000, 0x6400000, 0x1000000, 0xea00000, + 0x6400000, 0x6200000, 0x4400000, 0x4200000, 0x6000000, 0x400000, 0x000000, 0x6000000, + 0x4200000, 0xfa00000, 0x1200000, 0x5200000, 0x6400000, 0x6400000, 0x7400000, 0xfa00000, + 0xea00000, 0xfa00000, 0x4400000, 0xfa00000, 0xe800000, 0x7200000, 0x200000, 0xfa00000, + 0xfa00000, 0xfa00000, 0xfa00000, 0x400000, 0x6400000, 0xea00000, 0x5000000, 0x1000000, + 0x000000, 0xfa00000, 0xfa00000, 0xfa00000, 0xea00000, 0x1000000, 0x1000000, 0xfa00000, + 0x200000, 0x400000, 0xfa00000, 0x400000, 0xfa00000, 0x4000000, 0xfa00000, 0x5000000, + 0xfa00000, 0x7400000, 0x1000000, 0x7400000, 0x5000000, 0x400000, 0xfa00000, 0x5000000, + 0x8800000, 0x5200000, 0x000000, 0x1000000, 0x6400000, 0x4400000, 0x7200000, 0xfa00000, + 0xfa00000, 0xfa00000, 0x6400000, 0x7200000, 0xda00000, 0xfa00000, 0x000000, 0xfa00000, + 0x7200000, 0x6400000, 0x1000000, 0x6200000, 0x6000000, 0xc800000, 0x4400000, 0xfa00000, + 0x000000, 0x000000, 0x7200000, 0x400000, 0xfa00000, 0x1000000, 0x1000000, 0x400000, + 0x400000, 0x1000000, 0x6000000, 0x1000000, 0x1000000, 0x1000000, 0x6400000, 0x6000000, + 0x000000, 0x000000, 0x6000000, 0xcc00000, 0x6400000, 0x1000000, 0x6200000, 0x6000000, + 0xfa00000, 0x6400000, 0xfa00000, 0x000000, 0x6000000, 0x7400000, 0x6000000, 0xfa00000, + 0xca00000, 0x400000, 0x5000000, 0x1000000, 0x6400000, 0xfa00000, 0xda00000, 0x6000000, + 0x5200000, 0x5200000, 0x4400000, 0x4400000, 0x6000000, 0xea00000, 0x5200000, 0x400000, + 0x4200000, 0x000000, 0x6400000, 0x200000, 0x6400000, 0x400000, 0x5200000, 0x400000, + 0x400000, 0x6000000, 0x400000, 0xfa00000, 0x000000, 0x400000, 0x000000, 0x1000000, + 0x400000, 0x5000000, 0x5200000, 0xea00000, 0x000000, 0x4400000, 0x000000, 0x000000, + 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, 0x5200000, 0xfa00000, 0x200000, 0x400000, + 0x4000000, 0x5000000, 0x4400000, 0x400000, 0xfa00000, 0x400000, 0xfa00000, 0xfa00000, + 0x5000000, 0x5200000, 0x4400000, 0xfa00000, 0x000000, 0x400000, 0x400000, 0x7200000, + 0x5400000, 0xea00000, 0xea00000, 0xfa00000, 0xfa00000, 0xfa00000, 0x7400000, 0x400000, + 0x7200000, 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, 0x7200000, 0xfa00000, + 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, 0x000000, 0x7400000, 0x5200000, 0x5200000, + 0xfa00000, 0x1000000, 0x200000, 0x7000000, 0x7000000, 0x1000000, 0x4000000, 0x000000 +}; + +static const unsigned long unicode_backtrans_54[] = { + 0x000000, 0x7200000, 0x400000, 0xfa00000, 0xfa00000, 0x000000, 0x7000000, 0x6000000, + 0xfa00000, 0xfa00000, 0xfa00000, 0x6200000, 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, + 0xfa00000, 0xfa00000, 0x7000000, 0x5400000, 0x4000000, 0x1000000, 0x5000000, 0x1000000, + 0x6000000, 0x6000000, 0x4400000, 0xfa00000, 0x6000000, 0xfa00000, 0x7000000, 0xfa00000, + 0xfa00000, 0x5400000, 0x000000, 0x5000000, 0x6000000, 0x6000000, 0xfa00000, 0x7400000, + 0x7400000, 0xfa00000, 0x6400000, 0xfa00000, 0x7200000, 0x7200000, 0x7200000, 0x5400000, + 0x6000000, 0x7400000, 0x5000000, 0xe800000, 0x5400000, 0x7400000, 0x6200000, 0x6000000, + 0xfa00000, 0xfa00000, 0x000000, 0xfa00000, 0xfa00000, 0x6200000, 0xfa00000, 0x000000, + 0x7200000, 0x6000000, 0xea00000, 0x7400000, 0x400000, 0x6000000, 0x7200000, 0x6400000, + 0xfa00000, 0x200000, 0xfa00000, 0x5000000, 0x000000, 0x4400000, 0x6200000, 0x6400000, + 0x1000000, 0x8a00000, 0x1000000, 0x1000000, 0x7000000, 0x1000000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x000000, 0x1000000, 0x1000000, 0x000000, 0x400000, 0x200000, + 0x6000000, 0x6000000, 0x7400000, 0x6000000, 0x7400000, 0x6000000, 0x7400000, 0x6400000, + 0xfa00000, 0x4400000, 0xca00000, 0x6400000, 0x6000000, 0x4400000, 0x400000, 0x6000000, + 0x6200000, 0xfa00000, 0x7000000, 0xfa00000, 0x6400000, 0xfa00000, 0x7200000, 0x7200000, + 0x7000000, 0x000000, 0x6000000, 0xfa00000, 0xfa00000, 0xfa00000, 0x6000000, 0x6400000, + 0xfa00000, 0x6400000, 0x7000000, 0x400000, 0x7200000, 0x4400000, 0xfa00000, 0x6000000, + 0x6400000, 0x400000, 0x000000, 0x7200000, 0xfa00000, 0x6400000, 0xfa00000, 0x5200000, + 0xfa00000, 0x6400000, 0x7200000, 0x4000000, 0x5000000, 0x7400000, 0x7400000, 0x4000000, + 0x6000000, 0x1000000, 0x7000000, 0x1000000, 0x4400000, 0x1000000, 0x4000000, 0x400000, + 0x6000000, 0x6400000, 0x6200000, 0x5000000, 0xda00000, 0x6200000, 0x7400000, 0x7400000, + 0xfa00000, 0x7400000, 0x7400000, 0xfa00000, 0xfa00000, 0x7400000, 0x6400000, 0x7200000, + 0x6000000, 0x7400000, 0x4200000, 0xfa00000, 0x5000000, 0x000000, 0x6000000, 0x6400000, + 0xfa00000, 0x4400000, 0x6400000, 0x7400000, 0x6200000, 0xfa00000, 0x6200000, 0x7400000, + 0xfa00000, 0xfa00000, 0x7200000, 0x6000000, 0xfa00000, 0x6000000, 0x7400000, 0x7200000, + 0xfa00000, 0xfa00000, 0x400000, 0x4000000, 0x5000000, 0x5400000, 0x7400000, 0x7000000, + 0x5000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x6000000, 0x1000000, + 0x200000, 0x1000000, 0x5000000, 0x000000, 0x1000000, 0x1000000, 0x7000000, 0x1000000, + 0x6400000, 0xea00000, 0x6200000, 0x4000000, 0x6000000, 0xfa00000, 0x7200000, 0x7000000, + 0xfa00000, 0x7200000, 0x7400000, 0x6000000, 0x400000, 0xfa00000, 0xfa00000, 0x4400000, + 0x000000, 0x6000000, 0xfa00000, 0x7000000, 0x000000, 0x000000, 0x400000, 0x6000000, + 0x6000000, 0x000000, 0xfa00000, 0x6000000, 0x7400000, 0x7200000, 0x400000, 0x7400000 +}; + +static const unsigned long unicode_backtrans_55[] = { + 0x400000, 0x7400000, 0x4000000, 0x6000000, 0xea00000, 0x6400000, 0xfa00000, 0xfa00000, + 0x6400000, 0x7400000, 0x6000000, 0x6000000, 0x6400000, 0x4400000, 0xec00000, 0x7200000, + 0xfa00000, 0x7000000, 0x6000000, 0x4000000, 0x7200000, 0x400000, 0x200000, 0x6000000, + 0x4000000, 0x000000, 0x6000000, 0x1000000, 0x8800000, 0x000000, 0x4000000, 0x000000, + 0x1000000, 0x000000, 0x1000000, 0x5000000, 0x1000000, 0x4000000, 0x6000000, 0x7000000, + 0x4000000, 0x000000, 0x7400000, 0x4400000, 0x7000000, 0x6000000, 0x7200000, 0xfa00000, + 0x7000000, 0xfa00000, 0x6400000, 0x7200000, 0x6000000, 0xec00000, 0x6400000, 0x7000000, + 0x6200000, 0x6200000, 0x000000, 0x6400000, 0x7400000, 0x400000, 0xfa00000, 0x5000000, + 0x6200000, 0x7400000, 0x000000, 0x7000000, 0xfa00000, 0x6200000, 0xfa00000, 0x4400000, + 0x6000000, 0x5400000, 0x7400000, 0x6000000, 0x200000, 0x6400000, 0x6000000, 0xea00000, + 0x7400000, 0x6400000, 0x6000000, 0xca00000, 0x000000, 0x7000000, 0xfa00000, 0x6200000, + 0x400000, 0x000000, 0x400000, 0x400000, 0x7200000, 0x4200000, 0xec00000, 0x6000000, + 0x400000, 0x7400000, 0x6000000, 0xea00000, 0x7400000, 0x7000000, 0x7400000, 0x1000000, + 0x000000, 0x4000000, 0x7000000, 0x4000000, 0x1000000, 0x1000000, 0x1000000, 0x000000, + 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x7000000, 0x7000000, 0x7000000, + 0x1000000, 0x4000000, 0x000000, 0x7200000, 0xfa00000, 0x6000000, 0x7200000, 0x6400000, + 0xfa00000, 0x7400000, 0x7400000, 0x7200000, 0xfa00000, 0x000000, 0xcc00000, 0xfa00000, + 0x7400000, 0xfa00000, 0xfa00000, 0x7200000, 0x6000000, 0x6000000, 0x6400000, 0x7400000, + 0x4000000, 0x7400000, 0x6400000, 0x6400000, 0x7400000, 0x6000000, 0x000000, 0x400000, + 0xfa00000, 0xfa00000, 0xea00000, 0x000000, 0xfa00000, 0xfa00000, 0x200000, 0x7200000, + 0x000000, 0x6000000, 0x6000000, 0x6400000, 0x6400000, 0x6000000, 0x6000000, 0xfa00000, + 0x6200000, 0xca00000, 0xea00000, 0xea00000, 0xea00000, 0x6400000, 0xea00000, 0x000000, + 0x4200000, 0x7000000, 0x6400000, 0x7000000, 0x4000000, 0x7000000, 0x200000, 0x1000000, + 0x000000, 0x5000000, 0x4000000, 0x7000000, 0x4000000, 0x1000000, 0x1000000, 0x6400000, + 0x6000000, 0x4400000, 0x6000000, 0x6400000, 0x7200000, 0xfa00000, 0x6400000, 0xea00000, + 0x6000000, 0x7400000, 0x6000000, 0x6400000, 0x7400000, 0x7000000, 0x6400000, 0x6000000, + 0x6000000, 0x7400000, 0x7400000, 0x7400000, 0xfa00000, 0x6000000, 0x7000000, 0x4400000, + 0x4400000, 0x6000000, 0xea00000, 0x6400000, 0xfa00000, 0x7000000, 0x4400000, 0xfa00000, + 0x000000, 0x7000000, 0x6400000, 0xfa00000, 0xfa00000, 0x7000000, 0x7000000, 0x6000000, + 0x7000000, 0x6400000, 0x5000000, 0x1000000, 0x5000000, 0x000000, 0x000000, 0x7000000, + 0x4000000, 0x4000000, 0x7000000, 0x1000000, 0x000000, 0x5000000, 0x6400000, 0x7200000, + 0x000000, 0x6200000, 0x6000000, 0x4000000, 0x6000000, 0xfa00000, 0xfa00000, 0x6400000 +}; + +static const unsigned long unicode_backtrans_56[] = { + 0x7000000, 0x7000000, 0x6000000, 0x000000, 0x6000000, 0x4400000, 0xea00000, 0x000000, + 0x7400000, 0xfa00000, 0x400000, 0x000000, 0x7000000, 0x6400000, 0x7400000, 0x7400000, + 0x6400000, 0x4400000, 0x6400000, 0x6000000, 0xea00000, 0x6000000, 0x6200000, 0xea00000, + 0x1200000, 0x400000, 0x000000, 0x7200000, 0x6000000, 0x6000000, 0x5000000, 0x7000000, + 0x4000000, 0x4000000, 0x4000000, 0x5000000, 0x1000000, 0x4000000, 0x000000, 0x7000000, + 0x000000, 0x6200000, 0x6000000, 0x000000, 0x7400000, 0x5000000, 0x6000000, 0xea00000, + 0x6400000, 0x1200000, 0xfa00000, 0x6400000, 0xfa00000, 0x6400000, 0xfa00000, 0x4400000, + 0x6200000, 0x7400000, 0x6000000, 0x7400000, 0x400000, 0x6400000, 0x6000000, 0x7400000, + 0x6400000, 0x6400000, 0x6200000, 0x4400000, 0x400000, 0x6000000, 0x6400000, 0x000000, + 0x6000000, 0x6400000, 0x6000000, 0x400000, 0x7200000, 0x5400000, 0x7200000, 0x4400000, + 0x4200000, 0x000000, 0x4000000, 0xe800000, 0x5400000, 0x000000, 0x000000, 0x7000000, + 0x7000000, 0x7000000, 0x6000000, 0x200000, 0x1000000, 0x4000000, 0x6400000, 0x000000, + 0x6400000, 0x4400000, 0x7400000, 0x6400000, 0x7200000, 0x6000000, 0x6400000, 0x000000, + 0xfa00000, 0x7400000, 0x7200000, 0xfa00000, 0x7200000, 0x6400000, 0x6000000, 0x6400000, + 0x6000000, 0x7400000, 0x6400000, 0x6000000, 0xea00000, 0x400000, 0x7000000, 0x6000000, + 0x6200000, 0x6000000, 0x4200000, 0x5000000, 0x5000000, 0x000000, 0x6000000, 0x6000000, + 0x6200000, 0x6000000, 0x6000000, 0x6000000, 0x6400000, 0x7400000, 0xfa00000, 0x6200000, + 0x400000, 0x4000000, 0x4200000, 0x4400000, 0x6400000, 0x6000000, 0x7000000, 0x7200000, + 0x6000000, 0x000000, 0x4000000, 0x7000000, 0x200000, 0x6400000, 0x000000, 0x6000000, + 0x6000000, 0x6400000, 0x6400000, 0x000000, 0x6000000, 0x6400000, 0x4400000, 0x4400000, + 0x200000, 0x4000000, 0x200000, 0x1000000, 0x4000000, 0xea00000, 0x6400000, 0x6400000, + 0x6400000, 0x400000, 0x6000000, 0x6400000, 0xec00000, 0x6400000, 0xea00000, 0x5000000, + 0x000000, 0x4400000, 0x6000000, 0x6400000, 0xea00000, 0x6000000, 0x6200000, 0x7400000, + 0x000000, 0x4000000, 0x000000, 0x000000, 0xfa00000, 0x6000000, 0x6400000, 0x4000000, + 0x6200000, 0x6200000, 0x6200000, 0x6200000, 0x000000, 0x6400000, 0x6000000, 0x000000, + 0x6200000, 0x6400000, 0xfc00000, 0x6400000, 0x6400000, 0xec00000, 0x200000, 0x400000, + 0x400000, 0xea00000, 0x000000, 0x6200000, 0x7000000, 0x000000, 0x4000000, 0x7200000, + 0x200000, 0x400000, 0xfa00000, 0xfa00000, 0x400000, 0x7400000, 0xfa00000, 0x7400000, + 0xfa00000, 0x7400000, 0x5000000, 0x200000, 0x7400000, 0x6400000, 0x400000, 0x6400000, + 0x400000, 0x000000, 0x6000000, 0x7400000, 0x000000, 0x5400000, 0x6200000, 0x4000000, + 0xfa00000, 0x5400000, 0x200000, 0x200000, 0x1000000, 0x1000000, 0x400000, 0x6400000, + 0x000000, 0xfa00000, 0xfa00000, 0x000000, 0x000000, 0x5200000, 0x1000000, 0x7200000 +}; + +static const unsigned long unicode_backtrans_57[] = { + 0x4200000, 0x6400000, 0x6400000, 0xfa00000, 0xfa00000, 0x000000, 0x1000000, 0x6400000, + 0xfa00000, 0x7200000, 0x7400000, 0xea00000, 0x6400000, 0xea00000, 0x000000, 0x200000, + 0x000000, 0x400000, 0xea00000, 0xea00000, 0x6000000, 0x4400000, 0xea00000, 0x000000, + 0xea00000, 0x000000, 0x6400000, 0x6400000, 0x7200000, 0x4400000, 0x6000000, 0xfa00000, + 0x6400000, 0x000000, 0x6400000, 0x7400000, 0x400000, 0x400000, 0x200000, 0x200000, + 0xfa00000, 0x7400000, 0x7400000, 0x000000, 0x7400000, 0xfa00000, 0x7400000, 0x7400000, + 0xfa00000, 0x000000, 0x4000000, 0x7400000, 0x6400000, 0x000000, 0x000000, 0x200000, + 0x200000, 0x1000000, 0x1000000, 0xfa00000, 0x000000, 0x4400000, 0x7400000, 0x4400000, + 0xfa00000, 0x6000000, 0xda00000, 0x4000000, 0x000000, 0x6400000, 0x4400000, 0xfa00000, + 0x000000, 0x6000000, 0xfa00000, 0x6000000, 0x7400000, 0xfc00000, 0xfa00000, 0x7200000, + 0xfa00000, 0xfa00000, 0x6400000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x5000000, + 0x000000, 0x000000, 0x1000000, 0x5000000, 0x1000000, 0x1000000, 0x1000000, 0x5000000, + 0x1000000, 0xfa00000, 0x6400000, 0x000000, 0xfa00000, 0x400000, 0xfa00000, 0x4400000, + 0x7400000, 0x7200000, 0xfa00000, 0x7400000, 0x000000, 0x7400000, 0x8c00000, 0x7400000, + 0xec00000, 0x6400000, 0x6000000, 0x7400000, 0x6400000, 0xec00000, 0x7000000, 0x7400000, + 0x000000, 0x400000, 0x4400000, 0x7400000, 0xfc00000, 0x6000000, 0x4400000, 0x4200000, + 0x6000000, 0x400000, 0xfa00000, 0x7400000, 0x1000000, 0x1000000, 0x1000000, 0x000000, + 0xca00000, 0x200000, 0x4000000, 0xfa00000, 0x7400000, 0x4000000, 0x000000, 0x6000000, + 0x4000000, 0x000000, 0x1000000, 0xfa00000, 0x6400000, 0x6400000, 0x000000, 0x6400000, + 0x6000000, 0x6400000, 0x6400000, 0x7000000, 0x4400000, 0x6400000, 0x6400000, 0x6400000, + 0xfa00000, 0x5400000, 0xfa00000, 0xfa00000, 0x7200000, 0x6000000, 0x1000000, 0x5400000, + 0x400000, 0x1400000, 0x4200000, 0x1000000, 0x400000, 0x1000000, 0x7000000, 0x000000, + 0x200000, 0x000000, 0x1000000, 0x200000, 0x5000000, 0x6000000, 0x6000000, 0x000000, + 0x7400000, 0x6000000, 0x6000000, 0x4000000, 0x6000000, 0x6400000, 0x4000000, 0x6000000, + 0x200000, 0x6000000, 0x7000000, 0xfa00000, 0x4000000, 0x000000, 0x6200000, 0xec00000, + 0xcc00000, 0x000000, 0x000000, 0xfa00000, 0x6400000, 0x000000, 0xfa00000, 0x7400000, + 0x6000000, 0x000000, 0x7200000, 0x200000, 0x7200000, 0x7400000, 0x200000, 0x4000000, + 0x1000000, 0x1000000, 0x1000000, 0x000000, 0x6200000, 0x5400000, 0x4400000, 0xfa00000, + 0xfa00000, 0x6400000, 0x6000000, 0x6200000, 0x7400000, 0x6000000, 0x4400000, 0x6400000, + 0x000000, 0x6400000, 0x000000, 0x000000, 0x6000000, 0x7400000, 0x6000000, 0x5000000, + 0xec00000, 0x6000000, 0x6000000, 0x6000000, 0xfa00000, 0x6400000, 0x6400000, 0xea00000, + 0x7400000, 0xfa00000, 0xfa00000, 0x6000000, 0xea00000, 0x7400000, 0x4400000, 0x400000 +}; + +static const unsigned long unicode_backtrans_58[] = { + 0xfa00000, 0x6000000, 0xfa00000, 0x4400000, 0x6400000, 0xea00000, 0xfa00000, 0x7000000, + 0xec00000, 0xec00000, 0xea00000, 0x7200000, 0x6400000, 0x7400000, 0x6000000, 0x000000, + 0x6000000, 0x1000000, 0x4000000, 0x000000, 0x6000000, 0x1200000, 0x000000, 0x000000, + 0x000000, 0x7200000, 0x000000, 0x6400000, 0x6000000, 0x6200000, 0xfc00000, 0x400000, + 0x7400000, 0xfa00000, 0x4000000, 0x6000000, 0xfa00000, 0x6000000, 0x4400000, 0xec00000, + 0x6000000, 0x6000000, 0xfa00000, 0x000000, 0x6000000, 0x6400000, 0x6000000, 0xea00000, + 0xfa00000, 0xea00000, 0x6400000, 0x6000000, 0xea00000, 0xfa00000, 0x6000000, 0x6000000, + 0x6000000, 0x6400000, 0xca00000, 0x6000000, 0x000000, 0x6200000, 0x000000, 0x6400000, + 0x4200000, 0x200000, 0x000000, 0x000000, 0x5000000, 0x000000, 0x000000, 0x4000000, + 0x6000000, 0x6400000, 0xea00000, 0xea00000, 0x7400000, 0x7400000, 0x6000000, 0xec00000, + 0x400000, 0xfa00000, 0x6200000, 0x6000000, 0xfa00000, 0x6400000, 0x000000, 0xea00000, + 0xfa00000, 0x6200000, 0xea00000, 0x6000000, 0x4000000, 0x6000000, 0xfa00000, 0x4400000, + 0x000000, 0x8c00000, 0xea00000, 0x6000000, 0xec00000, 0x7000000, 0x000000, 0x400000, + 0x6400000, 0x4200000, 0x000000, 0x7200000, 0x5000000, 0x6000000, 0x000000, 0x6000000, + 0x200000, 0x6000000, 0x4200000, 0x4000000, 0x6000000, 0xea00000, 0x6000000, 0x000000, + 0x400000, 0xea00000, 0x6000000, 0x6000000, 0xec00000, 0x6000000, 0xfa00000, 0x6400000, + 0x7400000, 0x7400000, 0x6000000, 0xfa00000, 0x000000, 0xfa00000, 0x6000000, 0x6400000, + 0x6400000, 0xfc00000, 0x6400000, 0x6000000, 0x400000, 0x400000, 0x6000000, 0x6400000, + 0x6400000, 0x6000000, 0x5000000, 0xfa00000, 0x6400000, 0x000000, 0x400000, 0x200000, + 0x6000000, 0x5000000, 0x5000000, 0x000000, 0xea00000, 0x6400000, 0xf800000, 0xfa00000, + 0x6400000, 0x6400000, 0x400000, 0x6000000, 0x000000, 0x6000000, 0x6400000, 0x4000000, + 0xfa00000, 0xfc00000, 0x4000000, 0x6200000, 0x6000000, 0x000000, 0xea00000, 0x6000000, + 0x4000000, 0x6400000, 0x400000, 0xea00000, 0x000000, 0x4000000, 0x4000000, 0x000000, + 0x200000, 0x200000, 0xea00000, 0xca00000, 0x7400000, 0x6000000, 0xea00000, 0x6000000, + 0x000000, 0xfa00000, 0x6400000, 0x000000, 0x400000, 0xfa00000, 0x6000000, 0xea00000, + 0x6400000, 0x6000000, 0x200000, 0x4000000, 0x200000, 0x400000, 0xec00000, 0x6000000, + 0x4400000, 0xfa00000, 0x6400000, 0xea00000, 0x6400000, 0xfa00000, 0x6400000, 0x200000, + 0xea00000, 0xea00000, 0x6400000, 0x6000000, 0x4200000, 0x6400000, 0xea00000, 0xea00000, + 0x4000000, 0x400000, 0x6400000, 0x6000000, 0xfa00000, 0x200000, 0x000000, 0x6000000, + 0x6000000, 0x6400000, 0x000000, 0xfa00000, 0xfa00000, 0x000000, 0x1200000, 0xea00000, + 0x5200000, 0x200000, 0x4200000, 0x5400000, 0x6000000, 0x000000, 0x1000000, 0x200000, + 0x000000, 0xfa00000, 0xea00000, 0xca00000, 0x6200000, 0xea00000, 0x6000000, 0x6000000 +}; + +static const unsigned long unicode_backtrans_59[] = { + 0x000000, 0x000000, 0x5200000, 0x6000000, 0x5000000, 0x4400000, 0x6400000, 0x5000000, + 0x000000, 0x200000, 0x4200000, 0x400000, 0x6400000, 0x7000000, 0x6000000, 0xfa00000, + 0x200000, 0x4000000, 0x6400000, 0x400000, 0xfc00000, 0xfa00000, 0xfa00000, 0x6000000, + 0x200000, 0xfa00000, 0xfa00000, 0x200000, 0xfa00000, 0x400000, 0x000000, 0x5000000, + 0x6000000, 0x400000, 0xea00000, 0x400000, 0x7400000, 0x7200000, 0x000000, 0xfa00000, + 0x400000, 0xfa00000, 0xfa00000, 0xfa00000, 0x6200000, 0xfa00000, 0xfa00000, 0x7400000, + 0x400000, 0xfa00000, 0x4200000, 0x400000, 0x5000000, 0x400000, 0x400000, 0xfa00000, + 0x7200000, 0x1000000, 0x1000000, 0x000000, 0x7000000, 0x000000, 0xea00000, 0x400000, + 0x6000000, 0x1000000, 0x1000000, 0x400000, 0xfa00000, 0x6000000, 0x400000, 0xfa00000, + 0xfa00000, 0xfa00000, 0x6000000, 0x1000000, 0x000000, 0x000000, 0xfa00000, 0xfa00000, + 0xea00000, 0xfa00000, 0x400000, 0x6400000, 0xfa00000, 0xfa00000, 0x1000000, 0xfa00000, + 0x7200000, 0x400000, 0xfa00000, 0x400000, 0x6000000, 0x400000, 0x400000, 0x400000, + 0xfa00000, 0x6400000, 0xfa00000, 0x400000, 0x000000, 0x5200000, 0x000000, 0xea00000, + 0x200000, 0x6200000, 0xea00000, 0xec00000, 0x8a00000, 0xec00000, 0xea00000, 0x400000, + 0x6000000, 0x6000000, 0x6400000, 0xfa00000, 0xfa00000, 0x4400000, 0x7400000, 0x6000000, + 0xfa00000, 0x7400000, 0x000000, 0x6400000, 0x6400000, 0xfa00000, 0x6000000, 0x6000000, + 0x6000000, 0x7200000, 0xfa00000, 0xfa00000, 0xfa00000, 0x6000000, 0x1000000, 0x1000000, + 0x1000000, 0x4000000, 0xfa00000, 0x400000, 0x400000, 0x7200000, 0x6400000, 0x6000000, + 0x6000000, 0x000000, 0x7400000, 0xfa00000, 0x4000000, 0x400000, 0xfa00000, 0xfc00000, + 0x6000000, 0xfa00000, 0x4000000, 0x200000, 0x000000, 0x6200000, 0x7000000, 0x4400000, + 0x6000000, 0x6000000, 0x6000000, 0x7200000, 0x7400000, 0xfa00000, 0x6000000, 0x6400000, + 0xfa00000, 0x1000000, 0x1000000, 0x1000000, 0xca00000, 0x400000, 0x7400000, 0x7400000, + 0x4400000, 0x6000000, 0x7200000, 0x6400000, 0x6000000, 0x6000000, 0x6000000, 0x4400000, + 0x4000000, 0xfa00000, 0x6400000, 0xfa00000, 0x6400000, 0x6000000, 0xfa00000, 0x000000, + 0x6000000, 0x6400000, 0x000000, 0xec00000, 0x4400000, 0x6000000, 0xfa00000, 0x6000000, + 0x6400000, 0xca00000, 0x7400000, 0xfa00000, 0x6000000, 0x6400000, 0x6000000, 0x6000000, + 0xfa00000, 0xfa00000, 0x7400000, 0xfa00000, 0xfa00000, 0x000000, 0x6000000, 0x1000000, + 0x7000000, 0xca00000, 0xfa00000, 0x6000000, 0xfa00000, 0xfc00000, 0x6400000, 0x400000, + 0x6000000, 0x6000000, 0x000000, 0x7400000, 0x6400000, 0x7200000, 0xea00000, 0x400000, + 0xfa00000, 0x6000000, 0xea00000, 0x4200000, 0xf800000, 0x6000000, 0xec00000, 0x4400000, + 0x4000000, 0x6400000, 0x6400000, 0x6000000, 0x6400000, 0x6000000, 0x6200000, 0x6400000, + 0xc800000, 0x5000000, 0x6000000, 0xfa00000, 0x6000000, 0x6000000, 0x6000000, 0xfa00000 +}; + +static const unsigned long unicode_backtrans_5a[] = { + 0x6400000, 0xfa00000, 0x4000000, 0xfa00000, 0x1400000, 0x1000000, 0x1000000, 0x1000000, + 0x1000000, 0x7200000, 0x6000000, 0x4000000, 0x7400000, 0x4400000, 0x400000, 0x6000000, + 0x000000, 0xfa00000, 0x4400000, 0x7400000, 0x000000, 0x6000000, 0x6000000, 0x6000000, + 0xfa00000, 0x6000000, 0x4200000, 0xe800000, 0xfa00000, 0x000000, 0x6400000, 0xfa00000, + 0xfa00000, 0x4000000, 0x000000, 0x7400000, 0x4400000, 0xfa00000, 0x000000, 0x4400000, + 0x400000, 0xfa00000, 0x4400000, 0x4000000, 0x4000000, 0x6400000, 0x6000000, 0x200000, + 0x400000, 0x1000000, 0x1000000, 0x6000000, 0x1000000, 0x6200000, 0xfa00000, 0x6000000, + 0x6000000, 0x6000000, 0x000000, 0x000000, 0xfa00000, 0x4000000, 0x6000000, 0x000000, + 0x7200000, 0xea00000, 0x6000000, 0x6000000, 0x6400000, 0x4400000, 0xfa00000, 0x6400000, + 0x6400000, 0xfa00000, 0x7000000, 0x000000, 0x6400000, 0x6000000, 0x000000, 0x000000, + 0x6400000, 0x6000000, 0x6000000, 0x6000000, 0x4000000, 0x7400000, 0x6000000, 0x6000000, + 0x6000000, 0x4000000, 0xfa00000, 0x6000000, 0x6000000, 0x6000000, 0x6400000, 0x6000000, + 0x6000000, 0x4000000, 0xfa00000, 0x4400000, 0x6000000, 0x6400000, 0xea00000, 0x7400000, + 0x4000000, 0x6000000, 0x7200000, 0x4000000, 0x6200000, 0x6400000, 0x4000000, 0x000000, + 0x6000000, 0x4000000, 0x000000, 0x000000, 0x1000000, 0x1000000, 0x1000000, 0x7400000, + 0x6000000, 0x4000000, 0x7400000, 0x6400000, 0x6000000, 0x6000000, 0x4400000, 0x7200000, + 0x000000, 0x4000000, 0x4000000, 0x6000000, 0x6000000, 0x000000, 0x4000000, 0x000000, + 0x4000000, 0x000000, 0x6000000, 0x6400000, 0x6000000, 0x000000, 0x6000000, 0x6000000, + 0x6400000, 0x4000000, 0xfa00000, 0x6400000, 0x6000000, 0x6000000, 0x4400000, 0x6000000, + 0x000000, 0x4400000, 0xfa00000, 0xfa00000, 0x6400000, 0x6000000, 0x6400000, 0x6400000, + 0x4400000, 0x4000000, 0x6400000, 0x000000, 0x8800000, 0x6000000, 0x6000000, 0x6400000, + 0x000000, 0x6000000, 0x1000000, 0x4000000, 0x6400000, 0x000000, 0x6000000, 0x6000000, + 0x6000000, 0x6400000, 0x7400000, 0x7400000, 0x6000000, 0x7400000, 0x6000000, 0x6000000, + 0x7400000, 0x6000000, 0x6400000, 0x6400000, 0x6200000, 0x6200000, 0x7200000, 0x6400000, + 0x6000000, 0xfa00000, 0xfa00000, 0x4000000, 0xec00000, 0x000000, 0x6400000, 0x6000000, + 0x6400000, 0xfa00000, 0x6000000, 0x6200000, 0xfa00000, 0x6000000, 0x4000000, 0x4400000, + 0x200000, 0x000000, 0x1000000, 0x4000000, 0x1000000, 0x6000000, 0x7200000, 0x6200000, + 0x7000000, 0x6000000, 0x6400000, 0x6000000, 0x7400000, 0x6000000, 0x6000000, 0x6000000, + 0x7400000, 0xfa00000, 0x6000000, 0x7200000, 0x4000000, 0x6400000, 0xfa00000, 0x000000, + 0x6000000, 0xfa00000, 0x6400000, 0x7000000, 0x6000000, 0x6000000, 0x6400000, 0x000000, + 0x4000000, 0x1000000, 0x4000000, 0x6000000, 0x6000000, 0x6400000, 0x6400000, 0x6000000, + 0x6000000, 0x6000000, 0x4200000, 0x6200000, 0x000000, 0x6400000, 0x4000000, 0x6000000 +}; + +static const unsigned long unicode_backtrans_5b[] = { + 0x400000, 0x6400000, 0x6000000, 0x6000000, 0x000000, 0xe800000, 0x000000, 0x6000000, + 0x6400000, 0xfa00000, 0x000000, 0xea00000, 0xea00000, 0x4000000, 0x000000, 0x6000000, + 0x6000000, 0x4000000, 0x000000, 0x6000000, 0x6000000, 0x4000000, 0xfa00000, 0x7400000, + 0x000000, 0x6400000, 0x6000000, 0x6400000, 0x000000, 0x6400000, 0x6000000, 0x4000000, + 0x6000000, 0x6400000, 0x200000, 0x6000000, 0x6000000, 0x6400000, 0x6000000, 0x6000000, + 0x6000000, 0x000000, 0xea00000, 0x4000000, 0x6200000, 0x6400000, 0x6000000, 0x6000000, + 0x6200000, 0x000000, 0x7200000, 0x000000, 0x7400000, 0x000000, 0x200000, 0x1000000, + 0x6400000, 0x000000, 0x000000, 0x000000, 0x6000000, 0x6000000, 0x6200000, 0x6000000, + 0xfa00000, 0x4400000, 0x000000, 0xea00000, 0x4000000, 0x6200000, 0x4000000, 0x6000000, + 0x6000000, 0x000000, 0x4000000, 0x6400000, 0x6400000, 0x6000000, 0x6000000, 0x4000000, + 0xfa00000, 0xfa00000, 0x400000, 0x7000000, 0xfa00000, 0xfa00000, 0x6400000, 0xfa00000, + 0xfa00000, 0x1000000, 0xfa00000, 0x7200000, 0xfa00000, 0xfa00000, 0x400000, 0xfa00000, + 0x000000, 0x000000, 0x7000000, 0xfa00000, 0xfa00000, 0x7200000, 0x5200000, 0x000000, + 0x4400000, 0xfa00000, 0x1000000, 0xea00000, 0x7000000, 0x4000000, 0x6400000, 0x400000, + 0xfa00000, 0xfa00000, 0x6000000, 0x7200000, 0x4000000, 0xfa00000, 0x4000000, 0x6000000, + 0xea00000, 0x000000, 0xfa00000, 0x6000000, 0xcc00000, 0x7400000, 0x400000, 0x6400000, + 0x5200000, 0x7400000, 0x4000000, 0x7200000, 0x7400000, 0xfa00000, 0x400000, 0xfa00000, + 0xfa00000, 0xfa00000, 0x400000, 0xfa00000, 0xfa00000, 0x200000, 0x6400000, 0xfa00000, + 0x4400000, 0x400000, 0x6000000, 0xfc00000, 0x400000, 0xfa00000, 0xcc00000, 0xfa00000, + 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, 0x5200000, 0x5000000, 0x4200000, + 0x1000000, 0x1000000, 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, 0x6000000, + 0x6400000, 0x400000, 0x5000000, 0x1000000, 0xec00000, 0x6400000, 0xea00000, 0x400000, + 0xfa00000, 0x400000, 0x400000, 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, 0x400000, + 0xfa00000, 0xfa00000, 0x400000, 0x000000, 0x400000, 0x1000000, 0x1000000, 0xfa00000, + 0xec00000, 0x6400000, 0xfa00000, 0xca00000, 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, + 0x000000, 0x200000, 0x6000000, 0x6000000, 0xfa00000, 0x6400000, 0x6000000, 0x400000, + 0xfa00000, 0x6000000, 0xfa00000, 0xfa00000, 0xea00000, 0x4000000, 0x6400000, 0xcc00000, + 0x6400000, 0x6400000, 0x400000, 0x200000, 0x000000, 0x1200000, 0xfa00000, 0xfa00000, + 0x6400000, 0xfa00000, 0xea00000, 0x6000000, 0xfa00000, 0xfa00000, 0xea00000, 0xea00000, + 0xfa00000, 0xea00000, 0x6000000, 0xea00000, 0xe800000, 0x000000, 0xfa00000, 0xec00000, + 0x7200000, 0x6400000, 0x6000000, 0x4200000, 0x400000, 0xea00000, 0xea00000, 0x000000, + 0xfa00000, 0x1000000, 0xfa00000, 0x1000000, 0x1000000, 0x400000, 0x200000, 0x5200000 +}; + +static const unsigned long unicode_backtrans_5c[] = { + 0x000000, 0xfa00000, 0x200000, 0x6000000, 0xfa00000, 0x4200000, 0x1200000, 0xea00000, + 0xea00000, 0xfa00000, 0xfa00000, 0xea00000, 0x6400000, 0xea00000, 0xea00000, 0xfa00000, + 0x6000000, 0xfa00000, 0x6000000, 0x4200000, 0x5000000, 0x7000000, 0xfa00000, 0x400000, + 0x1000000, 0x8800000, 0x7200000, 0x000000, 0x5000000, 0x1000000, 0x4400000, 0x6400000, + 0x4200000, 0x000000, 0x7200000, 0x4400000, 0xfa00000, 0x7000000, 0x400000, 0x1000000, + 0xea00000, 0x400000, 0x6000000, 0x400000, 0x7400000, 0x200000, 0x400000, 0x000000, + 0x6400000, 0xfa00000, 0x400000, 0x6000000, 0x1000000, 0x400000, 0x400000, 0x6000000, + 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, 0x1200000, 0xfa00000, 0xfa00000, + 0xfa00000, 0x7200000, 0x1000000, 0x000000, 0x6000000, 0xfa00000, 0xea00000, 0x6000000, + 0xfa00000, 0x5000000, 0x5200000, 0xfa00000, 0x6000000, 0xea00000, 0xfa00000, 0x7200000, + 0x7200000, 0xfa00000, 0x000000, 0x4200000, 0x6000000, 0xfa00000, 0x6000000, 0x000000, + 0x6000000, 0x7400000, 0x400000, 0x8800000, 0x6400000, 0x6000000, 0x5200000, 0x000000, + 0xfa00000, 0x1200000, 0xec00000, 0x7400000, 0xea00000, 0xfa00000, 0x1000000, 0x6400000, + 0x6400000, 0x6400000, 0x6000000, 0x000000, 0xea00000, 0x6400000, 0x7200000, 0xfa00000, + 0x400000, 0xfa00000, 0x000000, 0x6000000, 0x6400000, 0x400000, 0x200000, 0x000000, + 0x000000, 0xfa00000, 0x7400000, 0x6400000, 0x6400000, 0x400000, 0x6000000, 0x1000000, + 0x000000, 0x1000000, 0x1000000, 0x000000, 0x000000, 0x4000000, 0x6000000, 0x400000, + 0x7400000, 0x6000000, 0x6400000, 0x6000000, 0x7200000, 0x7000000, 0x000000, 0x6400000, + 0xfa00000, 0xfa00000, 0x6400000, 0x6000000, 0x7200000, 0x6000000, 0x1000000, 0x1000000, + 0x1000000, 0x5000000, 0x5000000, 0x1000000, 0x5000000, 0x6400000, 0x4000000, 0x6400000, + 0x6400000, 0xea00000, 0x7400000, 0x7400000, 0x6000000, 0x6000000, 0x6400000, 0x6000000, + 0x6200000, 0xfa00000, 0x6400000, 0xfa00000, 0xfa00000, 0x7000000, 0x6000000, 0x6000000, + 0x6000000, 0xfa00000, 0x400000, 0xfa00000, 0x400000, 0xfc00000, 0x6200000, 0xfa00000, + 0xfa00000, 0x000000, 0xcc00000, 0x200000, 0x200000, 0x1000000, 0x8a00000, 0x1000000, + 0x8800000, 0x5000000, 0x4000000, 0x000000, 0x1000000, 0x200000, 0x6000000, 0x6200000, + 0x6000000, 0x6400000, 0x6000000, 0x7400000, 0x6000000, 0x000000, 0x6000000, 0x6000000, + 0x6000000, 0x4000000, 0x7400000, 0x6000000, 0x6000000, 0x000000, 0x6000000, 0x6400000, + 0x6000000, 0xfa00000, 0x6000000, 0x6000000, 0x000000, 0x400000, 0x6000000, 0x6000000, + 0x8a00000, 0x1200000, 0x000000, 0x000000, 0x1000000, 0x5000000, 0x1000000, 0x000000, + 0xfa00000, 0x4200000, 0x7200000, 0x000000, 0x6000000, 0x7200000, 0x6400000, 0xca00000, + 0xfa00000, 0x6400000, 0x400000, 0x000000, 0xec00000, 0x4000000, 0xea00000, 0x6000000, + 0x6000000, 0x6000000, 0x200000, 0xfa00000, 0x000000, 0xea00000, 0x000000, 0x6000000 +}; + +static const unsigned long unicode_backtrans_5d[] = { + 0x6000000, 0x6400000, 0x1000000, 0x1000000, 0x000000, 0x000000, 0x7400000, 0xfa00000, + 0x000000, 0x000000, 0x000000, 0x6200000, 0x6000000, 0xec00000, 0xfa00000, 0x6000000, + 0x4000000, 0xea00000, 0x6400000, 0x000000, 0xfa00000, 0x4200000, 0xfa00000, 0xea00000, + 0x4200000, 0xea00000, 0x6200000, 0x7200000, 0x000000, 0x6000000, 0x7000000, 0x6200000, + 0x6000000, 0x000000, 0x6200000, 0x6400000, 0x7400000, 0x6000000, 0x7400000, 0xfc00000, + 0x6000000, 0xfa00000, 0x000000, 0x400000, 0x4000000, 0x1000000, 0x7000000, 0x4000000, + 0x6000000, 0x6400000, 0x6000000, 0x6000000, 0x7400000, 0x6000000, 0x6000000, 0x6000000, + 0x6000000, 0x6400000, 0x6000000, 0x000000, 0x6000000, 0x7400000, 0x5000000, 0x6400000, + 0x6000000, 0x6000000, 0x6400000, 0x6400000, 0x000000, 0x6000000, 0x4400000, 0x7000000, + 0x4400000, 0x6000000, 0x7400000, 0xfa00000, 0xfa00000, 0x000000, 0x6200000, 0x000000, + 0xea00000, 0x6400000, 0x6200000, 0x000000, 0x000000, 0x6400000, 0x4000000, 0x4000000, + 0x1000000, 0x6400000, 0x000000, 0x5000000, 0x200000, 0x1000000, 0x6000000, 0x400000, + 0x400000, 0x400000, 0x6400000, 0x6000000, 0x400000, 0x6000000, 0x000000, 0x6000000, + 0x6000000, 0xfa00000, 0x400000, 0x7000000, 0xfa00000, 0x400000, 0x000000, 0xfa00000, + 0x4400000, 0x6000000, 0x6000000, 0x200000, 0x5000000, 0x000000, 0x200000, 0x6000000, + 0x000000, 0x6400000, 0x6400000, 0x4000000, 0x6000000, 0x6000000, 0x6400000, 0x6400000, + 0x6000000, 0x6400000, 0x7200000, 0x400000, 0x6200000, 0x4000000, 0x6000000, 0xea00000, + 0x6400000, 0x6000000, 0x6400000, 0xca00000, 0x200000, 0x6000000, 0x4000000, 0x000000, + 0x200000, 0x000000, 0x6400000, 0x6400000, 0x6400000, 0x6400000, 0x000000, 0x6000000, + 0x000000, 0x7400000, 0x6000000, 0x400000, 0x6000000, 0xfa00000, 0x6000000, 0x6400000, + 0xec00000, 0x6000000, 0xea00000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x6400000, + 0x6000000, 0x6000000, 0xe800000, 0x4400000, 0x6200000, 0x6000000, 0x6200000, 0x6000000, + 0x6400000, 0x6000000, 0x6400000, 0x000000, 0x6400000, 0x6000000, 0x4000000, 0x7200000, + 0xec00000, 0x4400000, 0xea00000, 0x000000, 0xea00000, 0xea00000, 0x000000, 0x000000, + 0x6000000, 0x4000000, 0x6000000, 0x6400000, 0x000000, 0x1000000, 0x6000000, 0x6400000, + 0x000000, 0x6200000, 0x000000, 0x6400000, 0x200000, 0xfa00000, 0x400000, 0x6000000, + 0x400000, 0x6000000, 0xea00000, 0x200000, 0x6000000, 0x6000000, 0xea00000, 0x4000000, + 0x6400000, 0x400000, 0x000000, 0x5200000, 0x000000, 0xfa00000, 0xfa00000, 0x6000000, + 0x6400000, 0xfa00000, 0xf800000, 0x200000, 0x400000, 0xfa00000, 0xfa00000, 0xfa00000, + 0xfa00000, 0x1400000, 0x000000, 0xfa00000, 0x000000, 0x000000, 0xfa00000, 0x1000000, + 0x6000000, 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, 0x4200000, 0x000000, 0xfa00000, + 0x400000, 0x6400000, 0x000000, 0x200000, 0x000000, 0xfa00000, 0xfa00000, 0x6000000 +}; + +static const unsigned long unicode_backtrans_5e[] = { + 0x400000, 0x1000000, 0xfa00000, 0xfa00000, 0x6000000, 0x1000000, 0xfa00000, 0x400000, + 0x1000000, 0x4000000, 0x6000000, 0x4200000, 0xfa00000, 0x400000, 0x6000000, 0x1000000, + 0x1000000, 0xfa00000, 0x4400000, 0x000000, 0x7400000, 0x7400000, 0xfa00000, 0x6000000, + 0x7400000, 0xfa00000, 0x7200000, 0xfa00000, 0x1000000, 0xfa00000, 0x000000, 0x6400000, + 0x6400000, 0x6000000, 0x6000000, 0x6000000, 0x6000000, 0xea00000, 0x1000000, 0x1000000, + 0x6400000, 0x6000000, 0x000000, 0xea00000, 0x000000, 0xfa00000, 0x5400000, 0x200000, + 0x200000, 0x1000000, 0x400000, 0xea00000, 0x6000000, 0x400000, 0xea00000, 0x7200000, + 0xfa00000, 0x000000, 0x000000, 0x1000000, 0x1000000, 0xfa00000, 0x6400000, 0x8800000, + 0xea00000, 0x6000000, 0x5000000, 0x6200000, 0xfa00000, 0xfa00000, 0x000000, 0x8a00000, + 0x4000000, 0x400000, 0x6000000, 0x6400000, 0xfa00000, 0x6000000, 0x6200000, 0x6000000, + 0x400000, 0x400000, 0x000000, 0x6000000, 0x7200000, 0xfa00000, 0x400000, 0x6200000, + 0x6400000, 0x6000000, 0x000000, 0x7400000, 0x6400000, 0x6000000, 0x5400000, 0xea00000, + 0x6000000, 0xfa00000, 0xfa00000, 0xea00000, 0x200000, 0x000000, 0x6000000, 0x6000000, + 0x6400000, 0x6000000, 0x6400000, 0x6400000, 0x6400000, 0x6400000, 0x6400000, 0x6000000, + 0x6400000, 0x000000, 0xfa00000, 0xfa00000, 0xfa00000, 0x6200000, 0x7200000, 0x8800000, + 0xfa00000, 0xea00000, 0x5200000, 0xfa00000, 0xfa00000, 0xfa00000, 0xea00000, 0x5200000, + 0x7400000, 0x200000, 0x6000000, 0x4200000, 0xfa00000, 0x000000, 0x5000000, 0xfa00000, + 0x6000000, 0x6000000, 0xfa00000, 0x7400000, 0x6000000, 0x6000000, 0x400000, 0xfa00000, + 0x1000000, 0x1000000, 0x4000000, 0x1000000, 0x1000000, 0xfa00000, 0x7200000, 0xfa00000, + 0x000000, 0x5000000, 0xfa00000, 0x6000000, 0xfa00000, 0x000000, 0x1000000, 0x1000000, + 0xfa00000, 0x000000, 0x6400000, 0x6000000, 0x6400000, 0x7400000, 0xfa00000, 0xfa00000, + 0x6400000, 0x000000, 0x6400000, 0xea00000, 0x6400000, 0xfa00000, 0x6000000, 0x000000, + 0x6000000, 0x6400000, 0x6000000, 0x7400000, 0x6000000, 0xfa00000, 0xfa00000, 0xfa00000, + 0xfa00000, 0x7000000, 0x000000, 0x000000, 0x000000, 0x4400000, 0xfc00000, 0x400000, + 0x000000, 0x6200000, 0xea00000, 0x200000, 0x6000000, 0x6000000, 0x6400000, 0x6000000, + 0xea00000, 0xfa00000, 0xfa00000, 0x6400000, 0x6400000, 0x4000000, 0x6400000, 0x200000, + 0xca00000, 0x7400000, 0x7400000, 0xfa00000, 0x6400000, 0x6400000, 0xfa00000, 0x6000000, + 0x6000000, 0x6000000, 0xea00000, 0xfa00000, 0x6400000, 0x6200000, 0x6400000, 0xea00000, + 0xea00000, 0x6200000, 0xea00000, 0xea00000, 0x000000, 0x6400000, 0x6000000, 0x6000000, + 0x7200000, 0x6200000, 0x1000000, 0x400000, 0xea00000, 0x000000, 0x6000000, 0x6000000, + 0x200000, 0x6200000, 0x6000000, 0xea00000, 0x5200000, 0x000000, 0xfa00000, 0xfa00000, + 0x4200000, 0x4000000, 0xfa00000, 0xca00000, 0x4200000, 0x000000, 0x7200000, 0x7200000 +}; + +static const unsigned long unicode_backtrans_5f[] = { + 0x1000000, 0xfa00000, 0x7400000, 0x1200000, 0xfa00000, 0x6000000, 0x400000, 0x6400000, + 0x7400000, 0x200000, 0xfa00000, 0x7200000, 0x4200000, 0x4200000, 0x4400000, 0xfa00000, + 0x200000, 0x9a00000, 0x6000000, 0xfa00000, 0xea00000, 0xfa00000, 0x200000, 0xfa00000, + 0xfa00000, 0x400000, 0x6000000, 0xfa00000, 0x400000, 0x6400000, 0x000000, 0xfa00000, + 0x1000000, 0x400000, 0x6400000, 0x6400000, 0x6400000, 0x5200000, 0xfa00000, 0xfa00000, + 0x6400000, 0xfa00000, 0x1000000, 0x400000, 0x400000, 0x7200000, 0x6400000, 0x1200000, + 0x6400000, 0xfa00000, 0x000000, 0x6000000, 0x400000, 0xea00000, 0x6400000, 0x6200000, + 0x6200000, 0x1000000, 0xd800000, 0x400000, 0xfa00000, 0x400000, 0x200000, 0x400000, + 0x7400000, 0x200000, 0x000000, 0x6000000, 0x6400000, 0x400000, 0x6000000, 0x400000, + 0xea00000, 0x6000000, 0xea00000, 0x6000000, 0xea00000, 0x4400000, 0xea00000, 0x6000000, + 0x5400000, 0x4200000, 0x1000000, 0x1200000, 0x6400000, 0x1000000, 0xfa00000, 0xfa00000, + 0x7400000, 0xea00000, 0x000000, 0x8c00000, 0x4200000, 0x7200000, 0x000000, 0x000000, + 0x400000, 0x5200000, 0xfa00000, 0x4400000, 0x7400000, 0x6000000, 0x9a00000, 0xec00000, + 0x000000, 0xfa00000, 0xfa00000, 0xea00000, 0xfa00000, 0xfa00000, 0x000000, 0x6400000, + 0xfa00000, 0xfa00000, 0x4400000, 0x7200000, 0x6400000, 0x400000, 0x6000000, 0xfa00000, + 0x6400000, 0xfa00000, 0x400000, 0x5000000, 0xfa00000, 0x6400000, 0x6400000, 0xea00000, + 0xfa00000, 0xfa00000, 0x7200000, 0x4200000, 0x1200000, 0xfa00000, 0x6000000, 0xfa00000, + 0x7200000, 0x7400000, 0xfa00000, 0xfa00000, 0xfa00000, 0x400000, 0x000000, 0x400000, + 0xfa00000, 0xea00000, 0xfa00000, 0x200000, 0x000000, 0x1000000, 0x6400000, 0xfa00000, + 0xfa00000, 0xfa00000, 0x000000, 0x6000000, 0x7400000, 0x400000, 0xea00000, 0x6000000, + 0xea00000, 0xfa00000, 0x400000, 0x000000, 0x4400000, 0x6000000, 0x6000000, 0x4400000, + 0xfa00000, 0xea00000, 0xfa00000, 0x6400000, 0x6400000, 0x7200000, 0xfa00000, 0x6400000, + 0x400000, 0x4400000, 0x6000000, 0x200000, 0x200000, 0xf800000, 0x6000000, 0xf800000, + 0x400000, 0xea00000, 0x4000000, 0x6000000, 0x7200000, 0xfa00000, 0x6000000, 0x6000000, + 0x6000000, 0x6000000, 0x4000000, 0xfa00000, 0x5400000, 0xfa00000, 0x1000000, 0x400000, + 0x400000, 0x7400000, 0x000000, 0x400000, 0xfa00000, 0xfa00000, 0x000000, 0x7000000, + 0x7400000, 0x7400000, 0x7400000, 0x400000, 0x6400000, 0x6000000, 0xfa00000, 0xfa00000, + 0xfa00000, 0xfa00000, 0x000000, 0x4000000, 0x200000, 0x7200000, 0x6400000, 0x4000000, + 0xfa00000, 0x7400000, 0x400000, 0x6000000, 0x7200000, 0x6000000, 0x000000, 0x1000000, + 0x6400000, 0x400000, 0x7400000, 0xfa00000, 0x400000, 0x7400000, 0x7400000, 0x6400000, + 0x200000, 0x7200000, 0x400000, 0x6400000, 0x6000000, 0xfa00000, 0x400000, 0x6000000, + 0x7200000, 0x000000, 0x6400000, 0x7200000, 0x400000, 0xfa00000, 0x1000000, 0xfa00000 +}; + +static const unsigned long unicode_backtrans_60[] = { + 0x7000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x400000, + 0x000000, 0x6000000, 0x7400000, 0x6000000, 0x6000000, 0x7400000, 0x7200000, 0xfa00000, + 0x6200000, 0x6000000, 0xfa00000, 0x6400000, 0x7400000, 0x7200000, 0xfa00000, 0x6400000, + 0x400000, 0x7200000, 0x6400000, 0x7200000, 0xfa00000, 0xfa00000, 0x6000000, 0x400000, + 0xfa00000, 0xfa00000, 0x6000000, 0x4000000, 0x6400000, 0xfa00000, 0x7200000, 0xfa00000, + 0xfa00000, 0x7200000, 0xfa00000, 0x7200000, 0x6000000, 0x6400000, 0x6000000, 0xfa00000, + 0x000000, 0x4200000, 0x6000000, 0x6400000, 0x6000000, 0x7400000, 0x000000, 0x6000000, + 0x000000, 0x6000000, 0x200000, 0x5000000, 0x1000000, 0x000000, 0x000000, 0x1000000, + 0x6400000, 0xfa00000, 0xfa00000, 0xfa00000, 0x6000000, 0x6000000, 0x6200000, 0x6400000, + 0x400000, 0x6400000, 0x4200000, 0x1200000, 0x6400000, 0xfa00000, 0x000000, 0x000000, + 0xfa00000, 0x400000, 0xda00000, 0x6000000, 0x6400000, 0xfa00000, 0x400000, 0x400000, + 0x6000000, 0xfa00000, 0x7200000, 0x6000000, 0x000000, 0xfc00000, 0x6000000, 0x6200000, + 0x200000, 0x400000, 0xfa00000, 0xfa00000, 0xfa00000, 0xea00000, 0x6000000, 0x7400000, + 0xfa00000, 0xfa00000, 0xfa00000, 0x7200000, 0xfa00000, 0xfa00000, 0x6000000, 0xfa00000, + 0xfa00000, 0x400000, 0x6000000, 0x1000000, 0x000000, 0x4200000, 0x1000000, 0x4200000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x4400000, 0x7400000, + 0x6000000, 0x6200000, 0x400000, 0x7200000, 0x7200000, 0xe800000, 0x6400000, 0x6000000, + 0x6400000, 0xfa00000, 0x6400000, 0x200000, 0xfa00000, 0xfa00000, 0x6400000, 0x000000, + 0x6000000, 0x400000, 0x7200000, 0x400000, 0xfa00000, 0x6400000, 0xfa00000, 0x6200000, + 0x400000, 0x000000, 0xfa00000, 0xfa00000, 0x6000000, 0x7400000, 0x4400000, 0xfa00000, + 0xfa00000, 0x000000, 0x6400000, 0xfa00000, 0xcc00000, 0x400000, 0x1200000, 0xca00000, + 0x7400000, 0x200000, 0x200000, 0x1000000, 0x1000000, 0x1000000, 0x000000, 0x1000000, + 0xec00000, 0x7400000, 0xfa00000, 0xca00000, 0xfa00000, 0x6200000, 0xea00000, 0x6400000, + 0xfa00000, 0x6000000, 0x6000000, 0x7400000, 0xfa00000, 0xea00000, 0x6400000, 0x6000000, + 0x6000000, 0x6000000, 0x400000, 0x6000000, 0x6400000, 0xfa00000, 0x7200000, 0xea00000, + 0x6400000, 0x6400000, 0x7400000, 0x7400000, 0x6000000, 0x6000000, 0x6400000, 0x6400000, + 0x000000, 0xfa00000, 0x000000, 0x6200000, 0x6400000, 0x7400000, 0x000000, 0x4000000, + 0x7200000, 0x6400000, 0xfa00000, 0x6400000, 0xfa00000, 0x7400000, 0x4400000, 0xfa00000, + 0xfa00000, 0xea00000, 0x6400000, 0x4200000, 0x6000000, 0x400000, 0x7000000, 0x5200000, + 0x5200000, 0x5000000, 0x000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, + 0xfa00000, 0xea00000, 0x6400000, 0xfa00000, 0x7200000, 0x6400000, 0xfa00000, 0x6200000, + 0x6400000, 0xfa00000, 0xfa00000, 0xea00000, 0x6400000, 0x4400000, 0x6000000, 0x6000000 +}; + +static const unsigned long unicode_backtrans_61[] = { + 0x7200000, 0xfa00000, 0x400000, 0x6200000, 0x6000000, 0x6000000, 0xfa00000, 0x4400000, + 0xfa00000, 0xfa00000, 0x6400000, 0x6000000, 0x4400000, 0xfa00000, 0xfa00000, 0xfa00000, + 0x6400000, 0x400000, 0x6400000, 0x6400000, 0x6400000, 0xfa00000, 0x6400000, 0x400000, + 0x6000000, 0x4400000, 0xfa00000, 0xea00000, 0x6400000, 0x6000000, 0x400000, 0xfa00000, + 0x1000000, 0x200000, 0x4400000, 0x7000000, 0x1000000, 0x000000, 0x1000000, 0xfa00000, + 0x6200000, 0x6000000, 0x400000, 0x7400000, 0x6200000, 0x000000, 0x6000000, 0x6000000, + 0xcc00000, 0x400000, 0x6000000, 0x000000, 0xea00000, 0x400000, 0x6400000, 0xec00000, + 0x000000, 0x400000, 0x000000, 0x6000000, 0x8a00000, 0x4200000, 0xea00000, 0xfa00000, + 0x6000000, 0x6400000, 0xca00000, 0x000000, 0xea00000, 0x6400000, 0x6400000, 0xea00000, + 0xfa00000, 0x6400000, 0xfa00000, 0xea00000, 0xfa00000, 0x6200000, 0x7200000, 0x6000000, + 0x4000000, 0x1000000, 0x6000000, 0xea00000, 0x6000000, 0xfa00000, 0x6000000, 0x000000, + 0xea00000, 0xca00000, 0x6200000, 0x6000000, 0x4000000, 0xfa00000, 0x6400000, 0xea00000, + 0x4400000, 0x6000000, 0xfa00000, 0xea00000, 0xc800000, 0x6200000, 0x6000000, 0xfa00000, + 0xfa00000, 0x000000, 0x6000000, 0xea00000, 0x6400000, 0x000000, 0xea00000, 0x4200000, + 0xfa00000, 0x6200000, 0x6400000, 0x6200000, 0x6200000, 0x7200000, 0xea00000, 0xfa00000, + 0x400000, 0x6000000, 0x6000000, 0x400000, 0x6400000, 0xc800000, 0xea00000, 0x400000, + 0x6400000, 0xcc00000, 0xea00000, 0x6400000, 0x400000, 0x000000, 0x000000, 0x4200000, + 0x000000, 0x6000000, 0xea00000, 0x7400000, 0x6000000, 0x6400000, 0xfa00000, 0x000000, + 0xea00000, 0xea00000, 0x6400000, 0x6400000, 0xfa00000, 0x4000000, 0x6200000, 0x400000, + 0xcc00000, 0xca00000, 0xea00000, 0x6000000, 0x4400000, 0x7400000, 0x000000, 0x6400000, + 0x400000, 0x6000000, 0x6000000, 0x000000, 0xea00000, 0x400000, 0x000000, 0xfa00000, + 0x7400000, 0xfa00000, 0x6400000, 0xea00000, 0xfa00000, 0x6400000, 0xea00000, 0x6000000, + 0x6000000, 0x6000000, 0xea00000, 0x6000000, 0x6000000, 0x6000000, 0xea00000, 0x5000000, + 0x6400000, 0x4400000, 0xea00000, 0x000000, 0x6400000, 0x000000, 0xfa00000, 0x6000000, + 0x4400000, 0x6400000, 0x7400000, 0xea00000, 0x000000, 0x6000000, 0x6200000, 0xea00000, + 0xfa00000, 0xea00000, 0xfa00000, 0xfa00000, 0x6200000, 0x6200000, 0x400000, 0x4400000, + 0x4200000, 0x1000000, 0x1000000, 0x4000000, 0x1000000, 0x400000, 0x6000000, 0x000000, + 0x6000000, 0x000000, 0x4000000, 0x000000, 0x400000, 0x400000, 0x6400000, 0x6400000, + 0x6000000, 0x400000, 0x4400000, 0x6200000, 0x6000000, 0x6400000, 0xfa00000, 0x6400000, + 0x6000000, 0x6400000, 0x6000000, 0x6000000, 0x400000, 0x6400000, 0x6000000, 0x400000, + 0x6000000, 0x6000000, 0xea00000, 0x000000, 0x200000, 0x7000000, 0xea00000, 0xea00000, + 0xea00000, 0x6000000, 0xea00000, 0x6000000, 0xea00000, 0x6200000, 0x6200000, 0xfa00000 +}; + +static const unsigned long unicode_backtrans_62[] = { + 0xea00000, 0x6400000, 0x000000, 0x6400000, 0x6400000, 0x000000, 0x1000000, 0xec00000, + 0xfa00000, 0x6200000, 0xfa00000, 0x1000000, 0xfa00000, 0xfa00000, 0xfa00000, 0x1000000, + 0xfa00000, 0xfa00000, 0xfa00000, 0x400000, 0x6200000, 0x7400000, 0xfa00000, 0x1000000, + 0x1000000, 0x6000000, 0xfa00000, 0x7200000, 0x400000, 0x200000, 0x200000, 0xfa00000, + 0x6400000, 0xfa00000, 0x7400000, 0x6400000, 0x7000000, 0x7000000, 0x200000, 0x6400000, + 0x000000, 0x6400000, 0xfa00000, 0x6400000, 0x5000000, 0x6000000, 0xfa00000, 0x200000, + 0xea00000, 0x8800000, 0x6200000, 0x7200000, 0xfa00000, 0x000000, 0xe800000, 0x5000000, + 0x200000, 0x4400000, 0x6000000, 0x200000, 0x000000, 0x7400000, 0xf800000, 0xfa00000, + 0xfa00000, 0xfa00000, 0x6400000, 0x7400000, 0x400000, 0x000000, 0x6400000, 0xfa00000, + 0xfa00000, 0xfa00000, 0x6000000, 0xfa00000, 0x5400000, 0xfa00000, 0x7200000, 0x000000, + 0x6400000, 0x7400000, 0x7400000, 0xfa00000, 0x7400000, 0x200000, 0x400000, 0x000000, + 0xfa00000, 0x6000000, 0x6400000, 0x7200000, 0x6400000, 0x000000, 0x6200000, 0x000000, + 0x6200000, 0x6000000, 0x6000000, 0x7200000, 0x6400000, 0x6000000, 0x7000000, 0x1000000, + 0x4200000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x7400000, 0xfa00000, 0x7400000, + 0x7000000, 0xea00000, 0x6000000, 0x7400000, 0x6000000, 0x000000, 0xfa00000, 0x6000000, + 0x000000, 0xfa00000, 0x6400000, 0x6000000, 0xfa00000, 0x6400000, 0x7200000, 0xfa00000, + 0xfa00000, 0x6000000, 0x4200000, 0x6200000, 0xfa00000, 0x4000000, 0x6000000, 0x6000000, + 0x6000000, 0xfa00000, 0xfa00000, 0x000000, 0x6000000, 0x400000, 0x6400000, 0x6400000, + 0x4400000, 0xfa00000, 0xfa00000, 0x7200000, 0x6200000, 0xfa00000, 0x7200000, 0xfa00000, + 0xfa00000, 0x000000, 0x1000000, 0x9a00000, 0x200000, 0x4000000, 0x200000, 0x1000000, + 0x1000000, 0x1000000, 0x1000000, 0x000000, 0x5000000, 0x1000000, 0x4400000, 0x000000, + 0x7400000, 0x6000000, 0x6000000, 0xfa00000, 0x7200000, 0x6000000, 0x6000000, 0x6000000, + 0x6000000, 0xfa00000, 0x000000, 0x6400000, 0x6000000, 0xfa00000, 0x6400000, 0x400000, + 0x6000000, 0xfa00000, 0x400000, 0x7200000, 0xfa00000, 0xfa00000, 0x6400000, 0x7400000, + 0x000000, 0x000000, 0xfa00000, 0x4000000, 0x7400000, 0x5200000, 0x7200000, 0xfa00000, + 0xfa00000, 0xfa00000, 0x7200000, 0x6000000, 0xfa00000, 0xfa00000, 0x7400000, 0xea00000, + 0xfa00000, 0x6200000, 0xfa00000, 0xfa00000, 0xfa00000, 0x4400000, 0xfc00000, 0xfa00000, + 0xfa00000, 0xfa00000, 0x7400000, 0xfa00000, 0xfa00000, 0x200000, 0x000000, 0x5000000, + 0x200000, 0x200000, 0x1000000, 0x1000000, 0x000000, 0x5000000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x400000, 0x6000000, 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, + 0x6000000, 0xfa00000, 0x6400000, 0xfa00000, 0x7400000, 0x6200000, 0x7200000, 0xfa00000, + 0x6000000, 0x6000000, 0x6000000, 0x6000000, 0x7400000, 0x7400000, 0xfa00000, 0xfa00000 +}; + +static const unsigned long unicode_backtrans_63[] = { + 0x6000000, 0xfa00000, 0x7200000, 0x6400000, 0x400000, 0x000000, 0x000000, 0xfa00000, + 0x7200000, 0xfa00000, 0x400000, 0x6400000, 0x6200000, 0x6400000, 0x7000000, 0x6000000, + 0x6400000, 0xfa00000, 0x000000, 0x6400000, 0x6000000, 0x6000000, 0x7400000, 0x000000, + 0x4400000, 0x200000, 0x1000000, 0x1000000, 0x000000, 0x1000000, 0x1000000, 0x1200000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x000000, 0x200000, + 0x7200000, 0x6400000, 0x7400000, 0xfa00000, 0x6000000, 0x6400000, 0x4000000, 0xfa00000, + 0x000000, 0x4000000, 0x7000000, 0x6000000, 0x6000000, 0x4400000, 0x6400000, 0x4000000, + 0x6000000, 0x7400000, 0xfa00000, 0xe800000, 0x6400000, 0xfa00000, 0xea00000, 0x200000, + 0x6000000, 0x6400000, 0x7400000, 0x7400000, 0x6400000, 0x7000000, 0x7400000, 0x6000000, + 0x6000000, 0xfa00000, 0x6400000, 0x7400000, 0xfa00000, 0x7200000, 0x7400000, 0xfa00000, + 0xfa00000, 0x6000000, 0x400000, 0x400000, 0x6400000, 0xfa00000, 0x6000000, 0x6200000, + 0x6400000, 0x6000000, 0x6000000, 0x400000, 0x200000, 0x000000, 0x1000000, 0x1000000, + 0x000000, 0x1000000, 0x1000000, 0x1000000, 0x4000000, 0x6400000, 0x400000, 0xfa00000, + 0xea00000, 0x7200000, 0x000000, 0x6200000, 0x4400000, 0x7400000, 0xfa00000, 0x6000000, + 0x6000000, 0x7400000, 0xea00000, 0x000000, 0x400000, 0x6400000, 0x7200000, 0xfa00000, + 0x6400000, 0x4000000, 0xfa00000, 0xfa00000, 0x6400000, 0x6400000, 0x000000, 0xcc00000, + 0x7200000, 0x6000000, 0x7400000, 0xea00000, 0x6400000, 0x6000000, 0x000000, 0x7400000, + 0xfa00000, 0xfa00000, 0x7400000, 0x4000000, 0xfa00000, 0x6000000, 0x7200000, 0x7200000, + 0x7400000, 0x6000000, 0xfa00000, 0x000000, 0x6400000, 0x400000, 0xfa00000, 0x6000000, + 0xfa00000, 0x6400000, 0x400000, 0xea00000, 0x6000000, 0x6000000, 0x6400000, 0x6200000, + 0xfa00000, 0xea00000, 0xfa00000, 0x7200000, 0x6400000, 0xfa00000, 0x400000, 0xfa00000, + 0xfa00000, 0xfa00000, 0xfa00000, 0x6200000, 0x7200000, 0x7400000, 0x7400000, 0x6400000, + 0x7000000, 0x6000000, 0x200000, 0x1000000, 0x1200000, 0x200000, 0x000000, 0x1000000, + 0x1000000, 0x4000000, 0x1000000, 0x200000, 0x1000000, 0x6400000, 0x7200000, 0x000000, + 0xea00000, 0x4400000, 0x6000000, 0x6200000, 0xfa00000, 0x6400000, 0xfa00000, 0x6000000, + 0x6400000, 0x7200000, 0x6000000, 0x6000000, 0x6000000, 0x7000000, 0x7400000, 0xfa00000, + 0xfa00000, 0x4400000, 0x7200000, 0x6400000, 0x400000, 0x6400000, 0xfa00000, 0x6000000, + 0x6000000, 0x6000000, 0xea00000, 0xea00000, 0x6400000, 0x6000000, 0x5000000, 0x6000000, + 0x7400000, 0xfa00000, 0x4000000, 0x7200000, 0x6000000, 0x6400000, 0x4000000, 0x6000000, + 0x6000000, 0x7200000, 0x7400000, 0x6000000, 0x400000, 0xf800000, 0xea00000, 0x6000000, + 0x6000000, 0x6000000, 0x7400000, 0x6400000, 0xfa00000, 0x6400000, 0xfa00000, 0x8800000, + 0x5400000, 0x6400000, 0x200000, 0x4000000, 0x4000000, 0x1000000, 0x4000000, 0x1000000 +}; + +static const unsigned long unicode_backtrans_64[] = { + 0x1000000, 0x1000000, 0x1000000, 0x000000, 0x000000, 0x1000000, 0x6200000, 0x4000000, + 0x000000, 0x6400000, 0x6400000, 0x7000000, 0x7000000, 0xea00000, 0x6000000, 0xfa00000, + 0x7400000, 0x000000, 0x6400000, 0x7200000, 0xfc00000, 0x6000000, 0xea00000, 0xea00000, + 0x6400000, 0x000000, 0x6000000, 0x7000000, 0xfa00000, 0x000000, 0x7400000, 0x6000000, + 0x7400000, 0x7000000, 0xec00000, 0x6000000, 0x6400000, 0x6400000, 0x7200000, 0x6000000, + 0x6200000, 0x400000, 0x7400000, 0x6000000, 0xfa00000, 0xfa00000, 0x6000000, 0x6400000, + 0x6400000, 0x000000, 0x4000000, 0x6000000, 0x7200000, 0x6400000, 0x6200000, 0x6000000, + 0x4000000, 0x6000000, 0xda00000, 0x4000000, 0x000000, 0x7400000, 0xea00000, 0x7400000, + 0x6000000, 0x7000000, 0x200000, 0x6000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, + 0x1000000, 0x000000, 0x1000000, 0x6400000, 0x000000, 0x6000000, 0x6200000, 0x400000, + 0x6000000, 0x6400000, 0x7400000, 0x6400000, 0x7400000, 0x000000, 0x000000, 0x000000, + 0xfa00000, 0x6000000, 0x4400000, 0x6400000, 0x6400000, 0x6400000, 0x7000000, 0x6400000, + 0xec00000, 0x6400000, 0x000000, 0x400000, 0x000000, 0x6000000, 0x6000000, 0x7200000, + 0x6000000, 0xfa00000, 0x000000, 0x6000000, 0x6000000, 0x7400000, 0x6000000, 0xea00000, + 0x6000000, 0x4000000, 0x6000000, 0x6400000, 0x6400000, 0x6000000, 0x6200000, 0x6000000, + 0xfa00000, 0xf800000, 0xfa00000, 0x6400000, 0x4000000, 0x6400000, 0x000000, 0x6000000, + 0x000000, 0x000000, 0x7000000, 0x200000, 0x1000000, 0x7400000, 0x000000, 0x7400000, + 0xea00000, 0x6000000, 0x6000000, 0x6000000, 0x6000000, 0x4000000, 0x000000, 0x6400000, + 0x6400000, 0xdc00000, 0xfa00000, 0xea00000, 0x000000, 0x7200000, 0x7000000, 0x6000000, + 0x6400000, 0x7400000, 0xea00000, 0x400000, 0x6000000, 0x6400000, 0xfa00000, 0x6400000, + 0x6000000, 0x400000, 0x6000000, 0x6400000, 0xfa00000, 0xea00000, 0x6400000, 0x000000, + 0x400000, 0x7200000, 0x000000, 0xea00000, 0x7400000, 0xfa00000, 0xfa00000, 0x4000000, + 0xfa00000, 0x6000000, 0xea00000, 0x6400000, 0x4000000, 0x1000000, 0x4000000, 0x1000000, + 0x1000000, 0x200000, 0x1000000, 0xea00000, 0x7200000, 0x6400000, 0x6400000, 0x6400000, + 0x5000000, 0xea00000, 0x7200000, 0x6000000, 0xec00000, 0xfa00000, 0x000000, 0xea00000, + 0x000000, 0x6400000, 0xec00000, 0x6400000, 0x400000, 0xfa00000, 0xfc00000, 0x6000000, + 0x7400000, 0x400000, 0xfa00000, 0x4000000, 0xea00000, 0x400000, 0x6000000, 0x7400000, + 0xfa00000, 0x6000000, 0xea00000, 0x6000000, 0x000000, 0x4000000, 0x1000000, 0x000000, + 0x6200000, 0xca00000, 0xfa00000, 0x6200000, 0x7400000, 0xcc00000, 0xfa00000, 0xca00000, + 0x6000000, 0x6400000, 0x4400000, 0x6000000, 0xea00000, 0x6400000, 0x000000, 0x6200000, + 0x6400000, 0x6200000, 0xea00000, 0x6000000, 0xea00000, 0x400000, 0x200000, 0x6400000, + 0x6000000, 0x000000, 0xea00000, 0x6400000, 0x6000000, 0x6200000, 0xea00000, 0x6400000 +}; + +static const unsigned long unicode_backtrans_65[] = { + 0xfa00000, 0x6400000, 0x000000, 0x6000000, 0xec00000, 0x200000, 0x6000000, 0x6000000, + 0x400000, 0x7400000, 0x4400000, 0x000000, 0x6000000, 0x6000000, 0x6000000, 0x6400000, + 0x6000000, 0x4000000, 0x1000000, 0x6400000, 0x6400000, 0x6000000, 0x6400000, 0x6000000, + 0xfa00000, 0x6400000, 0x000000, 0x6400000, 0x6200000, 0xea00000, 0x4400000, 0x4400000, + 0x6000000, 0x6000000, 0x6400000, 0xea00000, 0x6200000, 0x7000000, 0x6400000, 0x000000, + 0x000000, 0x6400000, 0xea00000, 0xfa00000, 0xea00000, 0x6000000, 0x7400000, 0xfa00000, + 0x4000000, 0x400000, 0x6000000, 0x6000000, 0x5200000, 0x5200000, 0xfa00000, 0xea00000, + 0xfa00000, 0xfa00000, 0x400000, 0xfa00000, 0x400000, 0x6400000, 0xfa00000, 0xfa00000, + 0x000000, 0x6000000, 0x000000, 0x6400000, 0x000000, 0xfa00000, 0x6000000, 0x400000, + 0xfa00000, 0x7400000, 0x6000000, 0x000000, 0x1000000, 0xca00000, 0x8800000, 0xfa00000, + 0x400000, 0xfa00000, 0x400000, 0x6000000, 0x6400000, 0x7200000, 0xfa00000, 0xea00000, + 0x6200000, 0x7200000, 0x000000, 0x1000000, 0x6000000, 0x7200000, 0xfa00000, 0x4400000, + 0x400000, 0x000000, 0xfa00000, 0xfa00000, 0x6000000, 0x6000000, 0xfa00000, 0x6400000, + 0x6000000, 0x000000, 0x6000000, 0x5400000, 0xfa00000, 0xc800000, 0x000000, 0x6000000, + 0x1200000, 0x000000, 0xfa00000, 0x6000000, 0xfa00000, 0xea00000, 0x6000000, 0xfa00000, + 0xea00000, 0x6000000, 0x6400000, 0x6000000, 0x6000000, 0x400000, 0x8800000, 0x6000000, + 0x6000000, 0x6400000, 0xea00000, 0xea00000, 0x6000000, 0xcc00000, 0x4000000, 0xfa00000, + 0x4200000, 0x4200000, 0x400000, 0x5000000, 0xfa00000, 0x000000, 0x200000, 0x000000, + 0xfa00000, 0xfa00000, 0x6400000, 0x1000000, 0x6000000, 0x6400000, 0x6000000, 0xfa00000, + 0x400000, 0xfa00000, 0x000000, 0xfa00000, 0xfa00000, 0x6400000, 0x6000000, 0xfa00000, + 0x6400000, 0xfa00000, 0x6000000, 0x400000, 0xfa00000, 0xfa00000, 0x400000, 0xfa00000, + 0x6000000, 0x1000000, 0x6000000, 0xfa00000, 0xea00000, 0x1200000, 0x6400000, 0xfa00000, + 0xfa00000, 0x000000, 0x6400000, 0x6400000, 0x400000, 0x4000000, 0x6000000, 0xea00000, + 0x6000000, 0xfa00000, 0x000000, 0x6000000, 0xfa00000, 0xfa00000, 0x4000000, 0x6400000, + 0x000000, 0xfa00000, 0x6400000, 0x7200000, 0x7200000, 0xfa00000, 0x7200000, 0x000000, + 0x400000, 0x400000, 0x000000, 0xfa00000, 0xfa00000, 0x6000000, 0x7400000, 0xfa00000, + 0x6400000, 0x4000000, 0xfa00000, 0x6000000, 0x4400000, 0x000000, 0x7400000, 0xfa00000, + 0x400000, 0x200000, 0x6000000, 0x6200000, 0x000000, 0x6000000, 0x6000000, 0x6400000, + 0xda00000, 0x6200000, 0x7200000, 0xc800000, 0x000000, 0xfa00000, 0xfa00000, 0x1200000, + 0xfa00000, 0xfa00000, 0x000000, 0x000000, 0xfa00000, 0xfa00000, 0x7000000, 0x7000000, + 0x7400000, 0xfa00000, 0x6400000, 0x6000000, 0xec00000, 0x6400000, 0x1000000, 0x1000000, + 0x000000, 0x400000, 0xfa00000, 0xea00000, 0xe800000, 0xe800000, 0x400000, 0xcc00000 +}; + +static const unsigned long unicode_backtrans_66[] = { + 0x7400000, 0x000000, 0x7200000, 0x7200000, 0x6400000, 0x6000000, 0xfa00000, 0xea00000, + 0x6400000, 0xec00000, 0xfa00000, 0x6000000, 0xfa00000, 0x6400000, 0xfa00000, 0xfa00000, + 0xe800000, 0xec00000, 0x6400000, 0xfa00000, 0xfa00000, 0xfc00000, 0x400000, 0x000000, + 0x4000000, 0x1000000, 0x000000, 0x000000, 0x6200000, 0x7400000, 0xcc00000, 0xfa00000, + 0xfa00000, 0x6400000, 0x6400000, 0x4400000, 0x6400000, 0xfa00000, 0x6400000, 0xfa00000, + 0xfa00000, 0x400000, 0x400000, 0x6400000, 0x400000, 0xfa00000, 0x6400000, 0xfa00000, + 0xcc00000, 0xfc00000, 0x6000000, 0x6400000, 0xfa00000, 0x7200000, 0xfa00000, 0x400000, + 0x000000, 0x6400000, 0xe800000, 0x8800000, 0x1200000, 0x000000, 0x1000000, 0x200000, + 0x400000, 0xfa00000, 0xea00000, 0xfa00000, 0xca00000, 0x6400000, 0x400000, 0x6000000, + 0x4000000, 0xea00000, 0x6400000, 0xda00000, 0x7400000, 0x000000, 0x400000, 0xfa00000, + 0x000000, 0x6400000, 0x7200000, 0x5000000, 0x1000000, 0x1000000, 0x1000000, 0x5400000, + 0x400000, 0xec00000, 0x7000000, 0xec00000, 0x6400000, 0xea00000, 0xea00000, 0xfa00000, + 0x400000, 0x7400000, 0x6200000, 0x4000000, 0xfa00000, 0xe800000, 0xfa00000, 0xca00000, + 0xfa00000, 0x8a00000, 0x6400000, 0xcc00000, 0x6400000, 0x000000, 0xfa00000, 0xfa00000, + 0x7200000, 0x6000000, 0x6000000, 0xcc00000, 0xfa00000, 0x400000, 0xfa00000, 0xfc00000, + 0xec00000, 0x6400000, 0xfa00000, 0x6400000, 0x6400000, 0x4000000, 0x7400000, 0x400000, + 0x6400000, 0x200000, 0x1000000, 0x200000, 0xfa00000, 0x4000000, 0x6000000, 0xfa00000, + 0xea00000, 0xea00000, 0x6000000, 0x6400000, 0x7400000, 0x6400000, 0xca00000, 0x000000, + 0xec00000, 0xfa00000, 0x4400000, 0x000000, 0x6000000, 0x6000000, 0xfa00000, 0xfa00000, + 0xea00000, 0x6400000, 0x4400000, 0x400000, 0x400000, 0xfa00000, 0x000000, 0x6400000, + 0xec00000, 0x6000000, 0xea00000, 0x000000, 0x4400000, 0x000000, 0x200000, 0x1000000, + 0x7000000, 0x6000000, 0x6000000, 0xea00000, 0x000000, 0x4400000, 0xfa00000, 0x6000000, + 0x6000000, 0x6400000, 0xec00000, 0xc800000, 0xfa00000, 0x6400000, 0x4000000, 0x6000000, + 0x6200000, 0xfa00000, 0x6000000, 0xec00000, 0x200000, 0x6000000, 0xfa00000, 0x4400000, + 0x6400000, 0x200000, 0x400000, 0x400000, 0xea00000, 0x000000, 0xe800000, 0xea00000, + 0x6400000, 0xea00000, 0x6000000, 0x6000000, 0x6400000, 0x4000000, 0x4400000, 0x6400000, + 0x000000, 0x000000, 0x6000000, 0x000000, 0x400000, 0x000000, 0xea00000, 0x000000, + 0x6000000, 0xfa00000, 0x6200000, 0x7400000, 0xfa00000, 0xfa00000, 0x6000000, 0x400000, + 0xea00000, 0x000000, 0x000000, 0x6000000, 0x6000000, 0x000000, 0xfa00000, 0x000000, + 0x6400000, 0x7200000, 0x000000, 0x6400000, 0x6400000, 0x6000000, 0x6400000, 0x000000, + 0xfa00000, 0x4000000, 0xfa00000, 0xfa00000, 0xfa00000, 0x200000, 0x6000000, 0xfa00000, + 0xea00000, 0xfa00000, 0x8c00000, 0x400000, 0xfa00000, 0x200000, 0xfa00000, 0xfa00000 +}; + +static const unsigned long unicode_backtrans_67[] = { + 0xfa00000, 0x6000000, 0x4000000, 0xea00000, 0x6000000, 0x6400000, 0x000000, 0x400000, + 0xfa00000, 0xfa00000, 0x7000000, 0xfa00000, 0x4000000, 0xfa00000, 0x4400000, 0x6200000, + 0x7000000, 0x000000, 0x6000000, 0x6400000, 0xfa00000, 0xfa00000, 0x4200000, 0xfa00000, + 0x6000000, 0x4400000, 0x000000, 0xfa00000, 0x400000, 0xfa00000, 0xca00000, 0xfa00000, + 0x6400000, 0x6000000, 0x6400000, 0x6000000, 0x000000, 0x4000000, 0xfa00000, 0xea00000, + 0xfa00000, 0x000000, 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, 0xea00000, 0x1000000, + 0x000000, 0xfa00000, 0x000000, 0x6400000, 0xfa00000, 0x7000000, 0xca00000, 0x200000, + 0x6200000, 0x6000000, 0xfa00000, 0x6000000, 0x6000000, 0xfa00000, 0x6400000, 0x6200000, + 0x1000000, 0x200000, 0x1000000, 0x1000000, 0x4000000, 0x6400000, 0xfa00000, 0x6400000, + 0x7400000, 0xfa00000, 0x000000, 0x6000000, 0x7400000, 0x6000000, 0xfa00000, 0xfa00000, + 0xfa00000, 0xfa00000, 0x000000, 0xfa00000, 0x400000, 0x6400000, 0xfa00000, 0x6000000, + 0x000000, 0x6200000, 0x6000000, 0x000000, 0xfa00000, 0x6400000, 0xfa00000, 0xfa00000, + 0x7200000, 0x5200000, 0x4200000, 0x200000, 0x200000, 0x1200000, 0x400000, 0x4000000, + 0x1000000, 0x1000000, 0x7200000, 0x4000000, 0x6400000, 0xfa00000, 0x400000, 0xfa00000, + 0xfa00000, 0xea00000, 0x7200000, 0xfa00000, 0x6400000, 0xfa00000, 0x6400000, 0xfa00000, + 0x6000000, 0x6000000, 0x6000000, 0xec00000, 0x7200000, 0x6000000, 0xfa00000, 0xfa00000, + 0x000000, 0x7400000, 0x000000, 0x6000000, 0x7400000, 0x6200000, 0x6000000, 0xfa00000, + 0x000000, 0xfa00000, 0x000000, 0xfa00000, 0x6200000, 0x6000000, 0x6400000, 0xcc00000, + 0xfa00000, 0x6400000, 0x6000000, 0xec00000, 0x6000000, 0xfa00000, 0x400000, 0xfa00000, + 0x7400000, 0x6400000, 0xfa00000, 0x400000, 0xfa00000, 0xfa00000, 0x1000000, 0x6000000, + 0x4200000, 0x200000, 0x1200000, 0x1000000, 0x4000000, 0x1000000, 0x200000, 0x1000000, + 0x1000000, 0x200000, 0x1000000, 0x1000000, 0x4000000, 0x1000000, 0x6000000, 0xfa00000, + 0xfc00000, 0x4400000, 0x6400000, 0xfa00000, 0x6200000, 0x7400000, 0xfa00000, 0xfa00000, + 0xfa00000, 0x6200000, 0x6000000, 0x6400000, 0x400000, 0x400000, 0x8800000, 0x4000000, + 0x6400000, 0x7200000, 0x6400000, 0x7400000, 0xfa00000, 0x6400000, 0x6200000, 0x000000, + 0x6400000, 0x6400000, 0x6200000, 0x6000000, 0x6000000, 0x6000000, 0x6200000, 0xfa00000, + 0xfa00000, 0xfa00000, 0xfc00000, 0xfa00000, 0xfa00000, 0x000000, 0x4000000, 0x4400000, + 0x7200000, 0x7400000, 0xfa00000, 0x6000000, 0x7400000, 0xfa00000, 0x7200000, 0x6000000, + 0x1000000, 0x400000, 0x7200000, 0x6000000, 0x6200000, 0x7000000, 0x6400000, 0x6200000, + 0x000000, 0xfa00000, 0x6000000, 0x6000000, 0xfa00000, 0x6000000, 0x6200000, 0xfa00000, + 0xfc00000, 0xfa00000, 0x6400000, 0xfa00000, 0xfa00000, 0xea00000, 0xec00000, 0x6400000, + 0x6000000, 0x4400000, 0x6000000, 0x8a00000, 0x6000000, 0x1000000, 0xca00000, 0x7200000 +}; + +static const unsigned long unicode_backtrans_68[] = { + 0x5000000, 0x4000000, 0x4200000, 0x4200000, 0x4200000, 0x1000000, 0x000000, 0x1000000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x4000000, 0x1000000, 0x1000000, + 0x4000000, 0x1000000, 0xe800000, 0xfa00000, 0x6400000, 0x000000, 0xfa00000, 0xfa00000, + 0x6000000, 0x400000, 0x6000000, 0x4000000, 0x6000000, 0x7400000, 0x4200000, 0x6400000, + 0x6000000, 0xfa00000, 0xca00000, 0x000000, 0x000000, 0x6000000, 0x6000000, 0x400000, + 0x6400000, 0x7200000, 0xfa00000, 0x6200000, 0x400000, 0x6400000, 0x6000000, 0xec00000, + 0x400000, 0x6400000, 0x7200000, 0x7400000, 0x6200000, 0x6000000, 0x4000000, 0x5000000, + 0xfa00000, 0xfa00000, 0x6000000, 0x6400000, 0xfa00000, 0xfa00000, 0x5000000, 0x400000, + 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, 0x7400000, 0x7400000, 0x7200000, 0x4000000, + 0xfa00000, 0x7000000, 0x5400000, 0x6000000, 0x7400000, 0x6200000, 0xfa00000, 0x6000000, + 0xfa00000, 0xfa00000, 0x400000, 0xfa00000, 0xfa00000, 0x5400000, 0x4000000, 0x400000, + 0x400000, 0x200000, 0x000000, 0x400000, 0x200000, 0x4200000, 0x000000, 0x200000, + 0x1000000, 0x1000000, 0x1000000, 0x1200000, 0x1000000, 0x5000000, 0x1000000, 0x1200000, + 0x1000000, 0x1000000, 0x000000, 0x7400000, 0x000000, 0xe800000, 0x6400000, 0x6400000, + 0x400000, 0x6400000, 0x6400000, 0x000000, 0x7200000, 0x6400000, 0xfa00000, 0x7200000, + 0x6000000, 0x6400000, 0x400000, 0x6400000, 0x6400000, 0x6000000, 0x6200000, 0xea00000, + 0x6000000, 0xfa00000, 0x6400000, 0x7200000, 0x4400000, 0xfa00000, 0x7400000, 0x6000000, + 0x4400000, 0x6000000, 0x6000000, 0x6000000, 0x6000000, 0x200000, 0x000000, 0xfa00000, + 0x6000000, 0x6000000, 0x6000000, 0xfa00000, 0xea00000, 0x000000, 0x6400000, 0xfa00000, + 0x4400000, 0x000000, 0x400000, 0x6200000, 0x6400000, 0xea00000, 0x000000, 0xea00000, + 0x6200000, 0xec00000, 0xfa00000, 0x6400000, 0x6000000, 0x400000, 0x5200000, 0xfa00000, + 0xfa00000, 0x6400000, 0x6400000, 0x6000000, 0x6000000, 0xfa00000, 0x6400000, 0xfa00000, + 0xfa00000, 0xea00000, 0x6400000, 0xfa00000, 0x6000000, 0xfa00000, 0xca00000, 0x000000, + 0x000000, 0x4200000, 0x200000, 0x400000, 0x200000, 0x4000000, 0x000000, 0x000000, + 0x1000000, 0x000000, 0x1000000, 0x4000000, 0xea00000, 0xcc00000, 0x6200000, 0x6000000, + 0x6400000, 0xfa00000, 0x4200000, 0xfa00000, 0x6400000, 0xfa00000, 0x6000000, 0x400000, + 0x6400000, 0x6400000, 0xfa00000, 0x6400000, 0x6200000, 0xfa00000, 0x6400000, 0xea00000, + 0xfa00000, 0x400000, 0xfa00000, 0x000000, 0x6400000, 0x6400000, 0x6000000, 0xea00000, + 0xfa00000, 0x6200000, 0x000000, 0x7200000, 0x6000000, 0x400000, 0x6000000, 0xea00000, + 0xec00000, 0x6000000, 0x6400000, 0x6400000, 0x6400000, 0x400000, 0xfa00000, 0x6200000, + 0x7400000, 0x7400000, 0xea00000, 0x6000000, 0x6000000, 0x7400000, 0x6400000, 0x6000000, + 0x6000000, 0xfa00000, 0xfa00000, 0x6400000, 0x7400000, 0x6400000, 0x000000, 0x000000 +}; + +static const unsigned long unicode_backtrans_69[] = { + 0xca00000, 0x5200000, 0x4000000, 0x4000000, 0x6200000, 0xfa00000, 0x6400000, 0x6000000, + 0x6200000, 0x4400000, 0x6400000, 0x7200000, 0x6200000, 0xfa00000, 0xfa00000, 0x6200000, + 0x7400000, 0x6400000, 0xfa00000, 0x6400000, 0x6000000, 0x6000000, 0x400000, 0x6400000, + 0x4000000, 0x4200000, 0x4200000, 0x4200000, 0x200000, 0x000000, 0x000000, 0x1000000, + 0x1000000, 0x200000, 0x200000, 0x200000, 0x1000000, 0x6200000, 0x200000, 0x8800000, + 0x200000, 0x000000, 0x6200000, 0x000000, 0x4000000, 0x1000000, 0x000000, 0x6000000, + 0xfa00000, 0x400000, 0x6000000, 0x6400000, 0x7200000, 0x6400000, 0x4200000, 0x6000000, + 0x6400000, 0x7200000, 0x000000, 0x6400000, 0x6000000, 0xfa00000, 0x4000000, 0xfa00000, + 0x6000000, 0x6000000, 0x7400000, 0x4000000, 0x6000000, 0x6400000, 0x4000000, 0x000000, + 0x6000000, 0x6400000, 0xea00000, 0x6000000, 0x6000000, 0x000000, 0x6400000, 0x6000000, + 0x000000, 0x6000000, 0x6000000, 0xea00000, 0xfa00000, 0xca00000, 0x6000000, 0xfc00000, + 0x6000000, 0xea00000, 0xfa00000, 0x6400000, 0x6200000, 0x7200000, 0xfa00000, 0x6000000, + 0xfa00000, 0xca00000, 0xea00000, 0xfc00000, 0x4400000, 0x6400000, 0x7400000, 0x4000000, + 0xec00000, 0x6400000, 0x6200000, 0xfa00000, 0x6400000, 0xea00000, 0xfa00000, 0xea00000, + 0x6400000, 0x7400000, 0x4400000, 0x4200000, 0x6200000, 0xea00000, 0x6000000, 0xfa00000, + 0xfa00000, 0xfa00000, 0x6400000, 0x6400000, 0x1200000, 0x200000, 0x200000, 0x400000, + 0x5400000, 0x200000, 0x7200000, 0x6000000, 0x1000000, 0x4000000, 0x7000000, 0x1000000, + 0x1000000, 0x1000000, 0x4200000, 0x000000, 0x000000, 0x7400000, 0x6200000, 0x000000, + 0x6000000, 0x6200000, 0x400000, 0x6000000, 0x7200000, 0xfa00000, 0x6400000, 0x6000000, + 0x5400000, 0x6000000, 0x6000000, 0xfa00000, 0xfa00000, 0x000000, 0x6000000, 0x4000000, + 0x6200000, 0x6400000, 0x4000000, 0x6000000, 0x6000000, 0xec00000, 0x6400000, 0xfa00000, + 0x7400000, 0x6000000, 0x6000000, 0x7400000, 0x6000000, 0x7400000, 0xea00000, 0x6400000, + 0x6000000, 0x7200000, 0x4200000, 0x6000000, 0xfa00000, 0x6000000, 0x6000000, 0x7400000, + 0x400000, 0x6000000, 0x400000, 0xfa00000, 0x6400000, 0x6000000, 0x6200000, 0x6200000, + 0x4000000, 0xfa00000, 0x6000000, 0xea00000, 0x6000000, 0x400000, 0x6000000, 0x200000, + 0x400000, 0x6000000, 0x7200000, 0xea00000, 0xfa00000, 0xea00000, 0x7200000, 0x6000000, + 0xfa00000, 0x4400000, 0x000000, 0x6200000, 0x7000000, 0x4000000, 0x4400000, 0x400000, + 0x200000, 0x6200000, 0x000000, 0x1000000, 0x000000, 0x200000, 0x200000, 0x1000000, + 0x1000000, 0x4000000, 0x6400000, 0x000000, 0x6000000, 0x6400000, 0x6000000, 0x6200000, + 0xea00000, 0x4000000, 0x8800000, 0x6200000, 0x6000000, 0x7200000, 0x6400000, 0x400000, + 0x000000, 0x6400000, 0x7200000, 0x6400000, 0x6000000, 0x400000, 0x6000000, 0x6000000, + 0x6000000, 0x4200000, 0x4000000, 0xea00000, 0x6000000, 0xfa00000, 0x6400000, 0xfa00000 +}; + +static const unsigned long unicode_backtrans_6a[] = { + 0x6400000, 0x6400000, 0xea00000, 0x4400000, 0x6000000, 0x6200000, 0x6000000, 0x6000000, + 0x6000000, 0x6000000, 0xfa00000, 0x4200000, 0x4200000, 0x6000000, 0x000000, 0x6400000, + 0x000000, 0xec00000, 0x200000, 0xea00000, 0x6200000, 0x6400000, 0x6000000, 0xfa00000, + 0x7000000, 0xea00000, 0x4400000, 0x6200000, 0x4000000, 0x6400000, 0xea00000, 0xfa00000, + 0x6400000, 0xfa00000, 0x200000, 0xea00000, 0x400000, 0x6000000, 0x6000000, 0x6000000, + 0x7400000, 0x200000, 0x1200000, 0x4200000, 0x4000000, 0x4000000, 0x200000, 0x1000000, + 0x400000, 0x1000000, 0x6400000, 0x4000000, 0x6400000, 0xfa00000, 0x200000, 0x400000, + 0xea00000, 0xea00000, 0xea00000, 0x6400000, 0x6000000, 0xfa00000, 0x7400000, 0x6400000, + 0x6000000, 0x6000000, 0x000000, 0x4000000, 0xfa00000, 0x4400000, 0x6400000, 0x7200000, + 0xea00000, 0x6400000, 0x400000, 0xea00000, 0x4000000, 0x6000000, 0x6400000, 0x6000000, + 0x7400000, 0x6400000, 0xcc00000, 0xc800000, 0x6000000, 0x6400000, 0x6400000, 0x4000000, + 0xfa00000, 0xfa00000, 0x6000000, 0x7400000, 0x000000, 0x6000000, 0x6000000, 0xea00000, + 0x6000000, 0xfa00000, 0x6200000, 0x4000000, 0x6400000, 0x5000000, 0x6200000, 0x6400000, + 0x6000000, 0x6000000, 0x6400000, 0xe800000, 0x000000, 0x6000000, 0x000000, 0x6000000, + 0x000000, 0x5400000, 0x200000, 0x400000, 0x4000000, 0x000000, 0x6000000, 0x000000, + 0x200000, 0x1000000, 0x4000000, 0x000000, 0x1000000, 0x000000, 0x6400000, 0x6200000, + 0xfa00000, 0x6400000, 0x4000000, 0x6400000, 0xfa00000, 0x6000000, 0x400000, 0x6400000, + 0x000000, 0xec00000, 0x4000000, 0x400000, 0x6000000, 0xea00000, 0xfa00000, 0x4000000, + 0x7200000, 0x7400000, 0x6000000, 0x6000000, 0x6000000, 0x6000000, 0x6000000, 0xfa00000, + 0x000000, 0x4000000, 0x6000000, 0x6400000, 0xea00000, 0x4400000, 0x6400000, 0x6400000, + 0x7200000, 0x6000000, 0xea00000, 0xea00000, 0x6000000, 0x6400000, 0x6000000, 0x4000000, + 0x6000000, 0x1000000, 0x200000, 0x5400000, 0x7200000, 0x6000000, 0x6200000, 0x6400000, + 0x400000, 0x4400000, 0x4000000, 0xea00000, 0x6400000, 0x4000000, 0x6000000, 0x6000000, + 0x6200000, 0x6000000, 0x6000000, 0xea00000, 0x000000, 0x6400000, 0x4400000, 0x400000, + 0x000000, 0x200000, 0xea00000, 0xea00000, 0x000000, 0x6000000, 0x6400000, 0x6000000, + 0x4400000, 0x4400000, 0x4000000, 0x6000000, 0x6400000, 0x6000000, 0x000000, 0x6000000, + 0x6400000, 0x6200000, 0x000000, 0xea00000, 0x4400000, 0x400000, 0x400000, 0x000000, + 0x4000000, 0x6000000, 0xea00000, 0xea00000, 0x6400000, 0x6400000, 0x6200000, 0x6200000, + 0x6000000, 0x6000000, 0x000000, 0x000000, 0x400000, 0x6000000, 0x000000, 0x6400000, + 0x6200000, 0x000000, 0x6200000, 0x6000000, 0x6400000, 0x000000, 0x6000000, 0x6000000, + 0x6400000, 0x6400000, 0x400000, 0x6000000, 0x000000, 0x000000, 0xc800000, 0x000000, + 0x6000000, 0x6000000, 0x6200000, 0xea00000, 0x6400000, 0x400000, 0x000000, 0x000000 +}; + +static const unsigned long unicode_backtrans_6b[] = { + 0x6000000, 0x000000, 0x6400000, 0x6400000, 0xea00000, 0x4200000, 0x400000, 0x400000, + 0x6000000, 0x6400000, 0xea00000, 0x6000000, 0x8800000, 0x000000, 0x000000, 0x6400000, + 0x6400000, 0x6400000, 0xea00000, 0x6000000, 0x000000, 0x000000, 0xea00000, 0x6400000, + 0x6000000, 0x6000000, 0x6000000, 0x400000, 0x000000, 0x4200000, 0x6400000, 0x200000, + 0xfa00000, 0xfa00000, 0x1000000, 0xfa00000, 0x1400000, 0x6000000, 0x000000, 0x1200000, + 0x6400000, 0x000000, 0x000000, 0x400000, 0x6400000, 0x6000000, 0x000000, 0x6400000, + 0x000000, 0x6000000, 0xfa00000, 0x6000000, 0x6000000, 0x4400000, 0x6400000, 0x7200000, + 0x6200000, 0x7200000, 0xfa00000, 0x6400000, 0x6000000, 0xea00000, 0xfa00000, 0x6400000, + 0x000000, 0x6000000, 0x6000000, 0x7200000, 0x000000, 0x6000000, 0xfc00000, 0xfa00000, + 0x6000000, 0x7200000, 0x6400000, 0x6000000, 0xfa00000, 0x6400000, 0xea00000, 0x000000, + 0xea00000, 0x6000000, 0x4400000, 0x200000, 0x6200000, 0x6000000, 0x6400000, 0x4000000, + 0x400000, 0x7200000, 0x000000, 0x6200000, 0x6000000, 0x400000, 0x6000000, 0xea00000, + 0x6400000, 0xea00000, 0xfa00000, 0xfa00000, 0xfa00000, 0xf800000, 0xfa00000, 0x7400000, + 0x000000, 0x200000, 0xfa00000, 0x400000, 0x000000, 0x6000000, 0x400000, 0x4200000, + 0x400000, 0x000000, 0xe800000, 0x200000, 0x4200000, 0x400000, 0x6000000, 0xe800000, + 0xea00000, 0x7200000, 0x4000000, 0xfa00000, 0x1000000, 0x400000, 0x6400000, 0xea00000, + 0x6200000, 0x5000000, 0x7400000, 0xfa00000, 0xfa00000, 0x400000, 0xfa00000, 0x1000000, + 0x6000000, 0xfa00000, 0xfa00000, 0x1200000, 0x6000000, 0x7200000, 0x6000000, 0x6000000, + 0x000000, 0x6000000, 0x1000000, 0x1000000, 0x6000000, 0x6200000, 0xfa00000, 0x6400000, + 0xea00000, 0x6000000, 0x1000000, 0x7400000, 0x000000, 0x000000, 0xea00000, 0x6400000, + 0x6400000, 0x1000000, 0x6400000, 0x6400000, 0x6200000, 0x6000000, 0x6000000, 0x6000000, + 0x400000, 0x400000, 0x7200000, 0x6200000, 0x400000, 0x6400000, 0xec00000, 0xea00000, + 0x6400000, 0x200000, 0xea00000, 0x7200000, 0x1200000, 0xfa00000, 0x6000000, 0xfa00000, + 0x400000, 0x400000, 0xea00000, 0x200000, 0xea00000, 0x6400000, 0x400000, 0xfa00000, + 0x6200000, 0xd800000, 0x1000000, 0x6400000, 0x6400000, 0xfa00000, 0xea00000, 0x6000000, + 0x6000000, 0x6400000, 0x6000000, 0xfa00000, 0x6400000, 0xfa00000, 0x200000, 0xf800000, + 0x6000000, 0x000000, 0xfa00000, 0xfa00000, 0xfa00000, 0x1000000, 0xfc00000, 0xf800000, + 0xea00000, 0x1000000, 0x6400000, 0xfa00000, 0x4000000, 0x000000, 0x6000000, 0x200000, + 0x6000000, 0x5400000, 0x6000000, 0x6400000, 0x6000000, 0x000000, 0x6400000, 0x6400000, + 0x6000000, 0x000000, 0x5000000, 0xfa00000, 0xea00000, 0x000000, 0x400000, 0x7200000, + 0x6000000, 0x400000, 0x6000000, 0x7200000, 0x000000, 0x1000000, 0x000000, 0x6400000, + 0x6000000, 0x7400000, 0x4000000, 0x6000000, 0x6000000, 0x7000000, 0x6000000, 0x6400000 +}; + +static const unsigned long unicode_backtrans_6c[] = { + 0x6000000, 0x6000000, 0x6400000, 0x6000000, 0x6400000, 0x7400000, 0x7000000, 0x1000000, + 0xea00000, 0x6400000, 0x000000, 0x6000000, 0x6000000, 0x7400000, 0x400000, 0xfa00000, + 0x7400000, 0xfa00000, 0x400000, 0xfa00000, 0x7200000, 0x7000000, 0x7000000, 0x200000, + 0x7000000, 0x7400000, 0x7000000, 0x7200000, 0x4000000, 0x6000000, 0x000000, 0x7400000, + 0x6000000, 0x7000000, 0x1000000, 0xea00000, 0x7200000, 0x6000000, 0x7400000, 0x7400000, + 0x7400000, 0x1000000, 0x7000000, 0x6000000, 0x6400000, 0x000000, 0x7400000, 0x7000000, + 0x7000000, 0x4000000, 0x1000000, 0x6400000, 0xfa00000, 0x5400000, 0x6400000, 0xca00000, + 0xfa00000, 0x4000000, 0x4400000, 0x6400000, 0x000000, 0x5000000, 0xea00000, 0x6400000, + 0xfa00000, 0xfa00000, 0xfa00000, 0x6000000, 0x000000, 0x000000, 0x7000000, 0x1000000, + 0x000000, 0x5000000, 0x7400000, 0x6400000, 0x6000000, 0x6400000, 0xea00000, 0x6400000, + 0xfa00000, 0x000000, 0x6400000, 0x000000, 0x7400000, 0xfa00000, 0x000000, 0xfa00000, + 0x4000000, 0x6400000, 0xca00000, 0x7400000, 0x7400000, 0xfa00000, 0xfa00000, 0xfa00000, + 0xfa00000, 0x7000000, 0x200000, 0x000000, 0x1000000, 0x6000000, 0x6000000, 0x6400000, + 0xfa00000, 0x7000000, 0xfa00000, 0x6400000, 0x000000, 0xec00000, 0x4000000, 0x6400000, + 0xfa00000, 0x6000000, 0xfa00000, 0x6200000, 0x7400000, 0x4000000, 0xfc00000, 0x000000, + 0x6400000, 0x5400000, 0xea00000, 0x6400000, 0x000000, 0xfa00000, 0xfa00000, 0x4000000, + 0x6000000, 0xfa00000, 0xfa00000, 0xfa00000, 0x6000000, 0xfc00000, 0xfc00000, 0xec00000, + 0xfa00000, 0x7400000, 0x6000000, 0x6000000, 0xfa00000, 0x6200000, 0x6000000, 0x7000000, + 0xfa00000, 0x000000, 0xea00000, 0xfa00000, 0xfc00000, 0xec00000, 0xea00000, 0x400000, + 0x6400000, 0xfa00000, 0xea00000, 0xfa00000, 0x6400000, 0x6000000, 0x000000, 0x5400000, + 0x000000, 0x1200000, 0x4200000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, + 0x000000, 0x1000000, 0x5000000, 0xfa00000, 0x6000000, 0x7000000, 0xfa00000, 0x4000000, + 0x6400000, 0x7200000, 0x5400000, 0xfa00000, 0x6400000, 0x000000, 0x6000000, 0x6000000, + 0xfa00000, 0xfa00000, 0x6200000, 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, + 0x6000000, 0xea00000, 0xec00000, 0x6000000, 0xfa00000, 0x7200000, 0x6400000, 0x6000000, + 0x000000, 0xfa00000, 0xfa00000, 0x4000000, 0xfa00000, 0x6400000, 0x4000000, 0x6400000, + 0x7400000, 0x6400000, 0x6400000, 0xfa00000, 0x7400000, 0xfa00000, 0x7400000, 0xfa00000, + 0x000000, 0x6200000, 0x6400000, 0xfa00000, 0x6400000, 0x6200000, 0x7000000, 0x4000000, + 0x7400000, 0xfa00000, 0xfa00000, 0xfa00000, 0x000000, 0xfa00000, 0x000000, 0x6400000, + 0xfa00000, 0x6400000, 0x5200000, 0xfc00000, 0x6400000, 0x6000000, 0xfc00000, 0xfa00000, + 0xfa00000, 0x7200000, 0x6400000, 0xfa00000, 0x400000, 0x7000000, 0x1000000, 0x1000000, + 0x1000000, 0x6000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x4000000 +}; + +static const unsigned long unicode_backtrans_6d[] = { + 0x6000000, 0x7000000, 0x4000000, 0x6000000, 0x7400000, 0x4000000, 0x4000000, 0x7400000, + 0x6000000, 0x6000000, 0x6400000, 0xfa00000, 0xfa00000, 0x6000000, 0x7400000, 0x6400000, + 0x6000000, 0xec00000, 0x7200000, 0x400000, 0x000000, 0x000000, 0x6000000, 0xfa00000, + 0x6000000, 0xfa00000, 0x7400000, 0xfa00000, 0x000000, 0x6000000, 0xfa00000, 0x6200000, + 0x6000000, 0x000000, 0x6000000, 0x000000, 0x4000000, 0xfa00000, 0x4400000, 0xfc00000, + 0x6400000, 0xea00000, 0xfa00000, 0x7200000, 0x6000000, 0x6000000, 0x7400000, 0x6400000, + 0x6000000, 0x7400000, 0xfa00000, 0x7200000, 0x6000000, 0xfa00000, 0xea00000, 0x6000000, + 0xea00000, 0xfc00000, 0x6000000, 0xfa00000, 0x7400000, 0xfa00000, 0xfa00000, 0x6400000, + 0x6000000, 0xfa00000, 0x6000000, 0x1000000, 0x200000, 0x1200000, 0x1000000, 0x1000000, + 0x1000000, 0x000000, 0x1000000, 0x1000000, 0x000000, 0x1000000, 0x5000000, 0x1000000, + 0x000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x000000, 0x000000, 0x4400000, + 0x6000000, 0xfa00000, 0xfa00000, 0x4000000, 0xda00000, 0x000000, 0x7400000, 0x6400000, + 0x7000000, 0x6400000, 0x6000000, 0xfa00000, 0x6200000, 0x6400000, 0xfa00000, 0x6400000, + 0x6000000, 0xfa00000, 0xfa00000, 0x000000, 0xea00000, 0x6000000, 0xfa00000, 0x7400000, + 0x6400000, 0x4000000, 0x4000000, 0x000000, 0xfa00000, 0x6000000, 0x6000000, 0xfa00000, + 0xfa00000, 0xea00000, 0x6000000, 0x6000000, 0x7400000, 0x6000000, 0x6000000, 0xe800000, + 0x6000000, 0x4000000, 0x7400000, 0x6000000, 0x6000000, 0xfa00000, 0x6000000, 0xec00000, + 0xfa00000, 0xf800000, 0x6000000, 0x6000000, 0xfa00000, 0xe800000, 0xfa00000, 0x4000000, + 0x6000000, 0xfc00000, 0x6400000, 0xfa00000, 0x7400000, 0xfa00000, 0x4400000, 0x6400000, + 0x6400000, 0x200000, 0x000000, 0x1200000, 0x200000, 0x1000000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x000000, 0x1000000, 0x5000000, 0x4000000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x7400000, 0x7000000, 0x6400000, 0x000000, 0x7000000, 0xfa00000, + 0x000000, 0x4000000, 0xfa00000, 0x6000000, 0x6400000, 0xfa00000, 0x000000, 0x6400000, + 0x7200000, 0x4400000, 0x6000000, 0x6000000, 0x6200000, 0x6400000, 0x6000000, 0x7400000, + 0xfa00000, 0x000000, 0x6000000, 0x8800000, 0xfc00000, 0xfa00000, 0xfa00000, 0xfa00000, + 0x6400000, 0x6000000, 0x6400000, 0xfa00000, 0x7200000, 0x6000000, 0x400000, 0xec00000, + 0x6000000, 0xfa00000, 0x6200000, 0x6000000, 0x6000000, 0x6200000, 0x7400000, 0x6000000, + 0xfa00000, 0xfa00000, 0xe800000, 0x6400000, 0x6000000, 0x7400000, 0xfa00000, 0x6400000, + 0x7400000, 0xfa00000, 0x6400000, 0x6000000, 0x7200000, 0x6400000, 0x7200000, 0x000000, + 0xea00000, 0x6400000, 0xea00000, 0xfa00000, 0x7200000, 0x6000000, 0xfa00000, 0x6400000, + 0x6400000, 0xfa00000, 0x6000000, 0xfa00000, 0x6400000, 0xea00000, 0x6400000, 0xfa00000, + 0x8800000, 0xfa00000, 0xea00000, 0xfa00000, 0x7400000, 0x6000000, 0x4000000, 0x000000 +}; + +static const unsigned long unicode_backtrans_6e[] = { + 0x6400000, 0x000000, 0x4000000, 0x6000000, 0x4400000, 0x7200000, 0x000000, 0x200000, + 0x200000, 0x200000, 0x5200000, 0x200000, 0x1000000, 0x1000000, 0x1000000, 0x4000000, + 0x1000000, 0x1000000, 0x000000, 0x200000, 0x1000000, 0x4200000, 0x1000000, 0x9800000, + 0x4000000, 0xea00000, 0xfa00000, 0xea00000, 0x6000000, 0x7200000, 0x400000, 0xea00000, + 0xfa00000, 0xfa00000, 0x6400000, 0xfa00000, 0xfa00000, 0xfa00000, 0xea00000, 0x6400000, + 0x6000000, 0x5200000, 0x4000000, 0xfa00000, 0xea00000, 0xfa00000, 0x6200000, 0xfa00000, + 0x6000000, 0x6000000, 0xfc00000, 0x6000000, 0xf800000, 0x6000000, 0xec00000, 0x000000, + 0xfa00000, 0x6400000, 0xfa00000, 0x6400000, 0xec00000, 0xe800000, 0xea00000, 0x6000000, + 0x6000000, 0x6000000, 0x000000, 0xfa00000, 0xfc00000, 0x6400000, 0x6000000, 0x6000000, + 0x400000, 0x6400000, 0xea00000, 0x6400000, 0x000000, 0xfa00000, 0x7200000, 0x4400000, + 0x4000000, 0x6400000, 0x6400000, 0x7400000, 0x7400000, 0x6000000, 0xfa00000, 0x400000, + 0xfa00000, 0x4000000, 0x6000000, 0xfa00000, 0xec00000, 0x6400000, 0xec00000, 0xfa00000, + 0x6000000, 0x6000000, 0x6400000, 0x6400000, 0x6000000, 0x6000000, 0x6000000, 0xea00000, + 0x6400000, 0x6000000, 0x000000, 0xfa00000, 0x000000, 0x000000, 0xfa00000, 0xea00000, + 0x000000, 0x6000000, 0xea00000, 0xec00000, 0x6000000, 0x000000, 0x4200000, 0x6000000, + 0x6000000, 0x6000000, 0x8800000, 0x400000, 0x4000000, 0x400000, 0x1200000, 0x1200000, + 0x200000, 0x000000, 0x200000, 0x1000000, 0x000000, 0x1000000, 0x5000000, 0x000000, + 0x6000000, 0x7000000, 0x000000, 0x4000000, 0x200000, 0x6400000, 0x6000000, 0x7200000, + 0xfa00000, 0x000000, 0x6000000, 0x6400000, 0x6000000, 0x000000, 0xea00000, 0x6000000, + 0x7200000, 0x6400000, 0x4000000, 0x6000000, 0xfa00000, 0xea00000, 0x6000000, 0xfa00000, + 0x6400000, 0x6000000, 0xfa00000, 0x6000000, 0x6000000, 0xfa00000, 0x6000000, 0x7400000, + 0x000000, 0x000000, 0xfa00000, 0xe800000, 0x000000, 0x400000, 0x6400000, 0xfa00000, + 0x6000000, 0xfc00000, 0x7200000, 0x6400000, 0x7000000, 0x4000000, 0xfa00000, 0x7200000, + 0x4000000, 0x6000000, 0xfa00000, 0x5400000, 0x6000000, 0x7200000, 0x6000000, 0x6400000, + 0x6400000, 0x7400000, 0xfa00000, 0x6400000, 0xea00000, 0xea00000, 0x6000000, 0x7400000, + 0x6400000, 0xea00000, 0x6400000, 0xfa00000, 0xea00000, 0x6400000, 0xec00000, 0x7400000, + 0x6000000, 0xfa00000, 0x6000000, 0xfa00000, 0xfa00000, 0x7200000, 0x6000000, 0x1000000, + 0x6000000, 0x4000000, 0x5000000, 0x4000000, 0x6000000, 0x4200000, 0x1200000, 0x1000000, + 0x1000000, 0x1000000, 0x5000000, 0x000000, 0x1000000, 0x1000000, 0x1000000, 0x000000, + 0x5000000, 0x5000000, 0x000000, 0x6400000, 0x6200000, 0x6400000, 0x6400000, 0xea00000, + 0x000000, 0x6000000, 0x6200000, 0x000000, 0xfa00000, 0x6000000, 0x6000000, 0x6200000, + 0xea00000, 0x7400000, 0x4000000, 0x6400000, 0x6000000, 0x6400000, 0xea00000, 0xea00000 +}; + +static const unsigned long unicode_backtrans_6f[] = { + 0x6000000, 0xea00000, 0xfa00000, 0x6000000, 0x4400000, 0x6000000, 0xfa00000, 0x6000000, + 0x6400000, 0x7200000, 0x6400000, 0x4000000, 0x4400000, 0x6400000, 0x6000000, 0xfa00000, + 0x000000, 0x8a00000, 0x6000000, 0x7200000, 0xfa00000, 0xfa00000, 0x4400000, 0x4000000, + 0x6400000, 0x6000000, 0x6400000, 0x400000, 0x6000000, 0x000000, 0x6000000, 0x6000000, + 0xfa00000, 0x6000000, 0xea00000, 0xea00000, 0x5000000, 0x6000000, 0x6400000, 0x6000000, + 0x000000, 0x7400000, 0x7400000, 0xfa00000, 0xea00000, 0x7400000, 0x6000000, 0x7400000, + 0x6400000, 0xfa00000, 0xea00000, 0x7400000, 0x4000000, 0x6000000, 0x7400000, 0x6000000, + 0xea00000, 0x6000000, 0x6000000, 0x6400000, 0x6400000, 0x4000000, 0x7200000, 0xea00000, + 0x6000000, 0xea00000, 0x000000, 0x6000000, 0x4000000, 0x200000, 0x1000000, 0x1000000, + 0x000000, 0x000000, 0x000000, 0x1000000, 0x000000, 0x1000000, 0x6000000, 0x6400000, + 0x6000000, 0xec00000, 0x6400000, 0x6400000, 0xea00000, 0x6000000, 0x4000000, 0xec00000, + 0xfa00000, 0x400000, 0xec00000, 0xea00000, 0x5200000, 0x6400000, 0xfc00000, 0xea00000, + 0x6000000, 0x6400000, 0xfc00000, 0x6000000, 0xea00000, 0x000000, 0x7200000, 0x6000000, + 0x400000, 0x6000000, 0x6000000, 0x6000000, 0x6400000, 0xfa00000, 0xfa00000, 0x6200000, + 0xea00000, 0x000000, 0x7000000, 0x6000000, 0x5200000, 0x000000, 0x6000000, 0x6000000, + 0x7200000, 0x4000000, 0xfa00000, 0x6000000, 0xfa00000, 0xec00000, 0xec00000, 0x6000000, + 0x6200000, 0xca00000, 0x6200000, 0x400000, 0xfa00000, 0x6000000, 0x6200000, 0x6400000, + 0xfc00000, 0x7000000, 0x4000000, 0x6400000, 0x7400000, 0xfc00000, 0xfa00000, 0x000000, + 0xec00000, 0x200000, 0x6400000, 0x6400000, 0xec00000, 0x6000000, 0x6400000, 0xea00000, + 0x000000, 0x000000, 0x400000, 0x000000, 0x1000000, 0x4000000, 0x6000000, 0x4400000, + 0x6400000, 0x7200000, 0x6000000, 0xea00000, 0xea00000, 0x6400000, 0x6400000, 0xfc00000, + 0x6400000, 0x6000000, 0x6200000, 0x6000000, 0x6000000, 0x6000000, 0xec00000, 0xec00000, + 0x6400000, 0xea00000, 0x6000000, 0xfa00000, 0x6000000, 0x4400000, 0x7400000, 0x000000, + 0x6000000, 0xfa00000, 0x6000000, 0x4000000, 0x6400000, 0x6000000, 0xc800000, 0x6000000, + 0xfa00000, 0xea00000, 0xfa00000, 0xea00000, 0x6000000, 0x400000, 0x6200000, 0x6400000, + 0x6400000, 0x7000000, 0xec00000, 0x6000000, 0x6000000, 0x6000000, 0x6000000, 0x6000000, + 0x000000, 0x1000000, 0x1000000, 0x4000000, 0x6200000, 0xea00000, 0x000000, 0x000000, + 0x6200000, 0x4000000, 0xcc00000, 0x6200000, 0x6000000, 0x6000000, 0x7400000, 0xea00000, + 0xfa00000, 0xfa00000, 0x6000000, 0x6000000, 0xea00000, 0x000000, 0x6000000, 0x6000000, + 0x6400000, 0xec00000, 0x000000, 0xea00000, 0xea00000, 0x6000000, 0x7200000, 0xfa00000, + 0x6400000, 0xea00000, 0x6000000, 0x200000, 0x6000000, 0x400000, 0x4200000, 0x6000000, + 0x4000000, 0x400000, 0x6200000, 0x6000000, 0x6400000, 0x400000, 0xea00000, 0x6000000 +}; + +static const unsigned long unicode_backtrans_70[] = { + 0x6400000, 0xea00000, 0x000000, 0x4000000, 0x6000000, 0xec00000, 0xec00000, 0x6400000, + 0x000000, 0xea00000, 0x6000000, 0xea00000, 0x6000000, 0x6400000, 0x6000000, 0xea00000, + 0x000000, 0xfa00000, 0x000000, 0x000000, 0x6000000, 0xea00000, 0x6000000, 0x6400000, + 0xea00000, 0x6000000, 0xfa00000, 0xfa00000, 0xe800000, 0xea00000, 0xca00000, 0xea00000, + 0x6400000, 0x6000000, 0x6000000, 0xfc00000, 0x6000000, 0x000000, 0x6200000, 0xea00000, + 0xe800000, 0x6000000, 0x6000000, 0x6000000, 0x4200000, 0x000000, 0x000000, 0xec00000, + 0x6200000, 0x6000000, 0x6200000, 0x6000000, 0x6400000, 0x7000000, 0x000000, 0xec00000, + 0x6000000, 0x7400000, 0x6000000, 0x6000000, 0x6400000, 0x000000, 0xea00000, 0x6000000, + 0x6000000, 0x6000000, 0x6000000, 0x6400000, 0x6400000, 0x6000000, 0x6000000, 0x000000, + 0x6400000, 0x6400000, 0x6400000, 0x4400000, 0xfa00000, 0x4000000, 0x400000, 0x1000000, + 0xc800000, 0xea00000, 0x6000000, 0x000000, 0x4400000, 0x6400000, 0x6000000, 0x6000000, + 0xea00000, 0x000000, 0x6000000, 0x6000000, 0x4000000, 0xec00000, 0x7400000, 0x6000000, + 0x6000000, 0x6000000, 0x6000000, 0xea00000, 0x6400000, 0x6400000, 0x6000000, 0x4000000, + 0x6000000, 0x6000000, 0x6000000, 0xfa00000, 0x5400000, 0x1000000, 0x400000, 0x5200000, + 0xfa00000, 0x6000000, 0x000000, 0x000000, 0x6000000, 0x5400000, 0x7400000, 0x4000000, + 0xfa00000, 0x4000000, 0x6000000, 0x000000, 0xfa00000, 0xea00000, 0x5400000, 0x5000000, + 0x1000000, 0x4400000, 0x6000000, 0x6000000, 0x6000000, 0xfc00000, 0x6400000, 0x000000, + 0x000000, 0x5200000, 0xfa00000, 0x4000000, 0x000000, 0x000000, 0xfa00000, 0x4000000, + 0x000000, 0x6000000, 0xfa00000, 0x6000000, 0x7400000, 0x7400000, 0x7400000, 0x400000, + 0xec00000, 0xfa00000, 0xe800000, 0x400000, 0x1000000, 0x1000000, 0x000000, 0x6000000, + 0x4000000, 0xe800000, 0x000000, 0x4000000, 0xec00000, 0x4000000, 0x4000000, 0x4000000, + 0x000000, 0x6000000, 0x000000, 0xfc00000, 0xfa00000, 0xfa00000, 0x7200000, 0xfa00000, + 0x6400000, 0x7400000, 0x000000, 0xfa00000, 0x6400000, 0x6000000, 0x000000, 0xfc00000, + 0xfa00000, 0xda00000, 0x6200000, 0x5000000, 0x5000000, 0x5000000, 0x6000000, 0x000000, + 0x5000000, 0x1000000, 0x1000000, 0x1000000, 0x4000000, 0x6000000, 0x6000000, 0x6000000, + 0xfa00000, 0x000000, 0x7400000, 0xea00000, 0x4000000, 0x6000000, 0x6000000, 0xea00000, + 0x4000000, 0x6400000, 0x6000000, 0x6400000, 0x6400000, 0x4400000, 0x4400000, 0x6000000, + 0xfc00000, 0xfa00000, 0x6000000, 0x1000000, 0x6400000, 0xea00000, 0x6000000, 0xda00000, + 0x6000000, 0x6000000, 0x6000000, 0x000000, 0x7400000, 0x000000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x000000, 0x1000000, 0x1000000, 0x1000000, 0x000000, 0x7000000, + 0x6000000, 0xca00000, 0x000000, 0x6000000, 0x6000000, 0x4000000, 0x6000000, 0x7000000, + 0x6000000, 0xfa00000, 0x6400000, 0x6000000, 0x6000000, 0xfa00000, 0x4000000, 0x6000000 +}; + +static const unsigned long unicode_backtrans_71[] = { + 0x6000000, 0x000000, 0x6000000, 0x400000, 0xec00000, 0x4400000, 0x6400000, 0x400000, + 0x000000, 0xfa00000, 0x7000000, 0x6400000, 0xec00000, 0x6000000, 0x6000000, 0x400000, + 0x7000000, 0x000000, 0x000000, 0x7000000, 0x200000, 0x1000000, 0x1000000, 0x6000000, + 0x1000000, 0xfa00000, 0xfa00000, 0x6000000, 0x6200000, 0x4000000, 0xec00000, 0x6000000, + 0x6400000, 0xea00000, 0x6000000, 0x6000000, 0x000000, 0x6000000, 0xfa00000, 0x000000, + 0x6000000, 0x4000000, 0x000000, 0x4400000, 0x4000000, 0x400000, 0x6000000, 0x7400000, + 0xfc00000, 0x7400000, 0x6000000, 0x4000000, 0x4000000, 0x4000000, 0xfa00000, 0x000000, + 0x400000, 0x000000, 0x6000000, 0x4000000, 0x200000, 0x000000, 0x4000000, 0x000000, + 0x4000000, 0x6400000, 0x6000000, 0x6000000, 0x6000000, 0x5400000, 0x6400000, 0xec00000, + 0x000000, 0xea00000, 0xdc00000, 0x6400000, 0xfa00000, 0x6000000, 0xfa00000, 0x4000000, + 0xec00000, 0x4000000, 0x6400000, 0x6000000, 0x6000000, 0x200000, 0xea00000, 0x400000, + 0x6000000, 0xea00000, 0x6400000, 0x000000, 0xfc00000, 0x6000000, 0xfc00000, 0x6000000, + 0x6400000, 0x6000000, 0x6200000, 0x6000000, 0xfa00000, 0xea00000, 0xfa00000, 0xfa00000, + 0x7400000, 0xea00000, 0x6000000, 0x4000000, 0xea00000, 0x000000, 0xfa00000, 0x000000, + 0x6000000, 0x4000000, 0x7000000, 0x5000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, + 0x7000000, 0x400000, 0x5000000, 0x6000000, 0x4000000, 0xfa00000, 0x4000000, 0x000000, + 0x6400000, 0x6000000, 0x6000000, 0x000000, 0xfa00000, 0x6400000, 0x6000000, 0x6400000, + 0x4200000, 0xe800000, 0xfa00000, 0x000000, 0x4400000, 0x000000, 0x4000000, 0xfa00000, + 0x6000000, 0x4000000, 0xec00000, 0x000000, 0xfa00000, 0x200000, 0x4000000, 0x6000000, + 0x5000000, 0xfa00000, 0x6400000, 0x6400000, 0x6000000, 0x6000000, 0x6000000, 0xfa00000, + 0x7400000, 0x6000000, 0xcc00000, 0x4000000, 0x6000000, 0x6000000, 0x000000, 0x6000000, + 0x7200000, 0x6000000, 0x6000000, 0x000000, 0xfa00000, 0x4000000, 0x000000, 0x6400000, + 0x6400000, 0xea00000, 0x6400000, 0x7400000, 0x4000000, 0x7000000, 0x000000, 0x4000000, + 0x6000000, 0xfa00000, 0xcc00000, 0x000000, 0x6000000, 0x6000000, 0xea00000, 0x6400000, + 0x6400000, 0xec00000, 0x6000000, 0xfa00000, 0x6400000, 0x6000000, 0x6000000, 0x6000000, + 0xea00000, 0xea00000, 0x6000000, 0x6400000, 0x400000, 0x000000, 0xfa00000, 0x6000000, + 0xea00000, 0x4000000, 0xea00000, 0x400000, 0xfa00000, 0xfa00000, 0x6400000, 0x200000, + 0x6000000, 0x6400000, 0x6400000, 0x6000000, 0x6400000, 0x4000000, 0x000000, 0xea00000, + 0x7200000, 0x6000000, 0x6000000, 0x000000, 0x6000000, 0xfa00000, 0xea00000, 0xfa00000, + 0x6000000, 0x000000, 0x000000, 0x4000000, 0x6200000, 0xea00000, 0xfa00000, 0x000000, + 0x6000000, 0x6000000, 0x6000000, 0x000000, 0x6000000, 0x4200000, 0x4000000, 0x000000, + 0x6400000, 0x7200000, 0x000000, 0xea00000, 0xea00000, 0x6000000, 0xec00000, 0xea00000 +}; + +static const unsigned long unicode_backtrans_72[] = { + 0xcc00000, 0x6000000, 0x6000000, 0x6000000, 0x000000, 0x6000000, 0xfa00000, 0x6400000, + 0x400000, 0x4400000, 0x6000000, 0x000000, 0x6000000, 0x6200000, 0x4000000, 0x4000000, + 0xea00000, 0x000000, 0x000000, 0x6400000, 0x6000000, 0x4000000, 0x4000000, 0x4400000, + 0x000000, 0x6000000, 0x6400000, 0xea00000, 0x000000, 0x7400000, 0x6000000, 0x6400000, + 0x000000, 0x000000, 0x6000000, 0x6000000, 0x4400000, 0x000000, 0x6000000, 0x6000000, + 0x7200000, 0x6000000, 0xfa00000, 0x4400000, 0xfa00000, 0xea00000, 0x4000000, 0x400000, + 0xfa00000, 0x1000000, 0x8a00000, 0x000000, 0x400000, 0xfa00000, 0xfa00000, 0x1000000, + 0x7400000, 0x7400000, 0xea00000, 0xfa00000, 0x200000, 0xfa00000, 0xea00000, 0x7200000, + 0xca00000, 0x6400000, 0x6400000, 0x400000, 0x6000000, 0x400000, 0xea00000, 0xfa00000, + 0xfa00000, 0x6000000, 0x6000000, 0x6200000, 0xfa00000, 0x1000000, 0x400000, 0x6400000, + 0x4400000, 0x000000, 0xfa00000, 0x6400000, 0x000000, 0x4400000, 0x7400000, 0x4000000, + 0xea00000, 0xfa00000, 0x6400000, 0xfa00000, 0x4400000, 0xfa00000, 0x6400000, 0xfa00000, + 0x6400000, 0xfa00000, 0xfa00000, 0x6400000, 0x000000, 0x000000, 0x5000000, 0xfa00000, + 0x400000, 0xfa00000, 0x6000000, 0x400000, 0x6000000, 0x000000, 0x7400000, 0x7400000, + 0x6000000, 0x400000, 0xfa00000, 0x6000000, 0x6200000, 0x1000000, 0x6000000, 0x6400000, + 0x6400000, 0xfa00000, 0x1000000, 0x6400000, 0x6400000, 0xea00000, 0x7200000, 0x7400000, + 0xfa00000, 0xfa00000, 0x4200000, 0x000000, 0x7400000, 0x6000000, 0x6000000, 0x4200000, + 0x6000000, 0x6400000, 0x1000000, 0x7000000, 0x6000000, 0x7400000, 0x6400000, 0x5000000, + 0x6000000, 0x6000000, 0x7200000, 0x6400000, 0x4000000, 0x6000000, 0x6200000, 0x6000000, + 0x6000000, 0x000000, 0x6000000, 0x6400000, 0x000000, 0x6000000, 0x6000000, 0x5000000, + 0x200000, 0x6000000, 0xea00000, 0x6000000, 0x6000000, 0x6000000, 0x6000000, 0xea00000, + 0x6400000, 0x6000000, 0x6000000, 0x000000, 0xfa00000, 0x5400000, 0x6400000, 0xfa00000, + 0x7000000, 0x400000, 0x4200000, 0x000000, 0x7400000, 0x6000000, 0x1200000, 0x1000000, + 0x1000000, 0x1200000, 0x6000000, 0x000000, 0x000000, 0x6000000, 0x400000, 0x6000000, + 0xe800000, 0x7400000, 0xfa00000, 0x7200000, 0xfa00000, 0x6000000, 0x6200000, 0x400000, + 0x1000000, 0x6400000, 0x6000000, 0x6000000, 0x6400000, 0x5000000, 0xfa00000, 0x000000, + 0xfa00000, 0x6000000, 0x7200000, 0x000000, 0x6000000, 0x400000, 0x6400000, 0xfa00000, + 0x6400000, 0xfa00000, 0x6000000, 0x200000, 0x6000000, 0x000000, 0x1000000, 0x6400000, + 0x7200000, 0xfa00000, 0x4200000, 0x6000000, 0x6000000, 0x400000, 0x6000000, 0x000000, + 0x7000000, 0xfa00000, 0x6000000, 0x6000000, 0x1200000, 0x1200000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x1000000, 0x7400000, 0x7400000, 0x000000, 0x6000000, 0x7200000, + 0xfa00000, 0xea00000, 0x7400000, 0x7400000, 0xfa00000, 0xea00000, 0x6400000, 0x6000000 +}; + +static const unsigned long unicode_backtrans_73[] = { + 0x6000000, 0x7000000, 0x4400000, 0x1000000, 0x4400000, 0x400000, 0x000000, 0x6400000, + 0x6000000, 0x000000, 0xfa00000, 0x6400000, 0x6000000, 0x400000, 0x1000000, 0x6000000, + 0x4000000, 0x6000000, 0x6400000, 0x7400000, 0x000000, 0x1000000, 0xfa00000, 0x7200000, + 0x6400000, 0x6400000, 0x000000, 0xfa00000, 0xfa00000, 0xfa00000, 0x7400000, 0x200000, + 0x000000, 0x1000000, 0x7400000, 0x6000000, 0x400000, 0xfa00000, 0x6000000, 0x6400000, + 0x4400000, 0xfa00000, 0xda00000, 0xda00000, 0x5400000, 0x6000000, 0x5200000, 0x200000, + 0x6000000, 0x7400000, 0x6400000, 0x6000000, 0x7200000, 0x6400000, 0xea00000, 0xfa00000, + 0x5000000, 0x5000000, 0x6400000, 0x6400000, 0x6000000, 0x400000, 0xfa00000, 0xfa00000, + 0x6000000, 0x4000000, 0x6000000, 0x6400000, 0xea00000, 0xea00000, 0x000000, 0x000000, + 0x4000000, 0x6000000, 0x6000000, 0x000000, 0x6000000, 0x7400000, 0x6200000, 0x4200000, + 0xfc00000, 0x6000000, 0xfc00000, 0x000000, 0x000000, 0x000000, 0x400000, 0xfa00000, + 0x6400000, 0x6000000, 0x6000000, 0x6000000, 0x000000, 0x6400000, 0x6400000, 0x6400000, + 0x7400000, 0x6000000, 0x6000000, 0x200000, 0x000000, 0x6000000, 0x6400000, 0x6400000, + 0xea00000, 0x6400000, 0xea00000, 0x6400000, 0x7400000, 0x1000000, 0x6400000, 0x7400000, + 0xea00000, 0x4400000, 0xea00000, 0x6000000, 0x4000000, 0xea00000, 0x6000000, 0x6400000, + 0xea00000, 0x400000, 0xea00000, 0xea00000, 0x6400000, 0x6000000, 0x7000000, 0x6000000, + 0x6400000, 0x6400000, 0x6000000, 0x6400000, 0xfa00000, 0x6400000, 0xec00000, 0xfa00000, + 0x6000000, 0xfa00000, 0x6000000, 0xfa00000, 0x4000000, 0x000000, 0xfc00000, 0x4000000, + 0x400000, 0x1000000, 0x6000000, 0x6400000, 0xe800000, 0x6400000, 0xfa00000, 0xec00000, + 0xcc00000, 0x000000, 0x000000, 0x1000000, 0x4400000, 0x6000000, 0x4400000, 0xfc00000, + 0x6400000, 0x6000000, 0x7400000, 0x000000, 0x6000000, 0x6400000, 0x6400000, 0xc800000, + 0x6000000, 0xfa00000, 0x4400000, 0x7400000, 0x6000000, 0xec00000, 0x1000000, 0x1000000, + 0x1000000, 0x000000, 0xfa00000, 0xfa00000, 0x6000000, 0x6400000, 0x6000000, 0x7400000, + 0x6000000, 0xec00000, 0x5000000, 0x7200000, 0x6400000, 0x400000, 0x6000000, 0x6400000, + 0xfa00000, 0x000000, 0xfa00000, 0x6000000, 0x000000, 0x6400000, 0x6400000, 0x6000000, + 0x7200000, 0xdc00000, 0xfa00000, 0x6400000, 0xec00000, 0xfa00000, 0x4200000, 0xdc00000, + 0x5000000, 0x1000000, 0x6400000, 0x6400000, 0x6000000, 0x4000000, 0xec00000, 0x6000000, + 0x6000000, 0xfc00000, 0x6000000, 0x6000000, 0x6000000, 0xec00000, 0xfa00000, 0x000000, + 0xfa00000, 0x4400000, 0x4000000, 0xec00000, 0xc800000, 0xfa00000, 0xcc00000, 0x7400000, + 0x6000000, 0xfc00000, 0xea00000, 0x6000000, 0x000000, 0xfa00000, 0x6200000, 0x4000000, + 0x000000, 0x200000, 0x1000000, 0x4000000, 0x6400000, 0x6400000, 0x6000000, 0xcc00000, + 0x6200000, 0xcc00000, 0x6400000, 0x4400000, 0x6000000, 0xec00000, 0xea00000, 0x6400000 +}; + +static const unsigned long unicode_backtrans_74[] = { + 0x6400000, 0xec00000, 0x4000000, 0xfa00000, 0x6400000, 0xfa00000, 0xfa00000, 0xec00000, + 0x6000000, 0xfa00000, 0x7400000, 0x6000000, 0x6000000, 0x6000000, 0x000000, 0x1000000, + 0x1000000, 0x4400000, 0x4000000, 0x8800000, 0x4000000, 0x4000000, 0x6000000, 0x4000000, + 0x000000, 0x4000000, 0x7400000, 0xfc00000, 0x4000000, 0x6000000, 0x4000000, 0x4000000, + 0xe800000, 0xe800000, 0xfa00000, 0x6000000, 0x6400000, 0xfa00000, 0xfc00000, 0x000000, + 0xfc00000, 0x6400000, 0xfc00000, 0xec00000, 0xfc00000, 0x6400000, 0xfc00000, 0xec00000, + 0xfc00000, 0x6400000, 0x6200000, 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, 0x4000000, + 0xc800000, 0x4400000, 0xea00000, 0x000000, 0x5000000, 0x000000, 0x000000, 0xea00000, + 0xec00000, 0xfa00000, 0x6000000, 0xcc00000, 0xec00000, 0x4000000, 0x6400000, 0x4400000, + 0x4000000, 0x4000000, 0x6000000, 0xec00000, 0x000000, 0x6400000, 0x6000000, 0x6000000, + 0x6000000, 0x6400000, 0x6400000, 0x4000000, 0x6000000, 0xfa00000, 0x4000000, 0xfc00000, + 0x000000, 0xfa00000, 0xfa00000, 0xfa00000, 0xda00000, 0x4400000, 0xfa00000, 0xfa00000, + 0xca00000, 0x000000, 0xec00000, 0x6200000, 0xea00000, 0xc800000, 0x400000, 0x6400000, + 0xcc00000, 0xea00000, 0xea00000, 0x4400000, 0x4000000, 0x7400000, 0x6400000, 0xea00000, + 0x7200000, 0x6400000, 0x6400000, 0x6200000, 0x4000000, 0x6000000, 0x5200000, 0x1000000, + 0x000000, 0x6000000, 0x4000000, 0x000000, 0x6000000, 0x6000000, 0xfa00000, 0x6000000, + 0x7400000, 0x7400000, 0xc800000, 0xfa00000, 0x000000, 0x6400000, 0x6400000, 0xfc00000, + 0x6000000, 0xec00000, 0x6000000, 0xfa00000, 0x4000000, 0x4000000, 0x1000000, 0x400000, + 0x7400000, 0x400000, 0x6400000, 0x000000, 0x6000000, 0x6000000, 0x000000, 0x6000000, + 0xec00000, 0x4400000, 0x6400000, 0x4000000, 0xfc00000, 0x000000, 0xfa00000, 0xec00000, + 0x6400000, 0xec00000, 0x200000, 0xec00000, 0x4000000, 0xe800000, 0x6400000, 0xfa00000, + 0xfc00000, 0x7400000, 0xec00000, 0x6400000, 0x000000, 0x6000000, 0x400000, 0x6400000, + 0xea00000, 0x6400000, 0xec00000, 0x000000, 0x4000000, 0xec00000, 0x6000000, 0x6000000, + 0x6000000, 0xcc00000, 0x7000000, 0x6400000, 0x000000, 0xea00000, 0x6000000, 0xec00000, + 0x6000000, 0x6000000, 0x6000000, 0x6000000, 0x000000, 0x6000000, 0x8800000, 0x000000, + 0x4400000, 0x400000, 0xea00000, 0x6000000, 0x4400000, 0x000000, 0x000000, 0xea00000, + 0x4400000, 0x000000, 0x1000000, 0x4400000, 0xea00000, 0x6000000, 0x6000000, 0x6000000, + 0xec00000, 0x6000000, 0xec00000, 0x6400000, 0xfa00000, 0x6000000, 0x7400000, 0x6400000, + 0xfa00000, 0x6000000, 0xfa00000, 0xfa00000, 0x7400000, 0x6000000, 0xfa00000, 0x4200000, + 0x6400000, 0x6200000, 0x400000, 0x400000, 0x6000000, 0x000000, 0xfa00000, 0x1400000, + 0x4200000, 0x4200000, 0x4200000, 0x000000, 0x7400000, 0x6000000, 0x7200000, 0xfa00000, + 0x4200000, 0x000000, 0x400000, 0x6400000, 0x400000, 0x6000000, 0x6000000, 0x7400000 +}; + +static const unsigned long unicode_backtrans_75[] = { + 0x6000000, 0x8800000, 0x6000000, 0x6200000, 0xfa00000, 0x4200000, 0x400000, 0x6000000, + 0x6000000, 0x000000, 0x000000, 0x6000000, 0x6200000, 0x7200000, 0x4200000, 0x7000000, + 0x6000000, 0xfa00000, 0x6400000, 0x7200000, 0x6000000, 0xea00000, 0x6400000, 0x6400000, + 0xfa00000, 0x5000000, 0xfa00000, 0x8800000, 0x7200000, 0x6000000, 0x4200000, 0xfa00000, + 0x400000, 0x6400000, 0x6000000, 0x8a00000, 0x400000, 0xfa00000, 0xea00000, 0x400000, + 0xfa00000, 0x7400000, 0x6400000, 0xfa00000, 0xfa00000, 0x7000000, 0x6000000, 0x7400000, + 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, 0x4000000, 0x5000000, 0x400000, 0xfa00000, + 0xfa00000, 0x6400000, 0xfa00000, 0x5200000, 0x200000, 0x6400000, 0x7400000, 0x6400000, + 0x7400000, 0x000000, 0x4000000, 0x400000, 0x200000, 0x1000000, 0x4200000, 0xec00000, + 0x7400000, 0x200000, 0x4200000, 0x7200000, 0xfa00000, 0x4200000, 0x7400000, 0xfa00000, + 0x400000, 0xca00000, 0x400000, 0xc800000, 0xfa00000, 0x4000000, 0x000000, 0x400000, + 0x000000, 0xfa00000, 0x7200000, 0xfa00000, 0xfa00000, 0xea00000, 0x400000, 0x6400000, + 0x4200000, 0x400000, 0xea00000, 0x6000000, 0x6200000, 0xfa00000, 0xfa00000, 0x4200000, + 0x000000, 0x200000, 0xfa00000, 0x6200000, 0x6000000, 0x4200000, 0x4000000, 0xec00000, + 0xea00000, 0x400000, 0x5000000, 0x200000, 0x1200000, 0x8800000, 0xea00000, 0x6200000, + 0xfa00000, 0x7400000, 0xcc00000, 0x400000, 0x400000, 0x6400000, 0x6400000, 0xfa00000, + 0x6000000, 0x400000, 0x200000, 0x5000000, 0x6000000, 0x400000, 0xfa00000, 0xea00000, + 0x000000, 0x200000, 0xea00000, 0xfa00000, 0x6000000, 0x4000000, 0xca00000, 0xfa00000, + 0x6400000, 0xfa00000, 0x5400000, 0x400000, 0x7200000, 0x6400000, 0x1000000, 0x1000000, + 0x6000000, 0x7400000, 0x7200000, 0x000000, 0x400000, 0xfa00000, 0x4000000, 0x1000000, + 0x1000000, 0x1000000, 0x6400000, 0x7200000, 0x7400000, 0xfa00000, 0x000000, 0x6000000, + 0x000000, 0x000000, 0x6000000, 0xfa00000, 0x1000000, 0x000000, 0x1000000, 0x1000000, + 0x7000000, 0xda00000, 0xfa00000, 0xfa00000, 0x5400000, 0xfa00000, 0x6000000, 0x000000, + 0xfa00000, 0xfa00000, 0x6400000, 0x6000000, 0xfa00000, 0xfa00000, 0xfa00000, 0x6400000, + 0x6400000, 0x6400000, 0xfa00000, 0x5200000, 0x7400000, 0xfa00000, 0x400000, 0xfa00000, + 0x5000000, 0x1000000, 0x7200000, 0x6000000, 0x6400000, 0xfa00000, 0x6400000, 0x6400000, + 0x6000000, 0x6000000, 0xfa00000, 0x000000, 0xfa00000, 0xfa00000, 0x1000000, 0x6400000, + 0xfa00000, 0xea00000, 0x6000000, 0xfa00000, 0x4400000, 0x6000000, 0x7200000, 0x6400000, + 0x6400000, 0x6400000, 0xfa00000, 0x7200000, 0x7400000, 0x000000, 0x7000000, 0x7400000, + 0x1000000, 0x200000, 0x1000000, 0x1000000, 0x400000, 0x6000000, 0x400000, 0x6400000, + 0xfa00000, 0x7400000, 0xea00000, 0x6200000, 0xfa00000, 0x6000000, 0x6000000, 0x6000000, + 0x6000000, 0x7400000, 0xea00000, 0x6000000, 0xfa00000, 0x6000000, 0x6200000, 0x7200000 +}; + +static const unsigned long unicode_backtrans_76[] = { + 0xfc00000, 0x7200000, 0x4400000, 0x7400000, 0x400000, 0x1000000, 0x000000, 0x4400000, + 0x6400000, 0x6200000, 0x7400000, 0x6200000, 0x7400000, 0xea00000, 0x000000, 0x6400000, + 0x7000000, 0x6000000, 0x400000, 0x6400000, 0x6000000, 0x7400000, 0x6400000, 0x1000000, + 0x1000000, 0xfc00000, 0x6000000, 0x7400000, 0x6400000, 0x6400000, 0x6400000, 0xfa00000, + 0xfa00000, 0xea00000, 0xfa00000, 0x6400000, 0xfa00000, 0x7400000, 0xfc00000, 0x6200000, + 0x6000000, 0x7400000, 0x1000000, 0x1000000, 0x4000000, 0x7400000, 0x000000, 0x6000000, + 0x7200000, 0x6000000, 0x6400000, 0x7400000, 0x7200000, 0x7400000, 0x000000, 0x000000, + 0x7400000, 0x400000, 0x6400000, 0xca00000, 0x7400000, 0x6000000, 0x1000000, 0x1000000, + 0x5400000, 0x400000, 0xea00000, 0x7400000, 0x400000, 0x400000, 0x6200000, 0x6200000, + 0x6200000, 0x6400000, 0x400000, 0x400000, 0xfa00000, 0x5000000, 0xc800000, 0x4000000, + 0x6000000, 0x4000000, 0xea00000, 0x6000000, 0x5000000, 0x400000, 0xfa00000, 0x6000000, + 0x6200000, 0x6400000, 0x6000000, 0x000000, 0x7200000, 0x000000, 0x1000000, 0x6400000, + 0x6000000, 0xea00000, 0x6200000, 0x1000000, 0xec00000, 0x6400000, 0x4000000, 0x4200000, + 0x200000, 0xea00000, 0x6200000, 0x1000000, 0xea00000, 0x6400000, 0x6400000, 0x5400000, + 0xea00000, 0x6400000, 0xea00000, 0x4000000, 0x4400000, 0x6000000, 0x4200000, 0x000000, + 0xfa00000, 0x6000000, 0x4200000, 0xfa00000, 0xea00000, 0xfa00000, 0xfa00000, 0x6000000, + 0x200000, 0x6400000, 0x7000000, 0x200000, 0xfa00000, 0x400000, 0xfa00000, 0xfa00000, + 0x7200000, 0x6000000, 0x6000000, 0x7200000, 0x400000, 0x400000, 0xfa00000, 0x6000000, + 0xca00000, 0x1000000, 0x6000000, 0xfa00000, 0x000000, 0x6400000, 0x7200000, 0x000000, + 0x000000, 0x7200000, 0x6200000, 0x6400000, 0x6400000, 0x6400000, 0x6000000, 0x400000, + 0x400000, 0x4000000, 0x400000, 0x400000, 0x7400000, 0x4400000, 0x6400000, 0x400000, + 0x400000, 0x000000, 0x6400000, 0x6000000, 0x000000, 0x6400000, 0xfa00000, 0x6000000, + 0x6200000, 0x1000000, 0x1000000, 0x000000, 0x7200000, 0x6000000, 0x000000, 0x4200000, + 0x6200000, 0x200000, 0xea00000, 0x6000000, 0x000000, 0x6400000, 0x6000000, 0xfa00000, + 0x000000, 0x400000, 0xfa00000, 0xea00000, 0x6000000, 0x7400000, 0xfa00000, 0x000000, + 0xfa00000, 0x6400000, 0xfa00000, 0x400000, 0x4400000, 0x7200000, 0x7400000, 0x1000000, + 0x1000000, 0x1000000, 0xfa00000, 0x6000000, 0x7400000, 0x000000, 0xda00000, 0x1200000, + 0x1000000, 0x4400000, 0x6000000, 0xfa00000, 0xea00000, 0x6000000, 0xea00000, 0xfa00000, + 0x400000, 0xea00000, 0x000000, 0xea00000, 0xea00000, 0x7200000, 0x6400000, 0xea00000, + 0x400000, 0x6000000, 0x6200000, 0x000000, 0x6400000, 0x6000000, 0xfa00000, 0x7000000, + 0x6400000, 0x7400000, 0xfa00000, 0x6000000, 0xfa00000, 0x6000000, 0x400000, 0x6000000, + 0xfa00000, 0x7400000, 0x6000000, 0x6200000, 0xfc00000, 0x000000, 0xfa00000, 0x000000 +}; + +static const unsigned long unicode_backtrans_77[] = { + 0x400000, 0xfa00000, 0x000000, 0x6000000, 0xfa00000, 0x6000000, 0x400000, 0x7200000, + 0xfa00000, 0xfa00000, 0x6400000, 0xfa00000, 0x4200000, 0x1000000, 0x4400000, 0x4000000, + 0x6000000, 0x6000000, 0x6400000, 0x6000000, 0x400000, 0x6400000, 0x000000, 0x400000, + 0x000000, 0x7400000, 0x7400000, 0x6200000, 0x400000, 0x6000000, 0xca00000, 0x7200000, + 0xfa00000, 0x000000, 0x7400000, 0x6000000, 0x4200000, 0x6200000, 0x5200000, 0x6000000, + 0x7400000, 0xfa00000, 0x000000, 0x4000000, 0x000000, 0x7400000, 0x400000, 0x7400000, + 0x000000, 0x6000000, 0x6000000, 0x6000000, 0x6400000, 0x7400000, 0x7400000, 0xfa00000, + 0xfa00000, 0x6400000, 0xfa00000, 0x6000000, 0xfa00000, 0x6400000, 0x6400000, 0x000000, + 0xda00000, 0x1000000, 0x400000, 0x5000000, 0x6000000, 0x6400000, 0x6400000, 0x7200000, + 0x000000, 0x000000, 0x6400000, 0x6000000, 0x6000000, 0xec00000, 0x6400000, 0x6400000, + 0x1000000, 0x1000000, 0x6400000, 0x000000, 0x6000000, 0x6000000, 0x6400000, 0x400000, + 0x4000000, 0x6000000, 0x7200000, 0xfa00000, 0x6400000, 0x000000, 0x6400000, 0x6400000, + 0x6400000, 0xfa00000, 0x7400000, 0xfa00000, 0x400000, 0x7200000, 0xfa00000, 0x6400000, + 0x7200000, 0x6000000, 0x6400000, 0xfa00000, 0x7400000, 0x6000000, 0x6000000, 0x6000000, + 0x400000, 0x000000, 0x4400000, 0x400000, 0x400000, 0x000000, 0x000000, 0x4000000, + 0x4000000, 0xfa00000, 0x4400000, 0x4000000, 0x6000000, 0x7400000, 0xfa00000, 0xfa00000, + 0x7400000, 0x6000000, 0x6000000, 0x6000000, 0x7400000, 0x7000000, 0x000000, 0x6000000, + 0x6000000, 0x6000000, 0x000000, 0xea00000, 0x7400000, 0x7400000, 0x7200000, 0x6000000, + 0x000000, 0xfa00000, 0x1000000, 0x4000000, 0x400000, 0x6400000, 0x400000, 0x6000000, + 0x4000000, 0x6000000, 0x6400000, 0x6000000, 0x6000000, 0x6000000, 0xea00000, 0x7400000, + 0x7200000, 0x6000000, 0x7400000, 0x6000000, 0x000000, 0xfa00000, 0x000000, 0x7400000, + 0x6000000, 0x1000000, 0x7400000, 0x6000000, 0xfa00000, 0xea00000, 0x400000, 0x4400000, + 0xfa00000, 0x6400000, 0x6000000, 0xfa00000, 0x6000000, 0x7400000, 0x6200000, 0x6000000, + 0x000000, 0x4200000, 0x6000000, 0xfa00000, 0xea00000, 0x7200000, 0x4400000, 0xfa00000, + 0x000000, 0x000000, 0x6000000, 0x4400000, 0x6000000, 0x4000000, 0x000000, 0x6200000, + 0x000000, 0x6400000, 0x6000000, 0x4000000, 0x6000000, 0x7200000, 0x6000000, 0x6000000, + 0x6000000, 0x400000, 0x400000, 0x6000000, 0x6000000, 0x6400000, 0x000000, 0xfa00000, + 0x6000000, 0x6400000, 0x6200000, 0xfa00000, 0xfa00000, 0x4000000, 0x6400000, 0x400000, + 0x6400000, 0x000000, 0xfa00000, 0xfa00000, 0x400000, 0xfa00000, 0x4400000, 0x7200000, + 0x6000000, 0xfa00000, 0x400000, 0x1000000, 0x7400000, 0xfa00000, 0xfa00000, 0xea00000, + 0x6400000, 0x6400000, 0x6000000, 0xfa00000, 0x4400000, 0x000000, 0x1000000, 0x6000000, + 0x7400000, 0x6000000, 0x6000000, 0x6400000, 0x6200000, 0x7000000, 0x5000000, 0x1000000 +}; + +static const unsigned long unicode_backtrans_78[] = { + 0x1000000, 0x1000000, 0xfa00000, 0x6000000, 0x000000, 0x6400000, 0x6400000, 0x000000, + 0x4000000, 0x7400000, 0x000000, 0x000000, 0x7200000, 0x7400000, 0x6400000, 0x6000000, + 0x6000000, 0x7400000, 0xfa00000, 0x6000000, 0x7200000, 0x200000, 0x1000000, 0x1000000, + 0x5000000, 0x000000, 0x1000000, 0x000000, 0x5000000, 0x7400000, 0x4000000, 0x7000000, + 0x6200000, 0x6400000, 0x6400000, 0x7400000, 0x000000, 0xfa00000, 0xfa00000, 0xfa00000, + 0x6000000, 0x7000000, 0x6000000, 0x6000000, 0xf800000, 0x7400000, 0x6400000, 0x6000000, + 0x7400000, 0x6000000, 0xea00000, 0x6000000, 0xfa00000, 0x6400000, 0x000000, 0x7400000, + 0x7000000, 0x5000000, 0x1200000, 0x1000000, 0x5000000, 0x4000000, 0x1000000, 0x200000, + 0x1000000, 0x000000, 0x4000000, 0x6400000, 0x4400000, 0xfa00000, 0x000000, 0x5400000, + 0x6400000, 0x6000000, 0x6000000, 0x4000000, 0x7400000, 0x6000000, 0x7400000, 0x8800000, + 0x7000000, 0x4000000, 0x7400000, 0x4000000, 0x4000000, 0x1000000, 0x1000000, 0x1000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x6400000, 0xfa00000, 0x6400000, 0x000000, + 0x6400000, 0x400000, 0x6000000, 0x400000, 0x6400000, 0x6000000, 0x4000000, 0x000000, + 0x6400000, 0x6000000, 0x7400000, 0xfa00000, 0xfa00000, 0x7000000, 0x7400000, 0xea00000, + 0x6000000, 0x6000000, 0x200000, 0x000000, 0x200000, 0x000000, 0x000000, 0x1000000, + 0x000000, 0x6000000, 0x4400000, 0x6000000, 0xfa00000, 0x000000, 0x6400000, 0x6000000, + 0x6000000, 0xca00000, 0x000000, 0x6000000, 0x6000000, 0x6000000, 0x6200000, 0xfa00000, + 0x4000000, 0x7000000, 0x400000, 0x000000, 0xfa00000, 0xda00000, 0xfa00000, 0x6400000, + 0x000000, 0xfa00000, 0x000000, 0x7200000, 0x6400000, 0x6200000, 0x6000000, 0xfa00000, + 0x7400000, 0x6000000, 0x7200000, 0x1000000, 0x1000000, 0x400000, 0x6400000, 0x7400000, + 0x6000000, 0x7400000, 0x6000000, 0xfa00000, 0x6400000, 0x7000000, 0x000000, 0xfa00000, + 0x6400000, 0xea00000, 0x6200000, 0x6000000, 0x6400000, 0x6400000, 0x000000, 0x4200000, + 0x7400000, 0x5400000, 0x7400000, 0x7400000, 0x7000000, 0x200000, 0x4000000, 0x000000, + 0x4000000, 0x5000000, 0xea00000, 0xec00000, 0xea00000, 0x400000, 0x7200000, 0x400000, + 0x000000, 0xfa00000, 0x000000, 0x6000000, 0x6000000, 0xfa00000, 0x200000, 0x4400000, + 0x6400000, 0x7400000, 0xfa00000, 0xfa00000, 0x6400000, 0x6000000, 0xec00000, 0x6000000, + 0xfa00000, 0x6200000, 0x4400000, 0x4400000, 0x7200000, 0x7400000, 0x400000, 0x4000000, + 0x4000000, 0x1000000, 0x6200000, 0x6400000, 0x000000, 0x6000000, 0x6000000, 0x6400000, + 0x6400000, 0x6400000, 0x6000000, 0x6000000, 0x4400000, 0x6000000, 0x400000, 0x6200000, + 0xfa00000, 0x6000000, 0x6400000, 0x000000, 0xfa00000, 0x6000000, 0x4000000, 0xea00000, + 0x4000000, 0x4000000, 0x7400000, 0x6400000, 0x7200000, 0xc800000, 0x400000, 0x7400000, + 0x000000, 0x6000000, 0x7400000, 0xec00000, 0x6000000, 0x6200000, 0x6000000, 0x6400000 +}; + +static const unsigned long unicode_backtrans_79[] = { + 0x400000, 0xfa00000, 0x6000000, 0x000000, 0x6000000, 0x7000000, 0x4400000, 0x200000, + 0x000000, 0x6000000, 0x000000, 0x000000, 0x6400000, 0x000000, 0xea00000, 0x000000, + 0x6400000, 0x6200000, 0x6200000, 0x7000000, 0x6000000, 0x000000, 0x8800000, 0x6000000, + 0x000000, 0x6200000, 0x400000, 0x6000000, 0x6400000, 0x6000000, 0x7400000, 0x400000, + 0x400000, 0x6000000, 0x000000, 0x6000000, 0x7000000, 0x6400000, 0x6200000, 0x6400000, + 0x6000000, 0x6400000, 0xea00000, 0xea00000, 0xea00000, 0x6400000, 0x4000000, 0x6000000, + 0x000000, 0x6400000, 0x4000000, 0x4000000, 0x5400000, 0x6400000, 0x4000000, 0x000000, + 0x6000000, 0x6000000, 0xfa00000, 0x5400000, 0x5200000, 0x6400000, 0xfa00000, 0x6400000, + 0xfa00000, 0xfa00000, 0x6000000, 0x000000, 0x6400000, 0x6400000, 0x7400000, 0xea00000, + 0xfa00000, 0xfa00000, 0x6400000, 0x6400000, 0x6000000, 0x000000, 0x000000, 0x6400000, + 0xea00000, 0x6400000, 0x6000000, 0x7200000, 0x6400000, 0x6200000, 0xfa00000, 0xfa00000, + 0x4400000, 0x4000000, 0xfa00000, 0xfc00000, 0xfc00000, 0xfa00000, 0xfa00000, 0x7200000, + 0xfa00000, 0x6000000, 0x5200000, 0x6000000, 0x6000000, 0xfa00000, 0x000000, 0x7400000, + 0xfa00000, 0x6400000, 0x6000000, 0x6400000, 0x000000, 0xfa00000, 0x000000, 0x1000000, + 0x6000000, 0x4000000, 0x6400000, 0x6000000, 0x6000000, 0x000000, 0x000000, 0x1200000, + 0x1000000, 0x6400000, 0xfa00000, 0x400000, 0x6400000, 0x6000000, 0x4400000, 0xea00000, + 0x5200000, 0xfa00000, 0x6000000, 0x4000000, 0x1200000, 0x1200000, 0x4000000, 0x4000000, + 0x6000000, 0x000000, 0x7200000, 0x6400000, 0x400000, 0xea00000, 0xea00000, 0xfa00000, + 0x6000000, 0xcc00000, 0x6000000, 0x6400000, 0x6400000, 0x6400000, 0x6400000, 0x6000000, + 0x6400000, 0x4000000, 0x7000000, 0x6400000, 0x6400000, 0x4200000, 0x000000, 0x4000000, + 0x6000000, 0x6400000, 0x6000000, 0x000000, 0x6000000, 0x4000000, 0xea00000, 0xfa00000, + 0x6400000, 0x4400000, 0xea00000, 0x6400000, 0x6000000, 0x6000000, 0xea00000, 0x400000, + 0x6200000, 0xec00000, 0x6000000, 0xfa00000, 0x6400000, 0x000000, 0x6000000, 0x6000000, + 0x6400000, 0xfa00000, 0x7200000, 0x7400000, 0x000000, 0xfa00000, 0xfa00000, 0xea00000, + 0xfa00000, 0xfa00000, 0x400000, 0x1000000, 0x4400000, 0x6000000, 0x5000000, 0x400000, + 0x6400000, 0xfa00000, 0x8c00000, 0xfa00000, 0x4000000, 0x7000000, 0x6000000, 0x6400000, + 0x000000, 0xfa00000, 0xfa00000, 0x000000, 0x4400000, 0xfa00000, 0x6400000, 0x000000, + 0xfa00000, 0x000000, 0x400000, 0x000000, 0x6000000, 0x6400000, 0x6400000, 0xfa00000, + 0x6400000, 0x200000, 0x4400000, 0x7200000, 0xfa00000, 0x400000, 0xfa00000, 0xfa00000, + 0x000000, 0xfa00000, 0x6400000, 0x7400000, 0x6200000, 0x7400000, 0x6000000, 0x1000000, + 0x1200000, 0x4400000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x6000000, 0x6000000, + 0x7400000, 0x000000, 0x6000000, 0xfa00000, 0x400000, 0x1000000, 0x000000, 0x000000 +}; + +static const unsigned long unicode_backtrans_7a[] = { + 0xfa00000, 0x000000, 0x7400000, 0x7400000, 0x6000000, 0xe800000, 0x5000000, 0x400000, + 0xea00000, 0x400000, 0x6400000, 0xfa00000, 0x6400000, 0xfa00000, 0x1200000, 0x000000, + 0x6000000, 0x6400000, 0x6000000, 0x6000000, 0xfa00000, 0x6400000, 0x000000, 0xfa00000, + 0x6200000, 0xea00000, 0xfa00000, 0x6400000, 0xea00000, 0x000000, 0x7400000, 0xea00000, + 0xfa00000, 0x400000, 0x6000000, 0x1000000, 0x000000, 0x000000, 0x6000000, 0x400000, + 0x6000000, 0x000000, 0x4000000, 0x6400000, 0x000000, 0x4400000, 0xea00000, 0x6400000, + 0x6400000, 0xea00000, 0x200000, 0x1000000, 0x400000, 0x400000, 0x8800000, 0xfa00000, + 0x400000, 0x7400000, 0x4400000, 0xfa00000, 0xfa00000, 0xfa00000, 0x4200000, 0xfa00000, + 0xea00000, 0x000000, 0x200000, 0x4200000, 0x6400000, 0x4400000, 0xfa00000, 0x6400000, + 0x6400000, 0xca00000, 0x6000000, 0x6000000, 0x6400000, 0xea00000, 0xea00000, 0x200000, + 0x200000, 0x1000000, 0x000000, 0x000000, 0x6000000, 0x400000, 0x6400000, 0xfa00000, + 0x6000000, 0x400000, 0x6000000, 0x6000000, 0x6400000, 0x400000, 0x000000, 0x6400000, + 0x6400000, 0xea00000, 0xea00000, 0x200000, 0x000000, 0x4400000, 0x000000, 0x6400000, + 0x6000000, 0xea00000, 0x400000, 0xea00000, 0x6000000, 0x6400000, 0x6000000, 0x000000, + 0xfa00000, 0x6000000, 0x000000, 0x000000, 0xfa00000, 0x6400000, 0xfa00000, 0x1000000, + 0x7400000, 0xfa00000, 0xfa00000, 0x6000000, 0x000000, 0xca00000, 0x6400000, 0xfa00000, + 0x7400000, 0xfa00000, 0x400000, 0x5200000, 0xfa00000, 0x6400000, 0x7400000, 0x6000000, + 0xfa00000, 0x6000000, 0x6400000, 0x6400000, 0x6000000, 0x1000000, 0x000000, 0x6000000, + 0x6400000, 0x5400000, 0xfa00000, 0xca00000, 0x6400000, 0xfa00000, 0x7200000, 0x7200000, + 0xfa00000, 0x6000000, 0x000000, 0x000000, 0x1000000, 0x1000000, 0x6400000, 0xfa00000, + 0x7400000, 0x000000, 0x6000000, 0x6400000, 0x000000, 0x1000000, 0x1000000, 0x000000, + 0x7000000, 0xea00000, 0xea00000, 0x6000000, 0x7400000, 0x1000000, 0xea00000, 0xea00000, + 0x4200000, 0x6000000, 0x6000000, 0x7400000, 0x6000000, 0x6400000, 0x6200000, 0x6000000, + 0x6000000, 0x400000, 0xea00000, 0x4400000, 0x4400000, 0x000000, 0x6000000, 0x7200000, + 0x6000000, 0x6000000, 0x4000000, 0x4200000, 0xea00000, 0xea00000, 0x400000, 0xea00000, + 0x4200000, 0x4400000, 0xea00000, 0xfa00000, 0x400000, 0x200000, 0x400000, 0x4200000, + 0x000000, 0x6400000, 0x200000, 0x4200000, 0x000000, 0x200000, 0x1000000, 0x8800000, + 0x6000000, 0xfa00000, 0x4200000, 0x4400000, 0x4200000, 0xca00000, 0x1000000, 0xfa00000, + 0xfa00000, 0x200000, 0x4200000, 0xfa00000, 0x6000000, 0xfa00000, 0x7200000, 0x4000000, + 0x400000, 0x4400000, 0xca00000, 0x6400000, 0x400000, 0xfa00000, 0x6000000, 0xfa00000, + 0x200000, 0x400000, 0x000000, 0x000000, 0x400000, 0x000000, 0xea00000, 0x6000000, + 0x200000, 0xfa00000, 0xfa00000, 0x6400000, 0x000000, 0x7400000, 0x4400000, 0xfa00000 +}; + +static const unsigned long unicode_backtrans_7b[] = { + 0x6000000, 0x6000000, 0x200000, 0x1000000, 0x7200000, 0x6000000, 0x7200000, 0x400000, + 0x7200000, 0x6000000, 0x7200000, 0x5200000, 0x4000000, 0x000000, 0x6000000, 0xfa00000, + 0x6000000, 0xfa00000, 0x6000000, 0x6000000, 0x5400000, 0x1000000, 0x000000, 0x000000, + 0x6200000, 0xfa00000, 0x6000000, 0xfa00000, 0x000000, 0x6000000, 0xfa00000, 0x4400000, + 0xfa00000, 0x000000, 0x6000000, 0x6400000, 0x7000000, 0x7200000, 0xfa00000, 0x4400000, + 0x7200000, 0x4400000, 0x7400000, 0x7400000, 0xfa00000, 0xec00000, 0x7400000, 0x6400000, + 0x6400000, 0x7400000, 0x6000000, 0x7200000, 0x6400000, 0x6200000, 0x200000, 0x000000, + 0x7000000, 0xca00000, 0x1000000, 0x6000000, 0x1000000, 0x400000, 0x1000000, 0x400000, + 0x6400000, 0x400000, 0x4000000, 0x4000000, 0x6000000, 0x7200000, 0xea00000, 0x7400000, + 0x6200000, 0xfa00000, 0x6000000, 0xfa00000, 0xfa00000, 0xea00000, 0x6400000, 0xfa00000, + 0xfa00000, 0xfa00000, 0xfa00000, 0x000000, 0xfa00000, 0x4400000, 0xfa00000, 0x000000, + 0x7000000, 0x000000, 0x1000000, 0x1000000, 0x000000, 0x1200000, 0x000000, 0x000000, + 0xfc00000, 0x6000000, 0x5000000, 0x6000000, 0x6400000, 0x6200000, 0x6400000, 0x6200000, + 0x000000, 0x6400000, 0x400000, 0x000000, 0xca00000, 0x6400000, 0xfa00000, 0x4400000, + 0x6200000, 0x7200000, 0x7400000, 0x6400000, 0x6200000, 0xfa00000, 0x6000000, 0x7400000, + 0x6000000, 0x1000000, 0x200000, 0x5000000, 0x000000, 0x8800000, 0x1000000, 0x000000, + 0x1000000, 0x000000, 0x6000000, 0x000000, 0x6400000, 0x7000000, 0x200000, 0xea00000, + 0x6000000, 0x400000, 0x6000000, 0xea00000, 0x6000000, 0x7200000, 0x6400000, 0xea00000, + 0x7400000, 0x6400000, 0x4200000, 0x000000, 0xfa00000, 0xfa00000, 0x6400000, 0xfa00000, + 0x6200000, 0x6200000, 0x8a00000, 0x6400000, 0x7200000, 0xfa00000, 0x400000, 0x200000, + 0x6400000, 0xfa00000, 0x5000000, 0x4000000, 0x6000000, 0x400000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x1200000, 0x1000000, 0x7400000, 0xfa00000, 0x000000, 0x6400000, + 0x400000, 0xfa00000, 0x4400000, 0x000000, 0xfa00000, 0x6400000, 0x400000, 0x6000000, + 0xfa00000, 0x6000000, 0x400000, 0x400000, 0x400000, 0x400000, 0x6000000, 0x000000, + 0xea00000, 0xfa00000, 0x400000, 0x000000, 0xea00000, 0x400000, 0xfa00000, 0xfa00000, + 0x400000, 0xea00000, 0x6400000, 0x6200000, 0x7200000, 0x000000, 0x6000000, 0x4200000, + 0x4000000, 0x1000000, 0x8800000, 0x1000000, 0x6400000, 0x6000000, 0x400000, 0x400000, + 0x6000000, 0x7400000, 0x7400000, 0x6400000, 0x6000000, 0x7200000, 0x6000000, 0x6000000, + 0xea00000, 0x7000000, 0x6000000, 0x6000000, 0xea00000, 0x7200000, 0x7200000, 0x6000000, + 0x6400000, 0xea00000, 0x7400000, 0x6000000, 0x4000000, 0x200000, 0x1000000, 0x000000, + 0x6000000, 0x7000000, 0x6400000, 0x6200000, 0x6400000, 0x400000, 0x200000, 0x7200000, + 0x6400000, 0x6400000, 0x4400000, 0x6000000, 0x5400000, 0x6000000, 0x7400000, 0x6000000 +}; + +static const unsigned long unicode_backtrans_7c[] = { + 0x6200000, 0x6400000, 0x6400000, 0x6400000, 0x400000, 0x6000000, 0x6400000, 0xfa00000, + 0x000000, 0x6400000, 0x6000000, 0x7400000, 0x7400000, 0x6200000, 0x6400000, 0x7400000, + 0x6000000, 0x6200000, 0xca00000, 0x200000, 0x200000, 0x4000000, 0x1000000, 0x200000, + 0x000000, 0x6400000, 0x000000, 0x4400000, 0x6000000, 0x6000000, 0xe800000, 0x7200000, + 0x6400000, 0xea00000, 0x6000000, 0x6200000, 0x000000, 0x6400000, 0x7400000, 0xfa00000, + 0x6400000, 0x6000000, 0xfa00000, 0xea00000, 0x6400000, 0x6000000, 0x000000, 0x000000, + 0x6000000, 0x400000, 0x000000, 0x6400000, 0x400000, 0x4000000, 0x400000, 0x6200000, + 0x7200000, 0x6400000, 0x400000, 0x6000000, 0x6000000, 0xea00000, 0xea00000, 0xfa00000, + 0x7200000, 0x1000000, 0x4000000, 0xea00000, 0x4000000, 0x6000000, 0x400000, 0x6000000, + 0x6000000, 0x6000000, 0x6400000, 0x000000, 0xea00000, 0xfa00000, 0x000000, 0x200000, + 0x6200000, 0x4400000, 0x400000, 0x6400000, 0x6200000, 0x400000, 0x4200000, 0x6000000, + 0x200000, 0x6400000, 0x6400000, 0x6400000, 0x6400000, 0x4400000, 0x400000, 0x6200000, + 0xea00000, 0x400000, 0x000000, 0x6400000, 0xea00000, 0x6200000, 0x6000000, 0x6400000, + 0x000000, 0x6400000, 0x6000000, 0x6000000, 0xea00000, 0x4400000, 0x6400000, 0x6000000, + 0x4400000, 0x000000, 0x6400000, 0xfa00000, 0x5000000, 0x6200000, 0x000000, 0x000000, + 0x6000000, 0x6400000, 0x6000000, 0x5000000, 0x5400000, 0x7400000, 0x4200000, 0x6000000, + 0x6000000, 0x6200000, 0x200000, 0xca00000, 0x6000000, 0x6000000, 0x4400000, 0x400000, + 0x6000000, 0xfa00000, 0x6000000, 0x200000, 0x6000000, 0x6200000, 0x4000000, 0x400000, + 0x200000, 0x7000000, 0xfa00000, 0x000000, 0x6400000, 0xfa00000, 0x6000000, 0xfa00000, + 0xfa00000, 0x000000, 0x000000, 0x200000, 0x5000000, 0x1000000, 0x7400000, 0xfa00000, + 0x400000, 0x6200000, 0x7200000, 0x6000000, 0x1200000, 0xfa00000, 0x4400000, 0xca00000, + 0x6200000, 0x000000, 0x1000000, 0x200000, 0x4000000, 0x200000, 0xda00000, 0x6000000, + 0x400000, 0xfa00000, 0xfa00000, 0xfa00000, 0x6000000, 0x6000000, 0x400000, 0x400000, + 0x4000000, 0xfa00000, 0x6400000, 0x6400000, 0x7400000, 0x7200000, 0xfa00000, 0x6400000, + 0x200000, 0x1000000, 0x4200000, 0x4000000, 0x400000, 0x7200000, 0x000000, 0x5400000, + 0x7400000, 0x4400000, 0xfa00000, 0x6000000, 0x7000000, 0x5400000, 0x6200000, 0x400000, + 0x6000000, 0x6000000, 0x6200000, 0x4400000, 0x6400000, 0x7400000, 0xfa00000, 0x7400000, + 0x200000, 0x7400000, 0x4400000, 0x000000, 0x7200000, 0x6400000, 0xea00000, 0xfa00000, + 0xfa00000, 0x000000, 0x6200000, 0x000000, 0x000000, 0x000000, 0x4400000, 0xea00000, + 0x7000000, 0x400000, 0x6000000, 0x400000, 0x6000000, 0x4000000, 0x6000000, 0x7200000, + 0x6000000, 0x6000000, 0x6200000, 0x4000000, 0x6200000, 0x4400000, 0x6200000, 0x6000000, + 0x7200000, 0x4000000, 0x200000, 0xfa00000, 0x4000000, 0x6000000, 0xea00000, 0x000000 +}; + +static const unsigned long unicode_backtrans_7d[] = { + 0xea00000, 0x6000000, 0xea00000, 0x6400000, 0xea00000, 0xea00000, 0xea00000, 0xec00000, + 0xec00000, 0x6400000, 0xfa00000, 0xea00000, 0x6000000, 0xea00000, 0x6000000, 0x6400000, + 0xea00000, 0x6400000, 0x6400000, 0x6400000, 0xea00000, 0x6200000, 0x6400000, 0xea00000, + 0xea00000, 0xea00000, 0xea00000, 0xea00000, 0x6200000, 0x6400000, 0x6400000, 0x6000000, + 0xfa00000, 0xea00000, 0xfa00000, 0x400000, 0x000000, 0x4000000, 0x400000, 0x1000000, + 0x6000000, 0x6000000, 0x400000, 0xfa00000, 0xea00000, 0x400000, 0xea00000, 0xfa00000, + 0xea00000, 0x6400000, 0x6200000, 0xea00000, 0x000000, 0xea00000, 0x6000000, 0x000000, + 0x6000000, 0xea00000, 0xea00000, 0x6000000, 0x6400000, 0x6400000, 0x6400000, 0x6200000, + 0x6400000, 0x6400000, 0xea00000, 0xea00000, 0xea00000, 0xea00000, 0xea00000, 0x6400000, + 0x400000, 0x000000, 0x6000000, 0x200000, 0x200000, 0x4400000, 0x6200000, 0x6200000, + 0xea00000, 0x6400000, 0x6000000, 0x6400000, 0x6000000, 0x6000000, 0x6200000, 0x400000, + 0x6000000, 0x400000, 0x4400000, 0x6200000, 0x6400000, 0x4400000, 0xea00000, 0x6000000, + 0x000000, 0xea00000, 0xea00000, 0x6200000, 0x000000, 0x400000, 0xea00000, 0x6400000, + 0xea00000, 0x6000000, 0xec00000, 0x6000000, 0x000000, 0x6000000, 0xfa00000, 0x6000000, + 0x6400000, 0xea00000, 0xea00000, 0xea00000, 0x000000, 0x200000, 0x8a00000, 0x1000000, + 0x400000, 0xea00000, 0x6400000, 0x6400000, 0x6000000, 0x6200000, 0x000000, 0xec00000, + 0x6000000, 0x6400000, 0x400000, 0x6400000, 0x6000000, 0x6400000, 0x6400000, 0x000000, + 0x6400000, 0x4200000, 0x000000, 0x4400000, 0x6400000, 0x6400000, 0xe800000, 0xea00000, + 0x000000, 0x6400000, 0x6000000, 0xea00000, 0x6000000, 0x000000, 0x6400000, 0x4400000, + 0x000000, 0x200000, 0x200000, 0x200000, 0xea00000, 0x6400000, 0x6400000, 0x6200000, + 0xe800000, 0x6000000, 0xea00000, 0x6200000, 0x4000000, 0x000000, 0x7400000, 0x6400000, + 0x4000000, 0x6000000, 0x6400000, 0x4200000, 0xea00000, 0xea00000, 0x7200000, 0x6200000, + 0x6200000, 0xea00000, 0xea00000, 0x4400000, 0xea00000, 0xea00000, 0x400000, 0x6400000, + 0xea00000, 0x6400000, 0xea00000, 0xea00000, 0x6000000, 0xea00000, 0xea00000, 0xea00000, + 0x6000000, 0x6000000, 0x6400000, 0x400000, 0x6400000, 0x6400000, 0x6400000, 0xea00000, + 0x000000, 0x6000000, 0xea00000, 0xea00000, 0x6400000, 0x4400000, 0x6400000, 0x4200000, + 0x4000000, 0x200000, 0x6200000, 0x4000000, 0x4000000, 0x200000, 0x8800000, 0x6400000, + 0xea00000, 0x6400000, 0xea00000, 0x6000000, 0x4200000, 0xea00000, 0xea00000, 0x6000000, + 0xea00000, 0xea00000, 0x400000, 0xe800000, 0x4200000, 0x4400000, 0x6400000, 0x6000000, + 0xea00000, 0xea00000, 0x6400000, 0x400000, 0xea00000, 0x400000, 0x6000000, 0xea00000, + 0x6000000, 0x6400000, 0x6200000, 0x6000000, 0xea00000, 0x4400000, 0x6400000, 0x6000000, + 0x000000, 0x6400000, 0x6400000, 0xea00000, 0x000000, 0x4000000, 0x4000000, 0x000000 +}; + +static const unsigned long unicode_backtrans_7e[] = { + 0x400000, 0x200000, 0x000000, 0x6000000, 0x200000, 0x200000, 0x000000, 0x4000000, + 0x6400000, 0xea00000, 0xea00000, 0x6200000, 0x6000000, 0x6000000, 0x6000000, 0x6000000, + 0x6400000, 0x6400000, 0x6200000, 0x6000000, 0x6000000, 0xec00000, 0x6000000, 0x6400000, + 0x000000, 0x000000, 0x6000000, 0xea00000, 0x6400000, 0xec00000, 0xea00000, 0xea00000, + 0x6400000, 0xea00000, 0x6200000, 0xea00000, 0x6000000, 0x6000000, 0x200000, 0x4400000, + 0x400000, 0x6000000, 0x6000000, 0xea00000, 0x400000, 0x6400000, 0xea00000, 0xec00000, + 0x6000000, 0xea00000, 0x6200000, 0x6400000, 0x6000000, 0x6200000, 0x6400000, 0xea00000, + 0x6000000, 0x6200000, 0x6200000, 0x7200000, 0x6000000, 0xea00000, 0xea00000, 0x6400000, + 0x6000000, 0xfa00000, 0x6000000, 0xea00000, 0x6400000, 0x6400000, 0xea00000, 0xfc00000, + 0x6000000, 0x6000000, 0x200000, 0x200000, 0x6000000, 0x200000, 0x400000, 0x000000, + 0x6400000, 0x6000000, 0xec00000, 0x6000000, 0xea00000, 0xea00000, 0x6200000, 0x6000000, + 0x6400000, 0x6200000, 0x6200000, 0x4000000, 0x6000000, 0x200000, 0xea00000, 0x6400000, + 0x6000000, 0xec00000, 0x6400000, 0x6000000, 0x000000, 0x4400000, 0x200000, 0x4200000, + 0x6000000, 0xea00000, 0xea00000, 0xec00000, 0x4000000, 0xea00000, 0x4400000, 0x6400000, + 0xea00000, 0x000000, 0x6000000, 0x6400000, 0x6000000, 0x6000000, 0x6000000, 0x6000000, + 0x6400000, 0xea00000, 0x6000000, 0x6200000, 0xea00000, 0x6200000, 0x6400000, 0x4200000, + 0x6000000, 0x6400000, 0xfa00000, 0x200000, 0x000000, 0x000000, 0x6400000, 0x4400000, + 0x6200000, 0x200000, 0x6400000, 0x6000000, 0xea00000, 0x6400000, 0x4200000, 0xea00000, + 0x200000, 0x6400000, 0x4200000, 0xea00000, 0x6200000, 0x6400000, 0xea00000, 0x6000000, + 0xec00000, 0x6000000, 0x6400000, 0xfa00000, 0xea00000, 0x400000, 0x400000, 0x5000000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x5000000, 0x1000000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x5000000, 0x1000000, 0x000000, 0x1000000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x000000, 0x1000000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x5000000, 0x000000, 0x000000, 0x1000000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x5000000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x5000000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x000000, 0x1000000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x5000000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x000000, 0x1000000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x000000, 0x1000000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, + 0x1000000, 0x000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000 +}; + +static const unsigned long unicode_backtrans_7f[] = { + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x5000000, 0x1000000, + 0x1000000, 0x1000000, 0x000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, + 0x000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x000000, 0x1000000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0xfa00000, 0x4000000, + 0xfa00000, 0x6000000, 0xfa00000, 0x400000, 0x400000, 0x6400000, 0x6400000, 0x6400000, + 0x4000000, 0x4000000, 0x1000000, 0x6400000, 0x7400000, 0x7200000, 0x000000, 0x4400000, + 0x6000000, 0x4000000, 0x6000000, 0x6000000, 0xea00000, 0x6200000, 0x4200000, 0x6400000, + 0xfa00000, 0x7200000, 0x4400000, 0x4400000, 0xfa00000, 0xfa00000, 0x000000, 0x1000000, + 0x7200000, 0x000000, 0x1000000, 0x6400000, 0x6400000, 0x6400000, 0x6000000, 0x7200000, + 0x6200000, 0x7400000, 0x1000000, 0x6400000, 0x400000, 0x6400000, 0x6400000, 0x6200000, + 0x7200000, 0x7200000, 0xfa00000, 0xea00000, 0x6000000, 0x6400000, 0xfa00000, 0x000000, + 0xea00000, 0x5400000, 0xfa00000, 0x6000000, 0x1000000, 0xea00000, 0x6000000, 0xea00000, + 0x4200000, 0xfa00000, 0x6000000, 0x6000000, 0x6000000, 0x6400000, 0x7400000, 0x6400000, + 0x400000, 0x1000000, 0x200000, 0x6200000, 0x000000, 0xea00000, 0x6200000, 0x6200000, + 0xea00000, 0x6000000, 0xfa00000, 0x6400000, 0xfa00000, 0x6400000, 0xfa00000, 0x4400000, + 0x400000, 0x6400000, 0x6000000, 0x4000000, 0xfa00000, 0x6000000, 0x6400000, 0x4400000, + 0x000000, 0x000000, 0xfa00000, 0x6000000, 0x6400000, 0x7200000, 0xfa00000, 0x1000000, + 0x6000000, 0x7400000, 0x6400000, 0x4200000, 0xfa00000, 0x6000000, 0x6400000, 0x7000000, + 0xea00000, 0xea00000, 0x400000, 0x000000, 0x6000000, 0x6400000, 0x4200000, 0x7200000, + 0x7000000, 0x6000000, 0xfa00000, 0x6000000, 0x4400000, 0x6000000, 0x6200000, 0x6000000, + 0xfa00000, 0xfa00000, 0x6000000, 0x6000000, 0x7400000, 0xfa00000, 0x6000000, 0x7400000, + 0x6400000, 0xfa00000, 0x6000000, 0x6400000, 0x000000, 0xfa00000, 0x200000, 0x6000000, + 0x400000, 0x6000000, 0xfa00000, 0x6000000, 0xfa00000, 0x6000000, 0xfc00000, 0x6400000, + 0x6000000, 0x6000000, 0xea00000, 0x000000, 0xfa00000, 0xfa00000, 0x000000, 0x6000000, + 0x1000000, 0x000000, 0x000000, 0x6400000, 0x6000000, 0x4000000, 0x6000000, 0xfc00000, + 0xfa00000, 0xfa00000, 0x6000000, 0x6400000, 0x000000, 0x7400000, 0x7200000, 0x4000000, + 0x6400000, 0xfa00000, 0x6000000, 0xea00000, 0x6400000, 0x6000000, 0x7400000, 0x6400000, + 0xfa00000, 0x7000000, 0x6400000, 0x7200000, 0x6000000, 0x6000000, 0x000000, 0x6000000, + 0x6000000, 0xea00000, 0x4400000, 0x7200000, 0xfa00000, 0x6400000, 0x6400000, 0x6400000 +}; + +static const unsigned long unicode_backtrans_80[] = { + 0xfa00000, 0xfa00000, 0x4000000, 0xfa00000, 0x7200000, 0xfa00000, 0xfa00000, 0x6400000, + 0x4400000, 0x8800000, 0x400000, 0x7200000, 0xfa00000, 0x7400000, 0x6400000, 0x6400000, + 0xfa00000, 0x6400000, 0x7200000, 0x400000, 0x7400000, 0xfa00000, 0x7400000, 0xfa00000, + 0xfa00000, 0x7200000, 0x000000, 0x6000000, 0x7200000, 0x4400000, 0x6400000, 0x6400000, + 0x5400000, 0x6200000, 0x1000000, 0x000000, 0x6400000, 0x5000000, 0x7400000, 0x1000000, + 0x7200000, 0x7000000, 0x7000000, 0x000000, 0x6400000, 0x8800000, 0x4400000, 0x4000000, + 0x6400000, 0x5000000, 0x000000, 0xfa00000, 0x6400000, 0x7400000, 0xfa00000, 0x7400000, + 0x1000000, 0x6400000, 0x400000, 0x5200000, 0x4400000, 0xfa00000, 0x6400000, 0xfa00000, + 0x400000, 0x000000, 0x1000000, 0xf800000, 0x400000, 0x000000, 0xfa00000, 0x6000000, + 0x6000000, 0x000000, 0xfa00000, 0x1000000, 0x1000000, 0x1000000, 0x000000, 0x6000000, + 0x6000000, 0x6000000, 0x7200000, 0x000000, 0x5000000, 0x000000, 0xea00000, 0x000000, + 0xfa00000, 0x000000, 0xfa00000, 0x4000000, 0x6000000, 0x6000000, 0xea00000, 0x200000, + 0x400000, 0x4200000, 0x4200000, 0x4000000, 0x6400000, 0x000000, 0x4400000, 0x6000000, + 0x200000, 0x1000000, 0x1000000, 0x000000, 0x6000000, 0x400000, 0x000000, 0xea00000, + 0xea00000, 0x7400000, 0xea00000, 0xea00000, 0x200000, 0x6400000, 0x6200000, 0xea00000, + 0x6000000, 0x6200000, 0x000000, 0x000000, 0x000000, 0xea00000, 0xea00000, 0xfa00000, + 0x5000000, 0x400000, 0x6000000, 0x1000000, 0xfa00000, 0xea00000, 0xfa00000, 0xfa00000, + 0x400000, 0xfa00000, 0x6000000, 0xfa00000, 0xfa00000, 0x000000, 0x400000, 0x6000000, + 0x6000000, 0x000000, 0x6000000, 0x7200000, 0x000000, 0x6000000, 0xfa00000, 0x000000, + 0x7200000, 0x6000000, 0x7200000, 0xfa00000, 0x7400000, 0xfa00000, 0x400000, 0x5000000, + 0x1000000, 0xfa00000, 0xfa00000, 0x6000000, 0x1000000, 0xfa00000, 0x400000, 0x4400000, + 0x000000, 0xfa00000, 0xfa00000, 0x7400000, 0x200000, 0x7200000, 0x7000000, 0xfa00000, + 0x000000, 0xfa00000, 0xfa00000, 0x000000, 0xfa00000, 0x6000000, 0x4000000, 0x5000000, + 0x6400000, 0x400000, 0xfa00000, 0x000000, 0x5000000, 0x5000000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x7000000, 0xfa00000, 0xfa00000, 0x6000000, 0x5200000, 0x6000000, + 0x6400000, 0x6000000, 0x6000000, 0x000000, 0xfa00000, 0x7400000, 0xfa00000, 0x6400000, + 0x6000000, 0x6000000, 0x400000, 0x000000, 0x6400000, 0x6400000, 0x7200000, 0x7400000, + 0x6400000, 0x7200000, 0xfa00000, 0xfa00000, 0x7000000, 0x7200000, 0xfa00000, 0x000000, + 0x6400000, 0xfa00000, 0x000000, 0x6000000, 0xfa00000, 0xfa00000, 0x6000000, 0x1000000, + 0x1000000, 0x5000000, 0x1000000, 0x1000000, 0x5000000, 0x7400000, 0x400000, 0x7200000, + 0x7400000, 0xfa00000, 0x7400000, 0x7400000, 0xfa00000, 0x6000000, 0x5400000, 0x000000, + 0xfa00000, 0x6400000, 0x7400000, 0x6000000, 0x7200000, 0xfa00000, 0x6400000, 0x000000 +}; + +static const unsigned long unicode_backtrans_81[] = { + 0x6000000, 0x6000000, 0xfa00000, 0x4400000, 0x000000, 0xea00000, 0xfa00000, 0xca00000, + 0xea00000, 0x5200000, 0xfa00000, 0x400000, 0x4000000, 0x1000000, 0x5000000, 0x1000000, + 0x1000000, 0x1000000, 0x5000000, 0x1000000, 0x5000000, 0x6000000, 0x7400000, 0x4400000, + 0xfc00000, 0x6000000, 0xda00000, 0xea00000, 0x400000, 0x6000000, 0x7400000, 0x6000000, + 0x400000, 0x6000000, 0x6000000, 0xea00000, 0x6400000, 0x6000000, 0x000000, 0x6400000, + 0x000000, 0xea00000, 0x4000000, 0xe800000, 0x7400000, 0x6000000, 0x000000, 0xfa00000, + 0x6400000, 0x1200000, 0x5000000, 0x200000, 0x4000000, 0x400000, 0x1000000, 0x4000000, + 0x1000000, 0xea00000, 0x6400000, 0x000000, 0x400000, 0x6000000, 0xfa00000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x6000000, 0x6000000, 0x400000, 0x7200000, 0x6400000, + 0x5000000, 0x000000, 0x7400000, 0xfa00000, 0x7400000, 0x6000000, 0xea00000, 0x6000000, + 0xfa00000, 0xfa00000, 0x6400000, 0x7200000, 0xfa00000, 0xfa00000, 0x4000000, 0x400000, + 0x000000, 0x5000000, 0x5000000, 0x6000000, 0x6000000, 0x000000, 0x6000000, 0x200000, + 0x7400000, 0x6400000, 0x6000000, 0x000000, 0x6000000, 0xfa00000, 0xea00000, 0x7400000, + 0x400000, 0x7400000, 0x000000, 0xea00000, 0x000000, 0x5400000, 0x7200000, 0x6400000, + 0xfa00000, 0xfa00000, 0x6000000, 0x6000000, 0x7200000, 0x000000, 0x6000000, 0x6400000, + 0xea00000, 0xfa00000, 0xfa00000, 0x1000000, 0x5000000, 0x1000000, 0x1000000, 0xfa00000, + 0xfa00000, 0x400000, 0x7200000, 0x6200000, 0x4400000, 0x400000, 0x6400000, 0x6000000, + 0xfa00000, 0x6000000, 0xfa00000, 0x6400000, 0x6000000, 0x6000000, 0x400000, 0xfa00000, + 0x400000, 0x1000000, 0x000000, 0x4200000, 0x000000, 0x6200000, 0x400000, 0x6000000, + 0x7400000, 0x6000000, 0xea00000, 0x7400000, 0xfa00000, 0xfa00000, 0x6400000, 0x6000000, + 0xea00000, 0x000000, 0x6400000, 0xfa00000, 0x200000, 0x4000000, 0x7000000, 0x6000000, + 0xfa00000, 0x6200000, 0x5000000, 0x6000000, 0x6000000, 0x000000, 0x6400000, 0x000000, + 0x6200000, 0x6000000, 0x6400000, 0xfa00000, 0x6400000, 0xea00000, 0x4000000, 0x6000000, + 0x200000, 0x6000000, 0xfa00000, 0x7400000, 0x6000000, 0xea00000, 0xea00000, 0xea00000, + 0xfa00000, 0x5000000, 0xfa00000, 0x7400000, 0x6000000, 0x6400000, 0xfa00000, 0x6000000, + 0x4200000, 0x6200000, 0x7400000, 0x400000, 0x7000000, 0xea00000, 0x400000, 0x6400000, + 0x6000000, 0x6200000, 0x6000000, 0x200000, 0x000000, 0x6400000, 0x000000, 0x6400000, + 0xea00000, 0x6200000, 0x6200000, 0x6400000, 0x000000, 0x6400000, 0x6400000, 0xea00000, + 0x6200000, 0x6400000, 0x6000000, 0xfa00000, 0x4400000, 0xea00000, 0x6000000, 0xfa00000, + 0xea00000, 0x6000000, 0xfa00000, 0x400000, 0x7400000, 0xfa00000, 0x6000000, 0x4000000, + 0x400000, 0x400000, 0x6400000, 0xfa00000, 0xfa00000, 0x400000, 0x4400000, 0x6000000, + 0x6400000, 0x6400000, 0xea00000, 0xfa00000, 0xfa00000, 0x400000, 0xfa00000, 0x6400000 +}; + +static const unsigned long unicode_backtrans_82[] = { + 0x7400000, 0x7200000, 0x7200000, 0x400000, 0x7000000, 0xfa00000, 0x1000000, 0xea00000, + 0xea00000, 0x6200000, 0xea00000, 0x6000000, 0xfa00000, 0xfa00000, 0x200000, 0x400000, + 0x7200000, 0x6000000, 0xfa00000, 0x400000, 0x7400000, 0x6000000, 0x6200000, 0x200000, + 0x4200000, 0x400000, 0x4400000, 0xfa00000, 0xfa00000, 0x6400000, 0xfa00000, 0xfa00000, + 0x6000000, 0xfc00000, 0x7400000, 0x1000000, 0x000000, 0x6000000, 0x4000000, 0x000000, + 0x7400000, 0x4200000, 0xfa00000, 0xfa00000, 0xfa00000, 0x5000000, 0x200000, 0x7000000, + 0x1000000, 0x1000000, 0x6400000, 0x7200000, 0x7400000, 0xfa00000, 0xfa00000, 0xfa00000, + 0x7200000, 0xfa00000, 0x6400000, 0x1000000, 0x6000000, 0x6000000, 0x5000000, 0x6000000, + 0xea00000, 0x000000, 0x6000000, 0x400000, 0x7400000, 0xec00000, 0x400000, 0xfa00000, + 0x000000, 0x7000000, 0x000000, 0x7400000, 0x000000, 0x000000, 0x6400000, 0x7400000, + 0x6000000, 0x6400000, 0x6000000, 0x6000000, 0x4000000, 0x6000000, 0x6400000, 0x6000000, + 0x7200000, 0xea00000, 0x7200000, 0x6000000, 0x6400000, 0x200000, 0x6000000, 0x7200000, + 0x400000, 0x6000000, 0x4200000, 0x6400000, 0xea00000, 0x4000000, 0xea00000, 0x400000, + 0x7200000, 0x6000000, 0x200000, 0x6200000, 0x6000000, 0x6400000, 0xfa00000, 0xfa00000, + 0x1000000, 0xea00000, 0xfa00000, 0x1000000, 0x7400000, 0x6000000, 0xca00000, 0x6200000, + 0xea00000, 0x5000000, 0x5000000, 0x4400000, 0x6000000, 0x7400000, 0xfa00000, 0x7400000, + 0x6400000, 0x400000, 0x1000000, 0x6400000, 0x7400000, 0x6000000, 0x000000, 0x4400000, + 0x1000000, 0x400000, 0x7400000, 0xfa00000, 0x000000, 0xfa00000, 0xfc00000, 0x7000000, + 0x6000000, 0x7400000, 0xfa00000, 0x6000000, 0x6400000, 0x000000, 0x400000, 0x1000000, + 0x7400000, 0xfa00000, 0xec00000, 0x6400000, 0x1000000, 0xfa00000, 0x6000000, 0xfa00000, + 0x6400000, 0x7400000, 0x6000000, 0x6400000, 0x7400000, 0xfa00000, 0xda00000, 0x6400000, + 0x7400000, 0xfc00000, 0x5400000, 0x7200000, 0xfa00000, 0xfa00000, 0xfc00000, 0xfa00000, + 0x7400000, 0xfa00000, 0x400000, 0xfa00000, 0x7400000, 0x6000000, 0x6000000, 0xfc00000, + 0xfa00000, 0xfa00000, 0x6400000, 0xea00000, 0xec00000, 0xfa00000, 0x7400000, 0xcc00000, + 0x6000000, 0x1000000, 0x6000000, 0x6000000, 0x5000000, 0x200000, 0x400000, 0x1000000, + 0x1000000, 0x000000, 0x5000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x5000000, + 0x4400000, 0xfa00000, 0xfa00000, 0x7200000, 0xfa00000, 0xfc00000, 0x6000000, 0xfa00000, + 0x5000000, 0x6200000, 0x400000, 0xfa00000, 0x7200000, 0x000000, 0xfa00000, 0xfa00000, + 0x7400000, 0xfa00000, 0x4400000, 0x7200000, 0x7400000, 0xfa00000, 0xfa00000, 0xea00000, + 0x6400000, 0x000000, 0x6400000, 0x7200000, 0x6000000, 0x6400000, 0x4000000, 0x7400000, + 0x6000000, 0xfa00000, 0x6000000, 0x6200000, 0x7200000, 0x6000000, 0x6400000, 0x5400000, + 0x4000000, 0x7200000, 0x6200000, 0x7200000, 0x4000000, 0xcc00000, 0xec00000, 0x4000000 +}; + +static const unsigned long unicode_backtrans_83[] = { + 0x6400000, 0xfc00000, 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, 0x7200000, 0x7400000, + 0x7400000, 0xfa00000, 0x400000, 0x4400000, 0x7000000, 0x6000000, 0x1200000, 0x1000000, + 0x000000, 0x1000000, 0x000000, 0x000000, 0x1000000, 0x1000000, 0x6200000, 0xfa00000, + 0x4200000, 0x6000000, 0x5000000, 0x7400000, 0x7200000, 0x4400000, 0x6400000, 0x400000, + 0x6000000, 0x400000, 0x6400000, 0x200000, 0x6000000, 0x6000000, 0x6000000, 0x7000000, + 0xfa00000, 0x6000000, 0x6000000, 0xfa00000, 0x7400000, 0x7400000, 0x400000, 0xfa00000, + 0x400000, 0xfa00000, 0x6200000, 0x7400000, 0xfa00000, 0xfa00000, 0xfa00000, 0x6400000, + 0xfa00000, 0xfa00000, 0x7400000, 0x6000000, 0x7400000, 0x4400000, 0x000000, 0x6000000, + 0xfa00000, 0x6000000, 0x6400000, 0x7400000, 0x6400000, 0x6200000, 0x1000000, 0xfc00000, + 0x6000000, 0xfa00000, 0xea00000, 0x6000000, 0x6000000, 0x6400000, 0x6400000, 0xfa00000, + 0x7200000, 0xfc00000, 0xfa00000, 0x6400000, 0x7400000, 0x400000, 0x6400000, 0x4400000, + 0x200000, 0x000000, 0x1000000, 0x1000000, 0x1000000, 0x000000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x4000000, 0x5000000, 0x1000000, 0x1000000, 0x5000000, 0x1000000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x5000000, + 0x400000, 0x000000, 0x000000, 0xea00000, 0x6000000, 0x6200000, 0x6000000, 0xfa00000, + 0x7400000, 0x000000, 0x6000000, 0xfa00000, 0x7200000, 0x7400000, 0x6000000, 0x6400000, + 0x400000, 0x6000000, 0x400000, 0x6000000, 0x400000, 0x5200000, 0x7400000, 0x6200000, + 0x6000000, 0xfa00000, 0xea00000, 0x6000000, 0x6000000, 0x6400000, 0xfa00000, 0x6000000, + 0x6000000, 0x4000000, 0x7400000, 0x7200000, 0x6400000, 0x6400000, 0xea00000, 0x6000000, + 0xfc00000, 0x6400000, 0x6200000, 0x7400000, 0x5400000, 0x6400000, 0xfa00000, 0x200000, + 0x7200000, 0x000000, 0xea00000, 0x6000000, 0x6000000, 0x6000000, 0x6400000, 0x6400000, + 0x7200000, 0xfc00000, 0xfa00000, 0xfa00000, 0x4400000, 0x400000, 0x6000000, 0x6000000, + 0x7000000, 0x1200000, 0x1000000, 0x1000000, 0x1000000, 0x200000, 0x1000000, 0x1000000, + 0x1000000, 0x5000000, 0x1000000, 0x000000, 0x1000000, 0xfa00000, 0x4400000, 0x6400000, + 0x7400000, 0xfa00000, 0x6000000, 0x6000000, 0x6000000, 0xfa00000, 0x6000000, 0x7400000, + 0x6000000, 0xec00000, 0xfa00000, 0x6000000, 0xfa00000, 0x4000000, 0x6200000, 0x7400000, + 0x400000, 0x6400000, 0x000000, 0xca00000, 0x7400000, 0x6000000, 0xfa00000, 0x6000000, + 0x7200000, 0x6000000, 0x000000, 0x6000000, 0xfa00000, 0x7400000, 0x6000000, 0x7200000, + 0x7200000, 0x7000000, 0x6000000, 0x6000000, 0x6000000, 0x7000000, 0x000000, 0x6000000, + 0x6400000, 0xfa00000, 0x7400000, 0xea00000, 0x6000000, 0x4000000, 0x6000000, 0xea00000, + 0xfa00000, 0xfa00000, 0xfa00000, 0x6000000, 0xea00000, 0x6000000, 0x6400000, 0x200000, + 0x7400000, 0xfc00000, 0x6000000, 0x6200000, 0x6400000, 0xfa00000, 0x6000000, 0x6000000 +}; + +static const unsigned long unicode_backtrans_84[] = { + 0x000000, 0x7400000, 0x000000, 0xfa00000, 0xfa00000, 0x4000000, 0x7400000, 0x6200000, + 0x000000, 0x6000000, 0xec00000, 0x7200000, 0xfa00000, 0xfa00000, 0xfa00000, 0x7400000, + 0x6000000, 0x7400000, 0x6000000, 0x6200000, 0x4000000, 0x400000, 0x4000000, 0x000000, + 0x5000000, 0x400000, 0x000000, 0x6000000, 0x5000000, 0x1000000, 0x000000, 0x000000, + 0x4200000, 0x4000000, 0x200000, 0x6000000, 0x5000000, 0x1000000, 0x5000000, 0x1000000, + 0x1000000, 0xea00000, 0x200000, 0x6000000, 0xea00000, 0x6000000, 0x4000000, 0x6400000, + 0x6000000, 0xfa00000, 0x6000000, 0x6000000, 0x6000000, 0x6200000, 0x6000000, 0x6000000, + 0xfa00000, 0x6400000, 0x6000000, 0x6000000, 0x7200000, 0xfa00000, 0x4000000, 0x6000000, + 0x6000000, 0x000000, 0x6000000, 0x6000000, 0x6000000, 0x6400000, 0x7200000, 0x6400000, + 0x4400000, 0xea00000, 0x4400000, 0x6000000, 0x6000000, 0x6400000, 0x6200000, 0x400000, + 0x6000000, 0x7400000, 0x6400000, 0x4000000, 0x6000000, 0x4000000, 0x6400000, 0xfa00000, + 0x4400000, 0x7400000, 0x7400000, 0xfa00000, 0x5400000, 0x6000000, 0x6000000, 0x6000000, + 0x6400000, 0xfa00000, 0x4200000, 0xfa00000, 0x4400000, 0x6400000, 0xea00000, 0x6400000, + 0x6000000, 0x7200000, 0x400000, 0xfa00000, 0xfa00000, 0x7200000, 0x6200000, 0xea00000, + 0x6400000, 0x5200000, 0x4000000, 0x7400000, 0x6400000, 0xfa00000, 0x7400000, 0x6200000, + 0x7400000, 0x6200000, 0xfa00000, 0x000000, 0x400000, 0x6400000, 0x6000000, 0x4000000, + 0x4000000, 0x400000, 0x7200000, 0x000000, 0x200000, 0x400000, 0x6000000, 0x1000000, + 0x5000000, 0x1000000, 0x000000, 0x1200000, 0x1000000, 0x6000000, 0x7000000, 0x6000000, + 0xea00000, 0x6000000, 0x4400000, 0x4400000, 0xea00000, 0x400000, 0x4000000, 0x7000000, + 0x6000000, 0xfa00000, 0x6000000, 0x6000000, 0xfa00000, 0x6000000, 0x6400000, 0x6200000, + 0x6000000, 0xfa00000, 0x6000000, 0x4000000, 0x6000000, 0x000000, 0x400000, 0x6000000, + 0x6400000, 0x6400000, 0x6400000, 0x6000000, 0x6000000, 0x4200000, 0x6000000, 0x7400000, + 0x6000000, 0x6400000, 0xfa00000, 0x000000, 0x7400000, 0x000000, 0x6000000, 0x000000, + 0xfa00000, 0x7200000, 0x7400000, 0xea00000, 0xea00000, 0x5400000, 0x4400000, 0xfa00000, + 0xec00000, 0x7200000, 0xec00000, 0x000000, 0xfa00000, 0x6000000, 0xea00000, 0x6400000, + 0x400000, 0xfa00000, 0x7200000, 0xea00000, 0x6400000, 0xfa00000, 0x6000000, 0x6400000, + 0x7200000, 0xfa00000, 0x6000000, 0x7400000, 0x6000000, 0x000000, 0x7200000, 0x6000000, + 0x000000, 0x200000, 0xca00000, 0x6000000, 0x400000, 0x1000000, 0x4000000, 0x1000000, + 0x1000000, 0x4000000, 0x4000000, 0x1000000, 0x4000000, 0x5000000, 0x1000000, 0x6400000, + 0x6000000, 0x6000000, 0x6400000, 0x6000000, 0xfa00000, 0x000000, 0xea00000, 0x6400000, + 0x7400000, 0x6400000, 0x6400000, 0x6000000, 0xea00000, 0x000000, 0x6000000, 0x6400000, + 0x4000000, 0x6000000, 0x6400000, 0x6400000, 0xfa00000, 0x6400000, 0x6000000, 0x7200000 +}; + +static const unsigned long unicode_backtrans_85[] = { + 0x6200000, 0x000000, 0x6400000, 0x4400000, 0x000000, 0x4000000, 0x6200000, 0x6400000, + 0x6000000, 0x6000000, 0x6000000, 0x6000000, 0x7400000, 0x6000000, 0x6400000, 0x6000000, + 0x4400000, 0xfa00000, 0x6000000, 0xfa00000, 0xea00000, 0x6200000, 0x6000000, 0xfa00000, + 0xea00000, 0x6000000, 0xfa00000, 0x000000, 0x6400000, 0x6000000, 0xec00000, 0x7200000, + 0x6000000, 0xfa00000, 0x400000, 0xec00000, 0x6400000, 0xec00000, 0x6200000, 0x6400000, + 0x6000000, 0x6000000, 0x6400000, 0x7400000, 0xfa00000, 0xea00000, 0x6000000, 0xec00000, + 0x6000000, 0x6000000, 0x400000, 0x4400000, 0x4400000, 0x200000, 0x400000, 0x1000000, + 0x5000000, 0x1000000, 0x1000000, 0x7000000, 0x1000000, 0xfa00000, 0x6000000, 0x8c00000, + 0x6200000, 0xea00000, 0x4000000, 0xfa00000, 0x6000000, 0x6000000, 0x6400000, 0x6000000, + 0x7200000, 0xfa00000, 0x7200000, 0x4200000, 0x4000000, 0x6000000, 0xea00000, 0x400000, + 0x400000, 0x6400000, 0x4400000, 0xec00000, 0x6000000, 0x6200000, 0x7400000, 0x6200000, + 0x6200000, 0xfc00000, 0x4200000, 0x6000000, 0x400000, 0x6400000, 0x7400000, 0x4400000, + 0x6400000, 0x6400000, 0x6400000, 0xea00000, 0x7400000, 0x6000000, 0x6000000, 0x6000000, + 0xfa00000, 0xea00000, 0xea00000, 0x6400000, 0x6000000, 0xea00000, 0x6000000, 0x4400000, + 0x4000000, 0x6000000, 0x1000000, 0x4000000, 0x1000000, 0x6000000, 0x6000000, 0x6200000, + 0x6000000, 0x7400000, 0x7400000, 0x7400000, 0x6000000, 0x400000, 0x7200000, 0x400000, + 0x6200000, 0x6400000, 0x6000000, 0x6000000, 0xfa00000, 0x7400000, 0x6400000, 0xfa00000, + 0x6200000, 0x6400000, 0x6200000, 0x6400000, 0x6400000, 0x6000000, 0x6000000, 0xfc00000, + 0x6200000, 0xea00000, 0x000000, 0x400000, 0xea00000, 0x6000000, 0x6000000, 0x4200000, + 0x6400000, 0x6200000, 0x6000000, 0xfa00000, 0x7200000, 0x6400000, 0x6000000, 0x6400000, + 0x6400000, 0x6000000, 0x6400000, 0x6000000, 0x7200000, 0x400000, 0xea00000, 0x6400000, + 0xfa00000, 0xea00000, 0xfa00000, 0x200000, 0x200000, 0x400000, 0x1200000, 0xfa00000, + 0xf800000, 0x6000000, 0x000000, 0x6000000, 0x6400000, 0x6000000, 0x6400000, 0x7400000, + 0x6400000, 0x7200000, 0xea00000, 0x000000, 0x400000, 0x6400000, 0x6400000, 0x6400000, + 0x6000000, 0xda00000, 0x6400000, 0x6000000, 0x6000000, 0x6000000, 0x6000000, 0x6400000, + 0x6000000, 0xfa00000, 0x400000, 0x6400000, 0x000000, 0xea00000, 0xec00000, 0xfa00000, + 0x7200000, 0x6000000, 0x6000000, 0x1000000, 0x000000, 0xfa00000, 0x4000000, 0x6000000, + 0x6400000, 0x6000000, 0x6400000, 0x000000, 0xfa00000, 0xea00000, 0x6000000, 0x6400000, + 0x4400000, 0x6000000, 0x6000000, 0x6000000, 0xfa00000, 0xea00000, 0x6400000, 0x000000, + 0x6400000, 0xfa00000, 0xea00000, 0x6000000, 0x6000000, 0x6400000, 0x4000000, 0x6000000, + 0x6000000, 0x6000000, 0x6000000, 0x400000, 0x000000, 0x000000, 0x6400000, 0xea00000, + 0x6000000, 0x6200000, 0xea00000, 0xfa00000, 0x4400000, 0x6000000, 0x6200000, 0xfc00000 +}; + +static const unsigned long unicode_backtrans_86[] = { + 0x6400000, 0x6000000, 0xca00000, 0x000000, 0x6400000, 0x7400000, 0xea00000, 0xea00000, + 0x000000, 0x6000000, 0xea00000, 0x6200000, 0x6000000, 0x4400000, 0x400000, 0x4000000, + 0x4400000, 0x7400000, 0x400000, 0x200000, 0x4000000, 0x000000, 0xda00000, 0xea00000, + 0x6400000, 0x6400000, 0xea00000, 0x6400000, 0x6000000, 0x000000, 0x6400000, 0x6000000, + 0x6000000, 0x6400000, 0x6200000, 0x6000000, 0x6000000, 0x6000000, 0x6000000, 0x7400000, + 0x4000000, 0x7400000, 0x6000000, 0x000000, 0x6000000, 0xea00000, 0x6000000, 0x4200000, + 0x200000, 0x6000000, 0x6000000, 0x6000000, 0x6000000, 0x6000000, 0x6400000, 0x000000, + 0x7400000, 0x6000000, 0x6400000, 0x6000000, 0x7400000, 0x400000, 0x6000000, 0xea00000, + 0x6400000, 0x400000, 0x4400000, 0x6000000, 0x000000, 0x4000000, 0x6400000, 0x6000000, + 0x6000000, 0x000000, 0x000000, 0x6000000, 0x6000000, 0x7200000, 0xfa00000, 0x1000000, + 0xfa00000, 0x1000000, 0x6400000, 0x6400000, 0xfa00000, 0xea00000, 0x6400000, 0x400000, + 0x400000, 0x6400000, 0x1200000, 0xe800000, 0xea00000, 0x400000, 0xfa00000, 0xea00000, + 0x400000, 0x6400000, 0x7400000, 0x6400000, 0x6400000, 0x6000000, 0x000000, 0xea00000, + 0x6000000, 0x6400000, 0x6000000, 0x7200000, 0x5400000, 0x6000000, 0x7000000, 0x6400000, + 0x6000000, 0x7200000, 0x4000000, 0x6000000, 0x6000000, 0x400000, 0x400000, 0x6400000, + 0x000000, 0xfa00000, 0x7400000, 0x7200000, 0x7000000, 0x1000000, 0x5000000, 0x1000000, + 0x1000000, 0x1000000, 0x1000000, 0x000000, 0x000000, 0x6000000, 0x6000000, 0x6000000, + 0x400000, 0x000000, 0xfa00000, 0x7200000, 0xfa00000, 0x7400000, 0x6000000, 0x000000, + 0x6000000, 0x6400000, 0x4000000, 0xfa00000, 0x6000000, 0x7200000, 0x6400000, 0x6000000, + 0x6400000, 0x6000000, 0x6400000, 0x000000, 0x7400000, 0x7000000, 0x6000000, 0x000000, + 0x4000000, 0x6400000, 0x6000000, 0xfa00000, 0xfa00000, 0x6000000, 0x400000, 0x7400000, + 0x7400000, 0xfa00000, 0x7200000, 0x200000, 0x1000000, 0x4400000, 0x000000, 0x7200000, + 0x7200000, 0x7400000, 0x4000000, 0x6400000, 0x7400000, 0x7400000, 0x7200000, 0x6400000, + 0x6400000, 0x6400000, 0x7000000, 0x6000000, 0x6000000, 0x6000000, 0x6000000, 0x6400000, + 0x7400000, 0x6400000, 0x6000000, 0x6400000, 0x7200000, 0x6400000, 0x7200000, 0xfa00000, + 0x6000000, 0x7200000, 0x1000000, 0xfa00000, 0x6000000, 0x200000, 0x1200000, 0x1000000, + 0x7000000, 0x7400000, 0x400000, 0x6000000, 0xfa00000, 0x400000, 0x6000000, 0x6400000, + 0x7000000, 0xfa00000, 0x6400000, 0xfa00000, 0x6400000, 0x6000000, 0x7200000, 0xfa00000, + 0x400000, 0x000000, 0x6000000, 0x6400000, 0xfa00000, 0x400000, 0x6000000, 0x400000, + 0x6000000, 0x7200000, 0x6000000, 0x6000000, 0x6200000, 0xfa00000, 0x1200000, 0x4200000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x6000000, 0x6000000, 0x6000000, + 0x7200000, 0x7200000, 0x6400000, 0x6200000, 0x400000, 0x400000, 0xfa00000, 0x000000 +}; + +static const unsigned long unicode_backtrans_87[] = { + 0xfa00000, 0x6000000, 0xfa00000, 0xfa00000, 0x6400000, 0x6400000, 0x6200000, 0x7400000, + 0xfa00000, 0x7200000, 0x7200000, 0x6400000, 0x6000000, 0x7200000, 0x6400000, 0x400000, + 0x400000, 0x6200000, 0x7200000, 0x7400000, 0x400000, 0x1000000, 0x000000, 0x1000000, + 0xfa00000, 0x6400000, 0xfa00000, 0x6000000, 0xfa00000, 0x000000, 0x7400000, 0x400000, + 0x6000000, 0x7400000, 0x7000000, 0x7400000, 0x6000000, 0x7200000, 0x6000000, 0x6000000, + 0x6400000, 0x7200000, 0x6000000, 0x000000, 0x6000000, 0x6000000, 0x7400000, 0x400000, + 0x6000000, 0x7400000, 0x6400000, 0x6000000, 0x7200000, 0x6000000, 0x000000, 0x7200000, + 0x6000000, 0x400000, 0x6400000, 0x7200000, 0x6400000, 0x400000, 0x7400000, 0x7200000, + 0x6400000, 0x6000000, 0x6000000, 0x6400000, 0x000000, 0x400000, 0x6000000, 0x1000000, + 0x1000000, 0x1200000, 0x000000, 0x200000, 0x7200000, 0x6400000, 0xfa00000, 0x6000000, + 0x6000000, 0x6000000, 0x6000000, 0x7200000, 0x6000000, 0xea00000, 0x6000000, 0xfa00000, + 0x6400000, 0x7200000, 0x6000000, 0x6000000, 0x6000000, 0x6400000, 0x6000000, 0xea00000, + 0x7200000, 0x6400000, 0x6000000, 0x7200000, 0x7400000, 0x7400000, 0xea00000, 0x6000000, + 0xea00000, 0x6000000, 0x6200000, 0x6000000, 0x6000000, 0x6000000, 0x7200000, 0x6400000, + 0x5000000, 0x4400000, 0x400000, 0x6000000, 0xfa00000, 0x6000000, 0xfa00000, 0x6000000, + 0xea00000, 0x6000000, 0x6000000, 0x7400000, 0x1000000, 0x5000000, 0x1000000, 0x200000, + 0x000000, 0x6000000, 0xfa00000, 0x7400000, 0x6400000, 0x7400000, 0x4400000, 0x6400000, + 0x7400000, 0x6400000, 0x000000, 0x5400000, 0x4400000, 0xfa00000, 0x000000, 0x6000000, + 0x6400000, 0x6000000, 0x6000000, 0x7400000, 0x6000000, 0x400000, 0x6000000, 0x7400000, + 0x6400000, 0x400000, 0x6000000, 0x6000000, 0x6000000, 0x6000000, 0x6400000, 0xfa00000, + 0x400000, 0x000000, 0xea00000, 0x6400000, 0x6000000, 0x4000000, 0x000000, 0x400000, + 0x1000000, 0x4000000, 0x6000000, 0x7200000, 0x7400000, 0x7400000, 0x6400000, 0x7200000, + 0x6000000, 0x4400000, 0x6000000, 0xfa00000, 0x6000000, 0x7400000, 0x6000000, 0x6000000, + 0x6000000, 0x6000000, 0xfa00000, 0x6200000, 0x6000000, 0x7200000, 0x6400000, 0x6400000, + 0x7200000, 0x4400000, 0x6000000, 0x6000000, 0xea00000, 0x6000000, 0x7200000, 0x200000, + 0x6400000, 0x6400000, 0x7400000, 0x7200000, 0x6000000, 0x000000, 0x4400000, 0x000000, + 0x200000, 0x7000000, 0x7200000, 0x7000000, 0x6000000, 0x400000, 0x4400000, 0x6000000, + 0x6000000, 0x6400000, 0x4400000, 0x7000000, 0x6400000, 0x6000000, 0x6000000, 0x6400000, + 0xfa00000, 0x6000000, 0x6400000, 0x6400000, 0x6400000, 0x7000000, 0x6000000, 0x6000000, + 0x6000000, 0x000000, 0x7400000, 0x6400000, 0xe800000, 0x6400000, 0x5000000, 0xea00000, + 0x000000, 0x400000, 0xea00000, 0x6400000, 0x6000000, 0x4000000, 0x6200000, 0x6200000, + 0x400000, 0xfa00000, 0x6400000, 0xea00000, 0x6000000, 0x000000, 0xfa00000, 0x6400000 +}; + +static const unsigned long unicode_backtrans_88[] = { + 0x6000000, 0x6400000, 0x6000000, 0x7400000, 0x4000000, 0xea00000, 0x6400000, 0x000000, + 0x6000000, 0x6400000, 0x7400000, 0x6400000, 0x6000000, 0x6200000, 0x200000, 0x4200000, + 0x6400000, 0x6200000, 0x400000, 0x7400000, 0x6400000, 0x7200000, 0x7200000, 0x6000000, + 0x4400000, 0x6400000, 0x400000, 0x7400000, 0x6400000, 0x6000000, 0x400000, 0xec00000, + 0x6000000, 0x7200000, 0xfa00000, 0xea00000, 0x6000000, 0x6000000, 0x6000000, 0x4200000, + 0x6400000, 0x6000000, 0x6000000, 0x6000000, 0x6000000, 0x4400000, 0x6400000, 0x6000000, + 0x6400000, 0xea00000, 0x7400000, 0x6000000, 0x000000, 0x6400000, 0xea00000, 0x6000000, + 0x6000000, 0x7200000, 0x400000, 0xea00000, 0x7400000, 0x6000000, 0x6000000, 0x6000000, + 0xfa00000, 0x6400000, 0x4200000, 0x6400000, 0x7200000, 0x5400000, 0xca00000, 0x000000, + 0x6400000, 0x400000, 0x6400000, 0x6400000, 0xfa00000, 0xfa00000, 0x6400000, 0x4000000, + 0x000000, 0x400000, 0xea00000, 0xea00000, 0x1000000, 0x6400000, 0x6400000, 0xfa00000, + 0x400000, 0xfa00000, 0x6400000, 0xea00000, 0x400000, 0xea00000, 0x4200000, 0x400000, + 0x4400000, 0xfa00000, 0xfa00000, 0xfa00000, 0x5400000, 0x5000000, 0x000000, 0x6000000, + 0xfa00000, 0x7400000, 0x6000000, 0xfa00000, 0x1000000, 0x6000000, 0x5000000, 0x6000000, + 0xfa00000, 0x6400000, 0xfa00000, 0x000000, 0x6000000, 0x6200000, 0x6000000, 0xfa00000, + 0x000000, 0x6400000, 0x000000, 0x400000, 0x6000000, 0x7200000, 0xfa00000, 0xfa00000, + 0x6400000, 0xfa00000, 0xfa00000, 0x6000000, 0x5000000, 0x1000000, 0x000000, 0x4000000, + 0xfa00000, 0x6000000, 0x000000, 0xfa00000, 0x6000000, 0xfa00000, 0x6000000, 0x4000000, + 0x4000000, 0x6000000, 0xfa00000, 0x6000000, 0x000000, 0x6000000, 0xfa00000, 0xea00000, + 0x6400000, 0x6200000, 0x6400000, 0x6400000, 0x5400000, 0x000000, 0xea00000, 0x6400000, + 0x4400000, 0x6000000, 0x7200000, 0x000000, 0x7200000, 0x000000, 0x000000, 0x6000000, + 0x6400000, 0x000000, 0x6400000, 0xfa00000, 0x6000000, 0x1000000, 0x4200000, 0x000000, + 0x200000, 0x7200000, 0x6000000, 0x000000, 0xca00000, 0x4200000, 0x6000000, 0x7200000, + 0x6000000, 0x6000000, 0x6400000, 0x000000, 0x7000000, 0x6400000, 0x6400000, 0x4200000, + 0x6400000, 0xfa00000, 0xfa00000, 0x200000, 0x200000, 0x5200000, 0x1000000, 0x4000000, + 0x000000, 0x7000000, 0x6400000, 0x6400000, 0x6400000, 0x6400000, 0x7400000, 0xca00000, + 0x6000000, 0x400000, 0x7400000, 0x400000, 0xfa00000, 0xfa00000, 0x6000000, 0x6000000, + 0x7200000, 0xfa00000, 0x6000000, 0x6400000, 0xea00000, 0xea00000, 0x6400000, 0xfa00000, + 0x000000, 0xea00000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x4000000, 0x6400000, + 0xfa00000, 0x000000, 0x000000, 0x6000000, 0x6000000, 0x000000, 0x6000000, 0x6400000, + 0x7400000, 0x7400000, 0x6200000, 0xfa00000, 0xfa00000, 0xcc00000, 0x6000000, 0x6400000, + 0xfa00000, 0x7200000, 0x6000000, 0x6000000, 0x7200000, 0xea00000, 0x7200000, 0x4000000 +}; + +static const unsigned long unicode_backtrans_89[] = { + 0x4000000, 0x6400000, 0x7200000, 0x000000, 0x200000, 0x6000000, 0x6400000, 0xea00000, + 0x000000, 0x6000000, 0x7200000, 0x6000000, 0x6200000, 0x400000, 0x6400000, 0x400000, + 0xfa00000, 0x6000000, 0xfa00000, 0xfa00000, 0x6000000, 0x6400000, 0x6400000, 0x6000000, + 0xec00000, 0xfc00000, 0x7400000, 0x1000000, 0x400000, 0x200000, 0x6200000, 0x6000000, + 0x400000, 0x7000000, 0x6000000, 0x6000000, 0x4000000, 0xfa00000, 0x6400000, 0x6400000, + 0x400000, 0x6000000, 0xfa00000, 0x7200000, 0x6000000, 0x6000000, 0x6000000, 0x6000000, + 0x7400000, 0x6400000, 0x6400000, 0x6000000, 0x1000000, 0x6400000, 0xfa00000, 0x6000000, + 0xea00000, 0x400000, 0x400000, 0xea00000, 0x6000000, 0x6000000, 0x6400000, 0x000000, + 0x400000, 0xfa00000, 0x6400000, 0x4200000, 0xfa00000, 0x400000, 0x6400000, 0x4000000, + 0x000000, 0x6400000, 0x000000, 0x6000000, 0x6200000, 0x4200000, 0x000000, 0x6400000, + 0x6000000, 0x6000000, 0x6400000, 0x6000000, 0x4000000, 0x000000, 0x6200000, 0x6400000, + 0x6000000, 0x6000000, 0x6400000, 0x6400000, 0x6400000, 0x6000000, 0x7200000, 0xfa00000, + 0x6200000, 0x6400000, 0x6400000, 0x6400000, 0xea00000, 0x4000000, 0x7200000, 0x000000, + 0x000000, 0x6000000, 0xea00000, 0x6400000, 0x6000000, 0x6200000, 0x6400000, 0x6200000, + 0x400000, 0x6000000, 0xea00000, 0x6400000, 0x6200000, 0x400000, 0x6000000, 0x4200000, + 0x000000, 0x6000000, 0x6400000, 0x7400000, 0x6400000, 0x400000, 0x6200000, 0xfa00000, + 0x4000000, 0xfa00000, 0x6000000, 0xfa00000, 0x000000, 0x6000000, 0xfa00000, 0xca00000, + 0x6200000, 0x4400000, 0x4200000, 0xea00000, 0x000000, 0x400000, 0x000000, 0xea00000, + 0x400000, 0x4000000, 0x000000, 0xea00000, 0x4400000, 0x6400000, 0xea00000, 0x6200000, + 0x6200000, 0x000000, 0x200000, 0x6400000, 0x6400000, 0x6000000, 0x6000000, 0x6400000, + 0x400000, 0xea00000, 0x6000000, 0x6000000, 0x6000000, 0x4400000, 0x6200000, 0x4200000, + 0x000000, 0xca00000, 0xea00000, 0x000000, 0x6200000, 0x6000000, 0x6000000, 0x6200000, + 0x400000, 0x000000, 0xea00000, 0x200000, 0x400000, 0x400000, 0x6400000, 0x6400000, + 0x000000, 0x6000000, 0xea00000, 0x000000, 0x4400000, 0xea00000, 0x6000000, 0x6200000, + 0xea00000, 0x5000000, 0x1000000, 0x000000, 0x1000000, 0x1000000, 0x5000000, 0x1000000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x000000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0xfa00000, 0x6000000, 0x6400000, 0x6400000, 0x7400000, 0x400000, + 0x400000, 0x6000000, 0x7200000, 0x6000000, 0x7200000, 0x6200000, 0x1000000, 0x6000000, + 0x6000000, 0x6000000, 0x6000000, 0xfa00000, 0x6000000, 0x7400000, 0x7200000, 0x4200000, + 0x6000000, 0x6400000, 0x000000, 0x7400000, 0x6000000, 0x6400000, 0x000000, 0x1000000, + 0x6000000, 0x6400000, 0x6000000, 0x7400000, 0xea00000, 0x000000, 0x6400000, 0x6000000, + 0xea00000, 0x400000, 0x6000000, 0x6000000, 0x6000000, 0x400000, 0x6000000, 0x6400000 +}; + +static const unsigned long unicode_backtrans_8a[] = { + 0xfa00000, 0x000000, 0xea00000, 0xea00000, 0x6400000, 0x400000, 0x000000, 0x7400000, + 0xea00000, 0x000000, 0xea00000, 0x000000, 0xea00000, 0x000000, 0xea00000, 0x6400000, + 0x6200000, 0x6400000, 0x6400000, 0xea00000, 0x400000, 0x6400000, 0xea00000, 0xea00000, + 0xea00000, 0x000000, 0x000000, 0xea00000, 0x4000000, 0xea00000, 0x6400000, 0xea00000, + 0x400000, 0x000000, 0x6400000, 0xea00000, 0x400000, 0xea00000, 0x400000, 0x6000000, + 0x000000, 0x4000000, 0xea00000, 0x4400000, 0x6400000, 0xea00000, 0x000000, 0x400000, + 0x6000000, 0xea00000, 0x000000, 0x200000, 0xea00000, 0x400000, 0xea00000, 0x400000, + 0x4000000, 0x6000000, 0xea00000, 0xea00000, 0x6200000, 0x4400000, 0x7400000, 0x6000000, + 0x6400000, 0x6200000, 0x000000, 0x400000, 0x6000000, 0x6400000, 0x6200000, 0x400000, + 0x7200000, 0x4400000, 0x6000000, 0x000000, 0x6000000, 0x6400000, 0x6400000, 0x6000000, + 0xea00000, 0x6200000, 0x6200000, 0x400000, 0xea00000, 0xea00000, 0x6400000, 0x6400000, + 0x6400000, 0x6000000, 0x000000, 0xea00000, 0x400000, 0x400000, 0xea00000, 0x000000, + 0xea00000, 0x6400000, 0xea00000, 0xea00000, 0x000000, 0x400000, 0xea00000, 0x4400000, + 0x6000000, 0xea00000, 0x000000, 0x6200000, 0x6200000, 0xea00000, 0xea00000, 0x000000, + 0xea00000, 0xea00000, 0xea00000, 0xea00000, 0x6000000, 0xec00000, 0x6400000, 0x6400000, + 0x000000, 0xfc00000, 0x6400000, 0x6400000, 0x6200000, 0x000000, 0x4400000, 0x6400000, + 0x400000, 0x6000000, 0x6200000, 0x6400000, 0x6200000, 0xea00000, 0x6400000, 0xea00000, + 0x000000, 0x1200000, 0x1000000, 0x6400000, 0xea00000, 0xea00000, 0x000000, 0x6400000, + 0x4400000, 0x6200000, 0x6400000, 0xfa00000, 0x4000000, 0xea00000, 0x6400000, 0x400000, + 0xea00000, 0x6400000, 0x6200000, 0x000000, 0x4000000, 0x000000, 0xea00000, 0x400000, + 0xea00000, 0xea00000, 0x000000, 0xea00000, 0xea00000, 0xea00000, 0xea00000, 0x6400000, + 0xea00000, 0x4400000, 0xe800000, 0x6000000, 0x200000, 0x200000, 0x400000, 0x4400000, + 0xea00000, 0x000000, 0xea00000, 0x400000, 0x4000000, 0x000000, 0x6400000, 0x400000, + 0x6000000, 0xea00000, 0x6000000, 0x6400000, 0xea00000, 0x6000000, 0xec00000, 0xea00000, + 0x6000000, 0x000000, 0xea00000, 0x6400000, 0xea00000, 0x6000000, 0x6400000, 0xea00000, + 0x6400000, 0x6400000, 0x400000, 0xea00000, 0x200000, 0xea00000, 0x000000, 0xea00000, + 0x000000, 0x6400000, 0xea00000, 0x6400000, 0x6400000, 0x6400000, 0xea00000, 0x6400000, + 0x6000000, 0x6000000, 0x4200000, 0xea00000, 0xea00000, 0x6400000, 0x6200000, 0x6400000, + 0x6200000, 0xea00000, 0x6200000, 0x000000, 0x6200000, 0x000000, 0xea00000, 0xea00000, + 0x6000000, 0x000000, 0xc800000, 0xea00000, 0x400000, 0xea00000, 0xea00000, 0x6000000, + 0x6400000, 0xea00000, 0x6000000, 0x6200000, 0x6400000, 0x6400000, 0xec00000, 0xea00000, + 0xea00000, 0x000000, 0xea00000, 0x6000000, 0x6400000, 0x000000, 0xea00000, 0x6400000 +}; + +static const unsigned long unicode_backtrans_8b[] = { + 0xea00000, 0xea00000, 0xea00000, 0x000000, 0xea00000, 0x6400000, 0x6400000, 0x7200000, + 0x6000000, 0x000000, 0x6400000, 0x6400000, 0x4200000, 0x6000000, 0xea00000, 0x6000000, + 0xea00000, 0x6400000, 0x6000000, 0x6000000, 0xea00000, 0x6000000, 0xea00000, 0xea00000, + 0x6000000, 0xea00000, 0xea00000, 0xea00000, 0x6400000, 0xea00000, 0x6400000, 0x4400000, + 0xea00000, 0x200000, 0x6000000, 0x6000000, 0x6000000, 0x6000000, 0x7200000, 0x6000000, + 0xea00000, 0x000000, 0x6000000, 0xea00000, 0xea00000, 0x4400000, 0x6000000, 0x6000000, + 0x6400000, 0x6000000, 0x000000, 0xea00000, 0x000000, 0x6000000, 0x6000000, 0x6400000, + 0x000000, 0xea00000, 0x6000000, 0x6000000, 0x6400000, 0x6000000, 0x6200000, 0x4000000, + 0x6000000, 0xea00000, 0x6400000, 0x4400000, 0x400000, 0x6400000, 0x6400000, 0x6000000, + 0x6400000, 0xea00000, 0x6000000, 0x6000000, 0x4200000, 0x4400000, 0xea00000, 0xea00000, + 0x6000000, 0x6000000, 0x6400000, 0x6400000, 0x6400000, 0x6000000, 0x6200000, 0x6000000, + 0xea00000, 0x6400000, 0xea00000, 0x200000, 0xea00000, 0x6000000, 0x4400000, 0x6200000, + 0x6000000, 0x000000, 0x4000000, 0x6400000, 0x000000, 0x6000000, 0xfa00000, 0x6000000, + 0x6000000, 0x4000000, 0x6000000, 0x6200000, 0xfa00000, 0x6400000, 0x000000, 0xea00000, + 0xea00000, 0x200000, 0x200000, 0x000000, 0xea00000, 0x000000, 0x400000, 0xea00000, + 0x6400000, 0x6400000, 0x6000000, 0x6000000, 0x400000, 0xea00000, 0x6400000, 0x6000000, + 0xea00000, 0x4400000, 0x6000000, 0x4200000, 0x6400000, 0x6400000, 0x6000000, 0x000000, + 0x6000000, 0x000000, 0xea00000, 0x6400000, 0x6200000, 0x400000, 0x6200000, 0x400000, + 0xca00000, 0x000000, 0xea00000, 0xea00000, 0x6400000, 0x6400000, 0xea00000, 0x000000, + 0x6000000, 0x6200000, 0xea00000, 0x4000000, 0x6400000, 0x000000, 0x6400000, 0x6400000, + 0x5000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x000000, 0x1000000, 0x1000000, 0x1000000, + 0x1000000, 0x000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x1000000, 0x000000, 0x1000000, 0x1000000, 0x5000000, 0x1000000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x000000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, + 0x000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x5000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000 +}; + +static const unsigned long unicode_backtrans_8c[] = { + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, + 0x1000000, 0x000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x000000, 0x1000000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0xfa00000, + 0x400000, 0x6400000, 0x200000, 0x6000000, 0x6000000, 0x6400000, 0x6400000, 0xea00000, + 0x000000, 0xfa00000, 0x6000000, 0x6000000, 0x000000, 0x6400000, 0xfa00000, 0x7400000, + 0xea00000, 0x7400000, 0xea00000, 0x6400000, 0xfa00000, 0x6000000, 0x6200000, 0x6400000, + 0x6200000, 0x4400000, 0x000000, 0x400000, 0x6400000, 0xfa00000, 0x6000000, 0x6400000, + 0x400000, 0x400000, 0xfa00000, 0x400000, 0x6000000, 0x6400000, 0x000000, 0x6000000, + 0x000000, 0xfa00000, 0x7200000, 0x400000, 0x6400000, 0x6000000, 0x6400000, 0x000000, + 0x6400000, 0x6400000, 0xfa00000, 0xfa00000, 0x6200000, 0x6400000, 0x000000, 0x6000000, + 0x6000000, 0x6000000, 0x6000000, 0x7400000, 0x000000, 0x6400000, 0x6400000, 0x6000000, + 0x7200000, 0xfa00000, 0xfa00000, 0x6400000, 0x200000, 0x6000000, 0x400000, 0x000000, + 0x6000000, 0x6000000, 0xfa00000, 0x000000, 0x6000000, 0x7200000, 0x6400000, 0x400000, + 0x000000, 0x7200000, 0xfa00000, 0x400000, 0xfa00000, 0x6200000, 0x200000, 0x6000000, + 0x6400000, 0x6000000, 0x6400000, 0x6400000, 0x7200000, 0x6000000, 0x000000, 0x6000000, + 0x7200000, 0x6400000, 0x6000000, 0x4400000, 0x6400000, 0xea00000, 0xea00000, 0x4000000, + 0xea00000, 0xea00000, 0xea00000, 0x6000000, 0x6400000, 0x6000000, 0x000000, 0xea00000, + 0xea00000, 0xea00000, 0xea00000, 0xea00000, 0xea00000, 0x4200000, 0x200000, 0xea00000, + 0xea00000, 0x000000, 0x6200000, 0xea00000, 0xea00000, 0x6000000, 0xea00000, 0xea00000, + 0xea00000, 0x6400000, 0x6400000, 0xea00000, 0xea00000, 0xea00000, 0x6000000, 0xea00000, + 0xea00000, 0xea00000, 0xea00000, 0xea00000, 0xea00000, 0x6400000, 0x400000, 0xea00000, + 0xea00000, 0x400000, 0xea00000, 0x400000, 0x6000000, 0x4200000, 0x200000, 0x6400000, + 0x000000, 0xea00000, 0x6000000, 0xea00000, 0x4000000, 0x6400000, 0x4400000, 0x6000000, + 0x000000, 0x6400000, 0xea00000, 0x4200000, 0xea00000, 0x6400000, 0xea00000, 0x6000000, + 0xea00000, 0x6400000, 0xea00000, 0xea00000, 0xea00000, 0x6000000, 0xea00000, 0x6000000, + 0x6400000, 0x4000000, 0xea00000, 0x4000000, 0x6400000, 0xea00000, 0x6000000, 0x400000, + 0x6400000, 0x6000000, 0x4400000, 0x6000000, 0xe800000, 0x6400000, 0x000000, 0x4400000, + 0x6400000, 0x6000000, 0x6200000, 0xea00000, 0xea00000, 0xea00000, 0x6400000, 0x400000 +}; + +static const unsigned long unicode_backtrans_8d[] = { + 0x6000000, 0x400000, 0x6000000, 0x4400000, 0xea00000, 0xea00000, 0x6000000, 0xea00000, + 0xea00000, 0x6400000, 0xea00000, 0x4200000, 0x4000000, 0xea00000, 0x000000, 0x6200000, + 0x6200000, 0x4000000, 0x4400000, 0xea00000, 0x6200000, 0x6000000, 0xea00000, 0x6400000, + 0x4000000, 0x6000000, 0x000000, 0x6400000, 0x4000000, 0x5000000, 0x1000000, 0x1000000, + 0x000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, + 0x1000000, 0x000000, 0x000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x000000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x000000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0xfa00000, 0x400000, 0xfa00000, 0x7200000, + 0x6000000, 0x6400000, 0x000000, 0xfa00000, 0x6400000, 0x7200000, 0x6400000, 0x6000000, + 0xfa00000, 0x200000, 0x6000000, 0xfa00000, 0xfa00000, 0x1000000, 0x7000000, 0xfa00000, + 0x6000000, 0x6000000, 0x4000000, 0x6000000, 0x000000, 0x6000000, 0x000000, 0x400000, + 0x6000000, 0x7200000, 0x4400000, 0x000000, 0x7400000, 0xfa00000, 0x000000, 0x000000, + 0x400000, 0x6000000, 0xfa00000, 0x1000000, 0x6000000, 0x6400000, 0x6000000, 0x6000000, + 0x6400000, 0x7400000, 0x6000000, 0x6000000, 0x7000000, 0x6400000, 0x6000000, 0x000000, + 0x000000, 0xea00000, 0x000000, 0x6000000, 0x6000000, 0x000000, 0x400000, 0x7400000, + 0x6400000, 0x6000000, 0x000000, 0xfa00000, 0x000000, 0x6000000, 0x4400000, 0x6000000, + 0xea00000, 0x4000000, 0x6000000, 0x6400000, 0x6400000, 0x6000000, 0x6000000, 0x6400000, + 0x000000, 0x1000000, 0x6400000, 0xfa00000, 0x7000000, 0x7400000, 0x6000000, 0x6400000, + 0x1000000, 0x6400000, 0xfa00000, 0x400000, 0x7400000, 0x000000, 0xfa00000, 0x7000000, + 0x4400000, 0x6000000, 0x6200000, 0x5000000, 0x1000000, 0x6400000, 0xfc00000, 0x6400000, + 0x6400000, 0x000000, 0x400000, 0xfa00000, 0xfa00000, 0x6000000, 0x7400000, 0xfa00000, + 0x6000000, 0x7400000, 0x000000, 0x6000000, 0x4400000, 0x6400000, 0x7200000, 0x7400000, + 0x6000000, 0x6400000, 0x7200000, 0xfa00000, 0x6000000, 0xfa00000, 0x1000000, 0x7200000, + 0x6000000, 0xea00000, 0x6000000, 0xfa00000, 0x7400000, 0x400000, 0x6000000, 0x6400000, + 0xfa00000, 0x6000000, 0x7200000, 0x7200000, 0x7400000, 0x000000, 0x6000000, 0xfa00000, + 0x6400000, 0x6400000, 0x6400000, 0xfa00000, 0x6400000, 0x1200000, 0x000000, 0x1000000, + 0x1000000, 0x1000000, 0x7000000, 0x1000000, 0x6200000, 0x7400000, 0x6000000, 0x6200000 +}; + +static const unsigned long unicode_backtrans_8e[] = { + 0x6000000, 0x4400000, 0x6000000, 0x6000000, 0x6400000, 0x7400000, 0x6400000, 0x6000000, + 0x200000, 0x7200000, 0xfa00000, 0x400000, 0x1000000, 0x6000000, 0x4000000, 0xfa00000, + 0xea00000, 0x6400000, 0x6000000, 0x6000000, 0x7400000, 0x6000000, 0x6400000, 0x6000000, + 0x6000000, 0x6000000, 0x6000000, 0x6000000, 0x6000000, 0x7200000, 0xfa00000, 0x7200000, + 0x6400000, 0x6400000, 0x7400000, 0x7400000, 0x6000000, 0x6000000, 0x6400000, 0x6400000, + 0x4000000, 0x7000000, 0xda00000, 0x6000000, 0x1000000, 0x4000000, 0x7000000, 0x1000000, + 0xea00000, 0x7400000, 0x000000, 0x6400000, 0x6200000, 0xfa00000, 0x6400000, 0x400000, + 0x6400000, 0x7400000, 0x5000000, 0x000000, 0x6000000, 0x7400000, 0x6000000, 0x6000000, + 0x7400000, 0x7400000, 0xfa00000, 0x000000, 0xfa00000, 0x6000000, 0x4000000, 0xfa00000, + 0xfa00000, 0xfa00000, 0xfa00000, 0x7400000, 0x6200000, 0x6400000, 0x6400000, 0x4400000, + 0x6200000, 0x1000000, 0x1000000, 0x6000000, 0x6400000, 0x6200000, 0x6000000, 0x6000000, + 0x000000, 0xfa00000, 0x6000000, 0x6400000, 0x6400000, 0x6400000, 0x6400000, 0xea00000, + 0xea00000, 0x6400000, 0x6400000, 0x6200000, 0x6200000, 0x6000000, 0x7000000, 0x6000000, + 0x4000000, 0x7400000, 0x6000000, 0x000000, 0x7400000, 0x7400000, 0x000000, 0x7400000, + 0x1400000, 0x4400000, 0x7200000, 0x6000000, 0xfa00000, 0x4000000, 0xfa00000, 0x4000000, + 0x6000000, 0x400000, 0x6400000, 0x6400000, 0x7200000, 0x000000, 0x4000000, 0x1000000, + 0x4000000, 0xfa00000, 0x6400000, 0x400000, 0x6200000, 0x7200000, 0x6000000, 0xfa00000, + 0x6000000, 0x6400000, 0xea00000, 0x6200000, 0x6000000, 0xea00000, 0x6000000, 0x1000000, + 0x7400000, 0x6200000, 0x6400000, 0x6200000, 0x7200000, 0x6400000, 0x6000000, 0x6000000, + 0x6000000, 0x200000, 0x6400000, 0x400000, 0x1000000, 0x6400000, 0x7400000, 0x6000000, + 0x6000000, 0x6200000, 0x400000, 0x6000000, 0x6000000, 0x6000000, 0x6000000, 0x4400000, + 0x6000000, 0x6400000, 0xea00000, 0xfa00000, 0xfa00000, 0x4400000, 0x400000, 0x1200000, + 0x4200000, 0x200000, 0x7000000, 0x400000, 0x000000, 0x400000, 0x4000000, 0x000000, + 0x000000, 0x4000000, 0x7400000, 0x400000, 0x4000000, 0x6000000, 0x200000, 0x000000, + 0xec00000, 0x400000, 0x6000000, 0x4400000, 0x400000, 0x200000, 0x200000, 0x400000, + 0x200000, 0x6000000, 0xea00000, 0xea00000, 0xea00000, 0xea00000, 0x5000000, 0x6400000, + 0x000000, 0x6400000, 0xea00000, 0x6000000, 0x6400000, 0x000000, 0x000000, 0x6000000, + 0x6000000, 0x000000, 0x4000000, 0x6200000, 0x6400000, 0x6000000, 0x6000000, 0xea00000, + 0x6000000, 0x6000000, 0x4200000, 0x200000, 0x4000000, 0x6000000, 0x6000000, 0x6000000, + 0x6400000, 0x6000000, 0x000000, 0xea00000, 0x6000000, 0x4400000, 0x6400000, 0x6000000, + 0x400000, 0x6400000, 0x4000000, 0x000000, 0x6000000, 0x6000000, 0x6000000, 0x6400000, + 0xea00000, 0x6400000, 0x6400000, 0xea00000, 0x6200000, 0x200000, 0xea00000, 0x6000000 +}; + +static const unsigned long unicode_backtrans_8f[] = { + 0x6400000, 0x6000000, 0x6400000, 0xea00000, 0x000000, 0xea00000, 0x6000000, 0x6400000, + 0x6400000, 0xea00000, 0x6200000, 0x6000000, 0x200000, 0x6000000, 0x6000000, 0x400000, + 0x6400000, 0x6000000, 0xea00000, 0xea00000, 0xea00000, 0xea00000, 0x6400000, 0x6400000, + 0x6400000, 0x4200000, 0x6000000, 0xea00000, 0xea00000, 0xea00000, 0xec00000, 0xea00000, + 0x6400000, 0x400000, 0x000000, 0x6400000, 0x6000000, 0x6400000, 0xea00000, 0x8c00000, + 0x400000, 0xea00000, 0xea00000, 0x000000, 0x6400000, 0x4400000, 0x6400000, 0xea00000, + 0x4000000, 0x000000, 0x6000000, 0xea00000, 0x6400000, 0x6400000, 0x6400000, 0x6400000, + 0xea00000, 0xea00000, 0x400000, 0xea00000, 0x000000, 0x000000, 0xea00000, 0xea00000, + 0x6400000, 0x4400000, 0x6200000, 0x6400000, 0xea00000, 0xea00000, 0x6200000, 0x6400000, + 0x6000000, 0xea00000, 0x4000000, 0x6000000, 0x200000, 0xea00000, 0xea00000, 0x6400000, + 0x6000000, 0x6400000, 0x6400000, 0x6400000, 0x6400000, 0x6400000, 0x6000000, 0x6200000, + 0x6400000, 0x6000000, 0x6000000, 0x6000000, 0x4200000, 0xec00000, 0x6400000, 0xea00000, + 0x6000000, 0x6200000, 0xea00000, 0x6200000, 0x6200000, 0x400000, 0x5000000, 0x5000000, + 0x1000000, 0x1000000, 0x000000, 0x1000000, 0x1000000, 0x1000000, 0x5000000, 0x1000000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, + 0x000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x000000, 0x1000000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x000000, 0x5000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x1000000, 0xfa00000, 0xfa00000, 0x400000, 0x1200000, 0x7200000, + 0x4400000, 0x400000, 0x000000, 0xfa00000, 0x400000, 0x4400000, 0xec00000, 0x4200000, + 0xfa00000, 0x1000000, 0x000000, 0x1000000, 0x000000, 0xea00000, 0x6200000, 0xea00000, + 0xfa00000, 0xfa00000, 0xea00000, 0x4000000, 0x6000000, 0x4400000, 0x5400000, 0x4200000, + 0x4400000, 0x5000000, 0x4200000, 0x4200000, 0x4200000, 0x1000000, 0x5400000, 0x6200000, + 0x400000, 0x5400000, 0xfa00000, 0x000000, 0x7200000, 0xfa00000, 0x6400000, 0x1000000, + 0x1000000, 0x6000000, 0x4400000, 0x6400000, 0x4000000, 0x6400000, 0xfa00000, 0x4000000, + 0x5400000, 0xfa00000, 0x6400000, 0x7400000, 0xfa00000, 0x7400000, 0x6000000, 0x6000000, + 0x1000000, 0x1000000, 0x4200000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, + 0x6400000, 0x6000000, 0x7200000, 0x6400000, 0x7400000, 0x7200000, 0xfa00000, 0x000000, + 0x7400000, 0x1200000, 0xfa00000, 0xfa00000, 0x000000, 0xfa00000, 0x7400000, 0x200000, + 0xfa00000, 0x400000, 0x8800000, 0x1000000, 0x6200000, 0x6400000, 0x6400000, 0xfa00000, + 0x7200000, 0xda00000, 0x6200000, 0x6400000, 0x6000000, 0xfa00000, 0x6400000, 0x6000000 +}; + +static const unsigned long unicode_backtrans_90[] = { + 0xfa00000, 0xfa00000, 0xfc00000, 0xfa00000, 0x7400000, 0xfa00000, 0xfa00000, 0x000000, + 0xcc00000, 0x1000000, 0x1000000, 0xfa00000, 0x6400000, 0xfa00000, 0x200000, 0xfa00000, + 0xfa00000, 0xfa00000, 0x5000000, 0x200000, 0xfa00000, 0xea00000, 0x7200000, 0xfa00000, + 0x400000, 0xea00000, 0xfa00000, 0x7400000, 0x6000000, 0xfa00000, 0xfa00000, 0xfa00000, + 0xfa00000, 0xfa00000, 0xfa00000, 0xea00000, 0x6000000, 0x000000, 0x1000000, 0x200000, + 0x400000, 0x400000, 0x400000, 0x000000, 0x400000, 0x7400000, 0xfa00000, 0x7400000, + 0x000000, 0xea00000, 0xea00000, 0x4400000, 0x6400000, 0xfa00000, 0x7200000, 0x4400000, + 0xfa00000, 0x200000, 0x000000, 0x1000000, 0xfa00000, 0x6000000, 0xfa00000, 0x6400000, + 0x000000, 0xfa00000, 0xfa00000, 0x400000, 0x7400000, 0x200000, 0x000000, 0xfa00000, + 0x000000, 0x6200000, 0xea00000, 0xea00000, 0x4400000, 0xfa00000, 0xea00000, 0x7200000, + 0xfa00000, 0xfa00000, 0x7200000, 0xfa00000, 0xea00000, 0xea00000, 0x4200000, 0x1000000, + 0x7200000, 0xea00000, 0x000000, 0x7400000, 0xea00000, 0xec00000, 0xea00000, 0x000000, + 0xea00000, 0xca00000, 0x7400000, 0xfa00000, 0x4000000, 0x1200000, 0x400000, 0x6400000, + 0x7200000, 0xea00000, 0x000000, 0x6000000, 0x4400000, 0xfa00000, 0xfa00000, 0xea00000, + 0x6400000, 0x000000, 0xea00000, 0x6000000, 0x7400000, 0xfa00000, 0x6200000, 0xea00000, + 0xea00000, 0x6400000, 0xea00000, 0x6000000, 0xea00000, 0xfa00000, 0x6000000, 0xfa00000, + 0xfa00000, 0xea00000, 0xfa00000, 0xfa00000, 0xea00000, 0x6400000, 0x6000000, 0xea00000, + 0xfc00000, 0x200000, 0xea00000, 0x7400000, 0x400000, 0x6000000, 0x400000, 0xea00000, + 0x6400000, 0xfa00000, 0x000000, 0x1000000, 0x6000000, 0xfc00000, 0x000000, 0x5400000, + 0x6400000, 0xfc00000, 0x000000, 0x7400000, 0x000000, 0x1000000, 0x6000000, 0x6000000, + 0x6400000, 0x7400000, 0xfc00000, 0xfa00000, 0x000000, 0x6400000, 0xfa00000, 0x6000000, + 0xca00000, 0x000000, 0xfa00000, 0x000000, 0x1000000, 0x000000, 0x5000000, 0xfa00000, + 0xfc00000, 0xfa00000, 0x6400000, 0x7400000, 0x7400000, 0xfa00000, 0x7400000, 0x000000, + 0xfa00000, 0x1000000, 0x1000000, 0x5000000, 0x000000, 0x6400000, 0x7400000, 0x6000000, + 0x000000, 0xfa00000, 0x000000, 0x6400000, 0x5400000, 0x7400000, 0x000000, 0x7400000, + 0x6400000, 0x000000, 0xfa00000, 0x6000000, 0x400000, 0x000000, 0x7200000, 0x1000000, + 0x1000000, 0x1000000, 0x400000, 0x1000000, 0x6000000, 0x6400000, 0x6000000, 0x7400000, + 0x6400000, 0x6400000, 0x6000000, 0x7200000, 0x7400000, 0x7400000, 0x8800000, 0x6400000, + 0x6000000, 0xfa00000, 0x7200000, 0x6000000, 0x6200000, 0x6400000, 0x1000000, 0x1000000, + 0xfa00000, 0x6000000, 0x6000000, 0x7400000, 0x6000000, 0xfa00000, 0x000000, 0x7400000, + 0x6400000, 0x6000000, 0x6000000, 0x6000000, 0x7400000, 0xea00000, 0x400000, 0x200000, + 0x1000000, 0x6000000, 0x6000000, 0x6000000, 0x6000000, 0xfa00000, 0x7400000, 0x6400000 +}; + +static const unsigned long unicode_backtrans_91[] = { + 0x6400000, 0x6000000, 0xfa00000, 0x6000000, 0x7400000, 0x6400000, 0x6400000, 0x6000000, + 0x6400000, 0x6000000, 0x000000, 0x6000000, 0x000000, 0x6400000, 0x6000000, 0x6000000, + 0x6400000, 0x6000000, 0xea00000, 0x000000, 0x6400000, 0x8800000, 0x6400000, 0x6400000, + 0x6400000, 0xfa00000, 0x6400000, 0x6000000, 0x6400000, 0x6000000, 0x7400000, 0x6000000, + 0x6400000, 0x6000000, 0x7400000, 0x7400000, 0x6000000, 0x400000, 0x6000000, 0xec00000, + 0x6000000, 0x6400000, 0x6000000, 0x6000000, 0x6000000, 0xea00000, 0x6400000, 0x7400000, + 0x6200000, 0x7400000, 0xea00000, 0x6000000, 0x6400000, 0x6000000, 0x6400000, 0x400000, + 0x6000000, 0x7400000, 0x6400000, 0x6000000, 0x400000, 0x400000, 0x6000000, 0x6000000, + 0x6000000, 0x6000000, 0x000000, 0x7400000, 0x6000000, 0x6000000, 0x7000000, 0x6400000, + 0x6400000, 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, 0x7400000, + 0x7000000, 0x4000000, 0xfa00000, 0x6400000, 0x200000, 0x6000000, 0x6200000, 0x7400000, + 0x6200000, 0x4400000, 0x7400000, 0x400000, 0x4000000, 0x1000000, 0x5000000, 0x6000000, + 0x6000000, 0x7400000, 0xfa00000, 0x7200000, 0x7400000, 0x7200000, 0x000000, 0x4400000, + 0x6000000, 0xfa00000, 0xfa00000, 0x000000, 0xfa00000, 0x400000, 0x7000000, 0x7000000, + 0x5000000, 0x1000000, 0x7200000, 0x6200000, 0x7400000, 0xfa00000, 0x5000000, 0xfa00000, + 0xfa00000, 0x7400000, 0x6400000, 0x400000, 0x4000000, 0x1000000, 0x1000000, 0x1000000, + 0x6000000, 0x6400000, 0x6200000, 0x6400000, 0x6000000, 0x7400000, 0x6400000, 0xfa00000, + 0x000000, 0xfa00000, 0x6400000, 0xfa00000, 0x5000000, 0xfa00000, 0x4400000, 0x6000000, + 0x7200000, 0x7400000, 0xfa00000, 0x6400000, 0x400000, 0x400000, 0x000000, 0x200000, + 0x400000, 0x6000000, 0x7000000, 0x7000000, 0xea00000, 0x6000000, 0x6400000, 0x6000000, + 0x6000000, 0x6400000, 0x7200000, 0x7000000, 0x200000, 0x6000000, 0x400000, 0x6000000, + 0x6400000, 0x4000000, 0x7200000, 0xea00000, 0xec00000, 0x7400000, 0xfc00000, 0xfa00000, + 0x6400000, 0xec00000, 0x6400000, 0x6400000, 0xfa00000, 0xfa00000, 0x4400000, 0x6000000, + 0x200000, 0x6000000, 0x7200000, 0x4400000, 0x6400000, 0x6400000, 0x6000000, 0x400000, + 0xea00000, 0x6200000, 0x6400000, 0x6400000, 0x4000000, 0x6400000, 0x6200000, 0xfa00000, + 0x200000, 0xfa00000, 0x1000000, 0xea00000, 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, + 0xea00000, 0xfa00000, 0x000000, 0x6400000, 0x6400000, 0x6000000, 0x4200000, 0xec00000, + 0xea00000, 0x6400000, 0x6400000, 0x200000, 0xfa00000, 0xea00000, 0x400000, 0x4200000, + 0x000000, 0x200000, 0x6000000, 0xea00000, 0x6400000, 0x4400000, 0x6200000, 0xea00000, + 0x6000000, 0x6400000, 0xec00000, 0x6000000, 0x6400000, 0x6400000, 0x6400000, 0x400000, + 0x400000, 0x6400000, 0x000000, 0x6000000, 0x6000000, 0xea00000, 0x4200000, 0x6400000, + 0x6000000, 0x6400000, 0x4000000, 0x400000, 0x200000, 0x6400000, 0x4000000, 0x6200000 +}; + +static const unsigned long unicode_backtrans_92[] = { + 0x6400000, 0x6400000, 0x6000000, 0x6000000, 0x6400000, 0x6400000, 0x6400000, 0x6400000, + 0x4000000, 0x6400000, 0x6400000, 0x000000, 0x6400000, 0xea00000, 0x4200000, 0x6000000, + 0xec00000, 0xea00000, 0xec00000, 0x4400000, 0x6200000, 0x6200000, 0x6400000, 0xe800000, + 0x400000, 0x6000000, 0x6000000, 0x000000, 0x6400000, 0x400000, 0xea00000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x6400000, 0x6400000, 0x6400000, 0x6400000, 0x6000000, + 0x4400000, 0x200000, 0x4000000, 0x4000000, 0x200000, 0x6000000, 0x6400000, 0x400000, + 0x6400000, 0x6000000, 0x6000000, 0x6400000, 0xea00000, 0x4400000, 0x6400000, 0x6200000, + 0x6400000, 0x6400000, 0xec00000, 0x000000, 0x4400000, 0x6000000, 0x6400000, 0xea00000, + 0xec00000, 0x4000000, 0x400000, 0x400000, 0x4200000, 0xea00000, 0x6400000, 0x400000, + 0x6200000, 0xea00000, 0x6400000, 0x6200000, 0x6000000, 0x6400000, 0x6400000, 0x6400000, + 0x6200000, 0x6400000, 0x6000000, 0x6000000, 0x6000000, 0x4000000, 0x6000000, 0xea00000, + 0x4400000, 0x400000, 0x6200000, 0xea00000, 0x400000, 0x4400000, 0xea00000, 0x4000000, + 0x6400000, 0x6400000, 0xca00000, 0x6000000, 0xea00000, 0xec00000, 0xea00000, 0x6400000, + 0x400000, 0x400000, 0x000000, 0x4000000, 0x6000000, 0x6000000, 0x4400000, 0x6400000, + 0x6400000, 0x200000, 0x6000000, 0x000000, 0x1000000, 0x400000, 0x6400000, 0x4400000, + 0x6400000, 0x6400000, 0x6000000, 0x6400000, 0x6400000, 0x6400000, 0x6200000, 0x6400000, + 0xea00000, 0x4000000, 0x6000000, 0xea00000, 0x4000000, 0xea00000, 0x6000000, 0x6000000, + 0x6400000, 0x4400000, 0x6400000, 0x6000000, 0x6000000, 0x6400000, 0x7400000, 0x4000000, + 0x000000, 0xea00000, 0x400000, 0xea00000, 0x6000000, 0x6200000, 0xea00000, 0x6400000, + 0xea00000, 0x6400000, 0x6200000, 0x6200000, 0xea00000, 0x6000000, 0x000000, 0x400000, + 0x6400000, 0x6000000, 0x6000000, 0x6000000, 0x6400000, 0x6400000, 0x6000000, 0x6400000, + 0x6400000, 0x6000000, 0x6000000, 0x6400000, 0x6000000, 0x200000, 0x5000000, 0x400000, + 0x000000, 0x4000000, 0x6400000, 0xe800000, 0x6000000, 0x6000000, 0xec00000, 0xea00000, + 0x400000, 0xca00000, 0x4400000, 0x6400000, 0x6400000, 0x400000, 0x4000000, 0x4400000, + 0x6400000, 0x6400000, 0x6400000, 0x6400000, 0x6000000, 0x6400000, 0x6400000, 0x6400000, + 0x7400000, 0x6000000, 0x6000000, 0x6400000, 0xec00000, 0x6400000, 0x6400000, 0xea00000, + 0x6400000, 0x6000000, 0xea00000, 0x6400000, 0x4000000, 0x6400000, 0x000000, 0x6400000, + 0x6400000, 0x6400000, 0x000000, 0x4000000, 0x400000, 0x6400000, 0x6000000, 0x6400000, + 0x6400000, 0x6400000, 0x000000, 0x4400000, 0xea00000, 0x4400000, 0x6000000, 0x6400000, + 0x6400000, 0x6200000, 0xea00000, 0x4000000, 0x4400000, 0x200000, 0x6400000, 0x6000000, + 0x6400000, 0x6000000, 0x4200000, 0x4200000, 0x4000000, 0x000000, 0x4000000, 0x6000000, + 0xea00000, 0x6400000, 0x6200000, 0x6400000, 0xea00000, 0x4000000, 0x6000000, 0x6400000 +}; + +static const unsigned long unicode_backtrans_93[] = { + 0x6400000, 0x6000000, 0x6400000, 0x4000000, 0xe800000, 0x000000, 0x6200000, 0x4000000, + 0x6400000, 0x6000000, 0x000000, 0x6000000, 0x6000000, 0x6400000, 0x6000000, 0x6200000, + 0xea00000, 0x400000, 0x6000000, 0x6000000, 0x6400000, 0x6400000, 0x6000000, 0x000000, + 0xea00000, 0x6200000, 0xea00000, 0x6000000, 0x400000, 0x6400000, 0xec00000, 0xec00000, + 0xea00000, 0xec00000, 0xea00000, 0x6200000, 0xec00000, 0x6400000, 0xea00000, 0x6400000, + 0xea00000, 0x6400000, 0x6400000, 0xea00000, 0x4200000, 0x6000000, 0xea00000, 0xea00000, + 0x4000000, 0x4000000, 0x200000, 0x6400000, 0x6400000, 0x6200000, 0x6400000, 0x400000, + 0x6000000, 0x6000000, 0x200000, 0x200000, 0x6000000, 0x000000, 0x1000000, 0x000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4200000, 0x4000000, 0x6000000, 0x6400000, + 0xcc00000, 0x6400000, 0xe800000, 0xea00000, 0x6000000, 0xea00000, 0x6000000, 0x6000000, + 0x6400000, 0x6400000, 0x6400000, 0x000000, 0xea00000, 0x6400000, 0x6200000, 0x6400000, + 0x6400000, 0x6000000, 0x6400000, 0xea00000, 0x6200000, 0x000000, 0x6400000, 0x4000000, + 0x6200000, 0x6000000, 0x4000000, 0x6000000, 0x6400000, 0x6400000, 0x4000000, 0x6400000, + 0x4000000, 0x4400000, 0x7400000, 0x4000000, 0x6200000, 0x6400000, 0xca00000, 0x400000, + 0x6400000, 0x6400000, 0x000000, 0x4400000, 0x4400000, 0xea00000, 0x6400000, 0x6000000, + 0x4000000, 0x6000000, 0x6400000, 0x6000000, 0xea00000, 0x4400000, 0xea00000, 0x400000, + 0x6400000, 0x4400000, 0x6400000, 0x6000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x6400000, 0x6000000, 0x6400000, 0x400000, 0xea00000, 0x6400000, 0x6000000, 0x7400000, + 0x4000000, 0x6000000, 0x6400000, 0x000000, 0xea00000, 0x6400000, 0xea00000, 0x6200000, + 0x6400000, 0x6000000, 0xea00000, 0x6400000, 0x4000000, 0x6000000, 0x6400000, 0x6000000, + 0x4000000, 0x6400000, 0x6000000, 0xec00000, 0x6400000, 0x6000000, 0x6400000, 0xea00000, + 0x6400000, 0x6400000, 0x6000000, 0x400000, 0xea00000, 0xca00000, 0x6200000, 0x6000000, + 0xea00000, 0x6000000, 0x6000000, 0x6000000, 0x6400000, 0x6400000, 0x400000, 0x6000000, + 0x4000000, 0x200000, 0x400000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x4000000, + 0x6000000, 0x400000, 0x6000000, 0xea00000, 0x6400000, 0x400000, 0x4400000, 0x6400000, + 0x6200000, 0x400000, 0x7400000, 0x4400000, 0x6400000, 0x6400000, 0x6000000, 0x6000000, + 0x6200000, 0xea00000, 0x6000000, 0x4400000, 0x6000000, 0x6000000, 0x7200000, 0x6200000, + 0x6200000, 0x6400000, 0x6000000, 0x4000000, 0x6400000, 0x6200000, 0xec00000, 0x6400000, + 0x4000000, 0xea00000, 0x6400000, 0x6000000, 0xea00000, 0x200000, 0x6400000, 0x6400000, + 0x6200000, 0x000000, 0x000000, 0x000000, 0x6000000, 0x000000, 0x6000000, 0x000000, + 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x6000000, 0xe800000, 0x6400000, + 0x6400000, 0x6400000, 0x6400000, 0x6400000, 0x6000000, 0x6400000, 0x6000000, 0x6000000 +}; + +static const unsigned long unicode_backtrans_94[] = { + 0x6000000, 0x4400000, 0x400000, 0x6200000, 0xcc00000, 0x000000, 0x6000000, 0x6200000, + 0x4400000, 0x6400000, 0x6000000, 0x6000000, 0x6000000, 0x6400000, 0x6400000, 0x6400000, + 0x6200000, 0x6000000, 0x6000000, 0x6200000, 0x6200000, 0x6400000, 0x6400000, 0x4400000, + 0xea00000, 0x6200000, 0x200000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x400000, + 0x6000000, 0x200000, 0x000000, 0x000000, 0x4000000, 0xc800000, 0x4000000, 0x4000000, + 0x6000000, 0x6000000, 0x6000000, 0xea00000, 0x6000000, 0x4000000, 0x6400000, 0x400000, + 0x6000000, 0x6400000, 0x6400000, 0x6400000, 0x400000, 0xea00000, 0x6200000, 0x6000000, + 0xea00000, 0x6000000, 0x6200000, 0x6400000, 0x6000000, 0x6400000, 0x5000000, 0x6400000, + 0x6000000, 0x200000, 0x4000000, 0x4400000, 0xea00000, 0x6400000, 0x6000000, 0x6000000, + 0x6400000, 0x6000000, 0x6400000, 0x6000000, 0x6400000, 0x4000000, 0x000000, 0x6000000, + 0x6000000, 0xea00000, 0xea00000, 0x200000, 0x4000000, 0x6400000, 0x000000, 0x6000000, + 0x4000000, 0x400000, 0x200000, 0xca00000, 0x400000, 0x6000000, 0x6200000, 0x400000, + 0x6200000, 0x400000, 0x6200000, 0x6400000, 0x6000000, 0x4000000, 0x000000, 0x4000000, + 0x6400000, 0x6000000, 0x6200000, 0x7400000, 0x4000000, 0x6400000, 0x6400000, 0x6400000, + 0x6200000, 0x6400000, 0x6400000, 0x6000000, 0x6000000, 0x6200000, 0x6000000, 0x6200000, + 0x6000000, 0x4000000, 0x000000, 0x4000000, 0x6200000, 0xea00000, 0x6200000, 0xea00000, + 0x6000000, 0x6200000, 0x6000000, 0x6400000, 0x400000, 0x5000000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, + 0x1000000, 0x000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x000000, 0x1000000, + 0x000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x5000000, + 0x1000000, 0x1000000, 0x5000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, + 0x1000000, 0x5000000, 0x1000000, 0x5000000, 0x1000000, 0x1000000, 0x1000000, 0x000000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x000000, + 0x1000000, 0x1000000, 0x1000000, 0x000000, 0x000000, 0x1000000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x000000, 0x1000000, 0x5000000, 0x1000000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x000000, 0x1000000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x5000000, 0x1000000, + 0x1000000, 0x1000000, 0x1000000, 0x000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000 +}; + +static const unsigned long unicode_backtrans_95[] = { + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x000000, 0x1000000, 0x1000000, 0x1000000, + 0x000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x000000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x5000000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x1000000, 0x000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x000000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x1000000, 0x000000, 0x1000000, 0x1000000, 0x1000000, 0x5000000, + 0x000000, 0x1000000, 0x1000000, 0x000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x000000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, + 0x000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x000000, 0x1000000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x000000, 0x000000, 0x1000000, 0xea00000, + 0x4400000, 0x400000, 0x6000000, 0x6000000, 0x6000000, 0x6000000, 0x400000, 0x5000000, + 0xea00000, 0x000000, 0x6200000, 0xea00000, 0x400000, 0x4000000, 0x6000000, 0x200000, + 0x6400000, 0xea00000, 0x200000, 0xea00000, 0x6400000, 0x6400000, 0x6400000, 0xea00000, + 0x6000000, 0xea00000, 0xe800000, 0xea00000, 0xea00000, 0x000000, 0x4200000, 0x4000000, + 0xea00000, 0x4200000, 0x000000, 0x6000000, 0x6000000, 0x400000, 0x6400000, 0x6400000, + 0x4200000, 0x6400000, 0x4200000, 0xea00000, 0xea00000, 0xea00000, 0x4400000, 0x4200000, + 0xea00000, 0x6400000, 0x4000000, 0x6400000, 0x6400000, 0xea00000, 0x6000000, 0x000000, + 0x6000000, 0xe800000, 0x200000, 0x000000, 0x400000, 0x6000000, 0x6400000, 0x6000000, + 0x000000, 0x6200000, 0x6400000, 0xea00000, 0xea00000, 0x6400000, 0x6200000, 0x6400000, + 0x6000000, 0x000000, 0x000000, 0x6200000, 0x000000, 0x6000000, 0x6400000, 0xea00000, + 0x6400000, 0x6400000, 0xea00000, 0x6400000, 0x6200000, 0x6200000, 0x000000, 0x000000, + 0x6400000, 0x6400000, 0x6400000, 0x6400000, 0xea00000, 0xea00000, 0xea00000, 0x000000, + 0x200000, 0x400000, 0x6400000, 0x6000000, 0xea00000, 0x400000, 0x6400000, 0x6400000, + 0x6400000, 0xea00000, 0xea00000, 0x6000000, 0x6400000, 0x6200000, 0x400000, 0x000000, + 0x5000000, 0x1000000, 0x1000000, 0x1000000, 0x000000, 0x1000000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x5000000, 0x1000000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x000000 +}; + +static const unsigned long unicode_backtrans_96[] = { + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x000000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x1000000, 0x000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, + 0x000000, 0x1000000, 0x1000000, 0x000000, 0xfa00000, 0x5400000, 0x6400000, 0x1000000, + 0x6000000, 0xfa00000, 0x7400000, 0x6000000, 0x6400000, 0x400000, 0x400000, 0x000000, + 0x6200000, 0x000000, 0xfa00000, 0x000000, 0x6400000, 0x6000000, 0xfa00000, 0x6200000, + 0x6000000, 0x7400000, 0xfa00000, 0x5400000, 0x1000000, 0x1000000, 0x1000000, 0x400000, + 0x4400000, 0x6400000, 0x6400000, 0xfa00000, 0x7400000, 0x7400000, 0x000000, 0xfa00000, + 0xfa00000, 0x4400000, 0xfa00000, 0x6000000, 0xfa00000, 0x5000000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x6000000, 0xfa00000, 0xfa00000, 0xfa00000, 0x6000000, 0x6200000, + 0xfa00000, 0x6000000, 0x400000, 0x6000000, 0x7400000, 0x1000000, 0x4400000, 0x400000, + 0x6400000, 0x000000, 0x000000, 0xfa00000, 0xea00000, 0xea00000, 0xea00000, 0xfa00000, + 0x000000, 0x7400000, 0xfa00000, 0xea00000, 0xfa00000, 0x200000, 0x200000, 0x1000000, + 0x1000000, 0x5000000, 0xfa00000, 0x6000000, 0x7200000, 0x6000000, 0x400000, 0x6000000, + 0xea00000, 0x6000000, 0x7200000, 0xea00000, 0x7400000, 0xfa00000, 0xfa00000, 0xfa00000, + 0xea00000, 0x000000, 0x200000, 0x4400000, 0x6400000, 0xea00000, 0x6400000, 0x400000, + 0x6000000, 0x4400000, 0x400000, 0x6400000, 0x6400000, 0xfa00000, 0xfa00000, 0x6000000, + 0x7200000, 0x6400000, 0xea00000, 0xfa00000, 0x000000, 0xfa00000, 0xea00000, 0x5200000, + 0x1000000, 0x6400000, 0x6000000, 0x6000000, 0xfa00000, 0xea00000, 0x4400000, 0x7200000, + 0xfa00000, 0xfa00000, 0x400000, 0xea00000, 0xfa00000, 0x400000, 0x6000000, 0x400000, + 0x200000, 0x6000000, 0x6000000, 0xca00000, 0x6400000, 0x4400000, 0x400000, 0xfa00000, + 0xea00000, 0x6400000, 0xea00000, 0x000000, 0x6000000, 0x000000, 0x6400000, 0x400000, + 0x7200000, 0xea00000, 0x200000, 0x7400000, 0x6200000, 0x000000, 0x5200000, 0x8a00000, + 0x6200000, 0x7200000, 0x400000, 0xea00000, 0x7200000, 0x5000000, 0x1000000, 0x6000000, + 0xfa00000, 0xfa00000, 0x6000000, 0x6000000, 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, + 0x6000000, 0xfa00000, 0x6400000, 0xea00000, 0xfa00000, 0xfa00000, 0xfa00000, 0x1000000, + 0x000000, 0x200000, 0x7400000, 0x6000000, 0x6000000, 0xfa00000, 0xea00000, 0x6000000, + 0x6400000, 0xea00000, 0x6400000, 0xea00000, 0xea00000, 0x6400000, 0x6400000, 0x6400000, + 0x1000000, 0x6000000, 0xea00000, 0xea00000, 0x000000, 0x6000000, 0x000000, 0x000000, + 0xfa00000, 0xfc00000, 0xfa00000, 0x200000, 0x000000, 0x000000, 0x000000, 0xfc00000, + 0xea00000, 0x6400000, 0xea00000, 0x1000000, 0x4000000, 0x6000000, 0xfa00000, 0xfa00000, + 0x6000000, 0xfa00000, 0x6400000, 0xea00000, 0x000000, 0x6000000, 0x1000000, 0x6000000 +}; + +static const unsigned long unicode_backtrans_97[] = { + 0xfa00000, 0x1000000, 0x6400000, 0x4400000, 0x7200000, 0x6400000, 0xfa00000, 0xfa00000, + 0x7200000, 0x7400000, 0x200000, 0x6000000, 0x000000, 0x7200000, 0x7200000, 0x7200000, + 0x6000000, 0xea00000, 0x6000000, 0xfa00000, 0x000000, 0x000000, 0xfa00000, 0x000000, + 0x6000000, 0xea00000, 0x400000, 0x4400000, 0xfa00000, 0x6400000, 0xfa00000, 0x6000000, + 0x6000000, 0x4400000, 0x6400000, 0x6400000, 0x6200000, 0x6000000, 0x6000000, 0xea00000, + 0x6400000, 0x6000000, 0x7200000, 0x6000000, 0x6000000, 0x1000000, 0x6000000, 0x6000000, + 0xfa00000, 0x4400000, 0xfa00000, 0x400000, 0x000000, 0x6000000, 0x4000000, 0x000000, + 0x7200000, 0xfa00000, 0x6000000, 0x000000, 0x000000, 0xea00000, 0x7200000, 0x6000000, + 0x4000000, 0x4400000, 0xea00000, 0x6400000, 0xea00000, 0x000000, 0x6200000, 0x6000000, + 0xea00000, 0x6200000, 0x400000, 0x6000000, 0x000000, 0x000000, 0x400000, 0x400000, + 0x000000, 0xc800000, 0x7200000, 0x1000000, 0x000000, 0x4400000, 0xfa00000, 0x4400000, + 0x6400000, 0x1200000, 0x6400000, 0x7400000, 0xca00000, 0x4000000, 0xfa00000, 0x4000000, + 0x7200000, 0xfa00000, 0xfa00000, 0x400000, 0x200000, 0x1000000, 0x6200000, 0x400000, + 0x6200000, 0xfa00000, 0x6400000, 0x200000, 0x6000000, 0xca00000, 0x6400000, 0x000000, + 0x6000000, 0x4200000, 0x6000000, 0x7400000, 0xfa00000, 0x000000, 0x7400000, 0xec00000, + 0x6400000, 0x200000, 0xea00000, 0x6400000, 0x7200000, 0x6400000, 0x6000000, 0x6400000, + 0x6400000, 0x6200000, 0x6000000, 0x6000000, 0x6200000, 0x7200000, 0x200000, 0x4000000, + 0x6000000, 0x4400000, 0x6000000, 0xfa00000, 0x000000, 0xfa00000, 0x6000000, 0xea00000, + 0x200000, 0x1000000, 0x1000000, 0x000000, 0x7000000, 0x400000, 0x400000, 0x6400000, + 0x7200000, 0x6400000, 0x6400000, 0x4000000, 0x6200000, 0x6000000, 0x6400000, 0x4400000, + 0xfa00000, 0x6000000, 0x6400000, 0x7200000, 0x6000000, 0x6000000, 0x6200000, 0x000000, + 0xea00000, 0x000000, 0x6000000, 0xfa00000, 0x6400000, 0xfa00000, 0x6400000, 0x1000000, + 0x000000, 0x4400000, 0x5400000, 0x6200000, 0x5200000, 0x400000, 0x6400000, 0x6000000, + 0x4400000, 0x6400000, 0x4400000, 0x6000000, 0x400000, 0x4000000, 0x4400000, 0x6400000, + 0x4000000, 0x6400000, 0x4000000, 0x6200000, 0x6400000, 0x6400000, 0xea00000, 0x6400000, + 0x4200000, 0x6400000, 0x400000, 0xea00000, 0x6400000, 0x6400000, 0x6400000, 0x6000000, + 0x6400000, 0x400000, 0x4000000, 0xea00000, 0x6400000, 0x6000000, 0x6000000, 0x6400000, + 0x6400000, 0x6400000, 0x000000, 0x400000, 0xea00000, 0x6400000, 0x6400000, 0x6000000, + 0x4400000, 0x6400000, 0x000000, 0x6000000, 0x400000, 0x6000000, 0x5000000, 0x1000000, + 0x000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x7200000, 0x4200000, 0x400000, + 0x6000000, 0x6400000, 0x4200000, 0xfa00000, 0x400000, 0x5200000, 0xfa00000, 0x400000, + 0x6400000, 0x6000000, 0x6400000, 0xea00000, 0x000000, 0x6000000, 0x6000000, 0xea00000 +}; + +static const unsigned long unicode_backtrans_98[] = { + 0xe800000, 0xea00000, 0xea00000, 0xea00000, 0x6000000, 0xea00000, 0xea00000, 0x6400000, + 0xea00000, 0x000000, 0xec00000, 0x000000, 0xea00000, 0x6400000, 0x6400000, 0x6200000, + 0xea00000, 0xea00000, 0xea00000, 0xea00000, 0x4400000, 0x4000000, 0x6400000, 0xea00000, + 0xea00000, 0x400000, 0x200000, 0x6000000, 0x6400000, 0x6000000, 0x6400000, 0x4000000, + 0x6400000, 0x6200000, 0x000000, 0x4400000, 0x6200000, 0x400000, 0x6400000, 0x6000000, + 0x6000000, 0x6000000, 0x000000, 0x6400000, 0x200000, 0xea00000, 0x4400000, 0x6400000, + 0xec00000, 0x000000, 0x6400000, 0x4400000, 0x4200000, 0x6400000, 0x000000, 0x6200000, + 0xea00000, 0xe800000, 0x000000, 0xea00000, 0x200000, 0x200000, 0x400000, 0x000000, + 0x000000, 0x6000000, 0x000000, 0x6000000, 0x6400000, 0x6000000, 0xea00000, 0x4400000, + 0x6000000, 0x6000000, 0x6400000, 0x4200000, 0xea00000, 0xea00000, 0xea00000, 0x6200000, + 0x6000000, 0x6400000, 0x6400000, 0x6400000, 0x8a00000, 0x200000, 0x400000, 0x6400000, + 0xea00000, 0x6400000, 0x8c00000, 0x6200000, 0x6000000, 0x6000000, 0xea00000, 0x6000000, + 0x6000000, 0x000000, 0x6400000, 0x6400000, 0x6000000, 0xec00000, 0x4400000, 0xea00000, + 0x4000000, 0x6000000, 0x6400000, 0xea00000, 0x4400000, 0x000000, 0x000000, 0xea00000, + 0x6200000, 0x6200000, 0x6000000, 0x6200000, 0x6200000, 0x5000000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x1000000, 0x000000, 0x1000000, 0x1000000, 0x000000, 0x1000000, + 0x1000000, 0x1000000, 0x000000, 0x1000000, 0x1000000, 0x000000, 0x1000000, 0x1000000, + 0x1000000, 0x000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x1000000, 0x000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, + 0xea00000, 0x6000000, 0x200000, 0x400000, 0x6000000, 0x6400000, 0x6400000, 0xea00000, + 0x400000, 0xea00000, 0x6000000, 0x6000000, 0x4400000, 0x000000, 0x6200000, 0x4400000, + 0x6400000, 0x4000000, 0x6400000, 0x6400000, 0x6000000, 0x6000000, 0x6000000, 0x6400000, + 0x6000000, 0x6000000, 0x6400000, 0x4200000, 0xea00000, 0x400000, 0x6200000, 0xc800000, + 0x4400000, 0x6000000, 0x4000000, 0x6000000, 0x6400000, 0x000000, 0x5000000, 0x000000, + 0x000000, 0x1000000, 0x1000000, 0x1000000, 0x000000, 0x1000000, 0x000000, 0x000000, + 0x1000000, 0x1000000, 0x1000000, 0xea00000, 0xca00000, 0x000000, 0x5000000, 0xfa00000, + 0x4000000, 0xcc00000, 0xea00000, 0x6400000, 0x000000, 0x6400000, 0x4400000, 0x7400000, + 0x1000000, 0x6200000, 0x6400000, 0x6200000, 0x4000000, 0xea00000, 0x8a00000, 0xea00000, + 0x000000, 0x4000000, 0x6200000, 0x400000, 0xea00000, 0x4000000, 0x6400000, 0x000000, + 0x000000, 0x6000000, 0x6000000, 0x000000, 0xea00000, 0xea00000, 0xea00000, 0x000000 +}; + +static const unsigned long unicode_backtrans_99[] = { + 0x6000000, 0x000000, 0x6400000, 0xea00000, 0x000000, 0x6200000, 0x000000, 0x6400000, + 0x6400000, 0xea00000, 0xea00000, 0x000000, 0xea00000, 0x1000000, 0x4000000, 0x000000, + 0xfa00000, 0x6400000, 0x6200000, 0xea00000, 0x6200000, 0x6400000, 0x6400000, 0x6400000, + 0xea00000, 0x4000000, 0x6400000, 0x6400000, 0x4400000, 0x200000, 0xea00000, 0x6400000, + 0x8a00000, 0x6200000, 0x400000, 0x000000, 0x6200000, 0x6000000, 0x400000, 0x6400000, + 0xea00000, 0x6000000, 0x6000000, 0x6400000, 0x6200000, 0x6000000, 0x7200000, 0x6000000, + 0x6000000, 0x6400000, 0x6400000, 0x6400000, 0x400000, 0x6400000, 0x000000, 0x4000000, + 0x4000000, 0x4400000, 0x6400000, 0x4400000, 0x6400000, 0x6200000, 0x6200000, 0x6000000, + 0x4400000, 0x6400000, 0x4200000, 0x6000000, 0x000000, 0xea00000, 0x400000, 0x6400000, + 0x6400000, 0xea00000, 0x4000000, 0xea00000, 0xea00000, 0xcc00000, 0x6400000, 0x000000, + 0x6200000, 0xea00000, 0xea00000, 0x6000000, 0xfc00000, 0x7200000, 0x6000000, 0xea00000, + 0x6400000, 0x6400000, 0x000000, 0x6400000, 0x6400000, 0x4000000, 0x6400000, 0x6400000, + 0x400000, 0x6000000, 0x4000000, 0x5000000, 0x000000, 0x1000000, 0x000000, 0x1000000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x1000000, 0x000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, + 0x000000, 0x000000, 0x1000000, 0x000000, 0x1000000, 0x1000000, 0x000000, 0x1000000, + 0x1000000, 0x1000000, 0x000000, 0x000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, + 0x1000000, 0x000000, 0x1000000, 0x1000000, 0x000000, 0x1000000, 0x000000, 0x1000000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0xfa00000, 0x7200000, + 0x7200000, 0xfa00000, 0x000000, 0x4400000, 0x6000000, 0xec00000, 0x6000000, 0x400000, + 0x000000, 0x6000000, 0x000000, 0x6000000, 0x4000000, 0xfa00000, 0x6400000, 0x6000000, + 0xfa00000, 0x000000, 0x4000000, 0x6000000, 0xea00000, 0xea00000, 0xea00000, 0x6000000, + 0x6400000, 0xec00000, 0x6400000, 0xea00000, 0xea00000, 0x6400000, 0x000000, 0x000000, + 0x4000000, 0xec00000, 0x6400000, 0x6000000, 0x4200000, 0x6400000, 0x000000, 0x400000, + 0x000000, 0xea00000, 0x6000000, 0x6400000, 0x4200000, 0x4200000, 0x200000, 0x6000000, + 0x200000, 0x6400000, 0x000000, 0x6000000, 0x6000000, 0x6000000, 0x6000000, 0x6000000, + 0xea00000, 0xea00000, 0xea00000, 0x6400000, 0x6400000, 0xea00000, 0x6000000, 0x6000000, + 0x6200000, 0xec00000, 0x4400000, 0x6200000, 0x6400000, 0xea00000, 0x400000, 0xea00000, + 0x4000000, 0x4000000, 0x6200000, 0x6000000, 0x6000000, 0x6000000, 0x4000000, 0x6400000, + 0x000000, 0x6000000, 0x6400000, 0x400000, 0x6400000, 0xea00000, 0x6200000, 0x000000, + 0x6400000, 0xea00000, 0x200000, 0x000000, 0x6400000, 0x4400000, 0x6000000, 0x6000000, + 0x6200000, 0x6400000, 0x6000000, 0x6200000, 0x6000000, 0x6400000, 0x6400000, 0xea00000 +}; + +static const unsigned long unicode_backtrans_9a[] = { + 0x000000, 0xea00000, 0x6400000, 0x6400000, 0x6400000, 0x6200000, 0x6000000, 0x6000000, + 0x8800000, 0x6000000, 0x6000000, 0x6400000, 0x4400000, 0x6000000, 0xea00000, 0xea00000, + 0x4400000, 0x6400000, 0x200000, 0x200000, 0x6000000, 0x6000000, 0x6400000, 0x000000, + 0x000000, 0xea00000, 0x6000000, 0x6000000, 0x6000000, 0x6000000, 0x6400000, 0x4000000, + 0x6400000, 0x4000000, 0x6400000, 0x6400000, 0x6400000, 0x6000000, 0x4000000, 0x6400000, + 0x200000, 0x6000000, 0x6000000, 0xea00000, 0x6000000, 0x6400000, 0x6400000, 0x4000000, + 0xea00000, 0x6000000, 0x6000000, 0x400000, 0x6000000, 0x6400000, 0xec00000, 0xea00000, + 0x6400000, 0x6000000, 0x6000000, 0x4000000, 0x4000000, 0x6000000, 0x6200000, 0x6000000, + 0xea00000, 0x6400000, 0x6200000, 0xea00000, 0x6400000, 0xea00000, 0x6000000, 0x400000, + 0x6000000, 0x6000000, 0x6400000, 0x400000, 0x6400000, 0xea00000, 0x6400000, 0x6000000, + 0x6000000, 0x400000, 0x6000000, 0x6000000, 0x6400000, 0xea00000, 0x6400000, 0xea00000, + 0x4000000, 0x6000000, 0xea00000, 0xea00000, 0x4000000, 0x400000, 0x6000000, 0xea00000, + 0x6000000, 0x000000, 0xea00000, 0x4000000, 0x6200000, 0xea00000, 0x6000000, 0x6000000, + 0x6000000, 0xea00000, 0xea00000, 0x6200000, 0x5000000, 0x1000000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x1000000, 0x000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, + 0x1000000, 0x000000, 0x1000000, 0x1000000, 0x1000000, 0x000000, 0x000000, 0x5000000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x000000, 0x000000, 0x1000000, 0x1000000, + 0x1000000, 0x000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x000000, 0x1000000, + 0xfa00000, 0x000000, 0x400000, 0x6000000, 0x400000, 0x6200000, 0x400000, 0x6400000, + 0x7200000, 0x7000000, 0x4400000, 0x6000000, 0x6400000, 0x400000, 0x5400000, 0x7000000, + 0xfa00000, 0x6400000, 0x5000000, 0x6400000, 0x7200000, 0x4000000, 0x6400000, 0x6400000, + 0x7200000, 0x7400000, 0x7000000, 0x400000, 0x200000, 0x1000000, 0x6400000, 0x6000000, + 0x400000, 0x000000, 0x6000000, 0x1000000, 0x1000000, 0x6000000, 0x400000, 0x6200000, + 0x6400000, 0x7200000, 0x6400000, 0xfa00000, 0xea00000, 0x6400000, 0x6400000, 0x4400000, + 0xfa00000, 0x000000, 0x000000, 0x400000, 0x6400000, 0x000000, 0x200000, 0x7200000, + 0x4400000, 0x7000000, 0x4200000, 0x6200000, 0x400000, 0x8c00000, 0x7200000, 0x6400000, + 0x000000, 0x400000, 0x200000, 0x7200000, 0x6400000, 0x7200000, 0xea00000, 0x7200000, + 0x000000, 0x6200000, 0x6400000, 0x6400000, 0x4200000, 0x400000, 0x6000000, 0x6200000, + 0x000000, 0x7400000, 0x6400000, 0x7200000, 0x6000000, 0x6400000, 0x6000000, 0x4400000 +}; + +static const unsigned long unicode_backtrans_9b[] = { + 0x400000, 0x6400000, 0x4400000, 0x7400000, 0x6400000, 0x6400000, 0x6200000, 0x000000, + 0x7400000, 0x4400000, 0x6000000, 0x6400000, 0x6400000, 0x6400000, 0x6400000, 0x5000000, + 0x6400000, 0x6000000, 0x6400000, 0x1000000, 0x4000000, 0x6000000, 0x6400000, 0x6000000, + 0x6200000, 0x6400000, 0xea00000, 0x400000, 0x400000, 0x000000, 0x6000000, 0x7200000, + 0x6400000, 0x000000, 0x6200000, 0x7200000, 0x6000000, 0x6200000, 0x400000, 0xea00000, + 0x6200000, 0x6200000, 0xca00000, 0x6400000, 0x000000, 0x4400000, 0x6200000, 0x7200000, + 0x000000, 0xea00000, 0x7200000, 0x6400000, 0x4400000, 0x6400000, 0x000000, 0x6400000, + 0x000000, 0x4400000, 0x6400000, 0x7200000, 0xfa00000, 0x400000, 0x6000000, 0x6000000, + 0x4000000, 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, 0x6000000, 0x1000000, + 0x7400000, 0x1000000, 0x6000000, 0x6400000, 0x6400000, 0x7200000, 0x6200000, 0xfa00000, + 0x4000000, 0x7200000, 0x6000000, 0x000000, 0xfa00000, 0x6400000, 0x6400000, 0x400000, + 0x6200000, 0x6000000, 0xea00000, 0x6400000, 0x000000, 0x000000, 0x400000, 0x6000000, + 0x6000000, 0x6400000, 0x000000, 0x400000, 0x6000000, 0x400000, 0x6400000, 0x6000000, + 0x6400000, 0x4000000, 0x400000, 0x400000, 0x6400000, 0x400000, 0x400000, 0xea00000, + 0x6000000, 0x6000000, 0x000000, 0x400000, 0x6200000, 0x6400000, 0x6000000, 0x6400000, + 0x400000, 0x400000, 0x6000000, 0x6000000, 0x6000000, 0x6000000, 0x6000000, 0x4400000, + 0x6400000, 0x4000000, 0x6000000, 0x4200000, 0x400000, 0x6400000, 0x6400000, 0x6400000, + 0x6000000, 0x400000, 0x400000, 0x4400000, 0x000000, 0x4400000, 0xca00000, 0x4400000, + 0x6400000, 0xea00000, 0x6200000, 0x6200000, 0x400000, 0x6000000, 0x200000, 0x4200000, + 0x000000, 0x000000, 0x6400000, 0x6000000, 0x000000, 0x4400000, 0x6400000, 0xca00000, + 0x6200000, 0x6000000, 0x6000000, 0x000000, 0x6000000, 0x6000000, 0x6400000, 0x400000, + 0x6200000, 0x400000, 0x6200000, 0xea00000, 0x400000, 0x6200000, 0xea00000, 0x6000000, + 0x4400000, 0x400000, 0x400000, 0x000000, 0x200000, 0x6000000, 0x6000000, 0x400000, + 0x6400000, 0x6200000, 0x000000, 0x400000, 0x400000, 0x6000000, 0x400000, 0x6400000, + 0x6200000, 0x6400000, 0x000000, 0x6000000, 0x6000000, 0x000000, 0x6200000, 0x6400000, + 0x6400000, 0xea00000, 0x6200000, 0x000000, 0x000000, 0x000000, 0x400000, 0x4200000, + 0x400000, 0x200000, 0x200000, 0x6000000, 0x6200000, 0x6000000, 0xea00000, 0x6400000, + 0x400000, 0x6000000, 0x6000000, 0x6200000, 0x6000000, 0x4400000, 0x6000000, 0x400000, + 0x6000000, 0x6200000, 0x6200000, 0x200000, 0xea00000, 0x6400000, 0x6000000, 0x6400000, + 0xea00000, 0x4000000, 0x6400000, 0x6400000, 0x6000000, 0x4000000, 0x000000, 0x400000, + 0x6200000, 0x4200000, 0x200000, 0x400000, 0x4000000, 0x200000, 0x000000, 0x6400000, + 0x6400000, 0x400000, 0x400000, 0x000000, 0x000000, 0x6400000, 0x000000, 0x4400000 +}; + +static const unsigned long unicode_backtrans_9c[] = { + 0x400000, 0x000000, 0x4400000, 0x000000, 0x200000, 0x6000000, 0x6200000, 0x6000000, + 0x6200000, 0x6200000, 0x4200000, 0x6400000, 0x4200000, 0xea00000, 0x6000000, 0x400000, + 0xca00000, 0x400000, 0xea00000, 0x6200000, 0x6200000, 0xca00000, 0x400000, 0x6000000, + 0x400000, 0x400000, 0x400000, 0x4200000, 0x6400000, 0x6000000, 0x400000, 0x4000000, + 0x4000000, 0x6200000, 0x400000, 0x6400000, 0x6200000, 0xea00000, 0x4400000, 0x400000, + 0x6400000, 0x6400000, 0x400000, 0x6000000, 0x6000000, 0x6200000, 0x200000, 0x4200000, + 0x200000, 0x6400000, 0xea00000, 0x6000000, 0x6000000, 0x4400000, 0x6400000, 0x6400000, + 0x000000, 0x6200000, 0x4200000, 0xea00000, 0x6000000, 0x6400000, 0x6200000, 0x6000000, + 0x6000000, 0x6400000, 0x000000, 0x400000, 0x6400000, 0x4400000, 0x6200000, 0x8a00000, + 0x6200000, 0xec00000, 0x6400000, 0x6000000, 0x6000000, 0x6000000, 0x6400000, 0x4400000, + 0x6400000, 0x000000, 0x6200000, 0x4400000, 0x6400000, 0x6000000, 0x6400000, 0xea00000, + 0x6400000, 0x6000000, 0x200000, 0x400000, 0x400000, 0x4400000, 0x6400000, 0x6400000, + 0x6200000, 0x000000, 0x6000000, 0x6400000, 0x000000, 0x000000, 0x6000000, 0x6200000, + 0x6400000, 0x400000, 0x400000, 0x400000, 0x000000, 0x6000000, 0x6400000, 0x000000, + 0x400000, 0x6000000, 0x4400000, 0x6000000, 0x6000000, 0x6400000, 0x200000, 0x6400000, + 0x6200000, 0x6000000, 0x6000000, 0x4400000, 0x5000000, 0x000000, 0x000000, 0x1000000, + 0x000000, 0x1000000, 0x1000000, 0x000000, 0x000000, 0x1000000, 0x1000000, 0x1000000, + 0x1000000, 0x000000, 0x000000, 0x1000000, 0x000000, 0x1000000, 0x1000000, 0x000000, + 0x1000000, 0x1000000, 0x1000000, 0x000000, 0x1000000, 0x1000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x1000000, 0x1000000, 0x1000000, 0x000000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x000000, 0x1000000, 0x000000, 0x1000000, 0x1000000, 0x000000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, + 0x1000000, 0x000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, + 0x000000, 0x000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, + 0x1000000, 0x000000, 0x000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x000000, 0x000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, + 0x000000, 0x000000, 0x1000000, 0x000000, 0x000000, 0xea00000, 0x6400000, 0xea00000, + 0x000000, 0xea00000, 0x6000000, 0x200000, 0x200000, 0x6000000, 0x000000, 0x000000, + 0x200000, 0x6000000, 0x6400000, 0xea00000, 0xea00000, 0x6000000, 0xea00000, 0x6400000, + 0x000000, 0x6400000, 0x6000000, 0x6000000, 0x6000000, 0x6000000, 0x000000, 0x6000000 +}; + +static const unsigned long unicode_backtrans_9d[] = { + 0x6000000, 0x000000, 0x4400000, 0x6200000, 0x6000000, 0x6000000, 0x6200000, 0x6200000, + 0x6200000, 0xea00000, 0x000000, 0x400000, 0x4000000, 0x000000, 0x200000, 0x000000, + 0x6000000, 0x400000, 0x6200000, 0x000000, 0x6000000, 0x6200000, 0x4000000, 0x6400000, + 0x6400000, 0x6000000, 0x000000, 0xea00000, 0x400000, 0x6400000, 0x6400000, 0x6200000, + 0x6000000, 0x4000000, 0x6000000, 0x6200000, 0x000000, 0x6000000, 0xea00000, 0x000000, + 0xea00000, 0x6000000, 0x200000, 0x200000, 0x200000, 0x6000000, 0x6000000, 0x6400000, + 0x6400000, 0x6000000, 0x400000, 0x6400000, 0x4400000, 0x000000, 0x6000000, 0x6000000, + 0x6000000, 0x4000000, 0x400000, 0xea00000, 0x400000, 0x6400000, 0x6200000, 0x6200000, + 0x6000000, 0x6200000, 0x6400000, 0x6400000, 0x4200000, 0x6400000, 0x200000, 0x400000, + 0x200000, 0x4000000, 0x6400000, 0x6000000, 0x6000000, 0x000000, 0x4000000, 0x6000000, + 0x4200000, 0xea00000, 0x6000000, 0x6400000, 0x6400000, 0x000000, 0x6000000, 0x6000000, + 0x6000000, 0x6200000, 0x6000000, 0x6000000, 0x6200000, 0xea00000, 0x4200000, 0x6400000, + 0xea00000, 0xea00000, 0x400000, 0x400000, 0x200000, 0x400000, 0x000000, 0x6000000, + 0x6000000, 0x6400000, 0x6400000, 0x6400000, 0xea00000, 0x4000000, 0x4000000, 0x6200000, + 0x6400000, 0x6000000, 0xea00000, 0x6000000, 0x6000000, 0x6000000, 0x400000, 0x6400000, + 0x6000000, 0x6000000, 0x200000, 0x6400000, 0x4400000, 0x6000000, 0x4400000, 0x6000000, + 0x6000000, 0x6000000, 0x6000000, 0x4400000, 0x6400000, 0x6000000, 0x6400000, 0x6200000, + 0x6000000, 0x6200000, 0x6400000, 0x6000000, 0x6000000, 0x400000, 0x400000, 0x200000, + 0x6000000, 0x000000, 0x6400000, 0x4400000, 0x6000000, 0x400000, 0x6400000, 0x6400000, + 0x6400000, 0x6000000, 0x6200000, 0x6000000, 0x6000000, 0x6000000, 0x6000000, 0x6000000, + 0x6000000, 0x6400000, 0x6000000, 0x6000000, 0x6200000, 0x4000000, 0x6000000, 0x6000000, + 0x6000000, 0xea00000, 0x6400000, 0x4200000, 0x6400000, 0x6000000, 0x400000, 0xea00000, + 0x000000, 0x6400000, 0x6200000, 0x6000000, 0xea00000, 0x6400000, 0x6000000, 0x6000000, + 0x6200000, 0x6400000, 0x6200000, 0x6200000, 0x6400000, 0x4000000, 0x6000000, 0x6400000, + 0x4000000, 0x6200000, 0x6200000, 0x6400000, 0xca00000, 0x6000000, 0x200000, 0x6400000, + 0x6000000, 0x4400000, 0x6400000, 0x6000000, 0x6000000, 0x6000000, 0x6000000, 0x6200000, + 0x6000000, 0x6000000, 0x6000000, 0x6200000, 0x4400000, 0x6400000, 0x6400000, 0xec00000, + 0x6000000, 0x6200000, 0x6400000, 0x6000000, 0x6000000, 0x6000000, 0x6400000, 0x6400000, + 0x400000, 0x6000000, 0x6000000, 0x6000000, 0x6000000, 0x6400000, 0x6200000, 0x400000, + 0x6000000, 0x6400000, 0x000000, 0x6400000, 0x6000000, 0x6200000, 0x6400000, 0x6200000, + 0x6400000, 0x000000, 0xea00000, 0x6400000, 0x6400000, 0x6000000, 0x6000000, 0x6000000, + 0xea00000, 0xea00000, 0xea00000, 0x6000000, 0x4000000, 0x6200000, 0x6400000, 0x6000000 +}; + +static const unsigned long unicode_backtrans_9e[] = { + 0x6000000, 0x6000000, 0x6400000, 0x6000000, 0x6000000, 0x6000000, 0x6000000, 0x6400000, + 0x000000, 0x6000000, 0x4400000, 0x6000000, 0x4000000, 0x6000000, 0x4400000, 0x6000000, + 0x6400000, 0x6400000, 0x6400000, 0x6000000, 0x6000000, 0x6400000, 0x400000, 0x6000000, + 0x4000000, 0x6400000, 0xea00000, 0x6200000, 0x4400000, 0x6400000, 0xea00000, 0x5000000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x000000, 0x1000000, 0x1000000, 0x000000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x000000, 0x1000000, + 0x000000, 0x1000000, 0x1000000, 0x1000000, 0x000000, 0x1000000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x1000000, 0x000000, 0x000000, 0x1000000, 0x1000000, 0x1000000, + 0x000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x000000, 0x1000000, 0x1000000, + 0x000000, 0x1000000, 0x000000, 0x000000, 0x000000, 0x1000000, 0x000000, 0x1000000, + 0x1000000, 0x000000, 0x1000000, 0x1000000, 0x1000000, 0x000000, 0x1000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x1000000, 0x1000000, 0x000000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x000000, 0x000000, + 0x1000000, 0x1000000, 0x000000, 0x1000000, 0x000000, 0xea00000, 0x000000, 0x000000, + 0x200000, 0xea00000, 0x6400000, 0x4400000, 0x6400000, 0xea00000, 0x1000000, 0xfa00000, + 0x6400000, 0x4200000, 0x7400000, 0x6400000, 0x4400000, 0x4400000, 0x6000000, 0x7400000, + 0x7200000, 0x6000000, 0x6000000, 0x7200000, 0x6200000, 0x6000000, 0x6400000, 0x400000, + 0x4000000, 0x6200000, 0xfa00000, 0xfa00000, 0x6000000, 0x4200000, 0x4400000, 0xea00000, + 0x4400000, 0x6000000, 0x6000000, 0x6400000, 0x6000000, 0xfa00000, 0x4400000, 0xfa00000, + 0x6000000, 0x6000000, 0x4000000, 0x000000, 0x6400000, 0xea00000, 0x5200000, 0x6000000, + 0x4400000, 0x6200000, 0x4200000, 0x4000000, 0x4400000, 0x6200000, 0x6400000, 0x4400000, + 0x6400000, 0x4000000, 0x000000, 0x400000, 0xfc00000, 0xec00000, 0x6000000, 0x6000000, + 0x1200000, 0x200000, 0x200000, 0xfa00000, 0x6200000, 0x5000000, 0xfa00000, 0x4200000, + 0x6000000, 0x4000000, 0x6000000, 0xe800000, 0x5200000, 0x000000, 0x4400000, 0x4000000, + 0x6400000, 0x1000000, 0x000000, 0x400000, 0x6200000, 0xfa00000, 0xfa00000, 0x7200000, + 0x6200000, 0xf800000, 0x200000, 0x6000000, 0xfa00000, 0x6400000, 0x6000000, 0x000000, + 0xfa00000, 0x200000, 0x6000000, 0xfa00000, 0xfa00000, 0x7200000, 0xea00000, 0x7400000, + 0x7200000, 0x000000, 0x5000000, 0x000000, 0x6400000, 0x7200000, 0x6000000, 0x7400000, + 0xea00000, 0x1000000, 0x1000000, 0x6000000, 0x400000, 0x6400000, 0x6400000, 0x7200000, + 0x6400000, 0x4400000, 0x6400000, 0x6000000, 0xea00000, 0x6400000, 0x6200000, 0x6200000, + 0x4400000, 0x7200000, 0x6000000, 0x7200000, 0x7200000, 0x6200000, 0x5000000, 0x6400000 +}; + +static const unsigned long unicode_backtrans_9f[] = { + 0x6000000, 0x6000000, 0x4400000, 0x400000, 0x000000, 0x000000, 0x6000000, 0xea00000, + 0xca00000, 0x6400000, 0x6000000, 0x1000000, 0x000000, 0x1000000, 0xfa00000, 0x6400000, + 0x7400000, 0x400000, 0x6400000, 0xfa00000, 0x400000, 0x6200000, 0x6400000, 0x5400000, + 0x6000000, 0x7400000, 0x6400000, 0x6400000, 0x6000000, 0x000000, 0x6000000, 0x400000, + 0xfa00000, 0x200000, 0x7400000, 0x6000000, 0x6000000, 0x6000000, 0x4400000, 0x4000000, + 0x6000000, 0x6000000, 0x6400000, 0x6400000, 0x7200000, 0x6000000, 0x6000000, 0x7400000, + 0x6000000, 0x6400000, 0x6400000, 0x6000000, 0x6400000, 0x6000000, 0x6000000, 0x7400000, + 0x6000000, 0x5400000, 0x400000, 0xfa00000, 0x400000, 0x7400000, 0x7200000, 0x400000, + 0x6000000, 0x6400000, 0x6000000, 0x6400000, 0x5400000, 0x4400000, 0x6400000, 0x6400000, + 0x6000000, 0x6000000, 0xea00000, 0xea00000, 0x6000000, 0x6000000, 0xea00000, 0x6200000, + 0x5000000, 0x1000000, 0xea00000, 0x4400000, 0x6200000, 0x6400000, 0x6400000, 0x6400000, + 0x6400000, 0x6000000, 0x4400000, 0x6000000, 0x6000000, 0x6400000, 0x6400000, 0xea00000, + 0x6200000, 0xea00000, 0x4200000, 0x6200000, 0x6000000, 0x6000000, 0x6200000, 0xea00000, + 0x400000, 0x4400000, 0xea00000, 0x6000000, 0xea00000, 0x400000, 0x6400000, 0x6400000, + 0x6400000, 0x6400000, 0x6200000, 0x400000, 0x6000000, 0x6400000, 0x6200000, 0xea00000, + 0x6000000, 0x6000000, 0x6400000, 0x6000000, 0x000000, 0x400000, 0x6000000, 0x5000000, + 0x1000000, 0x000000, 0x000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, + 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0x1000000, 0xea00000, 0x4000000, 0x400000, + 0xec00000, 0x6400000, 0x6400000, 0x000000, 0x6400000, 0xea00000, 0x400000, 0x400000, + 0x6000000, 0x5000000, 0x1000000, 0x1000000, 0xea00000, 0x200000, 0x400000, 0x5000000, + 0x7200000, 0x400000, 0x6400000, 0x400000, 0x6000000, 0x4400000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000 +}; + +static const unsigned long unicode_backtrans_ac[] = { + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, + 0x8800000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, + 0x8000000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, + 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8000000, + 0x8000000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, + 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000 +}; + +static const unsigned long unicode_backtrans_ad[] = { + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8800000 +}; + +static const unsigned long unicode_backtrans_ae[] = { + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, + 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, + 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8800000, 0x8800000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8800000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000 +}; + +static const unsigned long unicode_backtrans_af[] = { + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8000000, 0x8800000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000 +}; + +static const unsigned long unicode_backtrans_b0[] = { + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, + 0x8800000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, + 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000 +}; + +static const unsigned long unicode_backtrans_b1[] = { + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000 +}; + +static const unsigned long unicode_backtrans_b2[] = { + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, + 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8800000, 0x8800000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, + 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000 +}; + +static const unsigned long unicode_backtrans_b3[] = { + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8800000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8800000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000 +}; + +static const unsigned long unicode_backtrans_b4[] = { + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000 +}; + +static const unsigned long unicode_backtrans_b5[] = { + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8800000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000 +}; + +static const unsigned long unicode_backtrans_b6[] = { + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000 +}; + +static const unsigned long unicode_backtrans_b7[] = { + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8800000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000 +}; + +static const unsigned long unicode_backtrans_b8[] = { + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000 +}; + +static const unsigned long unicode_backtrans_b9[] = { + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8800000, + 0x8800000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, + 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8800000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000 +}; + +static const unsigned long unicode_backtrans_ba[] = { + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000 +}; + +static const unsigned long unicode_backtrans_bb[] = { + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8800000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8800000 +}; + +static const unsigned long unicode_backtrans_bc[] = { + 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, + 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8800000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000 +}; + +static const unsigned long unicode_backtrans_bd[] = { + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, + 0x8800000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000 +}; + +static const unsigned long unicode_backtrans_be[] = { + 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8000000, 0x8800000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000 +}; + +static const unsigned long unicode_backtrans_bf[] = { + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000 +}; + +static const unsigned long unicode_backtrans_c0[] = { + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000 +}; + +static const unsigned long unicode_backtrans_c1[] = { + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, + 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8800000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8800000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000 +}; + +static const unsigned long unicode_backtrans_c2[] = { + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, + 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000 +}; + +static const unsigned long unicode_backtrans_c3[] = { + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, + 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000 +}; + +static const unsigned long unicode_backtrans_c4[] = { + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000 +}; + +static const unsigned long unicode_backtrans_c5[] = { + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8800000, 0x8800000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, + 0x8800000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8800000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8800000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8800000, 0x8800000 +}; + +static const unsigned long unicode_backtrans_c6[] = { + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8800000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8800000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000 +}; + +static const unsigned long unicode_backtrans_c7[] = { + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8000000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8800000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8800000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8800000, + 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000 +}; + +static const unsigned long unicode_backtrans_c8[] = { + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8800000, 0x8800000, + 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000 +}; + +static const unsigned long unicode_backtrans_c9[] = { + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8800000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, + 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, + 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000 +}; + +static const unsigned long unicode_backtrans_ca[] = { + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000 +}; + +static const unsigned long unicode_backtrans_cb[] = { + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000 +}; + +static const unsigned long unicode_backtrans_cc[] = { + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8800000, 0x8800000, 0x8800000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000 +}; + +static const unsigned long unicode_backtrans_cd[] = { + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000 +}; + +static const unsigned long unicode_backtrans_ce[] = { + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000 +}; + +static const unsigned long unicode_backtrans_cf[] = { + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000 +}; + +static const unsigned long unicode_backtrans_d0[] = { + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000 +}; + +static const unsigned long unicode_backtrans_d1[] = { + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000 +}; + +static const unsigned long unicode_backtrans_d2[] = { + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, + 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000 +}; + +static const unsigned long unicode_backtrans_d3[] = { + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8800000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000 +}; + +static const unsigned long unicode_backtrans_d4[] = { + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, + 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000 +}; + +static const unsigned long unicode_backtrans_d5[] = { + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8800000, + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000 +}; + +static const unsigned long unicode_backtrans_d6[] = { + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000 +}; + +static const unsigned long unicode_backtrans_d7[] = { + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8800000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8800000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x8000000, + 0x8800000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8800000, 0x8000000, 0x8000000, + 0x8000000, 0x8000000, 0x8000000, 0x8000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000 +}; + +static const unsigned long unicode_backtrans_e0[] = { + 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, + 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, + 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x000000, + 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x2000000, 0x4000000, 0x000000, 0x000000, 0x4000000, + 0x4000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, + 0x000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x4000000, + 0x4000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, + 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x000000 +}; + +static const unsigned long unicode_backtrans_e1[] = { + 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, + 0x4000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x4000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, + 0x000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x4000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, + 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x4000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000 +}; + +static const unsigned long unicode_backtrans_e2[] = { + 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x4000000, + 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, + 0x4000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, + 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x4000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, + 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x000000, 0x4000000, 0x000000, 0x2000000, 0x4000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, + 0x4000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, + 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, + 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x000000, + 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x4000000 +}; + +static const unsigned long unicode_backtrans_e3[] = { + 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x4000000, + 0x000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x4000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, + 0x000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, + 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x000000, + 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x4000000, + 0x4000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x000000, + 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x4000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000 +}; + +static const unsigned long unicode_backtrans_e4[] = { + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x000000, + 0x4000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, + 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x000000, + 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, + 0x000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x000000, + 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x2000000, 0x4000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, + 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000 +}; + +static const unsigned long unicode_backtrans_e5[] = { + 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, + 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x000000, + 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, + 0x000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, + 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, + 0x4000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, + 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x4000000, + 0x4000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x4000000, + 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000 +}; + +static const unsigned long unicode_backtrans_e6[] = { + 0x4000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x4000000, + 0x4000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x4000000, + 0x000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, + 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, + 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, + 0x4000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, + 0x4000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, + 0x000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, + 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x000000, + 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x4000000 +}; + +static const unsigned long unicode_backtrans_e7[] = { + 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, + 0x000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, + 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, + 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, + 0x000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, + 0x4000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, + 0x4000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x5000000, 0x1000000, 0x1000000, + 0x5000000, 0x1000000, 0x5000000, 0x1000000, 0x5000000, 0x1000000, 0x4000000, 0x4000000, + 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x2000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x4000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x4000000, + 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, + 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x4000000 +}; + +static const unsigned long unicode_backtrans_e8[] = { + 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, + 0x000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x4000000, + 0x4000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, + 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x000000, + 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, + 0x000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x000000, + 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x000000, + 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, + 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x000000, + 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x000000 +}; + +static const unsigned long unicode_backtrans_e9[] = { + 0x4000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, + 0x4000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, + 0x4000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, + 0x4000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x4000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, + 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000 +}; + +static const unsigned long unicode_backtrans_ea[] = { + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x4000000, + 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x000000, + 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x4000000 +}; + +static const unsigned long unicode_backtrans_eb[] = { + 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, + 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, + 0x000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x2000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x4000000, + 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x4000000, + 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x4000000, + 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, + 0x4000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x000000, + 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x000000, + 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x4000000, + 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x4000000, + 0x000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x4000000, + 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, + 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x000000, + 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x000000 +}; + +static const unsigned long unicode_backtrans_ec[] = { + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x000000, + 0x4000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, + 0x4000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x000000, + 0x4000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, + 0x4000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, + 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x000000, + 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x4000000, + 0x4000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x4000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000 +}; + +static const unsigned long unicode_backtrans_ed[] = { + 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, + 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x4000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x4000000, + 0x4000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, + 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000 +}; + +static const unsigned long unicode_backtrans_ee[] = { + 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x4000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x000000, + 0x4000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000 +}; + +static const unsigned long unicode_backtrans_ef[] = { + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000 +}; + +static const unsigned long unicode_backtrans_f0[] = { + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000 +}; + +static const unsigned long unicode_backtrans_f1[] = { + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000 +}; + +static const unsigned long unicode_backtrans_f2[] = { + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000 +}; + +static const unsigned long unicode_backtrans_f3[] = { + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x000000 +}; + +static const unsigned long unicode_backtrans_f4[] = { + 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x000000, + 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x4000000, + 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, + 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, + 0x4000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, + 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, + 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, + 0x000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x4000000 +}; + +static const unsigned long unicode_backtrans_f5[] = { + 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x000000, + 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x000000, + 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, + 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000 +}; + +static const unsigned long unicode_backtrans_f6[] = { + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x4000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x4000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000 +}; + +static const unsigned long unicode_backtrans_f7[] = { + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x000000, + 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000 +}; + +static const unsigned long unicode_backtrans_f8[] = { + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, + 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x4000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x040000, 0x040000, 0x040000, + 0x040000, 0x040000, 0x040000, 0x040000, 0x040000, 0x040000, 0x040000, 0x040000, + 0x040000, 0x040000, 0x040000, 0x040000, 0x040000, 0x040000, 0x040000, 0x040000, + 0x040000, 0x040000, 0x040000, 0x040000, 0x040000, 0x040000, 0x040000, 0x060000 +}; + +static const unsigned long unicode_backtrans_f9[] = { + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000 +}; + +static const unsigned long unicode_backtrans_fa[] = { + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000 +}; + +static const unsigned long unicode_backtrans_fb[] = { + 0x000000, 0x020000, 0x020000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000 +}; + +static const unsigned long unicode_backtrans_fe[] = { + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x6000000, 0x7000000, 0x000000, 0x7000000, 0x7000000, 0x7000000, 0x7000000, 0x7000000, + 0x7000000, 0x7000000, 0x7000000, 0x7000000, 0x7000000, 0x7000000, 0x7000000, 0x7000000, + 0x7000000, 0x7000000, 0x7000000, 0x7000000, 0x7000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x6000000, 0x6000000, 0x6000000, 0x6000000, 0x6000000, 0x6000000, 0x6000000, + 0x6000000, 0x4000000, 0x6000000, 0x000000, 0x6000000, 0x6000000, 0x6000000, 0x6000000, + 0x000000, 0x6000000, 0x6000000, 0x6000000, 0x6000000, 0x6000000, 0x6000000, 0x6000000, + 0x6000000, 0x6000000, 0x6000000, 0x6000000, 0x6000000, 0x6000000, 0x6000000, 0x000000, + 0x6000000, 0x6000000, 0x6000000, 0x6000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000 +}; + +static const unsigned long unicode_backtrans_ff[] = { + 0x000000, 0xfa00000, 0xd800000, 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, 0xd800000, + 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, 0xf800000, 0xfa00000, 0xfa00000, + 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, + 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, + 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, + 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, + 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, + 0xfa00000, 0xfa00000, 0xfa00000, 0xda00000, 0xfa00000, 0xda00000, 0x9a00000, 0xfa00000, + 0x9a00000, 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, + 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, + 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, + 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, 0xfa00000, 0xd800000, 0x000000, + 0x000000, 0x008000, 0x008000, 0x008000, 0x2008000, 0x008000, 0x008000, 0x008000, + 0x008000, 0x008000, 0x008000, 0x008000, 0x008000, 0x008000, 0x008000, 0x008000, + 0x008000, 0x008000, 0x008000, 0x008000, 0x008000, 0x008000, 0x008000, 0x008000, + 0x008000, 0x008000, 0x008000, 0x008000, 0x008000, 0x008000, 0x008000, 0x008000, + 0x008000, 0x008000, 0x008000, 0x008000, 0x008000, 0x008000, 0x008000, 0x008000, + 0x008000, 0x008000, 0x008000, 0x008000, 0x008000, 0x008000, 0x008000, 0x008000, + 0x008000, 0x008000, 0x008000, 0x008000, 0x008000, 0x008000, 0x008000, 0x008000, + 0x008000, 0x008000, 0x008000, 0x008000, 0x008000, 0x008000, 0x008000, 0x008000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0xda00000, 0xda00000, 0xca00000, 0xfa00000, 0x4000000, 0xda00000, 0x8800000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x4000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000 +}; + +const unsigned long *const unicode_backtrans[] = { + unicode_backtrans_0, + unicode_backtrans_1, + unicode_backtrans_2, + unicode_backtrans_3, + unicode_backtrans_4, + unicode_backtrans_5, + unicode_backtrans_6, + l_allzeros, + l_allzeros, + l_allzeros, + l_allzeros, + l_allzeros, + l_allzeros, + l_allzeros, + unicode_backtrans_e, + l_allzeros, + l_allzeros, + l_allzeros, + l_allzeros, + l_allzeros, + l_allzeros, + l_allzeros, + l_allzeros, + l_allzeros, + l_allzeros, + l_allzeros, + l_allzeros, + l_allzeros, + l_allzeros, + l_allzeros, + unicode_backtrans_1e, + l_allzeros, + unicode_backtrans_20, + unicode_backtrans_21, + unicode_backtrans_22, + unicode_backtrans_23, + unicode_backtrans_24, + unicode_backtrans_25, + unicode_backtrans_26, + unicode_backtrans_27, + l_allzeros, + l_allzeros, + l_allzeros, + l_allzeros, + l_allzeros, + l_allzeros, + unicode_backtrans_2e, + unicode_backtrans_2f, + unicode_backtrans_30, + unicode_backtrans_31, + unicode_backtrans_32, + unicode_backtrans_33, + unicode_backtrans_34, + unicode_backtrans_35, + unicode_backtrans_36, + unicode_backtrans_37, + unicode_backtrans_38, + unicode_backtrans_39, + unicode_backtrans_3a, + unicode_backtrans_3b, + unicode_backtrans_3c, + unicode_backtrans_3d, + unicode_backtrans_3e, + unicode_backtrans_3f, + unicode_backtrans_40, + unicode_backtrans_41, + unicode_backtrans_42, + unicode_backtrans_43, + unicode_backtrans_44, + unicode_backtrans_45, + unicode_backtrans_46, + unicode_backtrans_47, + unicode_backtrans_48, + unicode_backtrans_49, + unicode_backtrans_4a, + unicode_backtrans_4b, + unicode_backtrans_4c, + unicode_backtrans_4d, + unicode_backtrans_4e, + unicode_backtrans_4f, + unicode_backtrans_50, + unicode_backtrans_51, + unicode_backtrans_52, + unicode_backtrans_53, + unicode_backtrans_54, + unicode_backtrans_55, + unicode_backtrans_56, + unicode_backtrans_57, + unicode_backtrans_58, + unicode_backtrans_59, + unicode_backtrans_5a, + unicode_backtrans_5b, + unicode_backtrans_5c, + unicode_backtrans_5d, + unicode_backtrans_5e, + unicode_backtrans_5f, + unicode_backtrans_60, + unicode_backtrans_61, + unicode_backtrans_62, + unicode_backtrans_63, + unicode_backtrans_64, + unicode_backtrans_65, + unicode_backtrans_66, + unicode_backtrans_67, + unicode_backtrans_68, + unicode_backtrans_69, + unicode_backtrans_6a, + unicode_backtrans_6b, + unicode_backtrans_6c, + unicode_backtrans_6d, + unicode_backtrans_6e, + unicode_backtrans_6f, + unicode_backtrans_70, + unicode_backtrans_71, + unicode_backtrans_72, + unicode_backtrans_73, + unicode_backtrans_74, + unicode_backtrans_75, + unicode_backtrans_76, + unicode_backtrans_77, + unicode_backtrans_78, + unicode_backtrans_79, + unicode_backtrans_7a, + unicode_backtrans_7b, + unicode_backtrans_7c, + unicode_backtrans_7d, + unicode_backtrans_7e, + unicode_backtrans_7f, + unicode_backtrans_80, + unicode_backtrans_81, + unicode_backtrans_82, + unicode_backtrans_83, + unicode_backtrans_84, + unicode_backtrans_85, + unicode_backtrans_86, + unicode_backtrans_87, + unicode_backtrans_88, + unicode_backtrans_89, + unicode_backtrans_8a, + unicode_backtrans_8b, + unicode_backtrans_8c, + unicode_backtrans_8d, + unicode_backtrans_8e, + unicode_backtrans_8f, + unicode_backtrans_90, + unicode_backtrans_91, + unicode_backtrans_92, + unicode_backtrans_93, + unicode_backtrans_94, + unicode_backtrans_95, + unicode_backtrans_96, + unicode_backtrans_97, + unicode_backtrans_98, + unicode_backtrans_99, + unicode_backtrans_9a, + unicode_backtrans_9b, + unicode_backtrans_9c, + unicode_backtrans_9d, + unicode_backtrans_9e, + unicode_backtrans_9f, + l_allzeros, + l_allzeros, + l_allzeros, + l_allzeros, + l_allzeros, + l_allzeros, + l_allzeros, + l_allzeros, + l_allzeros, + l_allzeros, + l_allzeros, + l_allzeros, + unicode_backtrans_ac, + unicode_backtrans_ad, + unicode_backtrans_ae, + unicode_backtrans_af, + unicode_backtrans_b0, + unicode_backtrans_b1, + unicode_backtrans_b2, + unicode_backtrans_b3, + unicode_backtrans_b4, + unicode_backtrans_b5, + unicode_backtrans_b6, + unicode_backtrans_b7, + unicode_backtrans_b8, + unicode_backtrans_b9, + unicode_backtrans_ba, + unicode_backtrans_bb, + unicode_backtrans_bc, + unicode_backtrans_bd, + unicode_backtrans_be, + unicode_backtrans_bf, + unicode_backtrans_c0, + unicode_backtrans_c1, + unicode_backtrans_c2, + unicode_backtrans_c3, + unicode_backtrans_c4, + unicode_backtrans_c5, + unicode_backtrans_c6, + unicode_backtrans_c7, + unicode_backtrans_c8, + unicode_backtrans_c9, + unicode_backtrans_ca, + unicode_backtrans_cb, + unicode_backtrans_cc, + unicode_backtrans_cd, + unicode_backtrans_ce, + unicode_backtrans_cf, + unicode_backtrans_d0, + unicode_backtrans_d1, + unicode_backtrans_d2, + unicode_backtrans_d3, + unicode_backtrans_d4, + unicode_backtrans_d5, + unicode_backtrans_d6, + unicode_backtrans_d7, + l_allzeros, + l_allzeros, + l_allzeros, + l_allzeros, + l_allzeros, + l_allzeros, + l_allzeros, + l_allzeros, + unicode_backtrans_e0, + unicode_backtrans_e1, + unicode_backtrans_e2, + unicode_backtrans_e3, + unicode_backtrans_e4, + unicode_backtrans_e5, + unicode_backtrans_e6, + unicode_backtrans_e7, + unicode_backtrans_e8, + unicode_backtrans_e9, + unicode_backtrans_ea, + unicode_backtrans_eb, + unicode_backtrans_ec, + unicode_backtrans_ed, + unicode_backtrans_ee, + unicode_backtrans_ef, + unicode_backtrans_f0, + unicode_backtrans_f1, + unicode_backtrans_f2, + unicode_backtrans_f3, + unicode_backtrans_f4, + unicode_backtrans_f5, + unicode_backtrans_f6, + unicode_backtrans_f7, + unicode_backtrans_f8, + unicode_backtrans_f9, + unicode_backtrans_fa, + unicode_backtrans_fb, + l_allzeros, + l_allzeros, + unicode_backtrans_fe, + unicode_backtrans_ff +}; diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/Unicode/char.c b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/Unicode/char.c new file mode 100644 index 00000000000..b21811db032 --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/Unicode/char.c @@ -0,0 +1,96 @@ +/* Copyright (C) 2000-2002 by George Williams */ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include +#include +#include +#include "ustring.h" + +char *strstart(const char *initial, const char *full) { + int ch1, ch2; + for (;;) { + ch1 = *initial++; ch2 = *full++ ; + if ( ch1=='\0' ) +return( (char *) full ); + if ( ch1!=ch2 || ch1=='\0' ) +return(NULL); + } +} + +char *strstartmatch(const char *initial, const char *full) { + int ch1, ch2; + for (;;) { + ch1 = *initial++; ch2 = *full++ ; + if ( ch1=='\0' ) +return( (char *) full ); + ch1 = tolower(ch1); + ch2 = tolower(ch2); + if ( ch1!=ch2 || ch1=='\0' ) +return(NULL); + } +} + +int strmatch(const char *str1, const char *str2) { + int ch1, ch2; + for (;;) { + ch1 = *str1++; ch2 = *str2++ ; + ch1 = tolower(ch1); + ch2 = tolower(ch2); + if ( ch1!=ch2 || ch1=='\0' ) +return(ch1-ch2); + } +} + +int strnmatch(const char *str1, const char *str2, int n) { + int ch1, ch2; + for (;n-->0;) { + ch1 = *str1++; ch2 = *str2++ ; + ch1 = tolower(ch1); + ch2 = tolower(ch2); + if ( ch1!=ch2 || ch1=='\0' ) +return(ch1-ch2); + } +return(0); +} + +char *strstrmatch(const char *longer, const char *substr) { + int ch1, ch2; + const char *lpt, *str1, *str2; + + for ( lpt=longer; *lpt!='\0'; ++lpt ) { + str1 = lpt; str2 = substr; + for (;;) { + ch1 = *str1++; ch2 = *str2++ ; + ch1 = tolower(ch1); + ch2 = tolower(ch2); + if ( ch2=='\0' ) +return((char *) lpt); + if ( ch1!=ch2 ) + break; + } + } +return( NULL ); +} diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/Unicode/cjk.c b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/Unicode/cjk.c new file mode 100644 index 00000000000..a2f01f3131a --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/Unicode/cjk.c @@ -0,0 +1,43019 @@ +#include + +const unsigned short u_allzeros[256] = { 0 }; + +const unichar_t unicode_from_jis208[] = { + 0x2003, 0x3001, 0x3002, 0xff0c, 0xff0e, 0x30fb, 0xff1a, 0xff1b, + 0xff1f, 0xff01, 0x309b, 0x309c, 0x00b4, 0xff40, 0x00a8, 0xff3e, + 0xffe3, 0xff3f, 0x30fd, 0x30fe, 0x309d, 0x309e, 0x3003, 0x4edd, + 0x3005, 0x3006, 0x3007, 0x30fc, 0x2015, 0x2010, 0xff0f, 0xff3c, + 0x301c, 0x2016, 0xff5c, 0x2026, 0x2025, 0x0000, 0x0000, 0x0000, + 0x0000, 0xff08, 0xff09, 0x3014, 0x3015, 0xff3b, 0xff3d, 0xff5b, + 0xff5d, 0x3008, 0x3009, 0x300a, 0x300b, 0x300c, 0x300d, 0x300e, + 0x300f, 0x3010, 0x3011, 0xff0b, 0x2212, 0x00b1, 0x00d7, 0x00f7, + 0xff1d, 0x2260, 0xff1c, 0xff1e, 0x2266, 0x2267, 0x221e, 0x2234, + 0x2642, 0x2640, 0x00b0, 0x2032, 0x2033, 0x2103, 0xffe5, 0xff04, + 0xffe0, 0xffe1, 0xff05, 0xff03, 0xff06, 0xff0a, 0xff20, 0x00a7, + 0x2606, 0x2605, 0x25cb, 0x25cf, 0x25ce, 0x25c7, 0x25c6, 0x25a1, + 0x25a0, 0x25b3, 0x25b2, 0x25bd, 0x25bc, 0x203b, 0x3012, 0x2192, + 0x2190, 0x2191, 0x2193, 0x3013, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2208, + 0x220b, 0x2286, 0x2287, 0x2282, 0x2283, 0x222a, 0x2229, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2227, + 0x2228, 0xffe2, 0x21d2, 0x21d4, 0x2200, 0x2203, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x2220, 0x22a5, 0x2312, 0x2202, 0x2207, 0x2261, 0x2252, + 0x226a, 0x226b, 0x221a, 0x223d, 0x221d, 0x2235, 0x222b, 0x222c, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x212b, + 0x2030, 0x266f, 0x266d, 0x266a, 0x2020, 0x2021, 0x00b6, 0x0000, + 0x0000, 0x0000, 0x0000, 0x25ef, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xff10, 0xff11, 0xff12, 0xff13, 0xff14, + 0xff15, 0xff16, 0xff17, 0xff18, 0xff19, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xff21, 0xff22, 0xff23, 0xff24, + 0xff25, 0xff26, 0xff27, 0xff28, 0xff29, 0xff2a, 0xff2b, 0xff2c, + 0xff2d, 0xff2e, 0xff2f, 0xff30, 0xff31, 0xff32, 0xff33, 0xff34, + 0xff35, 0xff36, 0xff37, 0xff38, 0xff39, 0xff3a, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xff41, 0xff42, 0xff43, 0xff44, + 0xff45, 0xff46, 0xff47, 0xff48, 0xff49, 0xff4a, 0xff4b, 0xff4c, + 0xff4d, 0xff4e, 0xff4f, 0xff50, 0xff51, 0xff52, 0xff53, 0xff54, + 0xff55, 0xff56, 0xff57, 0xff58, 0xff59, 0xff5a, 0x0000, 0x0000, + 0x0000, 0x0000, 0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046, + 0x3047, 0x3048, 0x3049, 0x304a, 0x304b, 0x304c, 0x304d, 0x304e, + 0x304f, 0x3050, 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056, + 0x3057, 0x3058, 0x3059, 0x305a, 0x305b, 0x305c, 0x305d, 0x305e, + 0x305f, 0x3060, 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, + 0x3067, 0x3068, 0x3069, 0x306a, 0x306b, 0x306c, 0x306d, 0x306e, + 0x306f, 0x3070, 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, + 0x3077, 0x3078, 0x3079, 0x307a, 0x307b, 0x307c, 0x307d, 0x307e, + 0x307f, 0x3080, 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086, + 0x3087, 0x3088, 0x3089, 0x308a, 0x308b, 0x308c, 0x308d, 0x308e, + 0x308f, 0x3090, 0x3091, 0x3092, 0x3093, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x30a1, 0x30a2, 0x30a3, 0x30a4, 0x30a5, 0x30a6, 0x30a7, 0x30a8, + 0x30a9, 0x30aa, 0x30ab, 0x30ac, 0x30ad, 0x30ae, 0x30af, 0x30b0, + 0x30b1, 0x30b2, 0x30b3, 0x30b4, 0x30b5, 0x30b6, 0x30b7, 0x30b8, + 0x30b9, 0x30ba, 0x30bb, 0x30bc, 0x30bd, 0x30be, 0x30bf, 0x30c0, + 0x30c1, 0x30c2, 0x30c3, 0x30c4, 0x30c5, 0x30c6, 0x30c7, 0x30c8, + 0x30c9, 0x30ca, 0x30cb, 0x30cc, 0x30cd, 0x30ce, 0x30cf, 0x30d0, + 0x30d1, 0x30d2, 0x30d3, 0x30d4, 0x30d5, 0x30d6, 0x30d7, 0x30d8, + 0x30d9, 0x30da, 0x30db, 0x30dc, 0x30dd, 0x30de, 0x30df, 0x30e0, + 0x30e1, 0x30e2, 0x30e3, 0x30e4, 0x30e5, 0x30e6, 0x30e7, 0x30e8, + 0x30e9, 0x30ea, 0x30eb, 0x30ec, 0x30ed, 0x30ee, 0x30ef, 0x30f0, + 0x30f1, 0x30f2, 0x30f3, 0x30f4, 0x30f5, 0x30f6, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0391, 0x0392, + 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398, 0x0399, 0x039a, + 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, 0x03a0, 0x03a1, 0x03a3, + 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03b1, 0x03b2, + 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, 0x03b8, 0x03b9, 0x03ba, + 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, 0x03c0, 0x03c1, 0x03c3, + 0x03c4, 0x03c5, 0x03c6, 0x03c7, 0x03c8, 0x03c9, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0410, 0x0411, 0x0412, 0x0413, + 0x0414, 0x0415, 0x0401, 0x0416, 0x0417, 0x0418, 0x0419, 0x041a, + 0x041b, 0x041c, 0x041d, 0x041e, 0x041f, 0x0420, 0x0421, 0x0422, + 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042a, + 0x042b, 0x042c, 0x042d, 0x042e, 0x042f, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0430, 0x0431, 0x0432, 0x0433, + 0x0434, 0x0435, 0x0451, 0x0436, 0x0437, 0x0438, 0x0439, 0x043a, + 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, 0x0440, 0x0441, 0x0442, + 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449, 0x044a, + 0x044b, 0x044c, 0x044d, 0x044e, 0x044f, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x2500, 0x2502, 0x250c, 0x2510, 0x2518, 0x2514, + 0x251c, 0x252c, 0x2524, 0x2534, 0x253c, 0x2501, 0x2503, 0x250f, + 0x2513, 0x251b, 0x2517, 0x2523, 0x2533, 0x252b, 0x253b, 0x254b, + 0x2520, 0x252f, 0x2528, 0x2537, 0x253f, 0x251d, 0x2530, 0x2525, + 0x2538, 0x2542, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x4e9c, 0x5516, 0x5a03, 0x963f, 0x54c0, 0x611b, + 0x6328, 0x59f6, 0x9022, 0x8475, 0x831c, 0x7a50, 0x60aa, 0x63e1, + 0x6e25, 0x65ed, 0x8466, 0x82a6, 0x9bf5, 0x6893, 0x5727, 0x65a1, + 0x6271, 0x5b9b, 0x59d0, 0x867b, 0x98f4, 0x7d62, 0x7dbe, 0x9b8e, + 0x6216, 0x7c9f, 0x88b7, 0x5b89, 0x5eb5, 0x6309, 0x6697, 0x6848, + 0x95c7, 0x978d, 0x674f, 0x4ee5, 0x4f0a, 0x4f4d, 0x4f9d, 0x5049, + 0x56f2, 0x5937, 0x59d4, 0x5a01, 0x5c09, 0x60df, 0x610f, 0x6170, + 0x6613, 0x6905, 0x70ba, 0x754f, 0x7570, 0x79fb, 0x7dad, 0x7def, + 0x80c3, 0x840e, 0x8863, 0x8b02, 0x9055, 0x907a, 0x533b, 0x4e95, + 0x4ea5, 0x57df, 0x80b2, 0x90c1, 0x78ef, 0x4e00, 0x58f1, 0x6ea2, + 0x9038, 0x7a32, 0x8328, 0x828b, 0x9c2f, 0x5141, 0x5370, 0x54bd, + 0x54e1, 0x56e0, 0x59fb, 0x5f15, 0x98f2, 0x6deb, 0x80e4, 0x852d, + 0x9662, 0x9670, 0x96a0, 0x97fb, 0x540b, 0x53f3, 0x5b87, 0x70cf, + 0x7fbd, 0x8fc2, 0x96e8, 0x536f, 0x9d5c, 0x7aba, 0x4e11, 0x7893, + 0x81fc, 0x6e26, 0x5618, 0x5504, 0x6b1d, 0x851a, 0x9c3b, 0x59e5, + 0x53a9, 0x6d66, 0x74dc, 0x958f, 0x5642, 0x4e91, 0x904b, 0x96f2, + 0x834f, 0x990c, 0x53e1, 0x55b6, 0x5b30, 0x5f71, 0x6620, 0x66f3, + 0x6804, 0x6c38, 0x6cf3, 0x6d29, 0x745b, 0x76c8, 0x7a4e, 0x9834, + 0x82f1, 0x885b, 0x8a60, 0x92ed, 0x6db2, 0x75ab, 0x76ca, 0x99c5, + 0x60a6, 0x8b01, 0x8d8a, 0x95b2, 0x698e, 0x53ad, 0x5186, 0x5712, + 0x5830, 0x5944, 0x5bb4, 0x5ef6, 0x6028, 0x63a9, 0x63f4, 0x6cbf, + 0x6f14, 0x708e, 0x7114, 0x7159, 0x71d5, 0x733f, 0x7e01, 0x8276, + 0x82d1, 0x8597, 0x9060, 0x925b, 0x9d1b, 0x5869, 0x65bc, 0x6c5a, + 0x7525, 0x51f9, 0x592e, 0x5965, 0x5f80, 0x5fdc, 0x62bc, 0x65fa, + 0x6a2a, 0x6b27, 0x6bb4, 0x738b, 0x7fc1, 0x8956, 0x9d2c, 0x9d0e, + 0x9ec4, 0x5ca1, 0x6c96, 0x837b, 0x5104, 0x5c4b, 0x61b6, 0x81c6, + 0x6876, 0x7261, 0x4e59, 0x4ffa, 0x5378, 0x6069, 0x6e29, 0x7a4f, + 0x97f3, 0x4e0b, 0x5316, 0x4eee, 0x4f55, 0x4f3d, 0x4fa1, 0x4f73, + 0x52a0, 0x53ef, 0x5609, 0x590f, 0x5ac1, 0x5bb6, 0x5be1, 0x79d1, + 0x6687, 0x679c, 0x67b6, 0x6b4c, 0x6cb3, 0x706b, 0x73c2, 0x798d, + 0x79be, 0x7a3c, 0x7b87, 0x82b1, 0x82db, 0x8304, 0x8377, 0x83ef, + 0x83d3, 0x8766, 0x8ab2, 0x5629, 0x8ca8, 0x8fe6, 0x904e, 0x971e, + 0x868a, 0x4fc4, 0x5ce8, 0x6211, 0x7259, 0x753b, 0x81e5, 0x82bd, + 0x86fe, 0x8cc0, 0x96c5, 0x9913, 0x99d5, 0x4ecb, 0x4f1a, 0x89e3, + 0x56de, 0x584a, 0x58ca, 0x5efb, 0x5feb, 0x602a, 0x6094, 0x6062, + 0x61d0, 0x6212, 0x62d0, 0x6539, 0x9b41, 0x6666, 0x68b0, 0x6d77, + 0x7070, 0x754c, 0x7686, 0x7d75, 0x82a5, 0x87f9, 0x958b, 0x968e, + 0x8c9d, 0x51f1, 0x52be, 0x5916, 0x54b3, 0x5bb3, 0x5d16, 0x6168, + 0x6982, 0x6daf, 0x788d, 0x84cb, 0x8857, 0x8a72, 0x93a7, 0x9ab8, + 0x6d6c, 0x99a8, 0x86d9, 0x57a3, 0x67ff, 0x86ce, 0x920e, 0x5283, + 0x5687, 0x5404, 0x5ed3, 0x62e1, 0x64b9, 0x683c, 0x6838, 0x6bbb, + 0x7372, 0x78ba, 0x7a6b, 0x899a, 0x89d2, 0x8d6b, 0x8f03, 0x90ed, + 0x95a3, 0x9694, 0x9769, 0x5b66, 0x5cb3, 0x697d, 0x984d, 0x984e, + 0x639b, 0x7b20, 0x6a2b, 0x6a7f, 0x68b6, 0x9c0d, 0x6f5f, 0x5272, + 0x559d, 0x6070, 0x62ec, 0x6d3b, 0x6e07, 0x6ed1, 0x845b, 0x8910, + 0x8f44, 0x4e14, 0x9c39, 0x53f6, 0x691b, 0x6a3a, 0x9784, 0x682a, + 0x515c, 0x7ac3, 0x84b2, 0x91dc, 0x938c, 0x565b, 0x9d28, 0x6822, + 0x8305, 0x8431, 0x7ca5, 0x5208, 0x82c5, 0x74e6, 0x4e7e, 0x4f83, + 0x51a0, 0x5bd2, 0x520a, 0x52d8, 0x52e7, 0x5dfb, 0x559a, 0x582a, + 0x59e6, 0x5b8c, 0x5b98, 0x5bdb, 0x5e72, 0x5e79, 0x60a3, 0x611f, + 0x6163, 0x61be, 0x63db, 0x6562, 0x67d1, 0x6853, 0x68fa, 0x6b3e, + 0x6b53, 0x6c57, 0x6f22, 0x6f97, 0x6f45, 0x74b0, 0x7518, 0x76e3, + 0x770b, 0x7aff, 0x7ba1, 0x7c21, 0x7de9, 0x7f36, 0x7ff0, 0x809d, + 0x8266, 0x839e, 0x89b3, 0x8acc, 0x8cab, 0x9084, 0x9451, 0x9593, + 0x9591, 0x95a2, 0x9665, 0x97d3, 0x9928, 0x8218, 0x4e38, 0x542b, + 0x5cb8, 0x5dcc, 0x73a9, 0x764c, 0x773c, 0x5ca9, 0x7feb, 0x8d0b, + 0x96c1, 0x9811, 0x9854, 0x9858, 0x4f01, 0x4f0e, 0x5371, 0x559c, + 0x5668, 0x57fa, 0x5947, 0x5b09, 0x5bc4, 0x5c90, 0x5e0c, 0x5e7e, + 0x5fcc, 0x63ee, 0x673a, 0x65d7, 0x65e2, 0x671f, 0x68cb, 0x68c4, + 0x6a5f, 0x5e30, 0x6bc5, 0x6c17, 0x6c7d, 0x757f, 0x7948, 0x5b63, + 0x7a00, 0x7d00, 0x5fbd, 0x898f, 0x8a18, 0x8cb4, 0x8d77, 0x8ecc, + 0x8f1d, 0x98e2, 0x9a0e, 0x9b3c, 0x4e80, 0x507d, 0x5100, 0x5993, + 0x5b9c, 0x622f, 0x6280, 0x64ec, 0x6b3a, 0x72a0, 0x7591, 0x7947, + 0x7fa9, 0x87fb, 0x8abc, 0x8b70, 0x63ac, 0x83ca, 0x97a0, 0x5409, + 0x5403, 0x55ab, 0x6854, 0x6a58, 0x8a70, 0x7827, 0x6775, 0x9ecd, + 0x5374, 0x5ba2, 0x811a, 0x8650, 0x9006, 0x4e18, 0x4e45, 0x4ec7, + 0x4f11, 0x53ca, 0x5438, 0x5bae, 0x5f13, 0x6025, 0x6551, 0x673d, + 0x6c42, 0x6c72, 0x6ce3, 0x7078, 0x7403, 0x7a76, 0x7aae, 0x7b08, + 0x7d1a, 0x7cfe, 0x7d66, 0x65e7, 0x725b, 0x53bb, 0x5c45, 0x5de8, + 0x62d2, 0x62e0, 0x6319, 0x6e20, 0x865a, 0x8a31, 0x8ddd, 0x92f8, + 0x6f01, 0x79a6, 0x9b5a, 0x4ea8, 0x4eab, 0x4eac, 0x4f9b, 0x4fa0, + 0x50d1, 0x5147, 0x7af6, 0x5171, 0x51f6, 0x5354, 0x5321, 0x537f, + 0x53eb, 0x55ac, 0x5883, 0x5ce1, 0x5f37, 0x5f4a, 0x602f, 0x6050, + 0x606d, 0x631f, 0x6559, 0x6a4b, 0x6cc1, 0x72c2, 0x72ed, 0x77ef, + 0x80f8, 0x8105, 0x8208, 0x854e, 0x90f7, 0x93e1, 0x97ff, 0x9957, + 0x9a5a, 0x4ef0, 0x51dd, 0x5c2d, 0x6681, 0x696d, 0x5c40, 0x66f2, + 0x6975, 0x7389, 0x6850, 0x7c81, 0x50c5, 0x52e4, 0x5747, 0x5dfe, + 0x9326, 0x65a4, 0x6b23, 0x6b3d, 0x7434, 0x7981, 0x79bd, 0x7b4b, + 0x7dca, 0x82b9, 0x83cc, 0x887f, 0x895f, 0x8b39, 0x8fd1, 0x91d1, + 0x541f, 0x9280, 0x4e5d, 0x5036, 0x53e5, 0x533a, 0x72d7, 0x7396, + 0x77e9, 0x82e6, 0x8eaf, 0x99c6, 0x99c8, 0x99d2, 0x5177, 0x611a, + 0x865e, 0x55b0, 0x7a7a, 0x5076, 0x5bd3, 0x9047, 0x9685, 0x4e32, + 0x6adb, 0x91e7, 0x5c51, 0x5c48, 0x6398, 0x7a9f, 0x6c93, 0x9774, + 0x8f61, 0x7aaa, 0x718a, 0x9688, 0x7c82, 0x6817, 0x7e70, 0x6851, + 0x936c, 0x52f2, 0x541b, 0x85ab, 0x8a13, 0x7fa4, 0x8ecd, 0x90e1, + 0x5366, 0x8888, 0x7941, 0x4fc2, 0x50be, 0x5211, 0x5144, 0x5553, + 0x572d, 0x73ea, 0x578b, 0x5951, 0x5f62, 0x5f84, 0x6075, 0x6176, + 0x6167, 0x61a9, 0x63b2, 0x643a, 0x656c, 0x666f, 0x6842, 0x6e13, + 0x7566, 0x7a3d, 0x7cfb, 0x7d4c, 0x7d99, 0x7e4b, 0x7f6b, 0x830e, + 0x834a, 0x86cd, 0x8a08, 0x8a63, 0x8b66, 0x8efd, 0x981a, 0x9d8f, + 0x82b8, 0x8fce, 0x9be8, 0x5287, 0x621f, 0x6483, 0x6fc0, 0x9699, + 0x6841, 0x5091, 0x6b20, 0x6c7a, 0x6f54, 0x7a74, 0x7d50, 0x8840, + 0x8a23, 0x6708, 0x4ef6, 0x5039, 0x5026, 0x5065, 0x517c, 0x5238, + 0x5263, 0x55a7, 0x570f, 0x5805, 0x5acc, 0x5efa, 0x61b2, 0x61f8, + 0x62f3, 0x6372, 0x691c, 0x6a29, 0x727d, 0x72ac, 0x732e, 0x7814, + 0x786f, 0x7d79, 0x770c, 0x80a9, 0x898b, 0x8b19, 0x8ce2, 0x8ed2, + 0x9063, 0x9375, 0x967a, 0x9855, 0x9a13, 0x9e78, 0x5143, 0x539f, + 0x53b3, 0x5e7b, 0x5f26, 0x6e1b, 0x6e90, 0x7384, 0x73fe, 0x7d43, + 0x8237, 0x8a00, 0x8afa, 0x9650, 0x4e4e, 0x500b, 0x53e4, 0x547c, + 0x56fa, 0x59d1, 0x5b64, 0x5df1, 0x5eab, 0x5f27, 0x6238, 0x6545, + 0x67af, 0x6e56, 0x72d0, 0x7cca, 0x88b4, 0x80a1, 0x80e1, 0x83f0, + 0x864e, 0x8a87, 0x8de8, 0x9237, 0x96c7, 0x9867, 0x9f13, 0x4e94, + 0x4e92, 0x4f0d, 0x5348, 0x5449, 0x543e, 0x5a2f, 0x5f8c, 0x5fa1, + 0x609f, 0x68a7, 0x6a8e, 0x745a, 0x7881, 0x8a9e, 0x8aa4, 0x8b77, + 0x9190, 0x4e5e, 0x9bc9, 0x4ea4, 0x4f7c, 0x4faf, 0x5019, 0x5016, + 0x5149, 0x516c, 0x529f, 0x52b9, 0x52fe, 0x539a, 0x53e3, 0x5411, + 0x540e, 0x5589, 0x5751, 0x57a2, 0x597d, 0x5b54, 0x5b5d, 0x5b8f, + 0x5de5, 0x5de7, 0x5df7, 0x5e78, 0x5e83, 0x5e9a, 0x5eb7, 0x5f18, + 0x6052, 0x614c, 0x6297, 0x62d8, 0x63a7, 0x653b, 0x6602, 0x6643, + 0x66f4, 0x676d, 0x6821, 0x6897, 0x69cb, 0x6c5f, 0x6d2a, 0x6d69, + 0x6e2f, 0x6e9d, 0x7532, 0x7687, 0x786c, 0x7a3f, 0x7ce0, 0x7d05, + 0x7d18, 0x7d5e, 0x7db1, 0x8015, 0x8003, 0x80af, 0x80b1, 0x8154, + 0x818f, 0x822a, 0x8352, 0x884c, 0x8861, 0x8b1b, 0x8ca2, 0x8cfc, + 0x90ca, 0x9175, 0x9271, 0x783f, 0x92fc, 0x95a4, 0x964d, 0x9805, + 0x9999, 0x9ad8, 0x9d3b, 0x525b, 0x52ab, 0x53f7, 0x5408, 0x58d5, + 0x62f7, 0x6fe0, 0x8c6a, 0x8f5f, 0x9eb9, 0x514b, 0x523b, 0x544a, + 0x56fd, 0x7a40, 0x9177, 0x9d60, 0x9ed2, 0x7344, 0x6f09, 0x8170, + 0x7511, 0x5ffd, 0x60da, 0x9aa8, 0x72db, 0x8fbc, 0x6b64, 0x9803, + 0x4eca, 0x56f0, 0x5764, 0x58be, 0x5a5a, 0x6068, 0x61c7, 0x660f, + 0x6606, 0x6839, 0x68b1, 0x6df7, 0x75d5, 0x7d3a, 0x826e, 0x9b42, + 0x4e9b, 0x4f50, 0x53c9, 0x5506, 0x5d6f, 0x5de6, 0x5dee, 0x67fb, + 0x6c99, 0x7473, 0x7802, 0x8a50, 0x9396, 0x88df, 0x5750, 0x5ea7, + 0x632b, 0x50b5, 0x50ac, 0x518d, 0x6700, 0x54c9, 0x585e, 0x59bb, + 0x5bb0, 0x5f69, 0x624d, 0x63a1, 0x683d, 0x6b73, 0x6e08, 0x707d, + 0x91c7, 0x7280, 0x7815, 0x7826, 0x796d, 0x658e, 0x7d30, 0x83dc, + 0x88c1, 0x8f09, 0x969b, 0x5264, 0x5728, 0x6750, 0x7f6a, 0x8ca1, + 0x51b4, 0x5742, 0x962a, 0x583a, 0x698a, 0x80b4, 0x54b2, 0x5d0e, + 0x57fc, 0x7895, 0x9dfa, 0x4f5c, 0x524a, 0x548b, 0x643e, 0x6628, + 0x6714, 0x67f5, 0x7a84, 0x7b56, 0x7d22, 0x932f, 0x685c, 0x9bad, + 0x7b39, 0x5319, 0x518a, 0x5237, 0x5bdf, 0x62f6, 0x64ae, 0x64e6, + 0x672d, 0x6bba, 0x85a9, 0x96d1, 0x7690, 0x9bd6, 0x634c, 0x9306, + 0x9bab, 0x76bf, 0x6652, 0x4e09, 0x5098, 0x53c2, 0x5c71, 0x60e8, + 0x6492, 0x6563, 0x685f, 0x71e6, 0x73ca, 0x7523, 0x7b97, 0x7e82, + 0x8695, 0x8b83, 0x8cdb, 0x9178, 0x9910, 0x65ac, 0x66ab, 0x6b8b, + 0x4ed5, 0x4ed4, 0x4f3a, 0x4f7f, 0x523a, 0x53f8, 0x53f2, 0x55e3, + 0x56db, 0x58eb, 0x59cb, 0x59c9, 0x59ff, 0x5b50, 0x5c4d, 0x5e02, + 0x5e2b, 0x5fd7, 0x601d, 0x6307, 0x652f, 0x5b5c, 0x65af, 0x65bd, + 0x65e8, 0x679d, 0x6b62, 0x6b7b, 0x6c0f, 0x7345, 0x7949, 0x79c1, + 0x7cf8, 0x7d19, 0x7d2b, 0x80a2, 0x8102, 0x81f3, 0x8996, 0x8a5e, + 0x8a69, 0x8a66, 0x8a8c, 0x8aee, 0x8cc7, 0x8cdc, 0x96cc, 0x98fc, + 0x6b6f, 0x4e8b, 0x4f3c, 0x4f8d, 0x5150, 0x5b57, 0x5bfa, 0x6148, + 0x6301, 0x6642, 0x6b21, 0x6ecb, 0x6cbb, 0x723e, 0x74bd, 0x75d4, + 0x78c1, 0x793a, 0x800c, 0x8033, 0x81ea, 0x8494, 0x8f9e, 0x6c50, + 0x9e7f, 0x5f0f, 0x8b58, 0x9d2b, 0x7afa, 0x8ef8, 0x5b8d, 0x96eb, + 0x4e03, 0x53f1, 0x57f7, 0x5931, 0x5ac9, 0x5ba4, 0x6089, 0x6e7f, + 0x6f06, 0x75be, 0x8cea, 0x5b9f, 0x8500, 0x7be0, 0x5072, 0x67f4, + 0x829d, 0x5c61, 0x854a, 0x7e1e, 0x820e, 0x5199, 0x5c04, 0x6368, + 0x8d66, 0x659c, 0x716e, 0x793e, 0x7d17, 0x8005, 0x8b1d, 0x8eca, + 0x906e, 0x86c7, 0x90aa, 0x501f, 0x52fa, 0x5c3a, 0x6753, 0x707c, + 0x7235, 0x914c, 0x91c8, 0x932b, 0x82e5, 0x5bc2, 0x5f31, 0x60f9, + 0x4e3b, 0x53d6, 0x5b88, 0x624b, 0x6731, 0x6b8a, 0x72e9, 0x73e0, + 0x7a2e, 0x816b, 0x8da3, 0x9152, 0x9996, 0x5112, 0x53d7, 0x546a, + 0x5bff, 0x6388, 0x6a39, 0x7dac, 0x9700, 0x56da, 0x53ce, 0x5468, + 0x5b97, 0x5c31, 0x5dde, 0x4fee, 0x6101, 0x62fe, 0x6d32, 0x79c0, + 0x79cb, 0x7d42, 0x7e4d, 0x7fd2, 0x81ed, 0x821f, 0x8490, 0x8846, + 0x8972, 0x8b90, 0x8e74, 0x8f2f, 0x9031, 0x914b, 0x916c, 0x96c6, + 0x919c, 0x4ec0, 0x4f4f, 0x5145, 0x5341, 0x5f93, 0x620e, 0x67d4, + 0x6c41, 0x6e0b, 0x7363, 0x7e26, 0x91cd, 0x9283, 0x53d4, 0x5919, + 0x5bbf, 0x6dd1, 0x795d, 0x7e2e, 0x7c9b, 0x587e, 0x719f, 0x51fa, + 0x8853, 0x8ff0, 0x4fca, 0x5cfb, 0x6625, 0x77ac, 0x7ae3, 0x821c, + 0x99ff, 0x51c6, 0x5faa, 0x65ec, 0x696f, 0x6b89, 0x6df3, 0x6e96, + 0x6f64, 0x76fe, 0x7d14, 0x5de1, 0x9075, 0x9187, 0x9806, 0x51e6, + 0x521d, 0x6240, 0x6691, 0x66d9, 0x6e1a, 0x5eb6, 0x7dd2, 0x7f72, + 0x66f8, 0x85af, 0x85f7, 0x8af8, 0x52a9, 0x53d9, 0x5973, 0x5e8f, + 0x5f90, 0x6055, 0x92e4, 0x9664, 0x50b7, 0x511f, 0x52dd, 0x5320, + 0x5347, 0x53ec, 0x54e8, 0x5546, 0x5531, 0x5617, 0x5968, 0x59be, + 0x5a3c, 0x5bb5, 0x5c06, 0x5c0f, 0x5c11, 0x5c1a, 0x5e84, 0x5e8a, + 0x5ee0, 0x5f70, 0x627f, 0x6284, 0x62db, 0x638c, 0x6377, 0x6607, + 0x660c, 0x662d, 0x6676, 0x677e, 0x68a2, 0x6a1f, 0x6a35, 0x6cbc, + 0x6d88, 0x6e09, 0x6e58, 0x713c, 0x7126, 0x7167, 0x75c7, 0x7701, + 0x785d, 0x7901, 0x7965, 0x79f0, 0x7ae0, 0x7b11, 0x7ca7, 0x7d39, + 0x8096, 0x83d6, 0x848b, 0x8549, 0x885d, 0x88f3, 0x8a1f, 0x8a3c, + 0x8a54, 0x8a73, 0x8c61, 0x8cde, 0x91a4, 0x9266, 0x937e, 0x9418, + 0x969c, 0x9798, 0x4e0a, 0x4e08, 0x4e1e, 0x4e57, 0x5197, 0x5270, + 0x57ce, 0x5834, 0x58cc, 0x5b22, 0x5e38, 0x60c5, 0x64fe, 0x6761, + 0x6756, 0x6d44, 0x72b6, 0x7573, 0x7a63, 0x84b8, 0x8b72, 0x91b8, + 0x9320, 0x5631, 0x57f4, 0x98fe, 0x62ed, 0x690d, 0x6b96, 0x71ed, + 0x7e54, 0x8077, 0x8272, 0x89e6, 0x98df, 0x8755, 0x8fb1, 0x5c3b, + 0x4f38, 0x4fe1, 0x4fb5, 0x5507, 0x5a20, 0x5bdd, 0x5be9, 0x5fc3, + 0x614e, 0x632f, 0x65b0, 0x664b, 0x68ee, 0x699b, 0x6d78, 0x6df1, + 0x7533, 0x75b9, 0x771f, 0x795e, 0x79e6, 0x7d33, 0x81e3, 0x82af, + 0x85aa, 0x89aa, 0x8a3a, 0x8eab, 0x8f9b, 0x9032, 0x91dd, 0x9707, + 0x4eba, 0x4ec1, 0x5203, 0x5875, 0x58ec, 0x5c0b, 0x751a, 0x5c3d, + 0x814e, 0x8a0a, 0x8fc5, 0x9663, 0x976d, 0x7b25, 0x8acf, 0x9808, + 0x9162, 0x56f3, 0x53a8, 0x9017, 0x5439, 0x5782, 0x5e25, 0x63a8, + 0x6c34, 0x708a, 0x7761, 0x7c8b, 0x7fe0, 0x8870, 0x9042, 0x9154, + 0x9310, 0x9318, 0x968f, 0x745e, 0x9ac4, 0x5d07, 0x5d69, 0x6570, + 0x67a2, 0x8da8, 0x96db, 0x636e, 0x6749, 0x6919, 0x83c5, 0x9817, + 0x96c0, 0x88fe, 0x6f84, 0x647a, 0x5bf8, 0x4e16, 0x702c, 0x755d, + 0x662f, 0x51c4, 0x5236, 0x52e2, 0x59d3, 0x5f81, 0x6027, 0x6210, + 0x653f, 0x6574, 0x661f, 0x6674, 0x68f2, 0x6816, 0x6b63, 0x6e05, + 0x7272, 0x751f, 0x76db, 0x7cbe, 0x8056, 0x58f0, 0x88fd, 0x897f, + 0x8aa0, 0x8a93, 0x8acb, 0x901d, 0x9192, 0x9752, 0x9759, 0x6589, + 0x7a0e, 0x8106, 0x96bb, 0x5e2d, 0x60dc, 0x621a, 0x65a5, 0x6614, + 0x6790, 0x77f3, 0x7a4d, 0x7c4d, 0x7e3e, 0x810a, 0x8cac, 0x8d64, + 0x8de1, 0x8e5f, 0x78a9, 0x5207, 0x62d9, 0x63a5, 0x6442, 0x6298, + 0x8a2d, 0x7a83, 0x7bc0, 0x8aac, 0x96ea, 0x7d76, 0x820c, 0x8749, + 0x4ed9, 0x5148, 0x5343, 0x5360, 0x5ba3, 0x5c02, 0x5c16, 0x5ddd, + 0x6226, 0x6247, 0x64b0, 0x6813, 0x6834, 0x6cc9, 0x6d45, 0x6d17, + 0x67d3, 0x6f5c, 0x714e, 0x717d, 0x65cb, 0x7a7f, 0x7bad, 0x7dda, + 0x7e4a, 0x7fa8, 0x817a, 0x821b, 0x8239, 0x85a6, 0x8a6e, 0x8cce, + 0x8df5, 0x9078, 0x9077, 0x92ad, 0x9291, 0x9583, 0x9bae, 0x524d, + 0x5584, 0x6f38, 0x7136, 0x5168, 0x7985, 0x7e55, 0x81b3, 0x7cce, + 0x564c, 0x5851, 0x5ca8, 0x63aa, 0x66fe, 0x66fd, 0x695a, 0x72d9, + 0x758f, 0x758e, 0x790e, 0x7956, 0x79df, 0x7c97, 0x7d20, 0x7d44, + 0x8607, 0x8a34, 0x963b, 0x9061, 0x9f20, 0x50e7, 0x5275, 0x53cc, + 0x53e2, 0x5009, 0x55aa, 0x58ee, 0x594f, 0x723d, 0x5b8b, 0x5c64, + 0x531d, 0x60e3, 0x60f3, 0x635c, 0x6383, 0x633f, 0x63bb, 0x64cd, + 0x65e9, 0x66f9, 0x5de3, 0x69cd, 0x69fd, 0x6f15, 0x71e5, 0x4e89, + 0x75e9, 0x76f8, 0x7a93, 0x7cdf, 0x7dcf, 0x7d9c, 0x8061, 0x8349, + 0x8358, 0x846c, 0x84bc, 0x85fb, 0x88c5, 0x8d70, 0x9001, 0x906d, + 0x9397, 0x971c, 0x9a12, 0x50cf, 0x5897, 0x618e, 0x81d3, 0x8535, + 0x8d08, 0x9020, 0x4fc3, 0x5074, 0x5247, 0x5373, 0x606f, 0x6349, + 0x675f, 0x6e2c, 0x8db3, 0x901f, 0x4fd7, 0x5c5e, 0x8cca, 0x65cf, + 0x7d9a, 0x5352, 0x8896, 0x5176, 0x63c3, 0x5b58, 0x5b6b, 0x5c0a, + 0x640d, 0x6751, 0x905c, 0x4ed6, 0x591a, 0x592a, 0x6c70, 0x8a51, + 0x553e, 0x5815, 0x59a5, 0x60f0, 0x6253, 0x67c1, 0x8235, 0x6955, + 0x9640, 0x99c4, 0x9a28, 0x4f53, 0x5806, 0x5bfe, 0x8010, 0x5cb1, + 0x5e2f, 0x5f85, 0x6020, 0x614b, 0x6234, 0x66ff, 0x6cf0, 0x6ede, + 0x80ce, 0x817f, 0x82d4, 0x888b, 0x8cb8, 0x9000, 0x902e, 0x968a, + 0x9edb, 0x9bdb, 0x4ee3, 0x53f0, 0x5927, 0x7b2c, 0x918d, 0x984c, + 0x9df9, 0x6edd, 0x7027, 0x5353, 0x5544, 0x5b85, 0x6258, 0x629e, + 0x62d3, 0x6ca2, 0x6fef, 0x7422, 0x8a17, 0x9438, 0x6fc1, 0x8afe, + 0x8338, 0x51e7, 0x86f8, 0x53ea, 0x53e9, 0x4f46, 0x9054, 0x8fb0, + 0x596a, 0x8131, 0x5dfd, 0x7aea, 0x8fbf, 0x68da, 0x8c37, 0x72f8, + 0x9c48, 0x6a3d, 0x8ab0, 0x4e39, 0x5358, 0x5606, 0x5766, 0x62c5, + 0x63a2, 0x65e6, 0x6b4e, 0x6de1, 0x6e5b, 0x70ad, 0x77ed, 0x7aef, + 0x7baa, 0x7dbb, 0x803d, 0x80c6, 0x86cb, 0x8a95, 0x935b, 0x56e3, + 0x58c7, 0x5f3e, 0x65ad, 0x6696, 0x6a80, 0x6bb5, 0x7537, 0x8ac7, + 0x5024, 0x77e5, 0x5730, 0x5f1b, 0x6065, 0x667a, 0x6c60, 0x75f4, + 0x7a1a, 0x7f6e, 0x81f4, 0x8718, 0x9045, 0x99b3, 0x7bc9, 0x755c, + 0x7af9, 0x7b51, 0x84c4, 0x9010, 0x79e9, 0x7a92, 0x8336, 0x5ae1, + 0x7740, 0x4e2d, 0x4ef2, 0x5b99, 0x5fe0, 0x62bd, 0x663c, 0x67f1, + 0x6ce8, 0x866b, 0x8877, 0x8a3b, 0x914e, 0x92f3, 0x99d0, 0x6a17, + 0x7026, 0x732a, 0x82e7, 0x8457, 0x8caf, 0x4e01, 0x5146, 0x51cb, + 0x558b, 0x5bf5, 0x5e16, 0x5e33, 0x5e81, 0x5f14, 0x5f35, 0x5f6b, + 0x5fb4, 0x61f2, 0x6311, 0x66a2, 0x671d, 0x6f6e, 0x7252, 0x753a, + 0x773a, 0x8074, 0x8139, 0x8178, 0x8776, 0x8abf, 0x8adc, 0x8d85, + 0x8df3, 0x929a, 0x9577, 0x9802, 0x9ce5, 0x52c5, 0x6357, 0x76f4, + 0x6715, 0x6c88, 0x73cd, 0x8cc3, 0x93ae, 0x9673, 0x6d25, 0x589c, + 0x690e, 0x69cc, 0x8ffd, 0x939a, 0x75db, 0x901a, 0x585a, 0x6802, + 0x63b4, 0x69fb, 0x4f43, 0x6f2c, 0x67d8, 0x8fbb, 0x8526, 0x7db4, + 0x9354, 0x693f, 0x6f70, 0x576a, 0x58f7, 0x5b2c, 0x7d2c, 0x722a, + 0x540a, 0x91e3, 0x9db4, 0x4ead, 0x4f4e, 0x505c, 0x5075, 0x5243, + 0x8c9e, 0x5448, 0x5824, 0x5b9a, 0x5e1d, 0x5e95, 0x5ead, 0x5ef7, + 0x5f1f, 0x608c, 0x62b5, 0x633a, 0x63d0, 0x68af, 0x6c40, 0x7887, + 0x798e, 0x7a0b, 0x7de0, 0x8247, 0x8a02, 0x8ae6, 0x8e44, 0x9013, + 0x90b8, 0x912d, 0x91d8, 0x9f0e, 0x6ce5, 0x6458, 0x64e2, 0x6575, + 0x6ef4, 0x7684, 0x7b1b, 0x9069, 0x93d1, 0x6eba, 0x54f2, 0x5fb9, + 0x64a4, 0x8f4d, 0x8fed, 0x9244, 0x5178, 0x586b, 0x5929, 0x5c55, + 0x5e97, 0x6dfb, 0x7e8f, 0x751c, 0x8cbc, 0x8ee2, 0x985b, 0x70b9, + 0x4f1d, 0x6bbf, 0x6fb1, 0x7530, 0x96fb, 0x514e, 0x5410, 0x5835, + 0x5857, 0x59ac, 0x5c60, 0x5f92, 0x6597, 0x675c, 0x6e21, 0x767b, + 0x83df, 0x8ced, 0x9014, 0x90fd, 0x934d, 0x7825, 0x783a, 0x52aa, + 0x5ea6, 0x571f, 0x5974, 0x6012, 0x5012, 0x515a, 0x51ac, 0x51cd, + 0x5200, 0x5510, 0x5854, 0x5858, 0x5957, 0x5b95, 0x5cf6, 0x5d8b, + 0x60bc, 0x6295, 0x642d, 0x6771, 0x6843, 0x68bc, 0x68df, 0x76d7, + 0x6dd8, 0x6e6f, 0x6d9b, 0x706f, 0x71c8, 0x5f53, 0x75d8, 0x7977, + 0x7b49, 0x7b54, 0x7b52, 0x7cd6, 0x7d71, 0x5230, 0x8463, 0x8569, + 0x85e4, 0x8a0e, 0x8b04, 0x8c46, 0x8e0f, 0x9003, 0x900f, 0x9419, + 0x9676, 0x982d, 0x9a30, 0x95d8, 0x50cd, 0x52d5, 0x540c, 0x5802, + 0x5c0e, 0x61a7, 0x649e, 0x6d1e, 0x77b3, 0x7ae5, 0x80f4, 0x8404, + 0x9053, 0x9285, 0x5ce0, 0x9d07, 0x533f, 0x5f97, 0x5fb3, 0x6d9c, + 0x7279, 0x7763, 0x79bf, 0x7be4, 0x6bd2, 0x72ec, 0x8aad, 0x6803, + 0x6a61, 0x51f8, 0x7a81, 0x6934, 0x5c4a, 0x9cf6, 0x82eb, 0x5bc5, + 0x9149, 0x701e, 0x5678, 0x5c6f, 0x60c7, 0x6566, 0x6c8c, 0x8c5a, + 0x9041, 0x9813, 0x5451, 0x66c7, 0x920d, 0x5948, 0x90a3, 0x5185, + 0x4e4d, 0x51ea, 0x8599, 0x8b0e, 0x7058, 0x637a, 0x934b, 0x6962, + 0x99b4, 0x7e04, 0x7577, 0x5357, 0x6960, 0x8edf, 0x96e3, 0x6c5d, + 0x4e8c, 0x5c3c, 0x5f10, 0x8fe9, 0x5302, 0x8cd1, 0x8089, 0x8679, + 0x5eff, 0x65e5, 0x4e73, 0x5165, 0x5982, 0x5c3f, 0x97ee, 0x4efb, + 0x598a, 0x5fcd, 0x8a8d, 0x6fe1, 0x79b0, 0x7962, 0x5be7, 0x8471, + 0x732b, 0x71b1, 0x5e74, 0x5ff5, 0x637b, 0x649a, 0x71c3, 0x7c98, + 0x4e43, 0x5efc, 0x4e4b, 0x57dc, 0x56a2, 0x60a9, 0x6fc3, 0x7d0d, + 0x80fd, 0x8133, 0x81bf, 0x8fb2, 0x8997, 0x86a4, 0x5df4, 0x628a, + 0x64ad, 0x8987, 0x6777, 0x6ce2, 0x6d3e, 0x7436, 0x7834, 0x5a46, + 0x7f75, 0x82ad, 0x99ac, 0x4ff3, 0x5ec3, 0x62dd, 0x6392, 0x6557, + 0x676f, 0x76c3, 0x724c, 0x80cc, 0x80ba, 0x8f29, 0x914d, 0x500d, + 0x57f9, 0x5a92, 0x6885, 0x6973, 0x7164, 0x72fd, 0x8cb7, 0x58f2, + 0x8ce0, 0x966a, 0x9019, 0x877f, 0x79e4, 0x77e7, 0x8429, 0x4f2f, + 0x5265, 0x535a, 0x62cd, 0x67cf, 0x6cca, 0x767d, 0x7b94, 0x7c95, + 0x8236, 0x8584, 0x8feb, 0x66dd, 0x6f20, 0x7206, 0x7e1b, 0x83ab, + 0x99c1, 0x9ea6, 0x51fd, 0x7bb1, 0x7872, 0x7bb8, 0x8087, 0x7b48, + 0x6ae8, 0x5e61, 0x808c, 0x7551, 0x7560, 0x516b, 0x9262, 0x6e8c, + 0x767a, 0x9197, 0x9aea, 0x4f10, 0x7f70, 0x629c, 0x7b4f, 0x95a5, + 0x9ce9, 0x567a, 0x5859, 0x86e4, 0x96bc, 0x4f34, 0x5224, 0x534a, + 0x53cd, 0x53db, 0x5e06, 0x642c, 0x6591, 0x677f, 0x6c3e, 0x6c4e, + 0x7248, 0x72af, 0x73ed, 0x7554, 0x7e41, 0x822c, 0x85e9, 0x8ca9, + 0x7bc4, 0x91c6, 0x7169, 0x9812, 0x98ef, 0x633d, 0x6669, 0x756a, + 0x76e4, 0x78d0, 0x8543, 0x86ee, 0x532a, 0x5351, 0x5426, 0x5983, + 0x5e87, 0x5f7c, 0x60b2, 0x6249, 0x6279, 0x62ab, 0x6590, 0x6bd4, + 0x6ccc, 0x75b2, 0x76ae, 0x7891, 0x79d8, 0x7dcb, 0x7f77, 0x80a5, + 0x88ab, 0x8ab9, 0x8cbb, 0x907f, 0x975e, 0x98db, 0x6a0b, 0x7c38, + 0x5099, 0x5c3e, 0x5fae, 0x6787, 0x6bd8, 0x7435, 0x7709, 0x7f8e, + 0x9f3b, 0x67ca, 0x7a17, 0x5339, 0x758b, 0x9aed, 0x5f66, 0x819d, + 0x83f1, 0x8098, 0x5f3c, 0x5fc5, 0x7562, 0x7b46, 0x903c, 0x6867, + 0x59eb, 0x5a9b, 0x7d10, 0x767e, 0x8b2c, 0x4ff5, 0x5f6a, 0x6a19, + 0x6c37, 0x6f02, 0x74e2, 0x7968, 0x8868, 0x8a55, 0x8c79, 0x5edf, + 0x63cf, 0x75c5, 0x79d2, 0x82d7, 0x9328, 0x92f2, 0x849c, 0x86ed, + 0x9c2d, 0x54c1, 0x5f6c, 0x658c, 0x6d5c, 0x7015, 0x8ca7, 0x8cd3, + 0x983b, 0x654f, 0x74f6, 0x4e0d, 0x4ed8, 0x57e0, 0x592b, 0x5a66, + 0x5bcc, 0x51a8, 0x5e03, 0x5e9c, 0x6016, 0x6276, 0x6577, 0x65a7, + 0x666e, 0x6d6e, 0x7236, 0x7b26, 0x8150, 0x819a, 0x8299, 0x8b5c, + 0x8ca0, 0x8ce6, 0x8d74, 0x961c, 0x9644, 0x4fae, 0x64ab, 0x6b66, + 0x821e, 0x8461, 0x856a, 0x90e8, 0x5c01, 0x6953, 0x98a8, 0x847a, + 0x8557, 0x4f0f, 0x526f, 0x5fa9, 0x5e45, 0x670d, 0x798f, 0x8179, + 0x8907, 0x8986, 0x6df5, 0x5f17, 0x6255, 0x6cb8, 0x4ecf, 0x7269, + 0x9b92, 0x5206, 0x543b, 0x5674, 0x58b3, 0x61a4, 0x626e, 0x711a, + 0x596e, 0x7c89, 0x7cde, 0x7d1b, 0x96f0, 0x6587, 0x805e, 0x4e19, + 0x4f75, 0x5175, 0x5840, 0x5e63, 0x5e73, 0x5f0a, 0x67c4, 0x4e26, + 0x853d, 0x9589, 0x965b, 0x7c73, 0x9801, 0x50fb, 0x58c1, 0x7656, + 0x78a7, 0x5225, 0x77a5, 0x8511, 0x7b86, 0x504f, 0x5909, 0x7247, + 0x7bc7, 0x7de8, 0x8fba, 0x8fd4, 0x904d, 0x4fbf, 0x52c9, 0x5a29, + 0x5f01, 0x97ad, 0x4fdd, 0x8217, 0x92ea, 0x5703, 0x6355, 0x6b69, + 0x752b, 0x88dc, 0x8f14, 0x7a42, 0x52df, 0x5893, 0x6155, 0x620a, + 0x66ae, 0x6bcd, 0x7c3f, 0x83e9, 0x5023, 0x4ff8, 0x5305, 0x5446, + 0x5831, 0x5949, 0x5b9d, 0x5cf0, 0x5cef, 0x5d29, 0x5e96, 0x62b1, + 0x6367, 0x653e, 0x65b9, 0x670b, 0x6cd5, 0x6ce1, 0x70f9, 0x7832, + 0x7e2b, 0x80de, 0x82b3, 0x840c, 0x84ec, 0x8702, 0x8912, 0x8a2a, + 0x8c4a, 0x90a6, 0x92d2, 0x98fd, 0x9cf3, 0x9d6c, 0x4e4f, 0x4ea1, + 0x508d, 0x5256, 0x574a, 0x59a8, 0x5e3d, 0x5fd8, 0x5fd9, 0x623f, + 0x66b4, 0x671b, 0x67d0, 0x68d2, 0x5192, 0x7d21, 0x80aa, 0x81a8, + 0x8b00, 0x8c8c, 0x8cbf, 0x927e, 0x9632, 0x5420, 0x982c, 0x5317, + 0x50d5, 0x535c, 0x58a8, 0x64b2, 0x6734, 0x7267, 0x7766, 0x7a46, + 0x91e6, 0x52c3, 0x6ca1, 0x6b86, 0x5800, 0x5e4c, 0x5954, 0x672c, + 0x7ffb, 0x51e1, 0x76c6, 0x6469, 0x78e8, 0x9b54, 0x9ebb, 0x57cb, + 0x59b9, 0x6627, 0x679a, 0x6bce, 0x54e9, 0x69d9, 0x5e55, 0x819c, + 0x6795, 0x9baa, 0x67fe, 0x9c52, 0x685d, 0x4ea6, 0x4fe3, 0x53c8, + 0x62b9, 0x672b, 0x6cab, 0x8fc4, 0x4fad, 0x7e6d, 0x9ebf, 0x4e07, + 0x6162, 0x6e80, 0x6f2b, 0x8513, 0x5473, 0x672a, 0x9b45, 0x5df3, + 0x7b95, 0x5cac, 0x5bc6, 0x871c, 0x6e4a, 0x84d1, 0x7a14, 0x8108, + 0x5999, 0x7c8d, 0x6c11, 0x7720, 0x52d9, 0x5922, 0x7121, 0x725f, + 0x77db, 0x9727, 0x9d61, 0x690b, 0x5a7f, 0x5a18, 0x51a5, 0x540d, + 0x547d, 0x660e, 0x76df, 0x8ff7, 0x9298, 0x9cf4, 0x59ea, 0x725d, + 0x6ec5, 0x514d, 0x68c9, 0x7dbf, 0x7dec, 0x9762, 0x9eba, 0x6478, + 0x6a21, 0x8302, 0x5984, 0x5b5f, 0x6bdb, 0x731b, 0x76f2, 0x7db2, + 0x8017, 0x8499, 0x5132, 0x6728, 0x9ed9, 0x76ee, 0x6762, 0x52ff, + 0x9905, 0x5c24, 0x623b, 0x7c7e, 0x8cb0, 0x554f, 0x60b6, 0x7d0b, + 0x9580, 0x5301, 0x4e5f, 0x51b6, 0x591c, 0x723a, 0x8036, 0x91ce, + 0x5f25, 0x77e2, 0x5384, 0x5f79, 0x7d04, 0x85ac, 0x8a33, 0x8e8d, + 0x9756, 0x67f3, 0x85ae, 0x9453, 0x6109, 0x6108, 0x6cb9, 0x7652, + 0x8aed, 0x8f38, 0x552f, 0x4f51, 0x512a, 0x52c7, 0x53cb, 0x5ba5, + 0x5e7d, 0x60a0, 0x6182, 0x63d6, 0x6709, 0x67da, 0x6e67, 0x6d8c, + 0x7336, 0x7337, 0x7531, 0x7950, 0x88d5, 0x8a98, 0x904a, 0x9091, + 0x90f5, 0x96c4, 0x878d, 0x5915, 0x4e88, 0x4f59, 0x4e0e, 0x8a89, + 0x8f3f, 0x9810, 0x50ad, 0x5e7c, 0x5996, 0x5bb9, 0x5eb8, 0x63da, + 0x63fa, 0x64c1, 0x66dc, 0x694a, 0x69d8, 0x6d0b, 0x6eb6, 0x7194, + 0x7528, 0x7aaf, 0x7f8a, 0x8000, 0x8449, 0x84c9, 0x8981, 0x8b21, + 0x8e0a, 0x9065, 0x967d, 0x990a, 0x617e, 0x6291, 0x6b32, 0x6c83, + 0x6d74, 0x7fcc, 0x7ffc, 0x6dc0, 0x7f85, 0x87ba, 0x88f8, 0x6765, + 0x83b1, 0x983c, 0x96f7, 0x6d1b, 0x7d61, 0x843d, 0x916a, 0x4e71, + 0x5375, 0x5d50, 0x6b04, 0x6feb, 0x85cd, 0x862d, 0x89a7, 0x5229, + 0x540f, 0x5c65, 0x674e, 0x68a8, 0x7406, 0x7483, 0x75e2, 0x88cf, + 0x88e1, 0x91cc, 0x96e2, 0x9678, 0x5f8b, 0x7387, 0x7acb, 0x844e, + 0x63a0, 0x7565, 0x5289, 0x6d41, 0x6e9c, 0x7409, 0x7559, 0x786b, + 0x7c92, 0x9686, 0x7adc, 0x9f8d, 0x4fb6, 0x616e, 0x65c5, 0x865c, + 0x4e86, 0x4eae, 0x50da, 0x4e21, 0x51cc, 0x5bee, 0x6599, 0x6881, + 0x6dbc, 0x731f, 0x7642, 0x77ad, 0x7a1c, 0x7ce7, 0x826f, 0x8ad2, + 0x907c, 0x91cf, 0x9675, 0x9818, 0x529b, 0x7dd1, 0x502b, 0x5398, + 0x6797, 0x6dcb, 0x71d0, 0x7433, 0x81e8, 0x8f2a, 0x96a3, 0x9c57, + 0x9e9f, 0x7460, 0x5841, 0x6d99, 0x7d2f, 0x985e, 0x4ee4, 0x4f36, + 0x4f8b, 0x51b7, 0x52b1, 0x5dba, 0x601c, 0x73b2, 0x793c, 0x82d3, + 0x9234, 0x96b7, 0x96f6, 0x970a, 0x9e97, 0x9f62, 0x66a6, 0x6b74, + 0x5217, 0x52a3, 0x70c8, 0x88c2, 0x5ec9, 0x604b, 0x6190, 0x6f23, + 0x7149, 0x7c3e, 0x7df4, 0x806f, 0x84ee, 0x9023, 0x932c, 0x5442, + 0x9b6f, 0x6ad3, 0x7089, 0x8cc2, 0x8def, 0x9732, 0x52b4, 0x5a41, + 0x5eca, 0x5f04, 0x6717, 0x697c, 0x6994, 0x6d6a, 0x6f0f, 0x7262, + 0x72fc, 0x7bed, 0x8001, 0x807e, 0x874b, 0x90ce, 0x516d, 0x9e93, + 0x7984, 0x808b, 0x9332, 0x8ad6, 0x502d, 0x548c, 0x8a71, 0x6b6a, + 0x8cc4, 0x8107, 0x60d1, 0x67a0, 0x9df2, 0x4e99, 0x4e98, 0x9c10, + 0x8a6b, 0x85c1, 0x8568, 0x6900, 0x6e7e, 0x7897, 0x8155, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x5f0c, 0x4e10, 0x4e15, 0x4e2a, 0x4e31, 0x4e36, + 0x4e3c, 0x4e3f, 0x4e42, 0x4e56, 0x4e58, 0x4e82, 0x4e85, 0x8c6b, + 0x4e8a, 0x8212, 0x5f0d, 0x4e8e, 0x4e9e, 0x4e9f, 0x4ea0, 0x4ea2, + 0x4eb0, 0x4eb3, 0x4eb6, 0x4ece, 0x4ecd, 0x4ec4, 0x4ec6, 0x4ec2, + 0x4ed7, 0x4ede, 0x4eed, 0x4edf, 0x4ef7, 0x4f09, 0x4f5a, 0x4f30, + 0x4f5b, 0x4f5d, 0x4f57, 0x4f47, 0x4f76, 0x4f88, 0x4f8f, 0x4f98, + 0x4f7b, 0x4f69, 0x4f70, 0x4f91, 0x4f6f, 0x4f86, 0x4f96, 0x5118, + 0x4fd4, 0x4fdf, 0x4fce, 0x4fd8, 0x4fdb, 0x4fd1, 0x4fda, 0x4fd0, + 0x4fe4, 0x4fe5, 0x501a, 0x5028, 0x5014, 0x502a, 0x5025, 0x5005, + 0x4f1c, 0x4ff6, 0x5021, 0x5029, 0x502c, 0x4ffe, 0x4fef, 0x5011, + 0x5006, 0x5043, 0x5047, 0x6703, 0x5055, 0x5050, 0x5048, 0x505a, + 0x5056, 0x506c, 0x5078, 0x5080, 0x509a, 0x5085, 0x50b4, 0x50b2, + 0x50c9, 0x50ca, 0x50b3, 0x50c2, 0x50d6, 0x50de, 0x50e5, 0x50ed, + 0x50e3, 0x50ee, 0x50f9, 0x50f5, 0x5109, 0x5101, 0x5102, 0x5116, + 0x5115, 0x5114, 0x511a, 0x5121, 0x513a, 0x5137, 0x513c, 0x513b, + 0x513f, 0x5140, 0x5152, 0x514c, 0x5154, 0x5162, 0x7af8, 0x5169, + 0x516a, 0x516e, 0x5180, 0x5182, 0x56d8, 0x518c, 0x5189, 0x518f, + 0x5191, 0x5193, 0x5195, 0x5196, 0x51a4, 0x51a6, 0x51a2, 0x51a9, + 0x51aa, 0x51ab, 0x51b3, 0x51b1, 0x51b2, 0x51b0, 0x51b5, 0x51bd, + 0x51c5, 0x51c9, 0x51db, 0x51e0, 0x8655, 0x51e9, 0x51ed, 0x51f0, + 0x51f5, 0x51fe, 0x5204, 0x520b, 0x5214, 0x520e, 0x5227, 0x522a, + 0x522e, 0x5233, 0x5239, 0x524f, 0x5244, 0x524b, 0x524c, 0x525e, + 0x5254, 0x526a, 0x5274, 0x5269, 0x5273, 0x527f, 0x527d, 0x528d, + 0x5294, 0x5292, 0x5271, 0x5288, 0x5291, 0x8fa8, 0x8fa7, 0x52ac, + 0x52ad, 0x52bc, 0x52b5, 0x52c1, 0x52cd, 0x52d7, 0x52de, 0x52e3, + 0x52e6, 0x98ed, 0x52e0, 0x52f3, 0x52f5, 0x52f8, 0x52f9, 0x5306, + 0x5308, 0x7538, 0x530d, 0x5310, 0x530f, 0x5315, 0x531a, 0x5323, + 0x532f, 0x5331, 0x5333, 0x5338, 0x5340, 0x5346, 0x5345, 0x4e17, + 0x5349, 0x534d, 0x51d6, 0x535e, 0x5369, 0x536e, 0x5918, 0x537b, + 0x5377, 0x5382, 0x5396, 0x53a0, 0x53a6, 0x53a5, 0x53ae, 0x53b0, + 0x53b6, 0x53c3, 0x7c12, 0x96d9, 0x53df, 0x66fc, 0x71ee, 0x53ee, + 0x53e8, 0x53ed, 0x53fa, 0x5401, 0x543d, 0x5440, 0x542c, 0x542d, + 0x543c, 0x542e, 0x5436, 0x5429, 0x541d, 0x544e, 0x548f, 0x5475, + 0x548e, 0x545f, 0x5471, 0x5477, 0x5470, 0x5492, 0x547b, 0x5480, + 0x5476, 0x5484, 0x5490, 0x5486, 0x54c7, 0x54a2, 0x54b8, 0x54a5, + 0x54ac, 0x54c4, 0x54c8, 0x54a8, 0x54ab, 0x54c2, 0x54a4, 0x54be, + 0x54bc, 0x54d8, 0x54e5, 0x54e6, 0x550f, 0x5514, 0x54fd, 0x54ee, + 0x54ed, 0x54fa, 0x54e2, 0x5539, 0x5540, 0x5563, 0x554c, 0x552e, + 0x555c, 0x5545, 0x5556, 0x5557, 0x5538, 0x5533, 0x555d, 0x5599, + 0x5580, 0x54af, 0x558a, 0x559f, 0x557b, 0x557e, 0x5598, 0x559e, + 0x55ae, 0x557c, 0x5583, 0x55a9, 0x5587, 0x55a8, 0x55da, 0x55c5, + 0x55df, 0x55c4, 0x55dc, 0x55e4, 0x55d4, 0x5614, 0x55f7, 0x5616, + 0x55fe, 0x55fd, 0x561b, 0x55f9, 0x564e, 0x5650, 0x71df, 0x5634, + 0x5636, 0x5632, 0x5638, 0x566b, 0x5664, 0x562f, 0x566c, 0x566a, + 0x5686, 0x5680, 0x568a, 0x56a0, 0x5694, 0x568f, 0x56a5, 0x56ae, + 0x56b6, 0x56b4, 0x56c2, 0x56bc, 0x56c1, 0x56c3, 0x56c0, 0x56c8, + 0x56ce, 0x56d1, 0x56d3, 0x56d7, 0x56ee, 0x56f9, 0x5700, 0x56ff, + 0x5704, 0x5709, 0x5708, 0x570b, 0x570d, 0x5713, 0x5718, 0x5716, + 0x55c7, 0x571c, 0x5726, 0x5737, 0x5738, 0x574e, 0x573b, 0x5740, + 0x574f, 0x5769, 0x57c0, 0x5788, 0x5761, 0x577f, 0x5789, 0x5793, + 0x57a0, 0x57b3, 0x57a4, 0x57aa, 0x57b0, 0x57c3, 0x57c6, 0x57d4, + 0x57d2, 0x57d3, 0x580a, 0x57d6, 0x57e3, 0x580b, 0x5819, 0x581d, + 0x5872, 0x5821, 0x5862, 0x584b, 0x5870, 0x6bc0, 0x5852, 0x583d, + 0x5879, 0x5885, 0x58b9, 0x589f, 0x58ab, 0x58ba, 0x58de, 0x58bb, + 0x58b8, 0x58ae, 0x58c5, 0x58d3, 0x58d1, 0x58d7, 0x58d9, 0x58d8, + 0x58e5, 0x58dc, 0x58e4, 0x58df, 0x58ef, 0x58fa, 0x58f9, 0x58fb, + 0x58fc, 0x58fd, 0x5902, 0x590a, 0x5910, 0x591b, 0x68a6, 0x5925, + 0x592c, 0x592d, 0x5932, 0x5938, 0x593e, 0x7ad2, 0x5955, 0x5950, + 0x594e, 0x595a, 0x5958, 0x5962, 0x5960, 0x5967, 0x596c, 0x5969, + 0x5978, 0x5981, 0x599d, 0x4f5e, 0x4fab, 0x59a3, 0x59b2, 0x59c6, + 0x59e8, 0x59dc, 0x598d, 0x59d9, 0x59da, 0x5a25, 0x5a1f, 0x5a11, + 0x5a1c, 0x5a09, 0x5a1a, 0x5a40, 0x5a6c, 0x5a49, 0x5a35, 0x5a36, + 0x5a62, 0x5a6a, 0x5a9a, 0x5abc, 0x5abe, 0x5acb, 0x5ac2, 0x5abd, + 0x5ae3, 0x5ad7, 0x5ae6, 0x5ae9, 0x5ad6, 0x5afa, 0x5afb, 0x5b0c, + 0x5b0b, 0x5b16, 0x5b32, 0x5ad0, 0x5b2a, 0x5b36, 0x5b3e, 0x5b43, + 0x5b45, 0x5b40, 0x5b51, 0x5b55, 0x5b5a, 0x5b5b, 0x5b65, 0x5b69, + 0x5b70, 0x5b73, 0x5b75, 0x5b78, 0x6588, 0x5b7a, 0x5b80, 0x5b83, + 0x5ba6, 0x5bb8, 0x5bc3, 0x5bc7, 0x5bc9, 0x5bd4, 0x5bd0, 0x5be4, + 0x5be6, 0x5be2, 0x5bde, 0x5be5, 0x5beb, 0x5bf0, 0x5bf6, 0x5bf3, + 0x5c05, 0x5c07, 0x5c08, 0x5c0d, 0x5c13, 0x5c20, 0x5c22, 0x5c28, + 0x5c38, 0x5c39, 0x5c41, 0x5c46, 0x5c4e, 0x5c53, 0x5c50, 0x5c4f, + 0x5b71, 0x5c6c, 0x5c6e, 0x4e62, 0x5c76, 0x5c79, 0x5c8c, 0x5c91, + 0x5c94, 0x599b, 0x5cab, 0x5cbb, 0x5cb6, 0x5cbc, 0x5cb7, 0x5cc5, + 0x5cbe, 0x5cc7, 0x5cd9, 0x5ce9, 0x5cfd, 0x5cfa, 0x5ced, 0x5d8c, + 0x5cea, 0x5d0b, 0x5d15, 0x5d17, 0x5d5c, 0x5d1f, 0x5d1b, 0x5d11, + 0x5d14, 0x5d22, 0x5d1a, 0x5d19, 0x5d18, 0x5d4c, 0x5d52, 0x5d4e, + 0x5d4b, 0x5d6c, 0x5d73, 0x5d76, 0x5d87, 0x5d84, 0x5d82, 0x5da2, + 0x5d9d, 0x5dac, 0x5dae, 0x5dbd, 0x5d90, 0x5db7, 0x5dbc, 0x5dc9, + 0x5dcd, 0x5dd3, 0x5dd2, 0x5dd6, 0x5ddb, 0x5deb, 0x5df2, 0x5df5, + 0x5e0b, 0x5e1a, 0x5e19, 0x5e11, 0x5e1b, 0x5e36, 0x5e37, 0x5e44, + 0x5e43, 0x5e40, 0x5e4e, 0x5e57, 0x5e54, 0x5e5f, 0x5e62, 0x5e64, + 0x5e47, 0x5e75, 0x5e76, 0x5e7a, 0x9ebc, 0x5e7f, 0x5ea0, 0x5ec1, + 0x5ec2, 0x5ec8, 0x5ed0, 0x5ecf, 0x5ed6, 0x5ee3, 0x5edd, 0x5eda, + 0x5edb, 0x5ee2, 0x5ee1, 0x5ee8, 0x5ee9, 0x5eec, 0x5ef1, 0x5ef3, + 0x5ef0, 0x5ef4, 0x5ef8, 0x5efe, 0x5f03, 0x5f09, 0x5f5d, 0x5f5c, + 0x5f0b, 0x5f11, 0x5f16, 0x5f29, 0x5f2d, 0x5f38, 0x5f41, 0x5f48, + 0x5f4c, 0x5f4e, 0x5f2f, 0x5f51, 0x5f56, 0x5f57, 0x5f59, 0x5f61, + 0x5f6d, 0x5f73, 0x5f77, 0x5f83, 0x5f82, 0x5f7f, 0x5f8a, 0x5f88, + 0x5f91, 0x5f87, 0x5f9e, 0x5f99, 0x5f98, 0x5fa0, 0x5fa8, 0x5fad, + 0x5fbc, 0x5fd6, 0x5ffb, 0x5fe4, 0x5ff8, 0x5ff1, 0x5fdd, 0x60b3, + 0x5fff, 0x6021, 0x6060, 0x6019, 0x6010, 0x6029, 0x600e, 0x6031, + 0x601b, 0x6015, 0x602b, 0x6026, 0x600f, 0x603a, 0x605a, 0x6041, + 0x606a, 0x6077, 0x605f, 0x604a, 0x6046, 0x604d, 0x6063, 0x6043, + 0x6064, 0x6042, 0x606c, 0x606b, 0x6059, 0x6081, 0x608d, 0x60e7, + 0x6083, 0x609a, 0x6084, 0x609b, 0x6096, 0x6097, 0x6092, 0x60a7, + 0x608b, 0x60e1, 0x60b8, 0x60e0, 0x60d3, 0x60b4, 0x5ff0, 0x60bd, + 0x60c6, 0x60b5, 0x60d8, 0x614d, 0x6115, 0x6106, 0x60f6, 0x60f7, + 0x6100, 0x60f4, 0x60fa, 0x6103, 0x6121, 0x60fb, 0x60f1, 0x610d, + 0x610e, 0x6147, 0x613e, 0x6128, 0x6127, 0x614a, 0x613f, 0x613c, + 0x612c, 0x6134, 0x613d, 0x6142, 0x6144, 0x6173, 0x6177, 0x6158, + 0x6159, 0x615a, 0x616b, 0x6174, 0x616f, 0x6165, 0x6171, 0x615f, + 0x615d, 0x6153, 0x6175, 0x6199, 0x6196, 0x6187, 0x61ac, 0x6194, + 0x619a, 0x618a, 0x6191, 0x61ab, 0x61ae, 0x61cc, 0x61ca, 0x61c9, + 0x61f7, 0x61c8, 0x61c3, 0x61c6, 0x61ba, 0x61cb, 0x7f79, 0x61cd, + 0x61e6, 0x61e3, 0x61f6, 0x61fa, 0x61f4, 0x61ff, 0x61fd, 0x61fc, + 0x61fe, 0x6200, 0x6208, 0x6209, 0x620d, 0x620c, 0x6214, 0x621b, + 0x621e, 0x6221, 0x622a, 0x622e, 0x6230, 0x6232, 0x6233, 0x6241, + 0x624e, 0x625e, 0x6263, 0x625b, 0x6260, 0x6268, 0x627c, 0x6282, + 0x6289, 0x627e, 0x6292, 0x6293, 0x6296, 0x62d4, 0x6283, 0x6294, + 0x62d7, 0x62d1, 0x62bb, 0x62cf, 0x62ff, 0x62c6, 0x64d4, 0x62c8, + 0x62dc, 0x62cc, 0x62ca, 0x62c2, 0x62c7, 0x629b, 0x62c9, 0x630c, + 0x62ee, 0x62f1, 0x6327, 0x6302, 0x6308, 0x62ef, 0x62f5, 0x6350, + 0x633e, 0x634d, 0x641c, 0x634f, 0x6396, 0x638e, 0x6380, 0x63ab, + 0x6376, 0x63a3, 0x638f, 0x6389, 0x639f, 0x63b5, 0x636b, 0x6369, + 0x63be, 0x63e9, 0x63c0, 0x63c6, 0x63e3, 0x63c9, 0x63d2, 0x63f6, + 0x63c4, 0x6416, 0x6434, 0x6406, 0x6413, 0x6426, 0x6436, 0x651d, + 0x6417, 0x6428, 0x640f, 0x6467, 0x646f, 0x6476, 0x644e, 0x652a, + 0x6495, 0x6493, 0x64a5, 0x64a9, 0x6488, 0x64bc, 0x64da, 0x64d2, + 0x64c5, 0x64c7, 0x64bb, 0x64d8, 0x64c2, 0x64f1, 0x64e7, 0x8209, + 0x64e0, 0x64e1, 0x62ac, 0x64e3, 0x64ef, 0x652c, 0x64f6, 0x64f4, + 0x64f2, 0x64fa, 0x6500, 0x64fd, 0x6518, 0x651c, 0x6505, 0x6524, + 0x6523, 0x652b, 0x6534, 0x6535, 0x6537, 0x6536, 0x6538, 0x754b, + 0x6548, 0x6556, 0x6555, 0x654d, 0x6558, 0x655e, 0x655d, 0x6572, + 0x6578, 0x6582, 0x6583, 0x8b8a, 0x659b, 0x659f, 0x65ab, 0x65b7, + 0x65c3, 0x65c6, 0x65c1, 0x65c4, 0x65cc, 0x65d2, 0x65db, 0x65d9, + 0x65e0, 0x65e1, 0x65f1, 0x6772, 0x660a, 0x6603, 0x65fb, 0x6773, + 0x6635, 0x6636, 0x6634, 0x661c, 0x664f, 0x6644, 0x6649, 0x6641, + 0x665e, 0x665d, 0x6664, 0x6667, 0x6668, 0x665f, 0x6662, 0x6670, + 0x6683, 0x6688, 0x668e, 0x6689, 0x6684, 0x6698, 0x669d, 0x66c1, + 0x66b9, 0x66c9, 0x66be, 0x66bc, 0x66c4, 0x66b8, 0x66d6, 0x66da, + 0x66e0, 0x663f, 0x66e6, 0x66e9, 0x66f0, 0x66f5, 0x66f7, 0x670f, + 0x6716, 0x671e, 0x6726, 0x6727, 0x9738, 0x672e, 0x673f, 0x6736, + 0x6741, 0x6738, 0x6737, 0x6746, 0x675e, 0x6760, 0x6759, 0x6763, + 0x6764, 0x6789, 0x6770, 0x67a9, 0x677c, 0x676a, 0x678c, 0x678b, + 0x67a6, 0x67a1, 0x6785, 0x67b7, 0x67ef, 0x67b4, 0x67ec, 0x67b3, + 0x67e9, 0x67b8, 0x67e4, 0x67de, 0x67dd, 0x67e2, 0x67ee, 0x67b9, + 0x67ce, 0x67c6, 0x67e7, 0x6a9c, 0x681e, 0x6846, 0x6829, 0x6840, + 0x684d, 0x6832, 0x684e, 0x68b3, 0x682b, 0x6859, 0x6863, 0x6877, + 0x687f, 0x689f, 0x688f, 0x68ad, 0x6894, 0x689d, 0x689b, 0x6883, + 0x6aae, 0x68b9, 0x6874, 0x68b5, 0x68a0, 0x68ba, 0x690f, 0x688d, + 0x687e, 0x6901, 0x68ca, 0x6908, 0x68d8, 0x6922, 0x6926, 0x68e1, + 0x690c, 0x68cd, 0x68d4, 0x68e7, 0x68d5, 0x6936, 0x6912, 0x6904, + 0x68d7, 0x68e3, 0x6925, 0x68f9, 0x68e0, 0x68ef, 0x6928, 0x692a, + 0x691a, 0x6923, 0x6921, 0x68c6, 0x6979, 0x6977, 0x695c, 0x6978, + 0x696b, 0x6954, 0x697e, 0x696e, 0x6939, 0x6974, 0x693d, 0x6959, + 0x6930, 0x6961, 0x695e, 0x695d, 0x6981, 0x696a, 0x69b2, 0x69ae, + 0x69d0, 0x69bf, 0x69c1, 0x69d3, 0x69be, 0x69ce, 0x5be8, 0x69ca, + 0x69dd, 0x69bb, 0x69c3, 0x69a7, 0x6a2e, 0x6991, 0x69a0, 0x699c, + 0x6995, 0x69b4, 0x69de, 0x69e8, 0x6a02, 0x6a1b, 0x69ff, 0x6b0a, + 0x69f9, 0x69f2, 0x69e7, 0x6a05, 0x69b1, 0x6a1e, 0x69ed, 0x6a14, + 0x69eb, 0x6a0a, 0x6a12, 0x6ac1, 0x6a23, 0x6a13, 0x6a44, 0x6a0c, + 0x6a72, 0x6a36, 0x6a78, 0x6a47, 0x6a62, 0x6a59, 0x6a66, 0x6a48, + 0x6a38, 0x6a22, 0x6a90, 0x6a8d, 0x6aa0, 0x6a84, 0x6aa2, 0x6aa3, + 0x6a97, 0x8617, 0x6abb, 0x6ac3, 0x6ac2, 0x6ab8, 0x6ab3, 0x6aac, + 0x6ade, 0x6ad1, 0x6adf, 0x6aaa, 0x6ada, 0x6aea, 0x6afb, 0x6b05, + 0x8616, 0x6afa, 0x6b12, 0x6b16, 0x9b31, 0x6b1f, 0x6b38, 0x6b37, + 0x76dc, 0x6b39, 0x98ee, 0x6b47, 0x6b43, 0x6b49, 0x6b50, 0x6b59, + 0x6b54, 0x6b5b, 0x6b5f, 0x6b61, 0x6b78, 0x6b79, 0x6b7f, 0x6b80, + 0x6b84, 0x6b83, 0x6b8d, 0x6b98, 0x6b95, 0x6b9e, 0x6ba4, 0x6baa, + 0x6bab, 0x6baf, 0x6bb2, 0x6bb1, 0x6bb3, 0x6bb7, 0x6bbc, 0x6bc6, + 0x6bcb, 0x6bd3, 0x6bdf, 0x6bec, 0x6beb, 0x6bf3, 0x6bef, 0x9ebe, + 0x6c08, 0x6c13, 0x6c14, 0x6c1b, 0x6c24, 0x6c23, 0x6c5e, 0x6c55, + 0x6c62, 0x6c6a, 0x6c82, 0x6c8d, 0x6c9a, 0x6c81, 0x6c9b, 0x6c7e, + 0x6c68, 0x6c73, 0x6c92, 0x6c90, 0x6cc4, 0x6cf1, 0x6cd3, 0x6cbd, + 0x6cd7, 0x6cc5, 0x6cdd, 0x6cae, 0x6cb1, 0x6cbe, 0x6cba, 0x6cdb, + 0x6cef, 0x6cd9, 0x6cea, 0x6d1f, 0x884d, 0x6d36, 0x6d2b, 0x6d3d, + 0x6d38, 0x6d19, 0x6d35, 0x6d33, 0x6d12, 0x6d0c, 0x6d63, 0x6d93, + 0x6d64, 0x6d5a, 0x6d79, 0x6d59, 0x6d8e, 0x6d95, 0x6fe4, 0x6d85, + 0x6df9, 0x6e15, 0x6e0a, 0x6db5, 0x6dc7, 0x6de6, 0x6db8, 0x6dc6, + 0x6dec, 0x6dde, 0x6dcc, 0x6de8, 0x6dd2, 0x6dc5, 0x6dfa, 0x6dd9, + 0x6de4, 0x6dd5, 0x6dea, 0x6dee, 0x6e2d, 0x6e6e, 0x6e2e, 0x6e19, + 0x6e72, 0x6e5f, 0x6e3e, 0x6e23, 0x6e6b, 0x6e2b, 0x6e76, 0x6e4d, + 0x6e1f, 0x6e43, 0x6e3a, 0x6e4e, 0x6e24, 0x6eff, 0x6e1d, 0x6e38, + 0x6e82, 0x6eaa, 0x6e98, 0x6ec9, 0x6eb7, 0x6ed3, 0x6ebd, 0x6eaf, + 0x6ec4, 0x6eb2, 0x6ed4, 0x6ed5, 0x6e8f, 0x6ea5, 0x6ec2, 0x6e9f, + 0x6f41, 0x6f11, 0x704c, 0x6eec, 0x6ef8, 0x6efe, 0x6f3f, 0x6ef2, + 0x6f31, 0x6eef, 0x6f32, 0x6ecc, 0x6f3e, 0x6f13, 0x6ef7, 0x6f86, + 0x6f7a, 0x6f78, 0x6f81, 0x6f80, 0x6f6f, 0x6f5b, 0x6ff3, 0x6f6d, + 0x6f82, 0x6f7c, 0x6f58, 0x6f8e, 0x6f91, 0x6fc2, 0x6f66, 0x6fb3, + 0x6fa3, 0x6fa1, 0x6fa4, 0x6fb9, 0x6fc6, 0x6faa, 0x6fdf, 0x6fd5, + 0x6fec, 0x6fd4, 0x6fd8, 0x6ff1, 0x6fee, 0x6fdb, 0x7009, 0x700b, + 0x6ffa, 0x7011, 0x7001, 0x700f, 0x6ffe, 0x701b, 0x701a, 0x6f74, + 0x701d, 0x7018, 0x701f, 0x7030, 0x703e, 0x7032, 0x7051, 0x7063, + 0x7099, 0x7092, 0x70af, 0x70f1, 0x70ac, 0x70b8, 0x70b3, 0x70ae, + 0x70df, 0x70cb, 0x70dd, 0x70d9, 0x7109, 0x70fd, 0x711c, 0x7119, + 0x7165, 0x7155, 0x7188, 0x7166, 0x7162, 0x714c, 0x7156, 0x716c, + 0x718f, 0x71fb, 0x7184, 0x7195, 0x71a8, 0x71ac, 0x71d7, 0x71b9, + 0x71be, 0x71d2, 0x71c9, 0x71d4, 0x71ce, 0x71e0, 0x71ec, 0x71e7, + 0x71f5, 0x71fc, 0x71f9, 0x71ff, 0x720d, 0x7210, 0x721b, 0x7228, + 0x722d, 0x722c, 0x7230, 0x7232, 0x723b, 0x723c, 0x723f, 0x7240, + 0x7246, 0x724b, 0x7258, 0x7274, 0x727e, 0x7282, 0x7281, 0x7287, + 0x7292, 0x7296, 0x72a2, 0x72a7, 0x72b9, 0x72b2, 0x72c3, 0x72c6, + 0x72c4, 0x72ce, 0x72d2, 0x72e2, 0x72e0, 0x72e1, 0x72f9, 0x72f7, + 0x500f, 0x7317, 0x730a, 0x731c, 0x7316, 0x731d, 0x7334, 0x732f, + 0x7329, 0x7325, 0x733e, 0x734e, 0x734f, 0x9ed8, 0x7357, 0x736a, + 0x7368, 0x7370, 0x7378, 0x7375, 0x737b, 0x737a, 0x73c8, 0x73b3, + 0x73ce, 0x73bb, 0x73c0, 0x73e5, 0x73ee, 0x73de, 0x74a2, 0x7405, + 0x746f, 0x7425, 0x73f8, 0x7432, 0x743a, 0x7455, 0x743f, 0x745f, + 0x7459, 0x7441, 0x745c, 0x7469, 0x7470, 0x7463, 0x746a, 0x7476, + 0x747e, 0x748b, 0x749e, 0x74a7, 0x74ca, 0x74cf, 0x74d4, 0x73f1, + 0x74e0, 0x74e3, 0x74e7, 0x74e9, 0x74ee, 0x74f2, 0x74f0, 0x74f1, + 0x74f8, 0x74f7, 0x7504, 0x7503, 0x7505, 0x750c, 0x750e, 0x750d, + 0x7515, 0x7513, 0x751e, 0x7526, 0x752c, 0x753c, 0x7544, 0x754d, + 0x754a, 0x7549, 0x755b, 0x7546, 0x755a, 0x7569, 0x7564, 0x7567, + 0x756b, 0x756d, 0x7578, 0x7576, 0x7586, 0x7587, 0x7574, 0x758a, + 0x7589, 0x7582, 0x7594, 0x759a, 0x759d, 0x75a5, 0x75a3, 0x75c2, + 0x75b3, 0x75c3, 0x75b5, 0x75bd, 0x75b8, 0x75bc, 0x75b1, 0x75cd, + 0x75ca, 0x75d2, 0x75d9, 0x75e3, 0x75de, 0x75fe, 0x75ff, 0x75fc, + 0x7601, 0x75f0, 0x75fa, 0x75f2, 0x75f3, 0x760b, 0x760d, 0x7609, + 0x761f, 0x7627, 0x7620, 0x7621, 0x7622, 0x7624, 0x7634, 0x7630, + 0x763b, 0x7647, 0x7648, 0x7646, 0x765c, 0x7658, 0x7661, 0x7662, + 0x7668, 0x7669, 0x766a, 0x7667, 0x766c, 0x7670, 0x7672, 0x7676, + 0x7678, 0x767c, 0x7680, 0x7683, 0x7688, 0x768b, 0x768e, 0x7696, + 0x7693, 0x7699, 0x769a, 0x76b0, 0x76b4, 0x76b8, 0x76b9, 0x76ba, + 0x76c2, 0x76cd, 0x76d6, 0x76d2, 0x76de, 0x76e1, 0x76e5, 0x76e7, + 0x76ea, 0x862f, 0x76fb, 0x7708, 0x7707, 0x7704, 0x7729, 0x7724, + 0x771e, 0x7725, 0x7726, 0x771b, 0x7737, 0x7738, 0x7747, 0x775a, + 0x7768, 0x776b, 0x775b, 0x7765, 0x777f, 0x777e, 0x7779, 0x778e, + 0x778b, 0x7791, 0x77a0, 0x779e, 0x77b0, 0x77b6, 0x77b9, 0x77bf, + 0x77bc, 0x77bd, 0x77bb, 0x77c7, 0x77cd, 0x77d7, 0x77da, 0x77dc, + 0x77e3, 0x77ee, 0x77fc, 0x780c, 0x7812, 0x7926, 0x7820, 0x792a, + 0x7845, 0x788e, 0x7874, 0x7886, 0x787c, 0x789a, 0x788c, 0x78a3, + 0x78b5, 0x78aa, 0x78af, 0x78d1, 0x78c6, 0x78cb, 0x78d4, 0x78be, + 0x78bc, 0x78c5, 0x78ca, 0x78ec, 0x78e7, 0x78da, 0x78fd, 0x78f4, + 0x7907, 0x7912, 0x7911, 0x7919, 0x792c, 0x792b, 0x7940, 0x7960, + 0x7957, 0x795f, 0x795a, 0x7955, 0x7953, 0x797a, 0x797f, 0x798a, + 0x799d, 0x79a7, 0x9f4b, 0x79aa, 0x79ae, 0x79b3, 0x79b9, 0x79ba, + 0x79c9, 0x79d5, 0x79e7, 0x79ec, 0x79e1, 0x79e3, 0x7a08, 0x7a0d, + 0x7a18, 0x7a19, 0x7a20, 0x7a1f, 0x7980, 0x7a31, 0x7a3b, 0x7a3e, + 0x7a37, 0x7a43, 0x7a57, 0x7a49, 0x7a61, 0x7a62, 0x7a69, 0x9f9d, + 0x7a70, 0x7a79, 0x7a7d, 0x7a88, 0x7a97, 0x7a95, 0x7a98, 0x7a96, + 0x7aa9, 0x7ac8, 0x7ab0, 0x7ab6, 0x7ac5, 0x7ac4, 0x7abf, 0x9083, + 0x7ac7, 0x7aca, 0x7acd, 0x7acf, 0x7ad5, 0x7ad3, 0x7ad9, 0x7ada, + 0x7add, 0x7ae1, 0x7ae2, 0x7ae6, 0x7aed, 0x7af0, 0x7b02, 0x7b0f, + 0x7b0a, 0x7b06, 0x7b33, 0x7b18, 0x7b19, 0x7b1e, 0x7b35, 0x7b28, + 0x7b36, 0x7b50, 0x7b7a, 0x7b04, 0x7b4d, 0x7b0b, 0x7b4c, 0x7b45, + 0x7b75, 0x7b65, 0x7b74, 0x7b67, 0x7b70, 0x7b71, 0x7b6c, 0x7b6e, + 0x7b9d, 0x7b98, 0x7b9f, 0x7b8d, 0x7b9c, 0x7b9a, 0x7b8b, 0x7b92, + 0x7b8f, 0x7b5d, 0x7b99, 0x7bcb, 0x7bc1, 0x7bcc, 0x7bcf, 0x7bb4, + 0x7bc6, 0x7bdd, 0x7be9, 0x7c11, 0x7c14, 0x7be6, 0x7be5, 0x7c60, + 0x7c00, 0x7c07, 0x7c13, 0x7bf3, 0x7bf7, 0x7c17, 0x7c0d, 0x7bf6, + 0x7c23, 0x7c27, 0x7c2a, 0x7c1f, 0x7c37, 0x7c2b, 0x7c3d, 0x7c4c, + 0x7c43, 0x7c54, 0x7c4f, 0x7c40, 0x7c50, 0x7c58, 0x7c5f, 0x7c64, + 0x7c56, 0x7c65, 0x7c6c, 0x7c75, 0x7c83, 0x7c90, 0x7ca4, 0x7cad, + 0x7ca2, 0x7cab, 0x7ca1, 0x7ca8, 0x7cb3, 0x7cb2, 0x7cb1, 0x7cae, + 0x7cb9, 0x7cbd, 0x7cc0, 0x7cc5, 0x7cc2, 0x7cd8, 0x7cd2, 0x7cdc, + 0x7ce2, 0x9b3b, 0x7cef, 0x7cf2, 0x7cf4, 0x7cf6, 0x7cfa, 0x7d06, + 0x7d02, 0x7d1c, 0x7d15, 0x7d0a, 0x7d45, 0x7d4b, 0x7d2e, 0x7d32, + 0x7d3f, 0x7d35, 0x7d46, 0x7d73, 0x7d56, 0x7d4e, 0x7d72, 0x7d68, + 0x7d6e, 0x7d4f, 0x7d63, 0x7d93, 0x7d89, 0x7d5b, 0x7d8f, 0x7d7d, + 0x7d9b, 0x7dba, 0x7dae, 0x7da3, 0x7db5, 0x7dc7, 0x7dbd, 0x7dab, + 0x7e3d, 0x7da2, 0x7daf, 0x7ddc, 0x7db8, 0x7d9f, 0x7db0, 0x7dd8, + 0x7ddd, 0x7de4, 0x7dde, 0x7dfb, 0x7df2, 0x7de1, 0x7e05, 0x7e0a, + 0x7e23, 0x7e21, 0x7e12, 0x7e31, 0x7e1f, 0x7e09, 0x7e0b, 0x7e22, + 0x7e46, 0x7e66, 0x7e3b, 0x7e35, 0x7e39, 0x7e43, 0x7e37, 0x7e32, + 0x7e3a, 0x7e67, 0x7e5d, 0x7e56, 0x7e5e, 0x7e59, 0x7e5a, 0x7e79, + 0x7e6a, 0x7e69, 0x7e7c, 0x7e7b, 0x7e83, 0x7dd5, 0x7e7d, 0x8fae, + 0x7e7f, 0x7e88, 0x7e89, 0x7e8c, 0x7e92, 0x7e90, 0x7e93, 0x7e94, + 0x7e96, 0x7e8e, 0x7e9b, 0x7e9c, 0x7f38, 0x7f3a, 0x7f45, 0x7f4c, + 0x7f4d, 0x7f4e, 0x7f50, 0x7f51, 0x7f55, 0x7f54, 0x7f58, 0x7f5f, + 0x7f60, 0x7f68, 0x7f69, 0x7f67, 0x7f78, 0x7f82, 0x7f86, 0x7f83, + 0x7f88, 0x7f87, 0x7f8c, 0x7f94, 0x7f9e, 0x7f9d, 0x7f9a, 0x7fa3, + 0x7faf, 0x7fb2, 0x7fb9, 0x7fae, 0x7fb6, 0x7fb8, 0x8b71, 0x7fc5, + 0x7fc6, 0x7fca, 0x7fd5, 0x7fd4, 0x7fe1, 0x7fe6, 0x7fe9, 0x7ff3, + 0x7ff9, 0x98dc, 0x8006, 0x8004, 0x800b, 0x8012, 0x8018, 0x8019, + 0x801c, 0x8021, 0x8028, 0x803f, 0x803b, 0x804a, 0x8046, 0x8052, + 0x8058, 0x805a, 0x805f, 0x8062, 0x8068, 0x8073, 0x8072, 0x8070, + 0x8076, 0x8079, 0x807d, 0x807f, 0x8084, 0x8086, 0x8085, 0x809b, + 0x8093, 0x809a, 0x80ad, 0x5190, 0x80ac, 0x80db, 0x80e5, 0x80d9, + 0x80dd, 0x80c4, 0x80da, 0x80d6, 0x8109, 0x80ef, 0x80f1, 0x811b, + 0x8129, 0x8123, 0x812f, 0x814b, 0x968b, 0x8146, 0x813e, 0x8153, + 0x8151, 0x80fc, 0x8171, 0x816e, 0x8165, 0x8166, 0x8174, 0x8183, + 0x8188, 0x818a, 0x8180, 0x8182, 0x81a0, 0x8195, 0x81a4, 0x81a3, + 0x815f, 0x8193, 0x81a9, 0x81b0, 0x81b5, 0x81be, 0x81b8, 0x81bd, + 0x81c0, 0x81c2, 0x81ba, 0x81c9, 0x81cd, 0x81d1, 0x81d9, 0x81d8, + 0x81c8, 0x81da, 0x81df, 0x81e0, 0x81e7, 0x81fa, 0x81fb, 0x81fe, + 0x8201, 0x8202, 0x8205, 0x8207, 0x820a, 0x820d, 0x8210, 0x8216, + 0x8229, 0x822b, 0x8238, 0x8233, 0x8240, 0x8259, 0x8258, 0x825d, + 0x825a, 0x825f, 0x8264, 0x8262, 0x8268, 0x826a, 0x826b, 0x822e, + 0x8271, 0x8277, 0x8278, 0x827e, 0x828d, 0x8292, 0x82ab, 0x829f, + 0x82bb, 0x82ac, 0x82e1, 0x82e3, 0x82df, 0x82d2, 0x82f4, 0x82f3, + 0x82fa, 0x8393, 0x8303, 0x82fb, 0x82f9, 0x82de, 0x8306, 0x82dc, + 0x8309, 0x82d9, 0x8335, 0x8334, 0x8316, 0x8332, 0x8331, 0x8340, + 0x8339, 0x8350, 0x8345, 0x832f, 0x832b, 0x8317, 0x8318, 0x8385, + 0x839a, 0x83aa, 0x839f, 0x83a2, 0x8396, 0x8323, 0x838e, 0x8387, + 0x838a, 0x837c, 0x83b5, 0x8373, 0x8375, 0x83a0, 0x8389, 0x83a8, + 0x83f4, 0x8413, 0x83eb, 0x83ce, 0x83fd, 0x8403, 0x83d8, 0x840b, + 0x83c1, 0x83f7, 0x8407, 0x83e0, 0x83f2, 0x840d, 0x8422, 0x8420, + 0x83bd, 0x8438, 0x8506, 0x83fb, 0x846d, 0x842a, 0x843c, 0x855a, + 0x8484, 0x8477, 0x846b, 0x84ad, 0x846e, 0x8482, 0x8469, 0x8446, + 0x842c, 0x846f, 0x8479, 0x8435, 0x84ca, 0x8462, 0x84b9, 0x84bf, + 0x849f, 0x84d9, 0x84cd, 0x84bb, 0x84da, 0x84d0, 0x84c1, 0x84c6, + 0x84d6, 0x84a1, 0x8521, 0x84ff, 0x84f4, 0x8517, 0x8518, 0x852c, + 0x851f, 0x8515, 0x8514, 0x84fc, 0x8540, 0x8563, 0x8558, 0x8548, + 0x8541, 0x8602, 0x854b, 0x8555, 0x8580, 0x85a4, 0x8588, 0x8591, + 0x858a, 0x85a8, 0x856d, 0x8594, 0x859b, 0x85ea, 0x8587, 0x859c, + 0x8577, 0x857e, 0x8590, 0x85c9, 0x85ba, 0x85cf, 0x85b9, 0x85d0, + 0x85d5, 0x85dd, 0x85e5, 0x85dc, 0x85f9, 0x860a, 0x8613, 0x860b, + 0x85fe, 0x85fa, 0x8606, 0x8622, 0x861a, 0x8630, 0x863f, 0x864d, + 0x4e55, 0x8654, 0x865f, 0x8667, 0x8671, 0x8693, 0x86a3, 0x86a9, + 0x86aa, 0x868b, 0x868c, 0x86b6, 0x86af, 0x86c4, 0x86c6, 0x86b0, + 0x86c9, 0x8823, 0x86ab, 0x86d4, 0x86de, 0x86e9, 0x86ec, 0x86df, + 0x86db, 0x86ef, 0x8712, 0x8706, 0x8708, 0x8700, 0x8703, 0x86fb, + 0x8711, 0x8709, 0x870d, 0x86f9, 0x870a, 0x8734, 0x873f, 0x8737, + 0x873b, 0x8725, 0x8729, 0x871a, 0x8760, 0x875f, 0x8778, 0x874c, + 0x874e, 0x8774, 0x8757, 0x8768, 0x876e, 0x8759, 0x8753, 0x8763, + 0x876a, 0x8805, 0x87a2, 0x879f, 0x8782, 0x87af, 0x87cb, 0x87bd, + 0x87c0, 0x87d0, 0x96d6, 0x87ab, 0x87c4, 0x87b3, 0x87c7, 0x87c6, + 0x87bb, 0x87ef, 0x87f2, 0x87e0, 0x880f, 0x880d, 0x87fe, 0x87f6, + 0x87f7, 0x880e, 0x87d2, 0x8811, 0x8816, 0x8815, 0x8822, 0x8821, + 0x8831, 0x8836, 0x8839, 0x8827, 0x883b, 0x8844, 0x8842, 0x8852, + 0x8859, 0x885e, 0x8862, 0x886b, 0x8881, 0x887e, 0x889e, 0x8875, + 0x887d, 0x88b5, 0x8872, 0x8882, 0x8897, 0x8892, 0x88ae, 0x8899, + 0x88a2, 0x888d, 0x88a4, 0x88b0, 0x88bf, 0x88b1, 0x88c3, 0x88c4, + 0x88d4, 0x88d8, 0x88d9, 0x88dd, 0x88f9, 0x8902, 0x88fc, 0x88f4, + 0x88e8, 0x88f2, 0x8904, 0x890c, 0x890a, 0x8913, 0x8943, 0x891e, + 0x8925, 0x892a, 0x892b, 0x8941, 0x8944, 0x893b, 0x8936, 0x8938, + 0x894c, 0x891d, 0x8960, 0x895e, 0x8966, 0x8964, 0x896d, 0x896a, + 0x896f, 0x8974, 0x8977, 0x897e, 0x8983, 0x8988, 0x898a, 0x8993, + 0x8998, 0x89a1, 0x89a9, 0x89a6, 0x89ac, 0x89af, 0x89b2, 0x89ba, + 0x89bd, 0x89bf, 0x89c0, 0x89da, 0x89dc, 0x89dd, 0x89e7, 0x89f4, + 0x89f8, 0x8a03, 0x8a16, 0x8a10, 0x8a0c, 0x8a1b, 0x8a1d, 0x8a25, + 0x8a36, 0x8a41, 0x8a5b, 0x8a52, 0x8a46, 0x8a48, 0x8a7c, 0x8a6d, + 0x8a6c, 0x8a62, 0x8a85, 0x8a82, 0x8a84, 0x8aa8, 0x8aa1, 0x8a91, + 0x8aa5, 0x8aa6, 0x8a9a, 0x8aa3, 0x8ac4, 0x8acd, 0x8ac2, 0x8ada, + 0x8aeb, 0x8af3, 0x8ae7, 0x8ae4, 0x8af1, 0x8b14, 0x8ae0, 0x8ae2, + 0x8af7, 0x8ade, 0x8adb, 0x8b0c, 0x8b07, 0x8b1a, 0x8ae1, 0x8b16, + 0x8b10, 0x8b17, 0x8b20, 0x8b33, 0x97ab, 0x8b26, 0x8b2b, 0x8b3e, + 0x8b28, 0x8b41, 0x8b4c, 0x8b4f, 0x8b4e, 0x8b49, 0x8b56, 0x8b5b, + 0x8b5a, 0x8b6b, 0x8b5f, 0x8b6c, 0x8b6f, 0x8b74, 0x8b7d, 0x8b80, + 0x8b8c, 0x8b8e, 0x8b92, 0x8b93, 0x8b96, 0x8b99, 0x8b9a, 0x8c3a, + 0x8c41, 0x8c3f, 0x8c48, 0x8c4c, 0x8c4e, 0x8c50, 0x8c55, 0x8c62, + 0x8c6c, 0x8c78, 0x8c7a, 0x8c82, 0x8c89, 0x8c85, 0x8c8a, 0x8c8d, + 0x8c8e, 0x8c94, 0x8c7c, 0x8c98, 0x621d, 0x8cad, 0x8caa, 0x8cbd, + 0x8cb2, 0x8cb3, 0x8cae, 0x8cb6, 0x8cc8, 0x8cc1, 0x8ce4, 0x8ce3, + 0x8cda, 0x8cfd, 0x8cfa, 0x8cfb, 0x8d04, 0x8d05, 0x8d0a, 0x8d07, + 0x8d0f, 0x8d0d, 0x8d10, 0x9f4e, 0x8d13, 0x8ccd, 0x8d14, 0x8d16, + 0x8d67, 0x8d6d, 0x8d71, 0x8d73, 0x8d81, 0x8d99, 0x8dc2, 0x8dbe, + 0x8dba, 0x8dcf, 0x8dda, 0x8dd6, 0x8dcc, 0x8ddb, 0x8dcb, 0x8dea, + 0x8deb, 0x8ddf, 0x8de3, 0x8dfc, 0x8e08, 0x8e09, 0x8dff, 0x8e1d, + 0x8e1e, 0x8e10, 0x8e1f, 0x8e42, 0x8e35, 0x8e30, 0x8e34, 0x8e4a, + 0x8e47, 0x8e49, 0x8e4c, 0x8e50, 0x8e48, 0x8e59, 0x8e64, 0x8e60, + 0x8e2a, 0x8e63, 0x8e55, 0x8e76, 0x8e72, 0x8e7c, 0x8e81, 0x8e87, + 0x8e85, 0x8e84, 0x8e8b, 0x8e8a, 0x8e93, 0x8e91, 0x8e94, 0x8e99, + 0x8eaa, 0x8ea1, 0x8eac, 0x8eb0, 0x8ec6, 0x8eb1, 0x8ebe, 0x8ec5, + 0x8ec8, 0x8ecb, 0x8edb, 0x8ee3, 0x8efc, 0x8efb, 0x8eeb, 0x8efe, + 0x8f0a, 0x8f05, 0x8f15, 0x8f12, 0x8f19, 0x8f13, 0x8f1c, 0x8f1f, + 0x8f1b, 0x8f0c, 0x8f26, 0x8f33, 0x8f3b, 0x8f39, 0x8f45, 0x8f42, + 0x8f3e, 0x8f4c, 0x8f49, 0x8f46, 0x8f4e, 0x8f57, 0x8f5c, 0x8f62, + 0x8f63, 0x8f64, 0x8f9c, 0x8f9f, 0x8fa3, 0x8fad, 0x8faf, 0x8fb7, + 0x8fda, 0x8fe5, 0x8fe2, 0x8fea, 0x8fef, 0x9087, 0x8ff4, 0x9005, + 0x8ff9, 0x8ffa, 0x9011, 0x9015, 0x9021, 0x900d, 0x901e, 0x9016, + 0x900b, 0x9027, 0x9036, 0x9035, 0x9039, 0x8ff8, 0x904f, 0x9050, + 0x9051, 0x9052, 0x900e, 0x9049, 0x903e, 0x9056, 0x9058, 0x905e, + 0x9068, 0x906f, 0x9076, 0x96a8, 0x9072, 0x9082, 0x907d, 0x9081, + 0x9080, 0x908a, 0x9089, 0x908f, 0x90a8, 0x90af, 0x90b1, 0x90b5, + 0x90e2, 0x90e4, 0x6248, 0x90db, 0x9102, 0x9112, 0x9119, 0x9132, + 0x9130, 0x914a, 0x9156, 0x9158, 0x9163, 0x9165, 0x9169, 0x9173, + 0x9172, 0x918b, 0x9189, 0x9182, 0x91a2, 0x91ab, 0x91af, 0x91aa, + 0x91b5, 0x91b4, 0x91ba, 0x91c0, 0x91c1, 0x91c9, 0x91cb, 0x91d0, + 0x91d6, 0x91df, 0x91e1, 0x91db, 0x91fc, 0x91f5, 0x91f6, 0x921e, + 0x91ff, 0x9214, 0x922c, 0x9215, 0x9211, 0x925e, 0x9257, 0x9245, + 0x9249, 0x9264, 0x9248, 0x9295, 0x923f, 0x924b, 0x9250, 0x929c, + 0x9296, 0x9293, 0x929b, 0x925a, 0x92cf, 0x92b9, 0x92b7, 0x92e9, + 0x930f, 0x92fa, 0x9344, 0x932e, 0x9319, 0x9322, 0x931a, 0x9323, + 0x933a, 0x9335, 0x933b, 0x935c, 0x9360, 0x937c, 0x936e, 0x9356, + 0x93b0, 0x93ac, 0x93ad, 0x9394, 0x93b9, 0x93d6, 0x93d7, 0x93e8, + 0x93e5, 0x93d8, 0x93c3, 0x93dd, 0x93d0, 0x93c8, 0x93e4, 0x941a, + 0x9414, 0x9413, 0x9403, 0x9407, 0x9410, 0x9436, 0x942b, 0x9435, + 0x9421, 0x943a, 0x9441, 0x9452, 0x9444, 0x945b, 0x9460, 0x9462, + 0x945e, 0x946a, 0x9229, 0x9470, 0x9475, 0x9477, 0x947d, 0x945a, + 0x947c, 0x947e, 0x9481, 0x947f, 0x9582, 0x9587, 0x958a, 0x9594, + 0x9596, 0x9598, 0x9599, 0x95a0, 0x95a8, 0x95a7, 0x95ad, 0x95bc, + 0x95bb, 0x95b9, 0x95be, 0x95ca, 0x6ff6, 0x95c3, 0x95cd, 0x95cc, + 0x95d5, 0x95d4, 0x95d6, 0x95dc, 0x95e1, 0x95e5, 0x95e2, 0x9621, + 0x9628, 0x962e, 0x962f, 0x9642, 0x964c, 0x964f, 0x964b, 0x9677, + 0x965c, 0x965e, 0x965d, 0x965f, 0x9666, 0x9672, 0x966c, 0x968d, + 0x9698, 0x9695, 0x9697, 0x96aa, 0x96a7, 0x96b1, 0x96b2, 0x96b0, + 0x96b4, 0x96b6, 0x96b8, 0x96b9, 0x96ce, 0x96cb, 0x96c9, 0x96cd, + 0x894d, 0x96dc, 0x970d, 0x96d5, 0x96f9, 0x9704, 0x9706, 0x9708, + 0x9713, 0x970e, 0x9711, 0x970f, 0x9716, 0x9719, 0x9724, 0x972a, + 0x9730, 0x9739, 0x973d, 0x973e, 0x9744, 0x9746, 0x9748, 0x9742, + 0x9749, 0x975c, 0x9760, 0x9764, 0x9766, 0x9768, 0x52d2, 0x976b, + 0x9771, 0x9779, 0x9785, 0x977c, 0x9781, 0x977a, 0x9786, 0x978b, + 0x978f, 0x9790, 0x979c, 0x97a8, 0x97a6, 0x97a3, 0x97b3, 0x97b4, + 0x97c3, 0x97c6, 0x97c8, 0x97cb, 0x97dc, 0x97ed, 0x9f4f, 0x97f2, + 0x7adf, 0x97f6, 0x97f5, 0x980f, 0x980c, 0x9838, 0x9824, 0x9821, + 0x9837, 0x983d, 0x9846, 0x984f, 0x984b, 0x986b, 0x986f, 0x9870, + 0x9871, 0x9874, 0x9873, 0x98aa, 0x98af, 0x98b1, 0x98b6, 0x98c4, + 0x98c3, 0x98c6, 0x98e9, 0x98eb, 0x9903, 0x9909, 0x9912, 0x9914, + 0x9918, 0x9921, 0x991d, 0x991e, 0x9924, 0x9920, 0x992c, 0x992e, + 0x993d, 0x993e, 0x9942, 0x9949, 0x9945, 0x9950, 0x994b, 0x9951, + 0x9952, 0x994c, 0x9955, 0x9997, 0x9998, 0x99a5, 0x99ad, 0x99ae, + 0x99bc, 0x99df, 0x99db, 0x99dd, 0x99d8, 0x99d1, 0x99ed, 0x99ee, + 0x99f1, 0x99f2, 0x99fb, 0x99f8, 0x9a01, 0x9a0f, 0x9a05, 0x99e2, + 0x9a19, 0x9a2b, 0x9a37, 0x9a45, 0x9a42, 0x9a40, 0x9a43, 0x9a3e, + 0x9a55, 0x9a4d, 0x9a5b, 0x9a57, 0x9a5f, 0x9a62, 0x9a65, 0x9a64, + 0x9a69, 0x9a6b, 0x9a6a, 0x9aad, 0x9ab0, 0x9abc, 0x9ac0, 0x9acf, + 0x9ad1, 0x9ad3, 0x9ad4, 0x9ade, 0x9adf, 0x9ae2, 0x9ae3, 0x9ae6, + 0x9aef, 0x9aeb, 0x9aee, 0x9af4, 0x9af1, 0x9af7, 0x9afb, 0x9b06, + 0x9b18, 0x9b1a, 0x9b1f, 0x9b22, 0x9b23, 0x9b25, 0x9b27, 0x9b28, + 0x9b29, 0x9b2a, 0x9b2e, 0x9b2f, 0x9b32, 0x9b44, 0x9b43, 0x9b4f, + 0x9b4d, 0x9b4e, 0x9b51, 0x9b58, 0x9b74, 0x9b93, 0x9b83, 0x9b91, + 0x9b96, 0x9b97, 0x9b9f, 0x9ba0, 0x9ba8, 0x9bb4, 0x9bc0, 0x9bca, + 0x9bb9, 0x9bc6, 0x9bcf, 0x9bd1, 0x9bd2, 0x9be3, 0x9be2, 0x9be4, + 0x9bd4, 0x9be1, 0x9c3a, 0x9bf2, 0x9bf1, 0x9bf0, 0x9c15, 0x9c14, + 0x9c09, 0x9c13, 0x9c0c, 0x9c06, 0x9c08, 0x9c12, 0x9c0a, 0x9c04, + 0x9c2e, 0x9c1b, 0x9c25, 0x9c24, 0x9c21, 0x9c30, 0x9c47, 0x9c32, + 0x9c46, 0x9c3e, 0x9c5a, 0x9c60, 0x9c67, 0x9c76, 0x9c78, 0x9ce7, + 0x9cec, 0x9cf0, 0x9d09, 0x9d08, 0x9ceb, 0x9d03, 0x9d06, 0x9d2a, + 0x9d26, 0x9daf, 0x9d23, 0x9d1f, 0x9d44, 0x9d15, 0x9d12, 0x9d41, + 0x9d3f, 0x9d3e, 0x9d46, 0x9d48, 0x9d5d, 0x9d5e, 0x9d64, 0x9d51, + 0x9d50, 0x9d59, 0x9d72, 0x9d89, 0x9d87, 0x9dab, 0x9d6f, 0x9d7a, + 0x9d9a, 0x9da4, 0x9da9, 0x9db2, 0x9dc4, 0x9dc1, 0x9dbb, 0x9db8, + 0x9dba, 0x9dc6, 0x9dcf, 0x9dc2, 0x9dd9, 0x9dd3, 0x9df8, 0x9de6, + 0x9ded, 0x9def, 0x9dfd, 0x9e1a, 0x9e1b, 0x9e1e, 0x9e75, 0x9e79, + 0x9e7d, 0x9e81, 0x9e88, 0x9e8b, 0x9e8c, 0x9e92, 0x9e95, 0x9e91, + 0x9e9d, 0x9ea5, 0x9ea9, 0x9eb8, 0x9eaa, 0x9ead, 0x9761, 0x9ecc, + 0x9ece, 0x9ecf, 0x9ed0, 0x9ed4, 0x9edc, 0x9ede, 0x9edd, 0x9ee0, + 0x9ee5, 0x9ee8, 0x9eef, 0x9ef4, 0x9ef6, 0x9ef7, 0x9ef9, 0x9efb, + 0x9efc, 0x9efd, 0x9f07, 0x9f08, 0x76b7, 0x9f15, 0x9f21, 0x9f2c, + 0x9f3e, 0x9f4a, 0x9f52, 0x9f54, 0x9f63, 0x9f5f, 0x9f60, 0x9f61, + 0x9f66, 0x9f67, 0x9f6c, 0x9f6a, 0x9f77, 0x9f72, 0x9f76, 0x9f95, + 0x9f9c, 0x9fa0, 0x582f, 0x69c7, 0x9059, 0x7464, 0x51dc, 0x7199, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x9fa5, 0x1c2a, 0xbfffee18, 0x4204f04f, + 0x804ef70, 0x0000, 0x2288, 0x804f240, 0x42130a14, 0x40015360, 0xbfffee38, 0x804bcc9 +}; + +const unichar_t unicode_from_jis212[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x02d8, 0x02c7, 0x00b8, 0x02d9, + 0x02dd, 0x00af, 0x02db, 0x02da, 0x007e, 0x0384, 0x0385, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00a1, + 0x00a6, 0x00bf, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x00ba, 0x00aa, 0x00a9, 0x00ae, 0x2122, 0x00a4, 0x2116, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0386, 0x0388, + 0x0389, 0x038a, 0x03aa, 0x0000, 0x038c, 0x0000, 0x038e, 0x03ab, + 0x0000, 0x038f, 0x0000, 0x0000, 0x0000, 0x0000, 0x03ac, 0x03ad, + 0x03ae, 0x03af, 0x03ca, 0x0390, 0x03cc, 0x03c2, 0x03cd, 0x03cb, + 0x03b0, 0x03ce, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0402, 0x0403, 0x0404, + 0x0405, 0x0406, 0x0407, 0x0408, 0x0409, 0x040a, 0x040b, 0x040c, + 0x040e, 0x040f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0452, 0x0453, 0x0454, + 0x0455, 0x0456, 0x0457, 0x0458, 0x0459, 0x045a, 0x045b, 0x045c, + 0x045e, 0x045f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x00c6, 0x0110, 0x0000, 0x0126, 0x0000, 0x0132, 0x0000, 0x0141, + 0x013f, 0x0000, 0x014a, 0x00d8, 0x0152, 0x0000, 0x0166, 0x00de, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x00e6, 0x0111, 0x00f0, 0x0127, 0x0131, 0x0133, 0x0138, 0x0142, + 0x0140, 0x0149, 0x014b, 0x00f8, 0x0153, 0x00df, 0x0167, 0x00fe, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00c1, 0x00c0, + 0x00c4, 0x00c2, 0x0102, 0x01cd, 0x0100, 0x0104, 0x00c5, 0x00c3, + 0x0106, 0x0108, 0x010c, 0x00c7, 0x010a, 0x010e, 0x00c9, 0x00c8, + 0x00cb, 0x00ca, 0x011a, 0x0116, 0x0112, 0x0118, 0x0000, 0x011c, + 0x011e, 0x0122, 0x0120, 0x0124, 0x00cd, 0x00cc, 0x00cf, 0x00ce, + 0x01cf, 0x0130, 0x012a, 0x012e, 0x0128, 0x0134, 0x0136, 0x0139, + 0x013d, 0x013b, 0x0143, 0x0147, 0x0145, 0x00d1, 0x00d3, 0x00d2, + 0x00d6, 0x00d4, 0x01d1, 0x0150, 0x014c, 0x00d5, 0x0154, 0x0158, + 0x0156, 0x015a, 0x015c, 0x0160, 0x015e, 0x0164, 0x0162, 0x00da, + 0x00d9, 0x00dc, 0x00db, 0x016c, 0x01d3, 0x0170, 0x016a, 0x0172, + 0x016e, 0x0168, 0x01d7, 0x01db, 0x01d9, 0x01d5, 0x0174, 0x00dd, + 0x0178, 0x0176, 0x0179, 0x017d, 0x017b, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x00e1, 0x00e0, 0x00e4, 0x00e2, + 0x0103, 0x01ce, 0x0101, 0x0105, 0x00e5, 0x00e3, 0x0107, 0x0109, + 0x010d, 0x00e7, 0x010b, 0x010f, 0x00e9, 0x00e8, 0x00eb, 0x00ea, + 0x011b, 0x0117, 0x0113, 0x0119, 0x01f5, 0x011d, 0x011f, 0x0000, + 0x0121, 0x0125, 0x00ed, 0x00ec, 0x00ef, 0x00ee, 0x01d0, 0x0000, + 0x012b, 0x012f, 0x0129, 0x0135, 0x0137, 0x013a, 0x013e, 0x013c, + 0x0144, 0x0148, 0x0146, 0x00f1, 0x00f3, 0x00f2, 0x00f6, 0x00f4, + 0x01d2, 0x0151, 0x014d, 0x00f5, 0x0155, 0x0159, 0x0157, 0x015b, + 0x015d, 0x0161, 0x015f, 0x0165, 0x0163, 0x00fa, 0x00f9, 0x00fc, + 0x00fb, 0x016d, 0x01d4, 0x0171, 0x016b, 0x0173, 0x016f, 0x0169, + 0x01d8, 0x01dc, 0x01da, 0x01d6, 0x0175, 0x00fd, 0x00ff, 0x0177, + 0x017a, 0x017e, 0x017c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x4e02, 0x4e04, 0x4e05, 0x4e0c, 0x4e12, 0x4e1f, + 0x4e23, 0x4e24, 0x4e28, 0x4e2b, 0x4e2e, 0x4e2f, 0x4e30, 0x4e35, + 0x4e40, 0x4e41, 0x4e44, 0x4e47, 0x4e51, 0x4e5a, 0x4e5c, 0x4e63, + 0x4e68, 0x4e69, 0x4e74, 0x4e75, 0x4e79, 0x4e7f, 0x4e8d, 0x4e96, + 0x4e97, 0x4e9d, 0x4eaf, 0x4eb9, 0x4ec3, 0x4ed0, 0x4eda, 0x4edb, + 0x4ee0, 0x4ee1, 0x4ee2, 0x4ee8, 0x4eef, 0x4ef1, 0x4ef3, 0x4ef5, + 0x4efd, 0x4efe, 0x4eff, 0x4f00, 0x4f02, 0x4f03, 0x4f08, 0x4f0b, + 0x4f0c, 0x4f12, 0x4f15, 0x4f16, 0x4f17, 0x4f19, 0x4f2e, 0x4f31, + 0x4f60, 0x4f33, 0x4f35, 0x4f37, 0x4f39, 0x4f3b, 0x4f3e, 0x4f40, + 0x4f42, 0x4f48, 0x4f49, 0x4f4b, 0x4f4c, 0x4f52, 0x4f54, 0x4f56, + 0x4f58, 0x4f5f, 0x4f63, 0x4f6a, 0x4f6c, 0x4f6e, 0x4f71, 0x4f77, + 0x4f78, 0x4f79, 0x4f7a, 0x4f7d, 0x4f7e, 0x4f81, 0x4f82, 0x4f84, + 0x4f85, 0x4f89, 0x4f8a, 0x4f8c, 0x4f8e, 0x4f90, 0x4f92, 0x4f93, + 0x4f94, 0x4f97, 0x4f99, 0x4f9a, 0x4f9e, 0x4f9f, 0x4fb2, 0x4fb7, + 0x4fb9, 0x4fbb, 0x4fbc, 0x4fbd, 0x4fbe, 0x4fc0, 0x4fc1, 0x4fc5, + 0x4fc6, 0x4fc8, 0x4fc9, 0x4fcb, 0x4fcc, 0x4fcd, 0x4fcf, 0x4fd2, + 0x4fdc, 0x4fe0, 0x4fe2, 0x4ff0, 0x4ff2, 0x4ffc, 0x4ffd, 0x4fff, + 0x5000, 0x5001, 0x5004, 0x5007, 0x500a, 0x500c, 0x500e, 0x5010, + 0x5013, 0x5017, 0x5018, 0x501b, 0x501c, 0x501d, 0x501e, 0x5022, + 0x5027, 0x502e, 0x5030, 0x5032, 0x5033, 0x5035, 0x5040, 0x5041, + 0x5042, 0x5045, 0x5046, 0x504a, 0x504c, 0x504e, 0x5051, 0x5052, + 0x5053, 0x5057, 0x5059, 0x505f, 0x5060, 0x5062, 0x5063, 0x5066, + 0x5067, 0x506a, 0x506d, 0x5070, 0x5071, 0x503b, 0x5081, 0x5083, + 0x5084, 0x5086, 0x508a, 0x508e, 0x508f, 0x5090, 0x5092, 0x5093, + 0x5094, 0x5096, 0x509b, 0x509c, 0x509e, 0x509f, 0x50a0, 0x50a1, + 0x50a2, 0x50aa, 0x50af, 0x50b0, 0x50b9, 0x50ba, 0x50bd, 0x50c0, + 0x50c3, 0x50c4, 0x50c7, 0x50cc, 0x50ce, 0x50d0, 0x50d3, 0x50d4, + 0x50d8, 0x50dc, 0x50dd, 0x50df, 0x50e2, 0x50e4, 0x50e6, 0x50e8, + 0x50e9, 0x50ef, 0x50f1, 0x50f6, 0x50fa, 0x50fe, 0x5103, 0x5106, + 0x5107, 0x5108, 0x510b, 0x510c, 0x510d, 0x510e, 0x50f2, 0x5110, + 0x5117, 0x5119, 0x511b, 0x511c, 0x511d, 0x511e, 0x5123, 0x5127, + 0x5128, 0x512c, 0x512d, 0x512f, 0x5131, 0x5133, 0x5134, 0x5135, + 0x5138, 0x5139, 0x5142, 0x514a, 0x514f, 0x5153, 0x5155, 0x5157, + 0x5158, 0x515f, 0x5164, 0x5166, 0x517e, 0x5183, 0x5184, 0x518b, + 0x518e, 0x5198, 0x519d, 0x51a1, 0x51a3, 0x51ad, 0x51b8, 0x51ba, + 0x51bc, 0x51be, 0x51bf, 0x51c2, 0x51c8, 0x51cf, 0x51d1, 0x51d2, + 0x51d3, 0x51d5, 0x51d8, 0x51de, 0x51e2, 0x51e5, 0x51ee, 0x51f2, + 0x51f3, 0x51f4, 0x51f7, 0x5201, 0x5202, 0x5205, 0x5212, 0x5213, + 0x5215, 0x5216, 0x5218, 0x5222, 0x5228, 0x5231, 0x5232, 0x5235, + 0x523c, 0x5245, 0x5249, 0x5255, 0x5257, 0x5258, 0x525a, 0x525c, + 0x525f, 0x5260, 0x5261, 0x5266, 0x526e, 0x5277, 0x5278, 0x5279, + 0x5280, 0x5282, 0x5285, 0x528a, 0x528c, 0x5293, 0x5295, 0x5296, + 0x5297, 0x5298, 0x529a, 0x529c, 0x52a4, 0x52a5, 0x52a6, 0x52a7, + 0x52af, 0x52b0, 0x52b6, 0x52b7, 0x52b8, 0x52ba, 0x52bb, 0x52bd, + 0x52c0, 0x52c4, 0x52c6, 0x52c8, 0x52cc, 0x52cf, 0x52d1, 0x52d4, + 0x52d6, 0x52db, 0x52dc, 0x52e1, 0x52e5, 0x52e8, 0x52e9, 0x52ea, + 0x52ec, 0x52f0, 0x52f1, 0x52f4, 0x52f6, 0x52f7, 0x5300, 0x5303, + 0x530a, 0x530b, 0x530c, 0x5311, 0x5313, 0x5318, 0x531b, 0x531c, + 0x531e, 0x531f, 0x5325, 0x5327, 0x5328, 0x5329, 0x532b, 0x532c, + 0x532d, 0x5330, 0x5332, 0x5335, 0x533c, 0x533d, 0x533e, 0x5342, + 0x534c, 0x534b, 0x5359, 0x535b, 0x5361, 0x5363, 0x5365, 0x536c, + 0x536d, 0x5372, 0x5379, 0x537e, 0x5383, 0x5387, 0x5388, 0x538e, + 0x5393, 0x5394, 0x5399, 0x539d, 0x53a1, 0x53a4, 0x53aa, 0x53ab, + 0x53af, 0x53b2, 0x53b4, 0x53b5, 0x53b7, 0x53b8, 0x53ba, 0x53bd, + 0x53c0, 0x53c5, 0x53cf, 0x53d2, 0x53d3, 0x53d5, 0x53da, 0x53dd, + 0x53de, 0x53e0, 0x53e6, 0x53e7, 0x53f5, 0x5402, 0x5413, 0x541a, + 0x5421, 0x5427, 0x5428, 0x542a, 0x542f, 0x5431, 0x5434, 0x5435, + 0x5443, 0x5444, 0x5447, 0x544d, 0x544f, 0x545e, 0x5462, 0x5464, + 0x5466, 0x5467, 0x5469, 0x546b, 0x546d, 0x546e, 0x5474, 0x547f, + 0x5481, 0x5483, 0x5485, 0x5488, 0x5489, 0x548d, 0x5491, 0x5495, + 0x5496, 0x549c, 0x549f, 0x54a1, 0x54a6, 0x54a7, 0x54a9, 0x54aa, + 0x54ad, 0x54ae, 0x54b1, 0x54b7, 0x54b9, 0x54ba, 0x54bb, 0x54bf, + 0x54c6, 0x54ca, 0x54cd, 0x54ce, 0x54e0, 0x54ea, 0x54ec, 0x54ef, + 0x54f6, 0x54fc, 0x54fe, 0x54ff, 0x5500, 0x5501, 0x5505, 0x5508, + 0x5509, 0x550c, 0x550d, 0x550e, 0x5515, 0x552a, 0x552b, 0x5532, + 0x5535, 0x5536, 0x553b, 0x553c, 0x553d, 0x5541, 0x5547, 0x5549, + 0x554a, 0x554d, 0x5550, 0x5551, 0x5558, 0x555a, 0x555b, 0x555e, + 0x5560, 0x5561, 0x5564, 0x5566, 0x557f, 0x5581, 0x5582, 0x5586, + 0x5588, 0x558e, 0x558f, 0x5591, 0x5592, 0x5593, 0x5594, 0x5597, + 0x55a3, 0x55a4, 0x55ad, 0x55b2, 0x55bf, 0x55c1, 0x55c3, 0x55c6, + 0x55c9, 0x55cb, 0x55cc, 0x55ce, 0x55d1, 0x55d2, 0x55d3, 0x55d7, + 0x55d8, 0x55db, 0x55de, 0x55e2, 0x55e9, 0x55f6, 0x55ff, 0x5605, + 0x5608, 0x560a, 0x560d, 0x560e, 0x560f, 0x5610, 0x5611, 0x5612, + 0x5619, 0x562c, 0x5630, 0x5633, 0x5635, 0x5637, 0x5639, 0x563b, + 0x563c, 0x563d, 0x563f, 0x5640, 0x5641, 0x5643, 0x5644, 0x5646, + 0x5649, 0x564b, 0x564d, 0x564f, 0x5654, 0x565e, 0x5660, 0x5661, + 0x5662, 0x5663, 0x5666, 0x5669, 0x566d, 0x566f, 0x5671, 0x5672, + 0x5675, 0x5684, 0x5685, 0x5688, 0x568b, 0x568c, 0x5695, 0x5699, + 0x569a, 0x569d, 0x569e, 0x569f, 0x56a6, 0x56a7, 0x56a8, 0x56a9, + 0x56ab, 0x56ac, 0x56ad, 0x56b1, 0x56b3, 0x56b7, 0x56be, 0x56c5, + 0x56c9, 0x56ca, 0x56cb, 0x56cf, 0x56d0, 0x56cc, 0x56cd, 0x56d9, + 0x56dc, 0x56dd, 0x56df, 0x56e1, 0x56e4, 0x56e5, 0x56e6, 0x56e7, + 0x56e8, 0x56f1, 0x56eb, 0x56ed, 0x56f6, 0x56f7, 0x5701, 0x5702, + 0x5707, 0x570a, 0x570c, 0x5711, 0x5715, 0x571a, 0x571b, 0x571d, + 0x5720, 0x5722, 0x5723, 0x5724, 0x5725, 0x5729, 0x572a, 0x572c, + 0x572e, 0x572f, 0x5733, 0x5734, 0x573d, 0x573e, 0x573f, 0x5745, + 0x5746, 0x574c, 0x574d, 0x5752, 0x5762, 0x5765, 0x5767, 0x5768, + 0x576b, 0x576d, 0x576e, 0x576f, 0x5770, 0x5771, 0x5773, 0x5774, + 0x5775, 0x5777, 0x5779, 0x577a, 0x577b, 0x577c, 0x577e, 0x5781, + 0x5783, 0x578c, 0x5794, 0x5797, 0x5799, 0x579a, 0x579c, 0x579d, + 0x579e, 0x579f, 0x57a1, 0x5795, 0x57a7, 0x57a8, 0x57a9, 0x57ac, + 0x57b8, 0x57bd, 0x57c7, 0x57c8, 0x57cc, 0x57cf, 0x57d5, 0x57dd, + 0x57de, 0x57e4, 0x57e6, 0x57e7, 0x57e9, 0x57ed, 0x57f0, 0x57f5, + 0x57f6, 0x57f8, 0x57fd, 0x57fe, 0x57ff, 0x5803, 0x5804, 0x5808, + 0x5809, 0x57e1, 0x580c, 0x580d, 0x581b, 0x581e, 0x581f, 0x5820, + 0x5826, 0x5827, 0x582d, 0x5832, 0x5839, 0x583f, 0x5849, 0x584c, + 0x584d, 0x584f, 0x5850, 0x5855, 0x585f, 0x5861, 0x5864, 0x5867, + 0x5868, 0x5878, 0x587c, 0x587f, 0x5880, 0x5881, 0x5887, 0x5888, + 0x5889, 0x588a, 0x588c, 0x588d, 0x588f, 0x5890, 0x5894, 0x5896, + 0x589d, 0x58a0, 0x58a1, 0x58a2, 0x58a6, 0x58a9, 0x58b1, 0x58b2, + 0x58c4, 0x58bc, 0x58c2, 0x58c8, 0x58cd, 0x58ce, 0x58d0, 0x58d2, + 0x58d4, 0x58d6, 0x58da, 0x58dd, 0x58e1, 0x58e2, 0x58e9, 0x58f3, + 0x5905, 0x5906, 0x590b, 0x590c, 0x5912, 0x5913, 0x5914, 0x8641, + 0x591d, 0x5921, 0x5923, 0x5924, 0x5928, 0x592f, 0x5930, 0x5933, + 0x5935, 0x5936, 0x593f, 0x5943, 0x5946, 0x5952, 0x5953, 0x5959, + 0x595b, 0x595d, 0x595e, 0x595f, 0x5961, 0x5963, 0x596b, 0x596d, + 0x596f, 0x5972, 0x5975, 0x5976, 0x5979, 0x597b, 0x597c, 0x598b, + 0x598c, 0x598e, 0x5992, 0x5995, 0x5997, 0x599f, 0x59a4, 0x59a7, + 0x59ad, 0x59ae, 0x59af, 0x59b0, 0x59b3, 0x59b7, 0x59ba, 0x59bc, + 0x59c1, 0x59c3, 0x59c4, 0x59c8, 0x59ca, 0x59cd, 0x59d2, 0x59dd, + 0x59de, 0x59df, 0x59e3, 0x59e4, 0x59e7, 0x59ee, 0x59ef, 0x59f1, + 0x59f2, 0x59f4, 0x59f7, 0x5a00, 0x5a04, 0x5a0c, 0x5a0d, 0x5a0e, + 0x5a12, 0x5a13, 0x5a1e, 0x5a23, 0x5a24, 0x5a27, 0x5a28, 0x5a2a, + 0x5a2d, 0x5a30, 0x5a44, 0x5a45, 0x5a47, 0x5a48, 0x5a4c, 0x5a50, + 0x5a55, 0x5a5e, 0x5a63, 0x5a65, 0x5a67, 0x5a6d, 0x5a77, 0x5a7a, + 0x5a7b, 0x5a7e, 0x5a8b, 0x5a90, 0x5a93, 0x5a96, 0x5a99, 0x5a9c, + 0x5a9e, 0x5a9f, 0x5aa0, 0x5aa2, 0x5aa7, 0x5aac, 0x5ab1, 0x5ab2, + 0x5ab3, 0x5ab5, 0x5ab8, 0x5aba, 0x5abb, 0x5abf, 0x5ac4, 0x5ac6, + 0x5ac8, 0x5acf, 0x5ada, 0x5adc, 0x5ae0, 0x5ae5, 0x5aea, 0x5aee, + 0x5af5, 0x5af6, 0x5afd, 0x5b00, 0x5b01, 0x5b08, 0x5b17, 0x5b34, + 0x5b19, 0x5b1b, 0x5b1d, 0x5b21, 0x5b25, 0x5b2d, 0x5b38, 0x5b41, + 0x5b4b, 0x5b4c, 0x5b52, 0x5b56, 0x5b5e, 0x5b68, 0x5b6e, 0x5b6f, + 0x5b7c, 0x5b7d, 0x5b7e, 0x5b7f, 0x5b81, 0x5b84, 0x5b86, 0x5b8a, + 0x5b8e, 0x5b90, 0x5b91, 0x5b93, 0x5b94, 0x5b96, 0x5ba8, 0x5ba9, + 0x5bac, 0x5bad, 0x5baf, 0x5bb1, 0x5bb2, 0x5bb7, 0x5bba, 0x5bbc, + 0x5bc0, 0x5bc1, 0x5bcd, 0x5bcf, 0x5bd6, 0x5bd7, 0x5bd8, 0x5bd9, + 0x5bda, 0x5be0, 0x5bef, 0x5bf1, 0x5bf4, 0x5bfd, 0x5c0c, 0x5c17, + 0x5c1e, 0x5c1f, 0x5c23, 0x5c26, 0x5c29, 0x5c2b, 0x5c2c, 0x5c2e, + 0x5c30, 0x5c32, 0x5c35, 0x5c36, 0x5c59, 0x5c5a, 0x5c5c, 0x5c62, + 0x5c63, 0x5c67, 0x5c68, 0x5c69, 0x5c6d, 0x5c70, 0x5c74, 0x5c75, + 0x5c7a, 0x5c7b, 0x5c7c, 0x5c7d, 0x5c87, 0x5c88, 0x5c8a, 0x5c8f, + 0x5c92, 0x5c9d, 0x5c9f, 0x5ca0, 0x5ca2, 0x5ca3, 0x5ca6, 0x5caa, + 0x5cb2, 0x5cb4, 0x5cb5, 0x5cba, 0x5cc9, 0x5ccb, 0x5cd2, 0x5cdd, + 0x5cd7, 0x5cee, 0x5cf1, 0x5cf2, 0x5cf4, 0x5d01, 0x5d06, 0x5d0d, + 0x5d12, 0x5d2b, 0x5d23, 0x5d24, 0x5d26, 0x5d27, 0x5d31, 0x5d34, + 0x5d39, 0x5d3d, 0x5d3f, 0x5d42, 0x5d43, 0x5d46, 0x5d48, 0x5d55, + 0x5d51, 0x5d59, 0x5d4a, 0x5d5f, 0x5d60, 0x5d61, 0x5d62, 0x5d64, + 0x5d6a, 0x5d6d, 0x5d70, 0x5d79, 0x5d7a, 0x5d7e, 0x5d7f, 0x5d81, + 0x5d83, 0x5d88, 0x5d8a, 0x5d92, 0x5d93, 0x5d94, 0x5d95, 0x5d99, + 0x5d9b, 0x5d9f, 0x5da0, 0x5da7, 0x5dab, 0x5db0, 0x5db4, 0x5db8, + 0x5db9, 0x5dc3, 0x5dc7, 0x5dcb, 0x5dd0, 0x5dce, 0x5dd8, 0x5dd9, + 0x5de0, 0x5de4, 0x5de9, 0x5df8, 0x5df9, 0x5e00, 0x5e07, 0x5e0d, + 0x5e12, 0x5e14, 0x5e15, 0x5e18, 0x5e1f, 0x5e20, 0x5e2e, 0x5e28, + 0x5e32, 0x5e35, 0x5e3e, 0x5e4b, 0x5e50, 0x5e49, 0x5e51, 0x5e56, + 0x5e58, 0x5e5b, 0x5e5c, 0x5e5e, 0x5e68, 0x5e6a, 0x5e6b, 0x5e6c, + 0x5e6d, 0x5e6e, 0x5e70, 0x5e80, 0x5e8b, 0x5e8e, 0x5ea2, 0x5ea4, + 0x5ea5, 0x5ea8, 0x5eaa, 0x5eac, 0x5eb1, 0x5eb3, 0x5ebd, 0x5ebe, + 0x5ebf, 0x5ec6, 0x5ecc, 0x5ecb, 0x5ece, 0x5ed1, 0x5ed2, 0x5ed4, + 0x5ed5, 0x5edc, 0x5ede, 0x5ee5, 0x5eeb, 0x5f02, 0x5f06, 0x5f07, + 0x5f08, 0x5f0e, 0x5f19, 0x5f1c, 0x5f1d, 0x5f21, 0x5f22, 0x5f23, + 0x5f24, 0x5f28, 0x5f2b, 0x5f2c, 0x5f2e, 0x5f30, 0x5f34, 0x5f36, + 0x5f3b, 0x5f3d, 0x5f3f, 0x5f40, 0x5f44, 0x5f45, 0x5f47, 0x5f4d, + 0x5f50, 0x5f54, 0x5f58, 0x5f5b, 0x5f60, 0x5f63, 0x5f64, 0x5f67, + 0x5f6f, 0x5f72, 0x5f74, 0x5f75, 0x5f78, 0x5f7a, 0x5f7d, 0x5f7e, + 0x5f89, 0x5f8d, 0x5f8f, 0x5f96, 0x5f9c, 0x5f9d, 0x5fa2, 0x5fa7, + 0x5fab, 0x5fa4, 0x5fac, 0x5faf, 0x5fb0, 0x5fb1, 0x5fb8, 0x5fc4, + 0x5fc7, 0x5fc8, 0x5fc9, 0x5fcb, 0x5fd0, 0x5fd1, 0x5fd2, 0x5fd3, + 0x5fd4, 0x5fde, 0x5fe1, 0x5fe2, 0x5fe8, 0x5fe9, 0x5fea, 0x5fec, + 0x5fed, 0x5fee, 0x5fef, 0x5ff2, 0x5ff3, 0x5ff6, 0x5ffa, 0x5ffc, + 0x6007, 0x600a, 0x600d, 0x6013, 0x6014, 0x6017, 0x6018, 0x601a, + 0x601f, 0x6024, 0x602d, 0x6033, 0x6035, 0x6040, 0x6047, 0x6048, + 0x6049, 0x604c, 0x6051, 0x6054, 0x6056, 0x6057, 0x605d, 0x6061, + 0x6067, 0x6071, 0x607e, 0x607f, 0x6082, 0x6086, 0x6088, 0x608a, + 0x608e, 0x6091, 0x6093, 0x6095, 0x6098, 0x609d, 0x609e, 0x60a2, + 0x60a4, 0x60a5, 0x60a8, 0x60b0, 0x60b1, 0x60b7, 0x60bb, 0x60be, + 0x60c2, 0x60c4, 0x60c8, 0x60c9, 0x60ca, 0x60cb, 0x60ce, 0x60cf, + 0x60d4, 0x60d5, 0x60d9, 0x60db, 0x60dd, 0x60de, 0x60e2, 0x60e5, + 0x60f2, 0x60f5, 0x60f8, 0x60fc, 0x60fd, 0x6102, 0x6107, 0x610a, + 0x610c, 0x6110, 0x6111, 0x6112, 0x6113, 0x6114, 0x6116, 0x6117, + 0x6119, 0x611c, 0x611e, 0x6122, 0x612a, 0x612b, 0x6130, 0x6131, + 0x6135, 0x6136, 0x6137, 0x6139, 0x6141, 0x6145, 0x6146, 0x6149, + 0x615e, 0x6160, 0x616c, 0x6172, 0x6178, 0x617b, 0x617c, 0x617f, + 0x6180, 0x6181, 0x6183, 0x6184, 0x618b, 0x618d, 0x6192, 0x6193, + 0x6197, 0x6198, 0x619c, 0x619d, 0x619f, 0x61a0, 0x61a5, 0x61a8, + 0x61aa, 0x61ad, 0x61b8, 0x61b9, 0x61bc, 0x61c0, 0x61c1, 0x61c2, + 0x61ce, 0x61cf, 0x61d5, 0x61dc, 0x61dd, 0x61de, 0x61df, 0x61e1, + 0x61e2, 0x61e7, 0x61e9, 0x61e5, 0x61ec, 0x61ed, 0x61ef, 0x6201, + 0x6203, 0x6204, 0x6207, 0x6213, 0x6215, 0x621c, 0x6220, 0x6222, + 0x6223, 0x6227, 0x6229, 0x622b, 0x6239, 0x623d, 0x6242, 0x6243, + 0x6244, 0x6246, 0x624c, 0x6250, 0x6251, 0x6252, 0x6254, 0x6256, + 0x625a, 0x625c, 0x6264, 0x626d, 0x626f, 0x6273, 0x627a, 0x627d, + 0x628d, 0x628e, 0x628f, 0x6290, 0x62a6, 0x62a8, 0x62b3, 0x62b6, + 0x62b7, 0x62ba, 0x62be, 0x62bf, 0x62c4, 0x62ce, 0x62d5, 0x62d6, + 0x62da, 0x62ea, 0x62f2, 0x62f4, 0x62fc, 0x62fd, 0x6303, 0x6304, + 0x630a, 0x630b, 0x630d, 0x6310, 0x6313, 0x6316, 0x6318, 0x6329, + 0x632a, 0x632d, 0x6335, 0x6336, 0x6339, 0x633c, 0x6341, 0x6342, + 0x6343, 0x6344, 0x6346, 0x634a, 0x634b, 0x634e, 0x6352, 0x6353, + 0x6354, 0x6358, 0x635b, 0x6365, 0x6366, 0x636c, 0x636d, 0x6371, + 0x6374, 0x6375, 0x6378, 0x637c, 0x637d, 0x637f, 0x6382, 0x6384, + 0x6387, 0x638a, 0x6390, 0x6394, 0x6395, 0x6399, 0x639a, 0x639e, + 0x63a4, 0x63a6, 0x63ad, 0x63ae, 0x63af, 0x63bd, 0x63c1, 0x63c5, + 0x63c8, 0x63ce, 0x63d1, 0x63d3, 0x63d4, 0x63d5, 0x63dc, 0x63e0, + 0x63e5, 0x63ea, 0x63ec, 0x63f2, 0x63f3, 0x63f5, 0x63f8, 0x63f9, + 0x6409, 0x640a, 0x6410, 0x6412, 0x6414, 0x6418, 0x641e, 0x6420, + 0x6422, 0x6424, 0x6425, 0x6429, 0x642a, 0x642f, 0x6430, 0x6435, + 0x643d, 0x643f, 0x644b, 0x644f, 0x6451, 0x6452, 0x6453, 0x6454, + 0x645a, 0x645b, 0x645c, 0x645d, 0x645f, 0x6460, 0x6461, 0x6463, + 0x646d, 0x6473, 0x6474, 0x647b, 0x647d, 0x6485, 0x6487, 0x648f, + 0x6490, 0x6491, 0x6498, 0x6499, 0x649b, 0x649d, 0x649f, 0x64a1, + 0x64a3, 0x64a6, 0x64a8, 0x64ac, 0x64b3, 0x64bd, 0x64be, 0x64bf, + 0x64c4, 0x64c9, 0x64ca, 0x64cb, 0x64cc, 0x64ce, 0x64d0, 0x64d1, + 0x64d5, 0x64d7, 0x64e4, 0x64e5, 0x64e9, 0x64ea, 0x64ed, 0x64f0, + 0x64f5, 0x64f7, 0x64fb, 0x64ff, 0x6501, 0x6504, 0x6508, 0x6509, + 0x650a, 0x650f, 0x6513, 0x6514, 0x6516, 0x6519, 0x651b, 0x651e, + 0x651f, 0x6522, 0x6526, 0x6529, 0x652e, 0x6531, 0x653a, 0x653c, + 0x653d, 0x6543, 0x6547, 0x6549, 0x6550, 0x6552, 0x6554, 0x655f, + 0x6560, 0x6567, 0x656b, 0x657a, 0x657d, 0x6581, 0x6585, 0x658a, + 0x6592, 0x6595, 0x6598, 0x659d, 0x65a0, 0x65a3, 0x65a6, 0x65ae, + 0x65b2, 0x65b3, 0x65b4, 0x65bf, 0x65c2, 0x65c8, 0x65c9, 0x65ce, + 0x65d0, 0x65d4, 0x65d6, 0x65d8, 0x65df, 0x65f0, 0x65f2, 0x65f4, + 0x65f5, 0x65f9, 0x65fe, 0x65ff, 0x6600, 0x6604, 0x6608, 0x6609, + 0x660d, 0x6611, 0x6612, 0x6615, 0x6616, 0x661d, 0x661e, 0x6621, + 0x6622, 0x6623, 0x6624, 0x6626, 0x6629, 0x662a, 0x662b, 0x662c, + 0x662e, 0x6630, 0x6631, 0x6633, 0x6639, 0x6637, 0x6640, 0x6645, + 0x6646, 0x664a, 0x664c, 0x6651, 0x664e, 0x6657, 0x6658, 0x6659, + 0x665b, 0x665c, 0x6660, 0x6661, 0x66fb, 0x666a, 0x666b, 0x666c, + 0x667e, 0x6673, 0x6675, 0x667f, 0x6677, 0x6678, 0x6679, 0x667b, + 0x6680, 0x667c, 0x668b, 0x668c, 0x668d, 0x6690, 0x6692, 0x6699, + 0x669a, 0x669b, 0x669c, 0x669f, 0x66a0, 0x66a4, 0x66ad, 0x66b1, + 0x66b2, 0x66b5, 0x66bb, 0x66bf, 0x66c0, 0x66c2, 0x66c3, 0x66c8, + 0x66cc, 0x66ce, 0x66cf, 0x66d4, 0x66db, 0x66df, 0x66e8, 0x66eb, + 0x66ec, 0x66ee, 0x66fa, 0x6705, 0x6707, 0x670e, 0x6713, 0x6719, + 0x671c, 0x6720, 0x6722, 0x6733, 0x673e, 0x6745, 0x6747, 0x6748, + 0x674c, 0x6754, 0x6755, 0x675d, 0x6766, 0x676c, 0x676e, 0x6774, + 0x6776, 0x677b, 0x6781, 0x6784, 0x678e, 0x678f, 0x6791, 0x6793, + 0x6796, 0x6798, 0x6799, 0x679b, 0x67b0, 0x67b1, 0x67b2, 0x67b5, + 0x67bb, 0x67bc, 0x67bd, 0x67f9, 0x67c0, 0x67c2, 0x67c3, 0x67c5, + 0x67c8, 0x67c9, 0x67d2, 0x67d7, 0x67d9, 0x67dc, 0x67e1, 0x67e6, + 0x67f0, 0x67f2, 0x67f6, 0x67f7, 0x6852, 0x6814, 0x6819, 0x681d, + 0x681f, 0x6828, 0x6827, 0x682c, 0x682d, 0x682f, 0x6830, 0x6831, + 0x6833, 0x683b, 0x683f, 0x6844, 0x6845, 0x684a, 0x684c, 0x6855, + 0x6857, 0x6858, 0x685b, 0x686b, 0x686e, 0x686f, 0x6870, 0x6871, + 0x6872, 0x6875, 0x6879, 0x687a, 0x687b, 0x687c, 0x6882, 0x6884, + 0x6886, 0x6888, 0x6896, 0x6898, 0x689a, 0x689c, 0x68a1, 0x68a3, + 0x68a5, 0x68a9, 0x68aa, 0x68ae, 0x68b2, 0x68bb, 0x68c5, 0x68c8, + 0x68cc, 0x68cf, 0x68d0, 0x68d1, 0x68d3, 0x68d6, 0x68d9, 0x68dc, + 0x68dd, 0x68e5, 0x68e8, 0x68ea, 0x68eb, 0x68ec, 0x68ed, 0x68f0, + 0x68f1, 0x68f5, 0x68f6, 0x68fb, 0x68fc, 0x68fd, 0x6906, 0x6909, + 0x690a, 0x6910, 0x6911, 0x6913, 0x6916, 0x6917, 0x6931, 0x6933, + 0x6935, 0x6938, 0x693b, 0x6942, 0x6945, 0x6949, 0x694e, 0x6957, + 0x695b, 0x6963, 0x6964, 0x6965, 0x6966, 0x6968, 0x6969, 0x696c, + 0x6970, 0x6971, 0x6972, 0x697a, 0x697b, 0x697f, 0x6980, 0x698d, + 0x6992, 0x6996, 0x6998, 0x69a1, 0x69a5, 0x69a6, 0x69a8, 0x69ab, + 0x69ad, 0x69af, 0x69b7, 0x69b8, 0x69ba, 0x69bc, 0x69c5, 0x69c8, + 0x69d1, 0x69d6, 0x69d7, 0x69e2, 0x69e5, 0x69ee, 0x69ef, 0x69f1, + 0x69f3, 0x69f5, 0x69fe, 0x6a00, 0x6a01, 0x6a03, 0x6a0f, 0x6a11, + 0x6a15, 0x6a1a, 0x6a1d, 0x6a20, 0x6a24, 0x6a28, 0x6a30, 0x6a32, + 0x6a34, 0x6a37, 0x6a3b, 0x6a3e, 0x6a3f, 0x6a45, 0x6a46, 0x6a49, + 0x6a4a, 0x6a4e, 0x6a50, 0x6a51, 0x6a52, 0x6a55, 0x6a56, 0x6a5b, + 0x6a64, 0x6a67, 0x6a6a, 0x6a71, 0x6a73, 0x6a7e, 0x6a81, 0x6a83, + 0x6a86, 0x6a87, 0x6a89, 0x6a8b, 0x6a91, 0x6a9b, 0x6a9d, 0x6a9e, + 0x6a9f, 0x6aa5, 0x6aab, 0x6aaf, 0x6ab0, 0x6ab1, 0x6ab4, 0x6abd, + 0x6abe, 0x6abf, 0x6ac6, 0x6ac9, 0x6ac8, 0x6acc, 0x6ad0, 0x6ad4, + 0x6ad5, 0x6ad6, 0x6adc, 0x6add, 0x6ae4, 0x6ae7, 0x6aec, 0x6af0, + 0x6af1, 0x6af2, 0x6afc, 0x6afd, 0x6b02, 0x6b03, 0x6b06, 0x6b07, + 0x6b09, 0x6b0f, 0x6b10, 0x6b11, 0x6b17, 0x6b1b, 0x6b1e, 0x6b24, + 0x6b28, 0x6b2b, 0x6b2c, 0x6b2f, 0x6b35, 0x6b36, 0x6b3b, 0x6b3f, + 0x6b46, 0x6b4a, 0x6b4d, 0x6b52, 0x6b56, 0x6b58, 0x6b5d, 0x6b60, + 0x6b67, 0x6b6b, 0x6b6e, 0x6b70, 0x6b75, 0x6b7d, 0x6b7e, 0x6b82, + 0x6b85, 0x6b97, 0x6b9b, 0x6b9f, 0x6ba0, 0x6ba2, 0x6ba3, 0x6ba8, + 0x6ba9, 0x6bac, 0x6bad, 0x6bae, 0x6bb0, 0x6bb8, 0x6bb9, 0x6bbd, + 0x6bbe, 0x6bc3, 0x6bc4, 0x6bc9, 0x6bcc, 0x6bd6, 0x6bda, 0x6be1, + 0x6be3, 0x6be6, 0x6be7, 0x6bee, 0x6bf1, 0x6bf7, 0x6bf9, 0x6bff, + 0x6c02, 0x6c04, 0x6c05, 0x6c09, 0x6c0d, 0x6c0e, 0x6c10, 0x6c12, + 0x6c19, 0x6c1f, 0x6c26, 0x6c27, 0x6c28, 0x6c2c, 0x6c2e, 0x6c33, + 0x6c35, 0x6c36, 0x6c3a, 0x6c3b, 0x6c3f, 0x6c4a, 0x6c4b, 0x6c4d, + 0x6c4f, 0x6c52, 0x6c54, 0x6c59, 0x6c5b, 0x6c5c, 0x6c6b, 0x6c6d, + 0x6c6f, 0x6c74, 0x6c76, 0x6c78, 0x6c79, 0x6c7b, 0x6c85, 0x6c86, + 0x6c87, 0x6c89, 0x6c94, 0x6c95, 0x6c97, 0x6c98, 0x6c9c, 0x6c9f, + 0x6cb0, 0x6cb2, 0x6cb4, 0x6cc2, 0x6cc6, 0x6ccd, 0x6ccf, 0x6cd0, + 0x6cd1, 0x6cd2, 0x6cd4, 0x6cd6, 0x6cda, 0x6cdc, 0x6ce0, 0x6ce7, + 0x6ce9, 0x6ceb, 0x6cec, 0x6cee, 0x6cf2, 0x6cf4, 0x6d04, 0x6d07, + 0x6d0a, 0x6d0e, 0x6d0f, 0x6d11, 0x6d13, 0x6d1a, 0x6d26, 0x6d27, + 0x6d28, 0x6c67, 0x6d2e, 0x6d2f, 0x6d31, 0x6d39, 0x6d3c, 0x6d3f, + 0x6d57, 0x6d5e, 0x6d5f, 0x6d61, 0x6d65, 0x6d67, 0x6d6f, 0x6d70, + 0x6d7c, 0x6d82, 0x6d87, 0x6d91, 0x6d92, 0x6d94, 0x6d96, 0x6d97, + 0x6d98, 0x6daa, 0x6dac, 0x6db4, 0x6db7, 0x6db9, 0x6dbd, 0x6dbf, + 0x6dc4, 0x6dc8, 0x6dca, 0x6dce, 0x6dcf, 0x6dd6, 0x6ddb, 0x6ddd, + 0x6ddf, 0x6de0, 0x6de2, 0x6de5, 0x6de9, 0x6def, 0x6df0, 0x6df4, + 0x6df6, 0x6dfc, 0x6e00, 0x6e04, 0x6e1e, 0x6e22, 0x6e27, 0x6e32, + 0x6e36, 0x6e39, 0x6e3b, 0x6e3c, 0x6e44, 0x6e45, 0x6e48, 0x6e49, + 0x6e4b, 0x6e4f, 0x6e51, 0x6e52, 0x6e53, 0x6e54, 0x6e57, 0x6e5c, + 0x6e5d, 0x6e5e, 0x6e62, 0x6e63, 0x6e68, 0x6e73, 0x6e7b, 0x6e7d, + 0x6e8d, 0x6e93, 0x6e99, 0x6ea0, 0x6ea7, 0x6ead, 0x6eae, 0x6eb1, + 0x6eb3, 0x6ebb, 0x6ebf, 0x6ec0, 0x6ec1, 0x6ec3, 0x6ec7, 0x6ec8, + 0x6eca, 0x6ecd, 0x6ece, 0x6ecf, 0x6eeb, 0x6eed, 0x6eee, 0x6ef9, + 0x6efb, 0x6efd, 0x6f04, 0x6f08, 0x6f0a, 0x6f0c, 0x6f0d, 0x6f16, + 0x6f18, 0x6f1a, 0x6f1b, 0x6f26, 0x6f29, 0x6f2a, 0x6f2f, 0x6f30, + 0x6f33, 0x6f36, 0x6f3b, 0x6f3c, 0x6f2d, 0x6f4f, 0x6f51, 0x6f52, + 0x6f53, 0x6f57, 0x6f59, 0x6f5a, 0x6f5d, 0x6f5e, 0x6f61, 0x6f62, + 0x6f68, 0x6f6c, 0x6f7d, 0x6f7e, 0x6f83, 0x6f87, 0x6f88, 0x6f8b, + 0x6f8c, 0x6f8d, 0x6f90, 0x6f92, 0x6f93, 0x6f94, 0x6f96, 0x6f9a, + 0x6f9f, 0x6fa0, 0x6fa5, 0x6fa6, 0x6fa7, 0x6fa8, 0x6fae, 0x6faf, + 0x6fb0, 0x6fb5, 0x6fb6, 0x6fbc, 0x6fc5, 0x6fc7, 0x6fc8, 0x6fca, + 0x6fda, 0x6fde, 0x6fe8, 0x6fe9, 0x6ff0, 0x6ff5, 0x6ff9, 0x6ffc, + 0x6ffd, 0x7000, 0x7005, 0x7006, 0x7007, 0x700d, 0x7017, 0x7020, + 0x7023, 0x702f, 0x7034, 0x7037, 0x7039, 0x703c, 0x7043, 0x7044, + 0x7048, 0x7049, 0x704a, 0x704b, 0x7054, 0x7055, 0x705d, 0x705e, + 0x704e, 0x7064, 0x7065, 0x706c, 0x706e, 0x7075, 0x7076, 0x707e, + 0x7081, 0x7085, 0x7086, 0x7094, 0x7095, 0x7096, 0x7097, 0x7098, + 0x709b, 0x70a4, 0x70ab, 0x70b0, 0x70b1, 0x70b4, 0x70b7, 0x70ca, + 0x70d1, 0x70d3, 0x70d4, 0x70d5, 0x70d6, 0x70d8, 0x70dc, 0x70e4, + 0x70fa, 0x7103, 0x7104, 0x7105, 0x7106, 0x7107, 0x710b, 0x710c, + 0x710f, 0x711e, 0x7120, 0x712b, 0x712d, 0x712f, 0x7130, 0x7131, + 0x7138, 0x7141, 0x7145, 0x7146, 0x7147, 0x714a, 0x714b, 0x7150, + 0x7152, 0x7157, 0x715a, 0x715c, 0x715e, 0x7160, 0x7168, 0x7179, + 0x7180, 0x7185, 0x7187, 0x718c, 0x7192, 0x719a, 0x719b, 0x71a0, + 0x71a2, 0x71af, 0x71b0, 0x71b2, 0x71b3, 0x71ba, 0x71bf, 0x71c0, + 0x71c1, 0x71c4, 0x71cb, 0x71cc, 0x71d3, 0x71d6, 0x71d9, 0x71da, + 0x71dc, 0x71f8, 0x71fe, 0x7200, 0x7207, 0x7208, 0x7209, 0x7213, + 0x7217, 0x721a, 0x721d, 0x721f, 0x7224, 0x722b, 0x722f, 0x7234, + 0x7238, 0x7239, 0x7241, 0x7242, 0x7243, 0x7245, 0x724e, 0x724f, + 0x7250, 0x7253, 0x7255, 0x7256, 0x725a, 0x725c, 0x725e, 0x7260, + 0x7263, 0x7268, 0x726b, 0x726e, 0x726f, 0x7271, 0x7277, 0x7278, + 0x727b, 0x727c, 0x727f, 0x7284, 0x7289, 0x728d, 0x728e, 0x7293, + 0x729b, 0x72a8, 0x72ad, 0x72ae, 0x72b1, 0x72b4, 0x72be, 0x72c1, + 0x72c7, 0x72c9, 0x72cc, 0x72d5, 0x72d6, 0x72d8, 0x72df, 0x72e5, + 0x72f3, 0x72f4, 0x72fa, 0x72fb, 0x72fe, 0x7302, 0x7304, 0x7305, + 0x7307, 0x730b, 0x730d, 0x7312, 0x7313, 0x7318, 0x7319, 0x731e, + 0x7322, 0x7324, 0x7327, 0x7328, 0x732c, 0x7331, 0x7332, 0x7335, + 0x733a, 0x733b, 0x733d, 0x7343, 0x734d, 0x7350, 0x7352, 0x7356, + 0x7358, 0x735d, 0x735e, 0x735f, 0x7360, 0x7366, 0x7367, 0x7369, + 0x736b, 0x736c, 0x736e, 0x736f, 0x7371, 0x7377, 0x7379, 0x737c, + 0x7380, 0x7381, 0x7383, 0x7385, 0x7386, 0x738e, 0x7390, 0x7393, + 0x7395, 0x7397, 0x7398, 0x739c, 0x739e, 0x739f, 0x73a0, 0x73a2, + 0x73a5, 0x73a6, 0x73aa, 0x73ab, 0x73ad, 0x73b5, 0x73b7, 0x73b9, + 0x73bc, 0x73bd, 0x73bf, 0x73c5, 0x73c6, 0x73c9, 0x73cb, 0x73cc, + 0x73cf, 0x73d2, 0x73d3, 0x73d6, 0x73d9, 0x73dd, 0x73e1, 0x73e3, + 0x73e6, 0x73e7, 0x73e9, 0x73f4, 0x73f5, 0x73f7, 0x73f9, 0x73fa, + 0x73fb, 0x73fd, 0x73ff, 0x7400, 0x7401, 0x7404, 0x7407, 0x740a, + 0x7411, 0x741a, 0x741b, 0x7424, 0x7426, 0x7428, 0x7429, 0x742a, + 0x742b, 0x742c, 0x742d, 0x742e, 0x742f, 0x7430, 0x7431, 0x7439, + 0x7440, 0x7443, 0x7444, 0x7446, 0x7447, 0x744b, 0x744d, 0x7451, + 0x7452, 0x7457, 0x745d, 0x7462, 0x7466, 0x7467, 0x7468, 0x746b, + 0x746d, 0x746e, 0x7471, 0x7472, 0x7480, 0x7481, 0x7485, 0x7486, + 0x7487, 0x7489, 0x748f, 0x7490, 0x7491, 0x7492, 0x7498, 0x7499, + 0x749a, 0x749c, 0x749f, 0x74a0, 0x74a1, 0x74a3, 0x74a6, 0x74a8, + 0x74a9, 0x74aa, 0x74ab, 0x74ae, 0x74af, 0x74b1, 0x74b2, 0x74b5, + 0x74b9, 0x74bb, 0x74bf, 0x74c8, 0x74c9, 0x74cc, 0x74d0, 0x74d3, + 0x74d8, 0x74da, 0x74db, 0x74de, 0x74df, 0x74e4, 0x74e8, 0x74ea, + 0x74eb, 0x74ef, 0x74f4, 0x74fa, 0x74fb, 0x74fc, 0x74ff, 0x7506, + 0x7512, 0x7516, 0x7517, 0x7520, 0x7521, 0x7524, 0x7527, 0x7529, + 0x752a, 0x752f, 0x7536, 0x7539, 0x753d, 0x753e, 0x753f, 0x7540, + 0x7543, 0x7547, 0x7548, 0x754e, 0x7550, 0x7552, 0x7557, 0x755e, + 0x755f, 0x7561, 0x756f, 0x7571, 0x7579, 0x757a, 0x757b, 0x757c, + 0x757d, 0x757e, 0x7581, 0x7585, 0x7590, 0x7592, 0x7593, 0x7595, + 0x7599, 0x759c, 0x75a2, 0x75a4, 0x75b4, 0x75ba, 0x75bf, 0x75c0, + 0x75c1, 0x75c4, 0x75c6, 0x75cc, 0x75ce, 0x75cf, 0x75d7, 0x75dc, + 0x75df, 0x75e0, 0x75e1, 0x75e4, 0x75e7, 0x75ec, 0x75ee, 0x75ef, + 0x75f1, 0x75f9, 0x7600, 0x7602, 0x7603, 0x7604, 0x7607, 0x7608, + 0x760a, 0x760c, 0x760f, 0x7612, 0x7613, 0x7615, 0x7616, 0x7619, + 0x761b, 0x761c, 0x761d, 0x761e, 0x7623, 0x7625, 0x7626, 0x7629, + 0x762d, 0x7632, 0x7633, 0x7635, 0x7638, 0x7639, 0x763a, 0x763c, + 0x764a, 0x7640, 0x7641, 0x7643, 0x7644, 0x7645, 0x7649, 0x764b, + 0x7655, 0x7659, 0x765f, 0x7664, 0x7665, 0x766d, 0x766e, 0x766f, + 0x7671, 0x7674, 0x7681, 0x7685, 0x768c, 0x768d, 0x7695, 0x769b, + 0x769c, 0x769d, 0x769f, 0x76a0, 0x76a2, 0x76a3, 0x76a4, 0x76a5, + 0x76a6, 0x76a7, 0x76a8, 0x76aa, 0x76ad, 0x76bd, 0x76c1, 0x76c5, + 0x76c9, 0x76cb, 0x76cc, 0x76ce, 0x76d4, 0x76d9, 0x76e0, 0x76e6, + 0x76e8, 0x76ec, 0x76f0, 0x76f1, 0x76f6, 0x76f9, 0x76fc, 0x7700, + 0x7706, 0x770a, 0x770e, 0x7712, 0x7714, 0x7715, 0x7717, 0x7719, + 0x771a, 0x771c, 0x7722, 0x7728, 0x772d, 0x772e, 0x772f, 0x7734, + 0x7735, 0x7736, 0x7739, 0x773d, 0x773e, 0x7742, 0x7745, 0x7746, + 0x774a, 0x774d, 0x774e, 0x774f, 0x7752, 0x7756, 0x7757, 0x775c, + 0x775e, 0x775f, 0x7760, 0x7762, 0x7764, 0x7767, 0x776a, 0x776c, + 0x7770, 0x7772, 0x7773, 0x7774, 0x777a, 0x777d, 0x7780, 0x7784, + 0x778c, 0x778d, 0x7794, 0x7795, 0x7796, 0x779a, 0x779f, 0x77a2, + 0x77a7, 0x77aa, 0x77ae, 0x77af, 0x77b1, 0x77b5, 0x77be, 0x77c3, + 0x77c9, 0x77d1, 0x77d2, 0x77d5, 0x77d9, 0x77de, 0x77df, 0x77e0, + 0x77e4, 0x77e6, 0x77ea, 0x77ec, 0x77f0, 0x77f1, 0x77f4, 0x77f8, + 0x77fb, 0x7805, 0x7806, 0x7809, 0x780d, 0x780e, 0x7811, 0x781d, + 0x7821, 0x7822, 0x7823, 0x782d, 0x782e, 0x7830, 0x7835, 0x7837, + 0x7843, 0x7844, 0x7847, 0x7848, 0x784c, 0x784e, 0x7852, 0x785c, + 0x785e, 0x7860, 0x7861, 0x7863, 0x7864, 0x7868, 0x786a, 0x786e, + 0x787a, 0x787e, 0x788a, 0x788f, 0x7894, 0x7898, 0x78a1, 0x789d, + 0x789e, 0x789f, 0x78a4, 0x78a8, 0x78ac, 0x78ad, 0x78b0, 0x78b1, + 0x78b2, 0x78b3, 0x78bb, 0x78bd, 0x78bf, 0x78c7, 0x78c8, 0x78c9, + 0x78cc, 0x78ce, 0x78d2, 0x78d3, 0x78d5, 0x78d6, 0x78e4, 0x78db, + 0x78df, 0x78e0, 0x78e1, 0x78e6, 0x78ea, 0x78f2, 0x78f3, 0x7900, + 0x78f6, 0x78f7, 0x78fa, 0x78fb, 0x78ff, 0x7906, 0x790c, 0x7910, + 0x791a, 0x791c, 0x791e, 0x791f, 0x7920, 0x7925, 0x7927, 0x7929, + 0x792d, 0x7931, 0x7934, 0x7935, 0x793b, 0x793d, 0x793f, 0x7944, + 0x7945, 0x7946, 0x794a, 0x794b, 0x794f, 0x7951, 0x7954, 0x7958, + 0x795b, 0x795c, 0x7967, 0x7969, 0x796b, 0x7972, 0x7979, 0x797b, + 0x797c, 0x797e, 0x798b, 0x798c, 0x7991, 0x7993, 0x7994, 0x7995, + 0x7996, 0x7998, 0x799b, 0x799c, 0x79a1, 0x79a8, 0x79a9, 0x79ab, + 0x79af, 0x79b1, 0x79b4, 0x79b8, 0x79bb, 0x79c2, 0x79c4, 0x79c7, + 0x79c8, 0x79ca, 0x79cf, 0x79d4, 0x79d6, 0x79da, 0x79dd, 0x79de, + 0x79e0, 0x79e2, 0x79e5, 0x79ea, 0x79eb, 0x79ed, 0x79f1, 0x79f8, + 0x79fc, 0x7a02, 0x7a03, 0x7a07, 0x7a09, 0x7a0a, 0x7a0c, 0x7a11, + 0x7a15, 0x7a1b, 0x7a1e, 0x7a21, 0x7a27, 0x7a2b, 0x7a2d, 0x7a2f, + 0x7a30, 0x7a34, 0x7a35, 0x7a38, 0x7a39, 0x7a3a, 0x7a44, 0x7a45, + 0x7a47, 0x7a48, 0x7a4c, 0x7a55, 0x7a56, 0x7a59, 0x7a5c, 0x7a5d, + 0x7a5f, 0x7a60, 0x7a65, 0x7a67, 0x7a6a, 0x7a6d, 0x7a75, 0x7a78, + 0x7a7e, 0x7a80, 0x7a82, 0x7a85, 0x7a86, 0x7a8a, 0x7a8b, 0x7a90, + 0x7a91, 0x7a94, 0x7a9e, 0x7aa0, 0x7aa3, 0x7aac, 0x7ab3, 0x7ab5, + 0x7ab9, 0x7abb, 0x7abc, 0x7ac6, 0x7ac9, 0x7acc, 0x7ace, 0x7ad1, + 0x7adb, 0x7ae8, 0x7ae9, 0x7aeb, 0x7aec, 0x7af1, 0x7af4, 0x7afb, + 0x7afd, 0x7afe, 0x7b07, 0x7b14, 0x7b1f, 0x7b23, 0x7b27, 0x7b29, + 0x7b2a, 0x7b2b, 0x7b2d, 0x7b2e, 0x7b2f, 0x7b30, 0x7b31, 0x7b34, + 0x7b3d, 0x7b3f, 0x7b40, 0x7b41, 0x7b47, 0x7b4e, 0x7b55, 0x7b60, + 0x7b64, 0x7b66, 0x7b69, 0x7b6a, 0x7b6d, 0x7b6f, 0x7b72, 0x7b73, + 0x7b77, 0x7b84, 0x7b89, 0x7b8e, 0x7b90, 0x7b91, 0x7b96, 0x7b9b, + 0x7b9e, 0x7ba0, 0x7ba5, 0x7bac, 0x7baf, 0x7bb0, 0x7bb2, 0x7bb5, + 0x7bb6, 0x7bba, 0x7bbb, 0x7bbc, 0x7bbd, 0x7bc2, 0x7bc5, 0x7bc8, + 0x7bca, 0x7bd4, 0x7bd6, 0x7bd7, 0x7bd9, 0x7bda, 0x7bdb, 0x7be8, + 0x7bea, 0x7bf2, 0x7bf4, 0x7bf5, 0x7bf8, 0x7bf9, 0x7bfa, 0x7bfc, + 0x7bfe, 0x7c01, 0x7c02, 0x7c03, 0x7c04, 0x7c06, 0x7c09, 0x7c0b, + 0x7c0c, 0x7c0e, 0x7c0f, 0x7c19, 0x7c1b, 0x7c20, 0x7c25, 0x7c26, + 0x7c28, 0x7c2c, 0x7c31, 0x7c33, 0x7c34, 0x7c36, 0x7c39, 0x7c3a, + 0x7c46, 0x7c4a, 0x7c55, 0x7c51, 0x7c52, 0x7c53, 0x7c59, 0x7c5a, + 0x7c5b, 0x7c5c, 0x7c5d, 0x7c5e, 0x7c61, 0x7c63, 0x7c67, 0x7c69, + 0x7c6d, 0x7c6e, 0x7c70, 0x7c72, 0x7c79, 0x7c7c, 0x7c7d, 0x7c86, + 0x7c87, 0x7c8f, 0x7c94, 0x7c9e, 0x7ca0, 0x7ca6, 0x7cb0, 0x7cb6, + 0x7cb7, 0x7cba, 0x7cbb, 0x7cbc, 0x7cbf, 0x7cc4, 0x7cc7, 0x7cc8, + 0x7cc9, 0x7ccd, 0x7ccf, 0x7cd3, 0x7cd4, 0x7cd5, 0x7cd7, 0x7cd9, + 0x7cda, 0x7cdd, 0x7ce6, 0x7ce9, 0x7ceb, 0x7cf5, 0x7d03, 0x7d07, + 0x7d08, 0x7d09, 0x7d0f, 0x7d11, 0x7d12, 0x7d13, 0x7d16, 0x7d1d, + 0x7d1e, 0x7d23, 0x7d26, 0x7d2a, 0x7d2d, 0x7d31, 0x7d3c, 0x7d3d, + 0x7d3e, 0x7d40, 0x7d41, 0x7d47, 0x7d48, 0x7d4d, 0x7d51, 0x7d53, + 0x7d57, 0x7d59, 0x7d5a, 0x7d5c, 0x7d5d, 0x7d65, 0x7d67, 0x7d6a, + 0x7d70, 0x7d78, 0x7d7a, 0x7d7b, 0x7d7f, 0x7d81, 0x7d82, 0x7d83, + 0x7d85, 0x7d86, 0x7d88, 0x7d8b, 0x7d8c, 0x7d8d, 0x7d91, 0x7d96, + 0x7d97, 0x7d9d, 0x7d9e, 0x7da6, 0x7da7, 0x7daa, 0x7db3, 0x7db6, + 0x7db7, 0x7db9, 0x7dc2, 0x7dc3, 0x7dc4, 0x7dc5, 0x7dc6, 0x7dcc, + 0x7dcd, 0x7dce, 0x7dd7, 0x7dd9, 0x7e00, 0x7de2, 0x7de5, 0x7de6, + 0x7dea, 0x7deb, 0x7ded, 0x7df1, 0x7df5, 0x7df6, 0x7df9, 0x7dfa, + 0x7e08, 0x7e10, 0x7e11, 0x7e15, 0x7e17, 0x7e1c, 0x7e1d, 0x7e20, + 0x7e27, 0x7e28, 0x7e2c, 0x7e2d, 0x7e2f, 0x7e33, 0x7e36, 0x7e3f, + 0x7e44, 0x7e45, 0x7e47, 0x7e4e, 0x7e50, 0x7e52, 0x7e58, 0x7e5f, + 0x7e61, 0x7e62, 0x7e65, 0x7e6b, 0x7e6e, 0x7e6f, 0x7e73, 0x7e78, + 0x7e7e, 0x7e81, 0x7e86, 0x7e87, 0x7e8a, 0x7e8d, 0x7e91, 0x7e95, + 0x7e98, 0x7e9a, 0x7e9d, 0x7e9e, 0x7f3c, 0x7f3b, 0x7f3d, 0x7f3e, + 0x7f3f, 0x7f43, 0x7f44, 0x7f47, 0x7f4f, 0x7f52, 0x7f53, 0x7f5b, + 0x7f5c, 0x7f5d, 0x7f61, 0x7f63, 0x7f64, 0x7f65, 0x7f66, 0x7f6d, + 0x7f71, 0x7f7d, 0x7f7e, 0x7f7f, 0x7f80, 0x7f8b, 0x7f8d, 0x7f8f, + 0x7f90, 0x7f91, 0x7f96, 0x7f97, 0x7f9c, 0x7fa1, 0x7fa2, 0x7fa6, + 0x7faa, 0x7fad, 0x7fb4, 0x7fbc, 0x7fbf, 0x7fc0, 0x7fc3, 0x7fc8, + 0x7fce, 0x7fcf, 0x7fdb, 0x7fdf, 0x7fe3, 0x7fe5, 0x7fe8, 0x7fec, + 0x7fee, 0x7fef, 0x7ff2, 0x7ffa, 0x7ffd, 0x7ffe, 0x7fff, 0x8007, + 0x8008, 0x800a, 0x800d, 0x800e, 0x800f, 0x8011, 0x8013, 0x8014, + 0x8016, 0x801d, 0x801e, 0x801f, 0x8020, 0x8024, 0x8026, 0x802c, + 0x802e, 0x8030, 0x8034, 0x8035, 0x8037, 0x8039, 0x803a, 0x803c, + 0x803e, 0x8040, 0x8044, 0x8060, 0x8064, 0x8066, 0x806d, 0x8071, + 0x8075, 0x8081, 0x8088, 0x808e, 0x809c, 0x809e, 0x80a6, 0x80a7, + 0x80ab, 0x80b8, 0x80b9, 0x80c8, 0x80cd, 0x80cf, 0x80d2, 0x80d4, + 0x80d5, 0x80d7, 0x80d8, 0x80e0, 0x80ed, 0x80ee, 0x80f0, 0x80f2, + 0x80f3, 0x80f6, 0x80f9, 0x80fa, 0x80fe, 0x8103, 0x810b, 0x8116, + 0x8117, 0x8118, 0x811c, 0x811e, 0x8120, 0x8124, 0x8127, 0x812c, + 0x8130, 0x8135, 0x813a, 0x813c, 0x8145, 0x8147, 0x814a, 0x814c, + 0x8152, 0x8157, 0x8160, 0x8161, 0x8167, 0x8168, 0x8169, 0x816d, + 0x816f, 0x8177, 0x8181, 0x8190, 0x8184, 0x8185, 0x8186, 0x818b, + 0x818e, 0x8196, 0x8198, 0x819b, 0x819e, 0x81a2, 0x81ae, 0x81b2, + 0x81b4, 0x81bb, 0x81cb, 0x81c3, 0x81c5, 0x81ca, 0x81ce, 0x81cf, + 0x81d5, 0x81d7, 0x81db, 0x81dd, 0x81de, 0x81e1, 0x81e4, 0x81eb, + 0x81ec, 0x81f0, 0x81f1, 0x81f2, 0x81f5, 0x81f6, 0x81f8, 0x81f9, + 0x81fd, 0x81ff, 0x8200, 0x8203, 0x820f, 0x8213, 0x8214, 0x8219, + 0x821a, 0x821d, 0x8221, 0x8222, 0x8228, 0x8232, 0x8234, 0x823a, + 0x8243, 0x8244, 0x8245, 0x8246, 0x824b, 0x824e, 0x824f, 0x8251, + 0x8256, 0x825c, 0x8260, 0x8263, 0x8267, 0x826d, 0x8274, 0x827b, + 0x827d, 0x827f, 0x8280, 0x8281, 0x8283, 0x8284, 0x8287, 0x8289, + 0x828a, 0x828e, 0x8291, 0x8294, 0x8296, 0x8298, 0x829a, 0x829b, + 0x82a0, 0x82a1, 0x82a3, 0x82a4, 0x82a7, 0x82a8, 0x82a9, 0x82aa, + 0x82ae, 0x82b0, 0x82b2, 0x82b4, 0x82b7, 0x82ba, 0x82bc, 0x82be, + 0x82bf, 0x82c6, 0x82d0, 0x82d5, 0x82da, 0x82e0, 0x82e2, 0x82e4, + 0x82e8, 0x82ea, 0x82ed, 0x82ef, 0x82f6, 0x82f7, 0x82fd, 0x82fe, + 0x8300, 0x8301, 0x8307, 0x8308, 0x830a, 0x830b, 0x8354, 0x831b, + 0x831d, 0x831e, 0x831f, 0x8321, 0x8322, 0x832c, 0x832d, 0x832e, + 0x8330, 0x8333, 0x8337, 0x833a, 0x833c, 0x833d, 0x8342, 0x8343, + 0x8344, 0x8347, 0x834d, 0x834e, 0x8351, 0x8355, 0x8356, 0x8357, + 0x8370, 0x8378, 0x837d, 0x837f, 0x8380, 0x8382, 0x8384, 0x8386, + 0x838d, 0x8392, 0x8394, 0x8395, 0x8398, 0x8399, 0x839b, 0x839c, + 0x839d, 0x83a6, 0x83a7, 0x83a9, 0x83ac, 0x83be, 0x83bf, 0x83c0, + 0x83c7, 0x83c9, 0x83cf, 0x83d0, 0x83d1, 0x83d4, 0x83dd, 0x8353, + 0x83e8, 0x83ea, 0x83f6, 0x83f8, 0x83f9, 0x83fc, 0x8401, 0x8406, + 0x840a, 0x840f, 0x8411, 0x8415, 0x8419, 0x83ad, 0x842f, 0x8439, + 0x8445, 0x8447, 0x8448, 0x844a, 0x844d, 0x844f, 0x8451, 0x8452, + 0x8456, 0x8458, 0x8459, 0x845a, 0x845c, 0x8460, 0x8464, 0x8465, + 0x8467, 0x846a, 0x8470, 0x8473, 0x8474, 0x8476, 0x8478, 0x847c, + 0x847d, 0x8481, 0x8485, 0x8492, 0x8493, 0x8495, 0x849e, 0x84a6, + 0x84a8, 0x84a9, 0x84aa, 0x84af, 0x84b1, 0x84b4, 0x84ba, 0x84bd, + 0x84be, 0x84c0, 0x84c2, 0x84c7, 0x84c8, 0x84cc, 0x84cf, 0x84d3, + 0x84dc, 0x84e7, 0x84ea, 0x84ef, 0x84f0, 0x84f1, 0x84f2, 0x84f7, + 0x8532, 0x84fa, 0x84fb, 0x84fd, 0x8502, 0x8503, 0x8507, 0x850c, + 0x850e, 0x8510, 0x851c, 0x851e, 0x8522, 0x8523, 0x8524, 0x8525, + 0x8527, 0x852a, 0x852b, 0x852f, 0x8533, 0x8534, 0x8536, 0x853f, + 0x8546, 0x854f, 0x8550, 0x8551, 0x8552, 0x8553, 0x8556, 0x8559, + 0x855c, 0x855d, 0x855e, 0x855f, 0x8560, 0x8561, 0x8562, 0x8564, + 0x856b, 0x856f, 0x8579, 0x857a, 0x857b, 0x857d, 0x857f, 0x8581, + 0x8585, 0x8586, 0x8589, 0x858b, 0x858c, 0x858f, 0x8593, 0x8598, + 0x859d, 0x859f, 0x85a0, 0x85a2, 0x85a5, 0x85a7, 0x85b4, 0x85b6, + 0x85b7, 0x85b8, 0x85bc, 0x85bd, 0x85be, 0x85bf, 0x85c2, 0x85c7, + 0x85ca, 0x85cb, 0x85ce, 0x85ad, 0x85d8, 0x85da, 0x85df, 0x85e0, + 0x85e6, 0x85e8, 0x85ed, 0x85f3, 0x85f6, 0x85fc, 0x85ff, 0x8600, + 0x8604, 0x8605, 0x860d, 0x860e, 0x8610, 0x8611, 0x8612, 0x8618, + 0x8619, 0x861b, 0x861e, 0x8621, 0x8627, 0x8629, 0x8636, 0x8638, + 0x863a, 0x863c, 0x863d, 0x8640, 0x8642, 0x8646, 0x8652, 0x8653, + 0x8656, 0x8657, 0x8658, 0x8659, 0x865d, 0x8660, 0x8661, 0x8662, + 0x8663, 0x8664, 0x8669, 0x866c, 0x866f, 0x8675, 0x8676, 0x8677, + 0x867a, 0x868d, 0x8691, 0x8696, 0x8698, 0x869a, 0x869c, 0x86a1, + 0x86a6, 0x86a7, 0x86a8, 0x86ad, 0x86b1, 0x86b3, 0x86b4, 0x86b5, + 0x86b7, 0x86b8, 0x86b9, 0x86bf, 0x86c0, 0x86c1, 0x86c3, 0x86c5, + 0x86d1, 0x86d2, 0x86d5, 0x86d7, 0x86da, 0x86dc, 0x86e0, 0x86e3, + 0x86e5, 0x86e7, 0x8688, 0x86fa, 0x86fc, 0x86fd, 0x8704, 0x8705, + 0x8707, 0x870b, 0x870e, 0x870f, 0x8710, 0x8713, 0x8714, 0x8719, + 0x871e, 0x871f, 0x8721, 0x8723, 0x8728, 0x872e, 0x872f, 0x8731, + 0x8732, 0x8739, 0x873a, 0x873c, 0x873d, 0x873e, 0x8740, 0x8743, + 0x8745, 0x874d, 0x8758, 0x875d, 0x8761, 0x8764, 0x8765, 0x876f, + 0x8771, 0x8772, 0x877b, 0x8783, 0x8784, 0x8785, 0x8786, 0x8787, + 0x8788, 0x8789, 0x878b, 0x878c, 0x8790, 0x8793, 0x8795, 0x8797, + 0x8798, 0x8799, 0x879e, 0x87a0, 0x87a3, 0x87a7, 0x87ac, 0x87ad, + 0x87ae, 0x87b1, 0x87b5, 0x87be, 0x87bf, 0x87c1, 0x87c8, 0x87c9, + 0x87ca, 0x87ce, 0x87d5, 0x87d6, 0x87d9, 0x87da, 0x87dc, 0x87df, + 0x87e2, 0x87e3, 0x87e4, 0x87ea, 0x87eb, 0x87ed, 0x87f1, 0x87f3, + 0x87f8, 0x87fa, 0x87ff, 0x8801, 0x8803, 0x8806, 0x8809, 0x880a, + 0x880b, 0x8810, 0x8819, 0x8812, 0x8813, 0x8814, 0x8818, 0x881a, + 0x881b, 0x881c, 0x881e, 0x881f, 0x8828, 0x882d, 0x882e, 0x8830, + 0x8832, 0x8835, 0x883a, 0x883c, 0x8841, 0x8843, 0x8845, 0x8848, + 0x8849, 0x884a, 0x884b, 0x884e, 0x8851, 0x8855, 0x8856, 0x8858, + 0x885a, 0x885c, 0x885f, 0x8860, 0x8864, 0x8869, 0x8871, 0x8879, + 0x887b, 0x8880, 0x8898, 0x889a, 0x889b, 0x889c, 0x889f, 0x88a0, + 0x88a8, 0x88aa, 0x88ba, 0x88bd, 0x88be, 0x88c0, 0x88ca, 0x88cb, + 0x88cc, 0x88cd, 0x88ce, 0x88d1, 0x88d2, 0x88d3, 0x88db, 0x88de, + 0x88e7, 0x88ef, 0x88f0, 0x88f1, 0x88f5, 0x88f7, 0x8901, 0x8906, + 0x890d, 0x890e, 0x890f, 0x8915, 0x8916, 0x8918, 0x8919, 0x891a, + 0x891c, 0x8920, 0x8926, 0x8927, 0x8928, 0x8930, 0x8931, 0x8932, + 0x8935, 0x8939, 0x893a, 0x893e, 0x8940, 0x8942, 0x8945, 0x8946, + 0x8949, 0x894f, 0x8952, 0x8957, 0x895a, 0x895b, 0x895c, 0x8961, + 0x8962, 0x8963, 0x896b, 0x896e, 0x8970, 0x8973, 0x8975, 0x897a, + 0x897b, 0x897c, 0x897d, 0x8989, 0x898d, 0x8990, 0x8994, 0x8995, + 0x899b, 0x899c, 0x899f, 0x89a0, 0x89a5, 0x89b0, 0x89b4, 0x89b5, + 0x89b6, 0x89b7, 0x89bc, 0x89d4, 0x89d5, 0x89d6, 0x89d7, 0x89d8, + 0x89e5, 0x89e9, 0x89eb, 0x89ed, 0x89f1, 0x89f3, 0x89f6, 0x89f9, + 0x89fd, 0x89ff, 0x8a04, 0x8a05, 0x8a07, 0x8a0f, 0x8a11, 0x8a12, + 0x8a14, 0x8a15, 0x8a1e, 0x8a20, 0x8a22, 0x8a24, 0x8a26, 0x8a2b, + 0x8a2c, 0x8a2f, 0x8a35, 0x8a37, 0x8a3d, 0x8a3e, 0x8a40, 0x8a43, + 0x8a45, 0x8a47, 0x8a49, 0x8a4d, 0x8a4e, 0x8a53, 0x8a56, 0x8a57, + 0x8a58, 0x8a5c, 0x8a5d, 0x8a61, 0x8a65, 0x8a67, 0x8a75, 0x8a76, + 0x8a77, 0x8a79, 0x8a7a, 0x8a7b, 0x8a7e, 0x8a7f, 0x8a80, 0x8a83, + 0x8a86, 0x8a8b, 0x8a8f, 0x8a90, 0x8a92, 0x8a96, 0x8a97, 0x8a99, + 0x8a9f, 0x8aa7, 0x8aa9, 0x8aae, 0x8aaf, 0x8ab3, 0x8ab6, 0x8ab7, + 0x8abb, 0x8abe, 0x8ac3, 0x8ac6, 0x8ac8, 0x8ac9, 0x8aca, 0x8ad1, + 0x8ad3, 0x8ad4, 0x8ad5, 0x8ad7, 0x8add, 0x8adf, 0x8aec, 0x8af0, + 0x8af4, 0x8af5, 0x8af6, 0x8afc, 0x8aff, 0x8b05, 0x8b06, 0x8b0b, + 0x8b11, 0x8b1c, 0x8b1e, 0x8b1f, 0x8b0a, 0x8b2d, 0x8b30, 0x8b37, + 0x8b3c, 0x8b42, 0x8b43, 0x8b44, 0x8b45, 0x8b46, 0x8b48, 0x8b52, + 0x8b53, 0x8b54, 0x8b59, 0x8b4d, 0x8b5e, 0x8b63, 0x8b6d, 0x8b76, + 0x8b78, 0x8b79, 0x8b7c, 0x8b7e, 0x8b81, 0x8b84, 0x8b85, 0x8b8b, + 0x8b8d, 0x8b8f, 0x8b94, 0x8b95, 0x8b9c, 0x8b9e, 0x8b9f, 0x8c38, + 0x8c39, 0x8c3d, 0x8c3e, 0x8c45, 0x8c47, 0x8c49, 0x8c4b, 0x8c4f, + 0x8c51, 0x8c53, 0x8c54, 0x8c57, 0x8c58, 0x8c5b, 0x8c5d, 0x8c59, + 0x8c63, 0x8c64, 0x8c66, 0x8c68, 0x8c69, 0x8c6d, 0x8c73, 0x8c75, + 0x8c76, 0x8c7b, 0x8c7e, 0x8c86, 0x8c87, 0x8c8b, 0x8c90, 0x8c92, + 0x8c93, 0x8c99, 0x8c9b, 0x8c9c, 0x8ca4, 0x8cb9, 0x8cba, 0x8cc5, + 0x8cc6, 0x8cc9, 0x8ccb, 0x8ccf, 0x8cd6, 0x8cd5, 0x8cd9, 0x8cdd, + 0x8ce1, 0x8ce8, 0x8cec, 0x8cef, 0x8cf0, 0x8cf2, 0x8cf5, 0x8cf7, + 0x8cf8, 0x8cfe, 0x8cff, 0x8d01, 0x8d03, 0x8d09, 0x8d12, 0x8d17, + 0x8d1b, 0x8d65, 0x8d69, 0x8d6c, 0x8d6e, 0x8d7f, 0x8d82, 0x8d84, + 0x8d88, 0x8d8d, 0x8d90, 0x8d91, 0x8d95, 0x8d9e, 0x8d9f, 0x8da0, + 0x8da6, 0x8dab, 0x8dac, 0x8daf, 0x8db2, 0x8db5, 0x8db7, 0x8db9, + 0x8dbb, 0x8dc0, 0x8dc5, 0x8dc6, 0x8dc7, 0x8dc8, 0x8dca, 0x8dce, + 0x8dd1, 0x8dd4, 0x8dd5, 0x8dd7, 0x8dd9, 0x8de4, 0x8de5, 0x8de7, + 0x8dec, 0x8df0, 0x8dbc, 0x8df1, 0x8df2, 0x8df4, 0x8dfd, 0x8e01, + 0x8e04, 0x8e05, 0x8e06, 0x8e0b, 0x8e11, 0x8e14, 0x8e16, 0x8e20, + 0x8e21, 0x8e22, 0x8e23, 0x8e26, 0x8e27, 0x8e31, 0x8e33, 0x8e36, + 0x8e37, 0x8e38, 0x8e39, 0x8e3d, 0x8e40, 0x8e41, 0x8e4b, 0x8e4d, + 0x8e4e, 0x8e4f, 0x8e54, 0x8e5b, 0x8e5c, 0x8e5d, 0x8e5e, 0x8e61, + 0x8e62, 0x8e69, 0x8e6c, 0x8e6d, 0x8e6f, 0x8e70, 0x8e71, 0x8e79, + 0x8e7a, 0x8e7b, 0x8e82, 0x8e83, 0x8e89, 0x8e90, 0x8e92, 0x8e95, + 0x8e9a, 0x8e9b, 0x8e9d, 0x8e9e, 0x8ea2, 0x8ea7, 0x8ea9, 0x8ead, + 0x8eae, 0x8eb3, 0x8eb5, 0x8eba, 0x8ebb, 0x8ec0, 0x8ec1, 0x8ec3, + 0x8ec4, 0x8ec7, 0x8ecf, 0x8ed1, 0x8ed4, 0x8edc, 0x8ee8, 0x8eee, + 0x8ef0, 0x8ef1, 0x8ef7, 0x8ef9, 0x8efa, 0x8eed, 0x8f00, 0x8f02, + 0x8f07, 0x8f08, 0x8f0f, 0x8f10, 0x8f16, 0x8f17, 0x8f18, 0x8f1e, + 0x8f20, 0x8f21, 0x8f23, 0x8f25, 0x8f27, 0x8f28, 0x8f2c, 0x8f2d, + 0x8f2e, 0x8f34, 0x8f35, 0x8f36, 0x8f37, 0x8f3a, 0x8f40, 0x8f41, + 0x8f43, 0x8f47, 0x8f4f, 0x8f51, 0x8f52, 0x8f53, 0x8f54, 0x8f55, + 0x8f58, 0x8f5d, 0x8f5e, 0x8f65, 0x8f9d, 0x8fa0, 0x8fa1, 0x8fa4, + 0x8fa5, 0x8fa6, 0x8fb5, 0x8fb6, 0x8fb8, 0x8fbe, 0x8fc0, 0x8fc1, + 0x8fc6, 0x8fca, 0x8fcb, 0x8fcd, 0x8fd0, 0x8fd2, 0x8fd3, 0x8fd5, + 0x8fe0, 0x8fe3, 0x8fe4, 0x8fe8, 0x8fee, 0x8ff1, 0x8ff5, 0x8ff6, + 0x8ffb, 0x8ffe, 0x9002, 0x9004, 0x9008, 0x900c, 0x9018, 0x901b, + 0x9028, 0x9029, 0x902f, 0x902a, 0x902c, 0x902d, 0x9033, 0x9034, + 0x9037, 0x903f, 0x9043, 0x9044, 0x904c, 0x905b, 0x905d, 0x9062, + 0x9066, 0x9067, 0x906c, 0x9070, 0x9074, 0x9079, 0x9085, 0x9088, + 0x908b, 0x908c, 0x908e, 0x9090, 0x9095, 0x9097, 0x9098, 0x9099, + 0x909b, 0x90a0, 0x90a1, 0x90a2, 0x90a5, 0x90b0, 0x90b2, 0x90b3, + 0x90b4, 0x90b6, 0x90bd, 0x90cc, 0x90be, 0x90c3, 0x90c4, 0x90c5, + 0x90c7, 0x90c8, 0x90d5, 0x90d7, 0x90d8, 0x90d9, 0x90dc, 0x90dd, + 0x90df, 0x90e5, 0x90d2, 0x90f6, 0x90eb, 0x90ef, 0x90f0, 0x90f4, + 0x90fe, 0x90ff, 0x9100, 0x9104, 0x9105, 0x9106, 0x9108, 0x910d, + 0x9110, 0x9114, 0x9116, 0x9117, 0x9118, 0x911a, 0x911c, 0x911e, + 0x9120, 0x9125, 0x9122, 0x9123, 0x9127, 0x9129, 0x912e, 0x912f, + 0x9131, 0x9134, 0x9136, 0x9137, 0x9139, 0x913a, 0x913c, 0x913d, + 0x9143, 0x9147, 0x9148, 0x914f, 0x9153, 0x9157, 0x9159, 0x915a, + 0x915b, 0x9161, 0x9164, 0x9167, 0x916d, 0x9174, 0x9179, 0x917a, + 0x917b, 0x9181, 0x9183, 0x9185, 0x9186, 0x918a, 0x918e, 0x9191, + 0x9193, 0x9194, 0x9195, 0x9198, 0x919e, 0x91a1, 0x91a6, 0x91a8, + 0x91ac, 0x91ad, 0x91ae, 0x91b0, 0x91b1, 0x91b2, 0x91b3, 0x91b6, + 0x91bb, 0x91bc, 0x91bd, 0x91bf, 0x91c2, 0x91c3, 0x91c5, 0x91d3, + 0x91d4, 0x91d7, 0x91d9, 0x91da, 0x91de, 0x91e4, 0x91e5, 0x91e9, + 0x91ea, 0x91ec, 0x91ed, 0x91ee, 0x91ef, 0x91f0, 0x91f1, 0x91f7, + 0x91f9, 0x91fb, 0x91fd, 0x9200, 0x9201, 0x9204, 0x9205, 0x9206, + 0x9207, 0x9209, 0x920a, 0x920c, 0x9210, 0x9212, 0x9213, 0x9216, + 0x9218, 0x921c, 0x921d, 0x9223, 0x9224, 0x9225, 0x9226, 0x9228, + 0x922e, 0x922f, 0x9230, 0x9233, 0x9235, 0x9236, 0x9238, 0x9239, + 0x923a, 0x923c, 0x923e, 0x9240, 0x9242, 0x9243, 0x9246, 0x9247, + 0x924a, 0x924d, 0x924e, 0x924f, 0x9251, 0x9258, 0x9259, 0x925c, + 0x925d, 0x9260, 0x9261, 0x9265, 0x9267, 0x9268, 0x9269, 0x926e, + 0x926f, 0x9270, 0x9275, 0x9276, 0x9277, 0x9278, 0x9279, 0x927b, + 0x927c, 0x927d, 0x927f, 0x9288, 0x9289, 0x928a, 0x928d, 0x928e, + 0x9292, 0x9297, 0x9299, 0x929f, 0x92a0, 0x92a4, 0x92a5, 0x92a7, + 0x92a8, 0x92ab, 0x92af, 0x92b2, 0x92b6, 0x92b8, 0x92ba, 0x92bb, + 0x92bc, 0x92bd, 0x92bf, 0x92c0, 0x92c1, 0x92c2, 0x92c3, 0x92c5, + 0x92c6, 0x92c7, 0x92c8, 0x92cb, 0x92cc, 0x92cd, 0x92ce, 0x92d0, + 0x92d3, 0x92d5, 0x92d7, 0x92d8, 0x92d9, 0x92dc, 0x92dd, 0x92df, + 0x92e0, 0x92e1, 0x92e3, 0x92e5, 0x92e7, 0x92e8, 0x92ec, 0x92ee, + 0x92f0, 0x92f9, 0x92fb, 0x92ff, 0x9300, 0x9302, 0x9308, 0x930d, + 0x9311, 0x9314, 0x9315, 0x931c, 0x931d, 0x931e, 0x931f, 0x9321, + 0x9324, 0x9325, 0x9327, 0x9329, 0x932a, 0x9333, 0x9334, 0x9336, + 0x9337, 0x9347, 0x9348, 0x9349, 0x9350, 0x9351, 0x9352, 0x9355, + 0x9357, 0x9358, 0x935a, 0x935e, 0x9364, 0x9365, 0x9367, 0x9369, + 0x936a, 0x936d, 0x936f, 0x9370, 0x9371, 0x9373, 0x9374, 0x9376, + 0x937a, 0x937d, 0x937f, 0x9380, 0x9381, 0x9382, 0x9388, 0x938a, + 0x938b, 0x938d, 0x938f, 0x9392, 0x9395, 0x9398, 0x939b, 0x939e, + 0x93a1, 0x93a3, 0x93a4, 0x93a6, 0x93a8, 0x93ab, 0x93b4, 0x93b5, + 0x93b6, 0x93ba, 0x93a9, 0x93c1, 0x93c4, 0x93c5, 0x93c6, 0x93c7, + 0x93c9, 0x93ca, 0x93cb, 0x93cc, 0x93cd, 0x93d3, 0x93d9, 0x93dc, + 0x93de, 0x93df, 0x93e2, 0x93e6, 0x93e7, 0x93f9, 0x93f7, 0x93f8, + 0x93fa, 0x93fb, 0x93fd, 0x9401, 0x9402, 0x9404, 0x9408, 0x9409, + 0x940d, 0x940e, 0x940f, 0x9415, 0x9416, 0x9417, 0x941f, 0x942e, + 0x942f, 0x9431, 0x9432, 0x9433, 0x9434, 0x943b, 0x943f, 0x943d, + 0x9443, 0x9445, 0x9448, 0x944a, 0x944c, 0x9455, 0x9459, 0x945c, + 0x945f, 0x9461, 0x9463, 0x9468, 0x946b, 0x946d, 0x946e, 0x946f, + 0x9471, 0x9472, 0x9484, 0x9483, 0x9578, 0x9579, 0x957e, 0x9584, + 0x9588, 0x958c, 0x958d, 0x958e, 0x959d, 0x959e, 0x959f, 0x95a1, + 0x95a6, 0x95a9, 0x95ab, 0x95ac, 0x95b4, 0x95b6, 0x95ba, 0x95bd, + 0x95bf, 0x95c6, 0x95c8, 0x95c9, 0x95cb, 0x95d0, 0x95d1, 0x95d2, + 0x95d3, 0x95d9, 0x95da, 0x95dd, 0x95de, 0x95df, 0x95e0, 0x95e4, + 0x95e6, 0x961d, 0x961e, 0x9622, 0x9624, 0x9625, 0x9626, 0x962c, + 0x9631, 0x9633, 0x9637, 0x9638, 0x9639, 0x963a, 0x963c, 0x963d, + 0x9641, 0x9652, 0x9654, 0x9656, 0x9657, 0x9658, 0x9661, 0x966e, + 0x9674, 0x967b, 0x967c, 0x967e, 0x967f, 0x9681, 0x9682, 0x9683, + 0x9684, 0x9689, 0x9691, 0x9696, 0x969a, 0x969d, 0x969f, 0x96a4, + 0x96a5, 0x96a6, 0x96a9, 0x96ae, 0x96af, 0x96b3, 0x96ba, 0x96ca, + 0x96d2, 0x5db2, 0x96d8, 0x96da, 0x96dd, 0x96de, 0x96df, 0x96e9, + 0x96ef, 0x96f1, 0x96fa, 0x9702, 0x9703, 0x9705, 0x9709, 0x971a, + 0x971b, 0x971d, 0x9721, 0x9722, 0x9723, 0x9728, 0x9731, 0x9733, + 0x9741, 0x9743, 0x974a, 0x974e, 0x974f, 0x9755, 0x9757, 0x9758, + 0x975a, 0x975b, 0x9763, 0x9767, 0x976a, 0x976e, 0x9773, 0x9776, + 0x9777, 0x9778, 0x977b, 0x977d, 0x977f, 0x9780, 0x9789, 0x9795, + 0x9796, 0x9797, 0x9799, 0x979a, 0x979e, 0x979f, 0x97a2, 0x97ac, + 0x97ae, 0x97b1, 0x97b2, 0x97b5, 0x97b6, 0x97b8, 0x97b9, 0x97ba, + 0x97bc, 0x97be, 0x97bf, 0x97c1, 0x97c4, 0x97c5, 0x97c7, 0x97c9, + 0x97ca, 0x97cc, 0x97cd, 0x97ce, 0x97d0, 0x97d1, 0x97d4, 0x97d7, + 0x97d8, 0x97d9, 0x97dd, 0x97de, 0x97e0, 0x97db, 0x97e1, 0x97e4, + 0x97ef, 0x97f1, 0x97f4, 0x97f7, 0x97f8, 0x97fa, 0x9807, 0x980a, + 0x9819, 0x980d, 0x980e, 0x9814, 0x9816, 0x981c, 0x981e, 0x9820, + 0x9823, 0x9826, 0x982b, 0x982e, 0x982f, 0x9830, 0x9832, 0x9833, + 0x9835, 0x9825, 0x983e, 0x9844, 0x9847, 0x984a, 0x9851, 0x9852, + 0x9853, 0x9856, 0x9857, 0x9859, 0x985a, 0x9862, 0x9863, 0x9865, + 0x9866, 0x986a, 0x986c, 0x98ab, 0x98ad, 0x98ae, 0x98b0, 0x98b4, + 0x98b7, 0x98b8, 0x98ba, 0x98bb, 0x98bf, 0x98c2, 0x98c5, 0x98c8, + 0x98cc, 0x98e1, 0x98e3, 0x98e5, 0x98e6, 0x98e7, 0x98ea, 0x98f3, + 0x98f6, 0x9902, 0x9907, 0x9908, 0x9911, 0x9915, 0x9916, 0x9917, + 0x991a, 0x991b, 0x991c, 0x991f, 0x9922, 0x9926, 0x9927, 0x992b, + 0x9931, 0x9932, 0x9933, 0x9934, 0x9935, 0x9939, 0x993a, 0x993b, + 0x993c, 0x9940, 0x9941, 0x9946, 0x9947, 0x9948, 0x994d, 0x994e, + 0x9954, 0x9958, 0x9959, 0x995b, 0x995c, 0x995e, 0x995f, 0x9960, + 0x999b, 0x999d, 0x999f, 0x99a6, 0x99b0, 0x99b1, 0x99b2, 0x99b5, + 0x99b9, 0x99ba, 0x99bd, 0x99bf, 0x99c3, 0x99c9, 0x99d3, 0x99d4, + 0x99d9, 0x99da, 0x99dc, 0x99de, 0x99e7, 0x99ea, 0x99eb, 0x99ec, + 0x99f0, 0x99f4, 0x99f5, 0x99f9, 0x99fd, 0x99fe, 0x9a02, 0x9a03, + 0x9a04, 0x9a0b, 0x9a0c, 0x9a10, 0x9a11, 0x9a16, 0x9a1e, 0x9a20, + 0x9a22, 0x9a23, 0x9a24, 0x9a27, 0x9a2d, 0x9a2e, 0x9a33, 0x9a35, + 0x9a36, 0x9a38, 0x9a47, 0x9a41, 0x9a44, 0x9a4a, 0x9a4b, 0x9a4c, + 0x9a4e, 0x9a51, 0x9a54, 0x9a56, 0x9a5d, 0x9aaa, 0x9aac, 0x9aae, + 0x9aaf, 0x9ab2, 0x9ab4, 0x9ab5, 0x9ab6, 0x9ab9, 0x9abb, 0x9abe, + 0x9abf, 0x9ac1, 0x9ac3, 0x9ac6, 0x9ac8, 0x9ace, 0x9ad0, 0x9ad2, + 0x9ad5, 0x9ad6, 0x9ad7, 0x9adb, 0x9adc, 0x9ae0, 0x9ae4, 0x9ae5, + 0x9ae7, 0x9ae9, 0x9aec, 0x9af2, 0x9af3, 0x9af5, 0x9af9, 0x9afa, + 0x9afd, 0x9aff, 0x9b00, 0x9b01, 0x9b02, 0x9b03, 0x9b04, 0x9b05, + 0x9b08, 0x9b09, 0x9b0b, 0x9b0c, 0x9b0d, 0x9b0e, 0x9b10, 0x9b12, + 0x9b16, 0x9b19, 0x9b1b, 0x9b1c, 0x9b20, 0x9b26, 0x9b2b, 0x9b2d, + 0x9b33, 0x9b34, 0x9b35, 0x9b37, 0x9b39, 0x9b3a, 0x9b3d, 0x9b48, + 0x9b4b, 0x9b4c, 0x9b55, 0x9b56, 0x9b57, 0x9b5b, 0x9b5e, 0x9b61, + 0x9b63, 0x9b65, 0x9b66, 0x9b68, 0x9b6a, 0x9b6b, 0x9b6c, 0x9b6d, + 0x9b6e, 0x9b73, 0x9b75, 0x9b77, 0x9b78, 0x9b79, 0x9b7f, 0x9b80, + 0x9b84, 0x9b85, 0x9b86, 0x9b87, 0x9b89, 0x9b8a, 0x9b8b, 0x9b8d, + 0x9b8f, 0x9b90, 0x9b94, 0x9b9a, 0x9b9d, 0x9b9e, 0x9ba6, 0x9ba7, + 0x9ba9, 0x9bac, 0x9bb0, 0x9bb1, 0x9bb2, 0x9bb7, 0x9bb8, 0x9bbb, + 0x9bbc, 0x9bbe, 0x9bbf, 0x9bc1, 0x9bc7, 0x9bc8, 0x9bce, 0x9bd0, + 0x9bd7, 0x9bd8, 0x9bdd, 0x9bdf, 0x9be5, 0x9be7, 0x9bea, 0x9beb, + 0x9bef, 0x9bf3, 0x9bf7, 0x9bf8, 0x9bf9, 0x9bfa, 0x9bfd, 0x9bff, + 0x9c00, 0x9c02, 0x9c0b, 0x9c0f, 0x9c11, 0x9c16, 0x9c18, 0x9c19, + 0x9c1a, 0x9c1c, 0x9c1e, 0x9c22, 0x9c23, 0x9c26, 0x9c27, 0x9c28, + 0x9c29, 0x9c2a, 0x9c31, 0x9c35, 0x9c36, 0x9c37, 0x9c3d, 0x9c41, + 0x9c43, 0x9c44, 0x9c45, 0x9c49, 0x9c4a, 0x9c4e, 0x9c4f, 0x9c50, + 0x9c53, 0x9c54, 0x9c56, 0x9c58, 0x9c5b, 0x9c5d, 0x9c5e, 0x9c5f, + 0x9c63, 0x9c69, 0x9c6a, 0x9c5c, 0x9c6b, 0x9c68, 0x9c6e, 0x9c70, + 0x9c72, 0x9c75, 0x9c77, 0x9c7b, 0x9ce6, 0x9cf2, 0x9cf7, 0x9cf9, + 0x9d0b, 0x9d02, 0x9d11, 0x9d17, 0x9d18, 0x9d1c, 0x9d1d, 0x9d1e, + 0x9d2f, 0x9d30, 0x9d32, 0x9d33, 0x9d34, 0x9d3a, 0x9d3c, 0x9d45, + 0x9d3d, 0x9d42, 0x9d43, 0x9d47, 0x9d4a, 0x9d53, 0x9d54, 0x9d5f, + 0x9d63, 0x9d62, 0x9d65, 0x9d69, 0x9d6a, 0x9d6b, 0x9d70, 0x9d76, + 0x9d77, 0x9d7b, 0x9d7c, 0x9d7e, 0x9d83, 0x9d84, 0x9d86, 0x9d8a, + 0x9d8d, 0x9d8e, 0x9d92, 0x9d93, 0x9d95, 0x9d96, 0x9d97, 0x9d98, + 0x9da1, 0x9daa, 0x9dac, 0x9dae, 0x9db1, 0x9db5, 0x9db9, 0x9dbc, + 0x9dbf, 0x9dc3, 0x9dc7, 0x9dc9, 0x9dca, 0x9dd4, 0x9dd5, 0x9dd6, + 0x9dd7, 0x9dda, 0x9dde, 0x9ddf, 0x9de0, 0x9de5, 0x9de7, 0x9de9, + 0x9deb, 0x9dee, 0x9df0, 0x9df3, 0x9df4, 0x9dfe, 0x9e0a, 0x9e02, + 0x9e07, 0x9e0e, 0x9e10, 0x9e11, 0x9e12, 0x9e15, 0x9e16, 0x9e19, + 0x9e1c, 0x9e1d, 0x9e7a, 0x9e7b, 0x9e7c, 0x9e80, 0x9e82, 0x9e83, + 0x9e84, 0x9e85, 0x9e87, 0x9e8e, 0x9e8f, 0x9e96, 0x9e98, 0x9e9b, + 0x9e9e, 0x9ea4, 0x9ea8, 0x9eac, 0x9eae, 0x9eaf, 0x9eb0, 0x9eb3, + 0x9eb4, 0x9eb5, 0x9ec6, 0x9ec8, 0x9ecb, 0x9ed5, 0x9edf, 0x9ee4, + 0x9ee7, 0x9eec, 0x9eed, 0x9eee, 0x9ef0, 0x9ef1, 0x9ef2, 0x9ef5, + 0x9ef8, 0x9eff, 0x9f02, 0x9f03, 0x9f09, 0x9f0f, 0x9f10, 0x9f11, + 0x9f12, 0x9f14, 0x9f16, 0x9f17, 0x9f19, 0x9f1a, 0x9f1b, 0x9f1f, + 0x9f22, 0x9f26, 0x9f2a, 0x9f2b, 0x9f2f, 0x9f31, 0x9f32, 0x9f34, + 0x9f37, 0x9f39, 0x9f3a, 0x9f3c, 0x9f3d, 0x9f3f, 0x9f41, 0x9f43, + 0x9f44, 0x9f45, 0x9f46, 0x9f47, 0x9f53, 0x9f55, 0x9f56, 0x9f57, + 0x9f58, 0x9f5a, 0x9f5d, 0x9f5e, 0x9f68, 0x9f69, 0x9f6d, 0x9f6e, + 0x9f6f, 0x9f70, 0x9f71, 0x9f73, 0x9f75, 0x9f7a, 0x9f7d, 0x9f8f, + 0x9f90, 0x9f91, 0x9f92, 0x9f94, 0x9f96, 0x9f97, 0x9f9e, 0x9fa1, + 0x9fa2, 0x9fa3, 0x9fa5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x2003, 0x3001, 0x3002, 0xff0c, + 0xff0e, 0x30fb, 0xff1a, 0xff1b, 0xff1f, 0xff01, 0x309b, 0x309c +}; + +static const unsigned short jis_from_unicode_0[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa237, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xa242, 0x0000, 0x0000, 0xa270, 0x0000, 0xa243, 0x2178, + 0x212f, 0xa26d, 0xa26c, 0x0000, 0x0000, 0x0000, 0xa26e, 0xa234, + 0x216b, 0x215e, 0x0000, 0x0000, 0x212d, 0x0000, 0x2279, 0x0000, + 0xa231, 0x0000, 0xa26b, 0x0000, 0x0000, 0x0000, 0x0000, 0xa244, + 0xaa22, 0xaa21, 0xaa24, 0xaa2a, 0xaa23, 0xaa29, 0xa921, 0xaa2e, + 0xaa32, 0xaa31, 0xaa34, 0xaa33, 0xaa40, 0xaa3f, 0xaa42, 0xaa41, + 0x0000, 0xaa50, 0xaa52, 0xaa51, 0xaa54, 0xaa58, 0xaa53, 0x215f, + 0xa92c, 0xaa63, 0xaa62, 0xaa65, 0xaa64, 0xaa72, 0xa930, 0xa94e, + 0xab22, 0xab21, 0xab24, 0xab2a, 0xab23, 0xab29, 0xa941, 0xab2e, + 0xab32, 0xab31, 0xab34, 0xab33, 0xab40, 0xab3f, 0xab42, 0xab41, + 0xa943, 0xab50, 0xab52, 0xab51, 0xab54, 0xab58, 0xab53, 0x2160, + 0xa94c, 0xab63, 0xab62, 0xab65, 0xab64, 0xab72, 0xa950, 0xab73 +}; + +static const unsigned short jis_from_unicode_1[] = { + 0xaa27, 0xab27, 0xaa25, 0xab25, 0xaa28, 0xab28, 0xaa2b, 0xab2b, + 0xaa2c, 0xab2c, 0xaa2f, 0xab2f, 0xaa2d, 0xab2d, 0xaa30, 0xab30, + 0xa922, 0xa942, 0xaa37, 0xab37, 0x0000, 0x0000, 0xaa36, 0xab36, + 0xaa38, 0xab38, 0xaa35, 0xab35, 0xaa3a, 0xab3a, 0xaa3b, 0xab3b, + 0xaa3d, 0xab3d, 0xaa3c, 0x0000, 0xaa3e, 0xab3e, 0xa924, 0xa944, + 0xaa47, 0xab47, 0xaa45, 0xab45, 0x0000, 0x0000, 0xaa46, 0xab46, + 0xaa44, 0xa945, 0xa926, 0xa946, 0xaa48, 0xab48, 0xaa49, 0xab49, + 0xa947, 0xaa4a, 0xab4a, 0xaa4c, 0xab4c, 0xaa4b, 0xab4b, 0xa929, + 0xa949, 0xa928, 0xa948, 0xaa4d, 0xab4d, 0xaa4f, 0xab4f, 0xaa4e, + 0xab4e, 0xa94a, 0xa92b, 0xa94b, 0xaa57, 0xab57, 0x0000, 0x0000, + 0xaa56, 0xab56, 0xa92d, 0xa94d, 0xaa59, 0xab59, 0xaa5b, 0xab5b, + 0xaa5a, 0xab5a, 0xaa5c, 0xab5c, 0xaa5d, 0xab5d, 0xaa5f, 0xab5f, + 0xaa5e, 0xab5e, 0xaa61, 0xab61, 0xaa60, 0xab60, 0xa92f, 0xa94f, + 0xaa6c, 0xab6c, 0xaa69, 0xab69, 0xaa66, 0xab66, 0xaa6b, 0xab6b, + 0xaa68, 0xab68, 0xaa6a, 0xab6a, 0xaa71, 0xab71, 0xaa74, 0xab74, + 0xaa73, 0xaa75, 0xab75, 0xaa77, 0xab77, 0xaa76, 0xab76, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xaa26, 0xab26, 0xaa43, + 0xab43, 0xaa55, 0xab55, 0xaa67, 0xab67, 0xaa70, 0xab70, 0xaa6d, + 0xab6d, 0xaa6f, 0xab6f, 0xaa6e, 0xab6e, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xab39, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short jis_from_unicode_2[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa230, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xa22f, 0xa232, 0xa236, 0xa235, 0x0000, 0xa233, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short jis_from_unicode_3[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xa238, 0xa239, 0xa661, 0x0000, + 0xa662, 0xa663, 0xa664, 0x0000, 0xa667, 0x0000, 0xa669, 0xa66c, + 0xa676, 0x2621, 0x2622, 0x2623, 0x2624, 0x2625, 0x2626, 0x2627, + 0x2628, 0x2629, 0x262a, 0x262b, 0x262c, 0x262d, 0x262e, 0x262f, + 0x2630, 0x2631, 0x0000, 0x2632, 0x2633, 0x2634, 0x2635, 0x2636, + 0x2637, 0x2638, 0xa665, 0xa66a, 0xa671, 0xa672, 0xa673, 0xa674, + 0xa67b, 0x2641, 0x2642, 0x2643, 0x2644, 0x2645, 0x2646, 0x2647, + 0x2648, 0x2649, 0x264a, 0x264b, 0x264c, 0x264d, 0x264e, 0x264f, + 0x2650, 0x2651, 0xa678, 0x2652, 0x2653, 0x2654, 0x2655, 0x2656, + 0x2657, 0x2658, 0xa675, 0xa67a, 0xa677, 0xa679, 0xa67c, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short jis_from_unicode_4[] = { + 0x0000, 0x2727, 0xa742, 0xa743, 0xa744, 0xa745, 0xa746, 0xa747, + 0xa748, 0xa749, 0xa74a, 0xa74b, 0xa74c, 0x0000, 0xa74d, 0xa74e, + 0x2721, 0x2722, 0x2723, 0x2724, 0x2725, 0x2726, 0x2728, 0x2729, + 0x272a, 0x272b, 0x272c, 0x272d, 0x272e, 0x272f, 0x2730, 0x2731, + 0x2732, 0x2733, 0x2734, 0x2735, 0x2736, 0x2737, 0x2738, 0x2739, + 0x273a, 0x273b, 0x273c, 0x273d, 0x273e, 0x273f, 0x2740, 0x2741, + 0x2751, 0x2752, 0x2753, 0x2754, 0x2755, 0x2756, 0x2758, 0x2759, + 0x275a, 0x275b, 0x275c, 0x275d, 0x275e, 0x275f, 0x2760, 0x2761, + 0x2762, 0x2763, 0x2764, 0x2765, 0x2766, 0x2767, 0x2768, 0x2769, + 0x276a, 0x276b, 0x276c, 0x276d, 0x276e, 0x276f, 0x2770, 0x2771, + 0x0000, 0x2757, 0xa772, 0xa773, 0xa774, 0xa775, 0xa776, 0xa777, + 0xa778, 0xa779, 0xa77a, 0xa77b, 0xa77c, 0x0000, 0xa77d, 0xa77e, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short jis_from_unicode_20[] = { + 0x0000, 0x0000, 0x0000, 0x2121, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x213e, 0x0000, 0x0000, 0x0000, 0x0000, 0x213d, 0x2142, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x2277, 0x2278, 0x0000, 0x0000, 0x0000, 0x2145, 0x2144, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x2273, 0x0000, 0x216c, 0x216d, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x2228, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short jis_from_unicode_21[] = { + 0x0000, 0x0000, 0x0000, 0x216e, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa271, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xa26f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x2272, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x222b, 0x222c, 0x222a, 0x222d, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x224d, 0x0000, 0x224e, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short jis_from_unicode_22[] = { + 0x224f, 0x0000, 0x225f, 0x2250, 0x0000, 0x0000, 0x0000, 0x2260, + 0x223a, 0x0000, 0x0000, 0x223b, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x215d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x2265, 0x0000, 0x0000, 0x2267, 0x2167, 0x0000, + 0x225c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x224a, + 0x224b, 0x2241, 0x2240, 0x2269, 0x226a, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x2168, 0x2268, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2266, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x2262, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x2162, 0x2261, 0x0000, 0x0000, 0x0000, 0x0000, 0x2165, 0x2166, + 0x0000, 0x0000, 0x2263, 0x2264, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x223e, 0x223f, 0x0000, 0x0000, 0x223c, 0x223d, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x225d, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short jis_from_unicode_23[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x225e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short jis_from_unicode_25[] = { + 0x2821, 0x282c, 0x2822, 0x282d, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x2823, 0x0000, 0x0000, 0x282e, + 0x2824, 0x0000, 0x0000, 0x282f, 0x2826, 0x0000, 0x0000, 0x2831, + 0x2825, 0x0000, 0x0000, 0x2830, 0x2827, 0x283c, 0x0000, 0x0000, + 0x2837, 0x0000, 0x0000, 0x2832, 0x2829, 0x283e, 0x0000, 0x0000, + 0x2839, 0x0000, 0x0000, 0x2834, 0x2828, 0x0000, 0x0000, 0x2838, + 0x283d, 0x0000, 0x0000, 0x2833, 0x282a, 0x0000, 0x0000, 0x283a, + 0x283f, 0x0000, 0x0000, 0x2835, 0x282b, 0x0000, 0x0000, 0x283b, + 0x0000, 0x0000, 0x2840, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x2836, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x2223, 0x2222, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x2225, 0x2224, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x2227, 0x2226, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2221, 0x217e, + 0x0000, 0x0000, 0x0000, 0x217b, 0x0000, 0x0000, 0x217d, 0x217c, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x227e, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short jis_from_unicode_26[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x217a, 0x2179, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x216a, 0x0000, 0x2169, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x2276, 0x0000, 0x0000, 0x2275, 0x0000, 0x2274, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short jis_from_unicode_30[] = { + 0x0000, 0x2122, 0x2123, 0x2137, 0x0000, 0x2139, 0x213a, 0x213b, + 0x2152, 0x2153, 0x2154, 0x2155, 0x2156, 0x2157, 0x2158, 0x2159, + 0x215a, 0x215b, 0x2229, 0x222e, 0x214c, 0x214d, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x2141, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x2421, 0x2422, 0x2423, 0x2424, 0x2425, 0x2426, 0x2427, + 0x2428, 0x2429, 0x242a, 0x242b, 0x242c, 0x242d, 0x242e, 0x242f, + 0x2430, 0x2431, 0x2432, 0x2433, 0x2434, 0x2435, 0x2436, 0x2437, + 0x2438, 0x2439, 0x243a, 0x243b, 0x243c, 0x243d, 0x243e, 0x243f, + 0x2440, 0x2441, 0x2442, 0x2443, 0x2444, 0x2445, 0x2446, 0x2447, + 0x2448, 0x2449, 0x244a, 0x244b, 0x244c, 0x244d, 0x244e, 0x244f, + 0x2450, 0x2451, 0x2452, 0x2453, 0x2454, 0x2455, 0x2456, 0x2457, + 0x2458, 0x2459, 0x245a, 0x245b, 0x245c, 0x245d, 0x245e, 0x245f, + 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, + 0x2468, 0x2469, 0x246a, 0x246b, 0x246c, 0x246d, 0x246e, 0x246f, + 0x2470, 0x2471, 0x2472, 0x2473, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x212b, 0x212c, 0x2135, 0x2136, 0x0000, + 0x0000, 0x2521, 0x2522, 0x2523, 0x2524, 0x2525, 0x2526, 0x2527, + 0x2528, 0x2529, 0x252a, 0x252b, 0x252c, 0x252d, 0x252e, 0x252f, + 0x2530, 0x2531, 0x2532, 0x2533, 0x2534, 0x2535, 0x2536, 0x2537, + 0x2538, 0x2539, 0x253a, 0x253b, 0x253c, 0x253d, 0x253e, 0x253f, + 0x2540, 0x2541, 0x2542, 0x2543, 0x2544, 0x2545, 0x2546, 0x2547, + 0x2548, 0x2549, 0x254a, 0x254b, 0x254c, 0x254d, 0x254e, 0x254f, + 0x2550, 0x2551, 0x2552, 0x2553, 0x2554, 0x2555, 0x2556, 0x2557, + 0x2558, 0x2559, 0x255a, 0x255b, 0x255c, 0x255d, 0x255e, 0x255f, + 0x2560, 0x2561, 0x2562, 0x2563, 0x2564, 0x2565, 0x2566, 0x2567, + 0x2568, 0x2569, 0x256a, 0x256b, 0x256c, 0x256d, 0x256e, 0x256f, + 0x2570, 0x2571, 0x2572, 0x2573, 0x2574, 0x2575, 0x2576, 0x0000, + 0x0000, 0x0000, 0x0000, 0x2126, 0x213c, 0x2133, 0x2134, 0x0000 +}; + +static const unsigned short jis_from_unicode_4e[] = { + 0x306c, 0x437a, 0xb021, 0x3c37, 0xb022, 0xb023, 0x0000, 0x4b7c, + 0x3e66, 0x3b30, 0x3e65, 0x323c, 0xb024, 0x4954, 0x4d3f, 0x0000, + 0x5022, 0x312f, 0xb025, 0x0000, 0x336e, 0x5023, 0x4024, 0x5242, + 0x3556, 0x4a3a, 0x0000, 0x0000, 0x0000, 0x0000, 0x3e67, 0xb026, + 0x0000, 0x4e3e, 0x0000, 0xb027, 0xb028, 0x0000, 0x4a42, 0x0000, + 0xb029, 0x0000, 0x5024, 0xb02a, 0x0000, 0x4366, 0xb02b, 0xb02c, + 0xb02d, 0x5025, 0x367a, 0x0000, 0x0000, 0xb02e, 0x5026, 0x0000, + 0x345d, 0x4330, 0x0000, 0x3c67, 0x5027, 0x0000, 0x0000, 0x5028, + 0xb02f, 0xb030, 0x5029, 0x4735, 0xb031, 0x3557, 0x0000, 0xb032, + 0x0000, 0x0000, 0x0000, 0x4737, 0x0000, 0x4663, 0x3843, 0x4b33, + 0x0000, 0xb033, 0x0000, 0x0000, 0x0000, 0x6949, 0x502a, 0x3e68, + 0x502b, 0x3235, 0xb034, 0x0000, 0xb035, 0x3665, 0x3870, 0x4c69, + 0x0000, 0x0000, 0x5626, 0xb036, 0x0000, 0x0000, 0x0000, 0x0000, + 0xb037, 0xb038, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x4d70, 0x0000, 0x467d, 0xb039, 0xb03a, 0x0000, 0x0000, + 0x0000, 0xb03b, 0x0000, 0x0000, 0x0000, 0x0000, 0x3425, 0xb03c, + 0x3535, 0x0000, 0x502c, 0x0000, 0x0000, 0x502d, 0x4e3b, 0x0000, + 0x4d3d, 0x4168, 0x502f, 0x3b76, 0x4673, 0xb03d, 0x5032, 0x0000, + 0x0000, 0x313e, 0x385f, 0x0000, 0x385e, 0x3066, 0xb03e, 0xb03f, + 0x4f4b, 0x4f4a, 0x0000, 0x3a33, 0x3021, 0xb040, 0x5033, 0x5034, + 0x5035, 0x4b34, 0x5036, 0x0000, 0x3872, 0x3067, 0x4b72, 0x0000, + 0x357c, 0x0000, 0x0000, 0x357d, 0x357e, 0x4462, 0x4e3c, 0xb041, + 0x5037, 0x0000, 0x0000, 0x5038, 0x0000, 0x0000, 0x5039, 0x0000, + 0x0000, 0xb042, 0x3f4d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3d3a, 0x3f4e, 0x503e, 0xb043, 0x503c, 0x0000, 0x503d, 0x3558, + 0x0000, 0x0000, 0x3a23, 0x3270, 0x0000, 0x503b, 0x503a, 0x4a29, + 0xb044, 0x0000, 0x0000, 0x0000, 0x3b46, 0x3b45, 0x423e, 0x503f, + 0x4955, 0x4067, 0xb045, 0xb046, 0x0000, 0x2138, 0x5040, 0x5042, + 0xb047, 0xb048, 0xb049, 0x4265, 0x4e61, 0x304a, 0x0000, 0x0000, + 0xb04a, 0x0000, 0x0000, 0x0000, 0x0000, 0x5041, 0x323e, 0xb04b, + 0x3644, 0xb04c, 0x4367, 0xb04d, 0x0000, 0xb04e, 0x376f, 0x5043, + 0x0000, 0x0000, 0x0000, 0x4724, 0x0000, 0xb04f, 0xb050, 0xb051 +}; + +static const unsigned short jis_from_unicode_4f[] = { + 0xb052, 0x346b, 0xb053, 0xb054, 0x0000, 0x0000, 0x0000, 0x0000, + 0xb055, 0x5044, 0x304b, 0xb056, 0xb057, 0x3860, 0x346c, 0x497a, + 0x4832, 0x3559, 0xb058, 0x0000, 0x0000, 0xb059, 0xb05a, 0xb05b, + 0x0000, 0xb05c, 0x3271, 0x0000, 0x5067, 0x4541, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xb05d, 0x476c, + 0x5046, 0xb05e, 0x0000, 0xb060, 0x483c, 0xb061, 0x4e62, 0xb062, + 0x3f2d, 0xb063, 0x3b47, 0xb064, 0x3b77, 0x3240, 0xb065, 0x0000, + 0xb066, 0x0000, 0xb067, 0x4451, 0x0000, 0x0000, 0x4322, 0x504a, + 0xb068, 0xb069, 0x0000, 0xb06a, 0xb06b, 0x304c, 0x4463, 0x3d3b, + 0x3a34, 0x4d24, 0xb06c, 0x424e, 0xb06d, 0x323f, 0xb06e, 0x5049, + 0xb06f, 0x4d3e, 0x5045, 0x5047, 0x3a6e, 0x5048, 0x5524, 0xb070, + 0xb05f, 0x0000, 0x0000, 0xb071, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5050, 0xb072, 0x0000, 0xb073, 0x0000, 0xb074, 0x5053, + 0x5051, 0xb075, 0x0000, 0x3242, 0x0000, 0x4a3b, 0x504b, 0xb076, + 0xb077, 0xb078, 0xb079, 0x504f, 0x3873, 0xb07a, 0xb07b, 0x3b48, + 0x0000, 0xb07c, 0xb07d, 0x3426, 0xb07e, 0xb121, 0x5054, 0x0000, + 0x504c, 0xb122, 0xb123, 0x4e63, 0xb124, 0x3b78, 0xb125, 0x504d, + 0xb126, 0x5052, 0xb127, 0xb128, 0xb129, 0x0000, 0x5055, 0xb12a, + 0x504e, 0xb12b, 0xb12c, 0x3621, 0x0000, 0x304d, 0xb12d, 0xb12e, + 0x3622, 0x3241, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x5525, 0x0000, 0x4b79, 0x496e, 0x3874, + 0x0000, 0x0000, 0xb12f, 0x0000, 0x0000, 0x3f2f, 0x4e37, 0xb130, + 0x0000, 0xb131, 0x0000, 0xb132, 0xb133, 0xb134, 0xb135, 0x4a58, + 0xb136, 0xb137, 0x3738, 0x4225, 0x3264, 0xb138, 0xb139, 0x0000, + 0xb13a, 0xb13b, 0x3d53, 0xb13c, 0xb13d, 0xb13e, 0x5059, 0xb13f, + 0x505e, 0x505c, 0xb140, 0x0000, 0x5057, 0x0000, 0x0000, 0x422f, + 0x505a, 0x0000, 0x505d, 0x505b, 0xb141, 0x4a5d, 0x0000, 0x5058, + 0xb142, 0x3f2e, 0xb143, 0x4b73, 0x505f, 0x5060, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3d24, 0x506d, + 0xb144, 0x0000, 0xb145, 0x4750, 0x0000, 0x4936, 0x5068, 0x0000, + 0x4a70, 0x0000, 0x3236, 0x0000, 0xb146, 0xb147, 0x506c, 0xb148 +}; + +static const unsigned short jis_from_unicode_50[] = { + 0xb149, 0xb14a, 0x0000, 0x0000, 0xb14b, 0x5066, 0x506f, 0xb14c, + 0x0000, 0x4152, 0xb14d, 0x3844, 0xb14e, 0x475c, 0xb14f, 0x6047, + 0xb150, 0x506e, 0x455d, 0xb151, 0x5063, 0x0000, 0x3876, 0xb152, + 0xb153, 0x3875, 0x5061, 0xb154, 0xb155, 0xb156, 0xb157, 0x3c5a, + 0x0000, 0x5069, 0xb158, 0x4a6f, 0x434d, 0x5065, 0x3771, 0xb159, + 0x5062, 0x506a, 0x5064, 0x4e51, 0x506b, 0x4f41, 0xb15a, 0x0000, + 0xb15b, 0x0000, 0xb15c, 0xb15d, 0x0000, 0xb15e, 0x3666, 0x0000, + 0x0000, 0x3770, 0x0000, 0xb176, 0x0000, 0x0000, 0x0000, 0x0000, + 0xb15f, 0xb160, 0xb161, 0x5070, 0x0000, 0xb162, 0xb163, 0x5071, + 0x5075, 0x304e, 0xb164, 0x0000, 0xb165, 0x0000, 0xb166, 0x4a50, + 0x5074, 0xb167, 0xb168, 0xb169, 0x0000, 0x5073, 0x5077, 0xb16a, + 0x0000, 0xb16b, 0x5076, 0x0000, 0x4464, 0x0000, 0x0000, 0xb16c, + 0xb16d, 0x0000, 0xb16e, 0xb16f, 0x0000, 0x3772, 0xb170, 0xb171, + 0x0000, 0x0000, 0xb172, 0x0000, 0x5078, 0xb173, 0x0000, 0x0000, + 0xb174, 0xb175, 0x3c45, 0x0000, 0x4226, 0x4465, 0x3676, 0x0000, + 0x5079, 0x0000, 0x0000, 0x0000, 0x0000, 0x3536, 0x0000, 0x0000, + 0x507a, 0xb177, 0x0000, 0xb178, 0xb179, 0x507c, 0xb17a, 0x0000, + 0x0000, 0x0000, 0xb17b, 0x0000, 0x0000, 0x4b35, 0xb17c, 0xb17d, + 0xb17e, 0x3766, 0xb221, 0xb222, 0xb223, 0x0000, 0xb224, 0x0000, + 0x3b31, 0x4877, 0x507b, 0xb225, 0xb226, 0x0000, 0xb227, 0xb228, + 0xb229, 0xb22a, 0xb22b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xb22c, 0x0000, 0x3a45, 0x4d43, 0x0000, 0xb22d, + 0xb22e, 0x0000, 0x507e, 0x5123, 0x507d, 0x3a44, 0x0000, 0x3d7d, + 0x0000, 0xb22f, 0xb230, 0x0000, 0x0000, 0xb231, 0x3739, 0x0000, + 0xb232, 0x0000, 0x5124, 0xb233, 0xb234, 0x364f, 0x0000, 0xb235, + 0x0000, 0x5121, 0x5122, 0x0000, 0xb236, 0x462f, 0xb237, 0x417c, + 0xb238, 0x3623, 0x0000, 0xb239, 0xb23a, 0x4b4d, 0x5125, 0x0000, + 0xb23b, 0x0000, 0x4e3d, 0x0000, 0xb23c, 0xb23d, 0x5126, 0xb23e, + 0x0000, 0x0000, 0xb23f, 0x5129, 0xb240, 0x5127, 0xb241, 0x414e, + 0xb242, 0xb243, 0x0000, 0x0000, 0x0000, 0x5128, 0x512a, 0xb244, + 0x0000, 0xb245, 0xb251, 0x0000, 0x0000, 0x512c, 0xb246, 0x0000, + 0x0000, 0x512b, 0xb247, 0x4a48, 0x0000, 0x0000, 0xb248, 0x0000 +}; + +static const unsigned short jis_from_unicode_51[] = { + 0x3537, 0x512e, 0x512f, 0xb249, 0x322f, 0x0000, 0xb24a, 0xb24b, + 0xb24c, 0x512d, 0x0000, 0xb24d, 0xb24e, 0xb24f, 0xb250, 0x0000, + 0xb252, 0x0000, 0x3c74, 0x0000, 0x5132, 0x5131, 0x5130, 0xb253, + 0x5056, 0xb254, 0x5133, 0xb255, 0xb256, 0xb257, 0xb258, 0x3d7e, + 0x0000, 0x5134, 0x0000, 0xb259, 0x0000, 0x0000, 0x0000, 0xb25a, + 0xb25b, 0x0000, 0x4d25, 0x0000, 0xb25c, 0xb25d, 0x0000, 0xb25e, + 0x0000, 0xb25f, 0x4c59, 0xb260, 0xb261, 0xb262, 0x0000, 0x5136, + 0xb263, 0xb264, 0x5135, 0x5138, 0x5137, 0x0000, 0x0000, 0x5139, + 0x513a, 0x3074, 0xb265, 0x3835, 0x373b, 0x3d3c, 0x437b, 0x3624, + 0x4068, 0x3877, 0xb266, 0x396e, 0x513c, 0x4c48, 0x4546, 0xb267, + 0x3b79, 0x0000, 0x513b, 0xb268, 0x513d, 0xb269, 0x0000, 0xb26a, + 0xb26b, 0x0000, 0x455e, 0x0000, 0x3375, 0x0000, 0x0000, 0xb26c, + 0x0000, 0x0000, 0x513e, 0x0000, 0xb26d, 0x467e, 0xb26e, 0x0000, + 0x4134, 0x5140, 0x5141, 0x482c, 0x3878, 0x4f3b, 0x5142, 0x0000, + 0x0000, 0x3626, 0x0000, 0x0000, 0x0000, 0x4a3c, 0x4236, 0x3671, + 0x4535, 0x0000, 0x0000, 0x0000, 0x3773, 0x0000, 0xb26f, 0x0000, + 0x5143, 0x0000, 0x5144, 0xb270, 0xb271, 0x4662, 0x315f, 0x0000, + 0x0000, 0x5147, 0x3a7d, 0xb272, 0x5146, 0x3a46, 0xb273, 0x5148, + 0x666e, 0x5149, 0x4b41, 0x514a, 0x0000, 0x514b, 0x514c, 0x3e69, + 0xb274, 0x3c4c, 0x0000, 0x0000, 0x0000, 0xb275, 0x0000, 0x0000, + 0x3427, 0xb276, 0x514f, 0xb277, 0x514d, 0x4c3d, 0x514e, 0x0000, + 0x495a, 0x5150, 0x5151, 0x5152, 0x455f, 0xb278, 0x0000, 0x0000, + 0x5156, 0x5154, 0x5155, 0x5153, 0x3a63, 0x5157, 0x4c6a, 0x4e64, + 0xb279, 0x0000, 0xb27a, 0x0000, 0xb27b, 0x5158, 0xb27c, 0xb27d, + 0x0000, 0x0000, 0xb27e, 0x0000, 0x4028, 0x5159, 0x3d5a, 0x0000, + 0xb321, 0x515a, 0x0000, 0x437c, 0x4e3f, 0x4560, 0x0000, 0xb322, + 0x0000, 0xb323, 0xb324, 0xb325, 0x0000, 0xb326, 0x5245, 0x0000, + 0xb327, 0x0000, 0x0000, 0x515b, 0x7425, 0x3645, 0xb328, 0x0000, + 0x515c, 0x4b5e, 0xb329, 0x0000, 0x0000, 0xb32a, 0x3d68, 0x427c, + 0x0000, 0x515e, 0x4664, 0x0000, 0x0000, 0x515f, 0xb32b, 0x0000, + 0x5160, 0x332e, 0xb32c, 0xb32d, 0xb32e, 0x5161, 0x3627, 0xb32f, + 0x464c, 0x317a, 0x3d50, 0x0000, 0x0000, 0x4821, 0x5162, 0x0000 +}; + +static const unsigned short jis_from_unicode_52[] = { + 0x4561, 0xb330, 0xb331, 0x3f4f, 0x5163, 0xb332, 0x4a2c, 0x405a, + 0x3422, 0x0000, 0x3429, 0x5164, 0x0000, 0x0000, 0x5166, 0x0000, + 0x0000, 0x373a, 0xb333, 0xb334, 0x5165, 0xb335, 0xb336, 0x4e73, + 0xb337, 0x0000, 0x0000, 0x0000, 0x0000, 0x3d69, 0x0000, 0x0000, + 0x0000, 0x0000, 0xb338, 0x0000, 0x483d, 0x4a4c, 0x0000, 0x5167, + 0xb339, 0x4d78, 0x5168, 0x0000, 0x0000, 0x0000, 0x5169, 0x0000, + 0x457e, 0xb33a, 0xb33b, 0x516a, 0x0000, 0xb33c, 0x4029, 0x3a7e, + 0x3774, 0x516b, 0x3b49, 0x396f, 0xb33d, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x4466, 0x516d, 0xb33e, 0x0000, 0x4227, + 0x0000, 0xb33f, 0x3a6f, 0x516e, 0x516f, 0x4130, 0x0000, 0x516c, + 0x0000, 0x0000, 0x0000, 0x0000, 0x5171, 0xb340, 0x4b36, 0xb341, + 0xb342, 0x0000, 0xb343, 0x3964, 0xb344, 0x0000, 0x5170, 0xb345, + 0xb346, 0xb347, 0x0000, 0x3775, 0x3a5e, 0x476d, 0xb348, 0x0000, + 0x0000, 0x5174, 0x5172, 0x0000, 0x0000, 0x0000, 0xb349, 0x497b, + 0x3e6a, 0x517b, 0x3364, 0x5175, 0x5173, 0x414f, 0x0000, 0xb34a, + 0xb34b, 0xb34c, 0x0000, 0x0000, 0x0000, 0x5177, 0x0000, 0x5176, + 0xb34d, 0x0000, 0xb34e, 0x3344, 0x0000, 0xb34f, 0x0000, 0x3760, + 0x517c, 0x4e2d, 0xb350, 0x0000, 0xb351, 0x5178, 0x0000, 0x0000, + 0x0000, 0x517d, 0x517a, 0xb352, 0x5179, 0xb353, 0xb354, 0xb355, + 0xb356, 0x0000, 0xb357, 0x4e4f, 0xb358, 0x0000, 0x0000, 0x3879, + 0x3243, 0x0000, 0x0000, 0x4e74, 0xb359, 0xb35a, 0xb35b, 0xb35c, + 0x0000, 0x3d75, 0x4558, 0x3965, 0x5222, 0x5223, 0x0000, 0xb35d, + 0xb35e, 0x4e65, 0x0000, 0x0000, 0x4f2b, 0x5225, 0xb35f, 0xb360, + 0xb361, 0x387a, 0xb362, 0xb363, 0x5224, 0xb364, 0x332f, 0x0000, + 0xb365, 0x5226, 0x0000, 0x4b56, 0xb366, 0x443c, 0xb367, 0x4d26, + 0xb368, 0x4a59, 0x0000, 0x0000, 0xb369, 0x5227, 0x0000, 0xb36a, + 0x0000, 0xb36b, 0x7055, 0x0000, 0xb36c, 0x4630, 0xb36d, 0x5228, + 0x342a, 0x4c33, 0x0000, 0xb36e, 0xb36f, 0x3e21, 0x5229, 0x4a67, + 0x522d, 0xb370, 0x402a, 0x522a, 0x3650, 0xb371, 0x522b, 0x342b, + 0xb372, 0xb373, 0xb374, 0x0000, 0xb375, 0x0000, 0x0000, 0x0000, + 0xb376, 0xb377, 0x372e, 0x522e, 0xb378, 0x522f, 0xb379, 0xb37a, + 0x5230, 0x5231, 0x3c5b, 0x0000, 0x0000, 0x0000, 0x387b, 0x4c5e +}; + +static const unsigned short jis_from_unicode_53[] = { + 0xb37b, 0x4c68, 0x4677, 0xb37c, 0x0000, 0x4a71, 0x5232, 0x0000, + 0x5233, 0x0000, 0xb37d, 0xb37e, 0xb421, 0x5235, 0x0000, 0x5237, + 0x5236, 0xb422, 0x0000, 0xb423, 0x0000, 0x5238, 0x323d, 0x4b4c, + 0xb424, 0x3a7c, 0x5239, 0xb425, 0xb426, 0x4159, 0xb427, 0xb428, + 0x3e22, 0x3629, 0x0000, 0x523a, 0x0000, 0xb429, 0x0000, 0xb42a, + 0xb42b, 0xb42c, 0x485b, 0xb42d, 0xb42e, 0xb42f, 0x0000, 0x523b, + 0xb430, 0x523c, 0xb431, 0x523d, 0x0000, 0xb432, 0x0000, 0x0000, + 0x523e, 0x4924, 0x3668, 0x3065, 0xb433, 0xb434, 0xb435, 0x463f, + 0x523f, 0x3d3d, 0xb436, 0x4069, 0x0000, 0x5241, 0x5240, 0x3e23, + 0x3861, 0x5243, 0x483e, 0xb438, 0xb437, 0x5244, 0x0000, 0x0000, + 0x0000, 0x485c, 0x4234, 0x426e, 0x3628, 0x0000, 0x0000, 0x466e, + 0x4331, 0xb439, 0x476e, 0xb43a, 0x4b4e, 0x0000, 0x5246, 0x0000, + 0x406a, 0xb43b, 0x0000, 0xb43c, 0x0000, 0xb43d, 0x3735, 0x0000, + 0x0000, 0x5247, 0x0000, 0x0000, 0xb43e, 0xb43f, 0x5248, 0x312c, + 0x3075, 0x346d, 0xb440, 0x4228, 0x3551, 0x4d71, 0x0000, 0x524b, + 0x3237, 0xb441, 0x0000, 0x524a, 0x0000, 0x0000, 0xb442, 0x362a, + 0x0000, 0x0000, 0x524c, 0xb443, 0x4c71, 0x0000, 0x0000, 0xb444, + 0xb445, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xb446, 0x0000, + 0x0000, 0x0000, 0x0000, 0xb447, 0xb448, 0x0000, 0x524d, 0x0000, + 0x4e52, 0xb449, 0x387c, 0x0000, 0x0000, 0xb44a, 0x0000, 0x3836, + 0x524e, 0xb44b, 0x0000, 0x0000, 0xb44c, 0x5250, 0x524f, 0x0000, + 0x3f5f, 0x3139, 0xb44d, 0xb44e, 0x0000, 0x315e, 0x5251, 0xb44f, + 0x5252, 0x0000, 0xb450, 0x3837, 0xb451, 0xb452, 0x5253, 0xb453, + 0xb454, 0x0000, 0xb455, 0x356e, 0x0000, 0xb456, 0x0000, 0x0000, + 0xb457, 0x0000, 0x3b32, 0x5254, 0x0000, 0xb458, 0x0000, 0x0000, + 0x4b74, 0x3a35, 0x355a, 0x4d27, 0x4150, 0x483f, 0x3c7d, 0xb459, + 0x0000, 0x0000, 0xb45a, 0xb45b, 0x3d47, 0xb45c, 0x3c68, 0x3c75, + 0x0000, 0x3d76, 0xb45d, 0x4840, 0x0000, 0xb45e, 0xb45f, 0x5257, + 0xb460, 0x3143, 0x4151, 0x387d, 0x3845, 0x3667, 0xb461, 0xb462, + 0x525b, 0x4321, 0x427e, 0x362b, 0x3e24, 0x525c, 0x525a, 0x3244, + 0x4266, 0x3c38, 0x3b4b, 0x3126, 0x0000, 0xb463, 0x3370, 0x3966, + 0x3b4a, 0x0000, 0x525d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short jis_from_unicode_54[] = { + 0x0000, 0x525e, 0xb464, 0x3549, 0x3346, 0x0000, 0x0000, 0x0000, + 0x3967, 0x3548, 0x445f, 0x3125, 0x4631, 0x4c3e, 0x3921, 0x4d79, + 0x4547, 0x387e, 0x0000, 0xb465, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xb466, 0x372f, 0x0000, 0x5267, 0x0000, 0x3663, + 0x4b4a, 0xb467, 0x0000, 0x0000, 0x0000, 0x0000, 0x485d, 0xb468, + 0xb469, 0x5266, 0xb46a, 0x345e, 0x5261, 0x5262, 0x5264, 0xb46b, + 0x0000, 0xb46c, 0x0000, 0x0000, 0xb46d, 0xb46e, 0x5265, 0x0000, + 0x355b, 0x3f61, 0x0000, 0x4a2d, 0x5263, 0x525f, 0x3863, 0x0000, + 0x5260, 0x0000, 0x4f24, 0xb46f, 0xb470, 0x0000, 0x4a72, 0xb471, + 0x4468, 0x3862, 0x3970, 0x0000, 0x0000, 0xb472, 0x5268, 0xb473, + 0x0000, 0x465d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xb474, 0x526c, + 0x0000, 0x0000, 0xb475, 0x0000, 0xb476, 0x0000, 0xb477, 0xb478, + 0x3c7e, 0xb479, 0x3c76, 0xb47a, 0x0000, 0xb47b, 0xb47c, 0x0000, + 0x526f, 0x526d, 0x0000, 0x4c23, 0xb47d, 0x526a, 0x5273, 0x526e, + 0x0000, 0x0000, 0x0000, 0x5271, 0x3846, 0x4c3f, 0x0000, 0xb47e, + 0x5272, 0xb521, 0x0000, 0xb522, 0x5274, 0xb523, 0x5276, 0x0000, + 0xb524, 0xb525, 0x0000, 0x3a70, 0x4f42, 0xb526, 0x526b, 0x5269, + 0x5275, 0xb527, 0x5270, 0x0000, 0x0000, 0xb528, 0xb529, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xb52a, 0x0000, 0x0000, 0xb52b, + 0x0000, 0xb52c, 0x5278, 0x0000, 0x5323, 0x527a, 0xb52d, 0xb52e, + 0x527e, 0xb52f, 0xb530, 0x5321, 0x527b, 0xb531, 0xb532, 0x533e, + 0x0000, 0xb533, 0x3a69, 0x3331, 0x0000, 0x0000, 0x0000, 0xb534, + 0x5279, 0xb535, 0xb536, 0xb537, 0x5325, 0x3076, 0x5324, 0xb538, + 0x3025, 0x494a, 0x5322, 0x0000, 0x527c, 0x0000, 0xb539, 0x5277, + 0x527d, 0x3a48, 0xb53a, 0x0000, 0x0000, 0xb53b, 0xb53c, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5326, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xb53d, 0x3077, 0x532f, 0x0000, 0x0000, 0x5327, 0x5328, 0x0000, + 0x3e25, 0x4b69, 0xb53e, 0x0000, 0xb53f, 0x532d, 0x532c, 0xb540, + 0x0000, 0x0000, 0x452f, 0x0000, 0x0000, 0x0000, 0xb541, 0x0000, + 0x0000, 0x0000, 0x532e, 0x0000, 0xb542, 0x532b, 0xb543, 0xb544 +}; + +static const unsigned short jis_from_unicode_55[] = { + 0xb545, 0xb546, 0x0000, 0x0000, 0x3134, 0xb547, 0x3a36, 0x3f30, + 0xb548, 0xb549, 0x0000, 0x0000, 0xb54a, 0xb54b, 0xb54c, 0x5329, + 0x4562, 0x0000, 0x0000, 0x0000, 0x532a, 0xb54d, 0x3022, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xb54e, 0xb54f, 0x0000, 0x0000, 0x5334, 0x4d23, + 0x0000, 0x3e27, 0xb550, 0x533a, 0x0000, 0xb551, 0xb552, 0x0000, + 0x5339, 0x5330, 0x0000, 0xb553, 0xb554, 0xb555, 0x4243, 0x0000, + 0x5331, 0xb556, 0x0000, 0x0000, 0x426f, 0x5336, 0x3e26, 0xb557, + 0x0000, 0xb558, 0xb559, 0x0000, 0x5333, 0xb55a, 0x0000, 0x4c64, + 0xb55b, 0xb55c, 0x0000, 0x373c, 0x0000, 0x0000, 0x5337, 0x5338, + 0xb55d, 0x0000, 0xb55e, 0xb55f, 0x5335, 0x533b, 0xb560, 0x0000, + 0xb561, 0xb562, 0x0000, 0x5332, 0xb563, 0x0000, 0xb564, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x5341, 0x5346, 0x0000, 0x5342, 0xb565, + 0x533d, 0xb566, 0xb567, 0x5347, 0x4131, 0x0000, 0xb568, 0x5349, + 0xb569, 0x3922, 0x533f, 0x437d, 0x0000, 0x0000, 0xb56a, 0xb56b, + 0x0000, 0xb56c, 0xb56d, 0xb56e, 0xb56f, 0x0000, 0x0000, 0xb570, + 0x5343, 0x533c, 0x342d, 0x0000, 0x346e, 0x3365, 0x5344, 0x5340, + 0x0000, 0x0000, 0x0000, 0xb571, 0xb572, 0x0000, 0x0000, 0x3776, + 0x534a, 0x5348, 0x4153, 0x354a, 0x362c, 0xb573, 0x5345, 0x0000, + 0x3674, 0x0000, 0xb574, 0x0000, 0x0000, 0x0000, 0x3144, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xb575, + 0x0000, 0xb576, 0x0000, 0xb577, 0x534e, 0x534c, 0xb578, 0x5427, + 0x0000, 0xb579, 0x0000, 0xb57a, 0xb57b, 0x0000, 0xb57c, 0x0000, + 0x0000, 0xb57d, 0xb57e, 0xb621, 0x5351, 0x0000, 0x0000, 0xb622, + 0xb623, 0x0000, 0x534b, 0xb624, 0x534f, 0x0000, 0xb625, 0x534d, + 0x0000, 0x0000, 0xb626, 0x3b4c, 0x5350, 0x0000, 0x0000, 0x0000, + 0x0000, 0xb627, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xb628, 0x5353, + 0x0000, 0x5358, 0x0000, 0x0000, 0x0000, 0x5356, 0x5355, 0xb629 +}; + +static const unsigned short jis_from_unicode_56[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xb62a, 0x4332, 0x0000, + 0xb62b, 0x3245, 0xb62c, 0x0000, 0x0000, 0xb62d, 0xb62e, 0xb62f, + 0xb630, 0xb631, 0xb632, 0x0000, 0x5352, 0x0000, 0x5354, 0x3e28, + 0x3133, 0xb633, 0x0000, 0x5357, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x325e, 0x0000, 0x0000, 0xb634, 0x0000, 0x0000, 0x5362, + 0xb635, 0x3e7c, 0x535e, 0xb636, 0x535c, 0xb637, 0x535d, 0xb638, + 0x535f, 0xb639, 0x0000, 0xb63a, 0xb63b, 0xb63c, 0x0000, 0xb63d, + 0xb63e, 0xb63f, 0x313d, 0xb640, 0xb641, 0x0000, 0xb642, 0x0000, + 0x0000, 0xb643, 0x0000, 0xb644, 0x4139, 0xb645, 0x5359, 0xb646, + 0x535a, 0x0000, 0x0000, 0x0000, 0xb647, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x337a, 0x0000, 0x0000, 0xb648, 0x0000, + 0xb649, 0xb64a, 0xb64b, 0xb64c, 0x5361, 0x0000, 0xb64d, 0x0000, + 0x346f, 0xb64e, 0x5364, 0x5360, 0x5363, 0xb64f, 0x0000, 0xb650, + 0x0000, 0xb651, 0xb652, 0x0000, 0x4a2e, 0xb653, 0x0000, 0x0000, + 0x4655, 0x0000, 0x4838, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5366, 0x0000, 0x0000, 0x0000, 0xb654, 0xb655, 0x5365, 0x3345, + 0xb656, 0x0000, 0x5367, 0xb657, 0xb658, 0x0000, 0x0000, 0x536a, + 0x0000, 0x0000, 0x0000, 0x0000, 0x5369, 0xb659, 0x0000, 0x0000, + 0x0000, 0xb65a, 0xb65b, 0x0000, 0x0000, 0xb65c, 0xb65d, 0xb65e, + 0x5368, 0x0000, 0x4739, 0x0000, 0x0000, 0x536b, 0xb65f, 0xb660, + 0xb661, 0xb662, 0x0000, 0xb663, 0xb664, 0xb665, 0x536c, 0x0000, + 0x0000, 0xb666, 0x0000, 0xb667, 0x536e, 0x0000, 0x536d, 0xb668, + 0x0000, 0x0000, 0x0000, 0x0000, 0x5370, 0x0000, 0xb669, 0x0000, + 0x5373, 0x5371, 0x536f, 0x5372, 0x0000, 0xb66a, 0x0000, 0x0000, + 0x5374, 0xb66b, 0xb66c, 0xb66d, 0xb670, 0xb671, 0x5375, 0xb66e, + 0xb66f, 0x5376, 0x0000, 0x5377, 0x0000, 0x0000, 0x0000, 0x5378, + 0x5145, 0xb672, 0x3c7c, 0x3b4d, 0xb673, 0xb674, 0x3273, 0xb675, + 0x3078, 0xb676, 0x0000, 0x4344, 0xb677, 0xb678, 0xb679, 0xb67a, + 0xb67b, 0x0000, 0x0000, 0xb67d, 0x0000, 0xb67e, 0x5379, 0x0000, + 0x3a24, 0xb67c, 0x304f, 0x3f5e, 0x0000, 0x0000, 0xb721, 0xb722, + 0x0000, 0x537a, 0x3847, 0x0000, 0x0000, 0x3971, 0x0000, 0x537c +}; + +static const unsigned short jis_from_unicode_57[] = { + 0x537b, 0xb723, 0xb724, 0x4a60, 0x537d, 0x0000, 0x0000, 0xb725, + 0x5421, 0x537e, 0xb726, 0x5422, 0xb727, 0x5423, 0x0000, 0x3777, + 0x0000, 0xb728, 0x3160, 0x5424, 0x0000, 0xb729, 0x5426, 0x0000, + 0x5425, 0x0000, 0xb72a, 0xb72b, 0x5428, 0xb72c, 0x0000, 0x455a, + 0xb72d, 0x0000, 0xb72e, 0xb72f, 0xb730, 0xb731, 0x5429, 0x3035, + 0x3a5f, 0xb732, 0xb733, 0x0000, 0xb734, 0x373d, 0xb735, 0xb736, + 0x434f, 0x0000, 0x0000, 0xb737, 0xb738, 0x0000, 0x0000, 0x542a, + 0x542b, 0x0000, 0x0000, 0x542d, 0x0000, 0xb739, 0xb73a, 0xb73b, + 0x542e, 0x0000, 0x3a64, 0x0000, 0x0000, 0xb73c, 0xb73d, 0x3651, + 0x0000, 0x0000, 0x4b37, 0x0000, 0xb73e, 0xb73f, 0x542c, 0x542f, + 0x3a41, 0x3923, 0xb740, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5433, 0xb741, 0x0000, 0x3a25, 0xb742, 0x4333, 0xb743, + 0xb744, 0x5430, 0x445a, 0xb745, 0x0000, 0xb746, 0xb747, 0xb748, + 0xb749, 0xb74a, 0x0000, 0xb74b, 0xb74c, 0xb74d, 0x0000, 0xb74e, + 0x0000, 0xb74f, 0xb750, 0xb751, 0xb752, 0x0000, 0xb753, 0x5434, + 0x0000, 0xb754, 0x3f62, 0xb755, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5432, 0x5435, 0x0000, 0x373f, 0xb756, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x5436, 0xb757, 0xb760, 0x0000, 0xb758, + 0x0000, 0xb759, 0xb75a, 0x0000, 0xb75b, 0xb75c, 0xb75d, 0xb75e, + 0x5437, 0xb75f, 0x3924, 0x3340, 0x5439, 0x0000, 0x0000, 0xb761, + 0xb762, 0xb763, 0x543a, 0x0000, 0xb764, 0x0000, 0x0000, 0x0000, + 0x543b, 0x0000, 0x0000, 0x5438, 0x0000, 0x0000, 0x0000, 0x0000, + 0xb765, 0x0000, 0x0000, 0x0000, 0x0000, 0xb766, 0x0000, 0x0000, + 0x5431, 0x0000, 0x0000, 0x543c, 0x0000, 0x0000, 0x543d, 0xb767, + 0xb768, 0x0000, 0x0000, 0x4b64, 0xb769, 0x0000, 0x3e6b, 0xb76a, + 0x0000, 0x0000, 0x543f, 0x5440, 0x543e, 0xb76b, 0x5442, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4738, 0xb76c, 0xb76d, 0x3068, + 0x4956, 0xb77e, 0x0000, 0x5443, 0xb76e, 0x0000, 0xb76f, 0xb770, + 0x0000, 0xb771, 0x0000, 0x0000, 0x0000, 0xb772, 0x0000, 0x0000, + 0xb773, 0x0000, 0x0000, 0x0000, 0x3e7d, 0xb774, 0xb775, 0x3c39, + 0xb776, 0x475d, 0x3470, 0x0000, 0x3a6b, 0xb777, 0xb778, 0xb779 +}; + +static const unsigned short jis_from_unicode_58[] = { + 0x4b59, 0x0000, 0x4632, 0xb77a, 0xb77b, 0x3778, 0x424f, 0x0000, + 0xb77c, 0xb77d, 0x5441, 0x5444, 0xb821, 0xb822, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4244, 0x0000, 0x0000, + 0x0000, 0x5445, 0x0000, 0xb823, 0x0000, 0x5446, 0xb824, 0xb825, + 0xb826, 0x5448, 0x0000, 0x0000, 0x4469, 0x0000, 0xb827, 0xb828, + 0x0000, 0x0000, 0x342e, 0x0000, 0x0000, 0xb829, 0x0000, 0x7421, + 0x3161, 0x4a73, 0xb82a, 0x0000, 0x3e6c, 0x4548, 0x0000, 0x0000, + 0x0000, 0xb82b, 0x3a66, 0x0000, 0x0000, 0x544e, 0x0000, 0xb82c, + 0x4a3d, 0x4e5d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xb82d, 0x3274, 0x544a, 0xb82e, 0xb82f, 0x0000, 0xb830, + 0xb831, 0x413a, 0x544d, 0x0000, 0x4563, 0xb832, 0x0000, 0x4549, + 0x4564, 0x4839, 0x444d, 0x0000, 0x0000, 0x0000, 0x3a49, 0xb833, + 0x0000, 0xb834, 0x5449, 0x0000, 0xb835, 0x0000, 0x0000, 0xb836, + 0xb837, 0x3176, 0x0000, 0x4536, 0x0000, 0x0000, 0x0000, 0x0000, + 0x544b, 0x0000, 0x5447, 0x0000, 0x0000, 0x3f50, 0x0000, 0x0000, + 0xb838, 0x544f, 0x0000, 0x0000, 0xb839, 0x0000, 0x3d4e, 0xb83a, + 0xb83b, 0xb83c, 0x0000, 0x362d, 0x0000, 0x5450, 0x0000, 0xb83d, + 0xb83e, 0xb83f, 0xb840, 0x0000, 0xb841, 0xb842, 0x0000, 0xb843, + 0xb844, 0x0000, 0x0000, 0x4a68, 0xb845, 0x0000, 0xb846, 0x417d, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4446, 0xb847, 0x0000, 0x5452, + 0xb848, 0xb849, 0xb84a, 0x0000, 0x0000, 0x0000, 0xb84b, 0x0000, + 0x4b4f, 0xb84c, 0x0000, 0x5453, 0x0000, 0x0000, 0x5458, 0x0000, + 0x0000, 0xb84d, 0xb84e, 0x4a2f, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5457, 0x5451, 0x5454, 0x5456, 0xb850, 0x0000, 0x3a26, 0x0000, + 0x0000, 0x4a49, 0xb851, 0x0000, 0xb84f, 0x5459, 0x0000, 0x4345, + 0xb852, 0x0000, 0x3275, 0x0000, 0x3e6d, 0xb853, 0xb854, 0x0000, + 0xb855, 0x545b, 0xb856, 0x545a, 0xb857, 0x3968, 0xb858, 0x545c, + 0x545e, 0x545d, 0xb859, 0x0000, 0x5460, 0xb85a, 0x5455, 0x5462, + 0x0000, 0xb85b, 0xb85c, 0x0000, 0x5461, 0x545f, 0x0000, 0x0000, + 0x0000, 0xb85d, 0x0000, 0x3b4e, 0x3f51, 0x0000, 0x4154, 0x5463, + 0x403c, 0x306d, 0x4764, 0xb85e, 0x0000, 0x0000, 0x0000, 0x445b, + 0x0000, 0x5465, 0x5464, 0x5466, 0x5467, 0x5468, 0x0000, 0x0000 +}; + +static const unsigned short jis_from_unicode_59[] = { + 0x0000, 0x0000, 0x5469, 0x0000, 0x0000, 0xb85f, 0xb860, 0x0000, + 0x0000, 0x4a51, 0x546a, 0xb861, 0xb862, 0x0000, 0x0000, 0x3246, + 0x546b, 0x0000, 0xb863, 0xb864, 0xb865, 0x4d3c, 0x3330, 0x0000, + 0x5249, 0x3d48, 0x423f, 0x546c, 0x4c6b, 0xb867, 0x0000, 0x0000, + 0x0000, 0xb868, 0x4c34, 0xb869, 0xb86a, 0x546e, 0x0000, 0x4267, + 0xb86b, 0x4537, 0x4240, 0x4957, 0x546f, 0x5470, 0x317b, 0xb86c, + 0xb86d, 0x3c3a, 0x5471, 0xb86e, 0x0000, 0xb86f, 0xb870, 0x3050, + 0x5472, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5473, 0xb871, + 0x0000, 0x0000, 0x0000, 0xb872, 0x3162, 0x0000, 0xb873, 0x3471, + 0x4660, 0x4a74, 0x0000, 0x0000, 0x0000, 0x0000, 0x5477, 0x4155, + 0x5476, 0x3740, 0xb874, 0xb875, 0x4b5b, 0x5475, 0x0000, 0x4565, + 0x5479, 0xb876, 0x5478, 0xb877, 0x0000, 0xb878, 0xb879, 0xb87a, + 0x547b, 0xb87b, 0x547a, 0xb87c, 0x0000, 0x317c, 0x0000, 0x547c, + 0x3e29, 0x547e, 0x4325, 0xb87d, 0x547d, 0xb87e, 0x4a33, 0xb921, + 0x0000, 0x0000, 0xb922, 0x3d77, 0x455b, 0xb923, 0xb924, 0x0000, + 0x5521, 0xb925, 0x0000, 0xb926, 0xb927, 0x3925, 0x0000, 0x0000, + 0x0000, 0x5522, 0x4721, 0x485e, 0x4c51, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x4725, 0xb928, 0xb929, 0x552b, 0xb92a, 0x0000, + 0x0000, 0x0000, 0xb92b, 0x3538, 0x0000, 0xb92c, 0x4d45, 0xb92d, + 0x0000, 0x4c2f, 0x0000, 0x562c, 0x0000, 0x5523, 0x0000, 0xb92e, + 0x0000, 0x0000, 0x0000, 0x5526, 0xb92f, 0x4245, 0x0000, 0xb930, + 0x4b38, 0x0000, 0x0000, 0x0000, 0x454a, 0xb931, 0xb932, 0xb933, + 0xb934, 0x0000, 0x5527, 0xb935, 0x0000, 0x0000, 0x0000, 0xb936, + 0x0000, 0x4b65, 0xb937, 0x3a4a, 0xb938, 0x0000, 0x3e2a, 0x0000, + 0x0000, 0xb939, 0x0000, 0xb93a, 0xb93b, 0x0000, 0x5528, 0x0000, + 0xb93c, 0x3b50, 0xb93d, 0x3b4f, 0x0000, 0xb93e, 0x0000, 0x0000, + 0x3039, 0x3848, 0xb93f, 0x402b, 0x3051, 0x0000, 0x0000, 0x0000, + 0x0000, 0x552c, 0x552d, 0x0000, 0x552a, 0xb940, 0xb941, 0xb942, + 0x0000, 0x0000, 0x0000, 0xb943, 0xb944, 0x3138, 0x342f, 0xb945, + 0x5529, 0x0000, 0x4c45, 0x4931, 0x0000, 0x0000, 0xb946, 0xb947, + 0x0000, 0xb948, 0xb949, 0x0000, 0xb94a, 0x0000, 0x3028, 0xb94b, + 0x0000, 0x0000, 0x0000, 0x3079, 0x0000, 0x0000, 0x0000, 0x3b51 +}; + +static const unsigned short jis_from_unicode_5a[] = { + 0xb94c, 0x3052, 0x0000, 0x3023, 0xb94d, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5532, 0x0000, 0x0000, 0xb94e, 0xb94f, 0xb950, 0x0000, + 0x0000, 0x5530, 0xb951, 0xb952, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4c3c, 0x0000, 0x5533, 0x0000, 0x5531, 0x0000, 0xb953, 0x552f, + 0x3f31, 0x0000, 0x0000, 0xb954, 0xb955, 0x552e, 0x0000, 0xb956, + 0xb957, 0x4a5a, 0xb958, 0x0000, 0x0000, 0xb959, 0x0000, 0x3864, + 0xb95a, 0x0000, 0x0000, 0x0000, 0x0000, 0x5537, 0x5538, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3e2b, 0x0000, 0x0000, 0x0000, + 0x5534, 0x4f2c, 0x0000, 0x0000, 0xb95b, 0xb95c, 0x474c, 0xb95d, + 0xb95e, 0x5536, 0x0000, 0x0000, 0xb95f, 0x0000, 0x0000, 0x0000, + 0xb960, 0x0000, 0x0000, 0x0000, 0x0000, 0xb961, 0x0000, 0x0000, + 0x0000, 0x0000, 0x3a27, 0x0000, 0x0000, 0x0000, 0xb962, 0x0000, + 0x0000, 0x0000, 0x5539, 0xb963, 0x0000, 0xb964, 0x4958, 0xb965, + 0x0000, 0x0000, 0x553a, 0x0000, 0x5535, 0xb966, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xb967, + 0x0000, 0x0000, 0xb968, 0xb969, 0x0000, 0x0000, 0xb96a, 0x4c3b, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xb96b, 0x0000, 0x0000, 0x0000, 0x0000, + 0xb96c, 0x0000, 0x475e, 0xb96d, 0x0000, 0x0000, 0xb96e, 0x0000, + 0x0000, 0xb96f, 0x553b, 0x4932, 0xb970, 0x0000, 0xb971, 0xb972, + 0xb973, 0x0000, 0xb974, 0x0000, 0x0000, 0x0000, 0x0000, 0xb975, + 0x0000, 0x0000, 0x0000, 0x0000, 0xb976, 0x0000, 0x0000, 0x0000, + 0x0000, 0xb977, 0xb978, 0xb979, 0x0000, 0xb97a, 0x0000, 0x0000, + 0xb97b, 0x0000, 0xb97c, 0xb97d, 0x553c, 0x5540, 0x553d, 0xb97e, + 0x0000, 0x3247, 0x553f, 0x0000, 0xba21, 0x0000, 0xba22, 0x0000, + 0xba23, 0x3c3b, 0x0000, 0x553e, 0x3779, 0x0000, 0x0000, 0xba24, + 0x554c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5545, 0x5542, + 0x0000, 0x0000, 0xba25, 0x0000, 0xba26, 0x0000, 0x0000, 0x0000, + 0xba27, 0x4364, 0x0000, 0x5541, 0x0000, 0xba28, 0x5543, 0x0000, + 0x0000, 0x5544, 0xba29, 0x0000, 0x0000, 0x0000, 0xba2a, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xba2b, 0xba2c, 0x0000, + 0x0000, 0x0000, 0x5546, 0x5547, 0x0000, 0xba2d, 0x0000, 0x0000 +}; + +static const unsigned short jis_from_unicode_5b[] = { + 0xba2e, 0xba2f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xba30, 0x3472, 0x0000, 0x5549, 0x5548, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x554a, 0xba31, + 0x0000, 0xba33, 0x0000, 0xba34, 0x0000, 0xba35, 0x0000, 0x0000, + 0x0000, 0xba36, 0x3e6e, 0x0000, 0x0000, 0xba37, 0x0000, 0x0000, + 0x0000, 0x0000, 0x554d, 0x0000, 0x445c, 0xba38, 0x0000, 0x0000, + 0x3145, 0x0000, 0x554b, 0x0000, 0xba32, 0x0000, 0x554e, 0x0000, + 0xba39, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x554f, 0x0000, + 0x5552, 0xba3a, 0x0000, 0x5550, 0x0000, 0x5551, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xba3b, 0xba3c, 0x0000, 0x0000, 0x0000, + 0x3b52, 0x5553, 0xba3d, 0x0000, 0x3926, 0x5554, 0xba3e, 0x3b7a, + 0x4238, 0x0000, 0x5555, 0x5556, 0x3b5a, 0x3927, 0xba3f, 0x4c52, + 0x0000, 0x0000, 0x0000, 0x3528, 0x3849, 0x5557, 0x3358, 0x0000, + 0xba40, 0x5558, 0x0000, 0x4239, 0x0000, 0x0000, 0xba41, 0xba42, + 0x5559, 0x5623, 0x0000, 0x555a, 0x0000, 0x555b, 0x0000, 0x0000, + 0x555c, 0x0000, 0x555e, 0x0000, 0xba43, 0xba44, 0xba45, 0xba46, + 0x555f, 0xba47, 0x0000, 0x5560, 0xba48, 0x4270, 0xba49, 0x3127, + 0x3c69, 0x3042, 0xba4a, 0x4157, 0x3430, 0x3c35, 0xba4b, 0x3928, + 0xba4c, 0xba4d, 0x0000, 0xba4e, 0xba4f, 0x4566, 0xba50, 0x3d21, + 0x3431, 0x4368, 0x446a, 0x3038, 0x3539, 0x4a75, 0x0000, 0x3c42, + 0x0000, 0x0000, 0x3552, 0x406b, 0x3c3c, 0x4d28, 0x5561, 0x0000, + 0xba51, 0xba52, 0x0000, 0x0000, 0xba53, 0xba54, 0x355c, 0xba55, + 0x3a4b, 0xba56, 0xba57, 0x3332, 0x3163, 0x3e2c, 0x3248, 0xba58, + 0x5562, 0x4d46, 0xba59, 0x0000, 0xba5a, 0x0000, 0x0000, 0x3d49, + 0xba5b, 0xba5c, 0x3c64, 0x5563, 0x3473, 0x4652, 0x4c29, 0x5564, + 0x0000, 0x5565, 0x0000, 0x0000, 0x4959, 0xba5d, 0x0000, 0xba5e, + 0x5567, 0x0000, 0x3428, 0x3677, 0x5566, 0x0000, 0xba5f, 0xba60, + 0xba61, 0xba62, 0xba63, 0x3432, 0x0000, 0x3f32, 0x556b, 0x3b21, + 0xba64, 0x3249, 0x556a, 0x0000, 0x5568, 0x556c, 0x5569, 0x472b, + 0x5c4d, 0x3f33, 0x0000, 0x556d, 0x0000, 0x0000, 0x4e40, 0xba65, + 0x556e, 0xba66, 0x0000, 0x5570, 0xba67, 0x437e, 0x556f, 0x0000, + 0x4023, 0x0000, 0x3b7b, 0x0000, 0x0000, 0xba68, 0x4250, 0x3c77 +}; + +static const unsigned short jis_from_unicode_5c[] = { + 0x0000, 0x4975, 0x406c, 0x0000, 0x3c4d, 0x5571, 0x3e2d, 0x5572, + 0x5573, 0x3053, 0x423a, 0x3f52, 0xba69, 0x5574, 0x4633, 0x3e2e, + 0x0000, 0x3e2f, 0x0000, 0x5575, 0x0000, 0x0000, 0x406d, 0xba6a, + 0x0000, 0x0000, 0x3e30, 0x0000, 0x0000, 0x0000, 0xba6b, 0xba6c, + 0x5576, 0x0000, 0x5577, 0xba6d, 0x4c60, 0x0000, 0xba6e, 0x0000, + 0x5578, 0xba6f, 0x0000, 0xba70, 0xba71, 0x3646, 0xba72, 0x0000, + 0xba73, 0x3d22, 0xba74, 0x0000, 0x0000, 0xba75, 0xba76, 0x0000, + 0x5579, 0x557a, 0x3c5c, 0x3f2c, 0x4674, 0x3f54, 0x4878, 0x4722, + 0x3649, 0x557b, 0x0000, 0x0000, 0x0000, 0x356f, 0x557c, 0x0000, + 0x367e, 0x0000, 0x464f, 0x3230, 0x0000, 0x3b53, 0x557d, 0x5622, + 0x5621, 0x367d, 0x0000, 0x557e, 0x0000, 0x4538, 0x0000, 0x0000, + 0x0000, 0xba77, 0xba78, 0x0000, 0xba79, 0x0000, 0x4230, 0x0000, + 0x454b, 0x3c48, 0xba7a, 0xba7b, 0x4158, 0x4d7a, 0x0000, 0xba7c, + 0xba7d, 0xba7e, 0x0000, 0x0000, 0x5624, 0xbb21, 0x5625, 0x4656, + 0xbb22, 0x3b33, 0x0000, 0x0000, 0xbb23, 0xbb24, 0x5627, 0x0000, + 0x0000, 0x5628, 0xbb25, 0xbb26, 0xbb27, 0xbb28, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xbb29, + 0xbb2a, 0x0000, 0xbb2b, 0x0000, 0x5629, 0x0000, 0x0000, 0xbb2c, + 0x3474, 0x562a, 0xbb2d, 0x0000, 0x562b, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xbb2e, 0x0000, 0xbb2f, + 0xbb30, 0x322c, 0xbb31, 0xbb32, 0x0000, 0x0000, 0xbb33, 0x0000, + 0x413b, 0x3464, 0xbb34, 0x562d, 0x4c28, 0x0000, 0x0000, 0x0000, + 0x0000, 0x4252, 0xbb35, 0x3359, 0xbb36, 0xbb37, 0x562f, 0x5631, + 0x345f, 0x0000, 0xbb38, 0x562e, 0x5630, 0x0000, 0x5633, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5632, 0x0000, 0x5634, + 0x0000, 0xbb39, 0x0000, 0xbb3a, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xbb3b, 0x0000, 0x0000, 0x0000, 0x0000, 0xbb3d, + 0x0000, 0x5635, 0x0000, 0x0000, 0x0000, 0xbb3c, 0x0000, 0x0000, + 0x463d, 0x362e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3265, 0x5636, 0x563b, 0x0000, 0x0000, 0x5639, 0xbb3e, 0x4a77, + 0x4a76, 0xbb3f, 0xbb40, 0x0000, 0xbb41, 0x0000, 0x4567, 0x0000, + 0x0000, 0x0000, 0x5638, 0x3d54, 0x0000, 0x5637, 0x0000, 0x0000 +}; + +static const unsigned short jis_from_unicode_5d[] = { + 0x0000, 0xbb42, 0x0000, 0x0000, 0x0000, 0x0000, 0xbb43, 0x3f72, + 0x0000, 0x0000, 0x0000, 0x563c, 0x0000, 0xbb44, 0x3a6a, 0x0000, + 0x0000, 0x5642, 0xbb45, 0x0000, 0x5643, 0x563d, 0x3333, 0x563e, + 0x5647, 0x5646, 0x5645, 0x5641, 0x0000, 0x0000, 0x0000, 0x5640, + 0x0000, 0x0000, 0x5644, 0xbb47, 0xbb48, 0x0000, 0xbb49, 0xbb4a, + 0x0000, 0x4a78, 0x0000, 0xbb46, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xbb4b, 0x0000, 0x0000, 0xbb4c, 0x0000, 0x0000, 0x0000, + 0x0000, 0xbb4d, 0x0000, 0x0000, 0x0000, 0xbb4e, 0x0000, 0xbb4f, + 0x0000, 0x0000, 0xbb50, 0xbb51, 0x0000, 0x0000, 0xbb52, 0x0000, + 0xbb53, 0x0000, 0xbb57, 0x564b, 0x5648, 0x0000, 0x564a, 0x0000, + 0x4d72, 0xbb55, 0x5649, 0x0000, 0x0000, 0xbb54, 0x0000, 0x0000, + 0x0000, 0xbb56, 0x0000, 0x0000, 0x563f, 0x0000, 0x0000, 0xbb58, + 0xbb59, 0xbb5a, 0xbb5b, 0x0000, 0xbb5c, 0x0000, 0x0000, 0x0000, + 0x0000, 0x3f73, 0xbb5d, 0x0000, 0x564c, 0xbb5e, 0x0000, 0x3a37, + 0xbb5f, 0x0000, 0x0000, 0x564d, 0x0000, 0x0000, 0x564e, 0x0000, + 0x0000, 0xbb60, 0xbb61, 0x0000, 0x0000, 0x0000, 0xbb62, 0xbb63, + 0x0000, 0xbb64, 0x5651, 0xbb65, 0x5650, 0x0000, 0x0000, 0x564f, + 0xbb66, 0x0000, 0xbb67, 0x4568, 0x563a, 0x0000, 0x0000, 0x0000, + 0x5657, 0x0000, 0xbb68, 0xbb69, 0xbb6a, 0xbb6b, 0x0000, 0x0000, + 0x0000, 0xbb6c, 0x0000, 0xbb6d, 0x0000, 0x5653, 0x0000, 0xbb6e, + 0xbb6f, 0x0000, 0x5652, 0x0000, 0x0000, 0x0000, 0x0000, 0xbb70, + 0x0000, 0x0000, 0x0000, 0xbb71, 0x5654, 0x0000, 0x5655, 0x0000, + 0xbb72, 0x0000, 0xe674, 0x0000, 0xbb73, 0x0000, 0x0000, 0x5658, + 0xbb74, 0xbb75, 0x4e66, 0x0000, 0x5659, 0x5656, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xbb76, 0x0000, 0x0000, 0x0000, 0xbb77, + 0x0000, 0x565a, 0x0000, 0xbb78, 0x3460, 0x565b, 0xbb7a, 0x0000, + 0xbb79, 0x0000, 0x565d, 0x565c, 0x0000, 0x0000, 0x565e, 0x0000, + 0xbb7b, 0xbb7c, 0x0000, 0x565f, 0x0000, 0x406e, 0x3d23, 0x0000, + 0xbb7d, 0x3d64, 0x0000, 0x4163, 0xbb7e, 0x3929, 0x3a38, 0x392a, + 0x3570, 0xbc21, 0x0000, 0x5660, 0x0000, 0x0000, 0x3a39, 0x0000, + 0x0000, 0x384a, 0x5661, 0x4c26, 0x4743, 0x5662, 0x0000, 0x392b, + 0xbc22, 0xbc23, 0x0000, 0x342c, 0x0000, 0x4327, 0x3652, 0x0000 +}; + +static const unsigned short jis_from_unicode_5e[] = { + 0xbc24, 0x0000, 0x3b54, 0x495b, 0x0000, 0x0000, 0x4841, 0xbc25, + 0x0000, 0x0000, 0x0000, 0x5663, 0x3475, 0xbc26, 0x0000, 0x0000, + 0x0000, 0x5666, 0xbc27, 0x0000, 0xbc28, 0xbc29, 0x4421, 0x0000, + 0xbc2a, 0x5665, 0x5664, 0x5667, 0x0000, 0x446b, 0x0000, 0xbc2b, + 0xbc2c, 0x0000, 0x0000, 0x0000, 0x0000, 0x3f63, 0x0000, 0x0000, + 0xbc2e, 0x0000, 0x0000, 0x3b55, 0x0000, 0x404a, 0xbc2d, 0x4253, + 0x3522, 0x0000, 0xbc2f, 0x4422, 0x0000, 0xbc30, 0x5668, 0x5669, + 0x3e6f, 0x0000, 0x0000, 0x0000, 0x0000, 0x4b39, 0xbc31, 0x0000, + 0x566c, 0x0000, 0x0000, 0x566b, 0x566a, 0x497d, 0x0000, 0x5673, + 0x0000, 0xbc34, 0x0000, 0xbc32, 0x4b5a, 0x0000, 0x566d, 0x0000, + 0xbc33, 0xbc35, 0x0000, 0x0000, 0x566f, 0x4b6b, 0xbc36, 0x566e, + 0xbc37, 0x0000, 0x0000, 0xbc38, 0xbc39, 0x0000, 0xbc3a, 0x5670, + 0x0000, 0x4828, 0x5671, 0x4a3e, 0x5672, 0x0000, 0x0000, 0x0000, + 0xbc3b, 0x0000, 0xbc3c, 0xbc3d, 0xbc3e, 0xbc3f, 0xbc40, 0x0000, + 0xbc41, 0x0000, 0x3433, 0x4a3f, 0x472f, 0x5674, 0x5675, 0x0000, + 0x392c, 0x3434, 0x5676, 0x3838, 0x4d44, 0x4d29, 0x3476, 0x5678, + 0xbc42, 0x4423, 0x0000, 0x392d, 0x3e31, 0x0000, 0x0000, 0x485f, + 0x0000, 0x0000, 0x3e32, 0xbc43, 0x0000, 0x0000, 0xbc44, 0x3d78, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x446c, 0x4a79, 0x4539, + 0x0000, 0x0000, 0x392e, 0x0000, 0x495c, 0x0000, 0x0000, 0x0000, + 0x5679, 0x0000, 0xbc45, 0x0000, 0xbc46, 0xbc47, 0x4559, 0x3a42, + 0xbc48, 0x0000, 0xbc49, 0x384b, 0xbc4a, 0x446d, 0x0000, 0x0000, + 0x0000, 0xbc4b, 0x0000, 0xbc4c, 0x0000, 0x3043, 0x3d6e, 0x392f, + 0x4d47, 0x0000, 0x0000, 0x0000, 0x0000, 0xbc4d, 0xbc4e, 0xbc4f, + 0x0000, 0x567a, 0x567b, 0x4751, 0x0000, 0x0000, 0xbc50, 0x0000, + 0x567c, 0x4e77, 0x4f2d, 0xbc52, 0xbc51, 0x0000, 0xbc53, 0x567e, + 0x567d, 0xbc54, 0xbc55, 0x3347, 0xbc56, 0xbc57, 0x5721, 0x0000, + 0x0000, 0x0000, 0x5724, 0x5725, 0xbc58, 0x5723, 0xbc59, 0x4940, + 0x3e33, 0x5727, 0x5726, 0x5722, 0x0000, 0xbc5a, 0x0000, 0x0000, + 0x5728, 0x5729, 0x0000, 0xbc5b, 0x572a, 0x0000, 0x0000, 0x0000, + 0x572d, 0x572b, 0x0000, 0x572c, 0x572e, 0x0000, 0x3164, 0x446e, + 0x572f, 0x0000, 0x377a, 0x3276, 0x4736, 0x0000, 0x5730, 0x467b +}; + +static const unsigned short jis_from_unicode_5f[] = { + 0x0000, 0x4a5b, 0xbc5c, 0x5731, 0x4f2e, 0x0000, 0xbc5d, 0xbc5e, + 0xbc5f, 0x5732, 0x4a40, 0x5735, 0x5021, 0x5031, 0xbc60, 0x3c30, + 0x4675, 0x5736, 0x0000, 0x355d, 0x4424, 0x307a, 0x5737, 0x4a26, + 0x3930, 0xbc61, 0x0000, 0x4350, 0xbc62, 0xbc63, 0x0000, 0x446f, + 0x0000, 0xbc64, 0xbc65, 0xbc66, 0xbc67, 0x4c6f, 0x3839, 0x384c, + 0xbc68, 0x5738, 0x0000, 0xbc69, 0xbc6a, 0x5739, 0xbc6b, 0x573f, + 0xbc6c, 0x3c65, 0x0000, 0x0000, 0xbc6d, 0x4425, 0xbc6e, 0x362f, + 0x573a, 0x0000, 0x0000, 0xbc6f, 0x492b, 0xbc70, 0x4346, 0xbc71, + 0xbc72, 0x573b, 0x0000, 0x0000, 0xbc73, 0xbc74, 0x0000, 0xbc75, + 0x573c, 0x0000, 0x3630, 0x0000, 0x573d, 0xbc76, 0x573e, 0x0000, + 0xbc77, 0x5740, 0x0000, 0x4576, 0xbc78, 0x0000, 0x5741, 0x5742, + 0xbc79, 0x5743, 0x0000, 0xbc7a, 0x5734, 0x5733, 0x0000, 0x0000, + 0xbc7b, 0x5744, 0x3741, 0xbc7c, 0xbc7d, 0x0000, 0x4927, 0xbc7e, + 0x0000, 0x3a4c, 0x4937, 0x4426, 0x494b, 0x5745, 0x0000, 0xbd21, + 0x3e34, 0x3146, 0xbd22, 0x5746, 0xbd23, 0xbd24, 0x0000, 0x5747, + 0xbd25, 0x4c72, 0xbd26, 0x0000, 0x4860, 0xbd27, 0xbd28, 0x574a, + 0x317d, 0x402c, 0x5749, 0x5748, 0x3742, 0x4254, 0x0000, 0x574e, + 0x574c, 0xbd29, 0x574b, 0x4e27, 0x3865, 0xbd2a, 0x0000, 0xbd2b, + 0x3d79, 0x574d, 0x454c, 0x3d3e, 0x0000, 0x0000, 0xbd2c, 0x4640, + 0x5751, 0x5750, 0x0000, 0x0000, 0xbd2d, 0xbd2e, 0x574f, 0x0000, + 0x5752, 0x3866, 0xbd2f, 0x0000, 0xbd32, 0x0000, 0x0000, 0xbd30, + 0x5753, 0x497c, 0x3d5b, 0xbd31, 0xbd33, 0x5754, 0x4879, 0xbd34, + 0xbd35, 0xbd36, 0x0000, 0x4641, 0x4427, 0x0000, 0x0000, 0x0000, + 0xbd37, 0x4530, 0x0000, 0x0000, 0x5755, 0x352b, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x3f34, 0xbd38, 0x492c, 0x0000, 0xbd39, + 0xbd3a, 0xbd3b, 0x0000, 0xbd3c, 0x3477, 0x4726, 0x0000, 0x0000, + 0xbd3d, 0xbd3e, 0xbd3f, 0xbd40, 0xbd41, 0x0000, 0x5756, 0x3b56, + 0x4b3a, 0x4b3b, 0x0000, 0x0000, 0x317e, 0x575b, 0xbd42, 0x0000, + 0x4369, 0xbd43, 0xbd44, 0x0000, 0x5758, 0x0000, 0x0000, 0x0000, + 0xbd45, 0xbd46, 0xbd47, 0x3277, 0xbd48, 0xbd49, 0xbd4a, 0xbd4b, + 0x582d, 0x575a, 0xbd4c, 0xbd4d, 0x0000, 0x4730, 0xbd4e, 0x0000, + 0x5759, 0x0000, 0xbd4f, 0x5757, 0xbd50, 0x397a, 0x0000, 0x575d +}; + +static const unsigned short jis_from_unicode_60[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xbd51, + 0x0000, 0x0000, 0xbd52, 0x0000, 0x0000, 0xbd53, 0x5763, 0x5769, + 0x5761, 0x0000, 0x455c, 0xbd54, 0xbd55, 0x5766, 0x495d, 0xbd56, + 0xbd57, 0x5760, 0xbd58, 0x5765, 0x4e67, 0x3b57, 0x0000, 0xbd59, + 0x4255, 0x575e, 0x0000, 0x0000, 0xbd5a, 0x355e, 0x5768, 0x402d, + 0x3165, 0x5762, 0x3278, 0x5767, 0x0000, 0xbd5b, 0x0000, 0x3631, + 0x0000, 0x5764, 0x0000, 0xbd5c, 0x0000, 0xbd5d, 0x0000, 0x0000, + 0x0000, 0x0000, 0x576a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xbd5e, 0x576c, 0x5776, 0x5774, 0x0000, 0x0000, 0x5771, 0xbd5f, + 0xbd60, 0xbd61, 0x5770, 0x4e78, 0xbd62, 0x5772, 0x0000, 0x0000, + 0x3632, 0xbd63, 0x3931, 0x0000, 0xbd64, 0x3d7a, 0xbd65, 0xbd66, + 0x0000, 0x5779, 0x576b, 0x0000, 0x0000, 0xbd67, 0x0000, 0x576f, + 0x575f, 0xbd68, 0x327a, 0x5773, 0x5775, 0x4351, 0x0000, 0xbd69, + 0x3a28, 0x3238, 0x576d, 0x5778, 0x5777, 0x3633, 0x0000, 0x4229, + 0x3366, 0xbd6a, 0x0000, 0x0000, 0x0000, 0x3743, 0x0000, 0x576e, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xbd6b, 0xbd6c, + 0x0000, 0x577a, 0xbd6d, 0x577d, 0x5821, 0x0000, 0xbd6e, 0x0000, + 0xbd6f, 0x3c3d, 0xbd70, 0x5827, 0x4470, 0x577b, 0xbd71, 0x0000, + 0x0000, 0xbd72, 0x5825, 0xbd73, 0x3279, 0xbd74, 0x5823, 0x5824, + 0xbd75, 0x0000, 0x577e, 0x5822, 0x0000, 0xbd76, 0xbd77, 0x3867, + 0x4d2a, 0x0000, 0xbd78, 0x3435, 0xbd79, 0xbd7a, 0x3159, 0x5826, + 0xbd7b, 0x473a, 0x302d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xbd7c, 0xbd7d, 0x4861, 0x575c, 0x582c, 0x5830, 0x4c65, 0xbd7e, + 0x5829, 0x0000, 0x0000, 0xbe21, 0x4569, 0x582e, 0xbe22, 0x0000, + 0x0000, 0x0000, 0xbe23, 0x0000, 0xbe24, 0x3e70, 0x582f, 0x4657, + 0xbe25, 0xbe26, 0xbe27, 0xbe28, 0x0000, 0x0000, 0xbe29, 0xbe2a, + 0x0000, 0x4f47, 0x0000, 0x582b, 0xbe2b, 0xbe2c, 0x0000, 0x0000, + 0x5831, 0xbe2d, 0x397b, 0xbe2e, 0x404b, 0xbe2f, 0xbe30, 0x3054, + 0x582a, 0x5828, 0xbe31, 0x415a, 0x0000, 0xbe32, 0x0000, 0x577c, + 0x3b34, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4246, 0x583d, 0xbe33, 0x415b, 0x5838, 0xbe34, 0x5835, 0x5836, + 0xbe35, 0x3c66, 0x5839, 0x583c, 0xbe36, 0xbe37, 0x0000, 0x0000 +}; + +static const unsigned short jis_from_unicode_61[] = { + 0x5837, 0x3d25, 0xbe38, 0x583a, 0x0000, 0x0000, 0x5834, 0xbe39, + 0x4c7c, 0x4c7b, 0xbe3a, 0x0000, 0xbe3b, 0x583e, 0x583f, 0x3055, + 0xbe3c, 0xbe3d, 0xbe3e, 0xbe3f, 0xbe40, 0x5833, 0xbe41, 0xbe42, + 0x0000, 0xbe43, 0x3672, 0x3026, 0xbe44, 0x0000, 0xbe45, 0x3436, + 0x0000, 0x583b, 0xbe46, 0x0000, 0x0000, 0x0000, 0x0000, 0x5843, + 0x5842, 0x0000, 0xbe47, 0xbe48, 0x5847, 0x0000, 0x0000, 0x0000, + 0xbe49, 0xbe4a, 0x0000, 0x0000, 0x5848, 0xbe4b, 0xbe4c, 0xbe4d, + 0x0000, 0xbe4e, 0x0000, 0x0000, 0x5846, 0x5849, 0x5841, 0x5845, + 0x0000, 0xbe4f, 0x584a, 0x0000, 0x584b, 0xbe50, 0xbe51, 0x5840, + 0x3b7c, 0xbe52, 0x5844, 0x4256, 0x3932, 0x5832, 0x3f35, 0x0000, + 0x0000, 0x0000, 0x0000, 0x5858, 0x0000, 0x4a69, 0x0000, 0x0000, + 0x584e, 0x584f, 0x5850, 0x0000, 0x0000, 0x5857, 0xbe53, 0x5856, + 0xbe54, 0x0000, 0x4b7d, 0x3437, 0x0000, 0x5854, 0x0000, 0x3745, + 0x3334, 0x0000, 0x0000, 0x5851, 0xbe55, 0x0000, 0x4e38, 0x5853, + 0x3056, 0x5855, 0xbe56, 0x584c, 0x5852, 0x5859, 0x3744, 0x584d, + 0xbe57, 0x0000, 0x0000, 0xbe58, 0xbe59, 0x0000, 0x4d5d, 0xbe5a, + 0xbe5b, 0xbe5c, 0x4d2b, 0xbe5d, 0xbe5e, 0x0000, 0x0000, 0x585c, + 0x0000, 0x0000, 0x5860, 0xbe5f, 0x0000, 0xbe60, 0x417e, 0x0000, + 0x4e79, 0x5861, 0xbe61, 0xbe62, 0x585e, 0x0000, 0x585b, 0xbe63, + 0xbe64, 0x585a, 0x585f, 0x0000, 0xbe65, 0xbe66, 0x0000, 0xbe67, + 0xbe68, 0x0000, 0x0000, 0x0000, 0x4a30, 0xbe69, 0x0000, 0x4634, + 0xbe6a, 0x3746, 0xbe6b, 0x5862, 0x585d, 0xbe6c, 0x5863, 0x0000, + 0x0000, 0x0000, 0x377b, 0x0000, 0x0000, 0x0000, 0x3231, 0x0000, + 0xbe6d, 0xbe6e, 0x586b, 0x0000, 0xbe6f, 0x0000, 0x3438, 0x0000, + 0xbe70, 0xbe71, 0xbe72, 0x5869, 0x0000, 0x0000, 0x586a, 0x3a29, + 0x5868, 0x5866, 0x5865, 0x586c, 0x5864, 0x586e, 0xbe73, 0xbe74, + 0x327b, 0x0000, 0x0000, 0x0000, 0x0000, 0xbe75, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xbe76, 0xbe77, 0xbe78, 0xbe79, + 0x0000, 0xbe7a, 0xbe7b, 0x5870, 0x0000, 0xbe7e, 0x586f, 0xbe7c, + 0x0000, 0xbe7d, 0x0000, 0x0000, 0xbf21, 0xbf22, 0x0000, 0xbf23, + 0x0000, 0x0000, 0x4428, 0x0000, 0x5873, 0x0000, 0x5871, 0x5867, + 0x377c, 0x0000, 0x5872, 0x0000, 0x5876, 0x5875, 0x5877, 0x5874 +}; + +static const unsigned short jis_from_unicode_62[] = { + 0x5878, 0xbf24, 0x0000, 0xbf25, 0xbf26, 0x0000, 0x0000, 0xbf27, + 0x5879, 0x587a, 0x4a6a, 0x0000, 0x587c, 0x587b, 0x3d3f, 0x0000, + 0x402e, 0x3266, 0x327c, 0xbf28, 0x587d, 0xbf29, 0x303f, 0x0000, + 0x0000, 0x0000, 0x404c, 0x587e, 0xbf2a, 0x6c43, 0x5921, 0x3761, + 0xbf2b, 0x5922, 0xbf2c, 0xbf2d, 0x0000, 0x0000, 0x406f, 0xbf2e, + 0x0000, 0xbf2f, 0x5923, 0xbf30, 0x0000, 0x0000, 0x5924, 0x353a, + 0x5925, 0x0000, 0x5926, 0x5927, 0x4257, 0x0000, 0x0000, 0x0000, + 0x384d, 0xbf31, 0x0000, 0x4c61, 0x0000, 0xbf32, 0x0000, 0x4b3c, + 0x3d6a, 0x5928, 0xbf33, 0xbf34, 0xbf35, 0x0000, 0xbf36, 0x4070, + 0x6e3d, 0x4862, 0x0000, 0x3c6a, 0xbf37, 0x3a4d, 0x5929, 0x0000, + 0xbf38, 0xbf39, 0xbf3a, 0x4247, 0xbf3b, 0x4a27, 0xbf3c, 0x0000, + 0x4271, 0x0000, 0xbf3d, 0x592c, 0xbf3e, 0x0000, 0x592a, 0x0000, + 0x592d, 0x0000, 0x0000, 0x592b, 0xbf3f, 0x0000, 0x0000, 0x0000, + 0x592e, 0x0000, 0x0000, 0x0000, 0x0000, 0xbf40, 0x4a31, 0xbf41, + 0x0000, 0x3037, 0x0000, 0xbf42, 0x0000, 0x0000, 0x495e, 0x0000, + 0x0000, 0x4863, 0xbf43, 0x0000, 0x592f, 0xbf44, 0x5932, 0x3e35, + 0x353b, 0x0000, 0x5930, 0x5937, 0x3e36, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5931, 0x4744, 0x0000, 0x0000, 0xbf45, 0xbf46, 0xbf47, + 0xbf48, 0x4d5e, 0x5933, 0x5934, 0x5938, 0x456a, 0x5935, 0x3933, + 0x405e, 0x0000, 0x0000, 0x5946, 0x4834, 0x0000, 0x4272, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xbf49, 0x0000, + 0xbf4a, 0x0000, 0x0000, 0x4864, 0x5a2d, 0x0000, 0x0000, 0x0000, + 0x0000, 0x4a7a, 0x0000, 0xbf4b, 0x0000, 0x4471, 0xbf4c, 0xbf4d, + 0x0000, 0x4b75, 0xbf4e, 0x593b, 0x3221, 0x436a, 0xbf4f, 0xbf50, + 0x0000, 0x0000, 0x5944, 0x0000, 0xbf51, 0x4334, 0x593e, 0x5945, + 0x5940, 0x5947, 0x5943, 0x0000, 0x5942, 0x476f, 0xbf52, 0x593c, + 0x327d, 0x593a, 0x3571, 0x4273, 0x5936, 0xbf53, 0xbf54, 0x5939, + 0x3934, 0x405b, 0xbf55, 0x3e37, 0x5941, 0x4752, 0x0000, 0x0000, + 0x3572, 0x3348, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xbf56, 0x0000, 0x3367, 0x3f21, 0x5949, 0x594e, + 0x0000, 0x594a, 0xbf57, 0x377d, 0xbf58, 0x594f, 0x3b22, 0x3969, + 0x0000, 0x0000, 0x0000, 0x0000, 0xbf59, 0xbf5a, 0x3d26, 0x593d +}; + +static const unsigned short jis_from_unicode_63[] = { + 0x0000, 0x3b7d, 0x594c, 0xbf5b, 0xbf5c, 0x0000, 0x0000, 0x3b58, + 0x594d, 0x3044, 0xbf5d, 0xbf5e, 0x5948, 0xbf5f, 0x0000, 0x0000, + 0xbf60, 0x4429, 0x0000, 0xbf61, 0x0000, 0x0000, 0xbf62, 0x0000, + 0xbf63, 0x3573, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3634, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x594b, + 0x3027, 0xbf64, 0xbf65, 0x3a43, 0x0000, 0xbf66, 0x0000, 0x3f36, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xbf67, 0xbf68, 0x0000, + 0x0000, 0xbf69, 0x4472, 0x0000, 0xbf6a, 0x4854, 0x5951, 0x415e, + 0x0000, 0xbf6b, 0xbf6c, 0xbf6d, 0xbf6e, 0x0000, 0xbf6f, 0x0000, + 0x0000, 0x422a, 0xbf70, 0xbf71, 0x3b2b, 0x5952, 0xbf72, 0x5954, + 0x5950, 0x0000, 0xbf73, 0xbf74, 0xbf75, 0x4a61, 0x0000, 0x443d, + 0xbf76, 0x0000, 0x0000, 0xbf77, 0x415c, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xbf78, 0xbf79, 0x4a7b, + 0x3c4e, 0x5960, 0x0000, 0x595f, 0xbf7a, 0xbf7b, 0x3f78, 0x0000, + 0x0000, 0xbf7c, 0x377e, 0x0000, 0xbf7d, 0xbf7e, 0x5959, 0x3e39, + 0xc021, 0x0000, 0x4668, 0x4731, 0xc022, 0xc023, 0x0000, 0xc024, + 0x5957, 0x0000, 0xc025, 0x415d, 0xc026, 0x0000, 0x0000, 0xc027, + 0x3c78, 0x595c, 0xc028, 0x0000, 0x3e38, 0x0000, 0x5956, 0x595b, + 0xc029, 0x0000, 0x4753, 0x0000, 0xc02a, 0xc02b, 0x5955, 0x0000, + 0x3721, 0xc02c, 0xc02d, 0x335d, 0x0000, 0x0000, 0xc02e, 0x595d, + 0x4e2b, 0x3a4e, 0x4335, 0x595a, 0xc02f, 0x405c, 0xc030, 0x3935, + 0x3f64, 0x3166, 0x413c, 0x5958, 0x3545, 0xc031, 0xc032, 0xc033, + 0x0000, 0x0000, 0x3747, 0x0000, 0x444f, 0x595e, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x415f, 0x0000, 0xc034, 0x5961, 0x0000, + 0x5963, 0xc035, 0x0000, 0x4237, 0x5969, 0xc036, 0x5964, 0x0000, + 0xc037, 0x5966, 0x0000, 0x0000, 0x0000, 0x0000, 0xc038, 0x4941, + 0x4473, 0xc039, 0x5967, 0xc03a, 0xc03b, 0xc03c, 0x4d2c, 0x0000, + 0x0000, 0x0000, 0x4d48, 0x3439, 0xc03d, 0x0000, 0x0000, 0x0000, + 0xc03e, 0x302e, 0x0000, 0x5965, 0x0000, 0xc03f, 0x0000, 0x0000, + 0x0000, 0x5962, 0xc040, 0x0000, 0xc041, 0x0000, 0x3478, 0x0000, + 0x0000, 0x0000, 0xc042, 0xc043, 0x3167, 0xc044, 0x5968, 0x0000, + 0xc045, 0xc046, 0x4d49, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short jis_from_unicode_64[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x596c, 0x0000, + 0x0000, 0xc047, 0xc048, 0x0000, 0x0000, 0x423b, 0x0000, 0x5973, + 0xc049, 0x0000, 0xc04a, 0x596d, 0xc04b, 0x0000, 0x596a, 0x5971, + 0xc04c, 0x0000, 0x0000, 0x0000, 0x5953, 0x0000, 0xc04d, 0x0000, + 0xc04e, 0x0000, 0xc04f, 0x0000, 0xc050, 0xc051, 0x596e, 0x0000, + 0x5972, 0xc052, 0xc053, 0x0000, 0x4842, 0x456b, 0x0000, 0xc054, + 0xc055, 0x0000, 0x0000, 0x0000, 0x596b, 0xc056, 0x596f, 0x0000, + 0x0000, 0x0000, 0x3748, 0x0000, 0x0000, 0xc057, 0x3a71, 0xc058, + 0x0000, 0x0000, 0x405d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xc059, 0x0000, 0x0000, 0x5977, 0xc05a, + 0x0000, 0xc05b, 0xc05c, 0xc05d, 0xc05e, 0x0000, 0x0000, 0x0000, + 0x4526, 0x0000, 0xc05f, 0xc060, 0xc061, 0xc062, 0x0000, 0xc063, + 0xc064, 0xc065, 0x0000, 0xc066, 0x0000, 0x0000, 0x0000, 0x5974, + 0x0000, 0x4b60, 0x0000, 0x0000, 0x0000, 0xc067, 0x0000, 0x5975, + 0x0000, 0x0000, 0x0000, 0xc068, 0xc069, 0x0000, 0x5976, 0x0000, + 0x4c4e, 0x0000, 0x4022, 0xc06a, 0x0000, 0xc06b, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x3762, 0x0000, 0xc06c, 0x0000, 0xc06d, + 0x597d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xc06e, + 0xc06f, 0xc070, 0x3b35, 0x597a, 0x0000, 0x5979, 0x0000, 0x0000, + 0xc071, 0xc072, 0x4732, 0xc073, 0x0000, 0xc074, 0x4635, 0xc075, + 0x0000, 0xc076, 0x0000, 0xc077, 0x4531, 0x597b, 0xc078, 0x0000, + 0xc079, 0x597c, 0x0000, 0x496f, 0xc07a, 0x4745, 0x3b23, 0x0000, + 0x4071, 0x0000, 0x4b50, 0xc07b, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x3349, 0x0000, 0x5a25, 0x597e, 0xc07c, 0xc07d, 0xc07e, + 0x0000, 0x4d4a, 0x5a27, 0x0000, 0xc121, 0x5a23, 0x0000, 0x5a24, + 0x0000, 0xc122, 0xc123, 0xc124, 0xc125, 0x4160, 0xc126, 0x0000, + 0xc127, 0xc128, 0x5a22, 0x0000, 0x593f, 0xc129, 0x0000, 0xc12a, + 0x5a26, 0x0000, 0x5a21, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5a2b, 0x5a2c, 0x4527, 0x5a2e, 0xc12b, 0xc12c, 0x3b24, 0x5a29, + 0x0000, 0xc12d, 0xc12e, 0x0000, 0x353c, 0xc12f, 0x0000, 0x5a2f, + 0xc130, 0x5a28, 0x5a33, 0x0000, 0x5a32, 0xc131, 0x5a31, 0xc132, + 0x0000, 0x0000, 0x5a34, 0xc133, 0x0000, 0x5a36, 0x3e71, 0xc134 +}; + +static const unsigned short jis_from_unicode_65[] = { + 0x5a35, 0xc135, 0x0000, 0x0000, 0xc136, 0x5a39, 0x0000, 0x0000, + 0xc137, 0xc138, 0xc139, 0x0000, 0x0000, 0x0000, 0x0000, 0xc13a, + 0x0000, 0x0000, 0x0000, 0xc13b, 0xc13c, 0x0000, 0xc13d, 0x0000, + 0x5a37, 0xc13e, 0x0000, 0xc13f, 0x5a38, 0x5970, 0xc140, 0xc141, + 0x0000, 0x0000, 0xc142, 0x5a3b, 0x5a3a, 0x0000, 0xc143, 0x0000, + 0x0000, 0xc144, 0x5978, 0x5a3c, 0x5a30, 0x0000, 0xc145, 0x3b59, + 0x0000, 0xc146, 0x0000, 0x0000, 0x5a3d, 0x5a3e, 0x5a40, 0x5a3f, + 0x5a41, 0x327e, 0xc147, 0x3936, 0xc148, 0xc149, 0x4a7c, 0x402f, + 0x0000, 0x0000, 0x0000, 0xc14a, 0x0000, 0x384e, 0x0000, 0xc14b, + 0x5a43, 0xc14c, 0x0000, 0x0000, 0x0000, 0x5a46, 0x0000, 0x4952, + 0xc14d, 0x355f, 0xc14e, 0x0000, 0xc14f, 0x5a45, 0x5a44, 0x4754, + 0x5a47, 0x3635, 0x0000, 0x0000, 0x0000, 0x5a49, 0x5a48, 0xc150, + 0xc151, 0x0000, 0x343a, 0x3b36, 0x0000, 0x0000, 0x4658, 0xc152, + 0x0000, 0x0000, 0x0000, 0xc153, 0x3749, 0x0000, 0x0000, 0x0000, + 0x3f74, 0x0000, 0x5a4a, 0x0000, 0x4030, 0x4528, 0x0000, 0x495f, + 0x5a4b, 0x0000, 0xc154, 0x0000, 0x0000, 0xc155, 0x0000, 0x0000, + 0x0000, 0xc156, 0x5a4c, 0x5a4d, 0x0000, 0xc157, 0x0000, 0x4a38, + 0x555d, 0x4046, 0xc158, 0x0000, 0x494c, 0x0000, 0x3a58, 0x0000, + 0x4865, 0x4843, 0xc159, 0x0000, 0x0000, 0xc15a, 0x0000, 0x454d, + 0xc15b, 0x4e41, 0x0000, 0x5a4f, 0x3c50, 0xc15c, 0x0000, 0x5a50, + 0xc15d, 0x3036, 0x0000, 0xc15e, 0x3654, 0x404d, 0xc15f, 0x4960, + 0x0000, 0x0000, 0x0000, 0x5a51, 0x3b42, 0x4347, 0xc160, 0x3b5b, + 0x3f37, 0x0000, 0xc161, 0xc162, 0xc163, 0x0000, 0x0000, 0x5a52, + 0x0000, 0x4a7d, 0x0000, 0x0000, 0x3177, 0x3b5c, 0x0000, 0xc164, + 0x0000, 0x5a55, 0xc165, 0x5a53, 0x5a56, 0x4e39, 0x5a54, 0x0000, + 0xc166, 0xc167, 0x0000, 0x407b, 0x5a57, 0x0000, 0xc168, 0x4232, + 0xc169, 0x0000, 0x5a58, 0x0000, 0xc16a, 0x0000, 0xc16b, 0x347a, + 0xc16c, 0x5a5a, 0x0000, 0x5a59, 0x0000, 0x0000, 0x0000, 0xc16d, + 0x5a5b, 0x5a5c, 0x347b, 0x0000, 0x0000, 0x467c, 0x4336, 0x356c, + 0x3b5d, 0x4161, 0x0000, 0x0000, 0x3d5c, 0x3030, 0x0000, 0x0000, + 0xc16e, 0x5a5d, 0xc16f, 0x0000, 0xc170, 0xc171, 0x0000, 0x0000, + 0x0000, 0xc172, 0x3222, 0x5a61, 0x0000, 0x0000, 0xc173, 0xc174 +}; + +static const unsigned short jis_from_unicode_66[] = { + 0xc175, 0x0000, 0x3937, 0x5a60, 0xc176, 0x0000, 0x3a2b, 0x3e3a, + 0xc177, 0xc178, 0x5a5f, 0x0000, 0x3e3b, 0xc179, 0x4c40, 0x3a2a, + 0x0000, 0xc17a, 0xc17b, 0x3057, 0x404e, 0xc17c, 0xc17d, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x5a66, 0xc17e, 0xc221, 0x4031, + 0x3147, 0xc222, 0xc223, 0xc224, 0xc225, 0x3d55, 0xc226, 0x4b66, + 0x3a72, 0xc227, 0xc228, 0xc229, 0xc22a, 0x3e3c, 0xc22b, 0x4027, + 0xc22c, 0xc22d, 0x0000, 0xc22e, 0x5a65, 0x5a63, 0x5a64, 0xc230, + 0x0000, 0xc22f, 0x0000, 0x0000, 0x436b, 0x0000, 0x0000, 0x5b26, + 0xc231, 0x5a6a, 0x3b7e, 0x3938, 0x5a68, 0xc232, 0xc233, 0x0000, + 0x0000, 0x5a69, 0xc234, 0x3f38, 0xc235, 0x0000, 0xc237, 0x5a67, + 0x0000, 0xc236, 0x3b2f, 0x0000, 0x0000, 0x0000, 0x0000, 0xc238, + 0xc239, 0xc23a, 0x0000, 0xc23b, 0xc23c, 0x5a6c, 0x5a6b, 0x5a70, + 0xc23d, 0xc23e, 0x5a71, 0x0000, 0x5a6d, 0x0000, 0x3322, 0x5a6e, + 0x5a6f, 0x4855, 0xc240, 0xc241, 0xc242, 0x0000, 0x4961, 0x374a, + 0x5a72, 0x0000, 0x0000, 0xc244, 0x4032, 0xc245, 0x3e3d, 0xc247, + 0xc248, 0xc249, 0x4352, 0xc24a, 0xc24c, 0x0000, 0xc243, 0xc246, + 0xc24b, 0x3647, 0x0000, 0x5a73, 0x5a77, 0x0000, 0x0000, 0x324b, + 0x5a74, 0x5a76, 0x0000, 0xc24d, 0xc24e, 0xc24f, 0x5a75, 0x0000, + 0xc250, 0x3d6b, 0xc251, 0x0000, 0x0000, 0x0000, 0x4348, 0x3045, + 0x5a78, 0xc252, 0xc253, 0xc254, 0xc255, 0x5a79, 0x0000, 0xc256, + 0xc257, 0x0000, 0x442a, 0x0000, 0xc258, 0x0000, 0x4e71, 0x0000, + 0x0000, 0x0000, 0x0000, 0x3b43, 0x0000, 0xc259, 0x4a6b, 0x0000, + 0x0000, 0xc25a, 0xc25b, 0x0000, 0x4b3d, 0xc25c, 0x0000, 0x0000, + 0x5b22, 0x5a7b, 0x0000, 0xc25d, 0x5a7e, 0x0000, 0x5a7d, 0xc25e, + 0xc25f, 0x5a7a, 0xc260, 0xc261, 0x5b21, 0x0000, 0x0000, 0x465e, + 0xc262, 0x5a7c, 0x0000, 0x0000, 0xc263, 0x0000, 0xc264, 0xc265, + 0x0000, 0x0000, 0x0000, 0x0000, 0xc266, 0x0000, 0x5b23, 0x0000, + 0x0000, 0x3d6c, 0x5b24, 0xc267, 0x4d4b, 0x4778, 0x0000, 0xc268, + 0x5b25, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5b27, 0x0000, + 0xc269, 0x5b28, 0x0000, 0xc26a, 0xc26b, 0x0000, 0xc26c, 0x0000, + 0x5b29, 0x0000, 0x364a, 0x3148, 0x3939, 0x5b2a, 0x0000, 0x5b2b, + 0x3d71, 0x4162, 0xc26d, 0xc23f, 0x5258, 0x413e, 0x413d, 0x4258 +}; + +static const unsigned short jis_from_unicode_67[] = { + 0x3a47, 0x0000, 0x0000, 0x5072, 0x0000, 0xc26e, 0x0000, 0xc26f, + 0x376e, 0x4d2d, 0x0000, 0x4a7e, 0x0000, 0x497e, 0xc270, 0x5b2c, + 0x0000, 0x0000, 0x0000, 0xc271, 0x3a73, 0x443f, 0x5b2d, 0x4f2f, + 0x0000, 0xc272, 0x0000, 0x4b3e, 0xc273, 0x442b, 0x5b2e, 0x347c, + 0xc274, 0x0000, 0xc275, 0x0000, 0x0000, 0x0000, 0x5b2f, 0x5b30, + 0x4c5a, 0x0000, 0x4c24, 0x4b76, 0x4b5c, 0x3b25, 0x5b32, 0x0000, + 0x0000, 0x3c6b, 0x0000, 0xc276, 0x4b51, 0x0000, 0x5b34, 0x5b37, + 0x5b36, 0x0000, 0x3479, 0x0000, 0x0000, 0x3560, 0xc277, 0x5b33, + 0x0000, 0x5b35, 0x0000, 0x0000, 0x0000, 0xc278, 0x5b38, 0xc279, + 0xc27a, 0x3f79, 0x0000, 0x0000, 0xc27b, 0x0000, 0x4d7b, 0x3049, + 0x3a60, 0x423c, 0x0000, 0x3c5d, 0xc27c, 0xc27d, 0x3e73, 0x0000, + 0x0000, 0x5b3b, 0x0000, 0x0000, 0x454e, 0xc27e, 0x5b39, 0x422b, + 0x5b3a, 0x3e72, 0x4c5d, 0x5b3c, 0x5b3d, 0x4d68, 0xc321, 0x0000, + 0x0000, 0x0000, 0x5b42, 0x0000, 0xc322, 0x393a, 0xc323, 0x4755, + 0x5b3f, 0x456c, 0x5a5e, 0x5a62, 0xc324, 0x354f, 0xc325, 0x4747, + 0x0000, 0x0000, 0x0000, 0xc326, 0x5b41, 0x0000, 0x3e3e, 0x4844, + 0x0000, 0xc327, 0x0000, 0x0000, 0xc328, 0x5b47, 0x0000, 0x487a, + 0x0000, 0x5b3e, 0x0000, 0x5b44, 0x5b43, 0x0000, 0xc329, 0xc32a, + 0x404f, 0xc32b, 0x0000, 0xc32c, 0x0000, 0x4b6d, 0xc32d, 0x4e53, + 0xc32e, 0xc32f, 0x4b67, 0xc330, 0x324c, 0x3b5e, 0x0000, 0x0000, + 0x4f48, 0x5b46, 0x3f75, 0x0000, 0x0000, 0x0000, 0x5b45, 0x0000, + 0x0000, 0x5b40, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x384f, + 0xc331, 0xc332, 0xc333, 0x5b4c, 0x5b4a, 0xc334, 0x324d, 0x5b48, + 0x5b4e, 0x5b54, 0x0000, 0xc335, 0xc336, 0xc337, 0x0000, 0x0000, + 0xc339, 0x4248, 0xc33a, 0xc33b, 0x4a41, 0xc33c, 0x5b56, 0x0000, + 0xc33d, 0xc33e, 0x4922, 0x0000, 0x0000, 0x0000, 0x5b55, 0x4770, + 0x4b3f, 0x343b, 0xc33f, 0x4077, 0x3d40, 0x0000, 0x0000, 0xc340, + 0x4453, 0xc341, 0x4d2e, 0x0000, 0xc342, 0x5b51, 0x5b50, 0x0000, + 0x0000, 0xc343, 0x5b52, 0x0000, 0x5b4f, 0x0000, 0xc344, 0x5b57, + 0x0000, 0x5b4d, 0x0000, 0x0000, 0x5b4b, 0x0000, 0x5b53, 0x5b49, + 0xc345, 0x436c, 0xc346, 0x4c78, 0x3c46, 0x3a74, 0xc347, 0xc348, + 0x0000, 0xc338, 0x0000, 0x3a3a, 0x0000, 0x0000, 0x4b6f, 0x3341 +}; + +static const unsigned short jis_from_unicode_68[] = { + 0x0000, 0x0000, 0x444e, 0x464a, 0x3149, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x4072, 0xc34a, 0x0000, 0x4034, 0x372a, + 0x0000, 0xc34b, 0x0000, 0x0000, 0x0000, 0xc34c, 0x5b59, 0xc34d, + 0x0000, 0x393b, 0x337c, 0x0000, 0x0000, 0x0000, 0x0000, 0xc34f, + 0xc34e, 0x5b5b, 0x3374, 0x5b61, 0xc350, 0xc351, 0x0000, 0xc352, + 0xc353, 0xc354, 0x5b5e, 0xc355, 0x4073, 0x0000, 0x0000, 0x0000, + 0x334b, 0x3a2c, 0x0000, 0xc356, 0x334a, 0x3a4f, 0x0000, 0xc357, + 0x5b5c, 0x3765, 0x374b, 0x456d, 0xc358, 0xc359, 0x5b5a, 0x0000, + 0x3046, 0x0000, 0xc35a, 0x0000, 0xc35b, 0x5b5d, 0x5b5f, 0x0000, + 0x364d, 0x372c, 0xc349, 0x343c, 0x354b, 0xc35c, 0x0000, 0xc35d, + 0xc35e, 0x5b62, 0x0000, 0xc35f, 0x3a79, 0x4b71, 0x0000, 0x3b37, + 0x0000, 0x0000, 0x0000, 0x5b63, 0x0000, 0x0000, 0x0000, 0x4930, + 0x0000, 0x0000, 0x0000, 0xc360, 0x0000, 0x0000, 0xc361, 0xc362, + 0xc363, 0xc364, 0xc365, 0x0000, 0x5b6f, 0xc366, 0x3233, 0x5b64, + 0x0000, 0xc367, 0xc368, 0xc369, 0xc36a, 0x0000, 0x5b75, 0x5b65, + 0x0000, 0x4e42, 0xc36b, 0x5b6c, 0xc36c, 0x475f, 0xc36d, 0x0000, + 0xc36e, 0x0000, 0x0000, 0x0000, 0x0000, 0x5b74, 0x0000, 0x5b67, + 0x0000, 0x0000, 0x0000, 0x3034, 0x5b69, 0x0000, 0xc36f, 0x393c, + 0xc370, 0x0000, 0xc371, 0x5b6b, 0xc372, 0x5b6a, 0x0000, 0x5b66, + 0x5b71, 0xc373, 0x3e3f, 0xc374, 0x0000, 0xc375, 0x546d, 0x3868, + 0x4d7c, 0xc376, 0xc377, 0x0000, 0x0000, 0x5b68, 0xc378, 0x4474, + 0x3323, 0x3a2d, 0xc379, 0x5b60, 0x0000, 0x5b70, 0x3361, 0x0000, + 0x0000, 0x5b6e, 0x5b72, 0xc37a, 0x456e, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x347e, 0xc37b, 0x5c32, 0x0000, + 0xc37c, 0x4c49, 0x5b77, 0x347d, 0xc37d, 0x5b7e, 0x0000, 0xc37e, + 0xc421, 0xc422, 0x4b40, 0xc423, 0x5c21, 0x5c23, 0xc424, 0x5c27, + 0x5b79, 0xc425, 0x432a, 0x0000, 0xc426, 0xc427, 0x0000, 0x456f, + 0x5c2b, 0x5b7c, 0x0000, 0x5c28, 0x0000, 0xc428, 0x0000, 0x5c22, + 0xc429, 0x0000, 0xc42a, 0xc42b, 0xc42c, 0xc42d, 0x3f39, 0x5c2c, + 0xc42e, 0xc42f, 0x4033, 0x0000, 0x0000, 0xc430, 0xc431, 0x0000, + 0x0000, 0x5c2a, 0x343d, 0xc432, 0xc433, 0xc434, 0x0000, 0x0000 +}; + +static const unsigned short jis_from_unicode_69[] = { + 0x4f50, 0x5b76, 0x0000, 0x0000, 0x5c26, 0x3058, 0xc435, 0x0000, + 0x5b78, 0xc436, 0xc437, 0x4c3a, 0x5b7d, 0x3f22, 0x4447, 0x5b73, + 0xc438, 0xc439, 0x5c25, 0xc43a, 0x0000, 0x0000, 0xc43b, 0xc43c, + 0x0000, 0x3f7a, 0x5c2f, 0x3371, 0x3821, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5c31, 0x5b7a, 0x5c30, 0x0000, 0x5c29, 0x5b7b, 0x0000, + 0x5c2d, 0x0000, 0x5c2e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5c3f, 0xc43d, 0x0000, 0xc43e, 0x464e, 0xc43f, 0x5c24, 0x0000, + 0xc440, 0x5c3b, 0x0000, 0xc441, 0x0000, 0x5c3d, 0x0000, 0x4458, + 0x0000, 0x0000, 0xc442, 0x0000, 0x0000, 0xc443, 0x0000, 0x0000, + 0x0000, 0xc444, 0x4d4c, 0x0000, 0x0000, 0x0000, 0xc445, 0x0000, + 0x0000, 0x0000, 0x0000, 0x4976, 0x5c38, 0x424a, 0x0000, 0xc446, + 0x0000, 0x5c3e, 0x413f, 0xc447, 0x5c35, 0x5c42, 0x5c41, 0x0000, + 0x466f, 0x5c40, 0x466a, 0xc448, 0xc449, 0xc44a, 0xc44b, 0x0000, + 0xc44c, 0xc44d, 0x5c44, 0x5c37, 0xc44e, 0x3648, 0x5c3a, 0x3d5d, + 0xc44f, 0xc450, 0xc451, 0x4760, 0x5c3c, 0x364b, 0x0000, 0x5c34, + 0x5c36, 0x5c33, 0xc452, 0xc453, 0x4f30, 0x335a, 0x5c39, 0xc454, + 0xc455, 0x5c43, 0x3335, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x3a67, 0x0000, 0x0000, 0xc456, 0x315d, 0x0000, + 0x0000, 0x5c54, 0xc457, 0x0000, 0x4f31, 0x5c57, 0xc458, 0x0000, + 0xc459, 0x0000, 0x0000, 0x3f3a, 0x5c56, 0x0000, 0x0000, 0x0000, + 0x5c55, 0xc45a, 0x0000, 0x0000, 0x0000, 0xc45b, 0xc45c, 0x5c52, + 0xc45d, 0x0000, 0x0000, 0xc45e, 0x0000, 0xc45f, 0x5c46, 0xc460, + 0x0000, 0x5c63, 0x5c45, 0x0000, 0x5c58, 0x0000, 0x0000, 0xc461, + 0xc462, 0x0000, 0xc463, 0x5c50, 0xc464, 0x0000, 0x5c4b, 0x5c48, + 0x0000, 0x5c49, 0x0000, 0x5c51, 0x0000, 0xc465, 0x0000, 0x7422, + 0xc466, 0x0000, 0x5c4e, 0x393d, 0x4448, 0x4164, 0x5c4c, 0x0000, + 0x5c47, 0xc467, 0x0000, 0x5c4a, 0x0000, 0x0000, 0xc468, 0xc469, + 0x4d4d, 0x4b6a, 0x0000, 0x0000, 0x0000, 0x5c4f, 0x5c59, 0x0000, + 0x0000, 0x0000, 0xc46a, 0x0000, 0x0000, 0xc46b, 0x0000, 0x5c61, + 0x5c5a, 0x0000, 0x0000, 0x5c67, 0x0000, 0x5c65, 0xc46c, 0xc46d, + 0x0000, 0xc46e, 0x5c60, 0xc46f, 0x0000, 0xc470, 0x0000, 0x0000, + 0x0000, 0x5c5f, 0x0000, 0x4450, 0x0000, 0x4165, 0xc471, 0x5c5d +}; + +static const unsigned short jis_from_unicode_6a[] = { + 0xc472, 0xc473, 0x5c5b, 0xc474, 0x0000, 0x5c62, 0x0000, 0x0000, + 0x0000, 0x0000, 0x5c68, 0x4875, 0x5c6e, 0x0000, 0x0000, 0xc475, + 0x0000, 0xc476, 0x5c69, 0x5c6c, 0x5c66, 0xc477, 0x0000, 0x4374, + 0x0000, 0x4938, 0xc478, 0x5c5c, 0x0000, 0xc479, 0x5c64, 0x3e40, + 0xc47a, 0x4c4f, 0x5c78, 0x5c6b, 0xc47b, 0x0000, 0x0000, 0x0000, + 0xc47c, 0x3822, 0x3223, 0x335f, 0x0000, 0x0000, 0x5c53, 0x0000, + 0xc47d, 0x0000, 0xc47e, 0x0000, 0xc521, 0x3e41, 0x5c70, 0xc522, + 0x5c77, 0x3c79, 0x3372, 0xc523, 0x0000, 0x432e, 0xc524, 0xc525, + 0x0000, 0x0000, 0x0000, 0x0000, 0x5c6d, 0xc526, 0xc527, 0x5c72, + 0x5c76, 0xc528, 0xc529, 0x3636, 0x0000, 0x0000, 0xc52a, 0x0000, + 0xc52b, 0xc52c, 0xc52d, 0x0000, 0x0000, 0xc52e, 0xc52f, 0x0000, + 0x354c, 0x5c74, 0x0000, 0xc530, 0x0000, 0x0000, 0x0000, 0x3521, + 0x0000, 0x464b, 0x5c73, 0x0000, 0xc531, 0x0000, 0x5c75, 0xc532, + 0x0000, 0x0000, 0xc533, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xc534, 0x5c6f, 0xc535, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5c71, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xc536, 0x3360, + 0x4349, 0xc537, 0x0000, 0xc538, 0x5c7c, 0x0000, 0xc539, 0xc53a, + 0x0000, 0xc53b, 0x0000, 0xc53c, 0x0000, 0x5c7a, 0x3869, 0x0000, + 0x5c79, 0xc53d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5d21, + 0x0000, 0x0000, 0x0000, 0xc53e, 0x5b58, 0xc53f, 0xc540, 0xc541, + 0x5c7b, 0x0000, 0x5c7d, 0x5c7e, 0x0000, 0xc542, 0x0000, 0x0000, + 0x0000, 0x0000, 0x5d2c, 0xc543, 0x5d28, 0x0000, 0x5b6d, 0xc544, + 0xc545, 0xc546, 0x0000, 0x5d27, 0xc547, 0x0000, 0x0000, 0x0000, + 0x5d26, 0x0000, 0x0000, 0x5d23, 0x0000, 0xc548, 0xc549, 0xc54a, + 0x0000, 0x5c6a, 0x5d25, 0x5d24, 0x0000, 0x0000, 0xc54b, 0x0000, + 0xc54d, 0xc54c, 0x0000, 0x0000, 0xc54e, 0x0000, 0x0000, 0x0000, + 0xc54f, 0x5d2a, 0x0000, 0x4f26, 0xc550, 0xc551, 0xc552, 0x0000, + 0x0000, 0x0000, 0x5d2d, 0x367b, 0xc553, 0xc554, 0x5d29, 0x5d2b, + 0x0000, 0x0000, 0x0000, 0x0000, 0xc555, 0x0000, 0x0000, 0xc556, + 0x4827, 0x0000, 0x5d2e, 0x0000, 0xc557, 0x0000, 0x0000, 0x0000, + 0xc558, 0xc559, 0xc55a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x5d32, 0x5d2f, 0xc55b, 0xc55c, 0x0000, 0x0000 +}; + +static const unsigned short jis_from_unicode_6b[] = { + 0x0000, 0x0000, 0xc55d, 0xc55e, 0x4d73, 0x5d30, 0xc55f, 0xc560, + 0x0000, 0xc561, 0x5c5e, 0x0000, 0x0000, 0x0000, 0x0000, 0xc562, + 0xc563, 0xc564, 0x5d33, 0x0000, 0x0000, 0x0000, 0x5d34, 0xc565, + 0x0000, 0x0000, 0x0000, 0xc566, 0x0000, 0x3135, 0xc567, 0x5d36, + 0x3767, 0x3c21, 0x0000, 0x3655, 0xc568, 0x0000, 0x0000, 0x3224, + 0xc569, 0x0000, 0x0000, 0xc56a, 0xc56b, 0x0000, 0x0000, 0xc56c, + 0x0000, 0x0000, 0x4d5f, 0x0000, 0x0000, 0xc56d, 0xc56e, 0x5d38, + 0x5d37, 0x5d3a, 0x353d, 0xc56f, 0x0000, 0x3656, 0x343e, 0xc570, + 0x0000, 0x0000, 0x0000, 0x5d3d, 0x0000, 0x0000, 0xc571, 0x5d3c, + 0x0000, 0x5d3e, 0xc572, 0x0000, 0x324e, 0xc573, 0x4337, 0x0000, + 0x5d3f, 0x0000, 0xc574, 0x343f, 0x5d41, 0x0000, 0xc575, 0x0000, + 0xc576, 0x5d40, 0x0000, 0x5d42, 0x0000, 0xc577, 0x0000, 0x5d43, + 0xc578, 0x5d44, 0x3b5f, 0x4035, 0x3a21, 0x0000, 0x4970, 0xc579, + 0x0000, 0x4a62, 0x4f44, 0xc57a, 0x0000, 0x0000, 0xc57b, 0x3b75, + 0xc57c, 0x0000, 0x0000, 0x3a50, 0x4e72, 0xc57d, 0x0000, 0x0000, + 0x5d45, 0x5d46, 0x0000, 0x3b60, 0x0000, 0xc57e, 0xc621, 0x5d47, + 0x5d48, 0x0000, 0xc622, 0x5d4a, 0x5d49, 0xc623, 0x4b58, 0x0000, + 0x0000, 0x3d5e, 0x3c6c, 0x3b44, 0x0000, 0x5d4b, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5d4d, 0x3f23, 0xc624, + 0x5d4c, 0x0000, 0x0000, 0xc625, 0x0000, 0x0000, 0x5d4e, 0xc626, + 0xc627, 0x0000, 0xc628, 0xc629, 0x5d4f, 0x0000, 0x0000, 0x0000, + 0xc62a, 0xc62b, 0x5d50, 0x5d51, 0xc62c, 0xc62d, 0xc62e, 0x5d52, + 0xc62f, 0x5d54, 0x5d53, 0x5d55, 0x3225, 0x434a, 0x0000, 0x5d56, + 0xc630, 0xc631, 0x3b26, 0x334c, 0x5d57, 0xc632, 0xc633, 0x4542, + 0x544c, 0x0000, 0x0000, 0xc634, 0xc635, 0x3523, 0x5d58, 0x0000, + 0x0000, 0xc636, 0x0000, 0x5d59, 0xc637, 0x4a6c, 0x4b68, 0x0000, + 0x0000, 0x0000, 0x4647, 0x5d5a, 0x4866, 0x0000, 0xc638, 0x0000, + 0x487b, 0x0000, 0xc639, 0x4c53, 0x0000, 0x0000, 0x0000, 0x5d5b, + 0x0000, 0xc63a, 0x0000, 0xc63b, 0x0000, 0x0000, 0xc63c, 0xc63d, + 0x0000, 0x0000, 0x0000, 0x5d5d, 0x5d5c, 0x0000, 0xc63e, 0x5d5f, + 0x0000, 0xc63f, 0x0000, 0x5d5e, 0x0000, 0x0000, 0x0000, 0xc640, + 0x0000, 0xc641, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xc642 +}; + +static const unsigned short jis_from_unicode_6c[] = { + 0x0000, 0x0000, 0xc643, 0x0000, 0xc644, 0xc645, 0x0000, 0x0000, + 0x5d61, 0xc646, 0x0000, 0x0000, 0x0000, 0xc647, 0xc648, 0x3b61, + 0xc649, 0x4c31, 0xc64a, 0x5d62, 0x5d63, 0x0000, 0x0000, 0x3524, + 0x0000, 0xc64b, 0x0000, 0x5d64, 0x0000, 0x0000, 0x0000, 0xc64c, + 0x0000, 0x0000, 0x0000, 0x5d66, 0x5d65, 0x0000, 0xc64d, 0xc64e, + 0xc64f, 0x0000, 0x0000, 0x0000, 0xc650, 0x0000, 0xc651, 0x0000, + 0x0000, 0x0000, 0x0000, 0xc652, 0x3f65, 0xc653, 0xc654, 0x4939, + 0x314a, 0x0000, 0xc655, 0xc656, 0x0000, 0x0000, 0x4845, 0xc657, + 0x4475, 0x3d41, 0x3561, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xc658, 0xc659, 0x0000, 0xc65a, 0x4846, 0xc65b, + 0x3c2e, 0x0000, 0xc65c, 0x0000, 0xc65d, 0x5d68, 0x0000, 0x3440, + 0x0000, 0xc65e, 0x3178, 0xc65f, 0xc660, 0x4672, 0x5d67, 0x393e, + 0x4353, 0x0000, 0x5d69, 0x0000, 0x0000, 0x0000, 0x0000, 0xc736, + 0x5d71, 0x0000, 0x5d6a, 0xc661, 0x0000, 0xc662, 0x0000, 0xc663, + 0x4241, 0x0000, 0x3562, 0x5d72, 0xc664, 0x0000, 0xc665, 0x0000, + 0xc666, 0xc667, 0x3768, 0xc668, 0x0000, 0x3525, 0x5d70, 0x0000, + 0x0000, 0x5d6e, 0x5d6b, 0x4d60, 0x0000, 0xc669, 0xc66a, 0xc66b, + 0x4440, 0xc66c, 0x0000, 0x0000, 0x4659, 0x5d6c, 0x0000, 0x0000, + 0x5d74, 0x0000, 0x5d73, 0x3723, 0xc66d, 0xc66e, 0x322d, 0xc66f, + 0xc670, 0x3a3b, 0x5d6d, 0x5d6f, 0xc671, 0x0000, 0x0000, 0xc672, + 0x0000, 0x4b57, 0x4274, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x4b77, 0x0000, 0x0000, 0x5d7c, 0x0000, + 0xc673, 0x5d7d, 0xc674, 0x324f, 0xc675, 0x0000, 0x0000, 0x0000, + 0x4a28, 0x4c7d, 0x5e21, 0x3c23, 0x3e42, 0x5d78, 0x5d7e, 0x3168, + 0x0000, 0x3637, 0xc676, 0x0000, 0x5d75, 0x5d7a, 0xc677, 0x0000, + 0x0000, 0x4074, 0x4771, 0x0000, 0x4867, 0xc678, 0x0000, 0xc679, + 0xc67a, 0xc67b, 0xc67c, 0x5d77, 0xc67d, 0x4b21, 0xc67e, 0x5d79, + 0x0000, 0x5e24, 0xc721, 0x5e22, 0xc722, 0x5d7b, 0x0000, 0x0000, + 0xc723, 0x4b22, 0x4748, 0x3563, 0x0000, 0x4525, 0x0000, 0xc724, + 0x436d, 0xc725, 0x5e25, 0xc726, 0xc727, 0x0000, 0xc728, 0x5e23, + 0x4259, 0x5d76, 0xc729, 0x314b, 0xc72a, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short jis_from_unicode_6d[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0xc72b, 0x0000, 0x0000, 0xc72c, + 0x0000, 0x0000, 0xc72d, 0x4d4e, 0x5e30, 0x0000, 0xc72e, 0xc72f, + 0x0000, 0xc730, 0x5e2f, 0xc731, 0x0000, 0x0000, 0x0000, 0x4076, + 0x0000, 0x5e2c, 0xc732, 0x4d6c, 0x0000, 0x0000, 0x4636, 0x5e26, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4445, 0xc733, 0xc734, + 0xc735, 0x314c, 0x393f, 0x5e29, 0x0000, 0x0000, 0xc737, 0xc738, + 0x0000, 0xc739, 0x3d27, 0x5e2e, 0x0000, 0x5e2d, 0x5e28, 0x0000, + 0x5e2b, 0xc73a, 0x0000, 0x3368, 0xc73b, 0x5e2a, 0x4749, 0xc73c, + 0x0000, 0x4e2e, 0x0000, 0x0000, 0x3e74, 0x4075, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xc73d, + 0x0000, 0x5e36, 0x5e34, 0x0000, 0x494d, 0x0000, 0xc73e, 0xc73f, + 0x0000, 0xc740, 0x0000, 0x5e31, 0x5e33, 0xc741, 0x313a, 0xc742, + 0x0000, 0x3940, 0x4f32, 0x0000, 0x333d, 0x0000, 0x4962, 0xc743, + 0xc744, 0x0000, 0x0000, 0x0000, 0x4d61, 0x0000, 0x0000, 0x3324, + 0x3f3b, 0x5e35, 0x0000, 0x0000, 0xc745, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xc746, 0x0000, 0x0000, 0x5e3a, 0x0000, 0xc747, + 0x3e43, 0x0000, 0x0000, 0x0000, 0x4d30, 0x0000, 0x5e37, 0x0000, + 0x0000, 0xc748, 0xc749, 0x5e32, 0xc74a, 0x5e38, 0xc74b, 0xc74c, + 0xc74d, 0x4e5e, 0x0000, 0x4573, 0x4642, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xc74e, 0x0000, 0xc74f, 0x0000, 0x0000, 0x3336, + 0x0000, 0x0000, 0x3155, 0x0000, 0xc750, 0x5e3e, 0x0000, 0xc751, + 0x5e41, 0xc752, 0x0000, 0x0000, 0x4e43, 0xc753, 0x0000, 0xc754, + 0x4d64, 0x0000, 0x0000, 0x0000, 0xc755, 0x5e48, 0x5e42, 0x5e3f, + 0xc756, 0x0000, 0xc757, 0x4e54, 0x5e45, 0x0000, 0xc758, 0xc759, + 0x0000, 0x3d4a, 0x5e47, 0x0000, 0x0000, 0x5e4c, 0xc75a, 0x0000, + 0x4571, 0x5e4a, 0x0000, 0xc75b, 0x0000, 0xc75c, 0x5e44, 0xc75d, + 0xc75e, 0x4338, 0xc75f, 0x0000, 0x5e4b, 0xc760, 0x5e40, 0x0000, + 0x5e46, 0xc761, 0x5e4d, 0x307c, 0x5e43, 0x0000, 0x5e4e, 0xc762, + 0xc763, 0x3f3c, 0x0000, 0x3d5f, 0xc764, 0x4a25, 0xc765, 0x3a2e, + 0x0000, 0x5e3b, 0x5e49, 0x453a, 0xc766, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short jis_from_unicode_6e[] = { + 0xc767, 0x0000, 0x0000, 0x0000, 0xc768, 0x4036, 0x0000, 0x3369, + 0x3a51, 0x3e44, 0x5e3d, 0x3d42, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x374c, 0x0000, 0x5e3c, 0x0000, 0x0000, + 0x0000, 0x5e52, 0x3d6d, 0x383a, 0x0000, 0x5e61, 0xc769, 0x5e5b, + 0x3574, 0x454f, 0xc76a, 0x5e56, 0x5e5f, 0x302f, 0x3132, 0xc76b, + 0x0000, 0x3239, 0x0000, 0x5e58, 0x422c, 0x5e4f, 0x5e51, 0x3941, + 0x0000, 0x0000, 0xc76c, 0x0000, 0x0000, 0x0000, 0xc76d, 0x0000, + 0x5e62, 0xc76e, 0x5e5d, 0xc76f, 0xc770, 0x0000, 0x5e55, 0x0000, + 0x0000, 0x0000, 0x0000, 0x5e5c, 0xc771, 0xc772, 0x0000, 0x0000, + 0xc773, 0xc774, 0x4c2b, 0xc775, 0x0000, 0x5e5a, 0x5e5e, 0xc776, + 0x0000, 0xc777, 0xc778, 0xc779, 0xc77a, 0x0000, 0x3850, 0xc77b, + 0x3e45, 0x0000, 0x0000, 0x4339, 0xc77c, 0xc77d, 0xc77e, 0x5e54, + 0x0000, 0x0000, 0xc821, 0xc822, 0x0000, 0x0000, 0x0000, 0x4d2f, + 0xc823, 0x0000, 0x0000, 0x5e57, 0x0000, 0x0000, 0x5e50, 0x4572, + 0x0000, 0x0000, 0x5e53, 0xc824, 0x0000, 0x0000, 0x5e59, 0x0000, + 0x0000, 0x0000, 0x0000, 0xc825, 0x0000, 0xc826, 0x4f51, 0x3c3e, + 0x4b7e, 0x0000, 0x5e63, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x482e, 0xc827, 0x0000, 0x5e6f, + 0x383b, 0x0000, 0x0000, 0xc828, 0x0000, 0x0000, 0x3d60, 0x0000, + 0x5e65, 0xc829, 0x0000, 0x0000, 0x4e2f, 0x3942, 0x0000, 0x5e72, + 0xc82a, 0x0000, 0x306e, 0x0000, 0x0000, 0x5e70, 0x0000, 0xc82b, + 0x0000, 0x0000, 0x5e64, 0x0000, 0x0000, 0xc82c, 0xc82d, 0x5e6a, + 0x0000, 0xc82e, 0x5e6c, 0xc82f, 0x0000, 0x0000, 0x4d4f, 0x5e67, + 0x0000, 0x0000, 0x452e, 0xc830, 0x0000, 0x5e69, 0x0000, 0xc831, + 0xc832, 0xc833, 0x5e71, 0xc834, 0x5e6b, 0x4c47, 0x0000, 0xc835, + 0xc836, 0x5e66, 0xc837, 0x3c22, 0x5e7e, 0xc838, 0xc839, 0xc83a, + 0x0000, 0x336a, 0x0000, 0x5e68, 0x5e6d, 0x5e6e, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x426c, 0x425a, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xc83b, 0x5e76, 0xc83c, 0xc83d, 0x5e7c, + 0x0000, 0x0000, 0x5e7a, 0x0000, 0x4529, 0x0000, 0x0000, 0x5f23, + 0x5e77, 0xc83e, 0x0000, 0xc83f, 0x0000, 0xc840, 0x5e78, 0x5e60 +}; + +static const unsigned short jis_from_unicode_6f[] = { + 0x0000, 0x3579, 0x493a, 0x0000, 0xc841, 0x0000, 0x3c3f, 0x0000, + 0xc842, 0x3977, 0xc843, 0x0000, 0xc844, 0xc845, 0x0000, 0x4f33, + 0x0000, 0x5e74, 0x0000, 0x5f22, 0x3169, 0x4166, 0xc846, 0x0000, + 0xc847, 0x0000, 0xc848, 0xc849, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4779, 0x0000, 0x3441, 0x4e7a, 0x0000, 0x0000, 0xc84a, 0x0000, + 0x0000, 0xc84b, 0xc84c, 0x4c21, 0x4452, 0xc853, 0x0000, 0xc84d, + 0xc84e, 0x5e7b, 0x5e7d, 0xc84f, 0x0000, 0x0000, 0xc850, 0x0000, + 0x4132, 0x0000, 0x0000, 0xc851, 0xc852, 0x0000, 0x5f21, 0x5e79, + 0x0000, 0x5e73, 0x0000, 0x0000, 0x0000, 0x3443, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xc854, + 0x0000, 0xc855, 0xc856, 0xc857, 0x3769, 0x0000, 0x0000, 0xc858, + 0x5f2f, 0xc859, 0xc85a, 0x5f2a, 0x4078, 0xc85b, 0xc85c, 0x3363, + 0x0000, 0xc85d, 0xc85e, 0x0000, 0x3d61, 0x0000, 0x5f33, 0x0000, + 0xc85f, 0x0000, 0x0000, 0x0000, 0xc860, 0x5f2c, 0x442c, 0x5f29, + 0x4459, 0x0000, 0x0000, 0x0000, 0x5f4c, 0x0000, 0x0000, 0x0000, + 0x5f26, 0x0000, 0x5f25, 0x0000, 0x5f2e, 0xc861, 0xc862, 0x0000, + 0x5f28, 0x5f27, 0x5f2d, 0xc863, 0x4021, 0x0000, 0x5f24, 0xc864, + 0xc865, 0x0000, 0x0000, 0xc866, 0xc867, 0xc868, 0x5f30, 0x0000, + 0xc869, 0x5f31, 0xc86a, 0xc86b, 0xc86c, 0x0000, 0xc86d, 0x3442, + 0x0000, 0x0000, 0xc86e, 0x0000, 0x0000, 0x0000, 0x0000, 0xc86f, + 0xc870, 0x5f36, 0x0000, 0x5f35, 0x5f37, 0xc871, 0xc872, 0xc873, + 0xc874, 0x0000, 0x5f3a, 0x0000, 0x0000, 0x0000, 0xc875, 0xc876, + 0xc877, 0x4543, 0x0000, 0x5f34, 0x0000, 0xc878, 0xc879, 0x0000, + 0x0000, 0x5f38, 0x0000, 0x0000, 0xc87a, 0x0000, 0x0000, 0x0000, + 0x3763, 0x4279, 0x5f32, 0x473b, 0x0000, 0xc87b, 0x5f39, 0xc87c, + 0xc87d, 0x0000, 0xc87e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x5f3e, 0x5f3c, 0x0000, 0x0000, + 0x5f3f, 0x0000, 0xc921, 0x5f42, 0x0000, 0x0000, 0xc922, 0x5f3b, + 0x396a, 0x4728, 0x0000, 0x0000, 0x5e39, 0x0000, 0x0000, 0x0000, + 0xc923, 0xc924, 0x0000, 0x4d74, 0x5f3d, 0x0000, 0x5f41, 0x4275, + 0xc925, 0x5f40, 0x0000, 0x5f2b, 0x0000, 0xc926, 0x6f69, 0x0000, + 0x0000, 0xc927, 0x5f45, 0x0000, 0xc928, 0xc929, 0x5f49, 0x0000 +}; + +static const unsigned short jis_from_unicode_70[] = { + 0xc92a, 0x5f47, 0x0000, 0x0000, 0x0000, 0xc92b, 0xc92c, 0xc92d, + 0x0000, 0x5f43, 0x0000, 0x5f44, 0x0000, 0xc92e, 0x0000, 0x5f48, + 0x0000, 0x5f46, 0x0000, 0x0000, 0x0000, 0x494e, 0x0000, 0xc92f, + 0x5f4e, 0x0000, 0x5f4b, 0x5f4a, 0x0000, 0x5f4d, 0x4654, 0x5f4f, + 0xc930, 0x0000, 0x0000, 0xc931, 0x0000, 0x0000, 0x4375, 0x426d, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4025, 0x0000, 0x0000, 0xc932, + 0x5f50, 0x0000, 0x5f52, 0x0000, 0xc933, 0x0000, 0x0000, 0xc934, + 0x0000, 0xc935, 0x0000, 0x0000, 0xc936, 0x0000, 0x5f51, 0x0000, + 0x0000, 0x0000, 0x0000, 0xc937, 0xc938, 0x0000, 0x0000, 0x0000, + 0xc939, 0xc93a, 0xc93b, 0xc93c, 0x5e75, 0x0000, 0xc941, 0x0000, + 0x0000, 0x5f53, 0x0000, 0x0000, 0xc93d, 0xc93e, 0x0000, 0x0000, + 0x4667, 0x0000, 0x0000, 0x0000, 0x0000, 0xc93f, 0xc940, 0x0000, + 0x0000, 0x0000, 0x0000, 0x5f54, 0xc942, 0xc943, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x3250, 0xc944, 0x0000, 0xc945, 0x4574, + 0x3325, 0x0000, 0x0000, 0x0000, 0x0000, 0xc946, 0xc947, 0x0000, + 0x3564, 0x0000, 0x0000, 0x0000, 0x3c5e, 0x3a52, 0xc948, 0x0000, + 0x0000, 0xc949, 0x0000, 0x0000, 0x0000, 0xc94a, 0xc94b, 0x0000, + 0x0000, 0x4f27, 0x3f66, 0x0000, 0x0000, 0x0000, 0x316a, 0x0000, + 0x0000, 0x0000, 0x5f56, 0x0000, 0xc94c, 0xc94d, 0xc94e, 0xc94f, + 0xc950, 0x5f55, 0x0000, 0xc951, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xc952, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xc953, 0x5f59, 0x433a, 0x5f5c, 0x5f57, + 0xc954, 0xc955, 0x0000, 0x5f5b, 0xc956, 0x0000, 0x0000, 0xc957, + 0x5f5a, 0x4540, 0x3059, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4e75, 0x0000, 0xc958, 0x5f5e, 0x0000, 0x0000, 0x0000, 0x3128, + 0x0000, 0xc959, 0x0000, 0xc95a, 0xc95b, 0xc95c, 0xc95d, 0x0000, + 0xc95e, 0x5f60, 0x0000, 0x0000, 0xc95f, 0x5f5f, 0x0000, 0x5f5d, + 0x0000, 0x0000, 0x0000, 0x0000, 0xc960, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5f58, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x4b23, 0xc961, 0x0000, 0x0000, 0x5f62, 0x0000, 0x0000 +}; + +static const unsigned short jis_from_unicode_71[] = { + 0x0000, 0x0000, 0x0000, 0xc962, 0xc963, 0xc964, 0xc965, 0xc966, + 0x0000, 0x5f61, 0x0000, 0xc967, 0xc968, 0x0000, 0x0000, 0xc969, + 0x0000, 0x0000, 0x0000, 0x0000, 0x316b, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5f64, 0x4a32, 0x0000, 0x5f63, 0x0000, 0xc96a, 0x0000, + 0xc96b, 0x4c35, 0x0000, 0x0000, 0x0000, 0x0000, 0x3e47, 0x0000, + 0x0000, 0x0000, 0x0000, 0xc96c, 0x0000, 0xc96d, 0x0000, 0xc96e, + 0xc96f, 0xc970, 0x0000, 0x0000, 0x0000, 0x0000, 0x4133, 0x0000, + 0xc971, 0x0000, 0x0000, 0x0000, 0x3e46, 0x0000, 0x0000, 0x0000, + 0x0000, 0xc972, 0x0000, 0x0000, 0x0000, 0xc973, 0xc974, 0xc975, + 0x0000, 0x4e7b, 0xc976, 0xc977, 0x5f6a, 0x0000, 0x4079, 0x0000, + 0xc978, 0x0000, 0xc979, 0x0000, 0x0000, 0x5f66, 0x5f6b, 0xc97a, + 0x0000, 0x316c, 0xc97b, 0x0000, 0xc97c, 0x0000, 0xc97d, 0x0000, + 0xc97e, 0x0000, 0x5f69, 0x0000, 0x4761, 0x5f65, 0x5f68, 0x3e48, + 0xca21, 0x4851, 0x0000, 0x0000, 0x5f6c, 0x0000, 0x3c51, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xca22, 0x0000, 0x0000, 0x0000, 0x407a, 0x0000, 0x0000, + 0xca23, 0x0000, 0x0000, 0x0000, 0x5f6f, 0xca24, 0x0000, 0xca25, + 0x5f67, 0x0000, 0x3727, 0x0000, 0xca26, 0x0000, 0x0000, 0x5f6d, + 0x0000, 0x0000, 0xca27, 0x0000, 0x4d50, 0x5f70, 0x0000, 0x0000, + 0x0000, 0x7426, 0xca28, 0xca29, 0x0000, 0x0000, 0x0000, 0x3d4f, + 0xca2a, 0x0000, 0xca2b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5f71, 0x0000, 0x0000, 0x0000, 0x5f72, 0x0000, 0x0000, 0xca2c, + 0xca2d, 0x472e, 0xca2e, 0xca2f, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5f74, 0xca30, 0x0000, 0x0000, 0x0000, 0x5f75, 0xca31, + 0xca32, 0xca33, 0x0000, 0x4733, 0xca34, 0x0000, 0x0000, 0x0000, + 0x4575, 0x5f77, 0x0000, 0xca35, 0xca36, 0x0000, 0x5f79, 0x0000, + 0x4e55, 0x0000, 0x5f76, 0xca37, 0x5f78, 0x316d, 0xca38, 0x5f73, + 0x0000, 0xca39, 0xca3a, 0x0000, 0xca3b, 0x0000, 0x0000, 0x535b, + 0x5f7a, 0x0000, 0x0000, 0x0000, 0x0000, 0x4167, 0x3b38, 0x5f7c, + 0x0000, 0x0000, 0x0000, 0x0000, 0x5f7b, 0x3f24, 0x5259, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5f7d, 0x0000, 0x0000, + 0xca3c, 0x6021, 0x0000, 0x5f6e, 0x5f7e, 0x0000, 0xca3d, 0x6022 +}; + +static const unsigned short jis_from_unicode_72[] = { + 0xca3e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x477a, 0xca3f, + 0xca40, 0xca41, 0x0000, 0x0000, 0x0000, 0x6023, 0x0000, 0x0000, + 0x6024, 0x0000, 0x0000, 0xca42, 0x0000, 0x0000, 0x0000, 0xca43, + 0x0000, 0x0000, 0xca44, 0x6025, 0x0000, 0xca45, 0x0000, 0xca46, + 0x0000, 0x0000, 0x0000, 0x0000, 0xca47, 0x0000, 0x0000, 0x0000, + 0x6026, 0x0000, 0x445e, 0xca48, 0x6028, 0x6027, 0x0000, 0xca49, + 0x6029, 0x0000, 0x602a, 0x0000, 0xca4a, 0x3c5f, 0x4963, 0x0000, + 0xca4b, 0xca4c, 0x4c6c, 0x602b, 0x602c, 0x4156, 0x3c24, 0x602d, + 0x602e, 0xca4d, 0xca4e, 0xca4f, 0x0000, 0xca50, 0x602f, 0x4a52, + 0x4847, 0x0000, 0x0000, 0x6030, 0x4757, 0x0000, 0xca51, 0xca52, + 0xca53, 0x0000, 0x442d, 0xca54, 0x0000, 0xca55, 0xca56, 0x0000, + 0x6031, 0x3267, 0xca57, 0x356d, 0xca58, 0x4c46, 0xca59, 0x4c36, + 0xca5a, 0x3234, 0x4f34, 0xca5b, 0x0000, 0x0000, 0x0000, 0x4b52, + 0xca5c, 0x4a2a, 0x0000, 0xca5d, 0x0000, 0x0000, 0xca5e, 0xca5f, + 0x0000, 0xca60, 0x4037, 0x0000, 0x6032, 0x0000, 0x0000, 0xca61, + 0xca62, 0x4643, 0x0000, 0xca63, 0xca64, 0x3823, 0x6033, 0xca65, + 0x3a54, 0x6035, 0x6034, 0x0000, 0xca66, 0x0000, 0x0000, 0x6036, + 0x0000, 0xca67, 0x0000, 0x0000, 0x0000, 0xca68, 0xca69, 0x0000, + 0x0000, 0x0000, 0x6037, 0xca6a, 0x0000, 0x0000, 0x6038, 0x0000, + 0x0000, 0x0000, 0x0000, 0xca6b, 0x0000, 0x0000, 0x0000, 0x0000, + 0x353e, 0x0000, 0x6039, 0x0000, 0x0000, 0x0000, 0x0000, 0x603a, + 0xca6c, 0x0000, 0x0000, 0x0000, 0x3824, 0xca6d, 0xca6e, 0x4848, + 0x0000, 0xca6f, 0x603c, 0x0000, 0xca70, 0x0000, 0x3e75, 0x0000, + 0x0000, 0x603b, 0x0000, 0x0000, 0x0000, 0x0000, 0xca71, 0x0000, + 0x0000, 0xca72, 0x3638, 0x603d, 0x603f, 0x0000, 0x603e, 0xca73, + 0x0000, 0xca74, 0x0000, 0x0000, 0xca75, 0x0000, 0x6040, 0x0000, + 0x3851, 0x0000, 0x6041, 0x0000, 0x0000, 0xca76, 0xca77, 0x3669, + 0xca78, 0x4140, 0x0000, 0x397d, 0x0000, 0x0000, 0x0000, 0xca79, + 0x6043, 0x6044, 0x6042, 0x0000, 0x0000, 0xca7a, 0x0000, 0x0000, + 0x0000, 0x3c6d, 0x0000, 0x0000, 0x4648, 0x3639, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xca7b, 0xca7c, 0x0000, 0x0000, 0x6046, + 0x432c, 0x6045, 0xca7d, 0xca7e, 0x4f35, 0x4762, 0xcb21, 0x0000 +}; + +static const unsigned short jis_from_unicode_73[] = { + 0x0000, 0x0000, 0xcb22, 0x0000, 0xcb23, 0xcb24, 0x0000, 0xcb25, + 0x0000, 0x0000, 0x6049, 0xcb26, 0x0000, 0xcb27, 0x0000, 0x0000, + 0x0000, 0x0000, 0xcb28, 0xcb29, 0x0000, 0x0000, 0x604b, 0x6048, + 0xcb2a, 0xcb2b, 0x0000, 0x4c54, 0x604a, 0x604c, 0xcb2c, 0x4e44, + 0x0000, 0x0000, 0xcb2d, 0x0000, 0xcb2e, 0x6050, 0x0000, 0xcb2f, + 0xcb30, 0x604f, 0x4376, 0x472d, 0xcb31, 0x0000, 0x3825, 0x604e, + 0x0000, 0xcb32, 0xcb33, 0x0000, 0x604d, 0xcb34, 0x4d31, 0x4d32, + 0x0000, 0x0000, 0xcb35, 0xcb36, 0x0000, 0xcb37, 0x6051, 0x316e, + 0x0000, 0x0000, 0x0000, 0xcb38, 0x3976, 0x3b62, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xcb39, 0x6052, 0x6053, + 0xcb3a, 0x0000, 0xcb3b, 0x0000, 0x0000, 0x0000, 0xcb3c, 0x6055, + 0xcb3d, 0x0000, 0x0000, 0x0000, 0x0000, 0xcb3e, 0xcb3f, 0xcb40, + 0xcb41, 0x0000, 0x0000, 0x3d43, 0x0000, 0x0000, 0xcb42, 0xcb43, + 0x6057, 0xcb44, 0x6056, 0xcb45, 0xcb46, 0x0000, 0xcb47, 0xcb48, + 0x6058, 0xcb49, 0x334d, 0x0000, 0x0000, 0x605a, 0x0000, 0xcb4a, + 0x6059, 0xcb4b, 0x605c, 0x605b, 0xcb4c, 0x0000, 0x0000, 0x0000, + 0xcb4d, 0xcb4e, 0x0000, 0xcb4f, 0x383c, 0xcb50, 0xcb51, 0x4e28, + 0x0000, 0x364c, 0x0000, 0x3226, 0x0000, 0x0000, 0xcb52, 0x0000, + 0xcb53, 0x0000, 0x0000, 0xcb54, 0x0000, 0xcb55, 0x366a, 0xcb56, + 0xcb57, 0x0000, 0x0000, 0x0000, 0xcb58, 0x0000, 0xcb59, 0xcb5a, + 0xcb5b, 0x0000, 0xcb5c, 0x0000, 0x0000, 0xcb5d, 0xcb5e, 0x0000, + 0x0000, 0x3461, 0xcb5f, 0xcb60, 0x0000, 0xcb61, 0x0000, 0x0000, + 0x0000, 0x0000, 0x4e68, 0x605e, 0x0000, 0xcb62, 0x0000, 0xcb63, + 0x0000, 0xcb64, 0x0000, 0x6060, 0xcb65, 0xcb66, 0x0000, 0xcb67, + 0x6061, 0x0000, 0x3251, 0x0000, 0x0000, 0xcb68, 0xcb69, 0x0000, + 0x605d, 0xcb6a, 0x3b39, 0xcb6b, 0xcb6c, 0x4441, 0x605f, 0xcb6d, + 0x0000, 0x0000, 0xcb6e, 0xcb6f, 0x0000, 0x0000, 0xcb70, 0x0000, + 0x0000, 0xcb71, 0x0000, 0x0000, 0x0000, 0xcb72, 0x6064, 0x0000, + 0x3c6e, 0xcb73, 0x0000, 0xcb74, 0x0000, 0x6062, 0xcb75, 0xcb76, + 0x0000, 0xcb77, 0x373e, 0x0000, 0x0000, 0x4849, 0x6063, 0x0000, + 0x0000, 0x607e, 0x0000, 0x0000, 0xcb78, 0xcb79, 0x0000, 0xcb7a, + 0x6069, 0xcb7b, 0xcb7c, 0xcb7d, 0x0000, 0xcb7e, 0x383d, 0xcc21 +}; + +static const unsigned short jis_from_unicode_74[] = { + 0xcc22, 0xcc23, 0x0000, 0x3565, 0xcc24, 0x6066, 0x4d7d, 0xcc25, + 0x0000, 0x4e30, 0xcc26, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xcc27, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xcc28, 0xcc29, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x4276, 0x0000, 0xcc2a, 0x6068, 0xcc2b, 0x0000, + 0xcc2c, 0xcc2d, 0xcc2e, 0xcc2f, 0xcc30, 0xcc31, 0xcc32, 0xcc33, + 0xcc34, 0xcc35, 0x606a, 0x4e56, 0x3657, 0x487c, 0x474a, 0x0000, + 0x0000, 0xcc36, 0x606b, 0x0000, 0x0000, 0x0000, 0x0000, 0x606d, + 0xcc37, 0x6070, 0x0000, 0xcc38, 0xcc39, 0x0000, 0xcc3a, 0xcc3b, + 0x0000, 0x0000, 0x0000, 0xcc3c, 0x0000, 0xcc3d, 0x0000, 0x0000, + 0x0000, 0xcc3e, 0xcc3f, 0x0000, 0x0000, 0x606c, 0x0000, 0xcc40, + 0x0000, 0x606f, 0x386a, 0x314d, 0x6071, 0xcc41, 0x3f70, 0x606e, + 0x4e5c, 0x0000, 0xcc42, 0x6074, 0x7424, 0x0000, 0xcc43, 0xcc44, + 0xcc45, 0x6072, 0x6075, 0xcc46, 0x0000, 0xcc47, 0xcc48, 0x6067, + 0x6073, 0xcc49, 0xcc4a, 0x3a3c, 0x0000, 0x0000, 0x6076, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6077, 0x0000, + 0xcc4b, 0xcc4c, 0x0000, 0x4d7e, 0x0000, 0xcc4d, 0xcc4e, 0xcc4f, + 0x0000, 0xcc50, 0x0000, 0x6078, 0x0000, 0x0000, 0x0000, 0xcc51, + 0xcc52, 0xcc53, 0xcc54, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xcc55, 0xcc56, 0xcc57, 0x0000, 0xcc58, 0x0000, 0x6079, 0xcc59, + 0xcc5a, 0xcc5b, 0x6065, 0xcc5c, 0x0000, 0x0000, 0xcc5d, 0x607a, + 0xcc5e, 0xcc5f, 0xcc60, 0xcc61, 0x0000, 0x0000, 0xcc62, 0xcc63, + 0x3444, 0xcc64, 0xcc65, 0x0000, 0x0000, 0xcc66, 0x0000, 0x0000, + 0x0000, 0xcc67, 0x0000, 0xcc68, 0x0000, 0x3c25, 0x0000, 0xcc69, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xcc6a, 0xcc6b, 0x607b, 0x0000, 0xcc6c, 0x0000, 0x0000, 0x607c, + 0xcc6d, 0x0000, 0x0000, 0xcc6e, 0x607d, 0x0000, 0x0000, 0x0000, + 0xcc6f, 0x0000, 0xcc70, 0xcc71, 0x313b, 0x0000, 0xcc72, 0xcc73, + 0x6121, 0x0000, 0x493b, 0x6122, 0xcc74, 0x0000, 0x3424, 0x6123, + 0xcc75, 0x6124, 0xcc76, 0xcc77, 0x0000, 0x0000, 0x6125, 0xcc78, + 0x6127, 0x6128, 0x6126, 0x0000, 0xcc79, 0x0000, 0x4953, 0x612a, + 0x6129, 0x0000, 0xcc7a, 0xcc7b, 0xcc7c, 0x0000, 0x0000, 0xcc7d +}; + +static const unsigned short jis_from_unicode_75[] = { + 0x0000, 0x0000, 0x0000, 0x612c, 0x612b, 0x612d, 0xcc7e, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x612e, 0x6130, 0x612f, 0x0000, + 0x0000, 0x3979, 0xcd21, 0x6132, 0x0000, 0x6131, 0xcd22, 0xcd23, + 0x3445, 0x0000, 0x3f53, 0x0000, 0x453c, 0x0000, 0x6133, 0x4038, + 0xcd24, 0xcd25, 0x0000, 0x3b3a, 0xcd26, 0x3179, 0x6134, 0xcd27, + 0x4d51, 0xcd28, 0xcd29, 0x4a63, 0x6135, 0x0000, 0x0000, 0xcd2a, + 0x4544, 0x4d33, 0x3943, 0x3f3d, 0x0000, 0x0000, 0xcd2b, 0x434b, + 0x5234, 0xcd2c, 0x442e, 0x3268, 0x6136, 0xcd2d, 0xcd2e, 0xcd2f, + 0xcd30, 0x0000, 0x0000, 0xcd31, 0x6137, 0x0000, 0x613c, 0xcd32, + 0xcd33, 0x613a, 0x6139, 0x5a42, 0x3326, 0x6138, 0xcd34, 0x305a, + 0xcd35, 0x482a, 0xcd36, 0x0000, 0x484a, 0x0000, 0x0000, 0xcd37, + 0x0000, 0x4e31, 0x613d, 0x613b, 0x435c, 0x4026, 0xcd38, 0xcd39, + 0x482b, 0xcd3a, 0x492d, 0x0000, 0x613f, 0x4e2c, 0x374d, 0x6140, + 0x0000, 0x613e, 0x4856, 0x6141, 0x0000, 0x6142, 0x0000, 0xcd3b, + 0x305b, 0xcd3c, 0x0000, 0x3e76, 0x6147, 0x0000, 0x6144, 0x466d, + 0x6143, 0xcd3d, 0xcd3e, 0xcd3f, 0xcd40, 0xcd41, 0xcd42, 0x3526, + 0x0000, 0xcd43, 0x614a, 0x0000, 0x0000, 0xcd44, 0x6145, 0x6146, + 0x0000, 0x6149, 0x6148, 0x4925, 0x0000, 0x0000, 0x4142, 0x4141, + 0xcd45, 0x353f, 0xcd46, 0xcd47, 0x614b, 0xcd48, 0x0000, 0x0000, + 0x0000, 0xcd49, 0x614c, 0x0000, 0xcd4a, 0x614d, 0x0000, 0x0000, + 0x0000, 0x0000, 0xcd4b, 0x614f, 0xcd4c, 0x614e, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x3156, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6157, 0x4868, 0x6151, 0xcd4d, 0x6153, 0x0000, 0x0000, + 0x6155, 0x3f3e, 0xcd4e, 0x0000, 0x6156, 0x6154, 0x3c40, 0xcd4f, + 0xcd50, 0xcd51, 0x6150, 0x6152, 0xcd52, 0x4942, 0xcd53, 0x3e49, + 0x0000, 0x0000, 0x6159, 0x0000, 0xcd54, 0x6158, 0xcd55, 0xcd56, + 0x0000, 0x0000, 0x615a, 0x0000, 0x3c26, 0x3a2f, 0x0000, 0xcd57, + 0x4577, 0x615b, 0x0000, 0x444b, 0xcd58, 0x0000, 0x615d, 0xcd59, + 0xcd5a, 0xcd5b, 0x4e21, 0x615c, 0xcd5c, 0x0000, 0x0000, 0xcd5d, + 0x0000, 0x4169, 0x0000, 0x0000, 0xcd5e, 0x0000, 0xcd5f, 0xcd60, + 0x6162, 0xcd61, 0x6164, 0x6165, 0x4354, 0x0000, 0x0000, 0x0000, + 0x0000, 0xcd62, 0x6163, 0x0000, 0x6160, 0x0000, 0x615e, 0x615f +}; + +static const unsigned short jis_from_unicode_76[] = { + 0xcd63, 0x6161, 0xcd64, 0xcd65, 0xcd66, 0x0000, 0x0000, 0xcd67, + 0xcd68, 0x6168, 0xcd69, 0x6166, 0xcd6a, 0x6167, 0x0000, 0xcd6b, + 0x0000, 0x0000, 0xcd6c, 0xcd6d, 0x0000, 0xcd6e, 0xcd6f, 0x0000, + 0x0000, 0xcd70, 0x0000, 0xcd71, 0xcd72, 0xcd73, 0xcd74, 0x6169, + 0x616b, 0x616c, 0x616d, 0xcd75, 0x616e, 0xcd76, 0xcd77, 0x616a, + 0x0000, 0xcd78, 0x0000, 0x0000, 0x0000, 0xcd79, 0x0000, 0x0000, + 0x6170, 0x0000, 0xcd7a, 0xcd7b, 0x616f, 0xcd7c, 0x0000, 0x0000, + 0xcd7d, 0xcd7e, 0xce21, 0x6171, 0xce22, 0x0000, 0x0000, 0x0000, + 0xce24, 0xce25, 0x4e45, 0xce26, 0xce27, 0xce28, 0x6174, 0x6172, + 0x6173, 0xce29, 0xce23, 0xce2a, 0x3462, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x4c7e, 0x0000, 0x0000, 0xce2b, 0x4a4a, 0x0000, + 0x6176, 0xce2c, 0x0000, 0x0000, 0x6175, 0x0000, 0x0000, 0xce2d, + 0x0000, 0x6177, 0x6178, 0x0000, 0xce2e, 0xce2f, 0x0000, 0x617c, + 0x6179, 0x617a, 0x617b, 0x0000, 0x617d, 0xce30, 0xce31, 0xce32, + 0x617e, 0xce33, 0x6221, 0x0000, 0xce34, 0x0000, 0x6222, 0x0000, + 0x6223, 0x0000, 0x482f, 0x4550, 0x6224, 0x4772, 0x4934, 0x0000, + 0x6225, 0xce35, 0x0000, 0x6226, 0x452a, 0xce36, 0x3327, 0x3944, + 0x6227, 0x0000, 0x0000, 0x6228, 0xce37, 0xce38, 0x6229, 0x0000, + 0x3b29, 0x0000, 0x0000, 0x622b, 0x0000, 0xce39, 0x622a, 0x0000, + 0x0000, 0x622c, 0x622d, 0xce3a, 0xce3b, 0xce3c, 0x0000, 0xce3d, + 0xce3e, 0x0000, 0xce3f, 0xce40, 0xce41, 0xce42, 0xce43, 0xce44, + 0xce45, 0x0000, 0xce46, 0x0000, 0x0000, 0xce47, 0x4869, 0x0000, + 0x622e, 0x0000, 0x0000, 0x0000, 0x622f, 0x0000, 0x0000, 0x7369, + 0x6230, 0x6231, 0x6232, 0x0000, 0x0000, 0xce48, 0x0000, 0x3b2e, + 0x0000, 0xce49, 0x6233, 0x4756, 0x0000, 0xce4a, 0x4b5f, 0x0000, + 0x314e, 0xce4b, 0x3157, 0xce4c, 0xce4d, 0x6234, 0xce4e, 0x0000, + 0x0000, 0x0000, 0x6236, 0x0000, 0xce4f, 0x0000, 0x6235, 0x4570, + 0x0000, 0xce50, 0x0000, 0x4039, 0x5d39, 0x0000, 0x6237, 0x4c41, + 0xce51, 0x6238, 0x0000, 0x3446, 0x4857, 0x6239, 0xce52, 0x623a, + 0xce53, 0x0000, 0x623b, 0x0000, 0xce54, 0x0000, 0x4c5c, 0x0000, + 0xce55, 0xce56, 0x4c55, 0x0000, 0x443e, 0x0000, 0xce57, 0x0000, + 0x416a, 0xce58, 0x0000, 0x623d, 0xce59, 0x0000, 0x3d62, 0x0000 +}; + +static const unsigned short jis_from_unicode_77[] = { + 0xce5a, 0x3e4a, 0x0000, 0x0000, 0x6240, 0x0000, 0xce5b, 0x623f, + 0x623e, 0x487d, 0xce5c, 0x3447, 0x3829, 0x0000, 0xce5d, 0x0000, + 0x0000, 0x0000, 0xce5e, 0x0000, 0xce5f, 0xce60, 0x0000, 0xce61, + 0x0000, 0xce62, 0xce63, 0x6246, 0xce64, 0x0000, 0x6243, 0x3f3f, + 0x4c32, 0x0000, 0xce65, 0x0000, 0x6242, 0x6244, 0x6245, 0x0000, + 0xce66, 0x6241, 0x0000, 0x0000, 0x0000, 0xce67, 0xce68, 0xce69, + 0x0000, 0x0000, 0x0000, 0x0000, 0xce6a, 0xce6b, 0xce6c, 0x6247, + 0x6248, 0xce6d, 0x442f, 0x0000, 0x3463, 0xce6e, 0xce6f, 0x0000, + 0x4365, 0x0000, 0xce70, 0x0000, 0x0000, 0xce71, 0xce72, 0x6249, + 0x0000, 0x0000, 0xce73, 0x0000, 0x0000, 0xce74, 0xce75, 0xce76, + 0x0000, 0x0000, 0xce77, 0x0000, 0x0000, 0x0000, 0xce78, 0xce79, + 0x0000, 0x0000, 0x624a, 0x624d, 0xce7a, 0x0000, 0xce7b, 0xce7c, + 0xce7d, 0x3f67, 0xce7e, 0x4644, 0xcf21, 0x624e, 0x4b53, 0xcf22, + 0x624b, 0x0000, 0xcf23, 0x624c, 0xcf24, 0x0000, 0x0000, 0x0000, + 0xcf25, 0x0000, 0xcf26, 0xcf27, 0xcf28, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6251, 0xcf29, 0x0000, 0x0000, 0xcf2a, 0x6250, 0x624f, + 0xcf2b, 0x0000, 0x0000, 0x0000, 0xcf2c, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x6253, 0xcf2d, 0xcf2e, 0x6252, 0x0000, + 0x0000, 0x6254, 0x0000, 0x0000, 0xcf2f, 0xcf30, 0xcf31, 0x0000, + 0x0000, 0x0000, 0xcf32, 0x0000, 0x0000, 0x0000, 0x6256, 0xcf33, + 0x6255, 0x0000, 0xcf34, 0x0000, 0x0000, 0x4a4d, 0x0000, 0xcf35, + 0x0000, 0x0000, 0xcf36, 0x0000, 0x3d56, 0x4e46, 0xcf37, 0xcf38, + 0x6257, 0xcf39, 0x0000, 0x4637, 0x0000, 0xcf3a, 0x6258, 0x0000, + 0x0000, 0x6259, 0x0000, 0x625d, 0x625b, 0x625c, 0xcf3b, 0x625a, + 0x0000, 0x0000, 0x0000, 0xcf3c, 0x0000, 0x0000, 0x0000, 0x625e, + 0x0000, 0xcf3d, 0x0000, 0x0000, 0x0000, 0x625f, 0x0000, 0x0000, + 0x0000, 0xcf3e, 0xcf3f, 0x0000, 0x0000, 0xcf40, 0x0000, 0x6260, + 0x0000, 0xcf41, 0x6261, 0x4c37, 0x6262, 0x0000, 0xcf42, 0xcf43, + 0xcf44, 0x0000, 0x4c70, 0x6263, 0xcf45, 0x434e, 0xcf46, 0x476a, + 0x0000, 0x366b, 0xcf47, 0x0000, 0xcf48, 0x433b, 0x6264, 0x363a, + 0xcf49, 0xcf4a, 0x0000, 0x4050, 0xcf4b, 0x0000, 0x0000, 0x0000, + 0xcf4c, 0x0000, 0x0000, 0xcf4d, 0x6265, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short jis_from_unicode_78[] = { + 0x0000, 0x0000, 0x3a3d, 0x0000, 0x0000, 0xcf4e, 0xcf4f, 0x0000, + 0x0000, 0xcf50, 0x0000, 0x0000, 0x6266, 0xcf51, 0xcf52, 0x0000, + 0x0000, 0xcf53, 0x6267, 0x0000, 0x3826, 0x3a55, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xcf54, 0x0000, 0x0000, + 0x6269, 0xcf55, 0xcf56, 0xcf57, 0x0000, 0x4556, 0x3a56, 0x354e, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xcf58, 0xcf59, 0x0000, + 0xcf5a, 0x0000, 0x4b24, 0x0000, 0x474b, 0xcf5b, 0x0000, 0xcf5c, + 0x0000, 0x0000, 0x4557, 0x0000, 0x0000, 0x0000, 0x0000, 0x395c, + 0x0000, 0x0000, 0x0000, 0xcf5d, 0xcf5e, 0x626b, 0x0000, 0xcf5f, + 0xcf60, 0x0000, 0x0000, 0x0000, 0xcf61, 0x0000, 0xcf62, 0x0000, + 0x0000, 0x0000, 0xcf63, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xcf64, 0x3e4b, 0xcf65, 0x0000, + 0xcf66, 0xcf67, 0x0000, 0xcf68, 0xcf69, 0x0000, 0x0000, 0x0000, + 0xcf6a, 0x0000, 0xcf6b, 0x4e32, 0x3945, 0x0000, 0xcf6c, 0x3827, + 0x0000, 0x0000, 0x4823, 0x0000, 0x626d, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xcf6d, 0x0000, 0x626f, 0x0000, 0xcf6e, 0x0000, + 0x0000, 0x386b, 0x0000, 0x0000, 0x0000, 0x0000, 0x626e, 0x4476, + 0x0000, 0x0000, 0xcf6f, 0x0000, 0x6271, 0x3337, 0x626c, 0xcf70, + 0x0000, 0x486a, 0x0000, 0x3130, 0xcf71, 0x3a6c, 0x0000, 0x4f52, + 0xcf72, 0x0000, 0x6270, 0x0000, 0x0000, 0xcf74, 0xcf75, 0xcf76, + 0x0000, 0xcf73, 0x0000, 0x6272, 0xcf77, 0x0000, 0x0000, 0x4a4b, + 0xcf78, 0x4059, 0x6274, 0x0000, 0xcf79, 0xcf7a, 0x0000, 0x6275, + 0xcf7b, 0xcf7c, 0xcf7d, 0xcf7e, 0x0000, 0x6273, 0x0000, 0x0000, + 0x0000, 0x0000, 0x334e, 0xd021, 0x627b, 0xd022, 0x627a, 0xd023, + 0x0000, 0x3c27, 0x0000, 0x0000, 0x0000, 0x627c, 0x6277, 0xd024, + 0xd025, 0xd026, 0x627d, 0x6278, 0xd027, 0x0000, 0xd028, 0x0000, + 0x4858, 0x6276, 0xd029, 0xd02a, 0x6279, 0xd02b, 0xd02c, 0x0000, + 0x0000, 0x0000, 0x6322, 0xd02e, 0x0000, 0x0000, 0x0000, 0xd02f, + 0xd030, 0xd031, 0x0000, 0x0000, 0xd02d, 0x0000, 0xd032, 0x6321, + 0x4b61, 0x0000, 0xd033, 0x0000, 0x627e, 0x0000, 0x0000, 0x306b, + 0x0000, 0x0000, 0xd034, 0xd035, 0x6324, 0x0000, 0xd037, 0xd038, + 0x0000, 0x0000, 0xd039, 0xd03a, 0x0000, 0x6323, 0x0000, 0xd03b +}; + +static const unsigned short jis_from_unicode_79[] = { + 0xd036, 0x3e4c, 0x0000, 0x0000, 0x0000, 0x0000, 0xd03c, 0x6325, + 0x0000, 0x0000, 0x0000, 0x0000, 0xd03d, 0x0000, 0x4143, 0x0000, + 0xd03e, 0x6327, 0x6326, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6328, 0xd03f, 0x0000, 0xd040, 0x0000, 0xd041, 0xd042, + 0xd043, 0x0000, 0x0000, 0x0000, 0x0000, 0xd044, 0x6268, 0xd045, + 0x0000, 0xd046, 0x626a, 0x632a, 0x6329, 0xd047, 0x0000, 0x0000, + 0x0000, 0xd048, 0x0000, 0x0000, 0xd049, 0xd04a, 0x0000, 0x0000, + 0x0000, 0x0000, 0x3c28, 0xd04b, 0x4e69, 0xd04c, 0x3c52, 0xd04d, + 0x632b, 0x3737, 0x0000, 0x0000, 0xd04e, 0xd04f, 0xd050, 0x3540, + 0x3527, 0x3b63, 0xd051, 0xd052, 0x0000, 0x0000, 0x0000, 0xd053, + 0x4d34, 0xd054, 0x0000, 0x6331, 0xd055, 0x6330, 0x4144, 0x632d, + 0xd056, 0x0000, 0x632f, 0xd057, 0xd058, 0x3d4b, 0x3f40, 0x632e, + 0x632c, 0x0000, 0x472a, 0x0000, 0x0000, 0x3e4d, 0x0000, 0xd059, + 0x493c, 0xd05a, 0x0000, 0xd05b, 0x0000, 0x3a57, 0x0000, 0x0000, + 0x0000, 0x0000, 0xd05c, 0x0000, 0x0000, 0x0000, 0x0000, 0x4578, + 0x0000, 0xd05d, 0x6332, 0xd05e, 0xd05f, 0x0000, 0xd060, 0x6333, + 0x6349, 0x3658, 0x0000, 0x0000, 0x4f3d, 0x4135, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6334, 0xd061, 0xd062, 0x3252, 0x4477, 0x4a21, + 0x0000, 0xd063, 0x0000, 0xd064, 0xd065, 0xd066, 0xd067, 0x0000, + 0xd068, 0x0000, 0x0000, 0xd069, 0xd06a, 0x6335, 0x0000, 0x0000, + 0x0000, 0xd06b, 0x0000, 0x0000, 0x0000, 0x0000, 0x357a, 0x6336, + 0xd06c, 0xd06d, 0x6338, 0xd06e, 0x0000, 0x0000, 0x6339, 0xd06f, + 0x4729, 0xd070, 0x0000, 0x633a, 0xd071, 0x0000, 0x0000, 0x0000, + 0xd072, 0x633b, 0x633c, 0xd073, 0x0000, 0x3659, 0x3253, 0x4645, + 0x3d28, 0x3b64, 0xd074, 0x0000, 0xd075, 0x0000, 0x0000, 0xd076, + 0xd077, 0x633d, 0xd078, 0x3d29, 0x0000, 0x0000, 0x0000, 0xd079, + 0x0000, 0x324a, 0x4943, 0x0000, 0xd07a, 0x633e, 0xd07b, 0x0000, + 0x486b, 0x0000, 0xd07c, 0x0000, 0x0000, 0xd07d, 0xd07e, 0x4145, + 0xd121, 0x6341, 0xd122, 0x6342, 0x4769, 0xd123, 0x3f41, 0x633f, + 0x0000, 0x4361, 0xd124, 0xd125, 0x6340, 0xd126, 0x0000, 0x0000, + 0x3e4e, 0xd127, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xd128, 0x0000, 0x0000, 0x305c, 0xd129, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short jis_from_unicode_7a[] = { + 0x3529, 0x0000, 0xd12a, 0xd12b, 0x0000, 0x0000, 0x0000, 0xd12c, + 0x6343, 0xd12d, 0xd12e, 0x4478, 0xd12f, 0x6344, 0x4047, 0x0000, + 0x0000, 0xd130, 0x0000, 0x0000, 0x4c2d, 0xd131, 0x0000, 0x4923, + 0x6345, 0x6346, 0x4355, 0xd132, 0x4e47, 0x0000, 0xd133, 0x6348, + 0x6347, 0xd134, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xd135, + 0x0000, 0x0000, 0x0000, 0xd136, 0x0000, 0xd137, 0x3c6f, 0xd138, + 0xd139, 0x634a, 0x3070, 0x0000, 0xd13a, 0xd13b, 0x0000, 0x634d, + 0xd13c, 0xd13d, 0xd13e, 0x634b, 0x3254, 0x374e, 0x634c, 0x3946, + 0x3972, 0x0000, 0x4a66, 0x634e, 0xd13f, 0xd140, 0x4b54, 0xd141, + 0xd142, 0x6350, 0x0000, 0x0000, 0xd143, 0x4051, 0x314f, 0x323a, + 0x302c, 0x0000, 0x0000, 0x0000, 0x0000, 0xd144, 0xd145, 0x634f, + 0x0000, 0xd146, 0x0000, 0x0000, 0xd147, 0xd148, 0x0000, 0xd149, + 0xd14a, 0x6351, 0x6352, 0x3e77, 0x0000, 0xd14b, 0x0000, 0xd14c, + 0x0000, 0x6353, 0xd14d, 0x334f, 0x0000, 0xd14e, 0x0000, 0x0000, + 0x6355, 0x0000, 0x0000, 0x0000, 0x376a, 0xd14f, 0x3566, 0x0000, + 0xd150, 0x6356, 0x3675, 0x0000, 0x0000, 0x6357, 0xd151, 0x407c, + 0xd152, 0x464d, 0xd153, 0x4060, 0x3a75, 0xd154, 0xd155, 0x0000, + 0x6358, 0x0000, 0xd156, 0xd157, 0x0000, 0x0000, 0x0000, 0x0000, + 0xd158, 0xd159, 0x4362, 0x416b, 0xd15a, 0x635a, 0x635c, 0x6359, + 0x635b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xd15b, 0x3722, + 0xd15c, 0x0000, 0x0000, 0xd15d, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x635d, 0x3726, 0x0000, 0xd15e, 0x0000, 0x3567, 0x4d52, + 0x635f, 0x0000, 0x0000, 0xd15f, 0x0000, 0xd160, 0x6360, 0x0000, + 0x0000, 0xd161, 0x312e, 0xd162, 0xd163, 0x0000, 0x0000, 0x6363, + 0x0000, 0x0000, 0x0000, 0x3376, 0x6362, 0x6361, 0xd164, 0x6365, + 0x635e, 0xd165, 0x6366, 0x4e29, 0xd166, 0x6367, 0xd167, 0x6368, + 0x0000, 0xd168, 0x5474, 0x636a, 0x0000, 0x6369, 0x0000, 0x0000, + 0x0000, 0x636b, 0x636c, 0xd169, 0x4e35, 0x636d, 0x0000, 0x706f, + 0x3e4f, 0x636e, 0x636f, 0x3d57, 0x0000, 0x4638, 0x6370, 0x0000, + 0xd16a, 0xd16b, 0x4328, 0xd16c, 0xd16d, 0x6371, 0x0000, 0x433c, + 0x6372, 0xd16e, 0x0000, 0x0000, 0xd16f, 0x0000, 0x3625, 0x0000, + 0x513f, 0x435d, 0x3c33, 0xd170, 0x0000, 0xd171, 0xd172, 0x3448 +}; + +static const unsigned short jis_from_unicode_7b[] = { + 0x0000, 0x0000, 0x6373, 0x0000, 0x6422, 0x0000, 0x6376, 0xd173, + 0x3568, 0x0000, 0x6375, 0x6424, 0x0000, 0x0000, 0x0000, 0x6374, + 0x0000, 0x3e50, 0x0000, 0x0000, 0xd174, 0x0000, 0x0000, 0x0000, + 0x6378, 0x6379, 0x0000, 0x452b, 0x0000, 0x0000, 0x637a, 0xd175, + 0x335e, 0x0000, 0x0000, 0xd176, 0x0000, 0x3f5a, 0x4964, 0xd177, + 0x637c, 0xd178, 0xd179, 0xd17a, 0x4268, 0xd17b, 0xd17c, 0xd17d, + 0xd17e, 0xd221, 0x0000, 0x6377, 0xd222, 0x637b, 0x637d, 0x0000, + 0x0000, 0x3a7b, 0x0000, 0x0000, 0x0000, 0xd223, 0x0000, 0xd224, + 0xd225, 0xd226, 0x0000, 0x0000, 0x0000, 0x6426, 0x492e, 0xd227, + 0x4826, 0x4579, 0x0000, 0x365a, 0x6425, 0x6423, 0xd228, 0x4835, + 0x637e, 0x435e, 0x457b, 0x0000, 0x457a, 0xd229, 0x3a76, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6438, 0x0000, 0x0000, + 0xd22a, 0x0000, 0x0000, 0x0000, 0xd22b, 0x6428, 0xd22c, 0x642a, + 0x0000, 0xd22d, 0xd22e, 0x0000, 0x642d, 0xd22f, 0x642e, 0xd230, + 0x642b, 0x642c, 0xd231, 0xd232, 0x6429, 0x6427, 0x0000, 0xd233, + 0x0000, 0x0000, 0x6421, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xd234, 0x0000, 0x4a4f, 0x3255, + 0x0000, 0xd235, 0x0000, 0x6435, 0x0000, 0x6432, 0xd236, 0x6437, + 0xd237, 0xd238, 0x6436, 0x0000, 0x4773, 0x4c27, 0xd239, 0x3b3b, + 0x6430, 0x6439, 0x6434, 0xd23a, 0x6433, 0x642f, 0xd23b, 0x6431, + 0xd23c, 0x3449, 0x0000, 0x0000, 0x0000, 0xd23d, 0x0000, 0x0000, + 0x0000, 0x0000, 0x433d, 0x0000, 0xd23e, 0x407d, 0x0000, 0xd23f, + 0xd240, 0x4822, 0xd241, 0x0000, 0x643e, 0xd242, 0xd243, 0x0000, + 0x4824, 0x0000, 0xd244, 0xd245, 0xd246, 0xd247, 0x0000, 0x0000, + 0x4061, 0x643b, 0xd248, 0x0000, 0x484f, 0xd249, 0x643f, 0x4a53, + 0xd24a, 0x435b, 0xd24b, 0x643a, 0x643c, 0x0000, 0x0000, 0x643d, + 0x0000, 0x0000, 0x0000, 0x0000, 0xd24c, 0x0000, 0xd24d, 0xd24e, + 0x0000, 0xd24f, 0xd250, 0xd251, 0x0000, 0x6440, 0x0000, 0x0000, + 0x3c44, 0x0000, 0x0000, 0x0000, 0x4646, 0x6445, 0x6444, 0x0000, + 0xd252, 0x6441, 0xd253, 0x0000, 0x0000, 0x4f36, 0x0000, 0x0000, + 0x0000, 0x0000, 0xd254, 0x644a, 0xd255, 0xd256, 0x644e, 0x644b, + 0xd257, 0xd258, 0xd259, 0x0000, 0xd25a, 0x0000, 0xd25b, 0x0000 +}; + +static const unsigned short jis_from_unicode_7c[] = { + 0x6447, 0xd25c, 0xd25d, 0xd25e, 0xd25f, 0x0000, 0xd260, 0x6448, + 0x0000, 0xd261, 0x0000, 0xd262, 0xd263, 0x644d, 0xd264, 0xd265, + 0x0000, 0x6442, 0x5255, 0x6449, 0x6443, 0x0000, 0x0000, 0x644c, + 0x0000, 0xd266, 0x0000, 0xd267, 0x0000, 0x0000, 0x0000, 0x6452, + 0xd268, 0x344a, 0x0000, 0x644f, 0x0000, 0xd269, 0xd26a, 0x6450, + 0xd26b, 0x0000, 0x6451, 0x6454, 0xd26c, 0x0000, 0x0000, 0x0000, + 0x0000, 0xd26d, 0x0000, 0xd26e, 0xd26f, 0x0000, 0xd270, 0x6453, + 0x4876, 0xd271, 0xd272, 0x0000, 0x0000, 0x6455, 0x4e7c, 0x4a6d, + 0x645a, 0x0000, 0x0000, 0x6457, 0x0000, 0x0000, 0xd273, 0x0000, + 0x0000, 0x0000, 0xd274, 0x0000, 0x6456, 0x4052, 0x0000, 0x6459, + 0x645b, 0xd276, 0xd277, 0xd278, 0x6458, 0xd275, 0x645f, 0x0000, + 0x645c, 0xd279, 0xd27a, 0xd27b, 0xd27c, 0xd27d, 0xd27e, 0x645d, + 0x6446, 0xd321, 0x0000, 0xd322, 0x645e, 0x6460, 0x0000, 0xd323, + 0x0000, 0xd324, 0x0000, 0x0000, 0x6461, 0xd325, 0xd326, 0x0000, + 0xd327, 0x0000, 0xd328, 0x4a46, 0x0000, 0x6462, 0x0000, 0x0000, + 0x0000, 0xd329, 0x0000, 0x0000, 0xd32a, 0xd32b, 0x4c62, 0x0000, + 0x0000, 0x364e, 0x3729, 0x6463, 0x0000, 0x0000, 0xd32c, 0xd32d, + 0x0000, 0x4a34, 0x0000, 0x3f68, 0x0000, 0x4c30, 0x0000, 0xd32e, + 0x6464, 0x0000, 0x4e33, 0x0000, 0xd32f, 0x4774, 0x0000, 0x4146, + 0x4734, 0x0000, 0x0000, 0x3d4d, 0x0000, 0x0000, 0xd330, 0x3040, + 0xd331, 0x6469, 0x6467, 0x0000, 0x6465, 0x3421, 0xd332, 0x3e51, + 0x646a, 0x0000, 0x0000, 0x6468, 0x0000, 0x6466, 0x646e, 0x0000, + 0xd333, 0x646d, 0x646c, 0x646b, 0x0000, 0x0000, 0xd334, 0xd335, + 0x0000, 0x646f, 0xd336, 0xd337, 0xd338, 0x6470, 0x403a, 0xd339, + 0x6471, 0x0000, 0x6473, 0x0000, 0xd33a, 0x6472, 0x0000, 0xd33b, + 0xd33c, 0xd33d, 0x3852, 0x0000, 0x0000, 0xd33e, 0x4138, 0xd33f, + 0x0000, 0x0000, 0x6475, 0xd340, 0xd341, 0xd342, 0x457c, 0xd343, + 0x6474, 0xd344, 0xd345, 0x0000, 0x6476, 0xd346, 0x4a35, 0x416c, + 0x3947, 0x0000, 0x6477, 0x0000, 0x0000, 0x0000, 0xd347, 0x4e48, + 0x0000, 0xd348, 0x0000, 0xd349, 0x0000, 0x0000, 0x0000, 0x6479, + 0x0000, 0x0000, 0x647a, 0x0000, 0x647b, 0xd34a, 0x647c, 0x0000, + 0x3b65, 0x0000, 0x647d, 0x374f, 0x0000, 0x0000, 0x356a, 0x0000 +}; + +static const unsigned short jis_from_unicode_7d[] = { + 0x352a, 0x0000, 0x6521, 0xd34b, 0x4c73, 0x3948, 0x647e, 0xd34c, + 0xd34d, 0xd34e, 0x6524, 0x4c66, 0x0000, 0x473c, 0x0000, 0xd34f, + 0x4933, 0xd350, 0xd351, 0xd352, 0x3d63, 0x6523, 0xd353, 0x3c53, + 0x3949, 0x3b66, 0x3569, 0x4a36, 0x6522, 0xd354, 0xd355, 0x0000, + 0x4147, 0x4b42, 0x3a77, 0xd356, 0x0000, 0x0000, 0xd357, 0x0000, + 0x0000, 0x0000, 0xd358, 0x3b67, 0x445d, 0xd359, 0x6527, 0x4e5f, + 0x3a59, 0xd35a, 0x6528, 0x3f42, 0x0000, 0x652a, 0x0000, 0x0000, + 0x0000, 0x3e52, 0x3a30, 0x0000, 0xd35b, 0xd35c, 0xd35d, 0x6529, + 0xd35e, 0xd35f, 0x3d2a, 0x383e, 0x4148, 0x6525, 0x652b, 0xd360, + 0xd361, 0x0000, 0x0000, 0x6526, 0x3750, 0xd362, 0x652e, 0x6532, + 0x376b, 0xd363, 0x0000, 0xd364, 0x0000, 0x0000, 0x652d, 0xd365, + 0x0000, 0xd366, 0xd367, 0x6536, 0xd368, 0xd369, 0x394a, 0x0000, + 0x0000, 0x4d6d, 0x303c, 0x6533, 0x0000, 0xd36a, 0x356b, 0xd36b, + 0x6530, 0x0000, 0xd36c, 0x0000, 0x0000, 0x0000, 0x6531, 0x0000, + 0xd36d, 0x457d, 0x652f, 0x652c, 0x0000, 0x3328, 0x4064, 0x0000, + 0xd36e, 0x3828, 0xd36f, 0xd370, 0x0000, 0x6538, 0x0000, 0xd371, + 0x0000, 0xd372, 0xd373, 0xd374, 0x0000, 0xd375, 0xd376, 0x0000, + 0xd377, 0x6535, 0x0000, 0xd378, 0xd379, 0xd37a, 0x0000, 0x6537, + 0x0000, 0xd37b, 0x0000, 0x6534, 0x0000, 0x0000, 0xd37c, 0xd37d, + 0x0000, 0x3751, 0x4233, 0x6539, 0x416e, 0xd37e, 0xd421, 0x6546, + 0x0000, 0x0000, 0x6542, 0x653c, 0x0000, 0x0000, 0xd422, 0xd423, + 0x0000, 0x0000, 0xd424, 0x6540, 0x3c7a, 0x305d, 0x653b, 0x6543, + 0x6547, 0x394b, 0x4c56, 0xd425, 0x4456, 0x653d, 0xd426, 0xd427, + 0x6545, 0xd428, 0x653a, 0x433e, 0x0000, 0x653f, 0x303d, 0x4c4a, + 0x0000, 0x0000, 0xd429, 0xd42a, 0xd42b, 0xd42c, 0xd42d, 0x653e, + 0x0000, 0x0000, 0x365b, 0x486c, 0xd42e, 0xd42f, 0xd430, 0x416d, + 0x0000, 0x4e50, 0x3d6f, 0x0000, 0x0000, 0x656e, 0x0000, 0xd431, + 0x6548, 0xd432, 0x407e, 0x0000, 0x6544, 0x6549, 0x654b, 0x0000, + 0x4479, 0x654e, 0xd434, 0x0000, 0x654a, 0xd435, 0xd436, 0x0000, + 0x4a54, 0x344b, 0xd437, 0xd438, 0x4c4b, 0xd439, 0x0000, 0x305e, + 0x0000, 0xd43a, 0x654d, 0x0000, 0x4e7d, 0xd43b, 0xd43c, 0x0000, + 0x0000, 0xd43d, 0xd43e, 0x654c, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short jis_from_unicode_7e[] = { + 0xd433, 0x316f, 0x0000, 0x0000, 0x466c, 0x654f, 0x0000, 0x0000, + 0xd43f, 0x6556, 0x6550, 0x6557, 0x0000, 0x0000, 0x0000, 0x0000, + 0xd440, 0xd441, 0x6553, 0x0000, 0x0000, 0xd442, 0x0000, 0xd443, + 0x0000, 0x0000, 0x0000, 0x477b, 0xd444, 0xd445, 0x3c4a, 0x6555, + 0xd446, 0x6552, 0x6558, 0x6551, 0x0000, 0x0000, 0x3d44, 0xd447, + 0xd448, 0x0000, 0x0000, 0x4b25, 0xd449, 0xd44a, 0x3d4c, 0xd44b, + 0x0000, 0x6554, 0x6560, 0xd44c, 0x0000, 0x655c, 0xd44d, 0x655f, + 0x0000, 0x655d, 0x6561, 0x655b, 0x0000, 0x6541, 0x4053, 0xd44e, + 0x0000, 0x484b, 0x0000, 0x655e, 0xd44f, 0xd450, 0x6559, 0xd451, + 0x0000, 0x0000, 0x4121, 0x3752, 0x0000, 0x3d2b, 0xd452, 0x0000, + 0xd453, 0x0000, 0xd454, 0x0000, 0x3f25, 0x4136, 0x6564, 0x0000, + 0xd455, 0x6566, 0x6567, 0x0000, 0x0000, 0x6563, 0x6565, 0xd456, + 0x0000, 0xd457, 0xd458, 0x0000, 0x0000, 0xd459, 0x655a, 0x6562, + 0x0000, 0x656a, 0x6569, 0xd45a, 0x0000, 0x4b7a, 0xd45b, 0xd45c, + 0x372b, 0x0000, 0x0000, 0xd45d, 0x0000, 0x0000, 0x0000, 0x0000, + 0xd45e, 0x6568, 0x0000, 0x656c, 0x656b, 0x656f, 0xd45f, 0x6571, + 0x0000, 0xd460, 0x3b3c, 0x656d, 0x0000, 0x0000, 0xd461, 0xd462, + 0x6572, 0x6573, 0xd463, 0x0000, 0x6574, 0xd464, 0x657a, 0x453b, + 0x6576, 0xd465, 0x6575, 0x6577, 0x6578, 0xd466, 0x6579, 0x0000, + 0xd467, 0x0000, 0xd468, 0x657b, 0x657c, 0xd469, 0xd46a, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short jis_from_unicode_7f[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x344c, 0x0000, + 0x657d, 0x0000, 0x657e, 0xd46c, 0xd46b, 0xd46d, 0xd46e, 0xd46f, + 0x0000, 0x0000, 0x0000, 0xd470, 0xd471, 0x6621, 0x0000, 0xd472, + 0x0000, 0x0000, 0x0000, 0x0000, 0x6622, 0x6623, 0x6624, 0xd473, + 0x6625, 0x6626, 0xd474, 0xd475, 0x6628, 0x6627, 0x0000, 0x0000, + 0x6629, 0x0000, 0x0000, 0xd476, 0xd477, 0xd478, 0x0000, 0x662a, + 0x662b, 0xd479, 0x0000, 0xd47a, 0xd47b, 0xd47c, 0xd47d, 0x662e, + 0x662c, 0x662d, 0x3a61, 0x3753, 0x0000, 0xd47e, 0x4356, 0x0000, + 0x4833, 0xd521, 0x3d70, 0x0000, 0x0000, 0x474d, 0x0000, 0x486d, + 0x662f, 0x586d, 0x0000, 0x0000, 0x0000, 0xd522, 0xd523, 0xd524, + 0xd525, 0x0000, 0x6630, 0x6632, 0x0000, 0x4d65, 0x6631, 0x6634, + 0x6633, 0x0000, 0x4d53, 0xd526, 0x6635, 0xd527, 0x487e, 0xd528, + 0xd529, 0xd52a, 0x0000, 0x0000, 0x6636, 0x0000, 0xd52b, 0xd52c, + 0x0000, 0x0000, 0x6639, 0x0000, 0xd52d, 0x6638, 0x6637, 0x0000, + 0x0000, 0xd52e, 0xd52f, 0x663a, 0x3732, 0x0000, 0xd530, 0x0000, + 0x4122, 0x3541, 0xd531, 0x0000, 0x0000, 0xd532, 0x663e, 0x663b, + 0x0000, 0x0000, 0x663c, 0x0000, 0xd533, 0x0000, 0x663f, 0x0000, + 0x6640, 0x663d, 0x0000, 0x0000, 0xd534, 0x3129, 0x0000, 0xd535, + 0xd536, 0x3227, 0x0000, 0xd537, 0x0000, 0x6642, 0x6643, 0x0000, + 0xd538, 0x0000, 0x6644, 0x0000, 0x4d62, 0x0000, 0xd539, 0xd53a, + 0x0000, 0x0000, 0x3d2c, 0x0000, 0x6646, 0x6645, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xd53b, 0x0000, 0x0000, 0x0000, 0xd53c, + 0x3f69, 0x6647, 0x0000, 0xd53d, 0x0000, 0xd53e, 0x6648, 0x0000, + 0xd53f, 0x6649, 0x0000, 0x3465, 0xd540, 0x0000, 0xd541, 0xd542, + 0x344d, 0x0000, 0xd543, 0x664a, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x664b, 0xd544, 0x4b5d, 0x4d63, 0xd545, 0xd546, 0xd547 +}; + +static const unsigned short jis_from_unicode_80[] = { + 0x4d54, 0x4f37, 0x0000, 0x394d, 0x664e, 0x3c54, 0x664d, 0xd548, + 0xd549, 0x0000, 0xd54a, 0x664f, 0x3c29, 0xd54b, 0xd54c, 0xd54d, + 0x4251, 0xd54e, 0x6650, 0xd54f, 0xd550, 0x394c, 0xd551, 0x4c57, + 0x6651, 0x6652, 0x0000, 0x0000, 0x6653, 0xd552, 0xd553, 0xd554, + 0xd555, 0x6654, 0x0000, 0x0000, 0xd556, 0x0000, 0xd557, 0x0000, + 0x6655, 0x0000, 0x0000, 0x0000, 0xd558, 0x0000, 0xd559, 0x0000, + 0xd55a, 0x0000, 0x0000, 0x3c2a, 0xd55b, 0xd55c, 0x4c6d, 0xd55d, + 0x0000, 0xd55e, 0xd55f, 0x6657, 0xd560, 0x433f, 0xd561, 0x6656, + 0xd562, 0x0000, 0x0000, 0x0000, 0xd563, 0x0000, 0x6659, 0x0000, + 0x0000, 0x0000, 0x6658, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x665a, 0x0000, 0x0000, 0x0000, 0x403b, 0x0000, + 0x665b, 0x0000, 0x665c, 0x0000, 0x0000, 0x0000, 0x4a39, 0x665d, + 0xd564, 0x416f, 0x665e, 0x0000, 0xd565, 0x0000, 0xd566, 0x0000, + 0x665f, 0x0000, 0x0000, 0x0000, 0x0000, 0xd567, 0x0000, 0x4e7e, + 0x6662, 0xd568, 0x6661, 0x6660, 0x4430, 0xd569, 0x6663, 0x3f26, + 0x0000, 0x6664, 0x0000, 0x0000, 0x0000, 0x6665, 0x4f38, 0x6666, + 0x0000, 0xd56a, 0x0000, 0x0000, 0x6667, 0x6669, 0x6668, 0x4825, + 0xd56b, 0x4679, 0x0000, 0x4f3e, 0x4829, 0x0000, 0xd56c, 0x0000, + 0x0000, 0x0000, 0x0000, 0x666b, 0x0000, 0x0000, 0x3e53, 0x0000, + 0x492a, 0x0000, 0x666c, 0x666a, 0xd56d, 0x344e, 0xd56e, 0x0000, + 0x0000, 0x3854, 0x3b68, 0x0000, 0x0000, 0x486e, 0xd56f, 0xd570, + 0x0000, 0x382a, 0x4b43, 0xd571, 0x666f, 0x666d, 0x0000, 0x394e, + 0x0000, 0x394f, 0x3069, 0x0000, 0x3a68, 0x0000, 0x0000, 0x0000, + 0xd572, 0xd573, 0x4759, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x305f, 0x6674, 0x0000, 0x4340, 0x0000, + 0xd574, 0x0000, 0x0000, 0x0000, 0x4758, 0xd575, 0x425b, 0xd576, + 0x0000, 0x0000, 0xd577, 0x0000, 0xd578, 0xd579, 0x6676, 0xd57a, + 0xd57b, 0x6672, 0x6675, 0x6670, 0x0000, 0x6673, 0x4b26, 0x0000, + 0xd57c, 0x3855, 0x0000, 0x0000, 0x307d, 0x6671, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xd57d, 0xd57e, 0x6678, + 0xd621, 0x6679, 0xd622, 0xd623, 0x4639, 0x0000, 0xd624, 0x0000, + 0x363b, 0xd625, 0xd626, 0x0000, 0x6726, 0x473d, 0xd627, 0x0000 +}; + +static const unsigned short jis_from_unicode_81[] = { + 0x0000, 0x0000, 0x3b69, 0xd628, 0x0000, 0x363c, 0x4048, 0x4f46, + 0x4c2e, 0x6677, 0x4054, 0xd629, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xd62a, 0xd62b, + 0xd62c, 0x0000, 0x3553, 0x667a, 0xd62d, 0x0000, 0xd62e, 0x0000, + 0xd62f, 0x0000, 0x0000, 0x667c, 0xd630, 0x0000, 0x0000, 0xd631, + 0x0000, 0x667b, 0x0000, 0x0000, 0xd632, 0x0000, 0x0000, 0x667d, + 0xd633, 0x4326, 0x0000, 0x473e, 0x0000, 0xd634, 0x0000, 0x0000, + 0x0000, 0x4431, 0xd635, 0x0000, 0xd636, 0x0000, 0x6723, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xd637, 0x6722, 0xd638, + 0x0000, 0x0000, 0xd639, 0x667e, 0xd63a, 0x0000, 0x3f55, 0x0000, + 0x4965, 0x6725, 0xd63b, 0x6724, 0x3950, 0x4f53, 0x0000, 0xd63c, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6735, + 0xd63d, 0xd63e, 0x0000, 0x0000, 0x0000, 0x6729, 0x672a, 0xd63f, + 0xd640, 0xd641, 0x0000, 0x3c70, 0x0000, 0xd642, 0x6728, 0xd643, + 0x3978, 0x6727, 0x0000, 0x0000, 0x672b, 0x0000, 0x0000, 0xd644, + 0x4432, 0x4a22, 0x4123, 0x0000, 0x0000, 0x0000, 0x0000, 0x425c, + 0x672f, 0xd645, 0x6730, 0x672c, 0xd647, 0xd648, 0xd649, 0x0000, + 0x672d, 0x0000, 0x672e, 0xd64a, 0x0000, 0x0000, 0xd64b, 0x3951, + 0xd646, 0x0000, 0x0000, 0x6736, 0x0000, 0x6732, 0xd64c, 0x0000, + 0xd64d, 0x0000, 0x4966, 0xd64e, 0x4b6c, 0x4928, 0xd64f, 0x0000, + 0x6731, 0x0000, 0xd650, 0x6734, 0x6733, 0x0000, 0x0000, 0x0000, + 0x4b44, 0x6737, 0x0000, 0x0000, 0x0000, 0x0000, 0xd651, 0x0000, + 0x6738, 0x0000, 0xd652, 0x4137, 0xd653, 0x6739, 0x0000, 0x0000, + 0x673b, 0x0000, 0x673f, 0xd654, 0x0000, 0x673c, 0x673a, 0x473f, + 0x673d, 0x0000, 0x673e, 0xd656, 0x0000, 0xd657, 0x3232, 0x0000, + 0x6745, 0x6740, 0xd658, 0xd655, 0x0000, 0x6741, 0xd659, 0xd65a, + 0x0000, 0x6742, 0x0000, 0x4221, 0x0000, 0xd65b, 0x0000, 0xd65c, + 0x6744, 0x6743, 0x6746, 0xd65d, 0x0000, 0xd65e, 0xd65f, 0x6747, + 0x6748, 0xd660, 0x0000, 0x3f43, 0xd661, 0x3269, 0x0000, 0x6749, + 0x4e57, 0x0000, 0x3c2b, 0xd662, 0xd663, 0x3d2d, 0x0000, 0x0000, + 0xd664, 0xd665, 0xd666, 0x3b6a, 0x4357, 0xd667, 0xd668, 0x0000, + 0xd669, 0xd66a, 0x674a, 0x674b, 0x3131, 0xd66b, 0x674c, 0xd66c +}; + +static const unsigned short jis_from_unicode_82[] = { + 0xd66d, 0x674d, 0x674e, 0xd66e, 0x0000, 0x674f, 0x0000, 0x6750, + 0x363d, 0x5a2a, 0x6751, 0x0000, 0x4065, 0x6752, 0x3c4b, 0xd66f, + 0x6753, 0x0000, 0x5030, 0xd670, 0xd671, 0x0000, 0x6754, 0x4a5e, + 0x345c, 0xd672, 0xd673, 0x4124, 0x3d58, 0xd674, 0x4971, 0x3d2e, + 0x0000, 0xd675, 0xd676, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xd677, 0x6755, 0x3952, 0x6756, 0x484c, 0x0000, 0x6764, 0x0000, + 0x0000, 0x0000, 0xd678, 0x6758, 0xd679, 0x4249, 0x4775, 0x383f, + 0x6757, 0x4125, 0xd67a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6759, 0x0000, 0x0000, 0xd67b, 0xd67c, 0xd67d, 0xd67e, 0x447a, + 0x0000, 0x0000, 0x0000, 0xd721, 0x0000, 0x0000, 0xd722, 0xd723, + 0x0000, 0xd724, 0x0000, 0x0000, 0x0000, 0x0000, 0xd725, 0x0000, + 0x675b, 0x675a, 0x675d, 0x0000, 0xd726, 0x675c, 0x0000, 0x675e, + 0xd727, 0x0000, 0x6760, 0xd728, 0x675f, 0x0000, 0x344f, 0xd729, + 0x6761, 0x0000, 0x6762, 0x6763, 0x0000, 0xd72a, 0x3a31, 0x4e49, + 0x0000, 0x6765, 0x3f27, 0x0000, 0xd72b, 0x0000, 0x3170, 0x6766, + 0x6767, 0x0000, 0x0000, 0xd72c, 0x0000, 0xd72d, 0x6768, 0xd72e, + 0xd72f, 0xd730, 0x0000, 0xd731, 0xd732, 0x0000, 0x0000, 0xd733, + 0x0000, 0xd734, 0xd735, 0x3072, 0x0000, 0x6769, 0xd736, 0x0000, + 0x0000, 0xd737, 0x676a, 0x0000, 0xd738, 0x0000, 0xd739, 0x0000, + 0xd73a, 0x4967, 0xd73b, 0xd73c, 0x0000, 0x3c47, 0x0000, 0x676c, + 0xd73d, 0xd73e, 0x0000, 0xd73f, 0xd740, 0x3329, 0x3032, 0xd741, + 0xd742, 0xd743, 0xd744, 0x676b, 0x676e, 0x474e, 0xd745, 0x3f44, + 0xd746, 0x3256, 0xd747, 0x4b27, 0xd748, 0x0000, 0x0000, 0xd749, + 0x375d, 0x365c, 0xd74a, 0x676d, 0xd74b, 0x326a, 0xd74c, 0xd74d, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3423, 0xd74e, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xd74f, 0x3171, 0x6772, 0x4e6a, 0x425d, 0xd750, 0x0000, 0x4944, + 0x0000, 0x677e, 0xd751, 0x3257, 0x677c, 0x0000, 0x677a, 0x6771, + 0xd752, 0x676f, 0xd753, 0x6770, 0xd754, 0x3c63, 0x366c, 0x4377, + 0xd755, 0x0000, 0xd756, 0x4651, 0x0000, 0xd757, 0x0000, 0xd758, + 0x0000, 0x3151, 0x0000, 0x6774, 0x6773, 0x0000, 0xd759, 0xd75a, + 0x0000, 0x6779, 0x6775, 0x6778, 0x0000, 0xd75b, 0xd75c, 0x0000 +}; + +static const unsigned short jis_from_unicode_83[] = { + 0xd75d, 0xd75e, 0x4c50, 0x6777, 0x3258, 0x337d, 0x677b, 0xd75f, + 0xd760, 0x677d, 0xd761, 0xd762, 0x0000, 0x0000, 0x3754, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6823, 0x682c, + 0x682d, 0x0000, 0x0000, 0xd764, 0x302b, 0xd765, 0xd766, 0xd767, + 0x0000, 0xd768, 0xd769, 0x6834, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3071, 0x0000, 0x0000, 0x682b, 0xd76a, 0xd76b, 0xd76c, 0x682a, + 0xd76d, 0x6825, 0x6824, 0xd76e, 0x6822, 0x6821, 0x4363, 0xd76f, + 0x427b, 0x6827, 0xd770, 0x0000, 0xd771, 0xd772, 0x0000, 0x0000, + 0x6826, 0x0000, 0xd773, 0xd774, 0xd775, 0x6829, 0x0000, 0xd776, + 0x0000, 0x4170, 0x3755, 0x0000, 0x0000, 0xd777, 0xd778, 0x3141, + 0x6828, 0xd779, 0x3953, 0xd83e, 0xd763, 0xd77a, 0xd77b, 0xd77c, + 0x4171, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xd77d, 0x0000, 0x0000, 0x683a, 0x0000, 0x683b, 0x0000, 0x3259, + 0xd77e, 0x0000, 0x0000, 0x322e, 0x6838, 0xd821, 0x0000, 0xd822, + 0xd823, 0x0000, 0xd824, 0x0000, 0xd825, 0x682e, 0xd826, 0x6836, + 0x0000, 0x683d, 0x6837, 0x0000, 0x0000, 0xd827, 0x6835, 0x0000, + 0x0000, 0x0000, 0xd828, 0x6776, 0xd829, 0xd82a, 0x6833, 0x0000, + 0xd82b, 0xd82c, 0x682f, 0xd82d, 0xd82e, 0xd82f, 0x3450, 0x6831, + 0x683c, 0x0000, 0x6832, 0x0000, 0x0000, 0x0000, 0xd830, 0xd831, + 0x683e, 0xd832, 0x6830, 0x477c, 0xd833, 0xd84c, 0x0000, 0x0000, + 0x0000, 0x4d69, 0x0000, 0x0000, 0x0000, 0x6839, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x684f, 0xd834, 0xd835, + 0xd836, 0x6847, 0x0000, 0x0000, 0x0000, 0x3f7b, 0x0000, 0xd837, + 0x0000, 0xd838, 0x3546, 0x0000, 0x365d, 0x0000, 0x6842, 0xd839, + 0xd83a, 0xd83b, 0x0000, 0x325b, 0xd83c, 0x0000, 0x3e54, 0x0000, + 0x6845, 0x0000, 0x0000, 0x0000, 0x3a5a, 0xd83d, 0x0000, 0x4551, + 0x684a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xd83f, 0x4a6e, 0xd840, 0x6841, 0x0000, 0x0000, 0x0000, 0x325a, + 0x3856, 0x4929, 0x684b, 0x0000, 0x683f, 0x0000, 0xd841, 0x6848, + 0xd842, 0xd843, 0x0000, 0x6852, 0xd844, 0x6843, 0x0000, 0x0000 +}; + +static const unsigned short jis_from_unicode_84[] = { + 0x0000, 0xd845, 0x0000, 0x6844, 0x463a, 0x0000, 0xd846, 0x6849, + 0x0000, 0x0000, 0xd847, 0x6846, 0x4b28, 0x684c, 0x3060, 0xd848, + 0x0000, 0xd849, 0x0000, 0x6840, 0x0000, 0xd84a, 0x0000, 0x0000, + 0x0000, 0xd84b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x684e, 0x0000, 0x684d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x476b, 0x6854, 0x0000, 0x685f, 0x0000, 0x0000, 0xd84d, + 0x0000, 0x337e, 0x0000, 0x0000, 0x0000, 0x6862, 0x0000, 0x0000, + 0x6850, 0xd84e, 0x0000, 0x0000, 0x6855, 0x4d6e, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xd84f, 0x685e, 0xd850, + 0xd851, 0x4d55, 0xd852, 0x0000, 0x0000, 0xd853, 0x4e2a, 0xd854, + 0x0000, 0xd855, 0xd856, 0x0000, 0x0000, 0x0000, 0xd857, 0x4378, + 0xd858, 0xd859, 0xd85a, 0x336b, 0xd85b, 0x0000, 0x0000, 0x0000, + 0xd85c, 0x4972, 0x6864, 0x4621, 0xd85d, 0xd85e, 0x3031, 0xd85f, + 0x0000, 0x685d, 0xd860, 0x6859, 0x4172, 0x6853, 0x685b, 0x6860, + 0xd861, 0x472c, 0x0000, 0xd862, 0xd863, 0x302a, 0xd864, 0x6858, + 0xd865, 0x6861, 0x4978, 0x0000, 0xd866, 0xd867, 0x0000, 0x0000, + 0x0000, 0xd868, 0x685c, 0x0000, 0x6857, 0xd869, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x3e55, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3d2f, 0x0000, 0xd86a, 0xd86b, 0x3c2c, 0xd86c, 0x0000, 0x0000, + 0x0000, 0x4c58, 0x0000, 0x0000, 0x4947, 0x0000, 0xd86d, 0x6867, + 0x0000, 0x6870, 0x0000, 0x0000, 0x0000, 0x0000, 0xd86e, 0x0000, + 0xd86f, 0xd870, 0xd871, 0x0000, 0x0000, 0x685a, 0x0000, 0xd872, + 0x0000, 0xd873, 0x3377, 0x0000, 0xd874, 0x0000, 0x0000, 0x0000, + 0x3e78, 0x6865, 0xd875, 0x686a, 0x4173, 0xd876, 0xd877, 0x6866, + 0xd878, 0x686d, 0xd879, 0x0000, 0x435f, 0x0000, 0x686e, 0xd87a, + 0xd87b, 0x4d56, 0x6863, 0x3338, 0xd87c, 0x6869, 0x0000, 0xd87d, + 0x686c, 0x4c2c, 0x0000, 0xd87e, 0x0000, 0x0000, 0x686f, 0x0000, + 0x0000, 0x6868, 0x686b, 0x0000, 0xd921, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xd922, + 0x0000, 0x0000, 0xd923, 0x0000, 0x4b29, 0x0000, 0x4f21, 0xd924, + 0xd925, 0xd926, 0xd927, 0x0000, 0x6873, 0x0000, 0x0000, 0xd928, + 0x0000, 0x0000, 0xd92a, 0xd92b, 0x687a, 0xd92c, 0x0000, 0x6872 +}; + +static const unsigned short jis_from_unicode_85[] = { + 0x3c43, 0x0000, 0xd92d, 0xd92e, 0x0000, 0x0000, 0x6851, 0xd92f, + 0x0000, 0x0000, 0x0000, 0x0000, 0xd930, 0x0000, 0xd931, 0x0000, + 0xd932, 0x4a4e, 0x0000, 0x4c22, 0x6879, 0x6878, 0x0000, 0x6874, + 0x6875, 0x0000, 0x3136, 0x0000, 0xd933, 0x0000, 0xd934, 0x6877, + 0x0000, 0x6871, 0xd935, 0xd936, 0xd937, 0xd938, 0x4455, 0xd939, + 0x0000, 0x0000, 0xd93a, 0xd93b, 0x6876, 0x307e, 0x0000, 0xd93c, + 0x0000, 0x0000, 0xd929, 0xd93d, 0xd93e, 0x4222, 0xd93f, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4a43, 0x0000, 0xd940, + 0x687b, 0x6921, 0x0000, 0x4859, 0x0000, 0x0000, 0xd941, 0x0000, + 0x687e, 0x3e56, 0x3c49, 0x6923, 0x0000, 0x0000, 0x363e, 0xd942, + 0xd943, 0xd944, 0xd945, 0xd946, 0x0000, 0x6924, 0xd947, 0x4979, + 0x687d, 0xd948, 0x6856, 0x0000, 0xd949, 0xd94a, 0xd94b, 0xd94c, + 0xd94d, 0xd94e, 0xd94f, 0x687c, 0xd950, 0x0000, 0x0000, 0x0000, + 0x4f4f, 0x4622, 0x4973, 0xd951, 0x0000, 0x692b, 0x0000, 0xd952, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6931, + 0x0000, 0xd953, 0xd954, 0xd955, 0x0000, 0xd956, 0x6932, 0xd957, + 0x6925, 0xd958, 0x0000, 0x0000, 0x4776, 0xd959, 0xd95a, 0x692f, + 0x6927, 0xd95b, 0x6929, 0xd95c, 0xd95d, 0x0000, 0x0000, 0xd95e, + 0x6933, 0x6928, 0x0000, 0xd95f, 0x692c, 0x0000, 0x0000, 0x3172, + 0xd960, 0x4665, 0x0000, 0x692d, 0x6930, 0xd961, 0x0000, 0xd962, + 0xd963, 0x0000, 0xd964, 0x0000, 0x6926, 0xd965, 0x4126, 0xd966, + 0x692a, 0x3b27, 0x3f45, 0x3730, 0x4c74, 0xd974, 0x4c79, 0x3d72, + 0x0000, 0x0000, 0x0000, 0x0000, 0xd967, 0x0000, 0xd968, 0xd969, + 0xd96a, 0x6937, 0x6935, 0x0000, 0xd96b, 0xd96c, 0xd96d, 0xd96e, + 0x0000, 0x4f4e, 0xd96f, 0x0000, 0x0000, 0x0000, 0x0000, 0xd970, + 0x0000, 0x6934, 0xd971, 0xd972, 0x0000, 0x4d75, 0xd973, 0x6936, + 0x6938, 0x0000, 0x0000, 0x0000, 0x0000, 0x6939, 0x0000, 0x0000, + 0xd975, 0x0000, 0xd976, 0x0000, 0x693c, 0x693a, 0x0000, 0xd977, + 0xd978, 0x0000, 0x0000, 0x0000, 0x4623, 0x693b, 0xd979, 0x0000, + 0xd97a, 0x484d, 0x692e, 0x0000, 0x0000, 0xd97b, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xd97c, 0x0000, 0x0000, 0xd97d, 0x3d73, + 0x0000, 0x693d, 0x6942, 0x4174, 0xd97e, 0x0000, 0x6941, 0xda21 +}; + +static const unsigned short jis_from_unicode_86[] = { + 0xda22, 0x0000, 0x6922, 0x0000, 0xda23, 0xda24, 0x6943, 0x4149, + 0x0000, 0x0000, 0x693e, 0x6940, 0x0000, 0xda25, 0xda26, 0x0000, + 0xda27, 0xda28, 0xda29, 0x693f, 0x0000, 0x0000, 0x5d31, 0x5d22, + 0xda2a, 0xda2b, 0x6945, 0xda2c, 0x0000, 0x0000, 0xda2d, 0x0000, + 0x0000, 0xda2e, 0x6944, 0x0000, 0x0000, 0x0000, 0x0000, 0xda2f, + 0x0000, 0xda30, 0x0000, 0x0000, 0x0000, 0x4d76, 0x0000, 0x623c, + 0x6946, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xda31, 0x0000, + 0xda32, 0x0000, 0xda33, 0x0000, 0xda34, 0xda35, 0x0000, 0x6947, + 0xda36, 0xb866, 0xda37, 0x0000, 0x0000, 0x0000, 0xda38, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6948, 0x3857, 0x0000, + 0x3554, 0x0000, 0xda39, 0xda3a, 0x694a, 0x515d, 0xda3b, 0xda3c, + 0xda3d, 0xda3e, 0x3575, 0x0000, 0x4e3a, 0xda3f, 0x3673, 0x694b, + 0xda40, 0xda41, 0xda42, 0xda43, 0xda44, 0x0000, 0x0000, 0x694c, + 0x0000, 0xda45, 0x0000, 0x436e, 0xda46, 0x0000, 0x0000, 0xda47, + 0x0000, 0x694d, 0x0000, 0x0000, 0x0000, 0xda48, 0xda49, 0xda4a, + 0x0000, 0x467a, 0xda4b, 0x303a, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xda6d, 0x0000, 0x3263, 0x6952, 0x6953, 0xda4c, 0x0000, 0x0000, + 0x0000, 0xda4d, 0x0000, 0x694e, 0x0000, 0x3b3d, 0xda4e, 0x0000, + 0xda4f, 0x0000, 0xda50, 0x0000, 0xda51, 0x0000, 0x0000, 0x0000, + 0x0000, 0xda52, 0x0000, 0x694f, 0x4742, 0x0000, 0xda53, 0xda54, + 0xda55, 0x6950, 0x6951, 0x695b, 0x0000, 0xda56, 0x0000, 0x6955, + 0x6958, 0xda57, 0x0000, 0xda58, 0xda59, 0xda5a, 0x6954, 0xda5b, + 0xda5c, 0xda5d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xda5e, + 0xda5f, 0xda60, 0x0000, 0xda61, 0x6956, 0xda62, 0x6957, 0x3c58, + 0x0000, 0x6959, 0x0000, 0x4341, 0x0000, 0x3756, 0x3342, 0x0000, + 0x0000, 0xda63, 0xda64, 0x0000, 0x695c, 0xda65, 0x0000, 0xda66, + 0x0000, 0x333f, 0xda67, 0x6961, 0xda68, 0x0000, 0x695d, 0x6960, + 0xda69, 0x0000, 0x0000, 0xda6a, 0x483a, 0xda6b, 0x0000, 0xda6c, + 0x0000, 0x695e, 0x0000, 0x0000, 0x695f, 0x4948, 0x485a, 0x6962, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x427d, 0x696c, 0xda6e, 0x6968, 0xda6f, 0xda70, 0x326b, 0x0000 +}; + +static const unsigned short jis_from_unicode_87[] = { + 0x6966, 0x0000, 0x4b2a, 0x6967, 0xda71, 0xda72, 0x6964, 0xda73, + 0x6965, 0x696a, 0x696d, 0xda74, 0x0000, 0x696b, 0xda75, 0xda76, + 0xda77, 0x6969, 0x6963, 0xda78, 0xda79, 0x0000, 0x0000, 0x0000, + 0x4358, 0xda7a, 0x6974, 0x0000, 0x4c2a, 0x0000, 0xda7b, 0xda7c, + 0x0000, 0xda7d, 0x0000, 0xda7e, 0x0000, 0x6972, 0x0000, 0x0000, + 0xdb21, 0x6973, 0x0000, 0x0000, 0x0000, 0x0000, 0xdb22, 0xdb23, + 0x0000, 0xdb24, 0xdb25, 0x0000, 0x696e, 0x0000, 0x0000, 0x6970, + 0x0000, 0xdb26, 0xdb27, 0x6971, 0xdb28, 0xdb29, 0xdb2a, 0x696f, + 0xdb2b, 0x0000, 0x0000, 0xdb2c, 0x0000, 0xdb2d, 0x0000, 0x0000, + 0x0000, 0x4066, 0x0000, 0x4f39, 0x6978, 0xdb2e, 0x6979, 0x0000, + 0x0000, 0x0000, 0x0000, 0x6a21, 0x0000, 0x3f2a, 0x0000, 0x697b, + 0xdb2f, 0x697e, 0x0000, 0x0000, 0x0000, 0xdb30, 0x0000, 0x6976, + 0x6975, 0xdb31, 0x0000, 0x6a22, 0xdb32, 0xdb33, 0x325c, 0x0000, + 0x697c, 0x0000, 0x6a23, 0x0000, 0x0000, 0x0000, 0x697d, 0xdb34, + 0x0000, 0xdb35, 0xdb36, 0x0000, 0x697a, 0x0000, 0x4433, 0x0000, + 0x6977, 0x0000, 0x0000, 0xdb37, 0x0000, 0x0000, 0x0000, 0x4768, + 0x0000, 0x0000, 0x6a27, 0xdb38, 0xdb39, 0xdb3a, 0xdb3b, 0xdb3c, + 0xdb3d, 0xdb3e, 0x0000, 0xdb3f, 0xdb40, 0x4d3b, 0x0000, 0x0000, + 0xdb41, 0x0000, 0x0000, 0xdb42, 0x0000, 0xdb43, 0x0000, 0xdb44, + 0xdb45, 0xdb46, 0x0000, 0x0000, 0x0000, 0x0000, 0xdb47, 0x6a26, + 0xdb48, 0x0000, 0x6a25, 0xdb49, 0x0000, 0x0000, 0x0000, 0xdb4a, + 0x0000, 0x0000, 0x0000, 0x6a2e, 0xdb4b, 0xdb4c, 0xdb4d, 0x6a28, + 0x0000, 0xdb4e, 0x0000, 0x6a30, 0x0000, 0xdb4f, 0x0000, 0x0000, + 0x0000, 0x0000, 0x4d66, 0x6a33, 0x0000, 0x6a2a, 0xdb50, 0xdb51, + 0x6a2b, 0xdb52, 0x0000, 0x0000, 0x6a2f, 0x0000, 0x6a32, 0x6a31, + 0xdb53, 0xdb54, 0xdb55, 0x6a29, 0x0000, 0x0000, 0xdb56, 0x0000, + 0x6a2c, 0x0000, 0x6a3d, 0x0000, 0x0000, 0xdb57, 0xdb58, 0x0000, + 0x0000, 0xdb59, 0xdb5a, 0x0000, 0xdb5b, 0x0000, 0x0000, 0xdb5c, + 0x6a36, 0x0000, 0xdb5d, 0xdb5e, 0xdb5f, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xdb60, 0xdb61, 0x0000, 0xdb62, 0x0000, 0x6a34, + 0x0000, 0xdb63, 0x6a35, 0xdb64, 0x0000, 0x0000, 0x6a3a, 0x6a3b, + 0xdb65, 0x332a, 0xdb66, 0x3542, 0x0000, 0x0000, 0x6a39, 0xdb67 +}; + +static const unsigned short jis_from_unicode_88[] = { + 0x0000, 0xdb68, 0x0000, 0xdb69, 0x0000, 0x6a24, 0xdb6a, 0x0000, + 0x0000, 0xdb6b, 0xdb6c, 0xdb6d, 0x0000, 0x6a38, 0x6a3c, 0x6a37, + 0xdb6e, 0x6a3e, 0xdb70, 0xdb71, 0xdb72, 0x6a40, 0x6a3f, 0x0000, + 0xdb73, 0xdb6f, 0xdb74, 0xdb75, 0xdb76, 0x0000, 0xdb77, 0xdb78, + 0x0000, 0x6a42, 0x6a41, 0x695a, 0x0000, 0x0000, 0x0000, 0x6a46, + 0xdb79, 0x0000, 0x0000, 0x0000, 0x0000, 0xdb7a, 0xdb7b, 0x0000, + 0xdb7c, 0x6a43, 0xdb7d, 0x0000, 0x0000, 0xdb7e, 0x6a44, 0x0000, + 0x0000, 0x6a45, 0xdc21, 0x6a47, 0xdc22, 0x0000, 0x0000, 0x0000, + 0x376c, 0xdc23, 0x6a49, 0xdc24, 0x6a48, 0xdc25, 0x3d30, 0x0000, + 0xdc26, 0xdc27, 0xdc28, 0xdc29, 0x3954, 0x5e27, 0xdc2a, 0x0000, + 0x0000, 0xdc2b, 0x6a4a, 0x3d51, 0x0000, 0xdc2c, 0xdc2d, 0x3339, + 0xdc2e, 0x6a4b, 0xdc2f, 0x3152, 0xdc30, 0x3e57, 0x6a4c, 0xdc31, + 0xdc32, 0x3955, 0x6a4d, 0x3061, 0xdc33, 0x0000, 0x0000, 0x0000, + 0x493d, 0xdc34, 0x0000, 0x6a4e, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3f6a, 0xdc35, 0x6a55, 0x0000, 0x0000, 0x6a52, 0x0000, 0x436f, + 0x0000, 0xdc36, 0x0000, 0xdc37, 0x0000, 0x6a53, 0x6a50, 0x365e, + 0xdc38, 0x6a4f, 0x6a56, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3736, 0x0000, 0x0000, 0x425e, 0x0000, 0x6a5c, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6a58, 0x0000, 0x0000, 0x0000, 0x4235, 0x6a57, + 0xdc39, 0x6a5a, 0xdc3a, 0xdc3b, 0xdc3c, 0x0000, 0x6a51, 0xdc3d, + 0xdc3e, 0x0000, 0x6a5b, 0x0000, 0x6a5d, 0x0000, 0x0000, 0x0000, + 0xdc3f, 0x0000, 0xdc40, 0x486f, 0x0000, 0x0000, 0x6a59, 0x0000, + 0x6a5e, 0x6a60, 0x0000, 0x0000, 0x3853, 0x6a54, 0x0000, 0x3041, + 0x0000, 0x0000, 0xdc41, 0x0000, 0x0000, 0xdc42, 0xdc43, 0x6a5f, + 0xdc44, 0x3a5b, 0x4e76, 0x6a61, 0x6a62, 0x4175, 0x0000, 0x0000, + 0x0000, 0x0000, 0xdc45, 0xdc46, 0xdc47, 0xdc48, 0xdc49, 0x4e22, + 0x0000, 0xdc4a, 0xdc4b, 0xdc4c, 0x6a63, 0x4d35, 0x0000, 0x0000, + 0x6a64, 0x6a65, 0x0000, 0xdc4d, 0x4a64, 0x6a66, 0xdc4e, 0x3a40, + 0x0000, 0x4e23, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xdc4f, + 0x6a6b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xdc50, + 0xdc51, 0xdc52, 0x6a6c, 0x3e58, 0x6a6a, 0xdc53, 0x0000, 0xdc54, + 0x4d67, 0x6a67, 0x0000, 0x0000, 0x6a69, 0x403d, 0x3f7e, 0x0000 +}; + +static const unsigned short jis_from_unicode_89[] = { + 0x0000, 0xdc55, 0x6a68, 0x0000, 0x6a6d, 0x0000, 0xdc56, 0x4a23, + 0x0000, 0x0000, 0x6a6f, 0x0000, 0x6a6e, 0xdc57, 0xdc58, 0xdc59, + 0x336c, 0x0000, 0x4b2b, 0x6a70, 0x0000, 0xdc5a, 0xdc5b, 0x0000, + 0xdc5c, 0xdc5d, 0xdc5e, 0x0000, 0xdc5f, 0x6a7c, 0x6a72, 0x0000, + 0xdc60, 0x0000, 0x0000, 0x0000, 0x0000, 0x6a73, 0xdc61, 0xdc62, + 0xdc63, 0x0000, 0x6a74, 0x6a75, 0x0000, 0x0000, 0x0000, 0x0000, + 0xdc64, 0xdc65, 0xdc66, 0x0000, 0x0000, 0xdc67, 0x6a79, 0x0000, + 0x6a7a, 0xdc68, 0xdc69, 0x6a78, 0x0000, 0x0000, 0xdc6a, 0x0000, + 0xdc6b, 0x6a76, 0xdc6c, 0x6a71, 0x6a77, 0xdc6d, 0xdc6e, 0x0000, + 0x0000, 0xdc6f, 0x0000, 0x0000, 0x6a7b, 0x7037, 0x0000, 0xdc70, + 0x0000, 0x0000, 0xdc71, 0x0000, 0x0000, 0x0000, 0x3228, 0xdc72, + 0x0000, 0x0000, 0xdc73, 0xdc74, 0xdc75, 0x0000, 0x6a7e, 0x365f, + 0x6a7d, 0xdc76, 0xdc77, 0xdc78, 0x6b22, 0x0000, 0x6b21, 0x0000, + 0x0000, 0x0000, 0x6b24, 0xdc79, 0x0000, 0x6b23, 0xdc7a, 0x6b25, + 0xdc7b, 0x0000, 0x3d31, 0xdc7c, 0x6b26, 0xdc7d, 0x0000, 0x6b27, + 0x0000, 0x0000, 0xdc7e, 0xdd21, 0xdd22, 0xdd23, 0x6b28, 0x403e, + 0x0000, 0x4d57, 0x0000, 0x6b29, 0x0000, 0x0000, 0x4a24, 0x4746, + 0x6b2a, 0xdd24, 0x6b2b, 0x382b, 0x0000, 0xdd25, 0x0000, 0x352c, + 0xdd26, 0x0000, 0x0000, 0x6b2c, 0xdd27, 0xdd28, 0x3b6b, 0x4741, + 0x6b2d, 0x0000, 0x3350, 0xdd29, 0xdd2a, 0x0000, 0x0000, 0xdd2b, + 0xdd2c, 0x6b2e, 0x0000, 0x0000, 0x0000, 0xdd2d, 0x6b30, 0x4d77, + 0x0000, 0x6b2f, 0x3f46, 0x0000, 0x6b31, 0x0000, 0x0000, 0x6b32, + 0xdd2e, 0x0000, 0x6b33, 0x3451, 0xdd2f, 0xdd30, 0xdd31, 0xdd32, + 0x0000, 0x0000, 0x6b34, 0x0000, 0xdd33, 0x6b35, 0x0000, 0x6b36, + 0x6b37, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x3351, 0x0000, 0xdd34, 0xdd35, 0xdd36, 0xdd37, + 0xdd38, 0x0000, 0x6b38, 0x0000, 0x6b39, 0x6b3a, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x3272, 0x0000, 0xdd39, 0x3f28, 0x6b3b, + 0x0000, 0xdd3a, 0x0000, 0xdd3b, 0x0000, 0xdd3c, 0x0000, 0x0000, + 0x0000, 0xdd3d, 0x0000, 0xdd3e, 0x6b3c, 0x0000, 0xdd3f, 0x0000, + 0x6b3d, 0xdd40, 0x0000, 0x0000, 0x0000, 0xdd41, 0x0000, 0xdd42 +}; + +static const unsigned short jis_from_unicode_8a[] = { + 0x3840, 0x0000, 0x447b, 0x6b3e, 0xdd43, 0xdd44, 0x0000, 0xdd45, + 0x3757, 0x0000, 0x3f56, 0x0000, 0x6b41, 0x0000, 0x4624, 0xdd46, + 0x6b40, 0xdd47, 0xdd48, 0x3731, 0xdd49, 0xdd4a, 0x6b3f, 0x4277, + 0x352d, 0x0000, 0x0000, 0x6b42, 0x0000, 0x6b43, 0xdd4b, 0x3e59, + 0xdd4c, 0x0000, 0xdd4d, 0x376d, 0xdd4e, 0x6b44, 0xdd4f, 0x0000, + 0x0000, 0x0000, 0x4b2c, 0xdd50, 0xdd51, 0x405f, 0x0000, 0xdd52, + 0x0000, 0x3576, 0x0000, 0x4c75, 0x414a, 0xdd53, 0x6b45, 0xdd54, + 0x0000, 0x0000, 0x3f47, 0x4370, 0x3e5a, 0xdd55, 0xdd56, 0x0000, + 0xdd57, 0x6b46, 0x0000, 0xdd58, 0x0000, 0xdd59, 0x6b49, 0xdd5a, + 0x6b4a, 0xdd5b, 0x0000, 0x0000, 0x0000, 0xdd5c, 0xdd5d, 0x0000, + 0x3a3e, 0x4242, 0x6b48, 0xdd5e, 0x3e5b, 0x493e, 0xdd5f, 0xdd60, + 0xdd61, 0x0000, 0x0000, 0x6b47, 0xdd62, 0xdd63, 0x3b6c, 0x0000, + 0x3153, 0xdd64, 0x6b4e, 0x3758, 0x0000, 0xdd65, 0x3b6e, 0xdd66, + 0x0000, 0x3b6d, 0x0000, 0x4f4d, 0x6b4d, 0x6b4c, 0x4127, 0x0000, + 0x354d, 0x4f43, 0x333a, 0x3e5c, 0x0000, 0xdd67, 0xdd68, 0xdd69, + 0x0000, 0xdd6a, 0xdd6b, 0xdd6c, 0x6b4b, 0x0000, 0xdd6d, 0xdd6e, + 0xdd6f, 0x0000, 0x6b50, 0xdd70, 0x6b51, 0x6b4f, 0xdd71, 0x3858, + 0x0000, 0x4d40, 0x0000, 0xdd72, 0x3b6f, 0x4727, 0x0000, 0xdd73, + 0xdd74, 0x6b54, 0xdd75, 0x4040, 0x0000, 0x4342, 0xdd76, 0xdd77, + 0x4d36, 0xdd78, 0x6b57, 0x0000, 0x0000, 0x0000, 0x386c, 0xdd79, + 0x403f, 0x6b53, 0x0000, 0x6b58, 0x386d, 0x6b55, 0x6b56, 0xdd7a, + 0x6b52, 0xdd7b, 0x0000, 0x0000, 0x4062, 0x4649, 0xdd7c, 0xdd7d, + 0x432f, 0x0000, 0x325d, 0xdd7e, 0x0000, 0x0000, 0xde21, 0xde22, + 0x0000, 0x4870, 0x0000, 0xde23, 0x3543, 0x0000, 0xde24, 0x4434, + 0x0000, 0x0000, 0x6b5b, 0xde25, 0x6b59, 0x0000, 0xde26, 0x434c, + 0xde27, 0xde28, 0xde29, 0x4041, 0x3452, 0x6b5a, 0x0000, 0x3f5b, + 0x0000, 0xde2a, 0x4e4a, 0xde2b, 0xde2c, 0xde2d, 0x4f40, 0xde2e, + 0x0000, 0x0000, 0x6b5c, 0x6b67, 0x4435, 0xde2f, 0x6b66, 0xde30, + 0x6b63, 0x6b6b, 0x6b64, 0x0000, 0x6b60, 0x0000, 0x447c, 0x6b5f, + 0x0000, 0x0000, 0x0000, 0x6b5d, 0xde31, 0x4d21, 0x3b70, 0x0000, + 0xde32, 0x6b61, 0x0000, 0x6b5e, 0xde33, 0xde34, 0xde35, 0x6b65, + 0x3d74, 0x0000, 0x3841, 0x0000, 0xde36, 0x0000, 0x427a, 0xde37 +}; + +static const unsigned short jis_from_unicode_8b[] = { + 0x4b45, 0x315a, 0x3062, 0x0000, 0x4625, 0xde38, 0xde39, 0x6b69, + 0x0000, 0x0000, 0xde3f, 0xde3a, 0x6b68, 0x0000, 0x4666, 0x0000, + 0x6b6d, 0xde3b, 0x0000, 0x0000, 0x6b62, 0x0000, 0x6b6c, 0x6b6e, + 0x0000, 0x382c, 0x6b6a, 0x3956, 0xde3c, 0x3c55, 0xde3d, 0xde3e, + 0x6b6f, 0x4d58, 0x0000, 0x0000, 0x0000, 0x0000, 0x6b72, 0x0000, + 0x6b75, 0x0000, 0x0000, 0x6b73, 0x4935, 0xde40, 0x0000, 0x0000, + 0xde41, 0x0000, 0x0000, 0x6b70, 0x0000, 0x0000, 0x0000, 0xde42, + 0x0000, 0x3660, 0x0000, 0x0000, 0xde43, 0x0000, 0x6b74, 0x0000, + 0x0000, 0x6b76, 0xde44, 0xde45, 0xde46, 0xde47, 0xde48, 0x0000, + 0xde49, 0x6b7a, 0x0000, 0x0000, 0x6b77, 0xde4e, 0x6b79, 0x6b78, + 0x0000, 0x0000, 0xde4a, 0xde4b, 0xde4c, 0x0000, 0x6b7b, 0x0000, + 0x3c31, 0xde4d, 0x6b7d, 0x6b7c, 0x4968, 0x0000, 0xde4f, 0x6c21, + 0x0000, 0x0000, 0x0000, 0xde50, 0x0000, 0x0000, 0x3759, 0x0000, + 0x0000, 0x0000, 0x0000, 0x6b7e, 0x6c22, 0xde51, 0x0000, 0x6c23, + 0x3544, 0x6641, 0x3e79, 0x0000, 0x6c24, 0x0000, 0xde52, 0x386e, + 0xde53, 0xde54, 0x0000, 0x0000, 0xde55, 0x6c25, 0xde56, 0x0000, + 0x6c26, 0xde57, 0x0000, 0x3b3e, 0xde58, 0xde59, 0x0000, 0x0000, + 0x0000, 0x0000, 0x5a4e, 0xde5a, 0x6c27, 0xde5b, 0x6c28, 0xde5c, + 0x3d32, 0x0000, 0x6c29, 0x6c2a, 0xde5d, 0xde5e, 0x6c2b, 0x0000, + 0x0000, 0x6c2c, 0x6c2d, 0x0000, 0xde5f, 0x0000, 0xde60, 0xde61, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short jis_from_unicode_8c[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x432b, + 0xde62, 0xde63, 0x6c2e, 0x0000, 0x0000, 0xde64, 0xde65, 0x6c30, + 0x0000, 0x6c2f, 0x0000, 0x0000, 0x0000, 0xde66, 0x4626, 0xde67, + 0x6c31, 0xde68, 0x4b2d, 0xde69, 0x6c32, 0x0000, 0x6c33, 0xde6a, + 0x6c34, 0xde6b, 0x0000, 0xde6c, 0xde6d, 0x6c35, 0x0000, 0xde6e, + 0xde6f, 0xde72, 0x465a, 0xde70, 0x0000, 0xde71, 0x0000, 0x0000, + 0x0000, 0x3e5d, 0x6c36, 0xde73, 0xde74, 0x0000, 0xde75, 0x0000, + 0xde76, 0xde77, 0x396b, 0x502e, 0x6c37, 0xde78, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xde79, 0x0000, 0xde7a, 0xde7b, 0x0000, + 0x6c38, 0x493f, 0x6c39, 0xde7c, 0x6c41, 0x0000, 0xde7d, 0x0000, + 0x0000, 0x0000, 0x6c3a, 0x0000, 0x0000, 0x6c3c, 0xde7e, 0xdf21, + 0x0000, 0x6c3b, 0x6c3d, 0xdf22, 0x4b46, 0x6c3e, 0x6c3f, 0x0000, + 0xdf23, 0x0000, 0xdf24, 0xdf25, 0x6c40, 0x0000, 0x0000, 0x0000, + 0x6c42, 0xdf26, 0x0000, 0xdf27, 0xdf28, 0x332d, 0x4467, 0x0000, + 0x4969, 0x3a62, 0x3957, 0x0000, 0xdf29, 0x0000, 0x0000, 0x494f, + 0x325f, 0x484e, 0x6c45, 0x3453, 0x4055, 0x6c44, 0x6c49, 0x4379, + 0x4c63, 0x0000, 0x6c47, 0x6c48, 0x352e, 0x0000, 0x6c4a, 0x4763, + 0x425f, 0xdf2a, 0xdf2b, 0x4871, 0x453d, 0x6c46, 0x0000, 0x4b47, + 0x326c, 0x6c4c, 0x4f28, 0x4442, 0x4f45, 0xdf2c, 0xdf2d, 0x3b71, + 0x6c4b, 0xdf2e, 0x4231, 0xdf2f, 0x0000, 0x6c5c, 0x4128, 0xdf30, + 0x0000, 0x4678, 0x0000, 0x4950, 0x0000, 0xdf32, 0xdf31, 0x0000, + 0x0000, 0xdf33, 0x6c4f, 0x3b3f, 0x3b72, 0xdf34, 0x3e5e, 0x0000, + 0x4765, 0xdf35, 0x382d, 0x6c4e, 0x6c4d, 0x0000, 0x496a, 0x0000, + 0xdf36, 0x0000, 0x3c41, 0x0000, 0xdf37, 0x4552, 0x0000, 0xdf38, + 0xdf39, 0x0000, 0xdf3a, 0x0000, 0x0000, 0xdf3b, 0x0000, 0xdf3c, + 0xdf3d, 0x0000, 0x6c51, 0x6c52, 0x3958, 0x6c50, 0xdf3e, 0xdf3f +}; + +static const unsigned short jis_from_unicode_8d[] = { + 0x0000, 0xdf40, 0x0000, 0xdf41, 0x6c53, 0x6c54, 0x0000, 0x6c56, + 0x4223, 0xdf42, 0x6c55, 0x3466, 0x0000, 0x6c58, 0x0000, 0x6c57, + 0x6c59, 0x0000, 0xdf43, 0x6c5b, 0x6c5d, 0x0000, 0x6c5e, 0xdf44, + 0x0000, 0x0000, 0x0000, 0xdf45, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4056, 0xdf46, 0x3c4f, 0x6c5f, + 0x0000, 0xdf47, 0x0000, 0x3352, 0xdf48, 0x6c60, 0xdf49, 0x0000, + 0x4176, 0x6c61, 0x0000, 0x6c62, 0x496b, 0x0000, 0x0000, 0x352f, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xdf4a, + 0x0000, 0x6c63, 0xdf4b, 0x0000, 0xdf4c, 0x4436, 0x0000, 0x0000, + 0xdf4d, 0x0000, 0x315b, 0x0000, 0x0000, 0xdf4e, 0x0000, 0x0000, + 0xdf4f, 0xdf50, 0x0000, 0x0000, 0x0000, 0xdf51, 0x0000, 0x0000, + 0x0000, 0x6c64, 0x0000, 0x0000, 0x0000, 0x0000, 0xdf52, 0xdf53, + 0xdf54, 0x0000, 0x0000, 0x3c71, 0x0000, 0x0000, 0xdf55, 0x0000, + 0x3f76, 0x0000, 0x0000, 0xdf56, 0xdf57, 0x0000, 0x0000, 0xdf58, + 0x0000, 0x0000, 0xdf59, 0x422d, 0x0000, 0xdf5a, 0x0000, 0xdf5b, + 0x0000, 0xdf5c, 0x6c67, 0xdf5d, 0xdf6f, 0x0000, 0x6c66, 0x0000, + 0xdf5e, 0x0000, 0x6c65, 0x0000, 0x0000, 0xdf5f, 0xdf60, 0xdf61, + 0xdf62, 0x0000, 0xdf63, 0x6c6d, 0x6c6b, 0x0000, 0xdf64, 0x6c68, + 0x0000, 0xdf65, 0x0000, 0x0000, 0xdf66, 0xdf67, 0x6c6a, 0xdf68, + 0x0000, 0xdf69, 0x6c69, 0x6c6c, 0x0000, 0x3577, 0x0000, 0x6c70, + 0x0000, 0x4057, 0x0000, 0x6c71, 0xdf6a, 0xdf6b, 0x0000, 0xdf6c, + 0x3859, 0x0000, 0x6c6e, 0x6c6f, 0xdf6d, 0x0000, 0x0000, 0x4f29, + 0xdf6e, 0xdf70, 0xdf71, 0x4437, 0xdf72, 0x4129, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x6c72, 0xdf73, 0x0000, 0x6c75 +}; + +static const unsigned short jis_from_unicode_8e[] = { + 0x0000, 0xdf74, 0x0000, 0x0000, 0xdf75, 0xdf76, 0xdf77, 0x0000, + 0x6c73, 0x6c74, 0x4d59, 0xdf78, 0x0000, 0x0000, 0x0000, 0x4627, + 0x6c78, 0xdf79, 0x0000, 0x0000, 0xdf7a, 0x0000, 0xdf7b, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6c76, 0x6c77, 0x6c79, + 0xdf7c, 0xdf7d, 0xdf7e, 0xe021, 0x0000, 0x0000, 0xe022, 0xe023, + 0x0000, 0x0000, 0x6d29, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6c7c, 0xe024, 0x0000, 0xe025, 0x6c7d, 0x6c7b, 0xe026, 0xe027, + 0xe028, 0xe029, 0x0000, 0x0000, 0x0000, 0xe02a, 0x0000, 0x0000, + 0xe02b, 0xe02c, 0x6c7a, 0x0000, 0x447d, 0x0000, 0x0000, 0x6d21, + 0x6d25, 0x6d22, 0x6c7e, 0xe02d, 0x6d23, 0xe02e, 0xe02f, 0xe030, + 0x6d24, 0x0000, 0x0000, 0x0000, 0xe031, 0x6d2b, 0x0000, 0x0000, + 0x0000, 0x6d26, 0x0000, 0xe032, 0xe033, 0xe034, 0xe035, 0x4058, + 0x6d28, 0xe036, 0xe037, 0x6d2a, 0x6d27, 0x0000, 0x0000, 0x0000, + 0x0000, 0xe038, 0x0000, 0x0000, 0xe039, 0xe03a, 0x0000, 0xe03b, + 0xe03c, 0xe03d, 0x6d2d, 0x0000, 0x3d33, 0x0000, 0x6d2c, 0x0000, + 0x0000, 0xe03e, 0xe03f, 0xe040, 0x6d2e, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6d2f, 0xe041, 0xe042, 0x6d32, 0x6d31, 0x0000, 0x6d30, + 0x0000, 0xe043, 0x6d34, 0x6d33, 0x0000, 0x4c76, 0x0000, 0x0000, + 0xe044, 0x6d36, 0xe045, 0x6d35, 0x6d37, 0xe046, 0x0000, 0x0000, + 0x0000, 0x6d38, 0xe047, 0xe048, 0x0000, 0xe049, 0xe04a, 0x0000, + 0x0000, 0x6d3a, 0xe04b, 0x0000, 0x0000, 0x0000, 0x0000, 0xe04c, + 0x0000, 0xe04d, 0x6d39, 0x3f48, 0x6d3b, 0xe04e, 0xe04f, 0x366d, + 0x6d3c, 0x6d3e, 0x0000, 0xe050, 0x0000, 0xe051, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe052, 0xe053, 0x0000, 0x0000, 0x6d3f, 0x0000, + 0xe054, 0xe055, 0x0000, 0xe056, 0xe057, 0x6d40, 0x6d3d, 0xe058, + 0x6d41, 0x0000, 0x3c56, 0x6d42, 0x3530, 0x3733, 0x0000, 0xe059, + 0x0000, 0xe05a, 0x382e, 0x0000, 0xe05b, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x6d43, 0xe05c, 0x0000, 0x0000, 0x4670, + 0x0000, 0x0000, 0x453e, 0x6d44, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe05d, 0x0000, 0x0000, 0x6d47, 0x0000, 0xe064, 0xe05e, 0x0000, + 0xe05f, 0xe060, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe061, + 0x3c34, 0xe062, 0xe063, 0x6d46, 0x6d45, 0x375a, 0x6d48, 0x0000 +}; + +static const unsigned short jis_from_unicode_8f[] = { + 0xe065, 0x0000, 0xe066, 0x3353, 0x0000, 0x6d4a, 0x0000, 0xe067, + 0xe068, 0x3a5c, 0x6d49, 0x0000, 0x6d52, 0x0000, 0x0000, 0xe069, + 0xe06a, 0x0000, 0x6d4c, 0x6d4e, 0x4a65, 0x6d4b, 0xe06b, 0xe06c, + 0xe06d, 0x6d4d, 0x0000, 0x6d51, 0x6d4f, 0x3531, 0xe06e, 0x6d50, + 0xe06f, 0xe070, 0x0000, 0xe071, 0x0000, 0xe072, 0x6d53, 0xe073, + 0xe074, 0x475a, 0x4e58, 0x0000, 0xe075, 0xe076, 0xe077, 0x3d34, + 0x0000, 0x0000, 0x0000, 0x6d54, 0xe078, 0xe079, 0xe07a, 0xe07b, + 0x4d22, 0x6d56, 0xe07c, 0x6d55, 0x0000, 0x0000, 0x6d59, 0x4d41, + 0xe07d, 0xe07e, 0x6d58, 0xe121, 0x336d, 0x6d57, 0x6d5c, 0xe122, + 0x0000, 0x6d5b, 0x0000, 0x0000, 0x6d5a, 0x4532, 0x6d5d, 0xe123, + 0x0000, 0xe124, 0xe125, 0xe126, 0xe127, 0xe128, 0x0000, 0x6d5e, + 0xe129, 0x0000, 0x0000, 0x0000, 0x6d5f, 0xe12a, 0xe12b, 0x396c, + 0x0000, 0x3725, 0x6d60, 0x6d61, 0x6d62, 0xe12c, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x3f49, 0x6d63, 0xe12d, 0x3c2d, 0x6d64, + 0xe12e, 0xe12f, 0x0000, 0x6d65, 0xe130, 0xe131, 0xe132, 0x5221, + 0x517e, 0x0000, 0x0000, 0x0000, 0x0000, 0x6d66, 0x6570, 0x6d67, + 0x4324, 0x3f2b, 0x4740, 0x0000, 0x0000, 0xe133, 0xe134, 0x6d68, + 0xe135, 0x0000, 0x4a55, 0x4454, 0x397e, 0x0000, 0xe136, 0x4329, + 0xe137, 0xe138, 0x312a, 0x0000, 0x4b78, 0x3f57, 0xe139, 0x0000, + 0x0000, 0x0000, 0xe13a, 0xe13b, 0x0000, 0xe13c, 0x375e, 0x0000, + 0xe13d, 0x3661, 0xe13e, 0xe13f, 0x4a56, 0xe140, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6d69, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe141, 0x0000, 0x6d6b, 0xe142, 0xe143, 0x6d6a, 0x3260, 0x0000, + 0xe144, 0x4676, 0x6d6c, 0x4777, 0x0000, 0x4533, 0xe145, 0x6d6d, + 0x3d52, 0xe146, 0x0000, 0x0000, 0x6d6f, 0xe147, 0xe148, 0x4c42, + 0x6d7e, 0x6d71, 0x6d72, 0xe149, 0x0000, 0x4449, 0xe14a, 0x0000 +}; + +static const unsigned short jis_from_unicode_90[] = { + 0x4260, 0x4177, 0xe14b, 0x4628, 0xe14c, 0x6d70, 0x3555, 0x0000, + 0xe14d, 0x0000, 0x0000, 0x6d79, 0xe14e, 0x6d76, 0x6e25, 0x4629, + 0x4360, 0x6d73, 0x0000, 0x447e, 0x4553, 0x6d74, 0x6d78, 0x3f60, + 0xe14f, 0x4767, 0x444c, 0xe150, 0x0000, 0x4042, 0x6d77, 0x422e, + 0x4224, 0x6d75, 0x3029, 0x4f22, 0x0000, 0x0000, 0x0000, 0x6d7a, + 0xe151, 0xe152, 0xe154, 0x0000, 0xe155, 0xe156, 0x4261, 0xe153, + 0x0000, 0x3d35, 0x3f4a, 0xe157, 0xe158, 0x6d7c, 0x6d7b, 0xe159, + 0x306f, 0x6d7d, 0x0000, 0x0000, 0x492f, 0x0000, 0x6e27, 0xe15a, + 0x0000, 0x465b, 0x3f6b, 0xe15b, 0xe15c, 0x4359, 0x0000, 0x3678, + 0x0000, 0x6e26, 0x4d37, 0x313f, 0xe15d, 0x4a57, 0x3261, 0x6e21, + 0x6e22, 0x6e23, 0x6e24, 0x463b, 0x4323, 0x3063, 0x6e28, 0x0000, + 0x6e29, 0x7423, 0x0000, 0xe15e, 0x423d, 0xe15f, 0x6e2a, 0x0000, + 0x3173, 0x414c, 0xe160, 0x382f, 0x0000, 0x4d5a, 0xe161, 0xe162, + 0x6e2b, 0x452c, 0x0000, 0x0000, 0xe163, 0x4178, 0x3c57, 0x6e2c, + 0xe164, 0x0000, 0x6e2f, 0x0000, 0xe165, 0x3d65, 0x6e2d, 0x412b, + 0x412a, 0xe166, 0x3064, 0x0000, 0x4e4b, 0x6e31, 0x0000, 0x4872, + 0x6e33, 0x6e32, 0x6e30, 0x6364, 0x3454, 0xe167, 0x0000, 0x6d6e, + 0xe168, 0x6e35, 0x6e34, 0xe169, 0xe16a, 0x0000, 0xe16b, 0x6e36, + 0xe16c, 0x4d38, 0x0000, 0x0000, 0x0000, 0xe16d, 0x0000, 0xe16e, + 0xe16f, 0xe170, 0x0000, 0xe171, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe172, 0xe173, 0xe174, 0x4661, 0x0000, 0xe175, 0x4b2e, 0x0000, + 0x6e37, 0x0000, 0x3c59, 0x0000, 0x0000, 0x0000, 0x0000, 0x6e38, + 0xe176, 0x6e39, 0xe177, 0xe178, 0xe179, 0x6e3a, 0xe17a, 0x0000, + 0x4521, 0x0000, 0x0000, 0x0000, 0x0000, 0xe17b, 0xe17d, 0x0000, + 0x0000, 0x306a, 0x0000, 0xe17e, 0xe221, 0xe222, 0x0000, 0xe223, + 0xe224, 0x0000, 0x3959, 0x0000, 0xe17c, 0x0000, 0x4f3a, 0x0000, + 0x0000, 0x0000, 0xe22d, 0x0000, 0x0000, 0xe225, 0x0000, 0xe226, + 0xe227, 0xe228, 0x0000, 0x6e3e, 0xe229, 0xe22a, 0x0000, 0xe22b, + 0x0000, 0x3734, 0x6e3b, 0x0000, 0x6e3c, 0xe22c, 0x0000, 0x0000, + 0x4974, 0x0000, 0x0000, 0xe22f, 0x0000, 0x3354, 0x0000, 0xe230, + 0xe231, 0x0000, 0x0000, 0x0000, 0xe232, 0x4d39, 0xe22e, 0x363f, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4554, 0xe233, 0xe234 +}; + +static const unsigned short jis_from_unicode_91[] = { + 0xe235, 0x0000, 0x6e3f, 0x0000, 0xe236, 0xe237, 0xe238, 0x0000, + 0xe239, 0x0000, 0x0000, 0x0000, 0x0000, 0xe23a, 0x0000, 0x0000, + 0xe23b, 0x0000, 0x6e40, 0x0000, 0xe23c, 0x0000, 0xe23d, 0xe23e, + 0xe23f, 0x6e41, 0xe240, 0x0000, 0xe241, 0x0000, 0xe242, 0x0000, + 0xe243, 0x0000, 0xe245, 0xe246, 0x0000, 0xe244, 0x0000, 0xe247, + 0x0000, 0xe248, 0x0000, 0x0000, 0x0000, 0x4522, 0xe249, 0xe24a, + 0x6e43, 0xe24b, 0x6e42, 0x0000, 0xe24c, 0x0000, 0xe24d, 0xe24e, + 0x0000, 0xe24f, 0xe250, 0x0000, 0xe251, 0xe252, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xe253, 0x0000, 0x0000, 0x0000, 0xe254, + 0xe255, 0x4653, 0x6e44, 0x3d36, 0x3c60, 0x475b, 0x4371, 0xe256, + 0x0000, 0x0000, 0x3c72, 0xe257, 0x3f6c, 0x0000, 0x6e45, 0xe258, + 0x6e46, 0xe259, 0xe25a, 0xe25b, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xe25c, 0x3f5d, 0x6e47, 0xe25d, 0x6e48, 0x0000, 0xe25e, + 0x0000, 0x6e49, 0x4d6f, 0x0000, 0x3d37, 0xe25f, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6e4b, 0x6e4a, 0xe260, 0x395a, 0x0000, 0x3973, + 0x3b40, 0xe261, 0xe262, 0xe263, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xe264, 0x6e4e, 0xe265, 0x0000, 0xe266, 0xe267, 0x3d66, + 0x0000, 0x6e4d, 0xe268, 0x6e4c, 0x0000, 0x4269, 0xe269, 0x0000, + 0x386f, 0xe26a, 0x4043, 0xe26b, 0xe26c, 0xe26d, 0x0000, 0x4830, + 0xe26e, 0x0000, 0x0000, 0x0000, 0x3d39, 0x0000, 0xe26f, 0x0000, + 0x0000, 0xe270, 0x6e4f, 0x0000, 0x3e5f, 0x0000, 0xe271, 0x0000, + 0xe272, 0x0000, 0x6e52, 0x6e50, 0xe273, 0xe274, 0xe275, 0x6e51, + 0xe276, 0xe277, 0xe278, 0xe279, 0x6e54, 0x6e53, 0xe27a, 0x0000, + 0x3e7a, 0x0000, 0x6e55, 0xe27b, 0xe27c, 0xe27d, 0x0000, 0xe27e, + 0x6e56, 0x6e57, 0xe321, 0xe322, 0x0000, 0xe323, 0x4850, 0x3a53, + 0x3c61, 0x6e58, 0x0000, 0x6e59, 0x4e24, 0x3d45, 0x4c6e, 0x4e4c, + 0x6e5a, 0x3662, 0x0000, 0xe324, 0xe325, 0x0000, 0x6e5b, 0xe326, + 0x4523, 0xe327, 0xe328, 0x6e5e, 0x3378, 0x3f4b, 0xe329, 0x6e5c, + 0x0000, 0x6e5d, 0x0000, 0x4460, 0xe32a, 0xe32b, 0x4b55, 0x367c, + 0x0000, 0xe32c, 0xe32d, 0x0000, 0xe32e, 0xe32f, 0xe330, 0xe331, + 0xe332, 0xe333, 0x0000, 0x0000, 0x0000, 0x6e60, 0x6e61, 0xe334, + 0x0000, 0xe335, 0x0000, 0xe336, 0x6e5f, 0xe337, 0x0000, 0x6e63 +}; + +static const unsigned short jis_from_unicode_92[] = { + 0xe338, 0xe339, 0x0000, 0x0000, 0xe33a, 0xe33b, 0xe33c, 0xe33d, + 0x0000, 0xe33e, 0xe33f, 0x0000, 0xe340, 0x465f, 0x3343, 0x0000, + 0xe341, 0x6e67, 0xe342, 0xe343, 0x6e64, 0x6e66, 0xe344, 0x0000, + 0xe345, 0x0000, 0x0000, 0x0000, 0xe346, 0xe347, 0x6e62, 0x0000, + 0x0000, 0x0000, 0x0000, 0xe348, 0xe349, 0xe34a, 0xe34b, 0x0000, + 0xe34c, 0x6f4f, 0x0000, 0x0000, 0x6e65, 0x0000, 0xe34d, 0xe34e, + 0xe34f, 0x0000, 0x0000, 0xe350, 0x4e6b, 0xe351, 0xe352, 0x385a, + 0xe353, 0xe354, 0xe355, 0x0000, 0xe356, 0x0000, 0xe357, 0x6e6f, + 0xe358, 0x0000, 0xe359, 0xe35a, 0x4534, 0x6e6a, 0xe35b, 0xe35c, + 0x6e6d, 0x6e6b, 0xe35d, 0x6e70, 0x0000, 0xe35e, 0xe35f, 0xe360, + 0x6e71, 0xe361, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6e69, + 0xe362, 0xe363, 0x6e76, 0x3174, 0xe364, 0xe365, 0x6e68, 0x0000, + 0xe366, 0xe367, 0x482d, 0x0000, 0x6e6c, 0xe368, 0x3e60, 0xe369, + 0xe36a, 0xe36b, 0x0000, 0x0000, 0x0000, 0x0000, 0xe36c, 0xe36d, + 0xe36e, 0x395b, 0x0000, 0x0000, 0x0000, 0xe36f, 0xe370, 0xe371, + 0xe372, 0xe373, 0x0000, 0xe374, 0xe375, 0xe376, 0x4b48, 0xe377, + 0x3664, 0x0000, 0x0000, 0x3d46, 0x0000, 0x463c, 0x0000, 0x0000, + 0xe378, 0xe379, 0xe37a, 0x0000, 0x0000, 0xe37b, 0xe37c, 0x0000, + 0x0000, 0x412d, 0xe37d, 0x6e74, 0x0000, 0x6e6e, 0x6e73, 0xe37e, + 0x4c43, 0xe421, 0x4438, 0x6e75, 0x6e72, 0x0000, 0x0000, 0xe422, + 0xe423, 0x0000, 0x0000, 0x0000, 0xe424, 0xe425, 0x0000, 0xe426, + 0xe427, 0x0000, 0x0000, 0xe428, 0x0000, 0x412c, 0x0000, 0xe429, + 0x0000, 0x0000, 0xe42a, 0x0000, 0x0000, 0x0000, 0xe42b, 0x6e79, + 0xe42c, 0x6e78, 0xe42d, 0xe42e, 0xe42f, 0xe430, 0x0000, 0xe431, + 0xe432, 0xe433, 0xe434, 0xe435, 0x0000, 0xe436, 0xe437, 0xe438, + 0xe439, 0x0000, 0x0000, 0xe43a, 0xe43b, 0xe43c, 0xe43d, 0x6e77, + 0xe43e, 0x0000, 0x4b2f, 0xe43f, 0x0000, 0xe440, 0x0000, 0xe441, + 0xe442, 0xe443, 0x0000, 0x0000, 0xe444, 0xe445, 0x0000, 0xe446, + 0xe447, 0xe448, 0x0000, 0xe449, 0x3d7b, 0xe44a, 0x0000, 0xe44b, + 0xe44c, 0x6e7a, 0x4a5f, 0x0000, 0xe44d, 0x3154, 0xe44e, 0x0000, + 0xe44f, 0x0000, 0x4946, 0x4372, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3578, 0xe450, 0x6e7c, 0xe451, 0x395d, 0x0000, 0x0000, 0xe452 +}; + +static const unsigned short jis_from_unicode_93[] = { + 0xe453, 0x0000, 0xe454, 0x0000, 0x0000, 0x0000, 0x3b2c, 0x0000, + 0xe455, 0x0000, 0x0000, 0x0000, 0x0000, 0xe456, 0x0000, 0x6e7b, + 0x3f6d, 0xe457, 0x0000, 0x0000, 0xe458, 0xe459, 0x0000, 0x0000, + 0x3f6e, 0x6f21, 0x6f23, 0x0000, 0xe45a, 0xe45b, 0xe45c, 0xe45d, + 0x3e7b, 0xe45e, 0x6f22, 0x6f24, 0xe45f, 0xe460, 0x3653, 0xe461, + 0x4945, 0xe462, 0xe463, 0x3c62, 0x4f23, 0x0000, 0x6e7e, 0x3a78, + 0x0000, 0x0000, 0x4f3f, 0xe464, 0xe465, 0x6f26, 0xe466, 0xe467, + 0x0000, 0x0000, 0x6f25, 0x6f27, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x6e7d, 0x0000, 0x0000, 0xe468, + 0xe469, 0xe46a, 0x0000, 0x4669, 0x0000, 0x4555, 0x0000, 0x0000, + 0xe46b, 0xe46c, 0xe46d, 0x0000, 0x4457, 0xe46e, 0x6f2c, 0xe46f, + 0xe470, 0x0000, 0xe471, 0x4343, 0x6f28, 0x0000, 0xe472, 0x0000, + 0x6f29, 0x0000, 0x0000, 0x0000, 0xe473, 0xe474, 0x0000, 0xe475, + 0x0000, 0xe476, 0xe477, 0x0000, 0x372d, 0xe478, 0x6f2b, 0xe479, + 0xe47a, 0xe47b, 0x0000, 0xe47c, 0xe47d, 0x3830, 0xe47e, 0x0000, + 0x0000, 0x0000, 0xe521, 0x0000, 0x6f2a, 0xe522, 0x3e61, 0xe523, + 0xe524, 0xe525, 0xe526, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe527, 0x0000, 0xe528, 0xe529, 0x3379, 0xe52a, 0x0000, 0xe52b, + 0x0000, 0x0000, 0xe52c, 0x0000, 0x6f30, 0xe52d, 0x3a3f, 0x4179, + 0xe52e, 0x0000, 0x444a, 0xe52f, 0x0000, 0x0000, 0xe530, 0x0000, + 0x0000, 0xe531, 0x0000, 0xe532, 0xe533, 0x0000, 0xe534, 0x333b, + 0xe535, 0xe53b, 0x0000, 0xe536, 0x6f2e, 0x6f2f, 0x4443, 0x0000, + 0x6f2d, 0x0000, 0x0000, 0x0000, 0xe537, 0xe538, 0xe539, 0x0000, + 0x0000, 0x6f31, 0xe53a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xe53c, 0x0000, 0x6f37, 0xe53d, 0xe53e, 0xe53f, 0xe540, + 0x6f3a, 0xe541, 0xe542, 0xe543, 0xe544, 0xe545, 0x0000, 0x0000, + 0x6f39, 0x452d, 0x0000, 0xe546, 0x0000, 0x0000, 0x6f32, 0x6f33, + 0x6f36, 0xe547, 0x0000, 0x0000, 0xe548, 0x6f38, 0xe549, 0xe54a, + 0x0000, 0x3640, 0xe54b, 0x0000, 0x6f3b, 0x6f35, 0xe54c, 0xe54d, + 0x6f34, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe54f, + 0xe550, 0xe54e, 0xe551, 0xe552, 0x0000, 0xe553, 0x0000, 0x0000 +}; + +static const unsigned short jis_from_unicode_94[] = { + 0x0000, 0xe554, 0xe555, 0x6f3f, 0xe556, 0x0000, 0x0000, 0x6f40, + 0xe557, 0xe558, 0x0000, 0x0000, 0x0000, 0xe559, 0xe55a, 0xe55b, + 0x6f41, 0x0000, 0x0000, 0x6f3e, 0x6f3d, 0xe55c, 0xe55d, 0xe55e, + 0x3e62, 0x462a, 0x6f3c, 0x0000, 0x0000, 0x0000, 0x0000, 0xe55f, + 0x0000, 0x6f45, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x6f43, 0x0000, 0x0000, 0xe560, 0xe561, + 0x0000, 0xe562, 0xe563, 0xe564, 0xe565, 0x6f44, 0x6f42, 0x0000, + 0x4278, 0x0000, 0x6f46, 0xe566, 0x0000, 0xe568, 0x0000, 0xe567, + 0x0000, 0x6f47, 0x0000, 0xe569, 0x6f49, 0xe56a, 0x0000, 0x0000, + 0xe56b, 0x0000, 0xe56c, 0x0000, 0xe56d, 0x0000, 0x0000, 0x0000, + 0x0000, 0x3455, 0x6f48, 0x4c7a, 0x0000, 0xe56e, 0x0000, 0x0000, + 0x0000, 0xe56f, 0x6f54, 0x6f4a, 0xe570, 0x0000, 0x6f4d, 0xe571, + 0x6f4b, 0xe572, 0x6f4c, 0xe573, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe574, 0x0000, 0x6f4e, 0xe575, 0x0000, 0xe576, 0xe577, 0xe578, + 0x6f50, 0xe579, 0xe57a, 0x0000, 0x0000, 0x6f51, 0x0000, 0x6f52, + 0x0000, 0x0000, 0x0000, 0x0000, 0x6f55, 0x6f53, 0x6f56, 0x6f58, + 0x0000, 0x6f57, 0x0000, 0xe57c, 0xe57b, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short jis_from_unicode_95[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4439, + 0xe57d, 0xe57e, 0x0000, 0x0000, 0x0000, 0x0000, 0xe621, 0x0000, + 0x4c67, 0x0000, 0x6f59, 0x412e, 0xe622, 0x0000, 0x0000, 0x6f5a, + 0xe623, 0x4a44, 0x6f5b, 0x332b, 0xe624, 0xe625, 0xe626, 0x313c, + 0x0000, 0x3457, 0x0000, 0x3456, 0x6f5c, 0x0000, 0x6f5d, 0x0000, + 0x6f5e, 0x6f5f, 0x0000, 0x0000, 0x0000, 0xe627, 0xe628, 0xe629, + 0x6f60, 0xe62a, 0x3458, 0x3355, 0x395e, 0x4836, 0xe62b, 0x6f62, + 0x6f61, 0xe62c, 0x0000, 0xe62d, 0xe62e, 0x6f63, 0x0000, 0x0000, + 0x0000, 0x0000, 0x315c, 0x0000, 0xe62f, 0x0000, 0xe630, 0x0000, + 0x0000, 0x6f66, 0xe631, 0x6f65, 0x6f64, 0xe632, 0x6f67, 0xe633, + 0x0000, 0x0000, 0x0000, 0x6f6a, 0x0000, 0x0000, 0xe634, 0x3047, + 0xe635, 0xe636, 0x6f68, 0xe637, 0x6f6c, 0x6f6b, 0x0000, 0x0000, + 0xe638, 0xe639, 0xe63a, 0xe63b, 0x6f6e, 0x6f6d, 0x6f6f, 0x0000, + 0x462e, 0xe63c, 0xe63d, 0x0000, 0x6f70, 0xe63e, 0xe63f, 0xe640, + 0xe641, 0x6f71, 0x6f73, 0x0000, 0xe642, 0x6f72, 0xe643, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short jis_from_unicode_96[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x496c, 0xe644, 0xe645, 0x0000, + 0x0000, 0x6f74, 0xe646, 0x0000, 0xe647, 0xe648, 0xe649, 0x0000, + 0x6f75, 0x0000, 0x3a65, 0x0000, 0xe64a, 0x0000, 0x6f76, 0x6f77, + 0x0000, 0xe64b, 0x4b49, 0xe64c, 0x0000, 0x0000, 0x0000, 0xe64d, + 0xe64e, 0xe64f, 0xe650, 0x414b, 0xe651, 0xe652, 0x0000, 0x3024, + 0x424b, 0xe653, 0x6f78, 0x0000, 0x496d, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x6f7b, 0x6f79, 0x395f, 0x0000, 0x6f7a, + 0x3842, 0x0000, 0xe654, 0x0000, 0xe655, 0x0000, 0xe656, 0xe657, + 0xe658, 0x0000, 0x0000, 0x4a45, 0x6f7d, 0x7021, 0x6f7e, 0x7022, + 0x0000, 0xe659, 0x3121, 0x3f58, 0x3d7c, 0x3459, 0x7023, 0x0000, + 0x0000, 0x0000, 0x4766, 0x0000, 0x7025, 0x0000, 0xe65a, 0x0000, + 0x3122, 0x0000, 0x7024, 0x4444, 0xe65b, 0x4e4d, 0x462b, 0x6f7c, + 0x4e26, 0x0000, 0x3831, 0xe65c, 0xe65d, 0x4d5b, 0xe65e, 0xe65f, + 0x0000, 0xe660, 0xe661, 0xe662, 0xe663, 0x3679, 0x4e34, 0x0000, + 0x3728, 0xe664, 0x4262, 0x6721, 0x0000, 0x7026, 0x332c, 0x3f6f, + 0x0000, 0xe665, 0x0000, 0x0000, 0x3356, 0x7028, 0xe666, 0x7029, + 0x7027, 0x3764, 0xe667, 0x3a5d, 0x3e63, 0xe668, 0x0000, 0xe669, + 0x3123, 0x0000, 0x0000, 0x4e59, 0xe66a, 0xe66b, 0xe66c, 0x702b, + 0x6e2e, 0xe66d, 0x702a, 0x0000, 0x0000, 0x0000, 0xe66e, 0xe66f, + 0x702e, 0x702c, 0x702d, 0xe670, 0x702f, 0x0000, 0x7030, 0x4e6c, + 0x7031, 0x7032, 0xe671, 0x4049, 0x483b, 0x0000, 0x0000, 0x0000, + 0x3f7d, 0x3467, 0x0000, 0x0000, 0x4d3a, 0x326d, 0x3d38, 0x385b, + 0x0000, 0x7035, 0xe672, 0x7034, 0x3b73, 0x7036, 0x7033, 0x0000, + 0x0000, 0x3b28, 0xe673, 0x0000, 0x0000, 0x703a, 0x6a2d, 0x0000, + 0xe675, 0x5256, 0xe676, 0x3f77, 0x7038, 0xe677, 0xe678, 0xe679, + 0x0000, 0x0000, 0x4e25, 0x4671, 0x0000, 0x0000, 0x0000, 0x0000, + 0x312b, 0xe67a, 0x4063, 0x3c36, 0x0000, 0x0000, 0x0000, 0xe67b, + 0x4a37, 0xe67c, 0x3140, 0x0000, 0x0000, 0x0000, 0x4e6d, 0x4d6b, + 0x0000, 0x703b, 0xe67d, 0x4545, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short jis_from_unicode_97[] = { + 0x3c7b, 0x0000, 0xe67e, 0xe721, 0x703c, 0xe722, 0x703d, 0x3f4c, + 0x703e, 0xe723, 0x4e6e, 0x0000, 0x0000, 0x7039, 0x7040, 0x7042, + 0x0000, 0x7041, 0x0000, 0x703f, 0x0000, 0x0000, 0x7043, 0x0000, + 0x0000, 0x7044, 0xe724, 0xe725, 0x417a, 0xe726, 0x3262, 0x0000, + 0x0000, 0xe727, 0xe728, 0xe729, 0x7045, 0x0000, 0x0000, 0x4c38, + 0xe72a, 0x0000, 0x7046, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x7047, 0xe72b, 0x4f2a, 0xe72c, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5b31, 0x7048, 0x0000, 0x0000, 0x0000, 0x7049, 0x704a, 0x0000, + 0x0000, 0xe72d, 0x704e, 0xe72e, 0x704b, 0x0000, 0x704c, 0x0000, + 0x704d, 0x704f, 0xe72f, 0x0000, 0x0000, 0x0000, 0xe730, 0xe731, + 0x0000, 0x0000, 0x4044, 0x0000, 0x0000, 0xe732, 0x4c77, 0xe733, + 0xe734, 0x4045, 0xe735, 0xe736, 0x7050, 0x0000, 0x4873, 0x0000, + 0x7051, 0x7353, 0x4c4c, 0xe737, 0x7052, 0x0000, 0x7053, 0xe738, + 0x7054, 0x3357, 0xe739, 0x7056, 0x0000, 0x3f59, 0xe73a, 0x0000, + 0x0000, 0x7057, 0x0000, 0xe73b, 0x3724, 0x0000, 0xe73c, 0xe73d, + 0xe73e, 0x7058, 0x705c, 0xe73f, 0x705a, 0xe740, 0x0000, 0xe741, + 0xe742, 0x705b, 0x0000, 0x0000, 0x3373, 0x7059, 0x705d, 0x0000, + 0x0000, 0xe743, 0x0000, 0x705e, 0x0000, 0x3048, 0x0000, 0x705f, + 0x7060, 0x0000, 0x0000, 0x0000, 0x0000, 0xe744, 0xe745, 0xe746, + 0x3e64, 0xe747, 0xe748, 0x0000, 0x7061, 0x0000, 0xe749, 0xe74a, + 0x3547, 0x0000, 0xe74b, 0x7064, 0x0000, 0x0000, 0x7063, 0x0000, + 0x7062, 0x0000, 0x0000, 0x6b71, 0xe74c, 0x4a5c, 0xe74d, 0x0000, + 0x0000, 0xe74e, 0xe74f, 0x7065, 0x7066, 0xe750, 0xe751, 0x0000, + 0xe752, 0xe753, 0xe754, 0x0000, 0xe755, 0x0000, 0xe756, 0xe757, + 0x0000, 0xe758, 0x0000, 0x7067, 0xe759, 0xe75a, 0x7068, 0xe75b, + 0x7069, 0xe75c, 0xe75d, 0x706a, 0xe75e, 0xe75f, 0xe760, 0x0000, + 0xe761, 0xe762, 0x0000, 0x345a, 0xe763, 0x0000, 0x0000, 0xe764, + 0xe765, 0xe766, 0x0000, 0xe76a, 0x706b, 0xe767, 0xe768, 0x0000, + 0xe769, 0xe76b, 0x0000, 0x0000, 0xe76c, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x706c, 0x4723, 0xe76d, + 0x0000, 0xe76e, 0x706e, 0x323b, 0xe76f, 0x7071, 0x7070, 0xe770, + 0xe771, 0x0000, 0xe772, 0x3124, 0x0000, 0x0000, 0x0000, 0x3641 +}; + +static const unsigned short jis_from_unicode_98[] = { + 0x0000, 0x4a47, 0x443a, 0x3a22, 0x0000, 0x3960, 0x3d67, 0xe773, + 0x3f5c, 0x0000, 0xe774, 0x0000, 0x7073, 0xe776, 0xe777, 0x7072, + 0x4d42, 0x3468, 0x4852, 0x465c, 0xe778, 0x0000, 0xe779, 0x3f7c, + 0x4e4e, 0xe775, 0x375b, 0x0000, 0xe77a, 0x0000, 0xe77b, 0x0000, + 0xe77c, 0x7076, 0x0000, 0xe77d, 0x7075, 0xe828, 0xe77e, 0x0000, + 0x0000, 0x0000, 0x0000, 0xe821, 0x4b4b, 0x462c, 0xe822, 0xe823, + 0xe824, 0x0000, 0xe825, 0xe826, 0x3150, 0xe827, 0x0000, 0x7077, + 0x7074, 0x0000, 0x0000, 0x4951, 0x4d6a, 0x7078, 0xe829, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xe82a, 0x0000, 0x7079, 0xe82b, + 0x0000, 0x0000, 0xe82c, 0x707b, 0x426a, 0x335b, 0x335c, 0x707a, + 0x0000, 0xe82d, 0xe82e, 0xe82f, 0x3469, 0x3832, 0xe830, 0xe831, + 0x346a, 0xe832, 0xe833, 0x453f, 0x0000, 0x0000, 0x4e60, 0x0000, + 0x0000, 0x0000, 0xe834, 0xe835, 0x0000, 0xe836, 0xe837, 0x385c, + 0x0000, 0x0000, 0xe838, 0x707c, 0xe839, 0x0000, 0x0000, 0x707d, + 0x707e, 0x7121, 0x0000, 0x7123, 0x7122, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4977, 0x0000, 0x7124, 0xe83a, 0x0000, 0xe83b, 0xe83c, 0x7125, + 0xe83d, 0x7126, 0x0000, 0x0000, 0xe83e, 0x0000, 0x7127, 0xe83f, + 0xe840, 0x0000, 0xe841, 0xe842, 0x0000, 0x0000, 0x0000, 0xe843, + 0x0000, 0x0000, 0xe844, 0x7129, 0x7128, 0xe845, 0x712a, 0x0000, + 0xe846, 0x0000, 0x0000, 0x0000, 0xe847, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x4874, 0x664c, 0x0000, 0x0000, 0x3f29, + 0x0000, 0xe848, 0x3532, 0xe849, 0x0000, 0xe84a, 0xe84b, 0xe84c, + 0x0000, 0x712b, 0xe84d, 0x712c, 0x0000, 0x522c, 0x5d3b, 0x4853, + 0x0000, 0x0000, 0x307b, 0xe84e, 0x303b, 0x0000, 0xe84f, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3b74, 0x4b30, 0x3e7e, 0x0000 +}; + +static const unsigned short jis_from_unicode_99[] = { + 0x0000, 0x0000, 0xe850, 0x712d, 0x0000, 0x4c5f, 0x0000, 0xe851, + 0xe852, 0x712e, 0x4d5c, 0x0000, 0x3142, 0x0000, 0x0000, 0x0000, + 0x3b41, 0xe853, 0x712f, 0x326e, 0x7130, 0xe854, 0xe855, 0xe856, + 0x7131, 0x0000, 0xe857, 0xe858, 0xe859, 0x7133, 0x7134, 0xe85a, + 0x7136, 0x7132, 0xe85b, 0x0000, 0x7135, 0x0000, 0xe85c, 0xe85d, + 0x345b, 0x0000, 0x0000, 0xe85e, 0x7137, 0x0000, 0x7138, 0x0000, + 0x0000, 0xe85f, 0xe860, 0xe861, 0xe862, 0xe863, 0x0000, 0x0000, + 0x0000, 0xe864, 0xe865, 0xe866, 0xe867, 0x7139, 0x713a, 0x0000, + 0xe868, 0xe869, 0x713b, 0x0000, 0x0000, 0x713d, 0xe86a, 0xe86b, + 0xe86c, 0x713c, 0x0000, 0x713f, 0x7142, 0xe86d, 0xe86e, 0x0000, + 0x713e, 0x7140, 0x7141, 0x0000, 0xe86f, 0x7143, 0x0000, 0x3642, + 0xe870, 0xe871, 0x0000, 0xe872, 0xe873, 0x0000, 0xe874, 0xe875, + 0xe876, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3c73, 0x7144, + 0x7145, 0x3961, 0x0000, 0xe877, 0x0000, 0xe878, 0x0000, 0xe879, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7146, 0xe87a, 0x0000, + 0x333e, 0x0000, 0x0000, 0x0000, 0x474f, 0x7147, 0x7148, 0x0000, + 0xe87b, 0xe87c, 0xe87d, 0x435a, 0x466b, 0xe87e, 0x0000, 0x0000, + 0x0000, 0xe921, 0xe922, 0x0000, 0x7149, 0xe923, 0x0000, 0xe924, + 0x0000, 0x477d, 0x0000, 0xe925, 0x424c, 0x3158, 0x366e, 0x0000, + 0x366f, 0xe926, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4373, 0x714e, 0x3670, 0xe927, 0xe928, 0x326f, 0x0000, 0x0000, + 0x714d, 0xe929, 0xe92a, 0x714b, 0xe92b, 0x714c, 0xe92c, 0x714a, + 0x0000, 0x0000, 0x7158, 0x0000, 0x0000, 0x0000, 0x0000, 0xe92d, + 0x0000, 0x0000, 0xe92e, 0xe92f, 0xe930, 0x714f, 0x7150, 0x0000, + 0xe931, 0x7151, 0x7152, 0x0000, 0xe932, 0xe933, 0x0000, 0x0000, + 0x7154, 0xe934, 0x0000, 0x7153, 0x0000, 0xe935, 0xe936, 0x3d59 +}; + +static const unsigned short jis_from_unicode_9a[] = { + 0x0000, 0x7155, 0xe937, 0xe938, 0xe939, 0x7157, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xe93a, 0xe93b, 0x0000, 0x3533, 0x7156, + 0xe93c, 0xe93d, 0x417b, 0x3833, 0x0000, 0x0000, 0xe93e, 0x0000, + 0x0000, 0x7159, 0x0000, 0x0000, 0x0000, 0x0000, 0xe93f, 0x0000, + 0xe940, 0x0000, 0xe941, 0xe942, 0xe943, 0x0000, 0x0000, 0xe944, + 0x424d, 0x0000, 0x0000, 0x715a, 0x0000, 0xe945, 0xe946, 0x0000, + 0x462d, 0x0000, 0x0000, 0xe947, 0x0000, 0xe948, 0xe949, 0x715b, + 0xe94a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7160, 0x0000, + 0x715e, 0xe94c, 0x715d, 0x715f, 0xe94d, 0x715c, 0x0000, 0xe94b, + 0x0000, 0x0000, 0xe94e, 0xe94f, 0xe950, 0x7162, 0xe951, 0x0000, + 0x0000, 0xe952, 0x0000, 0x0000, 0xe953, 0x7161, 0xe954, 0x7164, + 0x0000, 0x0000, 0x3643, 0x7163, 0x0000, 0xe955, 0x0000, 0x7165, + 0x0000, 0x0000, 0x7166, 0x0000, 0x7168, 0x7167, 0x0000, 0x0000, + 0x0000, 0x7169, 0x716b, 0x716a, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x397c, 0x0000, 0xe956, 0x0000, 0xe957, 0x716c, 0xe958, 0xe959, + 0x716d, 0x0000, 0xe95a, 0x0000, 0xe95b, 0xe95c, 0xe95d, 0x0000, + 0x333c, 0xe95e, 0x0000, 0xe95f, 0x716e, 0x0000, 0xe960, 0xe961, + 0x716f, 0xe962, 0x0000, 0xe963, 0x3f71, 0x0000, 0xe964, 0x0000, + 0xe965, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe966, 0x7170, + 0xe967, 0x7171, 0xe968, 0x7172, 0x7173, 0xe969, 0xe96a, 0xe96b, + 0x3962, 0x0000, 0x0000, 0xe96c, 0xe96d, 0x0000, 0x7174, 0x7175, + 0xe96e, 0x0000, 0x7176, 0x7177, 0xe96f, 0xe970, 0x7178, 0xe971, + 0x0000, 0xe972, 0x4831, 0x717a, 0xe973, 0x4926, 0x717b, 0x7179, + 0x0000, 0x717d, 0xe974, 0xe975, 0x717c, 0xe976, 0x0000, 0x717e, + 0x0000, 0xe977, 0xe978, 0x7221, 0x0000, 0xe979, 0x0000, 0xe97a +}; + +static const unsigned short jis_from_unicode_9b[] = { + 0xe97b, 0xe97c, 0xe97d, 0xe97e, 0xea21, 0xea22, 0x7222, 0x0000, + 0xea23, 0xea24, 0x0000, 0xea25, 0xea26, 0xea27, 0xea28, 0x0000, + 0xea29, 0x0000, 0xea2a, 0x0000, 0x0000, 0x0000, 0xea2b, 0x0000, + 0x7223, 0xea2c, 0x7224, 0xea2d, 0xea2e, 0x0000, 0x0000, 0x7225, + 0xea2f, 0x0000, 0x7226, 0x7227, 0x0000, 0x7228, 0xea30, 0x7229, + 0x722a, 0x722b, 0x722c, 0xea31, 0x0000, 0xea32, 0x722d, 0x722e, + 0x0000, 0x5d35, 0x722f, 0xea33, 0xea34, 0xea35, 0x0000, 0xea36, + 0x0000, 0xea37, 0xea38, 0x6478, 0x3534, 0xea39, 0x0000, 0x0000, + 0x0000, 0x3321, 0x3a32, 0x7231, 0x7230, 0x4c25, 0x0000, 0x0000, + 0xea3a, 0x0000, 0x0000, 0xea3b, 0xea3c, 0x7233, 0x7234, 0x7232, + 0x0000, 0x7235, 0x0000, 0x0000, 0x4b62, 0xea3d, 0xea3e, 0xea3f, + 0x7236, 0x0000, 0x357b, 0xea40, 0x0000, 0x0000, 0xea41, 0x0000, + 0x0000, 0xea42, 0x0000, 0xea43, 0x0000, 0xea44, 0xea45, 0x0000, + 0xea46, 0x0000, 0xea47, 0xea48, 0xea49, 0xea4a, 0xea4b, 0x4f25, + 0x0000, 0x0000, 0x0000, 0xea4c, 0x7237, 0xea4d, 0x0000, 0xea4e, + 0xea4f, 0xea50, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xea51, + 0xea52, 0x0000, 0x0000, 0x7239, 0xea53, 0xea54, 0xea55, 0xea56, + 0x0000, 0xea57, 0xea58, 0xea59, 0x0000, 0xea5a, 0x303e, 0xea5b, + 0xea5c, 0x723a, 0x4a2b, 0x7238, 0xea5d, 0x0000, 0x723b, 0x723c, + 0x0000, 0x0000, 0xea5e, 0x0000, 0x0000, 0xea5f, 0xea60, 0x723d, + 0x723e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xea61, 0xea62, + 0x723f, 0xea63, 0x4b6e, 0x3b2d, 0xea64, 0x3a7a, 0x412f, 0x0000, + 0xea65, 0xea66, 0xea67, 0x0000, 0x7240, 0x0000, 0x0000, 0xea68, + 0xea69, 0x7243, 0x0000, 0xea6a, 0xea6b, 0x0000, 0xea6c, 0xea6d, + 0x7241, 0xea6e, 0x0000, 0x0000, 0x0000, 0x0000, 0x7244, 0xea6f, + 0xea70, 0x3871, 0x7242, 0x0000, 0x0000, 0x0000, 0xea71, 0x7245, + 0xea72, 0x7246, 0x7247, 0x0000, 0x724b, 0x0000, 0x3b2a, 0xea73, + 0xea74, 0x0000, 0x0000, 0x4264, 0x0000, 0xea75, 0x0000, 0xea76, + 0x0000, 0x724c, 0x7249, 0x7248, 0x724a, 0xea77, 0x0000, 0xea78, + 0x375f, 0x0000, 0xea79, 0xea7a, 0x0000, 0x0000, 0x0000, 0xea7b, + 0x7250, 0x724f, 0x724e, 0xea7c, 0x0000, 0x3033, 0x0000, 0xea7d, + 0xea7e, 0xeb21, 0xeb22, 0x0000, 0x0000, 0xeb23, 0x0000, 0xeb24 +}; + +static const unsigned short jis_from_unicode_9c[] = { + 0xeb25, 0x0000, 0xeb26, 0x0000, 0x725a, 0x0000, 0x7256, 0x0000, + 0x7257, 0x7253, 0x7259, 0xeb27, 0x7255, 0x3362, 0x0000, 0xeb28, + 0x4f4c, 0xeb29, 0x7258, 0x7254, 0x7252, 0x7251, 0xeb2a, 0x0000, + 0xeb2b, 0xeb2c, 0xeb2d, 0x725c, 0xeb2e, 0x0000, 0xeb2f, 0x0000, + 0x0000, 0x725f, 0xeb30, 0xeb31, 0x725e, 0x725d, 0xeb32, 0xeb33, + 0xeb34, 0xeb35, 0xeb36, 0x0000, 0x0000, 0x4949, 0x725b, 0x3073, + 0x7260, 0xeb37, 0x7262, 0x0000, 0x0000, 0xeb38, 0xeb39, 0xeb3a, + 0x0000, 0x336f, 0x724d, 0x3137, 0x0000, 0xeb3b, 0x7264, 0x0000, + 0x0000, 0xeb3c, 0x0000, 0xeb3d, 0xeb3e, 0xeb3f, 0x7263, 0x7261, + 0x432d, 0xeb40, 0xeb41, 0x0000, 0x0000, 0x0000, 0xeb42, 0xeb43, + 0xeb44, 0x0000, 0x4b70, 0xeb45, 0xeb46, 0x0000, 0xeb47, 0x4e5a, + 0xeb48, 0x0000, 0x7265, 0xeb49, 0xeb50, 0xeb4a, 0xeb4b, 0xeb4c, + 0x7266, 0x0000, 0x0000, 0xeb4d, 0x0000, 0x0000, 0x0000, 0x7267, + 0xeb52, 0xeb4e, 0xeb4f, 0xeb51, 0x0000, 0x0000, 0xeb53, 0x0000, + 0xeb54, 0x0000, 0xeb55, 0x0000, 0x0000, 0xeb56, 0x7268, 0xeb57, + 0x7269, 0x0000, 0x0000, 0xeb58, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x443b, 0xeb59, 0x726a, + 0x0000, 0x4837, 0x0000, 0x726f, 0x726b, 0x0000, 0x0000, 0x0000, + 0x726c, 0x0000, 0xeb5a, 0x4b31, 0x4c44, 0x0000, 0x4650, 0xeb5b, + 0x0000, 0xeb5c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short jis_from_unicode_9d[] = { + 0x0000, 0x0000, 0xeb5e, 0x7270, 0x0000, 0x0000, 0x7271, 0x463e, + 0x726e, 0x726d, 0x0000, 0xeb5d, 0x0000, 0x0000, 0x322a, 0x0000, + 0x0000, 0xeb5f, 0x7279, 0x0000, 0x0000, 0x7278, 0x0000, 0xeb60, + 0xeb61, 0x0000, 0x0000, 0x3175, 0xeb62, 0xeb63, 0xeb64, 0x7276, + 0x0000, 0x0000, 0x0000, 0x7275, 0x0000, 0x0000, 0x7273, 0x0000, + 0x337b, 0x0000, 0x7272, 0x3c32, 0x3229, 0x0000, 0x0000, 0xeb65, + 0xeb66, 0x0000, 0xeb67, 0xeb68, 0xeb69, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xeb6a, 0x3963, 0xeb6b, 0xeb6d, 0x727c, 0x727b, + 0x0000, 0x727a, 0xeb6e, 0xeb6f, 0x7277, 0xeb6c, 0x727d, 0xeb70, + 0x727e, 0x0000, 0xeb71, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x7325, 0x7324, 0x0000, 0xeb72, 0xeb73, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7326, 0x0000, 0x0000, 0x312d, 0x7321, 0x7322, 0xeb74, + 0x3974, 0x4c39, 0xeb76, 0xeb75, 0x7323, 0xeb77, 0x0000, 0x0000, + 0x0000, 0xeb78, 0xeb79, 0xeb7a, 0x4b32, 0x0000, 0x0000, 0x732b, + 0xeb7b, 0x0000, 0x7327, 0x0000, 0x0000, 0x0000, 0xeb7c, 0xeb7d, + 0x0000, 0x0000, 0x732c, 0xeb7e, 0xec21, 0x0000, 0xec22, 0x0000, + 0x0000, 0x0000, 0x0000, 0xec23, 0xec24, 0x0000, 0xec25, 0x7329, + 0x0000, 0x7328, 0xec26, 0x0000, 0x0000, 0xec27, 0xec28, 0x375c, + 0x0000, 0x0000, 0xec29, 0xec2a, 0x0000, 0xec2b, 0xec2c, 0xec2d, + 0xec2e, 0x0000, 0x732d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xec2f, 0x0000, 0x0000, 0x732e, 0x0000, 0x0000, 0x0000, + 0x0000, 0x732f, 0xec30, 0x732a, 0xec31, 0x0000, 0xec32, 0x7274, + 0x0000, 0xec33, 0x7330, 0x0000, 0x4461, 0xec34, 0x0000, 0x0000, + 0x7334, 0xec35, 0x7335, 0x7333, 0xec36, 0x0000, 0x0000, 0xec37, + 0x0000, 0x7332, 0x7338, 0xec38, 0x7331, 0x0000, 0x7336, 0xec39, + 0x0000, 0xec3a, 0xec3b, 0x0000, 0x0000, 0x0000, 0x0000, 0x7337, + 0x0000, 0x0000, 0x0000, 0x733a, 0xec3c, 0xec3d, 0xec3e, 0xec3f, + 0x0000, 0x7339, 0xec40, 0x0000, 0x0000, 0x0000, 0xec41, 0xec42, + 0xec43, 0x0000, 0x0000, 0x0000, 0x0000, 0xec44, 0x733c, 0xec45, + 0x0000, 0xec46, 0x0000, 0xec47, 0x0000, 0x733d, 0xec48, 0x733e, + 0xec49, 0x0000, 0x4f49, 0xec4a, 0xec4b, 0x0000, 0x0000, 0x0000, + 0x733b, 0x426b, 0x3a6d, 0x0000, 0x0000, 0x733f, 0xec4c, 0x0000 +}; + +static const unsigned short jis_from_unicode_9e[] = { + 0x0000, 0x0000, 0xec4e, 0x0000, 0x0000, 0x0000, 0x0000, 0xec4f, + 0x0000, 0x0000, 0xec4d, 0x0000, 0x0000, 0x0000, 0xec50, 0x0000, + 0xec51, 0xec52, 0xec53, 0x0000, 0x0000, 0xec54, 0xec55, 0x0000, + 0x0000, 0xec56, 0x7340, 0x7341, 0xec57, 0xec58, 0x7342, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7343, 0x0000, 0x0000, + 0x3834, 0x7344, 0xec59, 0xec5a, 0xec5b, 0x7345, 0x0000, 0x3c2f, + 0xec5c, 0x7346, 0xec5d, 0xec5e, 0xec5f, 0xec60, 0x0000, 0xec61, + 0x7347, 0x0000, 0x0000, 0x7348, 0x7349, 0x0000, 0xec62, 0xec63, + 0x0000, 0x734c, 0x734a, 0x4f3c, 0x0000, 0x734b, 0xec64, 0x4e6f, + 0xec65, 0x0000, 0x0000, 0xec66, 0x0000, 0x734d, 0xec67, 0x4e5b, + 0x0000, 0x0000, 0x0000, 0x0000, 0xec68, 0x734e, 0x477e, 0x0000, + 0xec69, 0x734f, 0x7351, 0x0000, 0xec6a, 0x7352, 0xec6b, 0xec6c, + 0xec6d, 0x0000, 0x0000, 0xec6e, 0xec6f, 0xec70, 0x0000, 0x0000, + 0x7350, 0x396d, 0x4c4d, 0x4b63, 0x5677, 0x0000, 0x5d60, 0x4b7b, + 0x0000, 0x0000, 0x0000, 0x0000, 0x322b, 0x0000, 0xec71, 0x0000, + 0xec72, 0x0000, 0x0000, 0xec73, 0x7354, 0x3550, 0x7355, 0x7356, + 0x7357, 0x0000, 0x3975, 0x0000, 0x7358, 0xec74, 0x0000, 0x0000, + 0x6054, 0x4c5b, 0x0000, 0x4263, 0x7359, 0x735b, 0x735a, 0xec75, + 0x735c, 0x0000, 0x0000, 0x0000, 0xec76, 0x735d, 0x0000, 0xec77, + 0x735e, 0x0000, 0x0000, 0x0000, 0xec78, 0xec79, 0xec7a, 0x735f, + 0xec7b, 0xec7c, 0xec7d, 0x0000, 0x7360, 0xec7e, 0x7361, 0x7362, + 0xed21, 0x7363, 0x0000, 0x7364, 0x7365, 0x7366, 0x0000, 0xed22 +}; + +static const unsigned short jis_from_unicode_9f[] = { + 0x0000, 0x0000, 0xed23, 0xed24, 0x0000, 0x0000, 0x0000, 0x7367, + 0x7368, 0xed25, 0x0000, 0x0000, 0x0000, 0x0000, 0x4524, 0xed26, + 0xed27, 0xed28, 0xed29, 0x385d, 0xed2a, 0x736a, 0xed2b, 0xed2c, + 0x0000, 0xed2d, 0xed2e, 0xed2f, 0x0000, 0x0000, 0x0000, 0xed30, + 0x414d, 0x736b, 0xed31, 0x0000, 0x0000, 0x0000, 0xed32, 0x0000, + 0x0000, 0x0000, 0xed33, 0xed34, 0x736c, 0x0000, 0x0000, 0xed35, + 0x0000, 0xed36, 0xed37, 0x0000, 0xed38, 0x0000, 0x0000, 0xed39, + 0x0000, 0xed3a, 0xed3b, 0x4921, 0xed3c, 0xed3d, 0x736d, 0xed3e, + 0x0000, 0xed3f, 0x0000, 0xed40, 0xed41, 0xed42, 0xed43, 0xed44, + 0x0000, 0x0000, 0x736e, 0x6337, 0x0000, 0x0000, 0x6c5a, 0x706d, + 0x0000, 0x0000, 0x736f, 0xed45, 0x7370, 0xed46, 0xed47, 0xed48, + 0xed49, 0x0000, 0xed4a, 0x0000, 0x0000, 0xed4b, 0xed4c, 0x7372, + 0x7373, 0x7374, 0x4e70, 0x7371, 0x0000, 0x0000, 0x7375, 0x7376, + 0xed4d, 0xed4e, 0x7378, 0x0000, 0x7377, 0xed4f, 0xed50, 0xed51, + 0xed52, 0xed53, 0x737a, 0xed54, 0x0000, 0xed55, 0x737b, 0x7379, + 0x0000, 0x0000, 0xed56, 0x0000, 0x0000, 0xed57, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4e36, 0x0000, 0xed58, + 0xed59, 0xed5a, 0xed5b, 0x0000, 0xed5c, 0x737c, 0xed5d, 0xed5e, + 0x0000, 0x0000, 0x0000, 0x0000, 0x737d, 0x6354, 0xed5f, 0x0000, + 0x737e, 0xed60, 0xed61, 0xed62, 0x0000, 0xed63, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short jis_from_unicode_ff[] = { + 0x0000, 0x212a, 0x0000, 0x2174, 0x2170, 0x2173, 0x2175, 0x0000, + 0x214a, 0x214b, 0x2176, 0x215c, 0x2124, 0x0000, 0x2125, 0x213f, + 0x2330, 0x2331, 0x2332, 0x2333, 0x2334, 0x2335, 0x2336, 0x2337, + 0x2338, 0x2339, 0x2127, 0x2128, 0x2163, 0x2161, 0x2164, 0x2129, + 0x2177, 0x2341, 0x2342, 0x2343, 0x2344, 0x2345, 0x2346, 0x2347, + 0x2348, 0x2349, 0x234a, 0x234b, 0x234c, 0x234d, 0x234e, 0x234f, + 0x2350, 0x2351, 0x2352, 0x2353, 0x2354, 0x2355, 0x2356, 0x2357, + 0x2358, 0x2359, 0x235a, 0x214e, 0x2140, 0x214f, 0x2130, 0x2132, + 0x212e, 0x2361, 0x2362, 0x2363, 0x2364, 0x2365, 0x2366, 0x2367, + 0x2368, 0x2369, 0x236a, 0x236b, 0x236c, 0x236d, 0x236e, 0x236f, + 0x2370, 0x2371, 0x2372, 0x2373, 0x2374, 0x2375, 0x2376, 0x2377, + 0x2378, 0x2379, 0x237a, 0x2150, 0x2143, 0x2151, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x2171, 0x2172, 0x224c, 0x2131, 0x0000, 0x216f, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short * const jis_from_unicode_[] = { + jis_from_unicode_0, + jis_from_unicode_1, + jis_from_unicode_2, + jis_from_unicode_3, + jis_from_unicode_4, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + jis_from_unicode_20, + jis_from_unicode_21, + jis_from_unicode_22, + jis_from_unicode_23, + u_allzeros, + jis_from_unicode_25, + jis_from_unicode_26, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + jis_from_unicode_30, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + jis_from_unicode_4e, + jis_from_unicode_4f, + jis_from_unicode_50, + jis_from_unicode_51, + jis_from_unicode_52, + jis_from_unicode_53, + jis_from_unicode_54, + jis_from_unicode_55, + jis_from_unicode_56, + jis_from_unicode_57, + jis_from_unicode_58, + jis_from_unicode_59, + jis_from_unicode_5a, + jis_from_unicode_5b, + jis_from_unicode_5c, + jis_from_unicode_5d, + jis_from_unicode_5e, + jis_from_unicode_5f, + jis_from_unicode_60, + jis_from_unicode_61, + jis_from_unicode_62, + jis_from_unicode_63, + jis_from_unicode_64, + jis_from_unicode_65, + jis_from_unicode_66, + jis_from_unicode_67, + jis_from_unicode_68, + jis_from_unicode_69, + jis_from_unicode_6a, + jis_from_unicode_6b, + jis_from_unicode_6c, + jis_from_unicode_6d, + jis_from_unicode_6e, + jis_from_unicode_6f, + jis_from_unicode_70, + jis_from_unicode_71, + jis_from_unicode_72, + jis_from_unicode_73, + jis_from_unicode_74, + jis_from_unicode_75, + jis_from_unicode_76, + jis_from_unicode_77, + jis_from_unicode_78, + jis_from_unicode_79, + jis_from_unicode_7a, + jis_from_unicode_7b, + jis_from_unicode_7c, + jis_from_unicode_7d, + jis_from_unicode_7e, + jis_from_unicode_7f, + jis_from_unicode_80, + jis_from_unicode_81, + jis_from_unicode_82, + jis_from_unicode_83, + jis_from_unicode_84, + jis_from_unicode_85, + jis_from_unicode_86, + jis_from_unicode_87, + jis_from_unicode_88, + jis_from_unicode_89, + jis_from_unicode_8a, + jis_from_unicode_8b, + jis_from_unicode_8c, + jis_from_unicode_8d, + jis_from_unicode_8e, + jis_from_unicode_8f, + jis_from_unicode_90, + jis_from_unicode_91, + jis_from_unicode_92, + jis_from_unicode_93, + jis_from_unicode_94, + jis_from_unicode_95, + jis_from_unicode_96, + jis_from_unicode_97, + jis_from_unicode_98, + jis_from_unicode_99, + jis_from_unicode_9a, + jis_from_unicode_9b, + jis_from_unicode_9c, + jis_from_unicode_9d, + jis_from_unicode_9e, + jis_from_unicode_9f, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + jis_from_unicode_ff +}; + +struct charmap2 jis_from_unicode = { 0, 255, (unsigned short **) jis_from_unicode_, (unichar_t *) unicode_from_jis212 }; + +const unichar_t unicode_from_big5[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3000, 0xff0c, 0x3001, 0x3002, 0xff0e, 0x2022, 0xff1b, 0xff1a, + 0xff1f, 0xff01, 0xfe30, 0x2026, 0x2025, 0xfe50, 0xff64, 0xfe52, + 0x00b7, 0xfe54, 0xfe55, 0xfe56, 0xfe57, 0xff5c, 0x2013, 0xfe31, + 0x2014, 0xfe33, 0x2574, 0xfe34, 0xfe4f, 0xff08, 0xff09, 0xfe35, + 0xfe36, 0xff5b, 0xff5d, 0xfe37, 0xfe38, 0x3014, 0x3015, 0xfe39, + 0xfe3a, 0x3010, 0x3011, 0xfe3b, 0xfe3c, 0x300a, 0x300b, 0xfe3d, + 0xfe3e, 0x3008, 0x3009, 0xfe3f, 0xfe40, 0x300c, 0x300d, 0xfe41, + 0xfe42, 0x300e, 0x300f, 0xfe43, 0xfe44, 0xfe59, 0xfe5a, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xfe5b, 0xfe5c, 0xfe5d, 0xfe5e, 0x2018, 0x2019, 0x201c, + 0x201d, 0x301d, 0x301e, 0x2035, 0x2032, 0xff03, 0xff06, 0xff0a, + 0x203b, 0x00a7, 0x3003, 0x25cb, 0x25cf, 0x25b3, 0x25b2, 0x25ce, + 0x2606, 0x2605, 0x25c7, 0x25c6, 0x25a1, 0x25a0, 0x25bd, 0x25bc, + 0x32a3, 0x2105, 0x00af, 0xffe3, 0xff3f, 0x02cd, 0xfe49, 0xfe4a, + 0xfe4d, 0xfe4e, 0xfe4b, 0xfe4c, 0xfe5f, 0xfe60, 0xfe61, 0xff0b, + 0xff0d, 0x00d7, 0x00f7, 0x00b1, 0x221a, 0xff1c, 0xff1e, 0xff1d, + 0x2266, 0x2267, 0x2260, 0x221e, 0x2252, 0x2261, 0xfe62, 0xfe63, + 0xfe64, 0xfe65, 0xfe66, 0x223c, 0x2229, 0x222a, 0x22a5, 0x2220, + 0x221f, 0x22bf, 0x33d2, 0x33d1, 0x222b, 0x222e, 0x2235, 0x2234, + 0x2640, 0x2642, 0x2295, 0x2299, 0x2191, 0x2193, 0x2190, 0x2192, + 0x2196, 0x2197, 0x2199, 0x2198, 0x2225, 0x2223, 0xff0f, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xff3c, 0x2215, 0xfe68, 0xff04, 0x00a5, 0x3012, 0x00a2, 0x00a3, + 0xff05, 0xff20, 0x2103, 0x2109, 0xfe69, 0xfe6a, 0xfe6b, 0x33d5, + 0x339c, 0x339d, 0x339e, 0x33ce, 0x33a1, 0x338e, 0x338f, 0x33c4, + 0x00b0, 0x5159, 0x515b, 0x515e, 0x515d, 0x5161, 0x5163, 0x55e7, + 0x74e9, 0x7cce, 0x2581, 0x2582, 0x2583, 0x2584, 0x2585, 0x2586, + 0x2587, 0x2588, 0x258f, 0x258e, 0x258d, 0x258c, 0x258b, 0x258a, + 0x2589, 0x253c, 0x2534, 0x252c, 0x2524, 0x251c, 0x2594, 0x2500, + 0x2502, 0x2595, 0x250c, 0x2510, 0x2514, 0x2518, 0x256d, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x256e, 0x2570, 0x256f, 0x2550, 0x255e, 0x256a, 0x2561, + 0x25e2, 0x25e3, 0x25e5, 0x25e4, 0x2571, 0x2572, 0x2573, 0xff10, + 0xff11, 0xff12, 0xff13, 0xff14, 0xff15, 0xff16, 0xff17, 0xff18, + 0xff19, 0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, + 0x2167, 0x2168, 0x2169, 0x3021, 0x3022, 0x3023, 0x3024, 0x3025, + 0x3026, 0x3027, 0x3028, 0x3029, 0x3038, 0x5344, 0x303a, 0xff21, + 0xff22, 0xff23, 0xff24, 0xff25, 0xff26, 0xff27, 0xff28, 0xff29, + 0xff2a, 0xff2b, 0xff2c, 0xff2d, 0xff2e, 0xff2f, 0xff30, 0xff31, + 0xff32, 0xff33, 0xff34, 0xff35, 0xff36, 0xff37, 0xff38, 0xff39, + 0xff3a, 0xff41, 0xff42, 0xff43, 0xff44, 0xff45, 0xff46, 0xff47, + 0xff48, 0xff49, 0xff4a, 0xff4b, 0xff4c, 0xff4d, 0xff4e, 0xff4f, + 0xff50, 0xff51, 0xff52, 0xff53, 0xff54, 0xff55, 0xff56, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xff57, 0xff58, 0xff59, 0xff5a, 0x0391, 0x0392, 0x0393, 0x0394, + 0x0395, 0x0396, 0x0397, 0x0398, 0x0399, 0x039a, 0x039b, 0x039c, + 0x039d, 0x039e, 0x039f, 0x03a0, 0x03a1, 0x03a3, 0x03a4, 0x03a5, + 0x03a6, 0x03a7, 0x03a8, 0x03a9, 0x03b1, 0x03b2, 0x03b3, 0x03b4, + 0x03b5, 0x03b6, 0x03b7, 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, + 0x03bd, 0x03be, 0x03bf, 0x03c0, 0x03c1, 0x03c3, 0x03c4, 0x03c5, + 0x03c6, 0x03c7, 0x03c8, 0x03c9, 0x3105, 0x3106, 0x3107, 0x3108, + 0x3109, 0x310a, 0x310b, 0x310c, 0x310d, 0x310e, 0x310f, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x3110, 0x3111, 0x3112, 0x3113, 0x3114, 0x3115, 0x3116, + 0x3117, 0x3118, 0x3119, 0x311a, 0x311b, 0x311c, 0x311d, 0x311e, + 0x311f, 0x3120, 0x3121, 0x3122, 0x3123, 0x3124, 0x3125, 0x3126, + 0x3127, 0x3128, 0x3129, 0x02d9, 0x0000, 0x02ca, 0x02c7, 0x02cb, + 0x2400, 0x2401, 0x2402, 0x2403, 0x2404, 0x2405, 0x2406, 0x2407, + 0x2408, 0x2409, 0x240a, 0x240b, 0x240c, 0x240d, 0x240e, 0x240f, + 0x2410, 0x2411, 0x2412, 0x2413, 0x2414, 0x2415, 0x2416, 0x2417, + 0x2418, 0x2419, 0x241a, 0x241b, 0x241c, 0x241d, 0x241e, 0x241f, + 0x2421, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4e00, 0x4e59, 0x4e01, 0x4e03, 0x4e43, 0x4e5d, 0x4e86, 0x4e8c, + 0x4eba, 0x513f, 0x5165, 0x516b, 0x51e0, 0x5200, 0x5201, 0x529b, + 0x5315, 0x5341, 0x535c, 0x53c8, 0x4e09, 0x4e0b, 0x4e08, 0x4e0a, + 0x4e2b, 0x4e38, 0x51e1, 0x4e45, 0x4e48, 0x4e5f, 0x4e5e, 0x4e8e, + 0x4ea1, 0x5140, 0x5203, 0x52fa, 0x5343, 0x53c9, 0x53e3, 0x571f, + 0x58eb, 0x5915, 0x5927, 0x5973, 0x5b50, 0x5b51, 0x5b53, 0x5bf8, + 0x5c0f, 0x5c22, 0x5c38, 0x5c71, 0x5ddd, 0x5de5, 0x5df1, 0x5df2, + 0x5df3, 0x5dfe, 0x5e72, 0x5efe, 0x5f0b, 0x5f13, 0x624d, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x4e11, 0x4e10, 0x4e0d, 0x4e2d, 0x4e30, 0x4e39, 0x4e4b, + 0x5c39, 0x4e88, 0x4e91, 0x4e95, 0x4e92, 0x4e94, 0x4ea2, 0x4ec1, + 0x4ec0, 0x4ec3, 0x4ec6, 0x4ec7, 0x4ecd, 0x4eca, 0x4ecb, 0x4ec4, + 0x5143, 0x5141, 0x5167, 0x516d, 0x516e, 0x516c, 0x5197, 0x51f6, + 0x5206, 0x5207, 0x5208, 0x52fb, 0x52fe, 0x52ff, 0x5316, 0x5339, + 0x5348, 0x5347, 0x5345, 0x535e, 0x5384, 0x53cb, 0x53ca, 0x53cd, + 0x58ec, 0x5929, 0x592b, 0x592a, 0x592d, 0x5b54, 0x5c11, 0x5c24, + 0x5c3a, 0x5c6f, 0x5df4, 0x5e7b, 0x5eff, 0x5f14, 0x5f15, 0x5fc3, + 0x6208, 0x6236, 0x624b, 0x624e, 0x652f, 0x6587, 0x6597, 0x65a4, + 0x65b9, 0x65e5, 0x66f0, 0x6708, 0x6728, 0x6b20, 0x6b62, 0x6b79, + 0x6bcb, 0x6bd4, 0x6bdb, 0x6c0f, 0x6c34, 0x706b, 0x722a, 0x7236, + 0x723b, 0x7247, 0x7259, 0x725b, 0x72ac, 0x738b, 0x4e19, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4e16, 0x4e15, 0x4e14, 0x4e18, 0x4e3b, 0x4e4d, 0x4e4f, 0x4e4e, + 0x4ee5, 0x4ed8, 0x4ed4, 0x4ed5, 0x4ed6, 0x4ed7, 0x4ee3, 0x4ee4, + 0x4ed9, 0x4ede, 0x5145, 0x5144, 0x5189, 0x518a, 0x51ac, 0x51f9, + 0x51fa, 0x51f8, 0x520a, 0x52a0, 0x529f, 0xe05b, 0x5306, 0x5317, + 0x531d, 0x4edf, 0x534a, 0x5349, 0x5361, 0x5360, 0x536f, 0x536e, + 0x53bb, 0x53ef, 0x53e4, 0x53f3, 0x53ec, 0x53ee, 0x53e9, 0x53e8, + 0x53fc, 0x53f8, 0x53f5, 0x53eb, 0x53e6, 0x53ea, 0x53f2, 0x53f1, + 0x53f0, 0x53e5, 0x53ed, 0x53fb, 0x56db, 0x56da, 0x5916, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x592e, 0x5931, 0x5974, 0x5976, 0x5b55, 0x5b83, 0x5c3c, + 0x5de8, 0x5de7, 0x5de6, 0x5e02, 0x5e03, 0x5e73, 0x5e7c, 0x5f01, + 0x5f18, 0x5f17, 0x5fc5, 0x620a, 0x6253, 0x6254, 0x6252, 0x6251, + 0x65a5, 0x65e6, 0x672e, 0x672c, 0x672a, 0x672b, 0x672d, 0x6b63, + 0x6bcd, 0x6c11, 0x6c10, 0x6c38, 0x6c41, 0x6c40, 0x6c3e, 0x72af, + 0x7384, 0x7389, 0x74dc, 0x74e6, 0x7518, 0x751f, 0x7528, 0x7529, + 0x7530, 0x7531, 0x7532, 0x7533, 0x758b, 0x767d, 0x76ae, 0x76bf, + 0x76ee, 0x77db, 0x77e2, 0x77f3, 0x793a, 0x79be, 0x7a74, 0x7acb, + 0x4e1e, 0x4e1f, 0x4e52, 0x4e53, 0x4e69, 0x4e99, 0x4ea4, 0x4ea6, + 0x4ea5, 0x4eff, 0x4f09, 0x4f19, 0x4f0a, 0x4f15, 0x4f0d, 0x4f10, + 0x4f11, 0x4f0f, 0x4ef2, 0x4ef6, 0x4efb, 0x4ef0, 0x4ef3, 0x4efd, + 0x4f01, 0x4f0b, 0x5149, 0x5147, 0x5146, 0x5148, 0x5168, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5171, 0x518d, 0x51b0, 0x5217, 0x5211, 0x5212, 0x520e, 0x5216, + 0x52a3, 0x5308, 0x5321, 0x5320, 0x5370, 0x5371, 0x5409, 0x540f, + 0x540c, 0x540a, 0x5410, 0x5401, 0x540b, 0x5404, 0x5411, 0x540d, + 0x5408, 0x5403, 0x540e, 0x5406, 0x5412, 0x56e0, 0x56de, 0x56dd, + 0x5733, 0x5730, 0x5728, 0x572d, 0x572c, 0x572f, 0x5729, 0x5919, + 0x591a, 0x5937, 0x5938, 0x5984, 0x5978, 0x5983, 0x597d, 0x5979, + 0x5982, 0x5981, 0x5b57, 0x5b58, 0x5b87, 0x5b88, 0x5b85, 0x5b89, + 0x5bfa, 0x5c16, 0x5c79, 0x5dde, 0x5e06, 0x5e76, 0x5e74, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5f0f, 0x5f1b, 0x5fd9, 0x5fd6, 0x620e, 0x620c, 0x620d, + 0x6210, 0x6263, 0x625b, 0x6258, 0x6536, 0x65e9, 0x65e8, 0x65ec, + 0x65ed, 0x66f2, 0x66f3, 0x6709, 0x673d, 0x6734, 0x6731, 0x6735, + 0x6b21, 0x6b64, 0x6b7b, 0x6c16, 0x6c5d, 0x6c57, 0x6c59, 0x6c5f, + 0x6c60, 0x6c50, 0x6c55, 0x6c61, 0x6c5b, 0x6c4d, 0x6c4e, 0x7070, + 0x725f, 0x725d, 0x767e, 0x7af9, 0x7c73, 0x7cf8, 0x7f36, 0x7f8a, + 0x7fbd, 0x8001, 0x8003, 0x800c, 0x8012, 0x8033, 0x807f, 0x8089, + 0x808b, 0x808c, 0x81e3, 0x81ea, 0x81f3, 0x81fc, 0x820c, 0x821b, + 0x821f, 0x826e, 0x8272, 0x827e, 0x866b, 0x8840, 0x884c, 0x8863, + 0x897f, 0x9621, 0x4e32, 0x4ea8, 0x4f4d, 0x4f4f, 0x4f47, 0x4f57, + 0x4f5e, 0x4f34, 0x4f5b, 0x4f55, 0x4f30, 0x4f50, 0x4f51, 0x4f3d, + 0x4f3a, 0x4f38, 0x4f43, 0x4f54, 0x4f3c, 0x4f46, 0x4f63, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4f5c, 0x4f60, 0x4f2f, 0x4f4e, 0x4f36, 0x4f59, 0x4f5d, 0x4f48, + 0x4f5a, 0x514c, 0x514b, 0x514d, 0x5175, 0x51b6, 0x51b7, 0x5225, + 0x5224, 0x5229, 0x522a, 0x5228, 0x52ab, 0x52a9, 0x52aa, 0x52ac, + 0x5323, 0x5373, 0x5375, 0x541d, 0x542d, 0x541e, 0x543e, 0x5426, + 0x544e, 0x5427, 0x5446, 0x5443, 0x5433, 0x5448, 0x5442, 0x541b, + 0x5429, 0x544a, 0x5439, 0x543b, 0x5438, 0x542e, 0x5435, 0x5436, + 0x5420, 0x543c, 0x5440, 0x5431, 0x542b, 0x541f, 0x542c, 0x56ea, + 0x56f0, 0x56e4, 0x56eb, 0x574a, 0x5751, 0x5740, 0x574d, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5747, 0x574e, 0x573e, 0x5750, 0x574f, 0x573b, 0x58ef, + 0x593e, 0x599d, 0x5992, 0x59a8, 0x599e, 0x59a3, 0x5999, 0x5996, + 0x598d, 0x59a4, 0x5993, 0x598a, 0x59a5, 0x5b5d, 0x5b5c, 0x5b5a, + 0x5b5b, 0x5b8c, 0x5b8b, 0x5b8f, 0x5c2c, 0x5c40, 0x5c41, 0x5c3f, + 0x5c3e, 0x5c90, 0x5c91, 0x5c94, 0x5c8c, 0x5deb, 0x5e0c, 0x5e8f, + 0x5e87, 0x5e8a, 0x5ef7, 0x5f04, 0x5f1f, 0x5f64, 0x5f62, 0x5f77, + 0x5f79, 0x5fd8, 0x5fcc, 0x5fd7, 0x5fcd, 0x5ff1, 0x5feb, 0x5ff8, + 0x5fea, 0x6212, 0x6211, 0x6284, 0x6297, 0x6296, 0x6280, 0x6276, + 0x6289, 0x626d, 0x628a, 0x627c, 0x627e, 0x6279, 0x6273, 0x6292, + 0x626f, 0x6298, 0x626e, 0x6295, 0x6293, 0x6291, 0x6286, 0x6539, + 0x653b, 0x6538, 0x65f1, 0x66f4, 0x675f, 0x674e, 0x674f, 0x6750, + 0x6751, 0x675c, 0x6756, 0x675e, 0x6749, 0x6746, 0x6760, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6753, 0x6757, 0x6b65, 0x6bcf, 0x6c42, 0x6c5e, 0x6c99, 0x6c81, + 0x6c88, 0x6c89, 0x6c85, 0x6c9b, 0x6c6a, 0x6c7a, 0x6c90, 0x6c70, + 0x6c8c, 0x6c68, 0x6c96, 0x6c92, 0x6c7d, 0x6c83, 0x6c72, 0x6c7e, + 0x6c74, 0x6c86, 0x6c76, 0x6c8d, 0x6c94, 0x6c98, 0x6c82, 0x7076, + 0x707c, 0x707d, 0x7078, 0x7262, 0x7261, 0x7260, 0x72c4, 0x72c2, + 0x7396, 0x752c, 0x752b, 0x7537, 0x7538, 0x7682, 0x76ef, 0x77e3, + 0x79c1, 0x79c0, 0x79bf, 0x7a76, 0x7cfb, 0x7f55, 0x8096, 0x8093, + 0x809d, 0x8098, 0x809b, 0x809a, 0x80b2, 0x826f, 0x8292, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x828b, 0x828d, 0x898b, 0x89d2, 0x8a00, 0x8c37, 0x8c46, + 0x8c55, 0x8c9d, 0x8d64, 0x8d70, 0x8db3, 0x8eab, 0x8eca, 0x8f9b, + 0x8fb0, 0x8fc2, 0x8fc6, 0x8fc5, 0x8fc4, 0x5de1, 0x9091, 0x90a2, + 0x90aa, 0x90a6, 0x90a3, 0x9149, 0x91c6, 0x91cc, 0x9632, 0x962e, + 0x9631, 0x962a, 0x962c, 0x4e26, 0x4e56, 0x4e73, 0x4e8b, 0x4e9b, + 0x4e9e, 0x4eab, 0x4eac, 0x4f6f, 0x4f9d, 0x4f8d, 0x4f73, 0x4f7f, + 0x4f6c, 0x4f9b, 0x4f8b, 0x4f86, 0x4f83, 0x4f70, 0x4f75, 0x4f88, + 0x4f69, 0x4f7b, 0x4f96, 0x4f7e, 0x4f8f, 0x4f91, 0x4f7a, 0x5154, + 0x5152, 0x5155, 0x5169, 0x5177, 0x5176, 0x5178, 0x51bd, 0x51fd, + 0x523b, 0x5238, 0x5237, 0x523a, 0x5230, 0x522e, 0x5236, 0x5241, + 0x52be, 0x52bb, 0x5352, 0x5354, 0x5353, 0x5351, 0x5366, 0x5377, + 0x5378, 0x5379, 0x53d6, 0x53d4, 0x53d7, 0x5473, 0x5475, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5496, 0x5478, 0x5495, 0x5480, 0x547b, 0x5477, 0x5484, 0x5492, + 0x5486, 0x547c, 0x5490, 0x5471, 0x5476, 0x548c, 0x549a, 0x5462, + 0x5468, 0x548b, 0x547d, 0x548e, 0x56fa, 0x5783, 0x5777, 0x576a, + 0x5769, 0x5761, 0x5766, 0x5764, 0x577c, 0x591c, 0x5949, 0x5947, + 0x5948, 0x5944, 0x5954, 0x59be, 0x59bb, 0x59d4, 0x59b9, 0x59ae, + 0x59d1, 0x59c6, 0x59d0, 0x59cd, 0x59cb, 0x59d3, 0x59ca, 0x59af, + 0x59b3, 0x59d2, 0x59c5, 0x5b5f, 0x5b64, 0x5b63, 0x5b97, 0x5b9a, + 0x5b98, 0x5b9c, 0x5b99, 0x5b9b, 0x5c1a, 0x5c48, 0x5c45, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5c46, 0x5cb7, 0x5ca1, 0x5cb8, 0x5ca9, 0x5cab, 0x5cb1, + 0x5cb3, 0x5e18, 0x5e1a, 0x5e16, 0x5e15, 0x5e1b, 0x5e11, 0x5e78, + 0x5e9a, 0x5e97, 0x5e9c, 0x5e95, 0x5e96, 0x5ef6, 0x5f26, 0x5f27, + 0x5f29, 0x5f80, 0x5f81, 0x5f7f, 0x5f7c, 0x5fdd, 0x5fe0, 0x5ffd, + 0x5ff5, 0x5fff, 0x600f, 0x6014, 0x602f, 0x6035, 0x6016, 0x602a, + 0x6015, 0x6021, 0x6027, 0x6029, 0x602b, 0x601b, 0x6216, 0x6215, + 0x623f, 0x623e, 0x6240, 0x627f, 0x62c9, 0x62cc, 0x62c4, 0x62bf, + 0x62c2, 0x62b9, 0x62d2, 0x62db, 0x62ab, 0x62d3, 0x62d4, 0x62cb, + 0x62c8, 0x62a8, 0x62bd, 0x62bc, 0x62d0, 0x62d9, 0x62c7, 0x62cd, + 0x62b5, 0x62da, 0x62b1, 0x62d8, 0x62d6, 0x62d7, 0x62c6, 0x62ac, + 0x62ce, 0x653e, 0x65a7, 0x65bc, 0x65fa, 0x6614, 0x6613, 0x660c, + 0x6606, 0x6602, 0x660e, 0x6600, 0x660f, 0x6615, 0x660a, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6607, 0x670d, 0x670b, 0x676d, 0x678b, 0x6795, 0x6771, 0x679c, + 0x6773, 0x6777, 0x6787, 0x679d, 0x6797, 0x676f, 0x6770, 0x677f, + 0x6789, 0x677e, 0x6790, 0x6775, 0x679a, 0x6793, 0x677c, 0x676a, + 0x6772, 0x6b23, 0x6b66, 0x6b67, 0x6b7f, 0x6c13, 0x6c1b, 0x6ce3, + 0x6ce8, 0x6cf3, 0x6cb1, 0x6ccc, 0x6ce5, 0x6cb3, 0x6cbd, 0x6cbe, + 0x6cbc, 0x6ce2, 0x6cab, 0x6cd5, 0x6cd3, 0x6cb8, 0x6cc4, 0x6cb9, + 0x6cc1, 0x6cae, 0x6cd7, 0x6cc5, 0x6cf1, 0x6cbf, 0x6cbb, 0x6ce1, + 0x6cdb, 0x6cca, 0x6cac, 0x6cef, 0x6cdc, 0x6cd6, 0x6ce0, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7095, 0x708e, 0x7092, 0x708a, 0x7099, 0x722c, 0x722d, + 0x7238, 0x7248, 0x7267, 0x7269, 0x72c0, 0x72ce, 0x72d9, 0x72d7, + 0x72d0, 0x73a9, 0x73a8, 0x739f, 0x73ab, 0x73a5, 0x753d, 0x759d, + 0x7599, 0x759a, 0x7684, 0x76c2, 0x76f2, 0x76f4, 0x77e5, 0x77fd, + 0x793e, 0x7940, 0x7941, 0x79c9, 0x79c8, 0x7a7a, 0x7a79, 0x7afa, + 0x7cfe, 0x7f54, 0x7f8c, 0x7f8b, 0x8005, 0x80ba, 0x80a5, 0x80a2, + 0x80b1, 0x80a1, 0x80ab, 0x80a9, 0x80b4, 0x80aa, 0x80af, 0x81e5, + 0x81fe, 0x820d, 0x82b3, 0x829d, 0x8299, 0x82ad, 0x82bd, 0x829f, + 0x82b9, 0x82b1, 0x82ac, 0x82a5, 0x82af, 0x82b8, 0x82a3, 0x82b0, + 0x82be, 0x82b7, 0x864e, 0x8671, 0x521d, 0x8868, 0x8ecb, 0x8fce, + 0x8fd4, 0x8fd1, 0x90b5, 0x90b8, 0x90b1, 0x90b6, 0x91c7, 0x91d1, + 0x9577, 0x9580, 0x961c, 0x9640, 0x963f, 0x963b, 0x9644, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x9642, 0x96b9, 0x96e8, 0x9752, 0x975e, 0x4e9f, 0x4ead, 0x4eae, + 0x4fe1, 0x4fb5, 0x4faf, 0x4fbf, 0x4fe0, 0x4fd1, 0x4fcf, 0x4fdd, + 0x4fc3, 0x4fb6, 0x4fd8, 0x4fdf, 0x4fca, 0x4fd7, 0x4fae, 0x4fd0, + 0x4fc4, 0x4fc2, 0x4fda, 0x4fce, 0x4fde, 0x4fb7, 0x5157, 0x5192, + 0x5191, 0x51a0, 0x524e, 0x5243, 0x524a, 0x524d, 0x524c, 0x524b, + 0x5247, 0x52c7, 0x52c9, 0x52c3, 0x52c1, 0x530d, 0x5357, 0x537b, + 0x539a, 0x53db, 0x54ac, 0x54c0, 0x54a8, 0x54ce, 0x54c9, 0x54b8, + 0x54a6, 0x54b3, 0x54c7, 0x54c2, 0x54bd, 0x54aa, 0x54c1, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x54c4, 0x54c8, 0x54af, 0x54ab, 0x54b1, 0x54bb, 0x54a9, + 0x54a7, 0x54bf, 0x56ff, 0x5782, 0x578b, 0x57a0, 0x57a3, 0x57a2, + 0x57ce, 0x57ae, 0x5793, 0x5955, 0x5951, 0x594f, 0x594e, 0x5950, + 0x59dc, 0x59d8, 0x59ff, 0x59e3, 0x59e8, 0x5a03, 0x59e5, 0x59ea, + 0x59da, 0x59e6, 0x5a01, 0x59fb, 0x5b69, 0x5ba3, 0x5ba6, 0x5ba4, + 0x5ba2, 0x5ba5, 0x5c01, 0x5c4e, 0x5c4f, 0x5c4d, 0x5c4b, 0x5cd9, + 0x5cd2, 0x5df7, 0x5e1d, 0x5e25, 0x5e1f, 0x5e7d, 0x5ea0, 0x5ea6, + 0x5efa, 0x5f08, 0x5f2d, 0x5f65, 0x5f88, 0x5f85, 0x5f8a, 0x5f8b, + 0x5f87, 0x5f8c, 0x5f89, 0x6012, 0x601d, 0x6020, 0x6025, 0x600e, + 0x6028, 0x604d, 0x6070, 0x6068, 0x6062, 0x6046, 0x6043, 0x606c, + 0x606b, 0x606a, 0x6064, 0x6241, 0x62dc, 0x6316, 0x6309, 0x62fc, + 0x62ed, 0x6301, 0x62ee, 0x62fd, 0x6307, 0x62f1, 0x62f7, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x62ef, 0x62ec, 0x62fe, 0x62f4, 0x6311, 0x6302, 0x653f, 0x6545, + 0x65ab, 0x65bd, 0x65e2, 0x6625, 0x662d, 0x6620, 0x6627, 0x662f, + 0x661f, 0x6628, 0x6631, 0x6624, 0x66f7, 0x67ff, 0x67d3, 0x67f1, + 0x67d4, 0x67d0, 0x67ec, 0x67b6, 0x67af, 0x67f5, 0x67e9, 0x67ef, + 0x67c4, 0x67d1, 0x67b4, 0x67da, 0x67e5, 0x67b8, 0x67cf, 0x67de, + 0x67f3, 0x67b0, 0x67d9, 0x67e2, 0x67dd, 0x67d2, 0x6b6a, 0x6b83, + 0x6b86, 0x6bb5, 0x6bd2, 0x6bd7, 0x6c1f, 0x6cc9, 0x6d0b, 0x6d32, + 0x6d2a, 0x6d41, 0x6d25, 0x6d0c, 0x6d31, 0x6d1e, 0x6d17, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6d3b, 0x6d3d, 0x6d3e, 0x6d36, 0x6d1b, 0x6cf5, 0x6d39, + 0x6d27, 0x6d38, 0x6d29, 0x6d2e, 0x6d35, 0x6d0e, 0x6d2b, 0x70ab, + 0x70ba, 0x70b3, 0x70ac, 0x70af, 0x70ad, 0x70b8, 0x70ae, 0x70a4, + 0x7230, 0x7272, 0x726f, 0x7274, 0x72e9, 0x72e0, 0x72e1, 0x73b7, + 0x73ca, 0x73bb, 0x73b2, 0x73cd, 0x73c0, 0x73b3, 0x751a, 0x752d, + 0x754f, 0x754c, 0x754e, 0x754b, 0x75ab, 0x75a4, 0x75a5, 0x75a2, + 0x75a3, 0x7678, 0x7686, 0x7687, 0x7688, 0x76c8, 0x76c6, 0x76c3, + 0x76c5, 0x7701, 0x76f9, 0x76f8, 0x7709, 0x770b, 0x76fe, 0x76fc, + 0x7707, 0x77dc, 0x7802, 0x7814, 0x780c, 0x780d, 0x7946, 0x7949, + 0x7948, 0x7947, 0x79b9, 0x79ba, 0x79d1, 0x79d2, 0x79cb, 0x7a7f, + 0x7a81, 0x7aff, 0x7afd, 0x7c7d, 0x7d02, 0x7d05, 0x7d00, 0x7d09, + 0x7d07, 0x7d04, 0x7d06, 0x7f38, 0x7f8e, 0x7fbf, 0x8004, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8010, 0x800d, 0x8011, 0x8036, 0x80d6, 0x80e5, 0x80da, 0x80c3, + 0x80c4, 0x80cc, 0x80e1, 0x80db, 0x80ce, 0x80de, 0x80e4, 0x80dd, + 0x81f4, 0x8222, 0x82e7, 0x8303, 0x8305, 0x82e3, 0x82db, 0x82e6, + 0x8304, 0x82e5, 0x8302, 0x8309, 0x82d2, 0x82d7, 0x82f1, 0x8301, + 0x82dc, 0x82d4, 0x82d1, 0x82de, 0x82d3, 0x82df, 0x82ef, 0x8306, + 0x8650, 0x8679, 0x867b, 0x867a, 0x884d, 0x886b, 0x8981, 0x89d4, + 0x8a08, 0x8a02, 0x8a03, 0x8c9e, 0x8ca0, 0x8d74, 0x8d73, 0x8db4, + 0x8ecd, 0x8ecc, 0x8ff0, 0x8fe6, 0x8fe2, 0x8fea, 0x8fe5, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8fed, 0x8feb, 0x8fe4, 0x8fe8, 0x90ca, 0x90ce, 0x90c1, + 0x90c3, 0x914b, 0x914a, 0x91cd, 0x9582, 0x9650, 0x964b, 0x964c, + 0x964d, 0x9762, 0x9769, 0x97cb, 0x97ed, 0x97f3, 0x9801, 0x98a8, + 0x98db, 0x98df, 0x9996, 0x9999, 0x4e58, 0x4eb3, 0x500c, 0x500d, + 0x5023, 0x4fef, 0x5026, 0x5025, 0x4ff8, 0x5029, 0x5016, 0x5006, + 0x503c, 0x501f, 0x501a, 0x5012, 0x5011, 0x4ffa, 0x5000, 0x5014, + 0x5028, 0x4ff1, 0x5021, 0x500b, 0x5019, 0x5018, 0x4ff3, 0x4fee, + 0x502d, 0x502a, 0x4ffe, 0x502b, 0x5009, 0x517c, 0x51a4, 0x51a5, + 0x51a2, 0x51cd, 0x51cc, 0x51c6, 0x51cb, 0x5256, 0x525c, 0x5254, + 0x525b, 0x525d, 0x532a, 0x537f, 0x539f, 0x539d, 0x53df, 0x54e8, + 0x5510, 0x5501, 0x5537, 0x54fc, 0x54e5, 0x54f2, 0x5506, 0x54fa, + 0x5514, 0x54e9, 0x54ed, 0x54e1, 0x5509, 0x54ee, 0x54ea, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x54e6, 0x5527, 0x5507, 0x54fd, 0x550f, 0x5703, 0x5704, 0x57c2, + 0x57d4, 0x57cb, 0x57c3, 0x5809, 0x590f, 0x5957, 0x5958, 0x595a, + 0x5a11, 0x5a18, 0x5a1c, 0x5a1f, 0x5a1b, 0x5a13, 0x59ec, 0x5a20, + 0x5a23, 0x5a29, 0x5a25, 0x5a0c, 0x5a09, 0x5b6b, 0x5c58, 0x5bb0, + 0x5bb3, 0x5bb6, 0x5bb4, 0x5bae, 0x5bb5, 0x5bb9, 0x5bb8, 0x5c04, + 0x5c51, 0x5c55, 0x5c50, 0x5ced, 0x5cfd, 0x5cfb, 0x5cea, 0x5ce8, + 0x5cf0, 0x5cf6, 0x5d01, 0x5cf4, 0x5dee, 0x5e2d, 0x5e2b, 0x5eab, + 0x5ead, 0x5ea7, 0x5f31, 0x5f92, 0x5f91, 0x5f90, 0x6059, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6063, 0x6065, 0x6050, 0x6055, 0x606d, 0x6069, 0x606f, + 0x6084, 0x609f, 0x609a, 0x608d, 0x6094, 0x608c, 0x6085, 0x6096, + 0x6247, 0x62f3, 0x6308, 0x62ff, 0x634e, 0x633e, 0x632f, 0x6355, + 0x6342, 0x6346, 0x634f, 0x6349, 0x633a, 0x6350, 0x633d, 0x632a, + 0x632b, 0x6328, 0x634d, 0x634c, 0x6548, 0x6549, 0x6599, 0x65c1, + 0x65c5, 0x6642, 0x6649, 0x664f, 0x6643, 0x6652, 0x664c, 0x6645, + 0x6641, 0x66f8, 0x6714, 0x6715, 0x6717, 0x6821, 0x6838, 0x6848, + 0x6846, 0x6853, 0x6839, 0x6842, 0x6854, 0x6829, 0x68b3, 0x6817, + 0x684c, 0x6851, 0x683d, 0x67f4, 0x6850, 0x6840, 0x683c, 0x6843, + 0x682a, 0x6845, 0x6813, 0x6818, 0x6841, 0x6b8a, 0x6b89, 0x6bb7, + 0x6c23, 0x6c27, 0x6c28, 0x6c26, 0x6c24, 0x6cf0, 0x6d6a, 0x6d95, + 0x6d88, 0x6d87, 0x6d66, 0x6d78, 0x6d77, 0x6d59, 0x6d93, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6d6c, 0x6d89, 0x6d6e, 0x6d5a, 0x6d74, 0x6d69, 0x6d8c, 0x6d8a, + 0x6d79, 0x6d85, 0x6d65, 0x6d94, 0x70ca, 0x70d8, 0x70e4, 0x70d9, + 0x70c8, 0x70cf, 0x7239, 0x7279, 0x72fc, 0x72f9, 0x72fd, 0x72f8, + 0x72f7, 0x7386, 0x73ed, 0x7409, 0x73ee, 0x73e0, 0x73ea, 0x73de, + 0x7554, 0x755d, 0x755c, 0x755a, 0x7559, 0x75be, 0x75c5, 0x75c7, + 0x75b2, 0x75b3, 0x75bd, 0x75bc, 0x75b9, 0x75c2, 0x75b8, 0x768b, + 0x76b0, 0x76ca, 0x76cd, 0x76ce, 0x7729, 0x771f, 0x7720, 0x7728, + 0x77e9, 0x7830, 0x7827, 0x7838, 0x781d, 0x7834, 0x7837, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7825, 0x782d, 0x7820, 0x781f, 0x7832, 0x7955, 0x7950, + 0x7960, 0x795f, 0x7956, 0x795e, 0x795d, 0x7957, 0x795a, 0x79e4, + 0x79e3, 0x79e7, 0x79df, 0x79e6, 0x79e9, 0x79d8, 0x7a84, 0x7a88, + 0x7ad9, 0x7b06, 0x7b11, 0x7c89, 0x7d21, 0x7d17, 0x7d0b, 0x7d0a, + 0x7d20, 0x7d22, 0x7d14, 0x7d10, 0x7d15, 0x7d1a, 0x7d1c, 0x7d0d, + 0x7d19, 0x7d1b, 0x7f3a, 0x7f5f, 0x7f94, 0x7fc5, 0x7fc1, 0x8006, + 0x8018, 0x8015, 0x8019, 0x8017, 0x803d, 0x803f, 0x80f1, 0x8102, + 0x80f0, 0x8105, 0x80ed, 0x80f4, 0x8106, 0x80f8, 0x80f3, 0x8108, + 0x80fd, 0x810a, 0x80fc, 0x80ef, 0x81ed, 0x81ec, 0x8200, 0x8210, + 0x822a, 0x822b, 0x8228, 0x822c, 0x82bb, 0x832b, 0x8352, 0x8354, + 0x834a, 0x8338, 0x8350, 0x8349, 0x8335, 0x8334, 0x834f, 0x8332, + 0x8339, 0x8336, 0x8317, 0x8340, 0x8331, 0x8328, 0x8343, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8654, 0x868a, 0x86aa, 0x8693, 0x86a4, 0x86a9, 0x868c, 0x86a3, + 0x869c, 0x8870, 0x8877, 0x8881, 0x8882, 0x887d, 0x8879, 0x8a18, + 0x8a10, 0x8a0e, 0x8a0c, 0x8a15, 0x8a0a, 0x8a17, 0x8a13, 0x8a16, + 0x8a0f, 0x8a11, 0x8c48, 0x8c7a, 0x8c79, 0x8ca1, 0x8ca2, 0x8d77, + 0x8eac, 0x8ed2, 0x8ed4, 0x8ecf, 0x8fb1, 0x9001, 0x9006, 0x8ff7, + 0x9000, 0x8ffa, 0x8ff4, 0x9003, 0x8ffd, 0x9005, 0x8ff8, 0x9095, + 0x90e1, 0x90dd, 0x90e2, 0x9152, 0x914d, 0x914c, 0x91d8, 0x91dd, + 0x91d7, 0x91dc, 0x91d9, 0x9583, 0x9662, 0x9663, 0x9661, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x965b, 0x965d, 0x9664, 0x9658, 0x965e, 0x96bb, 0x98e2, + 0x99ac, 0x9aa8, 0x9ad8, 0x9b25, 0x9b32, 0x9b3c, 0x4e7e, 0x507a, + 0x507d, 0x505c, 0x5047, 0x5043, 0x504c, 0x505a, 0x5049, 0x5065, + 0x5076, 0x504e, 0x5055, 0x5075, 0x5074, 0x5077, 0x504f, 0x500f, + 0x506f, 0x506d, 0x515c, 0x5195, 0x51f0, 0x526a, 0x526f, 0x52d2, + 0x52d9, 0x52d8, 0x52d5, 0x5310, 0x530f, 0x5319, 0x533f, 0x5340, + 0x533e, 0x53c3, 0x66fc, 0x5546, 0x556a, 0x5566, 0x5544, 0x555e, + 0x5561, 0x5543, 0x554a, 0x5531, 0x5556, 0x554f, 0x5555, 0x552f, + 0x5564, 0x5538, 0x552e, 0x555c, 0x552c, 0x5563, 0x5533, 0x5541, + 0x5557, 0x5708, 0x570b, 0x5709, 0x57df, 0x5805, 0x580a, 0x5806, + 0x57e0, 0x57e4, 0x57fa, 0x5802, 0x5835, 0x57f7, 0x57f9, 0x5920, + 0x5962, 0x5a36, 0x5a41, 0x5a49, 0x5a66, 0x5a6a, 0x5a40, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5a3c, 0x5a62, 0x5a5a, 0x5a46, 0x5a4a, 0x5b70, 0x5bc7, 0x5bc5, + 0x5bc4, 0x5bc2, 0x5bbf, 0x5bc6, 0x5c09, 0x5c08, 0x5c07, 0x5c60, + 0x5c5c, 0x5c5d, 0x5d07, 0x5d06, 0x5d0e, 0x5d1b, 0x5d16, 0x5d22, + 0x5d11, 0x5d29, 0x5d14, 0x5d19, 0x5d24, 0x5d27, 0x5d17, 0x5de2, + 0x5e38, 0x5e36, 0x5e33, 0x5e37, 0x5eb7, 0x5eb8, 0x5eb6, 0x5eb5, + 0x5ebe, 0x5f35, 0x5f37, 0x5f57, 0x5f6c, 0x5f69, 0x5f6b, 0x5f97, + 0x5f99, 0x5f9e, 0x5f98, 0x5fa1, 0x5fa0, 0x5f9c, 0x607f, 0x60a3, + 0x6089, 0x60a0, 0x60a8, 0x60cb, 0x60b4, 0x60e6, 0x60bd, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x60c5, 0x60bb, 0x60b5, 0x60dc, 0x60bc, 0x60d8, 0x60d5, + 0x60c6, 0x60df, 0x60b8, 0x60da, 0x60c7, 0x621a, 0x621b, 0x6248, + 0x63a0, 0x63a7, 0x6372, 0x6396, 0x63a2, 0x63a5, 0x6377, 0x6367, + 0x6398, 0x63aa, 0x6371, 0x63a9, 0x6389, 0x6383, 0x639b, 0x636b, + 0x63a8, 0x6384, 0x6388, 0x6399, 0x63a1, 0x63ac, 0x6392, 0x638f, + 0x6380, 0x637b, 0x6369, 0x6368, 0x637a, 0x655d, 0x6556, 0x6551, + 0x6559, 0x6557, 0x555f, 0x654f, 0x6558, 0x6555, 0x6554, 0x659c, + 0x659b, 0x65ac, 0x65cf, 0x65cb, 0x65cc, 0x65ce, 0x665d, 0x665a, + 0x6664, 0x6668, 0x6666, 0x665e, 0x66f9, 0x52d7, 0x671b, 0x6881, + 0x68af, 0x68a2, 0x6893, 0x68b5, 0x687f, 0x6876, 0x68b1, 0x68a7, + 0x6897, 0x68b0, 0x6883, 0x68c4, 0x68ad, 0x6886, 0x6885, 0x6894, + 0x689d, 0x68a8, 0x689f, 0x68a1, 0x6882, 0x6b32, 0x6bba, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6beb, 0x6bec, 0x6c2b, 0x6d8e, 0x6dbc, 0x6df3, 0x6dd9, 0x6db2, + 0x6de1, 0x6dcc, 0x6de4, 0x6dfb, 0x6dfa, 0x6e05, 0x6dc7, 0x6dcb, + 0x6daf, 0x6dd1, 0x6dae, 0x6dde, 0x6df9, 0x6db8, 0x6df7, 0x6df5, + 0x6dc5, 0x6dd2, 0x6e1a, 0x6db5, 0x6dda, 0x6deb, 0x6dd8, 0x6dea, + 0x6df1, 0x6dee, 0x6de8, 0x6dc6, 0x6dc4, 0x6daa, 0x6dec, 0x6dbf, + 0x6de6, 0x70f9, 0x7109, 0x710a, 0x70fd, 0x70ef, 0x723d, 0x727d, + 0x7281, 0x731c, 0x731b, 0x7316, 0x7313, 0x7319, 0x7387, 0x7405, + 0x740a, 0x7403, 0x7406, 0x73fe, 0x740d, 0x74e0, 0x74f6, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x74f7, 0x751c, 0x7522, 0x7565, 0x7566, 0x7562, 0x7570, + 0x758f, 0x75d4, 0x75d5, 0x75b5, 0x75ca, 0x75cd, 0x768e, 0x76d4, + 0x76d2, 0x76db, 0x7737, 0x773e, 0x773c, 0x7736, 0x7738, 0x773a, + 0x786b, 0x7843, 0x784e, 0x7965, 0x7968, 0x796d, 0x79fb, 0x7a92, + 0x7a95, 0x7b20, 0x7b28, 0x7b1b, 0x7b2c, 0x7b26, 0x7b19, 0x7b1e, + 0x7b2e, 0x7c92, 0x7c97, 0x7c95, 0x7d46, 0x7d43, 0x7d71, 0x7d2e, + 0x7d39, 0x7d3c, 0x7d40, 0x7d30, 0x7d33, 0x7d44, 0x7d2f, 0x7d42, + 0x7d32, 0x7d31, 0x7f3d, 0x7f9e, 0x7f9a, 0x7fcc, 0x7fce, 0x7fd2, + 0x801c, 0x804a, 0x8046, 0x812f, 0x8116, 0x8123, 0x812b, 0x8129, + 0x8130, 0x8124, 0x8202, 0x8235, 0x8237, 0x8236, 0x8239, 0x838e, + 0x839e, 0x8398, 0x8378, 0x83a2, 0x8396, 0x83bd, 0x83ab, 0x8392, + 0x838a, 0x8393, 0x8389, 0x83a0, 0x8377, 0x837b, 0x837c, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8386, 0x83a7, 0x8655, 0x5f6a, 0x86c7, 0x86c0, 0x86b6, 0x86c4, + 0x86b5, 0x86c6, 0x86cb, 0x86b1, 0x86af, 0x86c9, 0x8853, 0x889e, + 0x8888, 0x88ab, 0x8892, 0x8896, 0x888d, 0x888b, 0x8993, 0x898f, + 0x8a2a, 0x8a1d, 0x8a23, 0x8a25, 0x8a31, 0x8a2d, 0x8a1f, 0x8a1b, + 0x8a22, 0x8c49, 0x8c5a, 0x8ca9, 0x8cac, 0x8cab, 0x8ca8, 0x8caa, + 0x8ca7, 0x8d67, 0x8d66, 0x8dbe, 0x8dba, 0x8edb, 0x8edf, 0x9019, + 0x900d, 0x901a, 0x9017, 0x9023, 0x901f, 0x901d, 0x9010, 0x9015, + 0x901e, 0x9020, 0x900f, 0x9022, 0x9016, 0x901b, 0x9014, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x90e8, 0x90ed, 0x90fd, 0x9157, 0x91ce, 0x91f5, 0x91e6, + 0x91e3, 0x91e7, 0x91ed, 0x91e9, 0x9589, 0x966a, 0x9675, 0x9673, + 0x9678, 0x9670, 0x9674, 0x9676, 0x9677, 0x966c, 0x96c0, 0x96ea, + 0x96e9, 0x7ae0, 0x7adf, 0x9802, 0x9803, 0x9b5a, 0x9ce5, 0x9e75, + 0x9e7f, 0x9ea5, 0x9ebb, 0x50a2, 0x508d, 0x5085, 0x5099, 0x5091, + 0x5080, 0x5096, 0x5098, 0x509a, 0x6700, 0x51f1, 0x5272, 0x5274, + 0x5275, 0x5269, 0x52de, 0x52dd, 0x52db, 0x535a, 0x53a5, 0x557b, + 0x5580, 0x55a7, 0x557c, 0x558a, 0x559d, 0x5598, 0x5582, 0x559c, + 0x55aa, 0x5594, 0x5587, 0x558b, 0x5583, 0x55b3, 0x55ae, 0x559f, + 0x553e, 0x55b2, 0x559a, 0x55bb, 0x55ac, 0x55b1, 0x557e, 0x5589, + 0x55ab, 0x5599, 0x570d, 0x582f, 0x582a, 0x5834, 0x5824, 0x5830, + 0x5831, 0x5821, 0x581d, 0x5820, 0x58f9, 0x58fa, 0x5960, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5a77, 0x5a9a, 0x5a7f, 0x5a92, 0x5a9b, 0x5aa7, 0x5b73, 0x5b71, + 0x5bd2, 0x5bcc, 0x5bd3, 0x5bd0, 0x5c0a, 0x5c0b, 0x5c31, 0x5d4c, + 0x5d50, 0x5d34, 0x5d47, 0x5dfd, 0x5e45, 0x5e3d, 0x5e40, 0x5e43, + 0x5e7e, 0x5eca, 0x5ec1, 0x5ec2, 0x5ec4, 0x5f3c, 0x5f6d, 0x5fa9, + 0x5faa, 0x5fa8, 0x60d1, 0x60e1, 0x60b2, 0x60b6, 0x60e0, 0x611c, + 0x6123, 0x60fa, 0x6115, 0x60f0, 0x60fb, 0x60f4, 0x6168, 0x60f1, + 0x610e, 0x60f6, 0x6109, 0x6100, 0x6112, 0x621f, 0x6249, 0x63a3, + 0x638c, 0x63cf, 0x63c0, 0x63e9, 0x63c9, 0x63c6, 0x63cd, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x63d2, 0x63e3, 0x63d0, 0x63e1, 0x63d6, 0x63ed, 0x63ee, + 0x6376, 0x63f4, 0x63ea, 0x63db, 0x6452, 0x63da, 0x63f9, 0x655e, + 0x6566, 0x6562, 0x6563, 0x6591, 0x6590, 0x65af, 0x666e, 0x6670, + 0x6674, 0x6676, 0x666f, 0x6691, 0x667a, 0x667e, 0x6677, 0x66fe, + 0x66ff, 0x671f, 0x671d, 0x68fa, 0x68d5, 0x68e0, 0x68d8, 0x68d7, + 0x6905, 0x68df, 0x68f5, 0x68ee, 0x68e7, 0x68f9, 0x68d2, 0x68f2, + 0x68e3, 0x68cb, 0x68cd, 0x690d, 0x6912, 0x690e, 0x68c9, 0x68da, + 0x696e, 0x68fb, 0x6b3e, 0x6b3a, 0x6b3d, 0x6b98, 0x6b96, 0x6bbc, + 0x6bef, 0x6c2e, 0x6c2f, 0x6c2c, 0x6e2f, 0x6e38, 0x6e54, 0x6e21, + 0x6e32, 0x6e67, 0x6e4a, 0x6e20, 0x6e25, 0x6e23, 0x6e1b, 0x6e5b, + 0x6e58, 0x6e24, 0x6e56, 0x6e6e, 0x6e2d, 0x6e26, 0x6e6f, 0x6e34, + 0x6e4d, 0x6e3a, 0x6e2c, 0x6e43, 0x6e1d, 0x6e3e, 0x6ecb, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6e89, 0x6e19, 0x6e4e, 0x6e63, 0x6e44, 0x6e72, 0x6e69, 0x6e5f, + 0x7119, 0x711a, 0x7126, 0x7130, 0x7121, 0x7136, 0x716e, 0x711c, + 0x724c, 0x7284, 0x7280, 0x7336, 0x7325, 0x7334, 0x7329, 0x743a, + 0x742a, 0x7433, 0x7422, 0x7425, 0x7435, 0x7436, 0x7434, 0x742f, + 0x741b, 0x7426, 0x7428, 0x7525, 0x7526, 0x756b, 0x756a, 0x75e2, + 0x75db, 0x75e3, 0x75d9, 0x75d8, 0x75de, 0x75e0, 0x767b, 0x767c, + 0x7696, 0x7693, 0x76b4, 0x76dc, 0x774f, 0x77ed, 0x785d, 0x786c, + 0x786f, 0x7a0d, 0x7a08, 0x7a0b, 0x7a05, 0x7a00, 0x7a98, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7a97, 0x7a96, 0x7ae5, 0x7ae3, 0x7b49, 0x7b56, 0x7b46, + 0x7b50, 0x7b52, 0x7b54, 0x7b4d, 0x7b4b, 0x7b4f, 0x7b51, 0x7c9f, + 0x7ca5, 0x7d5e, 0x7d50, 0x7d68, 0x7d55, 0x7d2b, 0x7d6e, 0x7d72, + 0x7d61, 0x7d66, 0x7d62, 0x7d70, 0x7d73, 0x5584, 0x7fd4, 0x7fd5, + 0x800b, 0x8052, 0x8085, 0x8155, 0x8154, 0x814b, 0x8151, 0x814e, + 0x8139, 0x8146, 0x813e, 0x814c, 0x8153, 0x8174, 0x8212, 0x821c, + 0x83e9, 0x8403, 0x83f8, 0x840d, 0x83e0, 0x83c5, 0x840b, 0x83c1, + 0x83ef, 0x83f1, 0x83f4, 0x8457, 0x840a, 0x83f0, 0x840c, 0x83cc, + 0x83fd, 0x83f2, 0x83ca, 0x8438, 0x840e, 0x8404, 0x83dc, 0x8407, + 0x83d4, 0x83df, 0x865b, 0x86df, 0x86d9, 0x86ed, 0x86d4, 0x86db, + 0x86e4, 0x86d0, 0x86de, 0x8857, 0x88c1, 0x88c2, 0x88b1, 0x8983, + 0x8996, 0x8a3b, 0x8a60, 0x8a55, 0x8a5e, 0x8a3c, 0x8a41, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8a54, 0x8a5b, 0x8a50, 0x8a46, 0x8a34, 0x8a3a, 0x8a36, 0x8a56, + 0x8c61, 0x8c82, 0x8caf, 0x8cbc, 0x8cb3, 0x8cbd, 0x8cc1, 0x8cbb, + 0x8cc0, 0x8cb4, 0x8cb7, 0x8cb6, 0x8cbf, 0x8cb8, 0x8d8a, 0x8d85, + 0x8d81, 0x8dce, 0x8ddd, 0x8dcb, 0x8dda, 0x8dd1, 0x8dcc, 0x8ddb, + 0x8dc6, 0x8efb, 0x8ef8, 0x8efc, 0x8f9c, 0x902e, 0x9035, 0x9031, + 0x9038, 0x9032, 0x9036, 0x9102, 0x90f5, 0x9109, 0x90fe, 0x9163, + 0x9165, 0x91cf, 0x9214, 0x9215, 0x9223, 0x9209, 0x921e, 0x920d, + 0x9210, 0x9207, 0x9211, 0x9594, 0x958f, 0x958b, 0x9591, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x9593, 0x9592, 0x958e, 0x968a, 0x968e, 0x968b, 0x967d, + 0x9685, 0x9686, 0x968d, 0x9672, 0x9684, 0x96c1, 0x96c5, 0x96c4, + 0x96c6, 0x96c7, 0x96ef, 0x96f2, 0x97cc, 0x9805, 0x9806, 0x9808, + 0x98e7, 0x98ea, 0x98ef, 0x98e9, 0x98f2, 0x98ed, 0x99ae, 0x99ad, + 0x9ec3, 0x9ecd, 0x9ed1, 0x4e82, 0x50ad, 0x50b5, 0x50b2, 0x50b3, + 0x50c5, 0x50be, 0x50ac, 0x50b7, 0x50bb, 0x50af, 0x50c7, 0x527f, + 0x5277, 0x527d, 0x52df, 0x52e6, 0x52e4, 0x52e2, 0x52e3, 0x532f, + 0x55df, 0x55e8, 0x55d3, 0x55e6, 0x55ce, 0x55dc, 0x55c7, 0x55d1, + 0x55e3, 0x55e4, 0x55ef, 0x55da, 0x55e1, 0x55c5, 0x55c6, 0x55e5, + 0x55c9, 0x5712, 0x5713, 0x585e, 0x5851, 0x5858, 0x5857, 0x585a, + 0x5854, 0x586b, 0x584c, 0x586d, 0x584a, 0x5862, 0x5852, 0x584b, + 0x5967, 0x5ac1, 0x5ac9, 0x5acc, 0x5abe, 0x5abd, 0x5abc, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5ab3, 0x5ac2, 0x5ab2, 0x5d69, 0x5d6f, 0x5e4c, 0x5e79, 0x5ec9, + 0x5ec8, 0x5f12, 0x5f59, 0x5fac, 0x5fae, 0x611a, 0x610f, 0x6148, + 0x611f, 0x60f3, 0x611b, 0x60f9, 0x6101, 0x6108, 0x614e, 0x614c, + 0x6144, 0x614d, 0x613e, 0x6134, 0x6127, 0x610d, 0x6106, 0x6137, + 0x6221, 0x6222, 0x6413, 0x643e, 0x641e, 0x642a, 0x642d, 0x643d, + 0x642c, 0x640f, 0x641c, 0x6414, 0x640d, 0x6436, 0x6416, 0x6417, + 0x6406, 0x656c, 0x659f, 0x65b0, 0x6697, 0x6689, 0x6687, 0x6688, + 0x6696, 0x6684, 0x6698, 0x668d, 0x6703, 0x6994, 0x696d, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x695a, 0x6977, 0x6960, 0x6954, 0x6975, 0x6930, 0x6982, + 0x694a, 0x6968, 0x696b, 0x695e, 0x6953, 0x6979, 0x6986, 0x695d, + 0x6963, 0x695b, 0x6b47, 0x6b72, 0x6bc0, 0x6bbf, 0x6bd3, 0x6bfd, + 0x6ea2, 0x6eaf, 0x6ed3, 0x6eb6, 0x6ec2, 0x6e90, 0x6e9d, 0x6ec7, + 0x6ec5, 0x6ea5, 0x6e98, 0x6ebc, 0x6eba, 0x6eab, 0x6ed1, 0x6e96, + 0x6e9c, 0x6ec4, 0x6ed4, 0x6eaa, 0x6ea7, 0x6eb4, 0x714e, 0x7159, + 0x7169, 0x7164, 0x7149, 0x7167, 0x715c, 0x716c, 0x7166, 0x714c, + 0x7165, 0x715e, 0x7146, 0x7168, 0x7156, 0x723a, 0x7252, 0x7337, + 0x7345, 0x733f, 0x733e, 0x746f, 0x745a, 0x7455, 0x745f, 0x745e, + 0x7441, 0x743f, 0x7459, 0x745b, 0xe2a3, 0x7576, 0x7578, 0x7600, + 0x75f0, 0x7601, 0x75f2, 0x75f1, 0x75fa, 0x75ff, 0x75f4, 0x75f3, + 0x76de, 0x76df, 0x775b, 0x776b, 0x7766, 0x775e, 0x7763, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x7779, 0x776a, 0x776c, 0x775c, 0x7765, 0x7768, 0x7762, 0x77ee, + 0x788e, 0x78b0, 0x7897, 0x7898, 0x788c, 0x7889, 0x787c, 0x7891, + 0x7893, 0x787f, 0x797a, 0x797f, 0x7981, 0x842c, 0x79bd, 0x7a1c, + 0x7a1a, 0x7a20, 0x7a14, 0x7a1f, 0x7a1e, 0x7a9f, 0x7aa0, 0x7b77, + 0x7bc0, 0x7b60, 0x7b6e, 0x7b67, 0x7cb1, 0x7cb3, 0x7cb5, 0x7d93, + 0x7d79, 0x7d91, 0x7d81, 0x7d8f, 0x7d5b, 0x7f6e, 0x7f69, 0x7f6a, + 0x7f72, 0x7fa9, 0x7fa8, 0x7fa4, 0x8056, 0x8058, 0x8086, 0x8084, + 0x8171, 0x8170, 0x8178, 0x8165, 0x816e, 0x8173, 0x816b, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8179, 0x817a, 0x8166, 0x8205, 0x8247, 0x8482, 0x8477, + 0x843d, 0x8431, 0x8475, 0x8466, 0x846b, 0x8449, 0x846c, 0x845b, + 0x843c, 0x8435, 0x8461, 0x8463, 0x8469, 0x846d, 0x8446, 0x865e, + 0x865c, 0x865f, 0x86f9, 0x8713, 0x8708, 0x8707, 0x8700, 0x86fe, + 0x86fb, 0x8702, 0x8703, 0x8706, 0x870a, 0x8859, 0x88df, 0x88d4, + 0x88d9, 0x88dc, 0x88d8, 0x88dd, 0x88e1, 0x88ca, 0x88d5, 0x88d2, + 0x899c, 0x89e3, 0x8a6b, 0x8a72, 0x8a73, 0x8a66, 0x8a69, 0x8a70, + 0x8a87, 0x8a7c, 0x8a63, 0x8aa0, 0x8a71, 0x8a85, 0x8a6d, 0x8a62, + 0x8a6e, 0x8a6c, 0x8a79, 0x8a7b, 0x8a3e, 0x8a68, 0x8c62, 0x8c8a, + 0x8c89, 0x8cca, 0x8cc7, 0x8cc8, 0x8cc4, 0x8cb2, 0x8cc3, 0x8cc2, + 0x8cc5, 0x8de1, 0x8ddf, 0x8de8, 0x8def, 0x8df3, 0x8dfa, 0x8dea, + 0x8de4, 0x8de6, 0x8eb2, 0x8f03, 0x8f09, 0x8efe, 0x8f0a, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8f9f, 0x8fb2, 0x904b, 0x904a, 0x9053, 0x9042, 0x9054, 0x903c, + 0x9055, 0x9050, 0x9047, 0x904f, 0x904e, 0x904d, 0x9051, 0x903e, + 0x9041, 0x9112, 0x9117, 0x916c, 0x916a, 0x9169, 0x91c9, 0x9237, + 0x9257, 0x9238, 0x923d, 0x9240, 0x923e, 0x925b, 0x924b, 0x9264, + 0x9251, 0x9234, 0x9249, 0x924d, 0x9245, 0x9239, 0x923f, 0x925a, + 0x9598, 0x9698, 0x9694, 0x9695, 0x96cd, 0x96cb, 0x96c9, 0x96ca, + 0x96f7, 0x96fb, 0x96f9, 0x96f6, 0x9756, 0x9774, 0x9776, 0x9810, + 0x9811, 0x9813, 0x980a, 0x9812, 0x980c, 0x98fc, 0x98f4, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x98fd, 0x98fe, 0x99b3, 0x99b1, 0x99b4, 0x9ae1, 0x9ce9, + 0x9e82, 0x9f0e, 0x9f13, 0x9f20, 0x50e7, 0x50ee, 0x50e5, 0x50d6, + 0x50ed, 0x50da, 0x50d5, 0x50cf, 0x50d1, 0x50f1, 0x50ce, 0x50e9, + 0x5162, 0x51f3, 0x5283, 0x5282, 0x5331, 0x53ad, 0x55fe, 0x5600, + 0x561b, 0x5617, 0x55fd, 0x5614, 0x5606, 0x5609, 0x560d, 0x560e, + 0x55f7, 0x5616, 0x561f, 0x5608, 0x5610, 0x55f6, 0x5718, 0x5716, + 0x5875, 0x587e, 0x5883, 0x5893, 0x588a, 0x5879, 0x5885, 0x587d, + 0x58fd, 0x5925, 0x5922, 0x5924, 0x596a, 0x5969, 0x5ae1, 0x5ae6, + 0x5ae9, 0x5ad7, 0x5ad6, 0x5ad8, 0x5ae3, 0x5b75, 0x5bde, 0x5be7, + 0x5be1, 0x5be5, 0x5be6, 0x5be8, 0x5be2, 0x5be4, 0x5bdf, 0x5c0d, + 0x5c62, 0x5d84, 0x5d87, 0x5e5b, 0x5e63, 0x5e55, 0x5e57, 0x5e54, + 0x5ed3, 0x5ed6, 0x5f0a, 0x5f46, 0x5f70, 0x5fb9, 0x6147, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x613f, 0x614b, 0x6177, 0x6162, 0x6163, 0x615f, 0x615a, 0x6158, + 0x6175, 0x622a, 0x6487, 0x6458, 0x6454, 0x64a4, 0x6478, 0x645f, + 0x647a, 0x6451, 0x6467, 0x6434, 0x646d, 0x647b, 0x6572, 0x65a1, + 0x65d7, 0x65d6, 0x66a2, 0x66a8, 0x669d, 0x699c, 0x69a8, 0x6995, + 0x69c1, 0x69ae, 0x69d3, 0x69cb, 0x699b, 0x69b7, 0x69bb, 0x69ab, + 0x69b4, 0x69d0, 0x69cd, 0x69ad, 0x69cc, 0x69a6, 0x69c3, 0x69a3, + 0x6b49, 0x6b4c, 0x6c33, 0x6f33, 0x6f14, 0x6efe, 0x6f13, 0x6ef4, + 0x6f29, 0x6f3e, 0x6f20, 0x6f2c, 0x6f0f, 0x6f02, 0x6f22, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6eff, 0x6eef, 0x6f06, 0x6f31, 0x6f38, 0x6f32, 0x6f23, + 0x6f15, 0x6f2b, 0x6f2f, 0x6f88, 0x6f2a, 0x6eec, 0x6f01, 0x6ef2, + 0x6ecc, 0x6ef7, 0x7194, 0x7199, 0x717d, 0x718a, 0x7184, 0x7192, + 0x723e, 0x7292, 0x7296, 0x7344, 0x7350, 0x7464, 0x7463, 0x746a, + 0x7470, 0x746d, 0x7504, 0x7591, 0x7627, 0x760d, 0x760b, 0x7609, + 0x7613, 0x76e1, 0x76e3, 0x7784, 0x777d, 0x777f, 0x7761, 0x78c1, + 0x789f, 0x78a7, 0x78b3, 0x78a9, 0x78a3, 0x798e, 0x798f, 0x798d, + 0x7a2e, 0x7a31, 0x7aaa, 0x7aa9, 0x7aed, 0x7aef, 0x7ba1, 0x7b95, + 0x7b8b, 0x7b75, 0x7b97, 0x7b9d, 0x7b94, 0x7b8f, 0x7bb8, 0x7b87, + 0x7b84, 0x7cb9, 0x7cbd, 0x7cbe, 0x7dbb, 0x7db0, 0x7d9c, 0x7dbd, + 0x7dbe, 0x7da0, 0x7dca, 0x7db4, 0x7db2, 0x7db1, 0x7dba, 0x7da2, + 0x7dbf, 0x7db5, 0x7db8, 0x7dad, 0x7dd2, 0x7dc7, 0x7dac, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x7f70, 0x7fe0, 0x7fe1, 0x7fdf, 0x805e, 0x805a, 0x8087, 0x8150, + 0x8180, 0x818f, 0x8188, 0x818a, 0x817f, 0x8182, 0x81e7, 0x81fa, + 0x8207, 0x8214, 0x821e, 0x824b, 0x84c9, 0x84bf, 0x84c6, 0x84c4, + 0x8499, 0x849e, 0x84b2, 0x849c, 0x84cb, 0x84b8, 0x84c0, 0x84d3, + 0x8490, 0x84bc, 0x84d1, 0x84ca, 0x873f, 0x871c, 0x873b, 0x8722, + 0x8725, 0x8734, 0x8718, 0x8755, 0x8737, 0x8729, 0x88f3, 0x8902, + 0x88f4, 0x88f9, 0x88f8, 0x88fd, 0x88e8, 0x891a, 0x88ef, 0x8aa6, + 0x8a8c, 0x8a9e, 0x8aa3, 0x8a8d, 0x8aa1, 0x8a93, 0x8aa4, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8aaa, 0x8aa5, 0x8aa8, 0x8a98, 0x8a91, 0x8a9a, 0x8aa7, + 0x8c6a, 0x8c8d, 0x8c8c, 0x8cd3, 0x8cd1, 0x8cd2, 0x8d6b, 0x8d99, + 0x8d95, 0x8dfc, 0x8f14, 0x8f12, 0x8f15, 0x8f13, 0x8fa3, 0x9060, + 0x9058, 0x905c, 0x9063, 0x9059, 0x905e, 0x9062, 0x905d, 0x905b, + 0x9119, 0x9118, 0x911e, 0x9175, 0x9178, 0x9177, 0x9174, 0x9278, + 0x9280, 0x9285, 0x9298, 0x9296, 0x927b, 0x9293, 0x929c, 0x92a8, + 0x927c, 0x9291, 0x95a1, 0x95a8, 0x95a9, 0x95a3, 0x95a5, 0x95a4, + 0x9699, 0x969c, 0x969b, 0x96cc, 0x96d2, 0x9700, 0x977c, 0x9785, + 0x97f6, 0x9817, 0x9818, 0x98af, 0x98b1, 0x9903, 0x9905, 0x990c, + 0x9909, 0x99c1, 0x9aaf, 0x9ab0, 0x9ae6, 0x9b41, 0x9b42, 0x9cf4, + 0x9cf6, 0x9cf3, 0x9ebc, 0x9f3b, 0x9f4a, 0x5104, 0x5100, 0x50fb, + 0x50f5, 0x50f9, 0x5102, 0x5108, 0x5109, 0x5105, 0x51dc, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5287, 0x5288, 0x5289, 0x528d, 0x528a, 0x52f0, 0x53b2, 0x562e, + 0x563b, 0x5639, 0x5632, 0x563f, 0x5634, 0x5629, 0x5653, 0x564e, + 0x5657, 0x5674, 0x5636, 0x562f, 0x5630, 0x5880, 0x589f, 0x589e, + 0x58b3, 0x589c, 0x58ae, 0x58a9, 0x58a6, 0x596d, 0x5b09, 0x5afb, + 0x5b0b, 0x5af5, 0x5b0c, 0x5b08, 0x5bee, 0x5bec, 0x5be9, 0x5beb, + 0x5c64, 0x5c65, 0x5d9d, 0x5d94, 0x5e62, 0x5e5f, 0x5e61, 0x5ee2, + 0x5eda, 0x5edf, 0x5edd, 0x5ee3, 0x5ee0, 0x5f48, 0x5f71, 0x5fb7, + 0x5fb5, 0x6176, 0x6167, 0x616e, 0x615d, 0x6155, 0x6182, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x617c, 0x6170, 0x616b, 0x617e, 0x61a7, 0x6190, 0x61ab, + 0x618e, 0x61ac, 0x619a, 0x61a4, 0x6194, 0x61ae, 0x622e, 0x6469, + 0x646f, 0x6479, 0x649e, 0x64b2, 0x6488, 0x6490, 0x64b0, 0x64a5, + 0x6493, 0x6495, 0x64a9, 0x6492, 0x64ae, 0x64ad, 0x64ab, 0x649a, + 0x64ac, 0x6499, 0x64a2, 0x64b3, 0x6575, 0x6577, 0x6578, 0x66ae, + 0x66ab, 0x66b4, 0x66b1, 0x6a23, 0x6a1f, 0x69e8, 0x6a01, 0x6a1e, + 0x6a19, 0x69fd, 0x6a21, 0x6a13, 0x6a0a, 0x69f3, 0x6a02, 0x6a05, + 0x69ed, 0x6a11, 0x6b50, 0x6b4e, 0x6ba4, 0x6bc5, 0x6bc6, 0x6f3f, + 0x6f7c, 0x6f84, 0x6f51, 0x6f66, 0x6f54, 0x6f86, 0x6f6d, 0x6f5b, + 0x6f78, 0x6f6e, 0x6f8e, 0x6f7a, 0x6f70, 0x6f64, 0x6f97, 0x6f58, + 0x6ed5, 0x6f6f, 0x6f60, 0x6f5f, 0x719f, 0x71ac, 0x71b1, 0x71a8, + 0x7256, 0x729b, 0x734e, 0x7357, 0x7469, 0x748b, 0x7483, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x747e, 0x7480, 0x757f, 0x7620, 0x7629, 0x761f, 0x7624, 0x7626, + 0x7621, 0x7622, 0x769a, 0x76ba, 0x76e4, 0x778e, 0x7787, 0x778c, + 0x7791, 0x778b, 0x78cb, 0x78c5, 0x78ba, 0x78ca, 0x78be, 0x78d5, + 0x78bc, 0x78d0, 0x7a3f, 0x7a3c, 0x7a40, 0x7a3d, 0x7a37, 0x7a3b, + 0x7aaf, 0x7aae, 0x7bad, 0x7bb1, 0x7bc4, 0x7bb4, 0x7bc6, 0x7bc7, + 0x7bc1, 0x7ba0, 0x7bcc, 0x7cca, 0x7de0, 0x7df4, 0x7def, 0x7dfb, + 0x7dd8, 0x7dec, 0x7ddd, 0x7de8, 0x7de3, 0x7dda, 0x7dde, 0x7de9, + 0x7d9e, 0x7dd9, 0x7df2, 0x7df9, 0x7f75, 0x7f77, 0x7faf, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7fe9, 0x8026, 0x819b, 0x819c, 0x819d, 0x81a0, 0x819a, + 0x8198, 0x8517, 0x853d, 0x851a, 0x84ee, 0x852c, 0x852d, 0x8513, + 0x8511, 0x8523, 0x8521, 0x8514, 0x84ec, 0x8525, 0x84ff, 0x8506, + 0x8782, 0x8774, 0x8776, 0x8760, 0x8766, 0x8778, 0x8768, 0x8759, + 0x8757, 0x874c, 0x8753, 0x885b, 0x885d, 0x8910, 0x8907, 0x8912, + 0x8913, 0x8915, 0x890a, 0x8abc, 0x8ad2, 0x8ac7, 0x8ac4, 0x8a95, + 0x8acb, 0x8af8, 0x8ab2, 0x8ac9, 0x8ac2, 0x8abf, 0x8ab0, 0x8ad6, + 0x8acd, 0x8ab6, 0x8ab9, 0x8adb, 0x8c4c, 0x8c4e, 0x8c6c, 0x8ce0, + 0x8cde, 0x8ce6, 0x8ce4, 0x8cec, 0x8ced, 0x8ce2, 0x8ce3, 0x8cdc, + 0x8cea, 0x8ce1, 0x8d6d, 0x8d9f, 0x8da3, 0x8e2b, 0x8e10, 0x8e1d, + 0x8e22, 0x8e0f, 0x8e29, 0x8e1f, 0x8e21, 0x8e1e, 0x8eba, 0x8f1d, + 0x8f1b, 0x8f1f, 0x8f29, 0x8f26, 0x8f2a, 0x8f1c, 0x8f1e, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8f25, 0x9069, 0x906e, 0x9068, 0x906d, 0x9077, 0x9130, 0x912d, + 0x9127, 0x9131, 0x9187, 0x9189, 0x918b, 0x9183, 0x92c5, 0x92bb, + 0x92b7, 0x92ea, 0x92ac, 0x92e4, 0x92c1, 0x92b3, 0x92bc, 0x92d2, + 0x92c7, 0x92f0, 0x92b2, 0x95ad, 0x95b1, 0x9704, 0x9706, 0x9707, + 0x9709, 0x9760, 0x978d, 0x978b, 0x978f, 0x9821, 0x982b, 0x981c, + 0x98b3, 0x990a, 0x9913, 0x9912, 0x9918, 0x99dd, 0x99d0, 0x99df, + 0x99db, 0x99d1, 0x99d5, 0x99d2, 0x99d9, 0x9ab7, 0x9aee, 0x9aef, + 0x9b27, 0x9b45, 0x9b44, 0x9b77, 0x9b6f, 0x9d06, 0x9d09, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x9d03, 0x9ea9, 0x9ebe, 0x9ece, 0x58a8, 0x9f52, 0x5112, + 0x5118, 0x5114, 0x5110, 0x5115, 0x5180, 0x51aa, 0x51dd, 0x5291, + 0x5293, 0x52f3, 0x5659, 0x566b, 0x5679, 0x5669, 0x5664, 0x5678, + 0x566a, 0x5668, 0x5665, 0x5671, 0x566f, 0x566c, 0x5662, 0x5676, + 0x58c1, 0x58be, 0x58c7, 0x58c5, 0x596e, 0x5b1d, 0x5b34, 0x5b78, + 0x5bf0, 0x5c0e, 0x5f4a, 0x61b2, 0x6191, 0x61a9, 0x618a, 0x61cd, + 0x61b6, 0x61be, 0x61ca, 0x61c8, 0x6230, 0x64c5, 0x64c1, 0x64cb, + 0x64bb, 0x64bc, 0x64da, 0x64c4, 0x64c7, 0x64c2, 0x64cd, 0x64bf, + 0x64d2, 0x64d4, 0x64be, 0x6574, 0x66c6, 0x66c9, 0x66b9, 0x66c4, + 0x66c7, 0x66b8, 0x6a3d, 0x6a38, 0x6a3a, 0x6a59, 0x6a6b, 0x6a58, + 0x6a39, 0x6a44, 0x6a62, 0x6a61, 0x6a4b, 0x6a47, 0x6a35, 0x6a5f, + 0x6a48, 0x6b59, 0x6b77, 0x6c05, 0x6fc2, 0x6fb1, 0x6fa1, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6fc3, 0x6fa4, 0x6fc1, 0x6fa7, 0x6fb3, 0x6fc0, 0x6fb9, 0x6fb6, + 0x6fa6, 0x6fa0, 0x6fb4, 0x71be, 0x71c9, 0x71d0, 0x71d2, 0x71c8, + 0x71d5, 0x71b9, 0x71ce, 0x71d9, 0x71dc, 0x71c3, 0x71c4, 0x7368, + 0x749c, 0x74a3, 0x7498, 0x749f, 0x749e, 0x74e2, 0x750c, 0x750d, + 0x7634, 0x7638, 0x763a, 0x76e7, 0x76e5, 0x77a0, 0x779e, 0x779f, + 0x77a5, 0x78e8, 0x78da, 0x78ec, 0x78e7, 0x79a6, 0x7a4d, 0x7a4e, + 0x7a46, 0x7a4c, 0x7a4b, 0x7aba, 0x7bd9, 0x7c11, 0x7bc9, 0x7be4, + 0x7bdb, 0x7be1, 0x7be9, 0x7be6, 0x7cd5, 0x7cd6, 0x7e0a, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7e11, 0x7e08, 0x7e1b, 0x7e23, 0x7e1e, 0x7e1d, 0x7e09, + 0x7e10, 0x7f79, 0x7fb2, 0x7ff0, 0x7ff1, 0x7fee, 0x8028, 0x81b3, + 0x81a9, 0x81a8, 0x81fb, 0x8208, 0x8258, 0x8259, 0x854a, 0x8559, + 0x8548, 0x8568, 0x8569, 0x8543, 0x8549, 0x856d, 0x856a, 0x855e, + 0x8783, 0x879f, 0x879e, 0x87a2, 0x878d, 0x8861, 0x892a, 0x8932, + 0x8925, 0x892b, 0x8921, 0x89aa, 0x89a6, 0x8ae6, 0x8afa, 0x8aeb, + 0x8af1, 0x8b00, 0x8adc, 0x8ae7, 0x8aee, 0x8afe, 0x8b01, 0x8b02, + 0x8af7, 0x8aed, 0x8af3, 0x8af6, 0x8afc, 0x8c6b, 0x8c6d, 0x8c93, + 0x8cf4, 0x8e44, 0x8e31, 0x8e34, 0x8e42, 0x8e39, 0x8e35, 0x8f3b, + 0x8f2f, 0x8f38, 0x8f33, 0x8fa8, 0x8fa6, 0x9075, 0x9074, 0x9078, + 0x9072, 0x907c, 0x907a, 0x9134, 0x9192, 0x9320, 0x9336, 0x92f8, + 0x9333, 0x932f, 0x9322, 0x92fc, 0x932b, 0x9304, 0x931a, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x9310, 0x9326, 0x9321, 0x9315, 0x932e, 0x9319, 0x95bb, 0x96a7, + 0x96a8, 0x96aa, 0x96d5, 0x970e, 0x9711, 0x9716, 0x970d, 0x9713, + 0x970f, 0x975b, 0xe4c5, 0x9766, 0x9798, 0x9830, 0x9838, 0x983b, + 0x9837, 0x982d, 0x9839, 0x9824, 0x9910, 0x9928, 0x991e, 0x991b, + 0x9921, 0x991a, 0x99ed, 0x99e2, 0x99f1, 0x9ab8, 0x9abc, 0x9afb, + 0x9aed, 0x9b28, 0x9b91, 0x9d15, 0x9d23, 0x9d26, 0x9d28, 0x9d12, + 0x9d1b, 0x9ed8, 0x9ed4, 0x9f8d, 0x9f9c, 0x512a, 0x511f, 0x5121, + 0x5132, 0x52f5, 0x568e, 0x5680, 0x5690, 0x5685, 0x5687, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x568f, 0x58d5, 0x58d3, 0x58d1, 0x58ce, 0x5b30, 0x5b2a, + 0x5b24, 0x5b7a, 0x5c37, 0x5c68, 0x5dbc, 0x5dba, 0x5dbd, 0x5db8, + 0x5e6b, 0x5f4c, 0x5fbd, 0x61c9, 0x61c2, 0x61c7, 0x61e6, 0x61cb, + 0x6232, 0x6234, 0x64ce, 0x64ca, 0x64d8, 0x64e0, 0x64f0, 0x64e6, + 0x64ec, 0x64f1, 0x64e2, 0x64ed, 0x6582, 0x6583, 0x66d9, 0x66d6, + 0x6a80, 0x6a94, 0x6a84, 0x6aa2, 0x6a9c, 0x6adb, 0x6aa3, 0x6a7e, + 0x6a97, 0x6a90, 0x6aa0, 0x6b5c, 0x6bae, 0x6bda, 0x6c08, 0x6fd8, + 0x6ff1, 0x6fdf, 0x6fe0, 0x6fdb, 0x6fe4, 0x6feb, 0x6fef, 0x6f80, + 0x6fec, 0x6fe1, 0x6fe9, 0x6fd5, 0x6fee, 0x6ff0, 0x71e7, 0x71df, + 0x71ee, 0x71e6, 0x71e5, 0x71ed, 0x71ec, 0x71f4, 0x71e0, 0x7235, + 0x7246, 0x7370, 0x7372, 0x74a9, 0x74b0, 0x74a6, 0x74a8, 0x7646, + 0x7642, 0x764c, 0x76ea, 0x77b3, 0x77aa, 0x77b0, 0x77ac, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x77a7, 0x77ad, 0x77ef, 0x78f7, 0x78fa, 0x78f4, 0x78ef, 0x7901, + 0x79a7, 0x79aa, 0x7a57, 0x7abf, 0x7c07, 0x7c0d, 0x7bfe, 0x7bf7, + 0x7c0c, 0x7be0, 0x7ce0, 0x7cdc, 0x7cde, 0x7ce2, 0x7cdf, 0x7cd9, + 0x7cdd, 0x7e2e, 0x7e3e, 0x7e46, 0x7e37, 0x7e32, 0x7e43, 0x7e2b, + 0x7e3d, 0x7e31, 0x7e45, 0x7e41, 0x7e34, 0x7e39, 0x7e48, 0x7e35, + 0x7e3f, 0x7e2f, 0x7f44, 0x7ff3, 0x7ffc, 0x8071, 0x8072, 0x8070, + 0x806f, 0x8073, 0x81c6, 0x81c3, 0x81ba, 0x81c2, 0x81c0, 0x81bf, + 0x81bd, 0x81c9, 0x81be, 0x81e8, 0x8209, 0x8271, 0x85aa, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8584, 0x857e, 0x859c, 0x8591, 0x8594, 0x85af, 0x859b, + 0x8587, 0x85a8, 0x858a, 0x8667, 0x87c0, 0x87d1, 0x87b3, 0x87d2, + 0x87c6, 0x87ab, 0x87bb, 0x87ba, 0x87c8, 0x87cb, 0x893b, 0x8936, + 0x8944, 0x8938, 0x893d, 0x89ac, 0x8b0e, 0x8b17, 0x8b19, 0x8b1b, + 0x8b0a, 0x8b20, 0x8b1d, 0x8b04, 0x8b10, 0x8c41, 0x8c3f, 0x8c73, + 0x8cfa, 0x8cfd, 0x8cfc, 0x8cf8, 0x8cfb, 0x8da8, 0x8e49, 0x8e4b, + 0x8e48, 0x8e4a, 0x8f44, 0x8f3e, 0x8f42, 0x8f45, 0x8f3f, 0x907f, + 0x907d, 0x9084, 0x9081, 0x9082, 0x9080, 0x9139, 0x91a3, 0x919e, + 0x919c, 0x934d, 0x9382, 0x9328, 0x9375, 0x934a, 0x9365, 0x934b, + 0x9318, 0x937e, 0x936c, 0x935b, 0x9370, 0x935a, 0x9354, 0x95ca, + 0x95cb, 0x95cc, 0x95c8, 0x95c6, 0x96b1, 0x96b8, 0x96d6, 0x971c, + 0x971e, 0x97a0, 0x97d3, 0x9846, 0x98b6, 0x9935, 0x9a01, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x99ff, 0x9bae, 0x9bab, 0x9baa, 0x9bad, 0x9d3b, 0x9d3f, 0x9e8b, + 0x9ecf, 0x9ede, 0x9edc, 0x9edd, 0x9edb, 0x9f3e, 0x9f4b, 0x53e2, + 0x5695, 0x56ae, 0x58d9, 0x58d8, 0x5b38, 0x5f5d, 0x61e3, 0x6233, + 0x64f4, 0x64f2, 0x64fe, 0x6506, 0x64fa, 0x64fb, 0x64f7, 0x65b7, + 0x66dc, 0x6726, 0x6ab3, 0x6aac, 0x6ac3, 0x6abb, 0x6ab8, 0x6ac2, + 0x6aae, 0x6aaf, 0x6b5f, 0x6b78, 0x6baf, 0x7009, 0x700b, 0x6ffe, + 0x7006, 0x6ffa, 0x7011, 0x700f, 0x71fb, 0x71fc, 0x71fe, 0x71f8, + 0x7377, 0x7375, 0x74a7, 0x74bf, 0x7515, 0x7656, 0x7658, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7652, 0x77bd, 0x77bf, 0x77bb, 0x77bc, 0x790e, 0x79ae, + 0x7a61, 0x7a62, 0x7a60, 0x7ac4, 0x7ac5, 0x7c2b, 0x7c27, 0x7c2a, + 0x7c1e, 0x7c23, 0x7c21, 0x7ce7, 0x7e54, 0x7e55, 0x7e5e, 0x7e5a, + 0x7e61, 0x7e52, 0x7e59, 0x7f48, 0x7ff9, 0x7ffb, 0x8077, 0x8076, + 0x81cd, 0x81cf, 0x820a, 0x85cf, 0x85a9, 0x85cd, 0x85d0, 0x85c9, + 0x85b0, 0x85ba, 0x85b9, 0x85a6, 0x87ef, 0x87ec, 0x87f2, 0x87e0, + 0x8986, 0x89b2, 0x89f4, 0x8b28, 0x8b39, 0x8b2c, 0x8b2b, 0x8c50, + 0x8d05, 0x8e59, 0x8e63, 0x8e66, 0x8e64, 0x8e5f, 0x8e55, 0x8ec0, + 0x8f49, 0x8f4d, 0x9087, 0x9083, 0x9088, 0x91ab, 0x91ac, 0x91d0, + 0x9394, 0x938a, 0x9396, 0x93a2, 0x93b3, 0x93ae, 0x93ac, 0x93b0, + 0x9398, 0x939a, 0x9397, 0x95d4, 0x95d6, 0x95d0, 0x95d5, 0x96e2, + 0x96dc, 0x96d9, 0x96db, 0x96de, 0x9724, 0x97a3, 0x97a6, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x97ad, 0x97f9, 0x984d, 0x984f, 0x984c, 0x984e, 0x9853, 0x98ba, + 0x993e, 0x993f, 0x993d, 0x992e, 0x99a5, 0x9a0e, 0x9ac1, 0x9b03, + 0x9b06, 0x9b4f, 0x9b4e, 0x9b4d, 0x9bca, 0x9bc9, 0x9bfd, 0x9bc8, + 0x9bc0, 0x9d51, 0x9d5d, 0x9d60, 0x9ee0, 0x9f15, 0x9f2c, 0x5133, + 0x56a5, 0x58de, 0x58df, 0x58e2, 0x5bf5, 0x9f90, 0x5eec, 0x61f2, + 0x61f7, 0x61f6, 0x61f5, 0x6500, 0x650f, 0x66e0, 0x66dd, 0x6ae5, + 0x6add, 0x6ada, 0x6ad3, 0x701b, 0x701f, 0x7028, 0x701a, 0x701d, + 0x7015, 0x7018, 0x7206, 0x720d, 0x7258, 0x72a2, 0x7378, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x737a, 0x74bd, 0x74ca, 0x74e3, 0x7587, 0x7586, 0x765f, + 0x7661, 0x77c7, 0x7919, 0x79b1, 0x7a6b, 0x7a69, 0x7c3e, 0x7c3f, + 0x7c38, 0x7c3d, 0x7c37, 0x7c40, 0x7e6b, 0x7e6d, 0x7e79, 0x7e69, + 0x7e6a, 0x7f85, 0x7e73, 0x7fb6, 0x7fb9, 0x7fb8, 0x81d8, 0x85e9, + 0x85dd, 0x85ea, 0x85d5, 0x85e4, 0x85e5, 0x85f7, 0x87fb, 0x8805, + 0x880d, 0x87f9, 0x87fe, 0x8960, 0x895f, 0x8956, 0x895e, 0x8b41, + 0x8b5c, 0x8b58, 0x8b49, 0x8b5a, 0x8b4e, 0x8b4f, 0x8b46, 0x8b59, + 0x8d08, 0x8d0a, 0x8e7c, 0x8e72, 0x8e87, 0x8e76, 0x8e6c, 0x8e7a, + 0x8e74, 0x8f54, 0x8f4e, 0x8fad, 0x908a, 0x908b, 0x91b1, 0x91ae, + 0x93e1, 0x93d1, 0x93df, 0x93c3, 0x93c8, 0x93dc, 0x93dd, 0x93d6, + 0x93e2, 0x93cd, 0x93d8, 0x93e4, 0x93d7, 0x93e8, 0x95dc, 0x96b4, + 0x96e3, 0x972a, 0x9727, 0x9761, 0x97dc, 0x97fb, 0x985e, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x9858, 0x985b, 0x98bc, 0x9945, 0x9949, 0x9a16, 0x9a19, 0x9b0d, + 0x9be8, 0x9be7, 0x9bd6, 0x9bdb, 0x9d89, 0x9d61, 0x9d72, 0x9d6a, + 0x9d6c, 0x9e92, 0x9e97, 0x9e93, 0x9eb4, 0x52f8, 0x56a8, 0x56b7, + 0x56b6, 0x56b4, 0x56bc, 0x58e4, 0x5b40, 0x5b43, 0x5b7d, 0x5bf6, + 0x5dc9, 0x61f8, 0x61fa, 0x6518, 0x6514, 0x6519, 0x66e6, 0x6727, + 0x6aec, 0x703e, 0x7030, 0x7032, 0x7210, 0x737b, 0x74cf, 0x7662, + 0x7665, 0x7926, 0x792a, 0x792c, 0x792b, 0x7ac7, 0x7af6, 0x7c4c, + 0x7c43, 0x7c4d, 0x7cef, 0x7cf0, 0x8fae, 0x7e7d, 0x7e7c, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7e82, 0x7f4c, 0x8000, 0x81da, 0x8266, 0x85fb, 0x85f9, + 0x8611, 0x85fa, 0x8606, 0x860b, 0x8607, 0x860a, 0x8814, 0x8815, + 0x8964, 0x89ba, 0x89f8, 0x8b70, 0x8b6c, 0x8b66, 0x8b6f, 0x8b5f, + 0x8b6b, 0x8d0f, 0x8d0d, 0x8e89, 0x8e81, 0x8e85, 0x8e82, 0x91b4, + 0x91cb, 0x9418, 0x9403, 0x93fd, 0x95e1, 0x9730, 0x98c4, 0x9952, + 0x9951, 0x99a8, 0x9a2b, 0x9a30, 0x9a37, 0x9a35, 0x9c13, 0x9c0d, + 0x9e79, 0x9eb5, 0x9ee8, 0x9f2f, 0x9f5f, 0x9f63, 0x9f61, 0x5137, + 0x5138, 0x56c1, 0x56c0, 0x56c2, 0x5914, 0x5c6c, 0x5dcd, 0x61fc, + 0x61fe, 0x651d, 0x651c, 0x6595, 0x66e9, 0x6afb, 0x6b04, 0x6afa, + 0x6bb2, 0x704c, 0x721b, 0x72a7, 0x74d6, 0x74d4, 0x7669, 0x77d3, + 0x7c50, 0x7e8f, 0x7e8c, 0x7fbc, 0x8617, 0x862d, 0x861a, 0x8823, + 0x8822, 0x8821, 0x881f, 0x896a, 0x896c, 0x89bd, 0x8b74, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8b77, 0x8b7d, 0x8d13, 0x8e8a, 0x8e8d, 0x8e8b, 0x8f5f, 0x8faf, + 0x91ba, 0x942e, 0x9433, 0x9435, 0x943a, 0x9438, 0x9432, 0x942b, + 0x95e2, 0x9738, 0x9739, 0x9732, 0x97ff, 0x9867, 0x9865, 0x9957, + 0x9a45, 0x9a43, 0x9a40, 0x9a3e, 0x9acf, 0x9b54, 0x9b51, 0x9c2d, + 0x9c25, 0x9daf, 0x9db4, 0x9dc2, 0x9db8, 0x9e9d, 0x9eef, 0x9f19, + 0x9f5c, 0x9f66, 0x9f67, 0x513c, 0x513b, 0x56c8, 0x56ca, 0x56c9, + 0x5b7f, 0x5dd4, 0x5dd2, 0x5f4e, 0x61ff, 0x6524, 0x6b0a, 0x6b61, + 0x7051, 0x7058, 0x7380, 0x74e4, 0x758a, 0x766e, 0x766c, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x79b3, 0x7c60, 0x7c5f, 0x807e, 0x807d, 0x81df, 0x8972, + 0x896f, 0x89fc, 0x8b80, 0x8d16, 0x8d17, 0x8e91, 0x8e93, 0x8f61, + 0x9148, 0x9444, 0x9451, 0x9452, 0x973d, 0x973e, 0x97c3, 0x97c1, + 0x986b, 0x9955, 0x9a55, 0x9a4d, 0x9ad2, 0x9b1a, 0x9c49, 0x9c31, + 0x9c3e, 0x9c3b, 0x9dd3, 0x9dd7, 0x9f34, 0x9f6c, 0x9f6a, 0x9f94, + 0x56cc, 0x5dd6, 0x6200, 0x6523, 0x652b, 0x652a, 0x66ec, 0x6b10, + 0x74da, 0x7aca, 0x7c64, 0x7c63, 0x7c65, 0x7e93, 0x7e96, 0x7e94, + 0x81e2, 0x8638, 0x863f, 0x8831, 0x8b8a, 0x9090, 0x908f, 0x9463, + 0x9460, 0x9464, 0x9768, 0x986f, 0x995c, 0x9a5a, 0x9a5b, 0x9a57, + 0x9ad3, 0x9ad4, 0x9ad1, 0x9c54, 0x9c57, 0x9c56, 0x9de5, 0x9e9f, + 0x9ef4, 0x56d1, 0x58e9, 0x652c, 0x705e, 0x7671, 0x7672, 0x77d7, + 0x7f50, 0x7f88, 0x8836, 0x8839, 0x8862, 0x8b93, 0x8b92, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8b96, 0x8277, 0x8d1b, 0x91c0, 0x946a, 0x9742, 0x9748, 0x9744, + 0x97c6, 0x9870, 0x9a5f, 0x9b22, 0x9b58, 0x9c5f, 0x9df9, 0x9dfa, + 0x9e7c, 0x9e7d, 0x9f07, 0x9f77, 0x9f72, 0x5ef3, 0x6b16, 0x7063, + 0x7c6c, 0x7c6e, 0x883b, 0x89c0, 0x8ea1, 0x91c1, 0x9472, 0x9470, + 0x9871, 0x995e, 0x9ad6, 0x9b23, 0x9ecc, 0x7064, 0x77da, 0x8b9a, + 0x9477, 0x97c9, 0x9a62, 0x9a65, 0x7e9c, 0x8b9c, 0x8eaa, 0x91c5, + 0x947d, 0x947e, 0x947c, 0x9c77, 0x9c78, 0x9ef7, 0x8c54, 0x947f, + 0x9e1a, 0x7228, 0x9a6a, 0x9b31, 0x9e1b, 0x9e1e, 0x7c72, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4e42, 0x4e5c, 0x51f5, 0x531a, 0x5382, 0x4e07, 0x4e0c, 0x4e47, + 0x4e8d, 0x56d7, 0x0000, 0x5c6e, 0x5f73, 0x4e0f, 0x5187, 0x4e0e, + 0x4e2e, 0x4e93, 0x4ec2, 0x4ec9, 0x4ec8, 0x5198, 0x52fc, 0x536c, + 0x53b9, 0x5720, 0x5903, 0x592c, 0x5c10, 0x5dff, 0x65e1, 0x6bb3, + 0x6bcc, 0x6c14, 0x723f, 0x4e31, 0x4e3c, 0x4ee8, 0x4edc, 0x4ee9, + 0x4ee1, 0x4edd, 0x4eda, 0x520c, 0x531c, 0x534c, 0x5722, 0x5723, + 0x5917, 0x592f, 0x5b81, 0x5b84, 0x5c12, 0x5c3b, 0x5c74, 0x5c73, + 0x5e04, 0x5e80, 0x5e82, 0x5fc9, 0x6209, 0x6250, 0x6c15, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6c36, 0x6c43, 0x6c3f, 0x6c3b, 0x72ae, 0x72b0, 0x738a, + 0x79b8, 0x808a, 0x961e, 0x4f0e, 0x4f18, 0x4f2c, 0x4ef5, 0x4f14, + 0x4ef1, 0x4f00, 0x4ef7, 0x4f08, 0x4f1d, 0x4f02, 0x4f05, 0x4f22, + 0x4f13, 0x4f04, 0x4ef4, 0x4f12, 0x51b1, 0x5213, 0x5209, 0x5210, + 0x52a6, 0x5322, 0x531f, 0x534d, 0x538a, 0x5407, 0x56e1, 0x56df, + 0x572e, 0x572a, 0x5734, 0x593c, 0x5980, 0x597c, 0x5985, 0x597b, + 0x597e, 0x5977, 0x597f, 0x5b56, 0x5c15, 0x5c25, 0x5c7c, 0x5c7a, + 0x5c7b, 0x5c7e, 0x5ddf, 0x5e75, 0x5e84, 0x5f02, 0x5f1a, 0x5f74, + 0x5fd5, 0x5fd4, 0x5fcf, 0x625c, 0x625e, 0x6264, 0x6261, 0x6266, + 0x6262, 0x6259, 0x6260, 0x625a, 0x6265, 0x65ef, 0x65ee, 0x673e, + 0x6739, 0x6738, 0x673b, 0x673a, 0x673f, 0x673c, 0x6733, 0x6c18, + 0x6c46, 0x6c52, 0x6c5c, 0x6c4f, 0x6c4a, 0x6c54, 0x6c4b, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6c4c, 0x7071, 0x725e, 0x72b4, 0x72b5, 0x738e, 0x752a, 0x767f, + 0x7a75, 0x7f51, 0x8278, 0x827c, 0x8280, 0x827d, 0x827f, 0x864d, + 0x897e, 0x9099, 0xe7d3, 0x9098, 0x909b, 0x9094, 0x9622, 0x9624, + 0x9620, 0x9623, 0x4f56, 0x4f3b, 0x4f62, 0x4f49, 0x4f53, 0x4f64, + 0x4f3e, 0x4f67, 0x4f52, 0x4f5f, 0x4f41, 0x4f58, 0x4f2d, 0x4f33, + 0x4f3f, 0x4f61, 0x518f, 0x51b9, 0x521c, 0x521e, 0x5221, 0x52ad, + 0x52ae, 0x5309, 0x5363, 0x5372, 0x538e, 0x538f, 0x5430, 0x5437, + 0x542a, 0x5454, 0x5445, 0x5419, 0x541c, 0x5425, 0x5418, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x543d, 0x544f, 0x5441, 0x5428, 0x5424, 0x5447, 0x56ee, + 0x56e7, 0x56e5, 0x5741, 0x5745, 0x574c, 0x5749, 0x574b, 0x5752, + 0x5906, 0x5940, 0x59a6, 0x5998, 0x59a0, 0x5997, 0x598e, 0x59a2, + 0x5990, 0x598f, 0x59a7, 0x59a1, 0x5b8e, 0x5b92, 0x5c28, 0x5c2a, + 0x5c8d, 0x5c8f, 0x5c88, 0x5c8b, 0x5c89, 0x5c92, 0x5c8a, 0x5c86, + 0x5c93, 0x5c95, 0x5de0, 0x5e0a, 0x5e0e, 0x5e8b, 0x5e89, 0x5e8c, + 0x5e88, 0x5e8d, 0x5f05, 0x5f1d, 0x5f78, 0x5f76, 0x5fd2, 0x5fd1, + 0x5fd0, 0x5fed, 0x5fe8, 0x5fee, 0x5ff3, 0x5fe1, 0x5fe4, 0x5fe3, + 0x5ffa, 0x5fef, 0x5ff7, 0x5ffb, 0x6000, 0x5ff4, 0x623a, 0x6283, + 0x628c, 0x628e, 0x628f, 0x6294, 0x6287, 0x6271, 0x627b, 0x627a, + 0x6270, 0x6281, 0x6288, 0x6277, 0x627d, 0x6272, 0x6274, 0x6537, + 0x65f0, 0x65f4, 0x65f3, 0x65f2, 0x65f5, 0x6745, 0x6747, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6759, 0x6755, 0x674c, 0x6748, 0x675d, 0x674d, 0x675a, 0x674b, + 0x6bd0, 0x6c19, 0x6c1a, 0x6c78, 0x6c67, 0x6c6b, 0x6c84, 0x6c8b, + 0x6c8f, 0x6c71, 0x6c6f, 0x6c69, 0x6c9a, 0x6c6d, 0x6c87, 0x6c95, + 0x6c9c, 0x6c66, 0x6c73, 0x6c65, 0x6c7b, 0x6c8e, 0x7074, 0x707a, + 0x7263, 0x72bf, 0x72bd, 0x72c3, 0x72c6, 0x72c1, 0x72ba, 0x72c5, + 0x7395, 0x7397, 0x7393, 0x7394, 0x7392, 0x753a, 0x7539, 0x7594, + 0x7595, 0x7681, 0x793d, 0x8034, 0x8095, 0x8099, 0x8090, 0x8092, + 0x809c, 0x8290, 0x828f, 0x8285, 0x828e, 0x8291, 0x8293, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x828a, 0x8283, 0x8284, 0x8c78, 0x8fc9, 0x8fbf, 0x909f, + 0x90a1, 0x90a5, 0x909e, 0x90a7, 0x90a0, 0x9630, 0x9628, 0x962f, + 0x962d, 0x4e33, 0x4f98, 0x4f7c, 0x4f85, 0x4f7d, 0x4f80, 0x4f87, + 0x4f76, 0x4f74, 0x4f89, 0x4f84, 0x4f77, 0x4f4c, 0x4f97, 0x4f6a, + 0x4f9a, 0x4f79, 0x4f81, 0x4f78, 0x4f90, 0x4f9c, 0x4f94, 0x4f9e, + 0x4f92, 0x4f82, 0x4f95, 0x4f6b, 0x4f6e, 0x519e, 0x51bc, 0x51be, + 0x5235, 0x5232, 0x5233, 0x5246, 0x5231, 0x52bc, 0x530a, 0x530b, + 0x533c, 0x5392, 0x5394, 0x5487, 0x547f, 0x5481, 0x5491, 0x5482, + 0x5488, 0x546b, 0x547a, 0x547e, 0x5465, 0x546c, 0x5474, 0x5466, + 0x548d, 0x546f, 0x5461, 0x5460, 0x5498, 0x5463, 0x5467, 0x5464, + 0x56f7, 0x56f9, 0x576f, 0x5772, 0x576d, 0x576b, 0x5771, 0x5770, + 0x5776, 0x5780, 0x5775, 0x577b, 0x5773, 0x5774, 0x5762, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5768, 0x577d, 0x590c, 0x5945, 0x59b5, 0x59ba, 0x59cf, 0x59ce, + 0x59b2, 0x59cc, 0x59c1, 0x59b6, 0x59bc, 0x59c3, 0x59d6, 0x59b1, + 0x59bd, 0x59c0, 0x59c8, 0x59b4, 0x59c7, 0x5b62, 0x5b65, 0x5b93, + 0x5b95, 0x5c44, 0x5c47, 0x5cae, 0x5ca4, 0x5ca0, 0x5cb5, 0x5caf, + 0x5ca8, 0x5cac, 0x5c9f, 0x5ca3, 0x5cad, 0x5ca2, 0x5caa, 0x5ca7, + 0x5c9d, 0x5ca5, 0x5cb6, 0x5cb0, 0x5ca6, 0x5e17, 0x5e14, 0x5e19, + 0x5f28, 0x5f22, 0x5f23, 0x5f24, 0x5f54, 0x5f82, 0x5f7e, 0x5f7d, + 0x5fde, 0x5fe5, 0x602d, 0x6026, 0x6019, 0x6032, 0x600b, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6034, 0x600a, 0x6017, 0x6033, 0x601a, 0x601e, 0x602c, + 0x6022, 0x600d, 0x6010, 0x602e, 0x6013, 0x6011, 0x600c, 0x6009, + 0x601c, 0x6214, 0x623d, 0x62ad, 0x62b4, 0x62d1, 0x62be, 0x62aa, + 0x62b6, 0x62ca, 0x62ae, 0x62b3, 0x62af, 0x62bb, 0x62a9, 0x62b0, + 0x62b8, 0x653d, 0x65a8, 0x65bb, 0x6609, 0x65fc, 0x6604, 0x6612, + 0x6608, 0x65fb, 0x6603, 0x660b, 0x660d, 0x6605, 0x65fd, 0x6611, + 0x6610, 0x66f6, 0x670a, 0x6785, 0x676c, 0x678e, 0x6792, 0x6776, + 0x677b, 0x6798, 0x6786, 0x6784, 0x6774, 0x678d, 0x678c, 0x677a, + 0x679f, 0x6791, 0x6799, 0x6783, 0x677d, 0x6781, 0x6778, 0x6779, + 0x6794, 0x6b25, 0x6b80, 0x6b7e, 0x6bde, 0x6c1d, 0x6c93, 0x6cec, + 0x6ceb, 0x6cee, 0x6cd9, 0x6cb6, 0x6cd4, 0x6cad, 0x6ce7, 0x6cb7, + 0x6cd0, 0x6cc2, 0x6cba, 0x6cc3, 0x6cc6, 0x6ced, 0x6cf2, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6cd2, 0x6cdd, 0x6cb4, 0x6c8a, 0x6c9d, 0x6c80, 0x6cde, 0x6cc0, + 0x6d30, 0x6ccd, 0x6cc7, 0x6cb0, 0x6cf9, 0x6ccf, 0x6ce9, 0x6cd1, + 0x7094, 0x7098, 0x7085, 0x7093, 0x7086, 0x7084, 0x7091, 0x7096, + 0x7082, 0x709a, 0x7083, 0x726a, 0x72d6, 0x72cb, 0x72d8, 0x72c9, + 0x72dc, 0x72d2, 0x72d4, 0x72da, 0x72cc, 0x72d1, 0x73a4, 0x73a1, + 0x73ad, 0x73a6, 0x73a2, 0x73a0, 0x73ac, 0x739d, 0x74dd, 0x74e8, + 0x753f, 0x7540, 0x753e, 0x758c, 0x7598, 0x76af, 0x76f3, 0x76f1, + 0x76f0, 0x76f5, 0x77f8, 0x77fc, 0x77f9, 0x77fb, 0x77fa, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x77f7, 0x7942, 0x793f, 0x79c5, 0x7a78, 0x7a7b, 0x7afb, + 0x7c75, 0x7cfd, 0x8035, 0x808f, 0x80ae, 0x80a3, 0x80b8, 0x80b5, + 0x80ad, 0x8220, 0x82a0, 0x82c0, 0x82ab, 0x829a, 0x8298, 0x829b, + 0x82b5, 0x82a7, 0x82ae, 0x82bc, 0x829e, 0x82ba, 0x82b4, 0x82a8, + 0x82a1, 0x82a9, 0x82c2, 0x82a4, 0x82c3, 0x82b6, 0x82a2, 0x8670, + 0x866f, 0x866d, 0x866e, 0x8c56, 0x8fd2, 0x8fcb, 0x8fd3, 0x8fcd, + 0x8fd6, 0x8fd5, 0x8fd7, 0x90b2, 0x90b4, 0x90af, 0x90b3, 0x90b0, + 0x9639, 0x963d, 0x963c, 0x963a, 0x9643, 0x4fcd, 0x4fc5, 0x4fd3, + 0x4fb2, 0x4fc9, 0x4fcb, 0x4fc1, 0x4fd4, 0x4fdc, 0x4fd9, 0x4fbb, + 0x4fb3, 0x4fdb, 0x4fc7, 0x4fd6, 0x4fba, 0x4fc0, 0x4fb9, 0x4fec, + 0x5244, 0x5249, 0x52c0, 0x52c2, 0x533d, 0x537c, 0x5397, 0x5396, + 0x5399, 0x5398, 0x54ba, 0x54a1, 0x54ad, 0x54a5, 0x54cf, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x54c3, 0x830d, 0x54b7, 0x54ae, 0x54d6, 0x54b6, 0x54c5, 0x54c6, + 0x54a0, 0x5470, 0x54bc, 0x54a2, 0x54be, 0x5472, 0x54de, 0x54b0, + 0x57b5, 0x579e, 0x579f, 0x57a4, 0x578c, 0x5797, 0x579d, 0x579b, + 0x5794, 0x5798, 0x578f, 0x5799, 0x57a5, 0x579a, 0x5795, 0x58f4, + 0x590d, 0x5953, 0x59e1, 0x59de, 0x59ee, 0x5a00, 0x59f1, 0x59dd, + 0x59fa, 0x59fd, 0x59fc, 0x59f6, 0x59e4, 0x59f2, 0x59f7, 0x59db, + 0x59e9, 0x59f3, 0x59f5, 0x59e0, 0x59fe, 0x59f4, 0x59ed, 0x5ba8, + 0x5c4c, 0x5cd0, 0x5cd8, 0x5ccc, 0x5cd7, 0x5ccb, 0x5cdb, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5cde, 0x5cda, 0x5cc9, 0x5cc7, 0x5cca, 0x5cd6, 0x5cd3, + 0x5cd4, 0x5ccf, 0x5cc8, 0x5cc6, 0x5cce, 0x5cdf, 0x5cf8, 0x5df9, + 0x5e21, 0x5e22, 0x5e23, 0x5e20, 0x5e24, 0x5eb0, 0x5ea4, 0x5ea2, + 0x5e9b, 0x5ea3, 0x5ea5, 0x5f07, 0x5f2e, 0x5f56, 0x5f86, 0x6037, + 0x6039, 0x6054, 0x6072, 0x605e, 0x6045, 0x6053, 0x6047, 0x6049, + 0x605b, 0x604c, 0x6040, 0x6042, 0x605f, 0x6024, 0x6044, 0x6058, + 0x6066, 0x606e, 0x6242, 0x6243, 0x62cf, 0x630d, 0x630b, 0x62f5, + 0x630e, 0x6303, 0x62eb, 0x62f9, 0x630f, 0x630c, 0x62f8, 0x62f6, + 0x6300, 0x6313, 0x6314, 0x62fa, 0x6315, 0x62fb, 0x62f0, 0x6541, + 0x6543, 0x65aa, 0x65bf, 0x6636, 0x6621, 0x6632, 0x6635, 0x661c, + 0x6626, 0x6622, 0x6633, 0x662b, 0x663a, 0x661d, 0x6634, 0x6639, + 0x662e, 0x670f, 0x6710, 0x67c1, 0x67f2, 0x67c8, 0x67ba, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x67dc, 0x67bb, 0x67f8, 0x67d8, 0x67c0, 0x67b7, 0x67c5, 0x67eb, + 0x67e4, 0x67df, 0x67b5, 0x67cd, 0x67b3, 0x67f7, 0x67f6, 0x67ee, + 0x67e3, 0x67c2, 0x67b9, 0x67ce, 0x67e7, 0x67f0, 0x67b2, 0x67fc, + 0x67c6, 0x67ed, 0x67cc, 0x67ae, 0x67e6, 0x67db, 0x67fa, 0x67c9, + 0x67ca, 0x67c3, 0x67ea, 0x67cb, 0x6b28, 0x6b82, 0x6b84, 0x6bb6, + 0x6bd6, 0x6bd8, 0x6be0, 0x6c20, 0x6c21, 0x6d28, 0x6d34, 0x6d2d, + 0x6d1f, 0x6d3c, 0x6d3f, 0x6d12, 0x6d0a, 0x6cda, 0x6d33, 0x6d04, + 0x6d19, 0x6d3a, 0x6d1a, 0x6d11, 0x6d00, 0x6d1d, 0x6d42, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6d01, 0x6d18, 0x6d37, 0x6d03, 0x6d0f, 0x6d40, 0x6d07, + 0x6d20, 0x6d2c, 0x6d08, 0x6d22, 0x6d09, 0x6d10, 0x70b7, 0x709f, + 0x70be, 0x70b1, 0x70b0, 0x70a1, 0x70b4, 0x70b5, 0x70a9, 0x7241, + 0x7249, 0x724a, 0x726c, 0x7270, 0x7273, 0x726e, 0x72ca, 0x72e4, + 0x72e8, 0x72eb, 0x72df, 0x72ea, 0x72e6, 0x72e3, 0x7385, 0x73cc, + 0x73c2, 0x73c8, 0x73c5, 0x73b9, 0x73b6, 0x73b5, 0x73b4, 0x73eb, + 0x73bf, 0x73c7, 0x73be, 0x73c3, 0x73c6, 0x73b8, 0x73cb, 0x74ec, + 0x74ee, 0x752e, 0x7547, 0x7548, 0x75a7, 0x75aa, 0x7679, 0x76c4, + 0x7708, 0x7703, 0x7704, 0x7705, 0x770a, 0x76f7, 0x76fb, 0x76fa, + 0x77e7, 0x77e8, 0x7806, 0x7811, 0x7812, 0x7805, 0x7810, 0x780f, + 0x780e, 0x7809, 0x7803, 0x7813, 0x794a, 0x794c, 0x794b, 0x7945, + 0x7944, 0x79d5, 0x79cd, 0x79cf, 0x79d6, 0x79ce, 0x7a80, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x7a7e, 0x7ad1, 0x7b00, 0x7b01, 0x7c7a, 0x7c78, 0x7c79, 0x7c7f, + 0x7c80, 0x7c81, 0x7d03, 0x7d08, 0x7d01, 0x7f58, 0x7f91, 0x7f8d, + 0x7fbe, 0x8007, 0x800e, 0x800f, 0x8014, 0x8037, 0x80d8, 0x80c7, + 0x80e0, 0x80d1, 0x80c8, 0x80c2, 0x80d0, 0x80c5, 0x80e3, 0x80d9, + 0x80dc, 0x80ca, 0x80d5, 0x80c9, 0x80cf, 0x80d7, 0x80e6, 0x80cd, + 0x81ff, 0x8221, 0x8294, 0x82d9, 0x82fe, 0x82f9, 0x8307, 0x82e8, + 0x8300, 0x82d5, 0x833a, 0x82eb, 0x82d6, 0x82f4, 0x82ec, 0x82e1, + 0x82f2, 0x82f5, 0x830c, 0x82fb, 0x82f6, 0x82f0, 0x82ea, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x82e4, 0x82e0, 0x82fa, 0x82f3, 0x82ed, 0x8677, 0x8674, + 0x867c, 0x8673, 0x8841, 0x884e, 0x8867, 0x886a, 0x8869, 0x89d3, + 0x8a04, 0x8a07, 0x8d72, 0x8fe3, 0x8fe1, 0x8fee, 0x8fe0, 0x90f1, + 0x90bd, 0x90bf, 0x90d5, 0x90c5, 0x90be, 0x90c7, 0x90cb, 0x90c8, + 0x91d4, 0x91d3, 0x9654, 0x964f, 0x9651, 0x9653, 0x964a, 0x964e, + 0x501e, 0x5005, 0x5007, 0x5013, 0x5022, 0x5030, 0x501b, 0x4ff5, + 0x4ff4, 0x5033, 0x5037, 0x502c, 0x4ff6, 0x4ff7, 0x5017, 0x501c, + 0x5020, 0x5027, 0x5035, 0x502f, 0x5031, 0x500e, 0x515a, 0x5194, + 0x5193, 0x51ca, 0x51c4, 0x51c5, 0x51c8, 0x51ce, 0x5261, 0x525a, + 0x5252, 0x525e, 0x525f, 0x5255, 0x5262, 0x52cd, 0x530e, 0x539e, + 0x5526, 0x54e2, 0x5517, 0x5512, 0x54e7, 0x54f3, 0x54e4, 0x551a, + 0x54ff, 0x5504, 0x5508, 0x54eb, 0x5511, 0x5505, 0x54f1, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x550a, 0x54fb, 0x54f7, 0x54f8, 0x54e0, 0x550e, 0x5503, 0x550b, + 0x5701, 0x5702, 0x57cc, 0x5832, 0x57d5, 0x57d2, 0x57ba, 0x57c6, + 0x57bd, 0x57bc, 0x57b8, 0x57b6, 0x57bf, 0x57c7, 0x57d0, 0x57b9, + 0x57c1, 0x590e, 0x594a, 0x5a19, 0x5a16, 0x5a2d, 0x5a2e, 0x5a15, + 0x5a0f, 0x5a17, 0x5a0a, 0x5a1e, 0x5a33, 0x5b6c, 0x5ba7, 0x5bad, + 0x5bac, 0x5c03, 0x5c56, 0x5c54, 0x5cec, 0x5cff, 0x5cee, 0x5cf1, + 0x5cf7, 0x5d00, 0x5cf9, 0x5e29, 0x5e28, 0x5ea8, 0x5eae, 0x5eaa, + 0x5eac, 0x5f33, 0x5f30, 0x5f67, 0x605d, 0x605a, 0x6067, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6041, 0x60a2, 0x6088, 0x6080, 0x6092, 0x6081, 0x609d, + 0x6083, 0x6095, 0x609b, 0x6097, 0x6087, 0x609c, 0x608e, 0x6219, + 0x6246, 0x62f2, 0x6310, 0x6356, 0x632c, 0x6344, 0x6345, 0x6336, + 0x6343, 0x63e4, 0x6339, 0x634b, 0x634a, 0x633c, 0x6329, 0x6341, + 0x6334, 0x6358, 0x6354, 0x6359, 0x632d, 0x6347, 0x6333, 0x635a, + 0x6351, 0x6338, 0x6357, 0x6340, 0x6348, 0x654a, 0x6546, 0x65c6, + 0x65c3, 0x65c4, 0x65c2, 0x664a, 0x665f, 0x6647, 0x6651, 0x6712, + 0x6713, 0x681f, 0x681a, 0x6849, 0x6832, 0x6833, 0x683b, 0x684b, + 0x684f, 0x6816, 0x6831, 0x681c, 0x6835, 0x682b, 0x682d, 0x682f, + 0x684e, 0x6844, 0x6834, 0x681d, 0x6812, 0x6814, 0x6826, 0x6828, + 0x682e, 0x684d, 0x683a, 0x6825, 0x6820, 0x6b2c, 0x6b2f, 0x6b2d, + 0x6b31, 0x6b34, 0x6b6d, 0x8082, 0x6b88, 0x6be6, 0x6be4, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6be8, 0x6be3, 0x6be2, 0x6be7, 0x6c25, 0x6d7a, 0x6d63, 0x6d64, + 0x6d76, 0x6d0d, 0x6d61, 0x6d92, 0x6d58, 0x6d62, 0x6d6d, 0x6d6f, + 0x6d91, 0x6d8d, 0x6def, 0x6d7f, 0x6d86, 0x6d5e, 0x6d67, 0x6d60, + 0x6d97, 0x6d70, 0x6d7c, 0x6d5f, 0x6d82, 0x6d98, 0x6d2f, 0x6d68, + 0x6d8b, 0x6d7e, 0x6d80, 0x6d84, 0x6d16, 0x6d83, 0x6d7b, 0x6d7d, + 0x6d75, 0x6d90, 0x70dc, 0x70d3, 0x70d1, 0x70dd, 0x70cb, 0x7f39, + 0x70e2, 0x70d7, 0x70d2, 0x70de, 0x70e0, 0x70d4, 0x70cd, 0x70c5, + 0x70c6, 0x70c7, 0x70da, 0x70ce, 0x70e1, 0x7242, 0x7278, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7277, 0x7276, 0x7300, 0x72fa, 0x72f4, 0x72fe, 0x72f6, + 0x72f3, 0x72fb, 0x7301, 0x73d3, 0x73d9, 0x73e5, 0x73d6, 0x73bc, + 0x73e7, 0x73e3, 0x73e9, 0x73dc, 0x73d2, 0x73db, 0x73d4, 0x73dd, + 0x73da, 0x73d7, 0x73d8, 0x73e8, 0x74de, 0x74df, 0x74f4, 0x74f5, + 0x7521, 0x755b, 0x755f, 0x75b0, 0x75c1, 0x75bb, 0x75c4, 0x75c0, + 0x75bf, 0x75b6, 0x75ba, 0x768a, 0x76c9, 0x771d, 0x771b, 0x7710, + 0x7713, 0x7712, 0x7723, 0x7711, 0x7715, 0x7719, 0x771a, 0x7722, + 0x7727, 0x7823, 0x782c, 0x7822, 0x7835, 0x782f, 0x7828, 0x782e, + 0x782b, 0x7821, 0x7829, 0x7833, 0x782a, 0x7831, 0x7954, 0x795b, + 0x794f, 0x795c, 0x7953, 0x7952, 0x7951, 0x79eb, 0x79ec, 0x79e0, + 0x79ee, 0x79ed, 0x79ea, 0x79dc, 0x79de, 0x79dd, 0x7a86, 0x7a89, + 0x7a85, 0x7a8b, 0x7a8c, 0x7a8a, 0x7a87, 0x7ad8, 0x7b10, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x7b04, 0x7b13, 0x7b05, 0x7b0f, 0x7b08, 0x7b0a, 0x7b0e, 0x7b09, + 0x7b12, 0x7c84, 0x7c91, 0x7c8a, 0x7c8c, 0x7c88, 0x7c8d, 0x7c85, + 0x7d1e, 0x7d1d, 0x7d11, 0x7d0e, 0x7d18, 0x7d16, 0x7d13, 0x7d1f, + 0x7d12, 0x7d0f, 0x7d0c, 0x7f5c, 0x7f61, 0x7f5e, 0x7f60, 0x7f5d, + 0x7f5b, 0x7f96, 0x7f92, 0x7fc3, 0x7fc2, 0x7fc0, 0x8016, 0x803e, + 0x8039, 0x80fa, 0x80f2, 0x80f9, 0x80f5, 0x8101, 0x80fb, 0x8100, + 0x8201, 0x822f, 0x8225, 0x8333, 0x832d, 0x8344, 0x8319, 0x8351, + 0x8325, 0x8356, 0x833f, 0x8341, 0x8326, 0x831c, 0x8322, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8342, 0x834e, 0x831b, 0x832a, 0x8308, 0x833c, 0x834d, + 0x8316, 0x8324, 0x8320, 0x8337, 0x832f, 0x8329, 0x8347, 0x8345, + 0x834c, 0x8353, 0x831e, 0x832c, 0x834b, 0x8327, 0x8348, 0x8653, + 0x8652, 0x86a2, 0x86a8, 0x8696, 0x868d, 0x8691, 0x869e, 0x8687, + 0x8697, 0x8686, 0x868b, 0x869a, 0x8685, 0x86a5, 0x8699, 0x86a1, + 0x86a7, 0x8695, 0x8698, 0x868e, 0x869d, 0x8690, 0x8694, 0x8843, + 0x8844, 0x886d, 0x8875, 0x8876, 0x8872, 0x8880, 0x8871, 0x887f, + 0x886f, 0x8883, 0x887e, 0x8874, 0x887c, 0x8a12, 0x8c47, 0x8c57, + 0x8c7b, 0x8ca4, 0x8ca3, 0x8d76, 0x8d78, 0x8db5, 0x8db7, 0x8db6, + 0x8ed1, 0x8ed3, 0x8ffe, 0x8ff5, 0x9002, 0x8fff, 0x8ffb, 0x9004, + 0x8ffc, 0x8ff6, 0x90d6, 0x90e0, 0x90d9, 0x90da, 0x90e3, 0x90df, + 0x90e5, 0x90d8, 0x90db, 0x90d7, 0x90dc, 0x90e4, 0x9150, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x914e, 0x914f, 0x91d5, 0x91e2, 0x91da, 0x965c, 0x965f, 0x96bc, + 0x98e3, 0x9adf, 0x9b2f, 0x4e7f, 0x5070, 0x506a, 0x5061, 0x505e, + 0x5060, 0x5053, 0x504b, 0x505d, 0x5072, 0x5048, 0x504d, 0x5041, + 0x505b, 0x504a, 0x5062, 0x5015, 0x5045, 0x505f, 0x5069, 0x506b, + 0x5063, 0x5064, 0x5046, 0x5040, 0x506e, 0x5073, 0x5057, 0x5051, + 0x51d0, 0x526b, 0x526d, 0x526c, 0x526e, 0x52d6, 0x52d3, 0x532d, + 0x539c, 0x5575, 0x5576, 0x553c, 0x554d, 0x5550, 0x5534, 0x552a, + 0x5551, 0x5562, 0x5536, 0x5535, 0x5530, 0x5552, 0x5545, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x550c, 0x5532, 0x5565, 0x554e, 0x5539, 0x5548, 0x552d, + 0x553b, 0x5540, 0x554b, 0x570a, 0x5707, 0x57fb, 0x5814, 0x57e2, + 0x57f6, 0x57dc, 0x57f4, 0x5800, 0x57ed, 0x57fd, 0x5808, 0x57f8, + 0x580b, 0x57f3, 0x57cf, 0x5807, 0x57ee, 0x57e3, 0x57f2, 0x57e5, + 0x57ec, 0x57e1, 0x580e, 0x57fc, 0x5810, 0x57e7, 0x5801, 0x580c, + 0x57f1, 0x57e9, 0x57f0, 0x580d, 0x5804, 0x595c, 0x5a60, 0x5a58, + 0x5a55, 0x5a67, 0x5a5e, 0x5a38, 0x5a35, 0x5a6d, 0x5a50, 0x5a5f, + 0x5a65, 0x5a6c, 0x5a53, 0x5a64, 0x5a57, 0x5a43, 0x5a5d, 0x5a52, + 0x5a44, 0x5a5b, 0x5a48, 0x5a8e, 0x5a3e, 0x5a4d, 0x5a39, 0x5a4c, + 0x5a70, 0x5a69, 0x5a47, 0x5a51, 0x5a56, 0x5a42, 0x5a5c, 0x5b72, + 0x5b6e, 0x5bc1, 0x5bc0, 0x5c59, 0x5d1e, 0x5d0b, 0x5d1d, 0x5d1a, + 0x5d20, 0x5d0c, 0x5d28, 0x5d0d, 0x5d26, 0x5d25, 0x5d0f, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5d30, 0x5d12, 0x5d23, 0x5d1f, 0x5d2e, 0x5e3e, 0x5e34, 0x5eb1, + 0x5eb4, 0x5eb9, 0x5eb2, 0x5eb3, 0x5f36, 0x5f38, 0x5f9b, 0x5f96, + 0x5f9f, 0x608a, 0x6090, 0x6086, 0x60be, 0x60b0, 0x60ba, 0x60d3, + 0x60d4, 0x60cf, 0x60e4, 0x60d9, 0x60dd, 0x60c8, 0x60b1, 0x60db, + 0x60b7, 0x60ca, 0x60bf, 0x60c3, 0x60cd, 0x60c0, 0x6332, 0x6365, + 0x638a, 0x6382, 0x637d, 0x63bd, 0x639e, 0x63ad, 0x639d, 0x6397, + 0x63ab, 0x638e, 0x636f, 0x6387, 0x6390, 0x636e, 0x63af, 0x6375, + 0x639c, 0x636d, 0x63ae, 0x637c, 0x63a4, 0x633b, 0x639f, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6378, 0x6385, 0x6381, 0x6391, 0x638d, 0x6370, 0x6553, + 0x65cd, 0x6665, 0x6661, 0x665b, 0x6659, 0x665c, 0x6662, 0x6718, + 0x6879, 0x6887, 0x6890, 0x689c, 0x686d, 0x686e, 0x68ae, 0x68ab, + 0x6956, 0x686f, 0x68a3, 0x68ac, 0x68a9, 0x6875, 0x6874, 0x68b2, + 0x688f, 0x6877, 0x6892, 0x687c, 0x686b, 0x6872, 0x68aa, 0x6880, + 0x6871, 0x687e, 0x689b, 0x6896, 0x688b, 0x68a0, 0x6889, 0x68a4, + 0x6878, 0x687b, 0x6891, 0x688c, 0x688a, 0x687d, 0x6b36, 0x6b33, + 0x6b37, 0x6b38, 0x6b91, 0x6b8f, 0x6b8d, 0x6b8e, 0x6b8c, 0x6c2a, + 0x6dc0, 0x6dab, 0x6db4, 0x6db3, 0x6e74, 0x6dac, 0x6de9, 0x6de2, + 0x6db7, 0x6df6, 0x6dd4, 0x6e00, 0x6dc8, 0x6de0, 0x6ddf, 0x6dd6, + 0x6dbe, 0x6de5, 0x6ddc, 0x6ddd, 0x6ddb, 0x6df4, 0x6dca, 0x6dbd, + 0x6ded, 0x6df0, 0x6dba, 0x6dd5, 0x6dc2, 0x6dcf, 0x6dc9, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6dd0, 0x6df2, 0x6dd3, 0x6dfd, 0x6dd7, 0x6dcd, 0x6de3, 0x6dbb, + 0x70fa, 0x710d, 0x70f7, 0x7117, 0x70f4, 0x710c, 0x70f0, 0x7104, + 0x70f3, 0x7110, 0x70fc, 0x70ff, 0x7106, 0x7113, 0x7100, 0x70f8, + 0x70f6, 0x710b, 0x7102, 0x710e, 0x727e, 0x727b, 0x727c, 0x727f, + 0x731d, 0x7317, 0x7307, 0x7311, 0x7318, 0x730a, 0x7308, 0x72ff, + 0x730f, 0x731e, 0x7388, 0x73f6, 0x73f8, 0x73f5, 0x7404, 0x7401, + 0x73fd, 0x7407, 0x7400, 0x73fa, 0x73fc, 0x73ff, 0x740c, 0x740b, + 0x73f4, 0x7408, 0x7564, 0x7563, 0x75ce, 0x75d2, 0x75cf, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x75cb, 0x75cc, 0x75d1, 0x75d0, 0x768f, 0x7689, 0x76d3, + 0x7739, 0x772f, 0x772d, 0x7731, 0x7732, 0x7734, 0x7733, 0x773d, + 0x7725, 0x773b, 0x7735, 0x7848, 0x7852, 0x7849, 0x784d, 0x784a, + 0x784c, 0x7826, 0x7845, 0x7850, 0x7964, 0x7967, 0x7969, 0x796a, + 0x7963, 0x796b, 0x7961, 0x79bb, 0x79fa, 0x79f8, 0x79f6, 0x79f7, + 0x7a8f, 0x7a94, 0x7a90, 0x7b35, 0x7b47, 0x7b34, 0x7b25, 0x7b30, + 0x7b22, 0x7b24, 0x7b33, 0x7b18, 0x7b2a, 0x7b1d, 0x7b31, 0x7b2b, + 0x7b2d, 0x7b2f, 0x7b32, 0x7b38, 0x7b1a, 0x7b23, 0x7c94, 0x7c98, + 0x7c96, 0x7ca3, 0x7d35, 0x7d3d, 0x7d38, 0x7d36, 0x7d3a, 0x7d45, + 0x7d2c, 0x7d29, 0x7d41, 0x7d47, 0x7d3e, 0x7d3f, 0x7d4a, 0x7d3b, + 0x7d28, 0x7f63, 0x7f95, 0x7f9c, 0x7f9d, 0x7f9b, 0x7fca, 0x7fcb, + 0x7fcd, 0x7fd0, 0x7fd1, 0x7fc7, 0x7fcf, 0x7fc9, 0x801f, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x801e, 0x801b, 0x8047, 0x8043, 0x8048, 0x8118, 0x8125, 0x8119, + 0x811b, 0x812d, 0x811f, 0x812c, 0x811e, 0x8121, 0x8115, 0x8127, + 0x811d, 0x8122, 0x8211, 0x8238, 0x8233, 0x823a, 0x8234, 0x8232, + 0x8274, 0x8390, 0x83a3, 0x83a8, 0x838d, 0x837a, 0x8373, 0x83a4, + 0x8374, 0x838f, 0x8381, 0x8395, 0x8399, 0x8375, 0x8394, 0x83a9, + 0x837d, 0x8383, 0x838c, 0x839d, 0x839b, 0x83aa, 0x838b, 0x837e, + 0x83a5, 0x83af, 0x8388, 0x8397, 0x83b0, 0x837f, 0x83a6, 0x8387, + 0x83ae, 0x8376, 0x839a, 0x8659, 0x8656, 0x86bf, 0x86b7, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x86c2, 0x86c1, 0x86c5, 0x86ba, 0x86b0, 0x86c8, 0x86b9, + 0x86b3, 0x86b8, 0x86cc, 0x86b4, 0x86bb, 0x86bc, 0x86c3, 0x86bd, + 0x86be, 0x8852, 0x8889, 0x8895, 0x88a8, 0x88a2, 0x88aa, 0x889a, + 0x8891, 0x88a1, 0x889f, 0x8898, 0x88a7, 0x8899, 0x889b, 0x8897, + 0x88a4, 0x88ac, 0x888c, 0x8893, 0x888e, 0x8982, 0x89d6, 0x89d9, + 0x89d5, 0x8a30, 0x8a27, 0x8a2c, 0x8a1e, 0x8c39, 0x8c3b, 0x8c5c, + 0x8c5d, 0x8c7d, 0x8ca5, 0x8d7d, 0x8d7b, 0x8d79, 0x8dbc, 0x8dc2, + 0x8db9, 0x8dbf, 0x8dc1, 0x8ed8, 0x8ede, 0x8edd, 0x8edc, 0x8ed7, + 0x8ee0, 0x8ee1, 0x9024, 0x900b, 0x9011, 0x901c, 0x900c, 0x9021, + 0x90ef, 0x90ea, 0x90f0, 0x90f4, 0x90f2, 0x90f3, 0x90d4, 0x90eb, + 0x90ec, 0x90e9, 0x9156, 0x9158, 0x915a, 0x9153, 0x9155, 0x91ec, + 0x91f4, 0x91f1, 0x91f3, 0x91f8, 0x91e4, 0x91f9, 0x91ea, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x91eb, 0x91f7, 0x91e8, 0x91ee, 0x957a, 0x9586, 0x9588, 0x967c, + 0x966d, 0x966b, 0x9671, 0x966f, 0x96bf, 0x976a, 0x9804, 0x98e5, + 0x9997, 0x509b, 0x5095, 0x5094, 0x509e, 0x508b, 0x50a3, 0x5083, + 0x508c, 0x508e, 0x509d, 0x5068, 0x509c, 0x5092, 0x5082, 0x5087, + 0x515f, 0x51d4, 0x5312, 0x5311, 0x53a4, 0x53a7, 0x5591, 0x55a8, + 0x55a5, 0x55ad, 0x5577, 0x5645, 0x55a2, 0x5593, 0x5588, 0x558f, + 0x55b5, 0x5581, 0x55a3, 0x5592, 0x55a4, 0x557d, 0x558c, 0x55a6, + 0x557f, 0x5595, 0x55a1, 0x558e, 0x570c, 0x5829, 0x5837, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5819, 0x581e, 0x5827, 0x5823, 0x5828, 0x57f5, 0x5848, + 0x5825, 0x581c, 0x581b, 0x5833, 0x583f, 0x5836, 0x582e, 0x5839, + 0x5838, 0x582d, 0x582c, 0x583b, 0x5961, 0x5aaf, 0x5a94, 0x5a9f, + 0x5a7a, 0x5aa2, 0x5a9e, 0x5a78, 0x5aa6, 0x5a7c, 0x5aa5, 0x5aac, + 0x5a95, 0x5aae, 0x5a37, 0x5a84, 0x5a8a, 0x5a97, 0x5a83, 0x5a8b, + 0x5aa9, 0x5a7b, 0x5a7d, 0x5a8c, 0x5a9c, 0x5a8f, 0x5a93, 0x5a9d, + 0x5bea, 0x5bcd, 0x5bcb, 0x5bd4, 0x5bd1, 0x5bca, 0x5bce, 0x5c0c, + 0x5c30, 0x5d37, 0x5d43, 0x5d6b, 0x5d41, 0x5d4b, 0x5d3f, 0x5d35, + 0x5d51, 0x5d4e, 0x5d55, 0x5d33, 0x5d3a, 0x5d52, 0x5d3d, 0x5d31, + 0x5d59, 0x5d42, 0x5d39, 0x5d49, 0x5d38, 0x5d3c, 0x5d32, 0x5d36, + 0x5d40, 0x5d45, 0x5e44, 0x5e41, 0x5f58, 0x5fa6, 0x5fa5, 0x5fab, + 0x60c9, 0x60b9, 0x60cc, 0x60e2, 0x60ce, 0x60c4, 0x6114, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x60f2, 0x610a, 0x6116, 0x6105, 0x60f5, 0x6113, 0x60f8, 0x60fc, + 0x60fe, 0x60c1, 0x6103, 0x6118, 0x611d, 0x6110, 0x60ff, 0x6104, + 0x610b, 0x624a, 0x6394, 0x63b1, 0x63b0, 0x63ce, 0x63e5, 0x63e8, + 0x63ef, 0x63c3, 0x649d, 0x63f3, 0x63ca, 0x63e0, 0x63f6, 0x63d5, + 0x63f2, 0x63f5, 0x6461, 0x63df, 0x63be, 0x63dd, 0x63dc, 0x63c4, + 0x63d8, 0x63d3, 0x63c2, 0x63c7, 0x63cc, 0x63cb, 0x63c8, 0x63f0, + 0x63d7, 0x63d9, 0x6532, 0x6567, 0x656a, 0x6564, 0x655c, 0x6568, + 0x6565, 0x658c, 0x659d, 0x659e, 0x65ae, 0x65d0, 0x65d2, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x667c, 0x666c, 0x667b, 0x6680, 0x6671, 0x6679, 0x666a, + 0x6672, 0x6701, 0x690c, 0x68d3, 0x6904, 0x68dc, 0x692a, 0x68ec, + 0x68ea, 0x68f1, 0x690f, 0x68d6, 0x68f7, 0x68eb, 0x68e4, 0x68f6, + 0x6913, 0x6910, 0x68f3, 0x68e1, 0x6907, 0x68cc, 0x6908, 0x6970, + 0x68b4, 0x6911, 0x68ef, 0x68c6, 0x6914, 0x68f8, 0x68d0, 0x68fd, + 0x68fc, 0x68e8, 0x690b, 0x690a, 0x6917, 0x68ce, 0x68c8, 0x68dd, + 0x68de, 0x68e6, 0x68f4, 0x68d1, 0x6906, 0x68d4, 0x68e9, 0x6915, + 0x6925, 0x68c7, 0x6b39, 0x6b3b, 0x6b3f, 0x6b3c, 0x6b94, 0x6b97, + 0x6b99, 0x6b95, 0x6bbd, 0x6bf0, 0x6bf2, 0x6bf3, 0x6c30, 0x6dfc, + 0x6e46, 0x6e47, 0x6e1f, 0x6e49, 0x6e88, 0x6e3c, 0x6e3d, 0x6e45, + 0x6e62, 0x6e2b, 0x6e3f, 0x6e41, 0x6e5d, 0x6e73, 0x6e1c, 0x6e33, + 0x6e4b, 0x6e40, 0x6e51, 0x6e3b, 0x6e03, 0x6e2e, 0x6e5e, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6e68, 0x6e5c, 0x6e61, 0x6e31, 0x6e28, 0x6e60, 0x6e71, 0x6e6b, + 0x6e39, 0x6e22, 0x6e30, 0x6e53, 0x6e65, 0x6e27, 0x6e78, 0x6e64, + 0x6e77, 0x6e55, 0x6e79, 0x6e52, 0x6e66, 0x6e35, 0x6e36, 0x6e5a, + 0x7120, 0x711e, 0x712f, 0x70fb, 0x712e, 0x7131, 0x7123, 0x7125, + 0x7122, 0x7132, 0x711f, 0x7128, 0x713a, 0x711b, 0x724b, 0x725a, + 0x7288, 0x7289, 0x7286, 0x7285, 0x728b, 0x7312, 0x730b, 0x7330, + 0x7322, 0x7331, 0x7333, 0x7327, 0x7332, 0x732d, 0x7326, 0x7323, + 0x7335, 0x730c, 0x742e, 0x742c, 0x7430, 0x742b, 0x7416, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x741a, 0x7421, 0x742d, 0x7431, 0x7424, 0x7423, 0x741d, + 0x7429, 0x7420, 0x7432, 0x74fb, 0x752f, 0x756f, 0x756c, 0x75e7, + 0x75da, 0x75e1, 0x75e6, 0x75dd, 0x75df, 0x75e4, 0x75d7, 0x7695, + 0x7692, 0x76da, 0x7746, 0x7747, 0x7744, 0x774d, 0x7745, 0x774a, + 0x774e, 0x774b, 0x774c, 0x77de, 0x77ec, 0x7860, 0x7864, 0x7865, + 0x785c, 0x786d, 0x7871, 0x786a, 0x786e, 0x7870, 0x7869, 0x7868, + 0x785e, 0x7862, 0x7974, 0x7973, 0x7972, 0x7970, 0x7a02, 0x7a0a, + 0x7a03, 0x7a0c, 0x7a04, 0x7a99, 0x7ae6, 0x7ae4, 0x7b4a, 0x7b3b, + 0x7b44, 0x7b48, 0x7b4c, 0x7b4e, 0x7b40, 0x7b58, 0x7b45, 0x7ca2, + 0x7c9e, 0x7ca8, 0x7ca1, 0x7d58, 0x7d6f, 0x7d63, 0x7d53, 0x7d56, + 0x7d67, 0x7d6a, 0x7d4f, 0x7d6d, 0x7d5c, 0x7d6b, 0x7d52, 0x7d54, + 0x7d69, 0x7d51, 0x7d5f, 0x7d4e, 0x7f3e, 0x7f3f, 0x7f65, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x7f66, 0x7fa2, 0x7fa0, 0x7fa1, 0x7fd7, 0x8051, 0x804f, 0x8050, + 0x80fe, 0x80d4, 0x8143, 0x814a, 0x8152, 0x814f, 0x8147, 0x813d, + 0x814d, 0x813a, 0x81e6, 0x81ee, 0x81f7, 0x81f8, 0x81f9, 0x8204, + 0x823c, 0x823d, 0x823f, 0x8275, 0x833b, 0x83cf, 0x83f9, 0x8423, + 0x83c0, 0x83e8, 0x8412, 0x83e7, 0x83e4, 0x83fc, 0x83f6, 0x8410, + 0x83c6, 0x83c8, 0x83eb, 0x83e3, 0x83bf, 0x8401, 0x83dd, 0x83e5, + 0x83d8, 0x83ff, 0x83e1, 0x83cb, 0x83ce, 0x83d6, 0x83f5, 0x83c9, + 0x8409, 0x840f, 0x83de, 0x8411, 0x8406, 0x83c2, 0x83f3, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x83d5, 0x83fa, 0x83c7, 0x83d1, 0x83ea, 0x8413, 0x83c3, + 0x83ec, 0x83ee, 0x83c4, 0x83fb, 0x83d7, 0x83e2, 0x841b, 0x83db, + 0x83fe, 0x86d8, 0x86e2, 0x86e6, 0x86d3, 0x86e3, 0x86da, 0x86ea, + 0x86dd, 0x86eb, 0x86dc, 0x86ec, 0x86e9, 0x86d7, 0x86e8, 0x86d1, + 0x8848, 0x8856, 0x8855, 0x88ba, 0x88d7, 0x88b9, 0x88b8, 0x88c0, + 0x88be, 0x88b6, 0x88bc, 0x88b7, 0x88bd, 0x88b2, 0x8901, 0x88c9, + 0x8995, 0x8998, 0x8997, 0x89dd, 0x89da, 0x89db, 0x8a4e, 0x8a4d, + 0x8a39, 0x8a59, 0x8a40, 0x8a57, 0x8a58, 0x8a44, 0x8a45, 0x8a52, + 0x8a48, 0x8a51, 0x8a4a, 0x8a4c, 0x8a4f, 0x8c5f, 0x8c81, 0x8c80, + 0x8cba, 0x8cbe, 0x8cb0, 0x8cb9, 0x8cb5, 0x8d84, 0x8d80, 0x8d89, + 0x8dd8, 0x8dd3, 0x8dcd, 0x8dc7, 0x8dd6, 0x8ddc, 0x8dcf, 0x8dd5, + 0x8dd9, 0x8dc8, 0x8dd7, 0x8dc5, 0x8eef, 0x8ef7, 0x8efa, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8ef9, 0x8ee6, 0x8eee, 0x8ee5, 0x8ef5, 0x8ee7, 0x8ee8, 0x8ef6, + 0x8eeb, 0x8ef1, 0x8eec, 0x8ef4, 0x8ee9, 0x902d, 0x9034, 0x902f, + 0x9106, 0x912c, 0x9104, 0x90ff, 0x90fc, 0x9108, 0x90f9, 0x90fb, + 0x9101, 0x9100, 0x9107, 0x9105, 0x9103, 0x9161, 0x9164, 0x915f, + 0x9162, 0x9160, 0x9201, 0x920a, 0x9225, 0x9203, 0x921a, 0x9226, + 0x920f, 0x920c, 0x9200, 0x9212, 0x91ff, 0x91fd, 0x9206, 0x9204, + 0x9227, 0x9202, 0x921c, 0x9224, 0x9219, 0x9217, 0x9205, 0x9216, + 0x957b, 0x958d, 0x958c, 0x9590, 0x9687, 0x967e, 0x9688, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x9689, 0x9683, 0x9680, 0x96c2, 0x96c8, 0x96c3, 0x96f1, + 0x96f0, 0x976c, 0x9770, 0x976e, 0x9807, 0x98a9, 0x98eb, 0x9ce6, + 0x9ef9, 0x4e83, 0x4e84, 0x4eb6, 0x50bd, 0x50bf, 0x50c6, 0x50ae, + 0x50c4, 0x50ca, 0x50b4, 0x50c8, 0x50c2, 0x50b0, 0x50c1, 0x50ba, + 0x50b1, 0x50cb, 0x50c9, 0x50b6, 0x50b8, 0x51d7, 0x527a, 0x5278, + 0x527b, 0x527c, 0x55c3, 0x55db, 0x55cc, 0x55d0, 0x55cb, 0x55ca, + 0x55dd, 0x55c0, 0x55d4, 0x55c4, 0x55e9, 0x55bf, 0x55d2, 0x558d, + 0x55cf, 0x55d5, 0x55e2, 0x55d6, 0x55c8, 0x55f2, 0x55cd, 0x55d9, + 0x55c2, 0x5714, 0x5853, 0x5868, 0x5864, 0x584f, 0x584d, 0x5849, + 0x586f, 0x5855, 0x584e, 0x585d, 0x5859, 0x5865, 0x585b, 0x583d, + 0x5863, 0x5871, 0x58fc, 0x5ac7, 0x5ac4, 0x5acb, 0x5aba, 0x5ab8, + 0x5ab1, 0x5ab5, 0x5ab0, 0x5abf, 0x5ac8, 0x5abb, 0x5ac6, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5ab7, 0x5ac0, 0x5aca, 0x5ab4, 0x5ab6, 0x5acd, 0x5ab9, 0x5a90, + 0x5bd6, 0x5bd8, 0x5bd9, 0x5c1f, 0x5c33, 0x5d71, 0x5d63, 0x5d4a, + 0x5d65, 0x5d72, 0x5d6c, 0x5d5e, 0x5d68, 0x5d67, 0x5d62, 0x5df0, + 0x5e4f, 0x5e4e, 0x5e4a, 0x5e4d, 0x5e4b, 0x5ec5, 0x5ecc, 0x5ec6, + 0x5ecb, 0x5ec7, 0x5f40, 0x5faf, 0x5fad, 0x60f7, 0x6149, 0x614a, + 0x612b, 0x6145, 0x6136, 0x6132, 0x612e, 0x6146, 0x612f, 0x614f, + 0x6129, 0x6140, 0x6220, 0x9168, 0x6223, 0x6225, 0x6224, 0x63c5, + 0x63f1, 0x63eb, 0x6410, 0x6412, 0x6409, 0x6420, 0x6424, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6433, 0x6443, 0x641f, 0x6415, 0x6418, 0x6439, 0x6437, + 0x6422, 0x6423, 0x640c, 0x6426, 0x6430, 0x6428, 0x6441, 0x6435, + 0x642f, 0x640a, 0x641a, 0x6440, 0x6425, 0x6427, 0x640b, 0x63e7, + 0x641b, 0x642e, 0x6421, 0x640e, 0x656f, 0x6592, 0x65d3, 0x6686, + 0x668c, 0x6695, 0x6690, 0x668b, 0x668a, 0x6699, 0x6694, 0x6678, + 0x6720, 0x6966, 0x695f, 0x6938, 0x694e, 0x6962, 0x6971, 0x693f, + 0x6945, 0x696a, 0x6939, 0x6942, 0x6957, 0x6959, 0x697a, 0x6948, + 0x6949, 0x6935, 0x696c, 0x6933, 0x693d, 0x6965, 0x68f0, 0x6978, + 0x6934, 0x6969, 0x6940, 0x696f, 0x6944, 0x6976, 0x6958, 0x6941, + 0x6974, 0x694c, 0x693b, 0x694b, 0x6937, 0x695c, 0x694f, 0x6951, + 0x6932, 0x6952, 0x692f, 0x697b, 0x693c, 0x6b46, 0x6b45, 0x6b43, + 0x6b42, 0x6b48, 0x6b41, 0x6b9b, 0x0000, 0x6bfb, 0x6bfc, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6bf9, 0x6bf7, 0x6bf8, 0x6e9b, 0x6ed6, 0x6ec8, 0x6e8f, 0x6ec0, + 0x6e9f, 0x6e93, 0x6e94, 0x6ea0, 0x6eb1, 0x6eb9, 0x6ec6, 0x6ed2, + 0x6ebd, 0x6ec1, 0x6e9e, 0x6ec9, 0x6eb7, 0x6eb0, 0x6ecd, 0x6ea6, + 0x6ecf, 0x6eb2, 0x6ebe, 0x6ec3, 0x6edc, 0x6ed8, 0x6e99, 0x6e92, + 0x6e8e, 0x6e8d, 0x6ea4, 0x6ea1, 0x6ebf, 0x6eb3, 0x6ed0, 0x6eca, + 0x6e97, 0x6eae, 0x6ea3, 0x7147, 0x7154, 0x7152, 0x7163, 0x7160, + 0x7141, 0x715d, 0x7162, 0x7172, 0x7178, 0x716a, 0x7161, 0x7142, + 0x7158, 0x7143, 0x714b, 0x7170, 0x715f, 0x7150, 0x7153, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7144, 0x714d, 0x715a, 0x724f, 0x728d, 0x728c, 0x7291, + 0x7290, 0x728e, 0x733c, 0x7342, 0x733b, 0x733a, 0x7340, 0x734a, + 0x7349, 0x7444, 0x744a, 0x744b, 0x7452, 0x7451, 0x7457, 0x7440, + 0x744f, 0x7450, 0x744e, 0x7442, 0x7446, 0x744d, 0x7454, 0x74e1, + 0x74ff, 0x74fe, 0x74fd, 0x751d, 0x7579, 0x7577, 0x6983, 0x75ef, + 0x760f, 0x7603, 0x75f7, 0x75fe, 0x75fc, 0x75f9, 0x75f8, 0x7610, + 0x75fb, 0x75f6, 0x75ed, 0x75f5, 0x75fd, 0x7699, 0x76b5, 0x76dd, + 0x7755, 0x775f, 0x7760, 0x7752, 0x7756, 0x775a, 0x7769, 0x7767, + 0x7754, 0x7759, 0x776d, 0x77e0, 0x7887, 0x789a, 0x7894, 0x788f, + 0x7884, 0x7895, 0x7885, 0x7886, 0x78a1, 0x7883, 0x7879, 0x7899, + 0x7880, 0x7896, 0x787b, 0x797c, 0x7982, 0x797d, 0x7979, 0x7a11, + 0x7a18, 0x7a19, 0x7a12, 0x7a17, 0x7a15, 0x7a22, 0x7a13, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x7a1b, 0x7a10, 0x7aa3, 0x7aa2, 0x7a9e, 0x7aeb, 0x7b66, 0x7b64, + 0x7b6d, 0x7b74, 0x7b69, 0x7b72, 0x7b65, 0x7b73, 0x7b71, 0x7b70, + 0x7b61, 0x7b78, 0x7b76, 0x7b63, 0x7cb2, 0x7cb4, 0x7caf, 0x7d88, + 0x7d86, 0x7d80, 0x7d8d, 0x7d7f, 0x7d85, 0x7d7a, 0x7d8e, 0x7d7b, + 0x7d83, 0x7d7c, 0x7d8c, 0x7d94, 0x7d84, 0x7d7d, 0x7d92, 0x7f6d, + 0x7f6b, 0x7f67, 0x7f68, 0x7f6c, 0x7fa6, 0x7fa5, 0x7fa7, 0x7fdb, + 0x7fdc, 0x8021, 0x8164, 0x8160, 0x8177, 0x815c, 0x8169, 0x815b, + 0x8162, 0x8172, 0x6721, 0x815e, 0x8176, 0x8167, 0x816f, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8144, 0x8161, 0x821d, 0x8249, 0x8244, 0x8240, 0x8242, + 0x8245, 0x84f1, 0x843f, 0x8456, 0x8476, 0x8479, 0x848f, 0x848d, + 0x8465, 0x8451, 0x8440, 0x8486, 0x8467, 0x8430, 0x844d, 0x847d, + 0x845a, 0x8459, 0x8474, 0x8473, 0x845d, 0x8507, 0x845e, 0x8437, + 0x843a, 0x8434, 0x847a, 0x8443, 0x8478, 0x8432, 0x8445, 0x8429, + 0x83d9, 0x844b, 0x842f, 0x8442, 0x842d, 0x845f, 0x8470, 0x8439, + 0x844e, 0x844c, 0x8452, 0x846f, 0x84c5, 0x848e, 0x843b, 0x8447, + 0x8436, 0x8433, 0x8468, 0x847e, 0x8444, 0x842b, 0x8460, 0x8454, + 0x846e, 0x8450, 0x870b, 0x8704, 0x86f7, 0x870c, 0x86fa, 0x86d6, + 0x86f5, 0x874d, 0x86f8, 0x870e, 0x8709, 0x8701, 0x86f6, 0x870d, + 0x8705, 0x88d6, 0x88cb, 0x88cd, 0x88ce, 0x88de, 0x88db, 0x88da, + 0x88cc, 0x88d0, 0x8985, 0x899b, 0x89df, 0x89e5, 0x89e4, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x89e1, 0x89e0, 0x89e2, 0x89dc, 0x89e6, 0x8a76, 0x8a86, 0x8a7f, + 0x8a61, 0x8a3f, 0x8a77, 0x8a82, 0x8a84, 0x8a75, 0x8a83, 0x8a81, + 0x8a74, 0x8a7a, 0x8c3c, 0x8c4b, 0x8c4a, 0x8c65, 0x8c64, 0x8c66, + 0x8c86, 0x8c84, 0x8c85, 0x8ccc, 0x8d68, 0x8d69, 0x8d91, 0x8d8c, + 0x8d8e, 0x8d8f, 0x8d8d, 0x8d93, 0x8d94, 0x8d90, 0x8d92, 0x8df0, + 0x8de0, 0x8dec, 0x8df1, 0x8dee, 0x8dd0, 0x8de9, 0x8de3, 0x8de2, + 0x8de7, 0x8df2, 0x8deb, 0x8df4, 0x8f06, 0x8eff, 0x8f01, 0x8f00, + 0x8f05, 0x8f07, 0x8f08, 0x8f02, 0x8f0b, 0x9052, 0x903f, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x9044, 0x9049, 0x903d, 0x9110, 0x910d, 0x910f, 0x9111, + 0x9116, 0x9114, 0x910b, 0x910e, 0x916e, 0x916f, 0x9248, 0x9252, + 0x9230, 0x923a, 0x9266, 0x9233, 0x9265, 0x925e, 0x9283, 0x922e, + 0x924a, 0x9246, 0x926d, 0x926c, 0x924f, 0x9260, 0x9267, 0x926f, + 0x9236, 0x9261, 0x9270, 0x9231, 0x9254, 0x9263, 0x9250, 0x9272, + 0x924e, 0x9253, 0x924c, 0x9256, 0x9232, 0x959f, 0x959c, 0x959e, + 0x959b, 0x9692, 0x9693, 0x9691, 0x9697, 0x96ce, 0x96fa, 0x96fd, + 0x96f8, 0x96f5, 0x9773, 0x9777, 0x9778, 0x9772, 0x980f, 0x980d, + 0x980e, 0x98ac, 0x98f6, 0x98f9, 0x99af, 0x99b2, 0x99b0, 0x99b5, + 0x9aad, 0x9aab, 0x9b5b, 0x9cea, 0x9ced, 0x9ce7, 0x9e80, 0x9efd, + 0x50e6, 0x50d4, 0x50d7, 0x50e8, 0x50f3, 0x50db, 0x50ea, 0x50dd, + 0x50e4, 0x50d3, 0x50ec, 0x50f0, 0x50ef, 0x50e3, 0x50e0, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x51d8, 0x5280, 0x5281, 0x52e9, 0x52eb, 0x5330, 0x53ac, 0x5627, + 0x5615, 0x560c, 0x5612, 0x55fc, 0x560f, 0x561c, 0x5601, 0x5613, + 0x5602, 0x55fa, 0x561d, 0x5604, 0x55ff, 0x55f9, 0x5889, 0x587c, + 0x5890, 0x5898, 0x5886, 0x5881, 0x587f, 0x5874, 0x588b, 0x587a, + 0x5887, 0x5891, 0x588e, 0x5876, 0x5882, 0x5888, 0x587b, 0x5894, + 0x588f, 0x58fe, 0x596b, 0x5adc, 0x5aee, 0x5ae5, 0x5ad5, 0x5aea, + 0x5ada, 0x5aed, 0x5aeb, 0x5af3, 0x5ae2, 0x5ae0, 0x5adb, 0x5aec, + 0x5ade, 0x5add, 0x5ad9, 0x5ae8, 0x5adf, 0x5b77, 0x5be0, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5be3, 0x5c63, 0x5d82, 0x5d80, 0x5d7d, 0x5d86, 0x5d7a, + 0x5d81, 0x5d77, 0x5d8a, 0x5d89, 0x5d88, 0x5d7e, 0x5d7c, 0x5d8d, + 0x5d79, 0x5d7f, 0x5e58, 0x5e59, 0x5e53, 0x5ed8, 0x5ed1, 0x5ed7, + 0x5ece, 0x5edc, 0x5ed5, 0x5ed9, 0x5ed2, 0x5ed4, 0x5f44, 0x5f43, + 0x5f6f, 0x5fb6, 0x612c, 0x6128, 0x6141, 0x615e, 0x6171, 0x6173, + 0x6152, 0x6153, 0x6172, 0x616c, 0x6180, 0x6174, 0x6154, 0x617a, + 0x615b, 0x6165, 0x613b, 0x616a, 0x6161, 0x6156, 0x6229, 0x6227, + 0x622b, 0x642b, 0x644d, 0x645b, 0x645d, 0x6474, 0x6476, 0x6472, + 0x6473, 0x647d, 0x6475, 0x6466, 0x64a6, 0x644e, 0x6482, 0x645e, + 0x645c, 0x644b, 0x6453, 0x6460, 0x6450, 0x647f, 0x643f, 0x646c, + 0x646b, 0x6459, 0x6465, 0x6477, 0x6573, 0x65a0, 0x66a1, 0x66a0, + 0x669f, 0x6705, 0x6704, 0x6722, 0x69b1, 0x69b6, 0x69c9, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x69a0, 0x69ce, 0x6996, 0x69b0, 0x69ac, 0x69bc, 0x6991, 0x6999, + 0x698e, 0x69a7, 0x698d, 0x69a9, 0x69be, 0x69af, 0x69bf, 0x69c4, + 0x69bd, 0x69a4, 0x69d4, 0x69b9, 0x69ca, 0x699a, 0x69cf, 0x69b3, + 0x6993, 0x69aa, 0x69a1, 0x699e, 0x69d9, 0x6997, 0x6990, 0x69c2, + 0x69b5, 0x69a5, 0x69c6, 0x6b4a, 0x6b4d, 0x6b4b, 0x6b9e, 0x6b9f, + 0x6ba0, 0x6bc3, 0x6bc4, 0x6bfe, 0x6ece, 0x6ef5, 0x6ef1, 0x6f03, + 0x6f25, 0x6ef8, 0x6f37, 0x6efb, 0x6f2e, 0x6f09, 0x6f4e, 0x6f19, + 0x6f1a, 0x6f27, 0x6f18, 0x6f3b, 0x6f12, 0x6eed, 0x6f0a, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6f36, 0x6f73, 0x6ef9, 0x6eee, 0x6f2d, 0x6f40, 0x6f30, + 0x6f3c, 0x6f35, 0x6eeb, 0x6f07, 0x6f0e, 0x6f43, 0x6f05, 0x6efd, + 0x6ef6, 0x6f39, 0x6f1c, 0x6efc, 0x6f3a, 0x6f1f, 0x6f0d, 0x6f1e, + 0x6f08, 0x6f21, 0x7187, 0x7190, 0x7189, 0x7180, 0x7185, 0x7182, + 0x718f, 0x717b, 0x7186, 0x7181, 0x7197, 0x7244, 0x7253, 0x7297, + 0x7295, 0x7293, 0x7343, 0x734d, 0x7351, 0x734c, 0x7462, 0x7473, + 0x7471, 0x7475, 0x7472, 0x7467, 0x746e, 0x7500, 0x7502, 0x7503, + 0x757d, 0x7590, 0x7616, 0x7608, 0x760c, 0x7615, 0x7611, 0x760a, + 0x7614, 0x76b8, 0x7781, 0x777c, 0x7785, 0x7782, 0x776e, 0x7780, + 0x776f, 0x777e, 0x7783, 0x78b2, 0x78aa, 0x78b4, 0x78ad, 0x78a8, + 0x787e, 0x78ab, 0x789e, 0x78a5, 0x78a0, 0x78ac, 0x78a2, 0x78a4, + 0x7998, 0x798a, 0x798b, 0x7996, 0x7995, 0x7994, 0x7993, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x7997, 0x7988, 0x7992, 0x7990, 0x7a2b, 0x7a4a, 0x7a30, 0x7a2f, + 0x7a28, 0x7a26, 0x7aa8, 0x7aab, 0x7aac, 0x7aee, 0x7b88, 0x7b9c, + 0x7b8a, 0x7b91, 0x7b90, 0x7b96, 0x7b8d, 0x7b8c, 0x7b9b, 0x7b8e, + 0x7b85, 0x7b98, 0x5284, 0x7b99, 0x7ba4, 0x7b82, 0x7cbb, 0x7cbf, + 0x7cbc, 0x7cba, 0x7da7, 0x7db7, 0x7dc2, 0x7da3, 0x7daa, 0x7dc1, + 0x7dc0, 0x7dc5, 0x7d9d, 0x7dce, 0x7dc4, 0x7dc6, 0x7dcb, 0x7dcc, + 0x7daf, 0x7db9, 0x7d96, 0x7dbc, 0x7d9f, 0x7da6, 0x7dae, 0x7da9, + 0x7da1, 0x7dc9, 0x7f73, 0x7fe2, 0x7fe3, 0x7fe5, 0x7fde, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8024, 0x805d, 0x805c, 0x8189, 0x8186, 0x8183, 0x8187, + 0x818d, 0x818c, 0x818b, 0x8215, 0x8497, 0x84a4, 0x84a1, 0x849f, + 0x84ba, 0x84ce, 0x84c2, 0x84ac, 0x84ae, 0x84ab, 0x84b9, 0x84b4, + 0x84c1, 0x84cd, 0x84aa, 0x849a, 0x84b1, 0x84d0, 0x849d, 0x84a7, + 0x84bb, 0x84a2, 0x8494, 0x84c7, 0x84cc, 0x849b, 0x84a9, 0x84af, + 0x84a8, 0x84d6, 0x8498, 0x84b6, 0x84cf, 0x84a0, 0x84d7, 0x84d4, + 0x84d2, 0x84db, 0x84b0, 0x8491, 0x8661, 0x8733, 0x8723, 0x8728, + 0x876b, 0x8740, 0x872e, 0x871e, 0x8721, 0x8719, 0x871b, 0x8743, + 0x872c, 0x8741, 0x873e, 0x8746, 0x8720, 0x8732, 0x872a, 0x872d, + 0x873c, 0x8712, 0x873a, 0x8731, 0x8735, 0x8742, 0x8726, 0x8727, + 0x8738, 0x8724, 0x871a, 0x8730, 0x8711, 0x88f7, 0x88e7, 0x88f1, + 0x88f2, 0x88fa, 0x88fe, 0x88ee, 0x88fc, 0x88f6, 0x88fb, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x88f0, 0x88ec, 0x88eb, 0x899d, 0x89a1, 0x899f, 0x899e, 0x89e9, + 0x89eb, 0x89e8, 0x8aab, 0x8a99, 0x8a8b, 0x8a92, 0x8a8f, 0x8a96, + 0x8c3d, 0x8c68, 0x8c69, 0x8cd5, 0x8ccf, 0x8cd7, 0x8d96, 0x8e09, + 0x8e02, 0x8dff, 0x8e0d, 0x8dfd, 0x8e0a, 0x8e03, 0x8e07, 0x8e06, + 0x8e05, 0x8dfe, 0x8e00, 0x8e04, 0x8f10, 0x8f11, 0x8f0e, 0x8f0d, + 0x9123, 0x911c, 0x9120, 0x9122, 0x911f, 0x911d, 0x911a, 0x9124, + 0x9121, 0x911b, 0x917a, 0x9172, 0x9179, 0x9173, 0x92a5, 0x92a4, + 0x9276, 0x929b, 0x927a, 0x92a0, 0x9294, 0x92aa, 0x928d, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x92a6, 0x929a, 0x92ab, 0x9279, 0x9297, 0x927f, 0x92a3, + 0x92ee, 0x928e, 0x9282, 0x9295, 0x92a2, 0x927d, 0x9288, 0x92a1, + 0x928a, 0x9286, 0x928c, 0x9299, 0x92a7, 0x927e, 0x9287, 0x92a9, + 0x929d, 0x928b, 0x922d, 0x969e, 0x96a1, 0x96ff, 0x9758, 0x977d, + 0x977a, 0x977e, 0x9783, 0x9780, 0x9782, 0x977b, 0x9784, 0x9781, + 0x977f, 0x97ce, 0x97cd, 0x9816, 0x98ad, 0x98ae, 0x9902, 0x9900, + 0x9907, 0x999d, 0x999c, 0x99c3, 0x99b9, 0x99bb, 0x99ba, 0x99c2, + 0x99bd, 0x99c7, 0x9ab1, 0x9ae3, 0x9ae7, 0x9b3e, 0x9b3f, 0x9b60, + 0x9b61, 0x9b5f, 0x9cf1, 0x9cf2, 0x9cf5, 0x9ea7, 0x50ff, 0x5103, + 0x5130, 0x50f8, 0x5106, 0x5107, 0x50f6, 0x50fe, 0x510b, 0x510c, + 0x50fd, 0x510a, 0x528b, 0x528c, 0x52f1, 0x52ef, 0x5648, 0x5642, + 0x564c, 0x5635, 0x5641, 0x564a, 0x5649, 0x5646, 0x5658, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x565a, 0x5640, 0x5633, 0x563d, 0x562c, 0x563e, 0x5638, 0x562a, + 0x563a, 0x571a, 0x58ab, 0x589d, 0x58b1, 0x58a0, 0x58a3, 0x58af, + 0x58ac, 0x58a5, 0x58a1, 0x58ff, 0x5aff, 0x5af4, 0x5afd, 0x5af7, + 0x5af6, 0x5b03, 0x5af8, 0x5b02, 0x5af9, 0x5b01, 0x5b07, 0x5b05, + 0x5b0f, 0x5c67, 0x5d99, 0x5d97, 0x5d9f, 0x5d92, 0x5da2, 0x5d93, + 0x5d95, 0x5da0, 0x5d9c, 0x5da1, 0x5d9a, 0x5d9e, 0x5e69, 0x5e5d, + 0x5e60, 0x5e5c, 0x7df3, 0x5edb, 0x5ede, 0x5ee1, 0x5f49, 0x5fb2, + 0x618b, 0x6183, 0x6179, 0x61b1, 0x61b0, 0x61a2, 0x6189, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x619b, 0x6193, 0x61af, 0x61ad, 0x619f, 0x6192, 0x61aa, + 0x61a1, 0x618d, 0x6166, 0x61b3, 0x622d, 0x646e, 0x6470, 0x6496, + 0x64a0, 0x6485, 0x6497, 0x649c, 0x648f, 0x648b, 0x648a, 0x648c, + 0x64a3, 0x649f, 0x6468, 0x64b1, 0x6498, 0x6576, 0x657a, 0x6579, + 0x657b, 0x65b2, 0x65b3, 0x66b5, 0x66b0, 0x66a9, 0x66b2, 0x66b7, + 0x66aa, 0x66af, 0x6a00, 0x6a06, 0x6a17, 0x69e5, 0x69f8, 0x6a15, + 0x69f1, 0x69e4, 0x6a20, 0x69ff, 0x69ec, 0x69e2, 0x6a1b, 0x6a1d, + 0x69fe, 0x6a27, 0x69f2, 0x69ee, 0x6a14, 0x69f7, 0x69e7, 0x6a40, + 0x6a08, 0x69e6, 0x69fb, 0x6a0d, 0x69fc, 0x69eb, 0x6a09, 0x6a04, + 0x6a18, 0x6a25, 0x6a0f, 0x69f6, 0x6a26, 0x6a07, 0x69f4, 0x6a16, + 0x6b51, 0x6ba5, 0x6ba3, 0x6ba2, 0x6ba6, 0x6c01, 0x6c00, 0x6bff, + 0x6c02, 0x6f41, 0x6f26, 0x6f7e, 0x6f87, 0x6fc6, 0x6f92, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6f8d, 0x6f89, 0x6f8c, 0x6f62, 0x6f4f, 0x6f85, 0x6f5a, 0x6f96, + 0x6f76, 0x6f6c, 0x6f82, 0x6f55, 0x6f72, 0x6f52, 0x6f50, 0x6f57, + 0x6f94, 0x6f93, 0x6f5d, 0x6f00, 0x6f61, 0x6f6b, 0x6f7d, 0x6f67, + 0x6f90, 0x6f53, 0x6f8b, 0x6f69, 0x6f7f, 0x6f95, 0x6f63, 0x6f77, + 0x6f6a, 0x6f7b, 0x71b2, 0x71af, 0x719b, 0x71b0, 0x71a0, 0x719a, + 0x71a9, 0x71b5, 0x719d, 0x71a5, 0x719e, 0x71a4, 0x71a1, 0x71aa, + 0x719c, 0x71a7, 0x71b3, 0x7298, 0x729a, 0x7358, 0x7352, 0x735e, + 0x735f, 0x7360, 0x735d, 0x735b, 0x7361, 0x735a, 0x7359, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7362, 0x7487, 0x7489, 0x748a, 0x7486, 0x7481, 0x747d, + 0x7485, 0x7488, 0x747c, 0x7479, 0x7508, 0x7507, 0x757e, 0x7625, + 0x761e, 0x7619, 0x761d, 0x761c, 0x7623, 0x761a, 0x7628, 0x761b, + 0x769c, 0x769d, 0x769e, 0x769b, 0x778d, 0x778f, 0x7789, 0x7788, + 0x78cd, 0x78bb, 0x78cf, 0x78cc, 0x78d1, 0x78ce, 0x78d4, 0x78c8, + 0x78c3, 0x78c4, 0x78c9, 0x799a, 0x79a1, 0x79a0, 0x799c, 0x79a2, + 0x799b, 0x6b76, 0x7a39, 0x7ab2, 0x7ab4, 0x7ab3, 0x7bb7, 0x7bcb, + 0x7bbe, 0x7bac, 0x7bce, 0x7baf, 0x7bb9, 0x7bca, 0x7bb5, 0x7cc5, + 0x7cc8, 0x7ccc, 0x7ccb, 0x7df7, 0x7ddb, 0x7dea, 0x7de7, 0x7dd7, + 0x7de1, 0x7e03, 0x7dfa, 0x7de6, 0x7df6, 0x7df1, 0x7df0, 0x7dee, + 0x7ddf, 0x7f76, 0x7fac, 0x7fb0, 0x7fad, 0x7fed, 0x7feb, 0x7fea, + 0x7fec, 0x7fe6, 0x7fe8, 0x8064, 0x8067, 0x81a3, 0x819f, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x819e, 0x8195, 0x81a2, 0x8199, 0x8197, 0x8216, 0x824f, 0x8253, + 0x8252, 0x8250, 0x824e, 0x8251, 0x8524, 0x853b, 0x850f, 0x8500, + 0x8529, 0x850e, 0x8509, 0x850d, 0x851f, 0x850a, 0x8527, 0x851c, + 0x84fb, 0x852b, 0x84fa, 0x8508, 0x850c, 0x84f4, 0x852a, 0x84f2, + 0x8515, 0x84f7, 0x84eb, 0x84f3, 0x84fc, 0x8512, 0x84ea, 0x84e9, + 0x8516, 0x84fe, 0x8528, 0x851d, 0x852e, 0x8502, 0x84fd, 0x851e, + 0x84f6, 0x8531, 0x8526, 0x84e7, 0x84e8, 0x84f0, 0x84ef, 0x84f9, + 0x8518, 0x8520, 0x8530, 0x850b, 0x8519, 0x852f, 0x8662, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8756, 0x8763, 0x8764, 0x8777, 0x87e1, 0x8773, 0x8758, + 0x8754, 0x875b, 0x8752, 0x8761, 0x875a, 0x8751, 0x875e, 0x876d, + 0x876a, 0x8750, 0x874e, 0x875f, 0x875d, 0x876f, 0x876c, 0x877a, + 0x876e, 0x875c, 0x8765, 0x874f, 0x877b, 0x8775, 0x8762, 0x8767, + 0x8769, 0x885a, 0x8905, 0x890c, 0x8914, 0x890b, 0x8917, 0x8918, + 0x8919, 0x8906, 0x8916, 0x8911, 0x890e, 0x8909, 0x89a2, 0x89a4, + 0x89a3, 0x89ed, 0x89f0, 0x89ec, 0x8acf, 0x8ac6, 0x8ab8, 0x8ad3, + 0x8ad1, 0x8ad4, 0x8ad5, 0x8abb, 0x8ad7, 0x8abe, 0x8ac0, 0x8ac5, + 0x8ad8, 0x8ac3, 0x8aba, 0x8abd, 0x8ad9, 0x8c3e, 0x8c4d, 0x8c8f, + 0x8ce5, 0x8cdf, 0x8cd9, 0x8ce8, 0x8cda, 0x8cdd, 0x8ce7, 0x8da0, + 0x8d9c, 0x8da1, 0x8d9b, 0x8e20, 0x8e23, 0x8e25, 0x8e24, 0x8e2e, + 0x8e15, 0x8e1b, 0x8e16, 0x8e11, 0x8e19, 0x8e26, 0x8e27, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8e14, 0x8e12, 0x8e18, 0x8e13, 0x8e1c, 0x8e17, 0x8e1a, 0x8f2c, + 0x8f24, 0x8f18, 0x8f1a, 0x8f20, 0x8f23, 0x8f16, 0x8f17, 0x9073, + 0x9070, 0x906f, 0x9067, 0x906b, 0x912f, 0x912b, 0x9129, 0x912a, + 0x9132, 0x9126, 0x912e, 0x9185, 0x9186, 0x918a, 0x9181, 0x9182, + 0x9184, 0x9180, 0x92d0, 0x92c3, 0x92c4, 0x92c0, 0x92d9, 0x92b6, + 0x92cf, 0x92f1, 0x92df, 0x92d8, 0x92e9, 0x92d7, 0x92dd, 0x92cc, + 0x92ef, 0x92c2, 0x92e8, 0x92ca, 0x92c8, 0x92ce, 0x92e6, 0x92cd, + 0x92d5, 0x92c9, 0x92e0, 0x92de, 0x92e7, 0x92d1, 0x92d3, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x92b5, 0x92e1, 0x92c6, 0x92b4, 0x957c, 0x95ac, 0x95ab, + 0x95ae, 0x95b0, 0x96a4, 0x96a2, 0x96d3, 0x9705, 0x9708, 0x9702, + 0x975a, 0x978a, 0x978e, 0x9788, 0x97d0, 0x97cf, 0x981e, 0x981d, + 0x9826, 0x9829, 0x9828, 0x9820, 0x981b, 0x9827, 0x98b2, 0x9908, + 0x98fa, 0x9911, 0x9914, 0x9916, 0x9917, 0x9915, 0x99dc, 0x99cd, + 0x99cf, 0x99d3, 0x99d4, 0x99ce, 0x99c9, 0x99d6, 0x99d8, 0x99cb, + 0x99d7, 0x99cc, 0x9ab3, 0x9aec, 0x9aeb, 0x9af3, 0x9af2, 0x9af1, + 0x9b46, 0x9b43, 0x9b67, 0x9b74, 0x9b71, 0x9b66, 0x9b76, 0x9b75, + 0x9b70, 0x9b68, 0x9b64, 0x9b6c, 0x9cfc, 0x9cfa, 0x9cfd, 0x9cff, + 0x9cf7, 0x9d07, 0x9d00, 0x9cf9, 0x9cfb, 0x9d08, 0x9d05, 0x9d04, + 0x9e83, 0x9ed3, 0x9f0f, 0x9f10, 0x511c, 0x5113, 0x5117, 0x511a, + 0x5111, 0x51de, 0x5334, 0x53e1, 0x5670, 0x5660, 0x566e, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5673, 0x5666, 0x5663, 0x566d, 0x5672, 0x565e, 0x5677, 0x571c, + 0x571b, 0x58c8, 0x58bd, 0x58c9, 0x58bf, 0x58ba, 0x58c2, 0x58bc, + 0x58c6, 0x5b17, 0x5b19, 0x5b1b, 0x5b21, 0x5b14, 0x5b13, 0x5b10, + 0x5b16, 0x5b28, 0x5b1a, 0x5b20, 0x5b1e, 0x5bef, 0x5dac, 0x5db1, + 0x5da9, 0x5da7, 0x5db5, 0x5db0, 0x5dae, 0x5daa, 0x5da8, 0x5db2, + 0x5dad, 0x5daf, 0x5db4, 0x5e67, 0x5e68, 0x5e66, 0x5e6f, 0x5ee9, + 0x5ee7, 0x5ee6, 0x5ee8, 0x5ee5, 0x5f4b, 0x5fbc, 0x619d, 0x61a8, + 0x6196, 0x61c5, 0x61b4, 0x61c6, 0x61c1, 0x61cc, 0x61ba, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x61bf, 0x61b8, 0x618c, 0x64d7, 0x64d6, 0x64d0, 0x64cf, + 0x64c9, 0x64bd, 0x6489, 0x64c3, 0x64db, 0x64f3, 0x64d9, 0x6533, + 0x657f, 0x657c, 0x65a2, 0x66c8, 0x66be, 0x66c0, 0x66ca, 0x66cb, + 0x66cf, 0x66bd, 0x66bb, 0x66ba, 0x66cc, 0x6723, 0x6a34, 0x6a66, + 0x6a49, 0x6a67, 0x6a32, 0x6a68, 0x6a3e, 0x6a5d, 0x6a6d, 0x6a76, + 0x6a5b, 0x6a51, 0x6a28, 0x6a5a, 0x6a3b, 0x6a3f, 0x6a41, 0x6a6a, + 0x6a64, 0x6a50, 0x6a4f, 0x6a54, 0x6a6f, 0x6a69, 0x6a60, 0x6a3c, + 0x6a5e, 0x6a56, 0x6a55, 0x6a4d, 0x6a4e, 0x6a46, 0x6b55, 0x6b54, + 0x6b56, 0x6ba7, 0x6baa, 0x6bab, 0x6bc8, 0x6bc7, 0x6c04, 0x6c03, + 0x6c06, 0x6fad, 0x6fcb, 0x6fa3, 0x6fc7, 0x6fbc, 0x6fce, 0x6fc8, + 0x6f5e, 0x6fc4, 0x6fbd, 0x6f9e, 0x6fca, 0x6fa8, 0x7004, 0x6fa5, + 0x6fae, 0x6fba, 0x6fac, 0x6faa, 0x6fcf, 0x6fbf, 0x6fb8, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6fa2, 0x6fc9, 0x6fab, 0x6fcd, 0x6faf, 0x6fb2, 0x6fb0, 0x71c5, + 0x71c2, 0x71bf, 0x71b8, 0x71d6, 0x71c0, 0x71c1, 0x71cb, 0x71d4, + 0x71ca, 0x71c7, 0x71cf, 0x71bd, 0x71d8, 0x71bc, 0x71c6, 0x71da, + 0x71db, 0x729d, 0x729e, 0x7369, 0x7366, 0x7367, 0x736c, 0x7365, + 0x736b, 0x736a, 0x747f, 0x749a, 0x74a0, 0x7494, 0x7492, 0x7495, + 0x74a1, 0x750b, 0x7580, 0x762f, 0x762d, 0x7631, 0x763d, 0x7633, + 0x763c, 0x7635, 0x7632, 0x7630, 0x76bb, 0x76e6, 0x779a, 0x779d, + 0x77a1, 0x779c, 0x779b, 0x77a2, 0x77a3, 0x7795, 0x7799, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7797, 0x78dd, 0x78e9, 0x78e5, 0x78ea, 0x78de, 0x78e3, + 0x78db, 0x78e1, 0x78e2, 0x78ed, 0x78df, 0x78e0, 0x79a4, 0x7a44, + 0x7a48, 0x7a47, 0x7ab6, 0x7ab8, 0x7ab5, 0x7ab1, 0x7ab7, 0x7bde, + 0x7be3, 0x7be7, 0x7bdd, 0x7bd5, 0x7be5, 0x7bda, 0x7be8, 0x7bf9, + 0x7bd4, 0x7bea, 0x7be2, 0x7bdc, 0x7beb, 0x7bd8, 0x7bdf, 0x7cd2, + 0x7cd4, 0x7cd7, 0x7cd0, 0x7cd1, 0x7e12, 0x7e21, 0x7e17, 0x7e0c, + 0x7e1f, 0x7e20, 0x7e13, 0x7e0e, 0x7e1c, 0x7e15, 0x7e1a, 0x7e22, + 0x7e0b, 0x7e0f, 0x7e16, 0x7e0d, 0x7e14, 0x7e25, 0x7e24, 0x7f43, + 0x7f7b, 0x7f7c, 0x7f7a, 0x7fb1, 0x7fef, 0x802a, 0x8029, 0x806c, + 0x81b1, 0x81a6, 0x81ae, 0x81b9, 0x81b5, 0x81ab, 0x81b0, 0x81ac, + 0x81b4, 0x81b2, 0x81b7, 0x81a7, 0x81f2, 0x8255, 0x8256, 0x8257, + 0x8556, 0x8545, 0x856b, 0x854d, 0x8553, 0x8561, 0x8558, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8540, 0x8546, 0x8564, 0x8541, 0x8562, 0x8544, 0x8551, 0x8547, + 0x8563, 0x853e, 0x855b, 0x8571, 0x854e, 0x856e, 0x8575, 0x8555, + 0x8567, 0x8560, 0x858c, 0x8566, 0x855d, 0x8554, 0x8565, 0x856c, + 0x8663, 0x8665, 0x8664, 0x879b, 0x878f, 0x8797, 0x8793, 0x8792, + 0x8788, 0x8781, 0x8796, 0x8798, 0x8779, 0x8787, 0x87a3, 0x8785, + 0x8790, 0x8791, 0x879d, 0x8784, 0x8794, 0x879c, 0x879a, 0x8789, + 0x891e, 0x8926, 0x8930, 0x892d, 0x892e, 0x8927, 0x8931, 0x8922, + 0x8929, 0x8923, 0x892f, 0x892c, 0x891f, 0x89f1, 0x8ae0, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8ae2, 0x8af2, 0x8af4, 0x8af5, 0x8add, 0x8b14, 0x8ae4, + 0x8adf, 0x8af0, 0x8ac8, 0x8ade, 0x8ae1, 0x8ae8, 0x8aff, 0x8aef, + 0x8afb, 0x8c91, 0x8c92, 0x8c90, 0x8cf5, 0x8cee, 0x8cf1, 0x8cf0, + 0x8cf3, 0x8d6c, 0x8d6e, 0x8da5, 0x8da7, 0x8e33, 0x8e3e, 0x8e38, + 0x8e40, 0x8e45, 0x8e36, 0x8e3c, 0x8e3d, 0x8e41, 0x8e30, 0x8e3f, + 0x8ebd, 0x8f36, 0x8f2e, 0x8f35, 0x8f32, 0x8f39, 0x8f37, 0x8f34, + 0x9076, 0x9079, 0x907b, 0x9086, 0x90fa, 0x9133, 0x9135, 0x9136, + 0x9193, 0x9190, 0x9191, 0x918d, 0x918f, 0x9327, 0x931e, 0x9308, + 0x931f, 0x9306, 0x930f, 0x937a, 0x9338, 0x933c, 0x931b, 0x9323, + 0x9312, 0x9301, 0x9346, 0x932d, 0x930e, 0x930d, 0x92cb, 0x931d, + 0x92fa, 0x9325, 0x9313, 0x92f9, 0x92f7, 0x9334, 0x9302, 0x9324, + 0x92ff, 0x9329, 0x9339, 0x9335, 0x932a, 0x9314, 0x930c, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x930b, 0x92fe, 0x9309, 0x9300, 0x92fb, 0x9316, 0x95bc, 0x95cd, + 0x95be, 0x95b9, 0x95ba, 0x95b6, 0x95bf, 0x95b5, 0x95bd, 0x96a9, + 0x96d4, 0x970b, 0x9712, 0x9710, 0x9799, 0x9797, 0x9794, 0x97f0, + 0x97f8, 0x9835, 0x982f, 0x9832, 0x9924, 0x991f, 0x9927, 0x9929, + 0x999e, 0x99ee, 0x99ec, 0x99e5, 0x99e4, 0x99f0, 0x99e3, 0x99ea, + 0x99e9, 0x99e7, 0x9ab9, 0x9abf, 0x9ab4, 0x9abb, 0x9af6, 0x9afa, + 0x9af9, 0x9af7, 0x9b33, 0x9b80, 0x9b85, 0x9b87, 0x9b7c, 0x9b7e, + 0x9b7b, 0x9b82, 0x9b93, 0x9b92, 0x9b90, 0x9b7a, 0x9b95, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x9b7d, 0x9b88, 0x9d25, 0x9d17, 0x9d20, 0x9d1e, 0x9d14, + 0x9d29, 0x9d1d, 0x9d18, 0x9d22, 0x9d10, 0x9d19, 0x9d1f, 0x9e88, + 0x9e86, 0x9e87, 0x9eae, 0x9ead, 0x9ed5, 0x9ed6, 0x9efa, 0x9f12, + 0x9f3d, 0x5126, 0x5125, 0x5122, 0x5124, 0x5120, 0x5129, 0x52f4, + 0x5693, 0x568c, 0x568d, 0x5686, 0x5684, 0x5683, 0x567e, 0x5682, + 0x567f, 0x5681, 0x58d6, 0x58d4, 0x58cf, 0x58d2, 0x5b2d, 0x5b25, + 0x5b32, 0x5b23, 0x5b2c, 0x5b27, 0x5b26, 0x5b2f, 0x5b2e, 0x5b7b, + 0x5bf1, 0x5bf2, 0x5db7, 0x5e6c, 0x5e6a, 0x5fbe, 0x5fbb, 0x61c3, + 0x61b5, 0x61bc, 0x61e7, 0x61e0, 0x61e5, 0x61e4, 0x61e8, 0x61de, + 0x64ef, 0x64e9, 0x64e3, 0x64eb, 0x64e4, 0x64e8, 0x6581, 0x6580, + 0x65b6, 0x65da, 0x66d2, 0x6a8d, 0x6a96, 0x6a81, 0x6aa5, 0x6a89, + 0x6a9f, 0x6a9b, 0x6aa1, 0x6a9e, 0x6a87, 0x6a93, 0x6a8e, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6a95, 0x6a83, 0x6aa8, 0x6aa4, 0x6a91, 0x6a7f, 0x6aa6, 0x6a9a, + 0x6a85, 0x6a8c, 0x6a92, 0x6b5b, 0x6bad, 0x6c09, 0x6fcc, 0x6fa9, + 0x6ff4, 0x6fd4, 0x6fe3, 0x6fdc, 0x6fed, 0x6fe7, 0x6fe6, 0x6fde, + 0x6ff2, 0x6fdd, 0x6fe2, 0x6fe8, 0x71e1, 0x71f1, 0x71e8, 0x71f2, + 0x71e4, 0x71f0, 0x71e2, 0x7373, 0x736e, 0x736f, 0x7497, 0x74b2, + 0x74ab, 0x7490, 0x74aa, 0x74ad, 0x74b1, 0x74a5, 0x74af, 0x7510, + 0x7511, 0x7512, 0x750f, 0x7584, 0x7643, 0x7648, 0x7649, 0x7647, + 0x76a4, 0x76e9, 0x77b5, 0x77ab, 0x77b2, 0x77b7, 0x77b6, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x77b4, 0x77b1, 0x77a8, 0x77f0, 0x78f3, 0x78fd, 0x7902, + 0x78fb, 0x78fc, 0x78f2, 0x7905, 0x78f9, 0x78fe, 0x7904, 0x79ab, + 0x79a8, 0x7a5c, 0x7a5b, 0x7a56, 0x7a58, 0x7a54, 0x7a5a, 0x7abe, + 0x7ac0, 0x7ac1, 0x7c05, 0x7c0f, 0x7bf2, 0x7c00, 0x7bff, 0x7bfb, + 0x7c0e, 0x7bf4, 0x7c0b, 0x7bf3, 0x7c02, 0x7c09, 0x7c03, 0x7c01, + 0x7bf8, 0x7bfd, 0x7c06, 0x7bf0, 0x7bf1, 0x7c10, 0x7c0a, 0x7ce8, + 0x7e2d, 0x7e3c, 0x7e42, 0x7e33, 0x9848, 0x7e38, 0x7e2a, 0x7e49, + 0x7e40, 0x7e47, 0x7e29, 0x7e4c, 0x7e30, 0x7e3b, 0x7e36, 0x7e44, + 0x7e3a, 0x7f45, 0x7f7f, 0x7f7e, 0x7f7d, 0x7ff4, 0x7ff2, 0x802c, + 0x81bb, 0x81c4, 0x81cc, 0x81ca, 0x81c5, 0x81c7, 0x81bc, 0x81e9, + 0x825b, 0x825a, 0x825c, 0x8583, 0x8580, 0x858f, 0x85a7, 0x8595, + 0x85a0, 0x858b, 0x85a3, 0x857b, 0x85a4, 0x859a, 0x859e, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8577, 0x857c, 0x8589, 0x85a1, 0x857a, 0x8578, 0x8557, 0x858e, + 0x8596, 0x8586, 0x858d, 0x8599, 0x859d, 0x8581, 0x85a2, 0x8582, + 0x8588, 0x8585, 0x8579, 0x8576, 0x8598, 0x8590, 0x859f, 0x8668, + 0x87be, 0x87aa, 0x87ad, 0x87c5, 0x87b0, 0x87ac, 0x87b9, 0x87b5, + 0x87bc, 0x87ae, 0x87c9, 0x87c3, 0x87c2, 0x87cc, 0x87b7, 0x87af, + 0x87c4, 0x87ca, 0x87b4, 0x87b6, 0x87bf, 0x87b8, 0x87bd, 0x87de, + 0x87b2, 0x8935, 0x8933, 0x893c, 0x893e, 0x8941, 0x8952, 0x8937, + 0x8942, 0x89ad, 0x89af, 0x89ae, 0x89f2, 0x89f3, 0x8b1e, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8b18, 0x8b16, 0x8b11, 0x8b05, 0x8b0b, 0x8b22, 0x8b0f, + 0x8b12, 0x8b15, 0x8b07, 0x8b0d, 0x8b08, 0x8b06, 0x8b1c, 0x8b13, + 0x8b1a, 0x8c4f, 0x8c70, 0x8c72, 0x8c71, 0x8c6f, 0x8c95, 0x8c94, + 0x8cf9, 0x8d6f, 0x8e4e, 0x8e4d, 0x8e53, 0x8e50, 0x8e4c, 0x8e47, + 0x8f43, 0x8f40, 0x9085, 0x907e, 0x9138, 0x919a, 0x91a2, 0x919b, + 0x9199, 0x919f, 0x91a1, 0x919d, 0x91a0, 0x93a1, 0x9383, 0x93af, + 0x9364, 0x9356, 0x9347, 0x937c, 0x9358, 0x935c, 0x9376, 0x9349, + 0x9350, 0x9351, 0x9360, 0x936d, 0x938f, 0x934c, 0x936a, 0x9379, + 0x9357, 0x9355, 0x9352, 0x934f, 0x9371, 0x9377, 0x937b, 0x9361, + 0x935e, 0x9363, 0x9367, 0x9380, 0x934e, 0x9359, 0x95c7, 0x95c0, + 0x95c9, 0x95c3, 0x95c5, 0x95b7, 0x96ae, 0x96b0, 0x96ac, 0x9720, + 0x971f, 0x9718, 0x971d, 0x9719, 0x979a, 0x97a1, 0x979c, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x979e, 0x979d, 0x97d5, 0x97d4, 0x97f1, 0x9841, 0x9844, 0x984a, + 0x9849, 0x9845, 0x9843, 0x9925, 0x992b, 0x992c, 0x992a, 0x9933, + 0x9932, 0x992f, 0x992d, 0x9931, 0x9930, 0x9998, 0x99a3, 0x99a1, + 0x9a02, 0x99fa, 0x99f4, 0x99f7, 0x99f9, 0x99f8, 0x99f6, 0x99fb, + 0x99fd, 0x99fe, 0x99fc, 0x9a03, 0x9abe, 0x9afe, 0x9afd, 0x9b01, + 0x9afc, 0x9b48, 0x9b9a, 0x9ba8, 0x9b9e, 0x9b9b, 0x9ba6, 0x9ba1, + 0x9ba5, 0x9ba4, 0x9b86, 0x9ba2, 0x9ba0, 0x9baf, 0x9d33, 0x9d41, + 0x9d67, 0x9d36, 0x9d2e, 0x9d2f, 0x9d31, 0x9d38, 0x9d30, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x9d45, 0x9d42, 0x9d43, 0x9d3e, 0x9d37, 0x9d40, 0x9d3d, + 0x7ff5, 0x9d2d, 0x9e8a, 0x9e89, 0x9e8d, 0x9eb0, 0x9ec8, 0x9eda, + 0x9efb, 0x9eff, 0x9f24, 0x9f23, 0x9f22, 0x9f54, 0x9fa0, 0x5131, + 0x512d, 0x512e, 0x5698, 0x569c, 0x5697, 0x569a, 0x569d, 0x5699, + 0x5970, 0x5b3c, 0x5c69, 0x5c6a, 0x5dc0, 0x5e6d, 0x5e6e, 0x61d8, + 0x61df, 0x61ed, 0x61ee, 0x61f1, 0x61ea, 0x61f0, 0x61eb, 0x61d6, + 0x61e9, 0x64ff, 0x6504, 0x64fd, 0x64f8, 0x6501, 0x6503, 0x64fc, + 0x6594, 0x65db, 0x66da, 0x66db, 0x66d8, 0x6ac5, 0x6ab9, 0x6abd, + 0x6ae1, 0x6ac6, 0x6aba, 0x6ab6, 0x6ab7, 0x6ac7, 0x6ab4, 0x6aad, + 0x6b5e, 0x6bc9, 0x6c0b, 0x7007, 0x700c, 0x700d, 0x7001, 0x7005, + 0x7014, 0x700e, 0x6fff, 0x7000, 0x6ffb, 0x7026, 0x6ffc, 0x6ff7, + 0x700a, 0x7201, 0x71ff, 0x71f9, 0x7203, 0x71fd, 0x7376, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x74b8, 0x74c0, 0x74b5, 0x74c1, 0x74be, 0x74b6, 0x74bb, 0x74c2, + 0x7514, 0x7513, 0x765c, 0x7664, 0x7659, 0x7650, 0x7653, 0x7657, + 0x765a, 0x76a6, 0x76bd, 0x76ec, 0x77c2, 0x77ba, 0x78ff, 0x790c, + 0x7913, 0x7914, 0x7909, 0x7910, 0x7912, 0x7911, 0x79ad, 0x79ac, + 0x7a5f, 0x7c1c, 0x7c29, 0x7c19, 0x7c20, 0x7c1f, 0x7c2d, 0x7c1d, + 0x7c26, 0x7c28, 0x7c22, 0x7c25, 0x7c30, 0x7e5c, 0x7e50, 0x7e56, + 0x7e63, 0x7e58, 0x7e62, 0x7e5f, 0x7e51, 0x7e60, 0x7e57, 0x7e53, + 0x7fb5, 0x7fb3, 0x7ff7, 0x7ff8, 0x8075, 0x81d1, 0x81d2, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x81d0, 0x825f, 0x825e, 0x85b4, 0x85c6, 0x85c0, 0x85c3, + 0x85c2, 0x85b3, 0x85b5, 0x85bd, 0x85c7, 0x85c4, 0x85bf, 0x85cb, + 0x85ce, 0x85c8, 0x85c5, 0x85b1, 0x85b6, 0x85d2, 0x8624, 0x85b8, + 0x85b7, 0x85be, 0x8669, 0x87e7, 0x87e6, 0x87e2, 0x87db, 0x87eb, + 0x87ea, 0x87e5, 0x87df, 0x87f3, 0x87e4, 0x87d4, 0x87dc, 0x87d3, + 0x87ed, 0x87d8, 0x87e3, 0x87a4, 0x87d7, 0x87d9, 0x8801, 0x87f4, + 0x87e8, 0x87dd, 0x8953, 0x894b, 0x894f, 0x894c, 0x8946, 0x8950, + 0x8951, 0x8949, 0x8b2a, 0x8b27, 0x8b23, 0x8b33, 0x8b30, 0x8b35, + 0x8b47, 0x8b2f, 0x8b3c, 0x8b3e, 0x8b31, 0x8b25, 0x8b37, 0x8b26, + 0x8b36, 0x8b2e, 0x8b24, 0x8b3b, 0x8b3d, 0x8b3a, 0x8c42, 0x8c75, + 0x8c99, 0x8c98, 0x8c97, 0x8cfe, 0x8d04, 0x8d02, 0x8d00, 0x8e5c, + 0x8e62, 0x8e60, 0x8e57, 0x8e56, 0x8e5e, 0x8e65, 0x8e67, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8e5b, 0x8e5a, 0x8e61, 0x8e5d, 0x8e69, 0x8e54, 0x8f46, 0x8f47, + 0x8f48, 0x8f4b, 0x9128, 0x913a, 0x913b, 0x913e, 0x91a8, 0x91a5, + 0x91a7, 0x91af, 0x91aa, 0x93b5, 0x938c, 0x9392, 0x93b7, 0x939b, + 0x939d, 0x9389, 0x93a7, 0x938e, 0x93aa, 0x939e, 0x93a6, 0x9395, + 0x9388, 0x9399, 0x939f, 0x938d, 0x93b1, 0x9391, 0x93b2, 0x93a4, + 0x93a8, 0x93b4, 0x93a3, 0x93a5, 0x95d2, 0x95d3, 0x95d1, 0x96b3, + 0x96d7, 0x96da, 0x5dc2, 0x96df, 0x96d8, 0x96dd, 0x9723, 0x9722, + 0x9725, 0x97ac, 0x97ae, 0x97a8, 0x97ab, 0x97a4, 0x97aa, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x97a2, 0x97a5, 0x97d7, 0x97d9, 0x97d6, 0x97d8, 0x97fa, + 0x9850, 0x9851, 0x9852, 0x98b8, 0x9941, 0x993c, 0x993a, 0x9a0f, + 0x9a0b, 0x9a09, 0x9a0d, 0x9a04, 0x9a11, 0x9a0a, 0x9a05, 0x9a07, + 0x9a06, 0x9ac0, 0x9adc, 0x9b08, 0x9b04, 0x9b05, 0x9b29, 0x9b35, + 0x9b4a, 0x9b4c, 0x9b4b, 0x9bc7, 0x9bc6, 0x9bc3, 0x9bbf, 0x9bc1, + 0x9bb5, 0x9bb8, 0x9bd3, 0x9bb6, 0x9bc4, 0x9bb9, 0x9bbd, 0x9d5c, + 0x9d53, 0x9d4f, 0x9d4a, 0x9d5b, 0x9d4b, 0x9d59, 0x9d56, 0x9d4c, + 0x9d57, 0x9d52, 0x9d54, 0x9d5f, 0x9d58, 0x9d5a, 0x9e8e, 0x9e8c, + 0x9edf, 0x9f01, 0x9f00, 0x9f16, 0x9f25, 0x9f2b, 0x9f2a, 0x9f29, + 0x9f28, 0x9f4c, 0x9f55, 0x5134, 0x5135, 0x5296, 0x52f7, 0x53b4, + 0x56ab, 0x56ad, 0x56a6, 0x56a7, 0x56aa, 0x56ac, 0x58da, 0x58dd, + 0x58db, 0x5912, 0x5b3d, 0x5b3e, 0x5b3f, 0x5dc3, 0x5e70, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5fbf, 0x61fb, 0x6507, 0x6510, 0x650d, 0x6509, 0x650c, 0x650e, + 0x6584, 0x65de, 0x65dd, 0x66de, 0x6ae7, 0x6ae0, 0x6acc, 0x6ad1, + 0x6ad9, 0x6acb, 0x6adf, 0x6adc, 0x6ad0, 0x6aeb, 0x6acf, 0x6acd, + 0x6ade, 0x6b60, 0x6bb0, 0x6c0c, 0x7019, 0x7027, 0x7020, 0x7016, + 0x702b, 0x7021, 0x7022, 0x7023, 0x7029, 0x7017, 0x7024, 0x701c, + 0x702a, 0x720c, 0x720a, 0x7207, 0x7202, 0x7205, 0x72a5, 0x72a6, + 0x72a4, 0x72a3, 0x72a1, 0x74cb, 0x74c5, 0x74b7, 0x74c3, 0x7516, + 0x7660, 0x77c9, 0x77ca, 0x77c4, 0x77f1, 0x791d, 0x791b, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7921, 0x791c, 0x7917, 0x791e, 0x79b0, 0x7a67, 0x7a68, + 0x7c33, 0x7c3c, 0x7c39, 0x7c2c, 0x7c3b, 0x7cec, 0x7cea, 0x7e76, + 0x7e75, 0x7e78, 0x7e70, 0x7e77, 0x7e6f, 0x7e7a, 0x7e72, 0x7e74, + 0x7e68, 0x7f4b, 0x7f4a, 0x7f83, 0x7f86, 0x7fb7, 0x7ffd, 0x7ffe, + 0x8078, 0x81d7, 0x81d5, 0x8264, 0x8261, 0x8263, 0x85eb, 0x85f1, + 0x85ed, 0x85d9, 0x85e1, 0x85e8, 0x85da, 0x85d7, 0x85ec, 0x85f2, + 0x85f8, 0x85d8, 0x85df, 0x85e3, 0x85dc, 0x85d1, 0x85f0, 0x85e6, + 0x85ef, 0x85de, 0x85e2, 0x8800, 0x87fa, 0x8803, 0x87f6, 0x87f7, + 0x8809, 0x880c, 0x880b, 0x8806, 0x87fc, 0x8808, 0x87ff, 0x880a, + 0x8802, 0x8962, 0x895a, 0x895b, 0x8957, 0x8961, 0x895c, 0x8958, + 0x895d, 0x8959, 0x8988, 0x89b7, 0x89b6, 0x89f6, 0x8b50, 0x8b48, + 0x8b4a, 0x8b40, 0x8b53, 0x8b56, 0x8b54, 0x8b4b, 0x8b55, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8b51, 0x8b42, 0x8b52, 0x8b57, 0x8c43, 0x8c77, 0x8c76, 0x8c9a, + 0x8d06, 0x8d07, 0x8d09, 0x8dac, 0x8daa, 0x8dad, 0x8dab, 0x8e6d, + 0x8e78, 0x8e73, 0x8e6a, 0x8e6f, 0x8e7b, 0x8ec2, 0x8f52, 0x8f51, + 0x8f4f, 0x8f50, 0x8f53, 0x8fb4, 0x9140, 0x913f, 0x91b0, 0x91ad, + 0x93de, 0x93c7, 0x93cf, 0x93c2, 0x93da, 0x93d0, 0x93f9, 0x93ec, + 0x93cc, 0x93d9, 0x93a9, 0x93e6, 0x93ca, 0x93d4, 0x93ee, 0x93e3, + 0x93d5, 0x93c4, 0x93ce, 0x93c0, 0x93d2, 0x93e7, 0x957d, 0x95da, + 0x95db, 0x96e1, 0x9729, 0x972b, 0x972c, 0x9728, 0x9726, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x97b3, 0x97b7, 0x97b6, 0x97dd, 0x97de, 0x97df, 0x985c, + 0x9859, 0x985d, 0x9857, 0x98bf, 0x98bd, 0x98bb, 0x98be, 0x9948, + 0x9947, 0x9943, 0x99a6, 0x99a7, 0x9a1a, 0x9a15, 0x9a25, 0x9a1d, + 0x9a24, 0x9a1b, 0x9a22, 0x9a20, 0x9a27, 0x9a23, 0x9a1e, 0x9a1c, + 0x9a14, 0x9ac2, 0x9b0b, 0x9b0a, 0x9b0e, 0x9b0c, 0x9b37, 0x9bea, + 0x9beb, 0x9be0, 0x9bde, 0x9be4, 0x9be6, 0x9be2, 0x9bf0, 0x9bd4, + 0x9bd7, 0x9bec, 0x9bdc, 0x9bd9, 0x9be5, 0x9bd5, 0x9be1, 0x9bda, + 0x9d77, 0x9d81, 0x9d8a, 0x9d84, 0x9d88, 0x9d71, 0x9d80, 0x9d78, + 0x9d86, 0x9d8b, 0x9d8c, 0x9d7d, 0x9d6b, 0x9d74, 0x9d75, 0x9d70, + 0x9d69, 0x9d85, 0x9d73, 0x9d7b, 0x9d82, 0x9d6f, 0x9d79, 0x9d7f, + 0x9d87, 0x9d68, 0x9e94, 0x9e91, 0x9ec0, 0x9efc, 0x9f2d, 0x9f40, + 0x9f41, 0x9f4d, 0x9f56, 0x9f57, 0x9f58, 0x5337, 0x56b2, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x56b5, 0x56b3, 0x58e3, 0x5b45, 0x5dc6, 0x5dc7, 0x5eee, 0x5eef, + 0x5fc0, 0x5fc1, 0x61f9, 0x6517, 0x6516, 0x6515, 0x6513, 0x65df, + 0x66e8, 0x66e3, 0x66e4, 0x6af3, 0x6af0, 0x6aea, 0x6ae8, 0x6af9, + 0x6af1, 0x6aee, 0x6aef, 0x703c, 0x7035, 0x702f, 0x7037, 0x7034, + 0x7031, 0x7042, 0x7038, 0x703f, 0x703a, 0x7039, 0x7040, 0x703b, + 0x7033, 0x7041, 0x7213, 0x7214, 0x72a8, 0x737d, 0x737c, 0x74ba, + 0x76ab, 0x76aa, 0x76be, 0x76ed, 0x77cc, 0x77ce, 0x77cf, 0x77cd, + 0x77f2, 0x7925, 0x7923, 0x7927, 0x7928, 0x7924, 0x7929, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x79b2, 0x7a6e, 0x7a6c, 0x7a6d, 0x7af7, 0x7c49, 0x7c48, + 0x7c4a, 0x7c47, 0x7c45, 0x7cee, 0x7e7b, 0x7e7e, 0x7e81, 0x7e80, + 0x7fba, 0x7fff, 0x8079, 0x81db, 0x81d9, 0x820b, 0x8268, 0x8269, + 0x8622, 0x85ff, 0x8601, 0x85fe, 0x861b, 0x8600, 0x85f6, 0x8604, + 0x8609, 0x8605, 0x860c, 0x85fd, 0x8819, 0x8810, 0x8811, 0x8817, + 0x8813, 0x8816, 0x8963, 0x8966, 0x89b9, 0x89f7, 0x8b60, 0x8b6a, + 0x8b5d, 0x8b68, 0x8b63, 0x8b65, 0x8b67, 0x8b6d, 0x8dae, 0x8e86, + 0x8e88, 0x8e84, 0x8f59, 0x8f56, 0x8f57, 0x8f55, 0x8f58, 0x8f5a, + 0x908d, 0x9143, 0x9141, 0x91b7, 0x91b5, 0x91b2, 0x91b3, 0x940b, + 0x9413, 0x93fb, 0x9420, 0x940f, 0x9414, 0x93fe, 0x9415, 0x9410, + 0x9428, 0x9419, 0x940d, 0x93f5, 0x9400, 0x93f7, 0x9407, 0x940e, + 0x9416, 0x9412, 0x93fa, 0x9409, 0x93f8, 0x940a, 0x93ff, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x93fc, 0x940c, 0x93f6, 0x9411, 0x9406, 0x95de, 0x95e0, 0x95df, + 0x972e, 0x972f, 0x97b9, 0x97bb, 0x97fd, 0x97fe, 0x9860, 0x9862, + 0x9863, 0x985f, 0x98c1, 0x98c2, 0x9950, 0x994e, 0x9959, 0x994c, + 0x994b, 0x9953, 0x9a32, 0x9a34, 0x9a31, 0x9a2c, 0x9a2a, 0x9a36, + 0x9a29, 0x9a2e, 0x9a38, 0x9a2d, 0x9ac7, 0x9aca, 0x9ac6, 0x9b10, + 0x9b12, 0x9b11, 0x9c0b, 0x9c08, 0x9bf7, 0x9c05, 0x9c12, 0x9bf8, + 0x9c40, 0x9c07, 0x9c0e, 0x9c06, 0x9c17, 0x9c14, 0x9c09, 0x9d9f, + 0x9d99, 0x9da4, 0x9d9d, 0x9d92, 0x9d98, 0x9d90, 0x9d9b, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x9da0, 0x9d94, 0x9d9c, 0x9daa, 0x9d97, 0x9da1, 0x9d9a, + 0x9da2, 0x9da8, 0x9d9e, 0x9da3, 0x9dbf, 0x9da9, 0x9d96, 0x9da6, + 0x9da7, 0x9e99, 0x9e9b, 0x9e9a, 0x9ee5, 0x9ee4, 0x9ee7, 0x9ee6, + 0x9f30, 0x9f2e, 0x9f5b, 0x9f60, 0x9f5e, 0x9f5d, 0x9f59, 0x9f91, + 0x513a, 0x5139, 0x5298, 0x5297, 0x56c3, 0x56bd, 0x56be, 0x5b48, + 0x5b47, 0x5dcb, 0x5dcf, 0x5ef1, 0x61fd, 0x651b, 0x6b02, 0x6afc, + 0x6b03, 0x6af8, 0x6b00, 0x7043, 0x7044, 0x704a, 0x7048, 0x7049, + 0x7045, 0x7046, 0x721d, 0x721a, 0x7219, 0x737e, 0x7517, 0x766a, + 0x77d0, 0x792d, 0x7931, 0x792f, 0x7c54, 0x7c53, 0x7cf2, 0x7e8a, + 0xeb45, 0x7e88, 0x7e8b, 0x7e86, 0x7e8d, 0x7f4d, 0x7fbb, 0x8030, + 0x81dd, 0x8618, 0x862a, 0x8626, 0x861f, 0x8623, 0x861c, 0x8619, + 0x8627, 0x862e, 0x8621, 0x8620, 0x8629, 0x861e, 0x8625, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8829, 0x881d, 0x881b, 0x8820, 0x8824, 0x881c, 0x882b, 0x884a, + 0x896d, 0x8969, 0x896e, 0x896b, 0x89fa, 0x8b79, 0x8b78, 0x8b45, + 0x8b7a, 0x8b7b, 0x8d10, 0x8d14, 0x8daf, 0x8e8e, 0x8e8c, 0x8f5e, + 0x8f5b, 0x8f5d, 0x9146, 0x9144, 0x9145, 0x91b9, 0x943f, 0x943b, + 0x9436, 0x9429, 0x943d, 0x943c, 0x9430, 0x9439, 0x942a, 0x9437, + 0x942c, 0x9440, 0x9431, 0x95e5, 0x95e4, 0x95e3, 0x9735, 0x973a, + 0x97bf, 0x97e1, 0x9864, 0x98c9, 0x98c6, 0x98c0, 0x9958, 0x9956, + 0x9a39, 0x9a3d, 0x9a46, 0x9a44, 0x9a42, 0x9a41, 0x9a3a, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x9a3f, 0x9acd, 0x9b15, 0x9b17, 0x9b18, 0x9b16, 0x9b3a, + 0x9b52, 0x9c2b, 0x9c1d, 0x9c1c, 0x9c2c, 0x9c23, 0x9c28, 0x9c29, + 0x9c24, 0x9c21, 0x9db7, 0x9db6, 0x9dbc, 0x9dc1, 0x9dc7, 0x9dca, + 0x9dcf, 0x9dbe, 0x9dc5, 0x9dc3, 0x9dbb, 0x9db5, 0x9dce, 0x9db9, + 0x9dba, 0x9dac, 0x9dc8, 0x9db1, 0x9dad, 0x9dcc, 0x9db3, 0x9dcd, + 0x9db2, 0x9e7a, 0x9e9c, 0x9eeb, 0x9eee, 0x9eed, 0x9f1b, 0x9f18, + 0x9f1a, 0x9f31, 0x9f4e, 0x9f65, 0x9f64, 0x9f92, 0x4eb9, 0x56c6, + 0x56c5, 0x56cb, 0x5971, 0x5b4b, 0x5b4c, 0x5dd5, 0x5dd1, 0x5ef2, + 0x6521, 0x6520, 0x6526, 0x6522, 0x6b0b, 0x6b08, 0x6b09, 0x6c0d, + 0x7055, 0x7056, 0x7057, 0x7052, 0x721e, 0x721f, 0x72a9, 0x737f, + 0x74d8, 0x74d5, 0x74d9, 0x74d7, 0x766d, 0x76ad, 0x7935, 0x79b4, + 0x7a70, 0x7a71, 0x7c57, 0x7c5c, 0x7c59, 0x7c5b, 0x7c5a, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x7cf4, 0x7cf1, 0x7e91, 0x7f4f, 0x7f87, 0x81de, 0x826b, 0x8634, + 0x8635, 0x8633, 0x862c, 0x8632, 0x8636, 0x882c, 0x8828, 0x8826, + 0x882a, 0x8825, 0x8971, 0x89bf, 0x89be, 0x89fb, 0x8b7e, 0x8b84, + 0x8b82, 0x8b86, 0x8b85, 0x8b7f, 0x8d15, 0x8e95, 0x8e94, 0x8e9a, + 0x8e92, 0x8e90, 0x8e96, 0x8e97, 0x8f60, 0x8f62, 0x9147, 0x944c, + 0x9450, 0x944a, 0x944b, 0x944f, 0x9447, 0x9445, 0x9448, 0x9449, + 0x9446, 0x973f, 0x97e3, 0x986a, 0x9869, 0x98cb, 0x9954, 0x995b, + 0x9a4e, 0x9a53, 0x9a54, 0x9a4c, 0x9a4f, 0x9a48, 0x9a4a, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x9a49, 0x9a52, 0x9a50, 0x9ad0, 0x9b19, 0x9b2b, 0x9b3b, + 0x9b56, 0x9b55, 0x9c46, 0x9c48, 0x9c3f, 0x9c44, 0x9c39, 0x9c33, + 0x9c41, 0x9c3c, 0x9c37, 0x9c34, 0x9c32, 0x9c3d, 0x9c36, 0x9ddb, + 0x9dd2, 0x9dde, 0x9dda, 0x9dcb, 0x9dd0, 0x9ddc, 0x9dd1, 0x9ddf, + 0x9de9, 0x9dd9, 0x9dd8, 0x9dd6, 0x9df5, 0x9dd5, 0x9ddd, 0x9eb6, + 0x9ef0, 0x9f35, 0x9f33, 0x9f32, 0x9f42, 0x9f6b, 0x9f95, 0x9fa2, + 0x513d, 0x5299, 0x58e8, 0x58e7, 0x5972, 0x5b4d, 0x5dd8, 0x882f, + 0x5f4f, 0x6201, 0x6203, 0x6204, 0x6529, 0x6525, 0x6596, 0x66eb, + 0x6b11, 0x6b12, 0x6b0f, 0x6bca, 0x705b, 0x705a, 0x7222, 0x7382, + 0x7381, 0x7383, 0x7670, 0x77d4, 0x7c67, 0x7c66, 0x7e95, 0x826c, + 0x863a, 0x8640, 0x8639, 0x863c, 0x8631, 0x863b, 0x863e, 0x8830, + 0x8832, 0x882e, 0x8833, 0x8976, 0x8974, 0x8973, 0x89fe, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8b8c, 0x8b8e, 0x8b8b, 0x8b88, 0x8c45, 0x8d19, 0x8e98, 0x8f64, + 0x8f63, 0x91bc, 0x9462, 0x9455, 0x945d, 0x9457, 0x945e, 0x97c4, + 0x97c5, 0x9800, 0x9a56, 0x9a59, 0x9b1e, 0x9b1f, 0x9b20, 0x9c52, + 0x9c58, 0x9c50, 0x9c4a, 0x9c4d, 0x9c4b, 0x9c55, 0x9c59, 0x9c4c, + 0x9c4e, 0x9dfb, 0x9df7, 0x9def, 0x9de3, 0x9deb, 0x9df8, 0x9de4, + 0x9df6, 0x9de1, 0x9dee, 0x9de6, 0x9df2, 0x9df0, 0x9de2, 0x9dec, + 0x9df4, 0x9df3, 0x9de8, 0x9ded, 0x9ec2, 0x9ed0, 0x9ef2, 0x9ef3, + 0x9f06, 0x9f1c, 0x9f38, 0x9f37, 0x9f36, 0x9f43, 0x9f4f, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x9f71, 0x9f70, 0x9f6e, 0x9f6f, 0x56d3, 0x56cd, 0x5b4e, + 0x5c6d, 0x652d, 0x66ed, 0x66ee, 0x6b13, 0x705f, 0x7061, 0x705d, + 0x7060, 0x7223, 0x74db, 0x74e5, 0x77d5, 0x7938, 0x79b7, 0x79b6, + 0x7c6a, 0x7e97, 0x7f89, 0x826d, 0x8643, 0x8838, 0x8837, 0x8835, + 0x884b, 0x8b94, 0x8b95, 0x8e9e, 0x8e9f, 0x8ea0, 0x8e9d, 0x91be, + 0x91bd, 0x91c2, 0x946b, 0x9468, 0x9469, 0x96e5, 0x9746, 0x9743, + 0x9747, 0x97c7, 0x97e5, 0x9a5e, 0x9ad5, 0x9b59, 0x9c63, 0x9c67, + 0x9c66, 0x9c62, 0x9c5e, 0x9c60, 0x9e02, 0x9dfe, 0x9e07, 0x9e03, + 0x9e06, 0x9e05, 0x9e00, 0x9e01, 0x9e09, 0x9dff, 0x9dfd, 0x9e04, + 0x9ea0, 0x9f1e, 0x9f46, 0x9f74, 0x9f75, 0x9f76, 0x56d4, 0x652e, + 0x65b8, 0x6b18, 0x6b19, 0x6b17, 0x6b1a, 0x7062, 0x7226, 0x72aa, + 0x77d8, 0x77d9, 0x7939, 0x7c69, 0x7c6b, 0x7cf6, 0x7e9a, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x7e98, 0x7e9b, 0x7e99, 0x81e0, 0x81e1, 0x8646, 0x8647, 0x8648, + 0x8979, 0x897a, 0x897c, 0x897b, 0x89ff, 0x8b98, 0x8b99, 0x8ea5, + 0x8ea4, 0x8ea3, 0x946e, 0x946d, 0x946f, 0x9471, 0x9473, 0x9749, + 0x9872, 0x995f, 0x9c68, 0x9c6e, 0x9c6d, 0x9e0b, 0x9e0d, 0x9e10, + 0x9e0f, 0x9e12, 0x9e11, 0x9ea1, 0x9ef5, 0x9f09, 0x9f47, 0x9f78, + 0x9f7b, 0x9f7a, 0x9f79, 0x571e, 0x7066, 0x7c6f, 0x883c, 0x8db2, + 0x8ea6, 0x91c3, 0x9474, 0x9478, 0x9476, 0x9475, 0x9a60, 0x9c74, + 0x9c73, 0x9c71, 0x9c75, 0x9e14, 0x9e13, 0x9ef6, 0x9f0a, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x9fa4, 0x7068, 0x7065, 0x7cf7, 0x866a, 0x883e, 0x883d, + 0x883f, 0x8b9e, 0x8c9c, 0x8ea9, 0x8ec9, 0x974b, 0x9873, 0x9874, + 0x98cc, 0x9961, 0x99ab, 0x9a64, 0x9a66, 0x9a67, 0x9b24, 0x9e15, + 0x9e17, 0x9f48, 0x6207, 0x6b1e, 0x7227, 0x864c, 0x8ea8, 0x9482, + 0x9480, 0x9481, 0x9a69, 0x9a68, 0x9b2e, 0x9e19, 0x7229, 0x864b, + 0x8b9f, 0x9483, 0x9c79, 0x9eb7, 0x7675, 0x9a6b, 0x9c7a, 0x9e1d, + 0x7069, 0x706a, 0x9ea4, 0x9f7e, 0x9f49, 0x9f98, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xfe4f, 0xffffffff, 0x00ff, 0x0000, 0x0100, 0x0002, 0x6000, 0x804f240 +}; + +static const unsigned short big5_from_unicode_0[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xa246, 0xa247, 0x0000, 0xa244, 0x0000, 0xa1b1, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa1c2, + 0xa258, 0xa1d3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa150, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa1d1, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa1d2, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5_from_unicode_2[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa3be, + 0x0000, 0x0000, 0xa3bd, 0xa3bf, 0x0000, 0xa1c5, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xa3bb, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5_from_unicode_3[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xa344, 0xa345, 0xa346, 0xa347, 0xa348, 0xa349, 0xa34a, + 0xa34b, 0xa34c, 0xa34d, 0xa34e, 0xa34f, 0xa350, 0xa351, 0xa352, + 0xa353, 0xa354, 0x0000, 0xa355, 0xa356, 0xa357, 0xa358, 0xa359, + 0xa35a, 0xa35b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xa35c, 0xa35d, 0xa35e, 0xa35f, 0xa360, 0xa361, 0xa362, + 0xa363, 0xa364, 0xa365, 0xa366, 0xa367, 0xa368, 0xa369, 0xa36a, + 0xa36b, 0xa36c, 0x0000, 0xa36d, 0xa36e, 0xa36f, 0xa370, 0xa371, + 0xa372, 0xa373, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5_from_unicode_20[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xa156, 0xa158, 0x0000, 0x0000, 0x0000, + 0xa1a5, 0xa1a6, 0x0000, 0x0000, 0xa1a7, 0xa1a8, 0x0000, 0x0000, + 0x0000, 0x0000, 0xa145, 0x0000, 0x0000, 0xa14c, 0xa14b, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xa1ac, 0x0000, 0x0000, 0xa1ab, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xa1b0, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5_from_unicode_21[] = { + 0x0000, 0x0000, 0x0000, 0xa24a, 0x0000, 0xa1c1, 0x0000, 0x0000, + 0x0000, 0xa24b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xa2b9, 0xa2ba, 0xa2bb, 0xa2bc, 0xa2bd, 0xa2be, 0xa2bf, 0xa2c0, + 0xa2c1, 0xa2c2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xa1f6, 0xa1f4, 0xa1f7, 0xa1f5, 0x0000, 0x0000, 0xa1f8, 0xa1f9, + 0xa1fb, 0xa1fa, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5_from_unicode_22[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa241, 0x0000, 0x0000, + 0x0000, 0x0000, 0xa1d4, 0x0000, 0x0000, 0x0000, 0xa1db, 0xa1e8, + 0xa1e7, 0x0000, 0x0000, 0xa1fd, 0x0000, 0xa1fc, 0x0000, 0x0000, + 0x0000, 0xa1e4, 0xa1e5, 0xa1ec, 0x0000, 0x0000, 0xa1ed, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xa1ef, 0xa1ee, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xa1e3, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xa1dc, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xa1da, 0xa1dd, 0x0000, 0x0000, 0x0000, 0x0000, 0xa1d8, 0xa1d9, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa1f2, 0x0000, 0x0000, + 0x0000, 0xa1f3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa1e6, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa1e9, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5_from_unicode_24[] = { + 0xa3c0, 0xa3c1, 0xa3c2, 0xa3c3, 0xa3c4, 0xa3c5, 0xa3c6, 0xa3c7, + 0xa3c8, 0xa3c9, 0xa3ca, 0xa3cb, 0xa3cc, 0xa3cd, 0xa3ce, 0xa3cf, + 0xa3d0, 0xa3d1, 0xa3d2, 0xa3d3, 0xa3d4, 0xa3d5, 0xa3d6, 0xa3d7, + 0xa3d8, 0xa3d9, 0xa3da, 0xa3db, 0xa3dc, 0xa3dd, 0xa3de, 0xa3df, + 0x0000, 0xa3e0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5_from_unicode_25[] = { + 0xa277, 0x0000, 0xa278, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xa27a, 0x0000, 0x0000, 0x0000, + 0xa27b, 0x0000, 0x0000, 0x0000, 0xa27c, 0x0000, 0x0000, 0x0000, + 0xa27d, 0x0000, 0x0000, 0x0000, 0xa275, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xa274, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xa273, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xa272, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xa271, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xa2a4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa2a5, 0x0000, + 0x0000, 0xa2a7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xa2a6, 0x0000, 0x0000, 0xa27e, 0xa2a1, 0xa2a3, + 0xa2a2, 0xa2ac, 0xa2ad, 0xa2ae, 0xa15a, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xa262, 0xa263, 0xa264, 0xa265, 0xa266, 0xa267, 0xa268, + 0xa269, 0xa270, 0xa26f, 0xa26e, 0xa26d, 0xa26c, 0xa26b, 0xa26a, + 0x0000, 0x0000, 0x0000, 0x0000, 0xa276, 0xa279, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xa1bd, 0xa1bc, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xa1b6, 0xa1b5, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xa1bf, 0xa1be, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa1bb, 0xa1ba, + 0x0000, 0x0000, 0x0000, 0xa1b3, 0x0000, 0x0000, 0xa1b7, 0xa1b4, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xa2a8, 0xa2a9, 0xa2ab, 0xa2aa, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5_from_unicode_26[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa1b9, 0xa1b8, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xa1f0, 0x0000, 0xa1f1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5_from_unicode_30[] = { + 0xa140, 0xa142, 0xa143, 0xa1b2, 0x0000, 0x0000, 0x0000, 0x0000, + 0xa171, 0xa172, 0xa16d, 0xa16e, 0xa175, 0xa176, 0xa179, 0xa17a, + 0xa169, 0xa16a, 0xa245, 0x0000, 0xa165, 0xa166, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa1a9, 0xa1aa, 0x0000, + 0x0000, 0xa2c3, 0xa2c4, 0xa2c5, 0xa2c6, 0xa2c7, 0xa2c8, 0xa2c9, + 0xa2ca, 0xa2cb, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xa2cc, 0x0000, 0xa2ce, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5_from_unicode_31[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa374, 0xa375, 0xa376, + 0xa377, 0xa378, 0xa379, 0xa37a, 0xa37b, 0xa37c, 0xa37d, 0xa37e, + 0xa3a1, 0xa3a2, 0xa3a3, 0xa3a4, 0xa3a5, 0xa3a6, 0xa3a7, 0xa3a8, + 0xa3a9, 0xa3aa, 0xa3ab, 0xa3ac, 0xa3ad, 0xa3ae, 0xa3af, 0xa3b0, + 0xa3b1, 0xa3b2, 0xa3b3, 0xa3b4, 0xa3b5, 0xa3b6, 0xa3b7, 0xa3b8, + 0xa3b9, 0xa3ba, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5_from_unicode_32[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xa1c0, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5_from_unicode_33[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa255, 0xa256, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xa250, 0xa251, 0xa252, 0x0000, + 0x0000, 0xa254, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xa257, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa253, 0x0000, + 0x0000, 0xa1eb, 0xa1ea, 0x0000, 0x0000, 0xa24f, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5_from_unicode_4e[] = { + 0xa440, 0xa442, 0x0000, 0xa443, 0x0000, 0x0000, 0x0000, 0xc945, + 0xa456, 0xa454, 0xa457, 0xa455, 0xc946, 0xa4a3, 0xc94f, 0xc94d, + 0xa4a2, 0xa4a1, 0x0000, 0x0000, 0xa542, 0xa541, 0xa540, 0x0000, + 0xa543, 0xa4fe, 0x0000, 0x0000, 0x0000, 0x0000, 0xa5e0, 0xa5e1, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa8c3, 0x0000, + 0x0000, 0x0000, 0x0000, 0xa458, 0x0000, 0xa4a4, 0xc950, 0x0000, + 0xa4a5, 0xc963, 0xa6ea, 0xcbb1, 0x0000, 0x0000, 0x0000, 0x0000, + 0xa459, 0xa4a6, 0x0000, 0xa544, 0xc964, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xc940, 0xa444, 0x0000, 0xa45b, 0x0000, 0xc947, + 0xa45c, 0x0000, 0x0000, 0xa4a7, 0x0000, 0xa545, 0xa547, 0xa546, + 0x0000, 0x0000, 0xa5e2, 0xa5e3, 0x0000, 0x0000, 0xa8c4, 0x0000, + 0xadbc, 0xa441, 0x0000, 0x0000, 0xc941, 0xa445, 0xa45e, 0xa45d, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xa5e4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xa8c5, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xb0ae, 0xd44b, + 0x0000, 0x0000, 0xb6c3, 0xdcb1, 0xdcb2, 0x0000, 0xa446, 0x0000, + 0xa4a9, 0x0000, 0x0000, 0xa8c6, 0xa447, 0xc948, 0xa45f, 0x0000, + 0x0000, 0xa4aa, 0xa4ac, 0xc951, 0xa4ad, 0xa4ab, 0x0000, 0x0000, + 0x0000, 0xa5e5, 0x0000, 0xa8c7, 0x0000, 0x0000, 0xa8c8, 0xab45, + 0x0000, 0xa460, 0xa4ae, 0x0000, 0xa5e6, 0xa5e8, 0xa5e7, 0x0000, + 0xa6eb, 0x0000, 0x0000, 0xa8c9, 0xa8ca, 0xab46, 0xab47, 0x0000, + 0x0000, 0x0000, 0x0000, 0xadbd, 0x0000, 0x0000, 0xdcb3, 0x0000, + 0x0000, 0xf6d6, 0xa448, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xa4b0, 0xa4af, 0xc952, 0xa4b1, 0xa4b7, 0x0000, 0xa4b2, 0xa4b3, + 0xc954, 0xc953, 0xa4b5, 0xa4b6, 0x0000, 0xa4b4, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xa54a, 0xa54b, 0xa54c, 0xa54d, + 0xa549, 0xa550, 0xc96a, 0x0000, 0xc966, 0xc969, 0xa551, 0xa561, + 0x0000, 0xc968, 0x0000, 0xa54e, 0xa54f, 0xa548, 0x0000, 0x0000, + 0xc965, 0xc967, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xa5f5, 0xc9b0, 0xa5f2, 0xa5f6, 0xc9ba, 0xc9ae, 0xa5f3, 0xc9b2, + 0x0000, 0x0000, 0x0000, 0xa5f4, 0x0000, 0xa5f7, 0x0000, 0xa5e9 +}; + +static const unsigned short big5_from_unicode_4f[] = { + 0xc9b1, 0xa5f8, 0xc9b5, 0x0000, 0xc9b9, 0xc9b6, 0x0000, 0x0000, + 0xc9b3, 0xa5ea, 0xa5ec, 0xa5f9, 0x0000, 0xa5ee, 0xc9ab, 0xa5f1, + 0xa5ef, 0xa5f0, 0xc9bb, 0xc9b8, 0xc9af, 0xa5ed, 0x0000, 0x0000, + 0xc9ac, 0xa5eb, 0x0000, 0x0000, 0x0000, 0xc9b4, 0x0000, 0x0000, + 0x0000, 0x0000, 0xc9b7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xc9ad, 0xca66, 0x0000, 0xa742, + 0xa6f4, 0x0000, 0x0000, 0xca67, 0xa6f1, 0x0000, 0xa744, 0x0000, + 0xa6f9, 0x0000, 0xa6f8, 0xca5b, 0xa6fc, 0xa6f7, 0xca60, 0xca68, + 0x0000, 0xca64, 0x0000, 0xa6fa, 0x0000, 0x0000, 0xa6fd, 0xa6ee, + 0xa747, 0xca5d, 0x0000, 0x0000, 0xcbbd, 0xa6ec, 0xa743, 0xa6ed, + 0xa6f5, 0xa6f6, 0xca62, 0xca5e, 0xa6fb, 0xa6f3, 0xca5a, 0xa6ef, + 0xca65, 0xa745, 0xa748, 0xa6f2, 0xa740, 0xa746, 0xa6f0, 0xca63, + 0xa741, 0xca69, 0xca5c, 0xa6fe, 0xca5f, 0x0000, 0x0000, 0xca61, + 0x0000, 0xa8d8, 0xcbbf, 0xcbcb, 0xa8d0, 0x0000, 0xcbcc, 0xa8cb, + 0xa8d5, 0x0000, 0x0000, 0xa8ce, 0xcbb9, 0xa8d6, 0xcbb8, 0xcbbc, + 0xcbc3, 0xcbc1, 0xa8de, 0xa8d9, 0xcbb3, 0xcbb5, 0xa8db, 0xa8cf, + 0xcbb6, 0xcbc2, 0xcbc9, 0xa8d4, 0xcbbb, 0xcbb4, 0xa8d3, 0xcbb7, + 0xa8d7, 0xcbba, 0x0000, 0xa8d2, 0x0000, 0xa8cd, 0x0000, 0xa8dc, + 0xcbc4, 0xa8dd, 0xcbc8, 0x0000, 0xcbc6, 0xcbca, 0xa8da, 0xcbbe, + 0xcbb2, 0x0000, 0xcbc0, 0xa8d1, 0xcbc5, 0xa8cc, 0xcbc7, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xab56, 0xab4a, + 0x0000, 0x0000, 0xcde0, 0xcde8, 0x0000, 0xab49, 0xab51, 0xab5d, + 0x0000, 0xcdee, 0xcdec, 0xcde7, 0x0000, 0x0000, 0x0000, 0xab4b, + 0xcded, 0xcde3, 0xab59, 0xab50, 0xab58, 0xcdde, 0x0000, 0xcdea, + 0x0000, 0xcde1, 0xab54, 0xcde2, 0x0000, 0xcddd, 0xab5b, 0xab4e, + 0xab57, 0xab4d, 0x0000, 0xcddf, 0xcde4, 0x0000, 0xcdeb, 0xab55, + 0xab52, 0xcde6, 0xab5a, 0xcde9, 0xcde5, 0xab4f, 0xab5c, 0xab53, + 0xab4c, 0xab48, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xcdef, 0x0000, 0xadd7, 0xadc1, + 0x0000, 0xadd1, 0x0000, 0xadd6, 0xd0d0, 0xd0cf, 0xd0d4, 0xd0d5, + 0xadc4, 0x0000, 0xadcd, 0x0000, 0x0000, 0x0000, 0xadda, 0x0000 +}; + +static const unsigned short big5_from_unicode_50[] = { + 0xadce, 0x0000, 0x0000, 0x0000, 0x0000, 0xd0c9, 0xadc7, 0xd0ca, + 0x0000, 0xaddc, 0x0000, 0xadd3, 0xadbe, 0xadbf, 0xd0dd, 0xb0bf, + 0x0000, 0xadcc, 0xadcb, 0xd0cb, 0xadcf, 0xd45b, 0xadc6, 0xd0d6, + 0xadd5, 0xadd4, 0xadca, 0xd0ce, 0xd0d7, 0x0000, 0xd0c8, 0xadc9, + 0xd0d8, 0xadd2, 0xd0cc, 0xadc0, 0x0000, 0xadc3, 0xadc2, 0xd0d9, + 0xadd0, 0xadc5, 0xadd9, 0xaddb, 0xd0d3, 0xadd8, 0x0000, 0xd0db, + 0xd0cd, 0xd0dc, 0x0000, 0xd0d1, 0x0000, 0xd0da, 0x0000, 0xd0d2, + 0x0000, 0x0000, 0x0000, 0x0000, 0xadc8, 0x0000, 0x0000, 0x0000, + 0xd463, 0xd457, 0x0000, 0xb0b3, 0x0000, 0xd45c, 0xd462, 0xb0b2, + 0xd455, 0xb0b6, 0xd459, 0xd452, 0xb0b4, 0xd456, 0xb0b9, 0xb0be, + 0x0000, 0xd467, 0x0000, 0xd451, 0x0000, 0xb0ba, 0x0000, 0xd466, + 0x0000, 0x0000, 0xb0b5, 0xd458, 0xb0b1, 0xd453, 0xd44f, 0xd45d, + 0xd450, 0xd44e, 0xd45a, 0xd460, 0xd461, 0xb0b7, 0x0000, 0x0000, + 0xd85b, 0xd45e, 0xd44d, 0xd45f, 0x0000, 0xb0c1, 0xd464, 0xb0c0, + 0xd44c, 0x0000, 0xd454, 0xd465, 0xb0bc, 0xb0bb, 0xb0b8, 0xb0bd, + 0x0000, 0x0000, 0xb0af, 0x0000, 0x0000, 0xb0b0, 0x0000, 0x0000, + 0xb3c8, 0x0000, 0xd85e, 0xd857, 0x0000, 0xb3c5, 0x0000, 0xd85f, + 0x0000, 0x0000, 0x0000, 0xd855, 0xd858, 0xb3c4, 0xd859, 0x0000, + 0x0000, 0xb3c7, 0xd85d, 0x0000, 0xd853, 0xd852, 0xb3c9, 0x0000, + 0xb3ca, 0xb3c6, 0xb3cb, 0xd851, 0xd85c, 0xd85a, 0xd854, 0x0000, + 0x0000, 0x0000, 0xb3c3, 0xd856, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xb6ca, 0xb6c4, 0xdcb7, 0xb6cd, + 0xdcbd, 0xdcc0, 0xb6c6, 0xb6c7, 0xdcba, 0xb6c5, 0xdcc3, 0xb6cb, + 0xdcc4, 0x0000, 0xdcbf, 0xb6cc, 0x0000, 0xdcb4, 0xb6c9, 0xdcb5, + 0x0000, 0xdcbe, 0xdcbc, 0x0000, 0xdcb8, 0xb6c8, 0xdcb6, 0xb6ce, + 0xdcbb, 0xdcc2, 0xdcb9, 0xdcc1, 0x0000, 0x0000, 0xb9b6, 0xb9b3, + 0x0000, 0xb9b4, 0x0000, 0xe0f9, 0xe0f1, 0xb9b2, 0xb9af, 0xe0f2, + 0x0000, 0x0000, 0xb9b1, 0xe0f5, 0x0000, 0xe0f7, 0x0000, 0x0000, + 0xe0fe, 0x0000, 0x0000, 0xe0fd, 0xe0f8, 0xb9ae, 0xe0f0, 0xb9ac, + 0xe0f3, 0xb9b7, 0xe0f6, 0x0000, 0xe0fa, 0xb9b0, 0xb9ad, 0xe0fc, + 0xe0fb, 0xb9b5, 0x0000, 0xe0f4, 0x0000, 0xbbf8, 0xe4ec, 0x0000, + 0xe4e9, 0xbbf9, 0x0000, 0xbbf7, 0x0000, 0xe4f0, 0xe4ed, 0xe4e6 +}; + +static const unsigned short big5_from_unicode_51[] = { + 0xbbf6, 0x0000, 0xbbfa, 0xe4e7, 0xbbf5, 0xbbfd, 0xe4ea, 0xe4eb, + 0xbbfb, 0xbbfc, 0xe4f1, 0xe4ee, 0xe4ef, 0x0000, 0x0000, 0x0000, + 0xbeaa, 0xe8f8, 0xbea7, 0xe8f5, 0xbea9, 0xbeab, 0x0000, 0xe8f6, + 0xbea8, 0x0000, 0xe8f7, 0x0000, 0xe8f4, 0x0000, 0x0000, 0xc076, + 0xecbd, 0xc077, 0xecbb, 0x0000, 0xecbc, 0xecba, 0xecb9, 0x0000, + 0x0000, 0xecbe, 0xc075, 0x0000, 0x0000, 0xefb8, 0xefb9, 0x0000, + 0xe4e8, 0xefb7, 0xc078, 0xc35f, 0xf1eb, 0xf1ec, 0x0000, 0xc4d7, + 0xc4d8, 0xf5c1, 0xf5c0, 0xc56c, 0xc56b, 0xf7d0, 0x0000, 0xa449, + 0xa461, 0xa4b9, 0x0000, 0xa4b8, 0xa553, 0xa552, 0xa5fc, 0xa5fb, + 0xa5fd, 0xa5fa, 0x0000, 0xa74a, 0xa749, 0xa74b, 0x0000, 0x0000, + 0x0000, 0x0000, 0xa8e0, 0x0000, 0xa8df, 0xa8e1, 0x0000, 0xab5e, + 0x0000, 0xa259, 0xd0de, 0xa25a, 0xb0c2, 0xa25c, 0xa25b, 0xd860, + 0x0000, 0xa25d, 0xb9b8, 0xa25e, 0x0000, 0xa44a, 0x0000, 0xa4ba, + 0xa5fe, 0xa8e2, 0x0000, 0xa44b, 0xa4bd, 0xa4bb, 0xa4bc, 0x0000, + 0x0000, 0xa640, 0x0000, 0x0000, 0x0000, 0xa74c, 0xa8e4, 0xa8e3, + 0xa8e5, 0x0000, 0x0000, 0x0000, 0xaddd, 0x0000, 0x0000, 0x0000, + 0xbeac, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xc94e, + 0x0000, 0xa554, 0xa555, 0x0000, 0x0000, 0xa641, 0x0000, 0xca6a, + 0x0000, 0xab60, 0xab5f, 0xd0e0, 0xd0df, 0xb0c3, 0x0000, 0xa4be, + 0xc955, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xcbcd, 0x0000, + 0xab61, 0x0000, 0xade0, 0x0000, 0xadde, 0xaddf, 0x0000, 0x0000, + 0x0000, 0x0000, 0xbead, 0x0000, 0xa556, 0x0000, 0x0000, 0x0000, + 0xa642, 0xc9bc, 0x0000, 0x0000, 0x0000, 0x0000, 0xa74d, 0xa74e, + 0x0000, 0xca6b, 0x0000, 0x0000, 0xcbce, 0xa8e6, 0xcbcf, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xd0e2, 0xd0e3, 0xade3, 0x0000, + 0xd0e4, 0x0000, 0xd0e1, 0xade4, 0xade2, 0xade1, 0xd0e5, 0x0000, + 0xd468, 0x0000, 0x0000, 0x0000, 0xd861, 0x0000, 0x0000, 0xdcc5, + 0xe140, 0x0000, 0x0000, 0x0000, 0xbbfe, 0xbeae, 0xe8f9, 0x0000, + 0xa44c, 0xa45a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xb0c4, 0xb3cd, 0x0000, 0xb9b9, 0x0000, 0xc942, 0xa4bf, 0x0000, + 0xa559, 0xa557, 0xa558, 0x0000, 0x0000, 0xa8e7, 0x0000, 0x0000 +}; + +static const unsigned short big5_from_unicode_52[] = { + 0xa44d, 0xa44e, 0x0000, 0xa462, 0x0000, 0x0000, 0xa4c0, 0xa4c1, + 0xa4c2, 0xc9be, 0xa55a, 0x0000, 0xc96b, 0x0000, 0xa646, 0x0000, + 0xc9bf, 0xa644, 0xa645, 0xc9bd, 0x0000, 0x0000, 0xa647, 0xa643, + 0x0000, 0x0000, 0x0000, 0x0000, 0xca6c, 0xaaec, 0xca6d, 0x0000, + 0x0000, 0xca6e, 0x0000, 0x0000, 0xa750, 0xa74f, 0x0000, 0x0000, + 0xa753, 0xa751, 0xa752, 0x0000, 0x0000, 0x0000, 0xa8ed, 0x0000, + 0xa8ec, 0xcbd4, 0xcbd1, 0xcbd2, 0x0000, 0xcbd0, 0xa8ee, 0xa8ea, + 0xa8e9, 0x0000, 0xa8eb, 0xa8e8, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xa8ef, 0x0000, 0xab63, 0xcdf0, 0x0000, 0xcbd3, 0xab68, + 0x0000, 0xcdf1, 0xab64, 0xab67, 0xab66, 0xab65, 0xab62, 0x0000, + 0x0000, 0x0000, 0xd0e8, 0x0000, 0xade7, 0xd0eb, 0xade5, 0x0000, + 0x0000, 0x0000, 0xd0e7, 0xade8, 0xade6, 0xade9, 0xd0e9, 0xd0ea, + 0x0000, 0xd0e6, 0xd0ec, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xb3d1, 0xb0c5, 0xd469, 0xd46b, 0xd46a, 0xd46c, 0xb0c6, + 0x0000, 0x0000, 0xb3ce, 0x0000, 0xb3cf, 0xb3d0, 0x0000, 0xb6d0, + 0xdcc7, 0x0000, 0xdcc6, 0xdcc8, 0xdcc9, 0xb6d1, 0x0000, 0xb6cf, + 0xe141, 0xe142, 0xb9bb, 0xb9ba, 0xe35a, 0x0000, 0x0000, 0xbc40, + 0xbc41, 0xbc42, 0xbc44, 0xe4f2, 0xe4f3, 0xbc43, 0x0000, 0x0000, + 0x0000, 0xbeaf, 0x0000, 0xbeb0, 0x0000, 0x0000, 0xf1ed, 0xf5c3, + 0xf5c2, 0xf7d1, 0x0000, 0xa44f, 0x0000, 0x0000, 0x0000, 0xa55c, + 0xa55b, 0x0000, 0x0000, 0xa648, 0x0000, 0x0000, 0xc9c0, 0x0000, + 0x0000, 0xa755, 0xa756, 0xa754, 0xa757, 0xca6f, 0xca70, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xa8f1, 0xcbd5, 0x0000, 0xa8f0, 0x0000, + 0xcdf2, 0xab6c, 0xcdf3, 0xab6b, 0x0000, 0x0000, 0x0000, 0xab69, + 0x0000, 0xab6a, 0x0000, 0x0000, 0x0000, 0xd0ed, 0x0000, 0x0000, + 0x0000, 0x0000, 0xb0c7, 0xd46e, 0x0000, 0xb0ca, 0xd46d, 0xb1e5, + 0xb0c9, 0xb0c8, 0x0000, 0xb3d4, 0x0000, 0xb3d3, 0xb3d2, 0xb6d2, + 0x0000, 0x0000, 0xb6d5, 0xb6d6, 0xb6d4, 0x0000, 0xb6d3, 0x0000, + 0x0000, 0xe143, 0x0000, 0xe144, 0x0000, 0x0000, 0x0000, 0xe4f5, + 0xbc45, 0xe4f4, 0x0000, 0xbeb1, 0xecbf, 0xc079, 0x0000, 0xf1ee, + 0xc455, 0x0000, 0xa463, 0xa4c3, 0xc956, 0x0000, 0xa4c4, 0xa4c5 +}; + +static const unsigned short big5_from_unicode_53[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa55e, 0x0000, + 0xa649, 0xca71, 0xcbd6, 0xcbd7, 0x0000, 0xab6d, 0xd0ee, 0xb0cc, + 0xb0cb, 0xd863, 0xd862, 0x0000, 0x0000, 0xa450, 0xa4c6, 0xa55f, + 0x0000, 0xb0cd, 0xc943, 0x0000, 0xc96c, 0xa560, 0x0000, 0xc9c2, + 0xa64b, 0xa64a, 0xc9c1, 0xa758, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xadea, 0x0000, 0x0000, 0xd46f, 0x0000, 0xb6d7, + 0xe145, 0xb9bc, 0x0000, 0x0000, 0xe8fa, 0x0000, 0x0000, 0xf3fd, + 0x0000, 0xa4c7, 0x0000, 0x0000, 0xcbd8, 0xcdf4, 0xb0d0, 0xb0ce, + 0xb0cf, 0xa451, 0x0000, 0xa464, 0xa2cd, 0xa4ca, 0x0000, 0xa4c9, + 0xa4c8, 0xa563, 0xa562, 0x0000, 0xc96d, 0xc9c3, 0x0000, 0x0000, + 0x0000, 0xa8f5, 0xa8f2, 0xa8f4, 0xa8f3, 0x0000, 0x0000, 0xab6e, + 0x0000, 0x0000, 0xb3d5, 0x0000, 0xa452, 0x0000, 0xa4cb, 0x0000, + 0xa565, 0xa564, 0x0000, 0xca72, 0x0000, 0x0000, 0xa8f6, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xc957, 0x0000, 0xa567, 0xa566, + 0xa64c, 0xa64d, 0xca73, 0xa759, 0x0000, 0xa75a, 0x0000, 0xa8f7, + 0xa8f8, 0xa8f9, 0x0000, 0xab6f, 0xcdf5, 0x0000, 0x0000, 0xadeb, + 0x0000, 0x0000, 0xc944, 0x0000, 0xa4cc, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xc9c4, 0x0000, 0x0000, 0x0000, 0xca74, 0xca75, + 0x0000, 0x0000, 0xcbd9, 0x0000, 0xcbda, 0x0000, 0xcdf7, 0xcdf6, + 0xcdf9, 0xcdf8, 0xab70, 0x0000, 0xd470, 0xaded, 0xd0ef, 0xadec, + 0x0000, 0x0000, 0x0000, 0x0000, 0xd864, 0xb3d6, 0x0000, 0xd865, + 0x0000, 0x0000, 0x0000, 0x0000, 0xe146, 0xb9bd, 0x0000, 0x0000, + 0x0000, 0x0000, 0xbc46, 0x0000, 0xf1ef, 0x0000, 0x0000, 0x0000, + 0x0000, 0xc958, 0x0000, 0xa568, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xb0d1, 0x0000, 0x0000, 0x0000, 0x0000, + 0xa453, 0xa465, 0xa4ce, 0xa4cd, 0x0000, 0xa4cf, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xa8fb, 0x0000, 0xa8fa, 0xa8fc, + 0x0000, 0x0000, 0x0000, 0xab71, 0x0000, 0x0000, 0x0000, 0xadee, + 0x0000, 0xe8fb, 0xc24f, 0xa466, 0xa56a, 0xa579, 0xa574, 0x0000, + 0xa56f, 0xa56e, 0xa575, 0xa573, 0xa56c, 0xa57a, 0xa56d, 0xa569, + 0xa578, 0xa577, 0xa576, 0xa56b, 0x0000, 0xa572, 0x0000, 0x0000, + 0xa571, 0x0000, 0x0000, 0xa57b, 0xa570, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5_from_unicode_54[] = { + 0x0000, 0xa653, 0x0000, 0xa659, 0xa655, 0x0000, 0xa65b, 0xc9c5, + 0xa658, 0xa64e, 0xa651, 0xa654, 0xa650, 0xa657, 0xa65a, 0xa64f, + 0xa652, 0xa656, 0xa65c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xca7e, 0xca7b, 0x0000, 0xa767, 0xca7c, 0xa75b, 0xa75d, 0xa775, + 0xa770, 0x0000, 0x0000, 0x0000, 0xcaa5, 0xca7d, 0xa75f, 0xa761, + 0xcaa4, 0xa768, 0xca78, 0xa774, 0xa776, 0xa75c, 0xa76d, 0x0000, + 0xca76, 0xa773, 0x0000, 0xa764, 0x0000, 0xa76e, 0xa76f, 0xca77, + 0xa76c, 0xa76a, 0x0000, 0xa76b, 0xa771, 0xcaa1, 0xa75e, 0x0000, + 0xa772, 0xcaa3, 0xa766, 0xa763, 0x0000, 0xca7a, 0xa762, 0xcaa6, + 0xa765, 0x0000, 0xa769, 0x0000, 0x0000, 0x0000, 0xa760, 0xcaa2, + 0x0000, 0x0000, 0x0000, 0x0000, 0xca79, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xcbeb, 0xcbea, 0xa94f, 0xcbed, 0xcbef, 0xcbe4, 0xcbe7, 0xcbee, + 0xa950, 0x0000, 0x0000, 0xcbe1, 0xcbe5, 0x0000, 0x0000, 0xcbe9, + 0xce49, 0xa94b, 0xce4d, 0xa8fd, 0xcbe6, 0xa8fe, 0xa94c, 0xa945, + 0xa941, 0x0000, 0xcbe2, 0xa944, 0xa949, 0xa952, 0xcbe3, 0xcbdc, + 0xa943, 0xcbdd, 0xcbdf, 0x0000, 0xa946, 0x0000, 0xa948, 0xcbdb, + 0xcbe0, 0x0000, 0x0000, 0xa951, 0xa94d, 0xcbe8, 0xa953, 0x0000, + 0xa94a, 0xcbde, 0xa947, 0x0000, 0x0000, 0xa942, 0xa940, 0x0000, + 0xcbec, 0x0000, 0xa94e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xce48, 0xcdfb, 0xce4b, 0x0000, 0x0000, 0xcdfd, 0xab78, 0xaba8, + 0xab74, 0xaba7, 0xab7d, 0xaba4, 0xab72, 0xcdfc, 0xce43, 0xaba3, + 0xce4f, 0xaba5, 0x0000, 0xab79, 0x0000, 0x0000, 0xce45, 0xce42, + 0xab77, 0x0000, 0xcdfa, 0xaba6, 0xce4a, 0xab7c, 0xce4c, 0xaba9, + 0xab73, 0xab7e, 0xab7b, 0xce40, 0xaba1, 0xce46, 0xce47, 0xab7a, + 0xaba2, 0xab76, 0x0000, 0x0000, 0x0000, 0x0000, 0xab75, 0xcdfe, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xce44, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xce4e, 0x0000, + 0xd144, 0xadfb, 0xd0f1, 0x0000, 0xd0f6, 0xadf4, 0xae40, 0xd0f4, + 0xadef, 0xadf9, 0xadfe, 0xd0fb, 0x0000, 0xadfa, 0xadfd, 0x0000, + 0x0000, 0xd0fe, 0xadf5, 0xd0f5, 0x0000, 0x0000, 0x0000, 0xd142, + 0xd143, 0x0000, 0xadf7, 0xd141, 0xadf3, 0xae43, 0x0000, 0xd0f8 +}; + +static const unsigned short big5_from_unicode_55[] = { + 0x0000, 0xadf1, 0x0000, 0xd146, 0xd0f9, 0xd0fd, 0xadf6, 0xae42, + 0xd0fa, 0xadfc, 0xd140, 0xd147, 0xd4a1, 0x0000, 0xd145, 0xae44, + 0xadf0, 0xd0fc, 0xd0f3, 0x0000, 0xadf8, 0x0000, 0x0000, 0xd0f2, + 0x0000, 0x0000, 0xd0f7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xd0f0, 0xae41, + 0x0000, 0x0000, 0xd477, 0x0000, 0xb0e4, 0xd4a7, 0xb0e2, 0xb0df, + 0xd47c, 0xb0db, 0xd4a2, 0xb0e6, 0xd476, 0xd47b, 0xd47a, 0xadf2, + 0xb0e1, 0xd4a5, 0x0000, 0xd4a8, 0xd473, 0x0000, 0xb3e8, 0x0000, + 0xd4a9, 0xb0e7, 0x0000, 0xb0d9, 0xb0d6, 0xd47e, 0xb0d3, 0x0000, + 0xd4a6, 0x0000, 0xb0da, 0xd4aa, 0x0000, 0xd474, 0xd4a4, 0xb0dd, + 0xd475, 0xd478, 0xd47d, 0x0000, 0x0000, 0xb0de, 0xb0dc, 0xb0e8, + 0x0000, 0x0000, 0x0000, 0x0000, 0xb0e3, 0x0000, 0xb0d7, 0xb1d2, + 0x0000, 0xb0d8, 0xd479, 0xb0e5, 0xb0e0, 0xd4a3, 0xb0d5, 0x0000, + 0x0000, 0x0000, 0xb0d4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xd471, 0xd472, 0xd86a, + 0x0000, 0x0000, 0x0000, 0xb3d7, 0xb3da, 0xd875, 0xb3ee, 0xd878, + 0xb3d8, 0xd871, 0xb3de, 0xb3e4, 0xb5bd, 0x0000, 0x0000, 0xb3e2, + 0xd86e, 0xb3ef, 0xb3db, 0xb3e3, 0xd876, 0xdcd7, 0xd87b, 0xd86f, + 0x0000, 0xd866, 0xd873, 0xd86d, 0xb3e1, 0xd879, 0x0000, 0x0000, + 0xb3dd, 0xb3f1, 0xb3ea, 0x0000, 0xb3df, 0xb3dc, 0x0000, 0xb3e7, + 0x0000, 0xd87a, 0xd86c, 0xd872, 0xd874, 0xd868, 0xd877, 0xb3d9, + 0xd867, 0x0000, 0xb3e0, 0xb3f0, 0xb3ec, 0xd869, 0xb3e6, 0x0000, + 0x0000, 0xb3ed, 0xb3e9, 0xb3e5, 0x0000, 0xd870, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xb3eb, 0x0000, 0x0000, 0x0000, 0xdcd5, + 0xdcd1, 0x0000, 0xdce0, 0xdcca, 0xdcd3, 0xb6e5, 0xb6e6, 0xb6de, + 0xdcdc, 0xb6e8, 0xdccf, 0xdcce, 0xdccc, 0xdcde, 0xb6dc, 0xdcd8, + 0xdccd, 0xb6df, 0xdcd6, 0xb6da, 0xdcd2, 0xdcd9, 0xdcdb, 0x0000, + 0x0000, 0xdcdf, 0xb6e3, 0xdccb, 0xb6dd, 0xdcd0, 0x0000, 0xb6d8, + 0x0000, 0xb6e4, 0xdcda, 0xb6e0, 0xb6e1, 0xb6e7, 0xb6db, 0xa25f, + 0xb6d9, 0xdcd4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xb6e2, + 0x0000, 0x0000, 0xdcdd, 0x0000, 0x0000, 0x0000, 0xb9cd, 0xb9c8, + 0x0000, 0xe155, 0xe151, 0x0000, 0xe14b, 0xb9c2, 0xb9be, 0xe154 +}; + +static const unsigned short big5_from_unicode_56[] = { + 0xb9bf, 0xe14e, 0xe150, 0x0000, 0xe153, 0x0000, 0xb9c4, 0x0000, + 0xb9cb, 0xb9c5, 0x0000, 0x0000, 0xe149, 0xb9c6, 0xb9c7, 0xe14c, + 0xb9cc, 0x0000, 0xe14a, 0xe14f, 0xb9c3, 0xe148, 0xb9c9, 0xb9c1, + 0x0000, 0x0000, 0x0000, 0xb9c0, 0xe14d, 0xe152, 0x0000, 0xb9ca, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe147, + 0x0000, 0xbc4d, 0xe547, 0x0000, 0xe544, 0x0000, 0xbc47, 0xbc53, + 0xbc54, 0x0000, 0xbc4a, 0xe542, 0xbc4c, 0xe4f9, 0xbc52, 0x0000, + 0xe546, 0xbc49, 0xe548, 0xbc48, 0x0000, 0xe543, 0xe545, 0xbc4b, + 0xe541, 0xe4fa, 0xe4f7, 0x0000, 0x0000, 0xd86b, 0xe4fd, 0x0000, + 0xe4f6, 0xe4fc, 0xe4fb, 0x0000, 0xe4f8, 0x0000, 0xbc4f, 0x0000, + 0x0000, 0x0000, 0x0000, 0xbc4e, 0x0000, 0x0000, 0x0000, 0xbc50, + 0xe4fe, 0xbeb2, 0xe540, 0x0000, 0x0000, 0x0000, 0xe945, 0x0000, + 0xe8fd, 0x0000, 0xbebe, 0xe942, 0xbeb6, 0xbeba, 0xe941, 0x0000, + 0xbeb9, 0xbeb5, 0xbeb8, 0xbeb3, 0xbebd, 0xe943, 0xe8fe, 0xbebc, + 0xe8fc, 0xbebb, 0xe944, 0xe940, 0xbc51, 0x0000, 0xbebf, 0xe946, + 0xbeb7, 0xbeb4, 0x0000, 0x0000, 0x0000, 0x0000, 0xecc6, 0xecc8, + 0xc07b, 0xecc9, 0xecc7, 0xecc5, 0xecc4, 0xc07d, 0xecc3, 0xc07e, + 0x0000, 0x0000, 0x0000, 0x0000, 0xecc1, 0xecc2, 0xc07a, 0xc0a1, + 0xc07c, 0x0000, 0x0000, 0xecc0, 0x0000, 0xc250, 0x0000, 0xefbc, + 0xefba, 0xefbf, 0xefbd, 0x0000, 0xefbb, 0xefbe, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xc360, 0xf1f2, 0xf1f3, + 0xc456, 0x0000, 0xf1f4, 0xf1f0, 0xf1f5, 0xf1f1, 0xc251, 0x0000, + 0x0000, 0x0000, 0xf3fe, 0xf441, 0xc459, 0xf440, 0xc458, 0xc457, + 0x0000, 0x0000, 0x0000, 0x0000, 0xc45a, 0xf5c5, 0xf5c6, 0x0000, + 0xc4da, 0xc4d9, 0xc4db, 0xf5c4, 0x0000, 0xf6d8, 0xf6d7, 0x0000, + 0xc56d, 0xc56f, 0xc56e, 0xf6d9, 0xc5c8, 0xf8a6, 0x0000, 0x0000, + 0x0000, 0xc5f1, 0x0000, 0xf8a5, 0xf8ee, 0x0000, 0x0000, 0xc949, + 0x0000, 0x0000, 0xa57d, 0xa57c, 0x0000, 0xa65f, 0xa65e, 0xc9c7, + 0xa65d, 0xc9c6, 0x0000, 0x0000, 0xa779, 0xcaa9, 0x0000, 0xcaa8, + 0x0000, 0x0000, 0xa777, 0xa77a, 0x0000, 0x0000, 0xcaa7, 0x0000, + 0xa778, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xcbf0, + 0x0000, 0xcbf1, 0xa954, 0x0000, 0x0000, 0x0000, 0x0000, 0xabaa +}; + +static const unsigned short big5_from_unicode_57[] = { + 0x0000, 0xd148, 0xd149, 0xae45, 0xae46, 0x0000, 0x0000, 0xd4ac, + 0xb0e9, 0xb0eb, 0xd4ab, 0xb0ea, 0xd87c, 0xb3f2, 0x0000, 0x0000, + 0x0000, 0x0000, 0xb6e9, 0xb6ea, 0xdce1, 0x0000, 0xb9cf, 0x0000, + 0xb9ce, 0x0000, 0xe549, 0xe948, 0xe947, 0x0000, 0xf96b, 0xa467, + 0xc959, 0x0000, 0xc96e, 0xc96f, 0x0000, 0x0000, 0x0000, 0x0000, + 0xa662, 0xa666, 0xc9c9, 0x0000, 0xa664, 0xa663, 0xc9c8, 0xa665, + 0xa661, 0x0000, 0x0000, 0xa660, 0xc9ca, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xa7a6, 0x0000, 0x0000, 0xa7a3, 0x0000, + 0xa77d, 0xcaaa, 0x0000, 0x0000, 0x0000, 0xcaab, 0x0000, 0xa7a1, + 0x0000, 0xcaad, 0xa77b, 0xcaae, 0xcaac, 0xa77e, 0xa7a2, 0xa7a5, + 0xa7a4, 0xa77c, 0xcaaf, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xa959, 0xcbfe, 0x0000, 0xa95b, 0x0000, 0xa95a, 0x0000, + 0xcc40, 0xa958, 0xa957, 0xcbf5, 0x0000, 0xcbf4, 0x0000, 0xcbf2, + 0xcbf7, 0xcbf6, 0xcbf3, 0xcbfc, 0xcbfd, 0xcbfa, 0xcbf8, 0xa956, + 0x0000, 0x0000, 0x0000, 0xcbfb, 0xa95c, 0xcc41, 0x0000, 0x0000, + 0xcbf9, 0x0000, 0xabab, 0xa955, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xabac, 0xce54, 0x0000, 0x0000, 0xce5a, + 0x0000, 0x0000, 0x0000, 0xabb2, 0xce58, 0xce5e, 0x0000, 0xce55, + 0xce59, 0xce5b, 0xce5d, 0xce57, 0x0000, 0xce56, 0xce51, 0xce52, + 0xabad, 0x0000, 0xabaf, 0xabae, 0xce53, 0xce5c, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xabb1, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xce50, 0xd153, 0x0000, + 0xd152, 0xd157, 0xd14e, 0x0000, 0xd151, 0xd150, 0x0000, 0xd154, + 0x0000, 0xd158, 0xae47, 0xae4a, 0x0000, 0x0000, 0xd14f, 0xd155, + 0x0000, 0x0000, 0x0000, 0xae49, 0xd14a, 0x0000, 0xabb0, 0xd4ba, + 0xd156, 0x0000, 0xd14d, 0x0000, 0xae48, 0xd14c, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xd4b1, 0x0000, 0x0000, 0xb0ec, + 0xb0f0, 0xd4c1, 0xd4af, 0xd4bd, 0xb0f1, 0xd4bf, 0x0000, 0xd4c5, + 0x0000, 0xd4c9, 0x0000, 0x0000, 0xd4c0, 0xd4b4, 0xd4bc, 0x0000, + 0xd4ca, 0xd4c8, 0xd4be, 0xd4b9, 0xd4b2, 0xd8a6, 0xd4b0, 0xb0f5, + 0xd4b7, 0xb0f6, 0xb0f2, 0xd4ad, 0xd4c3, 0xd4b5, 0x0000, 0x0000 +}; + +static const unsigned short big5_from_unicode_58[] = { + 0xd4b3, 0xd4c6, 0xb0f3, 0x0000, 0xd4cc, 0xb0ed, 0xb0ef, 0xd4bb, + 0xd4b6, 0xae4b, 0xb0ee, 0xd4b8, 0xd4c7, 0xd4cb, 0xd4c2, 0x0000, + 0xd4c4, 0x0000, 0x0000, 0x0000, 0xd4ae, 0x0000, 0x0000, 0x0000, + 0x0000, 0xd8a1, 0x0000, 0xd8aa, 0xd8a9, 0xb3fa, 0xd8a2, 0x0000, + 0xb3fb, 0xb3f9, 0x0000, 0xd8a4, 0xb3f6, 0xd8a8, 0x0000, 0xd8a3, + 0xd8a5, 0xd87d, 0xb3f4, 0x0000, 0xd8b2, 0xd8b1, 0xd8ae, 0xb3f3, + 0xb3f7, 0xb3f8, 0xd14b, 0xd8ab, 0xb3f5, 0xb0f4, 0xd8ad, 0xd87e, + 0xd8b0, 0xd8af, 0x0000, 0xd8b3, 0x0000, 0xdcef, 0x0000, 0xd8ac, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xd8a7, 0xdce7, 0xb6f4, 0xb6f7, 0xb6f2, 0xdce6, 0xdcea, 0xdce5, + 0x0000, 0xb6ec, 0xb6f6, 0xdce2, 0xb6f0, 0xdce9, 0x0000, 0xb6ee, + 0xb6ed, 0xdcec, 0xb6ef, 0xdcee, 0x0000, 0xdceb, 0xb6eb, 0x0000, + 0x0000, 0x0000, 0xb6f5, 0xdcf0, 0xdce4, 0xdced, 0x0000, 0x0000, + 0xdce3, 0x0000, 0x0000, 0xb6f1, 0x0000, 0xb6f3, 0x0000, 0xdce8, + 0x0000, 0xdcf1, 0x0000, 0x0000, 0xe15d, 0xb9d0, 0xe163, 0x0000, + 0x0000, 0xb9d5, 0xe15f, 0xe166, 0xe157, 0xb9d7, 0xb9d1, 0xe15c, + 0xbc55, 0xe15b, 0xe164, 0xb9d2, 0x0000, 0xb9d6, 0xe15a, 0xe160, + 0xe165, 0xe156, 0xb9d4, 0xe15e, 0x0000, 0x0000, 0xe162, 0xe168, + 0xe158, 0xe161, 0x0000, 0xb9d3, 0xe167, 0x0000, 0x0000, 0x0000, + 0xe159, 0x0000, 0x0000, 0x0000, 0xbc59, 0xe54b, 0xbc57, 0xbc56, + 0xe54d, 0xe552, 0x0000, 0xe54e, 0x0000, 0xe551, 0xbc5c, 0x0000, + 0xbea5, 0xbc5b, 0x0000, 0xe54a, 0xe550, 0x0000, 0xbc5a, 0xe54f, + 0x0000, 0xe54c, 0x0000, 0xbc58, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe94d, 0x0000, 0xe94f, 0xe94a, 0xbec1, 0xe94c, + 0x0000, 0xbec0, 0xe94e, 0x0000, 0x0000, 0xbec3, 0xe950, 0xbec2, + 0xe949, 0xe94b, 0x0000, 0x0000, 0x0000, 0x0000, 0xc0a5, 0xeccc, + 0x0000, 0xc0a4, 0xeccd, 0xc0a3, 0xeccb, 0xc0a2, 0xecca, 0x0000, + 0xc253, 0xc252, 0xf1f6, 0xf1f8, 0x0000, 0xf1f7, 0xc361, 0xc362, + 0x0000, 0x0000, 0xc363, 0xf442, 0xc45b, 0x0000, 0x0000, 0xf7d3, + 0xf7d2, 0xc5f2, 0x0000, 0xa468, 0xa4d0, 0x0000, 0x0000, 0xa7a7, + 0x0000, 0x0000, 0x0000, 0x0000, 0xce5f, 0x0000, 0x0000, 0x0000, + 0x0000, 0xb3fc, 0xb3fd, 0x0000, 0xdcf2, 0xb9d8, 0xe169, 0xe553 +}; + +static const unsigned short big5_from_unicode_59[] = { + 0x0000, 0x0000, 0x0000, 0xc95a, 0x0000, 0x0000, 0xcab0, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xcc42, 0xce60, 0xd159, 0xae4c, + 0x0000, 0x0000, 0xf1f9, 0x0000, 0xc4dc, 0xa469, 0xa57e, 0xc970, + 0x0000, 0xa667, 0xa668, 0x0000, 0xa95d, 0x0000, 0x0000, 0x0000, + 0xb0f7, 0x0000, 0xb9da, 0x0000, 0xb9db, 0xb9d9, 0x0000, 0xa46a, + 0x0000, 0xa4d1, 0xa4d3, 0xa4d2, 0xc95b, 0xa4d4, 0xa5a1, 0xc971, + 0x0000, 0xa5a2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa669, + 0xa66a, 0x0000, 0x0000, 0x0000, 0xc9cb, 0x0000, 0xa7a8, 0x0000, + 0xcab1, 0x0000, 0x0000, 0x0000, 0xa961, 0xcc43, 0x0000, 0xa95f, + 0xa960, 0xa95e, 0xd15a, 0x0000, 0x0000, 0x0000, 0xabb6, 0xabb5, + 0xabb7, 0xabb4, 0x0000, 0xce61, 0xa962, 0xabb3, 0x0000, 0xae4d, + 0xae4e, 0x0000, 0xae4f, 0x0000, 0xd4cd, 0x0000, 0x0000, 0x0000, + 0xb3fe, 0xd8b4, 0xb0f8, 0x0000, 0x0000, 0x0000, 0x0000, 0xb6f8, + 0x0000, 0xb9dd, 0xb9dc, 0xe16a, 0x0000, 0xbc5d, 0xbec4, 0x0000, + 0xefc0, 0xf6da, 0xf7d4, 0xa46b, 0xa5a3, 0x0000, 0xa5a4, 0xc9d1, + 0xa66c, 0xa66f, 0x0000, 0xc9cf, 0xc9cd, 0xa66e, 0xc9d0, 0xc9d2, + 0xc9cc, 0xa671, 0xa670, 0xa66d, 0xa66b, 0xc9ce, 0x0000, 0x0000, + 0x0000, 0x0000, 0xa7b3, 0x0000, 0x0000, 0xa7b0, 0xcab6, 0xcab9, + 0xcab8, 0x0000, 0xa7aa, 0xa7b2, 0x0000, 0x0000, 0xa7af, 0xcab5, + 0xcab3, 0xa7ae, 0x0000, 0x0000, 0x0000, 0xa7a9, 0xa7ac, 0x0000, + 0xcab4, 0xcabb, 0xcab7, 0xa7ad, 0xa7b1, 0xa7b4, 0xcab2, 0xcaba, + 0xa7ab, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa967, 0xa96f, + 0x0000, 0xcc4f, 0xcc48, 0xa970, 0xcc53, 0xcc44, 0xcc4b, 0x0000, + 0x0000, 0xa966, 0xcc45, 0xa964, 0xcc4c, 0xcc50, 0xa963, 0x0000, + 0xcc51, 0xcc4a, 0x0000, 0xcc4d, 0x0000, 0xa972, 0xa969, 0xcc54, + 0xcc52, 0x0000, 0xa96e, 0xa96c, 0xcc49, 0xa96b, 0xcc47, 0xcc46, + 0xa96a, 0xa968, 0xa971, 0xa96d, 0xa965, 0x0000, 0xcc4e, 0x0000, + 0xabb9, 0x0000, 0xabc0, 0xce6f, 0xabb8, 0xce67, 0xce63, 0x0000, + 0xce73, 0xce62, 0x0000, 0xabbb, 0xce6c, 0xabbe, 0xabc1, 0x0000, + 0xabbc, 0xce70, 0xabbf, 0x0000, 0xae56, 0xce76, 0xce64, 0x0000, + 0x0000, 0xce66, 0xce6d, 0xce71, 0xce75, 0xce72, 0xce6b, 0xce6e, + 0x0000, 0x0000, 0xce68, 0xabc3, 0xce6a, 0xce69, 0xce74, 0xabba +}; + +static const unsigned short big5_from_unicode_5a[] = { + 0xce65, 0xabc2, 0x0000, 0xabbd, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xae5c, 0xd162, 0x0000, 0xae5b, 0x0000, 0x0000, 0xd160, + 0x0000, 0xae50, 0x0000, 0xae55, 0x0000, 0xd15f, 0xd15c, 0xd161, + 0xae51, 0xd15b, 0x0000, 0xae54, 0xae52, 0x0000, 0xd163, 0xae53, + 0xae57, 0x0000, 0x0000, 0xae58, 0x0000, 0xae5a, 0x0000, 0x0000, + 0x0000, 0xae59, 0x0000, 0x0000, 0x0000, 0xd15d, 0xd15e, 0x0000, + 0x0000, 0x0000, 0x0000, 0xd164, 0x0000, 0xd4d4, 0xb0f9, 0xd8c2, + 0xd4d3, 0xd4e6, 0x0000, 0x0000, 0xb140, 0x0000, 0xd4e4, 0x0000, + 0xb0fe, 0xb0fa, 0xd4ed, 0xd4dd, 0xd4e0, 0x0000, 0xb143, 0xd4ea, + 0xd4e2, 0xb0fb, 0xb144, 0x0000, 0xd4e7, 0xd4e5, 0x0000, 0x0000, + 0xd4d6, 0xd4eb, 0xd4df, 0xd4da, 0x0000, 0xd4d0, 0xd4ec, 0xd4dc, + 0xd4cf, 0x0000, 0xb142, 0xd4e1, 0xd4ee, 0xd4de, 0xd4d2, 0xd4d7, + 0xd4ce, 0x0000, 0xb141, 0x0000, 0xd4db, 0xd4d8, 0xb0fc, 0xd4d1, + 0x0000, 0xd4e9, 0xb0fd, 0x0000, 0xd4d9, 0xd4d5, 0x0000, 0x0000, + 0xd4e8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xb440, + 0xd8bb, 0x0000, 0xd8b8, 0xd8c9, 0xd8bd, 0xd8ca, 0x0000, 0xb442, + 0x0000, 0x0000, 0x0000, 0xd8c6, 0xd8c3, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xd8c4, 0xd8c7, 0xd8cb, 0x0000, 0xd4e3, 0xd8cd, + 0xdd47, 0x0000, 0xb443, 0xd8ce, 0xd8b6, 0xd8c0, 0x0000, 0xd8c5, + 0x0000, 0x0000, 0xb441, 0xb444, 0xd8cc, 0xd8cf, 0xd8ba, 0xd8b7, + 0x0000, 0x0000, 0xd8b9, 0x0000, 0x0000, 0xd8be, 0xd8bc, 0xb445, + 0x0000, 0xd8c8, 0x0000, 0x0000, 0xd8bf, 0x0000, 0xd8c1, 0xd8b5, + 0xdcfa, 0xdcf8, 0xb742, 0xb740, 0xdd43, 0xdcf9, 0xdd44, 0xdd40, + 0xdcf7, 0xdd46, 0xdcf6, 0xdcfd, 0xb6fe, 0xb6fd, 0xb6fc, 0xdcfb, + 0xdd41, 0xb6f9, 0xb741, 0x0000, 0xdcf4, 0x0000, 0xdcfe, 0xdcf3, + 0xdcfc, 0xb6fa, 0xdd42, 0xdcf5, 0xb6fb, 0xdd45, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe16e, 0xb9e2, 0xb9e1, + 0xb9e3, 0xe17a, 0xe170, 0xe176, 0xe16b, 0xe179, 0xe178, 0xe17c, + 0xe175, 0xb9de, 0xe174, 0xb9e4, 0x0000, 0xe16d, 0xb9df, 0x0000, + 0xe17b, 0xb9e0, 0xe16f, 0xe172, 0xe177, 0xe171, 0xe16c, 0x0000, + 0x0000, 0x0000, 0x0000, 0xe173, 0xe555, 0xbc61, 0xe558, 0xe557, + 0xe55a, 0xe55c, 0x0000, 0xbc5f, 0x0000, 0xe556, 0x0000, 0xe554 +}; + +static const unsigned short big5_from_unicode_5b[] = { + 0x0000, 0xe55d, 0xe55b, 0xe559, 0x0000, 0xe55f, 0x0000, 0xe55e, + 0xbc63, 0xbc5e, 0x0000, 0xbc60, 0xbc62, 0x0000, 0x0000, 0xe560, + 0xe957, 0x0000, 0x0000, 0xe956, 0xe955, 0x0000, 0xe958, 0xe951, + 0x0000, 0xe952, 0xe95a, 0xe953, 0x0000, 0xbec5, 0xe95c, 0x0000, + 0xe95b, 0xe954, 0x0000, 0xecd1, 0xc0a8, 0xeccf, 0xecd4, 0xecd3, + 0xe959, 0x0000, 0xc0a7, 0x0000, 0xecd2, 0xecce, 0xecd6, 0xecd5, + 0xc0a6, 0x0000, 0xecd0, 0x0000, 0xbec6, 0x0000, 0x0000, 0x0000, + 0xc254, 0x0000, 0x0000, 0x0000, 0xefc1, 0xf1fa, 0xf1fb, 0xf1fc, + 0xc45c, 0x0000, 0x0000, 0xc45d, 0x0000, 0xf443, 0x0000, 0xf5c8, + 0xf5c7, 0x0000, 0x0000, 0xf6db, 0xf6dc, 0xf7d5, 0xf8a7, 0x0000, + 0xa46c, 0xa46d, 0x0000, 0xa46e, 0xa4d5, 0xa5a5, 0xc9d3, 0xa672, + 0xa673, 0x0000, 0xa7b7, 0xa7b8, 0xa7b6, 0xa7b5, 0x0000, 0xa973, + 0x0000, 0x0000, 0xcc55, 0xa975, 0xa974, 0xcc56, 0x0000, 0x0000, + 0x0000, 0xabc4, 0x0000, 0xae5d, 0xd165, 0x0000, 0xd4f0, 0x0000, + 0xb145, 0xb447, 0xd4ef, 0xb446, 0x0000, 0xb9e5, 0x0000, 0xe17d, + 0xbec7, 0x0000, 0xc0a9, 0xecd7, 0x0000, 0xc45e, 0x0000, 0xc570, + 0x0000, 0xc972, 0x0000, 0xa5a6, 0xc973, 0xa676, 0x0000, 0xa674, + 0xa675, 0xa677, 0x0000, 0xa7ba, 0xa7b9, 0x0000, 0xcabc, 0xa7bb, + 0x0000, 0x0000, 0xcabd, 0xcc57, 0x0000, 0xcc58, 0x0000, 0xa976, + 0xa978, 0xa97a, 0xa977, 0xa97b, 0xa979, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xabc8, 0xabc5, 0xabc7, 0xabc9, 0xabc6, 0xd166, + 0xce77, 0x0000, 0x0000, 0x0000, 0xd168, 0xd167, 0xae63, 0x0000, + 0xae5f, 0x0000, 0x0000, 0xae60, 0xae62, 0xae64, 0xae61, 0x0000, + 0xae66, 0xae65, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xb14a, + 0xd4f2, 0xd4f1, 0xb149, 0x0000, 0xb148, 0xb147, 0xb14b, 0xb146, + 0x0000, 0x0000, 0xd8d5, 0xd8d2, 0xb449, 0xd8d1, 0xd8d6, 0x0000, + 0xb44b, 0xd8d4, 0xb448, 0xb44a, 0xd8d3, 0x0000, 0xdd48, 0x0000, + 0xdd49, 0xdd4a, 0x0000, 0x0000, 0x0000, 0x0000, 0xb9e6, 0xb9ee, + 0xe17e, 0xb9e8, 0xb9ec, 0xe1a1, 0xb9ed, 0xb9e9, 0xb9ea, 0xb9e7, + 0xb9eb, 0xbc66, 0xd8d0, 0xbc67, 0xbc65, 0x0000, 0xbc64, 0xe95d, + 0xbec8, 0xecd8, 0xecd9, 0x0000, 0x0000, 0xc364, 0xc45f, 0x0000, + 0xa46f, 0x0000, 0xa678, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5_from_unicode_5c[] = { + 0x0000, 0xabca, 0x0000, 0xd169, 0xae67, 0x0000, 0x0000, 0xb14e, + 0xb14d, 0xb14c, 0xb44c, 0xb44d, 0xd8d7, 0xb9ef, 0xbec9, 0xa470, + 0xc95c, 0xa4d6, 0xc974, 0x0000, 0x0000, 0xc9d4, 0xa679, 0x0000, + 0x0000, 0x0000, 0xa97c, 0x0000, 0x0000, 0x0000, 0x0000, 0xdd4b, + 0x0000, 0x0000, 0xa471, 0x0000, 0xa4d7, 0xc9d5, 0x0000, 0x0000, + 0xcabe, 0x0000, 0xcabf, 0x0000, 0xa7bc, 0x0000, 0x0000, 0x0000, + 0xd8d8, 0xb44e, 0x0000, 0xdd4c, 0x0000, 0x0000, 0x0000, 0xc0aa, + 0xa472, 0xa4a8, 0xa4d8, 0xc975, 0xa5a7, 0x0000, 0xa7c0, 0xa7bf, + 0xa7bd, 0xa7be, 0x0000, 0x0000, 0xcc59, 0xa97e, 0xa9a1, 0xcc5a, + 0xa97d, 0x0000, 0x0000, 0xabce, 0xce78, 0xabcd, 0xabcb, 0xabcc, + 0xae6a, 0xae68, 0x0000, 0x0000, 0xd16b, 0xae69, 0xd16a, 0x0000, + 0xae5e, 0xd4f3, 0x0000, 0x0000, 0xb150, 0xb151, 0x0000, 0x0000, + 0xb14f, 0x0000, 0xb9f0, 0xe1a2, 0xbc68, 0xbc69, 0x0000, 0xe561, + 0xc0ab, 0xefc2, 0xefc3, 0x0000, 0xc4dd, 0xf8a8, 0xc94b, 0xa4d9, + 0x0000, 0xa473, 0x0000, 0xc977, 0xc976, 0x0000, 0x0000, 0x0000, + 0x0000, 0xa67a, 0xc9d7, 0xc9d8, 0xc9d6, 0x0000, 0xc9d9, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xcac7, 0x0000, + 0xcac2, 0xcac4, 0xcac6, 0xcac3, 0xa7c4, 0xcac0, 0x0000, 0xcac1, + 0xa7c1, 0xa7c2, 0xcac5, 0xcac8, 0xa7c3, 0xcac9, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xcc68, 0x0000, 0xcc62, + 0xcc5d, 0xa9a3, 0xcc65, 0xcc63, 0xcc5c, 0xcc69, 0xcc6c, 0xcc67, + 0xcc60, 0xa9a5, 0xcc66, 0xa9a6, 0xcc61, 0xcc64, 0xcc5b, 0xcc5f, + 0xcc6b, 0xa9a7, 0x0000, 0xa9a8, 0x0000, 0xcc5e, 0xcc6a, 0xa9a2, + 0xa9a4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xceab, 0xcea4, + 0xceaa, 0xcea3, 0xcea5, 0xce7d, 0xce7b, 0x0000, 0xceac, 0xcea9, + 0xce79, 0x0000, 0xabd0, 0xcea7, 0xcea8, 0x0000, 0xcea6, 0xce7c, + 0xce7a, 0xabcf, 0xcea2, 0xce7e, 0x0000, 0x0000, 0xcea1, 0xcead, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xae6f, 0x0000, 0xae6e, 0x0000, 0xd16c, 0xae6b, 0xd16e, 0x0000, + 0xae70, 0xd16f, 0x0000, 0x0000, 0xae73, 0x0000, 0xae71, 0xd170, + 0xceae, 0xd172, 0x0000, 0xae6d, 0x0000, 0xae6c, 0x0000, 0xd16d +}; + +static const unsigned short big5_from_unicode_5d[] = { + 0xd171, 0xae72, 0x0000, 0x0000, 0x0000, 0x0000, 0xb153, 0xb152, + 0x0000, 0x0000, 0x0000, 0xd4f5, 0xd4f9, 0xd4fb, 0xb154, 0xd4fe, + 0x0000, 0xb158, 0xd541, 0x0000, 0xb15a, 0x0000, 0xb156, 0xb15e, + 0x0000, 0xb15b, 0xd4f7, 0xb155, 0x0000, 0xd4f6, 0xd4f4, 0xd543, + 0xd4f8, 0x0000, 0xb157, 0xd542, 0xb15c, 0xd4fd, 0xd4fc, 0xb15d, + 0xd4fa, 0xb159, 0x0000, 0x0000, 0x0000, 0x0000, 0xd544, 0x0000, + 0xd540, 0xd8e7, 0xd8ee, 0xd8e3, 0xb451, 0xd8df, 0xd8ef, 0xd8d9, + 0xd8ec, 0xd8ea, 0xd8e4, 0x0000, 0xd8ed, 0xd8e6, 0x0000, 0xd8de, + 0xd8f0, 0xd8dc, 0xd8e9, 0xd8da, 0x0000, 0xd8f1, 0x0000, 0xb452, + 0x0000, 0xd8eb, 0xdd4f, 0xd8dd, 0xb44f, 0x0000, 0xd8e1, 0x0000, + 0xb450, 0xd8e0, 0xd8e5, 0x0000, 0x0000, 0xd8e2, 0x0000, 0x0000, + 0x0000, 0xd8e8, 0x0000, 0x0000, 0x0000, 0x0000, 0xdd53, 0x0000, + 0x0000, 0x0000, 0xdd56, 0xdd4e, 0x0000, 0xdd50, 0x0000, 0xdd55, + 0xdd54, 0xb743, 0x0000, 0xd8db, 0xdd52, 0x0000, 0x0000, 0xb744, + 0x0000, 0xdd4d, 0xdd51, 0x0000, 0x0000, 0x0000, 0x0000, 0xe1a9, + 0x0000, 0xe1b0, 0xe1a7, 0x0000, 0xe1ae, 0xe1a5, 0xe1ad, 0xe1b1, + 0xe1a4, 0xe1a8, 0xe1a3, 0x0000, 0xb9f1, 0x0000, 0xe1a6, 0xb9f2, + 0xe1ac, 0xe1ab, 0xe1aa, 0x0000, 0x0000, 0xe1af, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe565, 0xe567, 0xbc6b, 0xe568, 0x0000, 0xe563, + 0x0000, 0xe562, 0xe56c, 0x0000, 0xe56a, 0xbc6a, 0xe56d, 0xe564, + 0xe569, 0xe56b, 0xe566, 0x0000, 0x0000, 0x0000, 0x0000, 0xe961, + 0xe966, 0xe960, 0xe965, 0x0000, 0xe95e, 0xe968, 0xe964, 0xe969, + 0xe963, 0xe95f, 0xe967, 0x0000, 0xe96a, 0xe962, 0x0000, 0xecda, + 0xc0af, 0x0000, 0xc0ad, 0x0000, 0xc0ac, 0xc0ae, 0x0000, 0x0000, + 0xefc4, 0x0000, 0xf172, 0xf1fd, 0x0000, 0x0000, 0xf444, 0xf445, + 0x0000, 0xc460, 0x0000, 0xf5c9, 0x0000, 0xc4de, 0x0000, 0xf5ca, + 0x0000, 0xf6de, 0xc572, 0x0000, 0xc571, 0xf6dd, 0xc5c9, 0x0000, + 0xf7d6, 0x0000, 0x0000, 0x0000, 0x0000, 0xa474, 0xa67b, 0xc9da, + 0xcaca, 0xa8b5, 0xb15f, 0x0000, 0x0000, 0xa475, 0xa5aa, 0xa5a9, + 0xa5a8, 0x0000, 0x0000, 0xa7c5, 0x0000, 0x0000, 0xae74, 0x0000, + 0xdd57, 0xa476, 0xa477, 0xa478, 0xa4da, 0x0000, 0x0000, 0xabd1, + 0x0000, 0xceaf, 0x0000, 0x0000, 0x0000, 0xb453, 0xa479, 0xc95d +}; + +static const unsigned short big5_from_unicode_5e[] = { + 0x0000, 0x0000, 0xa5ab, 0xa5ac, 0xc978, 0x0000, 0xa67c, 0x0000, + 0x0000, 0x0000, 0xcacb, 0x0000, 0xa7c6, 0x0000, 0xcacc, 0x0000, + 0x0000, 0xa9ae, 0x0000, 0x0000, 0xcc6e, 0xa9ac, 0xa9ab, 0xcc6d, + 0xa9a9, 0xcc6f, 0xa9aa, 0xa9ad, 0x0000, 0xabd2, 0x0000, 0xabd4, + 0xceb3, 0xceb0, 0xceb1, 0xceb2, 0xceb4, 0xabd3, 0x0000, 0x0000, + 0xd174, 0xd173, 0x0000, 0xae76, 0x0000, 0xae75, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xb162, 0xd546, 0x0000, 0xb161, 0xb163, + 0xb160, 0x0000, 0x0000, 0x0000, 0x0000, 0xb455, 0xd545, 0x0000, + 0xb456, 0xd8f3, 0x0000, 0xb457, 0xd8f2, 0xb454, 0x0000, 0x0000, + 0x0000, 0x0000, 0xdd5a, 0xdd5c, 0xb745, 0xdd5b, 0xdd59, 0xdd58, + 0x0000, 0x0000, 0x0000, 0xe1b4, 0xb9f7, 0xb9f5, 0x0000, 0xb9f6, + 0xe1b2, 0xe1b3, 0x0000, 0xb9f3, 0xe571, 0xe56f, 0x0000, 0xbc6d, + 0xe570, 0xbc6e, 0xbc6c, 0xb9f4, 0x0000, 0x0000, 0xe96d, 0xe96b, + 0xe96c, 0xe56e, 0xecdc, 0xc0b0, 0xecdb, 0xefc5, 0xefc6, 0xe96e, + 0xf1fe, 0x0000, 0xa47a, 0xa5ad, 0xa67e, 0xc9db, 0xa67d, 0x0000, + 0xa9af, 0xb746, 0x0000, 0xa4db, 0xa5ae, 0xabd5, 0xb458, 0x0000, + 0xc979, 0x0000, 0xc97a, 0x0000, 0xc9dc, 0x0000, 0x0000, 0xa7c8, + 0xcad0, 0xcace, 0xa7c9, 0xcacd, 0xcacf, 0xcad1, 0x0000, 0xa7c7, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa9b3, 0xa9b4, 0xa9b1, + 0x0000, 0x0000, 0xa9b0, 0xceb8, 0xa9b2, 0x0000, 0x0000, 0x0000, + 0xabd6, 0x0000, 0xceb7, 0xceb9, 0xceb6, 0xceba, 0xabd7, 0xae79, + 0xd175, 0x0000, 0xd177, 0xae77, 0xd178, 0xae78, 0xd176, 0x0000, + 0xceb5, 0xd547, 0xd54a, 0xd54b, 0xd548, 0xb167, 0xb166, 0xb164, + 0xb165, 0xd549, 0x0000, 0x0000, 0x0000, 0x0000, 0xb168, 0x0000, + 0x0000, 0xb45a, 0xb45b, 0x0000, 0xb45c, 0xdd5d, 0xdd5f, 0xdd61, + 0xb748, 0xb747, 0xb459, 0xdd60, 0xdd5e, 0x0000, 0xe1b8, 0x0000, + 0x0000, 0xe1b6, 0xe1bc, 0xb9f8, 0xe1bd, 0xe1ba, 0xb9f9, 0xe1b7, + 0xe1b5, 0xe1bb, 0xbc70, 0xe573, 0xe1b9, 0xbc72, 0xe574, 0xbc71, + 0xbc74, 0xe575, 0xbc6f, 0xbc73, 0x0000, 0xe973, 0xe971, 0xe970, + 0xe972, 0xe96f, 0x0000, 0x0000, 0xc366, 0x0000, 0xf446, 0xf447, + 0x0000, 0xf5cb, 0xf6df, 0xc655, 0x0000, 0x0000, 0xa9b5, 0xa7ca, + 0x0000, 0x0000, 0xabd8, 0x0000, 0x0000, 0x0000, 0xa47b, 0xa4dc +}; + +static const unsigned short big5_from_unicode_5f[] = { + 0x0000, 0xa5af, 0xc9dd, 0x0000, 0xa7cb, 0xcad2, 0x0000, 0xcebb, + 0xabd9, 0x0000, 0xb9fa, 0xa47c, 0x0000, 0x0000, 0x0000, 0xa6a1, + 0x0000, 0x0000, 0xb749, 0xa47d, 0xa4dd, 0xa4de, 0x0000, 0xa5b1, + 0xa5b0, 0x0000, 0xc9de, 0xa6a2, 0x0000, 0xcad3, 0x0000, 0xa7cc, + 0x0000, 0x0000, 0xcc71, 0xcc72, 0xcc73, 0x0000, 0xa9b6, 0xa9b7, + 0xcc70, 0xa9b8, 0x0000, 0x0000, 0x0000, 0xabda, 0xcebc, 0x0000, + 0xd17a, 0xae7a, 0x0000, 0xd179, 0x0000, 0xb169, 0xd54c, 0xb16a, + 0xd54d, 0x0000, 0x0000, 0x0000, 0xb45d, 0x0000, 0x0000, 0x0000, + 0xdd62, 0x0000, 0x0000, 0xe1bf, 0xe1be, 0x0000, 0xb9fb, 0x0000, + 0xbc75, 0xe576, 0xbeca, 0xe974, 0xc0b1, 0x0000, 0xc573, 0xf7d8, + 0x0000, 0x0000, 0x0000, 0x0000, 0xcc74, 0x0000, 0xcebd, 0xb16b, + 0xd8f4, 0xb74a, 0x0000, 0x0000, 0x0000, 0xc255, 0x0000, 0x0000, + 0x0000, 0x0000, 0xa7ce, 0x0000, 0xa7cd, 0xabdb, 0x0000, 0xd17b, + 0x0000, 0xb16d, 0xb343, 0xb16e, 0xb16c, 0xb45e, 0x0000, 0xe1c0, + 0xb9fc, 0xbc76, 0x0000, 0xc94c, 0xc9df, 0x0000, 0xcad5, 0xa7cf, + 0xcad4, 0xa7d0, 0x0000, 0x0000, 0xa9bc, 0xcc77, 0xcc76, 0xa9bb, + 0xa9b9, 0xa9ba, 0xcc75, 0x0000, 0x0000, 0xabdd, 0xcebe, 0xabe0, + 0xabdc, 0xabe2, 0xabde, 0xabdf, 0xabe1, 0x0000, 0x0000, 0x0000, + 0xae7d, 0xae7c, 0xae7b, 0x0000, 0x0000, 0x0000, 0xd54f, 0xb16f, + 0xb172, 0xb170, 0x0000, 0xd54e, 0xb175, 0x0000, 0xb171, 0xd550, + 0xb174, 0xb173, 0x0000, 0x0000, 0x0000, 0xd8f6, 0xd8f5, 0x0000, + 0xb461, 0xb45f, 0xb460, 0xd8f7, 0xb74b, 0xdd64, 0xb74c, 0xdd63, + 0x0000, 0x0000, 0xe577, 0x0000, 0x0000, 0xbc78, 0xe1c1, 0xbc77, + 0x0000, 0xb9fd, 0x0000, 0xecde, 0xe975, 0xc0b2, 0xecdd, 0xf240, + 0xf448, 0xf449, 0x0000, 0xa4df, 0x0000, 0xa5b2, 0x0000, 0x0000, + 0x0000, 0xc97b, 0x0000, 0x0000, 0xa7d2, 0xa7d4, 0x0000, 0xc9e2, + 0xcad8, 0xcad7, 0xcad6, 0x0000, 0xc9e1, 0xc9e0, 0xa6a4, 0xa7d3, + 0xa7d1, 0xa6a3, 0x0000, 0x0000, 0x0000, 0xa9bd, 0xcc78, 0x0000, + 0xa9be, 0xcadd, 0x0000, 0xcadf, 0xcade, 0xcc79, 0x0000, 0x0000, + 0xcada, 0x0000, 0xa7d8, 0xa7d6, 0x0000, 0xcad9, 0xcadb, 0xcae1, + 0x0000, 0xa7d5, 0x0000, 0xcadc, 0xcae5, 0xa9c0, 0x0000, 0xcae2, + 0xa7d7, 0x0000, 0xcae0, 0xcae3, 0x0000, 0xa9bf, 0x0000, 0xa9c1 +}; + +static const unsigned short big5_from_unicode_60[] = { + 0xcae4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xccaf, 0xcca2, 0xcc7e, 0xccae, 0xcca9, 0xabe7, 0xa9c2, + 0xccaa, 0xccad, 0xabe3, 0xccac, 0xa9c3, 0xa9c8, 0xa9c6, 0xcca3, + 0x0000, 0xcc7c, 0xcca5, 0xa9cd, 0xccb0, 0xabe4, 0xcca6, 0x0000, + 0xabe5, 0xa9c9, 0xcca8, 0x0000, 0xcecd, 0xabe6, 0xcc7b, 0xa9ca, + 0xabe8, 0xa9cb, 0xa9c7, 0xa9cc, 0xcca7, 0xcc7a, 0xccab, 0xa9c4, + 0x0000, 0x0000, 0xcc7d, 0xcca4, 0xcca1, 0xa9c5, 0x0000, 0xcebf, + 0x0000, 0xcec0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xceca, 0xd1a1, 0xcecb, 0xabee, 0xcece, 0xcec4, 0xabed, 0xcec6, + 0x0000, 0xcec7, 0x0000, 0x0000, 0xcec9, 0xabe9, 0x0000, 0x0000, + 0xaea3, 0x0000, 0x0000, 0xcec5, 0xcec1, 0xaea4, 0x0000, 0x0000, + 0xcecf, 0xae7e, 0xd17d, 0xcec8, 0x0000, 0xd17c, 0xcec3, 0xcecc, + 0x0000, 0x0000, 0xabec, 0xaea1, 0xabf2, 0xaea2, 0xced0, 0xd17e, + 0xabeb, 0xaea6, 0xabf1, 0xabf0, 0xabef, 0xaea5, 0xced1, 0xaea7, + 0xabea, 0x0000, 0xcec2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xb176, + 0xd1a4, 0xd1a6, 0x0000, 0xd1a8, 0xaea8, 0xaeae, 0xd553, 0xd1ac, + 0xd1a3, 0xb178, 0xd551, 0x0000, 0xaead, 0xaeab, 0xd1ae, 0x0000, + 0xd552, 0x0000, 0xd1a5, 0x0000, 0xaeac, 0xd1a9, 0xaeaf, 0xd1ab, + 0x0000, 0x0000, 0xaeaa, 0xd1aa, 0xd1ad, 0xd1a7, 0x0000, 0xaea9, + 0xb179, 0x0000, 0xd1a2, 0xb177, 0x0000, 0x0000, 0x0000, 0x0000, + 0xb17a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xd555, 0xd55e, 0xb464, 0x0000, 0xb17c, 0xb1a3, 0xb465, 0xd560, + 0xb1aa, 0xd8f9, 0xd556, 0xb1a2, 0xb1a5, 0xb17e, 0xd554, 0xd562, + 0xd565, 0xd949, 0x0000, 0xd563, 0xd8fd, 0xb1a1, 0xb1a8, 0xb1ac, + 0xd55d, 0xd8f8, 0xd561, 0xb17b, 0xd8fa, 0xd564, 0xd8fc, 0xd559, + 0x0000, 0xb462, 0x0000, 0xd557, 0xd558, 0xb1a7, 0x0000, 0x0000, + 0xb1a6, 0xd55b, 0xb1ab, 0xd55f, 0xb1a4, 0xd55c, 0x0000, 0xb1a9, + 0xb466, 0xb463, 0xd8fb, 0x0000, 0xd55a, 0x0000, 0xb17d, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xb46b, 0xb46f, 0xd940, 0xb751, 0xb46d, 0xd944, 0xb471, 0xdd65, + 0xd946, 0xb753, 0xb469, 0xb46c, 0xd947, 0x0000, 0xd948, 0xd94e +}; + +static const unsigned short big5_from_unicode_61[] = { + 0xb473, 0xb754, 0x0000, 0xd94a, 0xd94f, 0xd943, 0xb75e, 0x0000, + 0xb755, 0xb472, 0xd941, 0xd950, 0x0000, 0xb75d, 0xb470, 0xb74e, + 0xd94d, 0x0000, 0xb474, 0xd945, 0xd8fe, 0xb46a, 0xd942, 0x0000, + 0xd94b, 0x0000, 0xb74d, 0xb752, 0xb467, 0xd94c, 0x0000, 0xb750, + 0x0000, 0x0000, 0x0000, 0xb468, 0x0000, 0x0000, 0x0000, 0xb75c, + 0xe1c3, 0xdd70, 0x0000, 0xdd68, 0xe1c2, 0x0000, 0xdd6c, 0xdd6e, + 0x0000, 0x0000, 0xdd6b, 0x0000, 0xb75b, 0x0000, 0xdd6a, 0xb75f, + 0x0000, 0x0000, 0x0000, 0xe1d2, 0x0000, 0x0000, 0xb75a, 0xba40, + 0xdd71, 0xe1c4, 0x0000, 0x0000, 0xb758, 0xdd69, 0xdd6d, 0xb9fe, + 0xb74f, 0xdd66, 0xdd67, 0xba41, 0xb757, 0xb759, 0xb756, 0xdd6f, + 0x0000, 0x0000, 0xe1c8, 0xe1c9, 0xe1ce, 0xbc7d, 0xe1d5, 0x0000, + 0xba47, 0x0000, 0xba46, 0xe1d0, 0x0000, 0xbc7c, 0xe1c5, 0xba45, + 0x0000, 0xe1d4, 0xba43, 0xba44, 0x0000, 0xe1d1, 0xe5aa, 0xbc7a, + 0xb46e, 0x0000, 0xe1d3, 0xbca3, 0xe1cb, 0x0000, 0xbc7b, 0x0000, + 0xbca2, 0xe1c6, 0xe1ca, 0xe1c7, 0xe1cd, 0xba48, 0xbc79, 0xba42, + 0x0000, 0xe57a, 0xe1cf, 0x0000, 0xbca1, 0x0000, 0xbca4, 0x0000, + 0xe1cc, 0x0000, 0xbc7e, 0xe579, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xe57e, 0xbece, 0xe578, 0xe9a3, 0xe5a9, 0xbca8, 0x0000, + 0xbca6, 0xbecc, 0xe5a6, 0xe5a2, 0xbcac, 0x0000, 0xe978, 0x0000, + 0x0000, 0x0000, 0xbcaa, 0xe5a1, 0x0000, 0xe976, 0x0000, 0xe5a5, + 0x0000, 0xe5a8, 0xe57d, 0x0000, 0xbcab, 0x0000, 0x0000, 0xbca5, + 0xe977, 0xbecd, 0xe5a7, 0xbca7, 0xbca9, 0xe5a4, 0xbcad, 0xe5a3, + 0xe57c, 0xe57b, 0xbecb, 0xe5ab, 0xe97a, 0xece0, 0xbed0, 0x0000, + 0xe9a2, 0x0000, 0xe97e, 0x0000, 0xece1, 0x0000, 0xbed1, 0xe9a1, + 0x0000, 0xe97c, 0xc0b4, 0xecdf, 0x0000, 0xe979, 0xe97b, 0xc0b5, + 0xbed3, 0xc0b3, 0xbed2, 0xc0b7, 0xe97d, 0xbecf, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xefcf, 0x0000, + 0xefc7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xece7, 0xefc8, + 0xece3, 0x0000, 0x0000, 0xc256, 0xece5, 0xece4, 0xc0b6, 0xece2, + 0xece6, 0xefd0, 0xefcc, 0xefce, 0x0000, 0xefc9, 0xefca, 0x0000, + 0xefcd, 0xefcb, 0xc367, 0x0000, 0x0000, 0xc36a, 0xc369, 0xc368, + 0xc461, 0xf44a, 0xc462, 0xf241, 0xc4df, 0xf5cc, 0xc4e0, 0xc574 +}; + +static const unsigned short big5_from_unicode_62[] = { + 0xc5ca, 0xf7d9, 0x0000, 0xf7da, 0xf7db, 0x0000, 0x0000, 0xf9ba, + 0xa4e0, 0xc97c, 0xa5b3, 0x0000, 0xa6a6, 0xa6a7, 0xa6a5, 0x0000, + 0xa6a8, 0xa7da, 0xa7d9, 0x0000, 0xccb1, 0xa9cf, 0xa9ce, 0x0000, + 0x0000, 0xd1af, 0xb1ad, 0xb1ae, 0x0000, 0x0000, 0x0000, 0xb475, + 0xdd72, 0xb760, 0xb761, 0xdd74, 0xdd76, 0xdd75, 0x0000, 0xe1d7, + 0x0000, 0xe1d6, 0xba49, 0xe1d8, 0x0000, 0xe5ac, 0xbcae, 0x0000, + 0xbed4, 0x0000, 0xc0b8, 0xc257, 0xc0b9, 0x0000, 0xa4e1, 0x0000, + 0x0000, 0x0000, 0xcae6, 0x0000, 0x0000, 0xccb2, 0xa9d1, 0xa9d0, + 0xa9d2, 0xabf3, 0xced2, 0xced3, 0x0000, 0x0000, 0xd1b0, 0xaeb0, + 0xb1af, 0xb476, 0xd951, 0xa4e2, 0x0000, 0xa47e, 0xa4e3, 0x0000, + 0xc97d, 0xa5b7, 0xa5b6, 0xa5b4, 0xa5b5, 0x0000, 0x0000, 0x0000, + 0xa6ab, 0xc9e9, 0xc9eb, 0xa6aa, 0xc9e3, 0x0000, 0xc9e4, 0x0000, + 0xc9ea, 0xc9e6, 0xc9e8, 0xa6a9, 0xc9e5, 0xc9ec, 0xc9e7, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa7e1, 0xa7ea, 0xa7e8, + 0xcaf0, 0xcaed, 0xcaf5, 0xa7e6, 0xcaf6, 0x0000, 0xa7df, 0xcaf3, + 0x0000, 0xa7e5, 0xcaef, 0xcaee, 0xa7e3, 0xcaf4, 0xa7e4, 0xa9d3, + 0xa7de, 0xcaf1, 0x0000, 0xcae7, 0xa7db, 0x0000, 0xa7ee, 0xcaec, + 0xcaf2, 0xa7e0, 0xa7e2, 0x0000, 0xcae8, 0x0000, 0xcae9, 0xcaea, + 0x0000, 0xa7ed, 0xa7e7, 0xa7ec, 0xcaeb, 0xa7eb, 0xa7dd, 0xa7dc, + 0xa7e9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xa9e1, 0xccbe, 0xccb7, 0xa9dc, 0xa9ef, 0xccb3, 0xccba, 0xccbc, + 0xccbf, 0xa9ea, 0x0000, 0xccbb, 0xccb4, 0xa9e8, 0xccb8, 0x0000, + 0xccc0, 0xa9d9, 0x0000, 0xccbd, 0xa9e3, 0xa9e2, 0xccb6, 0xa9d7, + 0x0000, 0x0000, 0xa9d8, 0x0000, 0xa9d6, 0x0000, 0xa9ee, 0xa9e6, + 0xa9e0, 0xa9d4, 0xccb9, 0xa9df, 0xa9d5, 0xa9e7, 0xa9f0, 0xced4, + 0xa9e4, 0xccb5, 0xa9da, 0xa9dd, 0xa9de, 0x0000, 0xa9ec, 0xa9ed, + 0xa9eb, 0xa9e5, 0xa9e9, 0xa9db, 0xabf4, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xceda, 0xac41, 0xabf8, 0xabfa, 0xac40, + 0xcee6, 0xabfd, 0xd1b1, 0xaeb1, 0xac43, 0xced7, 0xcedf, 0xabfe, + 0xcede, 0xcedb, 0xcee3, 0xcee5, 0xabf7, 0xabfb, 0xac42, 0xaeb3 +}; + +static const unsigned short big5_from_unicode_63[] = { + 0xcee0, 0xabf9, 0xac45, 0xced9, 0x0000, 0x0000, 0x0000, 0xabfc, + 0xaeb2, 0xabf6, 0x0000, 0xced6, 0xcedd, 0xced5, 0xced8, 0xcedc, + 0xd1b2, 0xac44, 0x0000, 0xcee1, 0xcee2, 0xcee4, 0xabf5, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xaec1, 0xd1be, 0xaebf, 0xaec0, 0xd1b4, 0xd1c4, 0x0000, 0xaeb6, + 0x0000, 0x0000, 0xd566, 0xd1c6, 0xd1c0, 0x0000, 0xd1b7, 0x0000, + 0xd1c9, 0xd1ba, 0xaebc, 0xd57d, 0xd1bd, 0xaebe, 0xaeb5, 0x0000, + 0xd1cb, 0xd1bf, 0xaeb8, 0xd1b8, 0xd1b5, 0xd1b6, 0xaeb9, 0xd1c5, + 0xd1cc, 0xaebb, 0xd1bc, 0xd1bb, 0xaec3, 0xaec2, 0xaeb4, 0xaeba, + 0xaebd, 0xd1c8, 0x0000, 0x0000, 0xd1c2, 0xaeb7, 0xd1b3, 0xd1ca, + 0xd1c1, 0xd1c3, 0xd1c7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xd567, 0x0000, 0xb1b7, + 0xb1cb, 0xb1ca, 0x0000, 0xb1bf, 0x0000, 0xd579, 0xd575, 0xd572, + 0xd5a6, 0xb1ba, 0xb1b2, 0x0000, 0x0000, 0xd577, 0xb4a8, 0xb1b6, + 0xd5a1, 0x0000, 0xb1cc, 0xb1c9, 0xd57b, 0xd56a, 0x0000, 0x0000, + 0xb1c8, 0xd5a3, 0xd569, 0xb1bd, 0xb1c1, 0xd5a2, 0x0000, 0xd573, + 0xb1c2, 0xb1bc, 0xd568, 0x0000, 0xb478, 0xd5a5, 0xd571, 0xb1c7, + 0xd574, 0xd5a4, 0xb1c6, 0x0000, 0xd952, 0x0000, 0xb1b3, 0xd56f, + 0xb1b8, 0xb1c3, 0x0000, 0xb1be, 0xd578, 0xd56e, 0xd56c, 0xd57e, + 0xb1b0, 0xb1c4, 0xb1b4, 0xb477, 0xd57c, 0xb1b5, 0x0000, 0xb1b1, + 0xb1c0, 0xb1bb, 0xb1b9, 0xd570, 0xb1c5, 0xd56d, 0xd57a, 0xd576, + 0xd954, 0xd953, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xd56b, 0xd964, 0x0000, + 0xb47a, 0x0000, 0xd96a, 0xd959, 0xd967, 0xdd77, 0xb47d, 0xd96b, + 0xd96e, 0xb47c, 0xd95c, 0xd96d, 0xd96c, 0xb47e, 0xd955, 0xb479, + 0xb4a3, 0x0000, 0xb4a1, 0xd969, 0x0000, 0xd95f, 0xb4a5, 0xd970, + 0xd968, 0xd971, 0xb4ad, 0xb4ab, 0xd966, 0xd965, 0x0000, 0xd963, + 0xd95d, 0xb4a4, 0x0000, 0xb4a2, 0xd1b9, 0xd956, 0x0000, 0xddb7, + 0xd957, 0xb47b, 0xb4aa, 0xdd79, 0x0000, 0xb4a6, 0xb4a7, 0xd958, + 0xd96f, 0xdd78, 0xd960, 0xd95b, 0xb4a9, 0xd961, 0xd95e, 0x0000, + 0x0000, 0xb4ae, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5_from_unicode_64[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xb770, 0x0000, + 0x0000, 0xdd7c, 0xddb1, 0xddb6, 0xddaa, 0xb76c, 0xddbb, 0xb769, + 0xdd7a, 0x0000, 0xdd7b, 0xb762, 0xb76b, 0xdda4, 0xb76e, 0xb76f, + 0xdda5, 0x0000, 0xddb2, 0xddb8, 0xb76a, 0x0000, 0xb764, 0xdda3, + 0xdd7d, 0xddba, 0xdda8, 0xdda9, 0xdd7e, 0xddb4, 0xddab, 0xddb5, + 0xddad, 0x0000, 0xb765, 0xe1d9, 0xb768, 0xb766, 0xddb9, 0xddb0, + 0xddac, 0x0000, 0x0000, 0xdda1, 0xba53, 0xddaf, 0xb76d, 0xdda7, + 0x0000, 0xdda6, 0x0000, 0x0000, 0x0000, 0xb767, 0xb763, 0xe1ee, + 0xddb3, 0xddae, 0x0000, 0xdda2, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xe1e9, 0x0000, 0xe1da, 0xe1e5, 0x0000, + 0xe1ec, 0xba51, 0xb4ac, 0xe1ea, 0xba4c, 0x0000, 0x0000, 0x0000, + 0xba4b, 0xe1f1, 0x0000, 0xe1db, 0xe1e8, 0xe1dc, 0xe1e7, 0xba4f, + 0xe1eb, 0xd962, 0x0000, 0x0000, 0x0000, 0xe1f2, 0xe1e3, 0xba52, + 0xe5ba, 0xbcaf, 0x0000, 0xe1f0, 0xe1ef, 0xba54, 0xe5ad, 0xbcb0, + 0xe5ae, 0x0000, 0xe1df, 0xe1e0, 0xe1dd, 0xe1e2, 0xe1de, 0xe1f3, + 0xba4e, 0xbcb1, 0xba50, 0xba55, 0x0000, 0xe1e1, 0x0000, 0xe1ed, + 0x0000, 0x0000, 0xe1e6, 0x0000, 0x0000, 0xe5b1, 0x0000, 0xba4a, + 0xbcb4, 0xe9aa, 0xe5b6, 0xe5b5, 0xe5b7, 0x0000, 0x0000, 0xe5b4, + 0xbcb5, 0x0000, 0xbcbb, 0xbcb8, 0x0000, 0xbcb9, 0xe5af, 0xe5b2, + 0xe5bc, 0xbcc1, 0xbcbf, 0x0000, 0xe5b3, 0xd95a, 0xbcb2, 0xe5b9, + 0xe5b0, 0x0000, 0xbcc2, 0xe5b8, 0xba4d, 0xbcb7, 0xe1e4, 0x0000, + 0x0000, 0xbcba, 0x0000, 0xbcbe, 0xbcc0, 0xbcbd, 0xbcbc, 0x0000, + 0xbcb6, 0xe5bb, 0xbcb3, 0xbcc3, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xbed8, 0xbed9, 0xe9a9, 0xbee2, 0xbedf, + 0x0000, 0xbed6, 0xbedd, 0xe9ab, 0xbedb, 0xbed5, 0x0000, 0xbedc, + 0x0000, 0xe9a8, 0xc0bb, 0xbed7, 0x0000, 0xbede, 0xc0ba, 0xe9a7, + 0xe9a6, 0x0000, 0xbee0, 0x0000, 0xbee1, 0x0000, 0xe9a5, 0xe9a4, + 0xc0bc, 0xe9ae, 0xbeda, 0xe9ac, 0x0000, 0x0000, 0x0000, 0x0000, + 0xc0bd, 0x0000, 0xc0c2, 0xecea, 0xecec, 0x0000, 0xc0bf, 0x0000, + 0xeced, 0xece9, 0x0000, 0xeceb, 0xc0c0, 0xc0c3, 0x0000, 0xece8, + 0xc0be, 0xc0c1, 0xc259, 0xe9ad, 0xc258, 0x0000, 0x0000, 0xc25e, + 0xefd4, 0x0000, 0xc25c, 0xc25d, 0xefd7, 0xefd3, 0xc25a, 0xefd1 +}; + +static const unsigned short big5_from_unicode_65[] = { + 0xc36b, 0xefd5, 0x0000, 0xefd6, 0xefd2, 0x0000, 0xc25b, 0xf242, + 0x0000, 0xf245, 0x0000, 0x0000, 0xf246, 0xf244, 0xf247, 0xc36c, + 0xf243, 0x0000, 0x0000, 0xf44e, 0xc464, 0xf44d, 0xf44c, 0xf44b, + 0xc463, 0xc465, 0x0000, 0xf5cd, 0xc4e2, 0xc4e1, 0x0000, 0x0000, + 0xf6e1, 0xf6e0, 0xf6e3, 0xc5cb, 0xc575, 0xf7dd, 0xf6e2, 0x0000, + 0x0000, 0xf7dc, 0xc5cd, 0xc5cc, 0xc5f3, 0xf8a9, 0xf8ef, 0xa4e4, + 0x0000, 0x0000, 0xd972, 0xe9af, 0x0000, 0x0000, 0xa6ac, 0xcaf7, + 0xa7f1, 0xa7ef, 0x0000, 0xa7f0, 0x0000, 0xccc1, 0xa9f1, 0xac46, + 0x0000, 0xcee7, 0x0000, 0xcee8, 0x0000, 0xac47, 0xd1ce, 0x0000, + 0xaec4, 0xaec5, 0xd1cd, 0x0000, 0x0000, 0x0000, 0x0000, 0xb1d3, + 0x0000, 0xb1cf, 0x0000, 0xd5a7, 0xb1d6, 0xb1d5, 0xb1ce, 0xb1d1, + 0xb1d4, 0xb1d0, 0x0000, 0x0000, 0xd976, 0xb1cd, 0xb4af, 0x0000, + 0x0000, 0x0000, 0xb4b1, 0xb4b2, 0xd975, 0xd978, 0xb4b0, 0xd973, + 0xd977, 0x0000, 0xd974, 0x0000, 0xb771, 0x0000, 0x0000, 0xddbc, + 0x0000, 0x0000, 0xba56, 0xe1f4, 0xbee3, 0xbcc4, 0xe5bd, 0xbcc5, + 0xbcc6, 0xe5bf, 0xe5be, 0xe5c0, 0xe9b1, 0x0000, 0x0000, 0xe9b0, + 0xecef, 0xecee, 0xc0c4, 0xc0c5, 0xf248, 0x0000, 0x0000, 0xa4e5, + 0x0000, 0x0000, 0x0000, 0x0000, 0xd979, 0x0000, 0x0000, 0x0000, + 0xb4b4, 0xb4b3, 0xddbd, 0x0000, 0xefd8, 0xc4e3, 0xf7de, 0xa4e6, + 0x0000, 0xaec6, 0x0000, 0xb1d8, 0xb1d7, 0xd97a, 0xd97b, 0xb772, + 0xe1f5, 0xba57, 0xe9b2, 0x0000, 0xa4e7, 0xa5b8, 0x0000, 0xa9f2, + 0xccc2, 0x0000, 0xcee9, 0xac48, 0xb1d9, 0x0000, 0xd97c, 0xb4b5, + 0xb773, 0x0000, 0xe5c1, 0xe5c2, 0x0000, 0x0000, 0xecf0, 0xc25f, + 0xf8f0, 0xa4e8, 0x0000, 0xccc3, 0xa9f3, 0xac49, 0x0000, 0xceea, + 0x0000, 0xaec7, 0xd1d2, 0xd1d0, 0xd1d1, 0xaec8, 0xd1cf, 0x0000, + 0x0000, 0x0000, 0x0000, 0xb1db, 0xb1dc, 0xd5a8, 0xb1dd, 0xb1da, + 0xd97d, 0x0000, 0xd97e, 0xddbe, 0x0000, 0x0000, 0xba59, 0xba58, + 0x0000, 0x0000, 0xecf1, 0xefd9, 0x0000, 0xf24a, 0xf249, 0xf44f, + 0x0000, 0xc95e, 0xac4a, 0x0000, 0x0000, 0xa4e9, 0xa5b9, 0x0000, + 0xa6ae, 0xa6ad, 0x0000, 0x0000, 0xa6af, 0xa6b0, 0xc9ee, 0xc9ed, + 0xcaf8, 0xa7f2, 0xcafb, 0xcafa, 0xcaf9, 0xcafc, 0x0000, 0x0000, + 0x0000, 0x0000, 0xa9f4, 0xccc9, 0xccc5, 0xccce, 0x0000, 0x0000 +}; + +static const unsigned short big5_from_unicode_66[] = { + 0xa9fb, 0x0000, 0xa9f9, 0xccca, 0xccc6, 0xcccd, 0xa9f8, 0xaa40, + 0xccc8, 0xccc4, 0xa9fe, 0xcccb, 0xa9f7, 0xcccc, 0xa9fa, 0xa9fc, + 0xccd0, 0xcccf, 0xccc7, 0xa9f6, 0xa9f5, 0xa9fd, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xceef, 0xcef5, 0x0000, 0xac50, + 0xac4d, 0xceec, 0xcef1, 0x0000, 0xac53, 0xac4b, 0xcef0, 0xac4e, + 0xac51, 0x0000, 0x0000, 0xcef3, 0x0000, 0xac4c, 0xcef8, 0xac4f, + 0x0000, 0xac52, 0xceed, 0xcef2, 0xcef6, 0xceee, 0xceeb, 0x0000, + 0x0000, 0xcef7, 0xcef4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xaed0, 0xaec9, 0xaecc, 0x0000, 0xaecf, 0x0000, 0xd1d5, + 0x0000, 0xaeca, 0xd1d3, 0x0000, 0xaece, 0x0000, 0x0000, 0xaecb, + 0x0000, 0xd1d6, 0xaecd, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xd5ac, 0xb1df, 0xd5ab, 0xd5ad, 0xb1de, 0xb1e3, 0xd1d4, + 0x0000, 0xd5aa, 0xd5ae, 0x0000, 0xb1e0, 0xd5a9, 0xb1e2, 0x0000, + 0xb1e1, 0x0000, 0xd9a7, 0x0000, 0xd9a2, 0x0000, 0xb4b6, 0xb4ba, + 0xb4b7, 0xd9a5, 0xd9a8, 0x0000, 0xb4b8, 0x0000, 0xb4b9, 0xb4be, + 0xddc7, 0xd9a6, 0xb4bc, 0xd9a3, 0xd9a1, 0x0000, 0xb4bd, 0x0000, + 0xd9a4, 0x0000, 0x0000, 0x0000, 0xb779, 0x0000, 0xddbf, 0xb776, + 0xb777, 0xb775, 0xddc4, 0xddc3, 0xddc0, 0xb77b, 0x0000, 0x0000, + 0xddc2, 0xb4bb, 0x0000, 0x0000, 0xddc6, 0xddc1, 0xb778, 0xb774, + 0xb77a, 0xddc5, 0x0000, 0x0000, 0x0000, 0xba5c, 0x0000, 0xe1f8, + 0xe1f7, 0xe1f6, 0xba5a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xba5b, 0xe5c5, 0xe5c8, 0xbcc8, 0x0000, 0x0000, 0xbcc7, 0xe5c9, + 0xe5c4, 0xbcca, 0xe5c6, 0x0000, 0xbcc9, 0xe5c3, 0x0000, 0xe5c7, + 0xbee9, 0xbee6, 0xe9bb, 0xe9ba, 0x0000, 0xe9b9, 0xe9b4, 0x0000, + 0xe9b5, 0x0000, 0x0000, 0x0000, 0xbee7, 0x0000, 0xbee4, 0xbee8, + 0xe9b3, 0xbee5, 0xe9b6, 0xe9b7, 0xe9bc, 0x0000, 0x0000, 0xe9b8, + 0x0000, 0x0000, 0xecf2, 0x0000, 0x0000, 0x0000, 0xc0c7, 0x0000, + 0xefdc, 0xc0c6, 0xefda, 0xefdb, 0xc260, 0xc36e, 0xf24b, 0x0000, + 0xc36d, 0x0000, 0x0000, 0xf451, 0xf452, 0x0000, 0xc466, 0x0000, + 0xf450, 0xc4e4, 0x0000, 0xf7df, 0xc5ce, 0xf8aa, 0xf8ab, 0x0000, + 0xa4ea, 0x0000, 0xa6b1, 0xa6b2, 0xa7f3, 0x0000, 0xccd1, 0xac54, + 0xaed1, 0xb1e4, 0x0000, 0x0000, 0xb0d2, 0x0000, 0xb4bf, 0xb4c0 +}; + +static const unsigned short big5_from_unicode_67[] = { + 0xb3cc, 0xd9a9, 0x0000, 0xb77c, 0xe1fa, 0xe1f9, 0x0000, 0x0000, + 0xa4eb, 0xa6b3, 0xccd2, 0xaa42, 0x0000, 0xaa41, 0x0000, 0xcef9, + 0xcefa, 0x0000, 0xd1d7, 0xd1d8, 0xaed2, 0xaed3, 0x0000, 0xaed4, + 0xd5af, 0x0000, 0x0000, 0xb1e6, 0x0000, 0xb4c2, 0x0000, 0xb4c1, + 0xddc8, 0xdf7a, 0xe1fb, 0xe9bd, 0x0000, 0x0000, 0xc261, 0xc467, + 0xa4ec, 0x0000, 0xa5bc, 0xa5bd, 0xa5bb, 0xa5be, 0xa5ba, 0x0000, + 0x0000, 0xa6b6, 0x0000, 0xc9f6, 0xa6b5, 0xa6b7, 0x0000, 0x0000, + 0xc9f1, 0xc9f0, 0xc9f3, 0xc9f2, 0xc9f5, 0xa6b4, 0xc9ef, 0xc9f4, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xcafd, 0xa7fd, 0xcafe, + 0xcb43, 0xa7fc, 0x0000, 0xcb47, 0xcb42, 0xcb45, 0xa7f5, 0xa7f6, + 0xa7f7, 0xa7f8, 0x0000, 0xa840, 0x0000, 0xcb41, 0xa7fa, 0xa841, + 0x0000, 0xcb40, 0xcb46, 0x0000, 0xa7f9, 0xcb44, 0xa7fb, 0xa7f4, + 0xa7fe, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xaa57, 0x0000, 0xccd4, 0xaa43, 0x0000, 0xaa4d, + 0xaa4e, 0xaa46, 0xaa58, 0xaa48, 0xccdc, 0xaa53, 0xccd7, 0xaa49, + 0xcce6, 0xcce7, 0xccdf, 0xccd8, 0xaa56, 0xcce4, 0xaa51, 0xaa4f, + 0x0000, 0xcce5, 0x0000, 0xcce3, 0xccdb, 0xccd3, 0xccda, 0xaa4a, + 0x0000, 0xaa50, 0x0000, 0xaa44, 0xccde, 0xccdd, 0xccd5, 0x0000, + 0xaa52, 0xcce1, 0xccd6, 0xaa55, 0xcce8, 0xaa45, 0x0000, 0xaa4c, + 0xccd9, 0xcce2, 0xaa54, 0x0000, 0xaa47, 0xaa4b, 0x0000, 0xcce0, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xcf5b, 0xac5c, + 0xac69, 0x0000, 0xcf56, 0xcf4c, 0xac62, 0xcf4a, 0xac5b, 0xcf45, + 0xac65, 0xcf52, 0xcefe, 0xcf41, 0x0000, 0x0000, 0x0000, 0x0000, + 0xcf44, 0xcefb, 0xcf51, 0xcf61, 0xac60, 0xcf46, 0xcf58, 0x0000, + 0xcefd, 0xcf5f, 0xcf60, 0xcf63, 0xcf5a, 0xcf4b, 0xcf53, 0xac66, + 0xac59, 0xac61, 0xac6d, 0xac56, 0xac58, 0x0000, 0x0000, 0x0000, + 0xcf43, 0xac6a, 0xac63, 0xcf5d, 0xcf40, 0xac6c, 0xac67, 0xcf49, + 0x0000, 0x0000, 0xac6b, 0xcf50, 0xcf48, 0xac64, 0xcf5c, 0xcf54, + 0x0000, 0xac5e, 0xcf62, 0xcf47, 0xac5a, 0xcf59, 0xcf4f, 0xac5f, + 0xcf55, 0xac57, 0xcefc, 0xac68, 0xaee3, 0xac5d, 0xcf4e, 0xcf4d, + 0xcf42, 0x0000, 0xcf5e, 0x0000, 0xcf57, 0x0000, 0x0000, 0xac55 +}; + +static const unsigned short big5_from_unicode_68[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xd1ec, 0xaeea, 0xd1ed, 0x0000, 0xd1e1, 0xaedf, + 0xaeeb, 0x0000, 0xd1da, 0x0000, 0xd1e3, 0xd1eb, 0x0000, 0xd1d9, + 0xd1f4, 0xaed5, 0x0000, 0x0000, 0x0000, 0xd1f3, 0xd1ee, 0x0000, + 0xd1ef, 0xaedd, 0xaee8, 0xd1e5, 0x0000, 0xd1e6, 0xd1f0, 0xd1e7, + 0x0000, 0xd1e2, 0xd1dc, 0xd1dd, 0xd1ea, 0xd1e4, 0x0000, 0x0000, + 0xaed6, 0xaeda, 0xd1f2, 0xd1de, 0xaee6, 0xaee2, 0x0000, 0x0000, + 0xaee5, 0xaeec, 0xaedb, 0xaee7, 0xd1e9, 0xaee9, 0xaed8, 0x0000, + 0xaed7, 0xd1db, 0x0000, 0xd1df, 0xaee0, 0xd1f1, 0xd1e8, 0xd1e0, + 0xaee4, 0xaee1, 0x0000, 0xaed9, 0xaedc, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xd5c4, 0x0000, 0xd5b4, 0xd5b5, 0xd5b9, + 0x0000, 0xd5c8, 0xd5c5, 0x0000, 0xd5be, 0xd5bd, 0xb1ed, 0xd5c1, + 0xd5d0, 0xd5b0, 0x0000, 0xd5d1, 0xd5c3, 0xd5d5, 0xd5c9, 0xb1ec, + 0xd5c7, 0xb1e7, 0xb1fc, 0xb1f2, 0x0000, 0xb1f6, 0xb1f5, 0xd5b1, + 0x0000, 0xd5ce, 0xd5d4, 0xd5cc, 0xd5d3, 0x0000, 0x0000, 0xd5c0, + 0xd5b2, 0xd5d2, 0xd5c2, 0xb1ea, 0xb1f7, 0x0000, 0xd5cb, 0xb1f0, + 0x0000, 0x0000, 0x0000, 0xd5ca, 0xd5b3, 0xb1f8, 0x0000, 0xb1fa, + 0xd5cd, 0xb1fb, 0xb1e9, 0xd5ba, 0xd5cf, 0x0000, 0x0000, 0xb1ef, + 0xb1f9, 0xd5bc, 0xd5c6, 0xd5b7, 0xd5bb, 0xb1f4, 0xd5b6, 0xb1e8, + 0xb1f1, 0xb1ee, 0xd5bf, 0xaede, 0xd9c0, 0xb1eb, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xb1f3, 0x0000, 0xd9c3, 0xd9d9, + 0xd9ce, 0xb4d6, 0x0000, 0xb4d1, 0xd9bd, 0xb4d2, 0xd9cd, 0x0000, + 0xd9c6, 0xd9d3, 0xb4ce, 0xd9ab, 0xd9d5, 0xb4c4, 0xd9b3, 0xb4c7, + 0xb4c6, 0x0000, 0xb4d7, 0x0000, 0xd9ad, 0xd9cf, 0xd9d0, 0xb4c9, + 0xb4c5, 0xd9bb, 0x0000, 0xb4d0, 0xd9b6, 0x0000, 0xd9d1, 0xb4cc, + 0xd9c9, 0xd9d6, 0xd9b0, 0xd9b5, 0xd9af, 0x0000, 0xb4cb, 0xd9c2, + 0xddde, 0xd9b1, 0xb4cf, 0xd9ba, 0xd9d2, 0xb4ca, 0xd9b7, 0xd9b4, + 0xd9c5, 0xb4cd, 0xb4c3, 0xb4d9, 0xd9c8, 0xd9c7, 0x0000, 0x0000 +}; + +static const unsigned short big5_from_unicode_69[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0xd9ac, 0xb4c8, 0xd9d4, 0xd9bc, + 0xd9be, 0x0000, 0xd9cb, 0xd9ca, 0xd9aa, 0xb4d3, 0xb4d5, 0xd9b2, + 0xd9b9, 0xd9c1, 0xb4d4, 0xd9b8, 0xd9c4, 0xd9d7, 0x0000, 0xd9cc, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xd9d8, 0x0000, 0x0000, + 0x0000, 0x0000, 0xd9ae, 0x0000, 0x0000, 0x0000, 0x0000, 0xddf2, + 0xb7a6, 0x0000, 0xddf0, 0xdddb, 0xdde0, 0xddd9, 0x0000, 0xddec, + 0xddcb, 0xddd2, 0x0000, 0xddea, 0xddf4, 0xdddc, 0x0000, 0xddcf, + 0xdde2, 0xdde7, 0xddd3, 0x0000, 0xdde4, 0xddd0, 0x0000, 0x0000, + 0xddd7, 0xddd8, 0xb7a8, 0xddeb, 0xdde9, 0x0000, 0xddcc, 0xddee, + 0x0000, 0xddef, 0xddf1, 0xb7ac, 0xb7a4, 0x0000, 0xd5b8, 0xddd4, + 0xdde6, 0xddd5, 0xb7a1, 0xb7b1, 0xdded, 0xb7af, 0xb7ab, 0xddca, + 0xb7a3, 0x0000, 0xddcd, 0xb7b0, 0x0000, 0xdddd, 0xddc9, 0x0000, + 0xb7a9, 0xdde1, 0xddd1, 0xb7aa, 0xddda, 0xb77e, 0xb4d8, 0xdde3, + 0xd9bf, 0xddce, 0x0000, 0x0000, 0xdde8, 0xb7a5, 0xdde5, 0xb7a2, + 0xdddf, 0xb7ad, 0xddd6, 0xddf3, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xb7a7, 0xdec6, 0x0000, 0x0000, 0xb7ae, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe24a, 0xe248, 0x0000, + 0xe25e, 0xe246, 0x0000, 0xe258, 0xb77d, 0xba5f, 0xe242, 0xe25d, + 0x0000, 0xe247, 0xe255, 0xba64, 0xba5d, 0x0000, 0xe25b, 0x0000, + 0xe240, 0xe25a, 0x0000, 0xba6f, 0xe251, 0xe261, 0xba6d, 0xe249, + 0xba5e, 0xe24b, 0xe259, 0xba67, 0xe244, 0xba6b, 0xba61, 0xe24d, + 0xe243, 0xe1fc, 0x0000, 0xe257, 0xba68, 0xe260, 0xe1fd, 0xba65, + 0x0000, 0xe253, 0x0000, 0xba66, 0xe245, 0xe250, 0xe24c, 0xe24e, + 0x0000, 0xba60, 0xe25f, 0xba6e, 0xe24f, 0x0000, 0xe262, 0x0000, + 0x0000, 0xe1fe, 0xe254, 0xba63, 0xba6c, 0xba6a, 0xe241, 0xe256, + 0xba69, 0x0000, 0x0000, 0xba62, 0xe252, 0x0000, 0x0000, 0x0000, + 0x0000, 0xe25c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe5d5, 0x0000, 0xe5d1, 0xe5cd, 0xe5e1, 0xe5de, + 0xbccd, 0x0000, 0x0000, 0xe5e5, 0xe5d4, 0xbcd8, 0xe5db, 0x0000, + 0x0000, 0xe5d0, 0xe5da, 0xbcd5, 0xe5ee, 0x0000, 0xe5eb, 0xe5dd, + 0xe5ce, 0x0000, 0x0000, 0xe5e2, 0xe5e4, 0xbcd1, 0xe5d8, 0xe5d3 +}; + +static const unsigned short big5_from_unicode_6a[] = { + 0xe5ca, 0xbcce, 0xbcd6, 0x0000, 0xe5e7, 0xbcd7, 0xe5cb, 0xe5ed, + 0xe5e0, 0xe5e6, 0xbcd4, 0x0000, 0x0000, 0xe5e3, 0x0000, 0xe5ea, + 0x0000, 0xbcd9, 0x0000, 0xbcd3, 0xe5dc, 0xe5cf, 0xe5ef, 0xe5cc, + 0xe5e8, 0xbcd0, 0x0000, 0xe5d6, 0x0000, 0xe5d7, 0xbccf, 0xbccc, + 0xe5d2, 0xbcd2, 0x0000, 0xbccb, 0x0000, 0xe5e9, 0xe5ec, 0xe5d9, + 0xe9ca, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe9c2, 0x0000, 0xe9be, 0xbef6, 0x0000, 0x0000, + 0xbeeb, 0xbef0, 0xbeec, 0xe9cc, 0xe9d7, 0xbeea, 0xe9c4, 0xe9cd, + 0xe5df, 0xe9ce, 0x0000, 0x0000, 0xbef1, 0x0000, 0xe9dd, 0xbef5, + 0xbef8, 0xe9c0, 0x0000, 0xbef4, 0x0000, 0xe9db, 0xe9dc, 0xe9d2, + 0xe9d1, 0xe9c9, 0x0000, 0x0000, 0xe9d3, 0xe9da, 0xe9d9, 0x0000, + 0xbeef, 0xbeed, 0xe9cb, 0xe9c8, 0x0000, 0xe9c5, 0xe9d8, 0xbef7, + 0xe9d6, 0xbef3, 0xbef2, 0x0000, 0xe9d0, 0x0000, 0xe9bf, 0xe9c1, + 0xe9c3, 0xe9d5, 0xe9cf, 0xbeee, 0x0000, 0xe9c6, 0x0000, 0xe9d4, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe9c7, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xc0cf, 0xed45, + 0xc0c8, 0xecf5, 0x0000, 0xed41, 0xc0ca, 0xed48, 0x0000, 0xecfc, + 0x0000, 0xecf7, 0x0000, 0x0000, 0xed49, 0xecf3, 0xecfe, 0x0000, + 0xc0d1, 0xed44, 0xed4a, 0xecfd, 0xc0c9, 0xed40, 0xecf4, 0xc0d0, + 0x0000, 0x0000, 0xed47, 0xecf9, 0xc0cc, 0x0000, 0xecfb, 0xecf8, + 0xc0d2, 0xecfa, 0xc0cb, 0xc0ce, 0xed43, 0xecf6, 0xed46, 0x0000, + 0xed42, 0x0000, 0x0000, 0x0000, 0xc263, 0xefe7, 0xc268, 0xc269, + 0x0000, 0x0000, 0x0000, 0xc262, 0xefe6, 0x0000, 0xefe3, 0xefe4, + 0xc266, 0xefde, 0xefe2, 0xc265, 0x0000, 0xefdf, 0x0000, 0x0000, + 0x0000, 0x0000, 0xc267, 0xc264, 0x0000, 0xefdd, 0xefe1, 0xefe5, + 0x0000, 0x0000, 0x0000, 0xf251, 0xf24e, 0xf257, 0x0000, 0xf256, + 0xf254, 0xf24f, 0x0000, 0xc372, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf250, 0xc371, 0xc0cd, 0xf253, 0xc370, 0xf258, 0xf252, + 0xf24d, 0xefe0, 0x0000, 0x0000, 0x0000, 0xc36f, 0x0000, 0xf24c, + 0xf456, 0x0000, 0xf455, 0xf255, 0xc468, 0x0000, 0xf459, 0xf45a, + 0xf454, 0xf458, 0x0000, 0xf453, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf5d1, 0xf457, 0xc4e7, 0xc4e5, 0xf5cf, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5_from_unicode_6b[] = { + 0xf5d2, 0x0000, 0xf5ce, 0xf5d0, 0xc4e6, 0x0000, 0x0000, 0x0000, + 0xf6e5, 0xf6e6, 0xc576, 0xf6e4, 0x0000, 0x0000, 0x0000, 0xf7e2, + 0xc5cf, 0xf7e0, 0xf7e1, 0xf8ac, 0x0000, 0x0000, 0xc656, 0xf8f3, + 0xf8f1, 0xf8f2, 0xf8f4, 0x0000, 0x0000, 0x0000, 0xf9bb, 0x0000, + 0xa4ed, 0xa6b8, 0x0000, 0xaa59, 0x0000, 0xcce9, 0x0000, 0x0000, + 0xcf64, 0x0000, 0x0000, 0x0000, 0xd1f5, 0xd1f7, 0x0000, 0xd1f6, + 0x0000, 0xd1f8, 0xb1fd, 0xd5d7, 0xd1f9, 0x0000, 0xd5d6, 0xd5d8, + 0xd5d9, 0xd9da, 0xb4db, 0xd9db, 0xd9dd, 0xb4dc, 0xb4da, 0xd9dc, + 0x0000, 0xddfa, 0xddf8, 0xddf7, 0x0000, 0xddf6, 0xddf5, 0xb7b2, + 0xddf9, 0xba70, 0xe263, 0xe265, 0xba71, 0xe264, 0xbcdb, 0x0000, + 0xbcda, 0xe5f0, 0x0000, 0x0000, 0xe9df, 0xe9de, 0xe9e0, 0x0000, + 0x0000, 0xbef9, 0x0000, 0xed4b, 0xc0d3, 0x0000, 0xefe8, 0xc26a, + 0xf259, 0xc577, 0xa4ee, 0xa5bf, 0xa6b9, 0xa842, 0xaa5a, 0xaa5b, + 0x0000, 0x0000, 0xac6e, 0x0000, 0x0000, 0xd1fa, 0x0000, 0x0000, + 0x0000, 0x0000, 0xb7b3, 0x0000, 0x0000, 0x0000, 0xe6d1, 0xbefa, + 0xc26b, 0xa4ef, 0x0000, 0xa6ba, 0x0000, 0x0000, 0xcceb, 0xaa5c, + 0xccea, 0x0000, 0xcf65, 0xac6f, 0xcf66, 0x0000, 0xac70, 0x0000, + 0xd1fc, 0xaeee, 0xaeed, 0x0000, 0xd5de, 0xd5dc, 0xd5dd, 0xd5db, + 0x0000, 0xd5da, 0x0000, 0x0000, 0xd9de, 0xd9e1, 0xb4de, 0xd9df, + 0xb4dd, 0xd9e0, 0x0000, 0xddfb, 0x0000, 0x0000, 0xe266, 0xe267, + 0xe268, 0x0000, 0xe5f3, 0xe5f2, 0xbcdc, 0xe5f1, 0xe5f4, 0xe9e1, + 0x0000, 0x0000, 0xe9e2, 0xe9e3, 0x0000, 0xed4c, 0xc0d4, 0xc26c, + 0xf25a, 0x0000, 0xc4e8, 0xc95f, 0x0000, 0xac71, 0xcf67, 0xaeef, + 0x0000, 0x0000, 0xb1fe, 0x0000, 0xb4df, 0xd9e2, 0x0000, 0xb7b5, + 0xb7b4, 0x0000, 0x0000, 0xe269, 0xe26a, 0xbcdd, 0xbcde, 0xe9e5, + 0xe9e4, 0xefe9, 0xf7e3, 0xa4f0, 0xc960, 0xa5c0, 0x0000, 0xa843, + 0xcb48, 0x0000, 0xac72, 0xb7b6, 0xa4f1, 0x0000, 0xcf68, 0xac73, + 0xcf69, 0x0000, 0xc0d5, 0xa4f2, 0x0000, 0x0000, 0xccec, 0x0000, + 0xcf6a, 0x0000, 0xd242, 0xd241, 0xd1fe, 0x0000, 0xd1fd, 0xd243, + 0xd240, 0x0000, 0x0000, 0xb240, 0xb241, 0x0000, 0x0000, 0xb4e0, + 0xd9e3, 0x0000, 0xd9e4, 0xd9e5, 0x0000, 0x0000, 0x0000, 0xde41, + 0xde42, 0xde40, 0x0000, 0xddfd, 0xddfe, 0xb7b7, 0xe26b, 0xe5f7 +}; + +static const unsigned short big5_from_unicode_6c[] = { + 0xe5f6, 0xe5f5, 0xe5f8, 0xe9e7, 0xe9e6, 0xbefb, 0xe9e8, 0x0000, + 0xc0d6, 0xed4d, 0x0000, 0xefea, 0xf25b, 0xf6e7, 0x0000, 0xa4f3, + 0xa5c2, 0xa5c1, 0x0000, 0xaa5d, 0xc961, 0xc97e, 0xa6bb, 0x0000, + 0xc9f7, 0xcb49, 0xcb4a, 0xaa5e, 0x0000, 0xcced, 0x0000, 0xac74, + 0xcf6b, 0xcf6c, 0x0000, 0xaef0, 0xaef4, 0xd244, 0xaef3, 0xaef1, + 0xaef2, 0x0000, 0xd5df, 0xb242, 0xb4e3, 0x0000, 0xb4e1, 0xb4e2, + 0xd9e6, 0x0000, 0x0000, 0xba72, 0xa4f4, 0x0000, 0xc9a1, 0x0000, + 0xa5c3, 0x0000, 0x0000, 0xc9a4, 0x0000, 0x0000, 0xa5c6, 0xc9a3, + 0xa5c5, 0xa5c4, 0xa844, 0xc9a2, 0x0000, 0x0000, 0xc9f8, 0x0000, + 0x0000, 0x0000, 0xc9fc, 0xc9fe, 0xca40, 0xa6c5, 0xa6c6, 0xc9fb, + 0xa6c1, 0x0000, 0xc9f9, 0x0000, 0xc9fd, 0xa6c2, 0x0000, 0xa6bd, + 0x0000, 0xa6be, 0x0000, 0xa6c4, 0xc9fa, 0xa6bc, 0xa845, 0xa6bf, + 0xa6c0, 0xa6c3, 0x0000, 0x0000, 0x0000, 0xcb5b, 0xcb59, 0xcb4c, + 0xa851, 0xcb53, 0xa84c, 0xcb4d, 0x0000, 0xcb55, 0x0000, 0xcb52, + 0xa84f, 0xcb51, 0xa856, 0xcb5a, 0xa858, 0x0000, 0xa85a, 0x0000, + 0xcb4b, 0x0000, 0xa84d, 0xcb5c, 0x0000, 0xa854, 0xa857, 0x0000, + 0xcd45, 0xa847, 0xa85e, 0xa855, 0xcb4e, 0xa84a, 0xa859, 0xcb56, + 0xa848, 0xa849, 0xcd43, 0xcb4f, 0xa850, 0xa85b, 0xcb5d, 0xcb50, + 0xa84e, 0x0000, 0xa853, 0xccee, 0xa85c, 0xcb57, 0xa852, 0x0000, + 0xa85d, 0xa846, 0xcb54, 0xa84b, 0xcb58, 0xcd44, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xaa6a, 0xaa7a, 0xccf5, 0xaa71, 0x0000, + 0xcd4b, 0xaa62, 0x0000, 0xaa65, 0xcd42, 0x0000, 0xccf3, 0xccf7, + 0xaa6d, 0xaa6f, 0xccfa, 0xaa76, 0xaa68, 0xaa66, 0xaa67, 0xaa75, + 0xcd47, 0xaa70, 0xccf9, 0xccfb, 0xaa6e, 0xaa73, 0xccfc, 0xcd4a, + 0x0000, 0xac75, 0xaa79, 0x0000, 0xaa63, 0xcd49, 0x0000, 0xcd4d, + 0xccf8, 0xcd4f, 0xcd40, 0xaa6c, 0xccf4, 0xaa6b, 0xaa7d, 0xaa72, + 0x0000, 0xccf2, 0xcf75, 0xaa78, 0xaa7c, 0xcd41, 0xcd46, 0x0000, + 0xaa7e, 0xaa77, 0xaa69, 0xaa5f, 0x0000, 0xaa64, 0x0000, 0xccf6, + 0xaa60, 0xcd4e, 0x0000, 0xccf0, 0xccef, 0xccfd, 0xccf1, 0xaa7b, + 0xaef5, 0xaa74, 0xccfe, 0xaa61, 0x0000, 0xaca6, 0x0000, 0x0000, + 0x0000, 0xcd4c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5_from_unicode_6d[] = { + 0xcf7c, 0xcfa1, 0x0000, 0xcfa4, 0xcf77, 0x0000, 0x0000, 0xcfa7, + 0xcfaa, 0xcfac, 0xcf74, 0xac76, 0xac7b, 0xd249, 0xacad, 0xcfa5, + 0xcfad, 0xcf7b, 0xcf73, 0x0000, 0x0000, 0x0000, 0xd264, 0xac7e, + 0xcfa2, 0xcf78, 0xcf7a, 0xaca5, 0x0000, 0xcf7d, 0xac7d, 0xcf70, + 0xcfa8, 0x0000, 0xcfab, 0x0000, 0x0000, 0xac7a, 0x0000, 0xaca8, + 0xcf6d, 0xacaa, 0xac78, 0xacae, 0xcfa9, 0xcf6f, 0xacab, 0xd25e, + 0xcd48, 0xac7c, 0xac77, 0xcf76, 0xcf6e, 0xacac, 0xaca4, 0xcfa3, + 0xaca9, 0xaca7, 0xcf79, 0xaca1, 0xcf71, 0xaca2, 0xaca3, 0xcf72, + 0xcfa6, 0xac79, 0xcf7e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xd24c, 0xaefd, 0xaf43, 0x0000, 0x0000, 0x0000, 0xd255, 0xd25b, + 0xd257, 0xd24a, 0xd24d, 0xd246, 0xd247, 0xaf4a, 0xaefa, 0xd256, + 0xd25f, 0xaf45, 0xaef6, 0x0000, 0xaf40, 0xd24e, 0xaf42, 0xd24f, + 0xd259, 0x0000, 0x0000, 0x0000, 0xaf44, 0xd268, 0xd248, 0xaefc, + 0xaefb, 0xaf48, 0xd245, 0xd266, 0xd25a, 0xd267, 0xd261, 0xd253, + 0xd262, 0x0000, 0xd25c, 0xd265, 0xd263, 0xaf49, 0xd254, 0xaef9, + 0xaef8, 0xaf41, 0xaf47, 0xd260, 0xaf46, 0xd251, 0xb243, 0x0000, + 0xd269, 0xd250, 0xd24b, 0xaefe, 0xaf4b, 0xaef7, 0x0000, 0xd258, + 0xd25d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xb265, 0xd5e1, 0xd5e5, 0x0000, 0xb252, 0xb250, + 0x0000, 0x0000, 0xb247, 0xd5e3, 0xd5e2, 0xb25b, 0x0000, 0xd5e8, + 0xb255, 0x0000, 0xd5fa, 0xd647, 0xb244, 0xd5f7, 0xd5f0, 0xb267, + 0xd5e0, 0x0000, 0xd5fc, 0x0000, 0xb264, 0xb258, 0xb263, 0xb24e, + 0xd5ec, 0xd5fe, 0xd5f6, 0xb24f, 0xb249, 0xd645, 0x0000, 0xd5fd, + 0xd640, 0xb251, 0xb259, 0xd642, 0xd5ea, 0xd5fb, 0xd5ef, 0xd644, + 0xb25e, 0xb246, 0xb25c, 0xd5f4, 0xd5f2, 0xd5f3, 0xb253, 0xd5ee, + 0xd5ed, 0xb248, 0xd5e7, 0xd646, 0xb24a, 0xd5f1, 0xb268, 0x0000, + 0xb262, 0xd5e6, 0xb25f, 0xb25d, 0xb266, 0xd5f8, 0xb261, 0xd252, + 0xd5f9, 0xb260, 0xd641, 0xb245, 0xd5f5, 0xb257, 0xd5e9, 0xb256, + 0x0000, 0xb254, 0xb24c, 0xb24b, 0xd9e7, 0xd643, 0x0000, 0x0000 +}; + +static const unsigned short big5_from_unicode_6e[] = { + 0xd5eb, 0x0000, 0x0000, 0xd9fc, 0x0000, 0xb24d, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xb541, 0xb25a, 0xb4ee, 0xd9f6, 0xb4fc, 0x0000, 0xd9ea, + 0xb4eb, 0xb4e7, 0xda49, 0xb4ed, 0xb4f1, 0xb4ec, 0xb4f5, 0xda4d, + 0xda44, 0x0000, 0x0000, 0xd9f1, 0xb4fa, 0xb4f4, 0xd9fd, 0xb4e4, + 0xda4a, 0xda43, 0xb4e8, 0xd9f7, 0xb4f7, 0xda55, 0xda56, 0x0000, + 0xb4e5, 0xda48, 0xb4f9, 0xd9fb, 0xd9ed, 0xd9ee, 0xb4fd, 0xd9f2, + 0xd9f9, 0xd9f3, 0x0000, 0xb4fb, 0xb544, 0xd9ef, 0xd9e8, 0xd9e9, + 0x0000, 0xd9eb, 0xb4ea, 0xd9f8, 0x0000, 0xb4f8, 0xb542, 0x0000, + 0x0000, 0xd9fa, 0xda53, 0xda4b, 0xb4e6, 0xda51, 0xb4f2, 0x0000, + 0xb4f0, 0x0000, 0xda57, 0xb4ef, 0xda41, 0xd9f4, 0xd9fe, 0xb547, + 0xda45, 0xda42, 0xd9f0, 0xb543, 0xda4f, 0xda4c, 0xda54, 0xb4e9, + 0xda40, 0xb546, 0x0000, 0xda47, 0x0000, 0x0000, 0xb4f3, 0xb4f6, + 0x0000, 0xda46, 0xb545, 0xd9f5, 0xd5e4, 0x0000, 0x0000, 0xda50, + 0xda4e, 0xda52, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xd9ec, 0xb540, 0x0000, 0x0000, 0x0000, 0xde61, 0xde60, 0xde46, + 0xb7bd, 0x0000, 0xde5f, 0xde49, 0xde4a, 0x0000, 0xb7c7, 0xde68, + 0xb7c2, 0xde5e, 0x0000, 0xde43, 0xb7c8, 0xb7be, 0xde52, 0xde48, + 0xde4b, 0xde63, 0xb7b8, 0xde6a, 0xde62, 0xb7c1, 0xde57, 0xb7cc, + 0x0000, 0x0000, 0xb7cb, 0xb7c5, 0x0000, 0x0000, 0xde69, 0xb7b9, + 0xde55, 0xde4c, 0xde59, 0xde65, 0xb7cd, 0x0000, 0xb7bb, 0xde54, + 0x0000, 0xde4d, 0xb7c4, 0x0000, 0xb7c3, 0xde50, 0xde5a, 0xde64, + 0xde47, 0xde51, 0xb7bc, 0xde5b, 0xb7c9, 0xb7c0, 0xde4e, 0xb7bf, + 0xde45, 0xde53, 0xde67, 0xb4fe, 0xbab0, 0xde56, 0xe26c, 0xde58, + 0xde66, 0xb7c6, 0xde4f, 0xb7ba, 0xb7ca, 0xbcf0, 0xde44, 0x0000, + 0xde5d, 0x0000, 0x0000, 0x0000, 0xde5c, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xe2aa, 0xbaad, 0xe27d, 0xe2a4, 0xbaa2, + 0x0000, 0xe26e, 0xbaaf, 0x0000, 0xba77, 0xe26d, 0xe2b0, 0xbab1, + 0xe271, 0xe2a3, 0x0000, 0xe273, 0xe2b3, 0xe2af, 0xba75, 0xbaa1 +}; + +static const unsigned short big5_from_unicode_6f[] = { + 0xe653, 0xbaae, 0xba7d, 0xe26f, 0x0000, 0xe2ae, 0xbaa3, 0xe2ab, + 0xe2b8, 0xe275, 0xe27e, 0x0000, 0x0000, 0xe2b6, 0xe2ac, 0xba7c, + 0x0000, 0x0000, 0xe27c, 0xba76, 0xba74, 0xbaa8, 0x0000, 0x0000, + 0xe27a, 0xe277, 0xe278, 0x0000, 0xe2b2, 0x0000, 0xe2b7, 0xe2b5, + 0xba7a, 0xe2b9, 0xba7e, 0xbaa7, 0x0000, 0xe270, 0xe5fa, 0xe279, + 0x0000, 0xba78, 0xbaac, 0xbaa9, 0xba7b, 0xe2a5, 0xe274, 0xbaaa, + 0xe2a7, 0xbaa4, 0xbaa6, 0xba73, 0x0000, 0xe2a9, 0xe2a1, 0xe272, + 0xbaa5, 0xe2b1, 0xe2b4, 0xe27b, 0xe2a8, 0x0000, 0xba79, 0xbcdf, + 0xe2a6, 0xe5f9, 0x0000, 0xe2ad, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe276, 0xe644, + 0xe64e, 0xbce2, 0xe64d, 0xe659, 0xbce4, 0xe64b, 0x0000, 0xe64f, + 0xbcef, 0x0000, 0xe646, 0xbce7, 0x0000, 0xe652, 0xe9f0, 0xbcf3, + 0xbcf2, 0xe654, 0xe643, 0xe65e, 0xbced, 0x0000, 0xbce3, 0xe657, + 0x0000, 0xe65b, 0xe660, 0xe655, 0xe649, 0xbce6, 0xbce9, 0xbcf1, + 0xbcec, 0x0000, 0xe64c, 0xe2a2, 0x0000, 0x0000, 0xe648, 0xe65f, + 0xbce8, 0x0000, 0xbceb, 0xe661, 0xbce0, 0xe656, 0xe5fb, 0xe65c, + 0xc0df, 0x0000, 0xe64a, 0x0000, 0xbce1, 0xe645, 0xbce5, 0xe5fc, + 0xbaab, 0xe641, 0x0000, 0xe65a, 0xe642, 0xe640, 0xbcea, 0x0000, + 0xe658, 0x0000, 0xe5fe, 0xe651, 0xe650, 0xe65d, 0xe647, 0xbcee, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe9f3, 0x0000, + 0xbf49, 0xbefe, 0xea40, 0xe9eb, 0xbf41, 0xe9f7, 0xbf48, 0xbf43, + 0xe9f5, 0xed4f, 0xe9fb, 0xea42, 0xe9fa, 0xe9e9, 0xe9f8, 0xea44, + 0xea46, 0xbefd, 0xea45, 0xbf44, 0xbf4a, 0x0000, 0xbf47, 0x0000, + 0xe9fe, 0xbf46, 0xe9f9, 0x0000, 0xe9ed, 0xe9f2, 0x0000, 0xe9fd, + 0xbf45, 0xbf42, 0xbefc, 0xbf40, 0xe9f1, 0x0000, 0xe5fd, 0xe9ec, + 0xe9ef, 0xea41, 0xe9f4, 0xe9ea, 0xed4e, 0xea43, 0xe9ee, 0xe9fc, + 0x0000, 0x0000, 0x0000, 0x0000, 0xed51, 0xc0e3, 0x0000, 0x0000, + 0xc0d7, 0x0000, 0x0000, 0xc0db, 0xed53, 0xed59, 0xed57, 0xc0d9, + 0xc0da, 0xc0e1, 0xed5a, 0xed52, 0xc0dc, 0x0000, 0xed56, 0xed55, + 0xed5b, 0xc0e2, 0x0000, 0xc0dd, 0xc0e0, 0xed54, 0xc0e4, 0xc0de, + 0xc0e5, 0xc0d8, 0xed58, 0x0000, 0xed50, 0x0000, 0x0000, 0xeff7, + 0x0000, 0x0000, 0xc271, 0xeff4, 0xeff6, 0x0000, 0xc26f, 0xeff2 +}; + +static const unsigned short big5_from_unicode_70[] = { + 0xeff3, 0xefee, 0x0000, 0x0000, 0xe9f6, 0xefef, 0xc270, 0xefeb, + 0x0000, 0xc26d, 0xeff8, 0xc26e, 0xefec, 0xefed, 0xeff1, 0xc273, + 0x0000, 0xc272, 0x0000, 0x0000, 0xeff0, 0xc378, 0xf25f, 0xf265, + 0xc379, 0xf25c, 0xc376, 0xc373, 0xf267, 0xc377, 0x0000, 0xc374, + 0xf25e, 0xf261, 0xf262, 0xf263, 0xf266, 0x0000, 0xeff5, 0xf25d, + 0xc375, 0xf264, 0xf268, 0xf260, 0x0000, 0x0000, 0x0000, 0xf45d, + 0xc46a, 0xf460, 0xc46b, 0xf468, 0xf45f, 0xf45c, 0x0000, 0xf45e, + 0xf462, 0xf465, 0xf464, 0xf467, 0xf45b, 0x0000, 0xc469, 0xf463, + 0xf466, 0xf469, 0xf461, 0xf5d3, 0xf5d4, 0xf5d8, 0xf5d9, 0x0000, + 0xf5d6, 0xf5d7, 0xf5d5, 0x0000, 0xc4e9, 0x0000, 0x0000, 0x0000, + 0x0000, 0xc578, 0xf6eb, 0x0000, 0x0000, 0xf6e8, 0xf6e9, 0xf6ea, + 0xc579, 0x0000, 0xf7e5, 0xf7e4, 0x0000, 0xf8af, 0xc5f4, 0xf8ad, + 0xf8b0, 0xf8ae, 0xf8f5, 0xc657, 0xc665, 0xf9a3, 0xf96c, 0x0000, + 0xf9a2, 0xf9d0, 0xf9d1, 0xa4f5, 0x0000, 0x0000, 0x0000, 0x0000, + 0xa6c7, 0xca41, 0x0000, 0x0000, 0xcb5e, 0x0000, 0xa85f, 0x0000, + 0xa862, 0x0000, 0xcb5f, 0x0000, 0xa860, 0xa861, 0x0000, 0x0000, + 0x0000, 0x0000, 0xcd58, 0xcd5a, 0xcd55, 0xcd52, 0xcd54, 0x0000, + 0x0000, 0x0000, 0xaaa4, 0x0000, 0x0000, 0x0000, 0xaaa2, 0x0000, + 0x0000, 0xcd56, 0xaaa3, 0xcd53, 0xcd50, 0xaaa1, 0xcd57, 0x0000, + 0xcd51, 0xaaa5, 0xcd59, 0x0000, 0x0000, 0x0000, 0x0000, 0xcfaf, + 0x0000, 0xcfb3, 0x0000, 0x0000, 0xacb7, 0x0000, 0x0000, 0x0000, + 0x0000, 0xcfb6, 0x0000, 0xacaf, 0xacb2, 0xacb4, 0xacb6, 0xacb3, + 0xcfb2, 0xcfb1, 0x0000, 0xacb1, 0xcfb4, 0xcfb5, 0x0000, 0xcfae, + 0xacb5, 0x0000, 0xacb0, 0x0000, 0x0000, 0x0000, 0xcfb0, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xd277, 0xd278, 0xd279, + 0xaf50, 0x0000, 0xaf4c, 0xd26e, 0x0000, 0xd276, 0xd27b, 0xaf51, + 0x0000, 0xd26c, 0xd272, 0xd26b, 0xd275, 0x0000, 0x0000, 0xd271, + 0xaf4d, 0xaf4f, 0xd27a, 0x0000, 0xd26a, 0xd26d, 0xd273, 0x0000, + 0xd274, 0xd27c, 0xd270, 0x0000, 0xaf4e, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xb26d, + 0xd64e, 0x0000, 0x0000, 0xd650, 0xd64c, 0x0000, 0xd658, 0xd64a, + 0xd657, 0xb269, 0xd648, 0xda5b, 0xd652, 0xb26c, 0x0000, 0xd653 +}; + +static const unsigned short big5_from_unicode_71[] = { + 0xd656, 0x0000, 0xd65a, 0x0000, 0xd64f, 0x0000, 0xd654, 0x0000, + 0x0000, 0xb26a, 0xb26b, 0xd659, 0xd64d, 0xd649, 0xd65b, 0x0000, + 0xd651, 0x0000, 0x0000, 0xd655, 0x0000, 0x0000, 0x0000, 0xd64b, + 0x0000, 0xb548, 0xb549, 0xda65, 0xb54f, 0x0000, 0xda59, 0xda62, + 0xda58, 0xb54c, 0xda60, 0xda5e, 0x0000, 0xda5f, 0xb54a, 0x0000, + 0xda63, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xda5c, 0xda5a, + 0xb54b, 0xda5d, 0xda61, 0x0000, 0x0000, 0x0000, 0xb54d, 0x0000, + 0x0000, 0x0000, 0xda64, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xde70, 0xde77, 0xde79, 0xdea1, 0x0000, 0xb7da, 0xde6b, + 0x0000, 0xb7d2, 0x0000, 0xde7a, 0xb7d7, 0xdea2, 0xb7ce, 0x0000, + 0xde7d, 0x0000, 0xde6d, 0xde7e, 0xde6c, 0x0000, 0xb7dc, 0x0000, + 0xde78, 0xb7cf, 0xdea3, 0x0000, 0xb7d4, 0xde71, 0xb7d9, 0xde7c, + 0xde6f, 0xde76, 0xde72, 0xde6e, 0xb7d1, 0xb7d8, 0xb7d6, 0xb7d3, + 0xb7db, 0xb7d0, 0xde75, 0x0000, 0xb7d5, 0x0000, 0xb54e, 0x0000, + 0xde7b, 0x0000, 0xde73, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xde74, 0x0000, 0x0000, 0xe2c1, 0x0000, 0xbab4, 0x0000, 0x0000, + 0xe2bd, 0xe2c3, 0xe2bf, 0x0000, 0xbab6, 0xe2be, 0xe2c2, 0xe2ba, + 0x0000, 0xe2bc, 0xbab5, 0x0000, 0x0000, 0x0000, 0x0000, 0xe2c0, + 0xe2bb, 0x0000, 0xbab7, 0x0000, 0xbab2, 0x0000, 0x0000, 0xe2c4, + 0x0000, 0xbab3, 0xe667, 0xe664, 0xe670, 0xe66a, 0xe66c, 0xbcf4, + 0xe666, 0xe66e, 0x0000, 0x0000, 0xe66d, 0xe66b, 0x0000, 0xe671, + 0xbcf7, 0xe668, 0xe66f, 0x0000, 0xbcf5, 0x0000, 0x0000, 0xe663, + 0xe665, 0xbcf6, 0xe662, 0xe672, 0x0000, 0xe669, 0x0000, 0x0000, + 0xea4a, 0xbf51, 0x0000, 0x0000, 0xea55, 0xea53, 0xbf4b, 0xea49, + 0xea4c, 0xea4d, 0xea48, 0xbf55, 0xbf56, 0xea47, 0xea56, 0xea51, + 0xbf4f, 0xbf4c, 0xea50, 0xea4e, 0x0000, 0x0000, 0xbf52, 0xea52, + 0xbf4d, 0x0000, 0xbf4e, 0x0000, 0xea4f, 0xbf50, 0xea4b, 0x0000, + 0xea54, 0xbf53, 0xea57, 0xea58, 0xbf54, 0x0000, 0x0000, 0xc0e7, + 0xc0ee, 0xed5c, 0xed62, 0x0000, 0xed60, 0xc0ea, 0xc0e9, 0xc0e6, + 0xed5e, 0x0000, 0x0000, 0x0000, 0xc0ec, 0xc0eb, 0xc0e8, 0x0000, + 0xed61, 0xed5d, 0xed5f, 0x0000, 0xc0ed, 0x0000, 0x0000, 0x0000, + 0xc277, 0xeffb, 0x0000, 0xc274, 0xc275, 0xeffd, 0xc276, 0xeffa +}; + +static const unsigned short big5_from_unicode_72[] = { + 0x0000, 0xeff9, 0xf26c, 0xeffc, 0x0000, 0xf26d, 0xc37a, 0xf26b, + 0x0000, 0x0000, 0xf26a, 0x0000, 0xf269, 0xc37b, 0x0000, 0x0000, + 0xc46c, 0x0000, 0x0000, 0xf46a, 0xf46b, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf5dc, 0xf5db, 0xc4ea, 0x0000, 0xf5da, 0xf6ec, 0xf6ed, + 0x0000, 0x0000, 0xf7e6, 0xf8b1, 0x0000, 0x0000, 0xf8f6, 0xf9bc, + 0xc679, 0xf9c6, 0xa4f6, 0x0000, 0xaaa6, 0xaaa7, 0x0000, 0x0000, + 0xacb8, 0x0000, 0x0000, 0x0000, 0x0000, 0xc0ef, 0xa4f7, 0x0000, + 0xaaa8, 0xaf52, 0xb7dd, 0xa4f8, 0x0000, 0xb26e, 0xbab8, 0xc962, + 0x0000, 0xcfb7, 0xd27d, 0x0000, 0xe2c5, 0x0000, 0xc0f0, 0xa4f9, + 0xaaa9, 0xcfb8, 0xcfb9, 0xda66, 0xb550, 0x0000, 0x0000, 0xdea4, + 0x0000, 0x0000, 0xb7de, 0xe2c6, 0x0000, 0x0000, 0xbcf8, 0x0000, + 0xc37c, 0xa4fa, 0xda67, 0xa4fb, 0x0000, 0xa6c9, 0xca42, 0xa6c8, + 0xa865, 0xa864, 0xa863, 0xcb60, 0x0000, 0x0000, 0x0000, 0xaaaa, + 0x0000, 0xaaab, 0xcd5b, 0x0000, 0xcfba, 0x0000, 0xcfbd, 0xacba, + 0xcfbb, 0x0000, 0xacb9, 0xcfbc, 0xacbb, 0x0000, 0xd2a2, 0xd2a1, + 0xd27e, 0xaf53, 0x0000, 0xd65d, 0xd65e, 0xb26f, 0xd65c, 0xd65f, + 0xb552, 0xb270, 0x0000, 0x0000, 0xb551, 0xda6b, 0xda6a, 0x0000, + 0xda68, 0xda69, 0x0000, 0xda6c, 0xdea6, 0xdea5, 0xdea9, 0x0000, + 0xdea8, 0xdea7, 0xbab9, 0xe2c9, 0x0000, 0xe2c8, 0xbaba, 0xe2c7, + 0xe673, 0x0000, 0xe674, 0xbcf9, 0x0000, 0xea59, 0xea5a, 0x0000, + 0x0000, 0xf272, 0xc37d, 0xf271, 0xf270, 0xf26e, 0xf26f, 0xc4eb, + 0xf46c, 0xf6ee, 0xf8f7, 0x0000, 0xa4fc, 0x0000, 0xc9a5, 0xa5c7, + 0xc9a6, 0x0000, 0x0000, 0x0000, 0xca43, 0xca44, 0x0000, 0x0000, + 0x0000, 0x0000, 0xcb66, 0x0000, 0x0000, 0xcb62, 0x0000, 0xcb61, + 0xaaac, 0xcb65, 0xa867, 0xcb63, 0xa866, 0xcb67, 0xcb64, 0x0000, + 0x0000, 0xcd5f, 0xcfbe, 0xcd5d, 0xcd64, 0x0000, 0xaaad, 0x0000, + 0xaab0, 0xcd65, 0xcd61, 0x0000, 0xcd62, 0x0000, 0xcd5c, 0xaaaf, + 0xcd5e, 0xaaae, 0xcd63, 0x0000, 0xcd60, 0x0000, 0x0000, 0xcfc2, + 0xacbd, 0xacbe, 0x0000, 0xcfc5, 0xcfbf, 0x0000, 0xcfc4, 0x0000, + 0xcfc0, 0xacbc, 0xcfc3, 0xcfc1, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xd2a8, 0xd2a5, 0x0000, 0xd2a7, 0xaf58, + 0xaf57, 0xaf55, 0xd2a4, 0xd2a9, 0xaf54, 0xaf56, 0xd2a6, 0xd667 +}; + +static const unsigned short big5_from_unicode_73[] = { + 0xd2a3, 0xd2aa, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xd662, + 0xd666, 0x0000, 0xd665, 0xda6e, 0xda79, 0x0000, 0x0000, 0xd668, + 0x0000, 0xd663, 0xda6d, 0xb274, 0x0000, 0x0000, 0xb273, 0xd661, + 0xd664, 0xb275, 0x0000, 0xb272, 0xb271, 0xd660, 0xd669, 0x0000, + 0x0000, 0x0000, 0xda70, 0xda77, 0x0000, 0xb554, 0xda76, 0xda73, + 0x0000, 0xb556, 0x0000, 0x0000, 0x0000, 0xda75, 0x0000, 0x0000, + 0xda6f, 0xda71, 0xda74, 0xda72, 0xb555, 0xda78, 0xb553, 0xb7df, + 0x0000, 0x0000, 0xdead, 0xdeac, 0xdeaa, 0x0000, 0xb7e2, 0xb7e1, + 0xdeae, 0x0000, 0xdeab, 0xe2ca, 0xbabb, 0xb7e0, 0x0000, 0x0000, + 0x0000, 0xdeb0, 0xdeaf, 0x0000, 0xe2cd, 0xe2cb, 0xbcfa, 0x0000, + 0xbabc, 0xe2cc, 0xe676, 0x0000, 0x0000, 0x0000, 0x0000, 0xbcfb, + 0xe675, 0xe67e, 0xe67d, 0xe67b, 0x0000, 0xe67a, 0xe677, 0xe678, + 0xe679, 0xe67c, 0xe6a1, 0x0000, 0x0000, 0xea5f, 0xea5c, 0xea5d, + 0xbf57, 0xea5b, 0xea61, 0xea60, 0xea5e, 0x0000, 0xed64, 0xed65, + 0xc0f1, 0x0000, 0xc0f2, 0xed63, 0x0000, 0xc279, 0xeffe, 0xc278, + 0xc37e, 0x0000, 0xc3a1, 0xc46d, 0xf46e, 0xf46d, 0xf5dd, 0xf6ef, + 0xc57a, 0xf7e8, 0xf7e7, 0xf7e9, 0xa5c8, 0xcfc6, 0xaf59, 0xb276, + 0xd66a, 0xa5c9, 0xc9a7, 0xa4fd, 0x0000, 0x0000, 0xca45, 0x0000, + 0x0000, 0x0000, 0xcb6c, 0xcb6a, 0xcb6b, 0xcb68, 0xa868, 0xcb69, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xcd6d, 0x0000, 0xaab3, + 0xcd6b, 0xcd67, 0xcd6a, 0x0000, 0xcd66, 0xaab5, 0xcd69, 0x0000, + 0xaab2, 0xaab1, 0x0000, 0xaab4, 0xcd6c, 0xcd68, 0x0000, 0x0000, + 0x0000, 0x0000, 0xacc2, 0xacc5, 0xcfce, 0xcfcd, 0xcfcc, 0xacbf, + 0xcfd5, 0xcfcb, 0x0000, 0xacc1, 0xd2af, 0x0000, 0xcfd2, 0xcfd0, + 0xacc4, 0x0000, 0xcfc8, 0xcfd3, 0x0000, 0xcfca, 0xcfd4, 0xcfd1, + 0xcfc9, 0x0000, 0xacc0, 0xcfd6, 0xcfc7, 0xacc3, 0x0000, 0x0000, + 0x0000, 0x0000, 0xd2b4, 0xd2ab, 0xd2b6, 0x0000, 0xd2ae, 0xd2b9, + 0xd2ba, 0xd2ac, 0xd2b8, 0xd2b5, 0xd2b3, 0xd2b7, 0xaf5f, 0x0000, + 0xaf5d, 0x0000, 0x0000, 0xd2b1, 0x0000, 0xd2ad, 0x0000, 0xd2b0, + 0xd2bb, 0xd2b2, 0xaf5e, 0xcfcf, 0x0000, 0xaf5a, 0xaf5c, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xd678, 0xd66d, 0xd66b, 0x0000, + 0xd66c, 0x0000, 0xd673, 0x0000, 0xd674, 0xd670, 0xb27b, 0xd675 +}; + +static const unsigned short big5_from_unicode_74[] = { + 0xd672, 0xd66f, 0x0000, 0xb279, 0xd66e, 0xb277, 0xb27a, 0xd671, + 0xd679, 0xaf5b, 0xb278, 0xd677, 0xd676, 0xb27c, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xda7e, 0x0000, + 0x0000, 0x0000, 0xdaa1, 0xb560, 0x0000, 0xdaa7, 0x0000, 0x0000, + 0xdaa9, 0xdaa2, 0xb55a, 0xdaa6, 0xdaa5, 0xb55b, 0xb561, 0x0000, + 0xb562, 0xdaa8, 0xb558, 0xda7d, 0xda7b, 0xdaa3, 0xda7a, 0xb55f, + 0xda7c, 0xdaa4, 0xdaaa, 0xb559, 0xb55e, 0xb55c, 0xb55d, 0x0000, + 0x0000, 0x0000, 0xb557, 0x0000, 0x0000, 0x0000, 0x0000, 0xb7e9, + 0xdeb7, 0xb7e8, 0xdebb, 0x0000, 0xdeb1, 0x0000, 0xdebc, 0x0000, + 0x0000, 0x0000, 0xdeb2, 0xdeb3, 0x0000, 0xdebd, 0xdeba, 0xdeb8, + 0xdeb9, 0xdeb5, 0xdeb4, 0x0000, 0xdebe, 0xb7e5, 0x0000, 0xdeb6, + 0x0000, 0xb7ea, 0xb7e4, 0xb7eb, 0x0000, 0x0000, 0xb7e7, 0xb7e6, + 0x0000, 0x0000, 0xe2ce, 0xbabe, 0xbabd, 0x0000, 0x0000, 0xe2d3, + 0x0000, 0xbcfc, 0xbabf, 0x0000, 0x0000, 0xbac1, 0xe2d4, 0xb7e3, + 0xbac0, 0xe2d0, 0xe2d2, 0xe2cf, 0x0000, 0xe2d1, 0x0000, 0x0000, + 0x0000, 0xe6ab, 0x0000, 0x0000, 0xe6aa, 0xe6a7, 0xbd40, 0xea62, + 0xbd41, 0xe6a6, 0x0000, 0xbcfe, 0x0000, 0xe6a8, 0xe6a5, 0xe6a2, + 0xe6a9, 0xe6a3, 0xe6a4, 0xbcfd, 0x0000, 0x0000, 0x0000, 0x0000, + 0xed69, 0x0000, 0xea66, 0x0000, 0xea65, 0xea67, 0x0000, 0xed66, + 0xbf5a, 0x0000, 0xea63, 0x0000, 0xbf58, 0x0000, 0xbf5c, 0xbf5b, + 0xea64, 0xea68, 0x0000, 0xbf59, 0x0000, 0xed6d, 0xc0f5, 0xc27a, + 0xc0f6, 0xc0f3, 0xed6a, 0xed68, 0x0000, 0xed6b, 0x0000, 0xed6e, + 0xc0f4, 0xed6c, 0xed67, 0x0000, 0x0000, 0xf042, 0xf045, 0xf275, + 0xf040, 0x0000, 0xf46f, 0xf046, 0x0000, 0xc3a2, 0xf044, 0xc27b, + 0xf041, 0xf043, 0xf047, 0xf276, 0x0000, 0xf274, 0x0000, 0x0000, + 0x0000, 0x0000, 0xc3a3, 0xf273, 0x0000, 0x0000, 0x0000, 0xc46e, + 0x0000, 0x0000, 0x0000, 0x0000, 0xc4ed, 0xf6f1, 0xc4ec, 0xf6f3, + 0xf6f0, 0xf6f2, 0xc5d0, 0xf8b2, 0xa5ca, 0xcd6e, 0xd2bc, 0xd2bd, + 0xb27d, 0xdebf, 0xbf5d, 0xc3a4, 0xc57b, 0xf8b3, 0xa5cb, 0x0000, + 0xcd6f, 0xa260, 0x0000, 0x0000, 0xcfd7, 0x0000, 0xcfd8, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xd2be, 0xd2bf, 0xb27e, 0xb2a1, + 0x0000, 0x0000, 0x0000, 0xdaab, 0x0000, 0xdec2, 0xdec1, 0xdec0 +}; + +static const unsigned short big5_from_unicode_75[] = { + 0xe2d5, 0x0000, 0xe2d6, 0xe2d7, 0xbac2, 0x0000, 0x0000, 0xe6ad, + 0xe6ac, 0x0000, 0x0000, 0xea69, 0xbf5e, 0xbf5f, 0x0000, 0xed72, + 0xed6f, 0xed70, 0xed71, 0xf049, 0xf048, 0xc27c, 0xf277, 0xf5de, + 0xa5cc, 0x0000, 0xacc6, 0x0000, 0xb2a2, 0xdec3, 0x0000, 0xa5cd, + 0x0000, 0xd2c0, 0xb2a3, 0x0000, 0x0000, 0xb563, 0xb564, 0x0000, + 0xa5ce, 0xa5cf, 0xca46, 0xa86a, 0xa869, 0xacc7, 0xcfd9, 0xdaac, + 0xa5d0, 0xa5d1, 0xa5d2, 0xa5d3, 0x0000, 0x0000, 0x0000, 0xa86b, + 0xa86c, 0xcb6e, 0xcb6d, 0x0000, 0x0000, 0xaab6, 0xcd72, 0xcd70, + 0xcd71, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xcfda, + 0xcfdb, 0x0000, 0x0000, 0xaccb, 0xacc9, 0x0000, 0xacca, 0xacc8, + 0x0000, 0x0000, 0x0000, 0x0000, 0xaf60, 0x0000, 0x0000, 0x0000, + 0x0000, 0xaf64, 0xaf63, 0xd2c1, 0xaf62, 0xaf61, 0x0000, 0xd2c2, + 0x0000, 0x0000, 0xb2a6, 0xd67b, 0xd67a, 0xb2a4, 0xb2a5, 0x0000, + 0x0000, 0x0000, 0xb566, 0xb565, 0xdaae, 0x0000, 0x0000, 0xdaad, + 0xb2a7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xb7ed, 0xdec5, + 0xb7ee, 0xdec4, 0x0000, 0x0000, 0x0000, 0xe2d8, 0xe6ae, 0xbd42, + 0xea6a, 0x0000, 0x0000, 0x0000, 0xed73, 0x0000, 0xc3a6, 0xc3a5, + 0x0000, 0x0000, 0xc57c, 0xa5d4, 0xcd73, 0x0000, 0x0000, 0xb2a8, + 0xe2d9, 0xbac3, 0x0000, 0x0000, 0xcb6f, 0xcb70, 0x0000, 0x0000, + 0xcd74, 0xaab8, 0xaab9, 0x0000, 0x0000, 0xaab7, 0x0000, 0x0000, + 0x0000, 0x0000, 0xaccf, 0xacd0, 0xaccd, 0xacce, 0x0000, 0xcfdc, + 0x0000, 0x0000, 0xcfdd, 0xaccc, 0x0000, 0x0000, 0x0000, 0x0000, + 0xd2c3, 0x0000, 0xaf68, 0xaf69, 0x0000, 0xb2ab, 0xd2c9, 0x0000, + 0xaf6e, 0xaf6c, 0xd2ca, 0xd2c5, 0xaf6b, 0xaf6a, 0xaf65, 0xd2c8, + 0xd2c7, 0xd2c4, 0xaf6d, 0x0000, 0xd2c6, 0xaf66, 0x0000, 0xaf67, + 0x0000, 0x0000, 0xb2ac, 0xd6a1, 0xd6a2, 0xb2ad, 0xd67c, 0xd67e, + 0xd6a4, 0xd6a3, 0xd67d, 0x0000, 0xb2a9, 0xb2aa, 0x0000, 0xdab6, + 0xb56b, 0xb56a, 0xdab0, 0xb568, 0x0000, 0xdab3, 0xb56c, 0xdab4, + 0xb56d, 0xdab1, 0xb567, 0xb569, 0xdab5, 0x0000, 0xdab2, 0xdaaf, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xded2, 0x0000, 0xdec7, + 0xb7f0, 0xb7f3, 0xb7f2, 0xb7f7, 0xb7f6, 0xded3, 0xded1, 0xdeca, + 0xdece, 0xdecd, 0xb7f4, 0xded0, 0xdecc, 0xded4, 0xdecb, 0xb7f5 +}; + +static const unsigned short big5_from_unicode_76[] = { + 0xb7ef, 0xb7f1, 0x0000, 0xdec9, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe2db, 0xbac7, 0xe2df, 0xbac6, 0xe2dc, 0xbac5, 0x0000, 0xdec8, + 0xdecf, 0xe2de, 0x0000, 0xbac8, 0xe2e0, 0xe2dd, 0xe2da, 0x0000, + 0x0000, 0xe6b1, 0xe6b5, 0xe6b7, 0xe6b3, 0xe6b2, 0xe6b0, 0xbd45, + 0xbd43, 0xbd48, 0xbd49, 0xe6b4, 0xbd46, 0xe6af, 0xbd47, 0xbac4, + 0xe6b6, 0xbd44, 0x0000, 0x0000, 0x0000, 0xea6c, 0x0000, 0xea6b, + 0xea73, 0xea6d, 0xea72, 0xea6f, 0xbf60, 0xea71, 0x0000, 0x0000, + 0xbf61, 0x0000, 0xbf62, 0x0000, 0xea70, 0xea6e, 0x0000, 0x0000, + 0x0000, 0x0000, 0xc0f8, 0xed74, 0x0000, 0x0000, 0xc0f7, 0xed77, + 0xed75, 0xed76, 0x0000, 0x0000, 0xc0f9, 0x0000, 0x0000, 0x0000, + 0xf04d, 0x0000, 0xc2a1, 0xf04e, 0x0000, 0x0000, 0xc27d, 0xf04f, + 0xc27e, 0xf04c, 0xf050, 0x0000, 0xf04a, 0x0000, 0x0000, 0xc3a7, + 0xf278, 0xc3a8, 0xc46f, 0x0000, 0xf04b, 0xc470, 0x0000, 0x0000, + 0x0000, 0xc4ee, 0xf5df, 0x0000, 0xc57e, 0xf6f4, 0xc57d, 0x0000, + 0xf7ea, 0xc5f5, 0xc5f6, 0x0000, 0x0000, 0xf9cc, 0x0000, 0x0000, + 0xacd1, 0xcfde, 0x0000, 0xb56e, 0xb56f, 0xa5d5, 0xa6ca, 0xca47, + 0x0000, 0xcb71, 0xa86d, 0x0000, 0xaaba, 0x0000, 0xacd2, 0xacd3, + 0xacd4, 0xd6a6, 0xd2cb, 0xaf6f, 0x0000, 0x0000, 0xb2ae, 0xd6a5, + 0x0000, 0x0000, 0xdab8, 0xb571, 0x0000, 0xdab7, 0xb570, 0x0000, + 0x0000, 0xded5, 0xbd4a, 0xe6bb, 0xe6b8, 0xe6b9, 0xe6ba, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xed78, 0x0000, 0xf051, 0x0000, + 0x0000, 0x0000, 0xf471, 0xf470, 0x0000, 0xf6f5, 0xa5d6, 0xcd75, + 0xaf70, 0x0000, 0x0000, 0x0000, 0xb572, 0xded6, 0x0000, 0x0000, + 0xe2e1, 0x0000, 0xbd4b, 0xea74, 0x0000, 0xf052, 0xf472, 0xa5d7, + 0x0000, 0x0000, 0xaabb, 0xacd7, 0xcfdf, 0xacd8, 0xacd6, 0x0000, + 0xacd5, 0xd2cc, 0xaf71, 0x0000, 0x0000, 0xaf72, 0xaf73, 0x0000, + 0x0000, 0x0000, 0xb2b0, 0xd6a7, 0xb2af, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xdab9, 0xb2b1, 0xb573, 0xded7, 0xb7f8, 0xb7f9, + 0x0000, 0xbac9, 0x0000, 0xbaca, 0xbd4c, 0xbf64, 0xea75, 0xbf63, + 0x0000, 0xed79, 0xc0fa, 0x0000, 0xf053, 0xf473, 0xa5d8, 0xa86e, + 0xcd78, 0xcd77, 0xaabc, 0xcd76, 0xaabd, 0xcd79, 0x0000, 0xcfe5, + 0xacdb, 0xacda, 0xcfe7, 0xcfe6, 0xacdf, 0x0000, 0xacde, 0x0000 +}; + +static const unsigned short big5_from_unicode_77[] = { + 0x0000, 0xacd9, 0x0000, 0xcfe1, 0xcfe2, 0xcfe3, 0x0000, 0xace0, + 0xcfe0, 0xacdc, 0xcfe4, 0xacdd, 0x0000, 0x0000, 0x0000, 0x0000, + 0xd2cf, 0xd2d3, 0xd2d1, 0xd2d0, 0x0000, 0xd2d4, 0x0000, 0x0000, + 0x0000, 0xd2d5, 0xd2d6, 0xd2ce, 0x0000, 0xd2cd, 0x0000, 0xaf75, + 0xaf76, 0x0000, 0xd2d7, 0xd2d2, 0x0000, 0xd6b0, 0x0000, 0xd2d8, + 0xaf77, 0xaf74, 0x0000, 0x0000, 0x0000, 0xd6aa, 0x0000, 0xd6a9, + 0x0000, 0xd6ab, 0xd6ac, 0xd6ae, 0xd6ad, 0xd6b2, 0xb2b5, 0xb2b2, + 0xb2b6, 0xd6a8, 0xb2b7, 0xd6b1, 0xb2b4, 0xd6af, 0xb2b3, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xdabc, 0xdabe, 0xdaba, 0xdabb, + 0x0000, 0x0000, 0xdabf, 0xdac1, 0xdac2, 0xdabd, 0xdac0, 0xb574, + 0x0000, 0x0000, 0xdedb, 0x0000, 0xdee0, 0xded8, 0xdedc, 0x0000, + 0x0000, 0xdee1, 0xdedd, 0xb7fa, 0xb843, 0x0000, 0xb7fd, 0xded9, + 0xdeda, 0xbace, 0xb846, 0xb7fe, 0x0000, 0xb844, 0xb7fc, 0xdedf, + 0xb845, 0xdede, 0xb841, 0xb7fb, 0xb842, 0xdee2, 0xe2e6, 0xe2e8, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xb840, 0x0000, 0x0000, 0xe2e3, 0xbacc, 0xe2e9, 0xbacd, + 0xe2e7, 0xe2e2, 0xe2e5, 0xe2ea, 0xbacb, 0xe2e4, 0x0000, 0xbd4e, + 0xe6bf, 0xe6be, 0x0000, 0xbd51, 0xbd4f, 0xe6bc, 0xbd4d, 0xe6bd, + 0x0000, 0xbd50, 0x0000, 0x0000, 0x0000, 0xea7d, 0x0000, 0xeaa1, + 0x0000, 0xea7e, 0xea76, 0xea7a, 0xea79, 0xea77, 0xbf66, 0xbf67, + 0xbf65, 0xea78, 0xea7b, 0xea7c, 0x0000, 0xbf68, 0x0000, 0xc140, + 0xeda3, 0x0000, 0xc0fc, 0xed7b, 0xc0fe, 0xc141, 0x0000, 0x0000, + 0xc0fd, 0xeda2, 0xed7c, 0xc0fb, 0xeda1, 0xed7a, 0xed7e, 0xed7d, + 0x0000, 0x0000, 0xf055, 0xc2a4, 0xc2a5, 0xc2a2, 0x0000, 0xc2a3, + 0x0000, 0x0000, 0xf054, 0x0000, 0xf27b, 0x0000, 0x0000, 0xc3a9, + 0x0000, 0xf279, 0xf27a, 0x0000, 0xf474, 0xf477, 0xf475, 0xf476, + 0xf5e0, 0x0000, 0x0000, 0xc4ef, 0xf7eb, 0xf8b4, 0x0000, 0xc5f7, + 0xf8f8, 0xf8f9, 0xc666, 0xa5d9, 0xace1, 0x0000, 0xdac3, 0x0000, + 0xdee3, 0x0000, 0xa5da, 0xa86f, 0x0000, 0xaabe, 0x0000, 0xcfe8, + 0xcfe9, 0xaf78, 0x0000, 0x0000, 0xdac4, 0xb575, 0xb847, 0xc142, + 0xeda4, 0xf27c, 0xf478, 0xa5db, 0x0000, 0x0000, 0x0000, 0xcda1, + 0xcd7a, 0xcd7c, 0xcd7e, 0xcd7d, 0xcd7b, 0xaabf, 0x0000, 0x0000 +}; + +static const unsigned short big5_from_unicode_78[] = { + 0x0000, 0x0000, 0xace2, 0xcff2, 0x0000, 0xcfed, 0xcfea, 0x0000, + 0x0000, 0xcff1, 0x0000, 0x0000, 0xace4, 0xace5, 0xcff0, 0xcfef, + 0xcfee, 0xcfeb, 0xcfec, 0xcff3, 0xace3, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xaf7c, 0x0000, 0xafa4, + 0xafa3, 0xd2e1, 0xd2db, 0xd2d9, 0x0000, 0xafa1, 0xd6b9, 0xaf7a, + 0xd2de, 0xd2e2, 0xd2e4, 0xd2e0, 0xd2da, 0xafa2, 0xd2df, 0xd2dd, + 0xaf79, 0xd2e5, 0xafa5, 0xd2e3, 0xaf7d, 0xd2dc, 0x0000, 0xaf7e, + 0xaf7b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xb2b9, 0x0000, 0xd6ba, 0x0000, 0x0000, + 0xd6b3, 0xd6b5, 0xd6b7, 0x0000, 0xd6b8, 0xd6b6, 0xb2ba, 0x0000, + 0xd6bb, 0x0000, 0xd6b4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xdac8, 0xb576, 0xdad0, 0x0000, + 0xdac5, 0x0000, 0xdad1, 0x0000, 0xdac6, 0xdac7, 0x0000, 0x0000, + 0xdacf, 0xdace, 0xdacb, 0xb2b8, 0xb577, 0xdac9, 0xdacc, 0xb578, + 0xdacd, 0xdaca, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xdeee, 0x0000, 0xdef2, 0xb84e, 0x0000, 0xe2f0, 0xb851, + 0xdef0, 0x0000, 0x0000, 0xdeed, 0xdee8, 0xdeea, 0xdeeb, 0xdee4, + 0x0000, 0xb84d, 0x0000, 0x0000, 0xb84c, 0x0000, 0xb848, 0xdee7, + 0x0000, 0xb84f, 0x0000, 0xb850, 0xdee6, 0xdee9, 0xdef1, 0xb84a, + 0xb84b, 0xdeef, 0xdee5, 0x0000, 0x0000, 0x0000, 0xe2f2, 0xbad0, + 0xe2f4, 0xdeec, 0xe2f6, 0xbad4, 0xe2f7, 0xe2f3, 0x0000, 0xbad1, + 0xe2ef, 0xbad3, 0xe2ec, 0xe2f1, 0xe2f5, 0xe2ee, 0x0000, 0x0000, + 0xb849, 0x0000, 0xe2eb, 0xbad2, 0xe2ed, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xbd54, 0xe6c1, 0xbd58, 0x0000, 0xbd56, 0x0000, + 0x0000, 0xbacf, 0x0000, 0xe6c8, 0xe6c9, 0xbd53, 0x0000, 0x0000, + 0xe6c7, 0xe6ca, 0xbd55, 0xbd52, 0xe6c3, 0xe6c0, 0xe6c5, 0xe6c2, + 0xbd59, 0xe6c4, 0x0000, 0x0000, 0xe6c6, 0xbd57, 0x0000, 0x0000, + 0x0000, 0x0000, 0xbf6a, 0xeaa8, 0x0000, 0xeaa2, 0xeaa6, 0xeaac, + 0xeaad, 0xeaa9, 0xeaaa, 0xeaa7, 0x0000, 0xeaa4, 0x0000, 0xbf6c, + 0xbf69, 0xeaa3, 0xeaa5, 0x0000, 0xbf6b, 0xeaab, 0x0000, 0xc146, + 0x0000, 0x0000, 0xedaa, 0xeda5, 0xc145, 0x0000, 0x0000, 0xc143, + 0x0000, 0xedac, 0xc144, 0xeda8, 0xeda9, 0xeda6, 0xedad, 0xf056 +}; + +static const unsigned short big5_from_unicode_79[] = { + 0x0000, 0xc147, 0xeda7, 0x0000, 0xedae, 0xedab, 0x0000, 0x0000, + 0x0000, 0xf05a, 0x0000, 0x0000, 0xf057, 0x0000, 0xc2a6, 0x0000, + 0xf05b, 0xf05d, 0xf05c, 0xf058, 0xf059, 0x0000, 0x0000, 0xf2a3, + 0x0000, 0xc3aa, 0x0000, 0xf27e, 0xf2a2, 0xf27d, 0xf2a4, 0x0000, + 0x0000, 0xf2a1, 0x0000, 0xf47a, 0xf47d, 0xf479, 0xc471, 0xf47b, + 0xf47c, 0xf47e, 0xc472, 0xc474, 0xc473, 0xf5e1, 0x0000, 0xf5e3, + 0x0000, 0xf5e2, 0x0000, 0x0000, 0x0000, 0xf6f6, 0x0000, 0x0000, + 0xf8b5, 0xf8fa, 0xa5dc, 0x0000, 0x0000, 0xcb72, 0xaac0, 0xcda3, + 0xaac1, 0xaac2, 0xcda2, 0x0000, 0xcff8, 0xcff7, 0xace6, 0xace9, + 0xace8, 0xace7, 0xcff4, 0xcff6, 0xcff5, 0x0000, 0x0000, 0xd2e8, + 0xafa7, 0xd2ec, 0xd2eb, 0xd2ea, 0xd2e6, 0xafa6, 0xafaa, 0xafad, + 0x0000, 0x0000, 0xafae, 0xd2e7, 0xd2e9, 0xafac, 0xafab, 0xafa9, + 0xafa8, 0xd6c2, 0x0000, 0xd6c0, 0xd6bc, 0xb2bb, 0x0000, 0xd6bd, + 0xb2bc, 0xd6be, 0xd6bf, 0xd6c1, 0x0000, 0xb2bd, 0x0000, 0x0000, + 0xdad5, 0x0000, 0xdad4, 0xdad3, 0xdad2, 0x0000, 0x0000, 0x0000, + 0x0000, 0xdef6, 0xb852, 0x0000, 0xdef3, 0xdef5, 0x0000, 0xb853, + 0x0000, 0xb854, 0xdef4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe341, 0x0000, 0xe2f9, 0xe2fa, 0x0000, 0xbad7, 0xbad5, 0xbad6, + 0xe343, 0x0000, 0xe342, 0xe2fe, 0xe2fd, 0xe2fc, 0xe2fb, 0xe340, + 0xe2f8, 0x0000, 0xe6cb, 0xe6d0, 0xe6ce, 0x0000, 0x0000, 0x0000, + 0xe6cd, 0xe6cc, 0xe6cf, 0x0000, 0xeaae, 0x0000, 0xbf6d, 0xc148, + 0xedb0, 0x0000, 0xc149, 0xedaf, 0xf05f, 0xf05e, 0xc2a7, 0x0000, + 0xf2a5, 0xc3ab, 0xf4a1, 0xc5a1, 0xf6f7, 0x0000, 0xf8b7, 0xf8b6, + 0xc9a8, 0xacea, 0xaceb, 0xd6c3, 0x0000, 0xb856, 0xa5dd, 0xa872, + 0xa871, 0xa870, 0x0000, 0x0000, 0x0000, 0xcda4, 0x0000, 0x0000, + 0xaac4, 0xaac3, 0x0000, 0xacee, 0x0000, 0xcffa, 0xcffd, 0xcffb, + 0x0000, 0xacec, 0xaced, 0x0000, 0x0000, 0xcff9, 0xcffc, 0x0000, + 0xafb5, 0x0000, 0x0000, 0x0000, 0xd2f3, 0xd2f5, 0xd2f4, 0xafb2, + 0xd2ef, 0x0000, 0x0000, 0xafb0, 0xafaf, 0x0000, 0xafb3, 0xafb1, + 0x0000, 0xafb4, 0xd2f2, 0xd2ed, 0xd2ee, 0xd2f1, 0xd2f0, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xd6c6, 0xd6c7, + 0xd6c5, 0x0000, 0xd6c4, 0xb2be, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5_from_unicode_7a[] = { + 0xb57d, 0x0000, 0xdad6, 0xdad8, 0xdada, 0xb57c, 0x0000, 0x0000, + 0xb57a, 0x0000, 0xdad7, 0xb57b, 0xdad9, 0xb579, 0x0000, 0x0000, + 0xdf41, 0xdef7, 0xdefa, 0xdefe, 0xb85a, 0xdefc, 0x0000, 0xdefb, + 0xdef8, 0xdef9, 0xb858, 0xdf40, 0xb857, 0x0000, 0xb85c, 0xb85b, + 0xb859, 0x0000, 0xdefd, 0x0000, 0x0000, 0x0000, 0xe349, 0x0000, + 0xe348, 0x0000, 0x0000, 0xe344, 0x0000, 0x0000, 0xbad8, 0xe347, + 0xe346, 0xbad9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xbd5e, + 0x0000, 0xe6d2, 0x0000, 0xbd5f, 0xbd5b, 0xbd5d, 0x0000, 0xbd5a, + 0xbd5c, 0x0000, 0x0000, 0x0000, 0xeaaf, 0x0000, 0xbf70, 0xeab1, + 0xeab0, 0x0000, 0xe345, 0xbf72, 0xbf71, 0xbf6e, 0xbf6f, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xedb5, 0x0000, 0xedb3, 0xc14a, + 0xedb4, 0x0000, 0xedb6, 0xedb2, 0xedb1, 0x0000, 0x0000, 0xf060, + 0xc2aa, 0xc2a8, 0xc2a9, 0x0000, 0x0000, 0x0000, 0x0000, 0xf2a6, + 0xf2a7, 0xc3ad, 0x0000, 0xc3ac, 0xf4a3, 0xf4a4, 0xf4a2, 0x0000, + 0xf6f8, 0xf6f9, 0x0000, 0x0000, 0xa5de, 0xca48, 0xa873, 0x0000, + 0xcda5, 0xaac6, 0xaac5, 0xcda6, 0x0000, 0x0000, 0xd040, 0xacef, + 0xcffe, 0xacf0, 0x0000, 0x0000, 0xafb6, 0xd2f8, 0xd2f6, 0xd2fc, + 0xafb7, 0xd2f7, 0xd2fb, 0xd2f9, 0xd2fa, 0x0000, 0x0000, 0xd6c8, + 0xd6ca, 0x0000, 0xb2bf, 0x0000, 0xd6c9, 0xb2c0, 0xb5a2, 0xb5a1, + 0xb57e, 0xdadb, 0x0000, 0x0000, 0x0000, 0x0000, 0xdf44, 0xb85d, + 0xb85e, 0x0000, 0xdf43, 0xdf42, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe34a, 0xbadb, 0xbada, 0xe34b, 0xe34c, 0x0000, 0xbd61, 0xbd60, + 0x0000, 0xeab5, 0xe6d3, 0xe6d5, 0xe6d4, 0xeab4, 0xeab2, 0xeab6, + 0xeab3, 0x0000, 0xbf73, 0x0000, 0x0000, 0x0000, 0xedb7, 0xc14b, + 0xedb8, 0xedb9, 0x0000, 0x0000, 0xc2ab, 0xc2ac, 0x0000, 0xc475, + 0x0000, 0x0000, 0xc5d1, 0xa5df, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xd041, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xd2fd, 0xafb8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xb3ba, + 0xb3b9, 0x0000, 0x0000, 0xb5a4, 0xdadd, 0xb5a3, 0xdadc, 0x0000, + 0x0000, 0x0000, 0x0000, 0xdf45, 0x0000, 0xbadc, 0xe34d, 0xbadd, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xc476, 0xf4a5, + 0x0000, 0xa6cb, 0xaac7, 0xcda7, 0x0000, 0xacf2, 0x0000, 0xacf1 +}; + +static const unsigned short big5_from_unicode_7b[] = { + 0xd042, 0xd043, 0x0000, 0x0000, 0xd340, 0xd342, 0xafb9, 0x0000, + 0xd344, 0xd347, 0xd345, 0x0000, 0x0000, 0x0000, 0xd346, 0xd343, + 0xd2fe, 0xafba, 0xd348, 0xd341, 0x0000, 0x0000, 0x0000, 0x0000, + 0xd6d3, 0xb2c6, 0xd6dc, 0xb2c3, 0x0000, 0xd6d5, 0xb2c7, 0x0000, + 0xb2c1, 0x0000, 0xd6d0, 0xd6dd, 0xd6d1, 0xd6ce, 0xb2c5, 0x0000, + 0xb2c2, 0x0000, 0xd6d4, 0xd6d7, 0xb2c4, 0xd6d8, 0xb2c8, 0xd6d9, + 0xd6cf, 0xd6d6, 0xd6da, 0xd6d2, 0xd6cd, 0xd6cb, 0x0000, 0x0000, + 0xd6db, 0x0000, 0x0000, 0xdadf, 0x0000, 0x0000, 0x0000, 0x0000, + 0xdae4, 0x0000, 0x0000, 0x0000, 0xdae0, 0xdae6, 0xb5a7, 0xd6cc, + 0xdae1, 0xb5a5, 0xdade, 0xb5ac, 0xdae2, 0xb5ab, 0xdae3, 0xb5ad, + 0xb5a8, 0xb5ae, 0xb5a9, 0x0000, 0xb5aa, 0x0000, 0xb5a6, 0x0000, + 0xdae5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xb861, 0xdf50, 0x0000, 0xdf53, 0xdf47, 0xdf4c, 0xdf46, 0xb863, + 0x0000, 0xdf4a, 0x0000, 0x0000, 0x0000, 0xdf48, 0xb862, 0x0000, + 0xdf4f, 0xdf4e, 0xdf4b, 0xdf4d, 0xdf49, 0xbae1, 0xdf52, 0xb85f, + 0xdf51, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe35d, 0x0000, 0xbae8, 0xe358, 0x0000, 0xbae7, + 0xe34e, 0x0000, 0xe350, 0xbae0, 0xe355, 0xe354, 0xe357, 0xbae5, + 0xe352, 0xe351, 0x0000, 0x0000, 0xbae4, 0xbadf, 0xe353, 0xbae2, + 0xe359, 0xe35b, 0x0000, 0xe356, 0xe34f, 0xbae3, 0x0000, 0x0000, + 0xbd69, 0xbade, 0x0000, 0x0000, 0xe35c, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xe6d9, 0xbd62, 0x0000, 0xe6db, + 0x0000, 0xbd63, 0x0000, 0x0000, 0xbd65, 0xe6de, 0x0000, 0xe6d6, + 0xbae6, 0xe6dc, 0x0000, 0x0000, 0x0000, 0x0000, 0xe6d8, 0x0000, + 0xb860, 0xbd68, 0x0000, 0x0000, 0xbd64, 0x0000, 0xbd66, 0xbd67, + 0x0000, 0xbf76, 0xe6dd, 0xe6d7, 0xbd6a, 0x0000, 0xe6da, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xeac0, 0xeabb, 0x0000, 0x0000, + 0xeac5, 0xbf74, 0xeabd, 0xbf78, 0xeac3, 0xeaba, 0xeab7, 0xeac6, + 0xc151, 0xbf79, 0xeac2, 0xeab8, 0xbf77, 0xeabc, 0xbf7b, 0xeab9, + 0xeabe, 0xbf7a, 0xeac1, 0xeac4, 0x0000, 0x0000, 0x0000, 0x0000, + 0xedcb, 0xedcc, 0xedbc, 0xedc3, 0xedc1, 0x0000, 0x0000, 0xc14f, + 0xedc8, 0xeabf, 0x0000, 0xedbf, 0x0000, 0xedc9, 0xc14e, 0xedbe +}; + +static const unsigned short big5_from_unicode_7c[] = { + 0xedbd, 0xedc7, 0xedc4, 0xedc6, 0x0000, 0xedba, 0xedca, 0xc14c, + 0x0000, 0xedc5, 0xedce, 0xedc2, 0xc150, 0xc14d, 0xedc0, 0xedbb, + 0xedcd, 0xbf75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf063, 0x0000, 0x0000, 0xf061, 0xf067, 0xc2b0, 0xf065, + 0xf064, 0xc2b2, 0xf06a, 0xc2b1, 0x0000, 0xf06b, 0xf068, 0xc2ae, + 0xf069, 0xf062, 0xc2af, 0xc2ad, 0xf2ab, 0xf066, 0x0000, 0x0000, + 0xf06c, 0x0000, 0x0000, 0xf2a8, 0x0000, 0x0000, 0x0000, 0xc3b2, + 0xc3b0, 0xf2aa, 0x0000, 0xf2ac, 0xf2a9, 0xc3b1, 0xc3ae, 0xc3af, + 0xc3b3, 0x0000, 0x0000, 0xc478, 0x0000, 0xf4aa, 0x0000, 0xf4a9, + 0xf4a7, 0xf4a6, 0xf4a8, 0x0000, 0xc477, 0xc479, 0x0000, 0x0000, + 0xc4f0, 0x0000, 0x0000, 0xf5e5, 0xf5e4, 0x0000, 0x0000, 0xf6fa, + 0x0000, 0xf6fc, 0xf6fe, 0xf6fd, 0xf6fb, 0x0000, 0x0000, 0xc5a3, + 0xc5a2, 0x0000, 0x0000, 0xc5d3, 0xc5d2, 0xc5d4, 0xf7ed, 0xf7ec, + 0x0000, 0xf8fb, 0xf8b8, 0xf8fc, 0xc658, 0x0000, 0xc659, 0xf96d, + 0x0000, 0x0000, 0xc67e, 0xa6cc, 0x0000, 0xcda8, 0x0000, 0x0000, + 0xd045, 0xd046, 0xd044, 0x0000, 0x0000, 0xacf3, 0x0000, 0xd047, + 0xd048, 0xd049, 0x0000, 0x0000, 0xd349, 0xd34f, 0x0000, 0x0000, + 0xd34d, 0xafbb, 0xd34b, 0x0000, 0xd34c, 0xd34e, 0x0000, 0x0000, + 0x0000, 0xd34a, 0xb2c9, 0x0000, 0xd6de, 0xb2cb, 0xd6e0, 0xb2ca, + 0xd6df, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xdae8, 0xb5af, + 0x0000, 0xdaea, 0xdae7, 0xd6e1, 0x0000, 0xb5b0, 0x0000, 0x0000, + 0xdae9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xdf56, + 0x0000, 0xb864, 0xdf54, 0xb865, 0xdf55, 0xb866, 0x0000, 0x0000, + 0x0000, 0xbae9, 0xe361, 0xe35e, 0xe360, 0xbaea, 0xbaeb, 0xe35f, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe6df, 0x0000, 0x0000, + 0xe6e0, 0x0000, 0xbd6b, 0xe6e2, 0xe6e1, 0x0000, 0xa261, 0x0000, + 0xeaca, 0xeacb, 0xeac7, 0x0000, 0xeac8, 0xbf7c, 0xbf7d, 0xeac9, + 0x0000, 0xc157, 0x0000, 0x0000, 0xc153, 0xc158, 0xc154, 0xc156, + 0xc152, 0x0000, 0xc155, 0x0000, 0x0000, 0x0000, 0x0000, 0xc2b3, + 0xedcf, 0x0000, 0xf2ae, 0x0000, 0xf2ad, 0x0000, 0xf4ab, 0xc47a, + 0xc47b, 0xf741, 0xf5e6, 0x0000, 0xf740, 0x0000, 0xf8fd, 0xf9a4, + 0xa6cd, 0x0000, 0x0000, 0xa874, 0x0000, 0xcda9, 0xaac8, 0x0000 +}; + +static const unsigned short big5_from_unicode_7d[] = { + 0xacf6, 0xd04c, 0xacf4, 0xd04a, 0xacf9, 0xacf5, 0xacfa, 0xacf8, + 0xd04b, 0xacf7, 0xafbf, 0xafbe, 0xd35a, 0xafc7, 0xd353, 0xd359, + 0xafc3, 0xd352, 0xd358, 0xd356, 0xafc2, 0xafc4, 0xd355, 0xafbd, + 0xd354, 0xafc8, 0xafc5, 0xafc9, 0xafc6, 0xd351, 0xd350, 0xd357, + 0xafc0, 0xafbc, 0xafc1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xd6f0, 0xd6e9, 0x0000, 0xb5b5, 0xd6e8, 0x0000, 0xb2cf, 0xb2d6, + 0xb2d3, 0xb2d9, 0xb2d8, 0xb2d4, 0x0000, 0xd6e2, 0xd6e5, 0x0000, + 0xd6e4, 0xb2d0, 0xd6e6, 0xd6ef, 0xb2d1, 0xd6e3, 0xd6ec, 0xd6ed, + 0xb2d2, 0xd6ea, 0xb2d7, 0xb2cd, 0xb2d5, 0xd6e7, 0xb2cc, 0xd6eb, + 0x0000, 0x0000, 0xd6ee, 0x0000, 0x0000, 0x0000, 0xdafb, 0xdaf2, + 0xb5b2, 0xdaf9, 0xdaf6, 0xdaee, 0xdaf7, 0xb5b4, 0xdaef, 0x0000, + 0xdaeb, 0x0000, 0x0000, 0xb86c, 0xdaf4, 0x0000, 0xb5b1, 0xdafa, + 0x0000, 0xb5b8, 0xb5ba, 0xdaed, 0x0000, 0x0000, 0xb5b9, 0xdaf0, + 0xb5b3, 0xdaf8, 0xdaf1, 0xdaf5, 0x0000, 0xdaf3, 0xb5b6, 0xdaec, + 0xb5bb, 0xb2ce, 0xb5b7, 0xb5bc, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xb868, 0xdf5d, 0xdf5f, 0xdf61, 0xdf65, 0x0000, 0xdf5b, + 0xdf59, 0xb86a, 0x0000, 0xdf60, 0xdf64, 0xdf5c, 0xdf58, 0x0000, + 0xdf57, 0x0000, 0x0000, 0x0000, 0xdf62, 0xdf5a, 0xdf5e, 0xb86b, + 0x0000, 0xb869, 0xdf66, 0xb867, 0xdf63, 0x0000, 0xe372, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xbaee, 0xe36a, 0xbd78, 0xe374, + 0xbaf1, 0xe378, 0xbaf7, 0xe365, 0x0000, 0x0000, 0xe375, 0xe362, + 0x0000, 0xe377, 0xe366, 0x0000, 0xbafe, 0xbafb, 0xe376, 0xe370, + 0xbaed, 0xbaf5, 0xbaf4, 0x0000, 0xbaf3, 0xbaf9, 0x0000, 0xe363, + 0xbafa, 0xe371, 0xbaf6, 0xbaec, 0xe373, 0xbaef, 0xbaf0, 0xbaf8, + 0xe368, 0xe367, 0xe364, 0x0000, 0xe36c, 0xe369, 0xe36d, 0xbafd, + 0x0000, 0xe379, 0xbaf2, 0xe36e, 0xe36f, 0x0000, 0xe36b, 0x0000, + 0x0000, 0x0000, 0xbafc, 0x0000, 0x0000, 0x0000, 0x0000, 0xe6e7, + 0xbd70, 0xbd79, 0xbd75, 0xe6e4, 0x0000, 0xbd72, 0xbd76, 0xe6f0, + 0xbd6c, 0xe6e8, 0x0000, 0xbd74, 0x0000, 0x0000, 0xe6eb, 0xe6e6, + 0xbd73, 0xbd77, 0xe6e5, 0x0000, 0xbd71, 0x0000, 0xe6ef, 0xbd6e, + 0xe6ee, 0xe6ed, 0xbd7a, 0xe572, 0xbd6d, 0x0000, 0xe6ec, 0xe6e3, + 0x0000, 0xbd7b, 0xe6ea, 0xbd6f, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5_from_unicode_7e[] = { + 0x0000, 0x0000, 0x0000, 0xe6e9, 0x0000, 0x0000, 0x0000, 0x0000, + 0xbfa2, 0xbfa7, 0xbf7e, 0xead8, 0xeacf, 0xeadb, 0xead3, 0xead9, + 0xbfa8, 0xbfa1, 0xeacc, 0xead2, 0xeadc, 0xead5, 0xeada, 0xeace, + 0x0000, 0x0000, 0xead6, 0xbfa3, 0xead4, 0xbfa6, 0xbfa5, 0xead0, + 0xead1, 0xeacd, 0xead7, 0xbfa4, 0xeade, 0xeadd, 0x0000, 0x0000, + 0x0000, 0xedda, 0xedd6, 0xc15f, 0x0000, 0xedd0, 0xc159, 0xc169, + 0xeddc, 0xc161, 0xc15d, 0xedd3, 0xc164, 0xc167, 0xedde, 0xc15c, + 0xedd5, 0xc165, 0xede0, 0xeddd, 0xedd1, 0xc160, 0xc15a, 0xc168, + 0xedd8, 0xc163, 0xedd2, 0xc15e, 0xeddf, 0xc162, 0xc15b, 0xedd9, + 0xc166, 0xedd7, 0x0000, 0x0000, 0xeddb, 0x0000, 0x0000, 0x0000, + 0xf06e, 0xf074, 0xc2b9, 0xf077, 0xc2b4, 0xc2b5, 0xf06f, 0xf076, + 0xf071, 0xc2ba, 0xc2b7, 0x0000, 0xf06d, 0x0000, 0xc2b6, 0xf073, + 0xf075, 0xc2b8, 0xf072, 0xf070, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf2b8, 0xc3b7, 0xc3b8, 0xc3b4, 0x0000, 0xc3b5, 0x0000, 0xf2b4, + 0xf2b2, 0x0000, 0xf2b6, 0xc3ba, 0xf2b7, 0xf2b0, 0xf2af, 0xf2b3, + 0xf2b1, 0xc3b6, 0xf2b5, 0xf4ac, 0xc47e, 0xc47d, 0xf4ad, 0x0000, + 0xf4af, 0xf4ae, 0xc4a1, 0x0000, 0x0000, 0x0000, 0xf5eb, 0x0000, + 0xf5e9, 0x0000, 0xf5e7, 0xf5ea, 0xc4f2, 0xf5ec, 0x0000, 0xc4f1, + 0x0000, 0xf742, 0x0000, 0xc5d5, 0xc5d7, 0xf7ee, 0xc5d6, 0xf8b9, + 0xf940, 0xf942, 0xf8fe, 0xf941, 0xc66c, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5_from_unicode_7f[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa6ce, 0x0000, + 0xacfb, 0xd26f, 0xafca, 0x0000, 0x0000, 0xb2da, 0xdafc, 0xdafd, + 0x0000, 0x0000, 0x0000, 0xeadf, 0xc16a, 0xede1, 0x0000, 0x0000, + 0xc2bb, 0x0000, 0xf2ba, 0xf2b9, 0xc4a2, 0xf5ed, 0x0000, 0xf743, + 0xc5f8, 0xca49, 0x0000, 0x0000, 0xaac9, 0xa875, 0x0000, 0x0000, + 0xd04d, 0x0000, 0x0000, 0xd360, 0xd35b, 0xd35f, 0xd35d, 0xafcb, + 0xd35e, 0xd35c, 0x0000, 0xd6f1, 0x0000, 0xdafe, 0xdb40, 0xdf69, + 0xdf6a, 0xb86e, 0xb86f, 0xdf68, 0xdf6b, 0xdf67, 0xb86d, 0x0000, + 0xbb40, 0x0000, 0xb870, 0xe37a, 0x0000, 0xbd7c, 0xe6f1, 0xbd7d, + 0x0000, 0xbfa9, 0xeae2, 0xeae0, 0xeae1, 0xede4, 0xede3, 0xede2, + 0x0000, 0x0000, 0x0000, 0xf2bb, 0x0000, 0xc3b9, 0xf2bc, 0xf744, + 0xc5f9, 0xf8ba, 0xa6cf, 0xaacb, 0xaaca, 0xd04f, 0xacfc, 0x0000, + 0x0000, 0xd04e, 0xd362, 0x0000, 0xafcc, 0xd6f2, 0xd361, 0x0000, + 0x0000, 0x0000, 0xb2dc, 0xd6f5, 0xd6f3, 0xd6f4, 0xb2db, 0x0000, + 0xdb42, 0xdb43, 0xdb41, 0x0000, 0xb873, 0xdf6d, 0xdf6c, 0xdf6e, + 0xb872, 0xb871, 0x0000, 0x0000, 0xe6f2, 0xe6f4, 0x0000, 0xbd7e, + 0xe6f3, 0xeae3, 0xbfaa, 0xf079, 0x0000, 0xf078, 0xc3bb, 0xf2bd, + 0xc3bd, 0xc3bc, 0xf4b0, 0xf5ee, 0xc4f3, 0xa6d0, 0xd050, 0xacfd, + 0xd365, 0xafce, 0xd364, 0xd363, 0x0000, 0xafcd, 0x0000, 0xd6fb, + 0x0000, 0xd6fd, 0xd6f6, 0xd6f7, 0xb2dd, 0xd6f8, 0xb2de, 0xd6fc, + 0xd6f9, 0xd6fa, 0xb2df, 0x0000, 0xb5be, 0xb5bf, 0x0000, 0xdb44, + 0x0000, 0x0000, 0x0000, 0xdf6f, 0xdf70, 0x0000, 0xe37e, 0xbb43, + 0xbb41, 0xbb42, 0xe37b, 0xe37c, 0x0000, 0xe37d, 0xe6f9, 0x0000, + 0xe6fa, 0xbda1, 0xe6f7, 0xe6f6, 0xe6f8, 0xe6f5, 0xbfad, 0xeae4, + 0xbfab, 0xbfac, 0xede6, 0xc16b, 0xede5, 0xefa8, 0x0000, 0xf07a, + 0xf07b, 0xc2bc, 0x0000, 0xc2bd, 0xc16c, 0xf2be, 0xf2bf, 0xf4b1 +}; + +static const unsigned short big5_from_unicode_80[] = { + 0xc4a3, 0xa6d1, 0x0000, 0xa6d2, 0xacfe, 0xaacc, 0xafcf, 0xd051, + 0x0000, 0x0000, 0x0000, 0xb5c0, 0xa6d3, 0xad41, 0xd052, 0xd053, + 0xad40, 0xad42, 0xa6d4, 0x0000, 0xd054, 0xafd1, 0xd366, 0xafd3, + 0xafd0, 0xafd2, 0x0000, 0xd741, 0xb2e0, 0x0000, 0xd740, 0xd6fe, + 0x0000, 0xdf71, 0x0000, 0x0000, 0xe3a1, 0x0000, 0xbda2, 0x0000, + 0xbfae, 0xeae6, 0xeae5, 0x0000, 0xede7, 0x0000, 0x0000, 0x0000, + 0xf5ef, 0x0000, 0x0000, 0xa6d5, 0xcb73, 0xcdaa, 0xad43, 0xd055, + 0x0000, 0xd368, 0x0000, 0x0000, 0x0000, 0xafd4, 0xd367, 0xafd5, + 0x0000, 0x0000, 0x0000, 0xd743, 0x0000, 0x0000, 0xb2e2, 0xd742, + 0xd744, 0x0000, 0xb2e1, 0x0000, 0x0000, 0x0000, 0x0000, 0xdb46, + 0xdb47, 0xdb45, 0xb5c1, 0x0000, 0x0000, 0x0000, 0xb874, 0x0000, + 0xb875, 0x0000, 0xbb45, 0x0000, 0xe3a3, 0xe3a2, 0xbb44, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xe6fb, 0x0000, 0x0000, 0xe6fc, + 0x0000, 0x0000, 0x0000, 0x0000, 0xeae7, 0x0000, 0x0000, 0xc170, + 0xc16f, 0xc16d, 0xc16e, 0xc171, 0x0000, 0xf07c, 0xc2bf, 0xc2be, + 0xf2c0, 0xf4b2, 0x0000, 0x0000, 0x0000, 0xc5a5, 0xc5a4, 0xa6d6, + 0x0000, 0x0000, 0xd1fb, 0x0000, 0xb877, 0xb5c2, 0xb876, 0xbb46, + 0x0000, 0xa6d7, 0xc9a9, 0xa6d8, 0xa6d9, 0x0000, 0x0000, 0xcdab, + 0xcb76, 0x0000, 0xcb77, 0xa877, 0x0000, 0xcb74, 0xa876, 0x0000, + 0xa879, 0xcb75, 0xa87b, 0xa87a, 0xcb78, 0xa878, 0x0000, 0x0000, + 0x0000, 0xaad1, 0xaacf, 0xcdad, 0x0000, 0xaace, 0x0000, 0x0000, + 0x0000, 0xaad3, 0xaad5, 0xaad2, 0x0000, 0xcdb0, 0xcdac, 0xaad6, + 0x0000, 0xaad0, 0xa87c, 0x0000, 0xaad4, 0xcdaf, 0x0000, 0x0000, + 0xcdae, 0x0000, 0xaacd, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xd05b, 0xad47, 0xad48, 0xd05d, 0x0000, 0xd057, + 0xd05a, 0xd063, 0xd061, 0x0000, 0xad49, 0xd067, 0xad4c, 0xd064, + 0xd05c, 0xd059, 0x0000, 0x0000, 0xdb49, 0xd062, 0xad44, 0xd065, + 0xd056, 0xd05f, 0xad46, 0xad4b, 0xd060, 0xad4f, 0xad4d, 0x0000, + 0xd058, 0xad4a, 0x0000, 0xd05e, 0xad4e, 0xad45, 0xd066, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xafda, 0x0000, 0xafe3, + 0xafd8, 0xafd6, 0xd36a, 0xafde, 0xafdb, 0xd36c, 0x0000, 0x0000, + 0xafdd, 0xd36b, 0xd369, 0xd36e, 0xafe2, 0xafe0, 0xdb48, 0x0000 +}; + +static const unsigned short big5_from_unicode_81[] = { + 0xd36f, 0xd36d, 0xafd7, 0x0000, 0x0000, 0xafd9, 0xafdc, 0x0000, + 0xafdf, 0x0000, 0xafe1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xd74e, 0xb2e4, 0x0000, + 0xd745, 0xd747, 0x0000, 0xd748, 0x0000, 0xd750, 0xd74c, 0xd74a, + 0x0000, 0xd74d, 0xd751, 0xb2e5, 0xb2e9, 0xd746, 0x0000, 0xd74f, + 0x0000, 0xb2e7, 0x0000, 0xb2e6, 0xd74b, 0xd749, 0x0000, 0xb2e3, + 0xb2e8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xb5c8, 0xdb51, 0x0000, 0x0000, 0xdb4f, 0xb5ca, 0x0000, + 0x0000, 0x0000, 0x0000, 0xdb4a, 0xdfa1, 0x0000, 0xb5c9, 0xdb4e, + 0x0000, 0x0000, 0xdb4b, 0xb5c5, 0xb5cb, 0xdb50, 0xb5c7, 0xdb4d, + 0xbb47, 0xb5c6, 0xdb4c, 0xb5cc, 0xb5c4, 0xb5c3, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xdf77, 0xdf75, 0x0000, 0xdf7b, 0x0000, + 0xdf73, 0xdfa2, 0xdf78, 0x0000, 0xdf72, 0xb87b, 0xb8a3, 0xdf7d, + 0x0000, 0xdf76, 0x0000, 0xb87e, 0x0000, 0x0000, 0xb87c, 0xdf7e, + 0xb879, 0xb878, 0xdf79, 0xb87d, 0xb5cd, 0x0000, 0xdf7c, 0xdf74, + 0xb87a, 0xb8a1, 0xb8a2, 0x0000, 0x0000, 0x0000, 0x0000, 0xbb4c, + 0xbb48, 0x0000, 0xbb4d, 0xe3a6, 0x0000, 0x0000, 0xe3a5, 0xe3a7, + 0xbb4a, 0xe3a4, 0xbb4b, 0xe3aa, 0xe3a9, 0xe3a8, 0x0000, 0xbb49, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe741, 0x0000, 0xe744, + 0xbda8, 0xe743, 0xbda7, 0xbda3, 0xbda4, 0xbda5, 0xe740, 0xe6fe, + 0xbda6, 0x0000, 0xe742, 0xe6fd, 0x0000, 0x0000, 0xeae9, 0xeaf3, + 0xbfb1, 0xbfb0, 0x0000, 0xeaed, 0xeaef, 0x0000, 0xeaea, 0x0000, + 0xeaee, 0xeae8, 0xeaf1, 0xbfaf, 0xeaf0, 0xeaec, 0x0000, 0xeaf2, + 0x0000, 0xeaeb, 0xc174, 0xede8, 0xedee, 0xc178, 0xc17a, 0xc177, + 0xc176, 0x0000, 0xc175, 0xc173, 0xede9, 0xedec, 0xc172, 0xeded, + 0x0000, 0xc179, 0xedeb, 0x0000, 0xedea, 0xc2c0, 0x0000, 0xc2c1, + 0xf0a1, 0xf07d, 0xf07e, 0x0000, 0x0000, 0xf2c2, 0x0000, 0xf2c1, + 0xc3be, 0xf4b4, 0xc4a4, 0xf4b3, 0x0000, 0xf5f0, 0xf745, 0xc5a6, + 0xf943, 0xf944, 0xc5d8, 0xa6da, 0x0000, 0xaad7, 0xdb52, 0xbb4e, + 0xc17b, 0xedef, 0xa6db, 0x0000, 0xafe5, 0xafe4, 0xdb53, 0x0000, + 0x0000, 0x0000, 0xeaf4, 0xa6dc, 0xad50, 0x0000, 0x0000, 0xdb54, + 0xdb55, 0xdb56, 0xbb4f, 0xbfb2, 0xa6dd, 0x0000, 0xaad8, 0xd068 +}; + +static const unsigned short big5_from_unicode_82[] = { + 0xafe6, 0xd370, 0xb2ea, 0x0000, 0xdb57, 0xb8a4, 0x0000, 0xbb50, + 0xbfb3, 0xc17c, 0xc2c2, 0xf4b5, 0xa6de, 0xaad9, 0x0000, 0x0000, + 0xafe7, 0xd752, 0xb5ce, 0x0000, 0xbb51, 0xe3ab, 0xe745, 0x0000, + 0x0000, 0x0000, 0x0000, 0xa6df, 0xb5cf, 0xdfa3, 0xbb52, 0xa6e0, + 0xcdb1, 0xd069, 0xad51, 0x0000, 0x0000, 0xd372, 0x0000, 0x0000, + 0xafea, 0x0000, 0xafe8, 0xafe9, 0xafeb, 0x0000, 0x0000, 0xd371, + 0x0000, 0x0000, 0xd757, 0xd754, 0xd756, 0xb2eb, 0xb2ed, 0xb2ec, + 0xd753, 0xb2ee, 0xd755, 0x0000, 0xdb58, 0xdb59, 0x0000, 0xdb5a, + 0xdfa6, 0x0000, 0xdfa7, 0x0000, 0xdfa5, 0xdfa8, 0x0000, 0xb8a5, + 0x0000, 0xdfa4, 0x0000, 0xbb53, 0x0000, 0x0000, 0xe74a, 0xe746, + 0xe749, 0xe74b, 0xe748, 0xe747, 0x0000, 0xeaf5, 0xeaf6, 0xeaf7, + 0xbfb4, 0xbfb5, 0xedf1, 0xedf0, 0xedf2, 0x0000, 0xf0a3, 0xf0a2, + 0x0000, 0xf2c4, 0x0000, 0xf2c5, 0xf2c3, 0x0000, 0xc4a5, 0x0000, + 0xf4b6, 0xf4b7, 0x0000, 0xf746, 0xf7ef, 0xf8bb, 0xa6e1, 0xa87d, + 0x0000, 0xc17d, 0xa6e2, 0x0000, 0xd758, 0xdb5b, 0x0000, 0xc641, + 0xca4a, 0x0000, 0x0000, 0x0000, 0xca4b, 0xca4d, 0xa6e3, 0xca4e, + 0xca4c, 0x0000, 0x0000, 0xcba2, 0xcba3, 0xcb7b, 0x0000, 0x0000, + 0x0000, 0x0000, 0xcba1, 0xa8a1, 0x0000, 0xa8a2, 0xcb7c, 0xcb7a, + 0xcb79, 0xcb7d, 0xa87e, 0xcb7e, 0xd06a, 0x0000, 0x0000, 0x0000, + 0xcdb6, 0xaadc, 0xcdb5, 0xcdb7, 0x0000, 0xaadb, 0xcdbc, 0xaadf, + 0xcdb2, 0xcdc0, 0xcdc6, 0xaae6, 0xcdc3, 0xaae3, 0x0000, 0xcdb9, + 0xcdbf, 0xcdc1, 0x0000, 0xcdb4, 0xaae2, 0xaadd, 0xcdba, 0xaae4, + 0xaae7, 0xaae1, 0x0000, 0xaada, 0xcdbe, 0xcdb8, 0xcdc5, 0xaae9, + 0xaae5, 0xaae0, 0xcdbd, 0xafec, 0xcdbb, 0xaade, 0xaae8, 0x0000, + 0xcdb3, 0x0000, 0xcdc2, 0xcdc4, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xad62, 0xad5c, 0xad64, 0xad61, 0xd071, 0xd074, 0xad5d, + 0x0000, 0xd06b, 0x0000, 0xad56, 0xad60, 0x0000, 0xad63, 0xad65, + 0xd0a2, 0xd077, 0x0000, 0xad55, 0xd0a1, 0xad59, 0xad57, 0xad52, + 0xd06f, 0x0000, 0xd07e, 0xd073, 0xd076, 0xd0a5, 0x0000, 0xad66, + 0xd07d, 0xad5e, 0xd078, 0xd0a4, 0xd075, 0xd079, 0xd07c, 0x0000, + 0x0000, 0xd06d, 0xd0a3, 0xd07b, 0x0000, 0x0000, 0xd06c, 0x0000 +}; + +static const unsigned short big5_from_unicode_83[] = { + 0xd070, 0xad5f, 0xad5a, 0xad53, 0xad58, 0xad54, 0xad67, 0xd06e, + 0xd3a5, 0xad5b, 0x0000, 0x0000, 0xd07a, 0xce41, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xd3a8, 0xaffa, + 0x0000, 0xd376, 0x0000, 0xd3a3, 0xd37d, 0x0000, 0xd3b2, 0x0000, + 0xd3aa, 0x0000, 0xd37e, 0x0000, 0xd3a9, 0xd378, 0xd37c, 0xd3b5, + 0xaffd, 0xd3ad, 0xd3a4, 0xafed, 0xd3b3, 0xd374, 0x0000, 0xd3ac, + 0x0000, 0xaffc, 0xaff7, 0xd373, 0xaff5, 0xaff4, 0xaff9, 0xd3ab, + 0xaff1, 0xaff8, 0xd072, 0xdb5c, 0xd3a6, 0x0000, 0x0000, 0xd37a, + 0xaffb, 0xd37b, 0xd3a1, 0xaffe, 0xd375, 0xd3af, 0x0000, 0xd3ae, + 0xd3b6, 0xaff3, 0xaff0, 0xd3b4, 0xd3b0, 0xd3a7, 0xd3a2, 0xaff6, + 0xaff2, 0xd377, 0xafee, 0xd3b1, 0xafef, 0x0000, 0xd379, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xd75e, 0xd760, 0xd765, 0xd779, 0xb2fc, + 0xb2f2, 0x0000, 0xd75d, 0xb2fd, 0xb2fe, 0xd768, 0xd76f, 0xd775, + 0x0000, 0xd762, 0x0000, 0xd769, 0x0000, 0x0000, 0xb340, 0xd777, + 0xd772, 0xb2fa, 0xb2f8, 0xd76e, 0xd76a, 0xd75c, 0xb2ef, 0xd761, + 0xd759, 0x0000, 0xb2f7, 0xb2f9, 0xd766, 0xd763, 0xb2f4, 0xd773, + 0xb2f1, 0xd764, 0xd77a, 0xd76c, 0x0000, 0xd76b, 0xb2f0, 0x0000, + 0xb2fb, 0x0000, 0xb2f3, 0xd75a, 0xd75f, 0xd770, 0xd776, 0xb341, + 0xd75b, 0xd767, 0xd76d, 0xb2f6, 0x0000, 0x0000, 0xd778, 0xd771, + 0xd774, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xb2f5, 0x0000, 0xdb6c, + 0xdb60, 0xb5d7, 0xdb7d, 0xdba7, 0xdbaa, 0xb5d5, 0xdb68, 0xdba3, + 0xdb69, 0xdb77, 0xb5e2, 0xdb73, 0xb5df, 0x0000, 0xdb74, 0xdb5d, + 0x0000, 0xdba4, 0x0000, 0x0000, 0xb5e8, 0xdba1, 0xdb75, 0xdbac, + 0xdb70, 0xdfc8, 0x0000, 0xdbaf, 0xb5e6, 0xdb6e, 0xdb7a, 0xb5e9, + 0xb5d4, 0xdb72, 0xdbad, 0xdb6b, 0xdb64, 0xdb6f, 0x0000, 0xdb63, + 0xdb61, 0xb5d0, 0xdba5, 0xdb6a, 0xdba8, 0x0000, 0xdba9, 0xb5d8, + 0xb5dd, 0xb5d9, 0xb5e1, 0xdb7e, 0xb5da, 0xdb76, 0xdb66, 0x0000, + 0xb5d2, 0xdb5e, 0xdba2, 0xdbab, 0xdb65, 0xb5e0, 0xdbb0, 0xdb71 +}; + +static const unsigned short big5_from_unicode_84[] = { + 0x0000, 0xdb6d, 0x0000, 0xb5d1, 0xb5e5, 0x0000, 0xdb7c, 0xb5e7, + 0x0000, 0xdb78, 0xb5dc, 0xb5d6, 0xb5de, 0xb5d3, 0xb5e4, 0xdb79, + 0xdb67, 0xdb7b, 0xdb62, 0xdba6, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xdbae, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xdb5f, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xdfc7, 0x0000, 0xdfdd, 0xb855, 0xdfcc, 0x0000, 0xdfca, + 0xdfb5, 0xb8a9, 0xdfc5, 0xdfd9, 0xdfc1, 0xb8b1, 0xdfd8, 0xdfbf, + 0xb5e3, 0xdfcf, 0xdfc0, 0xdfd6, 0xb8b0, 0xb8a8, 0x0000, 0xdfaa, + 0xdfb2, 0x0000, 0xdfcb, 0xdfc3, 0xdfdc, 0xdfc6, 0xb8b6, 0xdfd7, + 0x0000, 0xb8ad, 0x0000, 0xdfc9, 0xdfd1, 0xdfb6, 0xdfd0, 0x0000, + 0xdfe1, 0xdfb1, 0xdfd2, 0x0000, 0xdfdf, 0x0000, 0xdfab, 0xb5db, + 0x0000, 0xdfb9, 0xdfb8, 0xb8af, 0x0000, 0xdfbc, 0xdfbe, 0xdfcd, + 0xdfde, 0xb8b2, 0x0000, 0xb8b3, 0x0000, 0xdfb0, 0xb8ab, 0xdfb4, + 0xdfda, 0xb8b4, 0x0000, 0xb8ac, 0xb8ae, 0xb8b5, 0xdfe0, 0xdfd3, + 0xdfce, 0x0000, 0x0000, 0xdfbb, 0xdfba, 0xb8aa, 0xdfac, 0xb8a7, + 0xdfc4, 0xdfad, 0xdfc2, 0x0000, 0x0000, 0xdfb7, 0xdfdb, 0x0000, + 0x0000, 0x0000, 0xb8a6, 0x0000, 0x0000, 0x0000, 0xdfb3, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xdfaf, 0xdfd5, 0xdfae, + 0xbb60, 0xe3d3, 0x0000, 0x0000, 0xe3c2, 0x0000, 0x0000, 0xe3ac, + 0xe3ca, 0xbb58, 0xe3bb, 0xe3c5, 0xbb5b, 0xe3be, 0xbb59, 0xe3af, + 0xe3cd, 0xe3ae, 0xe3c1, 0x0000, 0xe3ad, 0x0000, 0x0000, 0xe3bf, + 0xe3c8, 0xe3c6, 0xe3ba, 0xe3b5, 0xe3b3, 0x0000, 0xe3b4, 0xe3c7, + 0xe3d2, 0xe3bc, 0xbb5a, 0x0000, 0xe3b7, 0x0000, 0xe3cb, 0x0000, + 0xbb5d, 0xe3b6, 0xe3b0, 0xe3c0, 0xbb61, 0x0000, 0x0000, 0xbb55, + 0xbb5e, 0xe3b8, 0xe3b2, 0x0000, 0xbb57, 0xdfd4, 0xbb56, 0xe3c3, + 0x0000, 0xbb54, 0xbb63, 0xbb5c, 0xe3c4, 0xe3b9, 0xe3b1, 0xe3cc, + 0xe3bd, 0xbb62, 0xe3d0, 0xbb5f, 0xe3cf, 0x0000, 0xe3c9, 0xe3ce, + 0x0000, 0x0000, 0x0000, 0xe3d1, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe773, + 0xe774, 0xe767, 0xe766, 0xe762, 0xbdb4, 0x0000, 0xbdac, 0xe776, + 0xe775, 0xdfa9, 0xe75f, 0xe763, 0xe75d, 0x0000, 0xe770, 0xe761, + 0x0000, 0xe777, 0xe75a, 0xe758, 0xe764, 0xe76e, 0xe769, 0xbdb6 +}; + +static const unsigned short big5_from_unicode_85[] = { + 0xe74f, 0x0000, 0xe76d, 0x0000, 0x0000, 0x0000, 0xbdb7, 0xdfbd, + 0xe75b, 0xe752, 0xe755, 0xe77b, 0xe75c, 0xe753, 0xe751, 0xe74e, + 0x0000, 0xbdb0, 0xe765, 0xbdaf, 0xbdb3, 0xe760, 0xe768, 0xbda9, + 0xe778, 0xe77c, 0xbdab, 0x0000, 0xe757, 0xe76b, 0xe76f, 0xe754, + 0xe779, 0xbdb2, 0x0000, 0xbdb1, 0xe74c, 0xbdb5, 0xe772, 0xe756, + 0xe76a, 0xe750, 0xe75e, 0xe759, 0xbdad, 0xbdae, 0xe76c, 0xe77d, + 0xe77a, 0xe771, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xe74d, 0x0000, 0xbdaa, 0xeb49, 0x0000, + 0xeb40, 0xeb43, 0x0000, 0xbfbb, 0xeb45, 0xeaf9, 0xeb41, 0xeb47, + 0xbfb8, 0xbfbc, 0xbfb6, 0x0000, 0x0000, 0xeafb, 0xeb4c, 0x0000, + 0x0000, 0xeb46, 0x0000, 0xeafc, 0xeb55, 0xeb4f, 0xeaf8, 0xee46, + 0xeafe, 0xbfb7, 0x0000, 0xeb4a, 0x0000, 0xeb54, 0xbfbf, 0x0000, + 0xeb51, 0xeafd, 0xeb44, 0xeb48, 0xeb42, 0xeb56, 0xeb53, 0xeb50, + 0xbfb9, 0xbfba, 0xbfbe, 0xeafa, 0xeb57, 0xbfbd, 0xeb4d, 0x0000, + 0x0000, 0xeb4b, 0x0000, 0x0000, 0x0000, 0xeb4e, 0xee53, 0xee40, + 0xee45, 0xee52, 0xee44, 0xedfb, 0xee41, 0x0000, 0xc1a2, 0x0000, + 0xedf4, 0xee4d, 0xee4f, 0xedf3, 0xc1a1, 0xee51, 0xee49, 0xc1a8, + 0xee50, 0xee42, 0xc1aa, 0xedf9, 0xeb52, 0xee4a, 0xee47, 0xedf5, + 0xee55, 0xc1a4, 0x0000, 0x0000, 0xc1a5, 0xedf7, 0xee48, 0x0000, + 0xee54, 0xee4b, 0xedfd, 0xc1a7, 0xc1a3, 0xee4c, 0xedfe, 0xee56, + 0xedf8, 0xee43, 0xee4e, 0xedfa, 0xedfc, 0x0000, 0xc2cb, 0xedf6, + 0xc1a9, 0xc2c4, 0xc17e, 0x0000, 0x0000, 0x0000, 0x0000, 0xc1a6, + 0xc2c8, 0xf0b3, 0x0000, 0xf0a9, 0xf0a4, 0xf0aa, 0xf0b4, 0xf0b8, + 0xf0b7, 0xc2ca, 0xc2c9, 0x0000, 0x0000, 0xf0ab, 0xf0b9, 0xf0ae, + 0xf0a6, 0x0000, 0xf0a8, 0xf0a7, 0xf0ad, 0xf0b2, 0xf0a5, 0xf0ac, + 0xf0b1, 0xc2c7, 0x0000, 0xf0af, 0x0000, 0xc2c5, 0xf0b0, 0xc2c3, + 0xc2c6, 0xf2d5, 0xf0b5, 0x0000, 0x0000, 0xc3c2, 0x0000, 0xf2cd, + 0xf2d1, 0xf2c9, 0xf2cc, 0x0000, 0xf2d4, 0xc3c0, 0xf2d9, 0xf2d2, + 0x0000, 0xf2ca, 0xf2da, 0xf2d3, 0xc3c3, 0xc3c4, 0xf2d7, 0x0000, + 0xf2cb, 0xc3bf, 0xc3c1, 0xf2c6, 0xf2ce, 0xf2c8, 0x0000, 0xf2d8, + 0xf2d6, 0xf2c7, 0xf2cf, 0x0000, 0x0000, 0x0000, 0xf4be, 0xc3c5, + 0xf2d0, 0xc4a7, 0xc4a9, 0xc4a6, 0x0000, 0xf4c3, 0xf4bb, 0xf4b9 +}; + +static const unsigned short big5_from_unicode_86[] = { + 0xf4bd, 0xf4ba, 0x0000, 0x0000, 0xf4bf, 0xf4c1, 0xc4aa, 0xc4ac, + 0x0000, 0xf4c0, 0xc4ad, 0xc4ab, 0xf4c2, 0x0000, 0x0000, 0x0000, + 0x0000, 0xc4a8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xc4f4, + 0xf5f1, 0xf5f7, 0xc4f6, 0xf4bc, 0xf5f6, 0x0000, 0xf5fd, 0xf5f4, + 0xf5fb, 0xf5fa, 0xf4b8, 0xf5f5, 0xf0b6, 0xf5fe, 0xf5f3, 0xf5f8, + 0x0000, 0xf5fc, 0xf5f2, 0x0000, 0xf74a, 0xc4f5, 0xf5f9, 0x0000, + 0x0000, 0xf7f4, 0xf74b, 0xf749, 0xf747, 0xf748, 0xf74c, 0x0000, + 0xc5d9, 0xf7f2, 0xf7f0, 0xf7f5, 0xf7f3, 0x0000, 0xf7f6, 0xc5da, + 0xf7f1, 0x0000, 0x0000, 0xf8bc, 0x0000, 0x0000, 0xf945, 0xf946, + 0xf947, 0x0000, 0x0000, 0xf9c7, 0xf9bd, 0xca4f, 0xaaea, 0x0000, + 0xad68, 0x0000, 0xd3b8, 0xd3b7, 0xb040, 0xb342, 0xd77c, 0x0000, + 0x0000, 0xd77b, 0x0000, 0xb5ea, 0xb8b8, 0x0000, 0xb8b7, 0xb8b9, + 0x0000, 0xe3d4, 0xe77e, 0xeb58, 0xeb5a, 0xeb59, 0x0000, 0xc1ab, + 0xee57, 0xf0ba, 0xf9a5, 0xa6e4, 0x0000, 0xcdc9, 0xcdca, 0xcdc8, + 0xcdc7, 0xaaeb, 0x0000, 0xd0a9, 0xd0a7, 0x0000, 0x0000, 0xd0a6, + 0x0000, 0xad69, 0xad6b, 0xad6a, 0xd0a8, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xd3c4, 0xd3c1, 0xd3bf, + 0x0000, 0x0000, 0xb041, 0xd3c2, 0xb046, 0xd3bc, 0xd3cb, 0x0000, + 0xd3cd, 0xd3bd, 0x0000, 0xb043, 0xd3ce, 0xd3c9, 0xd3bb, 0xd3c0, + 0xd3ca, 0xd3c6, 0xd3c3, 0x0000, 0xb048, 0xd3cc, 0xd3be, 0x0000, + 0x0000, 0xd3c7, 0xd3b9, 0xb047, 0xb044, 0xd3c5, 0x0000, 0xd3c8, + 0xd3ba, 0xb045, 0xb042, 0x0000, 0x0000, 0x0000, 0x0000, 0xb34c, + 0xd7a5, 0xb34b, 0x0000, 0xd7a8, 0xd7ab, 0xb348, 0xb346, 0xd77e, + 0xd7a9, 0xd7a7, 0xd7a4, 0xd7ac, 0xd7ad, 0xd7af, 0xd7b0, 0xd77d, + 0xb345, 0xd7a2, 0xd7a1, 0xd7ae, 0xb347, 0xd7a3, 0xb349, 0xb344, + 0xd7a6, 0xb34d, 0x0000, 0xb34a, 0xd7aa, 0x0000, 0x0000, 0x0000, + 0xb5f1, 0xdbbf, 0x0000, 0xdbb4, 0xb5ee, 0x0000, 0xdfe7, 0xdbbd, + 0xdbb1, 0xb5ec, 0xdbb6, 0xb5ef, 0xdbba, 0xdbb8, 0xb5f2, 0xb5eb, + 0x0000, 0x0000, 0xdbb2, 0xdbb5, 0xb5f0, 0x0000, 0xdbb3, 0x0000, + 0xdbbe, 0xdbbc, 0xdbb7, 0xdbb9, 0xdbbb, 0xb5ed, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xdfe8, 0xdfee, 0xdfe4, + 0xdfea, 0xb8ba, 0xdfe6, 0xb8c0, 0x0000, 0x0000, 0xb8bf, 0x0000 +}; + +static const unsigned short big5_from_unicode_87[] = { + 0xb8be, 0xdfed, 0xb8c1, 0xb8c2, 0xdfe3, 0xdff0, 0xb8c3, 0xb8bd, + 0xb8bc, 0xdfec, 0xb8c4, 0xdfe2, 0xdfe5, 0xdfef, 0xdfeb, 0x0000, + 0x0000, 0xe3f4, 0xe3e9, 0xb8bb, 0x0000, 0x0000, 0x0000, 0x0000, + 0xbb6a, 0xe3dd, 0xe3f2, 0xe3de, 0xbb65, 0x0000, 0xe3db, 0x0000, + 0xe3e4, 0xe3dc, 0xbb67, 0xe3d6, 0xe3f1, 0xbb68, 0xe3ee, 0xe3ef, + 0xe3d7, 0xbb6d, 0xe3e6, 0x0000, 0xe3e0, 0xe3e7, 0xe3da, 0x0000, + 0xe3f3, 0xe3eb, 0xe3e5, 0xe3d5, 0xbb69, 0xe3ec, 0x0000, 0xbb6c, + 0xe3f0, 0x0000, 0xe3ea, 0xbb66, 0xe3e8, 0x0000, 0xe3e2, 0xbb64, + 0xe3d9, 0xe3e1, 0xe3ed, 0xe3df, 0x0000, 0x0000, 0xe3e3, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xbdc1, 0xdfe9, 0xe7b2, 0xe7bb, + 0xe7b1, 0xe7ad, 0xe7aa, 0xbdc2, 0xe7a8, 0xbb6b, 0xe7a1, 0xbdc0, + 0xe7a7, 0xbdbf, 0xe7ac, 0xe7a9, 0xe7b9, 0xe7b4, 0xe7ae, 0xe7b3, + 0xbdbb, 0xe7ab, 0xe7be, 0xe7a2, 0xe7a3, 0xe7ba, 0xbdbc, 0xe7bf, + 0xbdbe, 0xe7c0, 0xe7b0, 0xe3d8, 0xe7b6, 0xe7af, 0xe7b8, 0xe7b5, + 0x0000, 0x0000, 0x0000, 0xe7a6, 0xbdb9, 0xe7bd, 0xbdba, 0xe7a4, + 0xbdbd, 0xeb64, 0xe7b7, 0xe7bc, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xeb61, 0xbdb8, 0xbfc0, 0xeb6b, 0xeb67, 0x0000, 0xeb65, + 0xeb60, 0xeb6f, 0x0000, 0x0000, 0x0000, 0xbfc4, 0x0000, 0xeb5c, + 0xeb68, 0xeb69, 0xeb5f, 0xeb5e, 0xeb6c, 0x0000, 0xeb62, 0xeb5d, + 0xeb63, 0x0000, 0xeb6e, 0xeb5b, 0xeb6d, 0xeb6a, 0xbfc2, 0xbfc1, + 0x0000, 0x0000, 0xbfc3, 0xeb66, 0xf0cb, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xee59, 0xc1b1, 0xee5d, 0xee5a, 0xee61, 0xee67, + 0xee5c, 0x0000, 0xee70, 0xc1ae, 0xee6a, 0xee5f, 0xee6b, 0xee66, + 0xee6d, 0xee5e, 0xc1b3, 0xc1b2, 0xee60, 0xee6e, 0xee58, 0xee6c, + 0xc1ac, 0x0000, 0xee64, 0xee63, 0xee68, 0xee5b, 0xc1b0, 0x0000, + 0xc1b4, 0xee62, 0xee69, 0xc1b5, 0xee65, 0x0000, 0x0000, 0x0000, + 0x0000, 0xc1ad, 0xc1af, 0xf0c7, 0xf0c5, 0x0000, 0x0000, 0xf0cc, + 0xf0c9, 0xf0cd, 0x0000, 0xf0be, 0xf0c6, 0xf0d1, 0xee6f, 0xf0c2, + 0xc2cf, 0xe7a5, 0xf0bd, 0xf0ca, 0xf0c4, 0xf0c1, 0xf0bc, 0xf0bb, + 0xf0d0, 0x0000, 0xf0c0, 0xf0bf, 0xc2cd, 0xf0c8, 0x0000, 0xc2cc, + 0x0000, 0x0000, 0xc2ce, 0xf0c3, 0xf0cf, 0x0000, 0xf2de, 0xf2df, + 0x0000, 0xc3c9, 0xf2dc, 0xc3c6, 0xf2e4, 0x0000, 0xc3ca, 0xf2e6 +}; + +static const unsigned short big5_from_unicode_88[] = { + 0xf2db, 0xf0ce, 0xf2e8, 0xf2dd, 0x0000, 0xc3c7, 0xf2e3, 0x0000, + 0xf2e5, 0xf2e0, 0xf2e7, 0xf2e2, 0xf2e1, 0xc3c8, 0x0000, 0x0000, + 0xf4c5, 0xf4c6, 0x0000, 0xf4c8, 0xc4ae, 0xc4af, 0xf4c9, 0xf4c7, + 0x0000, 0xf4c4, 0x0000, 0xf642, 0xf645, 0xf641, 0x0000, 0xc4fa, + 0xf643, 0xc4f9, 0xc4f8, 0xc4f7, 0xf644, 0xf751, 0xf74f, 0x0000, + 0xf74e, 0xf640, 0xf750, 0xf646, 0xf74d, 0x0000, 0xf7f9, 0xf7d7, + 0xf7f7, 0xc5db, 0xf7f8, 0xf7fa, 0x0000, 0xf8bf, 0xc5fa, 0xf8be, + 0xf8bd, 0xc5fb, 0x0000, 0xc65a, 0xf96e, 0xf9a7, 0xf9a6, 0xf9a8, + 0xa6e5, 0xd0aa, 0x0000, 0xd3cf, 0xd3d0, 0x0000, 0x0000, 0x0000, + 0xdbc0, 0x0000, 0xf647, 0xf8c0, 0xa6e6, 0xad6c, 0xd0ab, 0x0000, + 0x0000, 0x0000, 0xd7b1, 0xb34e, 0x0000, 0xdbc2, 0xdbc1, 0xb5f3, + 0x0000, 0xb8c5, 0xe7c1, 0xbdc3, 0x0000, 0xbdc4, 0x0000, 0x0000, + 0x0000, 0xbfc5, 0xc5fc, 0xa6e7, 0x0000, 0x0000, 0x0000, 0xd0ac, + 0xaaed, 0xd0ae, 0xd0ad, 0xad6d, 0x0000, 0xd3d1, 0x0000, 0xd3d8, + 0xb049, 0xd3d6, 0xd3d4, 0x0000, 0xd3db, 0xd3d2, 0xd3d3, 0xb04a, + 0x0000, 0xb04e, 0x0000, 0x0000, 0xd3dc, 0xb04d, 0xd3da, 0xd3d7, + 0xd3d5, 0xb04b, 0xb04c, 0xd3d9, 0x0000, 0x0000, 0x0000, 0x0000, + 0xb350, 0xd7b2, 0x0000, 0xb355, 0xd7c2, 0xb354, 0xd7c4, 0x0000, + 0x0000, 0xd7b8, 0xb352, 0xd7c3, 0x0000, 0xd7b3, 0xb353, 0xd7bf, + 0xd7bb, 0xd7bd, 0xd7b7, 0xd7be, 0x0000, 0x0000, 0xb34f, 0xd7ba, + 0x0000, 0xd7b9, 0xd7b5, 0x0000, 0xd7c0, 0x0000, 0x0000, 0xd7bc, + 0xd7b4, 0x0000, 0xd7b6, 0xb351, 0xd7c1, 0x0000, 0x0000, 0x0000, + 0x0000, 0xb5f6, 0xdbcd, 0x0000, 0x0000, 0x0000, 0xdbc9, 0xdbcb, + 0xdbc6, 0xdbc5, 0xdbc3, 0x0000, 0xdbca, 0xdbcc, 0xdbc8, 0x0000, + 0xdbc7, 0xb5f4, 0xb5f5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xdbcf, 0xb8cd, 0xdff2, 0xdff8, 0xdff3, 0xdff4, 0x0000, + 0xdff9, 0x0000, 0xb8cf, 0x0000, 0xb8c7, 0xb8ce, 0xdff1, 0xdbc4, + 0xb8ca, 0xb8c8, 0xdff7, 0xdff6, 0xb8c9, 0xb8cb, 0xdff5, 0xb8c6, + 0x0000, 0xb8cc, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe3f6, + 0xbb74, 0x0000, 0x0000, 0xe442, 0xe441, 0x0000, 0xe3fb, 0xbb76, + 0xe440, 0xe3f7, 0xe3f8, 0xbb6e, 0xbb70, 0x0000, 0xe3fd, 0xe3f5, + 0xbb72, 0xbb71, 0xe3f9, 0xe3fe, 0xe3fc, 0xbb73, 0xe3fa, 0x0000 +}; + +static const unsigned short big5_from_unicode_89[] = { + 0x0000, 0xdbce, 0xbb6f, 0x0000, 0x0000, 0xe7c2, 0xe7c9, 0xbdc6, + 0x0000, 0xe7cd, 0xbdca, 0xe7c5, 0xe7c3, 0x0000, 0xe7cc, 0x0000, + 0xbdc5, 0xe7cb, 0xbdc7, 0xbdc8, 0xe7c4, 0xbdc9, 0xe7ca, 0xe7c6, + 0xe7c7, 0xe7c8, 0xbb75, 0x0000, 0x0000, 0x0000, 0xeb70, 0xeb7c, + 0x0000, 0xbfca, 0xeb77, 0xeb79, 0x0000, 0xbfc8, 0xeb71, 0xeb75, + 0x0000, 0xeb78, 0xbfc6, 0xbfc9, 0xeb7b, 0xeb73, 0xeb74, 0xeb7a, + 0xeb72, 0xeb76, 0xbfc7, 0xee72, 0x0000, 0xee71, 0xc1b7, 0xee77, + 0xc1b9, 0x0000, 0x0000, 0xc1b6, 0xee73, 0xc1ba, 0xee74, 0x0000, + 0x0000, 0xee75, 0xee78, 0x0000, 0xc1b8, 0x0000, 0xf0d6, 0x0000, + 0x0000, 0xf0d9, 0x0000, 0xf0d3, 0xf0d5, 0x0000, 0x0000, 0xf0d4, + 0xf0d7, 0xf0d8, 0xee76, 0xf0d2, 0x0000, 0x0000, 0xc3cd, 0xf2ec, + 0xf2ef, 0xf2f1, 0xf2ea, 0xf2eb, 0xf2ee, 0xf2f0, 0xc3ce, 0xc3cc, + 0xc3cb, 0xf2ed, 0xf2e9, 0xf4ca, 0xc4b0, 0x0000, 0xf4cb, 0x0000, + 0x0000, 0xf649, 0xc4fb, 0xf64b, 0xc4fc, 0xf648, 0xf64a, 0xc5a8, + 0x0000, 0xf752, 0xc5a7, 0xf7fd, 0xf7fc, 0x0000, 0xf7fb, 0x0000, + 0x0000, 0xf948, 0xf949, 0xf94b, 0xf94a, 0x0000, 0xca50, 0xa6e8, + 0x0000, 0xad6e, 0xd7c5, 0xb5f7, 0x0000, 0xdffa, 0xc2d0, 0x0000, + 0xf2f2, 0x0000, 0x0000, 0xa8a3, 0x0000, 0x0000, 0x0000, 0xb357, + 0x0000, 0x0000, 0x0000, 0xb356, 0x0000, 0xdbd0, 0xb5f8, 0xdbd2, + 0xdbd1, 0x0000, 0x0000, 0xdffb, 0xb8d0, 0xe443, 0xe446, 0xe445, + 0x0000, 0xe444, 0xe7ce, 0xe7d0, 0xe7cf, 0x0000, 0xbfcc, 0x0000, + 0x0000, 0x0000, 0xbfcb, 0x0000, 0xc1bb, 0xee79, 0xee7b, 0xee7a, + 0x0000, 0x0000, 0xc2d1, 0x0000, 0x0000, 0x0000, 0xf2f4, 0xf2f3, + 0x0000, 0xf4cc, 0xc4b1, 0x0000, 0x0000, 0xc4fd, 0xf754, 0xf753, + 0xc65b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xa8a4, 0xd0af, 0xad6f, 0xd7c8, 0xd7c6, 0x0000, + 0x0000, 0xd7c7, 0xdbd4, 0xdbd5, 0xe043, 0xdbd3, 0x0000, 0xdffc, + 0xe041, 0xe040, 0xe042, 0xb8d1, 0xdffe, 0xdffd, 0xe044, 0x0000, + 0xe449, 0xe447, 0x0000, 0xe448, 0xe7d3, 0xe7d1, 0x0000, 0x0000, + 0xe7d2, 0xeb7d, 0xee7c, 0xee7d, 0xc2d2, 0x0000, 0xf2f5, 0xf4cd, + 0xc4b2, 0x0000, 0xf64c, 0xf755, 0xc5a9, 0x0000, 0xf7fe, 0xf94c +}; + +static const unsigned short big5_from_unicode_8a[] = { + 0xa8a5, 0x0000, 0xad71, 0xad72, 0xd0b0, 0x0000, 0x0000, 0xd0b1, + 0xad70, 0x0000, 0xb054, 0x0000, 0xb052, 0x0000, 0xb051, 0xb058, + 0xb050, 0xb059, 0xd3dd, 0xb056, 0x0000, 0xb053, 0xb057, 0xb055, + 0xb04f, 0x0000, 0x0000, 0xb35f, 0x0000, 0xb359, 0xd7cc, 0xb35e, + 0x0000, 0x0000, 0xb360, 0xb35a, 0x0000, 0xb35b, 0x0000, 0xd7ca, + 0x0000, 0x0000, 0xb358, 0x0000, 0xd7cb, 0xb35d, 0x0000, 0x0000, + 0xd7c9, 0xb35c, 0x0000, 0x0000, 0xb644, 0x0000, 0xb646, 0x0000, + 0x0000, 0xdbd8, 0xb645, 0xb5f9, 0xb5fd, 0x0000, 0xb8e4, 0xe049, + 0xdbda, 0xb5fe, 0x0000, 0x0000, 0xdbdd, 0xdbde, 0xb643, 0x0000, + 0xdbe0, 0x0000, 0xdbe2, 0x0000, 0xdbe3, 0xdbd7, 0xdbd6, 0xdbe4, + 0xb642, 0xdbe1, 0xdbdf, 0x0000, 0xb640, 0xb5fb, 0xb647, 0xdbdb, + 0xdbdc, 0xdbd9, 0x0000, 0xb641, 0x0000, 0x0000, 0xb5fc, 0x0000, + 0xb5fa, 0xe048, 0xb8df, 0xb8da, 0x0000, 0x0000, 0xb8d5, 0x0000, + 0xb8e5, 0xb8d6, 0x0000, 0xb8d2, 0xb8e1, 0xb8de, 0xb8e0, 0x0000, + 0xb8d7, 0xb8dc, 0xb8d3, 0xb8d4, 0xe050, 0xe04d, 0xe045, 0xe04a, + 0x0000, 0xb8e2, 0xe051, 0xb8e3, 0xb8d9, 0x0000, 0x0000, 0xe047, + 0x0000, 0xe04f, 0xe04b, 0xe04e, 0xe04c, 0xb8dd, 0xe046, 0xb8d8, + 0x0000, 0x0000, 0x0000, 0xe44c, 0xbb78, 0xbb7b, 0x0000, 0xe44e, + 0x0000, 0xbba5, 0xe44d, 0xbb7d, 0x0000, 0xbdcf, 0xe44f, 0x0000, + 0xbba4, 0xe44b, 0xbba6, 0x0000, 0x0000, 0x0000, 0xbb79, 0x0000, + 0xb8db, 0xbb7c, 0x0000, 0xbb7a, 0xbb7e, 0xbba2, 0xbb77, 0xbba7, + 0xbba3, 0x0000, 0xbba1, 0xe44a, 0x0000, 0x0000, 0x0000, 0x0000, + 0xbdd6, 0x0000, 0xbdd2, 0x0000, 0x0000, 0x0000, 0xbdd9, 0x0000, + 0xe7d6, 0xbdda, 0xe7e2, 0xe7db, 0xbdcb, 0xe7e3, 0xe7dd, 0xbdd5, + 0xe7de, 0x0000, 0xbdd4, 0xe7e1, 0xbdce, 0xe7df, 0xe7d5, 0xbdcd, + 0xebaa, 0xbdd3, 0x0000, 0xbdd0, 0x0000, 0xbdd8, 0x0000, 0xe7d4, + 0x0000, 0xe7d8, 0xbdcc, 0xe7d7, 0xe7d9, 0xe7da, 0xbdd7, 0xe7dc, + 0xe7e0, 0xe7e4, 0x0000, 0xbddb, 0xbfd2, 0xeba5, 0xebab, 0xeba8, + 0xeb7e, 0xebac, 0xeba1, 0x0000, 0xeba7, 0x0000, 0xbfcd, 0xbfd3, + 0xebad, 0x0000, 0x0000, 0xbfcf, 0x0000, 0xbfd9, 0xbfd4, 0xebaf, + 0xeba9, 0xbfd0, 0xeba2, 0xbfda, 0xeba3, 0xeba4, 0xbfdb, 0xbfd8, + 0xbdd1, 0x0000, 0xbfce, 0xebb0, 0xbfdc, 0x0000, 0xbfd5, 0xebae +}; + +static const unsigned short big5_from_unicode_8b[] = { + 0xbfd1, 0xbfd6, 0xbfd7, 0x0000, 0xc1c3, 0xeea4, 0xeead, 0xeeaa, + 0xeeac, 0x0000, 0xc1c0, 0xeea5, 0x0000, 0xeeab, 0xc1bc, 0xeea7, + 0xc1c4, 0xeea3, 0xeea8, 0xeeaf, 0xeba6, 0xeea9, 0xeea2, 0xc1bd, + 0xeea1, 0xc1be, 0xeeb0, 0xc1bf, 0xeeae, 0xc1c2, 0xee7e, 0x0000, + 0xc1c1, 0x0000, 0xeea6, 0xf0dc, 0xf0ea, 0xf0e5, 0xf0e7, 0xf0db, + 0xc2d3, 0x0000, 0xf0da, 0xc2d6, 0xc2d5, 0x0000, 0xf0e9, 0xf0e1, + 0xf0de, 0xf0e4, 0x0000, 0xf0dd, 0x0000, 0xf0df, 0xf0e8, 0xf0e6, + 0x0000, 0xc2d4, 0xf0ed, 0xf0eb, 0xf0e2, 0xf0ec, 0xf0e3, 0x0000, + 0xf2f9, 0xc3cf, 0xf341, 0x0000, 0x0000, 0xf64f, 0xc3d6, 0xf0e0, + 0xf2f7, 0xc3d2, 0xf2f8, 0xf2fd, 0x0000, 0x0000, 0xc3d4, 0xc3d5, + 0xf2f6, 0xf340, 0xf342, 0xf2fa, 0xf2fc, 0xf2fe, 0xf2fb, 0xf343, + 0xc3d1, 0xc3d7, 0xc3d3, 0x0000, 0xc3d0, 0xf4d0, 0x0000, 0xc4b7, + 0xf4ce, 0x0000, 0x0000, 0xf4d2, 0x0000, 0xf4d3, 0xc4b5, 0xf4d4, + 0xf4d1, 0x0000, 0xf4cf, 0xc4b8, 0xc4b4, 0xf4d5, 0x0000, 0xc4b6, + 0xc4b3, 0x0000, 0x0000, 0x0000, 0xc4fe, 0x0000, 0x0000, 0xc540, + 0xf64e, 0xf64d, 0xf650, 0xf651, 0x0000, 0xc541, 0xf756, 0xf75b, + 0xc5aa, 0x0000, 0xf758, 0x0000, 0xf757, 0xf75a, 0xf759, 0x0000, + 0xf843, 0x0000, 0xc5dc, 0xf842, 0xf840, 0x0000, 0xf841, 0x0000, + 0x0000, 0x0000, 0xc5fe, 0xc5fd, 0xf8c1, 0xf8c2, 0xc640, 0x0000, + 0xf94d, 0xf94e, 0xc667, 0x0000, 0xc66d, 0x0000, 0xf9a9, 0xf9c8, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5_from_unicode_8c[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa8a6, + 0x0000, 0xd7cd, 0x0000, 0xd7ce, 0xe052, 0xe450, 0xe7e5, 0xc1c6, + 0x0000, 0xc1c5, 0xf0ee, 0xf344, 0x0000, 0xf844, 0xa8a7, 0xd3de, + 0xb05a, 0xb361, 0xe054, 0xe053, 0xbddc, 0xe7e6, 0xbddd, 0xeeb1, + 0xc2d7, 0x0000, 0x0000, 0x0000, 0xc676, 0xa8a8, 0xcdcb, 0xd3df, + 0x0000, 0x0000, 0xb362, 0x0000, 0xd7cf, 0xd7d0, 0x0000, 0xdbe5, + 0x0000, 0xb648, 0xb8e6, 0x0000, 0xe056, 0xe055, 0xe057, 0x0000, + 0xe451, 0xe452, 0xbba8, 0xbfdd, 0xbdde, 0xbfde, 0x0000, 0xeeb5, + 0xeeb2, 0xeeb4, 0xeeb3, 0xc1c7, 0x0000, 0xf0ef, 0xf346, 0xf345, + 0xcba4, 0xb05c, 0xb05b, 0xd3e0, 0x0000, 0xd7d1, 0x0000, 0x0000, + 0xdbe7, 0xdbe6, 0xb649, 0x0000, 0xe059, 0xe05a, 0xe058, 0x0000, + 0x0000, 0xb8e8, 0xb8e7, 0x0000, 0xbbaa, 0xbba9, 0x0000, 0xe7e7, + 0xebb3, 0xebb1, 0xebb2, 0xbfdf, 0xeeb7, 0xeeb6, 0x0000, 0xf0f2, + 0xf0f1, 0xf0f0, 0xf347, 0x0000, 0xf9aa, 0xa8a9, 0xad73, 0x0000, + 0xad74, 0xb05d, 0xb05e, 0xd3e2, 0xd3e1, 0xd7d2, 0x0000, 0xb368, + 0xb366, 0xb363, 0xb367, 0xb365, 0xb364, 0x0000, 0x0000, 0xb64a, + 0xdbea, 0x0000, 0xb8ed, 0xb64c, 0xb651, 0xdbec, 0xb653, 0xb652, + 0xb655, 0xdbeb, 0xdbe8, 0xb64f, 0xb64b, 0xb64d, 0xdbe9, 0xb654, + 0xb650, 0xb64e, 0xb8ef, 0xb8ee, 0xb8ec, 0xb8f0, 0x0000, 0xb8ea, + 0xb8eb, 0x0000, 0xb8e9, 0x0000, 0xe05b, 0x0000, 0x0000, 0xe454, + 0x0000, 0xbbac, 0xbbad, 0xbbab, 0x0000, 0xe453, 0x0000, 0xe455, + 0x0000, 0xe7ea, 0xe7ec, 0x0000, 0xbde7, 0xe7ed, 0xbde0, 0xe7e9, + 0xbddf, 0xbde9, 0xbde5, 0xbde6, 0xbde2, 0xe7e8, 0xbde1, 0xe7ee, + 0xe7eb, 0x0000, 0xbde8, 0x0000, 0xbde3, 0xbde4, 0xebb5, 0x0000, + 0xebb7, 0xebb6, 0x0000, 0xebb8, 0xbfe0, 0xebb4, 0x0000, 0x0000, + 0xc1cb, 0xeeb8, 0xc1c8, 0xc1cc, 0xc1ca, 0xc1c9, 0xf0f3, 0x0000 +}; + +static const unsigned short big5_from_unicode_8d[] = { + 0xf0f6, 0x0000, 0xf0f5, 0x0000, 0xf0f4, 0xc2d8, 0xf348, 0xf349, + 0xc3d8, 0xf34a, 0xc3d9, 0x0000, 0x0000, 0xc4ba, 0x0000, 0xc4b9, + 0xf652, 0x0000, 0x0000, 0xc542, 0xf653, 0xf75c, 0xc5ab, 0xc5ac, + 0x0000, 0xf845, 0x0000, 0xc642, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xa8aa, 0x0000, 0xb36a, 0xb369, + 0xe05c, 0xe05d, 0x0000, 0xbbae, 0xebb9, 0xbdea, 0xebba, 0xeeb9, + 0xa8ab, 0x0000, 0xd0b2, 0xad76, 0xad75, 0x0000, 0xd3e3, 0xb05f, + 0xd3e4, 0xd7d5, 0x0000, 0xd7d4, 0x0000, 0xd7d3, 0x0000, 0x0000, + 0xdbee, 0xb658, 0x0000, 0x0000, 0xdbed, 0xb657, 0x0000, 0x0000, + 0x0000, 0xdbef, 0xb656, 0x0000, 0xe05f, 0xe062, 0xe060, 0xe061, + 0xe065, 0xe05e, 0xe066, 0xe063, 0xe064, 0xbbb0, 0xe456, 0x0000, + 0x0000, 0xbbaf, 0x0000, 0xe7f2, 0xe7f0, 0x0000, 0x0000, 0xbdeb, + 0xe7ef, 0xe7f1, 0x0000, 0xbdec, 0x0000, 0xebbb, 0x0000, 0xebbc, + 0xc1cd, 0x0000, 0xf34c, 0xf34e, 0xf34b, 0xf34d, 0xf4d6, 0xf654, + 0x0000, 0x0000, 0xf96f, 0xa8ac, 0xad77, 0xd3e5, 0xd3e7, 0xd3e6, + 0x0000, 0xd7d8, 0xb36c, 0x0000, 0xd7d6, 0x0000, 0xb36b, 0xd7d9, + 0x0000, 0xd7da, 0xd7d7, 0x0000, 0x0000, 0xdbfb, 0xb660, 0xdbf3, + 0xdbf9, 0x0000, 0x0000, 0xb65b, 0xb65e, 0xdbf2, 0xb659, 0xdbf6, + 0xe06c, 0xb65d, 0x0000, 0xdbf1, 0x0000, 0xdbf7, 0xdbf4, 0xdbfa, + 0xdbf0, 0xdbf8, 0xb65c, 0xb65f, 0xdbf5, 0xb65a, 0x0000, 0xb8f2, + 0xe068, 0xb8f1, 0xe06f, 0xe06e, 0xb8f8, 0x0000, 0xb8f9, 0xe070, + 0xb8f3, 0xe06d, 0xb8f7, 0xe072, 0xe069, 0x0000, 0xe06b, 0xb8f4, + 0xe067, 0xe06a, 0xe071, 0xb8f5, 0xe073, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xb8f6, 0x0000, 0xbbb1, 0xe45b, 0xe461, 0xe459 +}; + +static const unsigned short big5_from_unicode_8e[] = { + 0xe462, 0x0000, 0xe458, 0xe45d, 0xe463, 0xe460, 0xe45f, 0xe45e, + 0x0000, 0xe457, 0xe45c, 0x0000, 0x0000, 0xe45a, 0x0000, 0xbdf1, + 0xbdee, 0xe7fb, 0xe841, 0xe843, 0xe840, 0xe7f8, 0xe7fa, 0xe845, + 0xe842, 0xe7fc, 0xe846, 0xe7f9, 0xe844, 0xbdef, 0xbdf5, 0xbdf3, + 0xe7f3, 0xbdf4, 0xbdf0, 0xe7f4, 0xe7f6, 0xe7f5, 0xe7fd, 0xe7fe, + 0x0000, 0xbdf2, 0x0000, 0xbded, 0x0000, 0x0000, 0xe7f7, 0x0000, + 0xebc6, 0xbfe2, 0x0000, 0xebbd, 0xbfe3, 0xbfe6, 0xebc2, 0x0000, + 0xebbf, 0xbfe5, 0x0000, 0x0000, 0xebc3, 0xebc4, 0xebbe, 0xebc7, + 0xebc0, 0xebc5, 0xbfe4, 0x0000, 0xbfe1, 0xebc1, 0x0000, 0xeebf, + 0xc1d0, 0xc1ce, 0xc1d1, 0xc1cf, 0xeebe, 0xeebb, 0xeeba, 0x0000, + 0xeebd, 0x0000, 0x0000, 0xeebc, 0xf145, 0xc2de, 0xf0fb, 0xf0fa, + 0x0000, 0xc2d9, 0xf141, 0xf140, 0xf0f7, 0xf143, 0xf0fc, 0xc2dd, + 0xf0f9, 0xf142, 0xf0f8, 0xc2da, 0xc2dc, 0xf0fd, 0xc2db, 0xf0fe, + 0x0000, 0xf144, 0xf352, 0x0000, 0xc3de, 0xf34f, 0x0000, 0xf353, + 0x0000, 0x0000, 0xc3db, 0xf351, 0xc3e0, 0x0000, 0xc3dd, 0x0000, + 0xf350, 0x0000, 0xc3df, 0xf354, 0xc3da, 0x0000, 0x0000, 0x0000, + 0x0000, 0xc4bc, 0xc4be, 0x0000, 0xf4d9, 0xc4bd, 0xf4d7, 0xc3dc, + 0xf4d8, 0xc4bb, 0xc543, 0xc545, 0xf656, 0xc544, 0xf655, 0x0000, + 0xf761, 0xc5ad, 0xf760, 0xc5ae, 0xf75e, 0xf75d, 0xf762, 0xf763, + 0xf846, 0x0000, 0xf75f, 0x0000, 0x0000, 0xf8c6, 0xf8c3, 0xf8c4, + 0xf8c5, 0xc65c, 0x0000, 0xf951, 0xf950, 0xf94f, 0xf970, 0x0000, + 0xf9be, 0xf9ab, 0xc66e, 0xa8ad, 0xb060, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xb8fa, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xbdf6, 0x0000, 0x0000, 0xebc8, 0x0000, 0x0000, + 0xc2df, 0x0000, 0xf355, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf9ac, 0xa8ae, 0xaaee, 0xad79, 0xad78, 0x0000, 0xb063, + 0x0000, 0xd3e8, 0xb061, 0xd3e9, 0xb062, 0x0000, 0x0000, 0xd7df, + 0xd7db, 0x0000, 0x0000, 0xb36d, 0xd7de, 0xd7dd, 0xd7dc, 0xb36e, + 0xd7e0, 0xd7e1, 0x0000, 0x0000, 0x0000, 0xdc43, 0xdc41, 0xdc45, + 0xdc46, 0xdc4c, 0x0000, 0xdc48, 0xdc4a, 0x0000, 0xdc42, 0xdbfc, + 0x0000, 0xdc49, 0x0000, 0x0000, 0xdc4b, 0xdc44, 0xdc47, 0xdbfd, + 0xb662, 0xdc40, 0xdbfe, 0xb661, 0xb663, 0x0000, 0xb8fd, 0xe075 +}; + +static const unsigned short big5_from_unicode_8f[] = { + 0xe077, 0xe076, 0xe07b, 0xb8fb, 0x0000, 0xe078, 0xe074, 0xe079, + 0xe07a, 0xb8fc, 0xb8fe, 0xe07c, 0x0000, 0xe467, 0xe466, 0x0000, + 0xe464, 0xe465, 0xbbb3, 0xbbb5, 0xbbb2, 0xbbb4, 0xe84d, 0xe84e, + 0xe849, 0x0000, 0xe84a, 0xbdf8, 0xbdfd, 0xbdf7, 0xbdfe, 0xbdf9, + 0xe84b, 0x0000, 0x0000, 0xe84c, 0xe848, 0xbe40, 0xbdfb, 0x0000, + 0x0000, 0xbdfa, 0xbdfc, 0x0000, 0xe847, 0x0000, 0xebca, 0xbfe8, + 0x0000, 0x0000, 0xebcc, 0xbfea, 0xebcf, 0xebcb, 0xebc9, 0xebce, + 0xbfe9, 0xebcd, 0x0000, 0xbfe7, 0x0000, 0x0000, 0xc1d3, 0xc1d6, + 0xeec1, 0x0000, 0xc1d4, 0xeec0, 0xc1d2, 0xc1d5, 0xf146, 0xf147, + 0xf148, 0xc2e0, 0x0000, 0xf149, 0x0000, 0xc2e1, 0xc3e2, 0xf358, + 0xf359, 0xf357, 0xf356, 0xf35a, 0xc3e1, 0xf4dd, 0xf4db, 0xf4dc, + 0xf4de, 0xf4da, 0xf4df, 0xf658, 0x0000, 0xf659, 0xf657, 0xc546, + 0xf764, 0xc5af, 0xf765, 0xf848, 0xf847, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xa8af, 0xb664, 0x0000, 0x0000, 0xb940, + 0x0000, 0x0000, 0x0000, 0xbbb6, 0x0000, 0x0000, 0xbfec, 0x0000, + 0xbfeb, 0x0000, 0x0000, 0x0000, 0x0000, 0xc3e3, 0xc47c, 0xc547, + 0xa8b0, 0xb064, 0xb941, 0x0000, 0xf35b, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xcba6, + 0x0000, 0x0000, 0xa8b1, 0x0000, 0xa8b4, 0xa8b3, 0xa8b2, 0x0000, + 0x0000, 0xcba5, 0x0000, 0xcdcd, 0x0000, 0xcdcf, 0xaaef, 0x0000, + 0x0000, 0xaaf1, 0xcdcc, 0xcdce, 0xaaf0, 0xcdd1, 0xcdd0, 0xcdd2, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xd0b6, 0xd0b4, 0xad7c, 0xd0b3, 0xada3, 0xad7e, 0xad7b, 0x0000, + 0xada4, 0x0000, 0xad7d, 0xada2, 0x0000, 0xada1, 0xd0b5, 0x0000, + 0xad7a, 0x0000, 0x0000, 0x0000, 0xb06a, 0xd3eb, 0xd3f1, 0xb067, + 0xb06e, 0x0000, 0xb069, 0xd3ee, 0xd3f0, 0xb06c, 0xd3ea, 0xd3ed +}; + +static const unsigned short big5_from_unicode_90[] = { + 0xb068, 0xb065, 0xd3ec, 0xb06b, 0xd3ef, 0xb06d, 0xb066, 0x0000, + 0x0000, 0x0000, 0x0000, 0xd7e3, 0xd7e6, 0xb370, 0x0000, 0xb37a, + 0xb376, 0xd7e4, 0x0000, 0x0000, 0xb37e, 0xb377, 0xb37c, 0xb372, + 0x0000, 0xb36f, 0xb371, 0xb37d, 0xd7e5, 0xb375, 0xb378, 0xb374, + 0xb379, 0xd7e7, 0xb37b, 0xb373, 0xd7e2, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xdc4d, 0xb665, 0xdc4f, + 0x0000, 0xb667, 0xb669, 0x0000, 0xdc4e, 0xb666, 0xb66a, 0x0000, + 0xb668, 0x0000, 0x0000, 0x0000, 0xb947, 0xe0a3, 0xb94f, 0xe07e, + 0x0000, 0xb950, 0xb945, 0x0000, 0xe0a1, 0x0000, 0x0000, 0xb94a, + 0x0000, 0xe0a2, 0xb943, 0xb942, 0x0000, 0xb94d, 0xb94c, 0xb94b, + 0xb949, 0xb94e, 0xe07d, 0xb944, 0xb946, 0xb948, 0x0000, 0x0000, + 0xbbb8, 0xbbbb, 0x0000, 0xbbbf, 0xbbb9, 0xbbbe, 0xbbbc, 0x0000, + 0xbbb7, 0x0000, 0xbbbd, 0xbbba, 0x0000, 0x0000, 0x0000, 0xe852, + 0xbe43, 0xbe41, 0x0000, 0xe853, 0x0000, 0xbe44, 0xbe42, 0xe851, + 0xe850, 0x0000, 0xbff0, 0xe84f, 0xbfee, 0xbfed, 0xebd0, 0xbe45, + 0xbfef, 0xebd1, 0xbff2, 0xebd2, 0xbff1, 0xc1d8, 0xeec3, 0xc1d7, + 0xc1dc, 0xc1da, 0xc1db, 0xc2e3, 0xc1d9, 0xeec2, 0xebd3, 0xc2e2, + 0xc2e4, 0x0000, 0xc3e4, 0xc3e5, 0x0000, 0xf4e0, 0x0000, 0xc5de, + 0xc5dd, 0xa8b6, 0x0000, 0x0000, 0xca55, 0xb06f, 0x0000, 0x0000, + 0xca53, 0xca51, 0x0000, 0xca54, 0x0000, 0x0000, 0xcbaa, 0xcba7, + 0xcbac, 0xcba8, 0xa8b7, 0xa8ba, 0x0000, 0xcba9, 0xa8b9, 0xcbab, + 0x0000, 0x0000, 0xa8b8, 0x0000, 0x0000, 0x0000, 0x0000, 0xcdd5, + 0xcdd7, 0xaaf4, 0xcdd3, 0xcdd6, 0xcdd4, 0xaaf2, 0xaaf5, 0x0000, + 0xaaf3, 0x0000, 0x0000, 0x0000, 0x0000, 0xd0b8, 0xd0bc, 0xd0b9, + 0x0000, 0xada7, 0x0000, 0xada8, 0x0000, 0xd0bb, 0x0000, 0xd0bd, + 0xd0bf, 0x0000, 0xada5, 0xd0be, 0x0000, 0x0000, 0xada6, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xd7ee, 0xd0ba, 0xd3f2, 0xd3fb, + 0xd3f9, 0xd3f4, 0xd3f5, 0xd3fa, 0xd3fc, 0xb071, 0x0000, 0xd3f7, + 0xd3f3, 0xb070, 0xb072, 0xd3f6, 0xd3fd, 0xd3f8, 0x0000, 0x0000, + 0xb3a1, 0xd7f1, 0xd7e9, 0xd7ef, 0xd7f0, 0xb3a2, 0x0000, 0xd7e8, + 0xd7ea, 0xd0b7, 0xd7ec, 0xd7ed, 0xd7eb, 0xb66c, 0x0000, 0x0000, + 0x0000, 0xdc56, 0xebd4, 0xdc57, 0xdc54, 0xb3a3, 0xb66e, 0xdc53 +}; + +static const unsigned short big5_from_unicode_91[] = { + 0xdc59, 0xdc58, 0xb66b, 0xdc5c, 0xdc52, 0xdc5b, 0xdc50, 0xdc5a, + 0xdc55, 0xb66d, 0x0000, 0xe0aa, 0x0000, 0xe0a5, 0xe0ab, 0xe0a6, + 0xe0a4, 0xe0a7, 0xb951, 0x0000, 0xe0a9, 0x0000, 0xe0a8, 0xb952, + 0xbbc1, 0xbbc0, 0xe46e, 0xe471, 0xe469, 0xe46d, 0xbbc2, 0xe46c, + 0xe46a, 0xe470, 0xe46b, 0xe468, 0xe46f, 0x0000, 0xe859, 0xbe48, + 0xf14a, 0xe856, 0xe857, 0xe855, 0xdc51, 0xbe47, 0xe85a, 0xe854, + 0xbe46, 0xbe49, 0xe858, 0xebd5, 0xbff3, 0xebd6, 0xebd7, 0x0000, + 0xeec4, 0xc1dd, 0xf14b, 0xf14c, 0x0000, 0x0000, 0xf14d, 0xf35d, + 0xf35c, 0xf4e2, 0x0000, 0xf4e1, 0xf65b, 0xf65c, 0xf65a, 0xf766, + 0xc5b0, 0xa8bb, 0xadaa, 0xada9, 0xb075, 0xb074, 0xd440, 0xd441, + 0xd3fe, 0x0000, 0xb073, 0xd7f5, 0x0000, 0xd7f6, 0xd7f2, 0xb3a4, + 0xd7f3, 0x0000, 0xd7f4, 0x0000, 0x0000, 0x0000, 0x0000, 0xdc5f, + 0xdc61, 0xdc5d, 0xdc60, 0xb66f, 0xdc5e, 0xb670, 0x0000, 0x0000, + 0xdd73, 0xb955, 0xb954, 0x0000, 0xb953, 0x0000, 0xe0ac, 0xe0ad, + 0x0000, 0x0000, 0xe473, 0xe475, 0xbbc6, 0xbbc3, 0x0000, 0xbbc5, + 0xbbc4, 0xe474, 0xe472, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe861, 0xe85e, 0xe85f, 0xbe4d, 0xe860, 0xe85b, 0xe85c, 0xbe4a, + 0x0000, 0xbe4b, 0xe85d, 0xbe4c, 0x0000, 0xebdb, 0x0000, 0xebdc, + 0xebd9, 0xebda, 0xbff4, 0xebd8, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xeec8, 0xeec5, 0xeec7, 0xc1e0, 0xeecb, 0xc1df, 0xeec9, + 0xeecc, 0xeeca, 0xeec6, 0xc1de, 0x0000, 0xf14f, 0x0000, 0xf150, + 0xf14e, 0x0000, 0xf152, 0xc2e5, 0xc2e6, 0xf35f, 0xc3e7, 0xf151, + 0xf35e, 0xc3e6, 0xf4e5, 0xf4e6, 0xc4bf, 0xf4e4, 0x0000, 0xf4e3, + 0x0000, 0xf65d, 0xc548, 0x0000, 0xf849, 0xf8c8, 0xf8c7, 0x0000, + 0xc643, 0xc65d, 0xf8c9, 0xf971, 0x0000, 0xc66f, 0xa8bc, 0xaaf6, + 0x0000, 0xb956, 0x0000, 0xc4c0, 0xa8bd, 0xadab, 0xb3a5, 0xb671, + 0xc2e7, 0xaaf7, 0x0000, 0xd0c1, 0xd0c0, 0xd442, 0x0000, 0xb078, + 0xb076, 0xb07a, 0xd444, 0x0000, 0xb079, 0xb077, 0x0000, 0x0000, + 0x0000, 0x0000, 0xd443, 0xb3a8, 0xd7fc, 0x0000, 0xb3a7, 0xb3a9, + 0xd842, 0xb3ab, 0xd7fe, 0xd840, 0xd7f7, 0xb3aa, 0xd843, 0x0000, + 0x0000, 0xd7f9, 0x0000, 0xd7fa, 0xd7f8, 0xb3a6, 0x0000, 0xd841, + 0xd7fb, 0xd7fd, 0x0000, 0x0000, 0x0000, 0xdc6d, 0x0000, 0xdc6c +}; + +static const unsigned short big5_from_unicode_92[] = { + 0xdc6a, 0xdc62, 0xdc71, 0xdc65, 0xdc6f, 0xdc76, 0xdc6e, 0xb679, + 0x0000, 0xb675, 0xdc63, 0x0000, 0xdc69, 0xb677, 0x0000, 0xdc68, + 0xb678, 0xb67a, 0xdc6b, 0x0000, 0xb672, 0xb673, 0xdc77, 0xdc75, + 0x0000, 0xdc74, 0xdc66, 0x0000, 0xdc72, 0x0000, 0xb676, 0x0000, + 0x0000, 0x0000, 0x0000, 0xb674, 0xdc73, 0xdc64, 0xdc67, 0xdc70, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe4ba, 0xe0b7, 0x0000, + 0xe0b0, 0xe0c3, 0xe0cc, 0xe0b3, 0xb961, 0x0000, 0xe0c0, 0xb957, + 0xb959, 0xb965, 0xe0b1, 0x0000, 0x0000, 0xb95a, 0xb95c, 0xb966, + 0xb95b, 0x0000, 0x0000, 0x0000, 0x0000, 0xb964, 0xe0b9, 0x0000, + 0xe0ae, 0xb962, 0xe0b8, 0xb95e, 0xe0ca, 0xb963, 0xe0c8, 0xe0bc, + 0xe0c6, 0xb960, 0xe0af, 0xe0c9, 0xe0c4, 0x0000, 0xe0cb, 0xb958, + 0x0000, 0x0000, 0xb967, 0xb95d, 0x0000, 0x0000, 0xe0b5, 0x0000, + 0xe0bd, 0xe0c1, 0x0000, 0xe0c5, 0xb95f, 0xe0b4, 0xe0b2, 0xe0be, + 0x0000, 0x0000, 0x0000, 0x0000, 0xe0bb, 0xe0ba, 0x0000, 0xe0bf, + 0xe0c2, 0x0000, 0xe0c7, 0x0000, 0x0000, 0x0000, 0xe478, 0x0000, + 0xbbc7, 0xe4a4, 0xe47a, 0xbbcc, 0xbbd0, 0xe4ad, 0xe4b5, 0xe4a6, + 0xbbc8, 0x0000, 0xe4aa, 0xe0b6, 0x0000, 0xbbc9, 0xe4b1, 0xe4b6, + 0xe4ae, 0x0000, 0xe4b0, 0xe4b9, 0xe4b2, 0xe47e, 0xe4a9, 0x0000, + 0x0000, 0xbbd1, 0x0000, 0xbbcd, 0xe47c, 0xe4ab, 0xbbcb, 0xe4a5, + 0xbbca, 0xe4b3, 0xe4a2, 0xe479, 0xbbce, 0xe4b8, 0x0000, 0x0000, + 0xe47b, 0xe4af, 0xe4ac, 0xe4a7, 0xe477, 0xe476, 0xe4a1, 0xe4b4, + 0xbbcf, 0xe4b7, 0xe47d, 0xe4a3, 0xbe52, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xbe5a, 0xbe55, 0xe8a4, 0xe8a1, 0xe867, 0xbe50, + 0x0000, 0x0000, 0x0000, 0xbe4f, 0xbe56, 0x0000, 0x0000, 0x0000, + 0xe865, 0xbe54, 0xe871, 0xe863, 0xe864, 0xbe4e, 0xe8a3, 0xbe58, + 0xe874, 0xe879, 0xe873, 0xebee, 0xe86f, 0xe877, 0xe875, 0xe868, + 0xe862, 0xe87d, 0xbe57, 0xe87e, 0x0000, 0xe878, 0x0000, 0xe86d, + 0xe86b, 0xe866, 0x0000, 0x0000, 0x0000, 0xe86e, 0xe87b, 0xe86a, + 0xe87a, 0xe8a2, 0x0000, 0x0000, 0xbe53, 0x0000, 0xe876, 0xe87c, + 0xe872, 0xe86c, 0xbe51, 0x0000, 0x0000, 0x0000, 0xe4a8, 0xe870, + 0xbe59, 0xe869, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xebf4, + 0xbff7, 0xebf3, 0xebf0, 0xec44, 0xbffb, 0x0000, 0xec41, 0xebf8 +}; + +static const unsigned short big5_from_unicode_93[] = { + 0xec43, 0xebe9, 0xebf6, 0x0000, 0xbffd, 0x0000, 0xebe1, 0x0000, + 0xebdf, 0xec42, 0x0000, 0xec40, 0xebfe, 0xebed, 0xebec, 0xebe2, + 0xc040, 0x0000, 0xebe8, 0xebf2, 0xebfd, 0xc043, 0xec45, 0x0000, + 0xc1e8, 0xc045, 0xbffe, 0xebe6, 0x0000, 0xebef, 0xebde, 0xebe0, + 0xbff5, 0xc042, 0xbffa, 0xebe7, 0xebf7, 0xebf1, 0xc041, 0xebdd, + 0xc1e3, 0xebf9, 0xebfc, 0xbffc, 0x0000, 0xebeb, 0xc044, 0xbff9, + 0x0000, 0x0000, 0x0000, 0xbff8, 0xebf5, 0xebfb, 0xbff6, 0x0000, + 0xebe4, 0xebfa, 0x0000, 0x0000, 0xebe5, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xebea, 0xeed2, + 0x0000, 0xeed7, 0xc1e5, 0xc1e7, 0xeedd, 0xc1e1, 0xeeec, 0xeee3, + 0xeed8, 0xeed9, 0xeee2, 0x0000, 0xc1ee, 0xeee1, 0xeed1, 0xeee0, + 0xeed4, 0xeeed, 0xc1ed, 0xc1eb, 0xeed5, 0x0000, 0xeee8, 0x0000, + 0xeeda, 0xeee7, 0x0000, 0xeee9, 0xeed0, 0xc1e6, 0x0000, 0xeeea, + 0x0000, 0x0000, 0xeede, 0x0000, 0xc1ea, 0xeedb, 0x0000, 0x0000, + 0xc1ec, 0xeee4, 0x0000, 0x0000, 0x0000, 0xc1e4, 0xeed6, 0xeee5, + 0x0000, 0xeedf, 0xebe3, 0xeee6, 0xeed3, 0x0000, 0xc1e9, 0x0000, + 0xeeeb, 0x0000, 0xc1e2, 0xeece, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf160, 0xf159, 0xc2e9, 0x0000, 0xf154, 0xf163, 0xf15b, 0xeedc, + 0x0000, 0xf165, 0xf155, 0x0000, 0xc2e8, 0xf15f, 0xc2ea, 0xc2f2, + 0xc2f0, 0xf161, 0xc2f1, 0xf157, 0x0000, 0xf158, 0xf15d, 0xf162, + 0x0000, 0xeecd, 0xc2eb, 0xf16a, 0xf167, 0xf16b, 0xf15e, 0xf15a, + 0xf168, 0xf36a, 0xf15c, 0x0000, 0xc2ee, 0x0000, 0xc2ed, 0xeecf, + 0xc2ef, 0xf164, 0xf166, 0xc2ec, 0xf169, 0xf153, 0x0000, 0xf156, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf373, 0x0000, 0xf363, 0xc3eb, 0xf371, 0x0000, 0x0000, 0xf361, + 0xc3ec, 0x0000, 0xf36c, 0x0000, 0xf368, 0xc3f1, 0xf372, 0xf362, + 0xf365, 0xc3e9, 0xf374, 0x0000, 0xf36d, 0xf370, 0xc3ef, 0xc3f4, + 0xc3f2, 0xf369, 0xf364, 0x0000, 0xc3ed, 0xc3ee, 0xf360, 0xc3ea, + 0x0000, 0xc3e8, 0xc3f0, 0xf36f, 0xc3f3, 0x0000, 0xf36b, 0xf375, + 0xc3f5, 0x0000, 0x0000, 0x0000, 0xf367, 0x0000, 0xf36e, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf4f3, 0xf542, 0xf4f5, + 0xf4fc, 0xf366, 0xf4fa, 0xf4e9, 0xf540, 0xc4c3, 0xf4ed, 0xf4fe +}; + +static const unsigned short big5_from_unicode_94[] = { + 0xf4f4, 0x0000, 0x0000, 0xc4c2, 0x0000, 0x0000, 0xf544, 0xf4f6, + 0x0000, 0xf4fb, 0xf4fd, 0xf4e7, 0xf541, 0xf4f2, 0xf4f7, 0xf4eb, + 0xf4ef, 0xf543, 0xf4f9, 0xf4e8, 0xf4ec, 0xf4ee, 0xf4f8, 0x0000, + 0xc4c1, 0xf4f1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf4ea, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf4f0, 0xf661, 0xf666, 0xc54f, 0xf668, 0x0000, 0xc549, 0x0000, + 0xf664, 0xf66a, 0xc54e, 0xc54a, 0x0000, 0xc54b, 0xf660, 0xf667, + 0xc54d, 0xf665, 0xc54c, 0xf65f, 0xf663, 0xf662, 0x0000, 0xf65e, + 0xf669, 0x0000, 0x0000, 0x0000, 0xc5b1, 0xf76d, 0xf770, 0xf76c, + 0xf76e, 0xf76f, 0xf769, 0xf76a, 0xf767, 0x0000, 0x0000, 0xf76b, + 0xf768, 0xc5b2, 0xc5b3, 0x0000, 0x0000, 0xf84b, 0x0000, 0xf84d, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf84c, 0xf84e, 0x0000, + 0xc5e0, 0x0000, 0xf84a, 0xc5df, 0xc5e1, 0x0000, 0x0000, 0x0000, + 0xf8cb, 0xf8cc, 0xc644, 0xf8ca, 0x0000, 0xf953, 0xf952, 0xf954, + 0xc65f, 0xf955, 0xc65e, 0xf956, 0xf972, 0xf975, 0xf974, 0xc668, + 0xf973, 0x0000, 0x0000, 0x0000, 0xc672, 0xc670, 0xc671, 0xc677, + 0xf9c0, 0xf9c1, 0xf9bf, 0xf9c9, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5_from_unicode_95[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xaaf8, + 0x0000, 0x0000, 0xd844, 0xdc78, 0xe8a5, 0xf376, 0x0000, 0x0000, + 0xaaf9, 0x0000, 0xadac, 0xb07b, 0x0000, 0x0000, 0xd845, 0x0000, + 0xd846, 0xb3ac, 0x0000, 0xb67d, 0xdc7a, 0xdc79, 0xb6a3, 0xb67c, + 0xdc7b, 0xb67e, 0xb6a2, 0xb6a1, 0xb67b, 0x0000, 0x0000, 0x0000, + 0xb968, 0x0000, 0x0000, 0xe0d0, 0xe0ce, 0x0000, 0xe0cf, 0xe0cd, + 0x0000, 0xbbd2, 0x0000, 0xbbd5, 0xbbd7, 0xbbd6, 0x0000, 0x0000, + 0xbbd3, 0xbbd4, 0x0000, 0xe8a7, 0xe8a6, 0xbe5b, 0xe8a8, 0x0000, + 0xe8a9, 0xbe5c, 0x0000, 0x0000, 0x0000, 0xec4d, 0xec4b, 0xeef3, + 0x0000, 0xec49, 0xec4a, 0xc046, 0xec46, 0xec4e, 0xec48, 0xec4c, + 0xeeef, 0x0000, 0x0000, 0xeef1, 0x0000, 0xeef2, 0xc1f3, 0xeeee, + 0xc1f2, 0xeef0, 0xc1ef, 0xc1f0, 0xc1f1, 0xec47, 0x0000, 0x0000, + 0xc2f5, 0xf16e, 0xf16c, 0xf16d, 0xc2f3, 0xc2f6, 0xc2f4, 0x0000, + 0x0000, 0x0000, 0xf377, 0xf378, 0xc3f6, 0x0000, 0xf545, 0xf547, + 0xf546, 0xc4c4, 0xc550, 0xf66d, 0xf66c, 0xf66b, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5_from_unicode_96[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xaafa, 0x0000, 0xc9aa, 0x0000, + 0xca58, 0xa6e9, 0xca56, 0xca59, 0xca57, 0x0000, 0x0000, 0x0000, + 0xcbae, 0x0000, 0xa8c1, 0x0000, 0xa8c2, 0xcbb0, 0xa8bf, 0xcbaf, + 0xcbad, 0xa8c0, 0xa8be, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xcdd8, 0xcddb, 0xaafd, 0xcdda, 0xcdd9, 0x0000, 0xaafc, + 0xaafb, 0x0000, 0xab40, 0xcddc, 0xaafe, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xd0c6, 0xadae, 0xadaf, 0xadb0, 0xd0c7, 0xd0c3, + 0xadad, 0xd0c4, 0x0000, 0xd0c5, 0xd0c2, 0x0000, 0x0000, 0x0000, + 0xb0a4, 0x0000, 0x0000, 0xb0a1, 0xd445, 0xb0a2, 0xb0a5, 0xd446, + 0x0000, 0xb07e, 0xb07c, 0xb07d, 0xb0a3, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xb3ad, 0xd849, 0xb3b5, 0xd848, 0x0000, 0xd84b, + 0xb3b1, 0xd84a, 0xb6ab, 0xb3af, 0xb3b2, 0xb3ae, 0xb3b3, 0xb3b4, + 0xb3b0, 0x0000, 0x0000, 0x0000, 0xd847, 0xb6a7, 0xdc7d, 0x0000, + 0xdca3, 0x0000, 0x0000, 0xdca2, 0xb6ac, 0xb6a8, 0xb6a9, 0xdc7c, + 0xdc7e, 0xdca1, 0xb6a4, 0xb6a6, 0x0000, 0xb6aa, 0xb6a5, 0x0000, + 0x0000, 0xe0d3, 0xe0d1, 0xe0d2, 0xb96a, 0xb96b, 0x0000, 0xe0d4, + 0xb969, 0xbbd8, 0x0000, 0xbbda, 0xbbd9, 0x0000, 0xe4bb, 0x0000, + 0x0000, 0xe4bc, 0xe8ab, 0x0000, 0xe8aa, 0x0000, 0x0000, 0xc047, + 0xc048, 0xec4f, 0xc049, 0x0000, 0xeef6, 0x0000, 0xeef4, 0x0000, + 0xeef5, 0xc1f4, 0x0000, 0xf16f, 0xc3f7, 0x0000, 0x0000, 0x0000, + 0xc1f5, 0xab41, 0x0000, 0xb0a6, 0xd447, 0x0000, 0x0000, 0xd84c, + 0xb3b6, 0xb6ad, 0xdca4, 0xdca6, 0xb6af, 0xb6ae, 0xb6b0, 0xb6b1, + 0xdca5, 0xb96e, 0xb96f, 0xb96d, 0xbbdb, 0xb96c, 0xe0d5, 0x0000, + 0x0000, 0x0000, 0xbbdc, 0xe8ac, 0xec50, 0xc04a, 0xc1f6, 0xf170, + 0xf174, 0xc2f9, 0xf171, 0xc2fa, 0xc2f8, 0xf175, 0xc2fb, 0xf173, + 0x0000, 0xf379, 0xc2f7, 0xc3f8, 0x0000, 0xf8cd, 0x0000, 0x0000, + 0xab42, 0xb3b8, 0xb3b7, 0x0000, 0x0000, 0x0000, 0x0000, 0xb6b2, + 0xdca8, 0xdca7, 0xb6b3, 0x0000, 0x0000, 0xe0d9, 0xb973, 0xb970, + 0xe0d8, 0xb972, 0xe0d6, 0xb971, 0x0000, 0xe0d7, 0x0000, 0xe4bd +}; + +static const unsigned short big5_from_unicode_97[] = { + 0xbbdd, 0x0000, 0xe8af, 0x0000, 0xbe5d, 0xe8ad, 0xbe5e, 0xbe5f, + 0xe8ae, 0xbe60, 0x0000, 0xec51, 0x0000, 0xc04e, 0xc04b, 0xc050, + 0xec53, 0xc04c, 0xec52, 0xc04f, 0x0000, 0x0000, 0xc04d, 0x0000, + 0xeef9, 0xeefb, 0x0000, 0x0000, 0xc1f7, 0xeefa, 0xc1f8, 0xeef8, + 0xeef7, 0x0000, 0xf177, 0xf176, 0xc2fc, 0xf178, 0xf37e, 0xc3fa, + 0xf37d, 0xf37a, 0xc3f9, 0xf37b, 0xf37c, 0x0000, 0xf548, 0xf549, + 0xc4c5, 0x0000, 0xc553, 0x0000, 0x0000, 0xf66e, 0x0000, 0x0000, + 0xc551, 0xc552, 0xf66f, 0x0000, 0x0000, 0xc5b4, 0xc5b5, 0xf771, + 0x0000, 0x0000, 0xc645, 0xf8cf, 0xc647, 0x0000, 0xf8ce, 0xf8d0, + 0xc646, 0xf957, 0x0000, 0xf9ad, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xab43, 0x0000, 0x0000, 0x0000, 0xb974, 0x0000, + 0xe4be, 0x0000, 0xe8b0, 0xc051, 0x0000, 0x0000, 0xab44, 0x0000, + 0xbe61, 0xc3fb, 0xadb1, 0x0000, 0x0000, 0x0000, 0xc053, 0x0000, + 0xc5e2, 0xadb2, 0xd84d, 0x0000, 0xdca9, 0x0000, 0xdcab, 0x0000, + 0xdcaa, 0x0000, 0xe0dd, 0xe0da, 0xb975, 0x0000, 0xb976, 0xe0db, + 0xe0dc, 0x0000, 0xe4c0, 0xe4c5, 0xbbde, 0xe4bf, 0xe4c1, 0xe4c8, + 0xe4c3, 0xe4c7, 0xe4c4, 0xe4c2, 0xe4c6, 0xbbdf, 0x0000, 0x0000, + 0xe8b3, 0x0000, 0xe8b1, 0xbe63, 0x0000, 0xbe62, 0xe8b2, 0xbe64, + 0x0000, 0x0000, 0x0000, 0x0000, 0xec56, 0x0000, 0x0000, 0xec55, + 0xc054, 0xec54, 0xeefc, 0x0000, 0xeefe, 0xef41, 0xef40, 0x0000, + 0xc1f9, 0xeefd, 0xf1a1, 0xc2fd, 0xf17d, 0xf1a2, 0xc2fe, 0x0000, + 0xf17b, 0x0000, 0xf17e, 0xf17c, 0xf179, 0xc340, 0xf17a, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf3a1, 0x0000, 0x0000, 0xf3a3, 0xf3a2, + 0x0000, 0xf54a, 0x0000, 0xf54b, 0x0000, 0x0000, 0x0000, 0xf670, + 0x0000, 0xc5b7, 0x0000, 0xc5b6, 0xf84f, 0xf850, 0xc648, 0xf8d1, + 0x0000, 0xc669, 0x0000, 0xadb3, 0xb6b4, 0xe4ca, 0xe4c9, 0xe8b5, + 0xe8b4, 0x0000, 0x0000, 0xc1fa, 0xef43, 0xef42, 0xf1a5, 0xf1a3, + 0xf1a6, 0xf1a4, 0x0000, 0x0000, 0xc3fc, 0xf3a4, 0xf3a5, 0xf3a6, + 0x0000, 0xf671, 0x0000, 0xf772, 0x0000, 0xf8d2, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xadb4, 0x0000, 0x0000, + 0xec57, 0xef44, 0x0000, 0xadb5, 0x0000, 0x0000, 0xbbe0, 0x0000, + 0xec58, 0xc341, 0xf1a7, 0xc3fd, 0x0000, 0xf54c, 0xf54d, 0xc554 +}; + +static const unsigned short big5_from_unicode_98[] = { + 0xf851, 0xadb6, 0xb3bb, 0xb3bc, 0xd84e, 0xb6b5, 0xb6b6, 0xdcac, + 0xb6b7, 0x0000, 0xb97a, 0x0000, 0xb97c, 0xe0df, 0xe0e0, 0xe0de, + 0xb977, 0xb978, 0xb97b, 0xb979, 0x0000, 0x0000, 0xe4cb, 0xbbe1, + 0xbbe2, 0x0000, 0x0000, 0xe8bc, 0xbe67, 0xe8b7, 0xe8b6, 0x0000, + 0xe8bb, 0xbe65, 0x0000, 0x0000, 0xc05b, 0x0000, 0xe8b8, 0xe8bd, + 0xe8ba, 0xe8b9, 0x0000, 0xbe66, 0x0000, 0xc059, 0x0000, 0xec5a, + 0xc055, 0x0000, 0xec5b, 0x0000, 0x0000, 0xec59, 0x0000, 0xc058, + 0xc056, 0xc05a, 0x0000, 0xc057, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xef45, 0x0000, 0xef4a, 0xef46, 0xef49, 0xc1fb, 0x0000, + 0xedd4, 0xef48, 0xef47, 0x0000, 0xc344, 0xc342, 0xc345, 0xc343, + 0xf1a8, 0xf1a9, 0xf1aa, 0xc346, 0x0000, 0x0000, 0x0000, 0xf3aa, + 0xc440, 0xf3a8, 0x0000, 0xc441, 0xf3a7, 0xf3a9, 0xc3fe, 0xf551, + 0xf54e, 0x0000, 0xf54f, 0xf550, 0xf672, 0xc556, 0x0000, 0xc555, + 0x0000, 0xf774, 0xf773, 0xc5b8, 0x0000, 0x0000, 0x0000, 0xc5e3, + 0xc649, 0xc660, 0xf958, 0xf9ae, 0xf9af, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xadb7, 0xdcad, 0x0000, 0x0000, 0xe0e1, 0xe4cc, 0xe4cd, 0xbbe3, + 0x0000, 0xbbe4, 0xe8be, 0xbe68, 0x0000, 0x0000, 0xc1fc, 0x0000, + 0xf1ab, 0x0000, 0xc347, 0xf3ad, 0xc442, 0xf3ac, 0xf3ae, 0xf3ab, + 0xf675, 0xf552, 0xf553, 0x0000, 0xc4c6, 0x0000, 0xf674, 0x0000, + 0x0000, 0xf673, 0x0000, 0xf775, 0xf9b0, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xadb8, 0x0000, 0x0000, 0x0000, 0xadb9, + 0x0000, 0x0000, 0xb0a7, 0xd448, 0x0000, 0xd84f, 0x0000, 0xb6b8, + 0x0000, 0xb6bb, 0xb6b9, 0xdcae, 0x0000, 0xb6bd, 0x0000, 0xb6ba, + 0x0000, 0x0000, 0xb6bc, 0x0000, 0xb97e, 0x0000, 0xe0e2, 0x0000, + 0x0000, 0xe0e3, 0xe8c0, 0x0000, 0xb97d, 0xb9a1, 0xb9a2, 0x0000 +}; + +static const unsigned short big5_from_unicode_99[] = { + 0xe4cf, 0x0000, 0xe4ce, 0xbbe5, 0x0000, 0xbbe6, 0x0000, 0xe4d0, + 0xe8bf, 0xbbe8, 0xbe69, 0x0000, 0xbbe7, 0x0000, 0x0000, 0x0000, + 0xc05c, 0xe8c1, 0xbe6b, 0xbe6a, 0xe8c2, 0xe8c5, 0xe8c3, 0xe8c4, + 0xbe6c, 0x0000, 0xc061, 0xc05f, 0x0000, 0x0000, 0xc05e, 0xec5d, + 0x0000, 0xc060, 0x0000, 0x0000, 0xec5c, 0xef4b, 0x0000, 0xec5e, + 0xc05d, 0xec5f, 0xef4e, 0xef4c, 0xef4d, 0xef52, 0xc34b, 0xef51, + 0xef54, 0xef53, 0xef50, 0xef4f, 0x0000, 0xc1fd, 0x0000, 0x0000, + 0x0000, 0x0000, 0xf1ae, 0x0000, 0xf1ad, 0xc34a, 0xc348, 0xc349, + 0x0000, 0xf1ac, 0x0000, 0xf3b1, 0x0000, 0xc443, 0x0000, 0xf3b0, + 0xf3af, 0xc444, 0x0000, 0xf558, 0xf557, 0x0000, 0xf555, 0x0000, + 0xf554, 0xc4c8, 0xc4c7, 0xf559, 0xf776, 0xc5b9, 0xf677, 0xc557, + 0xf676, 0xf556, 0x0000, 0xf777, 0xc5e4, 0x0000, 0xc661, 0xf959, + 0x0000, 0xf9b1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xadba, 0xd850, + 0xef55, 0xadbb, 0x0000, 0x0000, 0xe4d2, 0xe4d1, 0xec60, 0x0000, + 0x0000, 0xef57, 0x0000, 0xef56, 0x0000, 0xc34c, 0xf3b2, 0xf3b3, + 0xc4c9, 0x0000, 0x0000, 0xf9b2, 0xb0a8, 0xb6bf, 0xb6be, 0xe0e4, + 0xe0e6, 0xb9a4, 0xe0e5, 0xb9a3, 0xb9a5, 0xe0e7, 0x0000, 0x0000, + 0x0000, 0xe4d4, 0xe4d6, 0xe4d5, 0x0000, 0xe4d8, 0x0000, 0x0000, + 0x0000, 0xbbe9, 0xe4d7, 0xe4d3, 0x0000, 0x0000, 0x0000, 0xe4d9, + 0x0000, 0xe8cc, 0x0000, 0xe8cf, 0xe8d1, 0xe8c7, 0xe8cb, 0xe8c8, + 0xbe6e, 0xbe71, 0xbe73, 0xe8c9, 0xe8ca, 0xbe72, 0xe8cd, 0xe8d0, + 0xe8ce, 0xbe74, 0x0000, 0xbe70, 0xe8c6, 0xbe6d, 0x0000, 0xbe6f, + 0x0000, 0x0000, 0xc063, 0xec66, 0xec64, 0xec63, 0x0000, 0xec69, + 0x0000, 0xec68, 0xec67, 0x0000, 0xec62, 0xc062, 0xec61, 0x0000, + 0xec65, 0xc064, 0x0000, 0x0000, 0xef5a, 0x0000, 0xef5e, 0xef5b, + 0xef5d, 0xef5c, 0xef59, 0xef5f, 0xef62, 0xef60, 0xef61, 0xc240 +}; + +static const unsigned short big5_from_unicode_9a[] = { + 0x0000, 0xc1fe, 0xef58, 0xef63, 0xf1b3, 0xf1b6, 0xf1b8, 0xf1b7, + 0x0000, 0xf1b1, 0xf1b5, 0xf1b0, 0x0000, 0xf1b2, 0xc34d, 0xf1af, + 0x0000, 0xf1b4, 0x0000, 0x0000, 0xf3c0, 0xf3b5, 0xc445, 0x0000, + 0x0000, 0xc446, 0xf3b4, 0xf3b9, 0xf3bf, 0xf3b7, 0xf3be, 0x0000, + 0xf3bb, 0x0000, 0xf3ba, 0xf3bd, 0xf3b8, 0xf3b6, 0x0000, 0xf3bc, + 0x0000, 0xf560, 0xf55e, 0xc4ca, 0xf55d, 0xf563, 0xf561, 0x0000, + 0xc4cb, 0xf55c, 0xf55a, 0x0000, 0xf55b, 0xc4cd, 0xf55f, 0xc4cc, + 0xf562, 0xf678, 0xf67e, 0x0000, 0x0000, 0xf679, 0xc55b, 0xf6a1, + 0xc55a, 0xf67d, 0xf67c, 0xc559, 0xf67b, 0xc558, 0xf67a, 0x0000, + 0xf77d, 0xf7a1, 0xf77e, 0x0000, 0xf77b, 0xc5bb, 0xf778, 0xf77c, + 0xf7a3, 0x0000, 0xf7a2, 0xf779, 0xf77a, 0xc5ba, 0xf852, 0xc5e7, + 0x0000, 0xf853, 0xc5e5, 0xc5e6, 0x0000, 0x0000, 0xf8d3, 0xc64a, + 0xf976, 0x0000, 0xc66a, 0x0000, 0xf9b3, 0xc66b, 0xf9b4, 0xf9b5, + 0xf9c3, 0xf9c2, 0xc67a, 0xf9cd, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xb0a9, 0x0000, 0x0000, 0xe0e9, 0x0000, 0xe0e8, 0x0000, 0xbbea, + 0xbbeb, 0xe4da, 0x0000, 0xe8d2, 0xec6c, 0x0000, 0x0000, 0xbe75, + 0xc065, 0xec6a, 0x0000, 0xec6d, 0xc066, 0x0000, 0xef64, 0xec6b, + 0xf1b9, 0xc34e, 0xf3c1, 0x0000, 0x0000, 0x0000, 0xf566, 0xf564, + 0x0000, 0x0000, 0xf565, 0x0000, 0x0000, 0xf6a2, 0x0000, 0xc55c, + 0xf7a4, 0xc5ea, 0xc5bc, 0xc5e8, 0xc5e9, 0xf8d4, 0xc662, 0x0000, + 0xb0aa, 0x0000, 0x0000, 0x0000, 0xf1ba, 0x0000, 0x0000, 0xd449, + 0x0000, 0xb9a6, 0x0000, 0xe4db, 0x0000, 0x0000, 0xbbec, 0xe4dc, + 0x0000, 0x0000, 0x0000, 0xe8d4, 0xe8d3, 0xc068, 0xbe76, 0xbe77, + 0x0000, 0xe8d7, 0xe8d6, 0xe8d5, 0x0000, 0x0000, 0xec6e, 0xec71, + 0x0000, 0xec70, 0xec6f, 0xc067, 0xef68, 0xef66, 0xef65, 0x0000 +}; + +static const unsigned short big5_from_unicode_9b[] = { + 0x0000, 0xef67, 0x0000, 0xc34f, 0xf1bc, 0xf1bd, 0xc350, 0x0000, + 0xf1bb, 0x0000, 0xf3c3, 0xf3c2, 0xf3c5, 0xc447, 0xf3c4, 0x0000, + 0xf567, 0xf569, 0xf568, 0x0000, 0x0000, 0xf6a3, 0xf6a6, 0xf6a4, + 0xf6a5, 0xf7a5, 0xc5bd, 0x0000, 0x0000, 0x0000, 0xf854, 0xf855, + 0xf856, 0x0000, 0xc64b, 0xc663, 0xf9b6, 0xb0ab, 0x0000, 0xbe78, + 0xc069, 0xf1be, 0x0000, 0xf7a6, 0x0000, 0x0000, 0xf9c4, 0xd44a, + 0x0000, 0xc67b, 0xb0ac, 0xec72, 0x0000, 0xf1bf, 0x0000, 0xf3c6, + 0x0000, 0x0000, 0xf6a7, 0xf7a7, 0xb0ad, 0x0000, 0xe4dd, 0xe4de, + 0x0000, 0xbbed, 0xbbee, 0xe8d9, 0xbe7a, 0xbe79, 0xe8d8, 0x0000, + 0xef69, 0x0000, 0xf1c0, 0xf1c2, 0xf1c1, 0xc353, 0xc352, 0xc351, + 0x0000, 0xc55e, 0xf6a8, 0x0000, 0xc55d, 0xf7a9, 0xf7a8, 0x0000, + 0xc64c, 0xf8d5, 0xb3bd, 0xe0ea, 0x0000, 0x0000, 0x0000, 0xe4e1, + 0xe4df, 0xe4e0, 0x0000, 0x0000, 0xe8e2, 0x0000, 0xe8dd, 0xe8da, + 0xe8e1, 0x0000, 0x0000, 0x0000, 0xe8e3, 0x0000, 0x0000, 0xbe7c, + 0xe8e0, 0xe8dc, 0x0000, 0x0000, 0xe8db, 0xe8df, 0xe8de, 0xbe7b, + 0x0000, 0x0000, 0xec7d, 0xec78, 0xec76, 0xeca1, 0xec77, 0x0000, + 0xec73, 0x0000, 0xec79, 0x0000, 0x0000, 0xec74, 0xef72, 0xec75, + 0xeca2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xec7c, 0xc06a, 0xec7b, 0xec7a, 0x0000, 0xec7e, 0x0000, 0x0000, + 0x0000, 0x0000, 0xef6a, 0xef6d, 0x0000, 0x0000, 0xef6c, 0x0000, + 0xef74, 0xef6f, 0xef73, 0x0000, 0xef71, 0xef70, 0xef6e, 0x0000, + 0xef6b, 0x0000, 0xc243, 0xc242, 0x0000, 0xc244, 0xc241, 0xef75, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf1c8, 0xf1cb, 0x0000, + 0xf1c9, 0xf1cd, 0x0000, 0x0000, 0x0000, 0xf1ce, 0x0000, 0xf1c6, + 0xc358, 0xf1c7, 0x0000, 0xf1c5, 0xf1cc, 0x0000, 0xf1c4, 0xf1c3, + 0xc357, 0xc355, 0xc354, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf1ca, 0xf3cf, 0xf3d5, 0xc44a, 0xf3d0, + 0x0000, 0xf3d3, 0xf3d7, 0xc44b, 0xf3d2, 0x0000, 0xf3ca, 0x0000, + 0xf3c9, 0xf3d6, 0xf3cd, 0x0000, 0xf3cb, 0xf3d4, 0xf3cc, 0xc449, + 0xc448, 0x0000, 0xf3c7, 0xf3c8, 0xf3d1, 0x0000, 0x0000, 0x0000, + 0xf3ce, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf56c, + 0xf56f, 0x0000, 0x0000, 0x0000, 0x0000, 0xc356, 0x0000, 0x0000 +}; + +static const unsigned short big5_from_unicode_9c[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf56d, 0xf573, 0xf571, + 0xf56b, 0xf576, 0x0000, 0xf56a, 0x0000, 0xc4cf, 0xf572, 0x0000, + 0x0000, 0x0000, 0xf56e, 0xc4ce, 0xf575, 0x0000, 0x0000, 0xf574, + 0x0000, 0x0000, 0x0000, 0x0000, 0xf6ab, 0xf6aa, 0x0000, 0x0000, + 0x0000, 0xf6b1, 0x0000, 0xf6ad, 0xf6b0, 0xc560, 0x0000, 0x0000, + 0xf6ae, 0xf6af, 0x0000, 0xf6a9, 0xf6ac, 0xc55f, 0x0000, 0x0000, + 0x0000, 0xc5bf, 0xf7b4, 0xf7af, 0xf7b3, 0x0000, 0xf7b6, 0xf7b2, + 0x0000, 0xf7ae, 0x0000, 0xc5c1, 0xf7b1, 0xf7b5, 0xc5c0, 0xf7ac, + 0xf570, 0xf7b0, 0x0000, 0x0000, 0xf7ad, 0x0000, 0xf7aa, 0x0000, + 0xf7ab, 0xc5be, 0xf85a, 0xf85c, 0xf85f, 0xf85b, 0xf860, 0x0000, + 0xf859, 0x0000, 0xf857, 0x0000, 0xc5eb, 0xf85d, 0xc5ed, 0xc5ec, + 0xf858, 0xf85e, 0x0000, 0x0000, 0x0000, 0x0000, 0xf8da, 0xc64d, + 0xf8db, 0x0000, 0xf8d9, 0xf8d6, 0x0000, 0x0000, 0xf8d8, 0xf8d7, + 0xf95a, 0x0000, 0x0000, 0x0000, 0x0000, 0xf95c, 0xf95b, 0x0000, + 0x0000, 0xf979, 0x0000, 0xf978, 0xf977, 0xf97a, 0x0000, 0xc673, + 0xc674, 0xf9ca, 0xf9ce, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xb3be, 0xdcaf, 0xe0ed, + 0x0000, 0xb9a7, 0xe0eb, 0x0000, 0x0000, 0xe0ec, 0x0000, 0x0000, + 0x0000, 0xe4e2, 0xe4e3, 0xbbf1, 0xbbef, 0xe4e4, 0xbbf0, 0xe8e8, + 0x0000, 0xe8eb, 0xe8e5, 0xe8ec, 0xe8e4, 0xe8e6, 0x0000, 0xe8e7 +}; + +static const unsigned short big5_from_unicode_9d[] = { + 0xe8ea, 0x0000, 0x0000, 0xbea1, 0xe8ef, 0xe8ee, 0xbe7d, 0xe8e9, + 0xe8ed, 0xbe7e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xecac, 0x0000, 0xc06f, 0x0000, 0xeca7, 0xc06b, 0x0000, 0xeca4, + 0xecaa, 0xecad, 0x0000, 0xc070, 0x0000, 0xeca9, 0xeca6, 0xecae, + 0xeca5, 0x0000, 0xecab, 0xc06c, 0x0000, 0xeca3, 0xc06d, 0x0000, + 0xc06e, 0xeca8, 0x0000, 0x0000, 0x0000, 0xefa9, 0xef7a, 0xef7b, + 0xef7e, 0xef7c, 0x0000, 0xef76, 0x0000, 0x0000, 0xef79, 0xefa5, + 0xef7d, 0x0000, 0x0000, 0xc245, 0x0000, 0xefa7, 0xefa4, 0xc246, + 0xefa6, 0xef77, 0xefa2, 0xefa3, 0x0000, 0xefa1, 0x0000, 0x0000, + 0x0000, 0x0000, 0xf1d2, 0xf1d4, 0xf1d7, 0x0000, 0x0000, 0xf1d1, + 0x0000, 0xc359, 0xf1d9, 0xf1d0, 0xf1da, 0x0000, 0xf1d6, 0xf1d8, + 0xf1dc, 0xf1d5, 0xf1dd, 0xf1d3, 0xf1cf, 0xc35a, 0x0000, 0xf1db, + 0xc35b, 0xc44d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xef78, + 0xf3f1, 0xf3e8, 0xc44f, 0xf3e4, 0xc450, 0x0000, 0x0000, 0xf3ed, + 0xf3e7, 0xf3dd, 0xc44e, 0xf3ea, 0xf3e5, 0xf3e6, 0x0000, 0xf3d8, + 0xf3df, 0xf3ee, 0x0000, 0xf3eb, 0x0000, 0xf3e3, 0x0000, 0xf3ef, + 0xf3de, 0xf3d9, 0xf3ec, 0x0000, 0xf3db, 0xf3e9, 0xf3e0, 0xf3f0, + 0xf3dc, 0xc44c, 0xf3da, 0xf3e1, 0xf3e2, 0x0000, 0x0000, 0x0000, + 0xf57d, 0x0000, 0xf57b, 0x0000, 0xf5a2, 0x0000, 0xf5ae, 0xf5a5, + 0xf57c, 0xf578, 0xf5a7, 0xf57e, 0xf5a3, 0xf57a, 0xf5aa, 0xf577, + 0xf5a1, 0xf5a6, 0xf5a8, 0xf5ab, 0xf579, 0x0000, 0xf5af, 0xf5b0, + 0xf5a9, 0xf5ad, 0xf5a4, 0x0000, 0xf6c1, 0xf6c4, 0x0000, 0xc561, + 0x0000, 0xf6c3, 0xf6c8, 0xf6c6, 0xc562, 0xf6bd, 0xf6b3, 0xf6b2, + 0xc564, 0xf6bf, 0xf6c0, 0xf6bc, 0xf6b4, 0x0000, 0xf6b9, 0xf5ac, + 0x0000, 0xf6b5, 0xc563, 0xf6bb, 0x0000, 0xf6ba, 0x0000, 0xf6b6, + 0xf6c2, 0x0000, 0xf6b7, 0xf7bb, 0xf6c5, 0xf6c7, 0xf6be, 0xf6b8, + 0xf7bc, 0xf7be, 0xf7b8, 0xc5c2, 0x0000, 0xf7c5, 0xf7c3, 0xc5c3, + 0xf7c2, 0xf7c1, 0xf7ba, 0xf7b7, 0xf7bd, 0xf7c6, 0xf7b9, 0xf7bf, + 0x0000, 0xf869, 0xf86e, 0xf864, 0xf867, 0xc5ee, 0xf86b, 0x0000, + 0xf872, 0xf7c0, 0x0000, 0xf865, 0xf86f, 0xf873, 0xf86a, 0xf863, + 0xf86d, 0x0000, 0xf86c, 0xf871, 0xf870, 0xf7c4, 0xf868, 0xf862, + 0xf866, 0xc64e, 0xc64f, 0xf861, 0x0000, 0xf8e6, 0xf8dd, 0xf8e5 +}; + +static const unsigned short big5_from_unicode_9e[] = { + 0xf8e2, 0xf8e3, 0xf8dc, 0xf8df, 0xf8e7, 0xf8e1, 0xf8e0, 0xf8de, + 0x0000, 0xf8e4, 0x0000, 0xf95d, 0x0000, 0xf95e, 0x0000, 0xf960, + 0xf95f, 0xf962, 0xf961, 0xf97c, 0xf97b, 0xf9b7, 0x0000, 0xf9b8, + 0x0000, 0xf9c5, 0xc678, 0xc67c, 0x0000, 0xf9cf, 0xc67d, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xb3bf, 0x0000, 0x0000, + 0x0000, 0xc4d0, 0xf6c9, 0x0000, 0xc650, 0xc651, 0x0000, 0xb3c0, + 0xe0ee, 0x0000, 0xb9a8, 0xe8f0, 0x0000, 0x0000, 0xecb0, 0xecb1, + 0xecaf, 0xefab, 0xefaa, 0xc247, 0xf1df, 0xefac, 0xf1de, 0x0000, + 0x0000, 0xf3f3, 0xc451, 0xc453, 0xf3f2, 0x0000, 0x0000, 0xc452, + 0x0000, 0xf5b1, 0xf5b3, 0xf5b2, 0xf6ca, 0xc565, 0x0000, 0xc5ef, + 0xf8e8, 0xf963, 0x0000, 0x0000, 0xf9d2, 0xb3c1, 0x0000, 0xe4e5, + 0x0000, 0xbea2, 0x0000, 0x0000, 0x0000, 0xecb3, 0xecb2, 0x0000, + 0xefad, 0x0000, 0x0000, 0x0000, 0xc454, 0xc4d1, 0xf7c7, 0xf9cb, + 0x0000, 0x0000, 0x0000, 0xb3c2, 0xbbf2, 0x0000, 0xbea3, 0x0000, + 0xf3f4, 0x0000, 0xf874, 0xb6c0, 0x0000, 0x0000, 0x0000, 0x0000, + 0xefae, 0x0000, 0x0000, 0x0000, 0xc664, 0xb6c1, 0xbea4, 0xc248, + 0xf875, 0xb6c2, 0x0000, 0xe8f1, 0xc072, 0xecb4, 0xecb5, 0x0000, + 0xc071, 0x0000, 0xefaf, 0xc24c, 0xc24a, 0xc24b, 0xc249, 0xf1e0, + 0xc35c, 0x0000, 0x0000, 0x0000, 0xf5b5, 0xf5b4, 0xf5b7, 0xf5b6, + 0xc4d2, 0x0000, 0x0000, 0xf6cb, 0x0000, 0xf6cd, 0xf6cc, 0xc566, + 0xf7c8, 0x0000, 0xf876, 0xf877, 0xc5f0, 0xf964, 0xf97d, 0xc675, + 0x0000, 0xdcb0, 0xecb6, 0xefb0, 0xf3f5, 0xe0ef, 0x0000, 0xefb1 +}; + +static const unsigned short big5_from_unicode_9f[] = { + 0xf1e2, 0xf1e1, 0x0000, 0x0000, 0x0000, 0x0000, 0xf878, 0xc652, + 0x0000, 0xf965, 0xf97e, 0x0000, 0x0000, 0x0000, 0xb9a9, 0xe8f2, + 0xe8f3, 0x0000, 0xecb7, 0xb9aa, 0x0000, 0xc35d, 0xf1e3, 0x0000, + 0xf6cf, 0xc567, 0xf6d0, 0xf6ce, 0xf879, 0x0000, 0xf8e9, 0x0000, + 0xb9ab, 0x0000, 0xefb4, 0xefb3, 0xefb2, 0xf1e4, 0x0000, 0x0000, + 0xf1e8, 0xf1e7, 0xf1e6, 0xf1e5, 0xc35e, 0xf3f6, 0xf5b9, 0xc4d3, + 0xf5b8, 0xf6d1, 0xf7cb, 0xf7ca, 0xc5c4, 0xf7c9, 0xf87c, 0xf87b, + 0xf87a, 0x0000, 0x0000, 0xbbf3, 0x0000, 0xecb8, 0xc24d, 0x0000, + 0xf3f7, 0xf3f8, 0xf7cc, 0xf87d, 0x0000, 0x0000, 0xf8ea, 0xf966, + 0xf9b9, 0xf9d4, 0xbbf4, 0xc24e, 0xf1e9, 0xf3f9, 0xf6d2, 0xf87e, + 0x0000, 0x0000, 0xbea6, 0x0000, 0xefb5, 0xf1ea, 0xf3fa, 0xf3fb, + 0xf3fc, 0xf5be, 0x0000, 0xf5ba, 0xc568, 0xf5bd, 0xf5bc, 0xc4d4, + 0xf5bb, 0xc4d6, 0x0000, 0xc4d5, 0xf6d4, 0xf6d3, 0xc569, 0xc56a, + 0x0000, 0x0000, 0xc5c6, 0xf7cd, 0xc5c5, 0x0000, 0xf8a3, 0xf8a4, + 0xf8a2, 0xf8a1, 0xc654, 0x0000, 0xf8eb, 0xf8ec, 0xf8ed, 0xc653, + 0xf967, 0xf96a, 0xf969, 0xf968, 0x0000, 0x0000, 0xf9d3, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xc073, 0x0000, 0x0000, + 0xc365, 0xf5bf, 0xf6d5, 0x0000, 0xc5c7, 0xf7ce, 0x0000, 0x0000, + 0xf9d5, 0x0000, 0x0000, 0x0000, 0xc074, 0x0000, 0x0000, 0x0000, + 0xefb6, 0x0000, 0xf7cf, 0x0000, 0xf9a1, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5_from_unicode_e0[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xa55d, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5_from_unicode_e2[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xb7ec, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5_from_unicode_e4[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xc052, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5_from_unicode_e7[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xca52, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5_from_unicode_eb[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf5e8, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5_from_unicode_fe[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xa14a, 0xa157, 0x0000, 0xa159, 0xa15b, 0xa15f, 0xa160, 0xa163, + 0xa164, 0xa167, 0xa168, 0xa16b, 0xa16c, 0xa16f, 0xa170, 0xa173, + 0xa174, 0xa177, 0xa178, 0xa17b, 0xa17c, 0x0000, 0x0000, 0x0000, + 0x0000, 0xa1c6, 0xa1c7, 0xa1ca, 0xa1cb, 0xa1c8, 0xa1c9, 0xa15c, + 0xa14d, 0x0000, 0xa14f, 0x0000, 0xa151, 0xa152, 0xa153, 0xa154, + 0x0000, 0xa17d, 0xa17e, 0xa1a1, 0xa1a2, 0xa1a3, 0xa1a4, 0xa1cc, + 0xa1cd, 0xa1ce, 0xa1de, 0xa1df, 0xa1e0, 0xa1e1, 0xa1e2, 0x0000, + 0xa242, 0xa24c, 0xa24d, 0xa24e, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5_from_unicode_ff[] = { + 0x0000, 0xa149, 0x0000, 0xa1ad, 0xa243, 0xa248, 0xa1ae, 0x0000, + 0xa15d, 0xa15e, 0xa1af, 0xa1cf, 0xa141, 0xa1d0, 0xa144, 0xa1fe, + 0xa2af, 0xa2b0, 0xa2b1, 0xa2b2, 0xa2b3, 0xa2b4, 0xa2b5, 0xa2b6, + 0xa2b7, 0xa2b8, 0xa147, 0xa146, 0xa1d5, 0xa1d7, 0xa1d6, 0xa148, + 0xa249, 0xa2cf, 0xa2d0, 0xa2d1, 0xa2d2, 0xa2d3, 0xa2d4, 0xa2d5, + 0xa2d6, 0xa2d7, 0xa2d8, 0xa2d9, 0xa2da, 0xa2db, 0xa2dc, 0xa2dd, + 0xa2de, 0xa2df, 0xa2e0, 0xa2e1, 0xa2e2, 0xa2e3, 0xa2e4, 0xa2e5, + 0xa2e6, 0xa2e7, 0xa2e8, 0x0000, 0xa240, 0x0000, 0x0000, 0xa1c4, + 0x0000, 0xa2e9, 0xa2ea, 0xa2eb, 0xa2ec, 0xa2ed, 0xa2ee, 0xa2ef, + 0xa2f0, 0xa2f1, 0xa2f2, 0xa2f3, 0xa2f4, 0xa2f5, 0xa2f6, 0xa2f7, + 0xa2f8, 0xa2f9, 0xa2fa, 0xa2fb, 0xa2fc, 0xa2fd, 0xa2fe, 0xa340, + 0xa341, 0xa342, 0xa343, 0xa161, 0xa155, 0xa162, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xa14e, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xa1c3, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short * const big5_from_unicode_[] = { + big5_from_unicode_0, + u_allzeros, + big5_from_unicode_2, + big5_from_unicode_3, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + big5_from_unicode_20, + big5_from_unicode_21, + big5_from_unicode_22, + u_allzeros, + big5_from_unicode_24, + big5_from_unicode_25, + big5_from_unicode_26, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + big5_from_unicode_30, + big5_from_unicode_31, + big5_from_unicode_32, + big5_from_unicode_33, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + big5_from_unicode_4e, + big5_from_unicode_4f, + big5_from_unicode_50, + big5_from_unicode_51, + big5_from_unicode_52, + big5_from_unicode_53, + big5_from_unicode_54, + big5_from_unicode_55, + big5_from_unicode_56, + big5_from_unicode_57, + big5_from_unicode_58, + big5_from_unicode_59, + big5_from_unicode_5a, + big5_from_unicode_5b, + big5_from_unicode_5c, + big5_from_unicode_5d, + big5_from_unicode_5e, + big5_from_unicode_5f, + big5_from_unicode_60, + big5_from_unicode_61, + big5_from_unicode_62, + big5_from_unicode_63, + big5_from_unicode_64, + big5_from_unicode_65, + big5_from_unicode_66, + big5_from_unicode_67, + big5_from_unicode_68, + big5_from_unicode_69, + big5_from_unicode_6a, + big5_from_unicode_6b, + big5_from_unicode_6c, + big5_from_unicode_6d, + big5_from_unicode_6e, + big5_from_unicode_6f, + big5_from_unicode_70, + big5_from_unicode_71, + big5_from_unicode_72, + big5_from_unicode_73, + big5_from_unicode_74, + big5_from_unicode_75, + big5_from_unicode_76, + big5_from_unicode_77, + big5_from_unicode_78, + big5_from_unicode_79, + big5_from_unicode_7a, + big5_from_unicode_7b, + big5_from_unicode_7c, + big5_from_unicode_7d, + big5_from_unicode_7e, + big5_from_unicode_7f, + big5_from_unicode_80, + big5_from_unicode_81, + big5_from_unicode_82, + big5_from_unicode_83, + big5_from_unicode_84, + big5_from_unicode_85, + big5_from_unicode_86, + big5_from_unicode_87, + big5_from_unicode_88, + big5_from_unicode_89, + big5_from_unicode_8a, + big5_from_unicode_8b, + big5_from_unicode_8c, + big5_from_unicode_8d, + big5_from_unicode_8e, + big5_from_unicode_8f, + big5_from_unicode_90, + big5_from_unicode_91, + big5_from_unicode_92, + big5_from_unicode_93, + big5_from_unicode_94, + big5_from_unicode_95, + big5_from_unicode_96, + big5_from_unicode_97, + big5_from_unicode_98, + big5_from_unicode_99, + big5_from_unicode_9a, + big5_from_unicode_9b, + big5_from_unicode_9c, + big5_from_unicode_9d, + big5_from_unicode_9e, + big5_from_unicode_9f, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + big5_from_unicode_e0, + u_allzeros, + big5_from_unicode_e2, + u_allzeros, + big5_from_unicode_e4, + u_allzeros, + u_allzeros, + big5_from_unicode_e7, + u_allzeros, + u_allzeros, + u_allzeros, + big5_from_unicode_eb, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + big5_from_unicode_fe, + big5_from_unicode_ff +}; + +struct charmap2 big5_from_unicode = { 0, 255, (unsigned short **) big5_from_unicode_, (unichar_t *) unicode_from_big5 }; + +const unichar_t unicode_from_big5hkscs[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xeeb8, 0xeeb9, 0xeeba, 0xeebb, 0xeebc, 0xeebd, 0xeebe, 0xeebf, + 0xeec0, 0xeec1, 0xeec2, 0xeec3, 0xeec4, 0xeec5, 0xeec6, 0xeec7, + 0xeec8, 0xeec9, 0xeeca, 0xeecb, 0xeecc, 0xeecd, 0xeece, 0xeecf, + 0xeed0, 0xeed1, 0xeed2, 0xeed3, 0xeed4, 0xeed5, 0xeed6, 0xeed7, + 0xeed8, 0xeed9, 0xeeda, 0xeedb, 0xeedc, 0xeedd, 0xeede, 0xeedf, + 0xeee0, 0xeee1, 0xeee2, 0xeee3, 0xeee4, 0xeee5, 0xeee6, 0xeee7, + 0xeee8, 0xeee9, 0xeeea, 0xeeeb, 0xeeec, 0xeeed, 0xeeee, 0xeeef, + 0xeef0, 0xeef1, 0xeef2, 0xeef3, 0xeef4, 0xeef5, 0xeef6, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xeef7, 0xeef8, 0xeef9, 0xeefa, 0xeefb, 0xeefc, 0xeefd, + 0xeefe, 0xeeff, 0xef00, 0xef01, 0xef02, 0xef03, 0xef04, 0xef05, + 0xef06, 0xef07, 0xef08, 0xef09, 0xef0a, 0xef0b, 0xef0c, 0xef0d, + 0xef0e, 0xef0f, 0xef10, 0xef11, 0xef12, 0xef13, 0xef14, 0xef15, + 0xef16, 0xef17, 0xef18, 0xef19, 0xef1a, 0xef1b, 0xef1c, 0xef1d, + 0xef1e, 0xef1f, 0xef20, 0xef21, 0xef22, 0xef23, 0xef24, 0xef25, + 0xef26, 0xef27, 0xef28, 0xef29, 0xef2a, 0xef2b, 0xef2c, 0xef2d, + 0xef2e, 0xef2f, 0xef30, 0xef31, 0xef32, 0xef33, 0xef34, 0xef35, + 0xef36, 0xef37, 0xef38, 0xef39, 0xef3a, 0xef3b, 0xef3c, 0xef3d, + 0xef3e, 0xef3f, 0xef40, 0xef41, 0xef42, 0xef43, 0xef44, 0xef45, + 0xef46, 0xef47, 0xef48, 0xef49, 0xef4a, 0xef4b, 0xef4c, 0xef4d, + 0xef4e, 0xef4f, 0xef50, 0xef51, 0xef52, 0xef53, 0xef54, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xef55, 0xef56, 0xef57, 0xef58, 0xef59, 0xef5a, 0xef5b, 0xef5c, + 0xef5d, 0xef5e, 0xef5f, 0xef60, 0xef61, 0xef62, 0xef63, 0xef64, + 0xef65, 0xef66, 0xef67, 0xef68, 0xef69, 0xef6a, 0xef6b, 0xef6c, + 0xef6d, 0xef6e, 0xef6f, 0xef70, 0xef71, 0xef72, 0xef73, 0xef74, + 0xef75, 0xef76, 0xef77, 0xef78, 0xef79, 0xef7a, 0xef7b, 0xef7c, + 0xef7d, 0xef7e, 0xef7f, 0xef80, 0xef81, 0xef82, 0xef83, 0xef84, + 0xef85, 0xef86, 0xef87, 0xef88, 0xef89, 0xef8a, 0xef8b, 0xef8c, + 0xef8d, 0xef8e, 0xef8f, 0xef90, 0xef91, 0xef92, 0xef93, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xef94, 0xef95, 0xef96, 0xef97, 0xef98, 0xef99, 0xef9a, + 0xef9b, 0xef9c, 0xef9d, 0xef9e, 0xef9f, 0xefa0, 0xefa1, 0xefa2, + 0xefa3, 0xefa4, 0xefa5, 0xefa6, 0xefa7, 0xefa8, 0xefa9, 0xefaa, + 0xefab, 0xefac, 0xefad, 0xefae, 0xefaf, 0xefb0, 0xefb1, 0xefb2, + 0xefb3, 0xefb4, 0xefb5, 0xefb6, 0xefb7, 0xefb8, 0xefb9, 0xefba, + 0xefbb, 0xefbc, 0xefbd, 0xefbe, 0xefbf, 0xefc0, 0xefc1, 0xefc2, + 0xefc3, 0xefc4, 0xefc5, 0xefc6, 0xefc7, 0xefc8, 0xefc9, 0xefca, + 0xefcb, 0xefcc, 0xefcd, 0xefce, 0xefcf, 0xefd0, 0xefd1, 0xefd2, + 0xefd3, 0xefd4, 0xefd5, 0xefd6, 0xefd7, 0xefd8, 0xefd9, 0xefda, + 0xefdb, 0xefdc, 0xefdd, 0xefde, 0xefdf, 0xefe0, 0xefe1, 0xefe2, + 0xefe3, 0xefe4, 0xefe5, 0xefe6, 0xefe7, 0xefe8, 0xefe9, 0xefea, + 0xefeb, 0xefec, 0xefed, 0xefee, 0xefef, 0xeff0, 0xeff1, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xeff2, 0xeff3, 0xeff4, 0xeff5, 0xeff6, 0xeff7, 0xeff8, 0xeff9, + 0xeffa, 0xeffb, 0xeffc, 0xeffd, 0xeffe, 0xefff, 0xf000, 0xf001, + 0xf002, 0xf003, 0xf004, 0xf005, 0xf006, 0xf007, 0xf008, 0xf009, + 0xf00a, 0xf00b, 0xf00c, 0xf00d, 0xf00e, 0xf00f, 0xf010, 0xf011, + 0xf012, 0xf013, 0xf014, 0xf015, 0xf016, 0xf017, 0xf018, 0xf019, + 0xf01a, 0xf01b, 0xf01c, 0xf01d, 0xf01e, 0xf01f, 0xf020, 0xf021, + 0xf022, 0xf023, 0xf024, 0xf025, 0xf026, 0xf027, 0xf028, 0xf029, + 0xf02a, 0xf02b, 0xf02c, 0xf02d, 0xf02e, 0xf02f, 0xf030, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf031, 0xf032, 0xf033, 0xf034, 0xf035, 0xf036, 0xf037, + 0xf038, 0xf039, 0xf03a, 0xf03b, 0xf03c, 0xf03d, 0xf03e, 0xf03f, + 0xf040, 0xf041, 0xf042, 0xf043, 0xf044, 0xf045, 0xf046, 0xf047, + 0xf048, 0xf049, 0xf04a, 0xf04b, 0xf04c, 0xf04d, 0xf04e, 0xf04f, + 0xf050, 0xf051, 0xf052, 0xf053, 0xf054, 0xf055, 0xf056, 0xf057, + 0xf058, 0xf059, 0xf05a, 0xf05b, 0xf05c, 0xf05d, 0xf05e, 0xf05f, + 0xf060, 0xf061, 0xf062, 0xf063, 0xf064, 0xf065, 0xf066, 0xf067, + 0xf068, 0xf069, 0xf06a, 0xf06b, 0xf06c, 0xf06d, 0xf06e, 0xf06f, + 0xf070, 0xf071, 0xf072, 0xf073, 0xf074, 0xf075, 0xf076, 0xf077, + 0xf078, 0xf079, 0xf07a, 0xf07b, 0xf07c, 0xf07d, 0xf07e, 0xf07f, + 0xf080, 0xf081, 0xf082, 0xf083, 0xf084, 0xf085, 0xf086, 0xf087, + 0xf088, 0xf089, 0xf08a, 0xf08b, 0xf08c, 0xf08d, 0xf08e, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf08f, 0xf090, 0xf091, 0xf092, 0xf093, 0xf094, 0xf095, 0xf096, + 0xf097, 0xf098, 0xf099, 0xf09a, 0xf09b, 0xf09c, 0xf09d, 0xf09e, + 0xf09f, 0xf0a0, 0xf0a1, 0xf0a2, 0xf0a3, 0xf0a4, 0xf0a5, 0xf0a6, + 0xf0a7, 0xf0a8, 0xf0a9, 0xf0aa, 0xf0ab, 0xf0ac, 0xf0ad, 0xf0ae, + 0xf0af, 0xf0b0, 0xf0b1, 0xf0b2, 0xf0b3, 0xf0b4, 0xf0b5, 0xf0b6, + 0xf0b7, 0xf0b8, 0xf0b9, 0xf0ba, 0xf0bb, 0xf0bc, 0xf0bd, 0xf0be, + 0xf0bf, 0xf0c0, 0xf0c1, 0xf0c2, 0xf0c3, 0xf0c4, 0xf0c5, 0xf0c6, + 0xf0c7, 0xf0c8, 0xf0c9, 0xf0ca, 0xf0cb, 0xf0cc, 0xf0cd, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf0ce, 0xf0cf, 0xf0d0, 0xf0d1, 0xf0d2, 0xf0d3, 0xf0d4, + 0xf0d5, 0xf0d6, 0xf0d7, 0xf0d8, 0xf0d9, 0xf0da, 0xf0db, 0xf0dc, + 0xf0dd, 0xf0de, 0xf0df, 0xf0e0, 0xf0e1, 0xf0e2, 0xf0e3, 0xf0e4, + 0xf0e5, 0xf0e6, 0xf0e7, 0xf0e8, 0xf0e9, 0xf0ea, 0xf0eb, 0xf0ec, + 0xf0ed, 0xf0ee, 0xf0ef, 0xf0f0, 0xf0f1, 0xf0f2, 0xf0f3, 0xf0f4, + 0xf0f5, 0xf0f6, 0xf0f7, 0xf0f8, 0xf0f9, 0xf0fa, 0xf0fb, 0xf0fc, + 0xf0fd, 0xf0fe, 0xf0ff, 0xf100, 0xf101, 0xf102, 0xf103, 0xf104, + 0xf105, 0xf106, 0xf107, 0xf108, 0xf109, 0xf10a, 0xf10b, 0xf10c, + 0xf10d, 0xf10e, 0xf10f, 0xf110, 0xf111, 0xf112, 0xf113, 0xf114, + 0xf115, 0xf116, 0xf117, 0xf118, 0xf119, 0xf11a, 0xf11b, 0xf11c, + 0xf11d, 0xf11e, 0xf11f, 0xf120, 0xf121, 0xf122, 0xf123, 0xf124, + 0xf125, 0xf126, 0xf127, 0xf128, 0xf129, 0xf12a, 0xf12b, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf12c, 0xf12d, 0xf12e, 0xf12f, 0xf130, 0xf131, 0xf132, 0xf133, + 0xf134, 0xf135, 0xf136, 0xf137, 0xf138, 0xf139, 0xf13a, 0xf13b, + 0xf13c, 0xf13d, 0xf13e, 0xf13f, 0xf140, 0xf141, 0xf142, 0xf143, + 0xf144, 0xf145, 0xf146, 0xf147, 0xf148, 0xf149, 0xf14a, 0xf14b, + 0xf14c, 0xf14d, 0xf14e, 0xf14f, 0xf150, 0xf151, 0xf152, 0xf153, + 0xf154, 0xf155, 0xf156, 0xf157, 0xf158, 0xf159, 0xf15a, 0xf15b, + 0xf15c, 0xf15d, 0xf15e, 0xf15f, 0xf160, 0xf161, 0xf162, 0xf163, + 0xf164, 0xf165, 0xf166, 0xf167, 0xf168, 0xf169, 0xf16a, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf16b, 0xf16c, 0xf16d, 0xf16e, 0xf16f, 0xf170, 0xf171, + 0xf172, 0xf173, 0xf174, 0xf175, 0xf176, 0xf177, 0xf178, 0xf179, + 0xf17a, 0xf17b, 0xf17c, 0xf17d, 0xf17e, 0xf17f, 0xf180, 0xf181, + 0xf182, 0xf183, 0xf184, 0xf185, 0xf186, 0xf187, 0xf188, 0xf189, + 0xf18a, 0xf18b, 0xf18c, 0xf18d, 0xf18e, 0xf18f, 0xf190, 0xf191, + 0xf192, 0xf193, 0xf194, 0xf195, 0xf196, 0xf197, 0xf198, 0xf199, + 0xf19a, 0xf19b, 0xf19c, 0xf19d, 0xf19e, 0xf19f, 0xf1a0, 0xf1a1, + 0xf1a2, 0xf1a3, 0xf1a4, 0xf1a5, 0xf1a6, 0xf1a7, 0xf1a8, 0xf1a9, + 0xf1aa, 0xf1ab, 0xf1ac, 0xf1ad, 0xf1ae, 0xf1af, 0xf1b0, 0xf1b1, + 0xf1b2, 0xf1b3, 0xf1b4, 0xf1b5, 0xf1b6, 0xf1b7, 0xf1b8, 0xf1b9, + 0xf1ba, 0xf1bb, 0xf1bc, 0xf1bd, 0xf1be, 0xf1bf, 0xf1c0, 0xf1c1, + 0xf1c2, 0xf1c3, 0xf1c4, 0xf1c5, 0xf1c6, 0xf1c7, 0xf1c8, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf1c9, 0xf1ca, 0xf1cb, 0xf1cc, 0xf1cd, 0xf1ce, 0xf1cf, 0xf1d0, + 0xf1d1, 0xf1d2, 0xf1d3, 0xf1d4, 0xf1d5, 0xf1d6, 0xf1d7, 0xf1d8, + 0xf1d9, 0xf1da, 0xf1db, 0xf1dc, 0xf1dd, 0xf1de, 0xf1df, 0xf1e0, + 0xf1e1, 0xf1e2, 0xf1e3, 0xf1e4, 0xf1e5, 0xf1e6, 0xf1e7, 0xf1e8, + 0xf1e9, 0xf1ea, 0xf1eb, 0xf1ec, 0xf1ed, 0xf1ee, 0xf1ef, 0xf1f0, + 0xf1f1, 0xf1f2, 0xf1f3, 0xf1f4, 0xf1f5, 0xf1f6, 0xf1f7, 0xf1f8, + 0xf1f9, 0xf1fa, 0xf1fb, 0xf1fc, 0xf1fd, 0xf1fe, 0xf1ff, 0xf200, + 0xf201, 0xf202, 0xf203, 0xf204, 0xf205, 0xf206, 0xf207, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf208, 0xf209, 0xf20a, 0xf20b, 0xf20c, 0xf20d, 0xf20e, + 0xf20f, 0xf210, 0xf211, 0xf212, 0xf213, 0xf214, 0xf215, 0xf216, + 0xf217, 0xf218, 0xf219, 0xf21a, 0xf21b, 0xf21c, 0xf21d, 0xf21e, + 0xf21f, 0xf220, 0xf221, 0xf222, 0xf223, 0xf224, 0xf225, 0xf226, + 0xf227, 0xf228, 0xf229, 0xf22a, 0xf22b, 0xf22c, 0xf22d, 0xf22e, + 0xf22f, 0xf230, 0xf231, 0xf232, 0xf233, 0xf234, 0xf235, 0xf236, + 0xf237, 0xf238, 0xf239, 0xf23a, 0xf23b, 0xf23c, 0xf23d, 0xf23e, + 0xf23f, 0xf240, 0xf241, 0xf242, 0xf243, 0xf244, 0xf245, 0xf246, + 0xf247, 0xf248, 0xf249, 0xf24a, 0xf24b, 0xf24c, 0xf24d, 0xf24e, + 0xf24f, 0xf250, 0xf251, 0xf252, 0xf253, 0xf254, 0xf255, 0xf256, + 0xf257, 0xf258, 0xf259, 0xf25a, 0xf25b, 0xf25c, 0xf25d, 0xf25e, + 0xf25f, 0xf260, 0xf261, 0xf262, 0xf263, 0xf264, 0xf265, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf266, 0xf267, 0xf268, 0xf269, 0xf26a, 0xf26b, 0xf26c, 0xf26d, + 0xf26e, 0xf26f, 0xf270, 0xf271, 0xf272, 0xf273, 0xf274, 0xf275, + 0xf276, 0xf277, 0xf278, 0xf279, 0xf27a, 0xf27b, 0xf27c, 0xf27d, + 0xf27e, 0xf27f, 0xf280, 0xf281, 0xf282, 0xf283, 0xf284, 0xf285, + 0xf286, 0xf287, 0xf288, 0xf289, 0xf28a, 0xf28b, 0xf28c, 0xf28d, + 0xf28e, 0xf28f, 0xf290, 0xf291, 0xf292, 0xf293, 0xf294, 0xf295, + 0xf296, 0xf297, 0xf298, 0xf299, 0xf29a, 0xf29b, 0xf29c, 0xf29d, + 0xf29e, 0xf29f, 0xf2a0, 0xf2a1, 0xf2a2, 0xf2a3, 0xf2a4, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf2a5, 0xf2a6, 0xf2a7, 0xf2a8, 0xf2a9, 0xf2aa, 0xf2ab, + 0xf2ac, 0xf2ad, 0xf2ae, 0xf2af, 0xf2b0, 0xf2b1, 0xf2b2, 0xf2b3, + 0xf2b4, 0xf2b5, 0xf2b6, 0xf2b7, 0xf2b8, 0xf2b9, 0xf2ba, 0xf2bb, + 0xf2bc, 0xf2bd, 0xf2be, 0xf2bf, 0xf2c0, 0xf2c1, 0xf2c2, 0xf2c3, + 0xf2c4, 0xf2c5, 0xf2c6, 0xf2c7, 0xf2c8, 0xf2c9, 0xf2ca, 0xf2cb, + 0xf2cc, 0xf2cd, 0xf2ce, 0xf2cf, 0xf2d0, 0xf2d1, 0xf2d2, 0xf2d3, + 0xf2d4, 0xf2d5, 0xf2d6, 0xf2d7, 0xf2d8, 0xf2d9, 0xf2da, 0xf2db, + 0xf2dc, 0xf2dd, 0xf2de, 0xf2df, 0xf2e0, 0xf2e1, 0xf2e2, 0xf2e3, + 0xf2e4, 0xf2e5, 0xf2e6, 0xf2e7, 0xf2e8, 0xf2e9, 0xf2ea, 0xf2eb, + 0xf2ec, 0xf2ed, 0xf2ee, 0xf2ef, 0xf2f0, 0xf2f1, 0xf2f2, 0xf2f3, + 0xf2f4, 0xf2f5, 0xf2f6, 0xf2f7, 0xf2f8, 0xf2f9, 0xf2fa, 0xf2fb, + 0xf2fc, 0xf2fd, 0xf2fe, 0xf2ff, 0xf300, 0xf301, 0xf302, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf303, 0xf304, 0xf305, 0xf306, 0xf307, 0xf308, 0xf309, 0xf30a, + 0xf30b, 0xf30c, 0xf30d, 0xf30e, 0xf30f, 0xf310, 0xf311, 0xf312, + 0xf313, 0xf314, 0xf315, 0xf316, 0xf317, 0xf318, 0x0100, 0x00c1, + 0x01cd, 0x00c0, 0x0112, 0x00c9, 0x011a, 0x00c8, 0x014c, 0x00d3, + 0x01d1, 0x00d2, 0xf325, 0x1ebe, 0xf327, 0x1ec0, 0x00ca, 0x0101, + 0x00e1, 0x01ce, 0x00e0, 0x0251, 0x0113, 0x00e9, 0x011b, 0x00e8, + 0x012b, 0x00ed, 0x01d0, 0x00ec, 0x014d, 0x00f3, 0x01d2, 0x00f2, + 0x016b, 0x00fa, 0x01d4, 0x00f9, 0x01d6, 0x01d8, 0x01da, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x01dc, 0x00fc, 0xf344, 0x1ebf, 0xf346, 0x1ec1, 0x00ea, + 0x0261, 0xf34a, 0xf34b, 0xf34c, 0xf34d, 0xf34e, 0xf34f, 0xf350, + 0xf351, 0xf352, 0xf353, 0xf354, 0xf355, 0xf356, 0xf357, 0xf358, + 0xf359, 0xf35a, 0xf35b, 0xf35c, 0xf35d, 0xf35e, 0xf35f, 0xf360, + 0xf361, 0xf362, 0xf363, 0xf364, 0xf365, 0xf366, 0xf367, 0xf368, + 0xf369, 0xf36a, 0xf36b, 0xf36c, 0xf36d, 0xf36e, 0xf36f, 0xf370, + 0xf371, 0xf372, 0xf373, 0xf374, 0xf375, 0xf376, 0xf377, 0xf378, + 0xf379, 0xf37a, 0xf37b, 0xf37c, 0xf37d, 0xf37e, 0xf37f, 0xf380, + 0xf381, 0xf382, 0xf383, 0xf384, 0xf385, 0xf386, 0xf387, 0xf388, + 0xf389, 0xf38a, 0xf38b, 0xf38c, 0xf38d, 0xf38e, 0xf38f, 0xf390, + 0xf391, 0xf392, 0xf393, 0xf394, 0xf395, 0xf396, 0xf397, 0xf398, + 0xf399, 0xf39a, 0xf39b, 0xf39c, 0xf39d, 0xf39e, 0xf39f, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf3a0, 0xf3a1, 0xf3a2, 0x650a, 0xf3a4, 0xf3a5, 0x4e3d, 0x6edd, + 0x9d4e, 0x91df, 0xf3aa, 0xf3ab, 0xf3ac, 0x6491, 0x4f1a, 0x4f28, + 0x4fa8, 0x5156, 0x5174, 0x519c, 0x51e4, 0x52a1, 0x52a8, 0x533b, + 0x534e, 0x53d1, 0x53d8, 0x56e2, 0x58f0, 0x5904, 0x5907, 0x5932, + 0x5934, 0x5b66, 0x5b9e, 0x5b9f, 0x5c9a, 0x5e86, 0x603b, 0x6589, + 0x67fe, 0x6804, 0x6865, 0x6d4e, 0x70bc, 0x7535, 0x7ea4, 0x7eac, + 0x7eba, 0x7ec7, 0x7ecf, 0x7edf, 0x7f06, 0x7f37, 0x827a, 0x82cf, + 0x836f, 0x89c6, 0x8bbe, 0x8be2, 0x8f66, 0x8f67, 0x8f6e, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7411, 0x7cfc, 0x7dcd, 0x6946, 0x7ac9, 0x5227, 0xf3e5, + 0xf3e6, 0xf3e7, 0xf3e8, 0x918c, 0x78b8, 0x915e, 0x80bc, 0xf3ed, + 0x8d0b, 0x80f6, 0xf3f0, 0xf3f1, 0xf3f2, 0x809f, 0x9ec7, 0x4ccd, + 0x9dc9, 0x9e0c, 0x4c3e, 0xf3f9, 0xf3fa, 0x9e0a, 0xf3fc, 0x35c1, + 0xf3fe, 0x6e9a, 0x823e, 0x7519, 0xf402, 0x4911, 0x9a6c, 0x9a8f, + 0x9f99, 0x7987, 0xf408, 0xf409, 0xf40a, 0xf40b, 0x4e24, 0x4e81, + 0x4e80, 0x4e87, 0x4ebf, 0x4eeb, 0x4f37, 0x344c, 0x4fbd, 0x3e48, + 0x5003, 0x5088, 0x347d, 0x3493, 0x34a5, 0x5186, 0x5905, 0x51db, + 0x51fc, 0x5205, 0x4e89, 0x5279, 0x5290, 0x5327, 0x35c7, 0x53a9, + 0x3551, 0x53b0, 0x3553, 0x53c2, 0x5423, 0x356d, 0x3572, 0x3681, + 0x5493, 0x54a3, 0x54b4, 0x54b9, 0x54d0, 0x54ef, 0x5518, 0x5523, + 0x5528, 0x3598, 0x553f, 0x35a5, 0x35bf, 0x55d7, 0x35c5, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf43d, 0x5525, 0xf43f, 0xf440, 0xf441, 0xf442, 0x5590, 0xf444, + 0x39ec, 0xf446, 0x8e46, 0xf448, 0xf449, 0x4053, 0xf44b, 0x777a, + 0xf44d, 0x3a34, 0x47d5, 0xf450, 0xf451, 0xf452, 0x64dd, 0xf454, + 0xf455, 0xf456, 0xf457, 0x648d, 0x8e7e, 0xf45a, 0xf45b, 0xf45c, + 0xf45d, 0xf45e, 0xf45f, 0xf460, 0xf461, 0xf462, 0xf463, 0x47f4, + 0xf465, 0xf466, 0x9ab2, 0x3a67, 0xf469, 0x3fed, 0x3506, 0xf46c, + 0xf46d, 0xf46e, 0xf46f, 0x9d6e, 0x9815, 0xf472, 0x43d9, 0xf474, + 0x64b4, 0x54e3, 0xf477, 0xf478, 0xf479, 0x39fb, 0xf47b, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf47c, 0xf47d, 0xf47e, 0x64ea, 0xf480, 0xf481, 0x8e68, + 0xf483, 0xf484, 0xf485, 0xf486, 0x480b, 0xf488, 0x3ffa, 0x5873, + 0xf48b, 0xf48c, 0xf48d, 0xf48e, 0xf48f, 0xf490, 0xf491, 0x5579, + 0x40bb, 0x43ba, 0xf495, 0x4ab4, 0xf497, 0xf498, 0x81aa, 0x98f5, + 0xf49b, 0x6379, 0x39fe, 0xf49e, 0x8dc0, 0x56a1, 0x647c, 0x3e43, + 0xf4a3, 0xf4a4, 0xf4a5, 0xf4a6, 0xf4a7, 0xf4a8, 0xf4a9, 0xf4aa, + 0x3992, 0x3a06, 0xf4ad, 0x3578, 0xf4af, 0xf4b0, 0x5652, 0xf4b2, + 0xf4b3, 0xf4b4, 0x34bc, 0x6c3d, 0xf4b7, 0xf4b8, 0xf4b9, 0xf4ba, + 0xf4bb, 0xf4bc, 0xf4bd, 0xf4be, 0xf4bf, 0xf4c0, 0xf4c1, 0x7f93, + 0xf4c3, 0xf4c4, 0xf4c5, 0x35fb, 0xf4c7, 0xf4c8, 0xf4c9, 0xf4ca, + 0x3f93, 0xf4cc, 0xf4cd, 0xf4ce, 0xf4cf, 0xf4d0, 0xf4d1, 0xf4d2, + 0xf4d3, 0xf4d4, 0xf4d5, 0x3ff9, 0xf4d7, 0x6432, 0xf4d9, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf4da, 0xf4db, 0xf4dc, 0xf4dd, 0xf4de, 0xf4df, 0xf4e0, 0x3a18, + 0xf4e2, 0xf4e3, 0xf4e4, 0xf4e5, 0xf4e6, 0xf4e7, 0xf4e8, 0xf4e9, + 0x95aa, 0x54cc, 0x82c4, 0x55b9, 0xf4ee, 0xf4ef, 0x9c26, 0x9ab6, + 0xf4f2, 0xf4f3, 0x7140, 0x816d, 0x80ec, 0x5c1c, 0xf4f8, 0x8134, + 0x3797, 0x535f, 0xf4fc, 0x91b6, 0xf4fe, 0xf4ff, 0xf500, 0xf501, + 0x35dd, 0xf503, 0x3609, 0xf505, 0x56af, 0xf507, 0xf508, 0xf509, + 0xf50a, 0xf50b, 0xf50c, 0xf50d, 0xf50e, 0xf50f, 0xf510, 0xf511, + 0x5a54, 0xf513, 0xf514, 0xf515, 0xf516, 0x579c, 0xf518, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf519, 0xf51a, 0xf51b, 0xf51c, 0xf51d, 0x3703, 0xf51f, + 0xf520, 0xf521, 0xf522, 0xf523, 0xf524, 0xf525, 0xf526, 0x5899, + 0x5268, 0x361a, 0xf52a, 0x7bb2, 0x5b68, 0x4800, 0x4b2c, 0x9f27, + 0x49e7, 0x9c1f, 0x9b8d, 0xf533, 0xf534, 0x55fb, 0x35f2, 0x5689, + 0x4e28, 0x5902, 0xf53a, 0xf53b, 0x9751, 0xf53d, 0x4e5b, 0x4ebb, + 0x353e, 0x5c23, 0x5f51, 0x5fc4, 0x38fa, 0x624c, 0x6535, 0x6b7a, + 0x6c35, 0x6c3a, 0x706c, 0x722b, 0x4e2c, 0x72ad, 0xf54e, 0x7f52, + 0x793b, 0x7cf9, 0x7f53, 0xf553, 0x34c1, 0xf555, 0xf556, 0x8002, + 0x8080, 0xf559, 0xf55a, 0x535d, 0x8864, 0x89c1, 0xf55e, 0x8ba0, + 0x8d1d, 0x9485, 0x9578, 0x957f, 0x95e8, 0xf565, 0x97e6, 0x9875, + 0x98ce, 0x98de, 0x9963, 0xf56b, 0x9c7c, 0x9e1f, 0x9ec4, 0x6b6f, + 0xf907, 0x4e37, 0xf572, 0x961d, 0x6237, 0x94a2, 0xf576, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x503b, 0x6dfe, 0xf579, 0xf57a, 0x3dc9, 0x888f, 0xf57d, 0x7077, + 0x5cf5, 0x4b20, 0xf581, 0x3559, 0xf583, 0x6122, 0xf585, 0x8fa7, + 0x91f6, 0x7191, 0x6719, 0x73ba, 0xf58b, 0xf58c, 0x3c8b, 0xf58e, + 0x4b10, 0x78e4, 0x7402, 0x51ae, 0xf593, 0x4009, 0x6a63, 0xf596, + 0x4223, 0x860f, 0xf599, 0x7a2a, 0xf59b, 0xf59c, 0x9755, 0x704d, + 0x5324, 0xf5a0, 0x93f4, 0x76d9, 0xf5a3, 0xf5a4, 0x77dd, 0x4ea3, + 0x4ff0, 0x50bc, 0x4e2f, 0x4f17, 0xf5ab, 0x5434, 0x7d8b, 0x5892, + 0x58d0, 0xf5b0, 0x5e92, 0x5e99, 0x5fc2, 0xf5b4, 0x658b, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf5b6, 0x6919, 0x6a43, 0xf5b9, 0x6cff, 0xf5bb, 0x7200, + 0xf5bd, 0x738c, 0x3edb, 0xf5c0, 0x5b15, 0x74b9, 0x8b83, 0xf5c4, + 0xf5c5, 0x7a93, 0x7bec, 0x7cc3, 0x7e6c, 0x82f8, 0x8597, 0xf5cc, + 0x8890, 0xf5ce, 0x8eb9, 0xf5d0, 0x8fcf, 0x855f, 0x99e0, 0x9221, + 0xf5d5, 0xf5d6, 0xf5d7, 0x4071, 0x42a2, 0x5a1a, 0xf5db, 0xf5dc, + 0xf5dd, 0x9868, 0x676b, 0x4276, 0x573d, 0xf5e2, 0x85d6, 0xf5e4, + 0x82bf, 0xf5e6, 0x4c81, 0xf5e8, 0x5d7b, 0xf5ea, 0xf5eb, 0xf5ec, + 0xf5ed, 0x5b96, 0xf5ef, 0xf5f0, 0x7e5b, 0xf5f2, 0xf5f3, 0xf5f4, + 0xf5f5, 0xf5f6, 0xf5f7, 0xf5f8, 0xf5f9, 0xf5fa, 0xf5fb, 0xf5fc, + 0xf5fd, 0xf5fe, 0xf5ff, 0xf600, 0xf601, 0xf602, 0xf603, 0xf604, + 0xf605, 0xf606, 0xf607, 0xf608, 0xf609, 0xf60a, 0xf60b, 0xf60c, + 0xf60d, 0xf60e, 0xf60f, 0xf610, 0xf611, 0xf612, 0xf613, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf614, 0xf615, 0xf616, 0xf617, 0xf618, 0xf619, 0xf61a, 0xf61b, + 0xf61c, 0xf61d, 0xf61e, 0xf61f, 0xf620, 0xf621, 0xf622, 0xf623, + 0xf624, 0xf625, 0xf626, 0xf627, 0xf628, 0xf629, 0xf62a, 0xf62b, + 0xf62c, 0xf62d, 0xf62e, 0xf62f, 0xf630, 0xf631, 0xf632, 0xf633, + 0x5d3e, 0x5d48, 0x5d56, 0x3dfc, 0x380f, 0x5da4, 0x5db9, 0x3820, + 0x3838, 0x5e42, 0x5ebd, 0x5f25, 0x5f83, 0x3908, 0x3914, 0x393f, + 0x394d, 0x60d7, 0x613d, 0x5ce5, 0x3989, 0x61b7, 0x61b9, 0x61cf, + 0x39b8, 0x622c, 0x6290, 0x62e5, 0x6318, 0x39f8, 0x56b1, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x3a03, 0x63e2, 0x63fb, 0x6407, 0x645a, 0x3a4b, 0x64c0, + 0x5d15, 0x5621, 0x9f9f, 0x3a97, 0x6586, 0x3abd, 0x65ff, 0x6653, + 0x3af2, 0x6692, 0x3b22, 0x6716, 0x3b42, 0x67a4, 0x6800, 0x3b58, + 0x684a, 0x6884, 0x3b72, 0x3b71, 0x3b7b, 0x6909, 0x6943, 0x725c, + 0x6964, 0x699f, 0x6985, 0x3bbc, 0x69d6, 0x3bdd, 0x6a65, 0x6a74, + 0x6a71, 0x6a82, 0x3bec, 0x6a99, 0x3bf2, 0x6aab, 0x6ab5, 0x6ad4, + 0x6af6, 0x6b81, 0x6bc1, 0x6bea, 0x6c75, 0x6caa, 0x3ccb, 0x6d02, + 0x6d06, 0x6d26, 0x6d81, 0x3cef, 0x6da4, 0x6db1, 0x6e15, 0x6e18, + 0x6e29, 0x6e86, 0xf694, 0x6ebb, 0x6ee2, 0x6eda, 0x9f7f, 0x6ee8, + 0x6ee9, 0x6f24, 0x6f34, 0x3d46, 0xf69e, 0x6f81, 0x6fbe, 0x3d6a, + 0x3d75, 0x71b7, 0x5c99, 0x3d8a, 0x702c, 0x3d91, 0x7050, 0x7054, + 0x706f, 0x707f, 0x7089, 0xf6ad, 0x43c1, 0x35f1, 0xf6b0, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe311, 0x57be, 0xe313, 0x713e, 0xe315, 0x364e, 0x69a2, 0xe318, + 0x5b74, 0x7a49, 0xe31b, 0xe31c, 0x7a65, 0x7a7d, 0xe31f, 0x7abb, + 0x7ab0, 0x7ac2, 0x7ac3, 0x71d1, 0xe325, 0x41ca, 0x7ada, 0x7add, + 0x7aea, 0x41ef, 0x54b2, 0xe32c, 0x7b0b, 0x7b55, 0x7b29, 0xe330, + 0xe331, 0x7ba2, 0x7b6f, 0x839c, 0xe335, 0xe336, 0x7bd0, 0x8421, + 0x7b92, 0x7bb8, 0xe33b, 0x3dad, 0xe33d, 0x8492, 0x7bfa, 0x7c06, + 0x7c35, 0xe342, 0x7c44, 0x7c83, 0xe345, 0x7ca6, 0x667d, 0xe348, + 0x7cc9, 0x7cc7, 0x7ce6, 0x7c74, 0x7cf3, 0x7cf5, 0x7cce, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7e67, 0x451d, 0xe352, 0x7d5d, 0xe354, 0x748d, 0x7d89, + 0x7dab, 0x7135, 0x7db3, 0x7dd2, 0xe35b, 0xe35c, 0x7de4, 0x3d13, + 0x7df5, 0xe360, 0x7de5, 0xe362, 0x7e1d, 0xe364, 0xe365, 0x7e6e, + 0x7e92, 0x432b, 0x946c, 0x7e27, 0x7f40, 0x7f41, 0x7f47, 0x7936, + 0xe36f, 0x99e1, 0x7f97, 0xe372, 0x7fa3, 0xe374, 0xe375, 0x455c, + 0xe377, 0x4503, 0xe379, 0x7ffa, 0xe37b, 0x8005, 0x8008, 0x801d, + 0x8028, 0x802f, 0xe381, 0xe382, 0x803b, 0x803c, 0x8061, 0xe386, + 0x4989, 0xe388, 0xe389, 0xe38a, 0x6725, 0x80a7, 0xe38d, 0x8107, + 0x811a, 0x58b0, 0xe391, 0x6c7f, 0xe393, 0xe394, 0x64e7, 0xe396, + 0x8218, 0xe398, 0x6a53, 0xe39a, 0xe39b, 0x447a, 0x8229, 0xe39e, + 0xe39f, 0xe3a0, 0x4ff9, 0xe3a2, 0x84e2, 0x8362, 0xe3a5, 0xe3a6, + 0xe3a7, 0xe3a8, 0xe3a9, 0x82aa, 0x691b, 0xe3ac, 0x41db, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x854b, 0x82d0, 0x831a, 0xe3b1, 0xe3b2, 0x36c1, 0xe3b4, 0xe3b5, + 0x827b, 0x82e2, 0x8318, 0xe3b9, 0xe3ba, 0xe3bb, 0xe3bc, 0xe3bd, + 0x3dbf, 0x831d, 0x55ec, 0x8385, 0x450b, 0xe3c3, 0x83ac, 0x83c1, + 0x83d3, 0x347e, 0xe3c8, 0x6a57, 0x855a, 0x3496, 0xe3cc, 0xe3cd, + 0x8458, 0xe3cf, 0x8471, 0x3dd3, 0x44e4, 0x6aa7, 0x844a, 0xe3d5, + 0x7958, 0x84a8, 0xe3d8, 0xe3d9, 0xe3da, 0x84de, 0x840f, 0x8391, + 0x44a0, 0x8493, 0x84e4, 0xe3e1, 0x4240, 0xe3e3, 0x4543, 0x8534, + 0x5af2, 0xe3e7, 0x4527, 0x8573, 0x4516, 0x67bf, 0x8616, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xe3ed, 0xe3ee, 0x85c1, 0xe3f0, 0x8602, 0xe3f2, 0xe3f3, + 0xe3f4, 0x456a, 0x8628, 0x3648, 0xe3f8, 0x53f7, 0xe3fa, 0x867e, + 0x8771, 0xe3fd, 0x87ee, 0xe3ff, 0x87b1, 0x87da, 0x880f, 0x5661, + 0x866c, 0x6856, 0x460f, 0x8845, 0x8846, 0xe409, 0xe40a, 0xe40b, + 0x885e, 0x889c, 0x465b, 0x88b4, 0x88b5, 0x63c1, 0x88c5, 0x7777, + 0xe414, 0x8987, 0x898a, 0x89a6, 0x89a9, 0x89a7, 0x89bc, 0xe41b, + 0x89e7, 0xe41d, 0xe41e, 0x8a9c, 0x7793, 0x91fe, 0x8a90, 0xe423, + 0x7ae9, 0xe425, 0xe426, 0x4713, 0xe428, 0x717c, 0x8b0c, 0x8b1f, + 0xe42c, 0xe42d, 0x8b3f, 0x8b4c, 0x8b4d, 0x8aa9, 0xe432, 0x8b90, + 0x8b9b, 0x8aaf, 0xe436, 0x4615, 0x884f, 0x8c9b, 0xe43a, 0xe43b, + 0xe43c, 0x3725, 0xe43e, 0x8cd6, 0xe440, 0xe441, 0x8d12, 0x8d03, + 0xe444, 0x8cdb, 0x705c, 0x8d11, 0xe448, 0x3ed0, 0x8d77, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8da9, 0xe44c, 0xe44d, 0xe44e, 0x3b7c, 0xe450, 0xe451, 0x7ae7, + 0x8ead, 0x8eb6, 0x8ec3, 0x92d4, 0x8f19, 0x8f2d, 0xe459, 0xe45a, + 0x8fa5, 0x9303, 0xe45d, 0xe45e, 0x8fb3, 0x492a, 0xe461, 0xe462, + 0xe463, 0x5ef8, 0xe465, 0x8ff9, 0xe467, 0xe468, 0xe469, 0xe46a, + 0x3980, 0xe46c, 0x9037, 0xe46e, 0xe46f, 0x9061, 0xe471, 0xe472, + 0x90a8, 0xe474, 0x90c4, 0xe476, 0x90ae, 0x90fd, 0x9167, 0x3af0, + 0x91a9, 0x91c4, 0x7cac, 0xe47e, 0xe47f, 0x920e, 0x6c9f, 0x9241, + 0x9262, 0xe484, 0x92b9, 0xe486, 0xe487, 0xe488, 0xe489, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xe48a, 0x932c, 0x936b, 0xe48d, 0xe48e, 0x708f, 0x5ac3, + 0xe491, 0xe492, 0x4965, 0x9244, 0xe495, 0xe496, 0xe497, 0x9373, + 0x945b, 0x8ebc, 0x9585, 0x95a6, 0x9426, 0x95a0, 0x6ff6, 0x42b9, + 0xe4a1, 0xe4a2, 0xe4a3, 0xe4a4, 0x49df, 0x6c1c, 0x967b, 0x9696, + 0x416c, 0x96a3, 0xe4ab, 0x61da, 0x96b6, 0x78f5, 0xe4af, 0x96bd, + 0x53cc, 0x49a1, 0xe4b3, 0xe4b4, 0xe4b5, 0xe4b6, 0xe4b7, 0xe4b8, + 0xe4b9, 0xe4ba, 0x9731, 0x8642, 0x9736, 0x4a0f, 0x453d, 0x4585, + 0xe4c1, 0x7075, 0x5b41, 0x971b, 0x975c, 0xe4c6, 0x9757, 0x5b4a, + 0xe4c9, 0x975f, 0x9425, 0x50d0, 0xe4cd, 0xe4ce, 0x9789, 0x979f, + 0x97b1, 0x97be, 0x97c0, 0x97d2, 0x97e0, 0xe4d6, 0x97ee, 0x741c, + 0xe4d9, 0x97ff, 0x97f5, 0xe4dc, 0xe4dd, 0x4ad1, 0x9834, 0x9833, + 0x984b, 0x9866, 0x3b0e, 0xe4e4, 0x3d51, 0xe4e6, 0xe4e7, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe4e8, 0x98ca, 0x98b7, 0x98c8, 0x98c7, 0x4aff, 0xe4ee, 0xe4ef, + 0x55b0, 0x98e1, 0x98e6, 0x98ec, 0x9378, 0x9939, 0xe4f6, 0x4b72, + 0xe4f8, 0xe4f9, 0x99f5, 0x9a0c, 0x9a3b, 0x9a10, 0x9a58, 0xe4ff, + 0x36c4, 0xe501, 0xe502, 0x9ae0, 0x9ae2, 0xe505, 0x9af4, 0x4c0e, + 0x9b14, 0x9b2d, 0xe50a, 0x5034, 0x9b34, 0xe50d, 0x38c3, 0xe50f, + 0x9b50, 0x9b40, 0xe512, 0x5a45, 0xe514, 0x9b8e, 0xe516, 0x9c02, + 0x9bff, 0x9c0c, 0xe51a, 0x9dd4, 0xe51c, 0xe51d, 0xe51e, 0xe51f, + 0xe520, 0xe521, 0x9d7e, 0x9d83, 0xe524, 0x9e0e, 0x6888, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x9dc4, 0xe528, 0xe529, 0xe52a, 0xe52b, 0xe52c, 0x9d39, + 0xe52e, 0xe52f, 0x9e90, 0x9e95, 0x9e9e, 0x9ea2, 0x4d34, 0x9eaa, + 0x9eaf, 0xe537, 0x9ec1, 0x3b60, 0x39e5, 0x3d1d, 0x4f32, 0x37be, + 0xe53e, 0x9f02, 0x9f08, 0x4b96, 0x9424, 0xe543, 0x9f17, 0x9f16, + 0x9f39, 0x569f, 0x568a, 0x9f45, 0x99b8, 0xe54b, 0x97f2, 0x847f, + 0x9f62, 0x9f69, 0x7adc, 0x9f8e, 0x7216, 0x4bbe, 0xe554, 0xe555, + 0x7177, 0xe557, 0xe558, 0xe559, 0x739e, 0xe55b, 0xe55c, 0x799f, + 0xe55e, 0xe55f, 0x9369, 0x93f3, 0xe562, 0x92ec, 0x9381, 0x93cb, + 0xe566, 0xe567, 0x7217, 0x3eeb, 0x7772, 0x7a43, 0x70d0, 0xe56d, + 0xe56e, 0x717e, 0xe570, 0x70a3, 0xe572, 0xe573, 0x3ec7, 0xe575, + 0xe576, 0xe577, 0x3722, 0xe579, 0xe57a, 0x36e1, 0xe57c, 0xe57d, + 0xe57e, 0x3723, 0xe580, 0x575b, 0xe582, 0xe583, 0xe584, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe585, 0xe586, 0x8503, 0xe588, 0x8503, 0x8455, 0xe58b, 0xe58c, + 0xe58d, 0xe58e, 0xe58f, 0xe590, 0x44f4, 0xe592, 0xe593, 0xe594, + 0x67f9, 0x3733, 0x3c15, 0x3de7, 0x586c, 0xe59a, 0x6810, 0x4057, + 0xe59d, 0xe59e, 0xe59f, 0xe5a0, 0xe5a1, 0x54cb, 0x569e, 0xe5a4, + 0x5692, 0xe5a6, 0xe5a7, 0xe5a8, 0x93c6, 0xe5aa, 0x939c, 0x4ef8, + 0x512b, 0x3819, 0xe5af, 0x4ebc, 0xe5b1, 0xe5b2, 0x4f4b, 0x4f8a, + 0xe5b5, 0x5a68, 0xe5b7, 0xe5b8, 0x3999, 0xe5ba, 0xe5bb, 0x3435, + 0x4f29, 0xe5be, 0xe5bf, 0xe5c0, 0x8ada, 0xe5c2, 0x4e98, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x50cd, 0x510d, 0x4fa2, 0x4f03, 0xe5c8, 0xe5c9, 0x4f42, + 0x502e, 0x506c, 0x5081, 0x4fcc, 0x4fe5, 0x5058, 0x50fc, 0x5159, + 0x515b, 0x515d, 0x515e, 0x6e76, 0xe5d7, 0xe5d8, 0xe5d9, 0x6d72, + 0xe5db, 0xe5dc, 0x51a8, 0x51c3, 0xe5df, 0x44dd, 0xe5e1, 0xe5e2, + 0xe5e3, 0x8d7a, 0xe5e5, 0xe5e6, 0x5259, 0x52a4, 0xe5e9, 0x52e1, + 0x936e, 0x467a, 0x718c, 0xe5ee, 0xe5ef, 0xe5f0, 0xe5f1, 0x69d1, + 0xe5f3, 0x7479, 0x3ede, 0x7499, 0x7414, 0x7456, 0x7398, 0x4b8e, + 0xe5fb, 0xe5fc, 0x53d0, 0x3584, 0x720f, 0xe600, 0x55b4, 0xe602, + 0x54cd, 0xe604, 0x571d, 0x925d, 0x96f4, 0x9366, 0x57dd, 0x578d, + 0x577f, 0x363e, 0x58cb, 0x5a99, 0xe60f, 0xe610, 0xe611, 0xe612, + 0x5a2c, 0x59b8, 0x928f, 0x5a7e, 0x5acf, 0x5a12, 0xe619, 0xe61a, + 0xe61b, 0xe61c, 0x36f5, 0x6d05, 0x7443, 0x5a21, 0xe621, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5a81, 0xe623, 0xe624, 0x93e0, 0x748c, 0xe627, 0x7105, 0x4972, + 0x9408, 0xe62b, 0x93bd, 0x37a0, 0x5c1e, 0x5c9e, 0x5e5e, 0x5e48, + 0xe632, 0xe633, 0xe634, 0x5ecd, 0x5b4f, 0xe637, 0xe638, 0x3701, + 0xe63a, 0x36dd, 0xe63c, 0x36d3, 0x812a, 0xe63f, 0xe640, 0xe641, + 0xe642, 0x5f0c, 0x5f0e, 0xe645, 0xe646, 0x5a6b, 0xe648, 0x5b44, + 0x8614, 0xe64b, 0x8860, 0x607e, 0xe64e, 0xe64f, 0x5fdb, 0x3eb8, + 0xe652, 0xe653, 0xe654, 0xe655, 0x61c0, 0xe657, 0xe658, 0xe659, + 0x6199, 0x6198, 0x6075, 0xe65d, 0xe65e, 0xe65f, 0xe660, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6471, 0xe662, 0xe663, 0x3a29, 0xe665, 0xe666, 0xe667, + 0xe668, 0x6337, 0xe66a, 0x64b6, 0x6331, 0x63d1, 0xe66e, 0xe66f, + 0x62a4, 0xe671, 0x643b, 0x656b, 0x6972, 0x3bf4, 0xe676, 0xe677, + 0xe678, 0xe679, 0x550d, 0xe67b, 0xe67c, 0xe67d, 0x66ce, 0xe67f, + 0xe680, 0x3ae0, 0x4190, 0xe683, 0xe684, 0xe685, 0xe686, 0xe687, + 0xe688, 0x78ee, 0xe68a, 0xe68b, 0xe68c, 0x3464, 0xe68e, 0xe68f, + 0xe690, 0x668e, 0xe692, 0x666b, 0x4b93, 0x6630, 0xe696, 0xe697, + 0x6663, 0xe699, 0xe69a, 0x661e, 0xe69c, 0x38d1, 0xe69e, 0xe69f, + 0x3b99, 0xe6a1, 0xe6a2, 0x74d0, 0x3b96, 0x678f, 0xe6a6, 0x68b6, + 0x681e, 0x3bc4, 0x6abe, 0x3863, 0xe6ac, 0xe6ad, 0x6a33, 0x6a52, + 0x6ac9, 0x6b05, 0xe6b2, 0x6511, 0x6898, 0x6a4c, 0x3bd7, 0x6a7a, + 0x6b57, 0xe6b9, 0xe6ba, 0x93a0, 0x92f2, 0xe6bd, 0xe6be, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x9289, 0xe6c0, 0xe6c1, 0x9467, 0x6da5, 0x6f0b, 0xe6c5, 0x6d67, + 0xe6c7, 0x3d8f, 0x6e04, 0xe6ca, 0x5a3d, 0x6e0a, 0x5847, 0x6d24, + 0x7842, 0x713b, 0xe6d1, 0xe6d2, 0x70f1, 0x7250, 0x7287, 0x7294, + 0xe6d7, 0xe6d8, 0x5179, 0xe6da, 0xe6db, 0x747a, 0xe6dd, 0xe6de, + 0xe6df, 0xe6e0, 0xe6e1, 0x3f06, 0x3eb1, 0xe6e4, 0xe6e5, 0xe6e6, + 0x60a7, 0x3ef3, 0x74cc, 0x743c, 0x9387, 0x7437, 0x449f, 0xe6ee, + 0x4551, 0x7583, 0x3f63, 0xe6f2, 0xe6f3, 0x3f58, 0x7555, 0x7673, + 0xe6f7, 0x3b19, 0x7468, 0xe6fa, 0xe6fb, 0xe6fc, 0x3afb, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x3dcd, 0xe6ff, 0x3eff, 0xe701, 0xe702, 0x91fa, 0x5732, + 0x9342, 0xe706, 0xe707, 0x50df, 0xe709, 0xe70a, 0x7778, 0xe70c, + 0x770e, 0x770f, 0x777b, 0xe710, 0xe711, 0x3a5e, 0xe713, 0x7438, + 0x749b, 0x3ebf, 0xe717, 0xe718, 0x40c8, 0xe71a, 0xe71b, 0x9307, + 0xe71d, 0x781e, 0x788d, 0x7888, 0x78d2, 0x73d0, 0x7959, 0xe724, + 0xe725, 0x410e, 0x799b, 0x8496, 0x79a5, 0x6a2d, 0xe72b, 0x7a3a, + 0x79f4, 0x416e, 0xe72f, 0x4132, 0x9235, 0x79f1, 0xe733, 0xe734, + 0xe735, 0xe736, 0xe737, 0x3597, 0x556b, 0x3570, 0x36aa, 0xe73c, + 0xe73d, 0x7ae2, 0x5a59, 0xe740, 0xe741, 0xe742, 0x5a0d, 0xe744, + 0x78f0, 0x5a2a, 0xe747, 0x7afe, 0x41f9, 0x7c5d, 0x7c6d, 0x4211, + 0xe74d, 0xe74e, 0xe74f, 0x7ccd, 0xe751, 0xe752, 0x7c8e, 0x7c7c, + 0x7cae, 0x6ab2, 0x7ddc, 0x7e07, 0x7dd3, 0x7f4e, 0xe75b, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe75c, 0xe75d, 0x7d97, 0xe75f, 0x426a, 0xe761, 0xe762, 0x67d6, + 0xe764, 0xe765, 0x57c4, 0xe767, 0xe768, 0xe769, 0x7fdd, 0x7b27, + 0xe76c, 0xe76d, 0xe76e, 0x7b0c, 0xe770, 0x99e6, 0x8645, 0x9a63, + 0x6a1c, 0xe775, 0x39e2, 0xe777, 0xe778, 0x9a1f, 0xe77a, 0x8480, + 0xe77c, 0xe77d, 0x44ea, 0x8137, 0x4402, 0x80c6, 0x8109, 0x8142, + 0xe784, 0x98c3, 0xe786, 0x8262, 0x8265, 0xe789, 0x8453, 0xe78b, + 0x8610, 0xe78d, 0x5a86, 0x417f, 0xe790, 0x5b2b, 0xe792, 0x5ae4, + 0xe794, 0x86a0, 0xe796, 0xe797, 0x882d, 0xe799, 0x5a02, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x886e, 0x4f45, 0x8887, 0x88bf, 0x88e6, 0x8965, 0x894d, + 0xe7a2, 0x8954, 0xe7a4, 0xe7a5, 0xe7a6, 0xe7a7, 0xe7a8, 0xe7a9, + 0x3ead, 0x84a3, 0x46f5, 0x46cf, 0x37f2, 0x8a3d, 0x8a1c, 0xe7b1, + 0x5f4d, 0x922b, 0xe7b4, 0x65d4, 0x7129, 0x70c4, 0xe7b8, 0x9d6d, + 0x8c9f, 0x8ce9, 0xe7bc, 0x599a, 0x77c3, 0x59f0, 0x436e, 0x36d4, + 0x8e2a, 0x8ea7, 0xe7c4, 0x8f30, 0x8f4a, 0x42f4, 0x6c58, 0x6fbb, + 0xe7ca, 0x489b, 0x6f79, 0x6e8b, 0xe7ce, 0x9be9, 0x36b5, 0xe7d1, + 0x90bb, 0x9097, 0x5571, 0x4906, 0x91bb, 0x9404, 0xe7d8, 0x4062, + 0xe7da, 0x9427, 0xe7dc, 0xe7dd, 0x84e5, 0x8a2b, 0x9599, 0x95a7, + 0x9597, 0x9596, 0xe7e4, 0x7445, 0x3ec2, 0xe7e7, 0xe7e8, 0xe7e9, + 0x3ee7, 0xe7eb, 0x968f, 0xe7ed, 0xe7ee, 0xe7ef, 0x3ecc, 0xe7f1, + 0xe7f2, 0xe7f3, 0x7412, 0x746b, 0x3efc, 0x9741, 0xe7f8, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6847, 0x4a1d, 0xe7fb, 0xe7fc, 0x975d, 0x9368, 0xe7ff, 0xe800, + 0xe801, 0xe802, 0x92ba, 0x5b11, 0x8b69, 0x493c, 0x73f9, 0xe808, + 0x979b, 0x9771, 0x9938, 0xe80c, 0x5dc1, 0xe80e, 0xe80f, 0x981f, + 0xe811, 0x92f6, 0xe813, 0x91e5, 0x44c0, 0xe816, 0xe817, 0xe818, + 0x98dc, 0xe81a, 0x3f00, 0x922a, 0x4925, 0x8414, 0x993b, 0x994d, + 0xe821, 0x3dfd, 0x999b, 0x4b6f, 0x99aa, 0x9a5c, 0xe827, 0xe828, + 0x6a8f, 0x9a21, 0x5afe, 0x9a2f, 0xe82d, 0x4b90, 0xe82f, 0x99bc, + 0x4bbd, 0x4b97, 0x937d, 0x5872, 0xe835, 0x5822, 0xe837, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xe838, 0x7844, 0xe83a, 0xe83b, 0x68c5, 0x3d7d, 0x9458, + 0x3927, 0x6150, 0xe841, 0xe842, 0x6107, 0x9c4f, 0x9c53, 0x9c7b, + 0x9c35, 0x9c10, 0x9b7f, 0x9bcf, 0xe84b, 0x9b9f, 0xe84d, 0xe84e, + 0x9d21, 0x4cae, 0xe851, 0x9e18, 0x4cb0, 0x9d0c, 0xe855, 0xe856, + 0xe857, 0xe858, 0x9da5, 0x84bd, 0xe85b, 0xe85c, 0xe85d, 0x85fc, + 0x4533, 0xe860, 0xe861, 0xe862, 0x8420, 0x85ee, 0xe865, 0xe866, + 0xe867, 0x79e2, 0xe869, 0xe86a, 0x492d, 0xe86c, 0x3d62, 0x93db, + 0x92be, 0x9348, 0xe871, 0x78b9, 0x9277, 0x944d, 0x4fe4, 0x3440, + 0x9064, 0xe878, 0x783d, 0x7854, 0x78b6, 0x784b, 0xe87d, 0xe87e, + 0xe87f, 0x369a, 0x4f72, 0x6fda, 0x6fd9, 0x701e, 0x701e, 0x5414, + 0xe887, 0x57bb, 0x58f3, 0x578a, 0x9d16, 0x57d7, 0x7134, 0x34af, + 0xe88f, 0x71eb, 0xe891, 0xe892, 0x5b28, 0xe894, 0xe895, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x610c, 0x5ace, 0x5a0b, 0x42bc, 0xe89a, 0x372c, 0x4b7b, 0xe89d, + 0x93bb, 0x93b8, 0xe8a0, 0xe8a1, 0x8472, 0xe8a3, 0xe8a4, 0xe8a5, + 0xe8a6, 0xe8a7, 0x5994, 0xe8a9, 0xe8aa, 0x7da8, 0xe8ac, 0xe8ad, + 0xe8ae, 0xe8af, 0xe8b0, 0x92e5, 0x73e2, 0x3ee9, 0x74b4, 0xe8b5, + 0xe8b6, 0x3ee1, 0xe8b8, 0x6ad8, 0x73f3, 0x73fb, 0x3ed6, 0xe8bd, + 0xe8be, 0xe8bf, 0xe8c0, 0xe8c1, 0xe8c2, 0xe8c3, 0x7448, 0xe8c5, + 0x70a5, 0xe8c7, 0x9284, 0x73e6, 0x935f, 0xe8cb, 0x9331, 0xe8cd, + 0xe8ce, 0x9386, 0xe8d0, 0xe8d1, 0x4935, 0xe8d3, 0x716b, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xe8d5, 0xe8d6, 0x56a4, 0xe8d8, 0xe8d9, 0xe8da, 0x5502, + 0x79c4, 0xe8dd, 0x7dfe, 0xe8df, 0xe8e0, 0xe8e1, 0x452e, 0x9401, + 0x370a, 0xe8e5, 0xe8e6, 0x59b0, 0xe8e8, 0xe8e9, 0xe8ea, 0x5aa1, + 0x36e2, 0xe8ed, 0x36b0, 0x925f, 0x5a79, 0xe8f1, 0xe8f2, 0x9374, + 0x3ccd, 0xe8f5, 0x4a96, 0x398a, 0x50f4, 0x3d69, 0x3d4c, 0xe8fb, + 0x7175, 0x42fb, 0xe8fe, 0x6e0f, 0xe900, 0x44eb, 0x6d57, 0xe903, + 0x7067, 0x6caf, 0x3cd6, 0xe907, 0xe908, 0x6e02, 0x6f0c, 0x3d6f, + 0xe90c, 0x7551, 0x36bc, 0x34c8, 0x4680, 0x3eda, 0x4871, 0x59c4, + 0x926e, 0x493e, 0x8f41, 0xe917, 0xe918, 0x5812, 0x57c8, 0x36d6, + 0xe91c, 0x70fe, 0xe91e, 0xe91f, 0xe920, 0xe921, 0xe922, 0x68b9, + 0x6967, 0xe925, 0xe926, 0xe927, 0xe928, 0xe929, 0xe92a, 0xe92b, + 0xe92c, 0x6a1a, 0xe92e, 0xe92f, 0x843e, 0x44df, 0x44ce, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe933, 0xe934, 0xe935, 0xe936, 0x6f17, 0xe938, 0x833d, 0xe93a, + 0x83ed, 0xe93c, 0xe93d, 0xe93e, 0x5989, 0x5a82, 0xe941, 0x5a61, + 0x5a71, 0xe944, 0xe945, 0x372d, 0x59ef, 0xe948, 0x36c7, 0x718e, + 0x9390, 0x669a, 0xe94d, 0x5a6e, 0x5a2b, 0xe950, 0x6a2b, 0xe952, + 0xe953, 0xe954, 0xe955, 0x711d, 0xe957, 0xe958, 0x4fb0, 0xe95a, + 0x5cc2, 0xe95c, 0xe95d, 0xe95e, 0x6a0c, 0xe960, 0xe961, 0x70a6, + 0x7133, 0xe964, 0x3da5, 0x6cdf, 0xe967, 0xe968, 0x7e65, 0x59eb, + 0x5d2f, 0x3df3, 0x5f5c, 0xe96e, 0xe96f, 0x7da4, 0x8426, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5485, 0xe973, 0xe974, 0xe975, 0x577e, 0xe977, 0xe978, + 0x3fe5, 0xe97a, 0xe97b, 0x7003, 0xe97d, 0x5d70, 0x738f, 0x7cd3, + 0xe981, 0xe982, 0x4fc8, 0x7fe7, 0x72cd, 0x7310, 0xe987, 0x7338, + 0x7339, 0xe98a, 0x7341, 0x7348, 0x3ea9, 0xe98e, 0x906c, 0x71f5, + 0xe991, 0x73e1, 0x81f6, 0x3eca, 0x770c, 0x3ed1, 0x6ca2, 0x56fd, + 0x7419, 0x741e, 0x741f, 0x3ee2, 0x3ef0, 0x3ef4, 0x3efa, 0x74d3, + 0x3f0e, 0x3f53, 0x7542, 0x756d, 0x7572, 0x758d, 0x3f7c, 0x75c8, + 0x75dc, 0x3fc0, 0x764d, 0x3fd7, 0x7674, 0x3fdc, 0x767a, 0xe9b0, + 0x7188, 0x5623, 0x8980, 0x5869, 0x401d, 0x7743, 0x4039, 0x6761, + 0x4045, 0x35db, 0x7798, 0x406a, 0x406f, 0x5c5e, 0x77be, 0x77cb, + 0x58f2, 0x7818, 0x70b9, 0x781c, 0x40a8, 0x7839, 0x7847, 0x7851, + 0x7866, 0x8448, 0xe9cb, 0x7933, 0x6803, 0x7932, 0x4103, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4109, 0x7991, 0x7999, 0x8fbb, 0x7a06, 0x8fbc, 0x4167, 0x7a91, + 0x41b2, 0x7abc, 0x8279, 0x41c4, 0x7acf, 0x7adb, 0x41cf, 0x4e21, + 0x7b62, 0x7b6c, 0x7b7b, 0x7c12, 0x7c1b, 0x4260, 0x427a, 0x7c7b, + 0x7c9c, 0x428c, 0x7cb8, 0x4294, 0x7ced, 0x8f93, 0x70c0, 0xe9ef, + 0x7dcf, 0x7dd4, 0x7dd0, 0x7dfd, 0x7fae, 0x7fb4, 0x729f, 0x4397, + 0x8020, 0x8025, 0x7b39, 0x802e, 0x8031, 0x8054, 0x3dcc, 0x57b4, + 0x70a0, 0x80b7, 0x80e9, 0x43ed, 0x810c, 0x732a, 0x810e, 0x8112, + 0x7560, 0x8114, 0x4401, 0x3b39, 0x8156, 0x8159, 0x815a, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x4413, 0x583a, 0x817c, 0x8184, 0x4425, 0x8193, 0x442d, + 0x81a5, 0x57ef, 0x81c1, 0x81e4, 0x8254, 0x448f, 0x82a6, 0x8276, + 0x82ca, 0x82d8, 0x82ff, 0x44b0, 0x8357, 0x9669, 0x698a, 0x8405, + 0x70f5, 0x8464, 0x60e3, 0x8488, 0x4504, 0x84be, 0x84e1, 0x84f8, + 0x8510, 0x8538, 0x8552, 0x453b, 0x856f, 0x8570, 0x85e0, 0x4577, + 0x8672, 0x8692, 0x86b2, 0x86ef, 0x9645, 0x878b, 0x4606, 0x4617, + 0x88ae, 0x88ff, 0x8924, 0x8947, 0x8991, 0xea43, 0x8a29, 0x8a38, + 0x8a94, 0x8ab4, 0x8c51, 0x8cd4, 0x8cf2, 0x8d1c, 0x4798, 0x585f, + 0x8dc3, 0x47ed, 0x4eee, 0x8e3a, 0x55d8, 0x5754, 0x8e71, 0x55f5, + 0x8eb0, 0x4837, 0x8ece, 0x8ee2, 0x8ee4, 0x8eed, 0x8ef2, 0x8fb7, + 0x8fc1, 0x8fca, 0x8fcc, 0x9033, 0x99c4, 0x48ad, 0x98e0, 0x9213, + 0x491e, 0x9228, 0x9258, 0x926b, 0x92b1, 0x92ae, 0x92bf, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x92e3, 0x92eb, 0x92f3, 0x92f4, 0x92fd, 0x9343, 0x9384, 0x93ad, + 0x4945, 0x4951, 0x9ebf, 0x9417, 0x5301, 0x941d, 0x942d, 0x943e, + 0x496a, 0x9454, 0x9479, 0x952d, 0x95a2, 0x49a7, 0x95f4, 0x9633, + 0x49e5, 0x67a0, 0x4a24, 0x9740, 0x4a35, 0x97b2, 0x97c2, 0x5654, + 0x4ae4, 0x60e8, 0x98b9, 0x4b19, 0x98f1, 0x5844, 0x990e, 0x9919, + 0x51b4, 0x991c, 0x9937, 0x9942, 0x995d, 0x9962, 0x4b70, 0x99c5, + 0x4b9d, 0x9a3c, 0x9b0f, 0x7a83, 0x9b69, 0x9b81, 0x9bdd, 0x9bf1, + 0x9bf4, 0x4c6d, 0x9c20, 0x376f, 0xeaa9, 0x9d49, 0x9c3a, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x9efe, 0x5650, 0x9d93, 0x9dbd, 0x9dc0, 0x9dfc, 0x94f6, + 0x8fb6, 0x9e7b, 0x9eac, 0x9eb1, 0x9ebd, 0x9ec6, 0x94dc, 0x9ee2, + 0x9ef1, 0x9ef8, 0x7ac8, 0x9f44, 0xeabf, 0xeac0, 0xeac1, 0x691a, + 0x94c3, 0x59ac, 0xeac5, 0x5840, 0x94c1, 0x37b9, 0xeac9, 0xeaca, + 0xeacb, 0xeacc, 0x5757, 0x7173, 0xeacf, 0xead0, 0xead1, 0x546a, + 0xead3, 0xead4, 0x549e, 0xead6, 0xead7, 0xead8, 0xead9, 0xeada, + 0x60e7, 0xeadc, 0x567a, 0xeade, 0xeadf, 0xeae0, 0xeae1, 0xeae2, + 0xeae3, 0x6955, 0x9c2f, 0x87a5, 0xeae7, 0xeae8, 0xeae9, 0xeaea, + 0xeaeb, 0xeaec, 0x5c20, 0xeaee, 0x5e0b, 0xeaf0, 0xeaf1, 0xeaf2, + 0x671e, 0xeaf4, 0xeaf5, 0xeaf6, 0x3647, 0xeaf8, 0xeaf9, 0xeafa, + 0xeafb, 0x5364, 0x84ad, 0xeafe, 0xeaff, 0xeb00, 0x8b81, 0xeb02, + 0xeb03, 0xeb04, 0xeb05, 0x4e78, 0x70bb, 0xeb08, 0xeb09, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xeb0a, 0xeb0b, 0xeb0c, 0xeb0d, 0xeb0e, 0xeb0f, 0x62c3, 0xeb11, + 0xeb12, 0x7198, 0x6855, 0xeb15, 0x69e9, 0x36c8, 0xeb18, 0xeb19, + 0xeb1a, 0xeb1b, 0xeb1c, 0xeb1d, 0x82fd, 0xeb1f, 0xeb20, 0xeb21, + 0x89a5, 0xeb23, 0x8fa0, 0xeb25, 0x97b8, 0xeb27, 0x9847, 0x9abd, + 0xeb2a, 0xeb2b, 0xeb2c, 0xeb2d, 0xeb2e, 0xeb2f, 0xeb30, 0xeb31, + 0xeb32, 0xeb33, 0xeb34, 0xeb35, 0xeb36, 0xeb37, 0xeb38, 0xeb39, + 0x5fb1, 0x6648, 0x66bf, 0xeb3d, 0xeb3e, 0xeb3f, 0x7201, 0xeb41, + 0x77d7, 0xeb43, 0xeb44, 0x7e87, 0xeb46, 0x58b5, 0x670e, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6918, 0xeb4a, 0xeb4b, 0xeb4c, 0xeb4d, 0xeb4e, 0xeb4f, + 0xeb50, 0x48d0, 0x4ab8, 0xeb53, 0xeb54, 0xeb55, 0xeb56, 0xeb57, + 0xeb58, 0xeb59, 0xeb5a, 0xeb5b, 0x51d2, 0xeb5d, 0x599f, 0xeb5f, + 0x3bbe, 0xeb61, 0xeb62, 0xeb63, 0x5788, 0xeb65, 0x399b, 0xeb67, + 0xeb68, 0xeb69, 0x3762, 0xeb6b, 0x8b5e, 0xeb6d, 0x99d6, 0xeb6f, + 0xeb70, 0xeb71, 0x7209, 0xeb73, 0xeb74, 0x5965, 0xeb76, 0xeb77, + 0xeb78, 0x8eda, 0xeb7a, 0x528f, 0x573f, 0x7171, 0xeb7e, 0xeb7f, + 0xeb80, 0xeb81, 0x55bc, 0xeb83, 0xeb84, 0xeb85, 0x91d4, 0x3473, + 0xeb88, 0xeb89, 0xeb8a, 0x4718, 0xeb8c, 0xeb8d, 0xeb8e, 0xeb8f, + 0xeb90, 0x5066, 0x34fb, 0xeb93, 0x60de, 0xeb95, 0x477c, 0xeb97, + 0xeb98, 0xeb99, 0xeb9a, 0xeb9b, 0x57a1, 0x7151, 0x6fb6, 0xeb9f, + 0xeba0, 0x9056, 0xeba2, 0xeba3, 0x8b62, 0xeba5, 0xeba6, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5d5b, 0xeba8, 0x8f36, 0xebaa, 0xebab, 0x8aea, 0xebad, 0xebae, + 0xebaf, 0xebb0, 0x4bc0, 0xebb2, 0xebb3, 0xebb4, 0x9465, 0xebb6, + 0x6195, 0x5a27, 0xebb9, 0x4fbb, 0x56b9, 0xebbc, 0xebbd, 0x4e6a, + 0xebbf, 0x9656, 0x6d8f, 0xebc2, 0x3618, 0x8977, 0xebc5, 0xebc6, + 0xebc7, 0xebc8, 0x71df, 0xebca, 0x7b42, 0xebcc, 0xebcd, 0xebce, + 0x9104, 0xebd0, 0x7a45, 0x9df0, 0xebd3, 0x9a26, 0xebd5, 0x365f, + 0xebd7, 0xebd8, 0x7983, 0xebda, 0xebdb, 0x5d2c, 0xebdd, 0x83cf, + 0xebdf, 0x46d0, 0xebe1, 0x753b, 0x8865, 0xebe4, 0x58b6, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x371c, 0xebe7, 0xebe8, 0xebe9, 0x3c54, 0xebeb, 0xebec, + 0x9281, 0xebee, 0xebef, 0x9330, 0xebf1, 0xebf2, 0x6c39, 0x949f, + 0xebf5, 0xebf6, 0x8827, 0x88f5, 0xebf9, 0xebfa, 0xebfb, 0x6eb8, + 0xebfd, 0xebfe, 0x39a4, 0x36b9, 0x5c10, 0x79e3, 0x453f, 0x66b6, + 0xec05, 0xec06, 0x8943, 0xec08, 0xec09, 0x56d6, 0x40df, 0xec0c, + 0x39a1, 0xec0e, 0xec0f, 0xec10, 0x71ad, 0x8366, 0xec13, 0xec14, + 0x5a67, 0x4cb7, 0xec17, 0xec18, 0xec19, 0xec1a, 0xec1b, 0xec1c, + 0xec1d, 0x7b43, 0x797e, 0xec20, 0x6fb5, 0xec22, 0x6a03, 0xec24, + 0x53a2, 0xec26, 0x93bf, 0x6836, 0x975d, 0xec2a, 0xec2b, 0xec2c, + 0xec2d, 0xec2e, 0xec2f, 0x5d85, 0xec31, 0xec32, 0x5715, 0x9823, + 0xec35, 0x5dab, 0xec37, 0x65be, 0x69d5, 0x53d2, 0xec3b, 0xec3c, + 0x3c11, 0x6736, 0xec3f, 0xec40, 0xec41, 0xec42, 0xec43, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xec44, 0xec45, 0xec46, 0xec47, 0xec48, 0xec49, 0x35ca, 0xec4b, + 0xec4c, 0x48fa, 0x63e6, 0xec4f, 0x7808, 0x9255, 0xec52, 0x43f2, + 0xec54, 0x43df, 0xec56, 0xec57, 0xec58, 0x59f8, 0xec5a, 0x8f0b, + 0xec5c, 0xec5d, 0x7b51, 0xec5f, 0xec60, 0x3df7, 0xec62, 0xec63, + 0x8fd0, 0x728f, 0x568b, 0xec67, 0xec68, 0xec69, 0xec6a, 0xec6b, + 0xec6c, 0xec6d, 0xec6e, 0xec6f, 0xec70, 0xec71, 0xec72, 0xec73, + 0x7e9f, 0xec75, 0xec76, 0x4ca4, 0x9547, 0xec79, 0x71a2, 0xec7b, + 0x4d91, 0x9012, 0xec7e, 0x4d9c, 0xec80, 0x8fbe, 0x55c1, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8fba, 0xec84, 0x8fb9, 0xec86, 0x4509, 0x7e7f, 0x6f56, + 0x6ab1, 0x4eea, 0x34e4, 0xec8d, 0xec8e, 0x373a, 0x8e80, 0xec91, + 0xec92, 0xec93, 0xec94, 0xec95, 0xec96, 0x3deb, 0xec98, 0xec99, + 0xec9a, 0xec9b, 0x4e9a, 0xec9d, 0xec9e, 0x56bf, 0xeca0, 0x8e0e, + 0x5b6d, 0xeca3, 0xeca4, 0x63de, 0x62d0, 0xeca7, 0xeca8, 0x6530, + 0x562d, 0xecab, 0x541a, 0xecad, 0x3dc6, 0xecaf, 0x4c7d, 0x5622, + 0x561e, 0x7f49, 0xecb4, 0x5975, 0xecb6, 0x8770, 0x4e1c, 0xecb9, + 0xecba, 0xecbb, 0x8117, 0x9d5e, 0x8d18, 0x763b, 0x9c45, 0x764e, + 0x77b9, 0x9345, 0x5432, 0x8148, 0x82f7, 0x5625, 0x8132, 0x8418, + 0x80bd, 0x55ea, 0x7962, 0x5643, 0x5416, 0xeccf, 0x35ce, 0x5605, + 0x55f1, 0x66f1, 0xecd4, 0x362d, 0x7534, 0x55f0, 0x55ba, 0x5497, + 0x5572, 0xecdb, 0xecdc, 0x5ed0, 0xecde, 0xecdf, 0xece0, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xece1, 0x9eab, 0x7d5a, 0x55de, 0xece5, 0x629d, 0x976d, 0x5494, + 0x8ccd, 0x71f6, 0x9176, 0x63fc, 0x63b9, 0x63fe, 0x5569, 0xecf0, + 0x9c72, 0xecf2, 0x519a, 0x34df, 0xecf5, 0x51a7, 0x544d, 0x551e, + 0x5513, 0x7666, 0x8e2d, 0xecfc, 0x75b1, 0x80b6, 0x8804, 0x8786, + 0x88c7, 0x81b6, 0x841c, 0xed04, 0x44ec, 0x7304, 0xed07, 0x5b90, + 0x830b, 0xed0a, 0x567b, 0xed0c, 0xed0d, 0xed0e, 0xed0f, 0xed10, + 0xed11, 0x9170, 0xed13, 0x9208, 0xed15, 0xed16, 0xed17, 0xed18, + 0x7266, 0xed1a, 0x474e, 0xed1c, 0xed1d, 0xed1e, 0x40fa, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x9c5d, 0x651f, 0xed22, 0x48f3, 0xed24, 0xed25, 0xed26, + 0xed27, 0x6062, 0xed29, 0xed2a, 0xed2b, 0xed2c, 0xed2d, 0x71a3, + 0x7e8e, 0x9d50, 0x4e1a, 0x4e04, 0x3577, 0x5b0d, 0x6cb2, 0x5367, + 0x36ac, 0x39dc, 0x537d, 0x36a5, 0xed3b, 0x589a, 0xed3d, 0x822d, + 0x544b, 0x57aa, 0xed41, 0xed42, 0xed43, 0x3a52, 0xed45, 0x7374, + 0xed47, 0x4d09, 0x9bed, 0xed4a, 0xed4b, 0x4c5b, 0xed4d, 0xed4e, + 0xed4f, 0x845c, 0xed51, 0xed52, 0xed53, 0xed54, 0x632e, 0x7d25, + 0xed57, 0xed58, 0x3a2a, 0x9008, 0x52cc, 0x3e74, 0x367a, 0x45e9, + 0xed5f, 0x7640, 0x5af0, 0xed62, 0x787a, 0x47b6, 0x58a7, 0x40bf, + 0x567c, 0x9b8b, 0x5d74, 0x7654, 0xed6b, 0x9e85, 0x4ce1, 0x75f9, + 0x37fb, 0x6119, 0xed71, 0xed72, 0xed73, 0x565d, 0xed75, 0x57a7, + 0xed77, 0xed78, 0x5234, 0xed7a, 0x35ad, 0x6c4a, 0x9d7c, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x7c56, 0x9b39, 0x57de, 0xed81, 0x5c53, 0x64d3, 0xed84, 0xed85, + 0xed86, 0x86ad, 0xed88, 0xed89, 0xed8a, 0xed8b, 0xed8c, 0x51fe, + 0xed8e, 0x5d8e, 0x9703, 0xed91, 0x9e81, 0x904c, 0x7b1f, 0x9b02, + 0x5cd1, 0x7ba3, 0x6268, 0x6335, 0x9aff, 0x7bcf, 0x9b2a, 0x7c7e, + 0x9b2e, 0x7c42, 0x7c86, 0x9c15, 0x7bfc, 0x9b09, 0x9f17, 0x9c1b, + 0xeda6, 0x9f5a, 0x5573, 0x5bc3, 0x4ffd, 0x9e98, 0x4ff2, 0x5260, + 0x3e06, 0x52d1, 0x5767, 0x5056, 0x59b7, 0x5e12, 0x97c8, 0x9dab, + 0x8f5c, 0x5469, 0x97b4, 0x9940, 0x97ba, 0x532c, 0x6130, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x692c, 0x53da, 0x9c0a, 0x9d02, 0x4c3b, 0x9641, 0x6980, + 0x50a6, 0x7546, 0xedc6, 0x99da, 0x5273, 0xedc9, 0x9159, 0x9681, + 0x915c, 0xedcd, 0x9151, 0xedcf, 0x637f, 0xedd1, 0x6aca, 0x5611, + 0x918e, 0x757a, 0x6285, 0xedd7, 0x734f, 0x7c70, 0xedda, 0xeddb, + 0xeddc, 0xeddd, 0x76d6, 0x9b9d, 0x4e2a, 0xede1, 0x83be, 0x8842, + 0xede4, 0x5c4a, 0x69c0, 0x50ed, 0x577a, 0x521f, 0x5df5, 0x4ece, + 0x6c31, 0xeded, 0x4f39, 0x549c, 0x54da, 0x529a, 0x8d82, 0x35fe, + 0x5f0c, 0x35f3, 0xedf6, 0x6b52, 0x917c, 0x9fa5, 0x9b97, 0x982e, + 0x98b4, 0x9aba, 0x9ea8, 0x9e84, 0x717a, 0x7b14, 0xee02, 0x6bfa, + 0x8818, 0x7f78, 0xee06, 0x5620, 0xee08, 0x8e77, 0x9f53, 0xee0b, + 0x8dd4, 0x8e4f, 0x9e1c, 0x8e01, 0x6282, 0xee11, 0x8e28, 0x8e75, + 0x7ad3, 0xee15, 0x7a3e, 0x78d8, 0x6cea, 0x8a67, 0x7607, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xee1b, 0x9f26, 0x6cce, 0x87d6, 0x75c3, 0xee20, 0x7853, 0xee22, + 0x8d0c, 0x72e2, 0x7371, 0x8b2d, 0x7302, 0x74f1, 0x8ceb, 0xee2a, + 0x862f, 0x5fba, 0x88a0, 0x44b7, 0xee2f, 0xee30, 0xee31, 0xee32, + 0x8a7e, 0xee34, 0xee35, 0x60fd, 0x7667, 0x9ad7, 0x9d44, 0x936e, + 0x9b8f, 0x87f5, 0xee3d, 0x880f, 0x8cf7, 0x732c, 0x9721, 0x9bb0, + 0x35d6, 0x72b2, 0x4c07, 0x7c51, 0x994a, 0xee48, 0x6159, 0x4c04, + 0x9e96, 0x617d, 0xee4d, 0x575f, 0x616f, 0x62a6, 0x6239, 0x62ce, + 0x3a5c, 0x61e2, 0x53aa, 0xee56, 0x6364, 0x6802, 0x35d2, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5d57, 0xee5b, 0x8fda, 0xee5d, 0xee5e, 0x50d9, 0xee60, + 0x7906, 0x5332, 0x9638, 0xee64, 0x4065, 0xee66, 0x77fe, 0xee68, + 0x7cc2, 0xee6a, 0x7cda, 0x7a2d, 0x8066, 0x8063, 0x7d4d, 0x7505, + 0x74f2, 0x8994, 0x821a, 0x670c, 0x8062, 0xee76, 0x805b, 0x74f0, + 0x8103, 0x7724, 0x8989, 0xee7c, 0x7553, 0xee7e, 0x87a9, 0x87ce, + 0x81c8, 0x878c, 0x8a49, 0x8cad, 0x8b43, 0x772b, 0x74f8, 0x84da, + 0x3635, 0x69b2, 0x8da6, 0xee8c, 0x89a9, 0x7468, 0x6db9, 0x87c1, + 0xee91, 0x74e7, 0x3ddb, 0x7176, 0x60a4, 0x619c, 0x3cd1, 0x7162, + 0x6077, 0xee9a, 0x7f71, 0xee9c, 0x7250, 0x60e9, 0x4b7e, 0x5220, + 0x3c18, 0xeea2, 0xeea3, 0xeea4, 0xeea5, 0xeea6, 0xeea7, 0xeea8, + 0xeea9, 0xeeaa, 0x5cc1, 0xeeac, 0xeead, 0xeeae, 0xeeaf, 0xeeb0, + 0xeeb1, 0x4562, 0x5b1f, 0xeeb4, 0x9f50, 0x9ea6, 0xeeb7, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3000, 0xff0c, 0x3001, 0x3002, 0xff0e, 0x2027, 0xff1b, 0xff1a, + 0xff1f, 0xff01, 0xfe30, 0x2026, 0x2025, 0xfe50, 0xfe51, 0xfe52, + 0x00b7, 0xfe54, 0xfe55, 0xfe56, 0xfe57, 0xff5c, 0x2013, 0xfe31, + 0x2014, 0xfe33, 0x2574, 0xfe34, 0xfe4f, 0xff08, 0xff09, 0xfe35, + 0xfe36, 0xff5b, 0xff5d, 0xfe37, 0xfe38, 0x3014, 0x3015, 0xfe39, + 0xfe3a, 0x3010, 0x3011, 0xfe3b, 0xfe3c, 0x300a, 0x300b, 0xfe3d, + 0xfe3e, 0x3008, 0x3009, 0xfe3f, 0xfe40, 0x300c, 0x300d, 0xfe41, + 0xfe42, 0x300e, 0x300f, 0xfe43, 0xfe44, 0xfe59, 0xfe5a, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xfe5b, 0xfe5c, 0xfe5d, 0xfe5e, 0x2018, 0x2019, 0x201c, + 0x201d, 0x301d, 0x301e, 0x2035, 0x2032, 0xff03, 0xff06, 0xff0a, + 0x203b, 0x00a7, 0x3003, 0x25cb, 0x25cf, 0x25b3, 0x25b2, 0x25ce, + 0x2606, 0x2605, 0x25c7, 0x25c6, 0x25a1, 0x25a0, 0x25bd, 0x25bc, + 0x32a3, 0x2105, 0x00af, 0xffe3, 0xff3f, 0x02cd, 0xfe49, 0xfe4a, + 0xfe4d, 0xfe4e, 0xfe4b, 0xfe4c, 0xfe5f, 0xfe60, 0xfe61, 0xff0b, + 0xff0d, 0x00d7, 0x00f7, 0x00b1, 0x221a, 0xff1c, 0xff1e, 0xff1d, + 0x2266, 0x2267, 0x2260, 0x221e, 0x2252, 0x2261, 0xfe62, 0xfe63, + 0xfe64, 0xfe65, 0xfe66, 0xff5e, 0x2229, 0x222a, 0x22a5, 0x2220, + 0x221f, 0x22bf, 0x33d2, 0x33d1, 0x222b, 0x222e, 0x2235, 0x2234, + 0x2640, 0x2642, 0x2295, 0x2299, 0x2191, 0x2193, 0x2190, 0x2192, + 0x2196, 0x2197, 0x2199, 0x2198, 0x2225, 0x2223, 0xff0f, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xff3c, 0x2215, 0xfe68, 0xff04, 0xffe5, 0x3012, 0xffe0, 0xffe1, + 0xff05, 0xff20, 0x2103, 0x2109, 0xfe69, 0xfe6a, 0xfe6b, 0x33d5, + 0x339c, 0x339d, 0x339e, 0x33ce, 0x33a1, 0x338e, 0x338f, 0x33c4, + 0x00b0, 0x5159, 0x515b, 0x515e, 0x515d, 0x5161, 0x5163, 0x55e7, + 0x74e9, 0x7cce, 0x2581, 0x2582, 0x2583, 0x2584, 0x2585, 0x2586, + 0x2587, 0x2588, 0x258f, 0x258e, 0x258d, 0x258c, 0x258b, 0x258a, + 0x2589, 0x253c, 0x2534, 0x252c, 0x2524, 0x251c, 0x2594, 0x2500, + 0x2502, 0x2595, 0x250c, 0x2510, 0x2514, 0x2518, 0x256d, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x256e, 0x2570, 0x256f, 0x2550, 0x255e, 0x256a, 0x2561, + 0x25e2, 0x25e3, 0x25e5, 0x25e4, 0x2571, 0x2572, 0x2573, 0xff10, + 0xff11, 0xff12, 0xff13, 0xff14, 0xff15, 0xff16, 0xff17, 0xff18, + 0xff19, 0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, + 0x2167, 0x2168, 0x2169, 0x3021, 0x3022, 0x3023, 0x3024, 0x3025, + 0x3026, 0x3027, 0x3028, 0x3029, 0x5341, 0x5344, 0x5345, 0xff21, + 0xff22, 0xff23, 0xff24, 0xff25, 0xff26, 0xff27, 0xff28, 0xff29, + 0xff2a, 0xff2b, 0xff2c, 0xff2d, 0xff2e, 0xff2f, 0xff30, 0xff31, + 0xff32, 0xff33, 0xff34, 0xff35, 0xff36, 0xff37, 0xff38, 0xff39, + 0xff3a, 0xff41, 0xff42, 0xff43, 0xff44, 0xff45, 0xff46, 0xff47, + 0xff48, 0xff49, 0xff4a, 0xff4b, 0xff4c, 0xff4d, 0xff4e, 0xff4f, + 0xff50, 0xff51, 0xff52, 0xff53, 0xff54, 0xff55, 0xff56, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xff57, 0xff58, 0xff59, 0xff5a, 0x0391, 0x0392, 0x0393, 0x0394, + 0x0395, 0x0396, 0x0397, 0x0398, 0x0399, 0x039a, 0x039b, 0x039c, + 0x039d, 0x039e, 0x039f, 0x03a0, 0x03a1, 0x03a3, 0x03a4, 0x03a5, + 0x03a6, 0x03a7, 0x03a8, 0x03a9, 0x03b1, 0x03b2, 0x03b3, 0x03b4, + 0x03b5, 0x03b6, 0x03b7, 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, + 0x03bd, 0x03be, 0x03bf, 0x03c0, 0x03c1, 0x03c3, 0x03c4, 0x03c5, + 0x03c6, 0x03c7, 0x03c8, 0x03c9, 0x3105, 0x3106, 0x3107, 0x3108, + 0x3109, 0x310a, 0x310b, 0x310c, 0x310d, 0x310e, 0x310f, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x3110, 0x3111, 0x3112, 0x3113, 0x3114, 0x3115, 0x3116, + 0x3117, 0x3118, 0x3119, 0x311a, 0x311b, 0x311c, 0x311d, 0x311e, + 0x311f, 0x3120, 0x3121, 0x3122, 0x3123, 0x3124, 0x3125, 0x3126, + 0x3127, 0x3128, 0x3129, 0x02d9, 0x02c9, 0x02ca, 0x02c7, 0x02cb, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4e00, 0x4e59, 0x4e01, 0x4e03, 0x4e43, 0x4e5d, 0x4e86, 0x4e8c, + 0x4eba, 0x513f, 0x5165, 0x516b, 0x51e0, 0x5200, 0x5201, 0x529b, + 0x5315, 0x5341, 0x535c, 0x53c8, 0x4e09, 0x4e0b, 0x4e08, 0x4e0a, + 0x4e2b, 0x4e38, 0x51e1, 0x4e45, 0x4e48, 0x4e5f, 0x4e5e, 0x4e8e, + 0x4ea1, 0x5140, 0x5203, 0x52fa, 0x5343, 0x53c9, 0x53e3, 0x571f, + 0x58eb, 0x5915, 0x5927, 0x5973, 0x5b50, 0x5b51, 0x5b53, 0x5bf8, + 0x5c0f, 0x5c22, 0x5c38, 0x5c71, 0x5ddd, 0x5de5, 0x5df1, 0x5df2, + 0x5df3, 0x5dfe, 0x5e72, 0x5efe, 0x5f0b, 0x5f13, 0x624d, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x4e11, 0x4e10, 0x4e0d, 0x4e2d, 0x4e30, 0x4e39, 0x4e4b, + 0x5c39, 0x4e88, 0x4e91, 0x4e95, 0x4e92, 0x4e94, 0x4ea2, 0x4ec1, + 0x4ec0, 0x4ec3, 0x4ec6, 0x4ec7, 0x4ecd, 0x4eca, 0x4ecb, 0x4ec4, + 0x5143, 0x5141, 0x5167, 0x516d, 0x516e, 0x516c, 0x5197, 0x51f6, + 0x5206, 0x5207, 0x5208, 0x52fb, 0x52fe, 0x52ff, 0x5316, 0x5339, + 0x5348, 0x5347, 0x5345, 0x535e, 0x5384, 0x53cb, 0x53ca, 0x53cd, + 0x58ec, 0x5929, 0x592b, 0x592a, 0x592d, 0x5b54, 0x5c11, 0x5c24, + 0x5c3a, 0x5c6f, 0x5df4, 0x5e7b, 0x5eff, 0x5f14, 0x5f15, 0x5fc3, + 0x6208, 0x6236, 0x624b, 0x624e, 0x652f, 0x6587, 0x6597, 0x65a4, + 0x65b9, 0x65e5, 0x66f0, 0x6708, 0x6728, 0x6b20, 0x6b62, 0x6b79, + 0x6bcb, 0x6bd4, 0x6bdb, 0x6c0f, 0x6c34, 0x706b, 0x722a, 0x7236, + 0x723b, 0x7247, 0x7259, 0x725b, 0x72ac, 0x738b, 0x4e19, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4e16, 0x4e15, 0x4e14, 0x4e18, 0x4e3b, 0x4e4d, 0x4e4f, 0x4e4e, + 0x4ee5, 0x4ed8, 0x4ed4, 0x4ed5, 0x4ed6, 0x4ed7, 0x4ee3, 0x4ee4, + 0x4ed9, 0x4ede, 0x5145, 0x5144, 0x5189, 0x518a, 0x51ac, 0x51f9, + 0x51fa, 0x51f8, 0x520a, 0x52a0, 0x529f, 0x5305, 0x5306, 0x5317, + 0x531d, 0x4edf, 0x534a, 0x5349, 0x5361, 0x5360, 0x536f, 0x536e, + 0x53bb, 0x53ef, 0x53e4, 0x53f3, 0x53ec, 0x53ee, 0x53e9, 0x53e8, + 0x53fc, 0x53f8, 0x53f5, 0x53eb, 0x53e6, 0x53ea, 0x53f2, 0x53f1, + 0x53f0, 0x53e5, 0x53ed, 0x53fb, 0x56db, 0x56da, 0x5916, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x592e, 0x5931, 0x5974, 0x5976, 0x5b55, 0x5b83, 0x5c3c, + 0x5de8, 0x5de7, 0x5de6, 0x5e02, 0x5e03, 0x5e73, 0x5e7c, 0x5f01, + 0x5f18, 0x5f17, 0x5fc5, 0x620a, 0x6253, 0x6254, 0x6252, 0x6251, + 0x65a5, 0x65e6, 0x672e, 0x672c, 0x672a, 0x672b, 0x672d, 0x6b63, + 0x6bcd, 0x6c11, 0x6c10, 0x6c38, 0x6c41, 0x6c40, 0x6c3e, 0x72af, + 0x7384, 0x7389, 0x74dc, 0x74e6, 0x7518, 0x751f, 0x7528, 0x7529, + 0x7530, 0x7531, 0x7532, 0x7533, 0x758b, 0x767d, 0x76ae, 0x76bf, + 0x76ee, 0x77db, 0x77e2, 0x77f3, 0x793a, 0x79be, 0x7a74, 0x7acb, + 0x4e1e, 0x4e1f, 0x4e52, 0x4e53, 0x4e69, 0x4e99, 0x4ea4, 0x4ea6, + 0x4ea5, 0x4eff, 0x4f09, 0x4f19, 0x4f0a, 0x4f15, 0x4f0d, 0x4f10, + 0x4f11, 0x4f0f, 0x4ef2, 0x4ef6, 0x4efb, 0x4ef0, 0x4ef3, 0x4efd, + 0x4f01, 0x4f0b, 0x5149, 0x5147, 0x5146, 0x5148, 0x5168, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5171, 0x518d, 0x51b0, 0x5217, 0x5211, 0x5212, 0x520e, 0x5216, + 0x52a3, 0x5308, 0x5321, 0x5320, 0x5370, 0x5371, 0x5409, 0x540f, + 0x540c, 0x540a, 0x5410, 0x5401, 0x540b, 0x5404, 0x5411, 0x540d, + 0x5408, 0x5403, 0x540e, 0x5406, 0x5412, 0x56e0, 0x56de, 0x56dd, + 0x5733, 0x5730, 0x5728, 0x572d, 0x572c, 0x572f, 0x5729, 0x5919, + 0x591a, 0x5937, 0x5938, 0x5984, 0x5978, 0x5983, 0x597d, 0x5979, + 0x5982, 0x5981, 0x5b57, 0x5b58, 0x5b87, 0x5b88, 0x5b85, 0x5b89, + 0x5bfa, 0x5c16, 0x5c79, 0x5dde, 0x5e06, 0x5e76, 0x5e74, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5f0f, 0x5f1b, 0x5fd9, 0x5fd6, 0x620e, 0x620c, 0x620d, + 0x6210, 0x6263, 0x625b, 0x6258, 0x6536, 0x65e9, 0x65e8, 0x65ec, + 0x65ed, 0x66f2, 0x66f3, 0x6709, 0x673d, 0x6734, 0x6731, 0x6735, + 0x6b21, 0x6b64, 0x6b7b, 0x6c16, 0x6c5d, 0x6c57, 0x6c59, 0x6c5f, + 0x6c60, 0x6c50, 0x6c55, 0x6c61, 0x6c5b, 0x6c4d, 0x6c4e, 0x7070, + 0x725f, 0x725d, 0x767e, 0x7af9, 0x7c73, 0x7cf8, 0x7f36, 0x7f8a, + 0x7fbd, 0x8001, 0x8003, 0x800c, 0x8012, 0x8033, 0x807f, 0x8089, + 0x808b, 0x808c, 0x81e3, 0x81ea, 0x81f3, 0x81fc, 0x820c, 0x821b, + 0x821f, 0x826e, 0x8272, 0x827e, 0x866b, 0x8840, 0x884c, 0x8863, + 0x897f, 0x9621, 0x4e32, 0x4ea8, 0x4f4d, 0x4f4f, 0x4f47, 0x4f57, + 0x4f5e, 0x4f34, 0x4f5b, 0x4f55, 0x4f30, 0x4f50, 0x4f51, 0x4f3d, + 0x4f3a, 0x4f38, 0x4f43, 0x4f54, 0x4f3c, 0x4f46, 0x4f63, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4f5c, 0x4f60, 0x4f2f, 0x4f4e, 0x4f36, 0x4f59, 0x4f5d, 0x4f48, + 0x4f5a, 0x514c, 0x514b, 0x514d, 0x5175, 0x51b6, 0x51b7, 0x5225, + 0x5224, 0x5229, 0x522a, 0x5228, 0x52ab, 0x52a9, 0x52aa, 0x52ac, + 0x5323, 0x5373, 0x5375, 0x541d, 0x542d, 0x541e, 0x543e, 0x5426, + 0x544e, 0x5427, 0x5446, 0x5443, 0x5433, 0x5448, 0x5442, 0x541b, + 0x5429, 0x544a, 0x5439, 0x543b, 0x5438, 0x542e, 0x5435, 0x5436, + 0x5420, 0x543c, 0x5440, 0x5431, 0x542b, 0x541f, 0x542c, 0x56ea, + 0x56f0, 0x56e4, 0x56eb, 0x574a, 0x5751, 0x5740, 0x574d, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5747, 0x574e, 0x573e, 0x5750, 0x574f, 0x573b, 0x58ef, + 0x593e, 0x599d, 0x5992, 0x59a8, 0x599e, 0x59a3, 0x5999, 0x5996, + 0x598d, 0x59a4, 0x5993, 0x598a, 0x59a5, 0x5b5d, 0x5b5c, 0x5b5a, + 0x5b5b, 0x5b8c, 0x5b8b, 0x5b8f, 0x5c2c, 0x5c40, 0x5c41, 0x5c3f, + 0x5c3e, 0x5c90, 0x5c91, 0x5c94, 0x5c8c, 0x5deb, 0x5e0c, 0x5e8f, + 0x5e87, 0x5e8a, 0x5ef7, 0x5f04, 0x5f1f, 0x5f64, 0x5f62, 0x5f77, + 0x5f79, 0x5fd8, 0x5fcc, 0x5fd7, 0x5fcd, 0x5ff1, 0x5feb, 0x5ff8, + 0x5fea, 0x6212, 0x6211, 0x6284, 0x6297, 0x6296, 0x6280, 0x6276, + 0x6289, 0x626d, 0x628a, 0x627c, 0x627e, 0x6279, 0x6273, 0x6292, + 0x626f, 0x6298, 0x626e, 0x6295, 0x6293, 0x6291, 0x6286, 0x6539, + 0x653b, 0x6538, 0x65f1, 0x66f4, 0x675f, 0x674e, 0x674f, 0x6750, + 0x6751, 0x675c, 0x6756, 0x675e, 0x6749, 0x6746, 0x6760, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6753, 0x6757, 0x6b65, 0x6bcf, 0x6c42, 0x6c5e, 0x6c99, 0x6c81, + 0x6c88, 0x6c89, 0x6c85, 0x6c9b, 0x6c6a, 0x6c7a, 0x6c90, 0x6c70, + 0x6c8c, 0x6c68, 0x6c96, 0x6c92, 0x6c7d, 0x6c83, 0x6c72, 0x6c7e, + 0x6c74, 0x6c86, 0x6c76, 0x6c8d, 0x6c94, 0x6c98, 0x6c82, 0x7076, + 0x707c, 0x707d, 0x7078, 0x7262, 0x7261, 0x7260, 0x72c4, 0x72c2, + 0x7396, 0x752c, 0x752b, 0x7537, 0x7538, 0x7682, 0x76ef, 0x77e3, + 0x79c1, 0x79c0, 0x79bf, 0x7a76, 0x7cfb, 0x7f55, 0x8096, 0x8093, + 0x809d, 0x8098, 0x809b, 0x809a, 0x80b2, 0x826f, 0x8292, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x828b, 0x828d, 0x898b, 0x89d2, 0x8a00, 0x8c37, 0x8c46, + 0x8c55, 0x8c9d, 0x8d64, 0x8d70, 0x8db3, 0x8eab, 0x8eca, 0x8f9b, + 0x8fb0, 0x8fc2, 0x8fc6, 0x8fc5, 0x8fc4, 0x5de1, 0x9091, 0x90a2, + 0x90aa, 0x90a6, 0x90a3, 0x9149, 0x91c6, 0x91cc, 0x9632, 0x962e, + 0x9631, 0x962a, 0x962c, 0x4e26, 0x4e56, 0x4e73, 0x4e8b, 0x4e9b, + 0x4e9e, 0x4eab, 0x4eac, 0x4f6f, 0x4f9d, 0x4f8d, 0x4f73, 0x4f7f, + 0x4f6c, 0x4f9b, 0x4f8b, 0x4f86, 0x4f83, 0x4f70, 0x4f75, 0x4f88, + 0x4f69, 0x4f7b, 0x4f96, 0x4f7e, 0x4f8f, 0x4f91, 0x4f7a, 0x5154, + 0x5152, 0x5155, 0x5169, 0x5177, 0x5176, 0x5178, 0x51bd, 0x51fd, + 0x523b, 0x5238, 0x5237, 0x523a, 0x5230, 0x522e, 0x5236, 0x5241, + 0x52be, 0x52bb, 0x5352, 0x5354, 0x5353, 0x5351, 0x5366, 0x5377, + 0x5378, 0x5379, 0x53d6, 0x53d4, 0x53d7, 0x5473, 0x5475, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5496, 0x5478, 0x5495, 0x5480, 0x547b, 0x5477, 0x5484, 0x5492, + 0x5486, 0x547c, 0x5490, 0x5471, 0x5476, 0x548c, 0x549a, 0x5462, + 0x5468, 0x548b, 0x547d, 0x548e, 0x56fa, 0x5783, 0x5777, 0x576a, + 0x5769, 0x5761, 0x5766, 0x5764, 0x577c, 0x591c, 0x5949, 0x5947, + 0x5948, 0x5944, 0x5954, 0x59be, 0x59bb, 0x59d4, 0x59b9, 0x59ae, + 0x59d1, 0x59c6, 0x59d0, 0x59cd, 0x59cb, 0x59d3, 0x59ca, 0x59af, + 0x59b3, 0x59d2, 0x59c5, 0x5b5f, 0x5b64, 0x5b63, 0x5b97, 0x5b9a, + 0x5b98, 0x5b9c, 0x5b99, 0x5b9b, 0x5c1a, 0x5c48, 0x5c45, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5c46, 0x5cb7, 0x5ca1, 0x5cb8, 0x5ca9, 0x5cab, 0x5cb1, + 0x5cb3, 0x5e18, 0x5e1a, 0x5e16, 0x5e15, 0x5e1b, 0x5e11, 0x5e78, + 0x5e9a, 0x5e97, 0x5e9c, 0x5e95, 0x5e96, 0x5ef6, 0x5f26, 0x5f27, + 0x5f29, 0x5f80, 0x5f81, 0x5f7f, 0x5f7c, 0x5fdd, 0x5fe0, 0x5ffd, + 0x5ff5, 0x5fff, 0x600f, 0x6014, 0x602f, 0x6035, 0x6016, 0x602a, + 0x6015, 0x6021, 0x6027, 0x6029, 0x602b, 0x601b, 0x6216, 0x6215, + 0x623f, 0x623e, 0x6240, 0x627f, 0x62c9, 0x62cc, 0x62c4, 0x62bf, + 0x62c2, 0x62b9, 0x62d2, 0x62db, 0x62ab, 0x62d3, 0x62d4, 0x62cb, + 0x62c8, 0x62a8, 0x62bd, 0x62bc, 0x62d0, 0x62d9, 0x62c7, 0x62cd, + 0x62b5, 0x62da, 0x62b1, 0x62d8, 0x62d6, 0x62d7, 0x62c6, 0x62ac, + 0x62ce, 0x653e, 0x65a7, 0x65bc, 0x65fa, 0x6614, 0x6613, 0x660c, + 0x6606, 0x6602, 0x660e, 0x6600, 0x660f, 0x6615, 0x660a, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6607, 0x670d, 0x670b, 0x676d, 0x678b, 0x6795, 0x6771, 0x679c, + 0x6773, 0x6777, 0x6787, 0x679d, 0x6797, 0x676f, 0x6770, 0x677f, + 0x6789, 0x677e, 0x6790, 0x6775, 0x679a, 0x6793, 0x677c, 0x676a, + 0x6772, 0x6b23, 0x6b66, 0x6b67, 0x6b7f, 0x6c13, 0x6c1b, 0x6ce3, + 0x6ce8, 0x6cf3, 0x6cb1, 0x6ccc, 0x6ce5, 0x6cb3, 0x6cbd, 0x6cbe, + 0x6cbc, 0x6ce2, 0x6cab, 0x6cd5, 0x6cd3, 0x6cb8, 0x6cc4, 0x6cb9, + 0x6cc1, 0x6cae, 0x6cd7, 0x6cc5, 0x6cf1, 0x6cbf, 0x6cbb, 0x6ce1, + 0x6cdb, 0x6cca, 0x6cac, 0x6cef, 0x6cdc, 0x6cd6, 0x6ce0, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7095, 0x708e, 0x7092, 0x708a, 0x7099, 0x722c, 0x722d, + 0x7238, 0x7248, 0x7267, 0x7269, 0x72c0, 0x72ce, 0x72d9, 0x72d7, + 0x72d0, 0x73a9, 0x73a8, 0x739f, 0x73ab, 0x73a5, 0x753d, 0x759d, + 0x7599, 0x759a, 0x7684, 0x76c2, 0x76f2, 0x76f4, 0x77e5, 0x77fd, + 0x793e, 0x7940, 0x7941, 0x79c9, 0x79c8, 0x7a7a, 0x7a79, 0x7afa, + 0x7cfe, 0x7f54, 0x7f8c, 0x7f8b, 0x8005, 0x80ba, 0x80a5, 0x80a2, + 0x80b1, 0x80a1, 0x80ab, 0x80a9, 0x80b4, 0x80aa, 0x80af, 0x81e5, + 0x81fe, 0x820d, 0x82b3, 0x829d, 0x8299, 0x82ad, 0x82bd, 0x829f, + 0x82b9, 0x82b1, 0x82ac, 0x82a5, 0x82af, 0x82b8, 0x82a3, 0x82b0, + 0x82be, 0x82b7, 0x864e, 0x8671, 0x521d, 0x8868, 0x8ecb, 0x8fce, + 0x8fd4, 0x8fd1, 0x90b5, 0x90b8, 0x90b1, 0x90b6, 0x91c7, 0x91d1, + 0x9577, 0x9580, 0x961c, 0x9640, 0x963f, 0x963b, 0x9644, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x9642, 0x96b9, 0x96e8, 0x9752, 0x975e, 0x4e9f, 0x4ead, 0x4eae, + 0x4fe1, 0x4fb5, 0x4faf, 0x4fbf, 0x4fe0, 0x4fd1, 0x4fcf, 0x4fdd, + 0x4fc3, 0x4fb6, 0x4fd8, 0x4fdf, 0x4fca, 0x4fd7, 0x4fae, 0x4fd0, + 0x4fc4, 0x4fc2, 0x4fda, 0x4fce, 0x4fde, 0x4fb7, 0x5157, 0x5192, + 0x5191, 0x51a0, 0x524e, 0x5243, 0x524a, 0x524d, 0x524c, 0x524b, + 0x5247, 0x52c7, 0x52c9, 0x52c3, 0x52c1, 0x530d, 0x5357, 0x537b, + 0x539a, 0x53db, 0x54ac, 0x54c0, 0x54a8, 0x54ce, 0x54c9, 0x54b8, + 0x54a6, 0x54b3, 0x54c7, 0x54c2, 0x54bd, 0x54aa, 0x54c1, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x54c4, 0x54c8, 0x54af, 0x54ab, 0x54b1, 0x54bb, 0x54a9, + 0x54a7, 0x54bf, 0x56ff, 0x5782, 0x578b, 0x57a0, 0x57a3, 0x57a2, + 0x57ce, 0x57ae, 0x5793, 0x5955, 0x5951, 0x594f, 0x594e, 0x5950, + 0x59dc, 0x59d8, 0x59ff, 0x59e3, 0x59e8, 0x5a03, 0x59e5, 0x59ea, + 0x59da, 0x59e6, 0x5a01, 0x59fb, 0x5b69, 0x5ba3, 0x5ba6, 0x5ba4, + 0x5ba2, 0x5ba5, 0x5c01, 0x5c4e, 0x5c4f, 0x5c4d, 0x5c4b, 0x5cd9, + 0x5cd2, 0x5df7, 0x5e1d, 0x5e25, 0x5e1f, 0x5e7d, 0x5ea0, 0x5ea6, + 0x5efa, 0x5f08, 0x5f2d, 0x5f65, 0x5f88, 0x5f85, 0x5f8a, 0x5f8b, + 0x5f87, 0x5f8c, 0x5f89, 0x6012, 0x601d, 0x6020, 0x6025, 0x600e, + 0x6028, 0x604d, 0x6070, 0x6068, 0x6062, 0x6046, 0x6043, 0x606c, + 0x606b, 0x606a, 0x6064, 0x6241, 0x62dc, 0x6316, 0x6309, 0x62fc, + 0x62ed, 0x6301, 0x62ee, 0x62fd, 0x6307, 0x62f1, 0x62f7, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x62ef, 0x62ec, 0x62fe, 0x62f4, 0x6311, 0x6302, 0x653f, 0x6545, + 0x65ab, 0x65bd, 0x65e2, 0x6625, 0x662d, 0x6620, 0x6627, 0x662f, + 0x661f, 0x6628, 0x6631, 0x6624, 0x66f7, 0x67ff, 0x67d3, 0x67f1, + 0x67d4, 0x67d0, 0x67ec, 0x67b6, 0x67af, 0x67f5, 0x67e9, 0x67ef, + 0x67c4, 0x67d1, 0x67b4, 0x67da, 0x67e5, 0x67b8, 0x67cf, 0x67de, + 0x67f3, 0x67b0, 0x67d9, 0x67e2, 0x67dd, 0x67d2, 0x6b6a, 0x6b83, + 0x6b86, 0x6bb5, 0x6bd2, 0x6bd7, 0x6c1f, 0x6cc9, 0x6d0b, 0x6d32, + 0x6d2a, 0x6d41, 0x6d25, 0x6d0c, 0x6d31, 0x6d1e, 0x6d17, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6d3b, 0x6d3d, 0x6d3e, 0x6d36, 0x6d1b, 0x6cf5, 0x6d39, + 0x6d27, 0x6d38, 0x6d29, 0x6d2e, 0x6d35, 0x6d0e, 0x6d2b, 0x70ab, + 0x70ba, 0x70b3, 0x70ac, 0x70af, 0x70ad, 0x70b8, 0x70ae, 0x70a4, + 0x7230, 0x7272, 0x726f, 0x7274, 0x72e9, 0x72e0, 0x72e1, 0x73b7, + 0x73ca, 0x73bb, 0x73b2, 0x73cd, 0x73c0, 0x73b3, 0x751a, 0x752d, + 0x754f, 0x754c, 0x754e, 0x754b, 0x75ab, 0x75a4, 0x75a5, 0x75a2, + 0x75a3, 0x7678, 0x7686, 0x7687, 0x7688, 0x76c8, 0x76c6, 0x76c3, + 0x76c5, 0x7701, 0x76f9, 0x76f8, 0x7709, 0x770b, 0x76fe, 0x76fc, + 0x7707, 0x77dc, 0x7802, 0x7814, 0x780c, 0x780d, 0x7946, 0x7949, + 0x7948, 0x7947, 0x79b9, 0x79ba, 0x79d1, 0x79d2, 0x79cb, 0x7a7f, + 0x7a81, 0x7aff, 0x7afd, 0x7c7d, 0x7d02, 0x7d05, 0x7d00, 0x7d09, + 0x7d07, 0x7d04, 0x7d06, 0x7f38, 0x7f8e, 0x7fbf, 0x8004, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8010, 0x800d, 0x8011, 0x8036, 0x80d6, 0x80e5, 0x80da, 0x80c3, + 0x80c4, 0x80cc, 0x80e1, 0x80db, 0x80ce, 0x80de, 0x80e4, 0x80dd, + 0x81f4, 0x8222, 0x82e7, 0x8303, 0x8305, 0x82e3, 0x82db, 0x82e6, + 0x8304, 0x82e5, 0x8302, 0x8309, 0x82d2, 0x82d7, 0x82f1, 0x8301, + 0x82dc, 0x82d4, 0x82d1, 0x82de, 0x82d3, 0x82df, 0x82ef, 0x8306, + 0x8650, 0x8679, 0x867b, 0x867a, 0x884d, 0x886b, 0x8981, 0x89d4, + 0x8a08, 0x8a02, 0x8a03, 0x8c9e, 0x8ca0, 0x8d74, 0x8d73, 0x8db4, + 0x8ecd, 0x8ecc, 0x8ff0, 0x8fe6, 0x8fe2, 0x8fea, 0x8fe5, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8fed, 0x8feb, 0x8fe4, 0x8fe8, 0x90ca, 0x90ce, 0x90c1, + 0x90c3, 0x914b, 0x914a, 0x91cd, 0x9582, 0x9650, 0x964b, 0x964c, + 0x964d, 0x9762, 0x9769, 0x97cb, 0x97ed, 0x97f3, 0x9801, 0x98a8, + 0x98db, 0x98df, 0x9996, 0x9999, 0x4e58, 0x4eb3, 0x500c, 0x500d, + 0x5023, 0x4fef, 0x5026, 0x5025, 0x4ff8, 0x5029, 0x5016, 0x5006, + 0x503c, 0x501f, 0x501a, 0x5012, 0x5011, 0x4ffa, 0x5000, 0x5014, + 0x5028, 0x4ff1, 0x5021, 0x500b, 0x5019, 0x5018, 0x4ff3, 0x4fee, + 0x502d, 0x502a, 0x4ffe, 0x502b, 0x5009, 0x517c, 0x51a4, 0x51a5, + 0x51a2, 0x51cd, 0x51cc, 0x51c6, 0x51cb, 0x5256, 0x525c, 0x5254, + 0x525b, 0x525d, 0x532a, 0x537f, 0x539f, 0x539d, 0x53df, 0x54e8, + 0x5510, 0x5501, 0x5537, 0x54fc, 0x54e5, 0x54f2, 0x5506, 0x54fa, + 0x5514, 0x54e9, 0x54ed, 0x54e1, 0x5509, 0x54ee, 0x54ea, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x54e6, 0x5527, 0x5507, 0x54fd, 0x550f, 0x5703, 0x5704, 0x57c2, + 0x57d4, 0x57cb, 0x57c3, 0x5809, 0x590f, 0x5957, 0x5958, 0x595a, + 0x5a11, 0x5a18, 0x5a1c, 0x5a1f, 0x5a1b, 0x5a13, 0x59ec, 0x5a20, + 0x5a23, 0x5a29, 0x5a25, 0x5a0c, 0x5a09, 0x5b6b, 0x5c58, 0x5bb0, + 0x5bb3, 0x5bb6, 0x5bb4, 0x5bae, 0x5bb5, 0x5bb9, 0x5bb8, 0x5c04, + 0x5c51, 0x5c55, 0x5c50, 0x5ced, 0x5cfd, 0x5cfb, 0x5cea, 0x5ce8, + 0x5cf0, 0x5cf6, 0x5d01, 0x5cf4, 0x5dee, 0x5e2d, 0x5e2b, 0x5eab, + 0x5ead, 0x5ea7, 0x5f31, 0x5f92, 0x5f91, 0x5f90, 0x6059, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6063, 0x6065, 0x6050, 0x6055, 0x606d, 0x6069, 0x606f, + 0x6084, 0x609f, 0x609a, 0x608d, 0x6094, 0x608c, 0x6085, 0x6096, + 0x6247, 0x62f3, 0x6308, 0x62ff, 0x634e, 0x633e, 0x632f, 0x6355, + 0x6342, 0x6346, 0x634f, 0x6349, 0x633a, 0x6350, 0x633d, 0x632a, + 0x632b, 0x6328, 0x634d, 0x634c, 0x6548, 0x6549, 0x6599, 0x65c1, + 0x65c5, 0x6642, 0x6649, 0x664f, 0x6643, 0x6652, 0x664c, 0x6645, + 0x6641, 0x66f8, 0x6714, 0x6715, 0x6717, 0x6821, 0x6838, 0x6848, + 0x6846, 0x6853, 0x6839, 0x6842, 0x6854, 0x6829, 0x68b3, 0x6817, + 0x684c, 0x6851, 0x683d, 0x67f4, 0x6850, 0x6840, 0x683c, 0x6843, + 0x682a, 0x6845, 0x6813, 0x6818, 0x6841, 0x6b8a, 0x6b89, 0x6bb7, + 0x6c23, 0x6c27, 0x6c28, 0x6c26, 0x6c24, 0x6cf0, 0x6d6a, 0x6d95, + 0x6d88, 0x6d87, 0x6d66, 0x6d78, 0x6d77, 0x6d59, 0x6d93, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6d6c, 0x6d89, 0x6d6e, 0x6d5a, 0x6d74, 0x6d69, 0x6d8c, 0x6d8a, + 0x6d79, 0x6d85, 0x6d65, 0x6d94, 0x70ca, 0x70d8, 0x70e4, 0x70d9, + 0x70c8, 0x70cf, 0x7239, 0x7279, 0x72fc, 0x72f9, 0x72fd, 0x72f8, + 0x72f7, 0x7386, 0x73ed, 0x7409, 0x73ee, 0x73e0, 0x73ea, 0x73de, + 0x7554, 0x755d, 0x755c, 0x755a, 0x7559, 0x75be, 0x75c5, 0x75c7, + 0x75b2, 0x75b3, 0x75bd, 0x75bc, 0x75b9, 0x75c2, 0x75b8, 0x768b, + 0x76b0, 0x76ca, 0x76cd, 0x76ce, 0x7729, 0x771f, 0x7720, 0x7728, + 0x77e9, 0x7830, 0x7827, 0x7838, 0x781d, 0x7834, 0x7837, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7825, 0x782d, 0x7820, 0x781f, 0x7832, 0x7955, 0x7950, + 0x7960, 0x795f, 0x7956, 0x795e, 0x795d, 0x7957, 0x795a, 0x79e4, + 0x79e3, 0x79e7, 0x79df, 0x79e6, 0x79e9, 0x79d8, 0x7a84, 0x7a88, + 0x7ad9, 0x7b06, 0x7b11, 0x7c89, 0x7d21, 0x7d17, 0x7d0b, 0x7d0a, + 0x7d20, 0x7d22, 0x7d14, 0x7d10, 0x7d15, 0x7d1a, 0x7d1c, 0x7d0d, + 0x7d19, 0x7d1b, 0x7f3a, 0x7f5f, 0x7f94, 0x7fc5, 0x7fc1, 0x8006, + 0x8018, 0x8015, 0x8019, 0x8017, 0x803d, 0x803f, 0x80f1, 0x8102, + 0x80f0, 0x8105, 0x80ed, 0x80f4, 0x8106, 0x80f8, 0x80f3, 0x8108, + 0x80fd, 0x810a, 0x80fc, 0x80ef, 0x81ed, 0x81ec, 0x8200, 0x8210, + 0x822a, 0x822b, 0x8228, 0x822c, 0x82bb, 0x832b, 0x8352, 0x8354, + 0x834a, 0x8338, 0x8350, 0x8349, 0x8335, 0x8334, 0x834f, 0x8332, + 0x8339, 0x8336, 0x8317, 0x8340, 0x8331, 0x8328, 0x8343, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8654, 0x868a, 0x86aa, 0x8693, 0x86a4, 0x86a9, 0x868c, 0x86a3, + 0x869c, 0x8870, 0x8877, 0x8881, 0x8882, 0x887d, 0x8879, 0x8a18, + 0x8a10, 0x8a0e, 0x8a0c, 0x8a15, 0x8a0a, 0x8a17, 0x8a13, 0x8a16, + 0x8a0f, 0x8a11, 0x8c48, 0x8c7a, 0x8c79, 0x8ca1, 0x8ca2, 0x8d77, + 0x8eac, 0x8ed2, 0x8ed4, 0x8ecf, 0x8fb1, 0x9001, 0x9006, 0x8ff7, + 0x9000, 0x8ffa, 0x8ff4, 0x9003, 0x8ffd, 0x9005, 0x8ff8, 0x9095, + 0x90e1, 0x90dd, 0x90e2, 0x9152, 0x914d, 0x914c, 0x91d8, 0x91dd, + 0x91d7, 0x91dc, 0x91d9, 0x9583, 0x9662, 0x9663, 0x9661, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x965b, 0x965d, 0x9664, 0x9658, 0x965e, 0x96bb, 0x98e2, + 0x99ac, 0x9aa8, 0x9ad8, 0x9b25, 0x9b32, 0x9b3c, 0x4e7e, 0x507a, + 0x507d, 0x505c, 0x5047, 0x5043, 0x504c, 0x505a, 0x5049, 0x5065, + 0x5076, 0x504e, 0x5055, 0x5075, 0x5074, 0x5077, 0x504f, 0x500f, + 0x506f, 0x506d, 0x515c, 0x5195, 0x51f0, 0x526a, 0x526f, 0x52d2, + 0x52d9, 0x52d8, 0x52d5, 0x5310, 0x530f, 0x5319, 0x533f, 0x5340, + 0x533e, 0x53c3, 0x66fc, 0x5546, 0x556a, 0x5566, 0x5544, 0x555e, + 0x5561, 0x5543, 0x554a, 0x5531, 0x5556, 0x554f, 0x5555, 0x552f, + 0x5564, 0x5538, 0x552e, 0x555c, 0x552c, 0x5563, 0x5533, 0x5541, + 0x5557, 0x5708, 0x570b, 0x5709, 0x57df, 0x5805, 0x580a, 0x5806, + 0x57e0, 0x57e4, 0x57fa, 0x5802, 0x5835, 0x57f7, 0x57f9, 0x5920, + 0x5962, 0x5a36, 0x5a41, 0x5a49, 0x5a66, 0x5a6a, 0x5a40, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5a3c, 0x5a62, 0x5a5a, 0x5a46, 0x5a4a, 0x5b70, 0x5bc7, 0x5bc5, + 0x5bc4, 0x5bc2, 0x5bbf, 0x5bc6, 0x5c09, 0x5c08, 0x5c07, 0x5c60, + 0x5c5c, 0x5c5d, 0x5d07, 0x5d06, 0x5d0e, 0x5d1b, 0x5d16, 0x5d22, + 0x5d11, 0x5d29, 0x5d14, 0x5d19, 0x5d24, 0x5d27, 0x5d17, 0x5de2, + 0x5e38, 0x5e36, 0x5e33, 0x5e37, 0x5eb7, 0x5eb8, 0x5eb6, 0x5eb5, + 0x5ebe, 0x5f35, 0x5f37, 0x5f57, 0x5f6c, 0x5f69, 0x5f6b, 0x5f97, + 0x5f99, 0x5f9e, 0x5f98, 0x5fa1, 0x5fa0, 0x5f9c, 0x607f, 0x60a3, + 0x6089, 0x60a0, 0x60a8, 0x60cb, 0x60b4, 0x60e6, 0x60bd, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x60c5, 0x60bb, 0x60b5, 0x60dc, 0x60bc, 0x60d8, 0x60d5, + 0x60c6, 0x60df, 0x60b8, 0x60da, 0x60c7, 0x621a, 0x621b, 0x6248, + 0x63a0, 0x63a7, 0x6372, 0x6396, 0x63a2, 0x63a5, 0x6377, 0x6367, + 0x6398, 0x63aa, 0x6371, 0x63a9, 0x6389, 0x6383, 0x639b, 0x636b, + 0x63a8, 0x6384, 0x6388, 0x6399, 0x63a1, 0x63ac, 0x6392, 0x638f, + 0x6380, 0x637b, 0x6369, 0x6368, 0x637a, 0x655d, 0x6556, 0x6551, + 0x6559, 0x6557, 0x555f, 0x654f, 0x6558, 0x6555, 0x6554, 0x659c, + 0x659b, 0x65ac, 0x65cf, 0x65cb, 0x65cc, 0x65ce, 0x665d, 0x665a, + 0x6664, 0x6668, 0x6666, 0x665e, 0x66f9, 0x52d7, 0x671b, 0x6881, + 0x68af, 0x68a2, 0x6893, 0x68b5, 0x687f, 0x6876, 0x68b1, 0x68a7, + 0x6897, 0x68b0, 0x6883, 0x68c4, 0x68ad, 0x6886, 0x6885, 0x6894, + 0x689d, 0x68a8, 0x689f, 0x68a1, 0x6882, 0x6b32, 0x6bba, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6beb, 0x6bec, 0x6c2b, 0x6d8e, 0x6dbc, 0x6df3, 0x6dd9, 0x6db2, + 0x6de1, 0x6dcc, 0x6de4, 0x6dfb, 0x6dfa, 0x6e05, 0x6dc7, 0x6dcb, + 0x6daf, 0x6dd1, 0x6dae, 0x6dde, 0x6df9, 0x6db8, 0x6df7, 0x6df5, + 0x6dc5, 0x6dd2, 0x6e1a, 0x6db5, 0x6dda, 0x6deb, 0x6dd8, 0x6dea, + 0x6df1, 0x6dee, 0x6de8, 0x6dc6, 0x6dc4, 0x6daa, 0x6dec, 0x6dbf, + 0x6de6, 0x70f9, 0x7109, 0x710a, 0x70fd, 0x70ef, 0x723d, 0x727d, + 0x7281, 0x731c, 0x731b, 0x7316, 0x7313, 0x7319, 0x7387, 0x7405, + 0x740a, 0x7403, 0x7406, 0x73fe, 0x740d, 0x74e0, 0x74f6, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x74f7, 0x751c, 0x7522, 0x7565, 0x7566, 0x7562, 0x7570, + 0x758f, 0x75d4, 0x75d5, 0x75b5, 0x75ca, 0x75cd, 0x768e, 0x76d4, + 0x76d2, 0x76db, 0x7737, 0x773e, 0x773c, 0x7736, 0x7738, 0x773a, + 0x786b, 0x7843, 0x784e, 0x7965, 0x7968, 0x796d, 0x79fb, 0x7a92, + 0x7a95, 0x7b20, 0x7b28, 0x7b1b, 0x7b2c, 0x7b26, 0x7b19, 0x7b1e, + 0x7b2e, 0x7c92, 0x7c97, 0x7c95, 0x7d46, 0x7d43, 0x7d71, 0x7d2e, + 0x7d39, 0x7d3c, 0x7d40, 0x7d30, 0x7d33, 0x7d44, 0x7d2f, 0x7d42, + 0x7d32, 0x7d31, 0x7f3d, 0x7f9e, 0x7f9a, 0x7fcc, 0x7fce, 0x7fd2, + 0x801c, 0x804a, 0x8046, 0x812f, 0x8116, 0x8123, 0x812b, 0x8129, + 0x8130, 0x8124, 0x8202, 0x8235, 0x8237, 0x8236, 0x8239, 0x838e, + 0x839e, 0x8398, 0x8378, 0x83a2, 0x8396, 0x83bd, 0x83ab, 0x8392, + 0x838a, 0x8393, 0x8389, 0x83a0, 0x8377, 0x837b, 0x837c, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8386, 0x83a7, 0x8655, 0x5f6a, 0x86c7, 0x86c0, 0x86b6, 0x86c4, + 0x86b5, 0x86c6, 0x86cb, 0x86b1, 0x86af, 0x86c9, 0x8853, 0x889e, + 0x8888, 0x88ab, 0x8892, 0x8896, 0x888d, 0x888b, 0x8993, 0x898f, + 0x8a2a, 0x8a1d, 0x8a23, 0x8a25, 0x8a31, 0x8a2d, 0x8a1f, 0x8a1b, + 0x8a22, 0x8c49, 0x8c5a, 0x8ca9, 0x8cac, 0x8cab, 0x8ca8, 0x8caa, + 0x8ca7, 0x8d67, 0x8d66, 0x8dbe, 0x8dba, 0x8edb, 0x8edf, 0x9019, + 0x900d, 0x901a, 0x9017, 0x9023, 0x901f, 0x901d, 0x9010, 0x9015, + 0x901e, 0x9020, 0x900f, 0x9022, 0x9016, 0x901b, 0x9014, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x90e8, 0x90ed, 0x90fd, 0x9157, 0x91ce, 0x91f5, 0x91e6, + 0x91e3, 0x91e7, 0x91ed, 0x91e9, 0x9589, 0x966a, 0x9675, 0x9673, + 0x9678, 0x9670, 0x9674, 0x9676, 0x9677, 0x966c, 0x96c0, 0x96ea, + 0x96e9, 0x7ae0, 0x7adf, 0x9802, 0x9803, 0x9b5a, 0x9ce5, 0x9e75, + 0x9e7f, 0x9ea5, 0x9ebb, 0x50a2, 0x508d, 0x5085, 0x5099, 0x5091, + 0x5080, 0x5096, 0x5098, 0x509a, 0x6700, 0x51f1, 0x5272, 0x5274, + 0x5275, 0x5269, 0x52de, 0x52dd, 0x52db, 0x535a, 0x53a5, 0x557b, + 0x5580, 0x55a7, 0x557c, 0x558a, 0x559d, 0x5598, 0x5582, 0x559c, + 0x55aa, 0x5594, 0x5587, 0x558b, 0x5583, 0x55b3, 0x55ae, 0x559f, + 0x553e, 0x55b2, 0x559a, 0x55bb, 0x55ac, 0x55b1, 0x557e, 0x5589, + 0x55ab, 0x5599, 0x570d, 0x582f, 0x582a, 0x5834, 0x5824, 0x5830, + 0x5831, 0x5821, 0x581d, 0x5820, 0x58f9, 0x58fa, 0x5960, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5a77, 0x5a9a, 0x5a7f, 0x5a92, 0x5a9b, 0x5aa7, 0x5b73, 0x5b71, + 0x5bd2, 0x5bcc, 0x5bd3, 0x5bd0, 0x5c0a, 0x5c0b, 0x5c31, 0x5d4c, + 0x5d50, 0x5d34, 0x5d47, 0x5dfd, 0x5e45, 0x5e3d, 0x5e40, 0x5e43, + 0x5e7e, 0x5eca, 0x5ec1, 0x5ec2, 0x5ec4, 0x5f3c, 0x5f6d, 0x5fa9, + 0x5faa, 0x5fa8, 0x60d1, 0x60e1, 0x60b2, 0x60b6, 0x60e0, 0x611c, + 0x6123, 0x60fa, 0x6115, 0x60f0, 0x60fb, 0x60f4, 0x6168, 0x60f1, + 0x610e, 0x60f6, 0x6109, 0x6100, 0x6112, 0x621f, 0x6249, 0x63a3, + 0x638c, 0x63cf, 0x63c0, 0x63e9, 0x63c9, 0x63c6, 0x63cd, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x63d2, 0x63e3, 0x63d0, 0x63e1, 0x63d6, 0x63ed, 0x63ee, + 0x6376, 0x63f4, 0x63ea, 0x63db, 0x6452, 0x63da, 0x63f9, 0x655e, + 0x6566, 0x6562, 0x6563, 0x6591, 0x6590, 0x65af, 0x666e, 0x6670, + 0x6674, 0x6676, 0x666f, 0x6691, 0x667a, 0x667e, 0x6677, 0x66fe, + 0x66ff, 0x671f, 0x671d, 0x68fa, 0x68d5, 0x68e0, 0x68d8, 0x68d7, + 0x6905, 0x68df, 0x68f5, 0x68ee, 0x68e7, 0x68f9, 0x68d2, 0x68f2, + 0x68e3, 0x68cb, 0x68cd, 0x690d, 0x6912, 0x690e, 0x68c9, 0x68da, + 0x696e, 0x68fb, 0x6b3e, 0x6b3a, 0x6b3d, 0x6b98, 0x6b96, 0x6bbc, + 0x6bef, 0x6c2e, 0x6c2f, 0x6c2c, 0x6e2f, 0x6e38, 0x6e54, 0x6e21, + 0x6e32, 0x6e67, 0x6e4a, 0x6e20, 0x6e25, 0x6e23, 0x6e1b, 0x6e5b, + 0x6e58, 0x6e24, 0x6e56, 0x6e6e, 0x6e2d, 0x6e26, 0x6e6f, 0x6e34, + 0x6e4d, 0x6e3a, 0x6e2c, 0x6e43, 0x6e1d, 0x6e3e, 0x6ecb, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6e89, 0x6e19, 0x6e4e, 0x6e63, 0x6e44, 0x6e72, 0x6e69, 0x6e5f, + 0x7119, 0x711a, 0x7126, 0x7130, 0x7121, 0x7136, 0x716e, 0x711c, + 0x724c, 0x7284, 0x7280, 0x7336, 0x7325, 0x7334, 0x7329, 0x743a, + 0x742a, 0x7433, 0x7422, 0x7425, 0x7435, 0x7436, 0x7434, 0x742f, + 0x741b, 0x7426, 0x7428, 0x7525, 0x7526, 0x756b, 0x756a, 0x75e2, + 0x75db, 0x75e3, 0x75d9, 0x75d8, 0x75de, 0x75e0, 0x767b, 0x767c, + 0x7696, 0x7693, 0x76b4, 0x76dc, 0x774f, 0x77ed, 0x785d, 0x786c, + 0x786f, 0x7a0d, 0x7a08, 0x7a0b, 0x7a05, 0x7a00, 0x7a98, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7a97, 0x7a96, 0x7ae5, 0x7ae3, 0x7b49, 0x7b56, 0x7b46, + 0x7b50, 0x7b52, 0x7b54, 0x7b4d, 0x7b4b, 0x7b4f, 0x7b51, 0x7c9f, + 0x7ca5, 0x7d5e, 0x7d50, 0x7d68, 0x7d55, 0x7d2b, 0x7d6e, 0x7d72, + 0x7d61, 0x7d66, 0x7d62, 0x7d70, 0x7d73, 0x5584, 0x7fd4, 0x7fd5, + 0x800b, 0x8052, 0x8085, 0x8155, 0x8154, 0x814b, 0x8151, 0x814e, + 0x8139, 0x8146, 0x813e, 0x814c, 0x8153, 0x8174, 0x8212, 0x821c, + 0x83e9, 0x8403, 0x83f8, 0x840d, 0x83e0, 0x83c5, 0x840b, 0x83c1, + 0x83ef, 0x83f1, 0x83f4, 0x8457, 0x840a, 0x83f0, 0x840c, 0x83cc, + 0x83fd, 0x83f2, 0x83ca, 0x8438, 0x840e, 0x8404, 0x83dc, 0x8407, + 0x83d4, 0x83df, 0x865b, 0x86df, 0x86d9, 0x86ed, 0x86d4, 0x86db, + 0x86e4, 0x86d0, 0x86de, 0x8857, 0x88c1, 0x88c2, 0x88b1, 0x8983, + 0x8996, 0x8a3b, 0x8a60, 0x8a55, 0x8a5e, 0x8a3c, 0x8a41, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8a54, 0x8a5b, 0x8a50, 0x8a46, 0x8a34, 0x8a3a, 0x8a36, 0x8a56, + 0x8c61, 0x8c82, 0x8caf, 0x8cbc, 0x8cb3, 0x8cbd, 0x8cc1, 0x8cbb, + 0x8cc0, 0x8cb4, 0x8cb7, 0x8cb6, 0x8cbf, 0x8cb8, 0x8d8a, 0x8d85, + 0x8d81, 0x8dce, 0x8ddd, 0x8dcb, 0x8dda, 0x8dd1, 0x8dcc, 0x8ddb, + 0x8dc6, 0x8efb, 0x8ef8, 0x8efc, 0x8f9c, 0x902e, 0x9035, 0x9031, + 0x9038, 0x9032, 0x9036, 0x9102, 0x90f5, 0x9109, 0x90fe, 0x9163, + 0x9165, 0x91cf, 0x9214, 0x9215, 0x9223, 0x9209, 0x921e, 0x920d, + 0x9210, 0x9207, 0x9211, 0x9594, 0x958f, 0x958b, 0x9591, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x9593, 0x9592, 0x958e, 0x968a, 0x968e, 0x968b, 0x967d, + 0x9685, 0x9686, 0x968d, 0x9672, 0x9684, 0x96c1, 0x96c5, 0x96c4, + 0x96c6, 0x96c7, 0x96ef, 0x96f2, 0x97cc, 0x9805, 0x9806, 0x9808, + 0x98e7, 0x98ea, 0x98ef, 0x98e9, 0x98f2, 0x98ed, 0x99ae, 0x99ad, + 0x9ec3, 0x9ecd, 0x9ed1, 0x4e82, 0x50ad, 0x50b5, 0x50b2, 0x50b3, + 0x50c5, 0x50be, 0x50ac, 0x50b7, 0x50bb, 0x50af, 0x50c7, 0x527f, + 0x5277, 0x527d, 0x52df, 0x52e6, 0x52e4, 0x52e2, 0x52e3, 0x532f, + 0x55df, 0x55e8, 0x55d3, 0x55e6, 0x55ce, 0x55dc, 0x55c7, 0x55d1, + 0x55e3, 0x55e4, 0x55ef, 0x55da, 0x55e1, 0x55c5, 0x55c6, 0x55e5, + 0x55c9, 0x5712, 0x5713, 0x585e, 0x5851, 0x5858, 0x5857, 0x585a, + 0x5854, 0x586b, 0x584c, 0x586d, 0x584a, 0x5862, 0x5852, 0x584b, + 0x5967, 0x5ac1, 0x5ac9, 0x5acc, 0x5abe, 0x5abd, 0x5abc, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5ab3, 0x5ac2, 0x5ab2, 0x5d69, 0x5d6f, 0x5e4c, 0x5e79, 0x5ec9, + 0x5ec8, 0x5f12, 0x5f59, 0x5fac, 0x5fae, 0x611a, 0x610f, 0x6148, + 0x611f, 0x60f3, 0x611b, 0x60f9, 0x6101, 0x6108, 0x614e, 0x614c, + 0x6144, 0x614d, 0x613e, 0x6134, 0x6127, 0x610d, 0x6106, 0x6137, + 0x6221, 0x6222, 0x6413, 0x643e, 0x641e, 0x642a, 0x642d, 0x643d, + 0x642c, 0x640f, 0x641c, 0x6414, 0x640d, 0x6436, 0x6416, 0x6417, + 0x6406, 0x656c, 0x659f, 0x65b0, 0x6697, 0x6689, 0x6687, 0x6688, + 0x6696, 0x6684, 0x6698, 0x668d, 0x6703, 0x6994, 0x696d, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x695a, 0x6977, 0x6960, 0x6954, 0x6975, 0x6930, 0x6982, + 0x694a, 0x6968, 0x696b, 0x695e, 0x6953, 0x6979, 0x6986, 0x695d, + 0x6963, 0x695b, 0x6b47, 0x6b72, 0x6bc0, 0x6bbf, 0x6bd3, 0x6bfd, + 0x6ea2, 0x6eaf, 0x6ed3, 0x6eb6, 0x6ec2, 0x6e90, 0x6e9d, 0x6ec7, + 0x6ec5, 0x6ea5, 0x6e98, 0x6ebc, 0x6eba, 0x6eab, 0x6ed1, 0x6e96, + 0x6e9c, 0x6ec4, 0x6ed4, 0x6eaa, 0x6ea7, 0x6eb4, 0x714e, 0x7159, + 0x7169, 0x7164, 0x7149, 0x7167, 0x715c, 0x716c, 0x7166, 0x714c, + 0x7165, 0x715e, 0x7146, 0x7168, 0x7156, 0x723a, 0x7252, 0x7337, + 0x7345, 0x733f, 0x733e, 0x746f, 0x745a, 0x7455, 0x745f, 0x745e, + 0x7441, 0x743f, 0x7459, 0x745b, 0x745c, 0x7576, 0x7578, 0x7600, + 0x75f0, 0x7601, 0x75f2, 0x75f1, 0x75fa, 0x75ff, 0x75f4, 0x75f3, + 0x76de, 0x76df, 0x775b, 0x776b, 0x7766, 0x775e, 0x7763, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x7779, 0x776a, 0x776c, 0x775c, 0x7765, 0x7768, 0x7762, 0x77ee, + 0x788e, 0x78b0, 0x7897, 0x7898, 0x788c, 0x7889, 0x787c, 0x7891, + 0x7893, 0x787f, 0x797a, 0x797f, 0x7981, 0x842c, 0x79bd, 0x7a1c, + 0x7a1a, 0x7a20, 0x7a14, 0x7a1f, 0x7a1e, 0x7a9f, 0x7aa0, 0x7b77, + 0x7bc0, 0x7b60, 0x7b6e, 0x7b67, 0x7cb1, 0x7cb3, 0x7cb5, 0x7d93, + 0x7d79, 0x7d91, 0x7d81, 0x7d8f, 0x7d5b, 0x7f6e, 0x7f69, 0x7f6a, + 0x7f72, 0x7fa9, 0x7fa8, 0x7fa4, 0x8056, 0x8058, 0x8086, 0x8084, + 0x8171, 0x8170, 0x8178, 0x8165, 0x816e, 0x8173, 0x816b, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8179, 0x817a, 0x8166, 0x8205, 0x8247, 0x8482, 0x8477, + 0x843d, 0x8431, 0x8475, 0x8466, 0x846b, 0x8449, 0x846c, 0x845b, + 0x843c, 0x8435, 0x8461, 0x8463, 0x8469, 0x846d, 0x8446, 0x865e, + 0x865c, 0x865f, 0x86f9, 0x8713, 0x8708, 0x8707, 0x8700, 0x86fe, + 0x86fb, 0x8702, 0x8703, 0x8706, 0x870a, 0x8859, 0x88df, 0x88d4, + 0x88d9, 0x88dc, 0x88d8, 0x88dd, 0x88e1, 0x88ca, 0x88d5, 0x88d2, + 0x899c, 0x89e3, 0x8a6b, 0x8a72, 0x8a73, 0x8a66, 0x8a69, 0x8a70, + 0x8a87, 0x8a7c, 0x8a63, 0x8aa0, 0x8a71, 0x8a85, 0x8a6d, 0x8a62, + 0x8a6e, 0x8a6c, 0x8a79, 0x8a7b, 0x8a3e, 0x8a68, 0x8c62, 0x8c8a, + 0x8c89, 0x8cca, 0x8cc7, 0x8cc8, 0x8cc4, 0x8cb2, 0x8cc3, 0x8cc2, + 0x8cc5, 0x8de1, 0x8ddf, 0x8de8, 0x8def, 0x8df3, 0x8dfa, 0x8dea, + 0x8de4, 0x8de6, 0x8eb2, 0x8f03, 0x8f09, 0x8efe, 0x8f0a, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8f9f, 0x8fb2, 0x904b, 0x904a, 0x9053, 0x9042, 0x9054, 0x903c, + 0x9055, 0x9050, 0x9047, 0x904f, 0x904e, 0x904d, 0x9051, 0x903e, + 0x9041, 0x9112, 0x9117, 0x916c, 0x916a, 0x9169, 0x91c9, 0x9237, + 0x9257, 0x9238, 0x923d, 0x9240, 0x923e, 0x925b, 0x924b, 0x9264, + 0x9251, 0x9234, 0x9249, 0x924d, 0x9245, 0x9239, 0x923f, 0x925a, + 0x9598, 0x9698, 0x9694, 0x9695, 0x96cd, 0x96cb, 0x96c9, 0x96ca, + 0x96f7, 0x96fb, 0x96f9, 0x96f6, 0x9756, 0x9774, 0x9776, 0x9810, + 0x9811, 0x9813, 0x980a, 0x9812, 0x980c, 0x98fc, 0x98f4, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x98fd, 0x98fe, 0x99b3, 0x99b1, 0x99b4, 0x9ae1, 0x9ce9, + 0x9e82, 0x9f0e, 0x9f13, 0x9f20, 0x50e7, 0x50ee, 0x50e5, 0x50d6, + 0x50ed, 0x50da, 0x50d5, 0x50cf, 0x50d1, 0x50f1, 0x50ce, 0x50e9, + 0x5162, 0x51f3, 0x5283, 0x5282, 0x5331, 0x53ad, 0x55fe, 0x5600, + 0x561b, 0x5617, 0x55fd, 0x5614, 0x5606, 0x5609, 0x560d, 0x560e, + 0x55f7, 0x5616, 0x561f, 0x5608, 0x5610, 0x55f6, 0x5718, 0x5716, + 0x5875, 0x587e, 0x5883, 0x5893, 0x588a, 0x5879, 0x5885, 0x587d, + 0x58fd, 0x5925, 0x5922, 0x5924, 0x596a, 0x5969, 0x5ae1, 0x5ae6, + 0x5ae9, 0x5ad7, 0x5ad6, 0x5ad8, 0x5ae3, 0x5b75, 0x5bde, 0x5be7, + 0x5be1, 0x5be5, 0x5be6, 0x5be8, 0x5be2, 0x5be4, 0x5bdf, 0x5c0d, + 0x5c62, 0x5d84, 0x5d87, 0x5e5b, 0x5e63, 0x5e55, 0x5e57, 0x5e54, + 0x5ed3, 0x5ed6, 0x5f0a, 0x5f46, 0x5f70, 0x5fb9, 0x6147, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x613f, 0x614b, 0x6177, 0x6162, 0x6163, 0x615f, 0x615a, 0x6158, + 0x6175, 0x622a, 0x6487, 0x6458, 0x6454, 0x64a4, 0x6478, 0x645f, + 0x647a, 0x6451, 0x6467, 0x6434, 0x646d, 0x647b, 0x6572, 0x65a1, + 0x65d7, 0x65d6, 0x66a2, 0x66a8, 0x669d, 0x699c, 0x69a8, 0x6995, + 0x69c1, 0x69ae, 0x69d3, 0x69cb, 0x699b, 0x69b7, 0x69bb, 0x69ab, + 0x69b4, 0x69d0, 0x69cd, 0x69ad, 0x69cc, 0x69a6, 0x69c3, 0x69a3, + 0x6b49, 0x6b4c, 0x6c33, 0x6f33, 0x6f14, 0x6efe, 0x6f13, 0x6ef4, + 0x6f29, 0x6f3e, 0x6f20, 0x6f2c, 0x6f0f, 0x6f02, 0x6f22, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6eff, 0x6eef, 0x6f06, 0x6f31, 0x6f38, 0x6f32, 0x6f23, + 0x6f15, 0x6f2b, 0x6f2f, 0x6f88, 0x6f2a, 0x6eec, 0x6f01, 0x6ef2, + 0x6ecc, 0x6ef7, 0x7194, 0x7199, 0x717d, 0x718a, 0x7184, 0x7192, + 0x723e, 0x7292, 0x7296, 0x7344, 0x7350, 0x7464, 0x7463, 0x746a, + 0x7470, 0x746d, 0x7504, 0x7591, 0x7627, 0x760d, 0x760b, 0x7609, + 0x7613, 0x76e1, 0x76e3, 0x7784, 0x777d, 0x777f, 0x7761, 0x78c1, + 0x789f, 0x78a7, 0x78b3, 0x78a9, 0x78a3, 0x798e, 0x798f, 0x798d, + 0x7a2e, 0x7a31, 0x7aaa, 0x7aa9, 0x7aed, 0x7aef, 0x7ba1, 0x7b95, + 0x7b8b, 0x7b75, 0x7b97, 0x7b9d, 0x7b94, 0x7b8f, 0x7bb8, 0x7b87, + 0x7b84, 0x7cb9, 0x7cbd, 0x7cbe, 0x7dbb, 0x7db0, 0x7d9c, 0x7dbd, + 0x7dbe, 0x7da0, 0x7dca, 0x7db4, 0x7db2, 0x7db1, 0x7dba, 0x7da2, + 0x7dbf, 0x7db5, 0x7db8, 0x7dad, 0x7dd2, 0x7dc7, 0x7dac, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x7f70, 0x7fe0, 0x7fe1, 0x7fdf, 0x805e, 0x805a, 0x8087, 0x8150, + 0x8180, 0x818f, 0x8188, 0x818a, 0x817f, 0x8182, 0x81e7, 0x81fa, + 0x8207, 0x8214, 0x821e, 0x824b, 0x84c9, 0x84bf, 0x84c6, 0x84c4, + 0x8499, 0x849e, 0x84b2, 0x849c, 0x84cb, 0x84b8, 0x84c0, 0x84d3, + 0x8490, 0x84bc, 0x84d1, 0x84ca, 0x873f, 0x871c, 0x873b, 0x8722, + 0x8725, 0x8734, 0x8718, 0x8755, 0x8737, 0x8729, 0x88f3, 0x8902, + 0x88f4, 0x88f9, 0x88f8, 0x88fd, 0x88e8, 0x891a, 0x88ef, 0x8aa6, + 0x8a8c, 0x8a9e, 0x8aa3, 0x8a8d, 0x8aa1, 0x8a93, 0x8aa4, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8aaa, 0x8aa5, 0x8aa8, 0x8a98, 0x8a91, 0x8a9a, 0x8aa7, + 0x8c6a, 0x8c8d, 0x8c8c, 0x8cd3, 0x8cd1, 0x8cd2, 0x8d6b, 0x8d99, + 0x8d95, 0x8dfc, 0x8f14, 0x8f12, 0x8f15, 0x8f13, 0x8fa3, 0x9060, + 0x9058, 0x905c, 0x9063, 0x9059, 0x905e, 0x9062, 0x905d, 0x905b, + 0x9119, 0x9118, 0x911e, 0x9175, 0x9178, 0x9177, 0x9174, 0x9278, + 0x9280, 0x9285, 0x9298, 0x9296, 0x927b, 0x9293, 0x929c, 0x92a8, + 0x927c, 0x9291, 0x95a1, 0x95a8, 0x95a9, 0x95a3, 0x95a5, 0x95a4, + 0x9699, 0x969c, 0x969b, 0x96cc, 0x96d2, 0x9700, 0x977c, 0x9785, + 0x97f6, 0x9817, 0x9818, 0x98af, 0x98b1, 0x9903, 0x9905, 0x990c, + 0x9909, 0x99c1, 0x9aaf, 0x9ab0, 0x9ae6, 0x9b41, 0x9b42, 0x9cf4, + 0x9cf6, 0x9cf3, 0x9ebc, 0x9f3b, 0x9f4a, 0x5104, 0x5100, 0x50fb, + 0x50f5, 0x50f9, 0x5102, 0x5108, 0x5109, 0x5105, 0x51dc, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5287, 0x5288, 0x5289, 0x528d, 0x528a, 0x52f0, 0x53b2, 0x562e, + 0x563b, 0x5639, 0x5632, 0x563f, 0x5634, 0x5629, 0x5653, 0x564e, + 0x5657, 0x5674, 0x5636, 0x562f, 0x5630, 0x5880, 0x589f, 0x589e, + 0x58b3, 0x589c, 0x58ae, 0x58a9, 0x58a6, 0x596d, 0x5b09, 0x5afb, + 0x5b0b, 0x5af5, 0x5b0c, 0x5b08, 0x5bee, 0x5bec, 0x5be9, 0x5beb, + 0x5c64, 0x5c65, 0x5d9d, 0x5d94, 0x5e62, 0x5e5f, 0x5e61, 0x5ee2, + 0x5eda, 0x5edf, 0x5edd, 0x5ee3, 0x5ee0, 0x5f48, 0x5f71, 0x5fb7, + 0x5fb5, 0x6176, 0x6167, 0x616e, 0x615d, 0x6155, 0x6182, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x617c, 0x6170, 0x616b, 0x617e, 0x61a7, 0x6190, 0x61ab, + 0x618e, 0x61ac, 0x619a, 0x61a4, 0x6194, 0x61ae, 0x622e, 0x6469, + 0x646f, 0x6479, 0x649e, 0x64b2, 0x6488, 0x6490, 0x64b0, 0x64a5, + 0x6493, 0x6495, 0x64a9, 0x6492, 0x64ae, 0x64ad, 0x64ab, 0x649a, + 0x64ac, 0x6499, 0x64a2, 0x64b3, 0x6575, 0x6577, 0x6578, 0x66ae, + 0x66ab, 0x66b4, 0x66b1, 0x6a23, 0x6a1f, 0x69e8, 0x6a01, 0x6a1e, + 0x6a19, 0x69fd, 0x6a21, 0x6a13, 0x6a0a, 0x69f3, 0x6a02, 0x6a05, + 0x69ed, 0x6a11, 0x6b50, 0x6b4e, 0x6ba4, 0x6bc5, 0x6bc6, 0x6f3f, + 0x6f7c, 0x6f84, 0x6f51, 0x6f66, 0x6f54, 0x6f86, 0x6f6d, 0x6f5b, + 0x6f78, 0x6f6e, 0x6f8e, 0x6f7a, 0x6f70, 0x6f64, 0x6f97, 0x6f58, + 0x6ed5, 0x6f6f, 0x6f60, 0x6f5f, 0x719f, 0x71ac, 0x71b1, 0x71a8, + 0x7256, 0x729b, 0x734e, 0x7357, 0x7469, 0x748b, 0x7483, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x747e, 0x7480, 0x757f, 0x7620, 0x7629, 0x761f, 0x7624, 0x7626, + 0x7621, 0x7622, 0x769a, 0x76ba, 0x76e4, 0x778e, 0x7787, 0x778c, + 0x7791, 0x778b, 0x78cb, 0x78c5, 0x78ba, 0x78ca, 0x78be, 0x78d5, + 0x78bc, 0x78d0, 0x7a3f, 0x7a3c, 0x7a40, 0x7a3d, 0x7a37, 0x7a3b, + 0x7aaf, 0x7aae, 0x7bad, 0x7bb1, 0x7bc4, 0x7bb4, 0x7bc6, 0x7bc7, + 0x7bc1, 0x7ba0, 0x7bcc, 0x7cca, 0x7de0, 0x7df4, 0x7def, 0x7dfb, + 0x7dd8, 0x7dec, 0x7ddd, 0x7de8, 0x7de3, 0x7dda, 0x7dde, 0x7de9, + 0x7d9e, 0x7dd9, 0x7df2, 0x7df9, 0x7f75, 0x7f77, 0x7faf, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7fe9, 0x8026, 0x819b, 0x819c, 0x819d, 0x81a0, 0x819a, + 0x8198, 0x8517, 0x853d, 0x851a, 0x84ee, 0x852c, 0x852d, 0x8513, + 0x8511, 0x8523, 0x8521, 0x8514, 0x84ec, 0x8525, 0x84ff, 0x8506, + 0x8782, 0x8774, 0x8776, 0x8760, 0x8766, 0x8778, 0x8768, 0x8759, + 0x8757, 0x874c, 0x8753, 0x885b, 0x885d, 0x8910, 0x8907, 0x8912, + 0x8913, 0x8915, 0x890a, 0x8abc, 0x8ad2, 0x8ac7, 0x8ac4, 0x8a95, + 0x8acb, 0x8af8, 0x8ab2, 0x8ac9, 0x8ac2, 0x8abf, 0x8ab0, 0x8ad6, + 0x8acd, 0x8ab6, 0x8ab9, 0x8adb, 0x8c4c, 0x8c4e, 0x8c6c, 0x8ce0, + 0x8cde, 0x8ce6, 0x8ce4, 0x8cec, 0x8ced, 0x8ce2, 0x8ce3, 0x8cdc, + 0x8cea, 0x8ce1, 0x8d6d, 0x8d9f, 0x8da3, 0x8e2b, 0x8e10, 0x8e1d, + 0x8e22, 0x8e0f, 0x8e29, 0x8e1f, 0x8e21, 0x8e1e, 0x8eba, 0x8f1d, + 0x8f1b, 0x8f1f, 0x8f29, 0x8f26, 0x8f2a, 0x8f1c, 0x8f1e, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8f25, 0x9069, 0x906e, 0x9068, 0x906d, 0x9077, 0x9130, 0x912d, + 0x9127, 0x9131, 0x9187, 0x9189, 0x918b, 0x9183, 0x92c5, 0x92bb, + 0x92b7, 0x92ea, 0x92ac, 0x92e4, 0x92c1, 0x92b3, 0x92bc, 0x92d2, + 0x92c7, 0x92f0, 0x92b2, 0x95ad, 0x95b1, 0x9704, 0x9706, 0x9707, + 0x9709, 0x9760, 0x978d, 0x978b, 0x978f, 0x9821, 0x982b, 0x981c, + 0x98b3, 0x990a, 0x9913, 0x9912, 0x9918, 0x99dd, 0x99d0, 0x99df, + 0x99db, 0x99d1, 0x99d5, 0x99d2, 0x99d9, 0x9ab7, 0x9aee, 0x9aef, + 0x9b27, 0x9b45, 0x9b44, 0x9b77, 0x9b6f, 0x9d06, 0x9d09, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x9d03, 0x9ea9, 0x9ebe, 0x9ece, 0x58a8, 0x9f52, 0x5112, + 0x5118, 0x5114, 0x5110, 0x5115, 0x5180, 0x51aa, 0x51dd, 0x5291, + 0x5293, 0x52f3, 0x5659, 0x566b, 0x5679, 0x5669, 0x5664, 0x5678, + 0x566a, 0x5668, 0x5665, 0x5671, 0x566f, 0x566c, 0x5662, 0x5676, + 0x58c1, 0x58be, 0x58c7, 0x58c5, 0x596e, 0x5b1d, 0x5b34, 0x5b78, + 0x5bf0, 0x5c0e, 0x5f4a, 0x61b2, 0x6191, 0x61a9, 0x618a, 0x61cd, + 0x61b6, 0x61be, 0x61ca, 0x61c8, 0x6230, 0x64c5, 0x64c1, 0x64cb, + 0x64bb, 0x64bc, 0x64da, 0x64c4, 0x64c7, 0x64c2, 0x64cd, 0x64bf, + 0x64d2, 0x64d4, 0x64be, 0x6574, 0x66c6, 0x66c9, 0x66b9, 0x66c4, + 0x66c7, 0x66b8, 0x6a3d, 0x6a38, 0x6a3a, 0x6a59, 0x6a6b, 0x6a58, + 0x6a39, 0x6a44, 0x6a62, 0x6a61, 0x6a4b, 0x6a47, 0x6a35, 0x6a5f, + 0x6a48, 0x6b59, 0x6b77, 0x6c05, 0x6fc2, 0x6fb1, 0x6fa1, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6fc3, 0x6fa4, 0x6fc1, 0x6fa7, 0x6fb3, 0x6fc0, 0x6fb9, 0x6fb6, + 0x6fa6, 0x6fa0, 0x6fb4, 0x71be, 0x71c9, 0x71d0, 0x71d2, 0x71c8, + 0x71d5, 0x71b9, 0x71ce, 0x71d9, 0x71dc, 0x71c3, 0x71c4, 0x7368, + 0x749c, 0x74a3, 0x7498, 0x749f, 0x749e, 0x74e2, 0x750c, 0x750d, + 0x7634, 0x7638, 0x763a, 0x76e7, 0x76e5, 0x77a0, 0x779e, 0x779f, + 0x77a5, 0x78e8, 0x78da, 0x78ec, 0x78e7, 0x79a6, 0x7a4d, 0x7a4e, + 0x7a46, 0x7a4c, 0x7a4b, 0x7aba, 0x7bd9, 0x7c11, 0x7bc9, 0x7be4, + 0x7bdb, 0x7be1, 0x7be9, 0x7be6, 0x7cd5, 0x7cd6, 0x7e0a, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7e11, 0x7e08, 0x7e1b, 0x7e23, 0x7e1e, 0x7e1d, 0x7e09, + 0x7e10, 0x7f79, 0x7fb2, 0x7ff0, 0x7ff1, 0x7fee, 0x8028, 0x81b3, + 0x81a9, 0x81a8, 0x81fb, 0x8208, 0x8258, 0x8259, 0x854a, 0x8559, + 0x8548, 0x8568, 0x8569, 0x8543, 0x8549, 0x856d, 0x856a, 0x855e, + 0x8783, 0x879f, 0x879e, 0x87a2, 0x878d, 0x8861, 0x892a, 0x8932, + 0x8925, 0x892b, 0x8921, 0x89aa, 0x89a6, 0x8ae6, 0x8afa, 0x8aeb, + 0x8af1, 0x8b00, 0x8adc, 0x8ae7, 0x8aee, 0x8afe, 0x8b01, 0x8b02, + 0x8af7, 0x8aed, 0x8af3, 0x8af6, 0x8afc, 0x8c6b, 0x8c6d, 0x8c93, + 0x8cf4, 0x8e44, 0x8e31, 0x8e34, 0x8e42, 0x8e39, 0x8e35, 0x8f3b, + 0x8f2f, 0x8f38, 0x8f33, 0x8fa8, 0x8fa6, 0x9075, 0x9074, 0x9078, + 0x9072, 0x907c, 0x907a, 0x9134, 0x9192, 0x9320, 0x9336, 0x92f8, + 0x9333, 0x932f, 0x9322, 0x92fc, 0x932b, 0x9304, 0x931a, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x9310, 0x9326, 0x9321, 0x9315, 0x932e, 0x9319, 0x95bb, 0x96a7, + 0x96a8, 0x96aa, 0x96d5, 0x970e, 0x9711, 0x9716, 0x970d, 0x9713, + 0x970f, 0x975b, 0x975c, 0x9766, 0x9798, 0x9830, 0x9838, 0x983b, + 0x9837, 0x982d, 0x9839, 0x9824, 0x9910, 0x9928, 0x991e, 0x991b, + 0x9921, 0x991a, 0x99ed, 0x99e2, 0x99f1, 0x9ab8, 0x9abc, 0x9afb, + 0x9aed, 0x9b28, 0x9b91, 0x9d15, 0x9d23, 0x9d26, 0x9d28, 0x9d12, + 0x9d1b, 0x9ed8, 0x9ed4, 0x9f8d, 0x9f9c, 0x512a, 0x511f, 0x5121, + 0x5132, 0x52f5, 0x568e, 0x5680, 0x5690, 0x5685, 0x5687, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x568f, 0x58d5, 0x58d3, 0x58d1, 0x58ce, 0x5b30, 0x5b2a, + 0x5b24, 0x5b7a, 0x5c37, 0x5c68, 0x5dbc, 0x5dba, 0x5dbd, 0x5db8, + 0x5e6b, 0x5f4c, 0x5fbd, 0x61c9, 0x61c2, 0x61c7, 0x61e6, 0x61cb, + 0x6232, 0x6234, 0x64ce, 0x64ca, 0x64d8, 0x64e0, 0x64f0, 0x64e6, + 0x64ec, 0x64f1, 0x64e2, 0x64ed, 0x6582, 0x6583, 0x66d9, 0x66d6, + 0x6a80, 0x6a94, 0x6a84, 0x6aa2, 0x6a9c, 0x6adb, 0x6aa3, 0x6a7e, + 0x6a97, 0x6a90, 0x6aa0, 0x6b5c, 0x6bae, 0x6bda, 0x6c08, 0x6fd8, + 0x6ff1, 0x6fdf, 0x6fe0, 0x6fdb, 0x6fe4, 0x6feb, 0x6fef, 0x6f80, + 0x6fec, 0x6fe1, 0x6fe9, 0x6fd5, 0x6fee, 0x6ff0, 0x71e7, 0x71df, + 0x71ee, 0x71e6, 0x71e5, 0x71ed, 0x71ec, 0x71f4, 0x71e0, 0x7235, + 0x7246, 0x7370, 0x7372, 0x74a9, 0x74b0, 0x74a6, 0x74a8, 0x7646, + 0x7642, 0x764c, 0x76ea, 0x77b3, 0x77aa, 0x77b0, 0x77ac, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x77a7, 0x77ad, 0x77ef, 0x78f7, 0x78fa, 0x78f4, 0x78ef, 0x7901, + 0x79a7, 0x79aa, 0x7a57, 0x7abf, 0x7c07, 0x7c0d, 0x7bfe, 0x7bf7, + 0x7c0c, 0x7be0, 0x7ce0, 0x7cdc, 0x7cde, 0x7ce2, 0x7cdf, 0x7cd9, + 0x7cdd, 0x7e2e, 0x7e3e, 0x7e46, 0x7e37, 0x7e32, 0x7e43, 0x7e2b, + 0x7e3d, 0x7e31, 0x7e45, 0x7e41, 0x7e34, 0x7e39, 0x7e48, 0x7e35, + 0x7e3f, 0x7e2f, 0x7f44, 0x7ff3, 0x7ffc, 0x8071, 0x8072, 0x8070, + 0x806f, 0x8073, 0x81c6, 0x81c3, 0x81ba, 0x81c2, 0x81c0, 0x81bf, + 0x81bd, 0x81c9, 0x81be, 0x81e8, 0x8209, 0x8271, 0x85aa, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8584, 0x857e, 0x859c, 0x8591, 0x8594, 0x85af, 0x859b, + 0x8587, 0x85a8, 0x858a, 0x8667, 0x87c0, 0x87d1, 0x87b3, 0x87d2, + 0x87c6, 0x87ab, 0x87bb, 0x87ba, 0x87c8, 0x87cb, 0x893b, 0x8936, + 0x8944, 0x8938, 0x893d, 0x89ac, 0x8b0e, 0x8b17, 0x8b19, 0x8b1b, + 0x8b0a, 0x8b20, 0x8b1d, 0x8b04, 0x8b10, 0x8c41, 0x8c3f, 0x8c73, + 0x8cfa, 0x8cfd, 0x8cfc, 0x8cf8, 0x8cfb, 0x8da8, 0x8e49, 0x8e4b, + 0x8e48, 0x8e4a, 0x8f44, 0x8f3e, 0x8f42, 0x8f45, 0x8f3f, 0x907f, + 0x907d, 0x9084, 0x9081, 0x9082, 0x9080, 0x9139, 0x91a3, 0x919e, + 0x919c, 0x934d, 0x9382, 0x9328, 0x9375, 0x934a, 0x9365, 0x934b, + 0x9318, 0x937e, 0x936c, 0x935b, 0x9370, 0x935a, 0x9354, 0x95ca, + 0x95cb, 0x95cc, 0x95c8, 0x95c6, 0x96b1, 0x96b8, 0x96d6, 0x971c, + 0x971e, 0x97a0, 0x97d3, 0x9846, 0x98b6, 0x9935, 0x9a01, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x99ff, 0x9bae, 0x9bab, 0x9baa, 0x9bad, 0x9d3b, 0x9d3f, 0x9e8b, + 0x9ecf, 0x9ede, 0x9edc, 0x9edd, 0x9edb, 0x9f3e, 0x9f4b, 0x53e2, + 0x5695, 0x56ae, 0x58d9, 0x58d8, 0x5b38, 0x5f5d, 0x61e3, 0x6233, + 0x64f4, 0x64f2, 0x64fe, 0x6506, 0x64fa, 0x64fb, 0x64f7, 0x65b7, + 0x66dc, 0x6726, 0x6ab3, 0x6aac, 0x6ac3, 0x6abb, 0x6ab8, 0x6ac2, + 0x6aae, 0x6aaf, 0x6b5f, 0x6b78, 0x6baf, 0x7009, 0x700b, 0x6ffe, + 0x7006, 0x6ffa, 0x7011, 0x700f, 0x71fb, 0x71fc, 0x71fe, 0x71f8, + 0x7377, 0x7375, 0x74a7, 0x74bf, 0x7515, 0x7656, 0x7658, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7652, 0x77bd, 0x77bf, 0x77bb, 0x77bc, 0x790e, 0x79ae, + 0x7a61, 0x7a62, 0x7a60, 0x7ac4, 0x7ac5, 0x7c2b, 0x7c27, 0x7c2a, + 0x7c1e, 0x7c23, 0x7c21, 0x7ce7, 0x7e54, 0x7e55, 0x7e5e, 0x7e5a, + 0x7e61, 0x7e52, 0x7e59, 0x7f48, 0x7ff9, 0x7ffb, 0x8077, 0x8076, + 0x81cd, 0x81cf, 0x820a, 0x85cf, 0x85a9, 0x85cd, 0x85d0, 0x85c9, + 0x85b0, 0x85ba, 0x85b9, 0x85a6, 0x87ef, 0x87ec, 0x87f2, 0x87e0, + 0x8986, 0x89b2, 0x89f4, 0x8b28, 0x8b39, 0x8b2c, 0x8b2b, 0x8c50, + 0x8d05, 0x8e59, 0x8e63, 0x8e66, 0x8e64, 0x8e5f, 0x8e55, 0x8ec0, + 0x8f49, 0x8f4d, 0x9087, 0x9083, 0x9088, 0x91ab, 0x91ac, 0x91d0, + 0x9394, 0x938a, 0x9396, 0x93a2, 0x93b3, 0x93ae, 0x93ac, 0x93b0, + 0x9398, 0x939a, 0x9397, 0x95d4, 0x95d6, 0x95d0, 0x95d5, 0x96e2, + 0x96dc, 0x96d9, 0x96db, 0x96de, 0x9724, 0x97a3, 0x97a6, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x97ad, 0x97f9, 0x984d, 0x984f, 0x984c, 0x984e, 0x9853, 0x98ba, + 0x993e, 0x993f, 0x993d, 0x992e, 0x99a5, 0x9a0e, 0x9ac1, 0x9b03, + 0x9b06, 0x9b4f, 0x9b4e, 0x9b4d, 0x9bca, 0x9bc9, 0x9bfd, 0x9bc8, + 0x9bc0, 0x9d51, 0x9d5d, 0x9d60, 0x9ee0, 0x9f15, 0x9f2c, 0x5133, + 0x56a5, 0x58de, 0x58df, 0x58e2, 0x5bf5, 0x9f90, 0x5eec, 0x61f2, + 0x61f7, 0x61f6, 0x61f5, 0x6500, 0x650f, 0x66e0, 0x66dd, 0x6ae5, + 0x6add, 0x6ada, 0x6ad3, 0x701b, 0x701f, 0x7028, 0x701a, 0x701d, + 0x7015, 0x7018, 0x7206, 0x720d, 0x7258, 0x72a2, 0x7378, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x737a, 0x74bd, 0x74ca, 0x74e3, 0x7587, 0x7586, 0x765f, + 0x7661, 0x77c7, 0x7919, 0x79b1, 0x7a6b, 0x7a69, 0x7c3e, 0x7c3f, + 0x7c38, 0x7c3d, 0x7c37, 0x7c40, 0x7e6b, 0x7e6d, 0x7e79, 0x7e69, + 0x7e6a, 0x7f85, 0x7e73, 0x7fb6, 0x7fb9, 0x7fb8, 0x81d8, 0x85e9, + 0x85dd, 0x85ea, 0x85d5, 0x85e4, 0x85e5, 0x85f7, 0x87fb, 0x8805, + 0x880d, 0x87f9, 0x87fe, 0x8960, 0x895f, 0x8956, 0x895e, 0x8b41, + 0x8b5c, 0x8b58, 0x8b49, 0x8b5a, 0x8b4e, 0x8b4f, 0x8b46, 0x8b59, + 0x8d08, 0x8d0a, 0x8e7c, 0x8e72, 0x8e87, 0x8e76, 0x8e6c, 0x8e7a, + 0x8e74, 0x8f54, 0x8f4e, 0x8fad, 0x908a, 0x908b, 0x91b1, 0x91ae, + 0x93e1, 0x93d1, 0x93df, 0x93c3, 0x93c8, 0x93dc, 0x93dd, 0x93d6, + 0x93e2, 0x93cd, 0x93d8, 0x93e4, 0x93d7, 0x93e8, 0x95dc, 0x96b4, + 0x96e3, 0x972a, 0x9727, 0x9761, 0x97dc, 0x97fb, 0x985e, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x9858, 0x985b, 0x98bc, 0x9945, 0x9949, 0x9a16, 0x9a19, 0x9b0d, + 0x9be8, 0x9be7, 0x9bd6, 0x9bdb, 0x9d89, 0x9d61, 0x9d72, 0x9d6a, + 0x9d6c, 0x9e92, 0x9e97, 0x9e93, 0x9eb4, 0x52f8, 0x56a8, 0x56b7, + 0x56b6, 0x56b4, 0x56bc, 0x58e4, 0x5b40, 0x5b43, 0x5b7d, 0x5bf6, + 0x5dc9, 0x61f8, 0x61fa, 0x6518, 0x6514, 0x6519, 0x66e6, 0x6727, + 0x6aec, 0x703e, 0x7030, 0x7032, 0x7210, 0x737b, 0x74cf, 0x7662, + 0x7665, 0x7926, 0x792a, 0x792c, 0x792b, 0x7ac7, 0x7af6, 0x7c4c, + 0x7c43, 0x7c4d, 0x7cef, 0x7cf0, 0x8fae, 0x7e7d, 0x7e7c, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7e82, 0x7f4c, 0x8000, 0x81da, 0x8266, 0x85fb, 0x85f9, + 0x8611, 0x85fa, 0x8606, 0x860b, 0x8607, 0x860a, 0x8814, 0x8815, + 0x8964, 0x89ba, 0x89f8, 0x8b70, 0x8b6c, 0x8b66, 0x8b6f, 0x8b5f, + 0x8b6b, 0x8d0f, 0x8d0d, 0x8e89, 0x8e81, 0x8e85, 0x8e82, 0x91b4, + 0x91cb, 0x9418, 0x9403, 0x93fd, 0x95e1, 0x9730, 0x98c4, 0x9952, + 0x9951, 0x99a8, 0x9a2b, 0x9a30, 0x9a37, 0x9a35, 0x9c13, 0x9c0d, + 0x9e79, 0x9eb5, 0x9ee8, 0x9f2f, 0x9f5f, 0x9f63, 0x9f61, 0x5137, + 0x5138, 0x56c1, 0x56c0, 0x56c2, 0x5914, 0x5c6c, 0x5dcd, 0x61fc, + 0x61fe, 0x651d, 0x651c, 0x6595, 0x66e9, 0x6afb, 0x6b04, 0x6afa, + 0x6bb2, 0x704c, 0x721b, 0x72a7, 0x74d6, 0x74d4, 0x7669, 0x77d3, + 0x7c50, 0x7e8f, 0x7e8c, 0x7fbc, 0x8617, 0x862d, 0x861a, 0x8823, + 0x8822, 0x8821, 0x881f, 0x896a, 0x896c, 0x89bd, 0x8b74, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8b77, 0x8b7d, 0x8d13, 0x8e8a, 0x8e8d, 0x8e8b, 0x8f5f, 0x8faf, + 0x91ba, 0x942e, 0x9433, 0x9435, 0x943a, 0x9438, 0x9432, 0x942b, + 0x95e2, 0x9738, 0x9739, 0x9732, 0x97ff, 0x9867, 0x9865, 0x9957, + 0x9a45, 0x9a43, 0x9a40, 0x9a3e, 0x9acf, 0x9b54, 0x9b51, 0x9c2d, + 0x9c25, 0x9daf, 0x9db4, 0x9dc2, 0x9db8, 0x9e9d, 0x9eef, 0x9f19, + 0x9f5c, 0x9f66, 0x9f67, 0x513c, 0x513b, 0x56c8, 0x56ca, 0x56c9, + 0x5b7f, 0x5dd4, 0x5dd2, 0x5f4e, 0x61ff, 0x6524, 0x6b0a, 0x6b61, + 0x7051, 0x7058, 0x7380, 0x74e4, 0x758a, 0x766e, 0x766c, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x79b3, 0x7c60, 0x7c5f, 0x807e, 0x807d, 0x81df, 0x8972, + 0x896f, 0x89fc, 0x8b80, 0x8d16, 0x8d17, 0x8e91, 0x8e93, 0x8f61, + 0x9148, 0x9444, 0x9451, 0x9452, 0x973d, 0x973e, 0x97c3, 0x97c1, + 0x986b, 0x9955, 0x9a55, 0x9a4d, 0x9ad2, 0x9b1a, 0x9c49, 0x9c31, + 0x9c3e, 0x9c3b, 0x9dd3, 0x9dd7, 0x9f34, 0x9f6c, 0x9f6a, 0x9f94, + 0x56cc, 0x5dd6, 0x6200, 0x6523, 0x652b, 0x652a, 0x66ec, 0x6b10, + 0x74da, 0x7aca, 0x7c64, 0x7c63, 0x7c65, 0x7e93, 0x7e96, 0x7e94, + 0x81e2, 0x8638, 0x863f, 0x8831, 0x8b8a, 0x9090, 0x908f, 0x9463, + 0x9460, 0x9464, 0x9768, 0x986f, 0x995c, 0x9a5a, 0x9a5b, 0x9a57, + 0x9ad3, 0x9ad4, 0x9ad1, 0x9c54, 0x9c57, 0x9c56, 0x9de5, 0x9e9f, + 0x9ef4, 0x56d1, 0x58e9, 0x652c, 0x705e, 0x7671, 0x7672, 0x77d7, + 0x7f50, 0x7f88, 0x8836, 0x8839, 0x8862, 0x8b93, 0x8b92, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8b96, 0x8277, 0x8d1b, 0x91c0, 0x946a, 0x9742, 0x9748, 0x9744, + 0x97c6, 0x9870, 0x9a5f, 0x9b22, 0x9b58, 0x9c5f, 0x9df9, 0x9dfa, + 0x9e7c, 0x9e7d, 0x9f07, 0x9f77, 0x9f72, 0x5ef3, 0x6b16, 0x7063, + 0x7c6c, 0x7c6e, 0x883b, 0x89c0, 0x8ea1, 0x91c1, 0x9472, 0x9470, + 0x9871, 0x995e, 0x9ad6, 0x9b23, 0x9ecc, 0x7064, 0x77da, 0x8b9a, + 0x9477, 0x97c9, 0x9a62, 0x9a65, 0x7e9c, 0x8b9c, 0x8eaa, 0x91c5, + 0x947d, 0x947e, 0x947c, 0x9c77, 0x9c78, 0x9ef7, 0x8c54, 0x947f, + 0x9e1a, 0x7228, 0x9a6a, 0x9b31, 0x9e1b, 0x9e1e, 0x7c72, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, + 0x2467, 0x2468, 0x2469, 0x2474, 0x2475, 0x2476, 0x2477, 0x2478, + 0x2479, 0x247a, 0x247b, 0x247c, 0x247d, 0x2170, 0x2171, 0x2172, + 0x2173, 0x2174, 0x2175, 0x2176, 0x2177, 0x2178, 0x2179, 0x4e36, + 0x4e3f, 0x4e85, 0x4ea0, 0x5182, 0x5196, 0x51ab, 0x52f9, 0x5338, + 0x5369, 0x53b6, 0x590a, 0x5b80, 0x5ddb, 0x2f33, 0x5e7f, 0xf6df, + 0x5f50, 0x5f61, 0x6534, 0xf6e3, 0x7592, 0xf6e5, 0x8fb5, 0xf6e7, + 0x00a8, 0x02c6, 0x30fd, 0x30fe, 0x309d, 0x309e, 0xf6ee, 0xf6ef, + 0x3005, 0x3006, 0x3007, 0x30fc, 0xff3b, 0xff3d, 0x273d, 0x3041, + 0x3042, 0x3043, 0x3044, 0x3045, 0x3046, 0x3047, 0x3048, 0x3049, + 0x304a, 0x304b, 0x304c, 0x304d, 0x304e, 0x304f, 0x3050, 0x3051, + 0x3052, 0x3053, 0x3054, 0x3055, 0x3056, 0x3057, 0x3058, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3059, 0x305a, 0x305b, 0x305c, 0x305d, 0x305e, 0x305f, 0x3060, + 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067, 0x3068, + 0x3069, 0x306a, 0x306b, 0x306c, 0x306d, 0x306e, 0x306f, 0x3070, + 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, 0x3077, 0x3078, + 0x3079, 0x307a, 0x307b, 0x307c, 0x307d, 0x307e, 0x307f, 0x3080, + 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086, 0x3087, 0x3088, + 0x3089, 0x308a, 0x308b, 0x308c, 0x308d, 0x308e, 0x308f, 0x3090, + 0x3091, 0x3092, 0x3093, 0x30a1, 0x30a2, 0x30a3, 0x30a4, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x30a5, 0x30a6, 0x30a7, 0x30a8, 0x30a9, 0x30aa, 0x30ab, + 0x30ac, 0x30ad, 0x30ae, 0x30af, 0x30b0, 0x30b1, 0x30b2, 0x30b3, + 0x30b4, 0x30b5, 0x30b6, 0x30b7, 0x30b8, 0x30b9, 0x30ba, 0x30bb, + 0x30bc, 0x30bd, 0x30be, 0x30bf, 0x30c0, 0x30c1, 0x30c2, 0x30c3, + 0x30c4, 0x30c5, 0x30c6, 0x30c7, 0x30c8, 0x30c9, 0x30ca, 0x30cb, + 0x30cc, 0x30cd, 0x30ce, 0x30cf, 0x30d0, 0x30d1, 0x30d2, 0x30d3, + 0x30d4, 0x30d5, 0x30d6, 0x30d7, 0x30d8, 0x30d9, 0x30da, 0x30db, + 0x30dc, 0x30dd, 0x30de, 0x30df, 0x30e0, 0x30e1, 0x30e2, 0x30e3, + 0x30e4, 0x30e5, 0x30e6, 0x30e7, 0x30e8, 0x30e9, 0x30ea, 0x30eb, + 0x30ec, 0x30ed, 0x30ee, 0x30ef, 0x30f0, 0x30f1, 0x30f2, 0x30f3, + 0x30f4, 0x30f5, 0x30f6, 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, + 0x0415, 0x0401, 0x0416, 0x0417, 0x0418, 0x0419, 0x041a, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x041b, 0x041c, 0x041d, 0x041e, 0x041f, 0x0420, 0x0421, 0x0422, + 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042a, + 0x042b, 0x042c, 0x042d, 0x042e, 0x042f, 0x0430, 0x0431, 0x0432, + 0x0433, 0x0434, 0x0435, 0x0451, 0x0436, 0x0437, 0x0438, 0x0439, + 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, 0x0440, 0x0441, + 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449, + 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f, 0x21e7, 0x21b8, + 0x21b9, 0xf7e5, 0xf7e6, 0x4e5a, 0xf7e8, 0x5202, 0xf7ea, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf7eb, 0x5188, 0xf7ed, 0xf7ee, 0xf7ef, 0xf7f0, 0xf7f1, + 0xf7f2, 0xf7f3, 0xf7f4, 0xf7f5, 0xf7f6, 0xf7f7, 0xf7f8, 0xf7f9, + 0xf7fa, 0xf7fb, 0xf7fc, 0xf7fd, 0xf7fe, 0xf7ff, 0xf800, 0xf801, + 0xf802, 0xf803, 0xf804, 0xf805, 0xf806, 0xf807, 0xf808, 0xf809, + 0xf80a, 0xf80b, 0xf80c, 0xf80d, 0xf80e, 0xf80f, 0xf810, 0xf811, + 0xf812, 0xf813, 0xf814, 0xf815, 0xf816, 0xffe2, 0xffe4, 0xff07, + 0xff02, 0x3231, 0x2116, 0x2121, 0x309b, 0x309c, 0x2e80, 0x2e84, + 0x2e86, 0x2e87, 0x2e88, 0x2e8a, 0x2e8c, 0x2e8d, 0x2e95, 0x2e9c, + 0x2e9d, 0x2ea5, 0x2ea7, 0x2eaa, 0x2eac, 0x2eae, 0x2eb6, 0x2ebc, + 0x2ebe, 0x2ec6, 0x2eca, 0x2ecc, 0x2ecd, 0x2ecf, 0x2ed6, 0x2ed7, + 0x2ede, 0x2ee3, 0xf83c, 0xf83d, 0xf83e, 0x0283, 0x0250, 0x025b, + 0x0254, 0x0275, 0x0153, 0x00f8, 0x014b, 0x028a, 0x026a, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4e42, 0x4e5c, 0x51f5, 0x531a, 0x5382, 0x4e07, 0x4e0c, 0x4e47, + 0x4e8d, 0x56d7, 0xfa0c, 0x5c6e, 0x5f73, 0x4e0f, 0x5187, 0x4e0e, + 0x4e2e, 0x4e93, 0x4ec2, 0x4ec9, 0x4ec8, 0x5198, 0x52fc, 0x536c, + 0x53b9, 0x5720, 0x5903, 0x592c, 0x5c10, 0x5dff, 0x65e1, 0x6bb3, + 0x6bcc, 0x6c14, 0x723f, 0x4e31, 0x4e3c, 0x4ee8, 0x4edc, 0x4ee9, + 0x4ee1, 0x4edd, 0x4eda, 0x520c, 0x531c, 0x534c, 0x5722, 0x5723, + 0x5917, 0x592f, 0x5b81, 0x5b84, 0x5c12, 0x5c3b, 0x5c74, 0x5c73, + 0x5e04, 0x5e80, 0x5e82, 0x5fc9, 0x6209, 0x6250, 0x6c15, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6c36, 0x6c43, 0x6c3f, 0x6c3b, 0x72ae, 0x72b0, 0x738a, + 0x79b8, 0x808a, 0x961e, 0x4f0e, 0x4f18, 0x4f2c, 0x4ef5, 0x4f14, + 0x4ef1, 0x4f00, 0x4ef7, 0x4f08, 0x4f1d, 0x4f02, 0x4f05, 0x4f22, + 0x4f13, 0x4f04, 0x4ef4, 0x4f12, 0x51b1, 0x5213, 0x5209, 0x5210, + 0x52a6, 0x5322, 0x531f, 0x534d, 0x538a, 0x5407, 0x56e1, 0x56df, + 0x572e, 0x572a, 0x5734, 0x593c, 0x5980, 0x597c, 0x5985, 0x597b, + 0x597e, 0x5977, 0x597f, 0x5b56, 0x5c15, 0x5c25, 0x5c7c, 0x5c7a, + 0x5c7b, 0x5c7e, 0x5ddf, 0x5e75, 0x5e84, 0x5f02, 0x5f1a, 0x5f74, + 0x5fd5, 0x5fd4, 0x5fcf, 0x625c, 0x625e, 0x6264, 0x6261, 0x6266, + 0x6262, 0x6259, 0x6260, 0x625a, 0x6265, 0x65ef, 0x65ee, 0x673e, + 0x6739, 0x6738, 0x673b, 0x673a, 0x673f, 0x673c, 0x6733, 0x6c18, + 0x6c46, 0x6c52, 0x6c5c, 0x6c4f, 0x6c4a, 0x6c54, 0x6c4b, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6c4c, 0x7071, 0x725e, 0x72b4, 0x72b5, 0x738e, 0x752a, 0x767f, + 0x7a75, 0x7f51, 0x8278, 0x827c, 0x8280, 0x827d, 0x827f, 0x864d, + 0x897e, 0x9099, 0x9097, 0x9098, 0x909b, 0x9094, 0x9622, 0x9624, + 0x9620, 0x9623, 0x4f56, 0x4f3b, 0x4f62, 0x4f49, 0x4f53, 0x4f64, + 0x4f3e, 0x4f67, 0x4f52, 0x4f5f, 0x4f41, 0x4f58, 0x4f2d, 0x4f33, + 0x4f3f, 0x4f61, 0x518f, 0x51b9, 0x521c, 0x521e, 0x5221, 0x52ad, + 0x52ae, 0x5309, 0x5363, 0x5372, 0x538e, 0x538f, 0x5430, 0x5437, + 0x542a, 0x5454, 0x5445, 0x5419, 0x541c, 0x5425, 0x5418, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x543d, 0x544f, 0x5441, 0x5428, 0x5424, 0x5447, 0x56ee, + 0x56e7, 0x56e5, 0x5741, 0x5745, 0x574c, 0x5749, 0x574b, 0x5752, + 0x5906, 0x5940, 0x59a6, 0x5998, 0x59a0, 0x5997, 0x598e, 0x59a2, + 0x5990, 0x598f, 0x59a7, 0x59a1, 0x5b8e, 0x5b92, 0x5c28, 0x5c2a, + 0x5c8d, 0x5c8f, 0x5c88, 0x5c8b, 0x5c89, 0x5c92, 0x5c8a, 0x5c86, + 0x5c93, 0x5c95, 0x5de0, 0x5e0a, 0x5e0e, 0x5e8b, 0x5e89, 0x5e8c, + 0x5e88, 0x5e8d, 0x5f05, 0x5f1d, 0x5f78, 0x5f76, 0x5fd2, 0x5fd1, + 0x5fd0, 0x5fed, 0x5fe8, 0x5fee, 0x5ff3, 0x5fe1, 0x5fe4, 0x5fe3, + 0x5ffa, 0x5fef, 0x5ff7, 0x5ffb, 0x6000, 0x5ff4, 0x623a, 0x6283, + 0x628c, 0x628e, 0x628f, 0x6294, 0x6287, 0x6271, 0x627b, 0x627a, + 0x6270, 0x6281, 0x6288, 0x6277, 0x627d, 0x6272, 0x6274, 0x6537, + 0x65f0, 0x65f4, 0x65f3, 0x65f2, 0x65f5, 0x6745, 0x6747, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6759, 0x6755, 0x674c, 0x6748, 0x675d, 0x674d, 0x675a, 0x674b, + 0x6bd0, 0x6c19, 0x6c1a, 0x6c78, 0x6c67, 0x6c6b, 0x6c84, 0x6c8b, + 0x6c8f, 0x6c71, 0x6c6f, 0x6c69, 0x6c9a, 0x6c6d, 0x6c87, 0x6c95, + 0x6c9c, 0x6c66, 0x6c73, 0x6c65, 0x6c7b, 0x6c8e, 0x7074, 0x707a, + 0x7263, 0x72bf, 0x72bd, 0x72c3, 0x72c6, 0x72c1, 0x72ba, 0x72c5, + 0x7395, 0x7397, 0x7393, 0x7394, 0x7392, 0x753a, 0x7539, 0x7594, + 0x7595, 0x7681, 0x793d, 0x8034, 0x8095, 0x8099, 0x8090, 0x8092, + 0x809c, 0x8290, 0x828f, 0x8285, 0x828e, 0x8291, 0x8293, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x828a, 0x8283, 0x8284, 0x8c78, 0x8fc9, 0x8fbf, 0x909f, + 0x90a1, 0x90a5, 0x909e, 0x90a7, 0x90a0, 0x9630, 0x9628, 0x962f, + 0x962d, 0x4e33, 0x4f98, 0x4f7c, 0x4f85, 0x4f7d, 0x4f80, 0x4f87, + 0x4f76, 0x4f74, 0x4f89, 0x4f84, 0x4f77, 0x4f4c, 0x4f97, 0x4f6a, + 0x4f9a, 0x4f79, 0x4f81, 0x4f78, 0x4f90, 0x4f9c, 0x4f94, 0x4f9e, + 0x4f92, 0x4f82, 0x4f95, 0x4f6b, 0x4f6e, 0x519e, 0x51bc, 0x51be, + 0x5235, 0x5232, 0x5233, 0x5246, 0x5231, 0x52bc, 0x530a, 0x530b, + 0x533c, 0x5392, 0x5394, 0x5487, 0x547f, 0x5481, 0x5491, 0x5482, + 0x5488, 0x546b, 0x547a, 0x547e, 0x5465, 0x546c, 0x5474, 0x5466, + 0x548d, 0x546f, 0x5461, 0x5460, 0x5498, 0x5463, 0x5467, 0x5464, + 0x56f7, 0x56f9, 0x576f, 0x5772, 0x576d, 0x576b, 0x5771, 0x5770, + 0x5776, 0x5780, 0x5775, 0x577b, 0x5773, 0x5774, 0x5762, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5768, 0x577d, 0x590c, 0x5945, 0x59b5, 0x59ba, 0x59cf, 0x59ce, + 0x59b2, 0x59cc, 0x59c1, 0x59b6, 0x59bc, 0x59c3, 0x59d6, 0x59b1, + 0x59bd, 0x59c0, 0x59c8, 0x59b4, 0x59c7, 0x5b62, 0x5b65, 0x5b93, + 0x5b95, 0x5c44, 0x5c47, 0x5cae, 0x5ca4, 0x5ca0, 0x5cb5, 0x5caf, + 0x5ca8, 0x5cac, 0x5c9f, 0x5ca3, 0x5cad, 0x5ca2, 0x5caa, 0x5ca7, + 0x5c9d, 0x5ca5, 0x5cb6, 0x5cb0, 0x5ca6, 0x5e17, 0x5e14, 0x5e19, + 0x5f28, 0x5f22, 0x5f23, 0x5f24, 0x5f54, 0x5f82, 0x5f7e, 0x5f7d, + 0x5fde, 0x5fe5, 0x602d, 0x6026, 0x6019, 0x6032, 0x600b, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6034, 0x600a, 0x6017, 0x6033, 0x601a, 0x601e, 0x602c, + 0x6022, 0x600d, 0x6010, 0x602e, 0x6013, 0x6011, 0x600c, 0x6009, + 0x601c, 0x6214, 0x623d, 0x62ad, 0x62b4, 0x62d1, 0x62be, 0x62aa, + 0x62b6, 0x62ca, 0x62ae, 0x62b3, 0x62af, 0x62bb, 0x62a9, 0x62b0, + 0x62b8, 0x653d, 0x65a8, 0x65bb, 0x6609, 0x65fc, 0x6604, 0x6612, + 0x6608, 0x65fb, 0x6603, 0x660b, 0x660d, 0x6605, 0x65fd, 0x6611, + 0x6610, 0x66f6, 0x670a, 0x6785, 0x676c, 0x678e, 0x6792, 0x6776, + 0x677b, 0x6798, 0x6786, 0x6784, 0x6774, 0x678d, 0x678c, 0x677a, + 0x679f, 0x6791, 0x6799, 0x6783, 0x677d, 0x6781, 0x6778, 0x6779, + 0x6794, 0x6b25, 0x6b80, 0x6b7e, 0x6bde, 0x6c1d, 0x6c93, 0x6cec, + 0x6ceb, 0x6cee, 0x6cd9, 0x6cb6, 0x6cd4, 0x6cad, 0x6ce7, 0x6cb7, + 0x6cd0, 0x6cc2, 0x6cba, 0x6cc3, 0x6cc6, 0x6ced, 0x6cf2, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6cd2, 0x6cdd, 0x6cb4, 0x6c8a, 0x6c9d, 0x6c80, 0x6cde, 0x6cc0, + 0x6d30, 0x6ccd, 0x6cc7, 0x6cb0, 0x6cf9, 0x6ccf, 0x6ce9, 0x6cd1, + 0x7094, 0x7098, 0x7085, 0x7093, 0x7086, 0x7084, 0x7091, 0x7096, + 0x7082, 0x709a, 0x7083, 0x726a, 0x72d6, 0x72cb, 0x72d8, 0x72c9, + 0x72dc, 0x72d2, 0x72d4, 0x72da, 0x72cc, 0x72d1, 0x73a4, 0x73a1, + 0x73ad, 0x73a6, 0x73a2, 0x73a0, 0x73ac, 0x739d, 0x74dd, 0x74e8, + 0x753f, 0x7540, 0x753e, 0x758c, 0x7598, 0x76af, 0x76f3, 0x76f1, + 0x76f0, 0x76f5, 0x77f8, 0x77fc, 0x77f9, 0x77fb, 0x77fa, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x77f7, 0x7942, 0x793f, 0x79c5, 0x7a78, 0x7a7b, 0x7afb, + 0x7c75, 0x7cfd, 0x8035, 0x808f, 0x80ae, 0x80a3, 0x80b8, 0x80b5, + 0x80ad, 0x8220, 0x82a0, 0x82c0, 0x82ab, 0x829a, 0x8298, 0x829b, + 0x82b5, 0x82a7, 0x82ae, 0x82bc, 0x829e, 0x82ba, 0x82b4, 0x82a8, + 0x82a1, 0x82a9, 0x82c2, 0x82a4, 0x82c3, 0x82b6, 0x82a2, 0x8670, + 0x866f, 0x866d, 0x866e, 0x8c56, 0x8fd2, 0x8fcb, 0x8fd3, 0x8fcd, + 0x8fd6, 0x8fd5, 0x8fd7, 0x90b2, 0x90b4, 0x90af, 0x90b3, 0x90b0, + 0x9639, 0x963d, 0x963c, 0x963a, 0x9643, 0x4fcd, 0x4fc5, 0x4fd3, + 0x4fb2, 0x4fc9, 0x4fcb, 0x4fc1, 0x4fd4, 0x4fdc, 0x4fd9, 0x4fbb, + 0x4fb3, 0x4fdb, 0x4fc7, 0x4fd6, 0x4fba, 0x4fc0, 0x4fb9, 0x4fec, + 0x5244, 0x5249, 0x52c0, 0x52c2, 0x533d, 0x537c, 0x5397, 0x5396, + 0x5399, 0x5398, 0x54ba, 0x54a1, 0x54ad, 0x54a5, 0x54cf, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x54c3, 0x830d, 0x54b7, 0x54ae, 0x54d6, 0x54b6, 0x54c5, 0x54c6, + 0x54a0, 0x5470, 0x54bc, 0x54a2, 0x54be, 0x5472, 0x54de, 0x54b0, + 0x57b5, 0x579e, 0x579f, 0x57a4, 0x578c, 0x5797, 0x579d, 0x579b, + 0x5794, 0x5798, 0x578f, 0x5799, 0x57a5, 0x579a, 0x5795, 0x58f4, + 0x590d, 0x5953, 0x59e1, 0x59de, 0x59ee, 0x5a00, 0x59f1, 0x59dd, + 0x59fa, 0x59fd, 0x59fc, 0x59f6, 0x59e4, 0x59f2, 0x59f7, 0x59db, + 0x59e9, 0x59f3, 0x59f5, 0x59e0, 0x59fe, 0x59f4, 0x59ed, 0x5ba8, + 0x5c4c, 0x5cd0, 0x5cd8, 0x5ccc, 0x5cd7, 0x5ccb, 0x5cdb, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5cde, 0x5cda, 0x5cc9, 0x5cc7, 0x5cca, 0x5cd6, 0x5cd3, + 0x5cd4, 0x5ccf, 0x5cc8, 0x5cc6, 0x5cce, 0x5cdf, 0x5cf8, 0x5df9, + 0x5e21, 0x5e22, 0x5e23, 0x5e20, 0x5e24, 0x5eb0, 0x5ea4, 0x5ea2, + 0x5e9b, 0x5ea3, 0x5ea5, 0x5f07, 0x5f2e, 0x5f56, 0x5f86, 0x6037, + 0x6039, 0x6054, 0x6072, 0x605e, 0x6045, 0x6053, 0x6047, 0x6049, + 0x605b, 0x604c, 0x6040, 0x6042, 0x605f, 0x6024, 0x6044, 0x6058, + 0x6066, 0x606e, 0x6242, 0x6243, 0x62cf, 0x630d, 0x630b, 0x62f5, + 0x630e, 0x6303, 0x62eb, 0x62f9, 0x630f, 0x630c, 0x62f8, 0x62f6, + 0x6300, 0x6313, 0x6314, 0x62fa, 0x6315, 0x62fb, 0x62f0, 0x6541, + 0x6543, 0x65aa, 0x65bf, 0x6636, 0x6621, 0x6632, 0x6635, 0x661c, + 0x6626, 0x6622, 0x6633, 0x662b, 0x663a, 0x661d, 0x6634, 0x6639, + 0x662e, 0x670f, 0x6710, 0x67c1, 0x67f2, 0x67c8, 0x67ba, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x67dc, 0x67bb, 0x67f8, 0x67d8, 0x67c0, 0x67b7, 0x67c5, 0x67eb, + 0x67e4, 0x67df, 0x67b5, 0x67cd, 0x67b3, 0x67f7, 0x67f6, 0x67ee, + 0x67e3, 0x67c2, 0x67b9, 0x67ce, 0x67e7, 0x67f0, 0x67b2, 0x67fc, + 0x67c6, 0x67ed, 0x67cc, 0x67ae, 0x67e6, 0x67db, 0x67fa, 0x67c9, + 0x67ca, 0x67c3, 0x67ea, 0x67cb, 0x6b28, 0x6b82, 0x6b84, 0x6bb6, + 0x6bd6, 0x6bd8, 0x6be0, 0x6c20, 0x6c21, 0x6d28, 0x6d34, 0x6d2d, + 0x6d1f, 0x6d3c, 0x6d3f, 0x6d12, 0x6d0a, 0x6cda, 0x6d33, 0x6d04, + 0x6d19, 0x6d3a, 0x6d1a, 0x6d11, 0x6d00, 0x6d1d, 0x6d42, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6d01, 0x6d18, 0x6d37, 0x6d03, 0x6d0f, 0x6d40, 0x6d07, + 0x6d20, 0x6d2c, 0x6d08, 0x6d22, 0x6d09, 0x6d10, 0x70b7, 0x709f, + 0x70be, 0x70b1, 0x70b0, 0x70a1, 0x70b4, 0x70b5, 0x70a9, 0x7241, + 0x7249, 0x724a, 0x726c, 0x7270, 0x7273, 0x726e, 0x72ca, 0x72e4, + 0x72e8, 0x72eb, 0x72df, 0x72ea, 0x72e6, 0x72e3, 0x7385, 0x73cc, + 0x73c2, 0x73c8, 0x73c5, 0x73b9, 0x73b6, 0x73b5, 0x73b4, 0x73eb, + 0x73bf, 0x73c7, 0x73be, 0x73c3, 0x73c6, 0x73b8, 0x73cb, 0x74ec, + 0x74ee, 0x752e, 0x7547, 0x7548, 0x75a7, 0x75aa, 0x7679, 0x76c4, + 0x7708, 0x7703, 0x7704, 0x7705, 0x770a, 0x76f7, 0x76fb, 0x76fa, + 0x77e7, 0x77e8, 0x7806, 0x7811, 0x7812, 0x7805, 0x7810, 0x780f, + 0x780e, 0x7809, 0x7803, 0x7813, 0x794a, 0x794c, 0x794b, 0x7945, + 0x7944, 0x79d5, 0x79cd, 0x79cf, 0x79d6, 0x79ce, 0x7a80, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x7a7e, 0x7ad1, 0x7b00, 0x7b01, 0x7c7a, 0x7c78, 0x7c79, 0x7c7f, + 0x7c80, 0x7c81, 0x7d03, 0x7d08, 0x7d01, 0x7f58, 0x7f91, 0x7f8d, + 0x7fbe, 0x8007, 0x800e, 0x800f, 0x8014, 0x8037, 0x80d8, 0x80c7, + 0x80e0, 0x80d1, 0x80c8, 0x80c2, 0x80d0, 0x80c5, 0x80e3, 0x80d9, + 0x80dc, 0x80ca, 0x80d5, 0x80c9, 0x80cf, 0x80d7, 0x80e6, 0x80cd, + 0x81ff, 0x8221, 0x8294, 0x82d9, 0x82fe, 0x82f9, 0x8307, 0x82e8, + 0x8300, 0x82d5, 0x833a, 0x82eb, 0x82d6, 0x82f4, 0x82ec, 0x82e1, + 0x82f2, 0x82f5, 0x830c, 0x82fb, 0x82f6, 0x82f0, 0x82ea, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x82e4, 0x82e0, 0x82fa, 0x82f3, 0x82ed, 0x8677, 0x8674, + 0x867c, 0x8673, 0x8841, 0x884e, 0x8867, 0x886a, 0x8869, 0x89d3, + 0x8a04, 0x8a07, 0x8d72, 0x8fe3, 0x8fe1, 0x8fee, 0x8fe0, 0x90f1, + 0x90bd, 0x90bf, 0x90d5, 0x90c5, 0x90be, 0x90c7, 0x90cb, 0x90c8, + 0x91d4, 0x91d3, 0x9654, 0x964f, 0x9651, 0x9653, 0x964a, 0x964e, + 0x501e, 0x5005, 0x5007, 0x5013, 0x5022, 0x5030, 0x501b, 0x4ff5, + 0x4ff4, 0x5033, 0x5037, 0x502c, 0x4ff6, 0x4ff7, 0x5017, 0x501c, + 0x5020, 0x5027, 0x5035, 0x502f, 0x5031, 0x500e, 0x515a, 0x5194, + 0x5193, 0x51ca, 0x51c4, 0x51c5, 0x51c8, 0x51ce, 0x5261, 0x525a, + 0x5252, 0x525e, 0x525f, 0x5255, 0x5262, 0x52cd, 0x530e, 0x539e, + 0x5526, 0x54e2, 0x5517, 0x5512, 0x54e7, 0x54f3, 0x54e4, 0x551a, + 0x54ff, 0x5504, 0x5508, 0x54eb, 0x5511, 0x5505, 0x54f1, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x550a, 0x54fb, 0x54f7, 0x54f8, 0x54e0, 0x550e, 0x5503, 0x550b, + 0x5701, 0x5702, 0x57cc, 0x5832, 0x57d5, 0x57d2, 0x57ba, 0x57c6, + 0x57bd, 0x57bc, 0x57b8, 0x57b6, 0x57bf, 0x57c7, 0x57d0, 0x57b9, + 0x57c1, 0x590e, 0x594a, 0x5a19, 0x5a16, 0x5a2d, 0x5a2e, 0x5a15, + 0x5a0f, 0x5a17, 0x5a0a, 0x5a1e, 0x5a33, 0x5b6c, 0x5ba7, 0x5bad, + 0x5bac, 0x5c03, 0x5c56, 0x5c54, 0x5cec, 0x5cff, 0x5cee, 0x5cf1, + 0x5cf7, 0x5d00, 0x5cf9, 0x5e29, 0x5e28, 0x5ea8, 0x5eae, 0x5eaa, + 0x5eac, 0x5f33, 0x5f30, 0x5f67, 0x605d, 0x605a, 0x6067, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6041, 0x60a2, 0x6088, 0x6080, 0x6092, 0x6081, 0x609d, + 0x6083, 0x6095, 0x609b, 0x6097, 0x6087, 0x609c, 0x608e, 0x6219, + 0x6246, 0x62f2, 0x6310, 0x6356, 0x632c, 0x6344, 0x6345, 0x6336, + 0x6343, 0x63e4, 0x6339, 0x634b, 0x634a, 0x633c, 0x6329, 0x6341, + 0x6334, 0x6358, 0x6354, 0x6359, 0x632d, 0x6347, 0x6333, 0x635a, + 0x6351, 0x6338, 0x6357, 0x6340, 0x6348, 0x654a, 0x6546, 0x65c6, + 0x65c3, 0x65c4, 0x65c2, 0x664a, 0x665f, 0x6647, 0x6651, 0x6712, + 0x6713, 0x681f, 0x681a, 0x6849, 0x6832, 0x6833, 0x683b, 0x684b, + 0x684f, 0x6816, 0x6831, 0x681c, 0x6835, 0x682b, 0x682d, 0x682f, + 0x684e, 0x6844, 0x6834, 0x681d, 0x6812, 0x6814, 0x6826, 0x6828, + 0x682e, 0x684d, 0x683a, 0x6825, 0x6820, 0x6b2c, 0x6b2f, 0x6b2d, + 0x6b31, 0x6b34, 0x6b6d, 0x8082, 0x6b88, 0x6be6, 0x6be4, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6be8, 0x6be3, 0x6be2, 0x6be7, 0x6c25, 0x6d7a, 0x6d63, 0x6d64, + 0x6d76, 0x6d0d, 0x6d61, 0x6d92, 0x6d58, 0x6d62, 0x6d6d, 0x6d6f, + 0x6d91, 0x6d8d, 0x6def, 0x6d7f, 0x6d86, 0x6d5e, 0x6d67, 0x6d60, + 0x6d97, 0x6d70, 0x6d7c, 0x6d5f, 0x6d82, 0x6d98, 0x6d2f, 0x6d68, + 0x6d8b, 0x6d7e, 0x6d80, 0x6d84, 0x6d16, 0x6d83, 0x6d7b, 0x6d7d, + 0x6d75, 0x6d90, 0x70dc, 0x70d3, 0x70d1, 0x70dd, 0x70cb, 0x7f39, + 0x70e2, 0x70d7, 0x70d2, 0x70de, 0x70e0, 0x70d4, 0x70cd, 0x70c5, + 0x70c6, 0x70c7, 0x70da, 0x70ce, 0x70e1, 0x7242, 0x7278, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7277, 0x7276, 0x7300, 0x72fa, 0x72f4, 0x72fe, 0x72f6, + 0x72f3, 0x72fb, 0x7301, 0x73d3, 0x73d9, 0x73e5, 0x73d6, 0x73bc, + 0x73e7, 0x73e3, 0x73e9, 0x73dc, 0x73d2, 0x73db, 0x73d4, 0x73dd, + 0x73da, 0x73d7, 0x73d8, 0x73e8, 0x74de, 0x74df, 0x74f4, 0x74f5, + 0x7521, 0x755b, 0x755f, 0x75b0, 0x75c1, 0x75bb, 0x75c4, 0x75c0, + 0x75bf, 0x75b6, 0x75ba, 0x768a, 0x76c9, 0x771d, 0x771b, 0x7710, + 0x7713, 0x7712, 0x7723, 0x7711, 0x7715, 0x7719, 0x771a, 0x7722, + 0x7727, 0x7823, 0x782c, 0x7822, 0x7835, 0x782f, 0x7828, 0x782e, + 0x782b, 0x7821, 0x7829, 0x7833, 0x782a, 0x7831, 0x7954, 0x795b, + 0x794f, 0x795c, 0x7953, 0x7952, 0x7951, 0x79eb, 0x79ec, 0x79e0, + 0x79ee, 0x79ed, 0x79ea, 0x79dc, 0x79de, 0x79dd, 0x7a86, 0x7a89, + 0x7a85, 0x7a8b, 0x7a8c, 0x7a8a, 0x7a87, 0x7ad8, 0x7b10, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x7b04, 0x7b13, 0x7b05, 0x7b0f, 0x7b08, 0x7b0a, 0x7b0e, 0x7b09, + 0x7b12, 0x7c84, 0x7c91, 0x7c8a, 0x7c8c, 0x7c88, 0x7c8d, 0x7c85, + 0x7d1e, 0x7d1d, 0x7d11, 0x7d0e, 0x7d18, 0x7d16, 0x7d13, 0x7d1f, + 0x7d12, 0x7d0f, 0x7d0c, 0x7f5c, 0x7f61, 0x7f5e, 0x7f60, 0x7f5d, + 0x7f5b, 0x7f96, 0x7f92, 0x7fc3, 0x7fc2, 0x7fc0, 0x8016, 0x803e, + 0x8039, 0x80fa, 0x80f2, 0x80f9, 0x80f5, 0x8101, 0x80fb, 0x8100, + 0x8201, 0x822f, 0x8225, 0x8333, 0x832d, 0x8344, 0x8319, 0x8351, + 0x8325, 0x8356, 0x833f, 0x8341, 0x8326, 0x831c, 0x8322, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8342, 0x834e, 0x831b, 0x832a, 0x8308, 0x833c, 0x834d, + 0x8316, 0x8324, 0x8320, 0x8337, 0x832f, 0x8329, 0x8347, 0x8345, + 0x834c, 0x8353, 0x831e, 0x832c, 0x834b, 0x8327, 0x8348, 0x8653, + 0x8652, 0x86a2, 0x86a8, 0x8696, 0x868d, 0x8691, 0x869e, 0x8687, + 0x8697, 0x8686, 0x868b, 0x869a, 0x8685, 0x86a5, 0x8699, 0x86a1, + 0x86a7, 0x8695, 0x8698, 0x868e, 0x869d, 0x8690, 0x8694, 0x8843, + 0x8844, 0x886d, 0x8875, 0x8876, 0x8872, 0x8880, 0x8871, 0x887f, + 0x886f, 0x8883, 0x887e, 0x8874, 0x887c, 0x8a12, 0x8c47, 0x8c57, + 0x8c7b, 0x8ca4, 0x8ca3, 0x8d76, 0x8d78, 0x8db5, 0x8db7, 0x8db6, + 0x8ed1, 0x8ed3, 0x8ffe, 0x8ff5, 0x9002, 0x8fff, 0x8ffb, 0x9004, + 0x8ffc, 0x8ff6, 0x90d6, 0x90e0, 0x90d9, 0x90da, 0x90e3, 0x90df, + 0x90e5, 0x90d8, 0x90db, 0x90d7, 0x90dc, 0x90e4, 0x9150, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x914e, 0x914f, 0x91d5, 0x91e2, 0x91da, 0x965c, 0x965f, 0x96bc, + 0x98e3, 0x9adf, 0x9b2f, 0x4e7f, 0x5070, 0x506a, 0x5061, 0x505e, + 0x5060, 0x5053, 0x504b, 0x505d, 0x5072, 0x5048, 0x504d, 0x5041, + 0x505b, 0x504a, 0x5062, 0x5015, 0x5045, 0x505f, 0x5069, 0x506b, + 0x5063, 0x5064, 0x5046, 0x5040, 0x506e, 0x5073, 0x5057, 0x5051, + 0x51d0, 0x526b, 0x526d, 0x526c, 0x526e, 0x52d6, 0x52d3, 0x532d, + 0x539c, 0x5575, 0x5576, 0x553c, 0x554d, 0x5550, 0x5534, 0x552a, + 0x5551, 0x5562, 0x5536, 0x5535, 0x5530, 0x5552, 0x5545, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x550c, 0x5532, 0x5565, 0x554e, 0x5539, 0x5548, 0x552d, + 0x553b, 0x5540, 0x554b, 0x570a, 0x5707, 0x57fb, 0x5814, 0x57e2, + 0x57f6, 0x57dc, 0x57f4, 0x5800, 0x57ed, 0x57fd, 0x5808, 0x57f8, + 0x580b, 0x57f3, 0x57cf, 0x5807, 0x57ee, 0x57e3, 0x57f2, 0x57e5, + 0x57ec, 0x57e1, 0x580e, 0x57fc, 0x5810, 0x57e7, 0x5801, 0x580c, + 0x57f1, 0x57e9, 0x57f0, 0x580d, 0x5804, 0x595c, 0x5a60, 0x5a58, + 0x5a55, 0x5a67, 0x5a5e, 0x5a38, 0x5a35, 0x5a6d, 0x5a50, 0x5a5f, + 0x5a65, 0x5a6c, 0x5a53, 0x5a64, 0x5a57, 0x5a43, 0x5a5d, 0x5a52, + 0x5a44, 0x5a5b, 0x5a48, 0x5a8e, 0x5a3e, 0x5a4d, 0x5a39, 0x5a4c, + 0x5a70, 0x5a69, 0x5a47, 0x5a51, 0x5a56, 0x5a42, 0x5a5c, 0x5b72, + 0x5b6e, 0x5bc1, 0x5bc0, 0x5c59, 0x5d1e, 0x5d0b, 0x5d1d, 0x5d1a, + 0x5d20, 0x5d0c, 0x5d28, 0x5d0d, 0x5d26, 0x5d25, 0x5d0f, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5d30, 0x5d12, 0x5d23, 0x5d1f, 0x5d2e, 0x5e3e, 0x5e34, 0x5eb1, + 0x5eb4, 0x5eb9, 0x5eb2, 0x5eb3, 0x5f36, 0x5f38, 0x5f9b, 0x5f96, + 0x5f9f, 0x608a, 0x6090, 0x6086, 0x60be, 0x60b0, 0x60ba, 0x60d3, + 0x60d4, 0x60cf, 0x60e4, 0x60d9, 0x60dd, 0x60c8, 0x60b1, 0x60db, + 0x60b7, 0x60ca, 0x60bf, 0x60c3, 0x60cd, 0x60c0, 0x6332, 0x6365, + 0x638a, 0x6382, 0x637d, 0x63bd, 0x639e, 0x63ad, 0x639d, 0x6397, + 0x63ab, 0x638e, 0x636f, 0x6387, 0x6390, 0x636e, 0x63af, 0x6375, + 0x639c, 0x636d, 0x63ae, 0x637c, 0x63a4, 0x633b, 0x639f, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6378, 0x6385, 0x6381, 0x6391, 0x638d, 0x6370, 0x6553, + 0x65cd, 0x6665, 0x6661, 0x665b, 0x6659, 0x665c, 0x6662, 0x6718, + 0x6879, 0x6887, 0x6890, 0x689c, 0x686d, 0x686e, 0x68ae, 0x68ab, + 0x6956, 0x686f, 0x68a3, 0x68ac, 0x68a9, 0x6875, 0x6874, 0x68b2, + 0x688f, 0x6877, 0x6892, 0x687c, 0x686b, 0x6872, 0x68aa, 0x6880, + 0x6871, 0x687e, 0x689b, 0x6896, 0x688b, 0x68a0, 0x6889, 0x68a4, + 0x6878, 0x687b, 0x6891, 0x688c, 0x688a, 0x687d, 0x6b36, 0x6b33, + 0x6b37, 0x6b38, 0x6b91, 0x6b8f, 0x6b8d, 0x6b8e, 0x6b8c, 0x6c2a, + 0x6dc0, 0x6dab, 0x6db4, 0x6db3, 0x6e74, 0x6dac, 0x6de9, 0x6de2, + 0x6db7, 0x6df6, 0x6dd4, 0x6e00, 0x6dc8, 0x6de0, 0x6ddf, 0x6dd6, + 0x6dbe, 0x6de5, 0x6ddc, 0x6ddd, 0x6ddb, 0x6df4, 0x6dca, 0x6dbd, + 0x6ded, 0x6df0, 0x6dba, 0x6dd5, 0x6dc2, 0x6dcf, 0x6dc9, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6dd0, 0x6df2, 0x6dd3, 0x6dfd, 0x6dd7, 0x6dcd, 0x6de3, 0x6dbb, + 0x70fa, 0x710d, 0x70f7, 0x7117, 0x70f4, 0x710c, 0x70f0, 0x7104, + 0x70f3, 0x7110, 0x70fc, 0x70ff, 0x7106, 0x7113, 0x7100, 0x70f8, + 0x70f6, 0x710b, 0x7102, 0x710e, 0x727e, 0x727b, 0x727c, 0x727f, + 0x731d, 0x7317, 0x7307, 0x7311, 0x7318, 0x730a, 0x7308, 0x72ff, + 0x730f, 0x731e, 0x7388, 0x73f6, 0x73f8, 0x73f5, 0x7404, 0x7401, + 0x73fd, 0x7407, 0x7400, 0x73fa, 0x73fc, 0x73ff, 0x740c, 0x740b, + 0x73f4, 0x7408, 0x7564, 0x7563, 0x75ce, 0x75d2, 0x75cf, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x75cb, 0x75cc, 0x75d1, 0x75d0, 0x768f, 0x7689, 0x76d3, + 0x7739, 0x772f, 0x772d, 0x7731, 0x7732, 0x7734, 0x7733, 0x773d, + 0x7725, 0x773b, 0x7735, 0x7848, 0x7852, 0x7849, 0x784d, 0x784a, + 0x784c, 0x7826, 0x7845, 0x7850, 0x7964, 0x7967, 0x7969, 0x796a, + 0x7963, 0x796b, 0x7961, 0x79bb, 0x79fa, 0x79f8, 0x79f6, 0x79f7, + 0x7a8f, 0x7a94, 0x7a90, 0x7b35, 0x7b47, 0x7b34, 0x7b25, 0x7b30, + 0x7b22, 0x7b24, 0x7b33, 0x7b18, 0x7b2a, 0x7b1d, 0x7b31, 0x7b2b, + 0x7b2d, 0x7b2f, 0x7b32, 0x7b38, 0x7b1a, 0x7b23, 0x7c94, 0x7c98, + 0x7c96, 0x7ca3, 0x7d35, 0x7d3d, 0x7d38, 0x7d36, 0x7d3a, 0x7d45, + 0x7d2c, 0x7d29, 0x7d41, 0x7d47, 0x7d3e, 0x7d3f, 0x7d4a, 0x7d3b, + 0x7d28, 0x7f63, 0x7f95, 0x7f9c, 0x7f9d, 0x7f9b, 0x7fca, 0x7fcb, + 0x7fcd, 0x7fd0, 0x7fd1, 0x7fc7, 0x7fcf, 0x7fc9, 0x801f, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x801e, 0x801b, 0x8047, 0x8043, 0x8048, 0x8118, 0x8125, 0x8119, + 0x811b, 0x812d, 0x811f, 0x812c, 0x811e, 0x8121, 0x8115, 0x8127, + 0x811d, 0x8122, 0x8211, 0x8238, 0x8233, 0x823a, 0x8234, 0x8232, + 0x8274, 0x8390, 0x83a3, 0x83a8, 0x838d, 0x837a, 0x8373, 0x83a4, + 0x8374, 0x838f, 0x8381, 0x8395, 0x8399, 0x8375, 0x8394, 0x83a9, + 0x837d, 0x8383, 0x838c, 0x839d, 0x839b, 0x83aa, 0x838b, 0x837e, + 0x83a5, 0x83af, 0x8388, 0x8397, 0x83b0, 0x837f, 0x83a6, 0x8387, + 0x83ae, 0x8376, 0x839a, 0x8659, 0x8656, 0x86bf, 0x86b7, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x86c2, 0x86c1, 0x86c5, 0x86ba, 0x86b0, 0x86c8, 0x86b9, + 0x86b3, 0x86b8, 0x86cc, 0x86b4, 0x86bb, 0x86bc, 0x86c3, 0x86bd, + 0x86be, 0x8852, 0x8889, 0x8895, 0x88a8, 0x88a2, 0x88aa, 0x889a, + 0x8891, 0x88a1, 0x889f, 0x8898, 0x88a7, 0x8899, 0x889b, 0x8897, + 0x88a4, 0x88ac, 0x888c, 0x8893, 0x888e, 0x8982, 0x89d6, 0x89d9, + 0x89d5, 0x8a30, 0x8a27, 0x8a2c, 0x8a1e, 0x8c39, 0x8c3b, 0x8c5c, + 0x8c5d, 0x8c7d, 0x8ca5, 0x8d7d, 0x8d7b, 0x8d79, 0x8dbc, 0x8dc2, + 0x8db9, 0x8dbf, 0x8dc1, 0x8ed8, 0x8ede, 0x8edd, 0x8edc, 0x8ed7, + 0x8ee0, 0x8ee1, 0x9024, 0x900b, 0x9011, 0x901c, 0x900c, 0x9021, + 0x90ef, 0x90ea, 0x90f0, 0x90f4, 0x90f2, 0x90f3, 0x90d4, 0x90eb, + 0x90ec, 0x90e9, 0x9156, 0x9158, 0x915a, 0x9153, 0x9155, 0x91ec, + 0x91f4, 0x91f1, 0x91f3, 0x91f8, 0x91e4, 0x91f9, 0x91ea, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x91eb, 0x91f7, 0x91e8, 0x91ee, 0x957a, 0x9586, 0x9588, 0x967c, + 0x966d, 0x966b, 0x9671, 0x966f, 0x96bf, 0x976a, 0x9804, 0x98e5, + 0x9997, 0x509b, 0x5095, 0x5094, 0x509e, 0x508b, 0x50a3, 0x5083, + 0x508c, 0x508e, 0x509d, 0x5068, 0x509c, 0x5092, 0x5082, 0x5087, + 0x515f, 0x51d4, 0x5312, 0x5311, 0x53a4, 0x53a7, 0x5591, 0x55a8, + 0x55a5, 0x55ad, 0x5577, 0x5645, 0x55a2, 0x5593, 0x5588, 0x558f, + 0x55b5, 0x5581, 0x55a3, 0x5592, 0x55a4, 0x557d, 0x558c, 0x55a6, + 0x557f, 0x5595, 0x55a1, 0x558e, 0x570c, 0x5829, 0x5837, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5819, 0x581e, 0x5827, 0x5823, 0x5828, 0x57f5, 0x5848, + 0x5825, 0x581c, 0x581b, 0x5833, 0x583f, 0x5836, 0x582e, 0x5839, + 0x5838, 0x582d, 0x582c, 0x583b, 0x5961, 0x5aaf, 0x5a94, 0x5a9f, + 0x5a7a, 0x5aa2, 0x5a9e, 0x5a78, 0x5aa6, 0x5a7c, 0x5aa5, 0x5aac, + 0x5a95, 0x5aae, 0x5a37, 0x5a84, 0x5a8a, 0x5a97, 0x5a83, 0x5a8b, + 0x5aa9, 0x5a7b, 0x5a7d, 0x5a8c, 0x5a9c, 0x5a8f, 0x5a93, 0x5a9d, + 0x5bea, 0x5bcd, 0x5bcb, 0x5bd4, 0x5bd1, 0x5bca, 0x5bce, 0x5c0c, + 0x5c30, 0x5d37, 0x5d43, 0x5d6b, 0x5d41, 0x5d4b, 0x5d3f, 0x5d35, + 0x5d51, 0x5d4e, 0x5d55, 0x5d33, 0x5d3a, 0x5d52, 0x5d3d, 0x5d31, + 0x5d59, 0x5d42, 0x5d39, 0x5d49, 0x5d38, 0x5d3c, 0x5d32, 0x5d36, + 0x5d40, 0x5d45, 0x5e44, 0x5e41, 0x5f58, 0x5fa6, 0x5fa5, 0x5fab, + 0x60c9, 0x60b9, 0x60cc, 0x60e2, 0x60ce, 0x60c4, 0x6114, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x60f2, 0x610a, 0x6116, 0x6105, 0x60f5, 0x6113, 0x60f8, 0x60fc, + 0x60fe, 0x60c1, 0x6103, 0x6118, 0x611d, 0x6110, 0x60ff, 0x6104, + 0x610b, 0x624a, 0x6394, 0x63b1, 0x63b0, 0x63ce, 0x63e5, 0x63e8, + 0x63ef, 0x63c3, 0x649d, 0x63f3, 0x63ca, 0x63e0, 0x63f6, 0x63d5, + 0x63f2, 0x63f5, 0x6461, 0x63df, 0x63be, 0x63dd, 0x63dc, 0x63c4, + 0x63d8, 0x63d3, 0x63c2, 0x63c7, 0x63cc, 0x63cb, 0x63c8, 0x63f0, + 0x63d7, 0x63d9, 0x6532, 0x6567, 0x656a, 0x6564, 0x655c, 0x6568, + 0x6565, 0x658c, 0x659d, 0x659e, 0x65ae, 0x65d0, 0x65d2, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x667c, 0x666c, 0x667b, 0x6680, 0x6671, 0x6679, 0x666a, + 0x6672, 0x6701, 0x690c, 0x68d3, 0x6904, 0x68dc, 0x692a, 0x68ec, + 0x68ea, 0x68f1, 0x690f, 0x68d6, 0x68f7, 0x68eb, 0x68e4, 0x68f6, + 0x6913, 0x6910, 0x68f3, 0x68e1, 0x6907, 0x68cc, 0x6908, 0x6970, + 0x68b4, 0x6911, 0x68ef, 0x68c6, 0x6914, 0x68f8, 0x68d0, 0x68fd, + 0x68fc, 0x68e8, 0x690b, 0x690a, 0x6917, 0x68ce, 0x68c8, 0x68dd, + 0x68de, 0x68e6, 0x68f4, 0x68d1, 0x6906, 0x68d4, 0x68e9, 0x6915, + 0x6925, 0x68c7, 0x6b39, 0x6b3b, 0x6b3f, 0x6b3c, 0x6b94, 0x6b97, + 0x6b99, 0x6b95, 0x6bbd, 0x6bf0, 0x6bf2, 0x6bf3, 0x6c30, 0x6dfc, + 0x6e46, 0x6e47, 0x6e1f, 0x6e49, 0x6e88, 0x6e3c, 0x6e3d, 0x6e45, + 0x6e62, 0x6e2b, 0x6e3f, 0x6e41, 0x6e5d, 0x6e73, 0x6e1c, 0x6e33, + 0x6e4b, 0x6e40, 0x6e51, 0x6e3b, 0x6e03, 0x6e2e, 0x6e5e, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6e68, 0x6e5c, 0x6e61, 0x6e31, 0x6e28, 0x6e60, 0x6e71, 0x6e6b, + 0x6e39, 0x6e22, 0x6e30, 0x6e53, 0x6e65, 0x6e27, 0x6e78, 0x6e64, + 0x6e77, 0x6e55, 0x6e79, 0x6e52, 0x6e66, 0x6e35, 0x6e36, 0x6e5a, + 0x7120, 0x711e, 0x712f, 0x70fb, 0x712e, 0x7131, 0x7123, 0x7125, + 0x7122, 0x7132, 0x711f, 0x7128, 0x713a, 0x711b, 0x724b, 0x725a, + 0x7288, 0x7289, 0x7286, 0x7285, 0x728b, 0x7312, 0x730b, 0x7330, + 0x7322, 0x7331, 0x7333, 0x7327, 0x7332, 0x732d, 0x7326, 0x7323, + 0x7335, 0x730c, 0x742e, 0x742c, 0x7430, 0x742b, 0x7416, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x741a, 0x7421, 0x742d, 0x7431, 0x7424, 0x7423, 0x741d, + 0x7429, 0x7420, 0x7432, 0x74fb, 0x752f, 0x756f, 0x756c, 0x75e7, + 0x75da, 0x75e1, 0x75e6, 0x75dd, 0x75df, 0x75e4, 0x75d7, 0x7695, + 0x7692, 0x76da, 0x7746, 0x7747, 0x7744, 0x774d, 0x7745, 0x774a, + 0x774e, 0x774b, 0x774c, 0x77de, 0x77ec, 0x7860, 0x7864, 0x7865, + 0x785c, 0x786d, 0x7871, 0x786a, 0x786e, 0x7870, 0x7869, 0x7868, + 0x785e, 0x7862, 0x7974, 0x7973, 0x7972, 0x7970, 0x7a02, 0x7a0a, + 0x7a03, 0x7a0c, 0x7a04, 0x7a99, 0x7ae6, 0x7ae4, 0x7b4a, 0x7b3b, + 0x7b44, 0x7b48, 0x7b4c, 0x7b4e, 0x7b40, 0x7b58, 0x7b45, 0x7ca2, + 0x7c9e, 0x7ca8, 0x7ca1, 0x7d58, 0x7d6f, 0x7d63, 0x7d53, 0x7d56, + 0x7d67, 0x7d6a, 0x7d4f, 0x7d6d, 0x7d5c, 0x7d6b, 0x7d52, 0x7d54, + 0x7d69, 0x7d51, 0x7d5f, 0x7d4e, 0x7f3e, 0x7f3f, 0x7f65, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x7f66, 0x7fa2, 0x7fa0, 0x7fa1, 0x7fd7, 0x8051, 0x804f, 0x8050, + 0x80fe, 0x80d4, 0x8143, 0x814a, 0x8152, 0x814f, 0x8147, 0x813d, + 0x814d, 0x813a, 0x81e6, 0x81ee, 0x81f7, 0x81f8, 0x81f9, 0x8204, + 0x823c, 0x823d, 0x823f, 0x8275, 0x833b, 0x83cf, 0x83f9, 0x8423, + 0x83c0, 0x83e8, 0x8412, 0x83e7, 0x83e4, 0x83fc, 0x83f6, 0x8410, + 0x83c6, 0x83c8, 0x83eb, 0x83e3, 0x83bf, 0x8401, 0x83dd, 0x83e5, + 0x83d8, 0x83ff, 0x83e1, 0x83cb, 0x83ce, 0x83d6, 0x83f5, 0x83c9, + 0x8409, 0x840f, 0x83de, 0x8411, 0x8406, 0x83c2, 0x83f3, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x83d5, 0x83fa, 0x83c7, 0x83d1, 0x83ea, 0x8413, 0x83c3, + 0x83ec, 0x83ee, 0x83c4, 0x83fb, 0x83d7, 0x83e2, 0x841b, 0x83db, + 0x83fe, 0x86d8, 0x86e2, 0x86e6, 0x86d3, 0x86e3, 0x86da, 0x86ea, + 0x86dd, 0x86eb, 0x86dc, 0x86ec, 0x86e9, 0x86d7, 0x86e8, 0x86d1, + 0x8848, 0x8856, 0x8855, 0x88ba, 0x88d7, 0x88b9, 0x88b8, 0x88c0, + 0x88be, 0x88b6, 0x88bc, 0x88b7, 0x88bd, 0x88b2, 0x8901, 0x88c9, + 0x8995, 0x8998, 0x8997, 0x89dd, 0x89da, 0x89db, 0x8a4e, 0x8a4d, + 0x8a39, 0x8a59, 0x8a40, 0x8a57, 0x8a58, 0x8a44, 0x8a45, 0x8a52, + 0x8a48, 0x8a51, 0x8a4a, 0x8a4c, 0x8a4f, 0x8c5f, 0x8c81, 0x8c80, + 0x8cba, 0x8cbe, 0x8cb0, 0x8cb9, 0x8cb5, 0x8d84, 0x8d80, 0x8d89, + 0x8dd8, 0x8dd3, 0x8dcd, 0x8dc7, 0x8dd6, 0x8ddc, 0x8dcf, 0x8dd5, + 0x8dd9, 0x8dc8, 0x8dd7, 0x8dc5, 0x8eef, 0x8ef7, 0x8efa, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8ef9, 0x8ee6, 0x8eee, 0x8ee5, 0x8ef5, 0x8ee7, 0x8ee8, 0x8ef6, + 0x8eeb, 0x8ef1, 0x8eec, 0x8ef4, 0x8ee9, 0x902d, 0x9034, 0x902f, + 0x9106, 0x912c, 0x9104, 0x90ff, 0x90fc, 0x9108, 0x90f9, 0x90fb, + 0x9101, 0x9100, 0x9107, 0x9105, 0x9103, 0x9161, 0x9164, 0x915f, + 0x9162, 0x9160, 0x9201, 0x920a, 0x9225, 0x9203, 0x921a, 0x9226, + 0x920f, 0x920c, 0x9200, 0x9212, 0x91ff, 0x91fd, 0x9206, 0x9204, + 0x9227, 0x9202, 0x921c, 0x9224, 0x9219, 0x9217, 0x9205, 0x9216, + 0x957b, 0x958d, 0x958c, 0x9590, 0x9687, 0x967e, 0x9688, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x9689, 0x9683, 0x9680, 0x96c2, 0x96c8, 0x96c3, 0x96f1, + 0x96f0, 0x976c, 0x9770, 0x976e, 0x9807, 0x98a9, 0x98eb, 0x9ce6, + 0x9ef9, 0x4e83, 0x4e84, 0x4eb6, 0x50bd, 0x50bf, 0x50c6, 0x50ae, + 0x50c4, 0x50ca, 0x50b4, 0x50c8, 0x50c2, 0x50b0, 0x50c1, 0x50ba, + 0x50b1, 0x50cb, 0x50c9, 0x50b6, 0x50b8, 0x51d7, 0x527a, 0x5278, + 0x527b, 0x527c, 0x55c3, 0x55db, 0x55cc, 0x55d0, 0x55cb, 0x55ca, + 0x55dd, 0x55c0, 0x55d4, 0x55c4, 0x55e9, 0x55bf, 0x55d2, 0x558d, + 0x55cf, 0x55d5, 0x55e2, 0x55d6, 0x55c8, 0x55f2, 0x55cd, 0x55d9, + 0x55c2, 0x5714, 0x5853, 0x5868, 0x5864, 0x584f, 0x584d, 0x5849, + 0x586f, 0x5855, 0x584e, 0x585d, 0x5859, 0x5865, 0x585b, 0x583d, + 0x5863, 0x5871, 0x58fc, 0x5ac7, 0x5ac4, 0x5acb, 0x5aba, 0x5ab8, + 0x5ab1, 0x5ab5, 0x5ab0, 0x5abf, 0x5ac8, 0x5abb, 0x5ac6, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5ab7, 0x5ac0, 0x5aca, 0x5ab4, 0x5ab6, 0x5acd, 0x5ab9, 0x5a90, + 0x5bd6, 0x5bd8, 0x5bd9, 0x5c1f, 0x5c33, 0x5d71, 0x5d63, 0x5d4a, + 0x5d65, 0x5d72, 0x5d6c, 0x5d5e, 0x5d68, 0x5d67, 0x5d62, 0x5df0, + 0x5e4f, 0x5e4e, 0x5e4a, 0x5e4d, 0x5e4b, 0x5ec5, 0x5ecc, 0x5ec6, + 0x5ecb, 0x5ec7, 0x5f40, 0x5faf, 0x5fad, 0x60f7, 0x6149, 0x614a, + 0x612b, 0x6145, 0x6136, 0x6132, 0x612e, 0x6146, 0x612f, 0x614f, + 0x6129, 0x6140, 0x6220, 0x9168, 0x6223, 0x6225, 0x6224, 0x63c5, + 0x63f1, 0x63eb, 0x6410, 0x6412, 0x6409, 0x6420, 0x6424, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6433, 0x6443, 0x641f, 0x6415, 0x6418, 0x6439, 0x6437, + 0x6422, 0x6423, 0x640c, 0x6426, 0x6430, 0x6428, 0x6441, 0x6435, + 0x642f, 0x640a, 0x641a, 0x6440, 0x6425, 0x6427, 0x640b, 0x63e7, + 0x641b, 0x642e, 0x6421, 0x640e, 0x656f, 0x6592, 0x65d3, 0x6686, + 0x668c, 0x6695, 0x6690, 0x668b, 0x668a, 0x6699, 0x6694, 0x6678, + 0x6720, 0x6966, 0x695f, 0x6938, 0x694e, 0x6962, 0x6971, 0x693f, + 0x6945, 0x696a, 0x6939, 0x6942, 0x6957, 0x6959, 0x697a, 0x6948, + 0x6949, 0x6935, 0x696c, 0x6933, 0x693d, 0x6965, 0x68f0, 0x6978, + 0x6934, 0x6969, 0x6940, 0x696f, 0x6944, 0x6976, 0x6958, 0x6941, + 0x6974, 0x694c, 0x693b, 0x694b, 0x6937, 0x695c, 0x694f, 0x6951, + 0x6932, 0x6952, 0x692f, 0x697b, 0x693c, 0x6b46, 0x6b45, 0x6b43, + 0x6b42, 0x6b48, 0x6b41, 0x6b9b, 0xfa0d, 0x6bfb, 0x6bfc, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6bf9, 0x6bf7, 0x6bf8, 0x6e9b, 0x6ed6, 0x6ec8, 0x6e8f, 0x6ec0, + 0x6e9f, 0x6e93, 0x6e94, 0x6ea0, 0x6eb1, 0x6eb9, 0x6ec6, 0x6ed2, + 0x6ebd, 0x6ec1, 0x6e9e, 0x6ec9, 0x6eb7, 0x6eb0, 0x6ecd, 0x6ea6, + 0x6ecf, 0x6eb2, 0x6ebe, 0x6ec3, 0x6edc, 0x6ed8, 0x6e99, 0x6e92, + 0x6e8e, 0x6e8d, 0x6ea4, 0x6ea1, 0x6ebf, 0x6eb3, 0x6ed0, 0x6eca, + 0x6e97, 0x6eae, 0x6ea3, 0x7147, 0x7154, 0x7152, 0x7163, 0x7160, + 0x7141, 0x715d, 0x7162, 0x7172, 0x7178, 0x716a, 0x7161, 0x7142, + 0x7158, 0x7143, 0x714b, 0x7170, 0x715f, 0x7150, 0x7153, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7144, 0x714d, 0x715a, 0x724f, 0x728d, 0x728c, 0x7291, + 0x7290, 0x728e, 0x733c, 0x7342, 0x733b, 0x733a, 0x7340, 0x734a, + 0x7349, 0x7444, 0x744a, 0x744b, 0x7452, 0x7451, 0x7457, 0x7440, + 0x744f, 0x7450, 0x744e, 0x7442, 0x7446, 0x744d, 0x7454, 0x74e1, + 0x74ff, 0x74fe, 0x74fd, 0x751d, 0x7579, 0x7577, 0x6983, 0x75ef, + 0x760f, 0x7603, 0x75f7, 0x75fe, 0x75fc, 0x75f9, 0x75f8, 0x7610, + 0x75fb, 0x75f6, 0x75ed, 0x75f5, 0x75fd, 0x7699, 0x76b5, 0x76dd, + 0x7755, 0x775f, 0x7760, 0x7752, 0x7756, 0x775a, 0x7769, 0x7767, + 0x7754, 0x7759, 0x776d, 0x77e0, 0x7887, 0x789a, 0x7894, 0x788f, + 0x7884, 0x7895, 0x7885, 0x7886, 0x78a1, 0x7883, 0x7879, 0x7899, + 0x7880, 0x7896, 0x787b, 0x797c, 0x7982, 0x797d, 0x7979, 0x7a11, + 0x7a18, 0x7a19, 0x7a12, 0x7a17, 0x7a15, 0x7a22, 0x7a13, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x7a1b, 0x7a10, 0x7aa3, 0x7aa2, 0x7a9e, 0x7aeb, 0x7b66, 0x7b64, + 0x7b6d, 0x7b74, 0x7b69, 0x7b72, 0x7b65, 0x7b73, 0x7b71, 0x7b70, + 0x7b61, 0x7b78, 0x7b76, 0x7b63, 0x7cb2, 0x7cb4, 0x7caf, 0x7d88, + 0x7d86, 0x7d80, 0x7d8d, 0x7d7f, 0x7d85, 0x7d7a, 0x7d8e, 0x7d7b, + 0x7d83, 0x7d7c, 0x7d8c, 0x7d94, 0x7d84, 0x7d7d, 0x7d92, 0x7f6d, + 0x7f6b, 0x7f67, 0x7f68, 0x7f6c, 0x7fa6, 0x7fa5, 0x7fa7, 0x7fdb, + 0x7fdc, 0x8021, 0x8164, 0x8160, 0x8177, 0x815c, 0x8169, 0x815b, + 0x8162, 0x8172, 0x6721, 0x815e, 0x8176, 0x8167, 0x816f, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8144, 0x8161, 0x821d, 0x8249, 0x8244, 0x8240, 0x8242, + 0x8245, 0x84f1, 0x843f, 0x8456, 0x8476, 0x8479, 0x848f, 0x848d, + 0x8465, 0x8451, 0x8440, 0x8486, 0x8467, 0x8430, 0x844d, 0x847d, + 0x845a, 0x8459, 0x8474, 0x8473, 0x845d, 0x8507, 0x845e, 0x8437, + 0x843a, 0x8434, 0x847a, 0x8443, 0x8478, 0x8432, 0x8445, 0x8429, + 0x83d9, 0x844b, 0x842f, 0x8442, 0x842d, 0x845f, 0x8470, 0x8439, + 0x844e, 0x844c, 0x8452, 0x846f, 0x84c5, 0x848e, 0x843b, 0x8447, + 0x8436, 0x8433, 0x8468, 0x847e, 0x8444, 0x842b, 0x8460, 0x8454, + 0x846e, 0x8450, 0x870b, 0x8704, 0x86f7, 0x870c, 0x86fa, 0x86d6, + 0x86f5, 0x874d, 0x86f8, 0x870e, 0x8709, 0x8701, 0x86f6, 0x870d, + 0x8705, 0x88d6, 0x88cb, 0x88cd, 0x88ce, 0x88de, 0x88db, 0x88da, + 0x88cc, 0x88d0, 0x8985, 0x899b, 0x89df, 0x89e5, 0x89e4, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x89e1, 0x89e0, 0x89e2, 0x89dc, 0x89e6, 0x8a76, 0x8a86, 0x8a7f, + 0x8a61, 0x8a3f, 0x8a77, 0x8a82, 0x8a84, 0x8a75, 0x8a83, 0x8a81, + 0x8a74, 0x8a7a, 0x8c3c, 0x8c4b, 0x8c4a, 0x8c65, 0x8c64, 0x8c66, + 0x8c86, 0x8c84, 0x8c85, 0x8ccc, 0x8d68, 0x8d69, 0x8d91, 0x8d8c, + 0x8d8e, 0x8d8f, 0x8d8d, 0x8d93, 0x8d94, 0x8d90, 0x8d92, 0x8df0, + 0x8de0, 0x8dec, 0x8df1, 0x8dee, 0x8dd0, 0x8de9, 0x8de3, 0x8de2, + 0x8de7, 0x8df2, 0x8deb, 0x8df4, 0x8f06, 0x8eff, 0x8f01, 0x8f00, + 0x8f05, 0x8f07, 0x8f08, 0x8f02, 0x8f0b, 0x9052, 0x903f, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x9044, 0x9049, 0x903d, 0x9110, 0x910d, 0x910f, 0x9111, + 0x9116, 0x9114, 0x910b, 0x910e, 0x916e, 0x916f, 0x9248, 0x9252, + 0x9230, 0x923a, 0x9266, 0x9233, 0x9265, 0x925e, 0x9283, 0x922e, + 0x924a, 0x9246, 0x926d, 0x926c, 0x924f, 0x9260, 0x9267, 0x926f, + 0x9236, 0x9261, 0x9270, 0x9231, 0x9254, 0x9263, 0x9250, 0x9272, + 0x924e, 0x9253, 0x924c, 0x9256, 0x9232, 0x959f, 0x959c, 0x959e, + 0x959b, 0x9692, 0x9693, 0x9691, 0x9697, 0x96ce, 0x96fa, 0x96fd, + 0x96f8, 0x96f5, 0x9773, 0x9777, 0x9778, 0x9772, 0x980f, 0x980d, + 0x980e, 0x98ac, 0x98f6, 0x98f9, 0x99af, 0x99b2, 0x99b0, 0x99b5, + 0x9aad, 0x9aab, 0x9b5b, 0x9cea, 0x9ced, 0x9ce7, 0x9e80, 0x9efd, + 0x50e6, 0x50d4, 0x50d7, 0x50e8, 0x50f3, 0x50db, 0x50ea, 0x50dd, + 0x50e4, 0x50d3, 0x50ec, 0x50f0, 0x50ef, 0x50e3, 0x50e0, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x51d8, 0x5280, 0x5281, 0x52e9, 0x52eb, 0x5330, 0x53ac, 0x5627, + 0x5615, 0x560c, 0x5612, 0x55fc, 0x560f, 0x561c, 0x5601, 0x5613, + 0x5602, 0x55fa, 0x561d, 0x5604, 0x55ff, 0x55f9, 0x5889, 0x587c, + 0x5890, 0x5898, 0x5886, 0x5881, 0x587f, 0x5874, 0x588b, 0x587a, + 0x5887, 0x5891, 0x588e, 0x5876, 0x5882, 0x5888, 0x587b, 0x5894, + 0x588f, 0x58fe, 0x596b, 0x5adc, 0x5aee, 0x5ae5, 0x5ad5, 0x5aea, + 0x5ada, 0x5aed, 0x5aeb, 0x5af3, 0x5ae2, 0x5ae0, 0x5adb, 0x5aec, + 0x5ade, 0x5add, 0x5ad9, 0x5ae8, 0x5adf, 0x5b77, 0x5be0, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5be3, 0x5c63, 0x5d82, 0x5d80, 0x5d7d, 0x5d86, 0x5d7a, + 0x5d81, 0x5d77, 0x5d8a, 0x5d89, 0x5d88, 0x5d7e, 0x5d7c, 0x5d8d, + 0x5d79, 0x5d7f, 0x5e58, 0x5e59, 0x5e53, 0x5ed8, 0x5ed1, 0x5ed7, + 0x5ece, 0x5edc, 0x5ed5, 0x5ed9, 0x5ed2, 0x5ed4, 0x5f44, 0x5f43, + 0x5f6f, 0x5fb6, 0x612c, 0x6128, 0x6141, 0x615e, 0x6171, 0x6173, + 0x6152, 0x6153, 0x6172, 0x616c, 0x6180, 0x6174, 0x6154, 0x617a, + 0x615b, 0x6165, 0x613b, 0x616a, 0x6161, 0x6156, 0x6229, 0x6227, + 0x622b, 0x642b, 0x644d, 0x645b, 0x645d, 0x6474, 0x6476, 0x6472, + 0x6473, 0x647d, 0x6475, 0x6466, 0x64a6, 0x644e, 0x6482, 0x645e, + 0x645c, 0x644b, 0x6453, 0x6460, 0x6450, 0x647f, 0x643f, 0x646c, + 0x646b, 0x6459, 0x6465, 0x6477, 0x6573, 0x65a0, 0x66a1, 0x66a0, + 0x669f, 0x6705, 0x6704, 0x6722, 0x69b1, 0x69b6, 0x69c9, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x69a0, 0x69ce, 0x6996, 0x69b0, 0x69ac, 0x69bc, 0x6991, 0x6999, + 0x698e, 0x69a7, 0x698d, 0x69a9, 0x69be, 0x69af, 0x69bf, 0x69c4, + 0x69bd, 0x69a4, 0x69d4, 0x69b9, 0x69ca, 0x699a, 0x69cf, 0x69b3, + 0x6993, 0x69aa, 0x69a1, 0x699e, 0x69d9, 0x6997, 0x6990, 0x69c2, + 0x69b5, 0x69a5, 0x69c6, 0x6b4a, 0x6b4d, 0x6b4b, 0x6b9e, 0x6b9f, + 0x6ba0, 0x6bc3, 0x6bc4, 0x6bfe, 0x6ece, 0x6ef5, 0x6ef1, 0x6f03, + 0x6f25, 0x6ef8, 0x6f37, 0x6efb, 0x6f2e, 0x6f09, 0x6f4e, 0x6f19, + 0x6f1a, 0x6f27, 0x6f18, 0x6f3b, 0x6f12, 0x6eed, 0x6f0a, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6f36, 0x6f73, 0x6ef9, 0x6eee, 0x6f2d, 0x6f40, 0x6f30, + 0x6f3c, 0x6f35, 0x6eeb, 0x6f07, 0x6f0e, 0x6f43, 0x6f05, 0x6efd, + 0x6ef6, 0x6f39, 0x6f1c, 0x6efc, 0x6f3a, 0x6f1f, 0x6f0d, 0x6f1e, + 0x6f08, 0x6f21, 0x7187, 0x7190, 0x7189, 0x7180, 0x7185, 0x7182, + 0x718f, 0x717b, 0x7186, 0x7181, 0x7197, 0x7244, 0x7253, 0x7297, + 0x7295, 0x7293, 0x7343, 0x734d, 0x7351, 0x734c, 0x7462, 0x7473, + 0x7471, 0x7475, 0x7472, 0x7467, 0x746e, 0x7500, 0x7502, 0x7503, + 0x757d, 0x7590, 0x7616, 0x7608, 0x760c, 0x7615, 0x7611, 0x760a, + 0x7614, 0x76b8, 0x7781, 0x777c, 0x7785, 0x7782, 0x776e, 0x7780, + 0x776f, 0x777e, 0x7783, 0x78b2, 0x78aa, 0x78b4, 0x78ad, 0x78a8, + 0x787e, 0x78ab, 0x789e, 0x78a5, 0x78a0, 0x78ac, 0x78a2, 0x78a4, + 0x7998, 0x798a, 0x798b, 0x7996, 0x7995, 0x7994, 0x7993, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x7997, 0x7988, 0x7992, 0x7990, 0x7a2b, 0x7a4a, 0x7a30, 0x7a2f, + 0x7a28, 0x7a26, 0x7aa8, 0x7aab, 0x7aac, 0x7aee, 0x7b88, 0x7b9c, + 0x7b8a, 0x7b91, 0x7b90, 0x7b96, 0x7b8d, 0x7b8c, 0x7b9b, 0x7b8e, + 0x7b85, 0x7b98, 0x5284, 0x7b99, 0x7ba4, 0x7b82, 0x7cbb, 0x7cbf, + 0x7cbc, 0x7cba, 0x7da7, 0x7db7, 0x7dc2, 0x7da3, 0x7daa, 0x7dc1, + 0x7dc0, 0x7dc5, 0x7d9d, 0x7dce, 0x7dc4, 0x7dc6, 0x7dcb, 0x7dcc, + 0x7daf, 0x7db9, 0x7d96, 0x7dbc, 0x7d9f, 0x7da6, 0x7dae, 0x7da9, + 0x7da1, 0x7dc9, 0x7f73, 0x7fe2, 0x7fe3, 0x7fe5, 0x7fde, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8024, 0x805d, 0x805c, 0x8189, 0x8186, 0x8183, 0x8187, + 0x818d, 0x818c, 0x818b, 0x8215, 0x8497, 0x84a4, 0x84a1, 0x849f, + 0x84ba, 0x84ce, 0x84c2, 0x84ac, 0x84ae, 0x84ab, 0x84b9, 0x84b4, + 0x84c1, 0x84cd, 0x84aa, 0x849a, 0x84b1, 0x84d0, 0x849d, 0x84a7, + 0x84bb, 0x84a2, 0x8494, 0x84c7, 0x84cc, 0x849b, 0x84a9, 0x84af, + 0x84a8, 0x84d6, 0x8498, 0x84b6, 0x84cf, 0x84a0, 0x84d7, 0x84d4, + 0x84d2, 0x84db, 0x84b0, 0x8491, 0x8661, 0x8733, 0x8723, 0x8728, + 0x876b, 0x8740, 0x872e, 0x871e, 0x8721, 0x8719, 0x871b, 0x8743, + 0x872c, 0x8741, 0x873e, 0x8746, 0x8720, 0x8732, 0x872a, 0x872d, + 0x873c, 0x8712, 0x873a, 0x8731, 0x8735, 0x8742, 0x8726, 0x8727, + 0x8738, 0x8724, 0x871a, 0x8730, 0x8711, 0x88f7, 0x88e7, 0x88f1, + 0x88f2, 0x88fa, 0x88fe, 0x88ee, 0x88fc, 0x88f6, 0x88fb, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x88f0, 0x88ec, 0x88eb, 0x899d, 0x89a1, 0x899f, 0x899e, 0x89e9, + 0x89eb, 0x89e8, 0x8aab, 0x8a99, 0x8a8b, 0x8a92, 0x8a8f, 0x8a96, + 0x8c3d, 0x8c68, 0x8c69, 0x8cd5, 0x8ccf, 0x8cd7, 0x8d96, 0x8e09, + 0x8e02, 0x8dff, 0x8e0d, 0x8dfd, 0x8e0a, 0x8e03, 0x8e07, 0x8e06, + 0x8e05, 0x8dfe, 0x8e00, 0x8e04, 0x8f10, 0x8f11, 0x8f0e, 0x8f0d, + 0x9123, 0x911c, 0x9120, 0x9122, 0x911f, 0x911d, 0x911a, 0x9124, + 0x9121, 0x911b, 0x917a, 0x9172, 0x9179, 0x9173, 0x92a5, 0x92a4, + 0x9276, 0x929b, 0x927a, 0x92a0, 0x9294, 0x92aa, 0x928d, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x92a6, 0x929a, 0x92ab, 0x9279, 0x9297, 0x927f, 0x92a3, + 0x92ee, 0x928e, 0x9282, 0x9295, 0x92a2, 0x927d, 0x9288, 0x92a1, + 0x928a, 0x9286, 0x928c, 0x9299, 0x92a7, 0x927e, 0x9287, 0x92a9, + 0x929d, 0x928b, 0x922d, 0x969e, 0x96a1, 0x96ff, 0x9758, 0x977d, + 0x977a, 0x977e, 0x9783, 0x9780, 0x9782, 0x977b, 0x9784, 0x9781, + 0x977f, 0x97ce, 0x97cd, 0x9816, 0x98ad, 0x98ae, 0x9902, 0x9900, + 0x9907, 0x999d, 0x999c, 0x99c3, 0x99b9, 0x99bb, 0x99ba, 0x99c2, + 0x99bd, 0x99c7, 0x9ab1, 0x9ae3, 0x9ae7, 0x9b3e, 0x9b3f, 0x9b60, + 0x9b61, 0x9b5f, 0x9cf1, 0x9cf2, 0x9cf5, 0x9ea7, 0x50ff, 0x5103, + 0x5130, 0x50f8, 0x5106, 0x5107, 0x50f6, 0x50fe, 0x510b, 0x510c, + 0x50fd, 0x510a, 0x528b, 0x528c, 0x52f1, 0x52ef, 0x5648, 0x5642, + 0x564c, 0x5635, 0x5641, 0x564a, 0x5649, 0x5646, 0x5658, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x565a, 0x5640, 0x5633, 0x563d, 0x562c, 0x563e, 0x5638, 0x562a, + 0x563a, 0x571a, 0x58ab, 0x589d, 0x58b1, 0x58a0, 0x58a3, 0x58af, + 0x58ac, 0x58a5, 0x58a1, 0x58ff, 0x5aff, 0x5af4, 0x5afd, 0x5af7, + 0x5af6, 0x5b03, 0x5af8, 0x5b02, 0x5af9, 0x5b01, 0x5b07, 0x5b05, + 0x5b0f, 0x5c67, 0x5d99, 0x5d97, 0x5d9f, 0x5d92, 0x5da2, 0x5d93, + 0x5d95, 0x5da0, 0x5d9c, 0x5da1, 0x5d9a, 0x5d9e, 0x5e69, 0x5e5d, + 0x5e60, 0x5e5c, 0x7df3, 0x5edb, 0x5ede, 0x5ee1, 0x5f49, 0x5fb2, + 0x618b, 0x6183, 0x6179, 0x61b1, 0x61b0, 0x61a2, 0x6189, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x619b, 0x6193, 0x61af, 0x61ad, 0x619f, 0x6192, 0x61aa, + 0x61a1, 0x618d, 0x6166, 0x61b3, 0x622d, 0x646e, 0x6470, 0x6496, + 0x64a0, 0x6485, 0x6497, 0x649c, 0x648f, 0x648b, 0x648a, 0x648c, + 0x64a3, 0x649f, 0x6468, 0x64b1, 0x6498, 0x6576, 0x657a, 0x6579, + 0x657b, 0x65b2, 0x65b3, 0x66b5, 0x66b0, 0x66a9, 0x66b2, 0x66b7, + 0x66aa, 0x66af, 0x6a00, 0x6a06, 0x6a17, 0x69e5, 0x69f8, 0x6a15, + 0x69f1, 0x69e4, 0x6a20, 0x69ff, 0x69ec, 0x69e2, 0x6a1b, 0x6a1d, + 0x69fe, 0x6a27, 0x69f2, 0x69ee, 0x6a14, 0x69f7, 0x69e7, 0x6a40, + 0x6a08, 0x69e6, 0x69fb, 0x6a0d, 0x69fc, 0x69eb, 0x6a09, 0x6a04, + 0x6a18, 0x6a25, 0x6a0f, 0x69f6, 0x6a26, 0x6a07, 0x69f4, 0x6a16, + 0x6b51, 0x6ba5, 0x6ba3, 0x6ba2, 0x6ba6, 0x6c01, 0x6c00, 0x6bff, + 0x6c02, 0x6f41, 0x6f26, 0x6f7e, 0x6f87, 0x6fc6, 0x6f92, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6f8d, 0x6f89, 0x6f8c, 0x6f62, 0x6f4f, 0x6f85, 0x6f5a, 0x6f96, + 0x6f76, 0x6f6c, 0x6f82, 0x6f55, 0x6f72, 0x6f52, 0x6f50, 0x6f57, + 0x6f94, 0x6f93, 0x6f5d, 0x6f00, 0x6f61, 0x6f6b, 0x6f7d, 0x6f67, + 0x6f90, 0x6f53, 0x6f8b, 0x6f69, 0x6f7f, 0x6f95, 0x6f63, 0x6f77, + 0x6f6a, 0x6f7b, 0x71b2, 0x71af, 0x719b, 0x71b0, 0x71a0, 0x719a, + 0x71a9, 0x71b5, 0x719d, 0x71a5, 0x719e, 0x71a4, 0x71a1, 0x71aa, + 0x719c, 0x71a7, 0x71b3, 0x7298, 0x729a, 0x7358, 0x7352, 0x735e, + 0x735f, 0x7360, 0x735d, 0x735b, 0x7361, 0x735a, 0x7359, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7362, 0x7487, 0x7489, 0x748a, 0x7486, 0x7481, 0x747d, + 0x7485, 0x7488, 0x747c, 0x7479, 0x7508, 0x7507, 0x757e, 0x7625, + 0x761e, 0x7619, 0x761d, 0x761c, 0x7623, 0x761a, 0x7628, 0x761b, + 0x769c, 0x769d, 0x769e, 0x769b, 0x778d, 0x778f, 0x7789, 0x7788, + 0x78cd, 0x78bb, 0x78cf, 0x78cc, 0x78d1, 0x78ce, 0x78d4, 0x78c8, + 0x78c3, 0x78c4, 0x78c9, 0x799a, 0x79a1, 0x79a0, 0x799c, 0x79a2, + 0x799b, 0x6b76, 0x7a39, 0x7ab2, 0x7ab4, 0x7ab3, 0x7bb7, 0x7bcb, + 0x7bbe, 0x7bac, 0x7bce, 0x7baf, 0x7bb9, 0x7bca, 0x7bb5, 0x7cc5, + 0x7cc8, 0x7ccc, 0x7ccb, 0x7df7, 0x7ddb, 0x7dea, 0x7de7, 0x7dd7, + 0x7de1, 0x7e03, 0x7dfa, 0x7de6, 0x7df6, 0x7df1, 0x7df0, 0x7dee, + 0x7ddf, 0x7f76, 0x7fac, 0x7fb0, 0x7fad, 0x7fed, 0x7feb, 0x7fea, + 0x7fec, 0x7fe6, 0x7fe8, 0x8064, 0x8067, 0x81a3, 0x819f, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x819e, 0x8195, 0x81a2, 0x8199, 0x8197, 0x8216, 0x824f, 0x8253, + 0x8252, 0x8250, 0x824e, 0x8251, 0x8524, 0x853b, 0x850f, 0x8500, + 0x8529, 0x850e, 0x8509, 0x850d, 0x851f, 0x850a, 0x8527, 0x851c, + 0x84fb, 0x852b, 0x84fa, 0x8508, 0x850c, 0x84f4, 0x852a, 0x84f2, + 0x8515, 0x84f7, 0x84eb, 0x84f3, 0x84fc, 0x8512, 0x84ea, 0x84e9, + 0x8516, 0x84fe, 0x8528, 0x851d, 0x852e, 0x8502, 0x84fd, 0x851e, + 0x84f6, 0x8531, 0x8526, 0x84e7, 0x84e8, 0x84f0, 0x84ef, 0x84f9, + 0x8518, 0x8520, 0x8530, 0x850b, 0x8519, 0x852f, 0x8662, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8756, 0x8763, 0x8764, 0x8777, 0x87e1, 0x8773, 0x8758, + 0x8754, 0x875b, 0x8752, 0x8761, 0x875a, 0x8751, 0x875e, 0x876d, + 0x876a, 0x8750, 0x874e, 0x875f, 0x875d, 0x876f, 0x876c, 0x877a, + 0x876e, 0x875c, 0x8765, 0x874f, 0x877b, 0x8775, 0x8762, 0x8767, + 0x8769, 0x885a, 0x8905, 0x890c, 0x8914, 0x890b, 0x8917, 0x8918, + 0x8919, 0x8906, 0x8916, 0x8911, 0x890e, 0x8909, 0x89a2, 0x89a4, + 0x89a3, 0x89ed, 0x89f0, 0x89ec, 0x8acf, 0x8ac6, 0x8ab8, 0x8ad3, + 0x8ad1, 0x8ad4, 0x8ad5, 0x8abb, 0x8ad7, 0x8abe, 0x8ac0, 0x8ac5, + 0x8ad8, 0x8ac3, 0x8aba, 0x8abd, 0x8ad9, 0x8c3e, 0x8c4d, 0x8c8f, + 0x8ce5, 0x8cdf, 0x8cd9, 0x8ce8, 0x8cda, 0x8cdd, 0x8ce7, 0x8da0, + 0x8d9c, 0x8da1, 0x8d9b, 0x8e20, 0x8e23, 0x8e25, 0x8e24, 0x8e2e, + 0x8e15, 0x8e1b, 0x8e16, 0x8e11, 0x8e19, 0x8e26, 0x8e27, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8e14, 0x8e12, 0x8e18, 0x8e13, 0x8e1c, 0x8e17, 0x8e1a, 0x8f2c, + 0x8f24, 0x8f18, 0x8f1a, 0x8f20, 0x8f23, 0x8f16, 0x8f17, 0x9073, + 0x9070, 0x906f, 0x9067, 0x906b, 0x912f, 0x912b, 0x9129, 0x912a, + 0x9132, 0x9126, 0x912e, 0x9185, 0x9186, 0x918a, 0x9181, 0x9182, + 0x9184, 0x9180, 0x92d0, 0x92c3, 0x92c4, 0x92c0, 0x92d9, 0x92b6, + 0x92cf, 0x92f1, 0x92df, 0x92d8, 0x92e9, 0x92d7, 0x92dd, 0x92cc, + 0x92ef, 0x92c2, 0x92e8, 0x92ca, 0x92c8, 0x92ce, 0x92e6, 0x92cd, + 0x92d5, 0x92c9, 0x92e0, 0x92de, 0x92e7, 0x92d1, 0x92d3, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x92b5, 0x92e1, 0x92c6, 0x92b4, 0x957c, 0x95ac, 0x95ab, + 0x95ae, 0x95b0, 0x96a4, 0x96a2, 0x96d3, 0x9705, 0x9708, 0x9702, + 0x975a, 0x978a, 0x978e, 0x9788, 0x97d0, 0x97cf, 0x981e, 0x981d, + 0x9826, 0x9829, 0x9828, 0x9820, 0x981b, 0x9827, 0x98b2, 0x9908, + 0x98fa, 0x9911, 0x9914, 0x9916, 0x9917, 0x9915, 0x99dc, 0x99cd, + 0x99cf, 0x99d3, 0x99d4, 0x99ce, 0x99c9, 0x99d6, 0x99d8, 0x99cb, + 0x99d7, 0x99cc, 0x9ab3, 0x9aec, 0x9aeb, 0x9af3, 0x9af2, 0x9af1, + 0x9b46, 0x9b43, 0x9b67, 0x9b74, 0x9b71, 0x9b66, 0x9b76, 0x9b75, + 0x9b70, 0x9b68, 0x9b64, 0x9b6c, 0x9cfc, 0x9cfa, 0x9cfd, 0x9cff, + 0x9cf7, 0x9d07, 0x9d00, 0x9cf9, 0x9cfb, 0x9d08, 0x9d05, 0x9d04, + 0x9e83, 0x9ed3, 0x9f0f, 0x9f10, 0x511c, 0x5113, 0x5117, 0x511a, + 0x5111, 0x51de, 0x5334, 0x53e1, 0x5670, 0x5660, 0x566e, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5673, 0x5666, 0x5663, 0x566d, 0x5672, 0x565e, 0x5677, 0x571c, + 0x571b, 0x58c8, 0x58bd, 0x58c9, 0x58bf, 0x58ba, 0x58c2, 0x58bc, + 0x58c6, 0x5b17, 0x5b19, 0x5b1b, 0x5b21, 0x5b14, 0x5b13, 0x5b10, + 0x5b16, 0x5b28, 0x5b1a, 0x5b20, 0x5b1e, 0x5bef, 0x5dac, 0x5db1, + 0x5da9, 0x5da7, 0x5db5, 0x5db0, 0x5dae, 0x5daa, 0x5da8, 0x5db2, + 0x5dad, 0x5daf, 0x5db4, 0x5e67, 0x5e68, 0x5e66, 0x5e6f, 0x5ee9, + 0x5ee7, 0x5ee6, 0x5ee8, 0x5ee5, 0x5f4b, 0x5fbc, 0x619d, 0x61a8, + 0x6196, 0x61c5, 0x61b4, 0x61c6, 0x61c1, 0x61cc, 0x61ba, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x61bf, 0x61b8, 0x618c, 0x64d7, 0x64d6, 0x64d0, 0x64cf, + 0x64c9, 0x64bd, 0x6489, 0x64c3, 0x64db, 0x64f3, 0x64d9, 0x6533, + 0x657f, 0x657c, 0x65a2, 0x66c8, 0x66be, 0x66c0, 0x66ca, 0x66cb, + 0x66cf, 0x66bd, 0x66bb, 0x66ba, 0x66cc, 0x6723, 0x6a34, 0x6a66, + 0x6a49, 0x6a67, 0x6a32, 0x6a68, 0x6a3e, 0x6a5d, 0x6a6d, 0x6a76, + 0x6a5b, 0x6a51, 0x6a28, 0x6a5a, 0x6a3b, 0x6a3f, 0x6a41, 0x6a6a, + 0x6a64, 0x6a50, 0x6a4f, 0x6a54, 0x6a6f, 0x6a69, 0x6a60, 0x6a3c, + 0x6a5e, 0x6a56, 0x6a55, 0x6a4d, 0x6a4e, 0x6a46, 0x6b55, 0x6b54, + 0x6b56, 0x6ba7, 0x6baa, 0x6bab, 0x6bc8, 0x6bc7, 0x6c04, 0x6c03, + 0x6c06, 0x6fad, 0x6fcb, 0x6fa3, 0x6fc7, 0x6fbc, 0x6fce, 0x6fc8, + 0x6f5e, 0x6fc4, 0x6fbd, 0x6f9e, 0x6fca, 0x6fa8, 0x7004, 0x6fa5, + 0x6fae, 0x6fba, 0x6fac, 0x6faa, 0x6fcf, 0x6fbf, 0x6fb8, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6fa2, 0x6fc9, 0x6fab, 0x6fcd, 0x6faf, 0x6fb2, 0x6fb0, 0x71c5, + 0x71c2, 0x71bf, 0x71b8, 0x71d6, 0x71c0, 0x71c1, 0x71cb, 0x71d4, + 0x71ca, 0x71c7, 0x71cf, 0x71bd, 0x71d8, 0x71bc, 0x71c6, 0x71da, + 0x71db, 0x729d, 0x729e, 0x7369, 0x7366, 0x7367, 0x736c, 0x7365, + 0x736b, 0x736a, 0x747f, 0x749a, 0x74a0, 0x7494, 0x7492, 0x7495, + 0x74a1, 0x750b, 0x7580, 0x762f, 0x762d, 0x7631, 0x763d, 0x7633, + 0x763c, 0x7635, 0x7632, 0x7630, 0x76bb, 0x76e6, 0x779a, 0x779d, + 0x77a1, 0x779c, 0x779b, 0x77a2, 0x77a3, 0x7795, 0x7799, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7797, 0x78dd, 0x78e9, 0x78e5, 0x78ea, 0x78de, 0x78e3, + 0x78db, 0x78e1, 0x78e2, 0x78ed, 0x78df, 0x78e0, 0x79a4, 0x7a44, + 0x7a48, 0x7a47, 0x7ab6, 0x7ab8, 0x7ab5, 0x7ab1, 0x7ab7, 0x7bde, + 0x7be3, 0x7be7, 0x7bdd, 0x7bd5, 0x7be5, 0x7bda, 0x7be8, 0x7bf9, + 0x7bd4, 0x7bea, 0x7be2, 0x7bdc, 0x7beb, 0x7bd8, 0x7bdf, 0x7cd2, + 0x7cd4, 0x7cd7, 0x7cd0, 0x7cd1, 0x7e12, 0x7e21, 0x7e17, 0x7e0c, + 0x7e1f, 0x7e20, 0x7e13, 0x7e0e, 0x7e1c, 0x7e15, 0x7e1a, 0x7e22, + 0x7e0b, 0x7e0f, 0x7e16, 0x7e0d, 0x7e14, 0x7e25, 0x7e24, 0x7f43, + 0x7f7b, 0x7f7c, 0x7f7a, 0x7fb1, 0x7fef, 0x802a, 0x8029, 0x806c, + 0x81b1, 0x81a6, 0x81ae, 0x81b9, 0x81b5, 0x81ab, 0x81b0, 0x81ac, + 0x81b4, 0x81b2, 0x81b7, 0x81a7, 0x81f2, 0x8255, 0x8256, 0x8257, + 0x8556, 0x8545, 0x856b, 0x854d, 0x8553, 0x8561, 0x8558, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8540, 0x8546, 0x8564, 0x8541, 0x8562, 0x8544, 0x8551, 0x8547, + 0x8563, 0x853e, 0x855b, 0x8571, 0x854e, 0x856e, 0x8575, 0x8555, + 0x8567, 0x8560, 0x858c, 0x8566, 0x855d, 0x8554, 0x8565, 0x856c, + 0x8663, 0x8665, 0x8664, 0x879b, 0x878f, 0x8797, 0x8793, 0x8792, + 0x8788, 0x8781, 0x8796, 0x8798, 0x8779, 0x8787, 0x87a3, 0x8785, + 0x8790, 0x8791, 0x879d, 0x8784, 0x8794, 0x879c, 0x879a, 0x8789, + 0x891e, 0x8926, 0x8930, 0x892d, 0x892e, 0x8927, 0x8931, 0x8922, + 0x8929, 0x8923, 0x892f, 0x892c, 0x891f, 0x89f1, 0x8ae0, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8ae2, 0x8af2, 0x8af4, 0x8af5, 0x8add, 0x8b14, 0x8ae4, + 0x8adf, 0x8af0, 0x8ac8, 0x8ade, 0x8ae1, 0x8ae8, 0x8aff, 0x8aef, + 0x8afb, 0x8c91, 0x8c92, 0x8c90, 0x8cf5, 0x8cee, 0x8cf1, 0x8cf0, + 0x8cf3, 0x8d6c, 0x8d6e, 0x8da5, 0x8da7, 0x8e33, 0x8e3e, 0x8e38, + 0x8e40, 0x8e45, 0x8e36, 0x8e3c, 0x8e3d, 0x8e41, 0x8e30, 0x8e3f, + 0x8ebd, 0x8f36, 0x8f2e, 0x8f35, 0x8f32, 0x8f39, 0x8f37, 0x8f34, + 0x9076, 0x9079, 0x907b, 0x9086, 0x90fa, 0x9133, 0x9135, 0x9136, + 0x9193, 0x9190, 0x9191, 0x918d, 0x918f, 0x9327, 0x931e, 0x9308, + 0x931f, 0x9306, 0x930f, 0x937a, 0x9338, 0x933c, 0x931b, 0x9323, + 0x9312, 0x9301, 0x9346, 0x932d, 0x930e, 0x930d, 0x92cb, 0x931d, + 0x92fa, 0x9325, 0x9313, 0x92f9, 0x92f7, 0x9334, 0x9302, 0x9324, + 0x92ff, 0x9329, 0x9339, 0x9335, 0x932a, 0x9314, 0x930c, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x930b, 0x92fe, 0x9309, 0x9300, 0x92fb, 0x9316, 0x95bc, 0x95cd, + 0x95be, 0x95b9, 0x95ba, 0x95b6, 0x95bf, 0x95b5, 0x95bd, 0x96a9, + 0x96d4, 0x970b, 0x9712, 0x9710, 0x9799, 0x9797, 0x9794, 0x97f0, + 0x97f8, 0x9835, 0x982f, 0x9832, 0x9924, 0x991f, 0x9927, 0x9929, + 0x999e, 0x99ee, 0x99ec, 0x99e5, 0x99e4, 0x99f0, 0x99e3, 0x99ea, + 0x99e9, 0x99e7, 0x9ab9, 0x9abf, 0x9ab4, 0x9abb, 0x9af6, 0x9afa, + 0x9af9, 0x9af7, 0x9b33, 0x9b80, 0x9b85, 0x9b87, 0x9b7c, 0x9b7e, + 0x9b7b, 0x9b82, 0x9b93, 0x9b92, 0x9b90, 0x9b7a, 0x9b95, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x9b7d, 0x9b88, 0x9d25, 0x9d17, 0x9d20, 0x9d1e, 0x9d14, + 0x9d29, 0x9d1d, 0x9d18, 0x9d22, 0x9d10, 0x9d19, 0x9d1f, 0x9e88, + 0x9e86, 0x9e87, 0x9eae, 0x9ead, 0x9ed5, 0x9ed6, 0x9efa, 0x9f12, + 0x9f3d, 0x5126, 0x5125, 0x5122, 0x5124, 0x5120, 0x5129, 0x52f4, + 0x5693, 0x568c, 0x568d, 0x5686, 0x5684, 0x5683, 0x567e, 0x5682, + 0x567f, 0x5681, 0x58d6, 0x58d4, 0x58cf, 0x58d2, 0x5b2d, 0x5b25, + 0x5b32, 0x5b23, 0x5b2c, 0x5b27, 0x5b26, 0x5b2f, 0x5b2e, 0x5b7b, + 0x5bf1, 0x5bf2, 0x5db7, 0x5e6c, 0x5e6a, 0x5fbe, 0x5fbb, 0x61c3, + 0x61b5, 0x61bc, 0x61e7, 0x61e0, 0x61e5, 0x61e4, 0x61e8, 0x61de, + 0x64ef, 0x64e9, 0x64e3, 0x64eb, 0x64e4, 0x64e8, 0x6581, 0x6580, + 0x65b6, 0x65da, 0x66d2, 0x6a8d, 0x6a96, 0x6a81, 0x6aa5, 0x6a89, + 0x6a9f, 0x6a9b, 0x6aa1, 0x6a9e, 0x6a87, 0x6a93, 0x6a8e, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6a95, 0x6a83, 0x6aa8, 0x6aa4, 0x6a91, 0x6a7f, 0x6aa6, 0x6a9a, + 0x6a85, 0x6a8c, 0x6a92, 0x6b5b, 0x6bad, 0x6c09, 0x6fcc, 0x6fa9, + 0x6ff4, 0x6fd4, 0x6fe3, 0x6fdc, 0x6fed, 0x6fe7, 0x6fe6, 0x6fde, + 0x6ff2, 0x6fdd, 0x6fe2, 0x6fe8, 0x71e1, 0x71f1, 0x71e8, 0x71f2, + 0x71e4, 0x71f0, 0x71e2, 0x7373, 0x736e, 0x736f, 0x7497, 0x74b2, + 0x74ab, 0x7490, 0x74aa, 0x74ad, 0x74b1, 0x74a5, 0x74af, 0x7510, + 0x7511, 0x7512, 0x750f, 0x7584, 0x7643, 0x7648, 0x7649, 0x7647, + 0x76a4, 0x76e9, 0x77b5, 0x77ab, 0x77b2, 0x77b7, 0x77b6, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x77b4, 0x77b1, 0x77a8, 0x77f0, 0x78f3, 0x78fd, 0x7902, + 0x78fb, 0x78fc, 0x78f2, 0x7905, 0x78f9, 0x78fe, 0x7904, 0x79ab, + 0x79a8, 0x7a5c, 0x7a5b, 0x7a56, 0x7a58, 0x7a54, 0x7a5a, 0x7abe, + 0x7ac0, 0x7ac1, 0x7c05, 0x7c0f, 0x7bf2, 0x7c00, 0x7bff, 0x7bfb, + 0x7c0e, 0x7bf4, 0x7c0b, 0x7bf3, 0x7c02, 0x7c09, 0x7c03, 0x7c01, + 0x7bf8, 0x7bfd, 0x7c06, 0x7bf0, 0x7bf1, 0x7c10, 0x7c0a, 0x7ce8, + 0x7e2d, 0x7e3c, 0x7e42, 0x7e33, 0x9848, 0x7e38, 0x7e2a, 0x7e49, + 0x7e40, 0x7e47, 0x7e29, 0x7e4c, 0x7e30, 0x7e3b, 0x7e36, 0x7e44, + 0x7e3a, 0x7f45, 0x7f7f, 0x7f7e, 0x7f7d, 0x7ff4, 0x7ff2, 0x802c, + 0x81bb, 0x81c4, 0x81cc, 0x81ca, 0x81c5, 0x81c7, 0x81bc, 0x81e9, + 0x825b, 0x825a, 0x825c, 0x8583, 0x8580, 0x858f, 0x85a7, 0x8595, + 0x85a0, 0x858b, 0x85a3, 0x857b, 0x85a4, 0x859a, 0x859e, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8577, 0x857c, 0x8589, 0x85a1, 0x857a, 0x8578, 0x8557, 0x858e, + 0x8596, 0x8586, 0x858d, 0x8599, 0x859d, 0x8581, 0x85a2, 0x8582, + 0x8588, 0x8585, 0x8579, 0x8576, 0x8598, 0x8590, 0x859f, 0x8668, + 0x87be, 0x87aa, 0x87ad, 0x87c5, 0x87b0, 0x87ac, 0x87b9, 0x87b5, + 0x87bc, 0x87ae, 0x87c9, 0x87c3, 0x87c2, 0x87cc, 0x87b7, 0x87af, + 0x87c4, 0x87ca, 0x87b4, 0x87b6, 0x87bf, 0x87b8, 0x87bd, 0x87de, + 0x87b2, 0x8935, 0x8933, 0x893c, 0x893e, 0x8941, 0x8952, 0x8937, + 0x8942, 0x89ad, 0x89af, 0x89ae, 0x89f2, 0x89f3, 0x8b1e, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8b18, 0x8b16, 0x8b11, 0x8b05, 0x8b0b, 0x8b22, 0x8b0f, + 0x8b12, 0x8b15, 0x8b07, 0x8b0d, 0x8b08, 0x8b06, 0x8b1c, 0x8b13, + 0x8b1a, 0x8c4f, 0x8c70, 0x8c72, 0x8c71, 0x8c6f, 0x8c95, 0x8c94, + 0x8cf9, 0x8d6f, 0x8e4e, 0x8e4d, 0x8e53, 0x8e50, 0x8e4c, 0x8e47, + 0x8f43, 0x8f40, 0x9085, 0x907e, 0x9138, 0x919a, 0x91a2, 0x919b, + 0x9199, 0x919f, 0x91a1, 0x919d, 0x91a0, 0x93a1, 0x9383, 0x93af, + 0x9364, 0x9356, 0x9347, 0x937c, 0x9358, 0x935c, 0x9376, 0x9349, + 0x9350, 0x9351, 0x9360, 0x936d, 0x938f, 0x934c, 0x936a, 0x9379, + 0x9357, 0x9355, 0x9352, 0x934f, 0x9371, 0x9377, 0x937b, 0x9361, + 0x935e, 0x9363, 0x9367, 0x9380, 0x934e, 0x9359, 0x95c7, 0x95c0, + 0x95c9, 0x95c3, 0x95c5, 0x95b7, 0x96ae, 0x96b0, 0x96ac, 0x9720, + 0x971f, 0x9718, 0x971d, 0x9719, 0x979a, 0x97a1, 0x979c, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x979e, 0x979d, 0x97d5, 0x97d4, 0x97f1, 0x9841, 0x9844, 0x984a, + 0x9849, 0x9845, 0x9843, 0x9925, 0x992b, 0x992c, 0x992a, 0x9933, + 0x9932, 0x992f, 0x992d, 0x9931, 0x9930, 0x9998, 0x99a3, 0x99a1, + 0x9a02, 0x99fa, 0x99f4, 0x99f7, 0x99f9, 0x99f8, 0x99f6, 0x99fb, + 0x99fd, 0x99fe, 0x99fc, 0x9a03, 0x9abe, 0x9afe, 0x9afd, 0x9b01, + 0x9afc, 0x9b48, 0x9b9a, 0x9ba8, 0x9b9e, 0x9b9b, 0x9ba6, 0x9ba1, + 0x9ba5, 0x9ba4, 0x9b86, 0x9ba2, 0x9ba0, 0x9baf, 0x9d33, 0x9d41, + 0x9d67, 0x9d36, 0x9d2e, 0x9d2f, 0x9d31, 0x9d38, 0x9d30, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x9d45, 0x9d42, 0x9d43, 0x9d3e, 0x9d37, 0x9d40, 0x9d3d, + 0x7ff5, 0x9d2d, 0x9e8a, 0x9e89, 0x9e8d, 0x9eb0, 0x9ec8, 0x9eda, + 0x9efb, 0x9eff, 0x9f24, 0x9f23, 0x9f22, 0x9f54, 0x9fa0, 0x5131, + 0x512d, 0x512e, 0x5698, 0x569c, 0x5697, 0x569a, 0x569d, 0x5699, + 0x5970, 0x5b3c, 0x5c69, 0x5c6a, 0x5dc0, 0x5e6d, 0x5e6e, 0x61d8, + 0x61df, 0x61ed, 0x61ee, 0x61f1, 0x61ea, 0x61f0, 0x61eb, 0x61d6, + 0x61e9, 0x64ff, 0x6504, 0x64fd, 0x64f8, 0x6501, 0x6503, 0x64fc, + 0x6594, 0x65db, 0x66da, 0x66db, 0x66d8, 0x6ac5, 0x6ab9, 0x6abd, + 0x6ae1, 0x6ac6, 0x6aba, 0x6ab6, 0x6ab7, 0x6ac7, 0x6ab4, 0x6aad, + 0x6b5e, 0x6bc9, 0x6c0b, 0x7007, 0x700c, 0x700d, 0x7001, 0x7005, + 0x7014, 0x700e, 0x6fff, 0x7000, 0x6ffb, 0x7026, 0x6ffc, 0x6ff7, + 0x700a, 0x7201, 0x71ff, 0x71f9, 0x7203, 0x71fd, 0x7376, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x74b8, 0x74c0, 0x74b5, 0x74c1, 0x74be, 0x74b6, 0x74bb, 0x74c2, + 0x7514, 0x7513, 0x765c, 0x7664, 0x7659, 0x7650, 0x7653, 0x7657, + 0x765a, 0x76a6, 0x76bd, 0x76ec, 0x77c2, 0x77ba, 0x78ff, 0x790c, + 0x7913, 0x7914, 0x7909, 0x7910, 0x7912, 0x7911, 0x79ad, 0x79ac, + 0x7a5f, 0x7c1c, 0x7c29, 0x7c19, 0x7c20, 0x7c1f, 0x7c2d, 0x7c1d, + 0x7c26, 0x7c28, 0x7c22, 0x7c25, 0x7c30, 0x7e5c, 0x7e50, 0x7e56, + 0x7e63, 0x7e58, 0x7e62, 0x7e5f, 0x7e51, 0x7e60, 0x7e57, 0x7e53, + 0x7fb5, 0x7fb3, 0x7ff7, 0x7ff8, 0x8075, 0x81d1, 0x81d2, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x81d0, 0x825f, 0x825e, 0x85b4, 0x85c6, 0x85c0, 0x85c3, + 0x85c2, 0x85b3, 0x85b5, 0x85bd, 0x85c7, 0x85c4, 0x85bf, 0x85cb, + 0x85ce, 0x85c8, 0x85c5, 0x85b1, 0x85b6, 0x85d2, 0x8624, 0x85b8, + 0x85b7, 0x85be, 0x8669, 0x87e7, 0x87e6, 0x87e2, 0x87db, 0x87eb, + 0x87ea, 0x87e5, 0x87df, 0x87f3, 0x87e4, 0x87d4, 0x87dc, 0x87d3, + 0x87ed, 0x87d8, 0x87e3, 0x87a4, 0x87d7, 0x87d9, 0x8801, 0x87f4, + 0x87e8, 0x87dd, 0x8953, 0x894b, 0x894f, 0x894c, 0x8946, 0x8950, + 0x8951, 0x8949, 0x8b2a, 0x8b27, 0x8b23, 0x8b33, 0x8b30, 0x8b35, + 0x8b47, 0x8b2f, 0x8b3c, 0x8b3e, 0x8b31, 0x8b25, 0x8b37, 0x8b26, + 0x8b36, 0x8b2e, 0x8b24, 0x8b3b, 0x8b3d, 0x8b3a, 0x8c42, 0x8c75, + 0x8c99, 0x8c98, 0x8c97, 0x8cfe, 0x8d04, 0x8d02, 0x8d00, 0x8e5c, + 0x8e62, 0x8e60, 0x8e57, 0x8e56, 0x8e5e, 0x8e65, 0x8e67, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8e5b, 0x8e5a, 0x8e61, 0x8e5d, 0x8e69, 0x8e54, 0x8f46, 0x8f47, + 0x8f48, 0x8f4b, 0x9128, 0x913a, 0x913b, 0x913e, 0x91a8, 0x91a5, + 0x91a7, 0x91af, 0x91aa, 0x93b5, 0x938c, 0x9392, 0x93b7, 0x939b, + 0x939d, 0x9389, 0x93a7, 0x938e, 0x93aa, 0x939e, 0x93a6, 0x9395, + 0x9388, 0x9399, 0x939f, 0x938d, 0x93b1, 0x9391, 0x93b2, 0x93a4, + 0x93a8, 0x93b4, 0x93a3, 0x93a5, 0x95d2, 0x95d3, 0x95d1, 0x96b3, + 0x96d7, 0x96da, 0x5dc2, 0x96df, 0x96d8, 0x96dd, 0x9723, 0x9722, + 0x9725, 0x97ac, 0x97ae, 0x97a8, 0x97ab, 0x97a4, 0x97aa, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x97a2, 0x97a5, 0x97d7, 0x97d9, 0x97d6, 0x97d8, 0x97fa, + 0x9850, 0x9851, 0x9852, 0x98b8, 0x9941, 0x993c, 0x993a, 0x9a0f, + 0x9a0b, 0x9a09, 0x9a0d, 0x9a04, 0x9a11, 0x9a0a, 0x9a05, 0x9a07, + 0x9a06, 0x9ac0, 0x9adc, 0x9b08, 0x9b04, 0x9b05, 0x9b29, 0x9b35, + 0x9b4a, 0x9b4c, 0x9b4b, 0x9bc7, 0x9bc6, 0x9bc3, 0x9bbf, 0x9bc1, + 0x9bb5, 0x9bb8, 0x9bd3, 0x9bb6, 0x9bc4, 0x9bb9, 0x9bbd, 0x9d5c, + 0x9d53, 0x9d4f, 0x9d4a, 0x9d5b, 0x9d4b, 0x9d59, 0x9d56, 0x9d4c, + 0x9d57, 0x9d52, 0x9d54, 0x9d5f, 0x9d58, 0x9d5a, 0x9e8e, 0x9e8c, + 0x9edf, 0x9f01, 0x9f00, 0x9f16, 0x9f25, 0x9f2b, 0x9f2a, 0x9f29, + 0x9f28, 0x9f4c, 0x9f55, 0x5134, 0x5135, 0x5296, 0x52f7, 0x53b4, + 0x56ab, 0x56ad, 0x56a6, 0x56a7, 0x56aa, 0x56ac, 0x58da, 0x58dd, + 0x58db, 0x5912, 0x5b3d, 0x5b3e, 0x5b3f, 0x5dc3, 0x5e70, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5fbf, 0x61fb, 0x6507, 0x6510, 0x650d, 0x6509, 0x650c, 0x650e, + 0x6584, 0x65de, 0x65dd, 0x66de, 0x6ae7, 0x6ae0, 0x6acc, 0x6ad1, + 0x6ad9, 0x6acb, 0x6adf, 0x6adc, 0x6ad0, 0x6aeb, 0x6acf, 0x6acd, + 0x6ade, 0x6b60, 0x6bb0, 0x6c0c, 0x7019, 0x7027, 0x7020, 0x7016, + 0x702b, 0x7021, 0x7022, 0x7023, 0x7029, 0x7017, 0x7024, 0x701c, + 0x702a, 0x720c, 0x720a, 0x7207, 0x7202, 0x7205, 0x72a5, 0x72a6, + 0x72a4, 0x72a3, 0x72a1, 0x74cb, 0x74c5, 0x74b7, 0x74c3, 0x7516, + 0x7660, 0x77c9, 0x77ca, 0x77c4, 0x77f1, 0x791d, 0x791b, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7921, 0x791c, 0x7917, 0x791e, 0x79b0, 0x7a67, 0x7a68, + 0x7c33, 0x7c3c, 0x7c39, 0x7c2c, 0x7c3b, 0x7cec, 0x7cea, 0x7e76, + 0x7e75, 0x7e78, 0x7e70, 0x7e77, 0x7e6f, 0x7e7a, 0x7e72, 0x7e74, + 0x7e68, 0x7f4b, 0x7f4a, 0x7f83, 0x7f86, 0x7fb7, 0x7ffd, 0x7ffe, + 0x8078, 0x81d7, 0x81d5, 0x8264, 0x8261, 0x8263, 0x85eb, 0x85f1, + 0x85ed, 0x85d9, 0x85e1, 0x85e8, 0x85da, 0x85d7, 0x85ec, 0x85f2, + 0x85f8, 0x85d8, 0x85df, 0x85e3, 0x85dc, 0x85d1, 0x85f0, 0x85e6, + 0x85ef, 0x85de, 0x85e2, 0x8800, 0x87fa, 0x8803, 0x87f6, 0x87f7, + 0x8809, 0x880c, 0x880b, 0x8806, 0x87fc, 0x8808, 0x87ff, 0x880a, + 0x8802, 0x8962, 0x895a, 0x895b, 0x8957, 0x8961, 0x895c, 0x8958, + 0x895d, 0x8959, 0x8988, 0x89b7, 0x89b6, 0x89f6, 0x8b50, 0x8b48, + 0x8b4a, 0x8b40, 0x8b53, 0x8b56, 0x8b54, 0x8b4b, 0x8b55, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8b51, 0x8b42, 0x8b52, 0x8b57, 0x8c43, 0x8c77, 0x8c76, 0x8c9a, + 0x8d06, 0x8d07, 0x8d09, 0x8dac, 0x8daa, 0x8dad, 0x8dab, 0x8e6d, + 0x8e78, 0x8e73, 0x8e6a, 0x8e6f, 0x8e7b, 0x8ec2, 0x8f52, 0x8f51, + 0x8f4f, 0x8f50, 0x8f53, 0x8fb4, 0x9140, 0x913f, 0x91b0, 0x91ad, + 0x93de, 0x93c7, 0x93cf, 0x93c2, 0x93da, 0x93d0, 0x93f9, 0x93ec, + 0x93cc, 0x93d9, 0x93a9, 0x93e6, 0x93ca, 0x93d4, 0x93ee, 0x93e3, + 0x93d5, 0x93c4, 0x93ce, 0x93c0, 0x93d2, 0x93e7, 0x957d, 0x95da, + 0x95db, 0x96e1, 0x9729, 0x972b, 0x972c, 0x9728, 0x9726, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x97b3, 0x97b7, 0x97b6, 0x97dd, 0x97de, 0x97df, 0x985c, + 0x9859, 0x985d, 0x9857, 0x98bf, 0x98bd, 0x98bb, 0x98be, 0x9948, + 0x9947, 0x9943, 0x99a6, 0x99a7, 0x9a1a, 0x9a15, 0x9a25, 0x9a1d, + 0x9a24, 0x9a1b, 0x9a22, 0x9a20, 0x9a27, 0x9a23, 0x9a1e, 0x9a1c, + 0x9a14, 0x9ac2, 0x9b0b, 0x9b0a, 0x9b0e, 0x9b0c, 0x9b37, 0x9bea, + 0x9beb, 0x9be0, 0x9bde, 0x9be4, 0x9be6, 0x9be2, 0x9bf0, 0x9bd4, + 0x9bd7, 0x9bec, 0x9bdc, 0x9bd9, 0x9be5, 0x9bd5, 0x9be1, 0x9bda, + 0x9d77, 0x9d81, 0x9d8a, 0x9d84, 0x9d88, 0x9d71, 0x9d80, 0x9d78, + 0x9d86, 0x9d8b, 0x9d8c, 0x9d7d, 0x9d6b, 0x9d74, 0x9d75, 0x9d70, + 0x9d69, 0x9d85, 0x9d73, 0x9d7b, 0x9d82, 0x9d6f, 0x9d79, 0x9d7f, + 0x9d87, 0x9d68, 0x9e94, 0x9e91, 0x9ec0, 0x9efc, 0x9f2d, 0x9f40, + 0x9f41, 0x9f4d, 0x9f56, 0x9f57, 0x9f58, 0x5337, 0x56b2, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x56b5, 0x56b3, 0x58e3, 0x5b45, 0x5dc6, 0x5dc7, 0x5eee, 0x5eef, + 0x5fc0, 0x5fc1, 0x61f9, 0x6517, 0x6516, 0x6515, 0x6513, 0x65df, + 0x66e8, 0x66e3, 0x66e4, 0x6af3, 0x6af0, 0x6aea, 0x6ae8, 0x6af9, + 0x6af1, 0x6aee, 0x6aef, 0x703c, 0x7035, 0x702f, 0x7037, 0x7034, + 0x7031, 0x7042, 0x7038, 0x703f, 0x703a, 0x7039, 0x7040, 0x703b, + 0x7033, 0x7041, 0x7213, 0x7214, 0x72a8, 0x737d, 0x737c, 0x74ba, + 0x76ab, 0x76aa, 0x76be, 0x76ed, 0x77cc, 0x77ce, 0x77cf, 0x77cd, + 0x77f2, 0x7925, 0x7923, 0x7927, 0x7928, 0x7924, 0x7929, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x79b2, 0x7a6e, 0x7a6c, 0x7a6d, 0x7af7, 0x7c49, 0x7c48, + 0x7c4a, 0x7c47, 0x7c45, 0x7cee, 0x7e7b, 0x7e7e, 0x7e81, 0x7e80, + 0x7fba, 0x7fff, 0x8079, 0x81db, 0x81d9, 0x820b, 0x8268, 0x8269, + 0x8622, 0x85ff, 0x8601, 0x85fe, 0x861b, 0x8600, 0x85f6, 0x8604, + 0x8609, 0x8605, 0x860c, 0x85fd, 0x8819, 0x8810, 0x8811, 0x8817, + 0x8813, 0x8816, 0x8963, 0x8966, 0x89b9, 0x89f7, 0x8b60, 0x8b6a, + 0x8b5d, 0x8b68, 0x8b63, 0x8b65, 0x8b67, 0x8b6d, 0x8dae, 0x8e86, + 0x8e88, 0x8e84, 0x8f59, 0x8f56, 0x8f57, 0x8f55, 0x8f58, 0x8f5a, + 0x908d, 0x9143, 0x9141, 0x91b7, 0x91b5, 0x91b2, 0x91b3, 0x940b, + 0x9413, 0x93fb, 0x9420, 0x940f, 0x9414, 0x93fe, 0x9415, 0x9410, + 0x9428, 0x9419, 0x940d, 0x93f5, 0x9400, 0x93f7, 0x9407, 0x940e, + 0x9416, 0x9412, 0x93fa, 0x9409, 0x93f8, 0x940a, 0x93ff, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x93fc, 0x940c, 0x93f6, 0x9411, 0x9406, 0x95de, 0x95e0, 0x95df, + 0x972e, 0x972f, 0x97b9, 0x97bb, 0x97fd, 0x97fe, 0x9860, 0x9862, + 0x9863, 0x985f, 0x98c1, 0x98c2, 0x9950, 0x994e, 0x9959, 0x994c, + 0x994b, 0x9953, 0x9a32, 0x9a34, 0x9a31, 0x9a2c, 0x9a2a, 0x9a36, + 0x9a29, 0x9a2e, 0x9a38, 0x9a2d, 0x9ac7, 0x9aca, 0x9ac6, 0x9b10, + 0x9b12, 0x9b11, 0x9c0b, 0x9c08, 0x9bf7, 0x9c05, 0x9c12, 0x9bf8, + 0x9c40, 0x9c07, 0x9c0e, 0x9c06, 0x9c17, 0x9c14, 0x9c09, 0x9d9f, + 0x9d99, 0x9da4, 0x9d9d, 0x9d92, 0x9d98, 0x9d90, 0x9d9b, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x9da0, 0x9d94, 0x9d9c, 0x9daa, 0x9d97, 0x9da1, 0x9d9a, + 0x9da2, 0x9da8, 0x9d9e, 0x9da3, 0x9dbf, 0x9da9, 0x9d96, 0x9da6, + 0x9da7, 0x9e99, 0x9e9b, 0x9e9a, 0x9ee5, 0x9ee4, 0x9ee7, 0x9ee6, + 0x9f30, 0x9f2e, 0x9f5b, 0x9f60, 0x9f5e, 0x9f5d, 0x9f59, 0x9f91, + 0x513a, 0x5139, 0x5298, 0x5297, 0x56c3, 0x56bd, 0x56be, 0x5b48, + 0x5b47, 0x5dcb, 0x5dcf, 0x5ef1, 0x61fd, 0x651b, 0x6b02, 0x6afc, + 0x6b03, 0x6af8, 0x6b00, 0x7043, 0x7044, 0x704a, 0x7048, 0x7049, + 0x7045, 0x7046, 0x721d, 0x721a, 0x7219, 0x737e, 0x7517, 0x766a, + 0x77d0, 0x792d, 0x7931, 0x792f, 0x7c54, 0x7c53, 0x7cf2, 0x7e8a, + 0x7e87, 0x7e88, 0x7e8b, 0x7e86, 0x7e8d, 0x7f4d, 0x7fbb, 0x8030, + 0x81dd, 0x8618, 0x862a, 0x8626, 0x861f, 0x8623, 0x861c, 0x8619, + 0x8627, 0x862e, 0x8621, 0x8620, 0x8629, 0x861e, 0x8625, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8829, 0x881d, 0x881b, 0x8820, 0x8824, 0x881c, 0x882b, 0x884a, + 0x896d, 0x8969, 0x896e, 0x896b, 0x89fa, 0x8b79, 0x8b78, 0x8b45, + 0x8b7a, 0x8b7b, 0x8d10, 0x8d14, 0x8daf, 0x8e8e, 0x8e8c, 0x8f5e, + 0x8f5b, 0x8f5d, 0x9146, 0x9144, 0x9145, 0x91b9, 0x943f, 0x943b, + 0x9436, 0x9429, 0x943d, 0x943c, 0x9430, 0x9439, 0x942a, 0x9437, + 0x942c, 0x9440, 0x9431, 0x95e5, 0x95e4, 0x95e3, 0x9735, 0x973a, + 0x97bf, 0x97e1, 0x9864, 0x98c9, 0x98c6, 0x98c0, 0x9958, 0x9956, + 0x9a39, 0x9a3d, 0x9a46, 0x9a44, 0x9a42, 0x9a41, 0x9a3a, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x9a3f, 0x9acd, 0x9b15, 0x9b17, 0x9b18, 0x9b16, 0x9b3a, + 0x9b52, 0x9c2b, 0x9c1d, 0x9c1c, 0x9c2c, 0x9c23, 0x9c28, 0x9c29, + 0x9c24, 0x9c21, 0x9db7, 0x9db6, 0x9dbc, 0x9dc1, 0x9dc7, 0x9dca, + 0x9dcf, 0x9dbe, 0x9dc5, 0x9dc3, 0x9dbb, 0x9db5, 0x9dce, 0x9db9, + 0x9dba, 0x9dac, 0x9dc8, 0x9db1, 0x9dad, 0x9dcc, 0x9db3, 0x9dcd, + 0x9db2, 0x9e7a, 0x9e9c, 0x9eeb, 0x9eee, 0x9eed, 0x9f1b, 0x9f18, + 0x9f1a, 0x9f31, 0x9f4e, 0x9f65, 0x9f64, 0x9f92, 0x4eb9, 0x56c6, + 0x56c5, 0x56cb, 0x5971, 0x5b4b, 0x5b4c, 0x5dd5, 0x5dd1, 0x5ef2, + 0x6521, 0x6520, 0x6526, 0x6522, 0x6b0b, 0x6b08, 0x6b09, 0x6c0d, + 0x7055, 0x7056, 0x7057, 0x7052, 0x721e, 0x721f, 0x72a9, 0x737f, + 0x74d8, 0x74d5, 0x74d9, 0x74d7, 0x766d, 0x76ad, 0x7935, 0x79b4, + 0x7a70, 0x7a71, 0x7c57, 0x7c5c, 0x7c59, 0x7c5b, 0x7c5a, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x7cf4, 0x7cf1, 0x7e91, 0x7f4f, 0x7f87, 0x81de, 0x826b, 0x8634, + 0x8635, 0x8633, 0x862c, 0x8632, 0x8636, 0x882c, 0x8828, 0x8826, + 0x882a, 0x8825, 0x8971, 0x89bf, 0x89be, 0x89fb, 0x8b7e, 0x8b84, + 0x8b82, 0x8b86, 0x8b85, 0x8b7f, 0x8d15, 0x8e95, 0x8e94, 0x8e9a, + 0x8e92, 0x8e90, 0x8e96, 0x8e97, 0x8f60, 0x8f62, 0x9147, 0x944c, + 0x9450, 0x944a, 0x944b, 0x944f, 0x9447, 0x9445, 0x9448, 0x9449, + 0x9446, 0x973f, 0x97e3, 0x986a, 0x9869, 0x98cb, 0x9954, 0x995b, + 0x9a4e, 0x9a53, 0x9a54, 0x9a4c, 0x9a4f, 0x9a48, 0x9a4a, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x9a49, 0x9a52, 0x9a50, 0x9ad0, 0x9b19, 0x9b2b, 0x9b3b, + 0x9b56, 0x9b55, 0x9c46, 0x9c48, 0x9c3f, 0x9c44, 0x9c39, 0x9c33, + 0x9c41, 0x9c3c, 0x9c37, 0x9c34, 0x9c32, 0x9c3d, 0x9c36, 0x9ddb, + 0x9dd2, 0x9dde, 0x9dda, 0x9dcb, 0x9dd0, 0x9ddc, 0x9dd1, 0x9ddf, + 0x9de9, 0x9dd9, 0x9dd8, 0x9dd6, 0x9df5, 0x9dd5, 0x9ddd, 0x9eb6, + 0x9ef0, 0x9f35, 0x9f33, 0x9f32, 0x9f42, 0x9f6b, 0x9f95, 0x9fa2, + 0x513d, 0x5299, 0x58e8, 0x58e7, 0x5972, 0x5b4d, 0x5dd8, 0x882f, + 0x5f4f, 0x6201, 0x6203, 0x6204, 0x6529, 0x6525, 0x6596, 0x66eb, + 0x6b11, 0x6b12, 0x6b0f, 0x6bca, 0x705b, 0x705a, 0x7222, 0x7382, + 0x7381, 0x7383, 0x7670, 0x77d4, 0x7c67, 0x7c66, 0x7e95, 0x826c, + 0x863a, 0x8640, 0x8639, 0x863c, 0x8631, 0x863b, 0x863e, 0x8830, + 0x8832, 0x882e, 0x8833, 0x8976, 0x8974, 0x8973, 0x89fe, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8b8c, 0x8b8e, 0x8b8b, 0x8b88, 0x8c45, 0x8d19, 0x8e98, 0x8f64, + 0x8f63, 0x91bc, 0x9462, 0x9455, 0x945d, 0x9457, 0x945e, 0x97c4, + 0x97c5, 0x9800, 0x9a56, 0x9a59, 0x9b1e, 0x9b1f, 0x9b20, 0x9c52, + 0x9c58, 0x9c50, 0x9c4a, 0x9c4d, 0x9c4b, 0x9c55, 0x9c59, 0x9c4c, + 0x9c4e, 0x9dfb, 0x9df7, 0x9def, 0x9de3, 0x9deb, 0x9df8, 0x9de4, + 0x9df6, 0x9de1, 0x9dee, 0x9de6, 0x9df2, 0x9df0, 0x9de2, 0x9dec, + 0x9df4, 0x9df3, 0x9de8, 0x9ded, 0x9ec2, 0x9ed0, 0x9ef2, 0x9ef3, + 0x9f06, 0x9f1c, 0x9f38, 0x9f37, 0x9f36, 0x9f43, 0x9f4f, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x9f71, 0x9f70, 0x9f6e, 0x9f6f, 0x56d3, 0x56cd, 0x5b4e, + 0x5c6d, 0x652d, 0x66ed, 0x66ee, 0x6b13, 0x705f, 0x7061, 0x705d, + 0x7060, 0x7223, 0x74db, 0x74e5, 0x77d5, 0x7938, 0x79b7, 0x79b6, + 0x7c6a, 0x7e97, 0x7f89, 0x826d, 0x8643, 0x8838, 0x8837, 0x8835, + 0x884b, 0x8b94, 0x8b95, 0x8e9e, 0x8e9f, 0x8ea0, 0x8e9d, 0x91be, + 0x91bd, 0x91c2, 0x946b, 0x9468, 0x9469, 0x96e5, 0x9746, 0x9743, + 0x9747, 0x97c7, 0x97e5, 0x9a5e, 0x9ad5, 0x9b59, 0x9c63, 0x9c67, + 0x9c66, 0x9c62, 0x9c5e, 0x9c60, 0x9e02, 0x9dfe, 0x9e07, 0x9e03, + 0x9e06, 0x9e05, 0x9e00, 0x9e01, 0x9e09, 0x9dff, 0x9dfd, 0x9e04, + 0x9ea0, 0x9f1e, 0x9f46, 0x9f74, 0x9f75, 0x9f76, 0x56d4, 0x652e, + 0x65b8, 0x6b18, 0x6b19, 0x6b17, 0x6b1a, 0x7062, 0x7226, 0x72aa, + 0x77d8, 0x77d9, 0x7939, 0x7c69, 0x7c6b, 0x7cf6, 0x7e9a, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x7e98, 0x7e9b, 0x7e99, 0x81e0, 0x81e1, 0x8646, 0x8647, 0x8648, + 0x8979, 0x897a, 0x897c, 0x897b, 0x89ff, 0x8b98, 0x8b99, 0x8ea5, + 0x8ea4, 0x8ea3, 0x946e, 0x946d, 0x946f, 0x9471, 0x9473, 0x9749, + 0x9872, 0x995f, 0x9c68, 0x9c6e, 0x9c6d, 0x9e0b, 0x9e0d, 0x9e10, + 0x9e0f, 0x9e12, 0x9e11, 0x9ea1, 0x9ef5, 0x9f09, 0x9f47, 0x9f78, + 0x9f7b, 0x9f7a, 0x9f79, 0x571e, 0x7066, 0x7c6f, 0x883c, 0x8db2, + 0x8ea6, 0x91c3, 0x9474, 0x9478, 0x9476, 0x9475, 0x9a60, 0x9c74, + 0x9c73, 0x9c71, 0x9c75, 0x9e14, 0x9e13, 0x9ef6, 0x9f0a, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x9fa4, 0x7068, 0x7065, 0x7cf7, 0x866a, 0x883e, 0x883d, + 0x883f, 0x8b9e, 0x8c9c, 0x8ea9, 0x8ec9, 0x974b, 0x9873, 0x9874, + 0x98cc, 0x9961, 0x99ab, 0x9a64, 0x9a66, 0x9a67, 0x9b24, 0x9e15, + 0x9e17, 0x9f48, 0x6207, 0x6b1e, 0x7227, 0x864c, 0x8ea8, 0x9482, + 0x9480, 0x9481, 0x9a69, 0x9a68, 0x9b2e, 0x9e19, 0x7229, 0x864b, + 0x8b9f, 0x9483, 0x9c79, 0x9eb7, 0x7675, 0x9a6b, 0x9c7a, 0x9e1d, + 0x7069, 0x706a, 0x9ea4, 0x9f7e, 0x9f49, 0x9f98, 0x7881, 0x92b9, + 0x88cf, 0x58bb, 0x6052, 0x7ca7, 0x5afa, 0x2554, 0x2566, 0x2557, + 0x2560, 0x256c, 0x2563, 0x255a, 0x2569, 0x255d, 0x2552, 0x2564, + 0x2555, 0x255e, 0x256a, 0x2561, 0x2558, 0x2567, 0x255b, 0x2553, + 0x2565, 0x2556, 0x255f, 0x256b, 0x2562, 0x2559, 0x2568, 0x255c, + 0x2551, 0x2550, 0x256d, 0x256e, 0x2570, 0x256f, 0xffed, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe000, 0x92db, 0xe002, 0xe003, 0x854c, 0x42b5, 0x73ef, 0x51b5, + 0x3649, 0xe009, 0xe00a, 0x9344, 0xe00c, 0x82ee, 0xe00e, 0x783c, + 0x6744, 0x62df, 0xe012, 0xe013, 0xe014, 0xe015, 0xe016, 0x4fab, + 0xe018, 0x5008, 0xe01a, 0xe01b, 0xe01c, 0xe01d, 0xe01e, 0x5029, + 0xe020, 0x5fa4, 0xe022, 0xe023, 0x6edb, 0xe025, 0x507d, 0x5101, + 0x347a, 0x510e, 0x986c, 0x3743, 0x8416, 0xe02d, 0xe02e, 0x5160, + 0xe030, 0x516a, 0xe032, 0xe033, 0xe034, 0xe035, 0xe036, 0xe037, + 0xe038, 0x5b82, 0x877d, 0xe03b, 0xe03c, 0x51b2, 0x51b8, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x9d34, 0x51c9, 0x51cf, 0x51d1, 0x3cdc, 0x51d3, 0xe045, + 0x51b3, 0x51e2, 0x5342, 0x51ed, 0x83cd, 0x693e, 0xe04c, 0x5f7b, + 0x520b, 0x5226, 0x523c, 0x52b5, 0x5257, 0x5294, 0x52b9, 0x52c5, + 0x7c15, 0x8542, 0x52e0, 0x860d, 0xe05a, 0x5305, 0xe05c, 0x5549, + 0x6ed9, 0xe05f, 0xe060, 0xe061, 0x5333, 0x5344, 0xe064, 0x6ccb, + 0xe066, 0x681b, 0x73d5, 0x604a, 0x3eaa, 0x38cc, 0xe06c, 0x71dd, + 0x44a2, 0x536d, 0x5374, 0xe071, 0x537e, 0x537f, 0xe074, 0xe075, + 0x77e6, 0x5393, 0xe078, 0x53a0, 0x53ab, 0x53ae, 0x73a7, 0xe07d, + 0x3f59, 0x739c, 0x53c1, 0x53c5, 0x6c49, 0x4e49, 0x57fe, 0x53d9, + 0x3aab, 0xe087, 0x53e0, 0xe089, 0xe08a, 0x53f6, 0xe08c, 0x5413, + 0x7079, 0x552b, 0x6657, 0x6d5b, 0x546d, 0xe093, 0xe094, 0x555d, + 0x548f, 0x54a4, 0x47a6, 0xe099, 0xe09a, 0x3db4, 0xe09c, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe09d, 0xe09e, 0x5547, 0x4ced, 0x542f, 0x7417, 0x5586, 0x55a9, + 0x5605, 0xe0a6, 0xe0a7, 0x4552, 0xe0a9, 0x66b3, 0xe0ab, 0x5637, + 0x66cd, 0xe0ae, 0x66a4, 0x66ad, 0x564d, 0x564f, 0x78f1, 0x56f1, + 0x9787, 0x53fe, 0x5700, 0x56ef, 0x56ed, 0xe0ba, 0x3623, 0xe0bc, + 0x5746, 0xe0be, 0x6c6e, 0x708b, 0x5742, 0x36b1, 0xe0c3, 0x57e6, + 0xe0c5, 0x5803, 0xe0c7, 0xe0c8, 0x5826, 0xe0ca, 0x585c, 0x58aa, + 0x3561, 0x58e0, 0x58dc, 0xe0d0, 0x58fb, 0x5bff, 0x5743, 0xe0d4, + 0xe0d5, 0x93d3, 0x35a1, 0x591f, 0x68a6, 0x36c3, 0x6e59, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xe0dc, 0x5a24, 0x5553, 0xe0df, 0x8505, 0x59c9, 0xe0e2, + 0xe0e3, 0xe0e4, 0xe0e5, 0x59d9, 0xe0e7, 0xe0e8, 0xe0e9, 0x6d71, + 0xe0eb, 0xe0ec, 0x59f9, 0xe0ee, 0x5aab, 0x5a63, 0x36e6, 0xe0f2, + 0x5a77, 0x3708, 0x5a96, 0x7465, 0x5ad3, 0xe0f8, 0xe0f9, 0x3d85, + 0xe0fb, 0x3732, 0xe0fd, 0x5e83, 0x52d0, 0x5b76, 0x6588, 0x5b7c, + 0xe103, 0x4004, 0x485d, 0xe106, 0x5bd5, 0x6160, 0xe109, 0xe10a, + 0xe10b, 0x5bf3, 0x5b9d, 0x4d10, 0x5c05, 0xe110, 0x5c13, 0x73ce, + 0x5c14, 0xe114, 0xe115, 0x5c49, 0x48dd, 0x5c85, 0x5ce9, 0x5cef, + 0x5d8b, 0xe11c, 0xe11d, 0x5d10, 0x5d18, 0x5d46, 0xe121, 0x5cba, + 0x5dd7, 0x82fc, 0x382d, 0xe126, 0xe127, 0xe128, 0x8287, 0x3836, + 0x3bc2, 0x5e2e, 0x6a8a, 0x5e75, 0x5e7a, 0xe130, 0xe131, 0x53a6, + 0x4eb7, 0x5ed0, 0x53a8, 0xe136, 0x5e09, 0x5ef4, 0xe139, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5ef9, 0x5efb, 0x38a0, 0x5efc, 0x683e, 0x941b, 0x5f0d, 0xe141, + 0xe142, 0x3ade, 0x48ae, 0xe145, 0x5f3a, 0xe147, 0xe148, 0x5f58, + 0xe14a, 0x5f63, 0x97bd, 0xe14d, 0x5f72, 0x9340, 0xe150, 0x5fa7, + 0x5db6, 0x3d5f, 0xe154, 0xe155, 0xe156, 0xe157, 0x91d6, 0xe159, + 0xe15a, 0x6031, 0x6685, 0xe15d, 0x3963, 0x3dc7, 0x3639, 0x5790, + 0xe162, 0x7971, 0x3e40, 0x609e, 0x60a4, 0x60b3, 0xe168, 0xe169, + 0xe16a, 0x74a4, 0x50e1, 0x5aa0, 0x6164, 0x8424, 0x6142, 0xe171, + 0xe172, 0x6181, 0x51f4, 0xe175, 0x6187, 0x5baa, 0xe178, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xe179, 0x61d3, 0xe17b, 0xe17c, 0x61d0, 0x3932, 0xe17f, + 0xe180, 0x6023, 0x615c, 0x651e, 0x638b, 0xe185, 0x62c5, 0xe187, + 0x62d5, 0xe189, 0x636c, 0xe18b, 0x3a17, 0x6438, 0x63f8, 0xe18f, + 0xe190, 0x6490, 0x6f8a, 0xe193, 0x9814, 0xe195, 0xe196, 0x64e1, + 0x64e5, 0x947b, 0x3a66, 0x643a, 0x3a57, 0x654d, 0x6f16, 0xe19f, + 0xe1a0, 0x6585, 0x656d, 0x655f, 0xe1a4, 0x65b5, 0xe1a6, 0x4b37, + 0x65d1, 0x40d8, 0xe1aa, 0x65e0, 0x65e3, 0x5fdf, 0xe1ae, 0x6618, + 0xe1b0, 0xe1b1, 0x6644, 0xe1b3, 0xe1b4, 0x664b, 0xe1b6, 0x6667, + 0xe1b8, 0x6673, 0x6674, 0xe1bb, 0xe1bc, 0xe1bd, 0xe1be, 0xe1bf, + 0x77c5, 0xe1c1, 0x99a4, 0x6702, 0xe1c4, 0xe1c5, 0x3b2b, 0x69fa, + 0xe1c8, 0x675e, 0x6767, 0x6762, 0xe1cc, 0xe1cd, 0x67d7, 0x44e9, + 0x6822, 0x6e50, 0x923c, 0x6801, 0xe1d4, 0xe1d5, 0x685d, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe1d7, 0x69e1, 0x6a0b, 0xe1da, 0x6973, 0x68c3, 0xe1dd, 0x6901, + 0x6900, 0x3d32, 0x3a01, 0xe1e2, 0x3b80, 0x67ac, 0x6961, 0xe1e6, + 0x42fc, 0x6936, 0x6998, 0x3ba1, 0xe1eb, 0x8363, 0x5090, 0x69f9, + 0xe1ef, 0xe1f0, 0x6a45, 0xe1f2, 0x6a9d, 0x3bf3, 0x67b1, 0x6ac8, + 0xe1f7, 0x3c0d, 0x6b1d, 0xe1fa, 0x60de, 0x6b35, 0x6b74, 0xe1fe, + 0x6eb5, 0xe200, 0xe201, 0xe202, 0x3740, 0x5421, 0xe205, 0x6be1, + 0xe207, 0x6bdc, 0x6c37, 0xe20a, 0xe20b, 0xe20c, 0x6c5a, 0x8226, + 0x6c79, 0xe210, 0x44c5, 0xe212, 0xe213, 0xe214, 0xe215, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xe216, 0x36e5, 0x3ceb, 0xe219, 0x9b83, 0xe21b, 0xe21c, + 0x7f8f, 0x6837, 0xe21f, 0xe220, 0xe221, 0x6d96, 0x6d5c, 0x6e7c, + 0x6f04, 0xe226, 0xe227, 0xe228, 0x8533, 0xe22a, 0x51c7, 0x6c9c, + 0x6e1d, 0x842e, 0xe22f, 0x6e2f, 0xe231, 0x7453, 0xe233, 0x79cc, + 0x6e4f, 0x5a91, 0xe237, 0x6ff8, 0x370d, 0x6f9d, 0xe23b, 0x6efa, + 0xe23d, 0xe23e, 0x4555, 0x93f0, 0x6f44, 0x6f5c, 0x3d4e, 0x6f74, + 0xe245, 0x3d3b, 0x6f9f, 0xe248, 0x6fd3, 0xe24a, 0xe24b, 0xe24c, + 0xe24d, 0xe24e, 0xe24f, 0x51df, 0xe251, 0xe252, 0xe253, 0xe254, + 0x704b, 0x707e, 0x70a7, 0x7081, 0x70cc, 0x70d5, 0x70d6, 0x70df, + 0x4104, 0x3de8, 0x71b4, 0x7196, 0xe261, 0x712b, 0x7145, 0x5a88, + 0x714a, 0x716e, 0x5c9c, 0xe268, 0x714f, 0x9362, 0xe26b, 0x712c, + 0xe26d, 0xe26e, 0xe26f, 0x71ba, 0xe271, 0x70bd, 0x720e, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x9442, 0x7215, 0x5911, 0x9443, 0x7224, 0x9341, 0xe27a, 0x722e, + 0x7240, 0xe27d, 0x68bd, 0x7255, 0x7257, 0x3e55, 0xe282, 0x680d, + 0x6f3d, 0x7282, 0x732a, 0x732b, 0xe288, 0xe289, 0x48ed, 0xe28b, + 0x7328, 0x732e, 0x73cf, 0x73aa, 0xe290, 0xe291, 0x73c9, 0x7449, + 0xe294, 0xe295, 0xe296, 0x6623, 0x36c5, 0xe299, 0xe29a, 0xe29b, + 0x73f7, 0x7415, 0x6903, 0xe29f, 0x7439, 0xe2a1, 0x3ed7, 0x745c, + 0xe2a4, 0x7460, 0xe2a6, 0x7447, 0x73e4, 0x7476, 0x83b9, 0x746c, + 0x3730, 0x7474, 0x93f1, 0x6a2c, 0x7482, 0x4953, 0xe2b2, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xe2b3, 0xe2b4, 0xe2b5, 0x5b46, 0xe2b7, 0xe2b8, 0x74c8, + 0xe2ba, 0x750e, 0x74e9, 0x751e, 0xe2be, 0xe2bf, 0x5bd7, 0xe2c1, + 0x9385, 0x754d, 0x754a, 0x7567, 0x756e, 0xe2c7, 0x3f04, 0xe2c9, + 0x758e, 0x745d, 0x759e, 0x75b4, 0x7602, 0x762c, 0x7651, 0x764f, + 0x766f, 0x7676, 0xe2d4, 0x7690, 0x81ef, 0x37f8, 0xe2d8, 0xe2d9, + 0x76a1, 0x76a5, 0x76b7, 0x76cc, 0xe2de, 0x8462, 0xe2e0, 0xe2e1, + 0xe2e2, 0x771e, 0x7726, 0x7740, 0x64af, 0xe2e7, 0x7758, 0xe2e9, + 0x77af, 0xe2eb, 0xe2ec, 0xe2ed, 0x77f4, 0x7809, 0xe2f0, 0xe2f1, + 0x68ca, 0x78af, 0x78c7, 0x78d3, 0x96a5, 0x792e, 0xe2f8, 0x78d7, + 0x7934, 0x78b1, 0xe2fc, 0x8fb8, 0x8884, 0xe2ff, 0xe300, 0xe301, + 0x7986, 0x8900, 0x6902, 0x7980, 0xe306, 0x799d, 0xe308, 0x793c, + 0x79a9, 0x6e2a, 0xe30c, 0x3ea8, 0x79c6, 0xe30f, 0x79d4, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x79d4, 0xfefe, 0x00ff, 0x0000, 0x0100, 0x0005, 0x8000, 0x804f240 +}; + +static const unsigned short big5hkscs_from_unicode_0[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa1b1, + 0xc6d8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa1c2, + 0xa258, 0xa1d3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa150, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8859, 0x8857, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x885d, 0x885b, 0x8866, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8861, 0x885f, 0x0000, 0x0000, 0x0000, 0xa1d1, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x886a, 0x8868, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x886f, 0x886d, 0x88a7, 0x0000, 0x8873, 0x8871, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8877, 0x8875, 0x0000, 0x0000, 0x0000, 0xa1d2, + 0xc8fb, 0x887b, 0x8879, 0x0000, 0x88a2, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_1[] = { + 0x8856, 0x8867, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x885a, 0x886c, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x885c, 0x886e, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8870, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xc8fc, 0x885e, 0x8874, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xc8fa, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8878, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8858, 0x8869, 0x0000, + 0x8872, 0x8860, 0x8876, 0x0000, 0x887a, 0x0000, 0x887c, 0x0000, + 0x887d, 0x0000, 0x887e, 0x0000, 0x88a1, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_2[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xc8f6, 0x886b, 0x0000, 0x0000, 0xc8f8, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xc8f7, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x88a8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xc8fe, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xc8f9, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xc8f5, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xc8fd, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xc6d9, 0xa3be, + 0x0000, 0xa3bc, 0xa3bd, 0xa3bf, 0x0000, 0xa1c5, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xa3bb, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_3[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xa344, 0xa345, 0xa346, 0xa347, 0xa348, 0xa349, 0xa34a, + 0xa34b, 0xa34c, 0xa34d, 0xa34e, 0xa34f, 0xa350, 0xa351, 0xa352, + 0xa353, 0xa354, 0x0000, 0xa355, 0xa356, 0xa357, 0xa358, 0xa359, + 0xa35a, 0xa35b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xa35c, 0xa35d, 0xa35e, 0xa35f, 0xa360, 0xa361, 0xa362, + 0xa363, 0xa364, 0xa365, 0xa366, 0xa367, 0xa368, 0xa369, 0xa36a, + 0xa36b, 0xa36c, 0x0000, 0xa36d, 0xa36e, 0xa36f, 0xa370, 0xa371, + 0xa372, 0xa373, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_4[] = { + 0x0000, 0xc7f9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xc7f3, 0xc7f4, 0xc7f5, 0xc7f6, 0xc7f7, 0xc7f8, 0xc7fa, 0xc7fb, + 0xc7fc, 0xc7fd, 0xc7fe, 0xc840, 0xc841, 0xc842, 0xc843, 0xc844, + 0xc845, 0xc846, 0xc847, 0xc848, 0xc849, 0xc84a, 0xc84b, 0xc84c, + 0xc84d, 0xc84e, 0xc84f, 0xc850, 0xc851, 0xc852, 0xc853, 0xc854, + 0xc855, 0xc856, 0xc857, 0xc858, 0xc859, 0xc85a, 0xc85c, 0xc85d, + 0xc85e, 0xc85f, 0xc860, 0xc861, 0xc862, 0xc863, 0xc864, 0xc865, + 0xc866, 0xc867, 0xc868, 0xc869, 0xc86a, 0xc86b, 0xc86c, 0xc86d, + 0xc86e, 0xc86f, 0xc870, 0xc871, 0xc872, 0xc873, 0xc874, 0xc875, + 0x0000, 0xc85b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_1e[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8863, 0x88a4, + 0x8865, 0x88a6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_20[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xa156, 0xa158, 0x0000, 0x0000, 0x0000, + 0xa1a5, 0xa1a6, 0x0000, 0x0000, 0xa1a7, 0xa1a8, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa14c, 0xa14b, 0xa145, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xa1ac, 0x0000, 0x0000, 0xa1ab, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xa1b0, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_21[] = { + 0x0000, 0x0000, 0x0000, 0xa24a, 0x0000, 0xa1c1, 0x0000, 0x0000, + 0x0000, 0xa24b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xc8d2, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xc8d3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xa2b9, 0xa2ba, 0xa2bb, 0xa2bc, 0xa2bd, 0xa2be, 0xa2bf, 0xa2c0, + 0xa2c1, 0xa2c2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xc6b5, 0xc6b6, 0xc6b7, 0xc6b8, 0xc6b9, 0xc6ba, 0xc6bb, 0xc6bc, + 0xc6bd, 0xc6be, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xa1f6, 0xa1f4, 0xa1f7, 0xa1f5, 0x0000, 0x0000, 0xa1f8, 0xa1f9, + 0xa1fb, 0xa1fa, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xc877, 0xc878, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xc876, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_22[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa241, 0x0000, 0x0000, + 0x0000, 0x0000, 0xa1d4, 0x0000, 0x0000, 0x0000, 0xa1db, 0xa1e8, + 0xa1e7, 0x0000, 0x0000, 0xa1fd, 0x0000, 0xa1fc, 0x0000, 0x0000, + 0x0000, 0xa1e4, 0xa1e5, 0xa1ec, 0x0000, 0x0000, 0xa1ed, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xa1ef, 0xa1ee, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xa1dc, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xa1da, 0xa1dd, 0x0000, 0x0000, 0x0000, 0x0000, 0xa1d8, 0xa1d9, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa1f2, 0x0000, 0x0000, + 0x0000, 0xa1f3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa1e6, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa1e9, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_24[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xc6a1, 0xc6a2, 0xc6a3, 0xc6a4, 0xc6a5, 0xc6a6, 0xc6a7, 0xc6a8, + 0xc6a9, 0xc6aa, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xc6ab, 0xc6ac, 0xc6ad, 0xc6ae, + 0xc6af, 0xc6b0, 0xc6b1, 0xc6b2, 0xc6b3, 0xc6b4, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_25[] = { + 0xa277, 0x0000, 0xa278, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xa27a, 0x0000, 0x0000, 0x0000, + 0xa27b, 0x0000, 0x0000, 0x0000, 0xa27c, 0x0000, 0x0000, 0x0000, + 0xa27d, 0x0000, 0x0000, 0x0000, 0xa275, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xa274, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xa273, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xa272, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xa271, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf9f9, 0xf9f8, 0xf9e6, 0xf9ef, 0xf9dd, 0xf9e8, 0xf9f1, 0xf9df, + 0xf9ec, 0xf9f5, 0xf9e3, 0xf9ee, 0xf9f7, 0xf9e5, 0xf9e9, 0xf9f2, + 0xf9e0, 0xf9eb, 0xf9f4, 0xf9e2, 0xf9e7, 0xf9f0, 0xf9de, 0xf9ed, + 0xf9f6, 0xf9e4, 0xf9ea, 0xf9f3, 0xf9e1, 0xf9fa, 0xf9fb, 0xf9fd, + 0xf9fc, 0xa2ac, 0xa2ad, 0xa2ae, 0xa15a, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xa262, 0xa263, 0xa264, 0xa265, 0xa266, 0xa267, 0xa268, + 0xa269, 0xa270, 0xa26f, 0xa26e, 0xa26d, 0xa26c, 0xa26b, 0xa26a, + 0x0000, 0x0000, 0x0000, 0x0000, 0xa276, 0xa279, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xa1bd, 0xa1bc, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xa1b6, 0xa1b5, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xa1bf, 0xa1be, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa1bb, 0xa1ba, + 0x0000, 0x0000, 0x0000, 0xa1b3, 0x0000, 0x0000, 0xa1b7, 0xa1b4, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xa2a8, 0xa2a9, 0xa2ab, 0xa2aa, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_26[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa1b9, 0xa1b8, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xa1f0, 0x0000, 0xa1f1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_27[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xc6e6, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_2e[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xc8d6, 0x0000, 0x0000, 0x0000, 0xc8d7, 0x0000, 0xc8d8, 0xc8d9, + 0xc8da, 0x0000, 0xc8db, 0x0000, 0xc8dc, 0xc8dd, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xc8de, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xc8df, 0xc8e0, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xc8e1, 0x0000, 0xc8e2, + 0x0000, 0x0000, 0xc8e3, 0x0000, 0xc8e4, 0x0000, 0xc8e5, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xc8e6, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xc8e7, 0x0000, 0xc8e8, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xc8e9, 0x0000, + 0x0000, 0x0000, 0xc8ea, 0x0000, 0xc8eb, 0xc8ec, 0x0000, 0xc8ed, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xc8ee, 0xc8ef, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xc8f0, 0x0000, + 0x0000, 0x0000, 0x0000, 0xc8f1, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_2f[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xc6cd, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_30[] = { + 0xa140, 0xa142, 0xa143, 0xa1b2, 0x0000, 0xc6e0, 0xc6e1, 0xc6e2, + 0xa171, 0xa172, 0xa16d, 0xa16e, 0xa175, 0xa176, 0xa179, 0xa17a, + 0xa169, 0xa16a, 0xa245, 0x0000, 0xa165, 0xa166, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa1a9, 0xa1aa, 0x0000, + 0x0000, 0xa2c3, 0xa2c4, 0xa2c5, 0xa2c6, 0xa2c7, 0xa2c8, 0xa2c9, + 0xa2ca, 0xa2cb, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xc6e7, 0xc6e8, 0xc6e9, 0xc6ea, 0xc6eb, 0xc6ec, 0xc6ed, + 0xc6ee, 0xc6ef, 0xc6f0, 0xc6f1, 0xc6f2, 0xc6f3, 0xc6f4, 0xc6f5, + 0xc6f6, 0xc6f7, 0xc6f8, 0xc6f9, 0xc6fa, 0xc6fb, 0xc6fc, 0xc6fd, + 0xc6fe, 0xc740, 0xc741, 0xc742, 0xc743, 0xc744, 0xc745, 0xc746, + 0xc747, 0xc748, 0xc749, 0xc74a, 0xc74b, 0xc74c, 0xc74d, 0xc74e, + 0xc74f, 0xc750, 0xc751, 0xc752, 0xc753, 0xc754, 0xc755, 0xc756, + 0xc757, 0xc758, 0xc759, 0xc75a, 0xc75b, 0xc75c, 0xc75d, 0xc75e, + 0xc75f, 0xc760, 0xc761, 0xc762, 0xc763, 0xc764, 0xc765, 0xc766, + 0xc767, 0xc768, 0xc769, 0xc76a, 0xc76b, 0xc76c, 0xc76d, 0xc76e, + 0xc76f, 0xc770, 0xc771, 0xc772, 0xc773, 0xc774, 0xc775, 0xc776, + 0xc777, 0xc778, 0xc779, 0xc77a, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xc8d4, 0xc8d5, 0xc6dc, 0xc6dd, 0x0000, + 0x0000, 0xc77b, 0xc77c, 0xc77d, 0xc77e, 0xc7a1, 0xc7a2, 0xc7a3, + 0xc7a4, 0xc7a5, 0xc7a6, 0xc7a7, 0xc7a8, 0xc7a9, 0xc7aa, 0xc7ab, + 0xc7ac, 0xc7ad, 0xc7ae, 0xc7af, 0xc7b0, 0xc7b1, 0xc7b2, 0xc7b3, + 0xc7b4, 0xc7b5, 0xc7b6, 0xc7b7, 0xc7b8, 0xc7b9, 0xc7ba, 0xc7bb, + 0xc7bc, 0xc7bd, 0xc7be, 0xc7bf, 0xc7c0, 0xc7c1, 0xc7c2, 0xc7c3, + 0xc7c4, 0xc7c5, 0xc7c6, 0xc7c7, 0xc7c8, 0xc7c9, 0xc7ca, 0xc7cb, + 0xc7cc, 0xc7cd, 0xc7ce, 0xc7cf, 0xc7d0, 0xc7d1, 0xc7d2, 0xc7d3, + 0xc7d4, 0xc7d5, 0xc7d6, 0xc7d7, 0xc7d8, 0xc7d9, 0xc7da, 0xc7db, + 0xc7dc, 0xc7dd, 0xc7de, 0xc7df, 0xc7e0, 0xc7e1, 0xc7e2, 0xc7e3, + 0xc7e4, 0xc7e5, 0xc7e6, 0xc7e7, 0xc7e8, 0xc7e9, 0xc7ea, 0xc7eb, + 0xc7ec, 0xc7ed, 0xc7ee, 0xc7ef, 0xc7f0, 0xc7f1, 0xc7f2, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xc6e3, 0xc6da, 0xc6db, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_31[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa374, 0xa375, 0xa376, + 0xa377, 0xa378, 0xa379, 0xa37a, 0xa37b, 0xa37c, 0xa37d, 0xa37e, + 0xa3a1, 0xa3a2, 0xa3a3, 0xa3a4, 0xa3a5, 0xa3a6, 0xa3a7, 0xa3a8, + 0xa3a9, 0xa3aa, 0xa3ab, 0xa3ac, 0xa3ad, 0xa3ae, 0xa3af, 0xa3b0, + 0xa3b1, 0xa3b2, 0xa3b3, 0xa3b4, 0xa3b5, 0xa3b6, 0xa3b7, 0xa3b8, + 0xa3b9, 0xa3ba, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_32[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xc8d1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xa1c0, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_33[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa255, 0xa256, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xa250, 0xa251, 0xa252, 0x0000, + 0x0000, 0xa254, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xa257, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa253, 0x0000, + 0x0000, 0xa1eb, 0xa1ea, 0x0000, 0x0000, 0xa24f, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_34[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9277, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x96df, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x89d5, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x93cd, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x9bdf, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xfa68, 0x0000, 0x0000, 0x89da, 0x8f59, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x89db, 0x0000, 0x0000, 0x8f5d, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x89dc, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x96f7, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8ada, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8bdc, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x97db, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9e53, + 0x0000, 0x0000, 0x0000, 0x0000, 0x9daa, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x9bea, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_35[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8a6e, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8bc8, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x89e8, 0x0000, 0x89ea, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8c4b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xfb70, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x89ed, 0x0000, 0x0000, + 0x94dd, 0x0000, 0x89ee, 0x0000, 0x0000, 0x0000, 0x0000, 0x9eb4, + 0x8ad3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x92db, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x94db, + 0x89f9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xfb7a, 0x0000, 0x0000, 0x0000, 0x89fb, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9efc, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x89fc, + 0x0000, 0x89bf, 0x0000, 0x0000, 0x0000, 0x89fe, 0x0000, 0x89e6, + 0x0000, 0x0000, 0x9d46, 0x0000, 0x0000, 0x0000, 0x9dee, 0x0000, + 0x0000, 0x0000, 0xa07e, 0x0000, 0x0000, 0x0000, 0xa068, 0x0000, + 0x0000, 0x0000, 0x0000, 0x98e9, 0x0000, 0x8b68, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8dfd, 0x8bbe, 0x9fd9, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8aeb, 0x0000, 0x0000, 0x9fd7, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_36[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8b6a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x9c5c, 0x0000, 0x8bb1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xfb5e, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9df3, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa0d0, 0x0000, 0x0000, + 0x0000, 0xfc66, 0x0000, 0x0000, 0x0000, 0x0000, 0x92e9, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9aec, + 0x8fab, 0xfa48, 0x0000, 0x0000, 0x0000, 0x0000, 0x8e45, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9c6f, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x9ede, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x89ef, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x96e9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9ebb, 0x0000, 0x0000, + 0x0000, 0x0000, 0x94de, 0x0000, 0x9eb8, 0x0000, 0x0000, 0x0000, + 0x97ba, 0xfb65, 0x0000, 0x0000, 0x0000, 0x95d6, 0x0000, 0x0000, + 0x0000, 0x9cbb, 0x0000, 0x0000, 0x97da, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8f45, 0x0000, 0xfb7d, 0x9158, 0xfe64, 0x0000, 0x9856, + 0x9b4d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x935b, 0x95c7, 0x0000, 0x97e7, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9359, 0x0000, 0x0000, + 0x0000, 0x91f5, 0x97b8, 0x0000, 0x0000, 0xfda2, 0xfbb6, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x92fa, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_37[] = { + 0x0000, 0x9357, 0x0000, 0x8ba6, 0x0000, 0x0000, 0x0000, 0x0000, + 0xfbb9, 0x0000, 0x97b0, 0x0000, 0x0000, 0xfdc4, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x9ca1, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x91f2, 0x91f9, 0x0000, 0x8ff1, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x9745, 0x9853, 0x0000, 0x0000, + 0xfe78, 0x0000, 0xfbc1, 0x9251, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x9dad, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xfd6c, 0x0000, 0x0000, 0xfa6b, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x9bc2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9a7b, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8b60, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x934b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x9abd, 0x0000, 0x0000, 0x0000, 0x0000, 0x91b7, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x95b4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xfec5, 0x0000, 0x0000, 0x9ef0, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_38[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8d64, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x9269, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8d67, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfbea, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfbef, 0x0000, + 0x8d68, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x93eb, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xfc42, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x9166, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xfacd, 0x0000, 0x0000, 0x0000, + 0x0000, 0x93dd, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8bcc, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_39[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8d6d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8d6e, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x96a8, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xfca6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8d6f, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8d70, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xfc64, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x9060, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8d74, 0x97c3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8ad0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x9274, 0x0000, 0x9bbe, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x9cc8, 0x0000, 0x0000, 0x9cba, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8d78, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x9eb9, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x955a, 0x0000, 0x0000, 0x91b4, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8a48, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8d7d, 0x0000, 0x0000, 0x8a7d, 0x0000, 0x0000, 0x8ac2, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_3a[] = { + 0x0000, 0xfd4a, 0x0000, 0x8da1, 0x0000, 0x0000, 0x8ad1, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfcb4, + 0x8b47, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x93a4, 0x9eda, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8a51, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8da6, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x9ec5, 0x0000, 0x0000, 0x0000, 0x0000, 0xfcc4, + 0x0000, 0x0000, 0x0000, 0x0000, 0xa078, 0x0000, 0x94b5, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfcc2, 0x8a6b, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8dab, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xfae8, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8dad, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfc49, 0x0000, + 0x93c1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x906f, 0x0000, 0x8db0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x947e, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_3b[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x90fa, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x9479, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8db2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xfcee, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x997b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8db4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8db7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x91b3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8dbb, 0x8dba, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8dbc, 0x9044, 0x0000, 0x0000, 0x0000, + 0xfd4c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x93e4, 0x0000, + 0x0000, 0x93e0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xfd53, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8dc3, 0x0000, 0x9bb8, 0x0000, + 0x0000, 0x0000, 0xfbf0, 0x0000, 0x93e9, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x93f6, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8dc5, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8dca, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8dcc, 0xfd5d, 0x93b5, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_3c[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfd61, 0x0000, 0x0000, + 0x0000, 0x9cf8, 0x0000, 0x0000, 0x0000, 0x9252, 0x0000, 0x0000, + 0xa0e8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x9ca5, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8c56, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8dd6, 0x0000, 0x97c0, 0x0000, 0x0000, + 0x0000, 0xa0de, 0x0000, 0x0000, 0x0000, 0x0000, 0x97d2, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xfaa5, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xfda3, 0x0000, 0x0000, 0x0000, 0x8ddb, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_3d[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8eaf, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x91b5, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xfd49, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xfdd1, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8deb, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x97c6, 0x0000, 0xfdce, 0x0000, + 0x0000, 0x90fc, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfc59, + 0x0000, 0x0000, 0x96d6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x97c5, 0x8def, 0x0000, 0x0000, 0x0000, 0x0000, 0x97d7, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8df0, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x96a6, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfbbf, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8df3, 0x0000, 0x0000, 0x0000, 0x0000, 0x9449, + 0x0000, 0x8df5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9872, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8e6b, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xfafd, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8f50, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9dcc, 0xfc65, + 0x0000, 0x8c44, 0x0000, 0x0000, 0x996e, 0x94a1, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8f63, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xa0da, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9253, + 0xfde9, 0x0000, 0x0000, 0x9db5, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x9879, 0x0000, 0x0000, 0x0000, 0x9d5d, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8d63, 0x9669, 0x0000, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_3e[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9f70, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xfc6a, 0x0000, 0x0000, 0x8ac7, 0x0000, 0x0000, 0x0000, 0x0000, + 0x89d7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfe4d, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x9edd, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xfefb, 0x98bc, 0xfacc, 0x0000, 0x0000, 0x95b0, 0x0000, 0x0000, + 0x0000, 0x9464, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x936f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x94b9, + 0x0000, 0x0000, 0x95ec, 0x0000, 0x0000, 0x0000, 0x0000, 0x91ee, + 0x0000, 0x0000, 0x98c3, 0x0000, 0x95f6, 0x0000, 0x0000, 0x0000, + 0x8ffd, 0x98c5, 0x0000, 0x0000, 0x0000, 0x0000, 0x9766, 0xfe6e, + 0x0000, 0x0000, 0x97dd, 0x8caa, 0x0000, 0x0000, 0x92d2, 0x0000, + 0x0000, 0x9761, 0x98cb, 0x0000, 0x0000, 0x0000, 0x0000, 0x95f0, + 0x0000, 0x975d, 0x0000, 0x91e3, 0x0000, 0x0000, 0x0000, 0x0000, + 0x98cc, 0x0000, 0x0000, 0x9469, 0x98cd, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x98ce, 0x0000, 0x95fc, 0x0000, 0x0000, 0x94a3 +}; + +static const unsigned short big5hkscs_from_unicode_3f[] = { + 0x9662, 0x0000, 0x0000, 0x0000, 0xfeb6, 0x0000, 0x9463, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x98d0, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x98d1, 0x0000, 0x0000, 0x0000, 0x0000, + 0x9475, 0xfae0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x9472, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x98d6, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8af0, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x98d9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x98db, + 0x0000, 0x0000, 0x0000, 0x0000, 0x98dd, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x98a8, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8a6d, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8afb, 0x8aae, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_40[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0xfbc9, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8c5d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x98e4, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x98e6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x98e8, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8a4d, 0x0000, 0x0000, 0x0000, 0x9257, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x95df, 0x0000, 0x0000, 0xa0ac, 0x0000, 0x0000, + 0x0000, 0x0000, 0x98eb, 0x0000, 0x0000, 0x0000, 0x0000, 0x98ec, + 0x0000, 0x8cc3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x98f4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8ab8, 0x0000, 0x0000, 0x0000, 0x9ee7, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x94bc, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xfcd1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9cc6, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x9e7e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_41[] = { + 0x0000, 0x0000, 0x0000, 0x98fe, 0xfde8, 0x0000, 0x0000, 0x0000, + 0x0000, 0x9940, 0x0000, 0x0000, 0x0000, 0x0000, 0x94c9, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x94d3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9946, + 0x0000, 0x0000, 0x0000, 0x0000, 0x90c0, 0x0000, 0x94d1, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9573, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x93c2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x9948, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x994b, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8e55, 0x0000, 0x0000, 0x0000, 0x0000, 0x994e, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8efe, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8e59, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x94ec, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_42[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x94ef, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8c60, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8f74, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x9955, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x9544, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8ccb, 0x0000, + 0x0000, 0x0000, 0x9956, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x9959, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x995b, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8cc4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfa45, 0x0000, 0x0000, + 0x0000, 0x90b7, 0x0000, 0x0000, 0x9743, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x95cd, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x97c9, 0xfd50, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_43[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8eb9, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x95c6, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9967, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8ab9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8dfc, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8a76, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9d51, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9973, 0x0000, 0x0000, + 0x0000, 0x0000, 0x9d4f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_44[] = { + 0x0000, 0x997a, 0x9564, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x99a1, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x99a5, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x99a7, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8eed, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x99ad, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x946e, + 0x8f70, 0x0000, 0xfad0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x99b3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa053, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x965c, 0x0000, 0x0000, 0x0000, 0x0000, 0xfd7a, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x97fe, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x92bd, 0x0000, 0x97fd, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8f64, 0x0000, 0x0000, 0x0000, + 0x0000, 0xfcf7, 0x9562, 0x97cd, 0x9e64, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x924c, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_45[] = { + 0x0000, 0x0000, 0x0000, 0x8ec9, 0x99bc, 0x0000, 0x0000, 0x0000, + 0x0000, 0x9da5, 0x0000, 0x8f54, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8f7c, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8ea2, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8f7a, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x97ae, 0x0000, + 0x0000, 0x0000, 0x0000, 0x96c8, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x99c3, 0x0000, 0x90d6, 0x0000, 0x9cbe, + 0x0000, 0x0000, 0x0000, 0x8f76, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x9470, 0xfb4b, 0x0000, 0x0000, 0xfdca, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8ec7, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xa0f9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8fa9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x99c7, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x90d7, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x9edf, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_46[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x99ce, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8fba, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8feb, 0x0000, 0x99cf, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8fc2, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x92c9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x97dc, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x95b3, + 0x9c79, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x95b2, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_47[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8fdb, 0x0000, 0x0000, 0x0000, 0x0000, + 0x9be3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9e7a, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x9bee, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x99de, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfafa, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9ee5, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8a52, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x99e1, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8a67, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_48[] = { + 0x8bb5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8aac, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x99e9, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfbca, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x97de, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x95d1, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x99f5, 0xfc4a, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x9ba9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfbdc, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfe56, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x9ea4, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x9d49, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_49[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x95db, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x89c5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x99f8, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9664, 0x0000, 0x0000, + 0x0000, 0x0000, 0x9055, 0x0000, 0x0000, 0x96d4, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x977c, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x964d, 0x0000, 0x97e1, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9a48, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x9a49, 0x0000, 0xfe7d, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x90aa, 0x0000, 0x0000, + 0x0000, 0x0000, 0x9a50, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x9347, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8ed8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x90c9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9a55, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x90bc, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9a58, 0x0000, 0x8bb8, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_4a[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x90d5, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9641, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x9a5a, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9a5c, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x97c2, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8abb, 0x0000, 0x0000, 0x0000, + 0x9baa, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x90f5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x9a60, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9145 +}; + +static const unsigned short big5hkscs_from_unicode_4b[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8c58, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x9a63, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8c49, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8bb6, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfccf, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x966b, + 0x9a6e, 0x0000, 0x914f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x9746, 0x0000, 0x0000, 0xa0e6, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x92d7, 0x0000, + 0x9675, 0x0000, 0x0000, 0x93d4, 0x0000, 0x0000, 0x91bb, 0x9679, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9a70, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9678, 0x91cd, 0x0000, + 0x9c4a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_4c[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0xa06f, 0x0000, 0x0000, 0xa06a, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x915f, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x9fa5, 0x0000, 0x0000, 0x89ba, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x9ecd, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9a79, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9dce, 0x0000, 0x0000, + 0x0000, 0x8cd2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x9d73, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x96b9, 0x0000, + 0x96bc, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9cd1, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x89b7, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x9eee, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfb43, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_4d[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x9ec9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xfbd3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x91ae, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x9d78, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x9d7b, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_4e[] = { + 0xa440, 0xa442, 0x0000, 0xa443, 0x9eb3, 0x0000, 0x0000, 0xc945, + 0xa456, 0xa454, 0xa457, 0xa455, 0xc946, 0xa4a3, 0xc94f, 0xc94d, + 0xa4a2, 0xa4a1, 0x0000, 0x0000, 0xa542, 0xa541, 0xa540, 0x0000, + 0xa543, 0xa4fe, 0x9eb2, 0x0000, 0x9dd6, 0x0000, 0xa5e0, 0xa5e1, + 0x0000, 0x994f, 0x0000, 0x0000, 0x89ce, 0x0000, 0xa8c3, 0x0000, + 0x8bc0, 0x0000, 0x9fc4, 0xa458, 0x8bd4, 0xa4a4, 0xc950, 0x8c72, + 0xa4a5, 0xc963, 0xa6ea, 0xcbb1, 0x0000, 0x0000, 0xc6bf, 0x8bf9, + 0xa459, 0xa4a6, 0x0000, 0xa544, 0xc964, 0x8946, 0x0000, 0xc6c0, + 0x0000, 0x0000, 0xc940, 0xa444, 0x0000, 0xa45b, 0x0000, 0xc947, + 0xa45c, 0xfae5, 0x0000, 0xa4a7, 0x0000, 0xa545, 0xa547, 0xa546, + 0x0000, 0x0000, 0xa5e2, 0xa5e3, 0x0000, 0x0000, 0xa8c4, 0x0000, + 0xadbc, 0xa441, 0xc87b, 0x8bc6, 0xc941, 0xa445, 0xa45e, 0xa45d, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xa5e4, 0x9c57, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xa8c5, 0x0000, 0x0000, 0x0000, 0x0000, + 0x9afb, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xb0ae, 0xd44b, + 0x89d0, 0x89cf, 0xb6c3, 0xdcb1, 0xdcb2, 0xc6c1, 0xa446, 0x89d1, + 0xa4a9, 0x89e2, 0x0000, 0xa8c6, 0xa447, 0xc948, 0xa45f, 0x0000, + 0x0000, 0xa4aa, 0xa4ac, 0xc951, 0xa4ad, 0xa4ab, 0x0000, 0x0000, + 0x927e, 0xa5e5, 0x9dba, 0xa8c7, 0x0000, 0x0000, 0xa8c8, 0xab45, + 0xc6c2, 0xa460, 0xa4ae, 0x8c6f, 0xa5e6, 0xa5e8, 0xa5e7, 0x0000, + 0xa6eb, 0x0000, 0x0000, 0xa8c9, 0xa8ca, 0xab46, 0xab47, 0x0000, + 0x0000, 0x0000, 0x0000, 0xadbd, 0x0000, 0x0000, 0xdcb3, 0xfbf8, + 0x0000, 0xf6d6, 0xa448, 0x8bc7, 0x926b, 0x0000, 0x0000, 0x89d2, + 0xa4b0, 0xa4af, 0xc952, 0xa4b1, 0xa4b7, 0x0000, 0xa4b2, 0xa4b3, + 0xc954, 0xc953, 0xa4b5, 0xa4b6, 0x0000, 0xa4b4, 0x9fcf, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xa54a, 0xa54b, 0xa54c, 0xa54d, + 0xa549, 0xa550, 0xc96a, 0x0000, 0xc966, 0xc969, 0xa551, 0xa561, + 0x0000, 0xc968, 0x0000, 0xa54e, 0xa54f, 0xa548, 0x0000, 0x0000, + 0xc965, 0xc967, 0x9da9, 0x89d3, 0x0000, 0x0000, 0x99e2, 0x0000, + 0xa5f5, 0xc9b0, 0xa5f2, 0xa5f6, 0xc9ba, 0xc9ae, 0xa5f3, 0xc9b2, + 0x9267, 0x0000, 0x0000, 0xa5f4, 0x0000, 0xa5f7, 0x0000, 0xa5e9 +}; + +static const unsigned short big5hkscs_from_unicode_4f[] = { + 0xc9b1, 0xa5f8, 0xc9b5, 0x92a4, 0xc9b9, 0xc9b6, 0x0000, 0x0000, + 0xc9b3, 0xa5ea, 0xa5ec, 0xa5f9, 0x0000, 0xa5ee, 0xc9ab, 0xa5f1, + 0xa5ef, 0xa5f0, 0xc9bb, 0xc9b8, 0xc9af, 0xa5ed, 0x0000, 0x8c73, + 0xc9ac, 0xa5eb, 0x894e, 0x0000, 0x0000, 0xc9b4, 0x0000, 0x0000, + 0x0000, 0x0000, 0xc9b7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x894f, 0x9278, 0x0000, 0x0000, 0xc9ad, 0xca66, 0x0000, 0xa742, + 0xa6f4, 0x0000, 0x91b6, 0xca67, 0xa6f1, 0x0000, 0xa744, 0x89d4, + 0xa6f9, 0x9fd2, 0xa6f8, 0xca5b, 0xa6fc, 0xa6f7, 0xca60, 0xca68, + 0x0000, 0xca64, 0x92a7, 0xa6fa, 0x0000, 0x95a2, 0xa6fd, 0xa6ee, + 0xa747, 0xca5d, 0x0000, 0x926e, 0xcbbd, 0xa6ec, 0xa743, 0xa6ed, + 0xa6f5, 0xa6f6, 0xca62, 0xca5e, 0xa6fb, 0xa6f3, 0xca5a, 0xa6ef, + 0xca65, 0xa745, 0xa748, 0xa6f2, 0xa740, 0xa746, 0xa6f0, 0xca63, + 0xa741, 0xca69, 0xca5c, 0xa6fe, 0xca5f, 0x0000, 0x0000, 0xca61, + 0x0000, 0xa8d8, 0xcbbf, 0xcbcb, 0xa8d0, 0x0000, 0xcbcc, 0xa8cb, + 0xa8d5, 0x0000, 0x96ea, 0xa8ce, 0xcbb9, 0xa8d6, 0xcbb8, 0xcbbc, + 0xcbc3, 0xcbc1, 0xa8de, 0xa8d9, 0xcbb3, 0xcbb5, 0xa8db, 0xa8cf, + 0xcbb6, 0xcbc2, 0xcbc9, 0xa8d4, 0xcbbb, 0xcbb4, 0xa8d3, 0xcbb7, + 0xa8d7, 0xcbba, 0x926f, 0xa8d2, 0x0000, 0xa8cd, 0x0000, 0xa8dc, + 0xcbc4, 0xa8dd, 0xcbc8, 0x0000, 0xcbc6, 0xcbca, 0xa8da, 0xcbbe, + 0xcbb2, 0x0000, 0xcbc0, 0xa8d1, 0xcbc5, 0xa8cc, 0xcbc7, 0x0000, + 0x0000, 0x0000, 0x92a3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8950, 0x0000, 0x0000, 0xfa57, 0x0000, 0x0000, 0xab56, 0xab4a, + 0x9866, 0x0000, 0xcde0, 0xcde8, 0x0000, 0xab49, 0xab51, 0xab5d, + 0x0000, 0xcdee, 0xcdec, 0xcde7, 0x0000, 0x89d6, 0x0000, 0xab4b, + 0xcded, 0xcde3, 0xab59, 0xab50, 0xab58, 0xcdde, 0x0000, 0xcdea, + 0x98b2, 0xcde1, 0xab54, 0xcde2, 0x92ab, 0xcddd, 0xab5b, 0xab4e, + 0xab57, 0xab4d, 0x0000, 0xcddf, 0xcde4, 0x0000, 0xcdeb, 0xab55, + 0xab52, 0xcde6, 0xab5a, 0xcde9, 0xcde5, 0xab4f, 0xab5c, 0xab53, + 0xab4c, 0xab48, 0x0000, 0x0000, 0x96de, 0x92ac, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xcdef, 0x0000, 0xadd7, 0xadc1, + 0x8c70, 0xadd1, 0x9f6e, 0xadd6, 0xd0d0, 0xd0cf, 0xd0d4, 0xd0d5, + 0xadc4, 0x8ef2, 0xadcd, 0x0000, 0x0000, 0x9f6c, 0xadda, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_50[] = { + 0xadce, 0x0000, 0x0000, 0x89d8, 0x0000, 0xd0c9, 0xadc7, 0xd0ca, + 0xfa59, 0xaddc, 0x0000, 0xadd3, 0xadbe, 0xadbf, 0xd0dd, 0xb0bf, + 0x0000, 0xadcc, 0xadcb, 0xd0cb, 0xadcf, 0xd45b, 0xadc6, 0xd0d6, + 0xadd5, 0xadd4, 0xadca, 0xd0ce, 0xd0d7, 0x0000, 0xd0c8, 0xadc9, + 0xd0d8, 0xadd2, 0xd0cc, 0xadc0, 0x0000, 0xadc3, 0xadc2, 0xd0d9, + 0xadd0, 0xfa5f, 0xadd9, 0xaddb, 0xd0d3, 0xadd8, 0x92a8, 0xd0db, + 0xd0cd, 0xd0dc, 0x0000, 0xd0d1, 0x9163, 0xd0da, 0x0000, 0xd0d2, + 0x0000, 0x0000, 0x0000, 0x8c40, 0xadc8, 0x0000, 0x0000, 0x0000, + 0xd463, 0xd457, 0x0000, 0xb0b3, 0x0000, 0xd45c, 0xd462, 0xb0b2, + 0xd455, 0xb0b6, 0xd459, 0xd452, 0xb0b4, 0xd456, 0xb0b9, 0xb0be, + 0x0000, 0xd467, 0x0000, 0xd451, 0x0000, 0xb0ba, 0x9f73, 0xd466, + 0x92ad, 0x0000, 0xb0b5, 0xd458, 0xb0b1, 0xd453, 0xd44f, 0xd45d, + 0xd450, 0xd44e, 0xd45a, 0xd460, 0xd461, 0xb0b7, 0x9be9, 0x0000, + 0xd85b, 0xd45e, 0xd44d, 0xd45f, 0x92a9, 0xb0c1, 0xd464, 0xb0c0, + 0xd44c, 0x0000, 0xd454, 0xd465, 0xb0bc, 0xb0bb, 0xb0b8, 0xb0bd, + 0x0000, 0x0000, 0xb0af, 0x0000, 0x0000, 0xfa66, 0x0000, 0x0000, + 0xb3c8, 0x92aa, 0xd85e, 0xd857, 0x0000, 0xb3c5, 0x0000, 0xd85f, + 0x89d9, 0x0000, 0x0000, 0xd855, 0xd858, 0xb3c4, 0xd859, 0x0000, + 0xfd56, 0xb3c7, 0xd85d, 0x0000, 0xd853, 0xd852, 0xb3c9, 0x0000, + 0xb3ca, 0xb3c6, 0xb3cb, 0xd851, 0xd85c, 0xd85a, 0xd854, 0x0000, + 0x0000, 0x0000, 0xb3c3, 0xd856, 0x0000, 0x0000, 0x9fa8, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xb6ca, 0xb6c4, 0xdcb7, 0xb6cd, + 0xdcbd, 0xdcc0, 0xb6c6, 0xb6c7, 0xdcba, 0xb6c5, 0xdcc3, 0xb6cb, + 0xdcc4, 0x0000, 0xdcbf, 0xb6cc, 0x8c71, 0xdcb4, 0xb6c9, 0xdcb5, + 0x0000, 0xdcbe, 0xdcbc, 0x0000, 0xdcb8, 0xb6c8, 0xdcb6, 0xb6ce, + 0xdcbb, 0xdcc2, 0xdcb9, 0xdcc1, 0x0000, 0x92a1, 0xb9b6, 0xb9b3, + 0x90e3, 0xb9b4, 0x0000, 0xe0f9, 0xe0f1, 0xb9b2, 0xb9af, 0xe0f2, + 0x0000, 0xa0a6, 0xb9b1, 0xe0f5, 0x0000, 0xe0f7, 0x0000, 0x94ab, + 0xe0fe, 0xfc72, 0x0000, 0xe0fd, 0xe0f8, 0xb9ae, 0xe0f0, 0xb9ac, + 0xe0f3, 0xb9b7, 0xe0f6, 0x0000, 0xe0fa, 0xb9b0, 0xb9ad, 0xe0fc, + 0xe0fb, 0xb9b5, 0x0000, 0xe0f4, 0x97c4, 0xbbf8, 0xe4ec, 0x0000, + 0xe4e9, 0xbbf9, 0x0000, 0xbbf7, 0x92ae, 0xe4f0, 0xe4ed, 0xe4e6 +}; + +static const unsigned short big5hkscs_from_unicode_51[] = { + 0xbbf6, 0xfa67, 0xbbfa, 0xe4e7, 0xbbf5, 0xbbfd, 0xe4ea, 0xe4eb, + 0xbbfb, 0xbbfc, 0xe4f1, 0xe4ee, 0xe4ef, 0x92a2, 0xfa69, 0x0000, + 0xbeaa, 0xe8f8, 0xbea7, 0xe8f5, 0xbea9, 0xbeab, 0x0000, 0xe8f6, + 0xbea8, 0x0000, 0xe8f7, 0x0000, 0xe8f4, 0x0000, 0x0000, 0xc076, + 0xecbd, 0xc077, 0xecbb, 0x0000, 0xecbc, 0xecba, 0xecb9, 0x0000, + 0x0000, 0xecbe, 0xc075, 0x9268, 0x0000, 0xefb8, 0xefb9, 0x0000, + 0xe4e8, 0xefb7, 0xc078, 0xc35f, 0xf1eb, 0xf1ec, 0x0000, 0xc4d7, + 0xc4d8, 0xf5c1, 0xf5c0, 0xc56c, 0xc56b, 0xf7d0, 0x0000, 0xa449, + 0xa461, 0xa4b9, 0x0000, 0xa4b8, 0xa553, 0xa552, 0xa5fc, 0xa5fb, + 0xa5fd, 0xa5fa, 0x0000, 0xa74a, 0xa749, 0xa74b, 0x0000, 0x0000, + 0x0000, 0x0000, 0xa8e0, 0x0000, 0xa8df, 0xa8e1, 0x8951, 0xab5e, + 0x0000, 0xa259, 0xd0de, 0xa25a, 0xb0c2, 0xa25c, 0xa25b, 0xd860, + 0xfa6f, 0xa25d, 0xb9b8, 0xa25e, 0x0000, 0xa44a, 0x0000, 0xa4ba, + 0xa5fe, 0xa8e2, 0xfa71, 0xa44b, 0xa4bd, 0xa4bb, 0xa4bc, 0x0000, + 0x0000, 0xa640, 0x0000, 0x0000, 0x8952, 0xa74c, 0xa8e4, 0xa8e3, + 0xa8e5, 0x945a, 0x0000, 0x0000, 0xaddd, 0x0000, 0x0000, 0x0000, + 0xbeac, 0x0000, 0xc6c3, 0x0000, 0x0000, 0x0000, 0x89dd, 0xc94e, + 0xc8a2, 0xa554, 0xa555, 0x0000, 0x0000, 0xa641, 0x0000, 0xca6a, + 0x0000, 0xab60, 0xab5f, 0xd0e0, 0xd0df, 0xb0c3, 0xc6c4, 0xa4be, + 0xc955, 0x0000, 0x9e52, 0x0000, 0x8953, 0x0000, 0xcbcd, 0x0000, + 0xab61, 0x0000, 0xade0, 0x0000, 0xadde, 0xaddf, 0x0000, 0x9e55, + 0x92ba, 0x0000, 0xbead, 0xc6c5, 0xa556, 0x0000, 0x8c5b, 0x0000, + 0xa642, 0xc9bc, 0xfa7d, 0xfaa8, 0x9a68, 0xfa47, 0xa74d, 0xa74e, + 0xfa7e, 0xca6b, 0x0000, 0x0000, 0xcbce, 0xa8e6, 0xcbcf, 0x0000, + 0x0000, 0x0000, 0x0000, 0x92bb, 0xd0e2, 0xd0e3, 0xade3, 0xfdb6, + 0xd0e4, 0xfaa2, 0xd0e1, 0xade4, 0xade2, 0xade1, 0xd0e5, 0xfaa3, + 0xd468, 0xfaa4, 0x9bb4, 0xfaa6, 0xd861, 0x0000, 0x0000, 0xdcc5, + 0xe140, 0x0000, 0x0000, 0x89df, 0xbbfe, 0xbeae, 0xe8f9, 0xfddb, + 0xa44c, 0xa45a, 0xfaa9, 0x0000, 0x8954, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfaab, 0x0000, 0x0000, + 0xb0c4, 0xb3cd, 0x0000, 0xb9b9, 0xfc7a, 0xc942, 0xa4bf, 0x0000, + 0xa559, 0xa557, 0xa558, 0x0000, 0x89e0, 0xa8e7, 0x9f4f, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_52[] = { + 0xa44d, 0xa44e, 0xc87d, 0xa462, 0x0000, 0x89e1, 0xa4c0, 0xa4c1, + 0xa4c2, 0xc9be, 0xa55a, 0xfab0, 0xc96b, 0x0000, 0xa646, 0x0000, + 0xc9bf, 0xa644, 0xa645, 0xc9bd, 0x0000, 0x0000, 0xa647, 0xa643, + 0x0000, 0x0000, 0x0000, 0x0000, 0xca6c, 0xaaec, 0xca6d, 0x9fcd, + 0xa0e7, 0xca6e, 0x0000, 0x0000, 0xa750, 0xa74f, 0xfab1, 0x89a6, + 0xa753, 0xa751, 0xa752, 0x0000, 0x0000, 0x0000, 0xa8ed, 0x0000, + 0xa8ec, 0xcbd4, 0xcbd1, 0xcbd2, 0x9efa, 0xcbd0, 0xa8ee, 0xa8ea, + 0xa8e9, 0x0000, 0xa8eb, 0xa8e8, 0xfab2, 0x0000, 0x0000, 0x0000, + 0x0000, 0xa8ef, 0x0000, 0xab63, 0xcdf0, 0x0000, 0xcbd3, 0xab68, + 0x0000, 0xcdf1, 0xab64, 0xab67, 0xab66, 0xab65, 0xab62, 0x0000, + 0x0000, 0x0000, 0xd0e8, 0x0000, 0xade7, 0xd0eb, 0xade5, 0xfab4, + 0x0000, 0x92c4, 0xd0e7, 0xade8, 0xade6, 0xade9, 0xd0e9, 0xd0ea, + 0x9f6f, 0xd0e6, 0xd0ec, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8bb0, 0xb3d1, 0xb0c5, 0xd469, 0xd46b, 0xd46a, 0xd46c, 0xb0c6, + 0x0000, 0x0000, 0xb3ce, 0x9fac, 0xb3cf, 0xb3d0, 0x0000, 0xb6d0, + 0xdcc7, 0x89e3, 0xdcc6, 0xdcc8, 0xdcc9, 0xb6d1, 0x0000, 0xb6cf, + 0xe141, 0xe142, 0xb9bb, 0xb9ba, 0xe35a, 0x0000, 0x0000, 0xbc40, + 0xbc41, 0xbc42, 0xbc44, 0xe4f2, 0xe4f3, 0xbc43, 0x0000, 0x9bd3, + 0x89e4, 0xbeaf, 0x0000, 0xbeb0, 0xfab5, 0x0000, 0xf1ed, 0xf5c3, + 0xf5c2, 0xf7d1, 0x9fd5, 0xa44f, 0x0000, 0x0000, 0x0000, 0xa55c, + 0xa55b, 0x8955, 0x0000, 0xa648, 0x92c5, 0x0000, 0xc9c0, 0x0000, + 0x8956, 0xa755, 0xa756, 0xa754, 0xa757, 0xca6f, 0xca70, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfab3, 0x0000, 0x0000, + 0x0000, 0xfab6, 0x0000, 0xa8f1, 0xcbd5, 0x0000, 0xa8f0, 0x0000, + 0xcdf2, 0xab6c, 0xcdf3, 0xab6b, 0x0000, 0xfab7, 0x0000, 0xab69, + 0x0000, 0xab6a, 0x0000, 0x0000, 0x9edc, 0xd0ed, 0x0000, 0x0000, + 0xfbc4, 0x9f71, 0xb0c7, 0xd46e, 0x0000, 0xb0ca, 0xd46d, 0xb1e5, + 0xb0c9, 0xb0c8, 0x0000, 0xb3d4, 0x0000, 0xb3d3, 0xb3d2, 0xb6d2, + 0xfaba, 0x92c7, 0xb6d5, 0xb6d6, 0xb6d4, 0x0000, 0xb6d3, 0x0000, + 0x0000, 0xe143, 0x0000, 0xe144, 0x0000, 0x0000, 0x0000, 0xe4f5, + 0xbc45, 0xe4f4, 0x0000, 0xbeb1, 0xecbf, 0xc079, 0x0000, 0xf1ee, + 0xc455, 0xc6c6, 0xa463, 0xa4c3, 0xc956, 0x0000, 0xa4c4, 0xa4c5 +}; + +static const unsigned short big5hkscs_from_unicode_53[] = { + 0x0000, 0x9a4c, 0x0000, 0x0000, 0x0000, 0xfabd, 0xa55e, 0x0000, + 0xa649, 0xca71, 0xcbd6, 0xcbd7, 0x0000, 0xab6d, 0xd0ee, 0xb0cc, + 0xb0cb, 0xd863, 0xd862, 0x0000, 0x0000, 0xa450, 0xa4c6, 0xa55f, + 0x0000, 0xb0cd, 0xc943, 0x0000, 0xc96c, 0xa560, 0x0000, 0xc9c2, + 0xa64b, 0xa64a, 0xc9c1, 0xa758, 0x8c68, 0x0000, 0x0000, 0x89e5, + 0x0000, 0x0000, 0xadea, 0x0000, 0x9f7d, 0xd46f, 0x0000, 0xb6d7, + 0xe145, 0xb9bc, 0xa0a9, 0xfac4, 0xe8fa, 0x0000, 0x0000, 0xf3fd, + 0xc6c7, 0xa4c7, 0x0000, 0x8957, 0xcbd8, 0xcdf4, 0xb0d0, 0xb0ce, + 0xb0cf, 0xa451, 0xfaaa, 0xa464, 0xfac5, 0xa4ca, 0x0000, 0xa4c9, + 0xa4c8, 0xa563, 0xa562, 0x0000, 0xc96d, 0xc9c3, 0x8958, 0x0000, + 0x0000, 0xa8f5, 0xa8f2, 0xa8f4, 0xa8f3, 0x0000, 0x0000, 0xab6e, + 0x0000, 0x0000, 0xb3d5, 0x0000, 0xa452, 0x8be3, 0xa4cb, 0x8b61, + 0xa565, 0xa564, 0x0000, 0xca72, 0x9af1, 0x0000, 0xa8f6, 0x9eb7, + 0x0000, 0xc6c8, 0x0000, 0x0000, 0xc957, 0xfad1, 0xa567, 0xa566, + 0xa64c, 0xa64d, 0xca73, 0xa759, 0xfad2, 0xa75a, 0x0000, 0xa8f7, + 0xa8f8, 0xa8f9, 0x0000, 0xab6f, 0xcdf5, 0x9eba, 0xfad4, 0xfad5, + 0x0000, 0x0000, 0xc944, 0x0000, 0xa4cc, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xc9c4, 0x0000, 0x0000, 0x0000, 0xca74, 0xca75, + 0x0000, 0x0000, 0xcbd9, 0xfad9, 0xcbda, 0x0000, 0xcdf7, 0xcdf6, + 0xcdf9, 0xcdf8, 0xab70, 0x0000, 0xd470, 0xaded, 0xd0ef, 0xadec, + 0xfadb, 0x0000, 0x9ce0, 0x0000, 0xd864, 0xb3d6, 0xfbf7, 0xd865, + 0xfbfa, 0x89e7, 0xa07a, 0xfadc, 0xe146, 0xb9bd, 0xfadd, 0x0000, + 0x89e9, 0x0000, 0xbc46, 0x0000, 0xf1ef, 0x0000, 0xc6c9, 0x0000, + 0x0000, 0xc958, 0x0000, 0xa568, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xfae2, 0x89eb, 0xb0d1, 0x0000, 0xfae3, 0x0000, 0x0000, + 0xa453, 0xa465, 0xa4ce, 0xa4cd, 0x90c8, 0xa4cf, 0x0000, 0x0000, + 0x92da, 0x8959, 0x9cf5, 0x0000, 0xa8fb, 0x0000, 0xa8fa, 0xa8fc, + 0x895a, 0xfae7, 0x9fa2, 0xab71, 0x0000, 0x0000, 0x0000, 0xadee, + 0xfaea, 0xe8fb, 0xc24f, 0xa466, 0xa56a, 0xa579, 0xa574, 0x0000, + 0xa56f, 0xa56e, 0xa575, 0xa573, 0xa56c, 0xa57a, 0xa56d, 0xa569, + 0xa578, 0xa577, 0xa576, 0xa56b, 0x0000, 0xa572, 0xfaed, 0x8fad, + 0xa571, 0x0000, 0x0000, 0xa57b, 0xa570, 0x0000, 0xfb59, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_54[] = { + 0x0000, 0xa653, 0x0000, 0xa659, 0xa655, 0x0000, 0xa65b, 0xc9c5, + 0xa658, 0xa64e, 0xa651, 0xa654, 0xa650, 0xa657, 0xa65a, 0xa64f, + 0xa652, 0xa656, 0xa65c, 0xfaef, 0x96ef, 0x0000, 0x9dec, 0x0000, + 0xca7e, 0xca7b, 0x9dca, 0xa767, 0xca7c, 0xa75b, 0xa75d, 0xa775, + 0xa770, 0xfd6d, 0x0000, 0x89ec, 0xcaa5, 0xca7d, 0xa75f, 0xa761, + 0xcaa4, 0xa768, 0xca78, 0xa774, 0xa776, 0xa75c, 0xa76d, 0xfb44, + 0xca76, 0xa773, 0x9de2, 0xa764, 0x8c75, 0xa76e, 0xa76f, 0xca77, + 0xa76c, 0xa76a, 0x0000, 0xa76b, 0xa771, 0xcaa1, 0xa75e, 0x0000, + 0xa772, 0xcaa3, 0xa766, 0xa763, 0x0000, 0xca7a, 0xa762, 0xcaa6, + 0xa765, 0x0000, 0xa769, 0x9ec0, 0x0000, 0x9e56, 0xa760, 0xcaa2, + 0x0000, 0x0000, 0x0000, 0x0000, 0xca79, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xcbeb, 0xcbea, 0xa94f, 0xcbed, 0xcbef, 0xcbe4, 0xcbe7, 0xcbee, + 0xa950, 0x9f79, 0x9ac7, 0xcbe1, 0xcbe5, 0xfaf4, 0x0000, 0xcbe9, + 0xce49, 0xa94b, 0xce4d, 0xa8fd, 0xcbe6, 0xa8fe, 0xa94c, 0xa945, + 0xa941, 0x0000, 0xcbe2, 0xa944, 0xa949, 0xa952, 0xcbe3, 0xcbdc, + 0xa943, 0xcbdd, 0xcbdf, 0x0000, 0xa946, 0x98a1, 0xa948, 0xcbdb, + 0xcbe0, 0x0000, 0x0000, 0xa951, 0xa94d, 0xcbe8, 0xa953, 0xfaf8, + 0xa94a, 0xcbde, 0xa947, 0x89f0, 0x9e47, 0xa942, 0xa940, 0x9df7, + 0xcbec, 0x0000, 0xa94e, 0x0000, 0x9fd3, 0x0000, 0x9aca, 0x0000, + 0xce48, 0xcdfb, 0xce4b, 0x89f1, 0xfaf9, 0xcdfd, 0xab78, 0xaba8, + 0xab74, 0xaba7, 0xab7d, 0xaba4, 0xab72, 0xcdfc, 0xce43, 0xaba3, + 0xce4f, 0xaba5, 0x8e5a, 0xab79, 0x89f2, 0x0000, 0xce45, 0xce42, + 0xab77, 0x89f3, 0xcdfa, 0xaba6, 0xce4a, 0xab7c, 0xce4c, 0xaba9, + 0xab73, 0xab7e, 0xab7b, 0xce40, 0xaba1, 0xce46, 0xce47, 0xab7a, + 0xaba2, 0xab76, 0x0000, 0x925d, 0x8b51, 0x92e0, 0xab75, 0xcdfe, + 0x89f4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xce44, 0x0000, + 0x0000, 0x0000, 0x9fd4, 0x0000, 0x0000, 0x0000, 0xce4e, 0x0000, + 0xd144, 0xadfb, 0xd0f1, 0x8a79, 0xd0f6, 0xadf4, 0xae40, 0xd0f4, + 0xadef, 0xadf9, 0xadfe, 0xd0fb, 0x0000, 0xadfa, 0xadfd, 0x89f5, + 0x0000, 0xd0fe, 0xadf5, 0xd0f5, 0x0000, 0x0000, 0x0000, 0xd142, + 0xd143, 0x0000, 0xadf7, 0xd141, 0xadf3, 0xae43, 0x0000, 0xd0f8 +}; + +static const unsigned short big5hkscs_from_unicode_55[] = { + 0x0000, 0xadf1, 0x97a7, 0xd146, 0xd0f9, 0xd0fd, 0xadf6, 0xae42, + 0xd0fa, 0xadfc, 0xd140, 0xd147, 0xd4a1, 0x93ba, 0xd145, 0xae44, + 0xadf0, 0xd0fc, 0xd0f3, 0x9e58, 0xadf8, 0x0000, 0x0000, 0xd0f2, + 0x89f6, 0x0000, 0xd0f7, 0x0000, 0x0000, 0x0000, 0x9e57, 0x0000, + 0x0000, 0x0000, 0x0000, 0x89f7, 0x0000, 0x8a41, 0xd0f0, 0xae41, + 0x89f8, 0x0000, 0xd477, 0xfaf1, 0xb0e4, 0xd4a7, 0xb0e2, 0xb0df, + 0xd47c, 0xb0db, 0xd4a2, 0xb0e6, 0xd476, 0xd47b, 0xd47a, 0xadf2, + 0xb0e1, 0xd4a5, 0x0000, 0xd4a8, 0xd473, 0x0000, 0xb3e8, 0x89fa, + 0xd4a9, 0xb0e7, 0x0000, 0xb0d9, 0xb0d6, 0xd47e, 0xb0d3, 0xfb42, + 0xd4a6, 0xfabf, 0xb0da, 0xd4aa, 0x0000, 0xd474, 0xd4a4, 0xb0dd, + 0xd475, 0xd478, 0xd47d, 0xfba3, 0x0000, 0xb0de, 0xb0dc, 0xb0e8, + 0x0000, 0x0000, 0x0000, 0x0000, 0xb0e3, 0xfaf7, 0xb0d7, 0xb1d2, + 0x0000, 0xb0d8, 0xd479, 0xb0e5, 0xb0e0, 0xd4a3, 0xb0d5, 0x0000, + 0x0000, 0x9e4e, 0xb0d4, 0x94dc, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x95da, 0x9df8, 0x9f6a, 0x0000, 0xd471, 0xd472, 0xd86a, + 0x0000, 0x8ab7, 0x0000, 0xb3d7, 0xb3da, 0xd875, 0xb3ee, 0xd878, + 0xb3d8, 0xd871, 0xb3de, 0xb3e4, 0xb5bd, 0x0000, 0xfb46, 0xb3e2, + 0xd86e, 0xb3ef, 0xb3db, 0xb3e3, 0xd876, 0xdcd7, 0xd87b, 0xd86f, + 0x8a46, 0xd866, 0xd873, 0xd86d, 0xb3e1, 0xd879, 0x0000, 0x0000, + 0xb3dd, 0xb3f1, 0xb3ea, 0x0000, 0xb3df, 0xb3dc, 0x0000, 0xb3e7, + 0x0000, 0xd87a, 0xd86c, 0xd872, 0xd874, 0xd868, 0xd877, 0xb3d9, + 0xd867, 0xfb47, 0xb3e0, 0xb3f0, 0xb3ec, 0xd869, 0xb3e6, 0x0000, + 0x9148, 0xb3ed, 0xb3e9, 0xb3e5, 0x92de, 0xd870, 0x0000, 0x0000, + 0x0000, 0x8b53, 0x9df6, 0xb3eb, 0x9bda, 0x0000, 0x0000, 0xdcd5, + 0xdcd1, 0x9d7e, 0xdce0, 0xdcca, 0xdcd3, 0xb6e5, 0xb6e6, 0xb6de, + 0xdcdc, 0xb6e8, 0xdccf, 0xdcce, 0xdccc, 0xdcde, 0xb6dc, 0xdcd8, + 0xdccd, 0xb6df, 0xdcd6, 0xb6da, 0xdcd2, 0xdcd9, 0xdcdb, 0x89fd, + 0x99e4, 0xdcdf, 0xb6e3, 0xdccb, 0xb6dd, 0xdcd0, 0x9e43, 0xb6d8, + 0x0000, 0xb6e4, 0xdcda, 0xb6e0, 0xb6e1, 0xb6e7, 0xb6db, 0xa25f, + 0xb6d9, 0xdcd4, 0x9de9, 0x0000, 0x8f52, 0x0000, 0x0000, 0xb6e2, + 0x9df5, 0x9df0, 0xdcdd, 0x0000, 0x0000, 0x99e7, 0xb9cd, 0xb9c8, + 0x0000, 0xe155, 0xe151, 0x8bbd, 0xe14b, 0xb9c2, 0xb9be, 0xe154 +}; + +static const unsigned short big5hkscs_from_unicode_56[] = { + 0xb9bf, 0xe14e, 0xe150, 0x0000, 0xe153, 0xfb48, 0xb9c4, 0x0000, + 0xb9cb, 0xb9c5, 0x0000, 0x0000, 0xe149, 0xb9c6, 0xb9c7, 0xe14c, + 0xb9cc, 0x9fb7, 0xe14a, 0xe14f, 0xb9c3, 0xe148, 0xb9c9, 0xb9c1, + 0x0000, 0x0000, 0x0000, 0xb9c0, 0xe14d, 0xe152, 0x9dd0, 0xb9ca, + 0x9feb, 0x8da9, 0x9dcf, 0x98e1, 0x0000, 0x9de5, 0x0000, 0xe147, + 0x0000, 0xbc4d, 0xe547, 0x0000, 0xe544, 0x9dc8, 0xbc47, 0xbc53, + 0xbc54, 0x0000, 0xbc4a, 0xe542, 0xbc4c, 0xe4f9, 0xbc52, 0xfb4f, + 0xe546, 0xbc49, 0xe548, 0xbc48, 0x0000, 0xe543, 0xe545, 0xbc4b, + 0xe541, 0xe4fa, 0xe4f7, 0x9deb, 0x0000, 0xd86b, 0xe4fd, 0x0000, + 0xe4f6, 0xe4fc, 0xe4fb, 0x0000, 0xe4f8, 0xfb54, 0xbc4f, 0xfb55, + 0x9aa2, 0x0000, 0x8ad6, 0xbc4e, 0x9a5f, 0x0000, 0x0000, 0xbc50, + 0xe4fe, 0xbeb2, 0xe540, 0x0000, 0x0000, 0x9ef5, 0xe945, 0x0000, + 0xe8fd, 0x8fb7, 0xbebe, 0xe942, 0xbeb6, 0xbeba, 0xe941, 0x0000, + 0xbeb9, 0xbeb5, 0xbeb8, 0xbeb3, 0xbebd, 0xe943, 0xe8fe, 0xbebc, + 0xe8fc, 0xbebb, 0xe944, 0xe940, 0xbc51, 0x0000, 0xbebf, 0xe946, + 0xbeb7, 0xbeb4, 0x9ad2, 0x9e6a, 0x9ee8, 0x0000, 0xecc6, 0xecc8, + 0xc07b, 0xecc9, 0xecc7, 0xecc5, 0xecc4, 0xc07d, 0xecc3, 0xc07e, + 0x0000, 0x8bbf, 0x91c2, 0x9d62, 0xecc1, 0xecc2, 0xc07a, 0xc0a1, + 0xc07c, 0x0000, 0x9260, 0xecc0, 0x0000, 0xc250, 0x0000, 0xefbc, + 0xefba, 0xefbf, 0xefbd, 0x0000, 0xefbb, 0xefbe, 0x925e, 0x91c1, + 0x0000, 0x8ac5, 0x0000, 0x0000, 0x97a3, 0xc360, 0xf1f2, 0xf1f3, + 0xc456, 0x0000, 0xf1f4, 0xf1f0, 0xf1f5, 0xf1f1, 0xc251, 0x8b6c, + 0x0000, 0x8d7e, 0xf3fe, 0xf441, 0xc459, 0xf440, 0xc458, 0xc457, + 0x0000, 0x9c54, 0x0000, 0x0000, 0xc45a, 0xf5c5, 0xf5c6, 0x9dbd, + 0xc4da, 0xc4d9, 0xc4db, 0xf5c4, 0x0000, 0xf6d8, 0xf6d7, 0x0000, + 0xc56d, 0xc56f, 0xc56e, 0xf6d9, 0xc5c8, 0xf8a6, 0x0000, 0x0000, + 0x0000, 0xc5f1, 0x0000, 0xf8a5, 0xf8ee, 0x0000, 0x9cc5, 0xc949, + 0x0000, 0x0000, 0xa57d, 0xa57c, 0x0000, 0xa65f, 0xa65e, 0xc9c7, + 0xa65d, 0xc9c6, 0x895b, 0x0000, 0xa779, 0xcaa9, 0x0000, 0xcaa8, + 0x0000, 0x0000, 0xa777, 0xa77a, 0x0000, 0xfb5c, 0xcaa7, 0xfb5b, + 0xa778, 0xfb57, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xcbf0, + 0x0000, 0xcbf1, 0xa954, 0x0000, 0x0000, 0x98c7, 0x0000, 0xabaa +}; + +static const unsigned short big5hkscs_from_unicode_57[] = { + 0xfb5a, 0xd148, 0xd149, 0xae45, 0xae46, 0x0000, 0x0000, 0xd4ac, + 0xb0e9, 0xb0eb, 0xd4ab, 0xb0ea, 0xd87c, 0xb3f2, 0x0000, 0x0000, + 0x0000, 0x0000, 0xb6e9, 0xb6ea, 0xdce1, 0x9cee, 0xb9cf, 0x0000, + 0xb9ce, 0x0000, 0xe549, 0xe948, 0xe947, 0x92e2, 0xf96b, 0xa467, + 0xc959, 0x0000, 0xc96e, 0xc96f, 0x0000, 0x0000, 0x0000, 0x0000, + 0xa662, 0xa666, 0xc9c9, 0x0000, 0xa664, 0xa663, 0xc9c8, 0xa665, + 0xa661, 0x0000, 0x94a7, 0xa660, 0xc9ca, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xa7a6, 0x0000, 0x8ccc, 0xa7a3, 0x9bd4, + 0xa77d, 0xcaaa, 0xfb64, 0xfb76, 0x0000, 0xcaab, 0xfb60, 0xa7a1, + 0x0000, 0xcaad, 0xa77b, 0xcaae, 0xcaac, 0xa77e, 0xa7a2, 0xa7a5, + 0xa7a4, 0xa77c, 0xcaaf, 0x0000, 0x99e5, 0x0000, 0x0000, 0x9ac2, + 0x0000, 0x0000, 0x0000, 0x91fb, 0x0000, 0x0000, 0x0000, 0xa073, + 0x0000, 0xa959, 0xcbfe, 0x0000, 0xa95b, 0x0000, 0xa95a, 0x9f72, + 0xcc40, 0xa958, 0xa957, 0xcbf5, 0x0000, 0xcbf4, 0x0000, 0xcbf2, + 0xcbf7, 0xcbf6, 0xcbf3, 0xcbfc, 0xcbfd, 0xcbfa, 0xcbf8, 0xa956, + 0x0000, 0x0000, 0x9fcc, 0xcbfb, 0xa95c, 0xcc41, 0x98a5, 0x92e8, + 0xcbf9, 0x0000, 0xabab, 0xa955, 0x0000, 0x0000, 0x0000, 0x0000, + 0x9bbc, 0x0000, 0x96f3, 0xabac, 0xce54, 0x92e7, 0x0000, 0xce5a, + 0xfc67, 0x0000, 0x0000, 0xabb2, 0xce58, 0xce5e, 0x0000, 0xce55, + 0xce59, 0xce5b, 0xce5d, 0xce57, 0x8b7d, 0xce56, 0xce51, 0xce52, + 0xabad, 0x9bf4, 0xabaf, 0xabae, 0xce53, 0xce5c, 0x0000, 0x9ef7, + 0x0000, 0x0000, 0x9ec1, 0x0000, 0x0000, 0x0000, 0xabb1, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x996f, 0xce50, 0xd153, 0x0000, + 0xd152, 0xd157, 0xd14e, 0x96f1, 0xd151, 0xd150, 0x8e41, 0xd154, + 0x0000, 0xd158, 0xae47, 0xae4a, 0x954a, 0x0000, 0xd14f, 0xd155, + 0x97e6, 0x0000, 0x0000, 0xae49, 0xd14a, 0x0000, 0xabb0, 0xd4ba, + 0xd156, 0x0000, 0xd14d, 0x0000, 0xae48, 0xd14c, 0x0000, 0x96f5, + 0x0000, 0x0000, 0x0000, 0x0000, 0xd4b1, 0x92e6, 0x9f42, 0xb0ec, + 0xb0f0, 0xd4c1, 0xd4af, 0xd4bd, 0xb0f1, 0xd4bf, 0xfb67, 0xd4c5, + 0x0000, 0xd4c9, 0x0000, 0x0000, 0xd4c0, 0xd4b4, 0xd4bc, 0x99a9, + 0xd4ca, 0xd4c8, 0xd4be, 0xd4b9, 0xd4b2, 0xd8a6, 0xd4b0, 0xb0f5, + 0xd4b7, 0xb0f6, 0xb0f2, 0xd4ad, 0xd4c3, 0xd4b5, 0xfae6, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_58[] = { + 0xd4b3, 0xd4c6, 0xb0f3, 0xfb69, 0xd4cc, 0xb0ed, 0xb0ef, 0xd4bb, + 0xd4b6, 0xae4b, 0xb0ee, 0xd4b8, 0xd4c7, 0xd4cb, 0xd4c2, 0x0000, + 0xd4c4, 0x0000, 0x97e5, 0x0000, 0xd4ae, 0x0000, 0x0000, 0x0000, + 0x0000, 0xd8a1, 0x0000, 0xd8aa, 0xd8a9, 0xb3fa, 0xd8a2, 0x0000, + 0xb3fb, 0xb3f9, 0x967d, 0xd8a4, 0xb3f6, 0xd8a8, 0xfb6c, 0xd8a3, + 0xd8a5, 0xd87d, 0xb3f4, 0x0000, 0xd8b2, 0xd8b1, 0xd8ae, 0xb3f3, + 0xb3f7, 0xb3f8, 0xd14b, 0xd8ab, 0xb3f5, 0xb0f4, 0xd8ad, 0xd87e, + 0xd8b0, 0xd8af, 0x99a2, 0xd8b3, 0x0000, 0xdcef, 0x0000, 0xd8ac, + 0x9abb, 0x0000, 0x0000, 0x0000, 0x9a65, 0x0000, 0x0000, 0x944e, + 0xd8a7, 0xdce7, 0xb6f4, 0xb6f7, 0xb6f2, 0xdce6, 0xdcea, 0xdce5, + 0x0000, 0xb6ec, 0xb6f6, 0xdce2, 0xb6f0, 0xdce9, 0x0000, 0xb6ee, + 0xb6ed, 0xdcec, 0xb6ef, 0xdcee, 0xfb6e, 0xdceb, 0xb6eb, 0x99df, + 0x0000, 0x0000, 0xb6f5, 0xdcf0, 0xdce4, 0xdced, 0x0000, 0x0000, + 0xdce3, 0x98e3, 0x0000, 0xb6f1, 0x9254, 0xb6f3, 0x0000, 0xdce8, + 0x0000, 0xdcf1, 0x967b, 0x8aaf, 0xe15d, 0xb9d0, 0xe163, 0x0000, + 0x0000, 0xb9d5, 0xe15f, 0xe166, 0xe157, 0xb9d7, 0xb9d1, 0xe15c, + 0xbc55, 0xe15b, 0xe164, 0xb9d2, 0x0000, 0xb9d6, 0xe15a, 0xe160, + 0xe165, 0xe156, 0xb9d4, 0xe15e, 0x0000, 0x0000, 0xe162, 0xe168, + 0xe158, 0xe161, 0x8c77, 0xb9d3, 0xe167, 0x0000, 0x0000, 0x0000, + 0xe159, 0x8baf, 0x9ebd, 0x0000, 0xbc59, 0xe54b, 0xbc57, 0xbc56, + 0xe54d, 0xe552, 0x0000, 0xe54e, 0x0000, 0xe551, 0xbc5c, 0x9ee6, + 0xbea5, 0xbc5b, 0xfb6f, 0xe54a, 0xe550, 0x0000, 0xbc5a, 0xe54f, + 0x8ee1, 0xe54c, 0x0000, 0xbc58, 0x0000, 0x9b7d, 0x9c7e, 0x0000, + 0x0000, 0x0000, 0xe94d, 0xf9d9, 0xe94f, 0xe94a, 0xbec1, 0xe94c, + 0x0000, 0xbec0, 0xe94e, 0x0000, 0x0000, 0xbec3, 0xe950, 0xbec2, + 0xe949, 0xe94b, 0x0000, 0x92ea, 0x0000, 0x0000, 0xc0a5, 0xeccc, + 0x8c78, 0xc0a4, 0xeccd, 0xc0a3, 0xeccb, 0xc0a2, 0xecca, 0x0000, + 0xc253, 0xc252, 0xf1f6, 0xf1f8, 0xfb72, 0xf1f7, 0xc361, 0xc362, + 0xfb71, 0x0000, 0xc363, 0xf442, 0xc45b, 0x0000, 0x0000, 0xf7d3, + 0xf7d2, 0xc5f2, 0x0000, 0xa468, 0xa4d0, 0x0000, 0x0000, 0xa7a7, + 0x895c, 0x0000, 0x98f0, 0x96f2, 0xce5f, 0x0000, 0x0000, 0x0000, + 0x0000, 0xb3fc, 0xb3fd, 0xfb74, 0xdcf2, 0xb9d8, 0xe169, 0xe553 +}; + +static const unsigned short big5hkscs_from_unicode_59[] = { + 0x0000, 0x0000, 0x8bc1, 0xc95a, 0x895d, 0x89de, 0xcab0, 0x895e, + 0x0000, 0x0000, 0xc6ca, 0x0000, 0xcc42, 0xce60, 0xd159, 0xae4c, + 0x0000, 0xfe42, 0xf1f9, 0x0000, 0xc4dc, 0xa469, 0xa57e, 0xc970, + 0x0000, 0xa667, 0xa668, 0x0000, 0xa95d, 0x0000, 0x0000, 0xfb7b, + 0xb0f7, 0x0000, 0xb9da, 0x0000, 0xb9db, 0xb9d9, 0x0000, 0xa46a, + 0x0000, 0xa4d1, 0xa4d3, 0xa4d2, 0xc95b, 0xa4d4, 0xa5a1, 0xc971, + 0x0000, 0xa5a2, 0x895f, 0x0000, 0x8960, 0x0000, 0x0000, 0xa669, + 0xa66a, 0x0000, 0x0000, 0x0000, 0xc9cb, 0x0000, 0xa7a8, 0x0000, + 0xcab1, 0x0000, 0x0000, 0x0000, 0xa961, 0xcc43, 0x0000, 0xa95f, + 0xa960, 0xa95e, 0xd15a, 0x0000, 0x0000, 0x0000, 0xabb6, 0xabb5, + 0xabb7, 0xabb4, 0x0000, 0xce61, 0xa962, 0xabb3, 0x0000, 0xae4d, + 0xae4e, 0x0000, 0xae4f, 0x0000, 0xd4cd, 0x0000, 0x0000, 0x0000, + 0xb3fe, 0xd8b4, 0xb0f8, 0x0000, 0x0000, 0x9bcd, 0x0000, 0xb6f8, + 0x0000, 0xb9dd, 0xb9dc, 0xe16a, 0x0000, 0xbc5d, 0xbec4, 0x0000, + 0xefc0, 0xf6da, 0xf7d4, 0xa46b, 0xa5a3, 0x9dd3, 0xa5a4, 0xc9d1, + 0xa66c, 0xa66f, 0x0000, 0xc9cf, 0xc9cd, 0xa66e, 0xc9d0, 0xc9d2, + 0xc9cc, 0xa671, 0xa670, 0xa66d, 0xa66b, 0xc9ce, 0x0000, 0x0000, + 0x0000, 0x984c, 0xa7b3, 0x0000, 0x0000, 0xa7b0, 0xcab6, 0xcab9, + 0xcab8, 0x0000, 0xa7aa, 0xa7b2, 0x9752, 0x0000, 0xa7af, 0xcab5, + 0xcab3, 0xa7ae, 0x95c3, 0x0000, 0x0000, 0xa7a9, 0xa7ac, 0x9bb6, + 0xcab4, 0xcabb, 0xcab7, 0xa7ad, 0xa7b1, 0xa7b4, 0xcab2, 0xcaba, + 0xa7ab, 0x0000, 0x0000, 0x0000, 0x9ab9, 0x0000, 0xa967, 0xa96f, + 0x97b3, 0xcc4f, 0xcc48, 0xa970, 0xcc53, 0xcc44, 0xcc4b, 0x9f74, + 0x92f1, 0xa966, 0xcc45, 0xa964, 0xcc4c, 0xcc50, 0xa963, 0x0000, + 0xcc51, 0xcc4a, 0x0000, 0xcc4d, 0x97df, 0xa972, 0xa969, 0xcc54, + 0xcc52, 0xfba6, 0xa96e, 0xa96c, 0xcc49, 0xa96b, 0xcc47, 0xcc46, + 0xa96a, 0xa968, 0xa971, 0xa96d, 0xa965, 0x0000, 0xcc4e, 0x0000, + 0xabb9, 0xfbab, 0xabc0, 0xce6f, 0xabb8, 0xce67, 0xce63, 0x0000, + 0xce73, 0xce62, 0x0000, 0xabbb, 0xce6c, 0xabbe, 0xabc1, 0x0000, + 0xabbc, 0xce70, 0xabbf, 0x9877, 0xae56, 0xce76, 0xce64, 0x9854, + 0x95c5, 0xce66, 0xce6d, 0xce71, 0xce75, 0xce72, 0xce6b, 0xce6e, + 0x9d55, 0xfbb2, 0xce68, 0xabc3, 0xce6a, 0xce69, 0xce74, 0xabba +}; + +static const unsigned short big5hkscs_from_unicode_5a[] = { + 0xce65, 0xabc2, 0x957e, 0xabbd, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xae5c, 0xd162, 0x9742, 0xae5b, 0x94e6, 0x0000, 0xd160, + 0x0000, 0xae50, 0x92f5, 0xae55, 0x0000, 0xd15f, 0xd15c, 0xd161, + 0xae51, 0xd15b, 0x8cc5, 0xae54, 0xae52, 0x0000, 0xd163, 0xae53, + 0xae57, 0x92fd, 0x0000, 0xae58, 0xfba2, 0xae5a, 0x0000, 0x9c51, + 0x0000, 0xae59, 0x94e9, 0x985c, 0x92f0, 0xd15d, 0xd15e, 0x0000, + 0x0000, 0x0000, 0x0000, 0xd164, 0x0000, 0xd4d4, 0xb0f9, 0xd8c2, + 0xd4d3, 0xd4e6, 0x0000, 0x0000, 0xb140, 0x944c, 0xd4e4, 0x0000, + 0xb0fe, 0xb0fa, 0xd4ed, 0xd4dd, 0xd4e0, 0x916b, 0xb143, 0xd4ea, + 0xd4e2, 0xb0fb, 0xb144, 0x0000, 0xd4e7, 0xd4e5, 0x0000, 0x0000, + 0xd4d6, 0xd4eb, 0xd4df, 0xd4da, 0x8b78, 0xd4d0, 0xd4ec, 0xd4dc, + 0xd4cf, 0x94e2, 0xb142, 0xd4e1, 0xd4ee, 0xd4de, 0xd4d2, 0xd4d7, + 0xd4ce, 0x984f, 0xb141, 0xfbb5, 0xd4db, 0xd4d8, 0xb0fc, 0xd4d1, + 0x9271, 0xd4e9, 0xb0fd, 0x9365, 0xd4d9, 0xd4d5, 0x985b, 0x0000, + 0xd4e8, 0x9850, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfbb8, + 0xd8bb, 0x97bc, 0xd8b8, 0xd8c9, 0xd8bd, 0xd8ca, 0x92f3, 0xb442, + 0x0000, 0x9340, 0x984d, 0xd8c6, 0xd8c3, 0x0000, 0x9572, 0x0000, + 0xfdef, 0x0000, 0xd8c4, 0xd8c7, 0xd8cb, 0x0000, 0xd4e3, 0xd8cd, + 0xdd47, 0xfdc1, 0xb443, 0xd8ce, 0xd8b6, 0xd8c0, 0xfbba, 0xd8c5, + 0x0000, 0x92eb, 0xb441, 0xb444, 0xd8cc, 0xd8cf, 0xd8ba, 0xd8b7, + 0xfc73, 0x97b7, 0xd8b9, 0x0000, 0x0000, 0xd8be, 0xd8bc, 0xb445, + 0x0000, 0xd8c8, 0x0000, 0xfbb4, 0xd8bf, 0x0000, 0xd8c1, 0xd8b5, + 0xdcfa, 0xdcf8, 0xb742, 0xb740, 0xdd43, 0xdcf9, 0xdd44, 0xdd40, + 0xdcf7, 0xdd46, 0xdcf6, 0xdcfd, 0xb6fe, 0xb6fd, 0xb6fc, 0xdcfb, + 0xdd41, 0xb6f9, 0xb741, 0x90a7, 0xdcf4, 0x0000, 0xdcfe, 0xdcf3, + 0xdcfc, 0xb6fa, 0xdd42, 0xdcf5, 0xb6fb, 0xdd45, 0x9741, 0x92f4, + 0x0000, 0x0000, 0x0000, 0xfbbc, 0x0000, 0xe16e, 0xb9e2, 0xb9e1, + 0xb9e3, 0xe17a, 0xe170, 0xe176, 0xe16b, 0xe179, 0xe178, 0xe17c, + 0xe175, 0xb9de, 0xe174, 0xb9e4, 0x9577, 0xe16d, 0xb9df, 0x0000, + 0xe17b, 0xb9e0, 0xe16f, 0xe172, 0xe177, 0xe171, 0xe16c, 0x0000, + 0x9ee2, 0x0000, 0x8f78, 0xe173, 0xe555, 0xbc61, 0xe558, 0xe557, + 0xe55a, 0xe55c, 0xf9dc, 0xbc5f, 0x0000, 0xe556, 0x9672, 0xe554 +}; + +static const unsigned short big5hkscs_from_unicode_5b[] = { + 0x0000, 0xe55d, 0xe55b, 0xe559, 0x0000, 0xe55f, 0x0000, 0xe55e, + 0xbc63, 0xbc5e, 0x0000, 0xbc60, 0xbc62, 0x9eb5, 0x0000, 0xe560, + 0xe957, 0x964b, 0x0000, 0xe956, 0xe955, 0x8cac, 0xe958, 0xe951, + 0x0000, 0xe952, 0xe95a, 0xe953, 0x0000, 0xbec5, 0xe95c, 0xa0fa, + 0xe95b, 0xe954, 0x0000, 0xecd1, 0xc0a8, 0xeccf, 0xecd4, 0xecd3, + 0xe959, 0x0000, 0xc0a7, 0x9575, 0xecd2, 0xecce, 0xecd6, 0xecd5, + 0xc0a6, 0x0000, 0xecd0, 0x0000, 0xbec6, 0x0000, 0x0000, 0x0000, + 0xc254, 0x0000, 0x0000, 0x0000, 0xefc1, 0xf1fa, 0xf1fb, 0xf1fc, + 0xc45c, 0x90da, 0x0000, 0xc45d, 0x9367, 0xf443, 0xfea4, 0xf5c8, + 0xf5c7, 0x0000, 0x90df, 0xf6db, 0xf6dc, 0xf7d5, 0xf8a7, 0x9354, + 0xa46c, 0xa46d, 0x0000, 0xa46e, 0xa4d5, 0xa5a5, 0xc9d3, 0xa672, + 0xa673, 0x0000, 0xa7b7, 0xa7b8, 0xa7b6, 0xa7b5, 0x0000, 0xa973, + 0x0000, 0x0000, 0xcc55, 0xa975, 0xa974, 0xcc56, 0x8961, 0x0000, + 0x8bb4, 0xabc4, 0x0000, 0xae5d, 0xd165, 0x9dc0, 0xd4f0, 0x0000, + 0xb145, 0xb447, 0xd4ef, 0xb446, 0x8e48, 0xb9e5, 0xfbc5, 0xe17d, + 0xbec7, 0x0000, 0xc0a9, 0xecd7, 0xfbc7, 0xc45e, 0x0000, 0xc570, + 0xc6cb, 0xc972, 0xfa79, 0xa5a6, 0xc973, 0xa676, 0x0000, 0xa674, + 0xa675, 0xa677, 0x0000, 0xa7ba, 0xa7b9, 0x0000, 0xcabc, 0xa7bb, + 0x9e67, 0x0000, 0xcabd, 0xcc57, 0x0000, 0xcc58, 0x8cd9, 0xa976, + 0xa978, 0xa97a, 0xa977, 0xa97b, 0xa979, 0xfbd2, 0x8962, 0x8963, + 0x0000, 0x0000, 0xabc8, 0xabc5, 0xabc7, 0xabc9, 0xabc6, 0xd166, + 0xce77, 0x0000, 0xfc7d, 0x0000, 0xd168, 0xd167, 0xae63, 0x0000, + 0xae5f, 0x0000, 0x0000, 0xae60, 0xae62, 0xae64, 0xae61, 0x0000, + 0xae66, 0xae65, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xb14a, + 0xd4f2, 0xd4f1, 0xb149, 0x9f6b, 0xb148, 0xb147, 0xb14b, 0xb146, + 0x0000, 0x0000, 0xd8d5, 0xd8d2, 0xb449, 0xd8d1, 0xd8d6, 0x0000, + 0xb44b, 0xd8d4, 0xb448, 0xb44a, 0xd8d3, 0xfbcc, 0xdd48, 0xfeae, + 0xdd49, 0xdd4a, 0x0000, 0x0000, 0x0000, 0x0000, 0xb9e6, 0xb9ee, + 0xe17e, 0xb9e8, 0xb9ec, 0xe1a1, 0xb9ed, 0xb9e9, 0xb9ea, 0xb9e7, + 0xb9eb, 0xbc66, 0xd8d0, 0xbc67, 0xbc65, 0x0000, 0xbc64, 0xe95d, + 0xbec8, 0xecd8, 0xecd9, 0xfbd1, 0x0000, 0xc364, 0xc45f, 0x0000, + 0xa46f, 0x0000, 0xa678, 0x0000, 0x0000, 0x0000, 0x0000, 0xfb75 +}; + +static const unsigned short big5hkscs_from_unicode_5c[] = { + 0x0000, 0xabca, 0x0000, 0xd169, 0xae67, 0xfbd4, 0x0000, 0xb14e, + 0xb14d, 0xb14c, 0xb44c, 0xb44d, 0xd8d7, 0xb9ef, 0xbec9, 0xa470, + 0xc95c, 0xa4d6, 0xc974, 0xfbd6, 0xfbd8, 0xc9d4, 0xa679, 0x0000, + 0x0000, 0x0000, 0xa97c, 0x0000, 0x8b5d, 0x0000, 0x934c, 0xdd4b, + 0x9ae2, 0x0000, 0xa471, 0x8bc9, 0xa4d7, 0xc9d5, 0x0000, 0x0000, + 0xcabe, 0x0000, 0xcabf, 0x0000, 0xa7bc, 0x0000, 0x0000, 0x0000, + 0xd8d8, 0xb44e, 0x0000, 0xdd4c, 0x0000, 0x0000, 0x0000, 0xc0aa, + 0xa472, 0xa4a8, 0xa4d8, 0xc975, 0xa5a7, 0x0000, 0xa7c0, 0xa7bf, + 0xa7bd, 0xa7be, 0x0000, 0x0000, 0xcc59, 0xa97e, 0xa9a1, 0xcc5a, + 0xa97d, 0xfbdb, 0x9fc9, 0xabce, 0xce78, 0xabcd, 0xabcb, 0xabcc, + 0xae6a, 0xae68, 0x0000, 0x9f44, 0xd16b, 0xae69, 0xd16a, 0x0000, + 0xae5e, 0xd4f3, 0x0000, 0x0000, 0xb150, 0xb151, 0x98ed, 0x0000, + 0xb14f, 0x0000, 0xb9f0, 0xe1a2, 0xbc68, 0xbc69, 0x0000, 0xe561, + 0xc0ab, 0xefc2, 0xefc3, 0x0000, 0xc4dd, 0xf8a8, 0xc94b, 0xa4d9, + 0x0000, 0xa473, 0x0000, 0xc977, 0xc976, 0x0000, 0x0000, 0x0000, + 0x0000, 0xa67a, 0xc9d7, 0xc9d8, 0xc9d6, 0x0000, 0xc9d9, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfbdd, 0xcac7, 0x0000, + 0xcac2, 0xcac4, 0xcac6, 0xcac3, 0xa7c4, 0xcac0, 0x0000, 0xcac1, + 0xa7c1, 0xa7c2, 0xcac5, 0xcac8, 0xa7c3, 0xcac9, 0x0000, 0x0000, + 0x0000, 0x8df2, 0x8964, 0x0000, 0xfdf2, 0xcc68, 0x934d, 0xcc62, + 0xcc5d, 0xa9a3, 0xcc65, 0xcc63, 0xcc5c, 0xcc69, 0xcc6c, 0xcc67, + 0xcc60, 0xa9a5, 0xcc66, 0xa9a6, 0xcc61, 0xcc64, 0xcc5b, 0xcc5f, + 0xcc6b, 0xa9a7, 0x0000, 0xa9a8, 0x0000, 0xcc5e, 0xcc6a, 0xa9a2, + 0xa9a4, 0x0000, 0xfbe7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xa0f2, 0x9868, 0x0000, 0x0000, 0x0000, 0xceab, 0xcea4, + 0xceaa, 0xcea3, 0xcea5, 0xce7d, 0xce7b, 0x0000, 0xceac, 0xcea9, + 0xce79, 0x9f58, 0xabd0, 0xcea7, 0xcea8, 0x0000, 0xcea6, 0xce7c, + 0xce7a, 0xabcf, 0xcea2, 0xce7e, 0x0000, 0x0000, 0xcea1, 0xcead, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8d73, 0x0000, 0x0000, + 0xae6f, 0xfbde, 0xae6e, 0x0000, 0xd16c, 0xae6b, 0xd16e, 0xfbdf, + 0xae70, 0xd16f, 0x0000, 0x0000, 0xae73, 0x8c48, 0xae71, 0xd170, + 0xceae, 0xd172, 0x0000, 0xae6d, 0x0000, 0xae6c, 0x0000, 0xd16d +}; + +static const unsigned short big5hkscs_from_unicode_5d[] = { + 0xd171, 0xae72, 0x0000, 0x0000, 0x0000, 0x0000, 0xb153, 0xb152, + 0x0000, 0x0000, 0x0000, 0xd4f5, 0xd4f9, 0xd4fb, 0xb154, 0xd4fe, + 0xfbe3, 0xb158, 0xd541, 0x0000, 0xb15a, 0x8da8, 0xb156, 0xb15e, + 0xfbe4, 0xb15b, 0xd4f7, 0xb155, 0x0000, 0xd4f6, 0xd4f4, 0xd543, + 0xd4f8, 0x0000, 0xb157, 0xd542, 0xb15c, 0xd4fd, 0xd4fc, 0xb15d, + 0xd4fa, 0xb159, 0x0000, 0x0000, 0x9c75, 0x0000, 0xd544, 0x9878, + 0xd540, 0xd8e7, 0xd8ee, 0xd8e3, 0xb451, 0xd8df, 0xd8ef, 0xd8d9, + 0xd8ec, 0xd8ea, 0xd8e4, 0x0000, 0xd8ed, 0xd8e6, 0x8d60, 0xd8de, + 0xd8f0, 0xd8dc, 0xd8e9, 0xd8da, 0x0000, 0xd8f1, 0xfbe5, 0xb452, + 0x8d61, 0xd8eb, 0xdd4f, 0xd8dd, 0xb44f, 0x0000, 0xd8e1, 0x0000, + 0xb450, 0xd8e0, 0xd8e5, 0x0000, 0x0000, 0xd8e2, 0x8d62, 0xa0a1, + 0x0000, 0xd8e8, 0x0000, 0x9c40, 0x0000, 0x0000, 0xdd53, 0x0000, + 0x0000, 0x0000, 0xdd56, 0xdd4e, 0x0000, 0xdd50, 0x0000, 0xdd55, + 0xdd54, 0xb743, 0x0000, 0xd8db, 0xdd52, 0x0000, 0x0000, 0xb744, + 0x98ad, 0xdd4d, 0xdd51, 0x0000, 0x9eea, 0x0000, 0x0000, 0xe1a9, + 0x0000, 0xe1b0, 0xe1a7, 0x8cd4, 0xe1ae, 0xe1a5, 0xe1ad, 0xe1b1, + 0xe1a4, 0xe1a8, 0xe1a3, 0x0000, 0xb9f1, 0x9ceb, 0xe1a6, 0xb9f2, + 0xe1ac, 0xe1ab, 0xe1aa, 0xfbe0, 0x0000, 0xe1af, 0x9f51, 0x0000, + 0x0000, 0x0000, 0xe565, 0xe567, 0xbc6b, 0xe568, 0x0000, 0xe563, + 0x0000, 0xe562, 0xe56c, 0x0000, 0xe56a, 0xbc6a, 0xe56d, 0xe564, + 0xe569, 0xe56b, 0xe566, 0x0000, 0x8d65, 0x0000, 0x0000, 0xe961, + 0xe966, 0xe960, 0xe965, 0x9cf1, 0xe95e, 0xe968, 0xe964, 0xe969, + 0xe963, 0xe95f, 0xe967, 0x0000, 0xe96a, 0xe962, 0xfc58, 0xecda, + 0xc0af, 0x8d66, 0xc0ad, 0x0000, 0xc0ac, 0xc0ae, 0x0000, 0x0000, + 0xefc4, 0x9654, 0xf172, 0xf1fd, 0x0000, 0x0000, 0xf444, 0xf445, + 0x0000, 0xc460, 0x0000, 0xf5c9, 0x0000, 0xc4de, 0x0000, 0xf5ca, + 0x0000, 0xf6de, 0xc572, 0x0000, 0xc571, 0xf6dd, 0xc5c9, 0xfbe8, + 0xf7d6, 0x0000, 0x0000, 0xc6cc, 0x0000, 0xa474, 0xa67b, 0xc9da, + 0xcaca, 0xa8b5, 0xb15f, 0x0000, 0x0000, 0xa475, 0xa5aa, 0xa5a9, + 0xa5a8, 0x0000, 0x0000, 0xa7c5, 0x0000, 0x0000, 0xae74, 0x0000, + 0xdd57, 0xa476, 0xa477, 0xa478, 0xa4da, 0x9fce, 0x0000, 0xabd1, + 0x0000, 0xceaf, 0x0000, 0x0000, 0x0000, 0xb453, 0xa479, 0xc95d +}; + +static const unsigned short big5hkscs_from_unicode_5e[] = { + 0x0000, 0x0000, 0xa5ab, 0xa5ac, 0xc978, 0x0000, 0xa67c, 0x0000, + 0x0000, 0xfbfc, 0xcacb, 0x9ae4, 0xa7c6, 0x0000, 0xcacc, 0x0000, + 0x0000, 0xa9ae, 0x9f75, 0x0000, 0xcc6e, 0xa9ac, 0xa9ab, 0xcc6d, + 0xa9a9, 0xcc6f, 0xa9aa, 0xa9ad, 0x0000, 0xabd2, 0x0000, 0xabd4, + 0xceb3, 0xceb0, 0xceb1, 0xceb2, 0xceb4, 0xabd3, 0x0000, 0x0000, + 0xd174, 0xd173, 0x0000, 0xae76, 0x0000, 0xae75, 0xfbf1, 0x0000, + 0x0000, 0x0000, 0x0000, 0xb162, 0xd546, 0x0000, 0xb161, 0xb163, + 0xb160, 0x0000, 0x0000, 0x0000, 0x0000, 0xb455, 0xd545, 0x0000, + 0xb456, 0xd8f3, 0x8d69, 0xb457, 0xd8f2, 0xb454, 0x0000, 0x0000, + 0x934f, 0x0000, 0xdd5a, 0xdd5c, 0xb745, 0xdd5b, 0xdd59, 0xdd58, + 0x0000, 0x0000, 0x0000, 0xe1b4, 0xb9f7, 0xb9f5, 0x0000, 0xb9f6, + 0xe1b2, 0xe1b3, 0x0000, 0xb9f3, 0xe571, 0xe56f, 0x934e, 0xbc6d, + 0xe570, 0xbc6e, 0xbc6c, 0xb9f4, 0x0000, 0x0000, 0xe96d, 0xe96b, + 0xe96c, 0xe56e, 0xecdc, 0xc0b0, 0xecdb, 0xefc5, 0xefc6, 0xe96e, + 0xf1fe, 0x0000, 0xa47a, 0xa5ad, 0xa67e, 0xfbf3, 0xa67d, 0x0000, + 0xa9af, 0xb746, 0xfbf4, 0xa4db, 0xa5ae, 0xabd5, 0xb458, 0xc6ce, + 0xc979, 0x0000, 0xc97a, 0xfbc3, 0xc9dc, 0x0000, 0x8965, 0xa7c8, + 0xcad0, 0xcace, 0xa7c9, 0xcacd, 0xcacf, 0xcad1, 0x0000, 0xa7c7, + 0x0000, 0x0000, 0x8c7a, 0x0000, 0x0000, 0xa9b3, 0xa9b4, 0xa9b1, + 0x0000, 0x8c7b, 0xa9b0, 0xceb8, 0xa9b2, 0x0000, 0x0000, 0x0000, + 0xabd6, 0x0000, 0xceb7, 0xceb9, 0xceb6, 0xceba, 0xabd7, 0xae79, + 0xd175, 0x0000, 0xd177, 0xae77, 0xd178, 0xae78, 0xd176, 0x0000, + 0xceb5, 0xd547, 0xd54a, 0xd54b, 0xd548, 0xb167, 0xb166, 0xb164, + 0xb165, 0xd549, 0x0000, 0x0000, 0x0000, 0x8d6a, 0xb168, 0x0000, + 0x0000, 0xb45a, 0xb45b, 0x0000, 0xb45c, 0xdd5d, 0xdd5f, 0xdd61, + 0xb748, 0xb747, 0xb459, 0xdd60, 0xdd5e, 0x9353, 0xe1b8, 0x0000, + 0xfbf9, 0xe1b6, 0xe1bc, 0xb9f8, 0xe1bd, 0xe1ba, 0xb9f9, 0xe1b7, + 0xe1b5, 0xe1bb, 0xbc70, 0xe573, 0xe1b9, 0xbc72, 0xe574, 0xbc71, + 0xbc74, 0xe575, 0xbc6f, 0xbc73, 0x0000, 0xe973, 0xe971, 0xe970, + 0xe972, 0xe96f, 0x0000, 0x0000, 0xc366, 0x0000, 0xf446, 0xf447, + 0x0000, 0xf5cb, 0xf6df, 0xc655, 0xfbfd, 0x0000, 0xa9b5, 0xa7ca, + 0x9059, 0xfc40, 0xabd8, 0xfc41, 0xfc43, 0x0000, 0xa47b, 0xa4dc +}; + +static const unsigned short big5hkscs_from_unicode_5f[] = { + 0x0000, 0xa5af, 0xc9dd, 0x0000, 0xa7cb, 0xcad2, 0x0000, 0xcebb, + 0xabd9, 0x0000, 0xb9fa, 0xa47c, 0x9fd8, 0xfc46, 0x9362, 0xa6a1, + 0x0000, 0x0000, 0xb749, 0xa47d, 0xa4dd, 0xa4de, 0x0000, 0xa5b1, + 0xa5b0, 0x0000, 0xc9de, 0xa6a2, 0x0000, 0xcad3, 0x0000, 0xa7cc, + 0x0000, 0x0000, 0xcc71, 0xcc72, 0xcc73, 0x8d6b, 0xa9b6, 0xa9b7, + 0xcc70, 0xa9b8, 0x0000, 0x0000, 0x0000, 0xabda, 0xcebc, 0x0000, + 0xd17a, 0xae7a, 0x0000, 0xd179, 0x0000, 0xb169, 0xd54c, 0xb16a, + 0xd54d, 0x0000, 0xfc4c, 0x0000, 0xb45d, 0x0000, 0x0000, 0x0000, + 0xdd62, 0x0000, 0x0000, 0xe1bf, 0xe1be, 0x0000, 0xb9fb, 0x0000, + 0xbc75, 0xe576, 0xbeca, 0xe974, 0xc0b1, 0x95b8, 0xc573, 0xf7d8, + 0xc6d0, 0x8bca, 0x0000, 0x0000, 0xcc74, 0x0000, 0xcebd, 0xb16b, + 0xfc4f, 0xb74a, 0x0000, 0x0000, 0x987a, 0xc255, 0x0000, 0x0000, + 0x0000, 0xc6d1, 0xa7ce, 0xfc51, 0xa7cd, 0xabdb, 0x0000, 0xd17b, + 0x0000, 0xb16d, 0xb343, 0xb16e, 0xb16c, 0xb45e, 0x0000, 0xe1c0, + 0xb9fc, 0xbc76, 0xfc54, 0xc94c, 0xc9df, 0x0000, 0xcad5, 0xa7cf, + 0xcad4, 0xa7d0, 0x0000, 0xfaaf, 0xa9bc, 0xcc77, 0xcc76, 0xa9bb, + 0xa9b9, 0xa9ba, 0xcc75, 0x8d6c, 0x0000, 0xabdd, 0xcebe, 0xabe0, + 0xabdc, 0xabe2, 0xabde, 0xabdf, 0xabe1, 0x0000, 0x0000, 0x0000, + 0xae7d, 0xae7c, 0xae7b, 0x0000, 0x0000, 0x0000, 0xd54f, 0xb16f, + 0xb172, 0xb170, 0x0000, 0xd54e, 0xb175, 0x0000, 0xb171, 0xd550, + 0xb174, 0xb173, 0x0000, 0x0000, 0xfa61, 0xd8f6, 0xd8f5, 0xfc57, + 0xb461, 0xb45f, 0xb460, 0xd8f7, 0xb74b, 0xdd64, 0xb74c, 0xdd63, + 0x0000, 0x9b70, 0xe577, 0x0000, 0x0000, 0xbc78, 0xe1c1, 0xbc77, + 0x0000, 0xb9fd, 0xa051, 0xecde, 0xe975, 0xc0b2, 0xecdd, 0xf240, + 0xf448, 0xf449, 0x8c7c, 0xa4df, 0x8bcb, 0xa5b2, 0x0000, 0x0000, + 0x0000, 0xc97b, 0x0000, 0x0000, 0xa7d2, 0xa7d4, 0x0000, 0xc9e2, + 0xcad8, 0xcad7, 0xcad6, 0x0000, 0xc9e1, 0xc9e0, 0xa6a4, 0xa7d3, + 0xa7d1, 0xa6a3, 0x0000, 0x936e, 0x0000, 0xa9bd, 0xcc78, 0xfcd5, + 0xa9be, 0xcadd, 0x0000, 0xcadf, 0xcade, 0xcc79, 0x0000, 0x0000, + 0xcada, 0x0000, 0xa7d8, 0xa7d6, 0x0000, 0xcad9, 0xcadb, 0xcae1, + 0x0000, 0xa7d5, 0x0000, 0xcadc, 0xcae5, 0xa9c0, 0x0000, 0xcae2, + 0xa7d7, 0x0000, 0xcae0, 0xcae3, 0x0000, 0xa9bf, 0x0000, 0xa9c1 +}; + +static const unsigned short big5hkscs_from_unicode_60[] = { + 0xcae4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xccaf, 0xcca2, 0xcc7e, 0xccae, 0xcca9, 0xabe7, 0xa9c2, + 0xccaa, 0xccad, 0xabe3, 0xccac, 0xa9c3, 0xa9c8, 0xa9c6, 0xcca3, + 0x0000, 0xcc7c, 0xcca5, 0xa9cd, 0xccb0, 0xabe4, 0xcca6, 0x0000, + 0xabe5, 0xa9c9, 0xcca8, 0xfca9, 0xcecd, 0xabe6, 0xcc7b, 0xa9ca, + 0xabe8, 0xa9cb, 0xa9c7, 0xa9cc, 0xcca7, 0xcc7a, 0xccab, 0xa9c4, + 0x0000, 0xfc61, 0xcc7d, 0xcca4, 0xcca1, 0xa9c5, 0x0000, 0xcebf, + 0x0000, 0xcec0, 0x0000, 0x8966, 0x0000, 0x0000, 0x0000, 0x0000, + 0xceca, 0xd1a1, 0xcecb, 0xabee, 0xcece, 0xcec4, 0xabed, 0xcec6, + 0x0000, 0xcec7, 0xfacb, 0x0000, 0xcec9, 0xabe9, 0x0000, 0x0000, + 0xaea3, 0x0000, 0xf9da, 0xcec5, 0xcec1, 0xaea4, 0x0000, 0x0000, + 0xcecf, 0xae7e, 0xd17d, 0xcec8, 0x0000, 0xd17c, 0xcec3, 0xcecc, + 0x0000, 0x0000, 0xabec, 0xaea1, 0xabf2, 0xaea2, 0xced0, 0xd17e, + 0xabeb, 0xaea6, 0xabf1, 0xabf0, 0xabef, 0xaea5, 0xced1, 0xaea7, + 0xabea, 0x0000, 0xcec2, 0x0000, 0x0000, 0x937a, 0x0000, 0xa0e0, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x936b, 0xb176, + 0xd1a4, 0xd1a6, 0x0000, 0xd1a8, 0xaea8, 0xaeae, 0xd553, 0xd1ac, + 0xd1a3, 0xb178, 0xd551, 0x0000, 0xaead, 0xaeab, 0xd1ae, 0x0000, + 0xd552, 0x0000, 0xd1a5, 0x0000, 0xaeac, 0xd1a9, 0xaeaf, 0xd1ab, + 0x0000, 0x0000, 0xaeaa, 0xd1aa, 0xd1ad, 0xd1a7, 0xfc6b, 0xaea9, + 0xb179, 0x0000, 0xd1a2, 0xb177, 0xfc6c, 0x0000, 0x0000, 0x9468, + 0xb17a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xd555, 0xd55e, 0xb464, 0xfc6d, 0xb17c, 0xb1a3, 0xb465, 0xd560, + 0xb1aa, 0xd8f9, 0xd556, 0xb1a2, 0xb1a5, 0xb17e, 0xd554, 0xd562, + 0xd565, 0xd949, 0x0000, 0xd563, 0xd8fd, 0xb1a1, 0xb1a8, 0xb1ac, + 0xd55d, 0xd8f8, 0xd561, 0xb17b, 0xd8fa, 0xd564, 0xd8fc, 0xd559, + 0x0000, 0xb462, 0x0000, 0xd557, 0xd558, 0xb1a7, 0x0000, 0x8d71, + 0xb1a6, 0xd55b, 0xb1ab, 0xd55f, 0xb1a4, 0xd55c, 0xfd64, 0xb1a9, + 0xb466, 0xb463, 0xd8fb, 0x99ba, 0xd55a, 0x0000, 0xb17d, 0x9ad0, + 0x9a61, 0xa0e5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xb46b, 0xb46f, 0xd940, 0xb751, 0xb46d, 0xd944, 0xb471, 0xdd65, + 0xd946, 0xb753, 0xb469, 0xb46c, 0xd947, 0xa05b, 0xd948, 0xd94e +}; + +static const unsigned short big5hkscs_from_unicode_61[] = { + 0xb473, 0xb754, 0x0000, 0xd94a, 0xd94f, 0xd943, 0xb75e, 0x96ac, + 0xb755, 0xb472, 0xd941, 0xd950, 0x9740, 0xb75d, 0xb470, 0xb74e, + 0xd94d, 0x0000, 0xb474, 0xd945, 0xd8fe, 0xb46a, 0xd942, 0x0000, + 0xd94b, 0x9ef1, 0xb74d, 0xb752, 0xb467, 0xd94c, 0x0000, 0xb750, + 0x0000, 0x0000, 0x8c4d, 0xb468, 0x0000, 0x0000, 0x0000, 0xb75c, + 0xe1c3, 0xdd70, 0x0000, 0xdd68, 0xe1c2, 0x0000, 0xdd6c, 0xdd6e, + 0x9f7e, 0x0000, 0xdd6b, 0x0000, 0xb75b, 0x0000, 0xdd6a, 0xb75f, + 0x0000, 0x0000, 0x0000, 0xe1d2, 0x0000, 0x8d72, 0xb75a, 0xba40, + 0xdd71, 0xe1c4, 0xfc76, 0x0000, 0xb758, 0xdd69, 0xdd6d, 0xb9fe, + 0xb74f, 0xdd66, 0xdd67, 0xba41, 0xb757, 0xb759, 0xb756, 0xdd6f, + 0x96a9, 0x0000, 0xe1c8, 0xe1c9, 0xe1ce, 0xbc7d, 0xe1d5, 0x0000, + 0xba47, 0xa06e, 0xba46, 0xe1d0, 0xfcaa, 0xbc7c, 0xe1c5, 0xba45, + 0xfbcd, 0xe1d4, 0xba43, 0xba44, 0xfc74, 0xe1d1, 0xe5aa, 0xbc7a, + 0xb46e, 0x0000, 0xe1d3, 0xbca3, 0xe1cb, 0x0000, 0xbc7b, 0xa074, + 0xbca2, 0xe1c6, 0xe1ca, 0xe1c7, 0xe1cd, 0xba48, 0xbc79, 0xba42, + 0x0000, 0xe57a, 0xe1cf, 0x0000, 0xbca1, 0xa071, 0xbca4, 0x0000, + 0xe1cc, 0xfc79, 0xbc7e, 0xe579, 0x0000, 0x0000, 0x0000, 0xfc7c, + 0x0000, 0xe57e, 0xbece, 0xe578, 0xe9a3, 0xe5a9, 0xbca8, 0x0000, + 0xbca6, 0xbecc, 0xe5a6, 0xe5a2, 0xbcac, 0x9c50, 0xe978, 0x0000, + 0x9379, 0x9378, 0xbcaa, 0xe5a1, 0xa0dd, 0xe976, 0x0000, 0xe5a5, + 0x0000, 0xe5a8, 0xe57d, 0x0000, 0xbcab, 0x0000, 0x0000, 0xbca5, + 0xe977, 0xbecd, 0xe5a7, 0xbca7, 0xbca9, 0xe5a4, 0xbcad, 0xe5a3, + 0xe57c, 0xe57b, 0xbecb, 0xe5ab, 0xe97a, 0xece0, 0xbed0, 0x8d75, + 0xe9a2, 0x8d76, 0xe97e, 0x0000, 0xece1, 0x0000, 0xbed1, 0xe9a1, + 0x9374, 0xe97c, 0xc0b4, 0xecdf, 0x0000, 0xe979, 0xe97b, 0xc0b5, + 0xbed3, 0xc0b3, 0xbed2, 0xc0b7, 0xe97d, 0xbecf, 0x0000, 0x8d77, + 0xfca5, 0x0000, 0x0000, 0xfca2, 0x0000, 0x0000, 0xefcf, 0x0000, + 0xefc7, 0x0000, 0x90c3, 0x0000, 0x0000, 0x0000, 0xece7, 0xefc8, + 0xece3, 0x0000, 0xa079, 0xc256, 0xece5, 0xece4, 0xc0b6, 0xece2, + 0xece6, 0xefd0, 0xefcc, 0xefce, 0x0000, 0xefc9, 0xefca, 0x0000, + 0xefcd, 0xefcb, 0xc367, 0x0000, 0x0000, 0xc36a, 0xc369, 0xc368, + 0xc461, 0xf44a, 0xc462, 0xf241, 0xc4df, 0xf5cc, 0xc4e0, 0xc574 +}; + +static const unsigned short big5hkscs_from_unicode_62[] = { + 0xc5ca, 0xf7d9, 0x0000, 0xf7da, 0xf7db, 0x0000, 0x0000, 0xf9ba, + 0xa4e0, 0xc97c, 0xa5b3, 0x0000, 0xa6a6, 0xa6a7, 0xa6a5, 0x0000, + 0xa6a8, 0xa7da, 0xa7d9, 0x0000, 0xccb1, 0xa9cf, 0xa9ce, 0x0000, + 0x0000, 0xd1af, 0xb1ad, 0xb1ae, 0x0000, 0x0000, 0x0000, 0xb475, + 0xdd72, 0xb760, 0xb761, 0xdd74, 0xdd76, 0xdd75, 0x0000, 0xe1d7, + 0x0000, 0xe1d6, 0xba49, 0xe1d8, 0x8d79, 0xe5ac, 0xbcae, 0x0000, + 0xbed4, 0x0000, 0xc0b8, 0xc257, 0xc0b9, 0x0000, 0xa4e1, 0x8bfc, + 0x0000, 0xa076, 0xcae6, 0x0000, 0x0000, 0xccb2, 0xa9d1, 0xa9d0, + 0xa9d2, 0xabf3, 0xced2, 0xced3, 0x0000, 0x0000, 0xd1b0, 0xaeb0, + 0xb1af, 0xb476, 0xd951, 0xa4e2, 0x8bcd, 0xa47e, 0xa4e3, 0x0000, + 0xc97d, 0xa5b7, 0xa5b6, 0xa5b4, 0xa5b5, 0x0000, 0x0000, 0x0000, + 0xa6ab, 0xc9e9, 0xc9eb, 0xa6aa, 0xc9e3, 0x0000, 0xc9e4, 0x0000, + 0xc9ea, 0xc9e6, 0xc9e8, 0xa6a9, 0xc9e5, 0xc9ec, 0xc9e7, 0x0000, + 0x9f5a, 0x0000, 0x0000, 0x0000, 0x0000, 0xa7e1, 0xa7ea, 0xa7e8, + 0xcaf0, 0xcaed, 0xcaf5, 0xa7e6, 0xcaf6, 0x0000, 0xa7df, 0xcaf3, + 0x0000, 0xa7e5, 0xcaef, 0xcaee, 0xa7e3, 0xcaf4, 0xa7e4, 0xa9d3, + 0xa7de, 0xcaf1, 0x9ff4, 0xcae7, 0xa7db, 0x9fba, 0xa7ee, 0xcaec, + 0xcaf2, 0xa7e0, 0xa7e2, 0x0000, 0xcae8, 0x0000, 0xcae9, 0xcaea, + 0x8d7a, 0xa7ed, 0xa7e7, 0xa7ec, 0xcaeb, 0xa7eb, 0xa7dd, 0xa7dc, + 0xa7e9, 0x0000, 0x0000, 0x0000, 0x0000, 0x9e45, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x93b0, 0x0000, 0xa075, 0x0000, + 0xa9e1, 0xccbe, 0xccb7, 0xa9dc, 0xa9ef, 0xccb3, 0xccba, 0xccbc, + 0xccbf, 0xa9ea, 0x0000, 0xccbb, 0xccb4, 0xa9e8, 0xccb8, 0x0000, + 0xccc0, 0xa9d9, 0x0000, 0xccbd, 0xa9e3, 0xa9e2, 0xccb6, 0xa9d7, + 0x0000, 0x0000, 0xa9d8, 0x9b46, 0xa9d6, 0xfcae, 0xa9ee, 0xa9e6, + 0xa9e0, 0xa9d4, 0xccb9, 0xa9df, 0xa9d5, 0xa9e7, 0xa9f0, 0xced4, + 0xa9e4, 0xccb5, 0xa9da, 0xa9dd, 0xa9de, 0xfcb0, 0xa9ec, 0xa9ed, + 0xa9eb, 0xa9e5, 0xa9e9, 0xa9db, 0xabf4, 0x0000, 0x0000, 0xfa51, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8d7b, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xceda, 0xac41, 0xabf8, 0xabfa, 0xac40, + 0xcee6, 0xabfd, 0xd1b1, 0xaeb1, 0xac43, 0xced7, 0xcedf, 0xabfe, + 0xcede, 0xcedb, 0xcee3, 0xcee5, 0xabf7, 0xabfb, 0xac42, 0xaeb3 +}; + +static const unsigned short big5hkscs_from_unicode_63[] = { + 0xcee0, 0xabf9, 0xac45, 0xced9, 0x0000, 0x0000, 0x0000, 0xabfc, + 0xaeb2, 0xabf6, 0x0000, 0xced6, 0xcedd, 0xced5, 0xced8, 0xcedc, + 0xd1b2, 0xac44, 0x0000, 0xcee1, 0xcee2, 0xcee4, 0xabf5, 0x0000, + 0x8d7c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xaec1, 0xd1be, 0xaebf, 0xaec0, 0xd1b4, 0xd1c4, 0x9ed6, 0xaeb6, + 0x0000, 0x93ac, 0xd566, 0xd1c6, 0xd1c0, 0x9f5b, 0xd1b7, 0x93a9, + 0xd1c9, 0xd1ba, 0xaebc, 0xd57d, 0xd1bd, 0xaebe, 0xaeb5, 0x0000, + 0xd1cb, 0xd1bf, 0xaeb8, 0xd1b8, 0xd1b5, 0xd1b6, 0xaeb9, 0xd1c5, + 0xd1cc, 0xaebb, 0xd1bc, 0xd1bb, 0xaec3, 0xaec2, 0xaeb4, 0xaeba, + 0xaebd, 0xd1c8, 0x0000, 0x0000, 0xd1c2, 0xaeb7, 0xd1b3, 0xd1ca, + 0xd1c1, 0xd1c3, 0xd1c7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xa07c, 0xd567, 0x0000, 0xb1b7, + 0xb1cb, 0xb1ca, 0x0000, 0xb1bf, 0xfcb2, 0xd579, 0xd575, 0xd572, + 0xd5a6, 0xb1ba, 0xb1b2, 0x0000, 0x0000, 0xd577, 0xb4a8, 0xb1b6, + 0xd5a1, 0x8ac1, 0xb1cc, 0xb1c9, 0xd57b, 0xd56a, 0x0000, 0x9fb4, + 0xb1c8, 0xd5a3, 0xd569, 0xb1bd, 0xb1c1, 0xd5a2, 0x0000, 0xd573, + 0xb1c2, 0xb1bc, 0xd568, 0xfcac, 0xb478, 0xd5a5, 0xd571, 0xb1c7, + 0xd574, 0xd5a4, 0xb1c6, 0x0000, 0xd952, 0x0000, 0xb1b3, 0xd56f, + 0xb1b8, 0xb1c3, 0x0000, 0xb1be, 0xd578, 0xd56e, 0xd56c, 0xd57e, + 0xb1b0, 0xb1c4, 0xb1b4, 0xb477, 0xd57c, 0xb1b5, 0x0000, 0xb1b1, + 0xb1c0, 0xb1bb, 0xb1b9, 0xd570, 0xb1c5, 0xd56d, 0xd57a, 0xd576, + 0xd954, 0xd953, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x9e4c, 0x0000, 0x0000, 0x0000, 0xd56b, 0xd964, 0x0000, + 0xb47a, 0x8fc5, 0xd96a, 0xd959, 0xd967, 0xdd77, 0xb47d, 0xd96b, + 0xd96e, 0xb47c, 0xd95c, 0xd96d, 0xd96c, 0xb47e, 0xd955, 0xb479, + 0xb4a3, 0x93ad, 0xb4a1, 0xd969, 0x0000, 0xd95f, 0xb4a5, 0xd970, + 0xd968, 0xd971, 0xb4ad, 0xb4ab, 0xd966, 0xd965, 0x9dc3, 0xd963, + 0xd95d, 0xb4a4, 0x8da2, 0xb4a2, 0xd1b9, 0xd956, 0x9d4a, 0xddb7, + 0xd957, 0xb47b, 0xb4aa, 0xdd79, 0x0000, 0xb4a6, 0xb4a7, 0xd958, + 0xd96f, 0xdd78, 0xd960, 0xd95b, 0xb4a9, 0xd961, 0xd95e, 0x0000, + 0xfcb6, 0xb4ae, 0x0000, 0x8da3, 0x9e4b, 0x0000, 0x9e4d, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_64[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xb770, 0x8da4, + 0x0000, 0xdd7c, 0xddb1, 0xddb6, 0xddaa, 0xb76c, 0xddbb, 0xb769, + 0xdd7a, 0x0000, 0xdd7b, 0xb762, 0xb76b, 0xdda4, 0xb76e, 0xb76f, + 0xdda5, 0x0000, 0xddb2, 0xddb8, 0xb76a, 0x0000, 0xb764, 0xdda3, + 0xdd7d, 0xddba, 0xdda8, 0xdda9, 0xdd7e, 0xddb4, 0xddab, 0xddb5, + 0xddad, 0x0000, 0xb765, 0xe1d9, 0xb768, 0xb766, 0xddb9, 0xddb0, + 0xddac, 0x0000, 0x8afd, 0xdda1, 0xba53, 0xddaf, 0xb76d, 0xdda7, + 0xfcb5, 0xdda6, 0xfcc3, 0x93b2, 0x0000, 0xb767, 0xb763, 0xe1ee, + 0xddb3, 0xddae, 0x0000, 0xdda2, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xe1e9, 0x0000, 0xe1da, 0xe1e5, 0x0000, + 0xe1ec, 0xba51, 0xb4ac, 0xe1ea, 0xba4c, 0x0000, 0x0000, 0x0000, + 0xba4b, 0xe1f1, 0x8da5, 0xe1db, 0xe1e8, 0xe1dc, 0xe1e7, 0xba4f, + 0xe1eb, 0xd962, 0x0000, 0x0000, 0x0000, 0xe1f2, 0xe1e3, 0xba52, + 0xe5ba, 0xbcaf, 0x0000, 0xe1f0, 0xe1ef, 0xba54, 0xe5ad, 0xbcb0, + 0xe5ae, 0x93a1, 0xe1df, 0xe1e0, 0xe1dd, 0xe1e2, 0xe1de, 0xe1f3, + 0xba4e, 0xbcb1, 0xba50, 0xba55, 0x8ac6, 0xe1e1, 0x0000, 0xe1ed, + 0x0000, 0x0000, 0xe1e6, 0x0000, 0x0000, 0xe5b1, 0x0000, 0xba4a, + 0xbcb4, 0xe9aa, 0xe5b6, 0xe5b5, 0xe5b7, 0x8a5b, 0x0000, 0xe5b4, + 0xfcb9, 0x894d, 0xbcbb, 0xbcb8, 0x0000, 0xbcb9, 0xe5af, 0xe5b2, + 0xe5bc, 0xbcc1, 0xbcbf, 0x0000, 0xe5b3, 0xd95a, 0xbcb2, 0xe5b9, + 0xe5b0, 0x0000, 0xbcc2, 0xe5b8, 0xba4d, 0xbcb7, 0xe1e4, 0x0000, + 0x0000, 0xbcba, 0x0000, 0xbcbe, 0xbcc0, 0xbcbd, 0xbcbc, 0xfed4, + 0xbcb6, 0xe5bb, 0xbcb3, 0xbcc3, 0x8a78, 0x0000, 0x93ab, 0x0000, + 0x0000, 0x0000, 0x0000, 0xbed8, 0xbed9, 0xe9a9, 0xbee2, 0xbedf, + 0x8da7, 0xbed6, 0xbedd, 0xe9ab, 0xbedb, 0xbed5, 0x0000, 0xbedc, + 0x0000, 0xe9a8, 0xc0bb, 0xbed7, 0x0000, 0xbede, 0xc0ba, 0xe9a7, + 0xe9a6, 0x0000, 0xbee0, 0x9f45, 0xbee1, 0x0000, 0xe9a5, 0xe9a4, + 0xc0bc, 0xe9ae, 0xbeda, 0xe9ac, 0x0000, 0x8a56, 0x0000, 0x0000, + 0xc0bd, 0xfcbf, 0xc0c2, 0xecea, 0xecec, 0xfcc0, 0xc0bf, 0x8ee6, + 0xeced, 0xece9, 0x8aa4, 0xeceb, 0xc0c0, 0xc0c3, 0x0000, 0xece8, + 0xc0be, 0xc0c1, 0xc259, 0xe9ad, 0xc258, 0x0000, 0x0000, 0xc25e, + 0xefd4, 0x0000, 0xc25c, 0xc25d, 0xefd7, 0xefd3, 0xc25a, 0xefd1 +}; + +static const unsigned short big5hkscs_from_unicode_65[] = { + 0xc36b, 0xefd5, 0x0000, 0xefd6, 0xefd2, 0x0000, 0xc25b, 0xf242, + 0x0000, 0xf245, 0x8943, 0x0000, 0xf246, 0xf244, 0xf247, 0xc36c, + 0xf243, 0x93f3, 0x0000, 0xf44e, 0xc464, 0xf44d, 0xf44c, 0xf44b, + 0xc463, 0xc465, 0x0000, 0xf5cd, 0xc4e2, 0xc4e1, 0xfcab, 0x9ea2, + 0xf6e1, 0xf6e0, 0xf6e3, 0xc5cb, 0xc575, 0xf7dd, 0xf6e2, 0x0000, + 0x0000, 0xf7dc, 0xc5cd, 0xc5cc, 0xc5f3, 0xf8a9, 0xf8ef, 0xa4e4, + 0x9dc7, 0x0000, 0xd972, 0xe9af, 0xc6d2, 0x8bce, 0xa6ac, 0xcaf7, + 0xa7f1, 0xa7ef, 0x0000, 0xa7f0, 0x0000, 0xccc1, 0xa9f1, 0xac46, + 0x0000, 0xcee7, 0x0000, 0xcee8, 0x0000, 0xac47, 0xd1ce, 0x0000, + 0xaec4, 0xaec5, 0xd1cd, 0x0000, 0x0000, 0xfcc5, 0x0000, 0xb1d3, + 0x0000, 0xb1cf, 0x0000, 0xd5a7, 0xb1d6, 0xb1d5, 0xb1ce, 0xb1d1, + 0xb1d4, 0xb1d0, 0x0000, 0x0000, 0xd976, 0xb1cd, 0xb4af, 0xfccb, + 0x0000, 0x0000, 0xb4b1, 0xb4b2, 0xd975, 0xd978, 0xb4b0, 0xd973, + 0xd977, 0x0000, 0xd974, 0x93b3, 0xb771, 0xfcca, 0x0000, 0xddbc, + 0x0000, 0x0000, 0xba56, 0xe1f4, 0xbee3, 0xbcc4, 0xe5bd, 0xbcc5, + 0xbcc6, 0xe5bf, 0xe5be, 0xe5c0, 0xe9b1, 0x0000, 0x0000, 0xe9b0, + 0xecef, 0xecee, 0xc0c4, 0xc0c5, 0xf248, 0xfcc9, 0x8dac, 0xa4e5, + 0xfbc6, 0x8967, 0x0000, 0x8c7e, 0xd979, 0x0000, 0x0000, 0x0000, + 0xb4b4, 0xb4b3, 0xddbd, 0x0000, 0xefd8, 0xc4e3, 0xf7de, 0xa4e6, + 0x0000, 0xaec6, 0x0000, 0xb1d8, 0xb1d7, 0xd97a, 0xd97b, 0xb772, + 0xe1f5, 0xba57, 0xe9b2, 0x0000, 0xa4e7, 0xa5b8, 0x0000, 0xa9f2, + 0xccc2, 0x0000, 0xcee9, 0xac48, 0xb1d9, 0x0000, 0xd97c, 0xb4b5, + 0xb773, 0x0000, 0xe5c1, 0xe5c2, 0x0000, 0xfccd, 0xecf0, 0xc25f, + 0xf8f0, 0xa4e8, 0x0000, 0xccc3, 0xa9f3, 0xac49, 0x9cf3, 0xceea, + 0x0000, 0xaec7, 0xd1d2, 0xd1d0, 0xd1d1, 0xaec8, 0xd1cf, 0x0000, + 0x0000, 0x0000, 0x0000, 0xb1db, 0xb1dc, 0xd5a8, 0xb1dd, 0xb1da, + 0xd97d, 0xfcd0, 0xd97e, 0xddbe, 0x95bb, 0x0000, 0xba59, 0xba58, + 0x0000, 0x0000, 0xecf1, 0xefd9, 0x0000, 0xf24a, 0xf249, 0xf44f, + 0xfcd3, 0xc95e, 0xac4a, 0xfcd4, 0x0000, 0xa4e9, 0xa5b9, 0x0000, + 0xa6ae, 0xa6ad, 0x0000, 0x0000, 0xa6af, 0xa6b0, 0xc9ee, 0xc9ed, + 0xcaf8, 0xa7f2, 0xcafb, 0xcafa, 0xcaf9, 0xcafc, 0x0000, 0x0000, + 0x0000, 0x0000, 0xa9f4, 0xccc9, 0xccc5, 0xccce, 0x0000, 0x8dae +}; + +static const unsigned short big5hkscs_from_unicode_66[] = { + 0xa9fb, 0x0000, 0xa9f9, 0xccca, 0xccc6, 0xcccd, 0xa9f8, 0xaa40, + 0xccc8, 0xccc4, 0xa9fe, 0xcccb, 0xa9f7, 0xcccc, 0xa9fa, 0xa9fc, + 0xccd0, 0xcccf, 0xccc7, 0xa9f6, 0xa9f5, 0xa9fd, 0x0000, 0x0000, + 0xfcd7, 0x0000, 0x0000, 0x0000, 0xceef, 0xcef5, 0x93db, 0xac50, + 0xac4d, 0xceec, 0xcef1, 0xfe63, 0xac53, 0xac4b, 0xcef0, 0xac4e, + 0xac51, 0x0000, 0x0000, 0xcef3, 0x0000, 0xac4c, 0xcef8, 0xac4f, + 0x93d5, 0xac52, 0xceed, 0xcef2, 0xcef6, 0xceee, 0xceeb, 0x0000, + 0x0000, 0xcef7, 0xcef4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xaed0, 0xaec9, 0xaecc, 0xfcda, 0xaecf, 0x0000, 0xd1d5, + 0x9b71, 0xaeca, 0xd1d3, 0xfcdd, 0xaece, 0x0000, 0x0000, 0xaecb, + 0x0000, 0xd1d6, 0xaecd, 0x8daf, 0x0000, 0x0000, 0x0000, 0xfaf2, + 0x0000, 0xd5ac, 0xb1df, 0xd5ab, 0xd5ad, 0xb1de, 0xb1e3, 0xd1d4, + 0x0000, 0xd5aa, 0xd5ae, 0x93d8, 0xb1e0, 0xd5a9, 0xb1e2, 0xfcdf, + 0xb1e1, 0x0000, 0xd9a7, 0x93d3, 0xd9a2, 0x0000, 0xb4b6, 0xb4ba, + 0xb4b7, 0xd9a5, 0xd9a8, 0xfce1, 0xfce2, 0x0000, 0xb4b9, 0xb4be, + 0xddc7, 0xd9a6, 0xb4bc, 0xd9a3, 0xd9a1, 0x8e76, 0xb4bd, 0x0000, + 0xd9a4, 0x0000, 0x0000, 0x0000, 0xb779, 0xfc62, 0xddbf, 0xb776, + 0xb777, 0xb775, 0xddc4, 0xddc3, 0xddc0, 0xb77b, 0x93d1, 0x0000, + 0xddc2, 0xb4bb, 0x8db1, 0x0000, 0xddc6, 0xddc1, 0xb778, 0xb774, + 0xb77a, 0xddc5, 0x9859, 0x0000, 0x0000, 0xba5c, 0x0000, 0xe1f8, + 0xe1f7, 0xe1f6, 0xba5a, 0x0000, 0xfb52, 0x0000, 0x0000, 0x0000, + 0xba5b, 0xe5c5, 0xe5c8, 0xbcc8, 0x0000, 0xfb53, 0xbcc7, 0xe5c9, + 0xe5c4, 0xbcca, 0xe5c6, 0xfb4d, 0xbcc9, 0xe5c3, 0x9cbf, 0xe5c7, + 0xbee9, 0xbee6, 0xe9bb, 0xe9ba, 0x0000, 0xe9b9, 0xe9b4, 0x9b72, + 0xe9b5, 0x0000, 0x0000, 0x0000, 0xbee7, 0x0000, 0xbee4, 0xbee8, + 0xe9b3, 0xbee5, 0xe9b6, 0xe9b7, 0xe9bc, 0xfb50, 0x93be, 0xe9b8, + 0x0000, 0x0000, 0xecf2, 0x0000, 0x0000, 0x0000, 0xc0c7, 0x0000, + 0xefdc, 0xc0c6, 0xefda, 0xefdb, 0xc260, 0xc36e, 0xf24b, 0x0000, + 0xc36d, 0x0000, 0x0000, 0xf451, 0xf452, 0x0000, 0xc466, 0x0000, + 0xf450, 0xc4e4, 0x0000, 0xf7df, 0xc5ce, 0xf8aa, 0xf8ab, 0x0000, + 0xa4ea, 0x9df1, 0xa6b1, 0xa6b2, 0xa7f3, 0x0000, 0xccd1, 0xac54, + 0xaed1, 0xb1e4, 0x0000, 0x0000, 0xb0d2, 0x0000, 0xb4bf, 0xb4c0 +}; + +static const unsigned short big5hkscs_from_unicode_67[] = { + 0xb3cc, 0xd9a9, 0xfceb, 0xb77c, 0xe1fa, 0xe1f9, 0x0000, 0x0000, + 0xa4eb, 0xa6b3, 0xccd2, 0xaa42, 0xa0bb, 0xaa41, 0x9b7e, 0xcef9, + 0xcefa, 0x0000, 0xd1d7, 0xd1d8, 0xaed2, 0xaed3, 0x8db3, 0xaed4, + 0xd5af, 0x8c52, 0x0000, 0xb1e6, 0x0000, 0xb4c2, 0x9ae8, 0xb4c1, + 0xddc8, 0xdf7a, 0xe1fb, 0xe9bd, 0x0000, 0x8edc, 0xc261, 0xc467, + 0xa4ec, 0x0000, 0xa5bc, 0xa5bd, 0xa5bb, 0xa5be, 0xa5ba, 0x0000, + 0x0000, 0xa6b6, 0x0000, 0xc9f6, 0xa6b5, 0xa6b7, 0x9cf9, 0x0000, + 0xc9f1, 0xc9f0, 0xc9f3, 0xc9f2, 0xc9f5, 0xa6b4, 0xc9ef, 0xc9f4, + 0x0000, 0x0000, 0x0000, 0x0000, 0xfa50, 0xcafd, 0xa7fd, 0xcafe, + 0xcb43, 0xa7fc, 0x0000, 0xcb47, 0xcb42, 0xcb45, 0xa7f5, 0xa7f6, + 0xa7f7, 0xa7f8, 0x0000, 0xa840, 0x0000, 0xcb41, 0xa7fa, 0xa841, + 0x0000, 0xcb40, 0xcb46, 0x0000, 0xa7f9, 0xcb44, 0xfcf1, 0xa7f4, + 0xa7fe, 0x98e7, 0xfcf3, 0x0000, 0x0000, 0x0000, 0x0000, 0xfcf2, + 0x0000, 0x0000, 0xaa57, 0x8cca, 0xccd4, 0xaa43, 0x0000, 0xaa4d, + 0xaa4e, 0xaa46, 0xaa58, 0xaa48, 0xccdc, 0xaa53, 0xccd7, 0xaa49, + 0xcce6, 0xcce7, 0xccdf, 0xccd8, 0xaa56, 0xcce4, 0xaa51, 0xaa4f, + 0x0000, 0xcce5, 0x0000, 0xcce3, 0xccdb, 0xccd3, 0xccda, 0xaa4a, + 0x0000, 0xaa50, 0x0000, 0xaa44, 0xccde, 0xccdd, 0xccd5, 0x93e5, + 0xaa52, 0xcce1, 0xccd6, 0xaa55, 0xcce8, 0xaa45, 0x0000, 0xaa4c, + 0xccd9, 0xcce2, 0xaa54, 0x0000, 0xaa47, 0xaa4b, 0x0000, 0xcce0, + 0x9a59, 0x0000, 0x0000, 0x0000, 0x8db5, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xfd4d, 0x0000, 0xcf5b, 0xac5c, + 0xac69, 0xfd5e, 0xcf56, 0xcf4c, 0xac62, 0xcf4a, 0xac5b, 0xcf45, + 0xac65, 0xcf52, 0xcefe, 0xcf41, 0x0000, 0x0000, 0x0000, 0x8f7d, + 0xcf44, 0xcefb, 0xcf51, 0xcf61, 0xac60, 0xcf46, 0xcf58, 0x0000, + 0xcefd, 0xcf5f, 0xcf60, 0xcf63, 0xcf5a, 0xcf4b, 0xcf53, 0xac66, + 0xac59, 0xac61, 0xac6d, 0xac56, 0xac58, 0x0000, 0x9547, 0xfcf6, + 0xcf43, 0xac6a, 0xac63, 0xcf5d, 0xcf40, 0xac6c, 0xac67, 0xcf49, + 0x0000, 0x0000, 0xac6b, 0xcf50, 0xcf48, 0xac64, 0xcf5c, 0xcf54, + 0x0000, 0xac5e, 0xcf62, 0xcf47, 0xac5a, 0xcf59, 0xcf4f, 0xac5f, + 0xcf55, 0xac57, 0xcefc, 0xac68, 0xaee3, 0xac5d, 0xcf4e, 0xcf4d, + 0xcf42, 0x9250, 0xcf5e, 0x0000, 0xcf57, 0x0000, 0x8968, 0xac55 +}; + +static const unsigned short big5hkscs_from_unicode_68[] = { + 0x8db6, 0xfcfb, 0xa07d, 0x98fc, 0x8969, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfe4f, 0x0000, 0x0000, + 0x9256, 0x0000, 0xd1ec, 0xaeea, 0xd1ed, 0x0000, 0xd1e1, 0xaedf, + 0xaeeb, 0x0000, 0xd1da, 0xfac9, 0xd1e3, 0xd1eb, 0x93e8, 0xd1d9, + 0xd1f4, 0xaed5, 0xfcf8, 0x0000, 0x0000, 0xd1f3, 0xd1ee, 0x0000, + 0xd1ef, 0xaedd, 0xaee8, 0xd1e5, 0x0000, 0xd1e6, 0xd1f0, 0xd1e7, + 0x0000, 0xd1e2, 0xd1dc, 0xd1dd, 0xd1ea, 0xd1e4, 0x9ce3, 0xfda9, + 0xaed6, 0xaeda, 0xd1f2, 0xd1de, 0xaee6, 0xaee2, 0xfc44, 0x0000, + 0xaee5, 0xaeec, 0xaedb, 0xaee7, 0xd1e9, 0xaee9, 0xaed8, 0x9640, + 0xaed7, 0xd1db, 0x8db8, 0xd1df, 0xaee0, 0xd1f1, 0xd1e8, 0xd1e0, + 0xaee4, 0xaee1, 0x0000, 0xaed9, 0xaedc, 0x9b4a, 0x8fb9, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfcfe, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x896a, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xd5c4, 0x0000, 0xd5b4, 0xd5b5, 0xd5b9, + 0x0000, 0xd5c8, 0xd5c5, 0x0000, 0xd5be, 0xd5bd, 0xb1ed, 0xd5c1, + 0xd5d0, 0xd5b0, 0x0000, 0xd5d1, 0xd5c3, 0xd5d5, 0xd5c9, 0xb1ec, + 0xd5c7, 0xb1e7, 0xb1fc, 0xb1f2, 0x8db9, 0xb1f6, 0xb1f5, 0xd5b1, + 0x917e, 0xd5ce, 0xd5d4, 0xd5cc, 0xd5d3, 0x0000, 0x0000, 0xd5c0, + 0xd5b2, 0xd5d2, 0xd5c2, 0xb1ea, 0xb1f7, 0x0000, 0xd5cb, 0xb1f0, + 0x93f4, 0x0000, 0x0000, 0xd5ca, 0xd5b3, 0xb1f8, 0x0000, 0xb1fa, + 0xd5cd, 0xb1fb, 0xb1e9, 0xd5ba, 0xd5cf, 0x0000, 0xfb7c, 0xb1ef, + 0xb1f9, 0xd5bc, 0xd5c6, 0xd5b7, 0xd5bb, 0xb1f4, 0xd5b6, 0xb1e8, + 0xb1f1, 0xb1ee, 0xd5bf, 0xaede, 0xd9c0, 0xb1eb, 0x93e7, 0x0000, + 0x0000, 0x97ef, 0x0000, 0x0000, 0x0000, 0xfe4a, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xfd45, 0xb1f3, 0x96a5, 0xd9c3, 0xd9d9, + 0xd9ce, 0xb4d6, 0xfee0, 0xb4d1, 0xd9bd, 0xb4d2, 0xd9cd, 0x0000, + 0xd9c6, 0xd9d3, 0xb4ce, 0xd9ab, 0xd9d5, 0xb4c4, 0xd9b3, 0xb4c7, + 0xb4c6, 0x0000, 0xb4d7, 0x0000, 0xd9ad, 0xd9cf, 0xd9d0, 0xb4c9, + 0xb4c5, 0xd9bb, 0x0000, 0xb4d0, 0xd9b6, 0x0000, 0xd9d1, 0xb4cc, + 0xd9c9, 0xd9d6, 0xd9b0, 0xd9b5, 0xd9af, 0x0000, 0xb4cb, 0xd9c2, + 0xddde, 0xd9b1, 0xb4cf, 0xd9ba, 0xd9d2, 0xb4ca, 0xd9b7, 0xd9b4, + 0xd9c5, 0xb4cd, 0xb4c3, 0xb4d9, 0xd9c8, 0xd9c7, 0x0000, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_69[] = { + 0xfd48, 0xfd47, 0xfef2, 0xfe6a, 0xd9ac, 0xb4c8, 0xd9d4, 0xd9bc, + 0xd9be, 0x8dbd, 0xd9cb, 0xd9ca, 0xd9aa, 0xb4d3, 0xb4d5, 0xd9b2, + 0xd9b9, 0xd9c1, 0xb4d4, 0xd9b8, 0xd9c4, 0xd9d7, 0x0000, 0xd9cc, + 0x9ba1, 0x8ca2, 0x9ab7, 0x8efc, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xd9d8, 0x0000, 0x0000, + 0x0000, 0x0000, 0xd9ae, 0x0000, 0x9fa1, 0x0000, 0x0000, 0xddf2, + 0xb7a6, 0x0000, 0xddf0, 0xdddb, 0xdde0, 0xddd9, 0xfd51, 0xddec, + 0xddcb, 0xddd2, 0x0000, 0xddea, 0xddf4, 0xdddc, 0xfaad, 0xddcf, + 0xdde2, 0xdde7, 0xddd3, 0x8dbe, 0xdde4, 0xddd0, 0x89a4, 0x0000, + 0xddd7, 0xddd8, 0xb7a8, 0xddeb, 0xdde9, 0x0000, 0xddcc, 0xddee, + 0x0000, 0xddef, 0xddf1, 0xb7ac, 0xb7a4, 0x9ad9, 0xd5b8, 0xddd4, + 0xdde6, 0xddd5, 0xb7a1, 0xb7b1, 0xdded, 0xb7af, 0xb7ab, 0xddca, + 0xb7a3, 0xfd4e, 0xddcd, 0xb7b0, 0x8dc0, 0xdddd, 0xddc9, 0x97f0, + 0xb7a9, 0xdde1, 0xddd1, 0xb7aa, 0xddda, 0xb77e, 0xb4d8, 0xdde3, + 0xd9bf, 0xddce, 0x93b4, 0xfd44, 0xdde8, 0xb7a5, 0xdde5, 0xb7a2, + 0xdddf, 0xb7ad, 0xddd6, 0xddf3, 0x0000, 0x0000, 0x0000, 0x0000, + 0x9fa7, 0x0000, 0xb7a7, 0xdec6, 0x0000, 0x8dc2, 0xb7ae, 0x0000, + 0x0000, 0x0000, 0x99b6, 0x0000, 0x0000, 0xe24a, 0xe248, 0x0000, + 0xe25e, 0xe246, 0x0000, 0xe258, 0xb77d, 0xba5f, 0xe242, 0xe25d, + 0xfd52, 0xe247, 0xe255, 0xba64, 0xba5d, 0x0000, 0xe25b, 0x8dc1, + 0xe240, 0xe25a, 0x8e46, 0xba6f, 0xe251, 0xe261, 0xba6d, 0xe249, + 0xba5e, 0xe24b, 0xe259, 0xba67, 0xe244, 0xba6b, 0xba61, 0xe24d, + 0xe243, 0xe1fc, 0xa0d1, 0xe257, 0xba68, 0xe260, 0xe1fd, 0xba65, + 0x0000, 0xe253, 0x0000, 0xba66, 0xe245, 0xe250, 0xe24c, 0xe24e, + 0x9fca, 0xba60, 0xe25f, 0xba6e, 0xe24f, 0x0000, 0xe262, 0x0000, + 0x0000, 0xe1fe, 0xe254, 0xba63, 0xba6c, 0xba6a, 0xe241, 0xe256, + 0xba69, 0x92cf, 0x0000, 0xba62, 0xe252, 0x9cf4, 0x8dc4, 0x0000, + 0x0000, 0xe25c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xfd41, 0xe5d5, 0x0000, 0xe5d1, 0xe5cd, 0xe5e1, 0xe5de, + 0xbccd, 0x9b4c, 0x0000, 0xe5e5, 0xe5d4, 0xbcd8, 0xe5db, 0x0000, + 0x0000, 0xe5d0, 0xe5da, 0xbcd5, 0xe5ee, 0x0000, 0xe5eb, 0xe5dd, + 0xe5ce, 0xfd57, 0xfcef, 0xe5e2, 0xe5e4, 0xbcd1, 0xe5d8, 0xe5d3 +}; + +static const unsigned short big5hkscs_from_unicode_6a[] = { + 0xe5ca, 0xbcce, 0xbcd6, 0x9cde, 0xe5e7, 0xbcd7, 0xe5cb, 0xe5ed, + 0xe5e0, 0xe5e6, 0xbcd4, 0xfd42, 0x986c, 0xe5e3, 0x0000, 0xe5ea, + 0x0000, 0xbcd9, 0x0000, 0xbcd3, 0xe5dc, 0xe5cf, 0xe5ef, 0xe5cc, + 0xe5e8, 0xbcd0, 0x97f9, 0xe5d6, 0x9558, 0xe5d7, 0xbccf, 0xbccc, + 0xe5d2, 0xbcd2, 0x0000, 0xbccb, 0x0000, 0xe5e9, 0xe5ec, 0xe5d9, + 0xe9ca, 0x0000, 0x0000, 0x985e, 0xfe7b, 0x94cd, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe9c2, 0x93ee, 0xe9be, 0xbef6, 0x0000, 0x0000, + 0xbeeb, 0xbef0, 0xbeec, 0xe9cc, 0xe9d7, 0xbeea, 0xe9c4, 0xe9cd, + 0xe5df, 0xe9ce, 0x0000, 0x8ca3, 0xbef1, 0xfd5a, 0xe9dd, 0xbef5, + 0xbef8, 0xe9c0, 0x0000, 0xbef4, 0x93f5, 0xe9db, 0xe9dc, 0xe9d2, + 0xe9d1, 0xe9c9, 0x93ef, 0x8eea, 0xe9d3, 0xe9da, 0xe9d9, 0x8f5b, + 0xbeef, 0xbeed, 0xe9cb, 0xe9c8, 0x0000, 0xe9c5, 0xe9d8, 0xbef7, + 0xe9d6, 0xbef3, 0xbef2, 0x8c5e, 0xe9d0, 0x8dc6, 0xe9bf, 0xe9c1, + 0xe9c3, 0xe9d5, 0xe9cf, 0xbeee, 0x0000, 0xe9c6, 0x0000, 0xe9d4, + 0x0000, 0x8dc8, 0x0000, 0x0000, 0x8dc7, 0x0000, 0xe9c7, 0x0000, + 0x0000, 0x0000, 0x93f7, 0x0000, 0x0000, 0x0000, 0xc0cf, 0xed45, + 0xc0c8, 0xecf5, 0x8dc9, 0xed41, 0xc0ca, 0xed48, 0x0000, 0xecfc, + 0x0000, 0xecf7, 0xfbf2, 0x0000, 0xed49, 0xecf3, 0xecfe, 0x9670, + 0xc0d1, 0xed44, 0xed4a, 0xecfd, 0xc0c9, 0xed40, 0xecf4, 0xc0d0, + 0x0000, 0x8dcb, 0xed47, 0xecf9, 0xc0cc, 0xfd5c, 0xecfb, 0xecf8, + 0xc0d2, 0xecfa, 0xc0cb, 0xc0ce, 0xed43, 0xecf6, 0xed46, 0x8f65, + 0xed42, 0x0000, 0x0000, 0x8dcd, 0xc263, 0xefe7, 0xc268, 0xc269, + 0x0000, 0x9da8, 0x94f9, 0xc262, 0xefe6, 0x8dce, 0xefe3, 0xefe4, + 0xc266, 0xefde, 0xefe2, 0xc265, 0x0000, 0xefdf, 0x93ea, 0x0000, + 0x0000, 0x0000, 0xc267, 0xc264, 0x0000, 0xefdd, 0xefe1, 0xefe5, + 0xfd5f, 0x93f0, 0x9fb6, 0xf251, 0xf24e, 0xf257, 0x0000, 0xf256, + 0xf254, 0xf24f, 0x0000, 0xc372, 0x8dcf, 0x0000, 0x0000, 0x0000, + 0x9763, 0xf250, 0xc371, 0xc0cd, 0xf253, 0xc370, 0xf258, 0xf252, + 0xf24d, 0xefe0, 0x0000, 0x0000, 0x0000, 0xc36f, 0x0000, 0xf24c, + 0xf456, 0x0000, 0xf455, 0xf255, 0xc468, 0x0000, 0xf459, 0xf45a, + 0xf454, 0xf458, 0x0000, 0xf453, 0x0000, 0x0000, 0x8dd0, 0x0000, + 0xf5d1, 0xf457, 0xc4e7, 0xc4e5, 0xf5cf, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_6b[] = { + 0xf5d2, 0x0000, 0xf5ce, 0xf5d0, 0xc4e6, 0x93f1, 0x0000, 0x0000, + 0xf6e5, 0xf6e6, 0xc576, 0xf6e4, 0x0000, 0x0000, 0x0000, 0xf7e2, + 0xc5cf, 0xf7e0, 0xf7e1, 0xf8ac, 0x0000, 0x0000, 0xc656, 0xf8f3, + 0xf8f1, 0xf8f2, 0xf8f4, 0x0000, 0x0000, 0xfd62, 0xf9bb, 0x0000, + 0xa4ed, 0xa6b8, 0x0000, 0xaa59, 0x0000, 0xcce9, 0x0000, 0x0000, + 0xcf64, 0x0000, 0x0000, 0x0000, 0xd1f5, 0xd1f7, 0x0000, 0xd1f6, + 0x0000, 0xd1f8, 0xb1fd, 0xd5d7, 0xd1f9, 0xfd65, 0xd5d6, 0xd5d8, + 0xd5d9, 0xd9da, 0xb4db, 0xd9db, 0xd9dd, 0xb4dc, 0xb4da, 0xd9dc, + 0x0000, 0xddfa, 0xddf8, 0xddf7, 0x0000, 0xddf6, 0xddf5, 0xb7b2, + 0xddf9, 0xba70, 0xe263, 0xe265, 0xba71, 0xe264, 0xbcdb, 0x0000, + 0xbcda, 0xe5f0, 0x9fdb, 0x0000, 0xe9df, 0xe9de, 0xe9e0, 0x93f8, + 0x0000, 0xbef9, 0x0000, 0xed4b, 0xc0d3, 0x0000, 0xefe8, 0xc26a, + 0xf259, 0xc577, 0xa4ee, 0xa5bf, 0xa6b9, 0xa842, 0xaa5a, 0xaa5b, + 0x0000, 0x0000, 0xac6e, 0x0000, 0x0000, 0xd1fa, 0x0000, 0x8bf7, + 0x0000, 0x0000, 0xb7b3, 0x0000, 0xfd66, 0x0000, 0xe6d1, 0xbefa, + 0xc26b, 0xa4ef, 0x8bcf, 0xa6ba, 0x0000, 0x0000, 0xcceb, 0xaa5c, + 0xccea, 0x8dd1, 0xcf65, 0xac6f, 0xcf66, 0x0000, 0xac70, 0x0000, + 0xd1fc, 0xaeee, 0xaeed, 0x0000, 0xd5de, 0xd5dc, 0xd5dd, 0xd5db, + 0x0000, 0xd5da, 0x0000, 0x0000, 0xd9de, 0xd9e1, 0xb4de, 0xd9df, + 0xb4dd, 0xd9e0, 0x0000, 0xddfb, 0x0000, 0x0000, 0xe266, 0xe267, + 0xe268, 0x0000, 0xe5f3, 0xe5f2, 0xbcdc, 0xe5f1, 0xe5f4, 0xe9e1, + 0x0000, 0x0000, 0xe9e2, 0xe9e3, 0x0000, 0xed4c, 0xc0d4, 0xc26c, + 0xf25a, 0x0000, 0xc4e8, 0xc95f, 0x0000, 0xac71, 0xcf67, 0xaeef, + 0x0000, 0x0000, 0xb1fe, 0x0000, 0xb4df, 0xd9e2, 0x0000, 0xb7b5, + 0xb7b4, 0x8dd2, 0x0000, 0xe269, 0xe26a, 0xbcdd, 0xbcde, 0xe9e5, + 0xe9e4, 0xefe9, 0xf7e3, 0xa4f0, 0xc960, 0xa5c0, 0x0000, 0xa843, + 0xcb48, 0x0000, 0xac72, 0xb7b6, 0xa4f1, 0x0000, 0xcf68, 0xac73, + 0xcf69, 0x0000, 0xc0d5, 0xa4f2, 0xfd71, 0x0000, 0xccec, 0x0000, + 0xcf6a, 0xfd6f, 0xd242, 0xd241, 0xd1fe, 0x0000, 0xd1fd, 0xd243, + 0xd240, 0x0000, 0x8dd3, 0xb240, 0xb241, 0x0000, 0x0000, 0xb4e0, + 0xd9e3, 0x0000, 0xd9e4, 0xd9e5, 0x0000, 0x0000, 0x0000, 0xde41, + 0xde42, 0xde40, 0x9fe7, 0xddfd, 0xddfe, 0xb7b7, 0xe26b, 0xe5f7 +}; + +static const unsigned short big5hkscs_from_unicode_6c[] = { + 0xe5f6, 0xe5f5, 0xe5f8, 0xe9e7, 0xe9e6, 0xbefb, 0xe9e8, 0x0000, + 0xc0d6, 0xed4d, 0x0000, 0xefea, 0xf25b, 0xf6e7, 0x0000, 0xa4f3, + 0xa5c2, 0xa5c1, 0x0000, 0xaa5d, 0xc961, 0xc97e, 0xa6bb, 0x0000, + 0xc9f7, 0xcb49, 0xcb4a, 0xaa5e, 0x90bd, 0xcced, 0x0000, 0xac74, + 0xcf6b, 0xcf6c, 0x0000, 0xaef0, 0xaef4, 0xd244, 0xaef3, 0xaef1, + 0xaef2, 0x0000, 0xd5df, 0xb242, 0xb4e3, 0x0000, 0xb4e1, 0xb4e2, + 0xd9e6, 0x9fd0, 0x0000, 0xba72, 0xa4f4, 0x8bd0, 0xc9a1, 0xfd72, + 0xa5c3, 0x9cae, 0x8bd1, 0xc9a4, 0x0000, 0x8adb, 0xa5c6, 0xc9a3, + 0xa5c5, 0xa5c4, 0xa844, 0xc9a2, 0x0000, 0x0000, 0xc9f8, 0x0000, + 0x0000, 0xfae4, 0xc9fc, 0xc9fe, 0xca40, 0xa6c5, 0xa6c6, 0xc9fb, + 0xa6c1, 0x0000, 0xc9f9, 0x0000, 0xc9fd, 0xa6c2, 0x0000, 0xa6bd, + 0x95ce, 0xa6be, 0xfd76, 0xa6c4, 0xc9fa, 0xa6bc, 0xa845, 0xa6bf, + 0xa6c0, 0xa6c3, 0x0000, 0x0000, 0x0000, 0xcb5b, 0xcb59, 0xcb4c, + 0xa851, 0xcb53, 0xa84c, 0xcb4d, 0x0000, 0xcb55, 0xfb62, 0xcb52, + 0xa84f, 0xcb51, 0xa856, 0xcb5a, 0xa858, 0x8dd4, 0xa85a, 0x0000, + 0xcb4b, 0xfd78, 0xa84d, 0xcb5c, 0x0000, 0xa854, 0xa857, 0x8ee3, + 0xcd45, 0xa847, 0xa85e, 0xa855, 0xcb4e, 0xa84a, 0xa859, 0xcb56, + 0xa848, 0xa849, 0xcd43, 0xcb4f, 0xa850, 0xa85b, 0xcb5d, 0xcb50, + 0xa84e, 0x0000, 0xa853, 0xccee, 0xa85c, 0xcb57, 0xa852, 0x0000, + 0xa85d, 0xa846, 0xcb54, 0xa84b, 0xfdb7, 0xcd44, 0x0000, 0x9076, + 0x0000, 0x0000, 0x98c6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8dd5, 0xaa6a, 0xaa7a, 0xccf5, 0xaa71, 0x97d1, + 0xcd4b, 0xaa62, 0x9eb6, 0xaa65, 0xcd42, 0x0000, 0xccf3, 0xccf7, + 0xaa6d, 0xaa6f, 0xccfa, 0xaa76, 0xaa68, 0xaa66, 0xaa67, 0xaa75, + 0xcd47, 0xaa70, 0xccf9, 0xccfb, 0xaa6e, 0xaa73, 0xccfc, 0xcd4a, + 0x0000, 0xac75, 0xaa79, 0xfac7, 0xaa63, 0xcd49, 0xa042, 0xcd4d, + 0xccf8, 0xcd4f, 0xcd40, 0xaa6c, 0xccf4, 0xaa6b, 0xaa7d, 0xaa72, + 0x0000, 0xccf2, 0xcf75, 0xaa78, 0xaa7c, 0xcd41, 0xcd46, 0x9873, + 0xaa7e, 0xaa77, 0xaa69, 0xaa5f, 0x0000, 0xaa64, 0x0000, 0xccf6, + 0xaa60, 0xcd4e, 0x9ffc, 0xccf0, 0xccef, 0xccfd, 0xccf1, 0xaa7b, + 0xaef5, 0xaa74, 0xccfe, 0xaa61, 0x0000, 0xaca6, 0x0000, 0x0000, + 0x0000, 0xcd4c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8ca5 +}; + +static const unsigned short big5hkscs_from_unicode_6d[] = { + 0xcf7c, 0xcfa1, 0x8dd7, 0xcfa4, 0xcf77, 0x92fb, 0x8dd8, 0xcfa7, + 0xcfaa, 0xcfac, 0xcf74, 0xac76, 0xac7b, 0xd249, 0xacad, 0xcfa5, + 0xcfad, 0xcf7b, 0xcf73, 0x0000, 0x0000, 0x0000, 0xd264, 0xac7e, + 0xcfa2, 0xcf78, 0xcf7a, 0xaca5, 0x0000, 0xcf7d, 0xac7d, 0xcf70, + 0xcfa8, 0x0000, 0xcfab, 0x0000, 0x944f, 0xac7a, 0x8dd9, 0xaca8, + 0xcf6d, 0xacaa, 0xac78, 0xacae, 0xcfa9, 0xcf6f, 0xacab, 0xd25e, + 0xcd48, 0xac7c, 0xac77, 0xcf76, 0xcf6e, 0xacac, 0xaca4, 0xcfa3, + 0xaca9, 0xaca7, 0xcf79, 0xaca1, 0xcf71, 0xaca2, 0xaca3, 0xcf72, + 0xcfa6, 0xac79, 0xcf7e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x896b, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x97ce, + 0xd24c, 0xaefd, 0xaf43, 0xfaf3, 0xfdae, 0x0000, 0xd255, 0xd25b, + 0xd257, 0xd24a, 0xd24d, 0xd246, 0xd247, 0xaf4a, 0xaefa, 0xd256, + 0xd25f, 0xaf45, 0xaef6, 0x0000, 0xaf40, 0xd24e, 0xaf42, 0xd24f, + 0xd259, 0xfbaf, 0x92b7, 0x0000, 0xaf44, 0xd268, 0xd248, 0xaefc, + 0xaefb, 0xaf48, 0xd245, 0xd266, 0xd25a, 0xd267, 0xd261, 0xd253, + 0xd262, 0x8dda, 0xd25c, 0xd265, 0xd263, 0xaf49, 0xd254, 0xaef9, + 0xaef8, 0xaf41, 0xaf47, 0xd260, 0xaf46, 0xd251, 0xb243, 0x9c5a, + 0xd269, 0xd250, 0xd24b, 0xaefe, 0xaf4b, 0xaef7, 0xfdad, 0xd258, + 0xd25d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8ddc, 0x9444, 0x0000, 0x0000, + 0x0000, 0x0000, 0xb265, 0xd5e1, 0xd5e5, 0x0000, 0xb252, 0xb250, + 0x0000, 0x8ddd, 0xb247, 0xd5e3, 0xd5e2, 0xb25b, 0x0000, 0xd5e8, + 0xb255, 0xa0d6, 0xd5fa, 0xd647, 0xb244, 0xd5f7, 0xd5f0, 0xb267, + 0xd5e0, 0x0000, 0xd5fc, 0x0000, 0xb264, 0xb258, 0xb263, 0xb24e, + 0xd5ec, 0xd5fe, 0xd5f6, 0xb24f, 0xb249, 0xd645, 0x0000, 0xd5fd, + 0xd640, 0xb251, 0xb259, 0xd642, 0xd5ea, 0xd5fb, 0xd5ef, 0xd644, + 0xb25e, 0xb246, 0xb25c, 0xd5f4, 0xd5f2, 0xd5f3, 0xb253, 0xd5ee, + 0xd5ed, 0xb248, 0xd5e7, 0xd646, 0xb24a, 0xd5f1, 0xb268, 0x0000, + 0xb262, 0xd5e6, 0xb25f, 0xb25d, 0xb266, 0xd5f8, 0xb261, 0xd252, + 0xd5f9, 0xb260, 0xd641, 0xb245, 0xd5f5, 0xb257, 0xd5e9, 0xb256, + 0x0000, 0xb254, 0xb24c, 0xb24b, 0xd9e7, 0xd643, 0x8c41, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_6e[] = { + 0xd5eb, 0x0000, 0x97d5, 0xd9fc, 0x944a, 0xb24d, 0x0000, 0x0000, + 0x0000, 0x0000, 0x944d, 0x0000, 0x0000, 0x0000, 0x0000, 0x97cb, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8dde, 0x0000, 0x0000, + 0x8ddf, 0xb541, 0xb25a, 0xb4ee, 0xd9f6, 0xfdb8, 0x0000, 0xd9ea, + 0xb4eb, 0xb4e7, 0xda49, 0xb4ed, 0xb4f1, 0xb4ec, 0xb4f5, 0xda4d, + 0xda44, 0x8de0, 0xfef9, 0xd9f1, 0xb4fa, 0xb4f4, 0xd9fd, 0xfdbb, + 0xda4a, 0xda43, 0xb4e8, 0xd9f7, 0xb4f7, 0xda55, 0xda56, 0x0000, + 0xb4e5, 0xda48, 0xb4f9, 0xd9fb, 0xd9ed, 0xd9ee, 0xb4fd, 0xd9f2, + 0xd9f9, 0xd9f3, 0x0000, 0xb4fb, 0xb544, 0xd9ef, 0xd9e8, 0xd9e9, + 0x0000, 0xd9eb, 0xb4ea, 0xd9f8, 0x0000, 0xb4f8, 0xb542, 0xfdc0, + 0xfcf9, 0xd9fa, 0xda53, 0xda4b, 0xb4e6, 0xda51, 0xb4f2, 0x0000, + 0xb4f0, 0xfb7e, 0xda57, 0xb4ef, 0xda41, 0xd9f4, 0xd9fe, 0xb547, + 0xda45, 0xda42, 0xd9f0, 0xb543, 0xda4f, 0xda4c, 0xda54, 0xb4e9, + 0xda40, 0xb546, 0x0000, 0xda47, 0x0000, 0x0000, 0xb4f3, 0xb4f6, + 0x0000, 0xda46, 0xb545, 0xd9f5, 0xd5e4, 0x0000, 0x92b3, 0xda50, + 0xda4e, 0xda52, 0x0000, 0x0000, 0xfdaf, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8de1, 0x0000, + 0xd9ec, 0xb540, 0x0000, 0x95d3, 0x0000, 0xde61, 0xde60, 0xde46, + 0xb7bd, 0x0000, 0xde5f, 0xde49, 0xde4a, 0x0000, 0xb7c7, 0xde68, + 0xb7c2, 0xde5e, 0x89c1, 0xde43, 0xb7c8, 0xb7be, 0xde52, 0xde48, + 0xde4b, 0xde63, 0xb7b8, 0xde6a, 0xde62, 0xb7c1, 0xde57, 0xb7cc, + 0x0000, 0x0000, 0xb7cb, 0xb7c5, 0x0000, 0x0000, 0xde69, 0xb7b9, + 0xde55, 0xde4c, 0xde59, 0xde65, 0xb7cd, 0xfd68, 0xb7bb, 0xde54, + 0x9cb7, 0xde4d, 0xb7c4, 0x8de3, 0xb7c3, 0xde50, 0xde5a, 0xde64, + 0xde47, 0xde51, 0xb7bc, 0xde5b, 0xb7c9, 0xb7c0, 0xde4e, 0xb7bf, + 0xde45, 0xde53, 0xde67, 0xb4fe, 0xbab0, 0xde56, 0xe26c, 0xde58, + 0xde66, 0xb7c6, 0xde4f, 0xb7ba, 0xb7ca, 0xbcf0, 0xde44, 0x0000, + 0xde5d, 0xfac0, 0x8de5, 0xfa64, 0xde5c, 0x8947, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8de4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8de7, 0x8de8, 0x0000, 0xe2aa, 0xbaad, 0xe27d, 0xe2a4, 0xbaa2, + 0x0000, 0xe26e, 0xbaaf, 0x0000, 0xba77, 0xe26d, 0xe2b0, 0xbab1, + 0xe271, 0xe2a3, 0xfdc7, 0xe273, 0xe2b3, 0xe2af, 0xba75, 0xbaa1 +}; + +static const unsigned short big5hkscs_from_unicode_6f[] = { + 0xe653, 0xbaae, 0xba7d, 0xe26f, 0xfdb0, 0xe2ae, 0xbaa3, 0xe2ab, + 0xe2b8, 0xe275, 0xe27e, 0x9445, 0x97d6, 0xe2b6, 0xe2ac, 0xba7c, + 0x0000, 0x0000, 0xe27c, 0xba76, 0xba74, 0xbaa8, 0xfcc6, 0x9844, + 0xe27a, 0xe277, 0xe278, 0x0000, 0xe2b2, 0x0000, 0xe2b7, 0xe2b5, + 0xba7a, 0xe2b9, 0xba7e, 0xbaa7, 0x8de9, 0xe270, 0xe5fa, 0xe279, + 0x0000, 0xba78, 0xbaac, 0xbaa9, 0xba7b, 0xe2a5, 0xe274, 0xbaaa, + 0xe2a7, 0xbaa4, 0xbaa6, 0xba73, 0x8dea, 0xe2a9, 0xe2a1, 0xe272, + 0xbaa5, 0xe2b1, 0xe2b4, 0xe27b, 0xe2a8, 0xfe50, 0xba79, 0xbcdf, + 0xe2a6, 0xe5f9, 0x0000, 0xe2ad, 0xfdcc, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe276, 0xe644, + 0xe64e, 0xbce2, 0xe64d, 0xe659, 0xbce4, 0xe64b, 0x9da7, 0xe64f, + 0xbcef, 0x0000, 0xe646, 0xbce7, 0xfdcd, 0xe652, 0xe9f0, 0xbcf3, + 0xbcf2, 0xe654, 0xe643, 0xe65e, 0xbced, 0x0000, 0xbce3, 0xe657, + 0x0000, 0xe65b, 0xe660, 0xe655, 0xe649, 0xbce6, 0xbce9, 0xbcf1, + 0xbcec, 0x0000, 0xe64c, 0xe2a2, 0xfdcf, 0x0000, 0xe648, 0xe65f, + 0xbce8, 0x95d2, 0xbceb, 0xe661, 0xbce0, 0xe656, 0xe5fb, 0xe65c, + 0xc0df, 0x8ded, 0xe64a, 0x0000, 0xbce1, 0xe645, 0xbce5, 0xe5fc, + 0xbaab, 0xe641, 0xfcba, 0xe65a, 0xe642, 0xe640, 0xbcea, 0x0000, + 0xe658, 0x0000, 0xe5fe, 0xe651, 0xe650, 0xe65d, 0xe647, 0xbcee, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfdc5, 0xe9f3, 0xfdd2, + 0xbf49, 0xbefe, 0xea40, 0xe9eb, 0xbf41, 0xe9f7, 0xbf48, 0xbf43, + 0xe9f5, 0xed4f, 0xe9fb, 0xea42, 0xe9fa, 0xe9e9, 0xe9f8, 0xea44, + 0xea46, 0xbefd, 0xea45, 0xbf44, 0xbf4a, 0x9cdc, 0xbf47, 0x0000, + 0xe9fe, 0xbf46, 0xe9f9, 0x95cf, 0xe9ed, 0xe9f2, 0x8dee, 0xe9fd, + 0xbf45, 0xbf42, 0xbefc, 0xbf40, 0xe9f1, 0x0000, 0xe5fd, 0xe9ec, + 0xe9ef, 0xea41, 0xe9f4, 0xe9ea, 0xed4e, 0xea43, 0xe9ee, 0xe9fc, + 0x0000, 0x0000, 0x0000, 0xfdd4, 0xed51, 0xc0e3, 0x0000, 0x0000, + 0xc0d7, 0x96ec, 0x96eb, 0xc0db, 0xed53, 0xed59, 0xed57, 0xc0d9, + 0xc0da, 0xc0e1, 0xed5a, 0xed52, 0xc0dc, 0x0000, 0xed56, 0xed55, + 0xed5b, 0xc0e2, 0x0000, 0xc0dd, 0xc0e0, 0xed54, 0xc0e4, 0xc0de, + 0xc0e5, 0xc0d8, 0xed58, 0x0000, 0xed50, 0x0000, 0x90b6, 0xeff7, + 0xfdc3, 0x0000, 0xc271, 0xeff4, 0xeff6, 0x0000, 0xc26f, 0xeff2 +}; + +static const unsigned short big5hkscs_from_unicode_70[] = { + 0xeff3, 0xefee, 0x0000, 0x98ab, 0xe9f6, 0xefef, 0xc270, 0xefeb, + 0x0000, 0xc26d, 0xeff8, 0xc26e, 0xefec, 0xefed, 0xeff1, 0xc273, + 0x0000, 0xc272, 0x0000, 0x0000, 0xeff0, 0xc378, 0xf25f, 0xf265, + 0xc379, 0xf25c, 0xc376, 0xc373, 0xf267, 0xc377, 0x96ee, 0xc374, + 0xf25e, 0xf261, 0xf262, 0xf263, 0xf266, 0x0000, 0xeff5, 0xf25d, + 0xc375, 0xf264, 0xf268, 0xf260, 0x8df4, 0x0000, 0x0000, 0xf45d, + 0xc46a, 0xf460, 0xc46b, 0xf468, 0xf45f, 0xf45c, 0x0000, 0xf45e, + 0xf462, 0xf465, 0xf464, 0xf467, 0xf45b, 0x0000, 0xc469, 0xf463, + 0xf466, 0xf469, 0xf461, 0xf5d3, 0xf5d4, 0xf5d8, 0xf5d9, 0x0000, + 0xf5d6, 0xf5d7, 0xf5d5, 0xfde0, 0xc4e9, 0x8c67, 0x0000, 0x0000, + 0x8df6, 0xc578, 0xf6eb, 0x0000, 0x8df7, 0xf6e8, 0xf6e9, 0xf6ea, + 0xc579, 0x0000, 0xf7e5, 0xf7e4, 0x8ffa, 0xf8af, 0xc5f4, 0xf8ad, + 0xf8b0, 0xf8ae, 0xf8f5, 0xc657, 0xc665, 0xf9a3, 0xf96c, 0x97d0, + 0xf9a2, 0xf9d0, 0xf9d1, 0xa4f5, 0x8bd2, 0x0000, 0x0000, 0x8df8, + 0xa6c7, 0xca41, 0x0000, 0x0000, 0xcb5e, 0x90d9, 0xa85f, 0x8c47, + 0xa862, 0xfaf0, 0xcb5f, 0x0000, 0xa860, 0xa861, 0xfde1, 0x8df9, + 0x0000, 0xfde3, 0xcd58, 0xcd5a, 0xcd55, 0xcd52, 0xcd54, 0x0000, + 0x0000, 0x8dfa, 0xaaa4, 0xfb63, 0x0000, 0x0000, 0xaaa2, 0x90a6, + 0x0000, 0xcd56, 0xaaa3, 0xcd53, 0xcd50, 0xaaa1, 0xcd57, 0x0000, + 0xcd51, 0xaaa5, 0xcd59, 0x0000, 0x0000, 0x0000, 0x0000, 0xcfaf, + 0x9970, 0xcfb3, 0x0000, 0x91eb, 0xacb7, 0x9770, 0x986f, 0xfde2, + 0x0000, 0xcfb6, 0x0000, 0xacaf, 0xacb2, 0xacb4, 0xacb6, 0xacb3, + 0xcfb2, 0xcfb1, 0x0000, 0xacb1, 0xcfb4, 0xcfb5, 0x0000, 0xcfae, + 0xacb5, 0x98f2, 0xacb0, 0x9afc, 0x896c, 0xfdfd, 0xcfb0, 0x0000, + 0x995e, 0x0000, 0x0000, 0x0000, 0x95bd, 0xd277, 0xd278, 0xd279, + 0xaf50, 0x0000, 0xaf4c, 0xd26e, 0xfde4, 0xd276, 0xd27b, 0xaf51, + 0x91e6, 0xd26c, 0xd272, 0xd26b, 0xd275, 0xfde5, 0xfde6, 0xd271, + 0xaf4d, 0xaf4f, 0xd27a, 0x0000, 0xd26a, 0xd26d, 0xd273, 0xfde7, + 0xd274, 0xd27c, 0xd270, 0x0000, 0xaf4e, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xb26d, + 0xd64e, 0x9454, 0x0000, 0xd650, 0xd64c, 0x99b8, 0xd658, 0xd64a, + 0xd657, 0xb269, 0xd648, 0xda5b, 0xd652, 0xb26c, 0x97e9, 0xd653 +}; + +static const unsigned short big5hkscs_from_unicode_71[] = { + 0xd656, 0x0000, 0xd65a, 0x0000, 0xd64f, 0x9346, 0xd654, 0x0000, + 0x0000, 0xb26a, 0xb26b, 0xd659, 0xd64d, 0xd649, 0xd65b, 0x0000, + 0xd651, 0x0000, 0x0000, 0xd655, 0x0000, 0x0000, 0x0000, 0xd64b, + 0x0000, 0xb548, 0xb549, 0xda65, 0xb54f, 0x9863, 0xda59, 0xda62, + 0xda58, 0xb54c, 0xda60, 0xda5e, 0x0000, 0xda5f, 0xb54a, 0x0000, + 0xda63, 0x95bc, 0x0000, 0xfded, 0xfdf7, 0x0000, 0xda5c, 0xda5a, + 0xb54b, 0xda5d, 0xda61, 0x9870, 0x96f6, 0x8ea9, 0xb54d, 0x0000, + 0x0000, 0x0000, 0xda64, 0x9451, 0x0000, 0x0000, 0x8e43, 0x0000, + 0x8b5a, 0xde70, 0xde77, 0xde79, 0xdea1, 0xfdee, 0xb7da, 0xde6b, + 0x0000, 0xb7d2, 0xfdf0, 0xde7a, 0xb7d7, 0xdea2, 0xb7ce, 0xfdf4, + 0xde7d, 0x9bf5, 0xde6d, 0xde7e, 0xde6c, 0x0000, 0xb7dc, 0x0000, + 0xde78, 0xb7cf, 0xdea3, 0x0000, 0xb7d4, 0xde71, 0xb7d9, 0xde7c, + 0xde6f, 0xde76, 0xde72, 0xde6e, 0xb7d1, 0xb7d8, 0xb7d6, 0xb7d3, + 0xb7db, 0xb7d0, 0xde75, 0x977e, 0xb7d5, 0x0000, 0xfdf1, 0x0000, + 0xde7b, 0x9bd5, 0xde73, 0x9ac3, 0x0000, 0x97c8, 0xa0db, 0x91d0, + 0xde74, 0x0000, 0x9fe4, 0xe2c1, 0x8fdd, 0xbab4, 0x91e9, 0x0000, + 0xe2bd, 0xe2c3, 0xe2bf, 0x0000, 0xbab6, 0xe2be, 0xe2c2, 0xe2ba, + 0x98e0, 0xe2bc, 0xbab5, 0x0000, 0x92ca, 0x0000, 0x9857, 0xe2c0, + 0xe2bb, 0x8c51, 0xbab7, 0x0000, 0xbab2, 0x0000, 0xfdeb, 0xe2c4, + 0x9b49, 0xbab3, 0xe667, 0xe664, 0xe670, 0xe66a, 0xe66c, 0xbcf4, + 0xe666, 0xe66e, 0x9d76, 0x9eaf, 0xe66d, 0xe66b, 0x0000, 0xe671, + 0xbcf7, 0xe668, 0xe66f, 0x0000, 0xbcf5, 0x9ccc, 0x0000, 0xe663, + 0xe665, 0xbcf6, 0xe662, 0xe672, 0xfdea, 0xe669, 0x0000, 0x8df1, + 0xea4a, 0xbf51, 0xfdfb, 0x0000, 0xea55, 0xea53, 0xbf4b, 0xea49, + 0xea4c, 0xea4d, 0xea48, 0xbf55, 0xbf56, 0xea47, 0xea56, 0xea51, + 0xbf4f, 0xbf4c, 0xea50, 0xea4e, 0x0000, 0x0000, 0xbf52, 0xea52, + 0xbf4d, 0x8e53, 0xbf4e, 0x0000, 0xea4f, 0xbf50, 0xea4b, 0x0000, + 0xea54, 0xbf53, 0xea57, 0xea58, 0xbf54, 0xfacf, 0x0000, 0xc0e7, + 0xc0ee, 0xed5c, 0xed62, 0x0000, 0xed60, 0xc0ea, 0xc0e9, 0xc0e6, + 0xed5e, 0x0000, 0x0000, 0x96f9, 0xc0ec, 0xc0eb, 0xc0e8, 0x0000, + 0xed61, 0xed5d, 0xed5f, 0x0000, 0xc0ed, 0x98bf, 0x9e49, 0x0000, + 0xc277, 0xeffb, 0x0000, 0xc274, 0xc275, 0xeffd, 0xc276, 0xeffa +}; + +static const unsigned short big5hkscs_from_unicode_72[] = { + 0x8ca7, 0xeff9, 0xf26c, 0xeffc, 0x0000, 0xf26d, 0xc37a, 0xf26b, + 0x0000, 0x9bca, 0xf26a, 0x0000, 0xf269, 0xc37b, 0xfdfe, 0x92dc, + 0xc46c, 0x0000, 0x0000, 0xf46a, 0xf46b, 0xfe41, 0x91cc, 0x91e2, + 0x0000, 0xf5dc, 0xf5db, 0xc4ea, 0x0000, 0xf5da, 0xf6ec, 0xf6ed, + 0x0000, 0x0000, 0xf7e6, 0xf8b1, 0xfe44, 0x0000, 0xf8f6, 0xf9bc, + 0xc679, 0xf9c6, 0xa4f6, 0x8bd3, 0xaaa6, 0xaaa7, 0xfe47, 0x0000, + 0xacb8, 0x0000, 0x0000, 0x0000, 0x0000, 0xc0ef, 0xa4f7, 0x0000, + 0xaaa8, 0xaf52, 0xb7dd, 0xa4f8, 0x0000, 0xb26e, 0xbab8, 0xc962, + 0xfe48, 0xcfb7, 0xd27d, 0x0000, 0xe2c5, 0x0000, 0xc0f0, 0xa4f9, + 0xaaa9, 0xcfb8, 0xcfb9, 0xda66, 0xb550, 0x0000, 0x0000, 0xdea4, + 0xa0e4, 0x0000, 0xb7de, 0xe2c6, 0x0000, 0xfe4b, 0xbcf8, 0xfe4c, + 0xc37c, 0xa4fa, 0xda67, 0xa4fb, 0x8dbf, 0xa6c9, 0xca42, 0xa6c8, + 0xa865, 0xa864, 0xa863, 0xcb60, 0x0000, 0x0000, 0x9e78, 0xaaaa, + 0x0000, 0xaaab, 0xcd5b, 0x0000, 0xcfba, 0x0000, 0xcfbd, 0xacba, + 0xcfbb, 0x0000, 0xacb9, 0xcfbc, 0xacbb, 0x0000, 0xd2a2, 0xd2a1, + 0xd27e, 0xaf53, 0x0000, 0xd65d, 0xd65e, 0xb26f, 0xd65c, 0xd65f, + 0xb552, 0xb270, 0xfe51, 0x0000, 0xb551, 0xda6b, 0xda6a, 0x9456, + 0xda68, 0xda69, 0x0000, 0xda6c, 0xdea6, 0xdea5, 0xdea9, 0x9d61, + 0xdea8, 0xdea7, 0xbab9, 0xe2c9, 0x9457, 0xe2c8, 0xbaba, 0xe2c7, + 0xe673, 0x0000, 0xe674, 0xbcf9, 0x0000, 0xea59, 0xea5a, 0x9966, + 0x0000, 0xf272, 0xc37d, 0xf271, 0xf270, 0xf26e, 0xf26f, 0xc4eb, + 0xf46c, 0xf6ee, 0xf8f7, 0x0000, 0xa4fc, 0x8bd5, 0xc9a5, 0xa5c7, + 0xc9a6, 0x0000, 0xa069, 0x0000, 0xca43, 0xca44, 0x0000, 0x0000, + 0x0000, 0x0000, 0xcb66, 0x0000, 0x0000, 0xcb62, 0x0000, 0xcb61, + 0xaaac, 0xcb65, 0xa867, 0xcb63, 0xa866, 0xcb67, 0xcb64, 0x0000, + 0x0000, 0xcd5f, 0xcfbe, 0xcd5d, 0xcd64, 0x98b4, 0xaaad, 0x0000, + 0xaab0, 0xcd65, 0xcd61, 0x0000, 0xcd62, 0x0000, 0xcd5c, 0xaaaf, + 0xcd5e, 0xaaae, 0xcd63, 0x0000, 0xcd60, 0x0000, 0x0000, 0xcfc2, + 0xacbd, 0xacbe, 0xa049, 0xcfc5, 0xcfbf, 0x0000, 0xcfc4, 0x0000, + 0xcfc0, 0xacbc, 0xcfc3, 0xcfc1, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xd2a8, 0xd2a5, 0x0000, 0xd2a7, 0xaf58, + 0xaf57, 0xaf55, 0xd2a4, 0xd2a9, 0xaf54, 0xaf56, 0xd2a6, 0xd667 +}; + +static const unsigned short big5hkscs_from_unicode_73[] = { + 0xd2a3, 0xd2aa, 0xa04c, 0x0000, 0x9e65, 0x0000, 0x0000, 0xd662, + 0xd666, 0x0000, 0xd665, 0xda6e, 0xda79, 0x0000, 0x0000, 0xd668, + 0x98b5, 0xd663, 0xda6d, 0xb274, 0x0000, 0x0000, 0xb273, 0xd661, + 0xd664, 0xb275, 0x0000, 0xb272, 0xb271, 0xd660, 0xd669, 0x0000, + 0x0000, 0x0000, 0xda70, 0xda77, 0x0000, 0xb554, 0xda76, 0xda73, + 0xfe58, 0xb556, 0xfe52, 0xfe53, 0xa065, 0xda75, 0xfe59, 0x0000, + 0xda6f, 0xda71, 0xda74, 0xda72, 0xb555, 0xda78, 0xb553, 0xb7df, + 0x98b7, 0x98b8, 0xdead, 0xdeac, 0xdeaa, 0x0000, 0xb7e2, 0xb7e1, + 0xdeae, 0x98ba, 0xdeab, 0xe2ca, 0xbabb, 0xb7e0, 0x0000, 0x0000, + 0x98bb, 0xdeb0, 0xdeaf, 0x0000, 0xe2cd, 0xe2cb, 0xbcfa, 0x9fbc, + 0xbabc, 0xe2cc, 0xe676, 0x0000, 0x0000, 0x0000, 0x0000, 0xbcfb, + 0xe675, 0xe67e, 0xe67d, 0xe67b, 0x0000, 0xe67a, 0xe677, 0xe678, + 0xe679, 0xe67c, 0xe6a1, 0x0000, 0x0000, 0xea5f, 0xea5c, 0xea5d, + 0xbf57, 0xea5b, 0xea61, 0xea60, 0xea5e, 0x0000, 0xed64, 0xed65, + 0xc0f1, 0xa04a, 0xc0f2, 0xed63, 0x9ec7, 0xc279, 0xeffe, 0xc278, + 0xc37e, 0x0000, 0xc3a1, 0xc46d, 0xf46e, 0xf46d, 0xf5dd, 0xf6ef, + 0xc57a, 0xf7e8, 0xf7e7, 0xf7e9, 0xa5c8, 0xcfc6, 0xaf59, 0xb276, + 0xd66a, 0xa5c9, 0xc9a7, 0xa4fd, 0x8ca9, 0x0000, 0xca45, 0x98ae, + 0x0000, 0x0000, 0xcb6c, 0xcb6a, 0xcb6b, 0xcb68, 0xa868, 0xcb69, + 0x92d6, 0x0000, 0x0000, 0x0000, 0xfae1, 0xcd6d, 0x91d4, 0xaab3, + 0xcd6b, 0xcd67, 0xcd6a, 0x0000, 0xcd66, 0xaab5, 0xcd69, 0xfade, + 0xaab2, 0xaab1, 0xfe5b, 0xaab4, 0xcd6c, 0xcd68, 0x0000, 0x0000, + 0x0000, 0x0000, 0xacc2, 0xacc5, 0xcfce, 0xcfcd, 0xcfcc, 0xacbf, + 0xcfd5, 0xcfcb, 0x8c53, 0xacc1, 0xd2af, 0x0000, 0xcfd2, 0xcfd0, + 0xacc4, 0x0000, 0xcfc8, 0xcfd3, 0x0000, 0xcfca, 0xcfd4, 0xcfd1, + 0xcfc9, 0xfe5e, 0xacc0, 0xcfd6, 0xcfc7, 0xacc3, 0xfbd7, 0xfe5a, + 0x94c5, 0x0000, 0xd2b4, 0xd2ab, 0xd2b6, 0xfaca, 0xd2ae, 0xd2b9, + 0xd2ba, 0xd2ac, 0xd2b8, 0xd2b5, 0xd2b3, 0xd2b7, 0xaf5f, 0x0000, + 0xaf5d, 0x98c1, 0x975c, 0xd2b1, 0xfe74, 0xd2ad, 0x9773, 0xd2b0, + 0xd2bb, 0xd2b2, 0xaf5e, 0xcfcf, 0x0000, 0xaf5a, 0xaf5c, 0xfa46, + 0x0000, 0x0000, 0x0000, 0x9764, 0xd678, 0xd66d, 0xd66b, 0xfe68, + 0xd66c, 0x964e, 0xd673, 0x9765, 0xd674, 0xd670, 0xb27b, 0xd675 +}; + +static const unsigned short big5hkscs_from_unicode_74[] = { + 0xd672, 0xd66f, 0x8c5a, 0xb279, 0xd66e, 0xb277, 0xb27a, 0xd671, + 0xd679, 0xaf5b, 0xb278, 0xd677, 0xd676, 0xb27c, 0x0000, 0x0000, + 0x0000, 0x89a1, 0x95fa, 0x0000, 0x92d4, 0xfe69, 0xda7e, 0xfb45, + 0x0000, 0x98c8, 0xdaa1, 0xb560, 0x90ef, 0xdaa7, 0x98c9, 0x98ca, + 0xdaa9, 0xdaa2, 0xb55a, 0xdaa6, 0xdaa5, 0xb55b, 0xb561, 0x0000, + 0xb562, 0xdaa8, 0xb558, 0xda7d, 0xda7b, 0xdaa3, 0xda7a, 0xb55f, + 0xda7c, 0xdaa4, 0xdaaa, 0xb559, 0xb55e, 0xb55c, 0xb55d, 0x946d, + 0x94b7, 0xfe6c, 0xb557, 0x0000, 0x946b, 0x0000, 0x0000, 0xb7e9, + 0xdeb7, 0xb7e8, 0xdebb, 0x92fc, 0xdeb1, 0x95eb, 0xdebc, 0xfe73, + 0x976e, 0xfe5f, 0xdeb2, 0xdeb3, 0x0000, 0xdebd, 0xdeba, 0xdeb8, + 0xdeb9, 0xdeb5, 0xdeb4, 0xfdbd, 0xdebe, 0xb7e5, 0x92d5, 0xdeb6, + 0x0000, 0xb7ea, 0xb7e4, 0xb7eb, 0xfe6f, 0xfeb9, 0xb7e7, 0xb7e6, + 0xfe71, 0x0000, 0xe2ce, 0xbabe, 0xbabd, 0xfbbb, 0x0000, 0xe2d3, + 0xa0d5, 0xbcfc, 0xbabf, 0x95fb, 0xfe77, 0xbac1, 0xe2d4, 0xb7e3, + 0xbac0, 0xe2d0, 0xe2d2, 0xe2cf, 0xfe79, 0xe2d1, 0xfe75, 0x0000, + 0x0000, 0xe6ab, 0x945d, 0x0000, 0xe6aa, 0xe6a7, 0xbd40, 0xea62, + 0xbd41, 0xe6a6, 0xfe7c, 0xbcfe, 0x0000, 0xe6a8, 0xe6a5, 0xe6a2, + 0xe6a9, 0xe6a3, 0xe6a4, 0xbcfd, 0x9344, 0x8ea6, 0x0000, 0x0000, + 0xed69, 0x0000, 0xea66, 0x0000, 0xea65, 0xea67, 0x0000, 0xed66, + 0xbf5a, 0x92d3, 0xea63, 0x94b8, 0xbf58, 0x0000, 0xbf5c, 0xbf5b, + 0xea64, 0xea68, 0x0000, 0xbf59, 0xfc71, 0xed6d, 0xc0f5, 0xc27a, + 0xc0f6, 0xc0f3, 0xed6a, 0xed68, 0x0000, 0xed6b, 0x0000, 0xed6e, + 0xc0f4, 0xed6c, 0xed67, 0x0000, 0x975e, 0xf042, 0xf045, 0xf275, + 0xf040, 0x8cad, 0xf46f, 0xf046, 0x0000, 0xc3a2, 0xf044, 0xc27b, + 0xf041, 0xf043, 0xf047, 0xf276, 0x0000, 0xf274, 0x0000, 0x0000, + 0xfea7, 0x0000, 0xc3a3, 0xf273, 0x946a, 0x0000, 0x0000, 0xc46e, + 0x93e3, 0x0000, 0x0000, 0x98cf, 0xc4ed, 0xf6f1, 0xc4ec, 0xf6f3, + 0xf6f0, 0xf6f2, 0xc5d0, 0xf8b2, 0xa5ca, 0xcd6e, 0xd2bc, 0xd2bd, + 0xb27d, 0xdebf, 0xbf5d, 0xc3a4, 0xc57b, 0xf8b3, 0xa5cb, 0xa0d9, + 0xcd6f, 0xfeaa, 0x0000, 0x0000, 0xcfd7, 0x0000, 0xcfd8, 0x0000, + 0xa0bf, 0xa04d, 0xa0b8, 0x0000, 0xd2be, 0xd2bf, 0xb27e, 0xb2a1, + 0xa0ce, 0x0000, 0x0000, 0xdaab, 0x0000, 0xdec2, 0xdec1, 0xdec0 +}; + +static const unsigned short big5hkscs_from_unicode_75[] = { + 0xe2d5, 0x0000, 0xe2d6, 0xe2d7, 0xbac2, 0xa0b7, 0x0000, 0xe6ad, + 0xe6ac, 0x0000, 0x0000, 0xea69, 0xbf5e, 0xbf5f, 0xfea9, 0xed72, + 0xed6f, 0xed70, 0xed71, 0xf049, 0xf048, 0xc27c, 0xf277, 0xf5de, + 0xa5cc, 0x89c3, 0xacc6, 0x0000, 0xb2a2, 0xdec3, 0xfeab, 0xa5cd, + 0x0000, 0xd2c0, 0xb2a3, 0x0000, 0x0000, 0xb563, 0xb564, 0x0000, + 0xa5ce, 0xa5cf, 0xca46, 0xa86a, 0xa869, 0xacc7, 0xcfd9, 0xdaac, + 0xa5d0, 0xa5d1, 0xa5d2, 0xa5d3, 0x9df4, 0x896d, 0x0000, 0xa86b, + 0xa86c, 0xcb6e, 0xcb6d, 0x9c7b, 0x0000, 0xaab6, 0xcd72, 0xcd70, + 0xcd71, 0x0000, 0x98d2, 0x0000, 0x0000, 0x0000, 0x9fa9, 0xcfda, + 0xcfdb, 0x0000, 0xfeb2, 0xaccb, 0xacc9, 0xfeb1, 0xacca, 0xacc8, + 0x0000, 0x97d9, 0x0000, 0xa0c4, 0xaf60, 0x9476, 0x0000, 0x0000, + 0x0000, 0xaf64, 0xaf63, 0xd2c1, 0xaf62, 0xaf61, 0x0000, 0xd2c2, + 0x9978, 0x0000, 0xb2a6, 0xd67b, 0xd67a, 0xb2a4, 0xb2a5, 0xfeb3, + 0x0000, 0x0000, 0xb566, 0xb565, 0xdaae, 0x98d3, 0xfeb4, 0xdaad, + 0xb2a7, 0x0000, 0x98d4, 0x0000, 0x0000, 0x0000, 0xb7ed, 0xdec5, + 0xb7ee, 0xdec4, 0x9fb9, 0x0000, 0x0000, 0xe2d8, 0xe6ae, 0xbd42, + 0xea6a, 0x0000, 0x0000, 0x9471, 0xed73, 0x0000, 0xc3a6, 0xc3a5, + 0x0000, 0x0000, 0xc57c, 0xa5d4, 0xcd73, 0x98d5, 0xfeb8, 0xb2a8, + 0xe2d9, 0xbac3, 0xc6d4, 0x0000, 0xcb6f, 0xcb70, 0x0000, 0x0000, + 0xcd74, 0xaab8, 0xaab9, 0x0000, 0x0000, 0xaab7, 0xfeba, 0x0000, + 0x0000, 0x0000, 0xaccf, 0xacd0, 0xaccd, 0xacce, 0x0000, 0xcfdc, + 0x0000, 0x0000, 0xcfdd, 0xaccc, 0x0000, 0x0000, 0x0000, 0x0000, + 0xd2c3, 0x9e5c, 0xaf68, 0xaf69, 0xfebb, 0xb2ab, 0xd2c9, 0x0000, + 0xaf6e, 0xaf6c, 0xd2ca, 0xd2c5, 0xaf6b, 0xaf6a, 0xaf65, 0xd2c8, + 0xd2c7, 0xd2c4, 0xaf6d, 0xa044, 0xd2c6, 0xaf66, 0x0000, 0xaf67, + 0x98d7, 0x0000, 0xb2ac, 0xd6a1, 0xd6a2, 0xb2ad, 0xd67c, 0xd67e, + 0xd6a4, 0xd6a3, 0xd67d, 0x0000, 0xb2a9, 0xb2aa, 0x0000, 0xdab6, + 0xb56b, 0xb56a, 0xdab0, 0xb568, 0x98d8, 0xdab3, 0xb56c, 0xdab4, + 0xb56d, 0xdab1, 0xb567, 0xb569, 0xdab5, 0x0000, 0xdab2, 0xdaaf, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xded2, 0x0000, 0xdec7, + 0xb7f0, 0xb7f3, 0xb7f2, 0xb7f7, 0xb7f6, 0xded3, 0xded1, 0xdeca, + 0xdece, 0xdecd, 0xb7f4, 0xded0, 0xdecc, 0xded4, 0xdecb, 0xb7f5 +}; + +static const unsigned short big5hkscs_from_unicode_76[] = { + 0xb7ef, 0xb7f1, 0xfebc, 0xdec9, 0x0000, 0x0000, 0x0000, 0x9ffe, + 0xe2db, 0xbac7, 0xe2df, 0xbac6, 0xe2dc, 0xbac5, 0x0000, 0xdec8, + 0xdecf, 0xe2de, 0x0000, 0xbac8, 0xe2e0, 0xe2dd, 0xe2da, 0x0000, + 0x0000, 0xe6b1, 0xe6b5, 0xe6b7, 0xe6b3, 0xe6b2, 0xe6b0, 0xbd45, + 0xbd43, 0xbd48, 0xbd49, 0xe6b4, 0xbd46, 0xe6af, 0xbd47, 0xbac4, + 0xe6b6, 0xbd44, 0x0000, 0x0000, 0xfebd, 0xea6c, 0x0000, 0xea6b, + 0xea73, 0xea6d, 0xea72, 0xea6f, 0xbf60, 0xea71, 0x0000, 0x0000, + 0xbf61, 0x0000, 0xbf62, 0x9ddd, 0xea70, 0xea6e, 0x0000, 0x0000, + 0x9ee1, 0x0000, 0xc0f8, 0xed74, 0x0000, 0x0000, 0xc0f7, 0xed77, + 0xed75, 0xed76, 0x0000, 0x0000, 0xc0f9, 0x98da, 0x9ddf, 0xfebf, + 0xf04d, 0xfebe, 0xc2a1, 0xf04e, 0x9eeb, 0x0000, 0xc27d, 0xf04f, + 0xc27e, 0xf04c, 0xf050, 0x0000, 0xf04a, 0x0000, 0x0000, 0xc3a7, + 0xf278, 0xc3a8, 0xc46f, 0x0000, 0xf04b, 0xc470, 0x9e59, 0xa05c, + 0x0000, 0xc4ee, 0xf5df, 0x0000, 0xc57e, 0xf6f4, 0xc57d, 0xfec0, + 0xf7ea, 0xc5f5, 0xc5f6, 0x9477, 0x98dc, 0xf9cc, 0xfec1, 0x0000, + 0xacd1, 0xcfde, 0x98de, 0xb56e, 0xb56f, 0xa5d5, 0xa6ca, 0xca47, + 0x0000, 0xcb71, 0xa86d, 0x0000, 0xaaba, 0x0000, 0xacd2, 0xacd3, + 0xacd4, 0xd6a6, 0xd2cb, 0xaf6f, 0x0000, 0x0000, 0xb2ae, 0xd6a5, + 0xfec3, 0x0000, 0xdab8, 0xb571, 0x0000, 0xdab7, 0xb570, 0x0000, + 0x0000, 0xded5, 0xbd4a, 0xe6bb, 0xe6b8, 0xe6b9, 0xe6ba, 0x0000, + 0x0000, 0xfec8, 0x0000, 0x0000, 0xed78, 0xfec9, 0xf051, 0x0000, + 0x0000, 0x0000, 0xf471, 0xf470, 0x0000, 0xf6f5, 0xa5d6, 0xcd75, + 0xaf70, 0x0000, 0x0000, 0x0000, 0xb572, 0xded6, 0x0000, 0xfeca, + 0xe2e1, 0x0000, 0xbd4b, 0xea74, 0x0000, 0xf052, 0xf472, 0xa5d7, + 0x0000, 0x0000, 0xaabb, 0xacd7, 0xcfdf, 0xacd8, 0xacd6, 0x0000, + 0xacd5, 0xd2cc, 0xaf71, 0x0000, 0xfecb, 0xaf72, 0xaf73, 0x0000, + 0x0000, 0x0000, 0xb2b0, 0xd6a7, 0xb2af, 0x0000, 0x9fc2, 0x0000, + 0x0000, 0x8c6b, 0xdab9, 0xb2b1, 0xb573, 0xded7, 0xb7f8, 0xb7f9, + 0x0000, 0xbac9, 0x0000, 0xbaca, 0xbd4c, 0xbf64, 0xea75, 0xbf63, + 0x0000, 0xed79, 0xc0fa, 0x0000, 0xf053, 0xf473, 0xa5d8, 0xa86e, + 0xcd78, 0xcd77, 0xaabc, 0xcd76, 0xaabd, 0xcd79, 0x0000, 0xcfe5, + 0xacdb, 0xacda, 0xcfe7, 0xcfe6, 0xacdf, 0x0000, 0xacde, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_77[] = { + 0x0000, 0xacd9, 0x0000, 0xcfe1, 0xcfe2, 0xcfe3, 0x0000, 0xace0, + 0xcfe0, 0xacdc, 0xcfe4, 0xacdd, 0x98c4, 0x0000, 0x94b0, 0x94b1, + 0xd2cf, 0xd2d3, 0xd2d1, 0xd2d0, 0x0000, 0xd2d4, 0x0000, 0x0000, + 0x0000, 0xd2d5, 0xd2d6, 0xd2ce, 0x0000, 0xd2cd, 0xfed1, 0xaf75, + 0xaf76, 0x0000, 0xd2d7, 0xd2d2, 0xa0c1, 0xd6b0, 0xfed2, 0xd2d8, + 0xaf77, 0xaf74, 0x0000, 0xa0cd, 0x0000, 0xd6aa, 0x0000, 0xd6a9, + 0x0000, 0xd6ab, 0xd6ac, 0xd6ae, 0xd6ad, 0xd6b2, 0xb2b5, 0xb2b2, + 0xb2b6, 0xd6a8, 0xb2b7, 0xd6b1, 0xb2b4, 0xd6af, 0xb2b3, 0x0000, + 0xfed3, 0x0000, 0x0000, 0x98e5, 0xdabc, 0xdabe, 0xdaba, 0xdabb, + 0x0000, 0x0000, 0xdabf, 0xdac1, 0xdac2, 0xdabd, 0xdac0, 0xb574, + 0x0000, 0x0000, 0xdedb, 0x0000, 0xdee0, 0xded8, 0xdedc, 0x0000, + 0xfed6, 0xdee1, 0xdedd, 0xb7fa, 0xb843, 0x0000, 0xb7fd, 0xded9, + 0xdeda, 0xbace, 0xb846, 0xb7fe, 0x0000, 0xb844, 0xb7fc, 0xdedf, + 0xb845, 0xdede, 0xb841, 0xb7fb, 0xb842, 0xdee2, 0xe2e6, 0xe2e8, + 0x0000, 0x0000, 0x91e4, 0x0000, 0x0000, 0x0000, 0x0000, 0x8fc7, + 0x94ae, 0xb840, 0x8a4f, 0x94b2, 0xe2e3, 0xbacc, 0xe2e9, 0xbacd, + 0xe2e7, 0xe2e2, 0xe2e5, 0xe2ea, 0xbacb, 0xe2e4, 0x0000, 0xbd4e, + 0xe6bf, 0xe6be, 0x0000, 0xbd51, 0xbd4f, 0xe6bc, 0xbd4d, 0xe6bd, + 0x0000, 0xbd50, 0x0000, 0x8fd4, 0x0000, 0xea7d, 0x0000, 0xeaa1, + 0x98ea, 0xea7e, 0xea76, 0xea7a, 0xea79, 0xea77, 0xbf66, 0xbf67, + 0xbf65, 0xea78, 0xea7b, 0xea7c, 0x0000, 0xbf68, 0x0000, 0xc140, + 0xeda3, 0x0000, 0xc0fc, 0xed7b, 0xc0fe, 0xc141, 0x0000, 0xfed8, + 0xc0fd, 0xeda2, 0xed7c, 0xc0fb, 0xeda1, 0xed7a, 0xed7e, 0xed7d, + 0x0000, 0x9de0, 0xf055, 0xc2a4, 0xc2a5, 0xc2a2, 0x98ee, 0xc2a3, + 0x0000, 0x0000, 0xf054, 0x95c4, 0xf27b, 0xfce8, 0x0000, 0xc3a9, + 0x0000, 0xf279, 0xf27a, 0x98ef, 0xf474, 0xf477, 0xf475, 0xf476, + 0xf5e0, 0x0000, 0x0000, 0xc4ef, 0xf7eb, 0xf8b4, 0x0000, 0xc5f7, + 0xf8f8, 0xf8f9, 0xc666, 0xa5d9, 0xace1, 0x8c6e, 0xdac3, 0x0000, + 0xdee3, 0x0000, 0xa5da, 0xa86f, 0x0000, 0xaabe, 0xfad8, 0xcfe8, + 0xcfe9, 0xaf78, 0x0000, 0x0000, 0xdac4, 0xb575, 0xb847, 0xc142, + 0xeda4, 0xf27c, 0xf478, 0xa5db, 0xfedc, 0x0000, 0x0000, 0xcda1, + 0xcd7a, 0xcd7c, 0xcd7e, 0xcd7d, 0xcd7b, 0xaabf, 0xa0ae, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_78[] = { + 0x0000, 0x0000, 0xace2, 0xcff2, 0x0000, 0xcfed, 0xcfea, 0x0000, + 0x9d4c, 0xfedd, 0x0000, 0x0000, 0xace4, 0xace5, 0xcff0, 0xcfef, + 0xcfee, 0xcfeb, 0xcfec, 0xcff3, 0xace3, 0x0000, 0x0000, 0x0000, + 0x98f1, 0x0000, 0x0000, 0x0000, 0x98f3, 0xaf7c, 0x94c1, 0xafa4, + 0xafa3, 0xd2e1, 0xd2db, 0xd2d9, 0x0000, 0xafa1, 0xd6b9, 0xaf7a, + 0xd2de, 0xd2e2, 0xd2e4, 0xd2e0, 0xd2da, 0xafa2, 0xd2df, 0xd2dd, + 0xaf79, 0xd2e5, 0xafa5, 0xd2e3, 0xaf7d, 0xd2dc, 0x0000, 0xaf7e, + 0xaf7b, 0x98f5, 0x0000, 0x0000, 0xfa4f, 0x96e2, 0x0000, 0x0000, + 0x0000, 0x0000, 0x9450, 0xb2b9, 0x96a2, 0xd6ba, 0x0000, 0x98f6, + 0xd6b3, 0xd6b5, 0xd6b7, 0x96e5, 0xd6b8, 0xd6b6, 0xb2ba, 0x0000, + 0xd6bb, 0x98f7, 0xd6b4, 0xa046, 0x96e3, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xdac8, 0xb576, 0xdad0, 0x0000, + 0xdac5, 0x0000, 0xdad1, 0x0000, 0xdac6, 0xdac7, 0x98f8, 0x0000, + 0xdacf, 0xdace, 0xdacb, 0xb2b8, 0xb577, 0xdac9, 0xdacc, 0xb578, + 0xdacd, 0xdaca, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xdeee, 0x9ee4, 0xdef2, 0xb84e, 0x0000, 0xe2f0, 0xb851, + 0xdef0, 0xf9d6, 0x0000, 0xdeed, 0xdee8, 0xdeea, 0xdeeb, 0xdee4, + 0x94c3, 0xb84d, 0x0000, 0x0000, 0xb84c, 0x94c2, 0xb848, 0xdee7, + 0x0000, 0xb84f, 0x0000, 0xb850, 0xdee6, 0xdee9, 0xdef1, 0xb84a, + 0xb84b, 0xdeef, 0xdee5, 0x0000, 0x0000, 0x0000, 0xe2f2, 0xbad0, + 0xe2f4, 0xdeec, 0xe2f6, 0xbad4, 0xe2f7, 0xe2f3, 0x0000, 0xbad1, + 0xe2ef, 0xbad3, 0xe2ec, 0xe2f1, 0xe2f5, 0xe2ee, 0x0000, 0xfee1, + 0xb849, 0xfee9, 0xe2eb, 0xbad2, 0xe2ed, 0x0000, 0x96e4, 0x0000, + 0x89ac, 0x96db, 0xbd54, 0xe6c1, 0xbd58, 0x0000, 0xbd56, 0x0000, + 0x0000, 0xbacf, 0x0000, 0xe6c8, 0xe6c9, 0xbd53, 0x0000, 0xfee2, + 0xe6c7, 0xe6ca, 0xbd55, 0xbd52, 0xe6c3, 0xe6c0, 0xe6c5, 0xe6c2, + 0xbd59, 0xe6c4, 0x94c4, 0xfee3, 0xe6c6, 0xbd57, 0x0000, 0xfee7, + 0x9ffb, 0x0000, 0xbf6a, 0xeaa8, 0x0000, 0xeaa2, 0xeaa6, 0xeaac, + 0xeaad, 0xeaa9, 0xeaaa, 0xeaa7, 0x8c59, 0xeaa4, 0x0000, 0xbf6c, + 0xbf69, 0xeaa3, 0xeaa5, 0x0000, 0xbf6b, 0xeaab, 0x93c9, 0xc146, + 0x94e8, 0xfb56, 0xedaa, 0xeda5, 0xc145, 0x90c5, 0x0000, 0xc143, + 0x0000, 0xedac, 0xc144, 0xeda8, 0xeda9, 0xeda6, 0xedad, 0xf056 +}; + +static const unsigned short big5hkscs_from_unicode_79[] = { + 0x0000, 0xc147, 0xeda7, 0x0000, 0xedae, 0xedab, 0xa0a8, 0x0000, + 0x0000, 0xf05a, 0x0000, 0x0000, 0xf057, 0x0000, 0xc2a6, 0x0000, + 0xf05b, 0xf05d, 0xf05c, 0xf058, 0xf059, 0x0000, 0x0000, 0xf2a3, + 0x0000, 0xc3aa, 0x0000, 0xf27e, 0xf2a2, 0xf27d, 0xf2a4, 0x0000, + 0x0000, 0xf2a1, 0x0000, 0xf47a, 0xf47d, 0xf479, 0xc471, 0xf47b, + 0xf47c, 0xf47e, 0xc472, 0xc474, 0xc473, 0xf5e1, 0xfee5, 0xf5e3, + 0x0000, 0xf5e2, 0x98fd, 0x98fb, 0xfee8, 0xf6f6, 0x8ebf, 0x0000, + 0xf8b5, 0xf8fa, 0xa5dc, 0x8bd8, 0xfef7, 0xcb72, 0xaac0, 0xcda3, + 0xaac1, 0xaac2, 0xcda2, 0x0000, 0xcff8, 0xcff7, 0xace6, 0xace9, + 0xace8, 0xace7, 0xcff4, 0xcff6, 0xcff5, 0x0000, 0x0000, 0xd2e8, + 0xafa7, 0xd2ec, 0xd2eb, 0xd2ea, 0xd2e6, 0xafa6, 0xafaa, 0xafad, + 0x8f68, 0x94c6, 0xafae, 0xd2e7, 0xd2e9, 0xafac, 0xafab, 0xafa9, + 0xafa8, 0xd6c2, 0x9dea, 0xd6c0, 0xd6bc, 0xb2bb, 0x0000, 0xd6bd, + 0xb2bc, 0xd6be, 0xd6bf, 0xd6c1, 0x0000, 0xb2bd, 0x0000, 0x0000, + 0xdad5, 0xfc69, 0xdad4, 0xdad3, 0xdad2, 0x0000, 0x0000, 0x0000, + 0x0000, 0xdef6, 0xb852, 0x0000, 0xdef3, 0xdef5, 0x9cda, 0xb853, + 0xfef3, 0xb854, 0xdef4, 0x9c72, 0x0000, 0x0000, 0xfef0, 0x89c9, + 0xe341, 0x0000, 0xe2f9, 0xe2fa, 0x0000, 0xbad7, 0xbad5, 0xbad6, + 0xe343, 0x9941, 0xe342, 0xe2fe, 0xe2fd, 0xe2fc, 0xe2fb, 0xe340, + 0xe2f8, 0x9942, 0xe6cb, 0xe6d0, 0xe6ce, 0xfef5, 0x0000, 0x91d7, + 0xe6cd, 0xe6cc, 0xe6cf, 0x0000, 0xeaae, 0x94cc, 0xbf6d, 0xc148, + 0xedb0, 0xfef8, 0xc149, 0xedaf, 0xf05f, 0xf05e, 0xc2a7, 0x0000, + 0xf2a5, 0xc3ab, 0xf4a1, 0xc5a1, 0xf6f7, 0x0000, 0xf8b7, 0xf8b6, + 0xc9a8, 0xacea, 0xaceb, 0xd6c3, 0x0000, 0xb856, 0xa5dd, 0xa872, + 0xa871, 0xa870, 0x0000, 0x0000, 0x97a8, 0xcda4, 0xfefc, 0x0000, + 0xaac4, 0xaac3, 0x0000, 0xacee, 0xfdbf, 0xcffa, 0xcffd, 0xcffb, + 0x0000, 0xacec, 0xaced, 0x0000, 0xfefe, 0xcff9, 0xcffc, 0x0000, + 0xafb5, 0x0000, 0x0000, 0x0000, 0xd2f3, 0xd2f5, 0xd2f4, 0xafb2, + 0xd2ef, 0x0000, 0x96d1, 0xafb0, 0xafaf, 0x0000, 0xafb3, 0xafb1, + 0x0000, 0xafb4, 0xd2f2, 0xd2ed, 0xd2ee, 0xd2f1, 0xd2f0, 0x0000, + 0x0000, 0x94d5, 0x0000, 0x0000, 0x94d0, 0x0000, 0xd6c6, 0xd6c7, + 0xd6c5, 0x0000, 0xd6c4, 0xb2be, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_7a[] = { + 0xb57d, 0x0000, 0xdad6, 0xdad8, 0xdada, 0xb57c, 0x9944, 0x0000, + 0xb57a, 0x0000, 0xdad7, 0xb57b, 0xdad9, 0xb579, 0x0000, 0x0000, + 0xdf41, 0xdef7, 0xdefa, 0xdefe, 0xb85a, 0xdefc, 0x0000, 0xdefb, + 0xdef8, 0xdef9, 0xb858, 0xdf40, 0xb857, 0x0000, 0xb85c, 0xb85b, + 0xb859, 0x0000, 0xdefd, 0x0000, 0x0000, 0x0000, 0xe349, 0x0000, + 0xe348, 0x0000, 0x8c63, 0xe344, 0x0000, 0xa0b3, 0xbad8, 0xe347, + 0xe346, 0xbad9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xbd5e, + 0x0000, 0xe6d2, 0x94cf, 0xbd5f, 0xbd5b, 0xbd5d, 0x9ffa, 0xbd5a, + 0xbd5c, 0x0000, 0x0000, 0x91e5, 0xeaaf, 0x9c6a, 0xbf70, 0xeab1, + 0xeab0, 0x8e49, 0xe345, 0xbf72, 0xbf71, 0xbf6e, 0xbf6f, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xedb5, 0x0000, 0xedb3, 0xc14a, + 0xedb4, 0x0000, 0xedb6, 0xedb2, 0xedb1, 0x0000, 0x0000, 0xf060, + 0xc2aa, 0xc2a8, 0xc2a9, 0x0000, 0x0000, 0x8e4c, 0x0000, 0xf2a6, + 0xf2a7, 0xc3ad, 0x0000, 0xc3ac, 0xf4a3, 0xf4a4, 0xf4a2, 0x0000, + 0xf6f8, 0xf6f9, 0x0000, 0x0000, 0xa5de, 0xca48, 0xa873, 0x0000, + 0xcda5, 0xaac6, 0xaac5, 0xcda6, 0x0000, 0x8e4d, 0xd040, 0xacef, + 0xcffe, 0xacf0, 0x0000, 0x9a73, 0xafb6, 0xd2f8, 0xd2f6, 0xd2fc, + 0xafb7, 0xd2f7, 0xd2fb, 0xd2f9, 0xd2fa, 0x0000, 0x0000, 0xd6c8, + 0xd6ca, 0x9947, 0xb2bf, 0x8cb1, 0xd6c9, 0xb2c0, 0xb5a2, 0xb5a1, + 0xb57e, 0xdadb, 0x0000, 0x0000, 0x0000, 0x0000, 0xdf44, 0xb85d, + 0xb85e, 0x0000, 0xdf43, 0xdf42, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe34a, 0xbadb, 0xbada, 0xe34b, 0xe34c, 0x0000, 0xbd61, 0xbd60, + 0x8e50, 0xeab5, 0xe6d3, 0xe6d5, 0xe6d4, 0xeab4, 0xeab2, 0xeab6, + 0xeab3, 0x0000, 0xbf73, 0x8e4f, 0x9949, 0x0000, 0xedb7, 0xc14b, + 0xedb8, 0xedb9, 0x8e51, 0x8e52, 0xc2ab, 0xc2ac, 0x0000, 0xc475, + 0x9ab2, 0x89a5, 0xc5d1, 0xa5df, 0x0000, 0x0000, 0x0000, 0x994c, + 0x0000, 0xd041, 0x0000, 0x9ff8, 0x0000, 0x0000, 0x0000, 0x0000, + 0xd2fd, 0xafb8, 0x8e56, 0x994d, 0x91ca, 0x8e57, 0x0000, 0xb3ba, + 0xb3b9, 0x0000, 0x94e1, 0xb5a4, 0xdadd, 0xb5a3, 0xdadc, 0x9047, + 0x0000, 0x8fd8, 0x8e58, 0xdf45, 0x0000, 0xbadc, 0xe34d, 0xbadd, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xc476, 0xf4a5, + 0x0000, 0xa6cb, 0xaac7, 0xcda7, 0x0000, 0xacf2, 0x94eb, 0xacf1 +}; + +static const unsigned short big5hkscs_from_unicode_7b[] = { + 0xd042, 0xd043, 0x0000, 0x0000, 0xd340, 0xd342, 0xafb9, 0x0000, + 0xd344, 0xd347, 0xd345, 0x8e5c, 0x9553, 0x0000, 0xd346, 0xd343, + 0xd2fe, 0xafba, 0xd348, 0xd341, 0x9fe5, 0x0000, 0x0000, 0x0000, + 0xd6d3, 0xb2c6, 0xd6dc, 0xb2c3, 0x0000, 0xd6d5, 0xb2c7, 0x9f56, + 0xb2c1, 0x0000, 0xd6d0, 0xd6dd, 0xd6d1, 0xd6ce, 0xb2c5, 0x954f, + 0xb2c2, 0x8e5e, 0xd6d4, 0xd6d7, 0xb2c4, 0xd6d8, 0xb2c8, 0xd6d9, + 0xd6cf, 0xd6d6, 0xd6da, 0xd6d2, 0xd6cd, 0xd6cb, 0x0000, 0x0000, + 0xd6db, 0x996a, 0x0000, 0xdadf, 0x0000, 0x0000, 0x0000, 0x0000, + 0xdae4, 0x0000, 0x9c64, 0x9cd9, 0xdae0, 0xdae6, 0xb5a7, 0xd6cc, + 0xdae1, 0xb5a5, 0xdade, 0xb5ac, 0xdae2, 0xb5ab, 0xdae3, 0xb5ad, + 0xb5a8, 0xb5ae, 0xb5a9, 0x0000, 0xb5aa, 0x8e5d, 0xb5a6, 0x0000, + 0xdae5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xb861, 0xdf50, 0x9950, 0xdf53, 0xdf47, 0xdf4c, 0xdf46, 0xb863, + 0x0000, 0xdf4a, 0x0000, 0x0000, 0x9951, 0xdf48, 0xb862, 0x8e62, + 0xdf4f, 0xdf4e, 0xdf4b, 0xdf4d, 0xdf49, 0xbae1, 0xdf52, 0xb85f, + 0xdf51, 0x0000, 0x0000, 0x9952, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe35d, 0x0000, 0xbae8, 0xe358, 0x0000, 0xbae7, + 0xe34e, 0x0000, 0xe350, 0xbae0, 0xe355, 0xe354, 0xe357, 0xbae5, + 0xe352, 0xe351, 0x8e68, 0x0000, 0xbae4, 0xbadf, 0xe353, 0xbae2, + 0xe359, 0xe35b, 0x0000, 0xe356, 0xe34f, 0xbae3, 0x0000, 0x0000, + 0xbd69, 0xbade, 0x8e61, 0x9f59, 0xe35c, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xe6d9, 0xbd62, 0x0000, 0xe6db, + 0x0000, 0xbd63, 0x8bb3, 0x0000, 0xbd65, 0xe6de, 0x0000, 0xe6d6, + 0xbae6, 0xe6dc, 0x0000, 0x0000, 0x0000, 0x0000, 0xe6d8, 0x0000, + 0xb860, 0xbd68, 0x0000, 0x0000, 0xbd64, 0x0000, 0xbd66, 0xbd67, + 0x0000, 0xbf76, 0xe6dd, 0xe6d7, 0xbd6a, 0x0000, 0xe6da, 0x9f5d, + 0x8e66, 0x0000, 0x0000, 0x0000, 0xeac0, 0xeabb, 0x0000, 0x0000, + 0xeac5, 0xbf74, 0xeabd, 0xbf78, 0xeac3, 0xeaba, 0xeab7, 0xeac6, + 0xc151, 0xbf79, 0xeac2, 0xeab8, 0xbf77, 0xeabc, 0xbf7b, 0xeab9, + 0xeabe, 0xbf7a, 0xeac1, 0xeac4, 0x8cb2, 0x0000, 0x0000, 0x0000, + 0xedcb, 0xedcc, 0xedbc, 0xedc3, 0xedc1, 0x0000, 0x0000, 0xc14f, + 0xedc8, 0xeabf, 0x8e6e, 0xedbf, 0x9f64, 0xedc9, 0xc14e, 0xedbe +}; + +static const unsigned short big5hkscs_from_unicode_7c[] = { + 0xedbd, 0xedc7, 0xedc4, 0xedc6, 0x0000, 0xedba, 0xedca, 0xc14c, + 0x0000, 0xedc5, 0xedce, 0xedc2, 0xc150, 0xc14d, 0xedc0, 0xedbb, + 0xedcd, 0xbf75, 0x9953, 0x0000, 0x0000, 0xfab8, 0x0000, 0x0000, + 0x0000, 0xf063, 0x0000, 0x9954, 0xf061, 0xf067, 0xc2b0, 0xf065, + 0xf064, 0xc2b2, 0xf06a, 0xc2b1, 0x0000, 0xf06b, 0xf068, 0xc2ae, + 0xf069, 0xf062, 0xc2af, 0xc2ad, 0xf2ab, 0xf066, 0x0000, 0x0000, + 0xf06c, 0x0000, 0x0000, 0xf2a8, 0x0000, 0x8e70, 0x0000, 0xc3b2, + 0xc3b0, 0xf2aa, 0x0000, 0xf2ac, 0xf2a9, 0xc3b1, 0xc3ae, 0xc3af, + 0xc3b3, 0x0000, 0x9f61, 0xc478, 0x8e72, 0xf4aa, 0x0000, 0xf4a9, + 0xf4a7, 0xf4a6, 0xf4a8, 0x0000, 0xc477, 0xc479, 0x0000, 0x0000, + 0xc4f0, 0xa06b, 0x0000, 0xf5e5, 0xf5e4, 0x0000, 0x9f40, 0xf6fa, + 0x0000, 0xf6fc, 0xf6fe, 0xf6fd, 0xf6fb, 0x94ed, 0x0000, 0xc5a3, + 0xc5a2, 0x0000, 0x0000, 0xc5d3, 0xc5d2, 0xc5d4, 0xf7ed, 0xf7ec, + 0x0000, 0xf8fb, 0xf8b8, 0xf8fc, 0xc658, 0x94ee, 0xc659, 0xf96d, + 0x9fbd, 0x0000, 0xc67e, 0xa6cc, 0x8e7b, 0xcda8, 0x0000, 0x0000, + 0xd045, 0xd046, 0xd044, 0x9957, 0x94f7, 0xacf3, 0x9f5f, 0xd047, + 0xd048, 0xd049, 0x0000, 0x8e73, 0xd349, 0xd34f, 0x9f62, 0x0000, + 0xd34d, 0xafbb, 0xd34b, 0x0000, 0xd34c, 0xd34e, 0x94f6, 0x0000, + 0x0000, 0xd34a, 0xb2c9, 0x0000, 0xd6de, 0xb2cb, 0xd6e0, 0xb2ca, + 0xd6df, 0x0000, 0x0000, 0x0000, 0x9958, 0x0000, 0xdae8, 0xb5af, + 0x0000, 0xdaea, 0xdae7, 0xd6e1, 0x0000, 0xb5b0, 0x8e75, 0xf9db, + 0xdae9, 0x0000, 0x0000, 0x0000, 0x9072, 0x0000, 0x94f8, 0xdf56, + 0x0000, 0xb864, 0xdf54, 0xb865, 0xdf55, 0xb866, 0x0000, 0x0000, + 0x995a, 0xbae9, 0xe361, 0xe35e, 0xe360, 0xbaea, 0xbaeb, 0xe35f, + 0x0000, 0x0000, 0xa0b0, 0x8cb3, 0x0000, 0xe6df, 0x0000, 0x8e79, + 0xe6e0, 0x8e78, 0xbd6b, 0xe6e2, 0xe6e1, 0x94f3, 0xa261, 0x0000, + 0xeaca, 0xeacb, 0xeac7, 0x98af, 0xeac8, 0xbf7c, 0xbf7d, 0xeac9, + 0x0000, 0xc157, 0xa0b2, 0x0000, 0xc153, 0xc158, 0xc154, 0xc156, + 0xc152, 0x0000, 0xc155, 0x0000, 0x0000, 0x0000, 0x8e7a, 0xc2b3, + 0xedcf, 0x0000, 0xf2ae, 0x0000, 0xf2ad, 0x995c, 0xf4ab, 0xc47a, + 0xc47b, 0xf741, 0xf5e6, 0x8e7c, 0xf740, 0x8e7d, 0xf8fd, 0xf9a4, + 0xa6cd, 0x8bd9, 0x0000, 0xa874, 0x89a2, 0xcda9, 0xaac8, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_7d[] = { + 0xacf6, 0xd04c, 0xacf4, 0xd04a, 0xacf9, 0xacf5, 0xacfa, 0xacf8, + 0xd04b, 0xacf7, 0xafbf, 0xafbe, 0xd35a, 0xafc7, 0xd353, 0xd359, + 0xafc3, 0xd352, 0xd358, 0xd356, 0xafc2, 0xafc4, 0xd355, 0xafbd, + 0xd354, 0xafc8, 0xafc5, 0xafc9, 0xafc6, 0xd351, 0xd350, 0xd357, + 0xafc0, 0xafbc, 0xafc1, 0x0000, 0x0000, 0x9ed7, 0x0000, 0x0000, + 0xd6f0, 0xd6e9, 0x0000, 0xb5b5, 0xd6e8, 0x0000, 0xb2cf, 0xb2d6, + 0xb2d3, 0xb2d9, 0xb2d8, 0xb2d4, 0x0000, 0xd6e2, 0xd6e5, 0x0000, + 0xd6e4, 0xb2d0, 0xd6e6, 0xd6ef, 0xb2d1, 0xd6e3, 0xd6ec, 0xd6ed, + 0xb2d2, 0xd6ea, 0xb2d7, 0xb2cd, 0xb2d5, 0xd6e7, 0xb2cc, 0xd6eb, + 0x0000, 0x0000, 0xd6ee, 0x0000, 0x0000, 0xa0b6, 0xdafb, 0xdaf2, + 0xb5b2, 0xdaf9, 0xdaf6, 0xdaee, 0xdaf7, 0xb5b4, 0xdaef, 0x0000, + 0xdaeb, 0x0000, 0x9e42, 0xb86c, 0xdaf4, 0x8ea4, 0xb5b1, 0xdafa, + 0x0000, 0xb5b8, 0xb5ba, 0xdaed, 0x0000, 0x0000, 0xb5b9, 0xdaf0, + 0xb5b3, 0xdaf8, 0xdaf1, 0xdaf5, 0x0000, 0xdaf3, 0xb5b6, 0xdaec, + 0xb5bb, 0xb2ce, 0xb5b7, 0xb5bc, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xb868, 0xdf5d, 0xdf5f, 0xdf61, 0xdf65, 0x0000, 0xdf5b, + 0xdf59, 0xb86a, 0x0000, 0xdf60, 0xdf64, 0xdf5c, 0xdf58, 0x0000, + 0xdf57, 0x8ea7, 0x0000, 0x8c76, 0xdf62, 0xdf5a, 0xdf5e, 0xb86b, + 0x0000, 0xb869, 0xdf66, 0xb867, 0xdf63, 0x0000, 0xe372, 0x9542, + 0x0000, 0x0000, 0x0000, 0x0000, 0xbaee, 0xe36a, 0xbd78, 0xe374, + 0xbaf1, 0xe378, 0xbaf7, 0xe365, 0x987d, 0x0000, 0xe375, 0xe362, + 0x9755, 0xe377, 0xe366, 0x8ea8, 0xbafe, 0xbafb, 0xe376, 0xe370, + 0xbaed, 0xbaf5, 0xbaf4, 0x8eaa, 0xbaf3, 0xbaf9, 0x0000, 0xe363, + 0xbafa, 0xe371, 0xbaf6, 0xbaec, 0xe373, 0xbaef, 0xbaf0, 0xbaf8, + 0xe368, 0xe367, 0xe364, 0x0000, 0xe36c, 0xe369, 0xe36d, 0xbafd, + 0x0000, 0xe379, 0xbaf2, 0xe36e, 0xe36f, 0x89a3, 0xe36b, 0x9960, + 0x9962, 0x0000, 0xbafc, 0x94fc, 0x9961, 0x0000, 0x0000, 0xe6e7, + 0xbd70, 0xbd79, 0xbd75, 0xe6e4, 0x94fa, 0xbd72, 0xbd76, 0xe6f0, + 0xbd6c, 0xe6e8, 0x0000, 0xbd74, 0x8eae, 0x8eb2, 0xe6eb, 0xe6e6, + 0xbd73, 0xbd77, 0xe6e5, 0x0000, 0xbd71, 0x0000, 0xe6ef, 0xbd6e, + 0xe6ee, 0xe6ed, 0xbd7a, 0xe572, 0xbd6d, 0x8eb0, 0xe6ec, 0xe6e3, + 0x0000, 0xbd7b, 0xe6ea, 0xbd6f, 0x0000, 0x9963, 0x97aa, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_7e[] = { + 0x0000, 0x0000, 0x0000, 0xe6e9, 0x0000, 0x0000, 0x0000, 0x94fb, + 0xbfa2, 0xbfa7, 0xbf7e, 0xead8, 0xeacf, 0xeadb, 0xead3, 0xead9, + 0xbfa8, 0xbfa1, 0xeacc, 0xead2, 0xeadc, 0xead5, 0xeada, 0xeace, + 0x0000, 0x0000, 0xead6, 0xbfa3, 0xead4, 0xbfa6, 0xbfa5, 0xead0, + 0xead1, 0xeacd, 0xead7, 0xbfa4, 0xeade, 0xeadd, 0x0000, 0x8ebb, + 0x0000, 0xedda, 0xedd6, 0xc15f, 0x0000, 0xedd0, 0xc159, 0xc169, + 0xeddc, 0xc161, 0xc15d, 0xedd3, 0xc164, 0xc167, 0xedde, 0xc15c, + 0xedd5, 0xc165, 0xede0, 0xeddd, 0xedd1, 0xc160, 0xc15a, 0xc168, + 0xedd8, 0xc163, 0xedd2, 0xc15e, 0xeddf, 0xc162, 0xc15b, 0xedd9, + 0xc166, 0xedd7, 0x0000, 0x0000, 0xeddb, 0x0000, 0x0000, 0x0000, + 0xf06e, 0xf074, 0xc2b9, 0xf077, 0xc2b4, 0xc2b5, 0xf06f, 0xf076, + 0xf071, 0xc2ba, 0xc2b7, 0x8cdc, 0xf06d, 0x0000, 0xc2b6, 0xf073, + 0xf075, 0xc2b8, 0xf072, 0xf070, 0x0000, 0x9876, 0x0000, 0x8ea1, + 0xf2b8, 0xc3b7, 0xc3b8, 0xc3b4, 0x8cb4, 0xc3b5, 0x8eb7, 0xf2b4, + 0xf2b2, 0x0000, 0xf2b6, 0xc3ba, 0xf2b7, 0xf2b0, 0xf2af, 0xf2b3, + 0xf2b1, 0xc3b6, 0xf2b5, 0xf4ac, 0xc47e, 0xc47d, 0xf4ad, 0x9da6, + 0xf4af, 0xf4ae, 0xc4a1, 0x0000, 0x0000, 0x0000, 0xf5eb, 0xf5e8, + 0xf5e9, 0x0000, 0xf5e7, 0xf5ea, 0xc4f2, 0xf5ec, 0x9eb0, 0xc4f1, + 0x0000, 0xf742, 0x8eb8, 0xc5d5, 0xc5d7, 0xf7ee, 0xc5d6, 0xf8b9, + 0xf940, 0xf942, 0xf8fe, 0xf941, 0xc66c, 0x0000, 0x0000, 0x9d70, + 0x0000, 0x0000, 0x0000, 0x0000, 0x896e, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x896f, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8970, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8971, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8972, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8973, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_7f[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8974, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa6ce, 0x8975, + 0xacfb, 0xd26f, 0xafca, 0x0000, 0x0000, 0xb2da, 0xdafc, 0xdafd, + 0x8ebc, 0x8ebd, 0x0000, 0xeadf, 0xc16a, 0xede1, 0x0000, 0x8ebe, + 0xc2bb, 0x9dd1, 0xf2ba, 0xf2b9, 0xc4a2, 0xf5ed, 0x94fd, 0xf743, + 0xc5f8, 0xca49, 0x8bd7, 0x8bda, 0xaac9, 0xa875, 0x0000, 0x0000, + 0xd04d, 0x0000, 0x0000, 0xd360, 0xd35b, 0xd35f, 0xd35d, 0xafcb, + 0xd35e, 0xd35c, 0x0000, 0xd6f1, 0x0000, 0xdafe, 0xdb40, 0xdf69, + 0xdf6a, 0xb86e, 0xb86f, 0xdf68, 0xdf6b, 0xdf67, 0xb86d, 0x0000, + 0xbb40, 0xa0e2, 0xb870, 0xe37a, 0x0000, 0xbd7c, 0xe6f1, 0xbd7d, + 0x9fe9, 0xbfa9, 0xeae2, 0xeae0, 0xeae1, 0xede4, 0xede3, 0xede2, + 0x0000, 0x0000, 0x0000, 0xf2bb, 0x0000, 0xc3b9, 0xf2bc, 0xf744, + 0xc5f9, 0xf8ba, 0xa6cf, 0xaacb, 0xaaca, 0xd04f, 0xacfc, 0xfda8, + 0x0000, 0xd04e, 0xd362, 0x8ae7, 0xafcc, 0xd6f2, 0xd361, 0x8ec2, + 0x0000, 0x0000, 0xb2dc, 0xd6f5, 0xd6f3, 0xd6f4, 0xb2db, 0x0000, + 0xdb42, 0xdb43, 0xdb41, 0x8ec4, 0xb873, 0xdf6d, 0xdf6c, 0xdf6e, + 0xb872, 0xb871, 0x0000, 0x0000, 0xe6f2, 0xe6f4, 0x9964, 0xbd7e, + 0xe6f3, 0xeae3, 0xbfaa, 0xf079, 0x9965, 0xf078, 0xc3bb, 0xf2bd, + 0xc3bd, 0xc3bc, 0xf4b0, 0xf5ee, 0xc4f3, 0xa6d0, 0xd050, 0xacfd, + 0xd365, 0xafce, 0xd364, 0xd363, 0x0000, 0xafcd, 0x0000, 0xd6fb, + 0x0000, 0xd6fd, 0xd6f6, 0xd6f7, 0xb2dd, 0xd6f8, 0xb2de, 0xd6fc, + 0xd6f9, 0xd6fa, 0xb2df, 0x0000, 0xb5be, 0xb5bf, 0x0000, 0xdb44, + 0x0000, 0x0000, 0x0000, 0xdf6f, 0xdf70, 0x954e, 0xe37e, 0xbb43, + 0xbb41, 0xbb42, 0xe37b, 0xe37c, 0x0000, 0xe37d, 0xe6f9, 0x98b3, + 0xe6fa, 0xbda1, 0xe6f7, 0xe6f6, 0xe6f8, 0xe6f5, 0xbfad, 0xeae4, + 0xbfab, 0xbfac, 0xede6, 0xc16b, 0xede5, 0xefa8, 0x0000, 0xf07a, + 0xf07b, 0xc2bc, 0x8ecb, 0xc2bd, 0xc16c, 0xf2be, 0xf2bf, 0xf4b1 +}; + +static const unsigned short big5hkscs_from_unicode_80[] = { + 0xc4a3, 0xa6d1, 0x8bdf, 0xa6d2, 0xacfe, 0xaacc, 0xafcf, 0xd051, + 0x8ece, 0x0000, 0x0000, 0xb5c0, 0xa6d3, 0xad41, 0xd052, 0xd053, + 0xad40, 0xad42, 0xa6d4, 0x0000, 0xd054, 0xafd1, 0xd366, 0xafd3, + 0xafd0, 0xafd2, 0x0000, 0xd741, 0xb2e0, 0x8ecf, 0xd740, 0xd6fe, + 0x9968, 0xdf71, 0x0000, 0x0000, 0xe3a1, 0x9969, 0xbda2, 0x0000, + 0xbfae, 0xeae6, 0xeae5, 0x0000, 0xede7, 0x0000, 0x996b, 0x8ed1, + 0xf5ef, 0x996c, 0x0000, 0xa6d5, 0xcb73, 0xcdaa, 0xad43, 0xd055, + 0x0000, 0xd368, 0x0000, 0x8ed4, 0x8ed5, 0xafd4, 0xd367, 0xafd5, + 0x0000, 0x0000, 0x0000, 0xd743, 0x0000, 0x0000, 0xb2e2, 0xd742, + 0xd744, 0x0000, 0xb2e1, 0x0000, 0x0000, 0x0000, 0x0000, 0xdb46, + 0xdb47, 0xdb45, 0xb5c1, 0x0000, 0x996d, 0x0000, 0xb874, 0x0000, + 0xb875, 0x0000, 0xbb45, 0xa0be, 0xe3a3, 0xe3a2, 0xbb44, 0x0000, + 0x0000, 0x8ed6, 0xa0bc, 0xa0b5, 0xe6fb, 0x0000, 0xa0b4, 0xe6fc, + 0x0000, 0x0000, 0x0000, 0x0000, 0xeae7, 0x0000, 0x0000, 0xc170, + 0xc16f, 0xc16d, 0xc16e, 0xc171, 0x0000, 0xf07c, 0xc2bf, 0xc2be, + 0xf2c0, 0xf4b2, 0x0000, 0x0000, 0x0000, 0xc5a5, 0xc5a4, 0xa6d6, + 0x8be0, 0x0000, 0xd1fb, 0x0000, 0xb877, 0xb5c2, 0xb876, 0xbb46, + 0x0000, 0xa6d7, 0xc9a9, 0xa6d8, 0xa6d9, 0x0000, 0x0000, 0xcdab, + 0xcb76, 0x0000, 0xcb77, 0xa877, 0x0000, 0xcb74, 0xa876, 0x0000, + 0xa879, 0xcb75, 0xa87b, 0xa87a, 0xcb78, 0xa878, 0x0000, 0x89b5, + 0x0000, 0xaad1, 0xaacf, 0xcdad, 0x0000, 0xaace, 0x0000, 0x8edd, + 0x0000, 0xaad3, 0xaad5, 0xaad2, 0x0000, 0xcdb0, 0xcdac, 0xaad6, + 0x0000, 0xaad0, 0xa87c, 0x0000, 0xaad4, 0xcdaf, 0x9e5d, 0x9971, + 0xcdae, 0x0000, 0xaacd, 0x0000, 0x89ae, 0x9de8, 0x0000, 0x0000, + 0x0000, 0x0000, 0xd05b, 0xad47, 0xad48, 0xd05d, 0x9565, 0xd057, + 0xd05a, 0xd063, 0xd061, 0x0000, 0xad49, 0xd067, 0xad4c, 0xd064, + 0xd05c, 0xd059, 0x0000, 0x0000, 0xdb49, 0xd062, 0xad44, 0xd065, + 0xd056, 0xd05f, 0xad46, 0xad4b, 0xd060, 0xad4f, 0xad4d, 0x0000, + 0xd058, 0xad4a, 0x0000, 0xd05e, 0xad4e, 0xad45, 0xd066, 0x0000, + 0x0000, 0x9972, 0x0000, 0x0000, 0x8b5c, 0xafda, 0x0000, 0xafe3, + 0xafd8, 0xafd6, 0xd36a, 0xafde, 0xafdb, 0xd36c, 0x89b1, 0x0000, + 0xafdd, 0xd36b, 0xd369, 0xd36e, 0xafe2, 0xafe0, 0xdb48, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_81[] = { + 0xd36f, 0xd36d, 0xafd7, 0xa0c0, 0x0000, 0xafd9, 0xafdc, 0x8edf, + 0xafdf, 0x9566, 0xafe1, 0x0000, 0x9974, 0x0000, 0x9976, 0x0000, + 0x0000, 0x0000, 0x9977, 0x0000, 0x9979, 0xd74e, 0xb2e4, 0x9dda, + 0xd745, 0xd747, 0x8ee0, 0xd748, 0x0000, 0xd750, 0xd74c, 0xd74a, + 0x0000, 0xd74d, 0xd751, 0xb2e5, 0xb2e9, 0xd746, 0x0000, 0xd74f, + 0x0000, 0xb2e7, 0x935c, 0xb2e6, 0xd74b, 0xd749, 0x0000, 0xb2e3, + 0xb2e8, 0x0000, 0x9de6, 0x0000, 0x8b5f, 0x0000, 0x0000, 0x9563, + 0x0000, 0xb5c8, 0xdb51, 0x0000, 0x0000, 0xdb4f, 0xb5ca, 0x0000, + 0x0000, 0x0000, 0x9567, 0xdb4a, 0xdfa1, 0x0000, 0xb5c9, 0xdb4e, + 0x9de3, 0x0000, 0xdb4b, 0xb5c5, 0xb5cb, 0xdb50, 0xb5c7, 0xdb4d, + 0xbb47, 0xb5c6, 0xdb4c, 0xb5cc, 0xb5c4, 0xb5c3, 0x997c, 0x0000, + 0x0000, 0x997d, 0x997e, 0xdf77, 0xdf75, 0x0000, 0xdf7b, 0x0000, + 0xdf73, 0xdfa2, 0xdf78, 0x0000, 0xdf72, 0xb87b, 0xb8a3, 0xdf7d, + 0x0000, 0xdf76, 0x0000, 0xb87e, 0x0000, 0x8b5b, 0xb87c, 0xdf7e, + 0xb879, 0xb878, 0xdf79, 0xb87d, 0xb5cd, 0x0000, 0xdf7c, 0xdf74, + 0xb87a, 0xb8a1, 0xb8a2, 0x0000, 0x99a3, 0x0000, 0x0000, 0xbb4c, + 0xbb48, 0x0000, 0xbb4d, 0xe3a6, 0x99a4, 0x0000, 0xe3a5, 0xe3a7, + 0xbb4a, 0xe3a4, 0xbb4b, 0xe3aa, 0xe3a9, 0xe3a8, 0x0000, 0xbb49, + 0x0000, 0x0000, 0x0000, 0x99a6, 0x0000, 0xe741, 0x0000, 0xe744, + 0xbda8, 0xe743, 0xbda7, 0xbda3, 0xbda4, 0xbda5, 0xe740, 0xe6fe, + 0xbda6, 0x0000, 0xe742, 0xe6fd, 0x0000, 0x99a8, 0xeae9, 0xeaf3, + 0xbfb1, 0xbfb0, 0x8abe, 0xeaed, 0xeaef, 0x0000, 0xeaea, 0x0000, + 0xeaee, 0xeae8, 0xeaf1, 0xbfaf, 0xeaf0, 0xeaec, 0x9e61, 0xeaf2, + 0x0000, 0xeaeb, 0xc174, 0xede8, 0xedee, 0xc178, 0xc17a, 0xc177, + 0xc176, 0x99aa, 0xc175, 0xc173, 0xede9, 0xedec, 0xc172, 0xeded, + 0xa0c8, 0xc179, 0xedeb, 0x0000, 0xedea, 0xc2c0, 0x0000, 0xc2c1, + 0xf0a1, 0xf07d, 0xf07e, 0x0000, 0x0000, 0xf2c2, 0x0000, 0xf2c1, + 0xc3be, 0xf4b4, 0xc4a4, 0xf4b3, 0x0000, 0xf5f0, 0xf745, 0xc5a6, + 0xf943, 0xf944, 0xc5d8, 0xa6da, 0x99ab, 0xaad7, 0xdb52, 0xbb4e, + 0xc17b, 0xedef, 0xa6db, 0x0000, 0xafe5, 0xafe4, 0xdb53, 0xfec4, + 0x0000, 0x0000, 0xeaf4, 0xa6dc, 0xad50, 0x0000, 0x98c2, 0xdb54, + 0xdb55, 0xdb56, 0xbb4f, 0xbfb2, 0xa6dd, 0x0000, 0xaad8, 0xd068 +}; + +static const unsigned short big5hkscs_from_unicode_82[] = { + 0xafe6, 0xd370, 0xb2ea, 0x0000, 0xdb57, 0xb8a4, 0x0000, 0xbb50, + 0xbfb3, 0xc17c, 0xc2c2, 0xf4b5, 0xa6de, 0xaad9, 0x0000, 0x0000, + 0xafe7, 0xd752, 0xb5ce, 0x0000, 0xbb51, 0xe3ab, 0xe745, 0x0000, + 0x8ee8, 0x0000, 0xa0ba, 0xa6df, 0xb5cf, 0xdfa3, 0xbb52, 0xa6e0, + 0xcdb1, 0xd069, 0xad51, 0x0000, 0x0000, 0xd372, 0xfd77, 0x0000, + 0xafea, 0x8eee, 0xafe8, 0xafe9, 0xafeb, 0x9ebf, 0x0000, 0xd371, + 0x0000, 0x0000, 0xd757, 0xd754, 0xd756, 0xb2eb, 0xb2ed, 0xb2ec, + 0xd753, 0xb2ee, 0xd755, 0x0000, 0xdb58, 0xdb59, 0x89c2, 0xdb5a, + 0xdfa6, 0x0000, 0xdfa7, 0x0000, 0xdfa5, 0xdfa8, 0x0000, 0xb8a5, + 0x0000, 0xdfa4, 0x0000, 0xbb53, 0x0000, 0x0000, 0xe74a, 0xe746, + 0xe749, 0xe74b, 0xe748, 0xe747, 0x99ac, 0xeaf5, 0xeaf6, 0xeaf7, + 0xbfb4, 0xbfb5, 0xedf1, 0xedf0, 0xedf2, 0x0000, 0xf0a3, 0xf0a2, + 0x0000, 0xf2c4, 0x956b, 0xf2c5, 0xf2c3, 0x956c, 0xc4a5, 0x0000, + 0xf4b6, 0xf4b7, 0x0000, 0xf746, 0xf7ef, 0xf8bb, 0xa6e1, 0xa87d, + 0x0000, 0xc17d, 0xa6e2, 0x0000, 0xd758, 0xdb5b, 0x99af, 0xc641, + 0xca4a, 0x994a, 0x8976, 0x8f48, 0xca4b, 0xca4d, 0xa6e3, 0xca4e, + 0xca4c, 0x0000, 0x0000, 0xcba2, 0xcba3, 0xcb7b, 0x0000, 0xfbee, + 0x0000, 0x0000, 0xcba1, 0xa8a1, 0x0000, 0xa8a2, 0xcb7c, 0xcb7a, + 0xcb79, 0xcb7d, 0xa87e, 0xcb7e, 0xd06a, 0x0000, 0x0000, 0x0000, + 0xcdb6, 0xaadc, 0xcdb5, 0xcdb7, 0x0000, 0xaadb, 0xcdbc, 0xaadf, + 0xcdb2, 0xcdc0, 0xcdc6, 0xaae6, 0xcdc3, 0xaae3, 0x99ae, 0xcdb9, + 0xcdbf, 0xcdc1, 0x8efb, 0xcdb4, 0xaae2, 0xaadd, 0xcdba, 0xaae4, + 0xaae7, 0xaae1, 0x0000, 0xaada, 0xcdbe, 0xcdb8, 0xcdc5, 0xaae9, + 0xaae5, 0xaae0, 0xcdbd, 0xafec, 0xcdbb, 0xaade, 0xaae8, 0x8cd0, + 0xcdb3, 0x0000, 0xcdc2, 0xcdc4, 0x8b52, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x99b0, 0x0000, 0x0000, 0x0000, 0x0000, 0x8977, + 0x8f41, 0xad62, 0xad5c, 0xad64, 0xad61, 0xd071, 0xd074, 0xad5d, + 0x99b1, 0xd06b, 0x0000, 0xad56, 0xad60, 0x0000, 0xad63, 0xad65, + 0xd0a2, 0xd077, 0x8f49, 0xad55, 0xd0a1, 0xad59, 0xad57, 0xad52, + 0xd06f, 0x0000, 0xd07e, 0xd073, 0xd076, 0xd0a5, 0xfa4d, 0xad66, + 0xd07d, 0xad5e, 0xd078, 0xd0a4, 0xd075, 0xd079, 0xd07c, 0x9de4, + 0x8cb5, 0xd06d, 0xd0a3, 0xd07b, 0xfbe9, 0x9b54, 0xd06c, 0x99b2 +}; + +static const unsigned short big5hkscs_from_unicode_83[] = { + 0xd070, 0xad5f, 0xad5a, 0xad53, 0xad58, 0xad54, 0xad67, 0xd06e, + 0xd3a5, 0xad5b, 0x0000, 0x9e68, 0xd07a, 0xce41, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xd3a8, 0xaffa, + 0x8f4a, 0xd376, 0x8f42, 0xd3a3, 0xd37d, 0x8f51, 0xd3b2, 0x0000, + 0xd3aa, 0x0000, 0xd37e, 0x0000, 0xd3a9, 0xd378, 0xd37c, 0xd3b5, + 0xaffd, 0xd3ad, 0xd3a4, 0xafed, 0xd3b3, 0xd374, 0x0000, 0xd3ac, + 0x0000, 0xaffc, 0xaff7, 0xd373, 0xaff5, 0xaff4, 0xaff9, 0xd3ab, + 0xaff1, 0xaff8, 0xd072, 0xdb5c, 0xd3a6, 0x9846, 0x0000, 0xd37a, + 0xaffb, 0xd37b, 0xd3a1, 0xaffe, 0xd375, 0xd3af, 0x0000, 0xd3ae, + 0xd3b6, 0xaff3, 0xaff0, 0xd3b4, 0xd3b0, 0xd3a7, 0xd3a2, 0xaff6, + 0xaff2, 0xd377, 0xafee, 0xd3b1, 0xafef, 0x0000, 0xd379, 0x99b4, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8ef5, 0xfd55, 0x0000, 0x0000, 0x9ccd, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8978, + 0x0000, 0x0000, 0x0000, 0xd75e, 0xd760, 0xd765, 0xd779, 0xb2fc, + 0xb2f2, 0x0000, 0xd75d, 0xb2fd, 0xb2fe, 0xd768, 0xd76f, 0xd775, + 0x0000, 0xd762, 0x0000, 0xd769, 0x0000, 0x8f53, 0xb340, 0xd777, + 0xd772, 0xb2fa, 0xb2f8, 0xd76e, 0xd76a, 0xd75c, 0xb2ef, 0xd761, + 0xd759, 0x8f6f, 0xb2f7, 0xb2f9, 0xd766, 0xd763, 0xb2f4, 0xd773, + 0xb2f1, 0xd764, 0xd77a, 0xd76c, 0x8e63, 0xd76b, 0xb2f0, 0x0000, + 0xb2fb, 0x0000, 0xb2f3, 0xd75a, 0xd75f, 0xd770, 0xd776, 0xb341, + 0xd75b, 0xd767, 0xd76d, 0xb2f6, 0x8f56, 0x0000, 0xd778, 0xd771, + 0xd774, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xfe76, 0x0000, 0x0000, 0x0000, 0xb2f5, 0x9fc6, 0xdb6c, + 0xdb60, 0xb5d7, 0xdb7d, 0xdba7, 0xdbaa, 0xb5d5, 0xdb68, 0xdba3, + 0xdb69, 0xdb77, 0xb5e2, 0xdb73, 0xb5df, 0xfaac, 0xdb74, 0xdb5d, + 0x0000, 0xdba4, 0x0000, 0x8f58, 0xb5e8, 0xdba1, 0xdb75, 0xdbac, + 0xdb70, 0xdfc8, 0x0000, 0xdbaf, 0xb5e6, 0xdb6e, 0xdb7a, 0xb5e9, + 0xb5d4, 0xdb72, 0xdbad, 0xdb6b, 0xdb64, 0xdb6f, 0x0000, 0xdb63, + 0xdb61, 0xb5d0, 0xdba5, 0xdb6a, 0xdba8, 0x9848, 0xdba9, 0xb5d8, + 0xb5dd, 0xb5d9, 0xb5e1, 0xdb7e, 0xb5da, 0xdb76, 0xdb66, 0x0000, + 0xb5d2, 0xdb5e, 0xdba2, 0xdbab, 0xdb65, 0xb5e0, 0xdbb0, 0xdb71 +}; + +static const unsigned short big5hkscs_from_unicode_84[] = { + 0x0000, 0xdb6d, 0x0000, 0xb5d1, 0xb5e5, 0x99b7, 0xdb7c, 0xb5e7, + 0x0000, 0xdb78, 0xb5dc, 0xb5d6, 0xb5de, 0xb5d3, 0xb5e4, 0xdb79, + 0xdb67, 0xdb7b, 0xdb62, 0xdba6, 0x9665, 0x0000, 0xfa6c, 0x0000, + 0x9de7, 0x0000, 0x0000, 0xdbae, 0x9e62, 0x0000, 0x0000, 0x0000, + 0x96cc, 0x8e67, 0x0000, 0xdb5f, 0xfc75, 0x0000, 0x987e, 0x0000, + 0x0000, 0xdfc7, 0x0000, 0xdfdd, 0xb855, 0xdfcc, 0xfdb9, 0xdfca, + 0xdfb5, 0xb8a9, 0xdfc5, 0xdfd9, 0xdfc1, 0xb8b1, 0xdfd8, 0xdfbf, + 0xb5e3, 0xdfcf, 0xdfc0, 0xdfd6, 0xb8b0, 0xb8a8, 0x97fc, 0xdfaa, + 0xdfb2, 0x0000, 0xdfcb, 0xdfc3, 0xdfdc, 0xdfc6, 0xb8b6, 0xdfd7, + 0x98f9, 0xb8ad, 0x8f66, 0xdfc9, 0xdfd1, 0xdfb6, 0xdfd0, 0x0000, + 0xdfe1, 0xdfb1, 0xdfd2, 0x956e, 0xdfdf, 0x9245, 0xdfab, 0xb5db, + 0x8f60, 0xdfb9, 0xdfb8, 0xb8af, 0x9ed1, 0xdfbc, 0xdfbe, 0xdfcd, + 0xdfde, 0xb8b2, 0xfecd, 0xb8b3, 0x99b9, 0xdfb0, 0xb8ab, 0xdfb4, + 0xdfda, 0xb8b4, 0x0000, 0xb8ac, 0xb8ae, 0xb8b5, 0xdfe0, 0xdfd3, + 0xdfce, 0x8f62, 0x974c, 0xdfbb, 0xdfba, 0xb8aa, 0xdfac, 0xb8a7, + 0xdfc4, 0xdfad, 0xdfc2, 0x0000, 0x0000, 0xdfb7, 0xdfdb, 0x91c7, + 0x955f, 0x0000, 0xb8a6, 0x0000, 0x0000, 0x0000, 0xdfb3, 0x0000, + 0x99bb, 0x0000, 0x0000, 0x0000, 0x0000, 0xdfaf, 0xdfd5, 0xdfae, + 0xbb60, 0xe3d3, 0x8e6d, 0x8f71, 0xe3c2, 0x0000, 0x94cb, 0xe3ac, + 0xe3ca, 0xbb58, 0xe3bb, 0xe3c5, 0xbb5b, 0xe3be, 0xbb59, 0xe3af, + 0xe3cd, 0xe3ae, 0xe3c1, 0x95b1, 0xe3ad, 0x0000, 0x0000, 0xe3bf, + 0xe3c8, 0xe3c6, 0xe3ba, 0xe3b5, 0xe3b3, 0x9af2, 0xe3b4, 0xe3c7, + 0xe3d2, 0xe3bc, 0xbb5a, 0x0000, 0xe3b7, 0x0000, 0xe3cb, 0x0000, + 0xbb5d, 0xe3b6, 0xe3b0, 0xe3c0, 0xbb61, 0x96c3, 0x99bd, 0xbb55, + 0xbb5e, 0xe3b8, 0xe3b2, 0x0000, 0xbb57, 0xdfd4, 0xbb56, 0xe3c3, + 0x0000, 0xbb54, 0xbb63, 0xbb5c, 0xe3c4, 0xe3b9, 0xe3b1, 0xe3cc, + 0xe3bd, 0xbb62, 0xe3d0, 0xbb5f, 0xe3cf, 0x0000, 0xe3c9, 0xe3ce, + 0x0000, 0x0000, 0xa0cf, 0xe3d1, 0x0000, 0x0000, 0x8f6d, 0x0000, + 0x0000, 0x99be, 0x8ef4, 0x0000, 0x8f72, 0x95e4, 0x0000, 0xe773, + 0xe774, 0xe767, 0xe766, 0xe762, 0xbdb4, 0x0000, 0xbdac, 0xe776, + 0xe775, 0xdfa9, 0xe75f, 0xe763, 0xe75d, 0x0000, 0xe770, 0xe761, + 0x99bf, 0xe777, 0xe75a, 0xe758, 0xe764, 0xe76e, 0xe769, 0xbdb6 +}; + +static const unsigned short big5hkscs_from_unicode_85[] = { + 0xe74f, 0x0000, 0xe76d, 0x9244, 0x0000, 0xfba5, 0xbdb7, 0xdfbd, + 0xe75b, 0xe752, 0xe755, 0xe77b, 0xe75c, 0xe753, 0xe751, 0xe74e, + 0x99c0, 0xbdb0, 0xe765, 0xbdaf, 0xbdb3, 0xe760, 0xe768, 0xbda9, + 0xe778, 0xe77c, 0xbdab, 0x0000, 0xe757, 0xe76b, 0xe76f, 0xe754, + 0xe779, 0xbdb2, 0x0000, 0xbdb1, 0xe74c, 0xbdb5, 0xe772, 0xe756, + 0xe76a, 0xe750, 0xe75e, 0xe759, 0xbdad, 0xbdae, 0xe76c, 0xe77d, + 0xe77a, 0xe771, 0x0000, 0xfdb4, 0x8f77, 0x0000, 0x0000, 0x0000, + 0x99c1, 0x0000, 0x0000, 0xe74d, 0x0000, 0xbdaa, 0xeb49, 0x0000, + 0xeb40, 0xeb43, 0xfab9, 0xbfbb, 0xeb45, 0xeaf9, 0xeb41, 0xeb47, + 0xbfb8, 0xbfbc, 0xbfb6, 0x8f40, 0xfa44, 0xeafb, 0xeb4c, 0x0000, + 0x0000, 0xeb46, 0x99c2, 0xeafc, 0xeb55, 0xeb4f, 0xeaf8, 0xee46, + 0xeafe, 0xbfb7, 0x8f5c, 0xeb4a, 0x0000, 0xeb54, 0xbfbf, 0x8cbd, + 0xeb51, 0xeafd, 0xeb44, 0xeb48, 0xeb42, 0xeb56, 0xeb53, 0xeb50, + 0xbfb9, 0xbfba, 0xbfbe, 0xeafa, 0xeb57, 0xbfbd, 0xeb4d, 0x99c4, + 0x99c5, 0xeb4b, 0x0000, 0x8f7b, 0x0000, 0xeb4e, 0xee53, 0xee40, + 0xee45, 0xee52, 0xee44, 0xedfb, 0xee41, 0x0000, 0xc1a2, 0x0000, + 0xedf4, 0xee4d, 0xee4f, 0xedf3, 0xc1a1, 0xee51, 0xee49, 0xc1a8, + 0xee50, 0xee42, 0xc1aa, 0xedf9, 0xeb52, 0xee4a, 0xee47, 0xedf5, + 0xee55, 0xc1a4, 0x0000, 0x0000, 0xc1a5, 0xedf7, 0xee48, 0x8cb6, + 0xee54, 0xee4b, 0xedfd, 0xc1a7, 0xc1a3, 0xee4c, 0xedfe, 0xee56, + 0xedf8, 0xee43, 0xee4e, 0xedfa, 0xedfc, 0x0000, 0xc2cb, 0xedf6, + 0xc1a9, 0xc2c4, 0xc17e, 0x0000, 0x0000, 0x0000, 0x0000, 0xc1a6, + 0xc2c8, 0xf0b3, 0x0000, 0xf0a9, 0xf0a4, 0xf0aa, 0xf0b4, 0xf0b8, + 0xf0b7, 0xc2ca, 0xc2c9, 0x0000, 0x0000, 0xf0ab, 0xf0b9, 0xf0ae, + 0xf0a6, 0x8fa3, 0xf0a8, 0xf0a7, 0xf0ad, 0xf0b2, 0xf0a5, 0xf0ac, + 0xf0b1, 0xc2c7, 0x0000, 0xf0af, 0x0000, 0xc2c5, 0xf0b0, 0xc2c3, + 0xc2c6, 0xf2d5, 0xf0b5, 0x0000, 0x0000, 0xc3c2, 0x8cce, 0xf2cd, + 0xf2d1, 0xf2c9, 0xf2cc, 0x0000, 0xf2d4, 0xc3c0, 0xf2d9, 0xf2d2, + 0x99c6, 0xf2ca, 0xf2da, 0xf2d3, 0xc3c3, 0xc3c4, 0xf2d7, 0x0000, + 0xf2cb, 0xc3bf, 0xc3c1, 0xf2c6, 0xf2ce, 0xf2c8, 0x96cd, 0xf2d8, + 0xf2d6, 0xf2c7, 0xf2cf, 0x0000, 0x0000, 0x0000, 0xf4be, 0xc3c5, + 0xf2d0, 0xc4a7, 0xc4a9, 0xc4a6, 0x96c7, 0xf4c3, 0xf4bb, 0xf4b9 +}; + +static const unsigned short big5hkscs_from_unicode_86[] = { + 0xf4bd, 0xf4ba, 0x8fa5, 0x0000, 0xf4bf, 0xf4c1, 0xc4aa, 0xc4ac, + 0x0000, 0xf4c0, 0xc4ad, 0xc4ab, 0xf4c2, 0xfabb, 0x0000, 0x8c61, + 0x9570, 0xc4a8, 0x0000, 0x0000, 0x9368, 0x0000, 0x8f7e, 0xc4f4, + 0xf5f1, 0xf5f7, 0xc4f6, 0xf4bc, 0xf5f6, 0x0000, 0xf5fd, 0xf5f4, + 0xf5fb, 0xf5fa, 0xf4b8, 0xf5f5, 0xf0b6, 0xf5fe, 0xf5f3, 0xf5f8, + 0x8faa, 0xf5fc, 0xf5f2, 0x0000, 0xf74a, 0xc4f5, 0xf5f9, 0xa050, + 0x0000, 0xf7f4, 0xf74b, 0xf749, 0xf747, 0xf748, 0xf74c, 0x0000, + 0xc5d9, 0xf7f2, 0xf7f0, 0xf7f5, 0xf7f3, 0x0000, 0xf7f6, 0xc5da, + 0xf7f1, 0x0000, 0x90d3, 0xf8bc, 0x0000, 0x9556, 0xf945, 0xf946, + 0xf947, 0x0000, 0x0000, 0xf9c7, 0xf9bd, 0xca4f, 0xaaea, 0x0000, + 0xad68, 0x0000, 0xd3b8, 0xd3b7, 0xb040, 0xb342, 0xd77c, 0x0000, + 0x0000, 0xd77b, 0x0000, 0xb5ea, 0xb8b8, 0x0000, 0xb8b7, 0xb8b9, + 0x0000, 0xe3d4, 0xe77e, 0xeb58, 0xeb5a, 0xeb59, 0x0000, 0xc1ab, + 0xee57, 0xf0ba, 0xf9a5, 0xa6e4, 0x8fb8, 0xcdc9, 0xcdca, 0xcdc8, + 0xcdc7, 0xaaeb, 0x99c8, 0xd0a9, 0xd0a7, 0x0000, 0x0000, 0xd0a6, + 0x0000, 0xad69, 0xad6b, 0xad6a, 0xd0a8, 0x0000, 0x8faf, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xd3c4, 0xd3c1, 0xd3bf, + 0x0000, 0x0000, 0xb041, 0xd3c2, 0xb046, 0xd3bc, 0xd3cb, 0x0000, + 0xd3cd, 0xd3bd, 0x99c9, 0xb043, 0xd3ce, 0xd3c9, 0xd3bb, 0xd3c0, + 0xd3ca, 0xd3c6, 0xd3c3, 0x0000, 0xb048, 0xd3cc, 0xd3be, 0x0000, + 0x9579, 0xd3c7, 0xd3b9, 0xb047, 0xb044, 0xd3c5, 0x0000, 0xd3c8, + 0xd3ba, 0xb045, 0xb042, 0x0000, 0x0000, 0x9f49, 0x0000, 0xb34c, + 0xd7a5, 0xb34b, 0x99ca, 0xd7a8, 0xd7ab, 0xb348, 0xb346, 0xd77e, + 0xd7a9, 0xd7a7, 0xd7a4, 0xd7ac, 0xd7ad, 0xd7af, 0xd7b0, 0xd77d, + 0xb345, 0xd7a2, 0xd7a1, 0xd7ae, 0xb347, 0xd7a3, 0xb349, 0xb344, + 0xd7a6, 0xb34d, 0x0000, 0xb34a, 0xd7aa, 0x0000, 0x0000, 0x0000, + 0xb5f1, 0xdbbf, 0x0000, 0xdbb4, 0xb5ee, 0x0000, 0xdfe7, 0xdbbd, + 0xdbb1, 0xb5ec, 0xdbb6, 0xb5ef, 0xdbba, 0xdbb8, 0xb5f2, 0xb5eb, + 0x0000, 0x0000, 0xdbb2, 0xdbb5, 0xb5f0, 0x0000, 0xdbb3, 0x0000, + 0xdbbe, 0xdbbc, 0xdbb7, 0xdbb9, 0xdbbb, 0xb5ed, 0x0000, 0x99cb, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xdfe8, 0xdfee, 0xdfe4, + 0xdfea, 0xb8ba, 0xdfe6, 0xb8c0, 0x0000, 0x0000, 0xb8bf, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_87[] = { + 0xb8be, 0xdfed, 0xb8c1, 0xb8c2, 0xdfe3, 0xdff0, 0xb8c3, 0xb8bd, + 0xb8bc, 0xdfec, 0xb8c4, 0xdfe2, 0xdfe5, 0xdfef, 0xdfeb, 0x0000, + 0x0000, 0xe3f4, 0xe3e9, 0xb8bb, 0x0000, 0x0000, 0x0000, 0x0000, + 0xbb6a, 0xe3dd, 0xe3f2, 0xe3de, 0xbb65, 0x0000, 0xe3db, 0x0000, + 0xe3e4, 0xe3dc, 0xbb67, 0xe3d6, 0xe3f1, 0xbb68, 0xe3ee, 0xe3ef, + 0xe3d7, 0xbb6d, 0xe3e6, 0x0000, 0xe3e0, 0xe3e7, 0xe3da, 0x0000, + 0xe3f3, 0xe3eb, 0xe3e5, 0xe3d5, 0xbb69, 0xe3ec, 0x0000, 0xbb6c, + 0xe3f0, 0x0000, 0xe3ea, 0xbb66, 0xe3e8, 0x0000, 0xe3e2, 0xbb64, + 0xe3d9, 0xe3e1, 0xe3ed, 0xe3df, 0x0000, 0x0000, 0xe3e3, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xbdc1, 0xdfe9, 0xe7b2, 0xe7bb, + 0xe7b1, 0xe7ad, 0xe7aa, 0xbdc2, 0xe7a8, 0xbb6b, 0xe7a1, 0xbdc0, + 0xe7a7, 0xbdbf, 0xe7ac, 0xe7a9, 0xe7b9, 0xe7b4, 0xe7ae, 0xe7b3, + 0xbdbb, 0xe7ab, 0xe7be, 0xe7a2, 0xe7a3, 0xe7ba, 0xbdbc, 0xe7bf, + 0xbdbe, 0xe7c0, 0xe7b0, 0xe3d8, 0xe7b6, 0xe7af, 0xe7b8, 0xe7b5, + 0x9dd5, 0x8fb0, 0x0000, 0xe7a6, 0xbdb9, 0xe7bd, 0xbdba, 0xe7a4, + 0xbdbd, 0xeb64, 0xe7b7, 0xe7bc, 0x0000, 0xfa7a, 0x0000, 0x0000, + 0x0000, 0xeb61, 0xbdb8, 0xbfc0, 0xeb6b, 0xeb67, 0x9e5f, 0xeb65, + 0xeb60, 0xeb6f, 0x0000, 0x99cd, 0xa0c9, 0xbfc4, 0x0000, 0xeb5c, + 0xeb68, 0xeb69, 0xeb5f, 0xeb5e, 0xeb6c, 0x0000, 0xeb62, 0xeb5d, + 0xeb63, 0x0000, 0xeb6e, 0xeb5b, 0xeb6d, 0xeb6a, 0xbfc2, 0xbfc1, + 0x0000, 0x0000, 0xbfc3, 0xeb66, 0xf0cb, 0x9adb, 0x0000, 0x0000, + 0x0000, 0xa0c6, 0xee59, 0xc1b1, 0xee5d, 0xee5a, 0xee61, 0xee67, + 0xee5c, 0x8fb4, 0xee70, 0xc1ae, 0xee6a, 0xee5f, 0xee6b, 0xee66, + 0xee6d, 0xee5e, 0xc1b3, 0xc1b2, 0xee60, 0xee6e, 0xee58, 0xee6c, + 0xc1ac, 0xa0d7, 0xee64, 0xee63, 0xee68, 0xee5b, 0xc1b0, 0x0000, + 0xc1b4, 0xee62, 0xee69, 0xc1b5, 0xee65, 0x0000, 0xa0c7, 0x0000, + 0x0000, 0xc1ad, 0xc1af, 0xf0c7, 0xf0c5, 0x0000, 0xa043, 0xf0cc, + 0xf0c9, 0xf0cd, 0x8fb5, 0xf0be, 0xf0c6, 0xf0d1, 0xee6f, 0xf0c2, + 0xc2cf, 0xe7a5, 0xf0bd, 0xf0ca, 0xf0c4, 0xf0c1, 0xf0bc, 0xf0bb, + 0xf0d0, 0x0000, 0xf0c0, 0xf0bf, 0xc2cd, 0xf0c8, 0x8fb2, 0xc2cc, + 0x0000, 0x0000, 0xc2ce, 0xf0c3, 0xf0cf, 0xa061, 0xf2de, 0xf2df, + 0x0000, 0xc3c9, 0xf2dc, 0xc3c6, 0xf2e4, 0x0000, 0xc3ca, 0xf2e6 +}; + +static const unsigned short big5hkscs_from_unicode_88[] = { + 0xf2db, 0xf0ce, 0xf2e8, 0xf2dd, 0x9e5e, 0xc3c7, 0xf2e3, 0x0000, + 0xf2e5, 0xf2e0, 0xf2e7, 0xf2e2, 0xf2e1, 0xc3c8, 0x0000, 0xa063, + 0xf4c5, 0xf4c6, 0x0000, 0xf4c8, 0xc4ae, 0xc4af, 0xf4c9, 0xf4c7, + 0x9fe8, 0xf4c4, 0x0000, 0xf642, 0xf645, 0xf641, 0x0000, 0xc4fa, + 0xf643, 0xc4f9, 0xc4f8, 0xc4f7, 0xf644, 0xf751, 0xf74f, 0x9cb2, + 0xf74e, 0xf640, 0xf750, 0xf646, 0xf74d, 0x957c, 0xf7f9, 0xf7d7, + 0xf7f7, 0xc5db, 0xf7f8, 0xf7fa, 0x0000, 0xf8bf, 0xc5fa, 0xf8be, + 0xf8bd, 0xc5fb, 0x0000, 0xc65a, 0xf96e, 0xf9a7, 0xf9a6, 0xf9a8, + 0xa6e5, 0xd0aa, 0x9fc7, 0xd3cf, 0xd3d0, 0x8fbb, 0x8fbc, 0x0000, + 0xdbc0, 0x0000, 0xf647, 0xf8c0, 0xa6e6, 0xad6c, 0xd0ab, 0x8fec, + 0x0000, 0x0000, 0xd7b1, 0xb34e, 0x0000, 0xdbc2, 0xdbc1, 0xb5f3, + 0x0000, 0xb8c5, 0xe7c1, 0xbdc3, 0x0000, 0xbdc4, 0x8fc0, 0x0000, + 0x936a, 0xbfc5, 0xc5fc, 0xa6e7, 0x8be4, 0x9c7c, 0x0000, 0xd0ac, + 0xaaed, 0xd0ae, 0xd0ad, 0xad6d, 0x0000, 0xd3d1, 0x95a1, 0xd3d8, + 0xb049, 0xd3d6, 0xd3d4, 0x0000, 0xd3db, 0xd3d2, 0xd3d3, 0xb04a, + 0x0000, 0xb04e, 0x0000, 0x0000, 0xd3dc, 0xb04d, 0xd3da, 0xd3d7, + 0xd3d5, 0xb04b, 0xb04c, 0xd3d9, 0xfeec, 0x0000, 0x0000, 0x95a3, + 0xb350, 0xd7b2, 0x0000, 0xb355, 0xd7c2, 0xb354, 0xd7c4, 0x8c45, + 0x8cb8, 0xd7b8, 0xb352, 0xd7c3, 0x0000, 0xd7b3, 0xb353, 0xd7bf, + 0xd7bb, 0xd7bd, 0xd7b7, 0xd7be, 0x8fc1, 0x0000, 0xb34f, 0xd7ba, + 0xa052, 0xd7b9, 0xd7b5, 0x0000, 0xd7c0, 0x0000, 0x0000, 0xd7bc, + 0xd7b4, 0x0000, 0xd7b6, 0xb351, 0xd7c1, 0x0000, 0x99d0, 0x0000, + 0x0000, 0xb5f6, 0xdbcd, 0x0000, 0x8fc3, 0x8fc4, 0xdbc9, 0xdbcb, + 0xdbc6, 0xdbc5, 0xdbc3, 0x0000, 0xdbca, 0xdbcc, 0xdbc8, 0x95a4, + 0xdbc7, 0xb5f4, 0xb5f5, 0x0000, 0x0000, 0x8fc6, 0x0000, 0x9e60, + 0x0000, 0xdbcf, 0xb8cd, 0xdff2, 0xdff8, 0xdff3, 0xdff4, 0xf9d8, + 0xdff9, 0x0000, 0xb8cf, 0x0000, 0xb8c7, 0xb8ce, 0xdff1, 0xdbc4, + 0xb8ca, 0xb8c8, 0xdff7, 0xdff6, 0xb8c9, 0xb8cb, 0xdff5, 0xb8c6, + 0x0000, 0xb8cc, 0x0000, 0x0000, 0x0000, 0x0000, 0x95a5, 0xe3f6, + 0xbb74, 0x0000, 0x0000, 0xe442, 0xe441, 0x0000, 0xe3fb, 0xbb76, + 0xe440, 0xe3f7, 0xe3f8, 0xbb6e, 0xbb70, 0x9cb3, 0xe3fd, 0xe3f5, + 0xbb72, 0xbb71, 0xe3f9, 0xe3fe, 0xe3fc, 0xbb73, 0xe3fa, 0x99d1 +}; + +static const unsigned short big5hkscs_from_unicode_89[] = { + 0xfef1, 0xdbce, 0xbb6f, 0x0000, 0x0000, 0xe7c2, 0xe7c9, 0xbdc6, + 0x0000, 0xe7cd, 0xbdca, 0xe7c5, 0xe7c3, 0x0000, 0xe7cc, 0x0000, + 0xbdc5, 0xe7cb, 0xbdc7, 0xbdc8, 0xe7c4, 0xbdc9, 0xe7ca, 0xe7c6, + 0xe7c7, 0xe7c8, 0xbb75, 0x0000, 0x0000, 0x0000, 0xeb70, 0xeb7c, + 0x0000, 0xbfca, 0xeb77, 0xeb79, 0x99d2, 0xbfc8, 0xeb71, 0xeb75, + 0x0000, 0xeb78, 0xbfc6, 0xbfc9, 0xeb7b, 0xeb73, 0xeb74, 0xeb7a, + 0xeb72, 0xeb76, 0xbfc7, 0xee72, 0x0000, 0xee71, 0xc1b7, 0xee77, + 0xc1b9, 0x0000, 0x0000, 0xc1b6, 0xee73, 0xc1ba, 0xee74, 0x0000, + 0x0000, 0xee75, 0xee78, 0x9cc2, 0xc1b8, 0x0000, 0xf0d6, 0x99d3, + 0x0000, 0xf0d9, 0x0000, 0xf0d3, 0xf0d5, 0x95a7, 0x0000, 0xf0d4, + 0xf0d7, 0xf0d8, 0xee76, 0xf0d2, 0x95a9, 0x0000, 0xc3cd, 0xf2ec, + 0xf2ef, 0xf2f1, 0xf2ea, 0xf2eb, 0xf2ee, 0xf2f0, 0xc3ce, 0xc3cc, + 0xc3cb, 0xf2ed, 0xf2e9, 0xf4ca, 0xc4b0, 0x95a6, 0xf4cb, 0x0000, + 0x0000, 0xf649, 0xc4fb, 0xf64b, 0xc4fc, 0xf648, 0xf64a, 0xc5a8, + 0x0000, 0xf752, 0xc5a7, 0xf7fd, 0xf7fc, 0x0000, 0xf7fb, 0x9c5d, + 0x0000, 0xf948, 0xf949, 0xf94b, 0xf94a, 0x0000, 0xca50, 0xa6e8, + 0x98e2, 0xad6e, 0xd7c5, 0xb5f7, 0x0000, 0xdffa, 0xc2d0, 0x8fc9, + 0xf2f2, 0xa0c2, 0x8fca, 0xa8a3, 0x0000, 0x0000, 0x0000, 0xb357, + 0x0000, 0x99d4, 0x0000, 0xb356, 0xa0b9, 0xdbd0, 0xb5f8, 0xdbd2, + 0xdbd1, 0x0000, 0x0000, 0xdffb, 0xb8d0, 0xe443, 0xe446, 0xe445, + 0x0000, 0xe444, 0xe7ce, 0xe7d0, 0xe7cf, 0x9b58, 0xbfcc, 0x8fcd, + 0x0000, 0xa0d4, 0xbfcb, 0x0000, 0xc1bb, 0xee79, 0xee7b, 0xee7a, + 0x0000, 0x0000, 0xc2d1, 0x0000, 0x0000, 0x0000, 0xf2f4, 0xf2f3, + 0x0000, 0xf4cc, 0xc4b1, 0x0000, 0x8fce, 0xc4fd, 0xf754, 0xf753, + 0xc65b, 0x8be5, 0x0000, 0x0000, 0x0000, 0x0000, 0x8979, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xa8a4, 0xd0af, 0xad6f, 0xd7c8, 0xd7c6, 0x0000, + 0x0000, 0xd7c7, 0xdbd4, 0xdbd5, 0xe043, 0xdbd3, 0x0000, 0xdffc, + 0xe041, 0xe040, 0xe042, 0xb8d1, 0xdffe, 0xdffd, 0xe044, 0x8fd0, + 0xe449, 0xe447, 0x0000, 0xe448, 0xe7d3, 0xe7d1, 0x0000, 0x0000, + 0xe7d2, 0xeb7d, 0xee7c, 0xee7d, 0xc2d2, 0x0000, 0xf2f5, 0xf4cd, + 0xc4b2, 0x0000, 0xf64c, 0xf755, 0xc5a9, 0x0000, 0xf7fe, 0xf94c +}; + +static const unsigned short big5hkscs_from_unicode_8a[] = { + 0xa8a5, 0x0000, 0xad71, 0xad72, 0xd0b0, 0x0000, 0x0000, 0xd0b1, + 0xad70, 0x0000, 0xb054, 0x0000, 0xb052, 0x0000, 0xb051, 0xb058, + 0xb050, 0xb059, 0xd3dd, 0xb056, 0x0000, 0xb053, 0xb057, 0xb055, + 0xb04f, 0x0000, 0x0000, 0xb35f, 0x95b6, 0xb359, 0xd7cc, 0xb35e, + 0x0000, 0x0000, 0xb360, 0xb35a, 0x0000, 0xb35b, 0x0000, 0xd7ca, + 0x0000, 0x99d6, 0xb358, 0x95e5, 0xd7cb, 0xb35d, 0x0000, 0x0000, + 0xd7c9, 0xb35c, 0x0000, 0x0000, 0xb644, 0x0000, 0xb646, 0x0000, + 0x99d7, 0xdbd8, 0xb645, 0xb5f9, 0xb5fd, 0x95b5, 0xb8e4, 0xe049, + 0xdbda, 0xb5fe, 0x0000, 0x0000, 0xdbdd, 0xdbde, 0xb643, 0x0000, + 0xdbe0, 0xa0ca, 0xdbe2, 0x0000, 0xdbe3, 0xdbd7, 0xdbd6, 0xdbe4, + 0xb642, 0xdbe1, 0xdbdf, 0x0000, 0xb640, 0xb5fb, 0xb647, 0xdbdb, + 0xdbdc, 0xdbd9, 0x0000, 0xb641, 0x0000, 0x0000, 0xb5fc, 0x0000, + 0xb5fa, 0xe048, 0xb8df, 0xb8da, 0x0000, 0x0000, 0xb8d5, 0x9ffd, + 0xb8e5, 0xb8d6, 0x0000, 0xb8d2, 0xb8e1, 0xb8de, 0xb8e0, 0x0000, + 0xb8d7, 0xb8dc, 0xb8d3, 0xb8d4, 0xe050, 0xe04d, 0xe045, 0xe04a, + 0x0000, 0xb8e2, 0xe051, 0xb8e3, 0xb8d9, 0x0000, 0xa058, 0xe047, + 0x0000, 0xe04f, 0xe04b, 0xe04e, 0xe04c, 0xb8dd, 0xe046, 0xb8d8, + 0x0000, 0x0000, 0x0000, 0xe44c, 0xbb78, 0xbb7b, 0x0000, 0xe44e, + 0x8fd6, 0xbba5, 0xe44d, 0xbb7d, 0x99d8, 0xbdcf, 0xe44f, 0x0000, + 0xbba4, 0xe44b, 0xbba6, 0x0000, 0x8fd3, 0x0000, 0xbb79, 0x0000, + 0xb8db, 0xbb7c, 0x0000, 0xbb7a, 0xbb7e, 0xbba2, 0xbb77, 0xbba7, + 0xbba3, 0x8fe5, 0xbba1, 0xe44a, 0x0000, 0x0000, 0x0000, 0x8fe9, + 0xbdd6, 0x0000, 0xbdd2, 0x0000, 0x99d9, 0x0000, 0xbdd9, 0x0000, + 0xe7d6, 0xbdda, 0xe7e2, 0xe7db, 0xbdcb, 0xe7e3, 0xe7dd, 0xbdd5, + 0xe7de, 0x0000, 0xbdd4, 0xe7e1, 0xbdce, 0xe7df, 0xe7d5, 0xbdcd, + 0xebaa, 0xbdd3, 0x0000, 0xbdd0, 0x0000, 0xbdd8, 0x0000, 0xe7d4, + 0x0000, 0xe7d8, 0xbdcc, 0xe7d7, 0xe7d9, 0xe7da, 0xbdd7, 0xe7dc, + 0xe7e0, 0xe7e4, 0x927c, 0xbddb, 0xbfd2, 0xeba5, 0xebab, 0xeba8, + 0xeb7e, 0xebac, 0xeba1, 0x0000, 0xeba7, 0x0000, 0xbfcd, 0xbfd3, + 0xebad, 0x0000, 0x9c45, 0xbfcf, 0x0000, 0xbfd9, 0xbfd4, 0xebaf, + 0xeba9, 0xbfd0, 0xeba2, 0xbfda, 0xeba3, 0xeba4, 0xbfdb, 0xbfd8, + 0xbdd1, 0x0000, 0xbfce, 0xebb0, 0xbfdc, 0x0000, 0xbfd5, 0xebae +}; + +static const unsigned short big5hkscs_from_unicode_8b[] = { + 0xbfd1, 0xbfd6, 0xbfd7, 0x0000, 0xc1c3, 0xeea4, 0xeead, 0xeeaa, + 0xeeac, 0x0000, 0xc1c0, 0xeea5, 0x8fde, 0xeeab, 0xc1bc, 0xeea7, + 0xc1c4, 0xeea3, 0xeea8, 0xeeaf, 0xeba6, 0xeea9, 0xeea2, 0xc1bd, + 0xeea1, 0xc1be, 0xeeb0, 0xc1bf, 0xeeae, 0xc1c2, 0xee7e, 0x8fdf, + 0xc1c1, 0x0000, 0xeea6, 0xf0dc, 0xf0ea, 0xf0e5, 0xf0e7, 0xf0db, + 0xc2d3, 0x0000, 0xf0da, 0xc2d6, 0xc2d5, 0xa04b, 0xf0e9, 0xf0e1, + 0xf0de, 0xf0e4, 0x0000, 0xf0dd, 0x0000, 0xf0df, 0xf0e8, 0xf0e6, + 0x0000, 0xc2d4, 0xf0ed, 0xf0eb, 0xf0e2, 0xf0ec, 0xf0e3, 0x8fe2, + 0xf2f9, 0xc3cf, 0xf341, 0xa0cc, 0x0000, 0xf64f, 0xc3d6, 0xf0e0, + 0xf2f7, 0xc3d2, 0xf2f8, 0xf2fd, 0x8fe3, 0x8fe4, 0xc3d4, 0xc3d5, + 0xf2f6, 0xf340, 0xf342, 0xf2fa, 0xf2fc, 0xf2fe, 0xf2fb, 0xf343, + 0xc3d1, 0xc3d7, 0xc3d3, 0x0000, 0xc3d0, 0xf4d0, 0x9bc4, 0xc4b7, + 0xf4ce, 0x0000, 0x9bfc, 0xf4d2, 0x0000, 0xf4d3, 0xc4b5, 0xf4d4, + 0xf4d1, 0x964c, 0xf4cf, 0xc4b8, 0xc4b4, 0xf4d5, 0x0000, 0xc4b6, + 0xc4b3, 0x0000, 0x0000, 0x0000, 0xc4fe, 0x0000, 0x0000, 0xc540, + 0xf64e, 0xf64d, 0xf650, 0xf651, 0x0000, 0xc541, 0xf756, 0xf75b, + 0xc5aa, 0x9af6, 0xf758, 0x8cae, 0xf757, 0xf75a, 0xf759, 0x0000, + 0xf843, 0x0000, 0xc5dc, 0xf842, 0xf840, 0x0000, 0xf841, 0x0000, + 0x8fe7, 0x0000, 0xc5fe, 0xc5fd, 0xf8c1, 0xf8c2, 0xc640, 0x0000, + 0xf94d, 0xf94e, 0xc667, 0x8fe8, 0xc66d, 0x0000, 0xf9a9, 0xf9c8, + 0x8be7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x897a, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x897b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_8c[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa8a6, + 0x0000, 0xd7cd, 0x0000, 0xd7ce, 0xe052, 0xe450, 0xe7e5, 0xc1c6, + 0x0000, 0xc1c5, 0xf0ee, 0xf344, 0x0000, 0xf844, 0xa8a7, 0xd3de, + 0xb05a, 0xb361, 0xe054, 0xe053, 0xbddc, 0xe7e6, 0xbddd, 0xeeb1, + 0xc2d7, 0x99da, 0x0000, 0x0000, 0xc676, 0xa8a8, 0xcdcb, 0xd3df, + 0x0000, 0x0000, 0xb362, 0x0000, 0xd7cf, 0xd7d0, 0x0000, 0xdbe5, + 0x0000, 0xb648, 0xb8e6, 0x0000, 0xe056, 0xe055, 0xe057, 0x0000, + 0xe451, 0xe452, 0xbba8, 0xbfdd, 0xbdde, 0xbfde, 0x0000, 0xeeb5, + 0xeeb2, 0xeeb4, 0xeeb3, 0xc1c7, 0x0000, 0xf0ef, 0xf346, 0xf345, + 0xcba4, 0xb05c, 0xb05b, 0xd3e0, 0x0000, 0xd7d1, 0x0000, 0x0000, + 0xdbe7, 0xdbe6, 0xb649, 0x0000, 0xe059, 0xe05a, 0xe058, 0x0000, + 0x0000, 0xb8e8, 0xb8e7, 0x0000, 0xbbaa, 0xbba9, 0x0000, 0xe7e7, + 0xebb3, 0xebb1, 0xebb2, 0xbfdf, 0xeeb7, 0xeeb6, 0x0000, 0xf0f2, + 0xf0f1, 0xf0f0, 0xf347, 0x8fed, 0xf9aa, 0xa8a9, 0xad73, 0x95c0, + 0xad74, 0xb05d, 0xb05e, 0xd3e2, 0xd3e1, 0xd7d2, 0x0000, 0xb368, + 0xb366, 0xb363, 0xb367, 0xb365, 0xb364, 0xa0cb, 0x0000, 0xb64a, + 0xdbea, 0x0000, 0xb8ed, 0xb64c, 0xb651, 0xdbec, 0xb653, 0xb652, + 0xb655, 0xdbeb, 0xdbe8, 0xb64f, 0xb64b, 0xb64d, 0xdbe9, 0xb654, + 0xb650, 0xb64e, 0xb8ef, 0xb8ee, 0xb8ec, 0xb8f0, 0x0000, 0xb8ea, + 0xb8eb, 0x0000, 0xb8e9, 0x0000, 0xe05b, 0x9e48, 0x0000, 0xe454, + 0x0000, 0xbbac, 0xbbad, 0xbbab, 0x99db, 0xe453, 0x8ff3, 0xe455, + 0x0000, 0xe7ea, 0xe7ec, 0x8ff9, 0xbde7, 0xe7ed, 0xbde0, 0xe7e9, + 0xbddf, 0xbde9, 0xbde5, 0xbde6, 0xbde2, 0xe7e8, 0xbde1, 0xe7ee, + 0xe7eb, 0x95c1, 0xbde8, 0xa04e, 0xbde3, 0xbde4, 0xebb5, 0x0000, + 0xebb7, 0xebb6, 0x99dc, 0xebb8, 0xbfe0, 0xebb4, 0x0000, 0xa064, + 0xc1cb, 0xeeb8, 0xc1c8, 0xc1cc, 0xc1ca, 0xc1c9, 0xf0f3, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_8d[] = { + 0xf0f6, 0x0000, 0xf0f5, 0x8ff7, 0xf0f4, 0xc2d8, 0xf348, 0xf349, + 0xc3d8, 0xf34a, 0xc3d9, 0x89b0, 0xa048, 0xc4ba, 0x0000, 0xc4b9, + 0xf652, 0x8ffb, 0x8ff6, 0xc542, 0xf653, 0xf75c, 0xc5ab, 0xc5ac, + 0x9ddc, 0xf845, 0x0000, 0xc642, 0x99dd, 0x8be8, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xa8aa, 0x0000, 0xb36a, 0xb369, + 0xe05c, 0xe05d, 0x0000, 0xbbae, 0xebb9, 0xbdea, 0xebba, 0xeeb9, + 0xa8ab, 0x0000, 0xd0b2, 0xad76, 0xad75, 0x0000, 0xd3e3, 0xb05f, + 0xd3e4, 0xd7d5, 0x92c1, 0xd7d4, 0x0000, 0xd7d3, 0x0000, 0x0000, + 0xdbee, 0xb658, 0x9fd6, 0x0000, 0xdbed, 0xb657, 0x0000, 0x0000, + 0x0000, 0xdbef, 0xb656, 0x0000, 0xe05f, 0xe062, 0xe060, 0xe061, + 0xe065, 0xe05e, 0xe066, 0xe063, 0xe064, 0xbbb0, 0xe456, 0x0000, + 0x0000, 0xbbaf, 0x0000, 0xe7f2, 0xe7f0, 0x0000, 0x0000, 0xbdeb, + 0xe7ef, 0xe7f1, 0x0000, 0xbdec, 0x0000, 0xebbb, 0xa0d2, 0xebbc, + 0xc1cd, 0x9040, 0xf34c, 0xf34e, 0xf34b, 0xf34d, 0xf4d6, 0xf654, + 0x0000, 0x0000, 0xf96f, 0xa8ac, 0xad77, 0xd3e5, 0xd3e7, 0xd3e6, + 0x0000, 0xd7d8, 0xb36c, 0x0000, 0xd7d6, 0x0000, 0xb36b, 0xd7d9, + 0x8ac4, 0xd7da, 0xd7d7, 0x99e0, 0x0000, 0xdbfb, 0xb660, 0xdbf3, + 0xdbf9, 0x0000, 0x0000, 0xb65b, 0xb65e, 0xdbf2, 0xb659, 0xdbf6, + 0xe06c, 0xb65d, 0x0000, 0xdbf1, 0x9ff0, 0xdbf7, 0xdbf4, 0xdbfa, + 0xdbf0, 0xdbf8, 0xb65c, 0xb65f, 0xdbf5, 0xb65a, 0x0000, 0xb8f2, + 0xe068, 0xb8f1, 0xe06f, 0xe06e, 0xb8f8, 0x0000, 0xb8f9, 0xe070, + 0xb8f3, 0xe06d, 0xb8f7, 0xe072, 0xe069, 0x0000, 0xe06b, 0xb8f4, + 0xe067, 0xe06a, 0xe071, 0xb8f5, 0xe073, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xb8f6, 0x0000, 0xbbb1, 0xe45b, 0xe461, 0xe459 +}; + +static const unsigned short big5hkscs_from_unicode_8e[] = { + 0xe462, 0x9ff3, 0xe458, 0xe45d, 0xe463, 0xe460, 0xe45f, 0xe45e, + 0x0000, 0xe457, 0xe45c, 0x0000, 0x0000, 0xe45a, 0x9dbf, 0xbdf1, + 0xbdee, 0xe7fb, 0xe841, 0xe843, 0xe840, 0xe7f8, 0xe7fa, 0xe845, + 0xe842, 0xe7fc, 0xe846, 0xe7f9, 0xe844, 0xbdef, 0xbdf5, 0xbdf3, + 0xe7f3, 0xbdf4, 0xbdf0, 0xe7f4, 0xe7f6, 0xe7f5, 0xe7fd, 0xe7fe, + 0x9ff6, 0xbdf2, 0x95c8, 0xbded, 0x0000, 0x9e5a, 0xe7f7, 0x0000, + 0xebc6, 0xbfe2, 0x0000, 0xebbd, 0xbfe3, 0xbfe6, 0xebc2, 0x0000, + 0xebbf, 0xbfe5, 0x99e3, 0x0000, 0xebc3, 0xebc4, 0xebbe, 0xebc7, + 0xebc0, 0xebc5, 0xbfe4, 0x0000, 0xbfe1, 0xebc1, 0x8a4a, 0xeebf, + 0xc1d0, 0xc1ce, 0xc1d1, 0xc1cf, 0xeebe, 0xeebb, 0xeeba, 0x9ff1, + 0xeebd, 0x0000, 0x0000, 0xeebc, 0xf145, 0xc2de, 0xf0fb, 0xf0fa, + 0x0000, 0xc2d9, 0xf141, 0xf140, 0xf0f7, 0xf143, 0xf0fc, 0xc2dd, + 0xf0f9, 0xf142, 0xf0f8, 0xc2da, 0xc2dc, 0xf0fd, 0xc2db, 0xf0fe, + 0x8aa7, 0xf144, 0xf352, 0x0000, 0xc3de, 0xf34f, 0x0000, 0xf353, + 0x0000, 0x99e6, 0xc3db, 0xf351, 0xc3e0, 0x9ff7, 0xc3dd, 0x9fed, + 0xf350, 0x0000, 0xc3df, 0xf354, 0xc3da, 0x0000, 0x8a5c, 0x0000, + 0x9dae, 0xc4bc, 0xc4be, 0x0000, 0xf4d9, 0xc4bd, 0xf4d7, 0xc3dc, + 0xf4d8, 0xc4bb, 0xc543, 0xc545, 0xf656, 0xc544, 0xf655, 0x0000, + 0xf761, 0xc5ad, 0xf760, 0xc5ae, 0xf75e, 0xf75d, 0xf762, 0xf763, + 0xf846, 0x0000, 0xf75f, 0x0000, 0x0000, 0xf8c6, 0xf8c3, 0xf8c4, + 0xf8c5, 0xc65c, 0x0000, 0xf951, 0xf950, 0xf94f, 0xf970, 0x95c9, + 0xf9be, 0xf9ab, 0xc66e, 0xa8ad, 0xb060, 0x9048, 0x0000, 0x0000, + 0x99e8, 0x0000, 0xb8fa, 0x0000, 0x0000, 0x0000, 0x9049, 0x0000, + 0x0000, 0x8cba, 0xbdf6, 0x0000, 0x90b1, 0xebc8, 0x0000, 0x0000, + 0xc2df, 0x0000, 0xf355, 0x904a, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf9ac, 0xa8ae, 0xaaee, 0xad79, 0xad78, 0x99ea, 0xb063, + 0x0000, 0xd3e8, 0xb061, 0xd3e9, 0xb062, 0x0000, 0x0000, 0xd7df, + 0xd7db, 0x0000, 0x9bd1, 0xb36d, 0xd7de, 0xd7dd, 0xd7dc, 0xb36e, + 0xd7e0, 0xd7e1, 0x99eb, 0x0000, 0x99ec, 0xdc43, 0xdc41, 0xdc45, + 0xdc46, 0xdc4c, 0x0000, 0xdc48, 0xdc4a, 0x99ed, 0xdc42, 0xdbfc, + 0x0000, 0xdc49, 0x99ee, 0x0000, 0xdc4b, 0xdc44, 0xdc47, 0xdbfd, + 0xb662, 0xdc40, 0xdbfe, 0xb661, 0xb663, 0x0000, 0xb8fd, 0xe075 +}; + +static const unsigned short big5hkscs_from_unicode_8f[] = { + 0xe077, 0xe076, 0xe07b, 0xb8fb, 0x0000, 0xe078, 0xe074, 0xe079, + 0xe07a, 0xb8fc, 0xb8fe, 0xe07c, 0x0000, 0xe467, 0xe466, 0x0000, + 0xe464, 0xe465, 0xbbb3, 0xbbb5, 0xbbb2, 0xbbb4, 0xe84d, 0xe84e, + 0xe849, 0x904c, 0xe84a, 0xbdf8, 0xbdfd, 0xbdf7, 0xbdfe, 0xbdf9, + 0xe84b, 0x0000, 0x0000, 0xe84c, 0xe848, 0xbe40, 0xbdfb, 0x0000, + 0x0000, 0xbdfa, 0xbdfc, 0x0000, 0xe847, 0x904d, 0xebca, 0xbfe8, + 0x95cb, 0x0000, 0xebcc, 0xbfea, 0xebcf, 0xebcb, 0xebc9, 0xebce, + 0xbfe9, 0xebcd, 0x0000, 0xbfe7, 0x0000, 0x0000, 0xc1d3, 0xc1d6, + 0xeec1, 0x97e2, 0xc1d4, 0xeec0, 0xc1d2, 0xc1d5, 0xf146, 0xf147, + 0xf148, 0xc2e0, 0x95cc, 0xf149, 0x0000, 0xc2e1, 0xc3e2, 0xf358, + 0xf359, 0xf357, 0xf356, 0xf35a, 0xc3e1, 0xf4dd, 0xf4db, 0xf4dc, + 0xf4de, 0xf4da, 0xf4df, 0xf658, 0x9f78, 0xf659, 0xf657, 0xc546, + 0xf764, 0xc5af, 0xf765, 0xf848, 0xf847, 0x0000, 0x897c, 0x897d, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x897e, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x995d, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xa8af, 0xb664, 0x0000, 0x0000, 0xb940, + 0x9b5a, 0x0000, 0x0000, 0xbbb6, 0x0000, 0x9050, 0xbfec, 0x8c4f, + 0xbfeb, 0x0000, 0x0000, 0x0000, 0x0000, 0xc3e3, 0xc47c, 0xc547, + 0xa8b0, 0xb064, 0xb941, 0x9054, 0xf35b, 0xc6d6, 0x9aa8, 0x99ef, + 0xfeeb, 0x9da3, 0x9da1, 0x9943, 0x9945, 0x0000, 0x9d7d, 0xcba6, + 0x0000, 0x99f0, 0xa8b1, 0x0000, 0xa8b4, 0xa8b3, 0xa8b2, 0x0000, + 0x0000, 0xcba5, 0x99f1, 0xcdcd, 0x99f2, 0xcdcf, 0xaaef, 0x8cbc, + 0x9d60, 0xaaf1, 0xcdcc, 0xcdce, 0xaaf0, 0xcdd1, 0xcdd0, 0xcdd2, + 0x0000, 0x0000, 0xa0a3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xd0b6, 0xd0b4, 0xad7c, 0xd0b3, 0xada3, 0xad7e, 0xad7b, 0x0000, + 0xada4, 0x0000, 0xad7d, 0xada2, 0x0000, 0xada1, 0xd0b5, 0x0000, + 0xad7a, 0x0000, 0x0000, 0x0000, 0xb06a, 0xd3eb, 0xd3f1, 0xb067, + 0xb06e, 0x905b, 0xb069, 0xd3ee, 0xd3f0, 0xb06c, 0xd3ea, 0xd3ed +}; + +static const unsigned short big5hkscs_from_unicode_90[] = { + 0xb068, 0xb065, 0xd3ec, 0xb06b, 0xd3ef, 0xb06d, 0xb066, 0x0000, + 0x9edb, 0x0000, 0x0000, 0xd7e3, 0xd7e6, 0xb370, 0x0000, 0xb37a, + 0xb376, 0xd7e4, 0x9d79, 0x0000, 0xb37e, 0xb377, 0xb37c, 0xb372, + 0x0000, 0xb36f, 0xb371, 0xb37d, 0xd7e5, 0xb375, 0xb378, 0xb374, + 0xb379, 0xd7e7, 0xb37b, 0xb373, 0xd7e2, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xdc4d, 0xb665, 0xdc4f, + 0x0000, 0xb667, 0xb669, 0x99f3, 0xdc4e, 0xb666, 0xb66a, 0x9062, + 0xb668, 0x0000, 0x0000, 0x0000, 0xb947, 0xe0a3, 0xb94f, 0xe07e, + 0x0000, 0xb950, 0xb945, 0x0000, 0xe0a1, 0x0000, 0x0000, 0xb94a, + 0x0000, 0xe0a2, 0xb943, 0xb942, 0x9f55, 0xb94d, 0xb94c, 0xb94b, + 0xb949, 0xb94e, 0xe07d, 0xb944, 0xb946, 0xb948, 0x9bf9, 0x0000, + 0xbbb8, 0xbbbb, 0x0000, 0xbbbf, 0xbbb9, 0xbbbe, 0xbbbc, 0x0000, + 0xbbb7, 0x9065, 0xbbbd, 0xbbba, 0x96e0, 0x0000, 0x0000, 0xe852, + 0xbe43, 0xbe41, 0x0000, 0xe853, 0x98be, 0xbe44, 0xbe42, 0xe851, + 0xe850, 0x0000, 0xbff0, 0xe84f, 0xbfee, 0xbfed, 0xebd0, 0xbe45, + 0xbfef, 0xebd1, 0xbff2, 0xebd2, 0xbff1, 0xc1d8, 0xeec3, 0xc1d7, + 0xc1dc, 0xc1da, 0xc1db, 0xc2e3, 0xc1d9, 0xeec2, 0xebd3, 0xc2e2, + 0xc2e4, 0x0000, 0xc3e4, 0xc3e5, 0x0000, 0xf4e0, 0x0000, 0xc5de, + 0xc5dd, 0xa8b6, 0x0000, 0x0000, 0xca55, 0xb06f, 0x0000, 0xca52, + 0xca53, 0xca51, 0x0000, 0xca54, 0x0000, 0x0000, 0xcbaa, 0xcba7, + 0xcbac, 0xcba8, 0xa8b7, 0xa8ba, 0x0000, 0xcba9, 0xa8b9, 0xcbab, + 0x9068, 0x0000, 0xa8b8, 0x0000, 0x0000, 0x0000, 0x906c, 0xcdd5, + 0xcdd7, 0xaaf4, 0xcdd3, 0xcdd6, 0xcdd4, 0xaaf2, 0xaaf5, 0x0000, + 0xaaf3, 0x0000, 0x0000, 0x95d8, 0x0000, 0xd0b8, 0xd0bc, 0xd0b9, + 0x0000, 0xada7, 0x0000, 0xada8, 0x906a, 0xd0bb, 0x0000, 0xd0bd, + 0xd0bf, 0x0000, 0xada5, 0xd0be, 0x0000, 0x0000, 0xada6, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xd7ee, 0xd0ba, 0xd3f2, 0xd3fb, + 0xd3f9, 0xd3f4, 0xd3f5, 0xd3fa, 0xd3fc, 0xb071, 0x0000, 0xd3f7, + 0xd3f3, 0xb070, 0xb072, 0xd3f6, 0xd3fd, 0xd3f8, 0x0000, 0x0000, + 0xb3a1, 0xd7f1, 0xd7e9, 0xd7ef, 0xd7f0, 0xb3a2, 0x0000, 0xd7e8, + 0xd7ea, 0xd0b7, 0xd7ec, 0xd7ed, 0xd7eb, 0xb66c, 0x0000, 0x0000, + 0x0000, 0xdc56, 0xebd4, 0xdc57, 0xdc54, 0xb3a3, 0xb66e, 0xdc53 +}; + +static const unsigned short big5hkscs_from_unicode_91[] = { + 0xdc59, 0xdc58, 0xb66b, 0xdc5c, 0xdc52, 0xdc5b, 0xdc50, 0xdc5a, + 0xdc55, 0xb66d, 0x0000, 0xe0aa, 0x0000, 0xe0a5, 0xe0ab, 0xe0a6, + 0xe0a4, 0xe0a7, 0xb951, 0x0000, 0xe0a9, 0x0000, 0xe0a8, 0xb952, + 0xbbc1, 0xbbc0, 0xe46e, 0xe471, 0xe469, 0xe46d, 0xbbc2, 0xe46c, + 0xe46a, 0xe470, 0xe46b, 0xe468, 0xe46f, 0x0000, 0xe859, 0xbe48, + 0xf14a, 0xe856, 0xe857, 0xe855, 0xdc51, 0xbe47, 0xe85a, 0xe854, + 0xbe46, 0xbe49, 0xe858, 0xebd5, 0xbff3, 0xebd6, 0xebd7, 0x0000, + 0xeec4, 0xc1dd, 0xf14b, 0xf14c, 0x0000, 0x0000, 0xf14d, 0xf35d, + 0xf35c, 0xf4e2, 0x0000, 0xf4e1, 0xf65b, 0xf65c, 0xf65a, 0xf766, + 0xc5b0, 0xa8bb, 0xadaa, 0xada9, 0xb075, 0xb074, 0xd440, 0xd441, + 0xd3fe, 0x9fb2, 0xb073, 0xd7f5, 0x0000, 0xd7f6, 0xd7f2, 0xb3a4, + 0xd7f3, 0x9fae, 0xd7f4, 0x0000, 0x9fb0, 0x0000, 0x89ad, 0xdc5f, + 0xdc61, 0xdc5d, 0xdc60, 0xb66f, 0xdc5e, 0xb670, 0x0000, 0x906e, + 0xdd73, 0xb955, 0xb954, 0x0000, 0xb953, 0x0000, 0xe0ac, 0xe0ad, + 0x9e71, 0x0000, 0xe473, 0xe475, 0xbbc6, 0xbbc3, 0x9e4a, 0xbbc5, + 0xbbc4, 0xe474, 0xe472, 0x0000, 0x9fdc, 0x0000, 0x0000, 0x0000, + 0xe861, 0xe85e, 0xe85f, 0xbe4d, 0xe860, 0xe85b, 0xe85c, 0xbe4a, + 0x0000, 0xbe4b, 0xe85d, 0xbe4c, 0x89ab, 0xebdb, 0x9fb8, 0xebdc, + 0xebd9, 0xebda, 0xbff4, 0xebd8, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xeec8, 0xeec5, 0xeec7, 0xc1e0, 0xeecb, 0xc1df, 0xeec9, + 0xeecc, 0xeeca, 0xeec6, 0xc1de, 0x0000, 0xf14f, 0x0000, 0xf150, + 0xf14e, 0x9070, 0xf152, 0xc2e5, 0xc2e6, 0xf35f, 0xc3e7, 0xf151, + 0xf35e, 0xc3e6, 0xf4e5, 0xf4e6, 0xc4bf, 0xf4e4, 0x8b63, 0xf4e3, + 0x0000, 0xf65d, 0xc548, 0x95dc, 0xf849, 0xf8c8, 0xf8c7, 0x0000, + 0xc643, 0xc65d, 0xf8c9, 0xf971, 0x9071, 0xc66f, 0xa8bc, 0xaaf6, + 0x0000, 0xb956, 0x0000, 0xc4c0, 0xa8bd, 0xadab, 0xb3a5, 0xb671, + 0xc2e7, 0xaaf7, 0x0000, 0xd0c1, 0xd0c0, 0xd442, 0xfc5e, 0xb078, + 0xb076, 0xb07a, 0xd444, 0x0000, 0xb079, 0xb077, 0x0000, 0x8949, + 0x0000, 0x0000, 0xd443, 0xb3a8, 0xd7fc, 0x965b, 0xb3a7, 0xb3a9, + 0xd842, 0xb3ab, 0xd7fe, 0xd840, 0xd7f7, 0xb3aa, 0xd843, 0x0000, + 0x0000, 0xd7f9, 0x0000, 0xd7fa, 0xd7f8, 0xb3a6, 0x8c50, 0xd841, + 0xd7fb, 0xd7fd, 0x94a6, 0x0000, 0x0000, 0xdc6d, 0x8fd5, 0xdc6c +}; + +static const unsigned short big5hkscs_from_unicode_92[] = { + 0xdc6a, 0xdc62, 0xdc71, 0xdc65, 0xdc6f, 0xdc76, 0xdc6e, 0xb679, + 0x9e73, 0xb675, 0xdc63, 0x0000, 0xdc69, 0xb677, 0x9075, 0xdc68, + 0xb678, 0xb67a, 0xdc6b, 0x99f7, 0xb672, 0xb673, 0xdc77, 0xdc75, + 0x0000, 0xdc74, 0xdc66, 0x0000, 0xdc72, 0x0000, 0xb676, 0x0000, + 0x0000, 0x8cbf, 0x0000, 0xb674, 0xdc73, 0xdc64, 0xdc67, 0xdc70, + 0x99f9, 0x0000, 0x9663, 0x95b9, 0x0000, 0xe4ba, 0xe0b7, 0x0000, + 0xe0b0, 0xe0c3, 0xe0cc, 0xe0b3, 0xb961, 0x94d4, 0xe0c0, 0xb957, + 0xb959, 0xb965, 0xe0b1, 0x0000, 0xfcfa, 0xb95a, 0xb95c, 0xb966, + 0xb95b, 0x9077, 0x0000, 0x0000, 0x90ab, 0xb964, 0xe0b9, 0x0000, + 0xe0ae, 0xb962, 0xe0b8, 0xb95e, 0xe0ca, 0xb963, 0xe0c8, 0xe0bc, + 0xe0c6, 0xb960, 0xe0af, 0xe0c9, 0xe0c4, 0x9d4d, 0xe0cb, 0xb958, + 0x99fa, 0x0000, 0xb967, 0xb95d, 0x0000, 0x92e3, 0xe0b5, 0x97bb, + 0xe0bd, 0xe0c1, 0x9078, 0xe0c5, 0xb95f, 0xe0b4, 0xe0b2, 0xe0be, + 0x0000, 0x0000, 0x0000, 0x99fb, 0xe0bb, 0xe0ba, 0x97e0, 0xe0bf, + 0xe0c2, 0x0000, 0xe0c7, 0x0000, 0x0000, 0x0000, 0xe478, 0x96dc, + 0xbbc7, 0xe4a4, 0xe47a, 0xbbcc, 0xbbd0, 0xe4ad, 0xe4b5, 0xe4a6, + 0xbbc8, 0x9ca8, 0xe4aa, 0xe0b6, 0x9772, 0xbbc9, 0xe4b1, 0xe4b6, + 0xe4ae, 0x9440, 0xe4b0, 0xe4b9, 0xe4b2, 0xe47e, 0xe4a9, 0x92f2, + 0x0000, 0xbbd1, 0x0000, 0xbbcd, 0xe47c, 0xe4ab, 0xbbcb, 0xe4a5, + 0xbbca, 0xe4b3, 0xe4a2, 0xe479, 0xbbce, 0xe4b8, 0x0000, 0x0000, + 0xe47b, 0xe4af, 0xe4ac, 0xe4a7, 0xe477, 0xe476, 0xe4a1, 0xe4b4, + 0xbbcf, 0xe4b7, 0xe47d, 0xe4a3, 0xbe52, 0x0000, 0x99fd, 0x0000, + 0x0000, 0x99fc, 0xbe5a, 0xbe55, 0xe8a4, 0xe8a1, 0xe867, 0xbe50, + 0x0000, 0xf9d7, 0x964a, 0xbe4f, 0xbe56, 0x0000, 0x96d8, 0x99fe, + 0xe865, 0xbe54, 0xe871, 0xe863, 0xe864, 0xbe4e, 0xe8a3, 0xbe58, + 0xe874, 0xe879, 0xe873, 0xebee, 0xe86f, 0xe877, 0xe875, 0xe868, + 0xe862, 0xe87d, 0xbe57, 0xe87e, 0x904b, 0xe878, 0x0000, 0xe86d, + 0xe86b, 0xe866, 0x0000, 0xfa41, 0x0000, 0xe86e, 0xe87b, 0xe86a, + 0xe87a, 0xe8a2, 0x0000, 0x9a40, 0xbe53, 0x975b, 0xe876, 0xe87c, + 0xe872, 0xe86c, 0xbe51, 0x9a41, 0x91dd, 0x0000, 0xe4a8, 0xe870, + 0xbe59, 0xe869, 0x93fc, 0x9a42, 0x9a43, 0x0000, 0x9659, 0xebf4, + 0xbff7, 0xebf3, 0xebf0, 0xec44, 0xbffb, 0x9a44, 0xec41, 0xebf8 +}; + +static const unsigned short big5hkscs_from_unicode_93[] = { + 0xec43, 0xebe9, 0xebf6, 0x9051, 0xbffd, 0x0000, 0xebe1, 0x94bf, + 0xebdf, 0xec42, 0x0000, 0xec40, 0xebfe, 0xebed, 0xebec, 0xebe2, + 0xc040, 0x0000, 0xebe8, 0xebf2, 0xebfd, 0xc043, 0xec45, 0x0000, + 0xc1e8, 0xc045, 0xbffe, 0xebe6, 0x0000, 0xebef, 0xebde, 0xebe0, + 0xbff5, 0xc042, 0xbffa, 0xebe7, 0xebf7, 0xebf1, 0xc041, 0xebdd, + 0xc1e3, 0xebf9, 0xebfc, 0xbffc, 0x90a2, 0xebeb, 0xc044, 0xbff9, + 0x9cab, 0x9776, 0x0000, 0xbff8, 0xebf5, 0xebfb, 0xbff6, 0x0000, + 0xebe4, 0xebfa, 0x0000, 0x0000, 0xebe5, 0x0000, 0x0000, 0x0000, + 0xfc55, 0xfe45, 0x94a8, 0x9a45, 0xfa4b, 0x9de1, 0xebea, 0xeed2, + 0x96d9, 0xeed7, 0xc1e5, 0xc1e7, 0xeedd, 0xc1e1, 0xeeec, 0xeee3, + 0xeed8, 0xeed9, 0xeee2, 0x0000, 0xc1ee, 0xeee1, 0xeed1, 0xeee0, + 0xeed4, 0xeeed, 0xc1ed, 0xc1eb, 0xeed5, 0x0000, 0xeee8, 0x9774, + 0xeeda, 0xeee7, 0xfdf5, 0xeee9, 0xeed0, 0xc1e6, 0x92e5, 0xeeea, + 0x9645, 0x91da, 0xeede, 0x90a3, 0xc1ea, 0xeedb, 0xa05f, 0x0000, + 0xc1ec, 0xeee4, 0x0000, 0x90af, 0x97bf, 0xc1e4, 0xeed6, 0xeee5, + 0x914c, 0xeedf, 0xebe3, 0xeee6, 0xeed3, 0x967a, 0xc1e9, 0x0000, + 0xeeeb, 0x91de, 0xc1e2, 0xeece, 0x9a46, 0xfeb0, 0x9779, 0x946c, + 0xf160, 0xf159, 0xc2e9, 0x0000, 0xf154, 0xf163, 0xf15b, 0xeedc, + 0x9858, 0xf165, 0xf155, 0x0000, 0xc2e8, 0xf15f, 0xc2ea, 0xc2f2, + 0xc2f0, 0xf161, 0xc2f1, 0xf157, 0x9266, 0xf158, 0xf15d, 0xf162, + 0x93fb, 0xeecd, 0xc2eb, 0xf16a, 0xf167, 0xf16b, 0xf15e, 0xf15a, + 0xf168, 0xf36a, 0xf15c, 0x0000, 0xc2ee, 0x9a47, 0xc2ed, 0xeecf, + 0xc2ef, 0xf164, 0xf166, 0xc2ec, 0xf169, 0xf153, 0x0000, 0xf156, + 0x9749, 0x0000, 0x0000, 0x9748, 0x0000, 0x934a, 0x0000, 0x9ce2, + 0xf373, 0x0000, 0xf363, 0xc3eb, 0xf371, 0x0000, 0x9264, 0xf361, + 0xc3ec, 0x0000, 0xf36c, 0x91df, 0xf368, 0xc3f1, 0xf372, 0xf362, + 0xf365, 0xc3e9, 0xf374, 0xfb79, 0xf36d, 0xf370, 0xc3ef, 0xc3f4, + 0xc3f2, 0xf369, 0xf364, 0x96d7, 0xc3ed, 0xc3ee, 0xf360, 0xc3ea, + 0x9343, 0xc3e8, 0xc3f0, 0xf36f, 0xc3f3, 0x0000, 0xf36b, 0xf375, + 0xc3f5, 0x0000, 0x0000, 0x0000, 0xf367, 0x0000, 0xf36e, 0x0000, + 0xfdcb, 0xfe7a, 0x0000, 0x91db, 0x8c6a, 0xf4f3, 0xf542, 0xf4f5, + 0xf4fc, 0xf366, 0xf4fa, 0xf4e9, 0xf540, 0xc4c3, 0xf4ed, 0xf4fe +}; + +static const unsigned short big5hkscs_from_unicode_94[] = { + 0xf4f4, 0x97af, 0x0000, 0xc4c2, 0x95dd, 0x0000, 0xf544, 0xf4f6, + 0x9348, 0xf4fb, 0xf4fd, 0xf4e7, 0xf541, 0xf4f2, 0xf4f7, 0xf4eb, + 0xf4ef, 0xf543, 0xf4f9, 0xf4e8, 0xf4ec, 0xf4ee, 0xf4f8, 0x9a4b, + 0xc4c1, 0xf4f1, 0x0000, 0xfc45, 0x0000, 0x9a4d, 0x0000, 0x0000, + 0xf4ea, 0x0000, 0x0000, 0x0000, 0x91bc, 0x90e2, 0x90b4, 0x95e1, + 0xf4f0, 0xf661, 0xf666, 0xc54f, 0xf668, 0x9a4e, 0xc549, 0x0000, + 0xf664, 0xf66a, 0xc54e, 0xc54a, 0x0000, 0xc54b, 0xf660, 0xf667, + 0xc54d, 0xf665, 0xc54c, 0xf65f, 0xf663, 0xf662, 0x9a4f, 0xf65e, + 0xf669, 0x0000, 0xfe40, 0xfe43, 0xc5b1, 0xf76d, 0xf770, 0xf76c, + 0xf76e, 0xf76f, 0xf769, 0xf76a, 0xf767, 0x96dd, 0x0000, 0xf76b, + 0xf768, 0xc5b2, 0xc5b3, 0x0000, 0x9a51, 0xf84b, 0x0000, 0xf84d, + 0x96a7, 0x0000, 0x0000, 0x90b0, 0x0000, 0xf84c, 0xf84e, 0x0000, + 0xc5e0, 0x0000, 0xf84a, 0xc5df, 0xc5e1, 0x9c4e, 0x0000, 0x9443, + 0xf8cb, 0xf8cc, 0xc644, 0xf8ca, 0x8eba, 0xf953, 0xf952, 0xf954, + 0xc65f, 0xf955, 0xc65e, 0xf956, 0xf972, 0xf975, 0xf974, 0xc668, + 0xf973, 0x9a52, 0x0000, 0xfcc1, 0xc672, 0xc670, 0xc671, 0xc677, + 0xf9c0, 0xf9c1, 0xf9bf, 0xf9c9, 0x0000, 0x8be9, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9caf, + 0x0000, 0x0000, 0x8bfd, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x9abc, 0x0000, 0x9ab8, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x9aae, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9aa7, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_95[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9a53, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9d74, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xaaf8, + 0x8bea, 0x0000, 0xd844, 0xdc78, 0xe8a5, 0xf376, 0x0000, 0x8beb, + 0xaaf9, 0x0000, 0xadac, 0xb07b, 0x0000, 0x90b2, 0xd845, 0x0000, + 0xd846, 0xb3ac, 0x0000, 0xb67d, 0xdc7a, 0xdc79, 0xb6a3, 0xb67c, + 0xdc7b, 0xb67e, 0xb6a2, 0xb6a1, 0xb67b, 0x0000, 0x95e9, 0x95e8, + 0xb968, 0x95e6, 0x0000, 0xe0d0, 0xe0ce, 0x0000, 0xe0cf, 0xe0cd, + 0x90b5, 0xbbd2, 0x9a54, 0xbbd5, 0xbbd7, 0xbbd6, 0x90b3, 0x95e7, + 0xbbd3, 0xbbd4, 0x8b50, 0xe8a7, 0xe8a6, 0xbe5b, 0xe8a8, 0x0000, + 0xe8a9, 0xbe5c, 0x0000, 0x0000, 0x0000, 0xec4d, 0xec4b, 0xeef3, + 0x0000, 0xec49, 0xec4a, 0xc046, 0xec46, 0xec4e, 0xec48, 0xec4c, + 0xeeef, 0x0000, 0x0000, 0xeef1, 0x0000, 0xeef2, 0xc1f3, 0xeeee, + 0xc1f2, 0xeef0, 0xc1ef, 0xc1f0, 0xc1f1, 0xec47, 0x0000, 0x0000, + 0xc2f5, 0xf16e, 0xf16c, 0xf16d, 0xc2f3, 0xc2f6, 0xc2f4, 0x0000, + 0x0000, 0x0000, 0xf377, 0xf378, 0xc3f6, 0x0000, 0xf545, 0xf547, + 0xf546, 0xc4c4, 0xc550, 0xf66d, 0xf66c, 0xf66b, 0x0000, 0x0000, + 0x8bec, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x9a56, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_96[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xaafa, 0x8bfb, 0xc9aa, 0x0000, + 0xca58, 0xa6e9, 0xca56, 0xca59, 0xca57, 0x0000, 0x0000, 0x0000, + 0xcbae, 0x0000, 0xa8c1, 0x0000, 0xa8c2, 0xcbb0, 0xa8bf, 0xcbaf, + 0xcbad, 0xa8c0, 0xa8be, 0x9a57, 0x0000, 0x0000, 0x0000, 0x0000, + 0xa0aa, 0xcdd8, 0xcddb, 0xaafd, 0xcdda, 0xcdd9, 0x0000, 0xaafc, + 0xaafb, 0x9fa6, 0xab40, 0xcddc, 0xaafe, 0x99cc, 0x0000, 0x0000, + 0x0000, 0x0000, 0xd0c6, 0xadae, 0xadaf, 0xadb0, 0xd0c7, 0xd0c3, + 0xadad, 0xd0c4, 0x0000, 0xd0c5, 0xd0c2, 0x0000, 0x9c59, 0x0000, + 0xb0a4, 0x0000, 0x0000, 0xb0a1, 0xd445, 0xb0a2, 0xb0a5, 0xd446, + 0x0000, 0xb07e, 0xb07c, 0xb07d, 0xb0a3, 0x0000, 0x0000, 0x0000, + 0x0000, 0x99b5, 0xb3ad, 0xd849, 0xb3b5, 0xd848, 0x0000, 0xd84b, + 0xb3b1, 0xd84a, 0xb6ab, 0xb3af, 0xb3b2, 0xb3ae, 0xb3b3, 0xb3b4, + 0xb3b0, 0x0000, 0x0000, 0x90be, 0xd847, 0xb6a7, 0xdc7d, 0x0000, + 0xdca3, 0x9faf, 0x0000, 0xdca2, 0xb6ac, 0xb6a8, 0xb6a9, 0xdc7c, + 0xdc7e, 0xdca1, 0xb6a4, 0xb6a6, 0x0000, 0xb6aa, 0xb6a5, 0x95f2, + 0x0000, 0xe0d3, 0xe0d1, 0xe0d2, 0xb96a, 0xb96b, 0x90bf, 0xe0d4, + 0xb969, 0xbbd8, 0x0000, 0xbbda, 0xbbd9, 0x0000, 0xe4bb, 0x0000, + 0x0000, 0xe4bc, 0xe8ab, 0x90c1, 0xe8aa, 0xfee4, 0x0000, 0xc047, + 0xc048, 0xec4f, 0xc049, 0x0000, 0xeef6, 0x0000, 0xeef4, 0x0000, + 0xeef5, 0xc1f4, 0x0000, 0xf16f, 0xc3f7, 0x0000, 0x90c4, 0x0000, + 0xc1f5, 0xab41, 0x0000, 0xb0a6, 0xd447, 0x90c7, 0x0000, 0xd84c, + 0xb3b6, 0xb6ad, 0xdca4, 0xdca6, 0xb6af, 0xb6ae, 0xb6b0, 0xb6b1, + 0xdca5, 0xb96e, 0xb96f, 0xb96d, 0xbbdb, 0xb96c, 0xe0d5, 0x0000, + 0x0000, 0x0000, 0xbbdc, 0xe8ac, 0xec50, 0xc04a, 0xc1f6, 0xf170, + 0xf174, 0xc2f9, 0xf171, 0xc2fa, 0xc2f8, 0xf175, 0xc2fb, 0xf173, + 0x0000, 0xf379, 0xc2f7, 0xc3f8, 0x0000, 0xf8cd, 0x0000, 0x0000, + 0xab42, 0xb3b8, 0xb3b7, 0x0000, 0x0000, 0x0000, 0x0000, 0xb6b2, + 0xdca8, 0xdca7, 0xb6b3, 0x0000, 0x92e4, 0xe0d9, 0xb973, 0xb970, + 0xe0d8, 0xb972, 0xe0d6, 0xb971, 0x0000, 0xe0d7, 0x0000, 0xe4bd +}; + +static const unsigned short big5hkscs_from_unicode_97[] = { + 0xbbdd, 0x0000, 0xe8af, 0x9f52, 0xbe5d, 0xe8ad, 0xbe5e, 0xbe5f, + 0xe8ae, 0xbe60, 0x0000, 0xec51, 0x0000, 0xc04e, 0xc04b, 0xc050, + 0xec53, 0xc04c, 0xec52, 0xc04f, 0x0000, 0x0000, 0xc04d, 0x0000, + 0xeef9, 0xeefb, 0x0000, 0x90db, 0xc1f7, 0xeefa, 0xc1f8, 0xeef8, + 0xeef7, 0xa066, 0xf177, 0xf176, 0xc2fc, 0xf178, 0xf37e, 0xc3fa, + 0xf37d, 0xf37a, 0xc3f9, 0xf37b, 0xf37c, 0x0000, 0xf548, 0xf549, + 0xc4c5, 0x90d2, 0xc553, 0x0000, 0x0000, 0xf66e, 0x90d4, 0x0000, + 0xc551, 0xc552, 0xf66f, 0x0000, 0x0000, 0xc5b4, 0xc5b5, 0xf771, + 0x9a5b, 0x95fd, 0xc645, 0xf8cf, 0xc647, 0x0000, 0xf8ce, 0xf8d0, + 0xc646, 0xf957, 0x0000, 0xf9ad, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8bc4, 0xab43, 0x0000, 0x0000, 0x8c66, 0xb974, 0x90de, + 0xe4be, 0x0000, 0xe8b0, 0xc051, 0xc052, 0x9ce4, 0xab44, 0x90e1, + 0xbe61, 0xc3fb, 0xadb1, 0x0000, 0x0000, 0x0000, 0xc053, 0x0000, + 0xc5e2, 0xadb2, 0xd84d, 0x0000, 0xdca9, 0x9e46, 0xdcab, 0x0000, + 0xdcaa, 0x9651, 0xe0dd, 0xe0da, 0xb975, 0x0000, 0xb976, 0xe0db, + 0xe0dc, 0x0000, 0xe4c0, 0xe4c5, 0xbbde, 0xe4bf, 0xe4c1, 0xe4c8, + 0xe4c3, 0xe4c7, 0xe4c4, 0xe4c2, 0xe4c6, 0xbbdf, 0x0000, 0xfb58, + 0xe8b3, 0x90e6, 0xe8b1, 0xbe63, 0x0000, 0xbe62, 0xe8b2, 0xbe64, + 0x0000, 0x0000, 0x0000, 0x0000, 0xec56, 0x0000, 0x0000, 0xec55, + 0xc054, 0xec54, 0xeefc, 0x9650, 0xeefe, 0xef41, 0xef40, 0x90e7, + 0xc1f9, 0xeefd, 0xf1a1, 0xc2fd, 0xf17d, 0xf1a2, 0xc2fe, 0x0000, + 0xf17b, 0x0000, 0xf17e, 0xf17c, 0xf179, 0xc340, 0xf17a, 0x0000, + 0x0000, 0x90e8, 0x9a5d, 0xf3a1, 0x9f7a, 0x0000, 0xf3a3, 0xf3a2, + 0x9b5c, 0xf54a, 0x9f7c, 0xf54b, 0x0000, 0xfc52, 0x90e9, 0xf670, + 0x90ea, 0xc5b7, 0x9a5e, 0xc5b6, 0xf84f, 0xf850, 0xc648, 0xf8d1, + 0x9f76, 0xc669, 0x0000, 0xadb3, 0xb6b4, 0xe4ca, 0xe4c9, 0xe8b5, + 0xe8b4, 0x0000, 0x90eb, 0xc1fa, 0xef43, 0xef42, 0xf1a5, 0xf1a3, + 0xf1a6, 0xf1a4, 0x0000, 0x0000, 0xc3fc, 0xf3a4, 0xf3a5, 0xf3a6, + 0x90ec, 0xf671, 0x0000, 0xf772, 0x0000, 0xf8d2, 0x8bee, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xadb4, 0x90ee, 0x0000, + 0xec57, 0xef44, 0x91c6, 0xadb5, 0x0000, 0x90f2, 0xbbe0, 0x0000, + 0xec58, 0xc341, 0xf1a7, 0xc3fd, 0x0000, 0xf54c, 0xf54d, 0xc554 +}; + +static const unsigned short big5hkscs_from_unicode_98[] = { + 0xf851, 0xadb6, 0xb3bb, 0xb3bc, 0xd84e, 0xb6b5, 0xb6b6, 0xdcac, + 0xb6b7, 0x0000, 0xb97a, 0x0000, 0xb97c, 0xe0df, 0xe0e0, 0xe0de, + 0xb977, 0xb978, 0xb97b, 0xb979, 0xfcbc, 0x8a74, 0xe4cb, 0xbbe1, + 0xbbe2, 0x0000, 0x0000, 0xe8bc, 0xbe67, 0xe8b7, 0xe8b6, 0x9657, + 0xe8bb, 0xbe65, 0x0000, 0x9cef, 0xc05b, 0x0000, 0xe8b8, 0xe8bd, + 0xe8ba, 0xe8b9, 0x0000, 0xbe66, 0x0000, 0xc059, 0x9fdf, 0xec5a, + 0xc055, 0x0000, 0xec5b, 0x90f7, 0x90f6, 0xec59, 0x0000, 0xc058, + 0xc056, 0xc05a, 0x0000, 0xc057, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xef45, 0x0000, 0xef4a, 0xef46, 0xef49, 0xc1fb, 0x9b5e, + 0xedd4, 0xef48, 0xef47, 0x90f8, 0xc344, 0xc342, 0xc345, 0xc343, + 0xf1a8, 0xf1a9, 0xf1aa, 0xc346, 0x0000, 0x0000, 0x0000, 0xf3aa, + 0xc440, 0xf3a8, 0x0000, 0xc441, 0xf3a7, 0xf3a9, 0xc3fe, 0xf551, + 0xf54e, 0x0000, 0xf54f, 0xf550, 0xf672, 0xc556, 0x90f9, 0xc555, + 0x8cc9, 0xf774, 0xf773, 0xc5b8, 0xfa6a, 0x0000, 0x0000, 0xc5e3, + 0xc649, 0xc660, 0xf958, 0xf9ae, 0xf9af, 0x8bef, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xadb7, 0xdcad, 0x0000, 0x0000, 0xe0e1, 0xe4cc, 0xe4cd, 0xbbe3, + 0x0000, 0xbbe4, 0xe8be, 0xbe68, 0x9fe0, 0x0000, 0xc1fc, 0x9142, + 0xf1ab, 0x9a62, 0xc347, 0xf3ad, 0xc442, 0xf3ac, 0xf3ae, 0xf3ab, + 0xf675, 0xf552, 0xf553, 0x9569, 0xc4c6, 0x0000, 0xf674, 0x9144, + 0x9143, 0xf673, 0x9141, 0xf775, 0xf9b0, 0x0000, 0x8bf0, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xadb8, 0x9660, 0x0000, 0x8bf1, 0xadb9, + 0x99f6, 0x9149, 0xb0a7, 0xd448, 0x0000, 0xd84f, 0x914a, 0xb6b8, + 0x0000, 0xb6bb, 0xb6b9, 0xdcae, 0x914b, 0xb6bd, 0x0000, 0xb6ba, + 0x0000, 0x9a64, 0xb6bc, 0x0000, 0xb97e, 0x8abf, 0xe0e2, 0x0000, + 0x0000, 0xe0e3, 0xe8c0, 0x0000, 0xb97d, 0xb9a1, 0xb9a2, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_99[] = { + 0xe4cf, 0x0000, 0xe4ce, 0xbbe5, 0x0000, 0xbbe6, 0x0000, 0xe4d0, + 0xe8bf, 0xbbe8, 0xbe69, 0x0000, 0xbbe7, 0x0000, 0x9a66, 0x0000, + 0xc05c, 0xe8c1, 0xbe6b, 0xbe6a, 0xe8c2, 0xe8c5, 0xe8c3, 0xe8c4, + 0xbe6c, 0x9a67, 0xc061, 0xc05f, 0x9a69, 0x0000, 0xc05e, 0xec5d, + 0x0000, 0xc060, 0x0000, 0x0000, 0xec5c, 0xef4b, 0x0000, 0xec5e, + 0xc05d, 0xec5f, 0xef4e, 0xef4c, 0xef4d, 0xef52, 0xc34b, 0xef51, + 0xef54, 0xef53, 0xef50, 0xef4f, 0x0000, 0xc1fd, 0x0000, 0x9a6a, + 0x9652, 0x914d, 0xf1ae, 0x9666, 0xf1ad, 0xc34a, 0xc348, 0xc349, + 0x9f7b, 0xf1ac, 0x9a6b, 0xf3b1, 0x0000, 0xc443, 0x0000, 0xf3b0, + 0xf3af, 0xc444, 0xa06c, 0xf558, 0xf557, 0x9667, 0xf555, 0x0000, + 0xf554, 0xc4c8, 0xc4c7, 0xf559, 0xf776, 0xc5b9, 0xf677, 0xc557, + 0xf676, 0xf556, 0x0000, 0xf777, 0xc5e4, 0x9a6c, 0xc661, 0xf959, + 0x0000, 0xf9b1, 0x9a6d, 0x8bf2, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xadba, 0xd850, + 0xef55, 0xadbb, 0x0000, 0x966a, 0xe4d2, 0xe4d1, 0xec60, 0x0000, + 0x0000, 0xef57, 0x0000, 0xef56, 0xfcea, 0xc34c, 0xf3b2, 0xf3b3, + 0xc4c9, 0x0000, 0x966c, 0xf9b2, 0xb0a8, 0xb6bf, 0xb6be, 0xe0e4, + 0xe0e6, 0xb9a4, 0xe0e5, 0xb9a3, 0xb9a5, 0xe0e7, 0x0000, 0x0000, + 0x91c4, 0xe4d4, 0xe4d6, 0xe4d5, 0x9677, 0xe4d8, 0x0000, 0x0000, + 0x0000, 0xbbe9, 0xe4d7, 0xe4d3, 0x99f4, 0x9a6f, 0x0000, 0xe4d9, + 0x0000, 0xe8cc, 0x0000, 0xe8cf, 0xe8d1, 0xe8c7, 0xe8cb, 0xe8c8, + 0xbe6e, 0xbe71, 0xbe73, 0xe8c9, 0xe8ca, 0xbe72, 0xe8cd, 0xe8d0, + 0xe8ce, 0xbe74, 0x9fab, 0xbe70, 0xe8c6, 0xbe6d, 0x0000, 0xbe6f, + 0x8cbe, 0x8ec1, 0xc063, 0xec66, 0xec64, 0xec63, 0x9555, 0xec69, + 0x0000, 0xec68, 0xec67, 0x0000, 0xec62, 0xc062, 0xec61, 0x0000, + 0xec65, 0xc064, 0x0000, 0x0000, 0xef5a, 0x9152, 0xef5e, 0xef5b, + 0xef5d, 0xef5c, 0xef59, 0xef5f, 0xef62, 0xef60, 0xef61, 0xc240 +}; + +static const unsigned short big5hkscs_from_unicode_9a[] = { + 0x0000, 0xc1fe, 0xef58, 0xef63, 0xf1b3, 0xf1b6, 0xf1b8, 0xf1b7, + 0x0000, 0xf1b1, 0xf1b5, 0xf1b0, 0x9153, 0xf1b2, 0xc34d, 0xf1af, + 0x9155, 0xf1b4, 0x0000, 0x0000, 0xf3c0, 0xf3b5, 0xc445, 0x0000, + 0x0000, 0xc446, 0xf3b4, 0xf3b9, 0xf3bf, 0xf3b7, 0xf3be, 0x955d, + 0xf3bb, 0x9671, 0xf3ba, 0xf3bd, 0xf3b8, 0xf3b6, 0x9c6d, 0xf3bc, + 0x0000, 0xf560, 0xf55e, 0xc4ca, 0xf55d, 0xf563, 0xf561, 0x9673, + 0xc4cb, 0xf55c, 0xf55a, 0x0000, 0xf55b, 0xc4cd, 0xf55f, 0xc4cc, + 0xf562, 0xf678, 0xf67e, 0x9154, 0x9a71, 0xf679, 0xc55b, 0xf6a1, + 0xc55a, 0xf67d, 0xf67c, 0xc559, 0xf67b, 0xc558, 0xf67a, 0x0000, + 0xf77d, 0xf7a1, 0xf77e, 0x0000, 0xf77b, 0xc5bb, 0xf778, 0xf77c, + 0xf7a3, 0x0000, 0xf7a2, 0xf779, 0xf77a, 0xc5ba, 0xf852, 0xc5e7, + 0x9156, 0xf853, 0xc5e5, 0xc5e6, 0x966d, 0x0000, 0xf8d3, 0xc64a, + 0xf976, 0x0000, 0xc66a, 0x9557, 0xf9b3, 0xc66b, 0xf9b4, 0xf9b5, + 0xf9c3, 0xf9c2, 0xc67a, 0xf9cd, 0x89c6, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x89c7, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xb0a9, 0x0000, 0x0000, 0xe0e9, 0x0000, 0xe0e8, 0x0000, 0xbbea, + 0xbbeb, 0xe4da, 0x8a6a, 0xe8d2, 0xec6c, 0x0000, 0x8b57, 0xbe75, + 0xc065, 0xec6a, 0x9fe1, 0xec6d, 0xc066, 0x9b5f, 0xef64, 0xec6b, + 0xf1b9, 0xc34e, 0xf3c1, 0x0000, 0x0000, 0x0000, 0xf566, 0xf564, + 0x0000, 0x0000, 0xf565, 0x0000, 0x0000, 0xf6a2, 0x0000, 0xc55c, + 0xf7a4, 0xc5ea, 0xc5bc, 0xc5e8, 0xc5e9, 0xf8d4, 0xc662, 0xa05d, + 0xb0aa, 0x0000, 0x0000, 0x0000, 0xf1ba, 0x0000, 0x0000, 0xd449, + 0x915b, 0xb9a6, 0x915c, 0xe4db, 0x0000, 0x0000, 0xbbec, 0xe4dc, + 0x0000, 0x0000, 0x0000, 0xe8d4, 0xe8d3, 0xc068, 0xbe76, 0xbe77, + 0x0000, 0xe8d7, 0xe8d6, 0xe8d5, 0x915e, 0x0000, 0xec6e, 0xec71, + 0x0000, 0xec70, 0xec6f, 0xc067, 0xef68, 0xef66, 0xef65, 0x9f5c +}; + +static const unsigned short big5hkscs_from_unicode_9b[] = { + 0x0000, 0xef67, 0x9f57, 0xc34f, 0xf1bc, 0xf1bd, 0xc350, 0x0000, + 0xf1bb, 0x9f65, 0xf3c3, 0xf3c2, 0xf3c5, 0xc447, 0xf3c4, 0x9a72, + 0xf567, 0xf569, 0xf568, 0x0000, 0x9160, 0xf6a3, 0xf6a6, 0xf6a4, + 0xf6a5, 0xf7a5, 0xc5bd, 0x0000, 0x0000, 0x0000, 0xf854, 0xf855, + 0xf856, 0x0000, 0xc64b, 0xc663, 0xf9b6, 0xb0ab, 0x0000, 0xbe78, + 0xc069, 0xf1be, 0x9f5e, 0xf7a6, 0x0000, 0x9161, 0xf9c4, 0xd44a, + 0x0000, 0xc67b, 0xb0ac, 0xec72, 0x9164, 0xf1bf, 0x0000, 0xf3c6, + 0x0000, 0x9f41, 0xf6a7, 0xf7a7, 0xb0ad, 0x0000, 0xe4dd, 0xe4de, + 0x9169, 0xbbed, 0xbbee, 0xe8d9, 0xbe7a, 0xbe79, 0xe8d8, 0x0000, + 0xef69, 0x0000, 0xf1c0, 0xf1c2, 0xf1c1, 0xc353, 0xc352, 0xc351, + 0x9168, 0xc55e, 0xf6a8, 0x0000, 0xc55d, 0xf7a9, 0xf7a8, 0x0000, + 0xc64c, 0xf8d5, 0xb3bd, 0xe0ea, 0x0000, 0x0000, 0x0000, 0xe4e1, + 0xe4df, 0xe4e0, 0x0000, 0x0000, 0xe8e2, 0x0000, 0xe8dd, 0xe8da, + 0xe8e1, 0x9a74, 0x0000, 0x0000, 0xe8e3, 0x0000, 0x0000, 0xbe7c, + 0xe8e0, 0xe8dc, 0x0000, 0x0000, 0xe8db, 0xe8df, 0xe8de, 0xbe7b, + 0x0000, 0x0000, 0xec7d, 0xec78, 0xec76, 0xeca1, 0xec77, 0x96b2, + 0xec73, 0x9a75, 0xec79, 0xfda5, 0x0000, 0xec74, 0xef72, 0xec75, + 0xeca2, 0x0000, 0x0000, 0x9ee9, 0x0000, 0x8bba, 0x916d, 0xa060, + 0xec7c, 0xc06a, 0xec7b, 0xec7a, 0x0000, 0xec7e, 0x0000, 0x9fde, + 0x0000, 0x0000, 0xef6a, 0xef6d, 0x0000, 0x9fc3, 0xef6c, 0x96b5, + 0xef74, 0xef6f, 0xef73, 0x0000, 0xef71, 0xef70, 0xef6e, 0x0000, + 0xef6b, 0x0000, 0xc243, 0xc242, 0x0000, 0xc244, 0xc241, 0xef75, + 0xa067, 0x0000, 0x0000, 0x0000, 0x0000, 0xf1c8, 0xf1cb, 0x0000, + 0xf1c9, 0xf1cd, 0x0000, 0x0000, 0x0000, 0xf1ce, 0x0000, 0xf1c6, + 0xc358, 0xf1c7, 0x0000, 0xf1c5, 0xf1cc, 0x0000, 0xf1c4, 0xf1c3, + 0xc357, 0xc355, 0xc354, 0x0000, 0x0000, 0x0000, 0x0000, 0x96b3, + 0x0000, 0x0000, 0x0000, 0xf1ca, 0xf3cf, 0xf3d5, 0xc44a, 0xf3d0, + 0x0000, 0xf3d3, 0xf3d7, 0xc44b, 0xf3d2, 0x9a76, 0xf3ca, 0x0000, + 0xf3c9, 0xf3d6, 0xf3cd, 0x0000, 0xf3cb, 0xf3d4, 0xf3cc, 0xc449, + 0xc448, 0x95d5, 0xf3c7, 0xf3c8, 0xf3d1, 0x9eca, 0x0000, 0x0000, + 0xf3ce, 0x9a77, 0x0000, 0x0000, 0x9a78, 0x0000, 0x0000, 0xf56c, + 0xf56f, 0x0000, 0x0000, 0x0000, 0x0000, 0xc356, 0x0000, 0x9170 +}; + +static const unsigned short big5hkscs_from_unicode_9c[] = { + 0x0000, 0x0000, 0x916f, 0x0000, 0x0000, 0xf56d, 0xf573, 0xf571, + 0xf56b, 0xf576, 0x9fa3, 0xf56a, 0x9171, 0xc4cf, 0xf572, 0x0000, + 0x96b1, 0x0000, 0xf56e, 0xc4ce, 0xf575, 0x9f63, 0x0000, 0xf574, + 0x0000, 0x0000, 0x0000, 0x9f67, 0xf6ab, 0xf6aa, 0x0000, 0x8bb9, + 0x9a7a, 0xf6b1, 0x0000, 0xf6ad, 0xf6b0, 0xc560, 0x8b56, 0x0000, + 0xf6ae, 0xf6af, 0x0000, 0xf6a9, 0xf6ac, 0xc55f, 0x0000, 0x9ada, + 0x0000, 0xc5bf, 0xf7b4, 0xf7af, 0xf7b3, 0x96b0, 0xf7b6, 0xf7b2, + 0x0000, 0xf7ae, 0x9a7e, 0xc5c1, 0xf7b1, 0xf7b5, 0xc5c0, 0xf7ac, + 0xf570, 0xf7b0, 0x0000, 0x0000, 0xf7ad, 0x9dde, 0xf7aa, 0x0000, + 0xf7ab, 0xc5be, 0xf85a, 0xf85c, 0xf85f, 0xf85b, 0xf860, 0x96ad, + 0xf859, 0x0000, 0xf857, 0x96ae, 0xc5eb, 0xf85d, 0xc5ed, 0xc5ec, + 0xf858, 0xf85e, 0x0000, 0x0000, 0x0000, 0x9ea1, 0xf8da, 0xc64d, + 0xf8db, 0x0000, 0xf8d9, 0xf8d6, 0x0000, 0x0000, 0xf8d8, 0xf8d7, + 0xf95a, 0x0000, 0x0000, 0x0000, 0x0000, 0xf95c, 0xf95b, 0x0000, + 0x0000, 0xf979, 0x9e50, 0xf978, 0xf977, 0xf97a, 0x0000, 0xc673, + 0xc674, 0xf9ca, 0xf9ce, 0x96af, 0x8bf4, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xb3be, 0xdcaf, 0xe0ed, + 0x0000, 0xb9a7, 0xe0eb, 0x0000, 0x0000, 0xe0ec, 0x0000, 0x0000, + 0x0000, 0xe4e2, 0xe4e3, 0xbbf1, 0xbbef, 0xe4e4, 0xbbf0, 0xe8e8, + 0x0000, 0xe8eb, 0xe8e5, 0xe8ec, 0xe8e4, 0xe8e6, 0x0000, 0xe8e7 +}; + +static const unsigned short big5hkscs_from_unicode_9d[] = { + 0xe8ea, 0x0000, 0x9fa4, 0xbea1, 0xe8ef, 0xe8ee, 0xbe7d, 0xe8e9, + 0xe8ed, 0xbe7e, 0x0000, 0x0000, 0x96bd, 0x0000, 0x0000, 0x0000, + 0xecac, 0x0000, 0xc06f, 0x0000, 0xeca7, 0xc06b, 0x96f4, 0xeca4, + 0xecaa, 0xecad, 0x0000, 0xc070, 0x0000, 0xeca9, 0xeca6, 0xecae, + 0xeca5, 0x96b8, 0xecab, 0xc06c, 0x0000, 0xeca3, 0xc06d, 0x0000, + 0xc06e, 0xeca8, 0x0000, 0x0000, 0x0000, 0xefa9, 0xef7a, 0xef7b, + 0xef7e, 0xef7c, 0x0000, 0xef76, 0xfaa1, 0x0000, 0xef79, 0xefa5, + 0xef7d, 0x91a7, 0x0000, 0xc245, 0x0000, 0xefa7, 0xefa4, 0xc246, + 0xefa6, 0xef77, 0xefa2, 0xefa3, 0xa05e, 0xefa1, 0x0000, 0x0000, + 0x0000, 0x9a7d, 0xf1d2, 0xf1d4, 0xf1d7, 0x0000, 0x8948, 0xf1d1, + 0x9eb1, 0xc359, 0xf1d9, 0xf1d0, 0xf1da, 0x0000, 0xf1d6, 0xf1d8, + 0xf1dc, 0xf1d5, 0xf1dd, 0xf1d3, 0xf1cf, 0xc35a, 0x9ddb, 0xf1db, + 0xc35b, 0xc44d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xef78, + 0xf3f1, 0xf3e8, 0xc44f, 0xf3e4, 0xc450, 0x95bf, 0x8a73, 0xf3ed, + 0xf3e7, 0xf3dd, 0xc44e, 0xf3ea, 0xf3e5, 0xf3e6, 0x0000, 0xf3d8, + 0xf3df, 0xf3ee, 0x0000, 0xf3eb, 0x9efe, 0xf3e3, 0x917a, 0xf3ef, + 0xf3de, 0xf3d9, 0xf3ec, 0x917b, 0xf3db, 0xf3e9, 0xf3e0, 0xf3f0, + 0xf3dc, 0xc44c, 0xf3da, 0xf3e1, 0xf3e2, 0x0000, 0x0000, 0x0000, + 0xf57d, 0x0000, 0xf57b, 0x9aa3, 0xf5a2, 0x0000, 0xf5ae, 0xf5a5, + 0xf57c, 0xf578, 0xf5a7, 0xf57e, 0xf5a3, 0xf57a, 0xf5aa, 0xf577, + 0xf5a1, 0xf5a6, 0xf5a8, 0xf5ab, 0xf579, 0x96c2, 0xf5af, 0xf5b0, + 0xf5a9, 0xf5ad, 0xf5a4, 0x9f77, 0xf6c1, 0xf6c4, 0x0000, 0xc561, + 0x0000, 0xf6c3, 0xf6c8, 0xf6c6, 0xc562, 0xf6bd, 0xf6b3, 0xf6b2, + 0xc564, 0xf6bf, 0xf6c0, 0xf6bc, 0xf6b4, 0x9aa4, 0xf6b9, 0xf5ac, + 0x9aa5, 0xf6b5, 0xc563, 0xf6bb, 0x91a1, 0xf6ba, 0x0000, 0xf6b6, + 0xf6c2, 0x89b8, 0xf6b7, 0xf7bb, 0xf6c5, 0xf6c7, 0xf6be, 0xf6b8, + 0xf7bc, 0xf7be, 0xf7b8, 0xc5c2, 0x9173, 0xf7c5, 0xf7c3, 0xc5c3, + 0xf7c2, 0xf7c1, 0xf7ba, 0xf7b7, 0xf7bd, 0xf7c6, 0xf7b9, 0xf7bf, + 0x0000, 0xf869, 0xf86e, 0xf864, 0xf867, 0xc5ee, 0xf86b, 0x0000, + 0xf872, 0xf7c0, 0x0000, 0xf865, 0xf86f, 0xf873, 0xf86a, 0xf863, + 0xf86d, 0x0000, 0xf86c, 0xf871, 0xf870, 0xf7c4, 0xf868, 0xf862, + 0xf866, 0xc64e, 0xc64f, 0xf861, 0x9aa6, 0xf8e6, 0xf8dd, 0xf8e5 +}; + +static const unsigned short big5hkscs_from_unicode_9e[] = { + 0xf8e2, 0xf8e3, 0xf8dc, 0xf8df, 0xf8e7, 0xf8e1, 0xf8e0, 0xf8de, + 0x0000, 0xf8e4, 0x89bd, 0xf95d, 0x89b9, 0xf95e, 0x917d, 0xf960, + 0xf95f, 0xf962, 0xf961, 0xf97c, 0xf97b, 0xf9b7, 0x0000, 0xf9b8, + 0x96bb, 0xf9c5, 0xc678, 0xc67c, 0x9ff2, 0xf9cf, 0xc67d, 0x8bf5, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xb3bf, 0x0000, 0x0000, + 0x0000, 0xc4d0, 0xf6c9, 0x9aa9, 0xc650, 0xc651, 0x0000, 0xb3c0, + 0xe0ee, 0x9f54, 0xb9a8, 0xe8f0, 0x9fe3, 0x9eed, 0xecb0, 0xecb1, + 0xecaf, 0xefab, 0xefaa, 0xc247, 0xf1df, 0xefac, 0xf1de, 0x0000, + 0x91aa, 0xf3f3, 0xc451, 0xc453, 0xf3f2, 0x91ab, 0xa070, 0xc452, + 0x9f6d, 0xf5b1, 0xf5b3, 0xf5b2, 0xf6ca, 0xc565, 0x91ac, 0xc5ef, + 0xf8e8, 0xf963, 0x91ad, 0x0000, 0xf9d2, 0xb3c1, 0xa0fd, 0xe4e5, + 0x9fe2, 0xbea2, 0x91af, 0x9e41, 0x9aaa, 0xecb3, 0xecb2, 0x91b0, + 0xefad, 0x9aab, 0x0000, 0x0000, 0xc454, 0xc4d1, 0xf7c7, 0xf9cb, + 0x0000, 0x0000, 0x0000, 0xb3c2, 0xbbf2, 0x9aac, 0xbea3, 0x9a4a, + 0xf3f4, 0x91b2, 0xf874, 0xb6c0, 0x8bf6, 0x0000, 0x9aad, 0x89b6, + 0xefae, 0x0000, 0x0000, 0x0000, 0xc664, 0xb6c1, 0xbea4, 0xc248, + 0xf875, 0xb6c2, 0x0000, 0xe8f1, 0xc072, 0xecb4, 0xecb5, 0x0000, + 0xc071, 0x0000, 0xefaf, 0xc24c, 0xc24a, 0xc24b, 0xc249, 0xf1e0, + 0xc35c, 0x0000, 0x9aaf, 0x0000, 0xf5b5, 0xf5b4, 0xf5b7, 0xf5b6, + 0xc4d2, 0x0000, 0x0000, 0xf6cb, 0x0000, 0xf6cd, 0xf6cc, 0xc566, + 0xf7c8, 0x9ab0, 0xf876, 0xf877, 0xc5f0, 0xf964, 0xf97d, 0xc675, + 0x9ab1, 0xdcb0, 0xecb6, 0xefb0, 0xf3f5, 0xe0ef, 0x9aa1, 0xefb1 +}; + +static const unsigned short big5hkscs_from_unicode_9f[] = { + 0xf1e2, 0xf1e1, 0x91b9, 0x0000, 0x0000, 0x0000, 0xf878, 0xc652, + 0x91ba, 0xf965, 0xf97e, 0x0000, 0x0000, 0x0000, 0xb9a9, 0xe8f2, + 0xe8f3, 0x0000, 0xecb7, 0xb9aa, 0x0000, 0xc35d, 0xf1e3, 0x9f66, + 0xf6cf, 0xc567, 0xf6d0, 0xf6ce, 0xf879, 0x0000, 0xf8e9, 0x0000, + 0xb9ab, 0x0000, 0xefb4, 0xefb3, 0xefb2, 0xf1e4, 0xa041, 0x8bb7, + 0xf1e8, 0xf1e7, 0xf1e6, 0xf1e5, 0xc35e, 0xf3f6, 0xf5b9, 0xc4d3, + 0xf5b8, 0xf6d1, 0xf7cb, 0xf7ca, 0xc5c4, 0xf7c9, 0xf87c, 0xf87b, + 0xf87a, 0x91c0, 0x0000, 0xbbf3, 0x0000, 0xecb8, 0xc24d, 0x0000, + 0xf3f7, 0xf3f8, 0xf7cc, 0xf87d, 0x9ab3, 0x91c3, 0xf8ea, 0xf966, + 0xf9b9, 0xf9d4, 0xbbf4, 0xc24e, 0xf1e9, 0xf3f9, 0xf6d2, 0xf87e, + 0xa0fc, 0x0000, 0xbea6, 0x9fee, 0xefb5, 0xf1ea, 0xf3fa, 0xf3fb, + 0xf3fc, 0xf5be, 0x9f69, 0xf5ba, 0xc568, 0xf5bd, 0xf5bc, 0xc4d4, + 0xf5bb, 0xc4d6, 0x91c8, 0xc4d5, 0xf6d4, 0xf6d3, 0xc569, 0xc56a, + 0x0000, 0x91c9, 0xc5c6, 0xf7cd, 0xc5c5, 0x0000, 0xf8a3, 0xf8a4, + 0xf8a2, 0xf8a1, 0xc654, 0x0000, 0xf8eb, 0xf8ec, 0xf8ed, 0xc653, + 0xf967, 0xf96a, 0xf969, 0xf968, 0x0000, 0x0000, 0xf9d3, 0x8de6, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xc073, 0x91cb, 0x0000, + 0xc365, 0xf5bf, 0xf6d5, 0x0000, 0xc5c7, 0xf7ce, 0x0000, 0x0000, + 0xf9d5, 0x89c8, 0x0000, 0x0000, 0xc074, 0x0000, 0x0000, 0x8daa, + 0xefb6, 0x0000, 0xf7cf, 0x0000, 0xf9a1, 0x9fdd, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_e0[] = { + 0xfa40, 0x0000, 0xfa42, 0xfa43, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xfa49, 0xfa4a, 0x0000, 0xfa4c, 0x0000, 0xfa4e, 0x0000, + 0x0000, 0x0000, 0xfa52, 0xfa53, 0xfa54, 0xfa55, 0xfa56, 0x0000, + 0xfa58, 0x0000, 0xfa5a, 0xfa5b, 0xfa5c, 0xfa5d, 0xfa5e, 0x0000, + 0xfa60, 0x0000, 0xfa62, 0xfa63, 0x0000, 0xfa65, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfa6d, 0xfa6e, 0x0000, + 0xfa70, 0x0000, 0xfa72, 0xfa73, 0xfa74, 0xfa75, 0xfa76, 0xfa77, + 0xfa78, 0x0000, 0x0000, 0xfa7b, 0xfa7c, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfaa7, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xfaae, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xfabc, 0x0000, 0xfabe, 0x0000, 0x0000, 0xfac1, + 0xfac2, 0xfac3, 0x0000, 0x0000, 0xfac6, 0x0000, 0xfac8, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xface, 0x0000, 0x0000, 0x0000, + 0x0000, 0xfad3, 0x0000, 0x0000, 0xfad6, 0xfad7, 0x0000, 0x0000, + 0xfada, 0x0000, 0x0000, 0x0000, 0x0000, 0xfadf, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfae9, + 0x0000, 0xfaeb, 0xfaec, 0x0000, 0xfaee, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xfaf5, 0xfaf6, 0x0000, 0x0000, 0x0000, + 0x0000, 0xfafb, 0xfafc, 0x0000, 0xfafe, 0xfb40, 0xfb41, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfb49, 0xfb4a, + 0x0000, 0xfb4c, 0x0000, 0xfb4e, 0x0000, 0x0000, 0xfb51, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xfb5d, 0x0000, 0xfb5f, 0x0000, 0xfb61, 0x0000, + 0x0000, 0x0000, 0x0000, 0xfb66, 0x0000, 0xfb68, 0x0000, 0xfb6a, + 0xfb6b, 0x0000, 0xfb6d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xfb73, 0x0000, 0x0000, 0x0000, 0xfb77, 0xfb78, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xfba1, 0x0000, 0x0000, 0xfba4, + 0x0000, 0x0000, 0xfba7, 0xfba8, 0xfba9, 0xfbaa, 0x0000, 0xfbac, + 0xfbad, 0xfbae, 0x0000, 0xfbb0, 0xfbb1, 0x0000, 0xfbb3, 0x0000, + 0x0000, 0x0000, 0xfbb7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xfbbd, 0xfbbe, 0x0000, 0xfbc0, 0x0000, 0xfbc2, 0x0000, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_e1[] = { + 0x0000, 0x0000, 0x0000, 0xfbc8, 0x0000, 0x0000, 0xfbcb, 0x0000, + 0x0000, 0xfbce, 0xfbcf, 0xfbd0, 0x0000, 0x0000, 0x0000, 0x0000, + 0xfbd5, 0x0000, 0x0000, 0x0000, 0xfbd9, 0xfbda, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xfbe1, 0xfbe2, 0x0000, 0x0000, + 0x0000, 0xfbe6, 0x0000, 0x0000, 0x0000, 0x0000, 0xfbeb, 0xfbec, + 0xfbed, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xfbf5, 0xfbf6, 0x0000, 0x0000, 0x0000, 0x0000, 0xfbfb, 0x0000, + 0x0000, 0xfbfe, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xfc47, 0xfc48, 0x0000, 0x0000, 0xfc4b, 0x0000, 0xfc4d, + 0xfc4e, 0x0000, 0xfc50, 0x0000, 0x0000, 0xfc53, 0x0000, 0x0000, + 0xfc56, 0x0000, 0x0000, 0x0000, 0xfc5a, 0xfc5b, 0xfc5c, 0xfc5d, + 0x0000, 0xfc5f, 0xfc60, 0x0000, 0x0000, 0xfc63, 0x0000, 0x0000, + 0x0000, 0x0000, 0xfc68, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xfc6e, 0xfc6f, 0xfc70, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xfc77, 0xfc78, 0x0000, 0x0000, 0xfc7b, 0x0000, 0x0000, + 0xfc7e, 0xfca1, 0x0000, 0xfca3, 0xfca4, 0x0000, 0x0000, 0xfca7, + 0xfca8, 0x0000, 0x0000, 0x0000, 0x0000, 0xfcad, 0x0000, 0xfcaf, + 0x0000, 0xfcb1, 0x0000, 0xfcb3, 0x0000, 0x0000, 0x0000, 0xfcb7, + 0xfcb8, 0x0000, 0x0000, 0xfcbb, 0x0000, 0xfcbd, 0xfcbe, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfcc7, + 0xfcc8, 0x0000, 0x0000, 0x0000, 0xfccc, 0x0000, 0xfcce, 0x0000, + 0x0000, 0x0000, 0xfcd2, 0x0000, 0x0000, 0x0000, 0xfcd6, 0x0000, + 0xfcd8, 0xfcd9, 0x0000, 0xfcdb, 0xfcdc, 0x0000, 0xfcde, 0x0000, + 0xfce0, 0x0000, 0x0000, 0xfce3, 0xfce4, 0xfce5, 0xfce6, 0xfce7, + 0x0000, 0xfce9, 0x0000, 0x0000, 0xfcec, 0xfced, 0x0000, 0x0000, + 0xfcf0, 0x0000, 0x0000, 0x0000, 0xfcf4, 0xfcf5, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xfcfc, 0xfcfd, 0x0000, 0xfd40, + 0x0000, 0x0000, 0xfd43, 0x0000, 0x0000, 0xfd46, 0x0000, 0x0000, + 0x0000, 0x0000, 0xfd4b, 0x0000, 0x0000, 0x0000, 0xfd4f, 0x0000, + 0x0000, 0x0000, 0x0000, 0xfd54, 0x0000, 0x0000, 0x0000, 0xfd58, + 0xfd59, 0x0000, 0xfd5b, 0x0000, 0x0000, 0x0000, 0x0000, 0xfd60, + 0x0000, 0x0000, 0xfd63, 0x0000, 0x0000, 0x0000, 0xfd67, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_e2[] = { + 0xfd69, 0xfd6a, 0xfd6b, 0x0000, 0x0000, 0xfd6e, 0x0000, 0xfd70, + 0x0000, 0x0000, 0xfd73, 0xfd74, 0xfd75, 0x0000, 0x0000, 0x0000, + 0xfd79, 0x0000, 0xfd7b, 0xfd7c, 0xfd7d, 0xfd7e, 0xfda1, 0x0000, + 0x0000, 0xfda4, 0x0000, 0xfda6, 0xfda7, 0x0000, 0x0000, 0xfdaa, + 0xfdab, 0xfdac, 0x0000, 0x0000, 0x0000, 0x0000, 0xfdb1, 0xfdb2, + 0xfdb3, 0x0000, 0xfdb5, 0x0000, 0x0000, 0x0000, 0x0000, 0xfdba, + 0x0000, 0xfdbc, 0x0000, 0xfdbe, 0x0000, 0x0000, 0x0000, 0xfdc2, + 0x0000, 0x0000, 0x0000, 0xfdc6, 0x0000, 0xfdc8, 0xfdc9, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfdd0, 0x0000, 0x0000, + 0xfdd3, 0x0000, 0xfdd5, 0xfdd6, 0xfdd7, 0xfdd8, 0xfdd9, 0xfdda, + 0x0000, 0xfddc, 0xfddd, 0xfdde, 0xfddf, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xfdec, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xfdf3, 0x0000, 0x0000, 0xfdf6, 0x0000, 0xfdf8, 0xfdf9, 0xfdfa, + 0x0000, 0xfdfc, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xfe46, 0x0000, 0x0000, 0xfe49, 0x0000, 0x0000, + 0x0000, 0x0000, 0xfe4e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xfe54, 0xfe55, 0x0000, 0xfe57, 0x0000, 0x0000, 0x0000, 0x0000, + 0xfe5c, 0xfe5d, 0x0000, 0x0000, 0xfe60, 0xfe61, 0xfe62, 0x0000, + 0x0000, 0xfe65, 0xfe66, 0xfe67, 0x0000, 0x0000, 0x0000, 0xfe6b, + 0x0000, 0xfe6d, 0x0000, 0x0000, 0xfe70, 0x0000, 0xfe72, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xfe7e, 0xfea1, 0xfea2, 0xfea3, 0x0000, 0xfea5, + 0xfea6, 0x0000, 0xfea8, 0x0000, 0x0000, 0x0000, 0xfeac, 0xfead, + 0x0000, 0xfeaf, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfeb5, + 0x0000, 0xfeb7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xfec2, 0x0000, 0x0000, 0x0000, + 0xfec6, 0xfec7, 0x0000, 0x0000, 0x0000, 0x0000, 0xfecc, 0x0000, + 0xfece, 0xfecf, 0xfed0, 0x0000, 0x0000, 0x0000, 0x0000, 0xfed5, + 0x0000, 0xfed7, 0x0000, 0xfed9, 0xfeda, 0xfedb, 0x0000, 0x0000, + 0xfede, 0xfedf, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xfee6, 0x0000, 0x0000, 0x0000, 0xfeea, 0x0000, 0x0000, 0xfeed +}; + +static const unsigned short big5hkscs_from_unicode_e3[] = { + 0xfeee, 0xfeef, 0x0000, 0x0000, 0x0000, 0x0000, 0xfef4, 0x0000, + 0xfef6, 0x0000, 0x0000, 0x0000, 0xfefa, 0x0000, 0x0000, 0xfefd, + 0x0000, 0x8e40, 0x0000, 0x8e42, 0x0000, 0x8e44, 0x0000, 0x0000, + 0x8e47, 0x0000, 0x0000, 0x8e4a, 0x8e4b, 0x0000, 0x0000, 0x8e4e, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8e54, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8e5b, 0x0000, 0x0000, 0x0000, + 0x8e5f, 0x8e60, 0x0000, 0x0000, 0x0000, 0x8e64, 0x8e65, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8e6a, 0x0000, 0x8e6c, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8e71, 0x0000, 0x0000, 0x8e74, 0x0000, 0x0000, + 0x8e77, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8ea3, 0x0000, 0x8ea5, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8eac, 0x8ead, 0x0000, 0x0000, 0x0000, + 0x8eb1, 0x0000, 0x8eb3, 0x0000, 0x8eb5, 0x8eb6, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8ec0, + 0x0000, 0x0000, 0x8ec3, 0x0000, 0x8ec5, 0x8ec6, 0x0000, 0x8ec8, + 0x0000, 0x8eca, 0x0000, 0x8ecc, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8ed2, 0x8ed3, 0x0000, 0x0000, 0x0000, 0x8ed7, 0x0000, + 0x8ed9, 0x8eda, 0x8edb, 0x0000, 0x0000, 0x8ede, 0x0000, 0x0000, + 0x0000, 0x8ee2, 0x0000, 0x8ee4, 0x8ee5, 0x0000, 0x8ee7, 0x0000, + 0x8ee9, 0x0000, 0x8eeb, 0x8eec, 0x0000, 0x0000, 0x8eef, 0x8ef0, + 0x8ef1, 0x0000, 0x8ef3, 0x0000, 0x0000, 0x8ef6, 0x8ef7, 0x8ef8, + 0x8ef9, 0x8efa, 0x0000, 0x0000, 0x8efd, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8f43, 0x8f44, 0x0000, 0x8f46, 0x8f47, 0x0000, 0x0000, + 0x0000, 0x8f4b, 0x8f4c, 0x8f4d, 0x8f4e, 0x8f4f, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8f55, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8f5a, 0x0000, 0x0000, 0x0000, 0x8f5e, 0x8f5f, 0x0000, 0x8f61, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8f67, 0x0000, 0x0000, + 0x8f6a, 0x8f6b, 0x8f6c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8f73, 0x0000, 0x8f75, 0x0000, 0x0000, 0x0000, 0x8f79, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8fa1, 0x8fa2, 0x0000, + 0x8fa4, 0x0000, 0x8fa6, 0x8fa7, 0x8fa8, 0x0000, 0x0000, 0x0000, + 0x8fac, 0x0000, 0x8fae, 0x0000, 0x0000, 0x8fb1, 0x0000, 0x8fb3 +}; + +static const unsigned short big5hkscs_from_unicode_e4[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8fbd, 0x8fbe, 0x8fbf, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8fc8, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8fcf, 0x0000, 0x8fd1, 0x8fd2, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8fd7, 0x0000, 0x8fd9, 0x8fda, 0x0000, + 0x8fdc, 0x0000, 0x0000, 0x0000, 0x8fe0, 0x8fe1, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8fe6, 0x0000, 0x0000, 0x0000, 0x8fea, 0x0000, + 0x0000, 0x0000, 0x8fee, 0x8fef, 0x8ff0, 0x0000, 0x8ff2, 0x0000, + 0x8ff4, 0x8ff5, 0x0000, 0x0000, 0x8ff8, 0x0000, 0x0000, 0x0000, + 0x8ffc, 0x0000, 0x0000, 0x0000, 0x9041, 0x9042, 0x9043, 0x0000, + 0x9045, 0x9046, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x904e, 0x904f, 0x0000, 0x0000, 0x9052, 0x9053, 0x0000, + 0x0000, 0x9056, 0x9057, 0x9058, 0x0000, 0x905a, 0x0000, 0x905c, + 0x905d, 0x905e, 0x905f, 0x0000, 0x9061, 0x0000, 0x9063, 0x9064, + 0x0000, 0x9066, 0x9067, 0x0000, 0x9069, 0x0000, 0x906b, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9073, 0x9074, + 0x0000, 0x0000, 0x0000, 0x0000, 0x9079, 0x0000, 0x907b, 0x907c, + 0x907d, 0x907e, 0x90a1, 0x0000, 0x0000, 0x90a4, 0x90a5, 0x0000, + 0x0000, 0x90a8, 0x90a9, 0x0000, 0x0000, 0x90ac, 0x90ad, 0x90ae, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x90b8, 0x90b9, 0x90ba, 0x90bb, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x90c2, 0x0000, 0x0000, 0x0000, 0x90c6, + 0x0000, 0x0000, 0x0000, 0x90ca, 0x90cb, 0x90cc, 0x90cd, 0x90ce, + 0x90cf, 0x90d0, 0x90d1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x90d8, 0x0000, 0x0000, 0x0000, 0x0000, 0x90dd, 0x0000, + 0x0000, 0x90e0, 0x0000, 0x0000, 0x0000, 0x90e4, 0x90e5, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x90ed, 0x0000, + 0x0000, 0x90f0, 0x0000, 0x0000, 0x90f3, 0x90f4, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x90fb, 0x0000, 0x90fd, 0x90fe, + 0x9140, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9146, 0x9147, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x914e, 0x0000, + 0x9150, 0x9151, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9157 +}; + +static const unsigned short big5hkscs_from_unicode_e5[] = { + 0x0000, 0x9159, 0x915a, 0x0000, 0x0000, 0x915d, 0x0000, 0x0000, + 0x0000, 0x0000, 0x9162, 0x0000, 0x0000, 0x9165, 0x0000, 0x9167, + 0x0000, 0x0000, 0x916a, 0x0000, 0x916c, 0x0000, 0x916e, 0x0000, + 0x0000, 0x0000, 0x9172, 0x0000, 0x9174, 0x9175, 0x9176, 0x9177, + 0x9178, 0x9179, 0x0000, 0x0000, 0x917c, 0x0000, 0x0000, 0x0000, + 0x91a2, 0x91a3, 0x91a4, 0x91a5, 0x91a6, 0x0000, 0x91a8, 0x91a9, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x91b1, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x91b8, 0x0000, + 0x0000, 0x0000, 0x0000, 0x91bd, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x91c5, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x91ce, 0x91cf, 0x0000, 0x91d1, + 0x91d2, 0x91d3, 0x0000, 0x91d5, 0x91d6, 0x0000, 0x91d8, 0x91d9, + 0x0000, 0x0000, 0x91dc, 0x0000, 0x0000, 0x0000, 0x91e0, 0x91e1, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x91e7, 0x91e8, 0x0000, + 0x91ea, 0x0000, 0x91ec, 0x91ed, 0x0000, 0x91ef, 0x91f0, 0x91f1, + 0x0000, 0x91f3, 0x91f4, 0x0000, 0x91f6, 0x91f7, 0x91f8, 0x0000, + 0x91fa, 0x0000, 0x91fc, 0x91fd, 0x91fe, 0x9240, 0x9241, 0x0000, + 0x9243, 0x0000, 0x0000, 0x9246, 0x9247, 0x9248, 0x9249, 0x924a, + 0x924b, 0x0000, 0x924d, 0x924e, 0x924f, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x9255, 0x0000, 0x0000, 0x9258, 0x9259, 0x925a, + 0x925b, 0x925c, 0x0000, 0x0000, 0x925f, 0x0000, 0x9261, 0x9262, + 0x9263, 0x0000, 0x9265, 0x0000, 0x0000, 0x0000, 0x0000, 0x926a, + 0x0000, 0x926c, 0x926d, 0x0000, 0x0000, 0x9270, 0x0000, 0x9272, + 0x9273, 0x0000, 0x9275, 0x9276, 0x0000, 0x0000, 0x9279, 0x927a, + 0x927b, 0x0000, 0x927d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x92a5, 0x92a6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x92b4, + 0x92b5, 0x92b6, 0x0000, 0x92b8, 0x92b9, 0x0000, 0x0000, 0x92bc, + 0x0000, 0x92be, 0x92bf, 0x92c0, 0x0000, 0x92c2, 0x92c3, 0x0000, + 0x0000, 0x92c6, 0x0000, 0x0000, 0x0000, 0x0000, 0x92cb, 0x92cc, + 0x92cd, 0x92ce, 0x0000, 0x92d0, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x92d8, 0x92d9, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_e6[] = { + 0x92dd, 0x0000, 0x92df, 0x0000, 0x92e1, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x92ec, + 0x92ed, 0x92ee, 0x92ef, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x92f6, 0x92f7, 0x92f8, 0x92f9, 0x0000, 0x0000, 0x0000, + 0x0000, 0x92fe, 0x0000, 0x9341, 0x9342, 0x0000, 0x0000, 0x9345, + 0x0000, 0x0000, 0x0000, 0x9349, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x9350, 0x9351, 0x9352, 0x0000, 0x0000, 0x9355, + 0x9356, 0x0000, 0x9358, 0x0000, 0x935a, 0x0000, 0x0000, 0x935d, + 0x935e, 0x935f, 0x9360, 0x0000, 0x0000, 0x9363, 0x9364, 0x0000, + 0x9366, 0x0000, 0x0000, 0x9369, 0x0000, 0x0000, 0x936c, 0x936d, + 0x0000, 0x0000, 0x9370, 0x9371, 0x9372, 0x9373, 0x0000, 0x9375, + 0x9376, 0x9377, 0x0000, 0x0000, 0x0000, 0x937b, 0x937c, 0x937d, + 0x937e, 0x0000, 0x93a2, 0x93a3, 0x0000, 0x93a5, 0x93a6, 0x93a7, + 0x93a8, 0x0000, 0x93aa, 0x0000, 0x0000, 0x0000, 0x93ae, 0x93af, + 0x0000, 0x93b1, 0x0000, 0x0000, 0x0000, 0x0000, 0x93b6, 0x93b7, + 0x93b8, 0x93b9, 0x0000, 0x93bb, 0x93bc, 0x93bd, 0x0000, 0x93bf, + 0x93c0, 0x0000, 0x0000, 0x93c3, 0x93c4, 0x93c5, 0x93c6, 0x93c7, + 0x93c8, 0x0000, 0x93ca, 0x93cb, 0x93cc, 0x0000, 0x93ce, 0x93cf, + 0x93d0, 0x0000, 0x93d2, 0x0000, 0x0000, 0x0000, 0x93d6, 0x93d7, + 0x0000, 0x93d9, 0x93da, 0x0000, 0x93dc, 0x0000, 0x93de, 0x93df, + 0x0000, 0x93e1, 0x93e2, 0x0000, 0x0000, 0x0000, 0x93e6, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x93ec, 0x93ed, 0x0000, 0x0000, + 0x0000, 0x0000, 0x93f2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x93f9, 0x93fa, 0x0000, 0x0000, 0x93fd, 0x93fe, 0x0000, + 0x9441, 0x9442, 0x0000, 0x0000, 0x0000, 0x9446, 0x0000, 0x9448, + 0x0000, 0x0000, 0x944b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x9452, 0x9453, 0x0000, 0x0000, 0x0000, 0x0000, 0x9458, + 0x9459, 0x0000, 0x945b, 0x945c, 0x0000, 0x945e, 0x945f, 0x9460, + 0x9461, 0x9462, 0x0000, 0x0000, 0x9465, 0x9466, 0x9467, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x946f, 0x0000, + 0x0000, 0x0000, 0x9473, 0x9474, 0x0000, 0x0000, 0x0000, 0x9478, + 0x0000, 0x0000, 0x947b, 0x947c, 0x947d, 0x0000, 0x0000, 0x94a2 +}; + +static const unsigned short big5hkscs_from_unicode_e7[] = { + 0x0000, 0x94a4, 0x94a5, 0x0000, 0x0000, 0x0000, 0x94a9, 0x94aa, + 0x0000, 0x94ac, 0x94ad, 0x0000, 0x94af, 0x0000, 0x0000, 0x0000, + 0x94b3, 0x94b4, 0x0000, 0x94b6, 0x0000, 0x0000, 0x0000, 0x94ba, + 0x94bb, 0x0000, 0x94bd, 0x94be, 0x0000, 0x94c0, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x94c7, 0x94c8, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x94ce, 0x0000, 0x0000, 0x0000, 0x94d2, + 0x0000, 0x0000, 0x0000, 0x94d6, 0x94d7, 0x94d8, 0x94d9, 0x94da, + 0x0000, 0x0000, 0x0000, 0x0000, 0x94df, 0x94e0, 0x0000, 0x0000, + 0x94e3, 0x94e4, 0x94e5, 0x0000, 0x94e7, 0x0000, 0x0000, 0x94ea, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x94f0, 0x94f1, 0x94f2, + 0x0000, 0x94f4, 0x94f5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x94fe, 0x9540, 0x9541, 0x0000, 0x9543, + 0x0000, 0x9545, 0x9546, 0x0000, 0x9548, 0x9549, 0x0000, 0x954b, + 0x954c, 0x954d, 0x0000, 0x0000, 0x9550, 0x9551, 0x9552, 0x0000, + 0x9554, 0x0000, 0x0000, 0x0000, 0x0000, 0x9559, 0x0000, 0x955b, + 0x955c, 0x0000, 0x955e, 0x0000, 0x9560, 0x9561, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x9568, 0x0000, 0x956a, 0x0000, + 0x0000, 0x956d, 0x0000, 0x956f, 0x0000, 0x9571, 0x0000, 0x0000, + 0x9574, 0x0000, 0x9576, 0x0000, 0x9578, 0x0000, 0x957a, 0x957b, + 0x0000, 0x957d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x95a8, 0x0000, 0x95aa, 0x95ab, 0x95ac, 0x95ad, + 0x95ae, 0x95af, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x95b7, 0x0000, 0x0000, 0x95ba, 0x0000, 0x0000, 0x0000, + 0x95be, 0x0000, 0x0000, 0x0000, 0x95c2, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x95ca, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x95d0, 0x0000, 0x0000, 0x0000, 0x95d4, 0x0000, + 0x0000, 0x95d7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x95de, 0x0000, 0x95e0, 0x0000, 0x95e2, 0x95e3, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x95ea, 0x0000, 0x0000, 0x95ed, + 0x95ee, 0x95ef, 0x0000, 0x95f1, 0x0000, 0x95f3, 0x95f4, 0x95f5, + 0x0000, 0x95f7, 0x95f8, 0x95f9, 0x0000, 0x0000, 0x0000, 0x0000, + 0x95fe, 0x0000, 0x0000, 0x9642, 0x9643, 0x0000, 0x0000, 0x9646 +}; + +static const unsigned short big5hkscs_from_unicode_e8[] = { + 0x9647, 0x9648, 0x9649, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x964f, 0x0000, 0x0000, 0x0000, 0x9653, 0x0000, 0x9655, 0x9656, + 0x0000, 0x9658, 0x0000, 0x965a, 0x0000, 0x0000, 0x965d, 0x965e, + 0x965f, 0x0000, 0x9661, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x9668, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x966e, + 0x966f, 0x0000, 0x0000, 0x0000, 0x0000, 0x9674, 0x0000, 0x9676, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x967c, 0x0000, 0x967e, + 0x96a1, 0x0000, 0x96a3, 0x96a4, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x96aa, 0x96ab, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x96b4, 0x0000, 0x96b6, 0x96b7, 0x0000, + 0x0000, 0x96ba, 0x0000, 0x0000, 0x0000, 0x96be, 0x96bf, 0x96c0, + 0x96c1, 0x0000, 0x0000, 0x96c4, 0x96c5, 0x96c6, 0x0000, 0x0000, + 0x96c9, 0x96ca, 0x96cb, 0x0000, 0x0000, 0x96ce, 0x96cf, 0x96d0, + 0x0000, 0x96d2, 0x96d3, 0x0000, 0x96d5, 0x0000, 0x0000, 0x0000, + 0x0000, 0x96da, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x96e1, 0x0000, 0x0000, 0x0000, 0x0000, 0x96e6, 0x96e7, 0x96e8, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x96f0, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x96f8, + 0x0000, 0x96fa, 0x96fb, 0x0000, 0x96fd, 0x96fe, 0x0000, 0x0000, + 0x0000, 0x0000, 0x9744, 0x0000, 0x0000, 0x9747, 0x0000, 0x0000, + 0x974a, 0x974b, 0x0000, 0x974d, 0x974e, 0x974f, 0x9750, 0x9751, + 0x0000, 0x9753, 0x9754, 0x0000, 0x9756, 0x9757, 0x9758, 0x9759, + 0x975a, 0x0000, 0x0000, 0x0000, 0x0000, 0x975f, 0x9760, 0x0000, + 0x9762, 0x0000, 0x0000, 0x0000, 0x0000, 0x9767, 0x9768, 0x9769, + 0x976a, 0x976b, 0x976c, 0x976d, 0x0000, 0x976f, 0x0000, 0x9771, + 0x0000, 0x0000, 0x0000, 0x9775, 0x0000, 0x9777, 0x9778, 0x0000, + 0x977a, 0x977b, 0x0000, 0x977d, 0x0000, 0x97a1, 0x97a2, 0x0000, + 0x97a4, 0x97a5, 0x97a6, 0x0000, 0x0000, 0x97a9, 0x0000, 0x97ab, + 0x97ac, 0x97ad, 0x0000, 0x0000, 0x0000, 0x97b1, 0x97b2, 0x0000, + 0x97b4, 0x97b5, 0x97b6, 0x0000, 0x0000, 0x97b9, 0x0000, 0x0000, + 0x0000, 0x97bd, 0x97be, 0x0000, 0x0000, 0x97c1, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x97c7, 0x0000, 0x0000, 0x97ca, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_e9[] = { + 0x97cc, 0x0000, 0x0000, 0x97cf, 0x0000, 0x0000, 0x0000, 0x97d3, + 0x97d4, 0x0000, 0x0000, 0x0000, 0x97d8, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x97e3, + 0x97e4, 0x0000, 0x0000, 0x0000, 0x97e8, 0x0000, 0x97ea, 0x97eb, + 0x97ec, 0x97ed, 0x97ee, 0x0000, 0x0000, 0x97f1, 0x97f2, 0x97f3, + 0x97f4, 0x97f5, 0x97f6, 0x97f7, 0x97f8, 0x0000, 0x97fa, 0x97fb, + 0x0000, 0x0000, 0x0000, 0x9840, 0x9841, 0x9842, 0x9843, 0x0000, + 0x9845, 0x0000, 0x9847, 0x0000, 0x9849, 0x984a, 0x984b, 0x0000, + 0x0000, 0x984e, 0x0000, 0x0000, 0x9851, 0x9852, 0x0000, 0x0000, + 0x9855, 0x0000, 0x0000, 0x0000, 0x0000, 0x985a, 0x0000, 0x0000, + 0x985d, 0x0000, 0x985f, 0x9860, 0x9861, 0x9862, 0x0000, 0x9864, + 0x9865, 0x0000, 0x9867, 0x0000, 0x9869, 0x986a, 0x986b, 0x0000, + 0x986d, 0x986e, 0x0000, 0x0000, 0x9871, 0x0000, 0x0000, 0x9874, + 0x9875, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x987b, 0x987c, + 0x0000, 0x0000, 0x0000, 0x98a2, 0x98a3, 0x98a4, 0x0000, 0x98a6, + 0x98a7, 0x0000, 0x98a9, 0x98aa, 0x0000, 0x98ac, 0x0000, 0x0000, + 0x0000, 0x98b0, 0x98b1, 0x0000, 0x0000, 0x0000, 0x0000, 0x98b6, + 0x0000, 0x0000, 0x98b9, 0x0000, 0x0000, 0x0000, 0x98bd, 0x0000, + 0x0000, 0x98c0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x98df, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x98fa, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x995f, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_ea[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x99d5, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x9a7c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9ab4, + 0x9ab5, 0x9ab6, 0x0000, 0x0000, 0x0000, 0x9aba, 0x0000, 0x0000, + 0x0000, 0x9abe, 0x9abf, 0x9ac0, 0x9ac1, 0x0000, 0x0000, 0x9ac4, + 0x9ac5, 0x9ac6, 0x0000, 0x9ac8, 0x9ac9, 0x0000, 0x9acb, 0x9acc, + 0x9acd, 0x9ace, 0x9acf, 0x0000, 0x9ad1, 0x0000, 0x9ad3, 0x9ad4, + 0x9ad5, 0x9ad6, 0x9ad7, 0x9ad8, 0x0000, 0x0000, 0x0000, 0x9adc, + 0x9add, 0x9ade, 0x9adf, 0x9ae0, 0x9ae1, 0x0000, 0x9ae3, 0x0000, + 0x9ae5, 0x9ae6, 0x9ae7, 0x0000, 0x9ae9, 0x9aea, 0x9aeb, 0x0000, + 0x9aed, 0x9aee, 0x9aef, 0x9af0, 0x0000, 0x0000, 0x9af3, 0x9af4 +}; + +static const unsigned short big5hkscs_from_unicode_eb[] = { + 0x9af5, 0x0000, 0x9af7, 0x9af8, 0x9af9, 0x9afa, 0x0000, 0x0000, + 0x9afd, 0x9afe, 0x9b40, 0x9b41, 0x9b42, 0x9b43, 0x9b44, 0x9b45, + 0x0000, 0x9b47, 0x9b48, 0x0000, 0x0000, 0x9b4b, 0x0000, 0x0000, + 0x9b4e, 0x9b4f, 0x9b50, 0x9b51, 0x9b52, 0x9b53, 0x0000, 0x9b55, + 0x9b56, 0x9b57, 0x0000, 0x9b59, 0x0000, 0x9b5b, 0x0000, 0x9b5d, + 0x0000, 0x0000, 0x9b60, 0x9b61, 0x9b62, 0x9b63, 0x9b64, 0x9b65, + 0x9b66, 0x9b67, 0x9b68, 0x9b69, 0x9b6a, 0x9b6b, 0x9b6c, 0x9b6d, + 0x9b6e, 0x9b6f, 0x0000, 0x0000, 0x0000, 0x9b73, 0x9b74, 0x9b75, + 0x0000, 0x9b77, 0x0000, 0x9b79, 0x9b7a, 0x0000, 0x9b7c, 0x0000, + 0x0000, 0x0000, 0x9ba2, 0x9ba3, 0x9ba4, 0x9ba5, 0x9ba6, 0x9ba7, + 0x9ba8, 0x0000, 0x0000, 0x9bab, 0x9bac, 0x9bad, 0x9bae, 0x9baf, + 0x9bb0, 0x9bb1, 0x9bb2, 0x9bb3, 0x0000, 0x9bb5, 0x0000, 0x9bb7, + 0x0000, 0x9bb9, 0x9bba, 0x9bbb, 0x0000, 0x9bbd, 0x0000, 0x9bbf, + 0x9bc0, 0x9bc1, 0x0000, 0x9bc3, 0x0000, 0x9bc5, 0x0000, 0x9bc7, + 0x9bc8, 0x9bc9, 0x0000, 0x9bcb, 0x9bcc, 0x0000, 0x9bce, 0x9bcf, + 0x9bd0, 0x0000, 0x9bd2, 0x0000, 0x0000, 0x0000, 0x9bd6, 0x9bd7, + 0x9bd8, 0x9bd9, 0x0000, 0x9bdb, 0x9bdc, 0x9bdd, 0x0000, 0x0000, + 0x9be0, 0x9be1, 0x9be2, 0x0000, 0x9be4, 0x9be5, 0x9be6, 0x9be7, + 0x9be8, 0x0000, 0x0000, 0x9beb, 0x0000, 0x9bed, 0x0000, 0x9bef, + 0x9bf0, 0x9bf1, 0x9bf2, 0x9bf3, 0x0000, 0x0000, 0x0000, 0x9bf7, + 0x9bf8, 0x0000, 0x9bfa, 0x9bfb, 0x0000, 0x9bfd, 0x9bfe, 0x0000, + 0x9c41, 0x0000, 0x9c43, 0x9c44, 0x0000, 0x9c46, 0x9c47, 0x9c48, + 0x9c49, 0x0000, 0x9c4b, 0x9c4c, 0x9c4d, 0x0000, 0x9c4f, 0x0000, + 0x0000, 0x9c52, 0x0000, 0x0000, 0x9c55, 0x9c56, 0x0000, 0x9c58, + 0x0000, 0x0000, 0x9c5b, 0x0000, 0x0000, 0x9c5e, 0x9c5f, 0x9c60, + 0x9c61, 0x0000, 0x9c63, 0x0000, 0x9c65, 0x9c66, 0x9c67, 0x0000, + 0x9c69, 0x0000, 0x0000, 0x9c6c, 0x0000, 0x9c6e, 0x0000, 0x9c70, + 0x9c71, 0x0000, 0x9c73, 0x9c74, 0x0000, 0x9c76, 0x0000, 0x9c78, + 0x0000, 0x9c7a, 0x0000, 0x0000, 0x9c7d, 0x0000, 0x0000, 0x9ca2, + 0x9ca3, 0x9ca4, 0x0000, 0x9ca6, 0x9ca7, 0x0000, 0x9ca9, 0x9caa, + 0x0000, 0x9cac, 0x9cad, 0x0000, 0x0000, 0x9cb0, 0x9cb1, 0x0000, + 0x0000, 0x9cb4, 0x9cb5, 0x9cb6, 0x0000, 0x9cb8, 0x9cb9, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_ec[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9cc0, 0x9cc1, 0x0000, + 0x9cc3, 0x9cc4, 0x0000, 0x0000, 0x9cc7, 0x0000, 0x9cc9, 0x9cca, + 0x9ccb, 0x0000, 0x0000, 0x9cce, 0x9ccf, 0x0000, 0x0000, 0x9cd2, + 0x9cd3, 0x9cd4, 0x9cd5, 0x9cd6, 0x9cd7, 0x9cd8, 0x0000, 0x0000, + 0x9cdb, 0x0000, 0x9cdd, 0x0000, 0x9cdf, 0x0000, 0x9ce1, 0x0000, + 0x0000, 0x0000, 0x9ce5, 0x9ce6, 0x9ce7, 0x9ce8, 0x9ce9, 0x9cea, + 0x0000, 0x9cec, 0x9ced, 0x0000, 0x0000, 0x9cf0, 0x0000, 0x9cf2, + 0x0000, 0x0000, 0x0000, 0x9cf6, 0x9cf7, 0x0000, 0x0000, 0x9cfa, + 0x9cfb, 0x9cfc, 0x9cfd, 0x9cfe, 0x9d40, 0x9d41, 0x9d42, 0x9d43, + 0x9d44, 0x9d45, 0x0000, 0x9d47, 0x9d48, 0x0000, 0x0000, 0x9d4b, + 0x0000, 0x0000, 0x9d4e, 0x0000, 0x9d50, 0x0000, 0x9d52, 0x9d53, + 0x9d54, 0x0000, 0x9d56, 0x0000, 0x9d58, 0x9d59, 0x0000, 0x9d5b, + 0x9d5c, 0x0000, 0x9d5e, 0x9d5f, 0x0000, 0x0000, 0x0000, 0x9d63, + 0x9d64, 0x9d65, 0x9d66, 0x9d67, 0x9d68, 0x9d69, 0x9d6a, 0x9d6b, + 0x9d6c, 0x9d6d, 0x9d6e, 0x9d6f, 0x0000, 0x9d71, 0x9d72, 0x0000, + 0x0000, 0x9d75, 0x0000, 0x9d77, 0x0000, 0x0000, 0x9d7a, 0x0000, + 0x9d7c, 0x0000, 0x0000, 0x0000, 0x9da2, 0x0000, 0x9da4, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9dab, 0x9dac, 0x0000, + 0x0000, 0x9daf, 0x9db0, 0x9db1, 0x9db2, 0x9db3, 0x9db4, 0x0000, + 0x9db6, 0x9db7, 0x9db8, 0x9db9, 0x0000, 0x9dbb, 0x9dbc, 0x0000, + 0x9dbe, 0x0000, 0x0000, 0x9dc1, 0x9dc2, 0x0000, 0x0000, 0x9dc5, + 0x9dc6, 0x0000, 0x0000, 0x9dc9, 0x0000, 0x9dcb, 0x0000, 0x9dcd, + 0x0000, 0x0000, 0x0000, 0x0000, 0x9dd2, 0x0000, 0x9dd4, 0x0000, + 0x0000, 0x9dd7, 0x9dd8, 0x9dd9, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9ded, + 0x0000, 0x0000, 0x0000, 0x0000, 0x9df2, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x9df9, 0x9dfa, 0x0000, 0x9dfc, 0x9dfd, + 0x9dfe, 0x9e40, 0x0000, 0x0000, 0x0000, 0x9e44, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x9e4f, 0x0000, 0x9e51, 0x0000, 0x0000, 0x9e54, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x9e5b, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_ed[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x9e63, 0x0000, 0x0000, 0x9e66, + 0x0000, 0x0000, 0x9e69, 0x0000, 0x9e6b, 0x9e6c, 0x9e6d, 0x9e6e, + 0x9e6f, 0x9e70, 0x0000, 0x9e72, 0x0000, 0x9e74, 0x9e75, 0x9e76, + 0x9e77, 0x0000, 0x9e79, 0x0000, 0x9e7b, 0x9e7c, 0x9e7d, 0x0000, + 0x0000, 0x0000, 0x9ea3, 0x0000, 0x9ea5, 0x9ea6, 0x9ea7, 0x9ea8, + 0x0000, 0x9eaa, 0x9eab, 0x9eac, 0x9ead, 0x9eae, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x9ebc, 0x0000, 0x9ebe, 0x0000, 0x0000, + 0x0000, 0x9ec2, 0x9ec3, 0x9ec4, 0x0000, 0x9ec6, 0x0000, 0x9ec8, + 0x0000, 0x0000, 0x9ecb, 0x9ecc, 0x0000, 0x9ece, 0x9ecf, 0x9ed0, + 0x0000, 0x9ed2, 0x9ed3, 0x9ed4, 0x9ed5, 0x0000, 0x0000, 0x9ed8, + 0x9ed9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9ee0, + 0x0000, 0x0000, 0x9ee3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x9eec, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x9ef2, 0x9ef3, 0x9ef4, 0x0000, 0x9ef6, 0x0000, 0x9ef8, + 0x9ef9, 0x0000, 0x9efb, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x9f43, 0x0000, 0x0000, 0x9f46, 0x9f47, 0x9f48, 0x0000, + 0x9f4a, 0x9f4b, 0x9f4c, 0x9f4d, 0x9f4e, 0x0000, 0x9f50, 0x0000, + 0x0000, 0x9f53, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9f68, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9faa, 0x0000, + 0x0000, 0x9fad, 0x0000, 0x0000, 0x0000, 0x9fb1, 0x0000, 0x9fb3, + 0x0000, 0x9fb5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9fbb, + 0x0000, 0x0000, 0x9fbe, 0x9fbf, 0x9fc0, 0x9fc1, 0x0000, 0x0000, + 0x0000, 0x9fc5, 0x0000, 0x0000, 0x9fc8, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9fd1, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9fda, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_ee[] = { + 0x0000, 0x0000, 0x9fe6, 0x0000, 0x0000, 0x0000, 0x9fea, 0x0000, + 0x9fec, 0x0000, 0x0000, 0x9fef, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x9ff5, 0x0000, 0x0000, 0x0000, 0x9ff9, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xa040, 0x0000, 0x0000, 0x0000, 0x0000, + 0xa045, 0x0000, 0xa047, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xa04f, 0x0000, 0x0000, 0x0000, 0x0000, 0xa054, + 0xa055, 0xa056, 0xa057, 0x0000, 0xa059, 0xa05a, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa062, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xa06d, 0x0000, 0x0000, 0x0000, 0x0000, 0xa072, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa07b, 0x0000, + 0x0000, 0x0000, 0x0000, 0xa0a2, 0x0000, 0xa0a4, 0xa0a5, 0x0000, + 0xa0a7, 0x0000, 0x0000, 0x0000, 0xa0ab, 0x0000, 0xa0ad, 0x0000, + 0xa0af, 0x0000, 0xa0b1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa0bd, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xa0c3, 0x0000, 0xa0c5, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xa0d3, 0x0000, 0x0000, 0x0000, + 0x0000, 0xa0d8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xa0e1, 0x0000, 0xa0e3, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xa0e9, 0xa0ea, 0xa0eb, 0xa0ec, 0xa0ed, 0xa0ee, + 0xa0ef, 0xa0f0, 0xa0f1, 0x0000, 0xa0f3, 0xa0f4, 0xa0f5, 0xa0f6, + 0xa0f7, 0xa0f8, 0x0000, 0x0000, 0xa0fb, 0x0000, 0x0000, 0xa0fe, + 0x8140, 0x8141, 0x8142, 0x8143, 0x8144, 0x8145, 0x8146, 0x8147, + 0x8148, 0x8149, 0x814a, 0x814b, 0x814c, 0x814d, 0x814e, 0x814f, + 0x8150, 0x8151, 0x8152, 0x8153, 0x8154, 0x8155, 0x8156, 0x8157, + 0x8158, 0x8159, 0x815a, 0x815b, 0x815c, 0x815d, 0x815e, 0x815f, + 0x8160, 0x8161, 0x8162, 0x8163, 0x8164, 0x8165, 0x8166, 0x8167, + 0x8168, 0x8169, 0x816a, 0x816b, 0x816c, 0x816d, 0x816e, 0x816f, + 0x8170, 0x8171, 0x8172, 0x8173, 0x8174, 0x8175, 0x8176, 0x8177, + 0x8178, 0x8179, 0x817a, 0x817b, 0x817c, 0x817d, 0x817e, 0x81a1, + 0x81a2, 0x81a3, 0x81a4, 0x81a5, 0x81a6, 0x81a7, 0x81a8, 0x81a9 +}; + +static const unsigned short big5hkscs_from_unicode_ef[] = { + 0x81aa, 0x81ab, 0x81ac, 0x81ad, 0x81ae, 0x81af, 0x81b0, 0x81b1, + 0x81b2, 0x81b3, 0x81b4, 0x81b5, 0x81b6, 0x81b7, 0x81b8, 0x81b9, + 0x81ba, 0x81bb, 0x81bc, 0x81bd, 0x81be, 0x81bf, 0x81c0, 0x81c1, + 0x81c2, 0x81c3, 0x81c4, 0x81c5, 0x81c6, 0x81c7, 0x81c8, 0x81c9, + 0x81ca, 0x81cb, 0x81cc, 0x81cd, 0x81ce, 0x81cf, 0x81d0, 0x81d1, + 0x81d2, 0x81d3, 0x81d4, 0x81d5, 0x81d6, 0x81d7, 0x81d8, 0x81d9, + 0x81da, 0x81db, 0x81dc, 0x81dd, 0x81de, 0x81df, 0x81e0, 0x81e1, + 0x81e2, 0x81e3, 0x81e4, 0x81e5, 0x81e6, 0x81e7, 0x81e8, 0x81e9, + 0x81ea, 0x81eb, 0x81ec, 0x81ed, 0x81ee, 0x81ef, 0x81f0, 0x81f1, + 0x81f2, 0x81f3, 0x81f4, 0x81f5, 0x81f6, 0x81f7, 0x81f8, 0x81f9, + 0x81fa, 0x81fb, 0x81fc, 0x81fd, 0x81fe, 0x8240, 0x8241, 0x8242, + 0x8243, 0x8244, 0x8245, 0x8246, 0x8247, 0x8248, 0x8249, 0x824a, + 0x824b, 0x824c, 0x824d, 0x824e, 0x824f, 0x8250, 0x8251, 0x8252, + 0x8253, 0x8254, 0x8255, 0x8256, 0x8257, 0x8258, 0x8259, 0x825a, + 0x825b, 0x825c, 0x825d, 0x825e, 0x825f, 0x8260, 0x8261, 0x8262, + 0x8263, 0x8264, 0x8265, 0x8266, 0x8267, 0x8268, 0x8269, 0x826a, + 0x826b, 0x826c, 0x826d, 0x826e, 0x826f, 0x8270, 0x8271, 0x8272, + 0x8273, 0x8274, 0x8275, 0x8276, 0x8277, 0x8278, 0x8279, 0x827a, + 0x827b, 0x827c, 0x827d, 0x827e, 0x82a1, 0x82a2, 0x82a3, 0x82a4, + 0x82a5, 0x82a6, 0x82a7, 0x82a8, 0x82a9, 0x82aa, 0x82ab, 0x82ac, + 0x82ad, 0x82ae, 0x82af, 0x82b0, 0x82b1, 0x82b2, 0x82b3, 0x82b4, + 0x82b5, 0x82b6, 0x82b7, 0x82b8, 0x82b9, 0x82ba, 0x82bb, 0x82bc, + 0x82bd, 0x82be, 0x82bf, 0x82c0, 0x82c1, 0x82c2, 0x82c3, 0x82c4, + 0x82c5, 0x82c6, 0x82c7, 0x82c8, 0x82c9, 0x82ca, 0x82cb, 0x82cc, + 0x82cd, 0x82ce, 0x82cf, 0x82d0, 0x82d1, 0x82d2, 0x82d3, 0x82d4, + 0x82d5, 0x82d6, 0x82d7, 0x82d8, 0x82d9, 0x82da, 0x82db, 0x82dc, + 0x82dd, 0x82de, 0x82df, 0x82e0, 0x82e1, 0x82e2, 0x82e3, 0x82e4, + 0x82e5, 0x82e6, 0x82e7, 0x82e8, 0x82e9, 0x82ea, 0x82eb, 0x82ec, + 0x82ed, 0x82ee, 0x82ef, 0x82f0, 0x82f1, 0x82f2, 0x82f3, 0x82f4, + 0x82f5, 0x82f6, 0x82f7, 0x82f8, 0x82f9, 0x82fa, 0x82fb, 0x82fc, + 0x82fd, 0x82fe, 0x8340, 0x8341, 0x8342, 0x8343, 0x8344, 0x8345, + 0x8346, 0x8347, 0x8348, 0x8349, 0x834a, 0x834b, 0x834c, 0x834d +}; + +static const unsigned short big5hkscs_from_unicode_f0[] = { + 0x834e, 0x834f, 0x8350, 0x8351, 0x8352, 0x8353, 0x8354, 0x8355, + 0x8356, 0x8357, 0x8358, 0x8359, 0x835a, 0x835b, 0x835c, 0x835d, + 0x835e, 0x835f, 0x8360, 0x8361, 0x8362, 0x8363, 0x8364, 0x8365, + 0x8366, 0x8367, 0x8368, 0x8369, 0x836a, 0x836b, 0x836c, 0x836d, + 0x836e, 0x836f, 0x8370, 0x8371, 0x8372, 0x8373, 0x8374, 0x8375, + 0x8376, 0x8377, 0x8378, 0x8379, 0x837a, 0x837b, 0x837c, 0x837d, + 0x837e, 0x83a1, 0x83a2, 0x83a3, 0x83a4, 0x83a5, 0x83a6, 0x83a7, + 0x83a8, 0x83a9, 0x83aa, 0x83ab, 0x83ac, 0x83ad, 0x83ae, 0x83af, + 0x83b0, 0x83b1, 0x83b2, 0x83b3, 0x83b4, 0x83b5, 0x83b6, 0x83b7, + 0x83b8, 0x83b9, 0x83ba, 0x83bb, 0x83bc, 0x83bd, 0x83be, 0x83bf, + 0x83c0, 0x83c1, 0x83c2, 0x83c3, 0x83c4, 0x83c5, 0x83c6, 0x83c7, + 0x83c8, 0x83c9, 0x83ca, 0x83cb, 0x83cc, 0x83cd, 0x83ce, 0x83cf, + 0x83d0, 0x83d1, 0x83d2, 0x83d3, 0x83d4, 0x83d5, 0x83d6, 0x83d7, + 0x83d8, 0x83d9, 0x83da, 0x83db, 0x83dc, 0x83dd, 0x83de, 0x83df, + 0x83e0, 0x83e1, 0x83e2, 0x83e3, 0x83e4, 0x83e5, 0x83e6, 0x83e7, + 0x83e8, 0x83e9, 0x83ea, 0x83eb, 0x83ec, 0x83ed, 0x83ee, 0x83ef, + 0x83f0, 0x83f1, 0x83f2, 0x83f3, 0x83f4, 0x83f5, 0x83f6, 0x83f7, + 0x83f8, 0x83f9, 0x83fa, 0x83fb, 0x83fc, 0x83fd, 0x83fe, 0x8440, + 0x8441, 0x8442, 0x8443, 0x8444, 0x8445, 0x8446, 0x8447, 0x8448, + 0x8449, 0x844a, 0x844b, 0x844c, 0x844d, 0x844e, 0x844f, 0x8450, + 0x8451, 0x8452, 0x8453, 0x8454, 0x8455, 0x8456, 0x8457, 0x8458, + 0x8459, 0x845a, 0x845b, 0x845c, 0x845d, 0x845e, 0x845f, 0x8460, + 0x8461, 0x8462, 0x8463, 0x8464, 0x8465, 0x8466, 0x8467, 0x8468, + 0x8469, 0x846a, 0x846b, 0x846c, 0x846d, 0x846e, 0x846f, 0x8470, + 0x8471, 0x8472, 0x8473, 0x8474, 0x8475, 0x8476, 0x8477, 0x8478, + 0x8479, 0x847a, 0x847b, 0x847c, 0x847d, 0x847e, 0x84a1, 0x84a2, + 0x84a3, 0x84a4, 0x84a5, 0x84a6, 0x84a7, 0x84a8, 0x84a9, 0x84aa, + 0x84ab, 0x84ac, 0x84ad, 0x84ae, 0x84af, 0x84b0, 0x84b1, 0x84b2, + 0x84b3, 0x84b4, 0x84b5, 0x84b6, 0x84b7, 0x84b8, 0x84b9, 0x84ba, + 0x84bb, 0x84bc, 0x84bd, 0x84be, 0x84bf, 0x84c0, 0x84c1, 0x84c2, + 0x84c3, 0x84c4, 0x84c5, 0x84c6, 0x84c7, 0x84c8, 0x84c9, 0x84ca, + 0x84cb, 0x84cc, 0x84cd, 0x84ce, 0x84cf, 0x84d0, 0x84d1, 0x84d2 +}; + +static const unsigned short big5hkscs_from_unicode_f1[] = { + 0x84d3, 0x84d4, 0x84d5, 0x84d6, 0x84d7, 0x84d8, 0x84d9, 0x84da, + 0x84db, 0x84dc, 0x84dd, 0x84de, 0x84df, 0x84e0, 0x84e1, 0x84e2, + 0x84e3, 0x84e4, 0x84e5, 0x84e6, 0x84e7, 0x84e8, 0x84e9, 0x84ea, + 0x84eb, 0x84ec, 0x84ed, 0x84ee, 0x84ef, 0x84f0, 0x84f1, 0x84f2, + 0x84f3, 0x84f4, 0x84f5, 0x84f6, 0x84f7, 0x84f8, 0x84f9, 0x84fa, + 0x84fb, 0x84fc, 0x84fd, 0x84fe, 0x8540, 0x8541, 0x8542, 0x8543, + 0x8544, 0x8545, 0x8546, 0x8547, 0x8548, 0x8549, 0x854a, 0x854b, + 0x854c, 0x854d, 0x854e, 0x854f, 0x8550, 0x8551, 0x8552, 0x8553, + 0x8554, 0x8555, 0x8556, 0x8557, 0x8558, 0x8559, 0x855a, 0x855b, + 0x855c, 0x855d, 0x855e, 0x855f, 0x8560, 0x8561, 0x8562, 0x8563, + 0x8564, 0x8565, 0x8566, 0x8567, 0x8568, 0x8569, 0x856a, 0x856b, + 0x856c, 0x856d, 0x856e, 0x856f, 0x8570, 0x8571, 0x8572, 0x8573, + 0x8574, 0x8575, 0x8576, 0x8577, 0x8578, 0x8579, 0x857a, 0x857b, + 0x857c, 0x857d, 0x857e, 0x85a1, 0x85a2, 0x85a3, 0x85a4, 0x85a5, + 0x85a6, 0x85a7, 0x85a8, 0x85a9, 0x85aa, 0x85ab, 0x85ac, 0x85ad, + 0x85ae, 0x85af, 0x85b0, 0x85b1, 0x85b2, 0x85b3, 0x85b4, 0x85b5, + 0x85b6, 0x85b7, 0x85b8, 0x85b9, 0x85ba, 0x85bb, 0x85bc, 0x85bd, + 0x85be, 0x85bf, 0x85c0, 0x85c1, 0x85c2, 0x85c3, 0x85c4, 0x85c5, + 0x85c6, 0x85c7, 0x85c8, 0x85c9, 0x85ca, 0x85cb, 0x85cc, 0x85cd, + 0x85ce, 0x85cf, 0x85d0, 0x85d1, 0x85d2, 0x85d3, 0x85d4, 0x85d5, + 0x85d6, 0x85d7, 0x85d8, 0x85d9, 0x85da, 0x85db, 0x85dc, 0x85dd, + 0x85de, 0x85df, 0x85e0, 0x85e1, 0x85e2, 0x85e3, 0x85e4, 0x85e5, + 0x85e6, 0x85e7, 0x85e8, 0x85e9, 0x85ea, 0x85eb, 0x85ec, 0x85ed, + 0x85ee, 0x85ef, 0x85f0, 0x85f1, 0x85f2, 0x85f3, 0x85f4, 0x85f5, + 0x85f6, 0x85f7, 0x85f8, 0x85f9, 0x85fa, 0x85fb, 0x85fc, 0x85fd, + 0x85fe, 0x8640, 0x8641, 0x8642, 0x8643, 0x8644, 0x8645, 0x8646, + 0x8647, 0x8648, 0x8649, 0x864a, 0x864b, 0x864c, 0x864d, 0x864e, + 0x864f, 0x8650, 0x8651, 0x8652, 0x8653, 0x8654, 0x8655, 0x8656, + 0x8657, 0x8658, 0x8659, 0x865a, 0x865b, 0x865c, 0x865d, 0x865e, + 0x865f, 0x8660, 0x8661, 0x8662, 0x8663, 0x8664, 0x8665, 0x8666, + 0x8667, 0x8668, 0x8669, 0x866a, 0x866b, 0x866c, 0x866d, 0x866e, + 0x866f, 0x8670, 0x8671, 0x8672, 0x8673, 0x8674, 0x8675, 0x8676 +}; + +static const unsigned short big5hkscs_from_unicode_f2[] = { + 0x8677, 0x8678, 0x8679, 0x867a, 0x867b, 0x867c, 0x867d, 0x867e, + 0x86a1, 0x86a2, 0x86a3, 0x86a4, 0x86a5, 0x86a6, 0x86a7, 0x86a8, + 0x86a9, 0x86aa, 0x86ab, 0x86ac, 0x86ad, 0x86ae, 0x86af, 0x86b0, + 0x86b1, 0x86b2, 0x86b3, 0x86b4, 0x86b5, 0x86b6, 0x86b7, 0x86b8, + 0x86b9, 0x86ba, 0x86bb, 0x86bc, 0x86bd, 0x86be, 0x86bf, 0x86c0, + 0x86c1, 0x86c2, 0x86c3, 0x86c4, 0x86c5, 0x86c6, 0x86c7, 0x86c8, + 0x86c9, 0x86ca, 0x86cb, 0x86cc, 0x86cd, 0x86ce, 0x86cf, 0x86d0, + 0x86d1, 0x86d2, 0x86d3, 0x86d4, 0x86d5, 0x86d6, 0x86d7, 0x86d8, + 0x86d9, 0x86da, 0x86db, 0x86dc, 0x86dd, 0x86de, 0x86df, 0x86e0, + 0x86e1, 0x86e2, 0x86e3, 0x86e4, 0x86e5, 0x86e6, 0x86e7, 0x86e8, + 0x86e9, 0x86ea, 0x86eb, 0x86ec, 0x86ed, 0x86ee, 0x86ef, 0x86f0, + 0x86f1, 0x86f2, 0x86f3, 0x86f4, 0x86f5, 0x86f6, 0x86f7, 0x86f8, + 0x86f9, 0x86fa, 0x86fb, 0x86fc, 0x86fd, 0x86fe, 0x8740, 0x8741, + 0x8742, 0x8743, 0x8744, 0x8745, 0x8746, 0x8747, 0x8748, 0x8749, + 0x874a, 0x874b, 0x874c, 0x874d, 0x874e, 0x874f, 0x8750, 0x8751, + 0x8752, 0x8753, 0x8754, 0x8755, 0x8756, 0x8757, 0x8758, 0x8759, + 0x875a, 0x875b, 0x875c, 0x875d, 0x875e, 0x875f, 0x8760, 0x8761, + 0x8762, 0x8763, 0x8764, 0x8765, 0x8766, 0x8767, 0x8768, 0x8769, + 0x876a, 0x876b, 0x876c, 0x876d, 0x876e, 0x876f, 0x8770, 0x8771, + 0x8772, 0x8773, 0x8774, 0x8775, 0x8776, 0x8777, 0x8778, 0x8779, + 0x877a, 0x877b, 0x877c, 0x877d, 0x877e, 0x87a1, 0x87a2, 0x87a3, + 0x87a4, 0x87a5, 0x87a6, 0x87a7, 0x87a8, 0x87a9, 0x87aa, 0x87ab, + 0x87ac, 0x87ad, 0x87ae, 0x87af, 0x87b0, 0x87b1, 0x87b2, 0x87b3, + 0x87b4, 0x87b5, 0x87b6, 0x87b7, 0x87b8, 0x87b9, 0x87ba, 0x87bb, + 0x87bc, 0x87bd, 0x87be, 0x87bf, 0x87c0, 0x87c1, 0x87c2, 0x87c3, + 0x87c4, 0x87c5, 0x87c6, 0x87c7, 0x87c8, 0x87c9, 0x87ca, 0x87cb, + 0x87cc, 0x87cd, 0x87ce, 0x87cf, 0x87d0, 0x87d1, 0x87d2, 0x87d3, + 0x87d4, 0x87d5, 0x87d6, 0x87d7, 0x87d8, 0x87d9, 0x87da, 0x87db, + 0x87dc, 0x87dd, 0x87de, 0x87df, 0x87e0, 0x87e1, 0x87e2, 0x87e3, + 0x87e4, 0x87e5, 0x87e6, 0x87e7, 0x87e8, 0x87e9, 0x87ea, 0x87eb, + 0x87ec, 0x87ed, 0x87ee, 0x87ef, 0x87f0, 0x87f1, 0x87f2, 0x87f3, + 0x87f4, 0x87f5, 0x87f6, 0x87f7, 0x87f8, 0x87f9, 0x87fa, 0x87fb +}; + +static const unsigned short big5hkscs_from_unicode_f3[] = { + 0x87fc, 0x87fd, 0x87fe, 0x8840, 0x8841, 0x8842, 0x8843, 0x8844, + 0x8845, 0x8846, 0x8847, 0x8848, 0x8849, 0x884a, 0x884b, 0x884c, + 0x884d, 0x884e, 0x884f, 0x8850, 0x8851, 0x8852, 0x8853, 0x8854, + 0x8855, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8862, 0x0000, 0x8864, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x88a3, 0x0000, 0x88a5, 0x0000, + 0x0000, 0x0000, 0x88a9, 0x88aa, 0x88ab, 0x88ac, 0x88ad, 0x88ae, + 0x88af, 0x88b0, 0x88b1, 0x88b2, 0x88b3, 0x88b4, 0x88b5, 0x88b6, + 0x88b7, 0x88b8, 0x88b9, 0x88ba, 0x88bb, 0x88bc, 0x88bd, 0x88be, + 0x88bf, 0x88c0, 0x88c1, 0x88c2, 0x88c3, 0x88c4, 0x88c5, 0x88c6, + 0x88c7, 0x88c8, 0x88c9, 0x88ca, 0x88cb, 0x88cc, 0x88cd, 0x88ce, + 0x88cf, 0x88d0, 0x88d1, 0x88d2, 0x88d3, 0x88d4, 0x88d5, 0x88d6, + 0x88d7, 0x88d8, 0x88d9, 0x88da, 0x88db, 0x88dc, 0x88dd, 0x88de, + 0x88df, 0x88e0, 0x88e1, 0x88e2, 0x88e3, 0x88e4, 0x88e5, 0x88e6, + 0x88e7, 0x88e8, 0x88e9, 0x88ea, 0x88eb, 0x88ec, 0x88ed, 0x88ee, + 0x88ef, 0x88f0, 0x88f1, 0x88f2, 0x88f3, 0x88f4, 0x88f5, 0x88f6, + 0x88f7, 0x88f8, 0x88f9, 0x88fa, 0x88fb, 0x88fc, 0x88fd, 0x88fe, + 0x8940, 0x8941, 0x8942, 0x0000, 0x8944, 0x8945, 0x0000, 0x0000, + 0x0000, 0x0000, 0x894a, 0x894b, 0x894c, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x89a7, 0x89a8, 0x89a9, + 0x89aa, 0x0000, 0x0000, 0x0000, 0x0000, 0x89af, 0x0000, 0x0000, + 0x89b2, 0x89b3, 0x89b4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x89bb, 0x89bc, 0x0000, 0x89be, 0x0000, 0x89c0, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_f4[] = { + 0x0000, 0x0000, 0x89c4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x89ca, 0x89cb, 0x89cc, 0x89cd, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8a40, 0x0000, 0x8a42, + 0x8a43, 0x8a44, 0x8a45, 0x0000, 0x8a47, 0x0000, 0x8a49, 0x0000, + 0x8a4b, 0x8a4c, 0x0000, 0x8a4e, 0x0000, 0x8a50, 0x0000, 0x0000, + 0x8a53, 0x8a54, 0x8a55, 0x0000, 0x8a57, 0x8a58, 0x8a59, 0x8a5a, + 0x0000, 0x0000, 0x8a5d, 0x8a5e, 0x8a5f, 0x8a60, 0x8a61, 0x8a62, + 0x8a63, 0x8a64, 0x8a65, 0x8a66, 0x0000, 0x8a68, 0x8a69, 0x0000, + 0x0000, 0x8a6c, 0x0000, 0x0000, 0x8a6f, 0x8a70, 0x8a71, 0x8a72, + 0x0000, 0x0000, 0x8a75, 0x0000, 0x8a77, 0x0000, 0x0000, 0x8a7a, + 0x8a7b, 0x8a7c, 0x0000, 0x8a7e, 0x8aa1, 0x8aa2, 0x8aa3, 0x0000, + 0x8aa5, 0x8aa6, 0x0000, 0x8aa8, 0x8aa9, 0x8aaa, 0x8aab, 0x0000, + 0x8aad, 0x0000, 0x0000, 0x8ab0, 0x8ab1, 0x8ab2, 0x8ab3, 0x8ab4, + 0x8ab5, 0x8ab6, 0x0000, 0x0000, 0x0000, 0x8aba, 0x0000, 0x8abc, + 0x8abd, 0x0000, 0x0000, 0x8ac0, 0x0000, 0x0000, 0x8ac3, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8ac8, 0x8ac9, 0x8aca, 0x8acb, 0x8acc, + 0x8acd, 0x8ace, 0x8acf, 0x0000, 0x0000, 0x8ad2, 0x0000, 0x8ad4, + 0x8ad5, 0x0000, 0x8ad7, 0x8ad8, 0x8ad9, 0x0000, 0x0000, 0x8adc, + 0x8add, 0x8ade, 0x8adf, 0x8ae0, 0x8ae1, 0x8ae2, 0x8ae3, 0x8ae4, + 0x8ae5, 0x8ae6, 0x0000, 0x8ae8, 0x8ae9, 0x8aea, 0x0000, 0x8aec, + 0x8aed, 0x8aee, 0x8aef, 0x0000, 0x8af1, 0x8af2, 0x8af3, 0x8af4, + 0x8af5, 0x8af6, 0x8af7, 0x8af8, 0x8af9, 0x8afa, 0x0000, 0x8afc, + 0x0000, 0x8afe, 0x8b40, 0x8b41, 0x8b42, 0x8b43, 0x8b44, 0x8b45, + 0x8b46, 0x0000, 0x8b48, 0x8b49, 0x8b4a, 0x8b4b, 0x8b4c, 0x8b4d, + 0x8b4e, 0x8b4f, 0x0000, 0x0000, 0x0000, 0x0000, 0x8b54, 0x8b55, + 0x0000, 0x0000, 0x8b58, 0x8b59, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8b5e, 0x0000, 0x0000, 0x0000, 0x8b62, 0x0000, 0x8b64, 0x8b65 +}; + +static const unsigned short big5hkscs_from_unicode_f5[] = { + 0x8b66, 0x8b67, 0x0000, 0x8b69, 0x0000, 0x8b6b, 0x0000, 0x8b6d, + 0x8b6e, 0x8b6f, 0x8b70, 0x8b71, 0x8b72, 0x8b73, 0x8b74, 0x8b75, + 0x8b76, 0x8b77, 0x0000, 0x8b79, 0x8b7a, 0x8b7b, 0x8b7c, 0x0000, + 0x8b7e, 0x8ba1, 0x8ba2, 0x8ba3, 0x8ba4, 0x8ba5, 0x0000, 0x8ba7, + 0x8ba8, 0x8ba9, 0x8baa, 0x8bab, 0x8bac, 0x8bad, 0x8bae, 0x0000, + 0x0000, 0x0000, 0x8bb2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8bbb, 0x8bbc, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8bc2, 0x8bc3, 0x0000, 0x8bc5, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8bd6, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8bdb, 0x0000, 0x8bdd, 0x8bde, 0x0000, + 0x0000, 0x8be1, 0x8be2, 0x0000, 0x0000, 0x0000, 0x8be6, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8bed, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8bf3, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8bfa, 0x0000, 0x0000, 0x0000, 0x8bfe, 0x0000, + 0x0000, 0x8c42, 0x8c43, 0x0000, 0x0000, 0x8c46, 0x0000, 0x0000, + 0x0000, 0x8c4a, 0x0000, 0x8c4c, 0x0000, 0x8c4e, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8c54, 0x8c55, 0x0000, 0x8c57, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8c5c, 0x0000, 0x0000, 0x8c5f, 0x0000, + 0x0000, 0x8c62, 0x0000, 0x8c64, 0x8c65, 0x0000, 0x0000, 0x0000, + 0x8c69, 0x0000, 0x0000, 0x8c6c, 0x8c6d, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x8c74, 0x0000, 0x0000, 0x0000, 0x0000, + 0x8c79, 0x0000, 0x0000, 0x0000, 0x8c7d, 0x0000, 0x8ca1, 0x0000, + 0x0000, 0x8ca4, 0x0000, 0x8ca6, 0x0000, 0x8ca8, 0x0000, 0x0000, + 0x8cab, 0x0000, 0x0000, 0x0000, 0x8caf, 0x8cb0, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8cb7, 0x0000, 0x8cb9, 0x0000, + 0x8cbb, 0x0000, 0x0000, 0x0000, 0x0000, 0x8cc0, 0x8cc1, 0x8cc2, + 0x0000, 0x0000, 0x0000, 0x8cc6, 0x8cc7, 0x8cc8, 0x0000, 0x0000, + 0x0000, 0x0000, 0x8ccd, 0x0000, 0x8ccf, 0x0000, 0x8cd1, 0x0000, + 0x8cd3, 0x0000, 0x8cd5, 0x8cd6, 0x8cd7, 0x8cd8, 0x0000, 0x8cda, + 0x8cdb, 0x0000, 0x8cdd, 0x8cde, 0x8cdf, 0x8ce0, 0x8ce1, 0x8ce2, + 0x8ce3, 0x8ce4, 0x8ce5, 0x8ce6, 0x8ce7, 0x8ce8, 0x8ce9, 0x8cea +}; + +static const unsigned short big5hkscs_from_unicode_f6[] = { + 0x8ceb, 0x8cec, 0x8ced, 0x8cee, 0x8cef, 0x8cf0, 0x8cf1, 0x8cf2, + 0x8cf3, 0x8cf4, 0x8cf5, 0x8cf6, 0x8cf7, 0x8cf8, 0x8cf9, 0x8cfa, + 0x8cfb, 0x8cfc, 0x8cfd, 0x8cfe, 0x8d40, 0x8d41, 0x8d42, 0x8d43, + 0x8d44, 0x8d45, 0x8d46, 0x8d47, 0x8d48, 0x8d49, 0x8d4a, 0x8d4b, + 0x8d4c, 0x8d4d, 0x8d4e, 0x8d4f, 0x8d50, 0x8d51, 0x8d52, 0x8d53, + 0x8d54, 0x8d55, 0x8d56, 0x8d57, 0x8d58, 0x8d59, 0x8d5a, 0x8d5b, + 0x8d5c, 0x8d5d, 0x8d5e, 0x8d5f, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8de2, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8dec, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8dfb, 0x0000, 0x0000, + 0x8dfe, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xc6cf, + 0x0000, 0x0000, 0x0000, 0xc6d3, 0x0000, 0xc6d5, 0x0000, 0xc6d7, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xc6de, 0xc6df, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_f7[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xc879, 0xc87a, 0x0000, + 0xc87c, 0x0000, 0xc87e, 0xc8a1, 0x0000, 0xc8a3, 0xc8a4, 0xc8a5, + 0xc8a6, 0xc8a7, 0xc8a8, 0xc8a9, 0xc8aa, 0xc8ab, 0xc8ac, 0xc8ad, + 0xc8ae, 0xc8af, 0xc8b0, 0xc8b1, 0xc8b2, 0xc8b3, 0xc8b4, 0xc8b5 +}; + +static const unsigned short big5hkscs_from_unicode_f8[] = { + 0xc8b6, 0xc8b7, 0xc8b8, 0xc8b9, 0xc8ba, 0xc8bb, 0xc8bc, 0xc8bd, + 0xc8be, 0xc8bf, 0xc8c0, 0xc8c1, 0xc8c2, 0xc8c3, 0xc8c4, 0xc8c5, + 0xc8c6, 0xc8c7, 0xc8c8, 0xc8c9, 0xc8ca, 0xc8cb, 0xc8cc, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xc8f2, 0xc8f3, 0xc8f4, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_f9[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8bf8, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_fa[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xc94a, 0xddfc, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_fe[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xa14a, 0xa157, 0x0000, 0xa159, 0xa15b, 0xa15f, 0xa160, 0xa163, + 0xa164, 0xa167, 0xa168, 0xa16b, 0xa16c, 0xa16f, 0xa170, 0xa173, + 0xa174, 0xa177, 0xa178, 0xa17b, 0xa17c, 0x0000, 0x0000, 0x0000, + 0x0000, 0xa1c6, 0xa1c7, 0xa1ca, 0xa1cb, 0xa1c8, 0xa1c9, 0xa15c, + 0xa14d, 0xa14e, 0xa14f, 0x0000, 0xa151, 0xa152, 0xa153, 0xa154, + 0x0000, 0xa17d, 0xa17e, 0xa1a1, 0xa1a2, 0xa1a3, 0xa1a4, 0xa1cc, + 0xa1cd, 0xa1ce, 0xa1de, 0xa1df, 0xa1e0, 0xa1e1, 0xa1e2, 0x0000, + 0xa242, 0xa24c, 0xa24d, 0xa24e, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short big5hkscs_from_unicode_ff[] = { + 0x0000, 0xa149, 0xc8d0, 0xa1ad, 0xa243, 0xa248, 0xa1ae, 0xc8cf, + 0xa15d, 0xa15e, 0xa1af, 0xa1cf, 0xa141, 0xa1d0, 0xa144, 0xa1fe, + 0xa2af, 0xa2b0, 0xa2b1, 0xa2b2, 0xa2b3, 0xa2b4, 0xa2b5, 0xa2b6, + 0xa2b7, 0xa2b8, 0xa147, 0xa146, 0xa1d5, 0xa1d7, 0xa1d6, 0xa148, + 0xa249, 0xa2cf, 0xa2d0, 0xa2d1, 0xa2d2, 0xa2d3, 0xa2d4, 0xa2d5, + 0xa2d6, 0xa2d7, 0xa2d8, 0xa2d9, 0xa2da, 0xa2db, 0xa2dc, 0xa2dd, + 0xa2de, 0xa2df, 0xa2e0, 0xa2e1, 0xa2e2, 0xa2e3, 0xa2e4, 0xa2e5, + 0xa2e6, 0xa2e7, 0xa2e8, 0xc6e4, 0xa240, 0xc6e5, 0x0000, 0xa1c4, + 0x0000, 0xa2e9, 0xa2ea, 0xa2eb, 0xa2ec, 0xa2ed, 0xa2ee, 0xa2ef, + 0xa2f0, 0xa2f1, 0xa2f2, 0xa2f3, 0xa2f4, 0xa2f5, 0xa2f6, 0xa2f7, + 0xa2f8, 0xa2f9, 0xa2fa, 0xa2fb, 0xa2fc, 0xa2fd, 0xa2fe, 0xa340, + 0xa341, 0xa342, 0xa343, 0xa161, 0xa155, 0xa162, 0xa1e3, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xa246, 0xa247, 0xc8cd, 0xa1c3, 0xc8ce, 0xa244, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf9fe, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short * const big5hkscs_from_unicode_[] = { + big5hkscs_from_unicode_0, + big5hkscs_from_unicode_1, + big5hkscs_from_unicode_2, + big5hkscs_from_unicode_3, + big5hkscs_from_unicode_4, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + big5hkscs_from_unicode_1e, + u_allzeros, + big5hkscs_from_unicode_20, + big5hkscs_from_unicode_21, + big5hkscs_from_unicode_22, + u_allzeros, + big5hkscs_from_unicode_24, + big5hkscs_from_unicode_25, + big5hkscs_from_unicode_26, + big5hkscs_from_unicode_27, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + big5hkscs_from_unicode_2e, + big5hkscs_from_unicode_2f, + big5hkscs_from_unicode_30, + big5hkscs_from_unicode_31, + big5hkscs_from_unicode_32, + big5hkscs_from_unicode_33, + big5hkscs_from_unicode_34, + big5hkscs_from_unicode_35, + big5hkscs_from_unicode_36, + big5hkscs_from_unicode_37, + big5hkscs_from_unicode_38, + big5hkscs_from_unicode_39, + big5hkscs_from_unicode_3a, + big5hkscs_from_unicode_3b, + big5hkscs_from_unicode_3c, + big5hkscs_from_unicode_3d, + big5hkscs_from_unicode_3e, + big5hkscs_from_unicode_3f, + big5hkscs_from_unicode_40, + big5hkscs_from_unicode_41, + big5hkscs_from_unicode_42, + big5hkscs_from_unicode_43, + big5hkscs_from_unicode_44, + big5hkscs_from_unicode_45, + big5hkscs_from_unicode_46, + big5hkscs_from_unicode_47, + big5hkscs_from_unicode_48, + big5hkscs_from_unicode_49, + big5hkscs_from_unicode_4a, + big5hkscs_from_unicode_4b, + big5hkscs_from_unicode_4c, + big5hkscs_from_unicode_4d, + big5hkscs_from_unicode_4e, + big5hkscs_from_unicode_4f, + big5hkscs_from_unicode_50, + big5hkscs_from_unicode_51, + big5hkscs_from_unicode_52, + big5hkscs_from_unicode_53, + big5hkscs_from_unicode_54, + big5hkscs_from_unicode_55, + big5hkscs_from_unicode_56, + big5hkscs_from_unicode_57, + big5hkscs_from_unicode_58, + big5hkscs_from_unicode_59, + big5hkscs_from_unicode_5a, + big5hkscs_from_unicode_5b, + big5hkscs_from_unicode_5c, + big5hkscs_from_unicode_5d, + big5hkscs_from_unicode_5e, + big5hkscs_from_unicode_5f, + big5hkscs_from_unicode_60, + big5hkscs_from_unicode_61, + big5hkscs_from_unicode_62, + big5hkscs_from_unicode_63, + big5hkscs_from_unicode_64, + big5hkscs_from_unicode_65, + big5hkscs_from_unicode_66, + big5hkscs_from_unicode_67, + big5hkscs_from_unicode_68, + big5hkscs_from_unicode_69, + big5hkscs_from_unicode_6a, + big5hkscs_from_unicode_6b, + big5hkscs_from_unicode_6c, + big5hkscs_from_unicode_6d, + big5hkscs_from_unicode_6e, + big5hkscs_from_unicode_6f, + big5hkscs_from_unicode_70, + big5hkscs_from_unicode_71, + big5hkscs_from_unicode_72, + big5hkscs_from_unicode_73, + big5hkscs_from_unicode_74, + big5hkscs_from_unicode_75, + big5hkscs_from_unicode_76, + big5hkscs_from_unicode_77, + big5hkscs_from_unicode_78, + big5hkscs_from_unicode_79, + big5hkscs_from_unicode_7a, + big5hkscs_from_unicode_7b, + big5hkscs_from_unicode_7c, + big5hkscs_from_unicode_7d, + big5hkscs_from_unicode_7e, + big5hkscs_from_unicode_7f, + big5hkscs_from_unicode_80, + big5hkscs_from_unicode_81, + big5hkscs_from_unicode_82, + big5hkscs_from_unicode_83, + big5hkscs_from_unicode_84, + big5hkscs_from_unicode_85, + big5hkscs_from_unicode_86, + big5hkscs_from_unicode_87, + big5hkscs_from_unicode_88, + big5hkscs_from_unicode_89, + big5hkscs_from_unicode_8a, + big5hkscs_from_unicode_8b, + big5hkscs_from_unicode_8c, + big5hkscs_from_unicode_8d, + big5hkscs_from_unicode_8e, + big5hkscs_from_unicode_8f, + big5hkscs_from_unicode_90, + big5hkscs_from_unicode_91, + big5hkscs_from_unicode_92, + big5hkscs_from_unicode_93, + big5hkscs_from_unicode_94, + big5hkscs_from_unicode_95, + big5hkscs_from_unicode_96, + big5hkscs_from_unicode_97, + big5hkscs_from_unicode_98, + big5hkscs_from_unicode_99, + big5hkscs_from_unicode_9a, + big5hkscs_from_unicode_9b, + big5hkscs_from_unicode_9c, + big5hkscs_from_unicode_9d, + big5hkscs_from_unicode_9e, + big5hkscs_from_unicode_9f, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + big5hkscs_from_unicode_e0, + big5hkscs_from_unicode_e1, + big5hkscs_from_unicode_e2, + big5hkscs_from_unicode_e3, + big5hkscs_from_unicode_e4, + big5hkscs_from_unicode_e5, + big5hkscs_from_unicode_e6, + big5hkscs_from_unicode_e7, + big5hkscs_from_unicode_e8, + big5hkscs_from_unicode_e9, + big5hkscs_from_unicode_ea, + big5hkscs_from_unicode_eb, + big5hkscs_from_unicode_ec, + big5hkscs_from_unicode_ed, + big5hkscs_from_unicode_ee, + big5hkscs_from_unicode_ef, + big5hkscs_from_unicode_f0, + big5hkscs_from_unicode_f1, + big5hkscs_from_unicode_f2, + big5hkscs_from_unicode_f3, + big5hkscs_from_unicode_f4, + big5hkscs_from_unicode_f5, + big5hkscs_from_unicode_f6, + big5hkscs_from_unicode_f7, + big5hkscs_from_unicode_f8, + big5hkscs_from_unicode_f9, + big5hkscs_from_unicode_fa, + u_allzeros, + u_allzeros, + u_allzeros, + big5hkscs_from_unicode_fe, + big5hkscs_from_unicode_ff +}; + +struct charmap2 big5hkscs_from_unicode = { 0, 255, (unsigned short **) big5hkscs_from_unicode_, (unichar_t *) unicode_from_big5hkscs }; + +const unichar_t unicode_from_ksc5601[] = { + 0x3164, 0x3001, 0x3002, 0x30fb, 0x2025, 0x22ef, 0x00a8, 0x3003, + 0x2013, 0x2014, 0x2016, 0xff3c, 0xff5e, 0x2018, 0x2019, 0x201c, + 0x201d, 0x3014, 0x3015, 0x3008, 0x3009, 0x300a, 0x300b, 0x300c, + 0x300d, 0x300e, 0x300f, 0x3010, 0x3011, 0x00b1, 0x00d7, 0x00f7, + 0x2260, 0x2264, 0x2265, 0x221e, 0x2234, 0x00b0, 0x2032, 0x2033, + 0x2103, 0x212b, 0xffe0, 0xffe1, 0xffe5, 0x2642, 0x2640, 0x2220, + 0x22a5, 0x2312, 0x2202, 0x2207, 0x2261, 0x2252, 0x00a7, 0x203b, + 0x2606, 0x2605, 0x25cb, 0x25cf, 0x25ce, 0x25c7, 0x25c6, 0x25a1, + 0x25a0, 0x25b3, 0x25b2, 0x25bd, 0x25bc, 0x2192, 0x2190, 0x2191, + 0x2193, 0x2194, 0x3013, 0x00ab, 0x00bb, 0x221a, 0x223d, 0x221d, + 0x2235, 0x222b, 0x222c, 0x2208, 0x220b, 0x2286, 0x2287, 0x2282, + 0x2283, 0x222a, 0x2229, 0x2227, 0x2228, 0xffe2, 0x21d2, 0x21d4, + 0x2200, 0x2203, 0x00b4, 0x02dc, 0x02c7, 0x02d8, 0x02dd, 0x02da, + 0x02d9, 0x00b8, 0x02db, 0x00a1, 0x00bf, 0x2236, 0x222e, 0x2211, + 0x220f, 0x00a4, 0x2109, 0x2030, 0x25c1, 0x25c0, 0x25b7, 0x25b6, + 0x2664, 0x2660, 0x2661, 0x2665, 0x2667, 0x2663, 0x25c9, 0x25c8, + 0x25a3, 0x25d0, 0x25d1, 0x2592, 0x25a4, 0x25a5, 0x25a8, 0x25a7, + 0x25a6, 0x25a9, 0x2668, 0x260f, 0x260e, 0x261c, 0x261e, 0x00b6, + 0x2020, 0x2021, 0x2195, 0x2197, 0x2199, 0x2196, 0x2198, 0x266d, + 0x2669, 0x266a, 0x266c, 0x327f, 0x321c, 0x2116, 0x33c7, 0x2122, + 0x33c2, 0x33d8, 0x2121, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xff01, 0xff02, 0xff03, 0xff04, + 0xff05, 0xff06, 0xff07, 0xff08, 0xff09, 0xff0a, 0xff0b, 0xff0c, + 0xff0d, 0xff0e, 0xff0f, 0xff10, 0xff11, 0xff12, 0xff13, 0xff14, + 0xff15, 0xff16, 0xff17, 0xff18, 0xff19, 0xff1a, 0xff1b, 0xff1c, + 0xff1d, 0xff1e, 0xff1f, 0xff20, 0xff21, 0xff22, 0xff23, 0xff24, + 0xff25, 0xff26, 0xff27, 0xff28, 0xff29, 0xff2a, 0xff2b, 0xff2c, + 0xff2d, 0xff2e, 0xff2f, 0xff30, 0xff31, 0xff32, 0xff33, 0xff34, + 0xff35, 0xff36, 0xff37, 0xff38, 0xff39, 0xff3a, 0xff3b, 0xffe6, + 0xff3d, 0xff3e, 0xff3f, 0xff40, 0xff41, 0xff42, 0xff43, 0xff44, + 0xff45, 0xff46, 0xff47, 0xff48, 0xff49, 0xff4a, 0xff4b, 0xff4c, + 0xff4d, 0xff4e, 0xff4f, 0xff50, 0xff51, 0xff52, 0xff53, 0xff54, + 0xff55, 0xff56, 0xff57, 0xff58, 0xff59, 0xff5a, 0xff5b, 0xff5c, + 0xff5d, 0xffe3, 0x3131, 0x3132, 0x3133, 0x3134, 0x3135, 0x3136, + 0x3137, 0x3138, 0x3139, 0x313a, 0x313b, 0x313c, 0x313d, 0x313e, + 0x313f, 0x3140, 0x3141, 0x3142, 0x3143, 0x3144, 0x3145, 0x3146, + 0x3147, 0x3148, 0x3149, 0x314a, 0x314b, 0x314c, 0x314d, 0x314e, + 0x314f, 0x3150, 0x3151, 0x3152, 0x3153, 0x3154, 0x3155, 0x3156, + 0x3157, 0x3158, 0x3159, 0x315a, 0x315b, 0x315c, 0x315d, 0x315e, + 0x315f, 0x3160, 0x3161, 0x3162, 0x3163, 0x0000, 0x3165, 0x3166, + 0x3167, 0x3168, 0x3169, 0x316a, 0x316b, 0x316c, 0x316d, 0x316e, + 0x316f, 0x3170, 0x3171, 0x3172, 0x3173, 0x3174, 0x3175, 0x3176, + 0x3177, 0x3178, 0x3179, 0x317a, 0x317b, 0x317c, 0x317d, 0x317e, + 0x317f, 0x3180, 0x3181, 0x3182, 0x3183, 0x3184, 0x3185, 0x3186, + 0x3187, 0x3188, 0x3189, 0x318a, 0x318b, 0x318c, 0x318d, 0x318e, + 0x2170, 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176, 0x2177, + 0x2178, 0x2179, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2160, + 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, 0x2168, + 0x2169, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398, + 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, 0x03a0, + 0x03a1, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, 0x03b8, + 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, 0x03c0, + 0x03c1, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, 0x03c8, 0x03c9, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2500, 0x2502, + 0x250c, 0x2510, 0x2518, 0x2514, 0x251c, 0x252c, 0x2524, 0x2534, + 0x253c, 0x2501, 0x2503, 0x250f, 0x2513, 0x251b, 0x2517, 0x2523, + 0x2533, 0x252b, 0x253b, 0x254b, 0x2520, 0x252f, 0x2528, 0x2537, + 0x253f, 0x251d, 0x2530, 0x2525, 0x2538, 0x2542, 0x2512, 0x2511, + 0x251a, 0x2519, 0x2516, 0x2515, 0x250e, 0x250d, 0x251e, 0x251f, + 0x2521, 0x2522, 0x2526, 0x2527, 0x2529, 0x252a, 0x252d, 0x252e, + 0x2531, 0x2532, 0x2535, 0x2536, 0x2539, 0x253a, 0x253d, 0x253e, + 0x2540, 0x2541, 0x2543, 0x2544, 0x2545, 0x2546, 0x2547, 0x2548, + 0x2549, 0x254a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3395, 0x3396, 0x3397, 0x2113, + 0x3398, 0x33c4, 0x33a3, 0x33a4, 0x33a5, 0x33a6, 0x3399, 0x339a, + 0x339b, 0x339c, 0x339d, 0x339e, 0x339f, 0x33a0, 0x33a1, 0x33a2, + 0x33ca, 0x338d, 0x338e, 0x338f, 0x33cf, 0x3388, 0x3389, 0x33c8, + 0x33a7, 0x33a8, 0x33b0, 0x33b1, 0x33b2, 0x33b3, 0x33b4, 0x33b5, + 0x33b6, 0x33b7, 0x33b8, 0x33b9, 0x3380, 0x3381, 0x3382, 0x3383, + 0x3384, 0x33ba, 0x33bb, 0x33bc, 0x33bd, 0x33be, 0x33bf, 0x3390, + 0x3391, 0x3392, 0x3393, 0x3394, 0x2126, 0x33c0, 0x33c1, 0x338a, + 0x338b, 0x338c, 0x33d6, 0x33c5, 0x33ad, 0x33ae, 0x33af, 0x33db, + 0x33a9, 0x33aa, 0x33ab, 0x33ac, 0x33dd, 0x33d0, 0x33d3, 0x33c3, + 0x33c9, 0x33dc, 0x33c6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x00c6, 0x00d0, 0x00aa, 0x0126, 0x0000, 0x0132, + 0x0000, 0x013f, 0x0141, 0x00d8, 0x0152, 0x00ba, 0x00de, 0x0166, + 0x014a, 0x0000, 0x3260, 0x3261, 0x3262, 0x3263, 0x3264, 0x3265, + 0x3266, 0x3267, 0x3268, 0x3269, 0x326a, 0x326b, 0x326c, 0x326d, + 0x326e, 0x326f, 0x3270, 0x3271, 0x3272, 0x3273, 0x3274, 0x3275, + 0x3276, 0x3277, 0x3278, 0x3279, 0x327a, 0x327b, 0x24d0, 0x24d1, + 0x24d2, 0x24d3, 0x24d4, 0x24d5, 0x24d6, 0x24d7, 0x24d8, 0x24d9, + 0x24da, 0x24db, 0x24dc, 0x24dd, 0x24de, 0x24df, 0x24e0, 0x24e1, + 0x24e2, 0x24e3, 0x24e4, 0x24e5, 0x24e6, 0x24e7, 0x24e8, 0x24e9, + 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, + 0x2468, 0x2469, 0x246a, 0x246b, 0x246c, 0x246d, 0x246e, 0x00bd, + 0x2153, 0x2154, 0x00bc, 0x00be, 0x215b, 0x215c, 0x215d, 0x215e, + 0x00e6, 0x0111, 0x00f0, 0x0127, 0x0131, 0x0133, 0x0138, 0x0140, + 0x0142, 0x00f8, 0x0153, 0x00df, 0x00fe, 0x0167, 0x014b, 0x0149, + 0x3200, 0x3201, 0x3202, 0x3203, 0x3204, 0x3205, 0x3206, 0x3207, + 0x3208, 0x3209, 0x320a, 0x320b, 0x320c, 0x320d, 0x320e, 0x320f, + 0x3210, 0x3211, 0x3212, 0x3213, 0x3214, 0x3215, 0x3216, 0x3217, + 0x3218, 0x3219, 0x321a, 0x321b, 0x249c, 0x249d, 0x249e, 0x249f, + 0x24a0, 0x24a1, 0x24a2, 0x24a3, 0x24a4, 0x24a5, 0x24a6, 0x24a7, + 0x24a8, 0x24a9, 0x24aa, 0x24ab, 0x24ac, 0x24ad, 0x24ae, 0x24af, + 0x24b0, 0x24b1, 0x24b2, 0x24b3, 0x24b4, 0x24b5, 0x2474, 0x2475, + 0x2476, 0x2477, 0x2478, 0x2479, 0x247a, 0x247b, 0x247c, 0x247d, + 0x247e, 0x247f, 0x2480, 0x2481, 0x2482, 0x00b9, 0x00b2, 0x00b3, + 0x2074, 0x207f, 0x2081, 0x2082, 0x2083, 0x2084, 0x3041, 0x3042, + 0x3043, 0x3044, 0x3045, 0x3046, 0x3047, 0x3048, 0x3049, 0x304a, + 0x304b, 0x304c, 0x304d, 0x304e, 0x304f, 0x3050, 0x3051, 0x3052, + 0x3053, 0x3054, 0x3055, 0x3056, 0x3057, 0x3058, 0x3059, 0x305a, + 0x305b, 0x305c, 0x305d, 0x305e, 0x305f, 0x3060, 0x3061, 0x3062, + 0x3063, 0x3064, 0x3065, 0x3066, 0x3067, 0x3068, 0x3069, 0x306a, + 0x306b, 0x306c, 0x306d, 0x306e, 0x306f, 0x3070, 0x3071, 0x3072, + 0x3073, 0x3074, 0x3075, 0x3076, 0x3077, 0x3078, 0x3079, 0x307a, + 0x307b, 0x307c, 0x307d, 0x307e, 0x307f, 0x3080, 0x3081, 0x3082, + 0x3083, 0x3084, 0x3085, 0x3086, 0x3087, 0x3088, 0x3089, 0x308a, + 0x308b, 0x308c, 0x308d, 0x308e, 0x308f, 0x3090, 0x3091, 0x3092, + 0x3093, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x30a1, 0x30a2, 0x30a3, 0x30a4, + 0x30a5, 0x30a6, 0x30a7, 0x30a8, 0x30a9, 0x30aa, 0x30ab, 0x30ac, + 0x30ad, 0x30ae, 0x30af, 0x30b0, 0x30b1, 0x30b2, 0x30b3, 0x30b4, + 0x30b5, 0x30b6, 0x30b7, 0x30b8, 0x30b9, 0x30ba, 0x30bb, 0x30bc, + 0x30bd, 0x30be, 0x30bf, 0x30c0, 0x30c1, 0x30c2, 0x30c3, 0x30c4, + 0x30c5, 0x30c6, 0x30c7, 0x30c8, 0x30c9, 0x30ca, 0x30cb, 0x30cc, + 0x30cd, 0x30ce, 0x30cf, 0x30d0, 0x30d1, 0x30d2, 0x30d3, 0x30d4, + 0x30d5, 0x30d6, 0x30d7, 0x30d8, 0x30d9, 0x30da, 0x30db, 0x30dc, + 0x30dd, 0x30de, 0x30df, 0x30e0, 0x30e1, 0x30e2, 0x30e3, 0x30e4, + 0x30e5, 0x30e6, 0x30e7, 0x30e8, 0x30e9, 0x30ea, 0x30eb, 0x30ec, + 0x30ed, 0x30ee, 0x30ef, 0x30f0, 0x30f1, 0x30f2, 0x30f3, 0x30f4, + 0x30f5, 0x30f6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, + 0x0401, 0x0416, 0x0417, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, + 0x041d, 0x041e, 0x041f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, + 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, + 0x042d, 0x042e, 0x042f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, + 0x0451, 0x0436, 0x0437, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, + 0x043d, 0x043e, 0x043f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, + 0x0445, 0x0446, 0x0447, 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, + 0x044d, 0x044e, 0x044f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xac00, 0xac01, 0xac04, 0xac07, 0xac08, 0xac09, + 0xac0a, 0xac10, 0xac11, 0xac12, 0xac13, 0xac14, 0xac15, 0xac16, + 0xac17, 0xac19, 0xac1a, 0xac1b, 0xac1c, 0xac1d, 0xac20, 0xac24, + 0xac2c, 0xac2d, 0xac2f, 0xac30, 0xac31, 0xac38, 0xac39, 0xac3c, + 0xac40, 0xac4b, 0xac4d, 0xac54, 0xac58, 0xac5c, 0xac70, 0xac71, + 0xac74, 0xac77, 0xac78, 0xac7a, 0xac80, 0xac81, 0xac83, 0xac84, + 0xac85, 0xac86, 0xac89, 0xac8a, 0xac8b, 0xac8c, 0xac90, 0xac94, + 0xac9c, 0xac9d, 0xac9f, 0xaca0, 0xaca1, 0xaca8, 0xaca9, 0xacaa, + 0xacac, 0xacaf, 0xacb0, 0xacb8, 0xacb9, 0xacbb, 0xacbc, 0xacbd, + 0xacc1, 0xacc4, 0xacc8, 0xaccc, 0xacd5, 0xacd7, 0xace0, 0xace1, + 0xace4, 0xace7, 0xace8, 0xacea, 0xacec, 0xacef, 0xacf0, 0xacf1, + 0xacf3, 0xacf5, 0xacf6, 0xacfc, 0xacfd, 0xad00, 0xad04, 0xad06, + 0xad0c, 0xad0d, 0xad0f, 0xad11, 0xad18, 0xad1c, 0xad20, 0xad29, + 0xad2c, 0xad2d, 0xad34, 0xad35, 0xad38, 0xad3c, 0xad44, 0xad45, + 0xad47, 0xad49, 0xad50, 0xad54, 0xad58, 0xad61, 0xad63, 0xad6c, + 0xad6d, 0xad70, 0xad73, 0xad74, 0xad75, 0xad76, 0xad7b, 0xad7c, + 0xad7d, 0xad7f, 0xad81, 0xad82, 0xad88, 0xad89, 0xad8c, 0xad90, + 0xad9c, 0xad9d, 0xada4, 0xadb7, 0xadc0, 0xadc1, 0xadc4, 0xadc8, + 0xadd0, 0xadd1, 0xadd3, 0xaddc, 0xade0, 0xade4, 0xadf8, 0xadf9, + 0xadfc, 0xadff, 0xae00, 0xae01, 0xae08, 0xae09, 0xae0b, 0xae0d, + 0xae14, 0xae30, 0xae31, 0xae34, 0xae37, 0xae38, 0xae3a, 0xae40, + 0xae41, 0xae43, 0xae45, 0xae46, 0xae4a, 0xae4c, 0xae4d, 0xae4e, + 0xae50, 0xae54, 0xae56, 0xae5c, 0xae5d, 0xae5f, 0xae60, 0xae61, + 0xae65, 0xae68, 0xae69, 0xae6c, 0xae70, 0xae78, 0xae79, 0xae7b, + 0xae7c, 0xae7d, 0xae84, 0xae85, 0xae8c, 0xaebc, 0xaebd, 0xaebe, + 0xaec0, 0xaec4, 0xaecc, 0xaecd, 0xaecf, 0xaed0, 0xaed1, 0xaed8, + 0xaed9, 0xaedc, 0xaee8, 0xaeeb, 0xaeed, 0xaef4, 0xaef8, 0xaefc, + 0xaf07, 0xaf08, 0xaf0d, 0xaf10, 0xaf2c, 0xaf2d, 0xaf30, 0xaf32, + 0xaf34, 0xaf3c, 0xaf3d, 0xaf3f, 0xaf41, 0xaf42, 0xaf43, 0xaf48, + 0xaf49, 0xaf50, 0xaf5c, 0xaf5d, 0xaf64, 0xaf65, 0xaf79, 0xaf80, + 0xaf84, 0xaf88, 0xaf90, 0xaf91, 0xaf95, 0xaf9c, 0xafb8, 0xafb9, + 0xafbc, 0xafc0, 0xafc7, 0xafc8, 0xafc9, 0xafcb, 0xafcd, 0xafce, + 0xafd4, 0xafdc, 0xafe8, 0xafe9, 0xaff0, 0xaff1, 0xaff4, 0xaff8, + 0xb000, 0xb001, 0xb004, 0xb00c, 0xb010, 0xb014, 0xb01c, 0xb01d, + 0xb028, 0xb044, 0xb045, 0xb048, 0xb04a, 0xb04c, 0xb04e, 0xb053, + 0xb054, 0xb055, 0xb057, 0xb059, 0xb05d, 0xb07c, 0xb07d, 0xb080, + 0xb084, 0xb08c, 0xb08d, 0xb08f, 0xb091, 0xb098, 0xb099, 0xb09a, + 0xb09c, 0xb09f, 0xb0a0, 0xb0a1, 0xb0a2, 0xb0a8, 0xb0a9, 0xb0ab, + 0xb0ac, 0xb0ad, 0xb0ae, 0xb0af, 0xb0b1, 0xb0b3, 0xb0b4, 0xb0b5, + 0xb0b8, 0xb0bc, 0xb0c4, 0xb0c5, 0xb0c7, 0xb0c8, 0xb0c9, 0xb0d0, + 0xb0d1, 0xb0d4, 0xb0d8, 0xb0e0, 0xb0e5, 0xb108, 0xb109, 0xb10b, + 0xb10c, 0xb110, 0xb112, 0xb113, 0xb118, 0xb119, 0xb11b, 0xb11c, + 0xb11d, 0xb123, 0xb124, 0xb125, 0xb128, 0xb12c, 0xb134, 0xb135, + 0xb137, 0xb138, 0xb139, 0xb140, 0xb141, 0xb144, 0xb148, 0xb150, + 0xb151, 0xb154, 0xb155, 0xb158, 0xb15c, 0xb160, 0xb178, 0xb179, + 0xb17c, 0xb180, 0xb182, 0xb188, 0xb189, 0xb18b, 0xb18d, 0xb192, + 0xb193, 0xb194, 0xb198, 0xb19c, 0xb1a8, 0xb1cc, 0xb1d0, 0xb1d4, + 0xb1dc, 0xb1dd, 0xb1df, 0xb1e8, 0xb1e9, 0xb1ec, 0xb1f0, 0xb1f9, + 0xb1fb, 0xb1fd, 0xb204, 0xb205, 0xb208, 0xb20b, 0xb20c, 0xb214, + 0xb215, 0xb217, 0xb219, 0xb220, 0xb234, 0xb23c, 0xb258, 0xb25c, + 0xb260, 0xb268, 0xb269, 0xb274, 0xb275, 0xb27c, 0xb284, 0xb285, + 0xb289, 0xb290, 0xb291, 0xb294, 0xb298, 0xb299, 0xb29a, 0xb2a0, + 0xb2a1, 0xb2a3, 0xb2a5, 0xb2a6, 0xb2aa, 0xb2ac, 0xb2b0, 0xb2b4, + 0xb2c8, 0xb2c9, 0xb2cc, 0xb2d0, 0xb2d2, 0xb2d8, 0xb2d9, 0xb2db, + 0xb2dd, 0xb2e2, 0xb2e4, 0xb2e5, 0xb2e6, 0xb2e8, 0xb2eb, 0xb2ec, + 0xb2ed, 0xb2ee, 0xb2ef, 0xb2f3, 0xb2f4, 0xb2f5, 0xb2f7, 0xb2f8, + 0xb2f9, 0xb2fa, 0xb2fb, 0xb2ff, 0xb300, 0xb301, 0xb304, 0xb308, + 0xb310, 0xb311, 0xb313, 0xb314, 0xb315, 0xb31c, 0xb354, 0xb355, + 0xb356, 0xb358, 0xb35b, 0xb35c, 0xb35e, 0xb35f, 0xb364, 0xb365, + 0xb367, 0xb369, 0xb36b, 0xb36e, 0xb370, 0xb371, 0xb374, 0xb378, + 0xb380, 0xb381, 0xb383, 0xb384, 0xb385, 0xb38c, 0xb390, 0xb394, + 0xb3a0, 0xb3a1, 0xb3a8, 0xb3ac, 0xb3c4, 0xb3c5, 0xb3c8, 0xb3cb, + 0xb3cc, 0xb3ce, 0xb3d0, 0xb3d4, 0xb3d5, 0xb3d7, 0xb3d9, 0xb3db, + 0xb3dd, 0xb3e0, 0xb3e4, 0xb3e8, 0xb3fc, 0xb410, 0xb418, 0xb41c, + 0xb420, 0xb428, 0xb429, 0xb42b, 0xb434, 0xb450, 0xb451, 0xb454, + 0xb458, 0xb460, 0xb461, 0xb463, 0xb465, 0xb46c, 0xb480, 0xb488, + 0xb49d, 0xb4a4, 0xb4a8, 0xb4ac, 0xb4b5, 0xb4b7, 0xb4b9, 0xb4c0, + 0xb4c4, 0xb4c8, 0xb4d0, 0xb4d5, 0xb4dc, 0xb4dd, 0xb4e0, 0xb4e3, + 0xb4e4, 0xb4e6, 0xb4ec, 0xb4ed, 0xb4ef, 0xb4f1, 0xb4f8, 0xb514, + 0xb515, 0xb518, 0xb51b, 0xb51c, 0xb524, 0xb525, 0xb527, 0xb528, + 0xb529, 0xb52a, 0xb530, 0xb531, 0xb534, 0xb538, 0xb540, 0xb541, + 0xb543, 0xb544, 0xb545, 0xb54b, 0xb54c, 0xb54d, 0xb550, 0xb554, + 0xb55c, 0xb55d, 0xb55f, 0xb560, 0xb561, 0xb5a0, 0xb5a1, 0xb5a4, + 0xb5a8, 0xb5aa, 0xb5ab, 0xb5b0, 0xb5b1, 0xb5b3, 0xb5b4, 0xb5b5, + 0xb5bb, 0xb5bc, 0xb5bd, 0xb5c0, 0xb5c4, 0xb5cc, 0xb5cd, 0xb5cf, + 0xb5d0, 0xb5d1, 0xb5d8, 0xb5ec, 0xb610, 0xb611, 0xb614, 0xb618, + 0xb625, 0xb62c, 0xb634, 0xb648, 0xb664, 0xb668, 0xb69c, 0xb69d, + 0xb6a0, 0xb6a4, 0xb6ab, 0xb6ac, 0xb6b1, 0xb6d4, 0xb6f0, 0xb6f4, + 0xb6f8, 0xb700, 0xb701, 0xb705, 0xb728, 0xb729, 0xb72c, 0xb72f, + 0xb730, 0xb738, 0xb739, 0xb73b, 0xb744, 0xb748, 0xb74c, 0xb754, + 0xb755, 0xb760, 0xb764, 0xb768, 0xb770, 0xb771, 0xb773, 0xb775, + 0xb77c, 0xb77d, 0xb780, 0xb784, 0xb78c, 0xb78d, 0xb78f, 0xb790, + 0xb791, 0xb792, 0xb796, 0xb797, 0xb798, 0xb799, 0xb79c, 0xb7a0, + 0xb7a8, 0xb7a9, 0xb7ab, 0xb7ac, 0xb7ad, 0xb7b4, 0xb7b5, 0xb7b8, + 0xb7c7, 0xb7c9, 0xb7ec, 0xb7ed, 0xb7f0, 0xb7f4, 0xb7fc, 0xb7fd, + 0xb7ff, 0xb800, 0xb801, 0xb807, 0xb808, 0xb809, 0xb80c, 0xb810, + 0xb818, 0xb819, 0xb81b, 0xb81d, 0xb824, 0xb825, 0xb828, 0xb82c, + 0xb834, 0xb835, 0xb837, 0xb838, 0xb839, 0xb840, 0xb844, 0xb851, + 0xb853, 0xb85c, 0xb85d, 0xb860, 0xb864, 0xb86c, 0xb86d, 0xb86f, + 0xb871, 0xb878, 0xb87c, 0xb88d, 0xb8a8, 0xb8b0, 0xb8b4, 0xb8b8, + 0xb8c0, 0xb8c1, 0xb8c3, 0xb8c5, 0xb8cc, 0xb8d0, 0xb8d4, 0xb8dd, + 0xb8df, 0xb8e1, 0xb8e8, 0xb8e9, 0xb8ec, 0xb8f0, 0xb8f8, 0xb8f9, + 0xb8fb, 0xb8fd, 0xb904, 0xb918, 0xb920, 0xb93c, 0xb93d, 0xb940, + 0xb944, 0xb94c, 0xb94f, 0xb951, 0xb958, 0xb959, 0xb95c, 0xb960, + 0xb968, 0xb969, 0xb96b, 0xb96d, 0xb974, 0xb975, 0xb978, 0xb97c, + 0xb984, 0xb985, 0xb987, 0xb989, 0xb98a, 0xb98d, 0xb98e, 0xb9ac, + 0xb9ad, 0xb9b0, 0xb9b4, 0xb9bc, 0xb9bd, 0xb9bf, 0xb9c1, 0xb9c8, + 0xb9c9, 0xb9cc, 0xb9ce, 0xb9cf, 0xb9d0, 0xb9d1, 0xb9d2, 0xb9d8, + 0xb9d9, 0xb9db, 0xb9dd, 0xb9de, 0xb9e1, 0xb9e3, 0xb9e4, 0xb9e5, + 0xb9e8, 0xb9ec, 0xb9f4, 0xb9f5, 0xb9f7, 0xb9f8, 0xb9f9, 0xb9fa, + 0xba00, 0xba01, 0xba08, 0xba15, 0xba38, 0xba39, 0xba3c, 0xba40, + 0xba42, 0xba48, 0xba49, 0xba4b, 0xba4d, 0xba4e, 0xba53, 0xba54, + 0xba55, 0xba58, 0xba5c, 0xba64, 0xba65, 0xba67, 0xba68, 0xba69, + 0xba70, 0xba71, 0xba74, 0xba78, 0xba83, 0xba84, 0xba85, 0xba87, + 0xba8c, 0xbaa8, 0xbaa9, 0xbaab, 0xbaac, 0xbab0, 0xbab2, 0xbab8, + 0xbab9, 0xbabb, 0xbabd, 0xbac4, 0xbac8, 0xbad8, 0xbad9, 0xbafc, + 0xbb00, 0xbb04, 0xbb0d, 0xbb0f, 0xbb11, 0xbb18, 0xbb1c, 0xbb20, + 0xbb29, 0xbb2b, 0xbb34, 0xbb35, 0xbb36, 0xbb38, 0xbb3b, 0xbb3c, + 0xbb3d, 0xbb3e, 0xbb44, 0xbb45, 0xbb47, 0xbb49, 0xbb4d, 0xbb4f, + 0xbb50, 0xbb54, 0xbb58, 0xbb61, 0xbb63, 0xbb6c, 0xbb88, 0xbb8c, + 0xbb90, 0xbba4, 0xbba8, 0xbbac, 0xbbb4, 0xbbb7, 0xbbc0, 0xbbc4, + 0xbbc8, 0xbbd0, 0xbbd3, 0xbbf8, 0xbbf9, 0xbbfc, 0xbbff, 0xbc00, + 0xbc02, 0xbc08, 0xbc09, 0xbc0b, 0xbc0c, 0xbc0d, 0xbc0f, 0xbc11, + 0xbc14, 0xbc15, 0xbc16, 0xbc17, 0xbc18, 0xbc1b, 0xbc1c, 0xbc1d, + 0xbc1e, 0xbc1f, 0xbc24, 0xbc25, 0xbc27, 0xbc29, 0xbc2d, 0xbc30, + 0xbc31, 0xbc34, 0xbc38, 0xbc40, 0xbc41, 0xbc43, 0xbc44, 0xbc45, + 0xbc49, 0xbc4c, 0xbc4d, 0xbc50, 0xbc5d, 0xbc84, 0xbc85, 0xbc88, + 0xbc8b, 0xbc8c, 0xbc8e, 0xbc94, 0xbc95, 0xbc97, 0xbc99, 0xbc9a, + 0xbca0, 0xbca1, 0xbca4, 0xbca7, 0xbca8, 0xbcb0, 0xbcb1, 0xbcb3, + 0xbcb4, 0xbcb5, 0xbcbc, 0xbcbd, 0xbcc0, 0xbcc4, 0xbccd, 0xbccf, + 0xbcd0, 0xbcd1, 0xbcd5, 0xbcd8, 0xbcdc, 0xbcf4, 0xbcf5, 0xbcf6, + 0xbcf8, 0xbcfc, 0xbd04, 0xbd05, 0xbd07, 0xbd09, 0xbd10, 0xbd14, + 0xbd24, 0xbd2c, 0xbd40, 0xbd48, 0xbd49, 0xbd4c, 0xbd50, 0xbd58, + 0xbd59, 0xbd64, 0xbd68, 0xbd80, 0xbd81, 0xbd84, 0xbd87, 0xbd88, + 0xbd89, 0xbd8a, 0xbd90, 0xbd91, 0xbd93, 0xbd95, 0xbd99, 0xbd9a, + 0xbd9c, 0xbda4, 0xbdb0, 0xbdb8, 0xbdd4, 0xbdd5, 0xbdd8, 0xbddc, + 0xbde9, 0xbdf0, 0xbdf4, 0xbdf8, 0xbe00, 0xbe03, 0xbe05, 0xbe0c, + 0xbe0d, 0xbe10, 0xbe14, 0xbe1c, 0xbe1d, 0xbe1f, 0xbe44, 0xbe45, + 0xbe48, 0xbe4c, 0xbe4e, 0xbe54, 0xbe55, 0xbe57, 0xbe59, 0xbe5a, + 0xbe5b, 0xbe60, 0xbe61, 0xbe64, 0xbe68, 0xbe6a, 0xbe70, 0xbe71, + 0xbe73, 0xbe74, 0xbe75, 0xbe7b, 0xbe7c, 0xbe7d, 0xbe80, 0xbe84, + 0xbe8c, 0xbe8d, 0xbe8f, 0xbe90, 0xbe91, 0xbe98, 0xbe99, 0xbea8, + 0xbed0, 0xbed1, 0xbed4, 0xbed7, 0xbed8, 0xbee0, 0xbee3, 0xbee4, + 0xbee5, 0xbeec, 0xbf01, 0xbf08, 0xbf09, 0xbf18, 0xbf19, 0xbf1b, + 0xbf1c, 0xbf1d, 0xbf40, 0xbf41, 0xbf44, 0xbf48, 0xbf50, 0xbf51, + 0xbf55, 0xbf94, 0xbfb0, 0xbfc5, 0xbfcc, 0xbfcd, 0xbfd0, 0xbfd4, + 0xbfdc, 0xbfdf, 0xbfe1, 0xc03c, 0xc051, 0xc058, 0xc05c, 0xc060, + 0xc068, 0xc069, 0xc090, 0xc091, 0xc094, 0xc098, 0xc0a0, 0xc0a1, + 0xc0a3, 0xc0a5, 0xc0ac, 0xc0ad, 0xc0af, 0xc0b0, 0xc0b3, 0xc0b4, + 0xc0b5, 0xc0b6, 0xc0bc, 0xc0bd, 0xc0bf, 0xc0c0, 0xc0c1, 0xc0c5, + 0xc0c8, 0xc0c9, 0xc0cc, 0xc0d0, 0xc0d8, 0xc0d9, 0xc0db, 0xc0dc, + 0xc0dd, 0xc0e4, 0xc0e5, 0xc0e8, 0xc0ec, 0xc0f4, 0xc0f5, 0xc0f7, + 0xc0f9, 0xc100, 0xc104, 0xc108, 0xc110, 0xc115, 0xc11c, 0xc11d, + 0xc11e, 0xc11f, 0xc120, 0xc123, 0xc124, 0xc126, 0xc127, 0xc12c, + 0xc12d, 0xc12f, 0xc130, 0xc131, 0xc136, 0xc138, 0xc139, 0xc13c, + 0xc140, 0xc148, 0xc149, 0xc14b, 0xc14c, 0xc14d, 0xc154, 0xc155, + 0xc158, 0xc15c, 0xc164, 0xc165, 0xc167, 0xc168, 0xc169, 0xc170, + 0xc174, 0xc178, 0xc185, 0xc18c, 0xc18d, 0xc18e, 0xc190, 0xc194, + 0xc196, 0xc19c, 0xc19d, 0xc19f, 0xc1a1, 0xc1a5, 0xc1a8, 0xc1a9, + 0xc1ac, 0xc1b0, 0xc1bd, 0xc1c4, 0xc1c8, 0xc1cc, 0xc1d4, 0xc1d7, + 0xc1d8, 0xc1e0, 0xc1e4, 0xc1e8, 0xc1f0, 0xc1f1, 0xc1f3, 0xc1fc, + 0xc1fd, 0xc200, 0xc204, 0xc20c, 0xc20d, 0xc20f, 0xc211, 0xc218, + 0xc219, 0xc21c, 0xc21f, 0xc220, 0xc228, 0xc229, 0xc22b, 0xc22d, + 0xc22f, 0xc231, 0xc232, 0xc234, 0xc248, 0xc250, 0xc251, 0xc254, + 0xc258, 0xc260, 0xc265, 0xc26c, 0xc26d, 0xc270, 0xc274, 0xc27c, + 0xc27d, 0xc27f, 0xc281, 0xc288, 0xc289, 0xc290, 0xc298, 0xc29b, + 0xc29d, 0xc2a4, 0xc2a5, 0xc2a8, 0xc2ac, 0xc2ad, 0xc2b4, 0xc2b5, + 0xc2b7, 0xc2b9, 0xc2dc, 0xc2dd, 0xc2e0, 0xc2e3, 0xc2e4, 0xc2eb, + 0xc2ec, 0xc2ed, 0xc2ef, 0xc2f1, 0xc2f6, 0xc2f8, 0xc2f9, 0xc2fb, + 0xc2fc, 0xc300, 0xc308, 0xc309, 0xc30c, 0xc30d, 0xc313, 0xc314, + 0xc315, 0xc318, 0xc31c, 0xc324, 0xc325, 0xc328, 0xc329, 0xc345, + 0xc368, 0xc369, 0xc36c, 0xc370, 0xc372, 0xc378, 0xc379, 0xc37c, + 0xc37d, 0xc384, 0xc388, 0xc38c, 0xc3c0, 0xc3d8, 0xc3d9, 0xc3dc, + 0xc3df, 0xc3e0, 0xc3e2, 0xc3e8, 0xc3e9, 0xc3ed, 0xc3f4, 0xc3f5, + 0xc3f8, 0xc408, 0xc410, 0xc424, 0xc42c, 0xc430, 0xc434, 0xc43c, + 0xc43d, 0xc448, 0xc464, 0xc465, 0xc468, 0xc46c, 0xc474, 0xc475, + 0xc479, 0xc480, 0xc494, 0xc49c, 0xc4b8, 0xc4bc, 0xc4e9, 0xc4f0, + 0xc4f1, 0xc4f4, 0xc4f8, 0xc4fa, 0xc4ff, 0xc500, 0xc501, 0xc50c, + 0xc510, 0xc514, 0xc51c, 0xc528, 0xc529, 0xc52c, 0xc530, 0xc538, + 0xc539, 0xc53b, 0xc53d, 0xc544, 0xc545, 0xc548, 0xc549, 0xc54a, + 0xc54c, 0xc54d, 0xc54e, 0xc553, 0xc554, 0xc555, 0xc557, 0xc558, + 0xc559, 0xc55d, 0xc55e, 0xc560, 0xc561, 0xc564, 0xc568, 0xc570, + 0xc571, 0xc573, 0xc574, 0xc575, 0xc57c, 0xc57d, 0xc580, 0xc584, + 0xc587, 0xc58c, 0xc58d, 0xc58f, 0xc591, 0xc595, 0xc597, 0xc598, + 0xc59c, 0xc5a0, 0xc5a9, 0xc5b4, 0xc5b5, 0xc5b8, 0xc5b9, 0xc5bb, + 0xc5bc, 0xc5bd, 0xc5be, 0xc5c4, 0xc5c5, 0xc5c6, 0xc5c7, 0xc5c8, + 0xc5c9, 0xc5ca, 0xc5cc, 0xc5ce, 0xc5d0, 0xc5d1, 0xc5d4, 0xc5d8, + 0xc5e0, 0xc5e1, 0xc5e3, 0xc5e5, 0xc5ec, 0xc5ed, 0xc5ee, 0xc5f0, + 0xc5f4, 0xc5f6, 0xc5f7, 0xc5fc, 0xc5fd, 0xc5fe, 0xc5ff, 0xc600, + 0xc601, 0xc605, 0xc606, 0xc607, 0xc608, 0xc60c, 0xc610, 0xc618, + 0xc619, 0xc61b, 0xc61c, 0xc624, 0xc625, 0xc628, 0xc62c, 0xc62d, + 0xc62e, 0xc630, 0xc633, 0xc634, 0xc635, 0xc637, 0xc639, 0xc63b, + 0xc640, 0xc641, 0xc644, 0xc648, 0xc650, 0xc651, 0xc653, 0xc654, + 0xc655, 0xc65c, 0xc65d, 0xc660, 0xc66c, 0xc66f, 0xc671, 0xc678, + 0xc679, 0xc67c, 0xc680, 0xc688, 0xc689, 0xc68b, 0xc68d, 0xc694, + 0xc695, 0xc698, 0xc69c, 0xc6a4, 0xc6a5, 0xc6a7, 0xc6a9, 0xc6b0, + 0xc6b1, 0xc6b4, 0xc6b8, 0xc6b9, 0xc6ba, 0xc6c0, 0xc6c1, 0xc6c3, + 0xc6c5, 0xc6cc, 0xc6cd, 0xc6d0, 0xc6d4, 0xc6dc, 0xc6dd, 0xc6e0, + 0xc6e1, 0xc6e8, 0xc6e9, 0xc6ec, 0xc6f0, 0xc6f8, 0xc6f9, 0xc6fd, + 0xc704, 0xc705, 0xc708, 0xc70c, 0xc714, 0xc715, 0xc717, 0xc719, + 0xc720, 0xc721, 0xc724, 0xc728, 0xc730, 0xc731, 0xc733, 0xc735, + 0xc737, 0xc73c, 0xc73d, 0xc740, 0xc744, 0xc74a, 0xc74c, 0xc74d, + 0xc74f, 0xc751, 0xc752, 0xc753, 0xc754, 0xc755, 0xc756, 0xc757, + 0xc758, 0xc75c, 0xc760, 0xc768, 0xc76b, 0xc774, 0xc775, 0xc778, + 0xc77c, 0xc77d, 0xc77e, 0xc783, 0xc784, 0xc785, 0xc787, 0xc788, + 0xc789, 0xc78a, 0xc78e, 0xc790, 0xc791, 0xc794, 0xc796, 0xc797, + 0xc798, 0xc79a, 0xc7a0, 0xc7a1, 0xc7a3, 0xc7a4, 0xc7a5, 0xc7a6, + 0xc7ac, 0xc7ad, 0xc7b0, 0xc7b4, 0xc7bc, 0xc7bd, 0xc7bf, 0xc7c0, + 0xc7c1, 0xc7c8, 0xc7c9, 0xc7cc, 0xc7ce, 0xc7d0, 0xc7d8, 0xc7dd, + 0xc7e4, 0xc7e8, 0xc7ec, 0xc800, 0xc801, 0xc804, 0xc808, 0xc80a, + 0xc810, 0xc811, 0xc813, 0xc815, 0xc816, 0xc81c, 0xc81d, 0xc820, + 0xc824, 0xc82c, 0xc82d, 0xc82f, 0xc831, 0xc838, 0xc83c, 0xc840, + 0xc848, 0xc849, 0xc84c, 0xc84d, 0xc854, 0xc870, 0xc871, 0xc874, + 0xc878, 0xc87a, 0xc880, 0xc881, 0xc883, 0xc885, 0xc886, 0xc887, + 0xc88b, 0xc88c, 0xc88d, 0xc894, 0xc89d, 0xc89f, 0xc8a1, 0xc8a8, + 0xc8bc, 0xc8bd, 0xc8c4, 0xc8c8, 0xc8cc, 0xc8d4, 0xc8d5, 0xc8d7, + 0xc8d9, 0xc8e0, 0xc8e1, 0xc8e4, 0xc8f5, 0xc8fc, 0xc8fd, 0xc900, + 0xc904, 0xc905, 0xc906, 0xc90c, 0xc90d, 0xc90f, 0xc911, 0xc918, + 0xc92c, 0xc934, 0xc950, 0xc951, 0xc954, 0xc958, 0xc960, 0xc961, + 0xc963, 0xc96c, 0xc970, 0xc974, 0xc97c, 0xc988, 0xc989, 0xc98c, + 0xc990, 0xc998, 0xc999, 0xc99b, 0xc99d, 0xc9c0, 0xc9c1, 0xc9c4, + 0xc9c7, 0xc9c8, 0xc9ca, 0xc9d0, 0xc9d1, 0xc9d3, 0xc9d5, 0xc9d6, + 0xc9d9, 0xc9da, 0xc9dc, 0xc9dd, 0xc9e0, 0xc9e2, 0xc9e4, 0xc9e7, + 0xc9ec, 0xc9ed, 0xc9ef, 0xc9f0, 0xc9f1, 0xc9f8, 0xc9f9, 0xc9fc, + 0xca00, 0xca08, 0xca09, 0xca0b, 0xca0c, 0xca0d, 0xca14, 0xca18, + 0xca29, 0xca4c, 0xca4d, 0xca50, 0xca54, 0xca5c, 0xca5d, 0xca5f, + 0xca60, 0xca61, 0xca68, 0xca7d, 0xca84, 0xca98, 0xcabc, 0xcabd, + 0xcac0, 0xcac4, 0xcacc, 0xcacd, 0xcacf, 0xcad1, 0xcad3, 0xcad8, + 0xcad9, 0xcae0, 0xcaec, 0xcaf4, 0xcb08, 0xcb10, 0xcb14, 0xcb18, + 0xcb20, 0xcb21, 0xcb41, 0xcb48, 0xcb49, 0xcb4c, 0xcb50, 0xcb58, + 0xcb59, 0xcb5d, 0xcb64, 0xcb78, 0xcb79, 0xcb9c, 0xcbb8, 0xcbd4, + 0xcbe4, 0xcbe7, 0xcbe9, 0xcc0c, 0xcc0d, 0xcc10, 0xcc14, 0xcc1c, + 0xcc1d, 0xcc21, 0xcc22, 0xcc27, 0xcc28, 0xcc29, 0xcc2c, 0xcc2e, + 0xcc30, 0xcc38, 0xcc39, 0xcc3b, 0xcc3c, 0xcc3d, 0xcc3e, 0xcc44, + 0xcc45, 0xcc48, 0xcc4c, 0xcc54, 0xcc55, 0xcc57, 0xcc58, 0xcc59, + 0xcc60, 0xcc64, 0xcc66, 0xcc68, 0xcc70, 0xcc75, 0xcc98, 0xcc99, + 0xcc9c, 0xcca0, 0xcca8, 0xcca9, 0xccab, 0xccac, 0xccad, 0xccb4, + 0xccb5, 0xccb8, 0xccbc, 0xccc4, 0xccc5, 0xccc7, 0xccc9, 0xccd0, + 0xccd4, 0xcce4, 0xccec, 0xccf0, 0xcd01, 0xcd08, 0xcd09, 0xcd0c, + 0xcd10, 0xcd18, 0xcd19, 0xcd1b, 0xcd1d, 0xcd24, 0xcd28, 0xcd2c, + 0xcd39, 0xcd5c, 0xcd60, 0xcd64, 0xcd6c, 0xcd6d, 0xcd6f, 0xcd71, + 0xcd78, 0xcd88, 0xcd94, 0xcd95, 0xcd98, 0xcd9c, 0xcda4, 0xcda5, + 0xcda7, 0xcda9, 0xcdb0, 0xcdc4, 0xcdcc, 0xcdd0, 0xcde8, 0xcdec, + 0xcdf0, 0xcdf8, 0xcdf9, 0xcdfb, 0xcdfd, 0xce04, 0xce08, 0xce0c, + 0xce14, 0xce19, 0xce20, 0xce21, 0xce24, 0xce28, 0xce30, 0xce31, + 0xce33, 0xce35, 0xce58, 0xce59, 0xce5c, 0xce5f, 0xce60, 0xce61, + 0xce68, 0xce69, 0xce6b, 0xce6d, 0xce74, 0xce75, 0xce78, 0xce7c, + 0xce84, 0xce85, 0xce87, 0xce89, 0xce90, 0xce91, 0xce94, 0xce98, + 0xcea0, 0xcea1, 0xcea3, 0xcea4, 0xcea5, 0xceac, 0xcead, 0xcec1, + 0xcee4, 0xcee5, 0xcee8, 0xceeb, 0xceec, 0xcef4, 0xcef5, 0xcef7, + 0xcef8, 0xcef9, 0xcf00, 0xcf01, 0xcf04, 0xcf08, 0xcf10, 0xcf11, + 0xcf13, 0xcf15, 0xcf1c, 0xcf20, 0xcf24, 0xcf2c, 0xcf2d, 0xcf2f, + 0xcf30, 0xcf31, 0xcf38, 0xcf54, 0xcf55, 0xcf58, 0xcf5c, 0xcf64, + 0xcf65, 0xcf67, 0xcf69, 0xcf70, 0xcf71, 0xcf74, 0xcf78, 0xcf80, + 0xcf85, 0xcf8c, 0xcfa1, 0xcfa8, 0xcfb0, 0xcfc4, 0xcfe0, 0xcfe1, + 0xcfe4, 0xcfe8, 0xcff0, 0xcff1, 0xcff3, 0xcff5, 0xcffc, 0xd000, + 0xd004, 0xd011, 0xd018, 0xd02d, 0xd034, 0xd035, 0xd038, 0xd03c, + 0xd044, 0xd045, 0xd047, 0xd049, 0xd050, 0xd054, 0xd058, 0xd060, + 0xd06c, 0xd06d, 0xd070, 0xd074, 0xd07c, 0xd07d, 0xd081, 0xd0a4, + 0xd0a5, 0xd0a8, 0xd0ac, 0xd0b4, 0xd0b5, 0xd0b7, 0xd0b9, 0xd0c0, + 0xd0c1, 0xd0c4, 0xd0c8, 0xd0c9, 0xd0d0, 0xd0d1, 0xd0d3, 0xd0d4, + 0xd0d5, 0xd0dc, 0xd0dd, 0xd0e0, 0xd0e4, 0xd0ec, 0xd0ed, 0xd0ef, + 0xd0f0, 0xd0f1, 0xd0f8, 0xd10d, 0xd130, 0xd131, 0xd134, 0xd138, + 0xd13a, 0xd140, 0xd141, 0xd143, 0xd144, 0xd145, 0xd14c, 0xd14d, + 0xd150, 0xd154, 0xd15c, 0xd15d, 0xd15f, 0xd161, 0xd168, 0xd16c, + 0xd17c, 0xd184, 0xd188, 0xd1a0, 0xd1a1, 0xd1a4, 0xd1a8, 0xd1b0, + 0xd1b1, 0xd1b3, 0xd1b5, 0xd1ba, 0xd1bc, 0xd1c0, 0xd1d8, 0xd1f4, + 0xd1f8, 0xd207, 0xd209, 0xd210, 0xd22c, 0xd22d, 0xd230, 0xd234, + 0xd23c, 0xd23d, 0xd23f, 0xd241, 0xd248, 0xd25c, 0xd264, 0xd280, + 0xd281, 0xd284, 0xd288, 0xd290, 0xd291, 0xd295, 0xd29c, 0xd2a0, + 0xd2a4, 0xd2ac, 0xd2b1, 0xd2b8, 0xd2b9, 0xd2bc, 0xd2bf, 0xd2c0, + 0xd2c2, 0xd2c8, 0xd2c9, 0xd2cb, 0xd2d4, 0xd2d8, 0xd2dc, 0xd2e4, + 0xd2e5, 0xd2f0, 0xd2f1, 0xd2f4, 0xd2f8, 0xd300, 0xd301, 0xd303, + 0xd305, 0xd30c, 0xd30d, 0xd30e, 0xd310, 0xd314, 0xd316, 0xd31c, + 0xd31d, 0xd31f, 0xd320, 0xd321, 0xd325, 0xd328, 0xd329, 0xd32c, + 0xd330, 0xd338, 0xd339, 0xd33b, 0xd33c, 0xd33d, 0xd344, 0xd345, + 0xd37c, 0xd37d, 0xd380, 0xd384, 0xd38c, 0xd38d, 0xd38f, 0xd390, + 0xd391, 0xd398, 0xd399, 0xd39c, 0xd3a0, 0xd3a8, 0xd3a9, 0xd3ab, + 0xd3ad, 0xd3b4, 0xd3b8, 0xd3bc, 0xd3c4, 0xd3c5, 0xd3c8, 0xd3c9, + 0xd3d0, 0xd3d8, 0xd3e1, 0xd3e3, 0xd3ec, 0xd3ed, 0xd3f0, 0xd3f4, + 0xd3fc, 0xd3fd, 0xd3ff, 0xd401, 0xd408, 0xd41d, 0xd440, 0xd444, + 0xd45c, 0xd460, 0xd464, 0xd46d, 0xd46f, 0xd478, 0xd479, 0xd47c, + 0xd47f, 0xd480, 0xd482, 0xd488, 0xd489, 0xd48b, 0xd48d, 0xd494, + 0xd4a9, 0xd4cc, 0xd4d0, 0xd4d4, 0xd4dc, 0xd4df, 0xd4e8, 0xd4ec, + 0xd4f0, 0xd4f8, 0xd4fb, 0xd4fd, 0xd504, 0xd508, 0xd50c, 0xd514, + 0xd515, 0xd517, 0xd53c, 0xd53d, 0xd540, 0xd544, 0xd54c, 0xd54d, + 0xd54f, 0xd551, 0xd558, 0xd559, 0xd55c, 0xd560, 0xd565, 0xd568, + 0xd569, 0xd56b, 0xd56d, 0xd574, 0xd575, 0xd578, 0xd57c, 0xd584, + 0xd585, 0xd587, 0xd588, 0xd589, 0xd590, 0xd5a5, 0xd5c8, 0xd5c9, + 0xd5cc, 0xd5d0, 0xd5d2, 0xd5d8, 0xd5d9, 0xd5db, 0xd5dd, 0xd5e4, + 0xd5e5, 0xd5e8, 0xd5ec, 0xd5f4, 0xd5f5, 0xd5f7, 0xd5f9, 0xd600, + 0xd601, 0xd604, 0xd608, 0xd610, 0xd611, 0xd613, 0xd614, 0xd615, + 0xd61c, 0xd620, 0xd624, 0xd62d, 0xd638, 0xd639, 0xd63c, 0xd640, + 0xd645, 0xd648, 0xd649, 0xd64b, 0xd64d, 0xd651, 0xd654, 0xd655, + 0xd658, 0xd65c, 0xd667, 0xd669, 0xd670, 0xd671, 0xd674, 0xd683, + 0xd685, 0xd68c, 0xd68d, 0xd690, 0xd694, 0xd69d, 0xd69f, 0xd6a1, + 0xd6a8, 0xd6ac, 0xd6b0, 0xd6b9, 0xd6bb, 0xd6c4, 0xd6c5, 0xd6c8, + 0xd6cc, 0xd6d1, 0xd6d4, 0xd6d7, 0xd6d9, 0xd6e0, 0xd6e4, 0xd6e8, + 0xd6f0, 0xd6f5, 0xd6fc, 0xd6fd, 0xd700, 0xd704, 0xd711, 0xd718, + 0xd719, 0xd71c, 0xd720, 0xd728, 0xd729, 0xd72b, 0xd72d, 0xd734, + 0xd735, 0xd738, 0xd73c, 0xd744, 0xd747, 0xd749, 0xd750, 0xd751, + 0xd754, 0xd756, 0xd757, 0xd758, 0xd759, 0xd760, 0xd761, 0xd763, + 0xd765, 0xd769, 0xd76c, 0xd770, 0xd774, 0xd77c, 0xd77d, 0xd781, + 0xd788, 0xd789, 0xd78c, 0xd790, 0xd798, 0xd799, 0xd79b, 0xd79d, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4f3d, 0x4f73, + 0x5047, 0x50f9, 0x52a0, 0x53ef, 0x5475, 0x54e5, 0x5609, 0x5ac1, + 0x5bb6, 0x6687, 0x67b6, 0x67b7, 0x67ef, 0x6b4c, 0x73c2, 0x75c2, + 0x7a3c, 0x82db, 0x8304, 0x8857, 0x8888, 0x8a36, 0x8cc8, 0x8dcf, + 0x8efb, 0x8fe6, 0x99d5, 0x523b, 0x5374, 0x5404, 0x606a, 0x6164, + 0x6bbc, 0x73cf, 0x811a, 0x89ba, 0x89d2, 0x95a3, 0x4f83, 0x520a, + 0x58be, 0x5978, 0x59e6, 0x5e72, 0x5e79, 0x61c7, 0x63c0, 0x6746, + 0x67ec, 0x687f, 0x6f97, 0x764e, 0x770b, 0x78f5, 0x7a08, 0x7aff, + 0x7c21, 0x809d, 0x826e, 0x8271, 0x8aeb, 0x9593, 0x4e6b, 0x559d, + 0x66f7, 0x6e34, 0x78a3, 0x7aed, 0x845b, 0x8910, 0x874e, 0x97a8, + 0x52d8, 0x574e, 0x582a, 0x5d4c, 0x611f, 0x61be, 0x6221, 0x6562, + 0x67d1, 0x6a44, 0x6e1b, 0x7518, 0x75b3, 0x76e3, 0x77b0, 0x7d3a, + 0x90af, 0x9451, 0x9452, 0x9f95, 0x5323, 0x5cac, 0x7532, 0x80db, + 0x9240, 0x9598, 0x525b, 0x5808, 0x59dc, 0x5ca1, 0x5d17, 0x5eb7, + 0x5f3a, 0x5f4a, 0x6177, 0x6c5f, 0x757a, 0x7586, 0x7ce0, 0x7d73, + 0x7db1, 0x7f8c, 0x8154, 0x8221, 0x8591, 0x8941, 0x8b1b, 0x92fc, + 0x0000, 0x9c47, 0x4ecb, 0x4ef7, 0x500b, 0x51f1, 0x584f, 0x6137, + 0x613e, 0x6168, 0x6539, 0x69ea, 0x6f11, 0x75a5, 0x7686, 0x76d6, + 0x7b87, 0x82a5, 0x84cb, 0x0000, 0x93a7, 0x958b, 0x5580, 0x5ba2, + 0x5751, 0x66f4, 0x7cb3, 0x7fb9, 0x91b5, 0x5028, 0x53bb, 0x5c45, + 0x5de8, 0x62d2, 0x636e, 0x64da, 0x64e7, 0x6e20, 0x70ac, 0x795b, + 0x8ddd, 0x8e1e, 0x0000, 0x907d, 0x9245, 0x92f8, 0x4e7e, 0x4ef6, + 0x5065, 0x5dfe, 0x5efa, 0x6106, 0x6957, 0x8171, 0x8654, 0x8e47, + 0x9375, 0x9a2b, 0x4e5e, 0x5091, 0x6770, 0x6840, 0x5109, 0x528d, + 0x5292, 0x6aa2, 0x77bc, 0x9210, 0x9ed4, 0x52ab, 0x602f, 0x8ff2, + 0x5048, 0x61a9, 0x63ed, 0x64ca, 0x683c, 0x6a84, 0x6fc0, 0x8188, + 0x89a1, 0x9694, 0x5805, 0x727d, 0x72ac, 0x7504, 0x7d79, 0x7e6d, + 0x80a9, 0x0000, 0x8b74, 0x9063, 0x9d51, 0x6289, 0x6c7a, 0x6f54, + 0x7d50, 0x7f3a, 0x8a23, 0x517c, 0x614a, 0x7b9d, 0x8b19, 0x9257, + 0x938c, 0x4eac, 0x4fd3, 0x501e, 0x50be, 0x5106, 0x52c1, 0x52cd, + 0x537f, 0x5770, 0x5883, 0x5e9a, 0x5f91, 0x6176, 0x61ac, 0x64ce, + 0x656c, 0x666f, 0x66bb, 0x0000, 0x6897, 0x6d87, 0x7085, 0x70f1, + 0x749f, 0x74a5, 0x74ca, 0x75d9, 0x786c, 0x78ec, 0x7adf, 0x7af6, + 0x7d45, 0x7d93, 0x8015, 0x803f, 0x811b, 0x8396, 0x8b66, 0x8f15, + 0x9015, 0x93e1, 0x9803, 0x9838, 0x9a5a, 0x9be8, 0x4fc2, 0x5553, + 0x583a, 0x0000, 0x5b63, 0x5c46, 0x60b8, 0x6212, 0x6842, 0x68b0, + 0x68e8, 0x6eaa, 0x754c, 0x7678, 0x78ce, 0x7a3d, 0x7cfb, 0x7e6b, + 0x7e7c, 0x8a08, 0x8aa1, 0x8c3f, 0x968e, 0x9dc4, 0x53e4, 0x53e9, + 0x544a, 0x5471, 0x56fa, 0x59d1, 0x5b64, 0x5c3b, 0x5eab, 0x62f7, + 0x6537, 0x6545, 0x6572, 0x66a0, 0x67af, 0x69c1, 0x6cbd, 0x75fc, + 0x7690, 0x777e, 0x7a3f, 0x7f94, 0x8003, 0x80a1, 0x818f, 0x82e6, + 0x82fd, 0x83f0, 0x85c1, 0x8831, 0x88b4, 0x8aa5, 0x0000, 0x8f9c, + 0x932e, 0x96c7, 0x9867, 0x9ad8, 0x9f13, 0x54ed, 0x659b, 0x66f2, + 0x688f, 0x7a40, 0x8c37, 0x9d60, 0x56f0, 0x5764, 0x5d11, 0x6606, + 0x68b1, 0x68cd, 0x6efe, 0x7428, 0x889e, 0x9be4, 0x6c68, 0x0000, + 0x9aa8, 0x4f9b, 0x516c, 0x5171, 0x529f, 0x5b54, 0x5de5, 0x6050, + 0x606d, 0x62f1, 0x63a7, 0x653b, 0x73d9, 0x7a7a, 0x86a3, 0x8ca2, + 0x978f, 0x0000, 0x5be1, 0x6208, 0x679c, 0x74dc, 0x79d1, 0x83d3, + 0x8a87, 0x8ab2, 0x8de8, 0x904e, 0x934b, 0x9846, 0x5ed3, 0x69e8, + 0x85ff, 0x90ed, 0x4e32, 0x51a0, 0x5b98, 0x5bec, 0x6163, 0x68fa, + 0x6b3e, 0x704c, 0x742f, 0x74d8, 0x7ba1, 0x7f50, 0x83c5, 0x89c0, + 0x8cab, 0x95dc, 0x9928, 0x522e, 0x605d, 0x62ec, 0x9002, 0x4f8a, + 0x5149, 0x5321, 0x58d9, 0x5ee3, 0x66e0, 0x6d38, 0x709a, 0x72c2, + 0x73d6, 0x7b50, 0x80f1, 0x945b, 0x5366, 0x639b, 0x7f6b, 0x4e56, + 0x5080, 0x584a, 0x58de, 0x602a, 0x6127, 0x62d0, 0x69d0, 0x9b41, + 0x5b8f, 0x7d18, 0x80b1, 0x8f5f, 0x4ea4, 0x50d1, 0x54ac, 0x55ac, + 0x5b0c, 0x5da0, 0x5de7, 0x652a, 0x654e, 0x6821, 0x6a4b, 0x72e1, + 0x768e, 0x77ef, 0x7d5e, 0x7ff9, 0x81a0, 0x854e, 0x86df, 0x8f03, + 0x8f4e, 0x90ca, 0x9903, 0x9a55, 0x9bab, 0x4e18, 0x4e45, 0x4e5d, + 0x4ec7, 0x4ff1, 0x5177, 0x52fe, 0x5340, 0x53e3, 0x53e5, 0x548e, + 0x5614, 0x5775, 0x57a2, 0x5bc7, 0x5d87, 0x5ed0, 0x61fc, 0x62d8, + 0x6551, 0x67b8, 0x67e9, 0x69cb, 0x6b50, 0x6bc6, 0x6bec, 0x6c42, + 0x6e9d, 0x7078, 0x72d7, 0x7396, 0x7403, 0x77bf, 0x77e9, 0x7a76, + 0x7d7f, 0x8009, 0x81fc, 0x8205, 0x820a, 0x82df, 0x8862, 0x8b33, + 0x8cfc, 0x8ec0, 0x9011, 0x90b1, 0x9264, 0x92b6, 0x99d2, 0x9a45, + 0x9ce9, 0x9dd7, 0x9f9c, 0x570b, 0x5c40, 0x83ca, 0x97a0, 0x97ab, + 0x9eb4, 0x541b, 0x7a98, 0x7fa4, 0x88d9, 0x8ecd, 0x90e1, 0x5800, + 0x5c48, 0x6398, 0x7a9f, 0x5bae, 0x5f13, 0x7a79, 0x7aae, 0x828e, + 0x8eac, 0x5026, 0x5238, 0x52f8, 0x5377, 0x5708, 0x62f3, 0x6372, + 0x6b0a, 0x6dc3, 0x7737, 0x53a5, 0x7357, 0x8568, 0x8e76, 0x95d5, + 0x673a, 0x6ac3, 0x6f70, 0x8a6d, 0x8ecc, 0x994b, 0x0000, 0x6677, + 0x6b78, 0x8cb4, 0x9b3c, 0x0000, 0x53eb, 0x572d, 0x594e, 0x63c6, + 0x69fb, 0x73ea, 0x7845, 0x7aba, 0x7ac5, 0x7cfe, 0x8475, 0x898f, + 0x8d73, 0x9035, 0x95a8, 0x52fb, 0x5747, 0x7547, 0x7b60, 0x83cc, + 0x921e, 0x0000, 0x6a58, 0x514b, 0x524b, 0x5287, 0x621f, 0x68d8, + 0x6975, 0x9699, 0x50c5, 0x52a4, 0x52e4, 0x61c3, 0x65a4, 0x6839, + 0x69ff, 0x747e, 0x7b4b, 0x82b9, 0x83eb, 0x89b2, 0x8b39, 0x8fd1, + 0x9949, 0x5951, 0x4eca, 0x5997, 0x64d2, 0x6611, 0x6a8e, 0x7434, + 0x7981, 0x79bd, 0x82a9, 0x887e, 0x887f, 0x895f, 0x91d1, 0x9326, + 0x4f0b, 0x53ca, 0x6025, 0x6271, 0x6c72, 0x7d1a, 0x7d66, 0x4e98, + 0x5162, 0x77dc, 0x80af, 0x4f01, 0x4f0e, 0x5176, 0x5180, 0x55dc, + 0x5668, 0x573b, 0x57fa, 0x57fc, 0x5914, 0x5947, 0x5993, 0x5bc4, + 0x5c90, 0x5d0e, 0x5df1, 0x5e7e, 0x5fcc, 0x6280, 0x65d7, 0x65e3, + 0x671e, 0x671f, 0x675e, 0x68cb, 0x68c4, 0x6a5f, 0x6b3a, 0x6c23, + 0x6c7d, 0x6c82, 0x6dc7, 0x7398, 0x7426, 0x742a, 0x7482, 0x74a3, + 0x7578, 0x757f, 0x7881, 0x78ef, 0x7941, 0x7947, 0x7948, 0x797a, + 0x7b95, 0x7d00, 0x7dba, 0x7f88, 0x8006, 0x802d, 0x808c, 0x8a18, + 0x8b4f, 0x8c48, 0x8d77, 0x9321, 0x9324, 0x98e2, 0x9951, 0x9a0e, + 0x9a0f, 0x9a65, 0x9e92, 0x7dca, 0x4f76, 0x5409, 0x62ee, 0x6854, + 0x0000, 0x55ab, 0x513a, 0x5587, 0x5948, 0x5a1c, 0x61e6, 0x61f6, + 0x62cf, 0x62ff, 0x7669, 0x7f85, 0x863f, 0x87ba, 0x88f8, 0x908f, + 0x90a3, 0x6a02, 0x6d1b, 0x70d9, 0x73de, 0x843d, 0x8afe, 0x916a, + 0x99f1, 0x4e82, 0x5375, 0x6696, 0x6b04, 0x7156, 0x721b, 0x862d, + 0x96e3, 0x9e1e, 0x634f, 0x637a, 0x5357, 0x5d50, 0x678f, 0x6960, + 0x6e73, 0x6feb, 0x7537, 0x85cd, 0x8964, 0x62c9, 0x7d0d, 0x81d8, + 0x881f, 0x8872, 0x56ca, 0x5a18, 0x5eca, 0x6717, 0x6d6a, 0x72fc, + 0x90de, 0x4e43, 0x4f86, 0x5167, 0x0000, 0x67f0, 0x8010, 0x51b7, + 0x5973, 0x5e74, 0x649a, 0x79ca, 0x5ff5, 0x606c, 0x62c8, 0x637b, + 0x5be7, 0x5bd7, 0x52aa, 0x52de, 0x5974, 0x5f29, 0x6012, 0x64c4, + 0x6ad3, 0x7210, 0x7459, 0x76e7, 0x8001, 0x8606, 0x865c, 0x8def, + 0x9732, 0x99d1, 0x9b6f, 0x9dfa, 0x788c, 0x797f, 0x7da0, 0x83c9, + 0x9304, 0x9e7f, 0x8ad6, 0x58df, 0x5f04, 0x6fc3, 0x7c60, 0x807e, + 0x81bf, 0x8fb2, 0x60f1, 0x7262, 0x78ca, 0x8166, 0x8cc2, 0x96f7, + 0x5c3f, 0x58d8, 0x5c62, 0x6a13, 0x6dda, 0x6f0f, 0x7d2f, 0x7e37, + 0x964b, 0x5ae9, 0x8a25, 0x677b, 0x7d10, 0x52d2, 0x808b, 0x51dc, + 0x51cc, 0x7a1c, 0x7dbe, 0x80fd, 0x83f1, 0x9675, 0x5c3c, 0x6ce5, + 0x533f, 0x6eba, 0x591a, 0x8336, 0x4e39, 0x4eb6, 0x4f46, 0x55ae, + 0x5718, 0x58c7, 0x5f56, 0x65b7, 0x65e6, 0x6a80, 0x6bb5, 0x6e4d, + 0x77ed, 0x7aef, 0x7c1e, 0x7dde, 0x86cb, 0x8892, 0x9132, 0x935b, + 0x64bb, 0x6fbe, 0x737a, 0x75b8, 0x9054, 0x5556, 0x574d, 0x61ba, + 0x64d4, 0x66c7, 0x6de1, 0x6e5b, 0x6f6d, 0x6fb9, 0x75f0, 0x8043, + 0x81bd, 0x8541, 0x8983, 0x8ac7, 0x8b5a, 0x931f, 0x6c93, 0x7553, + 0x7b54, 0x8e0f, 0x905d, 0x5510, 0x5802, 0x5858, 0x5e62, 0x6207, + 0x649e, 0x68e0, 0x7576, 0x7cd6, 0x87b3, 0x9ee8, 0x4ee3, 0x5788, + 0x576e, 0x5927, 0x5c0d, 0x5cb1, 0x5e36, 0x5f85, 0x6234, 0x64e1, + 0x73b3, 0x81fa, 0x888b, 0x8cb8, 0x968a, 0x9edb, 0x5b85, 0x5fb7, + 0x60b3, 0x5012, 0x5200, 0x5230, 0x5716, 0x5835, 0x5857, 0x5c0e, + 0x5c60, 0x5cf6, 0x5d8b, 0x5ea6, 0x5f92, 0x60bc, 0x6311, 0x6389, + 0x6417, 0x6843, 0x68f9, 0x6ac2, 0x6dd8, 0x6e21, 0x6ed4, 0x6fe4, + 0x71fe, 0x76dc, 0x7779, 0x79b1, 0x7a3b, 0x8404, 0x89a9, 0x8ced, + 0x8df3, 0x8e48, 0x9003, 0x9014, 0x9053, 0x90fd, 0x934d, 0x9676, + 0x97dc, 0x6bd2, 0x7006, 0x7258, 0x72a2, 0x7368, 0x7763, 0x79bf, + 0x7be4, 0x7e9b, 0x8b80, 0x58a9, 0x60c7, 0x6566, 0x65fd, 0x66be, + 0x6c8c, 0x711e, 0x71c9, 0x8c5a, 0x9813, 0x4e6d, 0x7a81, 0x4edd, + 0x51ac, 0x51cd, 0x52d5, 0x540c, 0x61a7, 0x6771, 0x6850, 0x68df, + 0x6d1e, 0x6f7c, 0x75bc, 0x77b3, 0x7ae5, 0x80f4, 0x8463, 0x9285, + 0x515c, 0x6597, 0x675c, 0x6793, 0x75d8, 0x7ac7, 0x8373, 0x0000, + 0x8c46, 0x9017, 0x982d, 0x5c6f, 0x81c0, 0x829a, 0x9041, 0x906f, + 0x920d, 0x5f97, 0x5d9d, 0x6a59, 0x71c8, 0x767b, 0x7b49, 0x85e4, + 0x8b04, 0x9127, 0x9a30, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x7d61, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6b12, 0x703e, 0x0000, 0x0000, 0x0000, 0x524c, 0x8fa3, + 0x0000, 0x64e5, 0x652c, 0x6b16, 0x0000, 0x7c43, 0x7e9c, 0x0000, + 0x0000, 0x89bd, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7405, 0x746f, 0x8782, 0x0000, 0x0000, 0x5d0d, 0x5fa0, + 0x840a, 0x0000, 0x63a0, 0x7565, 0x4eae, 0x5006, 0x5169, 0x51c9, + 0x6881, 0x6a11, 0x7cae, 0x7cb1, 0x7ce7, 0x826f, 0x8ad2, 0x8f1b, + 0x91cf, 0x4fb6, 0x5137, 0x52f5, 0x5442, 0x5eec, 0x616e, 0x623e, + 0x65c5, 0x6ada, 0x6ffe, 0x792a, 0x85dc, 0x8823, 0x95ad, 0x9a62, + 0x9a6a, 0x9e97, 0x9ece, 0x529b, 0x66c6, 0x6b77, 0x701d, 0x792b, + 0x8f62, 0x9742, 0x6190, 0x6200, 0x6523, 0x6f23, 0x7149, 0x7489, + 0x7df4, 0x806f, 0x84ee, 0x8f26, 0x9023, 0x934a, 0x51bd, 0x5217, + 0x52a3, 0x6d0c, 0x70c8, 0x88c2, 0x5ec9, 0x6582, 0x6bae, 0x6fc2, + 0x7c3e, 0x7375, 0x4ee4, 0x4f36, 0x56f9, 0x0000, 0x5cba, 0x5dba, + 0x601c, 0x73b2, 0x7b2d, 0x7f9a, 0x7fce, 0x8046, 0x901e, 0x9234, + 0x96f6, 0x9748, 0x9818, 0x9f61, 0x4f8b, 0x6fa7, 0x79ae, 0x91b4, + 0x96b7, 0x0000, 0x0000, 0x6488, 0x0000, 0x0000, 0x6f5e, 0x7018, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8f05, 0x0000, + 0x0000, 0x0000, 0x9e75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x9e93, 0x0000, 0x0000, 0x0000, 0x6727, 0x7027, 0x74cf, + 0x0000, 0x0000, 0x5121, 0x7028, 0x0000, 0x0000, 0x0000, 0x8cda, + 0x8cf4, 0x0000, 0x4e86, 0x50da, 0x5bee, 0x5ed6, 0x6599, 0x71ce, + 0x7642, 0x77ad, 0x804a, 0x84fc, 0x907c, 0x9b27, 0x9f8d, 0x0000, + 0x5a41, 0x0000, 0x0000, 0x0000, 0x0000, 0x763b, 0x0000, 0x0000, + 0x851e, 0x8938, 0x93e4, 0x0000, 0x5289, 0x65d2, 0x67f3, 0x69b4, + 0x6d41, 0x6e9c, 0x700f, 0x7409, 0x7460, 0x7559, 0x7624, 0x786b, + 0x8b2c, 0x985e, 0x516d, 0x622e, 0x9678, 0x4f96, 0x502b, 0x5d19, + 0x6dea, 0x7db8, 0x8f2a, 0x5f8b, 0x6144, 0x6817, 0x7387, 0x9686, + 0x0000, 0x0000, 0x0000, 0x0000, 0x695e, 0x0000, 0x0000, 0x0000, + 0x0000, 0x4fda, 0x5229, 0x5398, 0x540f, 0x550e, 0x5c65, 0x60a7, + 0x674e, 0x68a8, 0x6d6c, 0x7281, 0x72f8, 0x7406, 0x7483, 0x7570, + 0x75e2, 0x7c6c, 0x7f79, 0x7fb8, 0x8389, 0x88cf, 0x88e1, 0x91cc, + 0x91d0, 0x96e2, 0x9bc9, 0x541d, 0x6f7e, 0x71d0, 0x7498, 0x85fa, + 0x8eaa, 0x96a3, 0x9c57, 0x9e9f, 0x6797, 0x6dcb, 0x7433, 0x81e8, + 0x9716, 0x782c, 0x7acb, 0x7b20, 0x7c92, 0x6469, 0x746a, 0x75f2, + 0x78bc, 0x78e8, 0x99ac, 0x9b54, 0x9ebb, 0x5bde, 0x5e55, 0x6f20, + 0x819c, 0x83ab, 0x9088, 0x4e07, 0x534d, 0x5a29, 0x5dd2, 0x5f4e, + 0x6162, 0x633d, 0x6669, 0x66fc, 0x6eff, 0x6f2b, 0x7063, 0x779e, + 0x842c, 0x8513, 0x883b, 0x8f13, 0x9945, 0x9c3b, 0x551c, 0x62b9, + 0x672b, 0x6cab, 0x8309, 0x896a, 0x977a, 0x4ea1, 0x5984, 0x5fd8, + 0x5fd9, 0x671b, 0x7db2, 0x7f54, 0x8292, 0x832b, 0x83bd, 0x8f1e, + 0x9099, 0x57cb, 0x59b9, 0x5a92, 0x5bd0, 0x6627, 0x679a, 0x6885, + 0x6bcf, 0x7164, 0x7f75, 0x8cb7, 0x8ce3, 0x9081, 0x9b45, 0x8108, + 0x8c8a, 0x964c, 0x9a40, 0x9ea5, 0x5b5f, 0x6c13, 0x731b, 0x76f2, + 0x76df, 0x840c, 0x51aa, 0x8993, 0x514d, 0x5195, 0x52c9, 0x68c9, + 0x6c94, 0x7704, 0x7720, 0x7dbf, 0x7dec, 0x9762, 0x9eb5, 0x6ec5, + 0x8511, 0x51a5, 0x540d, 0x547d, 0x660e, 0x669d, 0x6927, 0x6e9f, + 0x76bf, 0x7791, 0x8317, 0x84c2, 0x879f, 0x9169, 0x9298, 0x9cf4, + 0x8882, 0x4fae, 0x5192, 0x52df, 0x59c6, 0x5e3d, 0x6155, 0x6478, + 0x6479, 0x66ae, 0x67d0, 0x6a21, 0x6bcd, 0x6bdb, 0x725f, 0x7261, + 0x7441, 0x7738, 0x77db, 0x8017, 0x82bc, 0x8305, 0x8b00, 0x8b28, + 0x8c8c, 0x6728, 0x6c90, 0x7267, 0x76ee, 0x7766, 0x7a46, 0x9da9, + 0x6b7f, 0x6c92, 0x5922, 0x6726, 0x8499, 0x536f, 0x5893, 0x5999, + 0x5edf, 0x63cf, 0x6634, 0x6773, 0x6e3a, 0x732b, 0x7ad7, 0x82d7, + 0x9328, 0x52d9, 0x5deb, 0x61ae, 0x61cb, 0x620a, 0x62c7, 0x64ab, + 0x65e0, 0x6959, 0x6b66, 0x6bcb, 0x7121, 0x73f7, 0x755d, 0x7e46, + 0x821e, 0x8302, 0x856a, 0x8aa3, 0x8cbf, 0x9727, 0x9d61, 0x58a8, + 0x9ed8, 0x5011, 0x520e, 0x543b, 0x554f, 0x6587, 0x6c76, 0x7d0a, + 0x7d0b, 0x805e, 0x868a, 0x9580, 0x96ef, 0x52ff, 0x6c95, 0x7269, + 0x5473, 0x5a9a, 0x5c3e, 0x5d4b, 0x5f4c, 0x5fae, 0x672a, 0x68b6, + 0x6963, 0x6e3c, 0x6e44, 0x7709, 0x7c73, 0x7f8e, 0x8587, 0x8b0e, + 0x8ff7, 0x9761, 0x9ef4, 0x5cb7, 0x60b6, 0x610d, 0x61ab, 0x654f, + 0x65fb, 0x65fc, 0x6c11, 0x6cef, 0x739f, 0x73c9, 0x7de1, 0x9594, + 0x5bc6, 0x871c, 0x8b10, 0x525d, 0x535a, 0x62cd, 0x640f, 0x64b2, + 0x6734, 0x6a38, 0x6cca, 0x73c0, 0x749e, 0x7b94, 0x7c95, 0x7e1b, + 0x818a, 0x8236, 0x8584, 0x8feb, 0x96f9, 0x99c1, 0x4f34, 0x534a, + 0x53cd, 0x53db, 0x62cc, 0x642c, 0x6500, 0x6591, 0x69c3, 0x6cee, + 0x6f58, 0x73ed, 0x7554, 0x7622, 0x76e4, 0x76fc, 0x78d0, 0x78fb, + 0x792c, 0x7d46, 0x822c, 0x87e0, 0x8fd4, 0x9812, 0x98ef, 0x52c3, + 0x62d4, 0x64a5, 0x6e24, 0x6f51, 0x767c, 0x8dcb, 0x91b1, 0x9262, + 0x9aee, 0x9b43, 0x5023, 0x508d, 0x574a, 0x59a8, 0x5c28, 0x5e47, + 0x5f77, 0x623f, 0x653e, 0x65b9, 0x65c1, 0x6609, 0x678b, 0x699c, + 0x6ec2, 0x78c5, 0x7d21, 0x80aa, 0x8180, 0x822b, 0x82b3, 0x84a1, + 0x868c, 0x8a2a, 0x8b17, 0x90a6, 0x9632, 0x9f90, 0x500d, 0x4ff3, + 0x5317, 0x57f9, 0x5f98, 0x62dc, 0x6392, 0x676f, 0x6e43, 0x7119, + 0x76c3, 0x80cc, 0x80da, 0x88f4, 0x88f5, 0x8919, 0x8ce0, 0x8f29, + 0x914d, 0x966a, 0x4f2f, 0x4f70, 0x5e1b, 0x67cf, 0x6822, 0x767d, + 0x767e, 0x9b44, 0x5e61, 0x6a0a, 0x7169, 0x71d4, 0x756a, 0x0000, + 0x7e41, 0x8543, 0x85e9, 0x98dc, 0x4f10, 0x7b4f, 0x7f70, 0x95a5, + 0x51e1, 0x5e06, 0x68b5, 0x6c3e, 0x6c4e, 0x6cdb, 0x72af, 0x7bc4, + 0x8303, 0x6cd5, 0x743a, 0x50fb, 0x5288, 0x58c1, 0x64d8, 0x6a97, + 0x74a7, 0x7656, 0x78a7, 0x8617, 0x95e2, 0x9739, 0x4fbf, 0x535e, + 0x5f01, 0x8b8a, 0x8fa8, 0x8faf, 0x908a, 0x5225, 0x77a5, 0x9c49, + 0x9f08, 0x4e19, 0x5002, 0x5175, 0x5c5b, 0x5e77, 0x661e, 0x663a, + 0x67c4, 0x68c5, 0x70b3, 0x7501, 0x75c5, 0x79c9, 0x7add, 0x8f27, + 0x9920, 0x9a08, 0x4fdd, 0x5821, 0x5831, 0x5bf6, 0x666e, 0x6b65, + 0x6d11, 0x6e7a, 0x6f7d, 0x73e4, 0x752b, 0x83e9, 0x88dc, 0x8913, + 0x8b5c, 0x8f14, 0x4f0f, 0x50d5, 0x5310, 0x535c, 0x5b93, 0x5fa9, + 0x670d, 0x798f, 0x8179, 0x832f, 0x8514, 0x8907, 0x8986, 0x8f39, + 0x8f3b, 0x99a5, 0x9c12, 0x672c, 0x4e76, 0x4ff8, 0x5949, 0x5c01, + 0x5cef, 0x5cf0, 0x6367, 0x68d2, 0x70fd, 0x71a2, 0x742b, 0x7e2b, + 0x84ec, 0x8702, 0x9022, 0x92d2, 0x9cf3, 0x4e0d, 0x4ed8, 0x4fef, + 0x5085, 0x5256, 0x526f, 0x5426, 0x5490, 0x57e0, 0x592b, 0x5a66, + 0x5b5a, 0x5b75, 0x5bcc, 0x5e9c, 0x0000, 0x6276, 0x6577, 0x65a7, + 0x6d6e, 0x6ea5, 0x7236, 0x7b26, 0x7c3f, 0x7f36, 0x8150, 0x8151, + 0x819a, 0x8240, 0x8299, 0x83a9, 0x8a03, 0x8ca0, 0x8ce6, 0x8cfb, + 0x8d74, 0x8dba, 0x90e8, 0x91dc, 0x961c, 0x9644, 0x99d9, 0x9ce7, + 0x0000, 0x5206, 0x5429, 0x5674, 0x58b3, 0x5954, 0x596e, 0x5fff, + 0x61a4, 0x626e, 0x6610, 0x6c7e, 0x711a, 0x76c6, 0x7c89, 0x7cde, + 0x7d1b, 0x82ac, 0x8cc1, 0x96f0, 0x0000, 0x4f5b, 0x5f17, 0x5f7f, + 0x62c2, 0x5d29, 0x670b, 0x68da, 0x787c, 0x7e43, 0x9d6c, 0x4e15, + 0x5099, 0x5315, 0x532a, 0x5351, 0x5983, 0x5a62, 0x5e87, 0x60b2, + 0x618a, 0x6249, 0x6279, 0x6590, 0x6787, 0x69a7, 0x6bd4, 0x6bd6, + 0x6bd7, 0x6bd8, 0x6cb8, 0x6ccc, 0x7435, 0x75fa, 0x7812, 0x7891, + 0x79d5, 0x79d8, 0x7c83, 0x7dcb, 0x7fe1, 0x80a5, 0x813e, 0x81c2, + 0x83f2, 0x871a, 0x88e8, 0x8ab9, 0x8b6c, 0x8cbb, 0x9119, 0x975e, + 0x98db, 0x9f3b, 0x56ac, 0x5b2a, 0x5f6c, 0x658c, 0x6ab3, 0x6baf, + 0x6d5c, 0x6ff1, 0x7015, 0x725d, 0x73ad, 0x8ca7, 0x8cd3, 0x983b, + 0x6191, 0x6c37, 0x8058, 0x9a01, 0x4e4d, 0x4e8b, 0x4e9b, 0x4ed5, + 0x4f3a, 0x4f3c, 0x4f7f, 0x4fdf, 0x50ff, 0x53f2, 0x53f8, 0x5506, + 0x55e3, 0x56db, 0x58eb, 0x5962, 0x5a11, 0x5beb, 0x5bfa, 0x5c04, + 0x5df3, 0x5e2b, 0x5f99, 0x601d, 0x6368, 0x659c, 0x65af, 0x67f6, + 0x67fb, 0x68ad, 0x6b7b, 0x6c99, 0x6cd7, 0x6e23, 0x7009, 0x7345, + 0x7802, 0x793e, 0x7940, 0x7960, 0x79c1, 0x7be9, 0x7d17, 0x7d72, + 0x8086, 0x820d, 0x838e, 0x84d1, 0x86c7, 0x88df, 0x8a50, 0x8a5e, + 0x8b1d, 0x8cdc, 0x8d66, 0x8fad, 0x90aa, 0x98fc, 0x99df, 0x9e9d, + 0x524a, 0x6578, 0x6714, 0x7d22, 0x5098, 0x522a, 0x5c71, 0x6563, + 0x6c55, 0x73ca, 0x7523, 0x759d, 0x7b97, 0x849c, 0x9178, 0x9730, + 0x4e77, 0x6492, 0x6bba, 0x715e, 0x85a9, 0x4e09, 0x53c3, 0x6749, + 0x68ee, 0x6e17, 0x829f, 0x8518, 0x886b, 0x63f7, 0x6f81, 0x9212, + 0x98af, 0x4e0a, 0x50b7, 0x50cf, 0x511f, 0x5546, 0x55aa, 0x5617, + 0x5b40, 0x5c19, 0x5ce0, 0x5e38, 0x5e8a, 0x5ea0, 0x5ec2, 0x60f3, + 0x6851, 0x6a61, 0x6e58, 0x723d, 0x7240, 0x72c0, 0x76f8, 0x7965, + 0x7bb1, 0x7fd4, 0x88f3, 0x89f4, 0x8a73, 0x8c61, 0x8cde, 0x971c, + 0x585e, 0x74bd, 0x8cfd, 0x55c7, 0x0000, 0x7a61, 0x0000, 0x8272, + 0x7272, 0x751f, 0x7525, 0x7701, 0x7b19, 0x5885, 0x58fb, 0x5dbc, + 0x5e8f, 0x5eb6, 0x5f90, 0x6055, 0x6292, 0x637f, 0x654d, 0x6691, + 0x66d9, 0x66f8, 0x6816, 0x68f2, 0x7280, 0x745e, 0x7b6e, 0x7d6e, + 0x7dd6, 0x7f72, 0x80e5, 0x8212, 0x85af, 0x897f, 0x8a93, 0x901d, + 0x92e4, 0x9ecd, 0x9f20, 0x5915, 0x596d, 0x5e2d, 0x60dc, 0x6614, + 0x6673, 0x6790, 0x6c50, 0x6dc5, 0x6f5f, 0x77f3, 0x78a9, 0x84c6, + 0x91cb, 0x932b, 0x4ed9, 0x50ca, 0x5148, 0x5584, 0x5b0b, 0x5ba3, + 0x6247, 0x657e, 0x65cb, 0x6e32, 0x717d, 0x7401, 0x7444, 0x7487, + 0x74bf, 0x766c, 0x79aa, 0x7dda, 0x7e55, 0x7fa8, 0x817a, 0x81b3, + 0x8239, 0x861a, 0x87ec, 0x8a75, 0x8de3, 0x9078, 0x9291, 0x9425, + 0x994d, 0x9bae, 0x5368, 0x5c51, 0x6954, 0x6cc4, 0x6d29, 0x6e2b, + 0x820c, 0x859b, 0x893b, 0x8a2d, 0x8aaa, 0x96ea, 0x9f67, 0x5261, + 0x66b9, 0x6bb2, 0x7e96, 0x87fe, 0x8d0d, 0x9583, 0x965d, 0x651d, + 0x6d89, 0x71ee, 0x8449, 0x57ce, 0x59d3, 0x5bac, 0x6027, 0x60fa, + 0x6210, 0x661f, 0x665f, 0x7329, 0x73f9, 0x76db, 0x0000, 0x7b6c, + 0x8056, 0x8072, 0x8165, 0x8aa0, 0x9192, 0x4e16, 0x52e2, 0x6b72, + 0x6d17, 0x7a05, 0x7b39, 0x7d30, 0x0000, 0x8cb0, 0x53ec, 0x562f, + 0x5851, 0x5bb5, 0x5c0f, 0x5c11, 0x5de2, 0x6240, 0x6383, 0x6414, + 0x662d, 0x68b3, 0x6cbc, 0x6d88, 0x6eaf, 0x701f, 0x70a4, 0x71d2, + 0x7526, 0x758f, 0x758e, 0x7619, 0x7b11, 0x7be0, 0x7c2b, 0x7d20, + 0x7d39, 0x852c, 0x856d, 0x8607, 0x8a34, 0x900d, 0x9061, 0x90b5, + 0x92b7, 0x97f6, 0x9a37, 0x4fd7, 0x5c6c, 0x675f, 0x6d91, 0x7c9f, + 0x7e8c, 0x8b16, 0x8d16, 0x901f, 0x5b6b, 0x5dfd, 0x640d, 0x84c0, + 0x905c, 0x98e1, 0x0000, 0x5b8b, 0x609a, 0x677e, 0x6dde, 0x8a1f, + 0x8aa6, 0x9001, 0x980c, 0x5237, 0x0000, 0x7051, 0x788e, 0x9396, + 0x8870, 0x91d7, 0x4fee, 0x53d7, 0x55fd, 0x56da, 0x5782, 0x58fd, + 0x5ac2, 0x5b88, 0x5cab, 0x5cc0, 0x5e25, 0x6101, 0x620d, 0x624b, + 0x6388, 0x641c, 0x6536, 0x0000, 0x6a39, 0x6b8a, 0x6c34, 0x6d19, + 0x6f31, 0x71e7, 0x72e9, 0x7378, 0x7407, 0x74b2, 0x7626, 0x7761, + 0x79c0, 0x7a57, 0x7aea, 0x7cb9, 0x7d8f, 0x7dac, 0x7e61, 0x7f9e, + 0x8129, 0x8331, 0x8490, 0x84da, 0x85ea, 0x8896, 0x8ab0, 0x8b90, + 0x8f38, 0x9042, 0x9083, 0x916c, 0x9296, 0x92b9, 0x968b, 0x96a7, + 0x96a8, 0x96d6, 0x9700, 0x9808, 0x9996, 0x9ad3, 0x9b1a, 0x53d4, + 0x587e, 0x5919, 0x5b70, 0x5bbf, 0x6dd1, 0x6f5a, 0x719f, 0x7421, + 0x74b9, 0x8085, 0x83fd, 0x5de1, 0x5f87, 0x5faa, 0x6042, 0x65ec, + 0x6812, 0x696f, 0x6a53, 0x6b89, 0x6d35, 0x6df3, 0x73e3, 0x76fe, + 0x77ac, 0x7b4d, 0x7d14, 0x8123, 0x821c, 0x8340, 0x84f4, 0x8563, + 0x8a62, 0x8ac4, 0x9187, 0x931e, 0x9806, 0x99b4, 0x620c, 0x8853, + 0x8ff0, 0x9265, 0x5d07, 0x5d27, 0x5d69, 0x745f, 0x819d, 0x8768, + 0x6fd5, 0x62fe, 0x7fd2, 0x8936, 0x8972, 0x4e1e, 0x4e58, 0x50e7, + 0x52dd, 0x5347, 0x627f, 0x6607, 0x7e69, 0x8805, 0x965e, 0x4f8d, + 0x5319, 0x5636, 0x59cb, 0x5aa4, 0x5c38, 0x5c4e, 0x5c4d, 0x5e02, + 0x5f11, 0x6043, 0x65bd, 0x662f, 0x6642, 0x67be, 0x67f4, 0x731c, + 0x77e2, 0x793a, 0x7fc5, 0x8494, 0x84cd, 0x8996, 0x8a66, 0x8a69, + 0x8ae1, 0x8c55, 0x8c7a, 0x57f4, 0x5bd4, 0x5f0f, 0x606f, 0x62ed, + 0x690d, 0x6b96, 0x6e5c, 0x7184, 0x7bd2, 0x8755, 0x8b58, 0x8efe, + 0x98df, 0x98fe, 0x4f38, 0x4f81, 0x4fe1, 0x547b, 0x5a20, 0x5bb8, + 0x613c, 0x65b0, 0x6668, 0x71fc, 0x7533, 0x795e, 0x7d33, 0x814e, + 0x81e3, 0x8398, 0x85aa, 0x85ce, 0x8703, 0x8a0a, 0x8eab, 0x8f9b, + 0x8fb0, 0x8fc5, 0x5931, 0x5ba4, 0x5be6, 0x6089, 0x5be9, 0x5c0b, + 0x5fc3, 0x6c81, 0x6c88, 0x6df1, 0x700b, 0x751a, 0x82af, 0x8af6, + 0x4ec0, 0x5341, 0x0000, 0x96d9, 0x6c0f, 0x4e9e, 0x4fc4, 0x5152, + 0x555e, 0x5a25, 0x5ce8, 0x6211, 0x7259, 0x82bd, 0x83aa, 0x86fe, + 0x8859, 0x8a1d, 0x963f, 0x96c5, 0x9913, 0x9d09, 0x9d5d, 0x580a, + 0x5cb3, 0x5dbd, 0x5e44, 0x60e1, 0x6115, 0x63e1, 0x0000, 0x6e25, + 0x9102, 0x9354, 0x984e, 0x9c10, 0x9f77, 0x5b89, 0x5cb8, 0x6309, + 0x664f, 0x6848, 0x773c, 0x96c1, 0x978d, 0x9854, 0x9b9f, 0x65a1, + 0x8b01, 0x8ecb, 0x95bc, 0x5535, 0x5ca9, 0x5dd6, 0x5eb5, 0x6697, + 0x764c, 0x83f4, 0x95c7, 0x58d3, 0x62bc, 0x72ce, 0x9d28, 0x4ef0, + 0x592e, 0x600f, 0x663b, 0x6b83, 0x79e7, 0x9d26, 0x5393, 0x54c0, + 0x57c3, 0x5d16, 0x611b, 0x66d6, 0x6daf, 0x788d, 0x827e, 0x9698, + 0x9744, 0x5384, 0x627c, 0x6396, 0x6db2, 0x7e0a, 0x814b, 0x984d, + 0x6afb, 0x7f4c, 0x9daf, 0x9e1a, 0x4e5f, 0x503b, 0x51b6, 0x591c, + 0x60f9, 0x63f6, 0x6930, 0x723a, 0x8036, 0x82e5, 0x91ce, 0x5f31, + 0x0000, 0x0000, 0x7d04, 0x0000, 0x846f, 0x84bb, 0x85e5, 0x8e8d, + 0x0000, 0x4f6f, 0x0000, 0x0000, 0x58e4, 0x5b43, 0x6059, 0x63da, + 0x6518, 0x656d, 0x6698, 0x0000, 0x694a, 0x6a23, 0x6d0b, 0x7001, + 0x716c, 0x75d2, 0x760d, 0x79b3, 0x7a70, 0x0000, 0x7f8a, 0x0000, + 0x8944, 0x0000, 0x8b93, 0x91c0, 0x967d, 0x0000, 0x990a, 0x5704, + 0x5fa1, 0x65bc, 0x6f01, 0x7600, 0x79a6, 0x8a9e, 0x99ad, 0x9b5a, + 0x9f6c, 0x5104, 0x61b6, 0x6291, 0x6a8d, 0x81c6, 0x5043, 0x5830, + 0x5f66, 0x7109, 0x8a00, 0x8afa, 0x5b7c, 0x8616, 0x4ffa, 0x513c, + 0x56b4, 0x5944, 0x63a9, 0x6df9, 0x5daa, 0x696d, 0x5186, 0x4e88, + 0x4f59, 0x0000, 0x0000, 0x0000, 0x5982, 0x0000, 0x0000, 0x6b5f, + 0x6c5d, 0x0000, 0x74b5, 0x7916, 0x0000, 0x8207, 0x8245, 0x8339, + 0x8f3f, 0x8f5d, 0x0000, 0x9918, 0x0000, 0x0000, 0x0000, 0x4ea6, + 0x0000, 0x57df, 0x5f79, 0x6613, 0x0000, 0x0000, 0x75ab, 0x7e79, + 0x8b6f, 0x0000, 0x9006, 0x9a5b, 0x56a5, 0x5827, 0x59f8, 0x5a1f, + 0x5bb4, 0x0000, 0x5ef6, 0x0000, 0x0000, 0x6350, 0x633b, 0x0000, + 0x693d, 0x6c87, 0x6cbf, 0x6d8e, 0x6d93, 0x6df5, 0x6f14, 0x0000, + 0x70df, 0x7136, 0x7159, 0x0000, 0x71c3, 0x71d5, 0x0000, 0x784f, + 0x786f, 0x0000, 0x7b75, 0x7de3, 0x0000, 0x7e2f, 0x0000, 0x884d, + 0x8edf, 0x0000, 0x0000, 0x0000, 0x925b, 0x0000, 0x9cf6, 0x0000, + 0x0000, 0x54bd, 0x6085, 0x6d85, 0x0000, 0x71b1, 0x0000, 0x0000, + 0x95b1, 0x53ad, 0x0000, 0x0000, 0x0000, 0x67d3, 0x0000, 0x708e, + 0x7130, 0x7430, 0x8276, 0x82d2, 0x0000, 0x95bb, 0x9ae5, 0x9e7d, + 0x66c4, 0x0000, 0x71c1, 0x0000, 0x0000, 0x0000, 0x584b, 0x0000, + 0x0000, 0x5db8, 0x5f71, 0x0000, 0x6620, 0x668e, 0x6979, 0x69ae, + 0x6c38, 0x6cf3, 0x6e36, 0x6f41, 0x6fda, 0x701b, 0x702f, 0x7150, + 0x71df, 0x7370, 0x0000, 0x745b, 0x7469, 0x74d4, 0x76c8, 0x7a4e, + 0x7e93, 0x0000, 0x0000, 0x82f1, 0x8a60, 0x8fce, 0x0000, 0x9348, + 0x0000, 0x9719, 0x0000, 0x0000, 0x4e42, 0x502a, 0x0000, 0x5208, + 0x53e1, 0x66f3, 0x6c6d, 0x6fca, 0x730a, 0x777f, 0x7a62, 0x82ae, + 0x85dd, 0x8602, 0x0000, 0x88d4, 0x8a63, 0x8b7d, 0x8c6b, 0x0000, + 0x92b3, 0x0000, 0x9713, 0x9810, 0x4e94, 0x4f0d, 0x4fc9, 0x50b2, + 0x5348, 0x543e, 0x5433, 0x55da, 0x5862, 0x58ba, 0x5967, 0x5a1b, + 0x5be4, 0x609f, 0x0000, 0x61ca, 0x6556, 0x65ff, 0x6664, 0x68a7, + 0x6c5a, 0x6fb3, 0x70cf, 0x71ac, 0x7352, 0x7b7d, 0x8708, 0x8aa4, + 0x9c32, 0x9f07, 0x5c4b, 0x6c83, 0x7344, 0x7389, 0x923a, 0x6eab, + 0x7465, 0x761f, 0x7a69, 0x7e15, 0x860a, 0x5140, 0x58c5, 0x64c1, + 0x74ee, 0x7515, 0x7670, 0x7fc1, 0x9095, 0x96cd, 0x9954, 0x6e26, + 0x74e6, 0x7aa9, 0x7aaa, 0x81e5, 0x86d9, 0x8778, 0x8a1b, 0x5a49, + 0x5b8c, 0x5b9b, 0x68a1, 0x6900, 0x6d63, 0x73a9, 0x7413, 0x742c, + 0x7897, 0x7de9, 0x7feb, 0x8118, 0x8155, 0x839e, 0x8c4c, 0x962e, + 0x9811, 0x66f0, 0x5f80, 0x65fa, 0x6789, 0x6c6a, 0x738b, 0x502d, + 0x5a03, 0x6b6a, 0x77ee, 0x5916, 0x5d6c, 0x5dcd, 0x7325, 0x754f, + 0x0000, 0x0000, 0x50e5, 0x51f9, 0x582f, 0x592d, 0x5996, 0x59da, + 0x5be5, 0x0000, 0x0000, 0x5da2, 0x62d7, 0x6416, 0x6493, 0x64fe, + 0x0000, 0x66dc, 0x0000, 0x6a48, 0x0000, 0x71ff, 0x7464, 0x0000, + 0x7a88, 0x7aaf, 0x7e47, 0x7e5e, 0x8000, 0x8170, 0x0000, 0x87ef, + 0x8981, 0x8b20, 0x9059, 0x0000, 0x9080, 0x9952, 0x617e, 0x6b32, + 0x6d74, 0x7e1f, 0x8925, 0x8fb1, 0x4fd1, 0x50ad, 0x5197, 0x52c7, + 0x57c7, 0x5889, 0x5bb9, 0x5eb8, 0x6142, 0x6995, 0x6d8c, 0x6e67, + 0x6eb6, 0x7194, 0x7462, 0x7528, 0x752c, 0x8073, 0x8338, 0x84c9, + 0x8e0a, 0x9394, 0x93de, 0x0000, 0x4e8e, 0x4f51, 0x5076, 0x512a, + 0x53c8, 0x53cb, 0x53f3, 0x5b87, 0x5bd3, 0x5c24, 0x611a, 0x6182, + 0x65f4, 0x725b, 0x7397, 0x7440, 0x76c2, 0x7950, 0x7991, 0x79b9, + 0x7d06, 0x7fbd, 0x828b, 0x85d5, 0x865e, 0x8fc2, 0x9047, 0x90f5, + 0x91ea, 0x9685, 0x96e8, 0x96e9, 0x52d6, 0x5f67, 0x65ed, 0x6631, + 0x682f, 0x715c, 0x7a36, 0x90c1, 0x980a, 0x4e91, 0x6688, 0x6a52, + 0x6b9e, 0x6f90, 0x7189, 0x8018, 0x82b8, 0x8553, 0x904b, 0x9695, + 0x96f2, 0x97fb, 0x851a, 0x9b31, 0x4e90, 0x718a, 0x96c4, 0x5143, + 0x539f, 0x54e1, 0x5713, 0x5712, 0x57a3, 0x5a9b, 0x5ac4, 0x5bc3, + 0x6028, 0x613f, 0x63f4, 0x6c85, 0x6d39, 0x6e72, 0x6e90, 0x7230, + 0x733f, 0x7457, 0x82d1, 0x8881, 0x8f45, 0x9060, 0x0000, 0x9662, + 0x9858, 0x9d1b, 0x6708, 0x8d8a, 0x925e, 0x4f4d, 0x5049, 0x50de, + 0x5371, 0x570d, 0x59d4, 0x5a01, 0x5c09, 0x6170, 0x6690, 0x6e2d, + 0x7232, 0x744b, 0x7def, 0x80c3, 0x840e, 0x8466, 0x853f, 0x875f, + 0x885b, 0x8918, 0x8b02, 0x9055, 0x97cb, 0x9b4f, 0x4e73, 0x4f91, + 0x5112, 0x516a, 0x0000, 0x552f, 0x55a9, 0x5b7a, 0x5ba5, 0x5e7c, + 0x5e7d, 0x5ebe, 0x60a0, 0x60df, 0x6108, 0x6109, 0x63c4, 0x6538, + 0x6709, 0x0000, 0x67d4, 0x67da, 0x0000, 0x6961, 0x6962, 0x6cb9, + 0x6d27, 0x0000, 0x6e38, 0x0000, 0x6fe1, 0x7336, 0x7337, 0x0000, + 0x745c, 0x7531, 0x0000, 0x7652, 0x0000, 0x0000, 0x7dad, 0x81fe, + 0x8438, 0x88d5, 0x8a98, 0x8adb, 0x8aed, 0x8e30, 0x8e42, 0x904a, + 0x903e, 0x907a, 0x9149, 0x91c9, 0x936e, 0x0000, 0x0000, 0x5809, + 0x0000, 0x6bd3, 0x8089, 0x80b2, 0x0000, 0x0000, 0x5141, 0x596b, + 0x5c39, 0x0000, 0x0000, 0x6f64, 0x73a7, 0x80e4, 0x8d07, 0x0000, + 0x9217, 0x958f, 0x0000, 0x0000, 0x0000, 0x0000, 0x807f, 0x620e, + 0x701c, 0x7d68, 0x878d, 0x0000, 0x57a0, 0x6069, 0x6147, 0x6bb7, + 0x8abe, 0x9280, 0x96b1, 0x4e59, 0x541f, 0x6deb, 0x852d, 0x9670, + 0x97f3, 0x98ee, 0x63d6, 0x6ce3, 0x9091, 0x51dd, 0x61c9, 0x81ba, + 0x9df9, 0x4f9d, 0x501a, 0x5100, 0x5b9c, 0x610f, 0x61ff, 0x64ec, + 0x6905, 0x6bc5, 0x7591, 0x77e3, 0x7fa9, 0x8264, 0x858f, 0x87fb, + 0x8863, 0x8abc, 0x8b70, 0x91ab, 0x4e8c, 0x4ee5, 0x4f0a, 0x0000, + 0x0000, 0x5937, 0x59e8, 0x0000, 0x5df2, 0x5f1b, 0x5f5b, 0x6021, + 0x0000, 0x0000, 0x0000, 0x0000, 0x723e, 0x73e5, 0x0000, 0x0000, + 0x75cd, 0x0000, 0x79fb, 0x0000, 0x800c, 0x8033, 0x8084, 0x82e1, + 0x8351, 0x0000, 0x0000, 0x8cbd, 0x8cb3, 0x9087, 0x0000, 0x0000, + 0x98f4, 0x990c, 0x0000, 0x0000, 0x7037, 0x76ca, 0x7fca, 0x7fcc, + 0x7ffc, 0x8b1a, 0x4eba, 0x4ec1, 0x5203, 0x5370, 0x0000, 0x0000, + 0x56e0, 0x59fb, 0x5bc5, 0x5f15, 0x5fcd, 0x6e6e, 0x0000, 0x0000, + 0x7d6a, 0x8335, 0x0000, 0x8693, 0x8a8d, 0x0000, 0x976d, 0x9777, + 0x0000, 0x0000, 0x4e00, 0x4f5a, 0x4f7e, 0x58f9, 0x65e5, 0x6ea2, + 0x9038, 0x93b0, 0x99b9, 0x4efb, 0x58ec, 0x598a, 0x59d9, 0x6041, + 0x0000, 0x0000, 0x7a14, 0x0000, 0x834f, 0x8cc3, 0x5165, 0x5344, + 0x0000, 0x0000, 0x0000, 0x4ecd, 0x5269, 0x5b55, 0x82bf, 0x4ed4, + 0x523a, 0x54a8, 0x59c9, 0x59ff, 0x5b50, 0x5b57, 0x5b5c, 0x6063, + 0x6148, 0x6ecb, 0x7099, 0x716e, 0x7386, 0x74f7, 0x75b5, 0x78c1, + 0x7d2b, 0x8005, 0x81ea, 0x8328, 0x8517, 0x85c9, 0x8aee, 0x8cc7, + 0x96cc, 0x4f5c, 0x52fa, 0x56bc, 0x65ab, 0x6628, 0x707c, 0x70b8, + 0x7235, 0x7dbd, 0x828d, 0x914c, 0x96c0, 0x9d72, 0x5b71, 0x68e7, + 0x6b98, 0x6f7a, 0x76de, 0x5c91, 0x66ab, 0x6f5b, 0x7bb4, 0x7c2a, + 0x8836, 0x96dc, 0x4e08, 0x4ed7, 0x5320, 0x5834, 0x58bb, 0x58ef, + 0x596c, 0x5c07, 0x5e33, 0x5e84, 0x5f35, 0x638c, 0x66b2, 0x6756, + 0x6a1f, 0x6aa3, 0x6b0c, 0x6f3f, 0x7246, 0x0000, 0x7350, 0x748b, + 0x7ae0, 0x7ca7, 0x8178, 0x81df, 0x81e7, 0x838a, 0x846c, 0x8523, + 0x8594, 0x85cf, 0x88dd, 0x8d13, 0x91ac, 0x9577, 0x969c, 0x518d, + 0x54c9, 0x5728, 0x5bb0, 0x624d, 0x6750, 0x683d, 0x6893, 0x6e3d, + 0x6ed3, 0x707d, 0x7e21, 0x88c1, 0x8ca1, 0x8f09, 0x9f4b, 0x9f4e, + 0x722d, 0x7b8f, 0x8acd, 0x931a, 0x4f47, 0x4f4e, 0x5132, 0x5480, + 0x59d0, 0x5e95, 0x62b5, 0x6775, 0x696e, 0x6a17, 0x6cae, 0x6e1a, + 0x72d9, 0x732a, 0x75bd, 0x7bb8, 0x7d35, 0x82e7, 0x83f9, 0x8457, + 0x85f7, 0x8a5b, 0x8caf, 0x8e87, 0x9019, 0x90b8, 0x96ce, 0x9f5f, + 0x52e3, 0x540a, 0x5ae1, 0x5bc2, 0x6458, 0x6575, 0x6ef4, 0x72c4, + 0x0000, 0x7684, 0x7a4d, 0x7b1b, 0x7c4d, 0x7e3e, 0x7fdf, 0x837b, + 0x8b2b, 0x8cca, 0x8d64, 0x8de1, 0x8e5f, 0x8fea, 0x8ff9, 0x9069, + 0x93d1, 0x4f43, 0x4f7a, 0x50b3, 0x5168, 0x5178, 0x524d, 0x526a, + 0x5861, 0x587c, 0x5960, 0x5c08, 0x5c55, 0x5edb, 0x609b, 0x6230, + 0x6813, 0x6bbf, 0x6c08, 0x6fb1, 0x714e, 0x7420, 0x7530, 0x7538, + 0x7551, 0x7672, 0x7b4c, 0x7b8b, 0x7bad, 0x7bc6, 0x7e8f, 0x8a6e, + 0x8f3e, 0x8f49, 0x923f, 0x9293, 0x9322, 0x942b, 0x96fb, 0x985a, + 0x986b, 0x991e, 0x5207, 0x622a, 0x6298, 0x6d59, 0x7664, 0x7aca, + 0x7bc0, 0x7d76, 0x5360, 0x5cbe, 0x5e97, 0x6f38, 0x70b9, 0x7c98, + 0x9711, 0x9b8e, 0x9ede, 0x63a5, 0x647a, 0x8776, 0x4e01, 0x4e95, + 0x4ead, 0x505c, 0x5075, 0x5448, 0x59c3, 0x5b9a, 0x5e40, 0x5ead, + 0x5ef7, 0x5f81, 0x60c5, 0x633a, 0x653f, 0x6574, 0x65cc, 0x6676, + 0x6678, 0x67fe, 0x6968, 0x6a89, 0x6b63, 0x6c40, 0x6dc0, 0x6de8, + 0x6e1f, 0x6e5e, 0x701e, 0x70a1, 0x738e, 0x73fd, 0x753a, 0x775b, + 0x7887, 0x798e, 0x7a0b, 0x7a7d, 0x7cbe, 0x7d8e, 0x8247, 0x8a02, + 0x8aea, 0x8c9e, 0x912d, 0x914a, 0x91d8, 0x9266, 0x92cc, 0x9320, + 0x9706, 0x9756, 0x975c, 0x9802, 0x9f0e, 0x5236, 0x5291, 0x557c, + 0x5824, 0x5e1d, 0x5f1f, 0x608c, 0x63d0, 0x68af, 0x6fdf, 0x796d, + 0x7b2c, 0x81cd, 0x85ba, 0x88fd, 0x8af8, 0x8e44, 0x918d, 0x9664, + 0x969b, 0x973d, 0x984c, 0x9f4a, 0x4fce, 0x5146, 0x51cb, 0x52a9, + 0x5632, 0x5f14, 0x5f6b, 0x63aa, 0x64cd, 0x65e9, 0x6641, 0x66fa, + 0x66f9, 0x671d, 0x689d, 0x68d7, 0x69fd, 0x6f15, 0x6f6e, 0x7167, + 0x71e5, 0x722a, 0x74aa, 0x773a, 0x7956, 0x795a, 0x79df, 0x7a20, + 0x7a95, 0x7c97, 0x7cdf, 0x7d44, 0x7e70, 0x8087, 0x85fb, 0x86a4, + 0x8a54, 0x8abf, 0x8d99, 0x8e81, 0x9020, 0x906d, 0x91e3, 0x963b, + 0x96d5, 0x9ce5, 0x65cf, 0x7c07, 0x8db3, 0x93c3, 0x5b58, 0x5c0a, + 0x5352, 0x62d9, 0x731d, 0x5027, 0x5b97, 0x5f9e, 0x60b0, 0x616b, + 0x68d5, 0x6dd9, 0x742e, 0x7a2e, 0x7d42, 0x7d9c, 0x7e31, 0x816b, + 0x8e2a, 0x8e35, 0x937e, 0x9418, 0x4f50, 0x5750, 0x5de6, 0x5ea7, + 0x632b, 0x7f6a, 0x4e3b, 0x4f4f, 0x4f8f, 0x505a, 0x59dd, 0x80c4, + 0x546a, 0x5468, 0x55fe, 0x594f, 0x5b99, 0x5dde, 0x5eda, 0x665d, + 0x6731, 0x67f1, 0x682a, 0x6ce8, 0x6d32, 0x6e4a, 0x6f8d, 0x70b7, + 0x73e0, 0x7587, 0x7c4c, 0x7d02, 0x7d2c, 0x7da2, 0x821f, 0x86db, + 0x8a3b, 0x8a85, 0x8d70, 0x8e8a, 0x8f33, 0x9031, 0x914e, 0x9152, + 0x9444, 0x99d0, 0x7af9, 0x7ca5, 0x4fca, 0x5101, 0x51c6, 0x57c8, + 0x5bef, 0x5cfb, 0x6659, 0x6a3d, 0x6d5a, 0x6e96, 0x6fec, 0x710c, + 0x756f, 0x7ae3, 0x8822, 0x9021, 0x9075, 0x96cb, 0x99ff, 0x8301, + 0x4e2d, 0x4ef2, 0x8846, 0x91cd, 0x537d, 0x6adb, 0x696b, 0x6c41, + 0x847a, 0x589e, 0x618e, 0x66fe, 0x62ef, 0x70dd, 0x7511, 0x75c7, + 0x7e52, 0x84b8, 0x8b49, 0x8d08, 0x4e4b, 0x53ea, 0x54ab, 0x5730, + 0x5740, 0x5fd7, 0x6301, 0x6307, 0x646f, 0x652f, 0x65e8, 0x667a, + 0x679d, 0x67b3, 0x6b62, 0x6c60, 0x6c9a, 0x6f2c, 0x77e5, 0x7825, + 0x7949, 0x7957, 0x7d19, 0x80a2, 0x8102, 0x81f3, 0x829d, 0x82b7, + 0x8718, 0x8a8c, 0x0000, 0x8d04, 0x8dbe, 0x9072, 0x76f4, 0x7a19, + 0x7a37, 0x7e54, 0x8077, 0x5507, 0x55d4, 0x5875, 0x632f, 0x6422, + 0x6649, 0x664b, 0x686d, 0x699b, 0x6b84, 0x6d25, 0x6eb1, 0x73cd, + 0x7468, 0x74a1, 0x755b, 0x75b9, 0x76e1, 0x771e, 0x778b, 0x79e6, + 0x7e09, 0x7e1d, 0x81fb, 0x852f, 0x8897, 0x8a3a, 0x8cd1, 0x8eeb, + 0x0000, 0x9032, 0x93ad, 0x9663, 0x9673, 0x9707, 0x4f84, 0x53f1, + 0x59ea, 0x5ac9, 0x5e19, 0x684e, 0x74c6, 0x75be, 0x79e9, 0x7a92, + 0x81a3, 0x86ed, 0x8cea, 0x8dcc, 0x8fed, 0x659f, 0x6715, 0x0000, + 0x57f7, 0x6f57, 0x7ddd, 0x8f2f, 0x93f6, 0x96c6, 0x5fb5, 0x61f2, + 0x6f84, 0x4e14, 0x4f98, 0x501f, 0x53c9, 0x55df, 0x5d6f, 0x5dee, + 0x6b21, 0x6b64, 0x78cb, 0x7b9a, 0x0000, 0x8e49, 0x8eca, 0x906e, + 0x6349, 0x643e, 0x7740, 0x7a84, 0x932f, 0x947f, 0x9f6a, 0x64b0, + 0x6faf, 0x71e6, 0x74a8, 0x74da, 0x7ac4, 0x7c12, 0x7e82, 0x7cb2, + 0x7e98, 0x8b9a, 0x8d0a, 0x947d, 0x9910, 0x994c, 0x5239, 0x5bdf, + 0x64e6, 0x672d, 0x7d2e, 0x50ed, 0x0000, 0x5879, 0x6158, 0x6159, + 0x61fa, 0x65ac, 0x7ad9, 0x8b92, 0x8b96, 0x5009, 0x5021, 0x5275, + 0x5531, 0x5a3c, 0x5ee0, 0x5f70, 0x6134, 0x655e, 0x660c, 0x6636, + 0x66a2, 0x69cd, 0x6ec4, 0x6f32, 0x7316, 0x7621, 0x7a93, 0x8139, + 0x8259, 0x83d6, 0x84bc, 0x50b5, 0x57f0, 0x5bc0, 0x5be8, 0x5f69, + 0x63a1, 0x7826, 0x7db5, 0x83dc, 0x8521, 0x91c7, 0x91f5, 0x518a, + 0x67f5, 0x7b56, 0x8cac, 0x51c4, 0x59bb, 0x60bd, 0x8655, 0x501c, + 0x0000, 0x5254, 0x5c3a, 0x617d, 0x621a, 0x62d3, 0x64f2, 0x65a5, + 0x6ecc, 0x7620, 0x810a, 0x8e60, 0x965f, 0x96bb, 0x4edf, 0x5343, + 0x5598, 0x5929, 0x5ddd, 0x64c5, 0x6cc9, 0x6dfa, 0x7394, 0x7a7f, + 0x821b, 0x85a6, 0x8ce4, 0x8e10, 0x9077, 0x91e7, 0x95e1, 0x9621, + 0x97c6, 0x51f8, 0x54f2, 0x5586, 0x5fb9, 0x64a4, 0x6f88, 0x7db4, + 0x8f1f, 0x8f4d, 0x9435, 0x50c9, 0x5c16, 0x6cbe, 0x6dfb, 0x751b, + 0x77bb, 0x7c3d, 0x7c64, 0x8a79, 0x8ac2, 0x581e, 0x59be, 0x5e16, + 0x6377, 0x7252, 0x758a, 0x776b, 0x8adc, 0x8cbc, 0x8f12, 0x5ef3, + 0x6674, 0x6df8, 0x807d, 0x83c1, 0x8acb, 0x9751, 0x9bd6, 0x0000, + 0x5243, 0x66ff, 0x6d95, 0x6eef, 0x7de0, 0x8ae6, 0x902e, 0x905e, + 0x9ad4, 0x521d, 0x527f, 0x54e8, 0x6194, 0x6284, 0x62db, 0x68a2, + 0x6912, 0x695a, 0x6a35, 0x7092, 0x7126, 0x785d, 0x7901, 0x790e, + 0x79d2, 0x7a0d, 0x8096, 0x8278, 0x82d5, 0x8349, 0x8549, 0x8c82, + 0x8d85, 0x9162, 0x918b, 0x91ae, 0x4fc3, 0x56d1, 0x71ed, 0x77d7, + 0x8700, 0x89f8, 0x5bf8, 0x5fd6, 0x6751, 0x90a8, 0x53e2, 0x585a, + 0x5bf5, 0x60a4, 0x6181, 0x6460, 0x7e3d, 0x8070, 0x8525, 0x9283, + 0x64ae, 0x50ac, 0x5d14, 0x6700, 0x589c, 0x62bd, 0x63a8, 0x690e, + 0x6978, 0x6a1e, 0x6e6b, 0x76ba, 0x79cb, 0x82bb, 0x8429, 0x8acf, + 0x8da8, 0x8ffd, 0x9112, 0x914b, 0x919c, 0x9310, 0x9318, 0x939a, + 0x96db, 0x9a36, 0x9c0d, 0x4e11, 0x755c, 0x795d, 0x7afa, 0x7b51, + 0x7bc9, 0x7e2e, 0x84c4, 0x8e59, 0x8e74, 0x8ef8, 0x9010, 0x6625, + 0x693f, 0x7443, 0x51fa, 0x672e, 0x9edc, 0x5145, 0x5fe0, 0x6c96, + 0x87f2, 0x885d, 0x8877, 0x60b4, 0x81b5, 0x8403, 0x8d05, 0x53d6, + 0x5439, 0x5634, 0x5a36, 0x5c31, 0x708a, 0x7fe0, 0x805a, 0x8106, + 0x81ed, 0x8da3, 0x9189, 0x9a5f, 0x9df2, 0x5074, 0x4ec4, 0x53a0, + 0x60fb, 0x6e2c, 0x5c64, 0x4f88, 0x5024, 0x55e4, 0x5cd9, 0x5e5f, + 0x6065, 0x6894, 0x6cbb, 0x6dc4, 0x71be, 0x75d4, 0x75f4, 0x7661, + 0x7a1a, 0x7a49, 0x7dc7, 0x7dfb, 0x7f6e, 0x81f4, 0x86a9, 0x8f1c, + 0x96c9, 0x99b3, 0x9f52, 0x5247, 0x52c5, 0x98ed, 0x89aa, 0x4e03, + 0x67d2, 0x6f06, 0x4fb5, 0x5be2, 0x6795, 0x0000, 0x6d78, 0x741b, + 0x7827, 0x91dd, 0x937c, 0x87c4, 0x79e4, 0x7a31, 0x5feb, 0x4ed6, + 0x54a4, 0x553e, 0x58ae, 0x59a5, 0x60f0, 0x6253, 0x62d6, 0x6736, + 0x6955, 0x8235, 0x9640, 0x99b1, 0x99dd, 0x502c, 0x5353, 0x5544, + 0x577c, 0x0000, 0x6258, 0x0000, 0x64e2, 0x666b, 0x67dd, 0x6fc1, + 0x6fef, 0x7422, 0x7438, 0x8a17, 0x9438, 0x5451, 0x5606, 0x5766, + 0x5f48, 0x619a, 0x6b4e, 0x7058, 0x70ad, 0x7dbb, 0x8a95, 0x596a, + 0x812b, 0x63a2, 0x7708, 0x803d, 0x8caa, 0x5854, 0x642d, 0x69bb, + 0x5b95, 0x5e11, 0x6e6f, 0x0000, 0x8569, 0x514c, 0x53f0, 0x592a, + 0x6020, 0x614b, 0x6b86, 0x6c70, 0x6cf0, 0x7b1e, 0x80ce, 0x82d4, + 0x8dc6, 0x90b0, 0x98b1, 0x0000, 0x64c7, 0x6fa4, 0x6491, 0x6504, + 0x514e, 0x5410, 0x571f, 0x8a0e, 0x615f, 0x6876, 0x0000, 0x75db, + 0x7b52, 0x7d71, 0x901a, 0x5806, 0x69cc, 0x817f, 0x892a, 0x9000, + 0x9839, 0x5078, 0x5957, 0x59ac, 0x6295, 0x900f, 0x9b2a, 0x615d, + 0x7279, 0x95d6, 0x5761, 0x5a46, 0x5df4, 0x628a, 0x64ad, 0x64fa, + 0x6777, 0x6ce2, 0x6d3e, 0x722c, 0x7436, 0x7834, 0x7f77, 0x82ad, + 0x8ddb, 0x9817, 0x5224, 0x5742, 0x677f, 0x7248, 0x74e3, 0x8ca9, + 0x8fa6, 0x9211, 0x962a, 0x516b, 0x53ed, 0x634c, 0x4f69, 0x5504, + 0x6096, 0x6557, 0x6c9b, 0x6d7f, 0x724c, 0x72fd, 0x7a17, 0x8987, + 0x8c9d, 0x5f6d, 0x6f8e, 0x70f9, 0x81a8, 0x610e, 0x0000, 0x504f, + 0x6241, 0x7247, 0x7bc7, 0x7de8, 0x7fe9, 0x904d, 0x97ad, 0x9a19, + 0x8cb6, 0x576a, 0x5e73, 0x67b0, 0x840d, 0x8a55, 0x5420, 0x5b16, + 0x5e63, 0x5ee2, 0x5f0a, 0x6583, 0x80ba, 0x853d, 0x9589, 0x965b, + 0x4f48, 0x5305, 0x530d, 0x530f, 0x5486, 0x54fa, 0x5703, 0x5e03, + 0x6016, 0x629b, 0x62b1, 0x6355, 0x66b4, 0x6ce1, 0x6d66, 0x75b1, + 0x7832, 0x80de, 0x812f, 0x82de, 0x8461, 0x84b2, 0x888d, 0x8912, + 0x900b, 0x92ea, 0x98fd, 0x9b91, 0x5e45, 0x0000, 0x66dd, 0x7011, + 0x7206, 0x0000, 0x4ff5, 0x527d, 0x5f6a, 0x6153, 0x6753, 0x6a19, + 0x6f02, 0x74e2, 0x7968, 0x8868, 0x8c79, 0x98c7, 0x98c4, 0x9a43, + 0x54c1, 0x7a1f, 0x6953, 0x8af7, 0x8c4a, 0x98a8, 0x99ae, 0x5f7c, + 0x62ab, 0x75b2, 0x76ae, 0x88ab, 0x907f, 0x9642, 0x5339, 0x5f3c, + 0x5fc5, 0x0000, 0x73cc, 0x7562, 0x758b, 0x7b46, 0x82fe, 0x999d, + 0x4e4f, 0x903c, 0x4e0b, 0x4f55, 0x53a6, 0x590f, 0x5ec8, 0x6630, + 0x6cb3, 0x7455, 0x8377, 0x8766, 0x8cc0, 0x9050, 0x971e, 0x9c15, + 0x58d1, 0x5b78, 0x8650, 0x8b14, 0x9db4, 0x5bd2, 0x6068, 0x608d, + 0x65f1, 0x6c57, 0x6f22, 0x6fa3, 0x701a, 0x7f55, 0x7ff0, 0x9591, + 0x9592, 0x9650, 0x97d3, 0x5272, 0x8f44, 0x51fd, 0x542b, 0x54b8, + 0x5563, 0x558a, 0x6abb, 0x6db5, 0x7dd8, 0x8266, 0x929c, 0x9677, + 0x9e79, 0x5408, 0x54c8, 0x76d2, 0x86e4, 0x95a4, 0x95d4, 0x965c, + 0x4ea2, 0x4f09, 0x59ee, 0x5ae6, 0x5df7, 0x6052, 0x6297, 0x676d, + 0x6841, 0x6c86, 0x6e2f, 0x7f38, 0x809b, 0x822a, 0x884c, 0x964d, + 0x9805, 0x4ea5, 0x5055, 0x54b3, 0x5793, 0x595a, 0x5b69, 0x5bb3, + 0x61c8, 0x6977, 0x6d77, 0x7023, 0x87f9, 0x89e3, 0x8a72, 0x8ae7, + 0x9082, 0x99ed, 0x9ab8, 0x52be, 0x6838, 0x5016, 0x5e78, 0x674f, + 0x8347, 0x0000, 0x4eab, 0x5411, 0x56ae, 0x73e6, 0x9115, 0x97ff, + 0x9909, 0x9957, 0x9999, 0x5653, 0x589f, 0x865b, 0x8a31, 0x61b2, + 0x6af6, 0x737b, 0x8ed2, 0x6b47, 0x96aa, 0x9a57, 0x5955, 0x7200, + 0x8d6b, 0x9769, 0x4fd4, 0x5cf4, 0x5f26, 0x61f8, 0x665b, 0x6ceb, + 0x70ab, 0x7384, 0x73b9, 0x73fe, 0x7729, 0x774d, 0x7d43, 0x7d62, + 0x7e23, 0x8237, 0x8852, 0x898b, 0x8ce2, 0x9249, 0x986f, 0x5b51, + 0x7a74, 0x8840, 0x9801, 0x5acc, 0x4fe0, 0x5354, 0x593e, 0x5cfd, + 0x633e, 0x6d79, 0x72f9, 0x8105, 0x8107, 0x83a2, 0x92cf, 0x9830, + 0x4ea8, 0x5144, 0x5211, 0x578b, 0x5f62, 0x6cc2, 0x6ece, 0x7005, + 0x7050, 0x70af, 0x7192, 0x73e9, 0x0000, 0x834a, 0x87a2, 0x8861, + 0x9008, 0x90a2, 0x93a3, 0x99a8, 0x516e, 0x5f57, 0x60e0, 0x6167, + 0x66b3, 0x8559, 0x8e4a, 0x91af, 0x978b, 0x4e4e, 0x4e92, 0x547c, + 0x58d5, 0x58fa, 0x597d, 0x5cb5, 0x5f27, 0x6236, 0x6248, 0x660a, + 0x6667, 0x6beb, 0x6d69, 0x6dcf, 0x6e56, 0x6ef8, 0x6f94, 0x6fe0, + 0x6fe9, 0x705d, 0x72d0, 0x7425, 0x745a, 0x74e0, 0x7693, 0x795c, + 0x7cca, 0x7e1e, 0x80e1, 0x82a6, 0x846b, 0x84bf, 0x864e, 0x865f, + 0x8774, 0x8b77, 0x8c6a, 0x93ac, 0x9800, 0x9865, 0x60d1, 0x6216, + 0x9177, 0x5a5a, 0x660f, 0x6df7, 0x6e3e, 0x743f, 0x9b42, 0x5ffd, + 0x60da, 0x7b0f, 0x54c4, 0x5f18, 0x6c5e, 0x6cd3, 0x6d2a, 0x70d8, + 0x7d05, 0x8679, 0x8a0c, 0x9d3b, 0x5316, 0x548c, 0x5b05, 0x6a3a, + 0x706b, 0x7575, 0x798d, 0x79be, 0x82b1, 0x83ef, 0x8a71, 0x8b41, + 0x8ca8, 0x9774, 0x0000, 0x64f4, 0x652b, 0x78ba, 0x78bb, 0x7a6b, + 0x4e38, 0x559a, 0x5950, 0x5ba6, 0x5e7b, 0x60a3, 0x63db, 0x6b61, + 0x6665, 0x6853, 0x6e19, 0x7165, 0x74b0, 0x7d08, 0x9084, 0x9a69, + 0x9c25, 0x6d3b, 0x6ed1, 0x733e, 0x8c41, 0x95ca, 0x51f0, 0x5e4c, + 0x5fa8, 0x604d, 0x60f6, 0x6130, 0x614c, 0x6643, 0x6644, 0x69a5, + 0x6cc1, 0x6e5f, 0x6ec9, 0x6f62, 0x714c, 0x749c, 0x7687, 0x7bc1, + 0x7c27, 0x8352, 0x8757, 0x9051, 0x968d, 0x9ec3, 0x532f, 0x56de, + 0x5efb, 0x5f8a, 0x6062, 0x6094, 0x61f7, 0x6666, 0x6703, 0x6a9c, + 0x6dee, 0x6fae, 0x7070, 0x736a, 0x7e6a, 0x81be, 0x8334, 0x86d4, + 0x8aa8, 0x8cc4, 0x5283, 0x7372, 0x5b96, 0x6a6b, 0x9404, 0x54ee, + 0x5686, 0x5b5d, 0x6548, 0x6585, 0x66c9, 0x689f, 0x6d8d, 0x6dc6, + 0x723b, 0x80b4, 0x9175, 0x9a4d, 0x4faf, 0x5019, 0x539a, 0x540e, + 0x543c, 0x5589, 0x55c5, 0x5e3f, 0x5f8c, 0x673d, 0x7166, 0x73dd, + 0x9005, 0x52db, 0x52f3, 0x5864, 0x58ce, 0x7104, 0x718f, 0x71fb, + 0x85b0, 0x8a13, 0x0000, 0x85a8, 0x55a7, 0x6684, 0x714a, 0x8431, + 0x5349, 0x5599, 0x6bc1, 0x5f59, 0x5fbd, 0x63ee, 0x6689, 0x7147, + 0x8af1, 0x8f1d, 0x9ebe, 0x4f11, 0x643a, 0x70cb, 0x7566, 0x8667, + 0x6064, 0x8b4e, 0x9df8, 0x5147, 0x51f6, 0x5308, 0x6d36, 0x80f8, + 0x9ed1, 0x6615, 0x6b23, 0x7098, 0x75d5, 0x5403, 0x5c79, 0x7d07, + 0x8a16, 0x6b20, 0x6b3d, 0x6b46, 0x5438, 0x6070, 0x6d3d, 0x7fd5, + 0x8208, 0x50d6, 0x51de, 0x559c, 0x566b, 0x56cd, 0x59ec, 0x5b09, + 0x5e0c, 0x6199, 0x6198, 0x6231, 0x665e, 0x66e6, 0x7199, 0x71b9, + 0x71ba, 0x72a7, 0x79a7, 0x7a00, 0x7fb2, 0x8a70, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xffffffff, + 0xffffffff, 0xffffffff, 0x0000, 0x0000, 0x79d4, 0x0004, 0x2288, 0x804f240 +}; + +static unsigned short ksc5601_from_unicode_0[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x222e, 0x0000, 0x0000, 0x2234, 0x0000, 0x0000, 0x2157, + 0x2127, 0x0000, 0x2823, 0x216c, 0x0000, 0x0000, 0x0000, 0x0000, + 0x2146, 0x213e, 0x2977, 0x2978, 0x2225, 0x0000, 0x2252, 0x0000, + 0x222c, 0x2976, 0x282c, 0x216d, 0x2879, 0x2876, 0x287a, 0x222f, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2821, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x2822, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x213f, + 0x282a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x282d, 0x292c, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2921, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x2923, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2140, + 0x292a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x292d, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_1[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x2922, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2824, 0x2924, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x2925, 0x2826, 0x2926, 0x0000, 0x0000, 0x0000, 0x0000, + 0x2927, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2828, + 0x2928, 0x2829, 0x2929, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x2930, 0x282f, 0x292f, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x282b, 0x292b, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x282e, 0x292e, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_2[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2227, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x2228, 0x222b, 0x222a, 0x222d, 0x2226, 0x2229, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_3[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x2541, 0x2542, 0x2543, 0x2544, 0x2545, 0x2546, 0x2547, + 0x2548, 0x2549, 0x254a, 0x254b, 0x254c, 0x254d, 0x254e, 0x254f, + 0x2550, 0x2551, 0x0000, 0x2552, 0x2553, 0x2554, 0x2555, 0x2556, + 0x2557, 0x2558, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x2561, 0x2562, 0x2563, 0x2564, 0x2565, 0x2566, 0x2567, + 0x2568, 0x2569, 0x256a, 0x256b, 0x256c, 0x256d, 0x256e, 0x256f, + 0x2570, 0x2571, 0x0000, 0x2572, 0x2573, 0x2574, 0x2575, 0x2576, + 0x2577, 0x2578, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_4[] = { + 0x0000, 0x2c27, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x2c21, 0x2c22, 0x2c23, 0x2c24, 0x2c25, 0x2c26, 0x2c28, 0x2c29, + 0x2c2a, 0x2c2b, 0x2c2c, 0x2c2d, 0x2c2e, 0x2c2f, 0x2c30, 0x2c31, + 0x2c32, 0x2c33, 0x2c34, 0x2c35, 0x2c36, 0x2c37, 0x2c38, 0x2c39, + 0x2c3a, 0x2c3b, 0x2c3c, 0x2c3d, 0x2c3e, 0x2c3f, 0x2c40, 0x2c41, + 0x2c51, 0x2c52, 0x2c53, 0x2c54, 0x2c55, 0x2c56, 0x2c58, 0x2c59, + 0x2c5a, 0x2c5b, 0x2c5c, 0x2c5d, 0x2c5e, 0x2c5f, 0x2c60, 0x2c61, + 0x2c62, 0x2c63, 0x2c64, 0x2c65, 0x2c66, 0x2c67, 0x2c68, 0x2c69, + 0x2c6a, 0x2c6b, 0x2c6c, 0x2c6d, 0x2c6e, 0x2c6f, 0x2c70, 0x2c71, + 0x0000, 0x2c57, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_20[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x2129, 0x212a, 0x0000, 0x212b, 0x0000, + 0x212e, 0x212f, 0x0000, 0x0000, 0x2130, 0x2131, 0x0000, 0x0000, + 0x2253, 0x2254, 0x0000, 0x0000, 0x0000, 0x2125, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x2236, 0x0000, 0x2147, 0x2148, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x2158, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x2979, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x297a, + 0x0000, 0x297b, 0x297c, 0x297d, 0x297e, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_21[] = { + 0x0000, 0x0000, 0x0000, 0x2149, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x2235, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x2724, 0x0000, 0x0000, 0x2260, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x2265, 0x2262, 0x0000, 0x0000, 0x0000, 0x2759, 0x0000, + 0x0000, 0x0000, 0x0000, 0x214a, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x2877, 0x2878, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x287b, 0x287c, 0x287d, 0x287e, 0x0000, + 0x2530, 0x2531, 0x2532, 0x2533, 0x2534, 0x2535, 0x2536, 0x2537, + 0x2538, 0x2539, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x2521, 0x2522, 0x2523, 0x2524, 0x2525, 0x2526, 0x2527, 0x2528, + 0x2529, 0x252a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x2167, 0x2168, 0x2166, 0x2169, 0x216a, 0x2255, 0x2258, 0x2256, + 0x2259, 0x2257, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x2221, 0x0000, 0x2222, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_22[] = { + 0x2223, 0x0000, 0x2153, 0x2224, 0x0000, 0x0000, 0x0000, 0x2154, + 0x2174, 0x0000, 0x0000, 0x2175, 0x0000, 0x0000, 0x0000, 0x2233, + 0x0000, 0x2232, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x216e, 0x0000, 0x0000, 0x2170, 0x2144, 0x0000, + 0x2150, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x217c, + 0x217d, 0x217b, 0x217a, 0x2172, 0x2173, 0x0000, 0x2231, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x2145, 0x2171, 0x2230, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x216f, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x2156, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x2141, 0x2155, 0x0000, 0x0000, 0x2142, 0x2143, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x2178, 0x2179, 0x0000, 0x0000, 0x2176, 0x2177, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2151, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2126, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_23[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x2152, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_24[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x2867, 0x2868, 0x2869, 0x286a, 0x286b, 0x286c, 0x286d, 0x286e, + 0x286f, 0x2870, 0x2871, 0x2872, 0x2873, 0x2874, 0x2875, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x2967, 0x2968, 0x2969, 0x296a, + 0x296b, 0x296c, 0x296d, 0x296e, 0x296f, 0x2970, 0x2971, 0x2972, + 0x2973, 0x2974, 0x2975, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x294d, 0x294e, 0x294f, 0x2950, + 0x2951, 0x2952, 0x2953, 0x2954, 0x2955, 0x2956, 0x2957, 0x2958, + 0x2959, 0x295a, 0x295b, 0x295c, 0x295d, 0x295e, 0x295f, 0x2960, + 0x2961, 0x2962, 0x2963, 0x2964, 0x2965, 0x2966, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x284d, 0x284e, 0x284f, 0x2850, 0x2851, 0x2852, 0x2853, 0x2854, + 0x2855, 0x2856, 0x2857, 0x2858, 0x2859, 0x285a, 0x285b, 0x285c, + 0x285d, 0x285e, 0x285f, 0x2860, 0x2861, 0x2862, 0x2863, 0x2864, + 0x2865, 0x2866, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_25[] = { + 0x2621, 0x262c, 0x2622, 0x262d, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x2623, 0x2648, 0x2647, 0x262e, + 0x2624, 0x2642, 0x2641, 0x262f, 0x2626, 0x2646, 0x2645, 0x2631, + 0x2625, 0x2644, 0x2643, 0x2630, 0x2627, 0x263c, 0x2649, 0x264a, + 0x2637, 0x264b, 0x264c, 0x2632, 0x2629, 0x263e, 0x264d, 0x264e, + 0x2639, 0x264f, 0x2650, 0x2634, 0x2628, 0x2651, 0x2652, 0x2638, + 0x263d, 0x2653, 0x2654, 0x2633, 0x262a, 0x2655, 0x2656, 0x263a, + 0x263f, 0x2657, 0x2658, 0x2635, 0x262b, 0x2659, 0x265a, 0x263b, + 0x265b, 0x265c, 0x2640, 0x265d, 0x265e, 0x265f, 0x2660, 0x2661, + 0x2662, 0x2663, 0x2664, 0x2636, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x2246, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x2161, 0x2160, 0x0000, 0x2243, 0x2247, 0x2248, 0x224b, 0x224a, + 0x2249, 0x224c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x2163, 0x2162, 0x0000, 0x0000, 0x223a, 0x2239, + 0x0000, 0x0000, 0x0000, 0x0000, 0x2165, 0x2164, 0x0000, 0x0000, + 0x2238, 0x2237, 0x0000, 0x0000, 0x0000, 0x0000, 0x215f, 0x215e, + 0x2242, 0x2241, 0x0000, 0x215b, 0x0000, 0x0000, 0x215d, 0x215c, + 0x2244, 0x2245, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_26[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x215a, 0x2159, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x224f, 0x224e, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x2250, 0x0000, 0x2251, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x214f, 0x0000, 0x214e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x223c, 0x223d, 0x0000, 0x2240, 0x223b, 0x223e, 0x0000, 0x223f, + 0x224d, 0x225b, 0x225c, 0x0000, 0x225d, 0x225a, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_30[] = { + 0x0000, 0x2122, 0x2123, 0x2128, 0x0000, 0x0000, 0x0000, 0x0000, + 0x2134, 0x2135, 0x2136, 0x2137, 0x2138, 0x2139, 0x213a, 0x213b, + 0x213c, 0x213d, 0x0000, 0x216b, 0x2132, 0x2133, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x2a21, 0x2a22, 0x2a23, 0x2a24, 0x2a25, 0x2a26, 0x2a27, + 0x2a28, 0x2a29, 0x2a2a, 0x2a2b, 0x2a2c, 0x2a2d, 0x2a2e, 0x2a2f, + 0x2a30, 0x2a31, 0x2a32, 0x2a33, 0x2a34, 0x2a35, 0x2a36, 0x2a37, + 0x2a38, 0x2a39, 0x2a3a, 0x2a3b, 0x2a3c, 0x2a3d, 0x2a3e, 0x2a3f, + 0x2a40, 0x2a41, 0x2a42, 0x2a43, 0x2a44, 0x2a45, 0x2a46, 0x2a47, + 0x2a48, 0x2a49, 0x2a4a, 0x2a4b, 0x2a4c, 0x2a4d, 0x2a4e, 0x2a4f, + 0x2a50, 0x2a51, 0x2a52, 0x2a53, 0x2a54, 0x2a55, 0x2a56, 0x2a57, + 0x2a58, 0x2a59, 0x2a5a, 0x2a5b, 0x2a5c, 0x2a5d, 0x2a5e, 0x2a5f, + 0x2a60, 0x2a61, 0x2a62, 0x2a63, 0x2a64, 0x2a65, 0x2a66, 0x2a67, + 0x2a68, 0x2a69, 0x2a6a, 0x2a6b, 0x2a6c, 0x2a6d, 0x2a6e, 0x2a6f, + 0x2a70, 0x2a71, 0x2a72, 0x2a73, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x2b21, 0x2b22, 0x2b23, 0x2b24, 0x2b25, 0x2b26, 0x2b27, + 0x2b28, 0x2b29, 0x2b2a, 0x2b2b, 0x2b2c, 0x2b2d, 0x2b2e, 0x2b2f, + 0x2b30, 0x2b31, 0x2b32, 0x2b33, 0x2b34, 0x2b35, 0x2b36, 0x2b37, + 0x2b38, 0x2b39, 0x2b3a, 0x2b3b, 0x2b3c, 0x2b3d, 0x2b3e, 0x2b3f, + 0x2b40, 0x2b41, 0x2b42, 0x2b43, 0x2b44, 0x2b45, 0x2b46, 0x2b47, + 0x2b48, 0x2b49, 0x2b4a, 0x2b4b, 0x2b4c, 0x2b4d, 0x2b4e, 0x2b4f, + 0x2b50, 0x2b51, 0x2b52, 0x2b53, 0x2b54, 0x2b55, 0x2b56, 0x2b57, + 0x2b58, 0x2b59, 0x2b5a, 0x2b5b, 0x2b5c, 0x2b5d, 0x2b5e, 0x2b5f, + 0x2b60, 0x2b61, 0x2b62, 0x2b63, 0x2b64, 0x2b65, 0x2b66, 0x2b67, + 0x2b68, 0x2b69, 0x2b6a, 0x2b6b, 0x2b6c, 0x2b6d, 0x2b6e, 0x2b6f, + 0x2b70, 0x2b71, 0x2b72, 0x2b73, 0x2b74, 0x2b75, 0x2b76, 0x0000, + 0x0000, 0x0000, 0x0000, 0x2124, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_31[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x2421, 0x2422, 0x2423, 0x2424, 0x2425, 0x2426, 0x2427, + 0x2428, 0x2429, 0x242a, 0x242b, 0x242c, 0x242d, 0x242e, 0x242f, + 0x2430, 0x2431, 0x2432, 0x2433, 0x2434, 0x2435, 0x2436, 0x2437, + 0x2438, 0x2439, 0x243a, 0x243b, 0x243c, 0x243d, 0x243e, 0x243f, + 0x2440, 0x2441, 0x2442, 0x2443, 0x2444, 0x2445, 0x2446, 0x2447, + 0x2448, 0x2449, 0x244a, 0x244b, 0x244c, 0x244d, 0x244e, 0x244f, + 0x2450, 0x2451, 0x2452, 0x2453, 0x2121, 0x2455, 0x2456, 0x2457, + 0x2458, 0x2459, 0x245a, 0x245b, 0x245c, 0x245d, 0x245e, 0x245f, + 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, + 0x2468, 0x2469, 0x246a, 0x246b, 0x246c, 0x246d, 0x246e, 0x246f, + 0x2470, 0x2471, 0x2472, 0x2473, 0x2474, 0x2475, 0x2476, 0x2477, + 0x2478, 0x2479, 0x247a, 0x247b, 0x247c, 0x247d, 0x247e, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_32[] = { + 0x2931, 0x2932, 0x2933, 0x2934, 0x2935, 0x2936, 0x2937, 0x2938, + 0x2939, 0x293a, 0x293b, 0x293c, 0x293d, 0x293e, 0x293f, 0x2940, + 0x2941, 0x2942, 0x2943, 0x2944, 0x2945, 0x2946, 0x2947, 0x2948, + 0x2949, 0x294a, 0x294b, 0x294c, 0x225f, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x2831, 0x2832, 0x2833, 0x2834, 0x2835, 0x2836, 0x2837, 0x2838, + 0x2839, 0x283a, 0x283b, 0x283c, 0x283d, 0x283e, 0x283f, 0x2840, + 0x2841, 0x2842, 0x2843, 0x2844, 0x2845, 0x2846, 0x2847, 0x2848, + 0x2849, 0x284a, 0x284b, 0x284c, 0x0000, 0x0000, 0x0000, 0x225e, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_33[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x2749, 0x274a, 0x274b, 0x274c, 0x274d, 0x0000, 0x0000, 0x0000, + 0x273a, 0x273b, 0x275c, 0x275d, 0x275e, 0x2736, 0x2737, 0x2738, + 0x2754, 0x2755, 0x2756, 0x2757, 0x2758, 0x2721, 0x2722, 0x2723, + 0x2725, 0x272b, 0x272c, 0x272d, 0x272e, 0x272f, 0x2730, 0x2731, + 0x2732, 0x2733, 0x2734, 0x2727, 0x2728, 0x2729, 0x272a, 0x273d, + 0x273e, 0x2765, 0x2766, 0x2767, 0x2768, 0x2761, 0x2762, 0x2763, + 0x273f, 0x2740, 0x2741, 0x2742, 0x2743, 0x2744, 0x2745, 0x2746, + 0x2747, 0x2748, 0x274e, 0x274f, 0x2750, 0x2751, 0x2752, 0x2753, + 0x275a, 0x275b, 0x2263, 0x276c, 0x2726, 0x2760, 0x276f, 0x2261, + 0x273c, 0x276d, 0x2735, 0x0000, 0x0000, 0x0000, 0x0000, 0x2739, + 0x276a, 0x0000, 0x0000, 0x276b, 0x0000, 0x0000, 0x275f, 0x0000, + 0x2264, 0x0000, 0x0000, 0x2764, 0x276e, 0x2769, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_4e[] = { + 0x6c69, 0x6f4b, 0x0000, 0x7652, 0x0000, 0x0000, 0x0000, 0x5832, + 0x6d5b, 0x5f32, 0x5f3e, 0x793b, 0x0000, 0x5c74, 0x0000, 0x0000, + 0x0000, 0x7564, 0x0000, 0x0000, 0x7326, 0x5d60, 0x6126, 0x0000, + 0x4e78, 0x5c30, 0x0000, 0x0000, 0x0000, 0x0000, 0x632a, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7169, 0x0000, 0x0000, + 0x0000, 0x0000, 0x4e2d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x7c2f, 0x5321, 0x0000, 0x712b, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6751, 0x522c, 0x0000, 0x4e79, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x717d, 0x0000, 0x5e3f, 0x7b3a, 0x7939, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4e52, 0x0000, + 0x632b, 0x6b60, 0x0000, 0x0000, 0x0000, 0x4e7a, 0x4b77, 0x6525, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x4a61, 0x0000, 0x544c, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x6a61, 0x0000, 0x0000, 0x5c63, 0x5f2d, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4b6b, 0x0000, + 0x0000, 0x0000, 0x516a, 0x0000, 0x0000, 0x0000, 0x5675, 0x0000, + 0x6578, 0x0000, 0x0000, 0x5e40, 0x6c23, 0x0000, 0x694d, 0x0000, + 0x6a27, 0x6976, 0x7b3b, 0x0000, 0x6769, 0x6f4c, 0x0000, 0x0000, + 0x5066, 0x0000, 0x0000, 0x5e41, 0x0000, 0x0000, 0x642c, 0x0000, + 0x0000, 0x584c, 0x7971, 0x0000, 0x4e5f, 0x7a24, 0x6632, 0x0000, + 0x7a7b, 0x0000, 0x0000, 0x7a3d, 0x4c48, 0x6f4d, 0x5555, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5322, 0x0000, + 0x0000, 0x0000, 0x6c51, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6427, 0x6c52, 0x0000, 0x0000, 0x7631, 0x0000, 0x0000, 0x4e7b, + 0x0000, 0x0000, 0x5051, 0x4b3f, 0x0000, 0x6d24, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x6d28, 0x5e42, 0x7662, 0x6d5c, + 0x5c75, 0x6039, 0x0000, 0x0000, 0x0000, 0x544e, 0x0000, 0x7435, + 0x0000, 0x0000, 0x0000, 0x535b, 0x5635, 0x6c24, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6466, 0x0000, 0x716a, 0x0000, 0x0000, 0x0000, 0x4b6c, 0x4b40, + 0x0000, 0x0000, 0x0000, 0x6c72, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_4f[] = { + 0x0000, 0x506a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7972, 0x6c25, 0x505f, 0x0000, 0x676a, 0x506b, 0x5c51, + 0x5b69, 0x7d4c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5b57, + 0x0000, 0x0000, 0x0000, 0x0000, 0x5a61, 0x0000, 0x5636, 0x0000, + 0x635f, 0x0000, 0x5e43, 0x0000, 0x5e44, 0x4a21, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x6e6c, 0x0000, 0x0000, 0x5323, 0x6e37, + 0x784f, 0x0000, 0x0000, 0x0000, 0x0000, 0x6a48, 0x6e38, 0x712c, + 0x7125, 0x694e, 0x0000, 0x0000, 0x0000, 0x793c, 0x0000, 0x0000, + 0x0000, 0x6579, 0x6c6a, 0x5d56, 0x6d42, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7825, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x653a, + 0x5b58, 0x0000, 0x0000, 0x4a22, 0x0000, 0x0000, 0x514d, 0x0000, + 0x0000, 0x0000, 0x6e6d, 0x0000, 0x0000, 0x0000, 0x6c6b, 0x5e45, + 0x0000, 0x6360, 0x0000, 0x4a49, 0x7269, 0x0000, 0x522d, 0x0000, + 0x7636, 0x0000, 0x4e42, 0x5647, 0x0000, 0x6334, 0x0000, 0x712d, + 0x0000, 0x6a62, 0x0000, 0x0000, 0x0000, 0x0000, 0x5742, 0x0000, + 0x7327, 0x0000, 0x0000, 0x4d6a, 0x0000, 0x6b6e, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5932, 0x7d25, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7655, 0x5562, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5c25, + 0x0000, 0x0000, 0x4c75, 0x7535, 0x642d, 0x0000, 0x0000, 0x0000, + 0x0000, 0x676b, 0x7155, 0x0000, 0x0000, 0x0000, 0x703b, 0x0000, + 0x0000, 0x6935, 0x0000, 0x4c49, 0x7a55, 0x0000, 0x0000, 0x6154, + 0x0000, 0x0000, 0x5756, 0x0000, 0x0000, 0x5c41, 0x0000, 0x5e46, + 0x7a6f, 0x6361, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6173, 0x5c76, + 0x0000, 0x4e7c, 0x0000, 0x5b44, 0x0000, 0x7871, 0x0000, 0x0000, + 0x5c64, 0x0000, 0x656f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_50[] = { + 0x0000, 0x0000, 0x5c31, 0x0000, 0x0000, 0x0000, 0x5556, 0x0000, + 0x0000, 0x735a, 0x0000, 0x4b41, 0x0000, 0x5b43, 0x0000, 0x0000, + 0x0000, 0x597a, 0x536e, 0x0000, 0x0000, 0x0000, 0x7a38, 0x0000, + 0x0000, 0x7d26, 0x6b6f, 0x0000, 0x7426, 0x0000, 0x4c4a, 0x7328, + 0x0000, 0x735b, 0x0000, 0x5b27, 0x7637, 0x0000, 0x4f66, 0x7072, + 0x4b5a, 0x0000, 0x6752, 0x5743, 0x7670, 0x685e, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x6526, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x6567, 0x0000, 0x0000, 0x0000, 0x4a23, + 0x4c27, 0x6a49, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7836, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7a25, 0x0000, 0x0000, + 0x0000, 0x0000, 0x712e, 0x0000, 0x6f4e, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4b6d, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x7630, 0x6f4f, 0x694f, 0x0000, + 0x775e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4e53, 0x0000, 0x0000, 0x0000, 0x0000, 0x5c77, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5b28, 0x0000, 0x0000, + 0x0000, 0x4b78, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5f21, 0x5d61, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x754a, 0x6936, 0x0000, 0x0000, + 0x0000, 0x0000, 0x676c, 0x6e6e, 0x0000, 0x7370, 0x0000, 0x5f3f, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4c4b, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5041, 0x0000, 0x0000, + 0x0000, 0x7452, 0x603a, 0x0000, 0x0000, 0x0000, 0x0000, 0x5f40, + 0x0000, 0x4e60, 0x0000, 0x0000, 0x0000, 0x5c52, 0x7d6a, 0x0000, + 0x0000, 0x0000, 0x5676, 0x0000, 0x0000, 0x0000, 0x6a4a, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6869, 0x0000, 0x632c, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7350, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x4a24, 0x0000, 0x5b78, 0x0000, 0x0000, 0x0000, 0x5e47 +}; + +static unsigned short ksc5601_from_unicode_51[] = { + 0x6b70, 0x7156, 0x0000, 0x0000, 0x6562, 0x0000, 0x4c4c, 0x0000, + 0x0000, 0x4b7b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6a63, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5f41, + 0x0000, 0x566d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6950, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6e39, 0x0000, 0x0000, 0x0000, 0x0000, 0x5563, + 0x0000, 0x0000, 0x5153, 0x0000, 0x6570, 0x0000, 0x0000, 0x0000, + 0x6834, 0x6b43, 0x0000, 0x6a2a, 0x7a7c, 0x7576, 0x703c, 0x7d54, + 0x603b, 0x4e43, 0x0000, 0x503a, 0x773a, 0x5873, 0x774d, 0x0000, + 0x0000, 0x0000, 0x642e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x545f, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x5067, 0x0000, 0x0000, 0x6c7d, 0x0000, 0x522e, + 0x6e6f, 0x5557, 0x6a64, 0x7822, 0x4d6b, 0x573f, 0x7b31, 0x0000, + 0x0000, 0x4d6c, 0x0000, 0x0000, 0x0000, 0x5c32, 0x506c, 0x4e7d, + 0x6e70, 0x0000, 0x0000, 0x0000, 0x4c42, 0x0000, 0x0000, 0x0000, + 0x506d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6577, 0x0000, + 0x0000, 0x0000, 0x737c, 0x0000, 0x0000, 0x6e22, 0x0000, 0x0000, + 0x0000, 0x0000, 0x5933, 0x0000, 0x0000, 0x5874, 0x0000, 0x6937, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4e2e, 0x0000, 0x0000, 0x0000, 0x0000, 0x5922, 0x0000, 0x0000, + 0x0000, 0x0000, 0x5871, 0x0000, 0x544f, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6527, 0x5232, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5629, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x7422, 0x0000, 0x7157, 0x0000, + 0x0000, 0x5558, 0x0000, 0x703d, 0x5273, 0x5450, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x5272, 0x6b6a, 0x7d6b, 0x0000, + 0x0000, 0x5b6d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x7c45, 0x4b42, 0x0000, 0x0000, 0x0000, 0x0000, 0x7d55, 0x0000, + 0x7448, 0x686a, 0x7573, 0x0000, 0x0000, 0x795e, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_52[] = { + 0x536f, 0x0000, 0x0000, 0x6c53, 0x0000, 0x0000, 0x5d42, 0x6f37, + 0x6754, 0x0000, 0x4a4a, 0x0000, 0x0000, 0x0000, 0x597b, 0x0000, + 0x0000, 0x7a7d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x562a, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7478, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x7777, 0x5c2c, 0x0000, 0x0000, + 0x0000, 0x5757, 0x5f22, 0x0000, 0x0000, 0x0000, 0x4e3e, 0x0000, + 0x5370, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7024, 0x616c, + 0x4f67, 0x734b, 0x6d29, 0x4a3e, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x746f, 0x0000, 0x0000, 0x0000, 0x764e, + 0x0000, 0x0000, 0x5e7b, 0x503b, 0x5537, 0x6e71, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x7428, 0x0000, 0x5c78, 0x0000, + 0x0000, 0x0000, 0x0000, 0x4b27, 0x0000, 0x5a4e, 0x0000, 0x0000, + 0x0000, 0x6066, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6d25, 0x6e72, 0x0000, 0x0000, 0x0000, 0x0000, 0x5c79, + 0x0000, 0x0000, 0x795c, 0x0000, 0x0000, 0x735c, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7872, 0x0000, 0x7479, + 0x0000, 0x0000, 0x0000, 0x7c71, 0x0000, 0x0000, 0x0000, 0x503c, + 0x5b79, 0x5731, 0x0000, 0x0000, 0x0000, 0x4b7c, 0x0000, 0x0000, + 0x0000, 0x7025, 0x4b7d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x5574, 0x0000, 0x0000, 0x0000, 0x4d6d, + 0x4a25, 0x0000, 0x0000, 0x562b, 0x5042, 0x0000, 0x0000, 0x0000, + 0x0000, 0x703e, 0x523d, 0x4c24, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7a36, 0x0000, + 0x0000, 0x4c4d, 0x0000, 0x5a7a, 0x0000, 0x764f, 0x0000, 0x6938, + 0x0000, 0x5875, 0x0000, 0x0000, 0x0000, 0x4c4e, 0x0000, 0x0000, + 0x0000, 0x0000, 0x5270, 0x0000, 0x0000, 0x5451, 0x696d, 0x0000, + 0x4a6b, 0x5962, 0x0000, 0x7d32, 0x0000, 0x632d, 0x523e, 0x5934, + 0x0000, 0x0000, 0x6127, 0x6e53, 0x5043, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x7d33, 0x0000, 0x5564, 0x0000, 0x0000, + 0x4f68, 0x0000, 0x6d43, 0x5032, 0x0000, 0x0000, 0x4e7e, 0x5a28 +}; + +static unsigned short ksc5601_from_unicode_53[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7850, 0x0000, 0x0000, + 0x7d56, 0x0000, 0x0000, 0x0000, 0x0000, 0x7851, 0x0000, 0x7852, + 0x5c53, 0x0000, 0x0000, 0x0000, 0x0000, 0x5d62, 0x7b79, 0x5b45, + 0x0000, 0x6335, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6d5d, 0x4e44, 0x0000, 0x4b21, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x5d63, 0x0000, 0x0000, 0x0000, 0x0000, 0x7c5d, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x792f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x527b, + 0x4f21, 0x6428, 0x0000, 0x7436, 0x6c7e, 0x0000, 0x0000, 0x632e, + 0x676d, 0x7d41, 0x5a62, 0x0000, 0x0000, 0x5833, 0x0000, 0x0000, + 0x0000, 0x5d64, 0x706f, 0x7671, 0x7a70, 0x0000, 0x0000, 0x5175, + 0x0000, 0x0000, 0x5a4f, 0x0000, 0x5c54, 0x0000, 0x5c26, 0x0000, + 0x6f3f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4e4f, 0x0000, + 0x6059, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5956, + 0x6c54, 0x6a4b, 0x0000, 0x0000, 0x4a3f, 0x516b, 0x0000, 0x4f69, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x716d, 0x0000, 0x4c4f, + 0x0000, 0x0000, 0x0000, 0x0000, 0x6478, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x646d, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5758, 0x0000, 0x7d27, 0x0000, 0x0000, 0x0000, 0x0000, 0x6a2b, + 0x7632, 0x0000, 0x0000, 0x0000, 0x0000, 0x4f70, 0x793d, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6674, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x4b5b, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x5f33, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6951, 0x7329, 0x5060, 0x6952, 0x0000, 0x5a63, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x6252, 0x0000, 0x7622, 0x6174, + 0x0000, 0x0000, 0x0000, 0x5a64, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6755, 0x753f, 0x4f22, 0x4d2f, 0x4f23, 0x0000, 0x0000, + 0x0000, 0x4d30, 0x717e, 0x5023, 0x612f, 0x7823, 0x0000, 0x4a26, + 0x773b, 0x726a, 0x5e48, 0x6953, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5e49, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_54[] = { + 0x0000, 0x0000, 0x0000, 0x7d5e, 0x4a40, 0x0000, 0x0000, 0x0000, + 0x796a, 0x514e, 0x6e54, 0x0000, 0x5452, 0x5923, 0x7d28, 0x5759, + 0x774e, 0x7a3e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x4f56, 0x0000, 0x5770, 0x0000, 0x6b61, + 0x7845, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5c7a, 0x0000, + 0x0000, 0x5d43, 0x0000, 0x795f, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x676f, 0x0000, 0x0000, 0x0000, 0x0000, + 0x7d65, 0x7623, 0x0000, 0x597c, 0x7d29, 0x0000, 0x676e, 0x0000, + 0x0000, 0x0000, 0x5565, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6f50, 0x0000, 0x4d31, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7722, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x7132, 0x0000, 0x7131, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x4d32, 0x0000, 0x5a2b, 0x0000, 0x4a27, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x6362, 0x7b3c, 0x5924, 0x0000, 0x0000, + 0x6e3a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7853, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x7b7a, 0x0000, 0x4f24, 0x0000, + 0x5c7b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x7663, 0x0000, 0x0000, 0x0000, + 0x6d2a, 0x0000, 0x0000, 0x7221, 0x4e61, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x7a26, 0x0000, 0x0000, 0x0000, 0x0000, + 0x7960, 0x0000, 0x0000, 0x0000, 0x0000, 0x666c, 0x0000, 0x0000, + 0x646e, 0x7921, 0x0000, 0x0000, 0x7b6f, 0x0000, 0x0000, 0x0000, + 0x796b, 0x6e23, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6a2c, 0x0000, 0x0000, 0x0000, 0x4a28, 0x0000, 0x0000, + 0x747a, 0x0000, 0x0000, 0x0000, 0x0000, 0x4d56, 0x7c76, 0x0000, + 0x0000, 0x0000, 0x7449, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x7854, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_55[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x7826, 0x0000, 0x5e4a, 0x7246, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x575a, 0x0000, + 0x5350, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x5845, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6a66, + 0x0000, 0x735d, 0x0000, 0x0000, 0x0000, 0x645a, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7664, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x7672, 0x0000, 0x5f42, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x597d, + 0x0000, 0x0000, 0x0000, 0x4c76, 0x0000, 0x0000, 0x533a, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x642f, 0x0000, + 0x0000, 0x0000, 0x0000, 0x7961, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x7026, 0x0000, 0x0000, 0x0000, + 0x4b53, 0x0000, 0x0000, 0x0000, 0x603c, 0x0000, 0x744a, 0x5154, + 0x0000, 0x7d2a, 0x7962, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x7437, 0x7d42, 0x7c30, 0x0000, 0x7d6c, 0x4a62, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7d3d, + 0x0000, 0x6a67, 0x5f43, 0x5152, 0x4e62, 0x0000, 0x5324, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7d2b, 0x0000, 0x5f60, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x7247, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6770, 0x0000, 0x506e, 0x0000, 0x0000, 0x732a, + 0x0000, 0x0000, 0x0000, 0x5e4b, 0x7638, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6175, 0x7133, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_56[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7723, 0x0000, + 0x0000, 0x4a29, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4f25, 0x0000, 0x0000, 0x5f44, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6130, + 0x0000, 0x0000, 0x703f, 0x0000, 0x7624, 0x0000, 0x6336, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x7a46, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x506f, 0x0000, 0x0000, 0x7d6d, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x5d44, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7c77, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x663f, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x5e2d, 0x0000, 0x7a3f, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x6571, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x6d44, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x5225, 0x0000, 0x0000, 0x7d6e, 0x0000, 0x0000, + 0x0000, 0x7536, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6176, 0x5e4c, 0x0000, 0x0000, 0x7c5e, 0x0000, + 0x6c57, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4d5d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5637, 0x4d33, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_57[] = { + 0x0000, 0x0000, 0x0000, 0x7855, 0x6558, 0x0000, 0x0000, 0x0000, + 0x4f6a, 0x0000, 0x0000, 0x4f50, 0x0000, 0x6a4c, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6a2e, 0x6a2d, 0x0000, 0x0000, 0x5371, 0x0000, + 0x5325, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x774f, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6e24, 0x0000, 0x0000, 0x0000, 0x0000, 0x5024, 0x0000, 0x0000, + 0x7222, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x5070, 0x0000, 0x0000, 0x0000, 0x0000, + 0x7223, 0x0000, 0x7778, 0x0000, 0x0000, 0x0000, 0x0000, 0x5033, + 0x0000, 0x0000, 0x5b29, 0x0000, 0x0000, 0x533b, 0x4a6c, 0x0000, + 0x7126, 0x4b55, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7767, 0x0000, 0x0000, 0x4d5e, 0x0000, 0x7724, 0x0000, + 0x0000, 0x0000, 0x7840, 0x0000, 0x0000, 0x0000, 0x535d, 0x0000, + 0x4c50, 0x0000, 0x0000, 0x0000, 0x0000, 0x4f26, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x7673, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6177, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x535c, 0x0000, 0x0000, 0x7a7e, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x7a27, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6b59, 0x0000, 0x4f27, 0x6a2f, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x646f, 0x0000, 0x0000, 0x0000, 0x6939, + 0x7158, 0x0000, 0x0000, 0x5858, 0x0000, 0x0000, 0x6072, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6634, + 0x5c7c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x7371, 0x0000, 0x0000, 0x0000, 0x6350, 0x0000, 0x0000, 0x727b, + 0x0000, 0x5b46, 0x5071, 0x0000, 0x5072, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_58[] = { + 0x4f5c, 0x0000, 0x5351, 0x0000, 0x0000, 0x4c31, 0x7758, 0x0000, + 0x4b28, 0x6b3c, 0x643e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x745c, 0x0000, + 0x0000, 0x5c42, 0x0000, 0x0000, 0x7027, 0x0000, 0x0000, 0x6640, + 0x0000, 0x0000, 0x4a6d, 0x0000, 0x0000, 0x0000, 0x0000, 0x686b, + 0x6568, 0x5c43, 0x0000, 0x0000, 0x6d5e, 0x5372, 0x0000, 0x0000, + 0x0000, 0x0000, 0x4c77, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x4e54, 0x672b, 0x0000, 0x0000, 0x0000, 0x4b43, + 0x0000, 0x6131, 0x0000, 0x0000, 0x7732, 0x0000, 0x0000, 0x5373, + 0x5352, 0x0000, 0x7540, 0x0000, 0x0000, 0x0000, 0x5f5d, 0x0000, + 0x0000, 0x6e73, 0x6771, 0x0000, 0x7d34, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7248, 0x0000, 0x0000, + 0x0000, 0x7352, 0x0000, 0x0000, 0x6e74, 0x0000, 0x6253, 0x0000, + 0x0000, 0x0000, 0x0000, 0x4c51, 0x0000, 0x5f6a, 0x0000, 0x0000, + 0x0000, 0x693a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x5957, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x754d, 0x0000, 0x7172, 0x7a47, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5978, 0x5442, 0x0000, 0x0000, 0x0000, 0x0000, 0x7665, 0x0000, + 0x0000, 0x0000, 0x0000, 0x5d45, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6772, 0x6d5f, 0x0000, 0x0000, 0x4a4b, 0x0000, + 0x0000, 0x5b7a, 0x0000, 0x0000, 0x0000, 0x6835, 0x0000, 0x5326, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7d35, 0x0000, + 0x0000, 0x7949, 0x0000, 0x6462, 0x0000, 0x7b3d, 0x0000, 0x0000, + 0x5264, 0x4e45, 0x0000, 0x0000, 0x0000, 0x0000, 0x4e55, 0x5256, + 0x0000, 0x0000, 0x0000, 0x0000, 0x653d, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x5e4d, 0x6c73, 0x0000, 0x0000, 0x6d60, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6c6c, 0x7b3e, 0x5f6b, 0x0000, 0x6178, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_59[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x793e, + 0x0000, 0x0000, 0x0000, 0x0000, 0x5073, 0x602a, 0x6862, 0x0000, + 0x0000, 0x6254, 0x527d, 0x0000, 0x6528, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x5953, 0x0000, 0x0000, 0x0000, 0x0000, 0x535e, + 0x0000, 0x7438, 0x773c, 0x5c7d, 0x0000, 0x686c, 0x6467, 0x0000, + 0x0000, 0x6377, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6c28, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7a71, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x6572, 0x0000, 0x0000, 0x5074, + 0x5155, 0x5c65, 0x0000, 0x0000, 0x0000, 0x0000, 0x5025, 0x7134, + 0x7c31, 0x5050, 0x0000, 0x0000, 0x5d46, 0x7a51, 0x0000, 0x775f, + 0x0000, 0x0000, 0x7a28, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6e75, 0x0000, 0x5e4e, 0x0000, 0x0000, 0x0000, 0x0000, 0x6773, + 0x0000, 0x0000, 0x772c, 0x6b44, 0x6d61, 0x602b, 0x5d47, 0x0000, + 0x0000, 0x0000, 0x0000, 0x5233, 0x523f, 0x0000, 0x0000, 0x0000, + 0x4a4c, 0x0000, 0x0000, 0x0000, 0x0000, 0x7b3f, 0x0000, 0x0000, + 0x0000, 0x0000, 0x657d, 0x5d65, 0x584d, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6c74, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x5075, 0x0000, 0x0000, 0x686d, 0x5052, + 0x0000, 0x5958, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7666, 0x0000, 0x0000, + 0x5b2a, 0x0000, 0x0000, 0x0000, 0x7760, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5859, 0x0000, 0x7423, 0x0000, 0x0000, 0x745d, 0x0000, + 0x0000, 0x0000, 0x0000, 0x6f51, 0x0000, 0x0000, 0x5935, 0x0000, + 0x0000, 0x6d2b, 0x0000, 0x6337, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6e3b, 0x4d34, 0x0000, 0x6073, 0x6a4d, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6c75, 0x686e, 0x0000, 0x4b29, 0x712f, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4a4d, 0x0000, + 0x6c29, 0x0000, 0x726b, 0x0000, 0x7d6f, 0x0000, 0x7973, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6641, 0x0000, 0x0000, 0x6c58, 0x0000, 0x0000, 0x0000, 0x6d2c +}; + +static unsigned short ksc5601_from_unicode_5a[] = { + 0x0000, 0x6a4e, 0x0000, 0x685f, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5e4f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5226, 0x0000, 0x0000, 0x6774, 0x5156, 0x0000, 0x0000, 0x6642, + 0x6363, 0x0000, 0x0000, 0x0000, 0x0000, 0x6430, 0x0000, 0x0000, + 0x0000, 0x5834, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7625, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x735e, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5725, 0x0000, 0x0000, 0x0000, 0x0000, 0x7768, 0x0000, + 0x0000, 0x6846, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x7b66, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x5d66, 0x0000, 0x0000, 0x0000, 0x5c7e, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x585a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x5a2c, 0x6a30, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x6338, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x4a2a, 0x6179, 0x0000, 0x6a31, 0x0000, 0x0000, 0x0000, + 0x0000, 0x726c, 0x0000, 0x0000, 0x7a6e, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6e55, 0x0000, 0x0000, 0x0000, 0x0000, 0x7974, 0x0000, + 0x0000, 0x526c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_5b[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7b7b, 0x0000, 0x0000, + 0x0000, 0x7d70, 0x0000, 0x603d, 0x4e63, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7846, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x5e2e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5f45, 0x0000, 0x0000, 0x653e, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6d2d, 0x7a6a, 0x0000, 0x0000, 0x4d6e, 0x6d26, 0x0000, 0x6d2e, + 0x706d, 0x0000, 0x5d21, 0x0000, 0x6d2f, 0x7c78, 0x0000, 0x586b, + 0x0000, 0x0000, 0x0000, 0x4c79, 0x4d35, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7a29, 0x0000, 0x615d, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6255, 0x6d4f, 0x0000, 0x0000, 0x0000, 0x5d22, 0x0000, 0x0000, + 0x794a, 0x0000, 0x6a68, 0x0000, 0x656d, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x536b, 0x0000, 0x6954, + 0x617a, 0x644c, 0x0000, 0x6164, 0x6847, 0x0000, 0x0000, 0x4e5b, + 0x0000, 0x0000, 0x0000, 0x5c55, 0x0000, 0x7735, 0x7c73, 0x7073, + 0x4e2f, 0x7135, 0x6f52, 0x6848, 0x6b71, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x4b54, 0x603e, 0x6378, 0x6a69, 0x7c32, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x6074, 0x0000, 0x4f60, 0x0000, + 0x6e25, 0x0000, 0x0000, 0x7a2a, 0x6643, 0x6132, 0x4a2b, 0x0000, + 0x6364, 0x693b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6256, + 0x7372, 0x0000, 0x6e56, 0x6a32, 0x5076, 0x6c59, 0x5a4b, 0x4f28, + 0x0000, 0x0000, 0x0000, 0x0000, 0x5d23, 0x0000, 0x0000, 0x0000, + 0x585b, 0x0000, 0x794e, 0x6955, 0x6351, 0x0000, 0x0000, 0x523c, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x582c, 0x734c, + 0x0000, 0x4d7b, 0x7656, 0x0000, 0x6775, 0x686f, 0x6379, 0x523b, + 0x7373, 0x637b, 0x0000, 0x5e50, 0x4e30, 0x0000, 0x5677, 0x7159, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7541, 0x5c44, 0x0000, + 0x753b, 0x0000, 0x5e51, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_5c[] = { + 0x0000, 0x5c66, 0x0000, 0x0000, 0x5e52, 0x0000, 0x0000, 0x6d62, + 0x6e76, 0x6a4f, 0x706e, 0x637c, 0x0000, 0x535f, 0x5374, 0x6133, + 0x0000, 0x6134, 0x0000, 0x0000, 0x0000, 0x0000, 0x7453, 0x0000, + 0x0000, 0x5f46, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x6956, 0x0000, 0x0000, 0x0000, + 0x5b2b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7626, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6339, 0x6b45, 0x7429, 0x4d36, 0x5279, 0x0000, 0x5a2d, 0x5263, + 0x4f51, 0x0000, 0x0000, 0x0000, 0x0000, 0x4b5c, 0x4c7a, 0x0000, + 0x4f5d, 0x0000, 0x0000, 0x6829, 0x0000, 0x633b, 0x633a, 0x0000, + 0x0000, 0x605a, 0x0000, 0x0000, 0x0000, 0x6e77, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x5c33, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5375, 0x0000, 0x5265, 0x0000, 0x7635, 0x575b, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x6155, 0x0000, 0x0000, 0x546a, + 0x0000, 0x5f23, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7d5f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5077, 0x6d54, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x4b2a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x645b, 0x0000, 0x617b, 0x4b22, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5360, 0x0000, 0x643f, 0x0000, 0x7b40, 0x0000, 0x5a3e, + 0x644d, 0x0000, 0x5639, 0x0000, 0x0000, 0x0000, 0x6f40, 0x0000, + 0x617c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7639, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5f47, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6431, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5c67, + 0x5c68, 0x0000, 0x0000, 0x0000, 0x7a56, 0x0000, 0x5376, 0x0000, + 0x0000, 0x0000, 0x0000, 0x715a, 0x0000, 0x7a72, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_5d[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x627d, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x554f, 0x5078, 0x0000, + 0x0000, 0x4d5f, 0x0000, 0x0000, 0x754b, 0x0000, 0x6470, 0x4b2b, + 0x0000, 0x5744, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x627e, + 0x0000, 0x5d5a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x5a2e, 0x4a6e, 0x0000, 0x0000, 0x0000, + 0x5176, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6321, 0x0000, 0x0000, 0x6863, 0x0000, 0x0000, 0x732b, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4f29, + 0x0000, 0x0000, 0x0000, 0x5377, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5471, 0x0000, 0x0000, + 0x4e64, 0x0000, 0x6872, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6575, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x672e, 0x0000, 0x563a, 0x0000, 0x5f6c, 0x6440, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6864, 0x0000, 0x0000, + 0x0000, 0x0000, 0x5835, 0x0000, 0x0000, 0x0000, 0x645c, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7439, 0x7136, 0x0000, + 0x0000, 0x625e, 0x6135, 0x0000, 0x0000, 0x4d6f, 0x7127, 0x4e65, + 0x4b5d, 0x0000, 0x0000, 0x5963, 0x0000, 0x0000, 0x732c, 0x0000, + 0x0000, 0x5079, 0x6c2b, 0x5e53, 0x7769, 0x0000, 0x0000, 0x7975, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x615e, 0x4b6e, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_5e[] = { + 0x0000, 0x0000, 0x633c, 0x7856, 0x0000, 0x0000, 0x5b6e, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x7d71, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7736, 0x0000, 0x0000, 0x0000, 0x0000, 0x745e, 0x0000, + 0x0000, 0x726d, 0x0000, 0x5b59, 0x0000, 0x7028, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x617d, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x5e54, 0x0000, 0x602c, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x6d63, 0x0000, 0x0000, 0x5361, 0x0000, + 0x5f48, 0x0000, 0x0000, 0x0000, 0x0000, 0x5936, 0x0000, 0x7d2c, + 0x6f53, 0x0000, 0x0000, 0x0000, 0x6441, 0x786b, 0x0000, 0x5b2c, + 0x0000, 0x0000, 0x0000, 0x0000, 0x7c46, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x582d, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x763a, + 0x0000, 0x5b5f, 0x5353, 0x7847, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x4a4e, 0x7841, 0x5234, 0x0000, 0x0000, 0x5c34, + 0x7a39, 0x4a4f, 0x0000, 0x7c33, 0x6a6a, 0x6a6b, 0x507a, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x6d64, 0x0000, 0x0000, 0x5d67, + 0x0000, 0x0000, 0x5f49, 0x0000, 0x0000, 0x0000, 0x0000, 0x5f6d, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6e3c, 0x0000, 0x6f41, + 0x0000, 0x0000, 0x4c52, 0x0000, 0x5d24, 0x0000, 0x0000, 0x0000, + 0x5f4a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5378, 0x7128, + 0x0000, 0x0000, 0x0000, 0x4d37, 0x0000, 0x6f54, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x645d, 0x5f6e, 0x4b2c, + 0x693c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6a6c, 0x0000, + 0x0000, 0x0000, 0x5f4b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x793f, 0x562f, 0x5227, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4f2a, 0x0000, 0x0000, 0x4e29, 0x0000, 0x0000, 0x5678, 0x0000, + 0x0000, 0x0000, 0x7137, 0x6e78, 0x0000, 0x0000, 0x0000, 0x5959, + 0x735f, 0x0000, 0x7848, 0x4e46, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x5566, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x7466, 0x0000, 0x0000, 0x6645, 0x6f55, + 0x0000, 0x0000, 0x4b6f, 0x7c5f, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_5f[] = { + 0x0000, 0x5c27, 0x0000, 0x0000, 0x5257, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x7849, 0x0000, 0x0000, 0x0000, 0x0000, 0x6352, + 0x0000, 0x633d, 0x0000, 0x4f61, 0x7040, 0x6c5a, 0x0000, 0x5d57, + 0x7b70, 0x0000, 0x0000, 0x6c2c, 0x0000, 0x0000, 0x0000, 0x7029, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7a57, 0x7b41, + 0x0000, 0x5240, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6530, 0x0000, 0x0000, 0x0000, 0x6d65, 0x0000, 0x0000, + 0x0000, 0x0000, 0x4b2d, 0x0000, 0x7930, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x7725, 0x0000, 0x4b2e, 0x0000, 0x5a2f, 0x0000, 0x5836, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5327, 0x7b32, + 0x0000, 0x7d44, 0x0000, 0x6c2d, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x7b21, 0x0000, 0x0000, 0x0000, 0x6569, 0x696e, + 0x0000, 0x7374, 0x7873, 0x7041, 0x5e2f, 0x7830, 0x0000, 0x0000, + 0x7360, 0x672f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5b2d, + 0x0000, 0x6635, 0x0000, 0x0000, 0x7928, 0x0000, 0x0000, 0x5d58, + 0x6859, 0x6f56, 0x0000, 0x0000, 0x0000, 0x5362, 0x0000, 0x625f, + 0x0000, 0x0000, 0x7c60, 0x5748, 0x7d2d, 0x0000, 0x0000, 0x0000, + 0x5f6f, 0x4c53, 0x5379, 0x0000, 0x0000, 0x0000, 0x0000, 0x5470, + 0x5b47, 0x5e55, 0x0000, 0x0000, 0x0000, 0x0000, 0x7074, 0x0000, + 0x5550, 0x6559, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x7c47, 0x5c56, 0x6260, 0x0000, 0x0000, 0x0000, 0x5a30, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7323, 0x0000, 0x536c, + 0x0000, 0x744b, 0x0000, 0x0000, 0x0000, 0x7d45, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x637d, 0x0000, 0x7931, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x507b, 0x6c5b, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x753c, 0x7224, + 0x584e, 0x584f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x7577, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x7661, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5237, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7b6c, 0x0000, 0x5d48 +}; + +static unsigned short ksc5601_from_unicode_60[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6468, + 0x0000, 0x0000, 0x5241, 0x0000, 0x0000, 0x0000, 0x7857, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x563b, 0x5e56, 0x0000, 0x0000, + 0x773d, 0x6c2e, 0x0000, 0x0000, 0x0000, 0x5061, 0x0000, 0x6075, + 0x6a33, 0x0000, 0x4e56, 0x0000, 0x0000, 0x0000, 0x0000, 0x4c25, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6c76, 0x6261, 0x633e, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7c48, 0x0000, 0x0000, + 0x4d70, 0x0000, 0x7976, 0x0000, 0x0000, 0x5f70, 0x0000, 0x0000, + 0x0000, 0x653f, 0x0000, 0x0000, 0x0000, 0x4e3f, 0x0000, 0x0000, + 0x0000, 0x0000, 0x7c61, 0x6d30, 0x7d51, 0x763b, 0x0000, 0x0000, + 0x794f, 0x6b5a, 0x4a41, 0x0000, 0x5238, 0x4d71, 0x0000, 0x6353, + 0x7d66, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x666d, 0x0000, 0x0000, + 0x0000, 0x637a, 0x0000, 0x0000, 0x702a, 0x7950, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x7c62, 0x0000, 0x7827, 0x0000, + 0x0000, 0x0000, 0x6165, 0x6e79, 0x0000, 0x0000, 0x0000, 0x6776, + 0x6a6d, 0x0000, 0x0000, 0x7c34, 0x7542, 0x0000, 0x0000, 0x575c, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x7075, 0x0000, 0x5d68, 0x536d, 0x757c, 0x0000, 0x5a3f, 0x0000, + 0x4c7b, 0x0000, 0x0000, 0x0000, 0x537a, 0x7424, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6f57, 0x0000, 0x5443, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7b63, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x7b6d, 0x0000, 0x602d, 0x0000, 0x0000, 0x6a6e, + 0x7b33, 0x6442, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x7667, 0x525d, 0x0000, 0x5f4c, 0x0000, 0x0000, 0x7c49, 0x0000, + 0x0000, 0x6529, 0x6076, 0x7633, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_61[] = { + 0x0000, 0x617e, 0x0000, 0x0000, 0x0000, 0x0000, 0x4b70, 0x0000, + 0x6a6f, 0x6a70, 0x0000, 0x0000, 0x0000, 0x5a40, 0x7834, 0x6b72, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6443, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6957, 0x6471, 0x0000, 0x0000, 0x0000, 0x4a6f, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4e57, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x7c4a, 0x0000, 0x0000, 0x0000, 0x7361, 0x0000, 0x0000, 0x4b44, + 0x0000, 0x0000, 0x0000, 0x0000, 0x6365, 0x0000, 0x4b45, 0x6a34, + 0x0000, 0x0000, 0x693d, 0x0000, 0x5749, 0x0000, 0x0000, 0x6b5b, + 0x6d31, 0x0000, 0x4c43, 0x773e, 0x7c4b, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x7874, 0x0000, 0x5937, 0x0000, 0x0000, + 0x7353, 0x7354, 0x0000, 0x0000, 0x0000, 0x7764, 0x0000, 0x7751, + 0x0000, 0x0000, 0x5837, 0x4e31, 0x4a42, 0x0000, 0x0000, 0x7b34, + 0x4b46, 0x0000, 0x0000, 0x7076, 0x0000, 0x0000, 0x5567, 0x0000, + 0x6a50, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4c54, 0x4b2f, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x742a, 0x692f, 0x0000, + 0x0000, 0x7543, 0x6958, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x5d69, 0x0000, 0x0000, 0x0000, 0x7173, 0x0000, + 0x557b, 0x5e3b, 0x0000, 0x0000, 0x747b, 0x0000, 0x0000, 0x0000, + 0x7d73, 0x7d72, 0x7726, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x5d49, 0x0000, 0x0000, 0x5453, + 0x0000, 0x4c28, 0x0000, 0x5a41, 0x4c55, 0x0000, 0x5964, 0x0000, + 0x0000, 0x0000, 0x7a4a, 0x0000, 0x0000, 0x0000, 0x6563, 0x0000, + 0x0000, 0x0000, 0x533c, 0x0000, 0x0000, 0x0000, 0x4a70, 0x0000, + 0x0000, 0x0000, 0x0000, 0x5044, 0x0000, 0x0000, 0x0000, 0x4a50, + 0x7a2b, 0x6b6b, 0x6778, 0x5965, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5157, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x7324, 0x0000, 0x0000, 0x0000, 0x5158, 0x7c63, + 0x7a58, 0x0000, 0x7355, 0x0000, 0x4f2b, 0x0000, 0x0000, 0x6b73 +}; + +static unsigned short ksc5601_from_unicode_62[] = { + 0x557c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5354, + 0x4d7c, 0x0000, 0x5966, 0x0000, 0x6279, 0x6221, 0x6b54, 0x0000, + 0x6077, 0x6432, 0x4c7c, 0x0000, 0x0000, 0x0000, 0x7b64, 0x0000, + 0x0000, 0x0000, 0x742b, 0x0000, 0x0000, 0x0000, 0x0000, 0x503d, + 0x0000, 0x4a71, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6f38, 0x0000, 0x0000, 0x0000, 0x5740, 0x0000, + 0x6e7a, 0x7d74, 0x0000, 0x0000, 0x5363, 0x0000, 0x7b42, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5568, 0x5b2e, + 0x6136, 0x7837, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x603f, + 0x7b43, 0x5d6a, 0x0000, 0x6222, 0x0000, 0x6e26, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x7668, 0x0000, 0x0000, 0x0000, 0x0000, + 0x7675, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5d4a, 0x0000, + 0x0000, 0x5062, 0x0000, 0x0000, 0x0000, 0x0000, 0x5d26, 0x0000, + 0x0000, 0x5d6b, 0x0000, 0x0000, 0x6479, 0x0000, 0x0000, 0x632f, + 0x507c, 0x0000, 0x0000, 0x0000, 0x747c, 0x0000, 0x0000, 0x0000, + 0x0000, 0x4c3c, 0x776a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6564, 0x5f71, 0x0000, 0x0000, 0x7761, 0x0000, 0x7977, + 0x6f39, 0x0000, 0x0000, 0x7858, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x7929, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7859, 0x0000, 0x0000, 0x0000, 0x6e3d, 0x0000, 0x0000, + 0x0000, 0x5846, 0x0000, 0x0000, 0x6463, 0x754e, 0x0000, 0x0000, + 0x0000, 0x0000, 0x5d59, 0x0000, 0x0000, 0x0000, 0x0000, 0x5967, + 0x5239, 0x517e, 0x0000, 0x0000, 0x5a65, 0x5a50, 0x0000, 0x5159, + 0x4e58, 0x0000, 0x4b5e, 0x742c, 0x5a7b, 0x0000, 0x7669, 0x6873, + 0x4f2c, 0x7070, 0x0000, 0x747d, 0x5b48, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4e40, 0x6354, 0x514f, 0x7175, + 0x0000, 0x4d72, 0x0000, 0x4f6b, 0x0000, 0x0000, 0x0000, 0x4d38, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6326, 0x515a +}; + +static unsigned short ksc5601_from_unicode_63[] = { + 0x0000, 0x7225, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7226, + 0x0000, 0x644e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x537b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x7129, 0x0000, 0x0000, 0x0000, 0x7249, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6f58, 0x6649, 0x0000, 0x5838, 0x7a73, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7335, 0x0000, 0x0000, 0x7824, 0x0000, 0x0000, 0x5173, + 0x6648, 0x0000, 0x0000, 0x0000, 0x0000, 0x785a, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5c69, + 0x5e57, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4b5f, 0x0000, + 0x0000, 0x0000, 0x4f6c, 0x0000, 0x0000, 0x0000, 0x0000, 0x745f, + 0x0000, 0x0000, 0x5174, 0x523a, 0x0000, 0x0000, 0x0000, 0x5f72, + 0x0000, 0x0000, 0x0000, 0x6137, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6223, 0x537c, 0x0000, 0x0000, 0x6d66, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x5b49, 0x0000, 0x0000, 0x0000, 0x647a, 0x0000, + 0x4f5e, 0x0000, 0x0000, 0x4e50, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5553, 0x7375, 0x772e, 0x0000, 0x0000, 0x6f48, 0x0000, 0x4d73, + 0x754f, 0x6573, 0x7042, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4a51, 0x0000, 0x0000, 0x0000, 0x6a71, 0x0000, 0x5026, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x595a, + 0x702b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6b67, 0x0000, + 0x0000, 0x0000, 0x6540, 0x7c35, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6444, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4c29, 0x7d46, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x6a35, 0x0000, 0x652a, 0x5f3a, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_64[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x615f, 0x0000, 0x5a51, + 0x0000, 0x0000, 0x0000, 0x0000, 0x6138, 0x0000, 0x6874, 0x537d, + 0x0000, 0x0000, 0x0000, 0x0000, 0x6224, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x724a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x5a66, 0x7733, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x7d4d, 0x0000, 0x0000, 0x0000, 0x7336, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6e57, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x7544, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5824, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7227, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5938, 0x5939, 0x6f49, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x564e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x774b, 0x5f2e, 0x6875, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x5235, 0x0000, 0x0000, 0x0000, 0x5355, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x744c, 0x5a7c, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x5968, 0x0000, 0x776b, 0x7549, 0x0000, + 0x733c, 0x0000, 0x5a52, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x5335, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6836, 0x0000, 0x0000, 0x5242, 0x743a, 0x0000, 0x7749, + 0x0000, 0x0000, 0x4c2a, 0x0000, 0x0000, 0x7043, 0x4c56, 0x0000, + 0x0000, 0x0000, 0x5053, 0x0000, 0x533d, 0x0000, 0x0000, 0x0000, + 0x5b7b, 0x0000, 0x4b60, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5364, 0x7677, 0x0000, 0x0000, 0x553a, 0x734d, 0x4b61, + 0x0000, 0x0000, 0x0000, 0x0000, 0x6b74, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x742d, 0x0000, 0x7c2a, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x776c, 0x0000, 0x0000, 0x0000, 0x6876, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_65[] = { + 0x5a67, 0x0000, 0x0000, 0x0000, 0x774c, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6541, 0x0000, 0x0000, 0x0000, 0x0000, 0x606e, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x557d, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x4e66, 0x7c2b, 0x553b, 0x0000, 0x0000, 0x7228, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6225, 0x4d39, + 0x6a72, 0x4b47, 0x0000, 0x4d74, 0x0000, 0x0000, 0x5b2f, 0x6f59, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4d3a, 0x0000, 0x0000, + 0x7c79, 0x0000, 0x0000, 0x0000, 0x0000, 0x5f73, 0x4e67, 0x5a42, + 0x0000, 0x4f2d, 0x0000, 0x0000, 0x0000, 0x0000, 0x6779, 0x7828, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7362, 0x0000, + 0x0000, 0x0000, 0x4a72, 0x5f24, 0x0000, 0x0000, 0x5444, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4c57, 0x6542, 0x0000, 0x0000, + 0x0000, 0x0000, 0x4d3b, 0x0000, 0x6f5a, 0x6e58, 0x0000, 0x5d27, + 0x5e7c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6040, 0x0000, + 0x0000, 0x0000, 0x5630, 0x784a, 0x0000, 0x7c7a, 0x0000, 0x597e, + 0x0000, 0x0000, 0x0000, 0x0000, 0x5e30, 0x0000, 0x0000, 0x0000, + 0x5d6c, 0x5a68, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5460, + 0x0000, 0x5679, 0x0000, 0x4d57, 0x5e58, 0x0000, 0x0000, 0x7278, + 0x0000, 0x6456, 0x0000, 0x0000, 0x5045, 0x742e, 0x0000, 0x5d28, + 0x0000, 0x0000, 0x0000, 0x6d45, 0x7356, 0x0000, 0x0000, 0x5e59, + 0x6366, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5328, + 0x0000, 0x5b30, 0x0000, 0x0000, 0x655a, 0x633f, 0x0000, 0x0000, + 0x0000, 0x5b31, 0x0000, 0x0000, 0x0000, 0x5569, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x6041, 0x6f5b, 0x0000, 0x0000, 0x7069, + 0x0000, 0x0000, 0x5732, 0x0000, 0x0000, 0x0000, 0x0000, 0x507d, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5969, 0x0000, 0x0000, 0x507e, 0x0000, 0x6c6d, 0x5329, 0x0000, + 0x7229, 0x7044, 0x0000, 0x0000, 0x6262, 0x696f, 0x0000, 0x0000, + 0x0000, 0x7951, 0x0000, 0x0000, 0x6959, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x685a, 0x5a43, 0x5a44, 0x5445, 0x0000, 0x677a +}; + +static unsigned short ksc5601_from_unicode_66[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4d60, 0x6330, + 0x0000, 0x5b32, 0x7b44, 0x0000, 0x7363, 0x0000, 0x5925, 0x7b67, + 0x5d4b, 0x5054, 0x0000, 0x6636, 0x602e, 0x7d5a, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5c35, 0x6078, + 0x6731, 0x0000, 0x0000, 0x0000, 0x0000, 0x7570, 0x0000, 0x585c, + 0x6d46, 0x0000, 0x0000, 0x0000, 0x0000, 0x6139, 0x0000, 0x6340, + 0x7940, 0x6970, 0x0000, 0x0000, 0x595b, 0x0000, 0x7364, 0x0000, + 0x0000, 0x0000, 0x5c36, 0x6469, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7045, 0x6341, 0x7c4c, 0x7c4d, 0x0000, 0x0000, 0x0000, + 0x0000, 0x724b, 0x0000, 0x724c, 0x0000, 0x0000, 0x0000, 0x644f, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x715b, 0x0000, 0x7a59, 0x0000, 0x7138, 0x7d75, 0x6079, + 0x0000, 0x0000, 0x0000, 0x0000, 0x677b, 0x7c37, 0x7c64, 0x7b45, + 0x6367, 0x5839, 0x0000, 0x7678, 0x0000, 0x0000, 0x5c45, 0x4c58, + 0x0000, 0x0000, 0x0000, 0x602f, 0x7467, 0x0000, 0x6f5c, 0x4f7c, + 0x6f5d, 0x0000, 0x722a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x7d3e, 0x0000, 0x0000, 0x4a2c, + 0x6977, 0x7d47, 0x0000, 0x0000, 0x0000, 0x0000, 0x6732, 0x0000, + 0x6a51, 0x5f74, 0x0000, 0x0000, 0x0000, 0x0000, 0x516c, 0x645e, + 0x6543, 0x0000, 0x0000, 0x0000, 0x0000, 0x5926, 0x0000, 0x0000, + 0x4d3c, 0x0000, 0x7365, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x6d55, 0x0000, 0x0000, 0x593a, 0x0000, + 0x0000, 0x0000, 0x6d67, 0x7b35, 0x785b, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6067, 0x0000, 0x4c59, 0x0000, 0x0000, 0x5446, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x6725, 0x0000, 0x5575, 0x533e, + 0x0000, 0x7c7b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6472, 0x0000, + 0x0000, 0x5f75, 0x0000, 0x0000, 0x6878, 0x786d, 0x0000, 0x0000, + 0x4e47, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7d76, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6858, 0x0000, 0x4d58, 0x6756, 0x4b56, 0x0000, 0x0000, 0x4a63, + 0x5f76, 0x7047, 0x7046, 0x0000, 0x583a, 0x0000, 0x7174, 0x7470 +}; + +static unsigned short ksc5601_from_unicode_67[] = { + 0x754c, 0x0000, 0x0000, 0x7c65, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6a45, 0x6a73, 0x0000, 0x5d5b, 0x0000, 0x5c57, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x5e7d, 0x7279, 0x0000, 0x5228, + 0x0000, 0x0000, 0x0000, 0x5850, 0x0000, 0x7048, 0x5121, 0x5122, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5954, 0x5668, + 0x594a, 0x0000, 0x5a31, 0x5847, 0x5c62, 0x734e, 0x7574, 0x0000, + 0x0000, 0x7139, 0x0000, 0x0000, 0x5a53, 0x0000, 0x766a, 0x0000, + 0x0000, 0x0000, 0x4f75, 0x0000, 0x0000, 0x7d2e, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4a52, 0x0000, + 0x0000, 0x5f34, 0x0000, 0x0000, 0x0000, 0x0000, 0x575d, 0x7a3a, + 0x6e27, 0x753d, 0x0000, 0x7875, 0x0000, 0x0000, 0x6d68, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x5461, 0x0000, 0x5123, 0x6156, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7978, 0x0000, 0x5b4a, + 0x4b79, 0x5454, 0x0000, 0x595c, 0x0000, 0x6e3e, 0x0000, 0x776d, + 0x0000, 0x0000, 0x0000, 0x526e, 0x0000, 0x0000, 0x6166, 0x7779, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5d6d, + 0x0000, 0x685b, 0x0000, 0x5b33, 0x0000, 0x0000, 0x0000, 0x5177, + 0x6030, 0x0000, 0x0000, 0x5462, 0x0000, 0x7657, 0x0000, 0x5779, + 0x0000, 0x0000, 0x585d, 0x0000, 0x4d7d, 0x722b, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4d3d, + 0x7842, 0x0000, 0x0000, 0x722c, 0x0000, 0x0000, 0x4a2d, 0x4a2e, + 0x4f2e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6342, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x5c37, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5b5a, + 0x593b, 0x4a73, 0x7653, 0x6678, 0x6a75, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6a76, 0x0000, 0x0000, 0x7679, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x4f2f, 0x0000, 0x0000, 0x4a53, 0x0000, 0x0000, 0x4a2f, + 0x5230, 0x713a, 0x0000, 0x5733, 0x6343, 0x737d, 0x5e5a, 0x0000, + 0x0000, 0x0000, 0x0000, 0x5e5b, 0x0000, 0x0000, 0x6f5e, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_68[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6263, 0x6e7b, 0x0000, 0x0000, 0x5f77, 0x574a, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x4e68, 0x5b5b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x713b, 0x0000, 0x0000, 0x0000, 0x0000, 0x6971, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x7a37, 0x5046, 0x0000, 0x0000, 0x4c2b, 0x6e28, 0x0000, 0x0000, + 0x4b7a, 0x7979, 0x4c7d, 0x537e, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6450, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x726e, 0x0000, + 0x5455, 0x5f4d, 0x0000, 0x7c38, 0x5150, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x724d, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7752, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4a54, + 0x0000, 0x5559, 0x0000, 0x0000, 0x0000, 0x585e, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4d59, + 0x0000, 0x0000, 0x0000, 0x6e29, 0x763c, 0x0000, 0x0000, 0x4c5b, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7049, 0x0000, 0x7c7c, + 0x0000, 0x6849, 0x747e, 0x0000, 0x0000, 0x0000, 0x0000, 0x677c, + 0x575e, 0x0000, 0x0000, 0x0000, 0x0000, 0x5e5c, 0x0000, 0x702c, + 0x4c7e, 0x4d61, 0x0000, 0x613a, 0x0000, 0x5b6f, 0x5a32, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x5125, 0x5c38, 0x0000, 0x0000, + 0x0000, 0x5876, 0x0000, 0x5124, 0x0000, 0x4d62, 0x0000, 0x0000, + 0x0000, 0x0000, 0x5c6a, 0x0000, 0x0000, 0x7077, 0x0000, 0x704a, + 0x503e, 0x0000, 0x5d5c, 0x0000, 0x0000, 0x0000, 0x0000, 0x5456, + 0x5356, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6d50, + 0x4d21, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5f35, 0x0000, + 0x0000, 0x0000, 0x5f78, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5421, 0x4e32, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_69[] = { + 0x684a, 0x0000, 0x0000, 0x0000, 0x0000, 0x6b75, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6355, 0x7550, 0x0000, + 0x0000, 0x0000, 0x7521, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5927, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x652b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x664b, 0x0000, 0x7571, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6545, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x7923, 0x605b, 0x766b, 0x0000, 0x4b71, + 0x0000, 0x596a, 0x7522, 0x0000, 0x0000, 0x0000, 0x5751, 0x0000, + 0x5178, 0x6a78, 0x6a79, 0x5a33, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6f5f, 0x0000, 0x0000, 0x716f, 0x0000, 0x6576, 0x6e3f, 0x6264, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x503f, 0x0000, 0x7a2c, + 0x7551, 0x6733, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x693e, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x724e, 0x5b34, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7c4e, 0x0000, 0x5d6e, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6734, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x5734, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x7734, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x4d3e, 0x0000, 0x5a69, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x4f30, 0x7759, 0x7366, 0x0000, 0x0000, + 0x4e59, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4e2a, 0x0000, 0x4b48, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x5027, 0x0000, 0x704b, 0x0000, 0x5047 +}; + +static unsigned short ksc5601_from_unicode_6a[] = { + 0x0000, 0x0000, 0x5162, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x5b60, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x555a, 0x0000, 0x5266, 0x0000, 0x0000, 0x0000, 0x6e40, + 0x0000, 0x7876, 0x0000, 0x0000, 0x0000, 0x0000, 0x7552, 0x6d69, + 0x0000, 0x593c, 0x0000, 0x6546, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7523, 0x0000, 0x0000, + 0x5a54, 0x6227, 0x7b7c, 0x0000, 0x0000, 0x715c, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4a74, 0x0000, 0x0000, 0x0000, + 0x687a, 0x0000, 0x0000, 0x4e69, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6978, 0x6265, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5039, 0x5472, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5126, + 0x0000, 0x5f4e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x7c74, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x532a, 0x0000, 0x0000, 0x0000, 0x4c2c, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6f60, 0x0000, 0x0000, 0x0000, 0x6565, 0x5055, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5b7c, + 0x0000, 0x0000, 0x0000, 0x0000, 0x7c66, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x4b7e, 0x6d6a, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x5e31, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x7963, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x5422, 0x4f76, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x5243, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x556a, 0x716e, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7a4b, 0x0000, + 0x0000, 0x0000, 0x0000, 0x6521, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_6b[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x516d, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x4f6d, 0x0000, 0x6d6b, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x5532, 0x0000, 0x0000, 0x0000, 0x553c, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x7d62, 0x732d, 0x0000, 0x7d5b, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6930, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x5127, 0x0000, 0x0000, 0x7d63, 0x4e33, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7d64, 0x7a4e, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4a30, 0x0000, 0x7727, 0x0000, + 0x4f31, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6622, + 0x0000, 0x7c36, 0x722d, 0x6f61, 0x732e, 0x5c46, 0x596b, 0x0000, + 0x0000, 0x0000, 0x6860, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6128, 0x0000, 0x0000, 0x0000, 0x0000, 0x5576, + 0x4f7d, 0x0000, 0x0000, 0x5e5d, 0x0000, 0x0000, 0x0000, 0x5951, + 0x0000, 0x0000, 0x0000, 0x646a, 0x724f, 0x0000, 0x773f, 0x0000, + 0x0000, 0x6266, 0x6228, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6356, 0x0000, + 0x6d51, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6979, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5631, 0x5e32, + 0x0000, 0x0000, 0x6068, 0x0000, 0x0000, 0x532b, 0x0000, 0x6b5c, + 0x0000, 0x0000, 0x5f2f, 0x0000, 0x4a43, 0x0000, 0x0000, 0x6e7c, + 0x0000, 0x7d43, 0x0000, 0x0000, 0x0000, 0x6b76, 0x4f32, 0x0000, + 0x0000, 0x0000, 0x0000, 0x596c, 0x0000, 0x593d, 0x0000, 0x585f, + 0x0000, 0x0000, 0x5438, 0x6b3e, 0x5d6f, 0x0000, 0x5d70, 0x5d71, + 0x5d72, 0x0000, 0x0000, 0x593e, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x7b46, 0x4f33, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_6c[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6e7d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x642b, + 0x0000, 0x5a45, 0x0000, 0x586c, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x5128, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x6229, 0x0000, 0x0000, 0x5e3c, + 0x6735, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5b70, 0x0000, + 0x6f62, 0x7170, 0x4f34, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5b71, 0x0000, + 0x6031, 0x0000, 0x0000, 0x0000, 0x0000, 0x5f25, 0x0000, 0x7952, + 0x0000, 0x0000, 0x677d, 0x0000, 0x0000, 0x6623, 0x7b71, 0x4b30, + 0x722e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4d67, 0x0000, 0x685c, 0x0000, 0x0000, 0x6757, 0x0000, 0x0000, + 0x7740, 0x0000, 0x5063, 0x0000, 0x0000, 0x0000, 0x5a21, 0x0000, + 0x0000, 0x0000, 0x4c3d, 0x0000, 0x0000, 0x5129, 0x5d4c, 0x0000, + 0x0000, 0x637e, 0x512a, 0x682a, 0x0000, 0x6a36, 0x797a, 0x664c, + 0x6421, 0x0000, 0x0000, 0x0000, 0x5447, 0x0000, 0x0000, 0x0000, + 0x594b, 0x0000, 0x5952, 0x534b, 0x5877, 0x5a29, 0x7578, 0x0000, + 0x0000, 0x5e5e, 0x722f, 0x7829, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x5848, 0x0000, 0x0000, 0x6e41, 0x0000, + 0x0000, 0x0000, 0x0000, 0x7941, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5d73, 0x6a7a, 0x0000, 0x763d, 0x613b, 0x4d3f, 0x7454, 0x664d, + 0x0000, 0x7c4f, 0x7b22, 0x0000, 0x605c, 0x0000, 0x0000, 0x0000, + 0x0000, 0x743b, 0x5a55, 0x0000, 0x5d74, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x7b72, 0x0000, 0x5b76, 0x0000, 0x5e5f, + 0x0000, 0x0000, 0x0000, 0x5b72, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x785c, 0x776e, 0x6b68, 0x0000, 0x527a, 0x0000, 0x0000, + 0x713c, 0x0000, 0x0000, 0x7a5a, 0x0000, 0x0000, 0x5a6a, 0x5a46, + 0x7741, 0x0000, 0x0000, 0x6736, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_6d[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x6547, 0x562c, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5c47, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6129, + 0x0000, 0x622a, 0x0000, 0x5163, 0x0000, 0x0000, 0x5457, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7250, 0x0000, 0x6a7b, + 0x0000, 0x605d, 0x7b73, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x713d, 0x0000, 0x0000, 0x6267, 0x7d57, 0x0000, + 0x4e48, 0x6a37, 0x0000, 0x7c40, 0x0000, 0x7d67, 0x776f, 0x0000, + 0x0000, 0x5735, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6f3a, 0x715d, 0x0000, 0x5e33, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x684b, 0x0000, 0x0000, 0x785d, 0x0000, + 0x0000, 0x7b47, 0x5229, 0x0000, 0x575f, 0x0000, 0x5d29, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x6931, 0x0000, 0x0000, 0x7a2d, + 0x7659, 0x7a74, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x782a, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x666e, 0x0000, 0x4c5c, + 0x613c, 0x606f, 0x0000, 0x0000, 0x693f, 0x7c7d, 0x664e, 0x0000, + 0x0000, 0x6157, 0x0000, 0x664f, 0x0000, 0x7471, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6473, + 0x0000, 0x0000, 0x647b, 0x0000, 0x0000, 0x7964, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6f63, 0x0000, 0x0000, 0x4f6e, 0x763e, 0x6032, 0x7c7e, 0x512b, + 0x0000, 0x0000, 0x0000, 0x577a, 0x0000, 0x0000, 0x0000, 0x7b48, + 0x0000, 0x6257, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5423, 0x7078, 0x5267, 0x0000, 0x0000, 0x0000, 0x6167, 0x0000, + 0x0000, 0x533f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6f64, 0x0000, 0x5745, 0x6b62, 0x0000, 0x0000, 0x7c67, 0x0000, + 0x0000, 0x6422, 0x0000, 0x6268, 0x0000, 0x6650, 0x0000, 0x7b68, + 0x7468, 0x6574, 0x743c, 0x7455, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_6e[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5f36, + 0x0000, 0x7c39, 0x6e42, 0x4a75, 0x0000, 0x0000, 0x0000, 0x6f65, + 0x4b62, 0x5424, 0x0000, 0x5e60, 0x5a7d, 0x6446, 0x683e, 0x0000, + 0x0000, 0x0000, 0x0000, 0x605e, 0x7634, 0x6a52, 0x0000, 0x797b, + 0x0000, 0x0000, 0x6042, 0x0000, 0x4a64, 0x0000, 0x6737, 0x0000, + 0x6a7d, 0x0000, 0x595d, 0x0000, 0x5a34, 0x6e2a, 0x7b69, 0x0000, + 0x0000, 0x0000, 0x0000, 0x5b4b, 0x5a35, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x713e, 0x0000, 0x0000, 0x532c, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7b49, 0x0000, + 0x5f4f, 0x0000, 0x0000, 0x5340, 0x6357, 0x0000, 0x6f66, 0x7c50, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6940, + 0x0000, 0x0000, 0x0000, 0x7553, 0x0000, 0x0000, 0x6c5c, 0x7737, + 0x0000, 0x0000, 0x6a38, 0x5179, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x5c48, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6a39, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x715e, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x5736, 0x4f35, 0x0000, 0x5928, + 0x0000, 0x0000, 0x6c6e, 0x0000, 0x0000, 0x5d2a, 0x0000, 0x0000, + 0x0000, 0x0000, 0x4d22, 0x682e, 0x0000, 0x0000, 0x0000, 0x613d, + 0x0000, 0x7251, 0x0000, 0x0000, 0x0000, 0x0000, 0x6941, 0x0000, + 0x0000, 0x0000, 0x527c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x5b35, 0x0000, 0x7367, 0x587e, 0x0000, 0x0000, + 0x0000, 0x7c51, 0x0000, 0x6d32, 0x742f, 0x0000, 0x7b23, 0x0000, + 0x0000, 0x7c41, 0x0000, 0x6e2b, 0x5425, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7472, + 0x0000, 0x0000, 0x0000, 0x0000, 0x6e59, 0x0000, 0x0000, 0x0000, + 0x7b4a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4d63, 0x583b +}; + +static unsigned short ksc5601_from_unicode_6f[] = { + 0x0000, 0x655b, 0x7877, 0x0000, 0x0000, 0x0000, 0x7654, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5268, + 0x0000, 0x4b49, 0x0000, 0x0000, 0x6651, 0x704c, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x582e, 0x0000, 0x7953, 0x557e, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x583c, 0x7230, 0x0000, 0x0000, 0x0000, + 0x0000, 0x622b, 0x7368, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6f42, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6d6c, + 0x0000, 0x6738, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5a7e, 0x0000, 0x0000, 0x4c3e, 0x0000, 0x0000, 0x727c, + 0x5a6b, 0x0000, 0x6258, 0x6d56, 0x0000, 0x0000, 0x5651, 0x6033, + 0x0000, 0x0000, 0x7c52, 0x0000, 0x6b48, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5341, 0x704d, 0x0000, + 0x4f77, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6d52, 0x0000, 0x5458, 0x5c49, 0x5771, 0x0000, + 0x0000, 0x5f3b, 0x0000, 0x0000, 0x7325, 0x0000, 0x0000, 0x0000, + 0x744d, 0x0000, 0x0000, 0x0000, 0x0000, 0x713f, 0x7831, 0x0000, + 0x697a, 0x0000, 0x0000, 0x0000, 0x7b4b, 0x0000, 0x0000, 0x4a55, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x7954, 0x774a, 0x0000, 0x0000, 0x5648, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7c68, 0x733d, + 0x0000, 0x6e7e, 0x0000, 0x677e, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5342, 0x0000, 0x0000, 0x0000, 0x0000, 0x5336, 0x0000, + 0x4c2d, 0x767a, 0x5632, 0x5258, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6758, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6325, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6739, 0x0000, 0x0000, 0x0000, 0x0000, 0x702d, + 0x7b4c, 0x6b21, 0x0000, 0x0000, 0x5426, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7b4d, 0x0000, 0x517a, 0x715f, 0x0000, 0x0000, 0x767b, + 0x0000, 0x5e34, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x556b, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_70[] = { + 0x0000, 0x6548, 0x0000, 0x0000, 0x0000, 0x7b24, 0x5439, 0x0000, + 0x0000, 0x5e61, 0x0000, 0x6423, 0x0000, 0x0000, 0x0000, 0x5737, + 0x0000, 0x786e, 0x0000, 0x0000, 0x0000, 0x5e35, 0x0000, 0x0000, + 0x5652, 0x0000, 0x7955, 0x673a, 0x6b55, 0x5577, 0x6f67, 0x613e, + 0x0000, 0x0000, 0x0000, 0x7a2e, 0x0000, 0x0000, 0x0000, 0x5669, + 0x566e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x673b, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6c4b, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5533, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4e34, 0x0000, 0x0000, 0x0000, + 0x7b25, 0x616e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x7728, 0x0000, 0x0000, 0x0000, 0x0000, 0x7b4e, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x583d, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x7b7d, 0x0000, 0x0000, 0x0000, 0x0000, + 0x7c69, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4f36, 0x0000, 0x0000, 0x0000, 0x6d47, 0x6e2c, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4c5d, 0x0000, 0x0000, + 0x0000, 0x0000, 0x7627, 0x0000, 0x0000, 0x0000, 0x667a, 0x0000, + 0x0000, 0x0000, 0x7524, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x7d5c, 0x6d33, 0x4e49, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6f68, 0x0000, 0x0000, 0x613f, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x7a5b, 0x4b63, 0x7729, 0x0000, 0x7b26, + 0x0000, 0x0000, 0x0000, 0x5c39, 0x0000, 0x0000, 0x0000, 0x7140, + 0x6d48, 0x6f43, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x562d, 0x0000, 0x0000, 0x7d4e, 0x0000, 0x0000, 0x0000, 0x6821, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x7b74, 0x5164, 0x0000, 0x0000, 0x0000, 0x7176, 0x0000, 0x6653, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x4c5e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7832, 0x0000, 0x0000, 0x0000, 0x5c6b, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_71[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x7d36, 0x0000, 0x0000, 0x0000, + 0x0000, 0x656a, 0x0000, 0x0000, 0x7160, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5b4c, 0x5d4d, 0x0000, 0x0000, 0x0000, 0x5448, 0x0000, + 0x0000, 0x596d, 0x0000, 0x0000, 0x0000, 0x0000, 0x7525, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x667b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6654, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7d48, + 0x0000, 0x5621, 0x7d3f, 0x0000, 0x7c53, 0x0000, 0x6f21, 0x0000, + 0x673c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x516e, 0x0000, + 0x0000, 0x6655, 0x0000, 0x0000, 0x6972, 0x0000, 0x5f30, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x5860, 0x7c3a, 0x7d2f, 0x704e, + 0x0000, 0x5b61, 0x0000, 0x0000, 0x6549, 0x0000, 0x6d34, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6043, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x6358, 0x0000, 0x0000, 0x0000, + 0x0000, 0x697b, 0x6a28, 0x0000, 0x0000, 0x0000, 0x0000, 0x7d37, + 0x0000, 0x0000, 0x7b27, 0x0000, 0x6942, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7d77, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6259, + 0x0000, 0x0000, 0x5c6c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x6822, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6670, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7d78, 0x7d79, 0x0000, 0x0000, 0x0000, 0x763f, 0x0000, + 0x0000, 0x6727, 0x0000, 0x6657, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5473, 0x5449, 0x0000, 0x0000, 0x0000, 0x0000, 0x567a, 0x0000, + 0x5772, 0x0000, 0x6140, 0x0000, 0x5b62, 0x6658, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x673d, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x704f, 0x733e, 0x622c, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7537, 0x6070, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x7d38, 0x6368, 0x0000, 0x5427, 0x687c +}; + +static unsigned short ksc5601_from_unicode_72[] = { + 0x7a52, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x786f, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5244, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x516f, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x7050, 0x0000, 0x7770, 0x6e33, 0x0000, 0x0000, + 0x6a3a, 0x0000, 0x6a53, 0x0000, 0x0000, 0x6d49, 0x5d2b, 0x0000, + 0x0000, 0x0000, 0x652c, 0x7d21, 0x0000, 0x5f50, 0x6c33, 0x0000, + 0x5f51, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6d6d, 0x7838, + 0x777a, 0x0000, 0x0000, 0x0000, 0x782b, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x7460, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x543a, 0x6433, 0x0000, 0x695a, 0x0000, 0x5e36, 0x0000, 0x593f, + 0x0000, 0x5940, 0x525e, 0x0000, 0x0000, 0x0000, 0x0000, 0x594c, + 0x0000, 0x5a2a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x5f65, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7765, 0x0000, 0x0000, 0x0000, 0x4c32, 0x0000, 0x0000, + 0x5f79, 0x5760, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x543b, 0x0000, 0x0000, 0x0000, 0x0000, 0x7d7a, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4c33, 0x0000, 0x0000, 0x5b73, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5f52, 0x0000, 0x4e4a, 0x0000, 0x6e5a, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6464, 0x0000, + 0x7b4f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4f37, + 0x0000, 0x6e43, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x4e6a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x622d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5761, 0x7a75, 0x0000, 0x0000, 0x522a, 0x782c, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_73[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6759, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7369, 0x0000, + 0x0000, 0x0000, 0x0000, 0x586d, 0x6344, 0x7071, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6865, 0x0000, 0x0000, + 0x0000, 0x607a, 0x6e44, 0x595e, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6b22, 0x6b23, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7c42, 0x6a3b, + 0x0000, 0x0000, 0x0000, 0x0000, 0x682b, 0x5e62, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6d6f, 0x0000, 0x6823, 0x0000, 0x0000, 0x0000, 0x0000, 0x4f71, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x543c, 0x0000, 0x7c6a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x673e, 0x0000, 0x7c72, 0x0000, 0x0000, 0x5634, 0x0000, 0x0000, + 0x622e, 0x0000, 0x5337, 0x7a4c, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x7a5c, 0x0000, 0x6d35, 0x574b, + 0x0000, 0x682c, 0x0000, 0x685d, 0x0000, 0x0000, 0x6f69, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x743d, 0x0000, 0x4f38, 0x695b, + 0x512c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5a47, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6b49, + 0x0000, 0x684c, 0x0000, 0x0000, 0x0000, 0x5e37, 0x0000, 0x0000, + 0x0000, 0x0000, 0x563c, 0x5365, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7a5d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5a56, 0x0000, 0x4a31, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5a48, 0x5f26, 0x0000, 0x7933, 0x7252, 0x0000, 0x4a44, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4e4b, 0x0000, + 0x0000, 0x4d75, 0x0000, 0x0000, 0x0000, 0x7d30, 0x5165, 0x0000, + 0x7141, 0x0000, 0x0000, 0x6269, 0x5c4a, 0x6c34, 0x7a40, 0x0000, + 0x0000, 0x7b28, 0x5028, 0x0000, 0x0000, 0x5a6c, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x596e, + 0x0000, 0x607b, 0x0000, 0x0000, 0x0000, 0x6f6a, 0x7a5e, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_74[] = { + 0x0000, 0x6044, 0x0000, 0x4f39, 0x0000, 0x554a, 0x5762, 0x622f, + 0x0000, 0x5738, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x684d, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x765a, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6f22, 0x625a, 0x767c, 0x0000, 0x0000, 0x7b50, 0x512d, 0x0000, + 0x4d64, 0x0000, 0x512e, 0x5c6d, 0x684e, 0x0000, 0x7079, 0x4e35, + 0x667c, 0x0000, 0x0000, 0x577b, 0x5056, 0x5d75, 0x7771, 0x0000, + 0x767d, 0x0000, 0x5b77, 0x0000, 0x0000, 0x0000, 0x0000, 0x7b6a, + 0x695c, 0x5941, 0x0000, 0x7572, 0x6045, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x6a54, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7942, 0x0000, 0x6a3c, + 0x0000, 0x5245, 0x7b51, 0x6740, 0x6b25, 0x0000, 0x5f7a, 0x6322, + 0x5739, 0x0000, 0x6943, 0x0000, 0x687d, 0x682f, 0x0000, 0x0000, + 0x7253, 0x6741, 0x5825, 0x0000, 0x0000, 0x0000, 0x0000, 0x554b, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5048, 0x0000, + 0x0000, 0x0000, 0x512f, 0x5763, 0x0000, 0x0000, 0x0000, 0x6046, + 0x0000, 0x5622, 0x0000, 0x6d70, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5773, 0x0000, 0x0000, 0x0000, 0x7c54, 0x0000, 0x5a57, 0x4c5f, + 0x0000, 0x7254, 0x0000, 0x5130, 0x0000, 0x4c60, 0x0000, 0x5b7d, + 0x733f, 0x0000, 0x7051, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x7c3b, 0x0000, 0x6230, 0x0000, 0x0000, 0x6625, 0x0000, 0x0000, + 0x0000, 0x625b, 0x0000, 0x0000, 0x0000, 0x5f5e, 0x0000, 0x6047, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x726f, 0x0000, + 0x0000, 0x0000, 0x4c61, 0x0000, 0x0000, 0x0000, 0x0000, 0x566a, + 0x0000, 0x0000, 0x0000, 0x0000, 0x6742, 0x0000, 0x0000, 0x0000, + 0x4e36, 0x0000, 0x7340, 0x0000, 0x4d7e, 0x0000, 0x0000, 0x0000, + 0x7b52, 0x0000, 0x7878, 0x777b, 0x0000, 0x0000, 0x683f, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6837, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6d36, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_75[] = { + 0x0000, 0x5c3a, 0x0000, 0x0000, 0x4c34, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7177, 0x0000, 0x0000, 0x0000, 0x6838, 0x0000, 0x0000, + 0x4a76, 0x0000, 0x6424, 0x7456, 0x0000, 0x0000, 0x0000, 0x5f66, + 0x0000, 0x0000, 0x0000, 0x5f27, 0x0000, 0x5f67, 0x6141, 0x0000, + 0x6944, 0x0000, 0x0000, 0x5c4b, 0x6945, 0x0000, 0x0000, 0x0000, + 0x6f23, 0x6b26, 0x4b23, 0x6369, 0x0000, 0x0000, 0x0000, 0x517b, + 0x6f24, 0x0000, 0x6f6b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5034, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4d23, 0x0000, 0x0000, 0x6866, + 0x0000, 0x6f25, 0x0000, 0x534c, 0x5a6d, 0x0000, 0x0000, 0x0000, + 0x0000, 0x573a, 0x0000, 0x7255, 0x7565, 0x596f, 0x0000, 0x0000, + 0x0000, 0x0000, 0x7934, 0x0000, 0x0000, 0x5554, 0x7d4f, 0x0000, + 0x0000, 0x0000, 0x5b63, 0x0000, 0x0000, 0x0000, 0x0000, 0x7161, + 0x5764, 0x0000, 0x0000, 0x0000, 0x0000, 0x7b7e, 0x5357, 0x0000, + 0x5131, 0x0000, 0x4b31, 0x0000, 0x0000, 0x0000, 0x0000, 0x5132, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4b32, 0x7142, + 0x0000, 0x0000, 0x7461, 0x7935, 0x0000, 0x0000, 0x6143, 0x6142, + 0x0000, 0x6b77, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5f28, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4b4a, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x6639, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x785e, 0x792a, 0x4a77, 0x0000, 0x6d37, 0x0000, 0x0000, + 0x5338, 0x7256, 0x0000, 0x0000, 0x5459, 0x6e45, 0x7270, 0x0000, + 0x0000, 0x0000, 0x4a32, 0x0000, 0x0000, 0x5c3b, 0x0000, 0x7178, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6c37, 0x0000, 0x0000, + 0x0000, 0x0000, 0x654a, 0x0000, 0x7640, 0x7d5d, 0x0000, 0x0000, + 0x5463, 0x4c62, 0x0000, 0x7754, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x5765, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5343, 0x0000, 0x5826, 0x0000, 0x7641, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x5d76, 0x0000, 0x4d40, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_76[] = { + 0x655c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x654b, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6144, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6830, + 0x7430, 0x736a, 0x5a6e, 0x0000, 0x573b, 0x0000, 0x6231, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x572a, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x567b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x645f, 0x0000, 0x4a56, 0x0000, + 0x0000, 0x0000, 0x6b28, 0x0000, 0x0000, 0x0000, 0x5b7e, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7642, 0x0000, 0x0000, 0x6f3b, 0x0000, 0x0000, 0x0000, + 0x0000, 0x515b, 0x0000, 0x0000, 0x6048, 0x0000, 0x0000, 0x0000, + 0x6839, 0x0000, 0x6f26, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4d24, 0x0000, 0x0000, 0x5474, 0x5b21, 0x5b5c, 0x5b5d, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x6e5c, 0x0000, 0x4b4b, 0x7c55, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4e6b, 0x0000, + 0x4d41, 0x0000, 0x0000, 0x7b53, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x792b, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x7554, 0x0000, 0x0000, 0x0000, 0x0000, 0x5929, + 0x0000, 0x0000, 0x695d, 0x5b4d, 0x0000, 0x0000, 0x5d4e, 0x0000, + 0x6743, 0x0000, 0x6c4c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x796c, 0x0000, 0x0000, 0x0000, 0x4b4c, 0x0000, + 0x0000, 0x0000, 0x0000, 0x607c, 0x5428, 0x0000, 0x6d53, 0x586f, + 0x0000, 0x7257, 0x0000, 0x4a78, 0x5a6f, 0x0000, 0x0000, 0x5246, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x594d, 0x0000, + 0x0000, 0x0000, 0x586e, 0x0000, 0x7241, 0x0000, 0x0000, 0x0000, + 0x5f53, 0x0000, 0x0000, 0x0000, 0x5a70, 0x0000, 0x626a, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_77[] = { + 0x0000, 0x5f68, 0x0000, 0x0000, 0x5878, 0x0000, 0x0000, 0x0000, + 0x772f, 0x5a36, 0x0000, 0x4a57, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7258, 0x0000, + 0x5879, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7a5f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4f6f, + 0x5942, 0x0000, 0x7052, 0x0000, 0x6451, 0x0000, 0x0000, 0x0000, + 0x7337, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7a60, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x6f6c, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6232, 0x0000, 0x543d, 0x0000, 0x0000, 0x594e, 0x0000, + 0x0000, 0x0000, 0x0000, 0x7462, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5429, 0x0000, 0x0000, 0x0000, 0x0000, 0x4d42, 0x675a, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x7259, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x592a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x583e, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5c2d, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x626b, 0x567c, 0x0000, 0x0000, + 0x4a79, 0x0000, 0x0000, 0x545a, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x7457, 0x4c21, 0x0000, 0x0000, 0x4f3a, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7538, + 0x0000, 0x0000, 0x0000, 0x5943, 0x5068, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6345, 0x6b78, 0x0000, 0x7231, 0x0000, 0x0000, + 0x0000, 0x4f3b, 0x0000, 0x0000, 0x0000, 0x532d, 0x6861, 0x4e6c, + 0x0000, 0x0000, 0x0000, 0x6034, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_78[] = { + 0x0000, 0x0000, 0x5e63, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x5d77, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7232, 0x7376, 0x765b, + 0x0000, 0x0000, 0x0000, 0x0000, 0x577e, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x785f, 0x0000, 0x7772, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5029, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x665a, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7526, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x573c, 0x4c63, 0x0000, 0x0000, 0x665b, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x5d5d, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5133, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6f6d, + 0x0000, 0x0000, 0x0000, 0x0000, 0x524f, 0x6474, 0x616f, 0x0000, + 0x0000, 0x5d78, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x684f, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x4a65, 0x0000, 0x0000, 0x0000, 0x5c21, + 0x0000, 0x6035, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x7c2c, 0x7c2d, 0x5827, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6d38, 0x0000, 0x0000, 0x0000, 0x5b36, 0x0000, 0x0000, + 0x0000, 0x0000, 0x525f, 0x732f, 0x0000, 0x0000, 0x4d25, 0x0000, + 0x5a71, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5828, 0x0000, 0x0000, 0x0000, 0x4c64, 0x0000, 0x0000, 0x5134, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4a58, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x5a72, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_79[] = { + 0x0000, 0x7527, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7528, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6626, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x556c, 0x5578, 0x5a73, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6346, 0x0000, 0x0000, 0x0000, 0x5e64, 0x0000, + 0x5e65, 0x5135, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5136, + 0x5137, 0x7233, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x695e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7053, 0x7234, + 0x0000, 0x0000, 0x7054, 0x4b64, 0x7b54, 0x7566, 0x636a, 0x0000, + 0x5e66, 0x0000, 0x0000, 0x0000, 0x0000, 0x5f54, 0x0000, 0x0000, + 0x7879, 0x0000, 0x0000, 0x0000, 0x0000, 0x702e, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x5138, 0x0000, 0x0000, 0x0000, 0x0000, 0x5250, + 0x0000, 0x5057, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7c21, 0x6f6e, 0x5c58, + 0x0000, 0x695f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x655d, 0x7d7b, + 0x0000, 0x0000, 0x6049, 0x0000, 0x0000, 0x0000, 0x5649, 0x0000, + 0x0000, 0x542a, 0x0000, 0x654c, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6960, 0x0000, 0x0000, 0x0000, 0x5058, 0x7c22, 0x543e, + 0x6233, 0x5e67, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5c3c, 0x5236, 0x7555, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x4e21, 0x7529, 0x0000, 0x0000, 0x5d79, 0x0000, 0x0000, + 0x5d7a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7055, + 0x0000, 0x0000, 0x0000, 0x0000, 0x765f, 0x0000, 0x725a, 0x646b, + 0x0000, 0x7271, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x6c39, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_7a[] = { + 0x7d7c, 0x0000, 0x0000, 0x0000, 0x0000, 0x612a, 0x0000, 0x0000, + 0x4a59, 0x0000, 0x0000, 0x6f6f, 0x0000, 0x752a, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x6c79, 0x0000, 0x0000, 0x782d, + 0x0000, 0x7242, 0x7643, 0x0000, 0x5274, 0x0000, 0x0000, 0x7922, + 0x7056, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x707a, 0x0000, + 0x0000, 0x7660, 0x0000, 0x0000, 0x0000, 0x0000, 0x6973, 0x7243, + 0x0000, 0x0000, 0x0000, 0x542b, 0x4a33, 0x4d26, 0x0000, 0x4d43, + 0x4d5a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x594f, 0x0000, + 0x0000, 0x7644, 0x0000, 0x0000, 0x0000, 0x6e5d, 0x6744, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6234, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5f62, 0x675b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6831, 0x0000, 0x7c2e, 0x0000, 0x0000, 0x0000, 0x0000, + 0x654d, 0x0000, 0x0000, 0x0000, 0x7a6b, 0x0000, 0x4f3c, 0x0000, + 0x0000, 0x4f62, 0x4d76, 0x0000, 0x0000, 0x6f70, 0x0000, 0x743e, + 0x0000, 0x544d, 0x0000, 0x0000, 0x7338, 0x0000, 0x0000, 0x0000, + 0x6921, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x7272, 0x736b, 0x0000, 0x7057, 0x0000, 0x0000, + 0x4f57, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4f5f, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6840, 0x6841, 0x0000, 0x0000, 0x0000, 0x4f63, 0x6922, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x502a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x7341, 0x502b, 0x0000, 0x5464, + 0x0000, 0x0000, 0x6f3c, 0x5821, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x595f, + 0x0000, 0x7357, 0x0000, 0x0000, 0x0000, 0x5c3d, 0x0000, 0x4c65, + 0x6d71, 0x0000, 0x0000, 0x7162, 0x0000, 0x545b, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6235, 0x0000, 0x0000, 0x4a66, 0x0000, 0x532e, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4c66, 0x0000, + 0x0000, 0x7153, 0x7567, 0x0000, 0x0000, 0x0000, 0x0000, 0x4a5a +}; + +static unsigned short ksc5601_from_unicode_7b[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7b6e, + 0x0000, 0x6145, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5f69, 0x0000, 0x6e5e, 0x0000, 0x0000, 0x7742, 0x0000, + 0x5822, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5d2c, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x702f, 0x563d, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x612b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7936, 0x0000, + 0x0000, 0x5475, 0x0000, 0x5049, 0x6f27, 0x626c, 0x0000, 0x5b6a, + 0x4e4c, 0x7568, 0x7755, 0x0000, 0x534d, 0x0000, 0x737e, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5035, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x607e, 0x0000, 0x5f7b, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x665d, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6824, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4b4d, + 0x0000, 0x0000, 0x0000, 0x6f28, 0x0000, 0x0000, 0x0000, 0x6e34, + 0x0000, 0x0000, 0x0000, 0x0000, 0x5a58, 0x5139, 0x0000, 0x5f29, + 0x0000, 0x0000, 0x7330, 0x0000, 0x0000, 0x4c44, 0x0000, 0x0000, + 0x0000, 0x4e37, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6f29, 0x0000, 0x0000, + 0x0000, 0x5f55, 0x0000, 0x0000, 0x6d57, 0x0000, 0x0000, 0x0000, + 0x6e46, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6f3d, 0x7c56, 0x0000, 0x0000, 0x5b74, 0x0000, 0x6f2a, 0x7839, + 0x0000, 0x7569, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6359, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6146, 0x0000, 0x0000, 0x0000, 0x543f, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5e68, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_7c[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x706a, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x7342, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x532f, 0x0000, + 0x0000, 0x4a5b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7c57, + 0x0000, 0x0000, 0x6d58, 0x6147, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7458, 0x5633, 0x5d2d, + 0x0000, 0x0000, 0x0000, 0x553e, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x7143, 0x6e5f, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5259, 0x0000, 0x0000, 0x0000, 0x7459, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x5766, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x5a37, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x5d7b, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5d4f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x5823, 0x0000, 0x0000, 0x5a59, 0x0000, 0x7058, + 0x6f44, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6158, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7154, 0x0000, 0x6d72, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x555b, 0x0000, + 0x0000, 0x555c, 0x7344, 0x4b57, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6236, 0x0000, 0x0000, 0x0000, 0x0000, 0x6f71, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x7b55, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5358, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5d50, 0x7059, + 0x4b33, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x555d, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x4d27, 0x0000, 0x0000, 0x502c, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_7d[] = { + 0x513a, 0x0000, 0x7144, 0x0000, 0x6533, 0x7b75, 0x6961, 0x7d60, + 0x7c3c, 0x0000, 0x5a22, 0x5a23, 0x0000, 0x5221, 0x0000, 0x0000, + 0x526f, 0x0000, 0x0000, 0x0000, 0x626d, 0x0000, 0x0000, 0x5e69, + 0x4e5c, 0x7235, 0x5064, 0x5d51, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6148, 0x5b37, 0x5e7e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x6d39, 0x7145, 0x0000, 0x734f, 0x5269, + 0x612c, 0x0000, 0x0000, 0x636b, 0x0000, 0x6e47, 0x0000, 0x0000, + 0x0000, 0x6149, 0x4a7a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x707b, 0x7a61, 0x705a, 0x4c67, 0x5a74, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4c3f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4e6d, 0x0000, + 0x0000, 0x5529, 0x7a62, 0x0000, 0x0000, 0x0000, 0x5065, 0x0000, + 0x6b56, 0x0000, 0x6c5f, 0x0000, 0x0000, 0x0000, 0x5f7c, 0x0000, + 0x0000, 0x7756, 0x5e6a, 0x4b34, 0x0000, 0x0000, 0x6f3e, 0x0000, + 0x0000, 0x4c35, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4f3d, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6f72, 0x6237, + 0x0000, 0x0000, 0x0000, 0x4c68, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x707c, 0x0000, 0x0000, 0x0000, + 0x5251, 0x0000, 0x7146, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x6238, 0x6b2b, 0x0000, 0x0000, + 0x0000, 0x4b35, 0x5851, 0x0000, 0x744e, 0x7377, 0x0000, 0x0000, + 0x5746, 0x0000, 0x513b, 0x772a, 0x0000, 0x6d4a, 0x5275, 0x587a, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7645, + 0x0000, 0x0000, 0x514c, 0x5d7c, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5f7d, 0x0000, + 0x7965, 0x0000, 0x604a, 0x0000, 0x0000, 0x727d, 0x5330, 0x0000, + 0x7473, 0x5a49, 0x0000, 0x665e, 0x0000, 0x0000, 0x0000, 0x0000, + 0x783a, 0x6850, 0x0000, 0x0000, 0x587b, 0x0000, 0x0000, 0x6a55, + 0x0000, 0x0000, 0x0000, 0x0000, 0x5623, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x7646, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_7e[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x725b, 0x647c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6832, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x5a5a, 0x0000, 0x725c, 0x7b56, 0x6932, + 0x0000, 0x6e2d, 0x0000, 0x7a63, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x5c6e, 0x0000, 0x0000, 0x756a, 0x6660, + 0x0000, 0x707d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x526a, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7545, 0x6e60, 0x0000, + 0x0000, 0x5b65, 0x0000, 0x5d5e, 0x0000, 0x0000, 0x5970, 0x6923, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x7179, 0x0000, 0x7244, 0x604b, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6924, 0x0000, + 0x0000, 0x6239, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6331, 0x7c6b, 0x4d28, 0x0000, 0x4c36, 0x0000, 0x0000, + 0x705b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x663a, 0x0000, 0x0000, 0x4d29, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x7343, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x6159, 0x0000, 0x0000, 0x6f2b, + 0x0000, 0x0000, 0x0000, 0x6745, 0x0000, 0x0000, 0x6069, 0x0000, + 0x7345, 0x0000, 0x0000, 0x5440, 0x553f, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_7f[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5d2e, 0x0000, + 0x797c, 0x0000, 0x4c40, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x6522, 0x0000, 0x0000, 0x0000, + 0x4e38, 0x0000, 0x0000, 0x0000, 0x5852, 0x7956, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x712a, 0x4e51, 0x0000, 0x0000, 0x7647, 0x0000, + 0x5b6b, 0x0000, 0x5f7e, 0x0000, 0x0000, 0x5861, 0x0000, 0x7773, + 0x0000, 0x5767, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x515c, 0x0000, 0x0000, + 0x513c, 0x0000, 0x654f, 0x0000, 0x4b36, 0x0000, 0x5a38, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4d44, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x563e, 0x0000, 0x0000, 0x0000, 0x623a, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4f58, 0x0000, 0x0000, 0x0000, + 0x604c, 0x6b79, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x7d7d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5768, 0x4b58, 0x0000, 0x0000, 0x0000, 0x6962, 0x0000, 0x0000, + 0x0000, 0x683a, 0x0000, 0x0000, 0x0000, 0x6347, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6c4d, 0x0000, 0x6c4e, 0x0000, 0x563f, 0x0000, + 0x0000, 0x0000, 0x6327, 0x0000, 0x5f56, 0x7d68, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6e61, + 0x7628, 0x5d7d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x783b, 0x0000, 0x6851, 0x0000, 0x0000, 0x0000, 0x0000, + 0x7957, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x4e6e, 0x0000, 0x0000, 0x6c4f, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_80[] = { + 0x6925, 0x5247, 0x0000, 0x4d45, 0x0000, 0x6d3a, 0x513d, 0x0000, + 0x0000, 0x4f3e, 0x0000, 0x0000, 0x6c3b, 0x0000, 0x0000, 0x0000, + 0x5231, 0x0000, 0x0000, 0x0000, 0x0000, 0x4c69, 0x0000, 0x5944, + 0x697c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x513e, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x6c3c, 0x0000, 0x0000, 0x652d, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7730, 0x0000, 0x4c6a, + 0x0000, 0x0000, 0x0000, 0x5344, 0x0000, 0x0000, 0x5640, 0x0000, + 0x0000, 0x0000, 0x567d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6121, 0x0000, + 0x5e3d, 0x0000, 0x7629, 0x0000, 0x0000, 0x0000, 0x5a24, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5624, + 0x7546, 0x0000, 0x6122, 0x6946, 0x0000, 0x0000, 0x0000, 0x7245, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7469, 0x525a, 0x6b53, + 0x0000, 0x0000, 0x0000, 0x0000, 0x6c3d, 0x625c, 0x5e6b, 0x705c, + 0x0000, 0x6b3f, 0x0000, 0x5271, 0x513f, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x752b, 0x0000, + 0x0000, 0x0000, 0x0000, 0x797d, 0x0000, 0x4a5c, 0x0000, 0x0000, + 0x0000, 0x4d46, 0x7236, 0x0000, 0x0000, 0x5d7e, 0x0000, 0x0000, + 0x0000, 0x4c37, 0x5b38, 0x0000, 0x0000, 0x0000, 0x0000, 0x5069, + 0x0000, 0x4e5d, 0x6b40, 0x0000, 0x7d22, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x784b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x6a56, 0x7130, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x5b4e, 0x0000, 0x7743, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x5b4f, 0x4b24, 0x0000, 0x0000, 0x7860, 0x0000, + 0x0000, 0x7b57, 0x0000, 0x0000, 0x6b4a, 0x6021, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x4e4d, 0x0000, 0x0000, 0x545c, 0x0000, 0x0000, 0x0000, + 0x7d58, 0x0000, 0x0000, 0x0000, 0x0000, 0x5276, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_81[] = { + 0x0000, 0x0000, 0x7237, 0x0000, 0x0000, 0x7a76, 0x762a, 0x7a77, + 0x5866, 0x0000, 0x7431, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6852, 0x0000, 0x4a45, 0x4c6b, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x626e, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x623b, 0x0000, 0x772d, 0x0000, 0x0000, 0x0000, 0x7861, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x736c, 0x0000, 0x0000, 0x0000, 0x0000, 0x5e21, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x647d, 0x0000, 0x0000, 0x636c, 0x0000, + 0x5d2f, 0x5d30, 0x0000, 0x0000, 0x4b37, 0x6853, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6123, 0x5260, 0x0000, + 0x0000, 0x0000, 0x0000, 0x707e, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6926, 0x4b72, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6d73, 0x5c59, 0x604d, 0x0000, 0x0000, 0x0000, 0x0000, 0x775a, + 0x5b39, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4c2e, 0x0000, 0x5a5b, 0x0000, 0x0000, 0x0000, 0x0000, 0x4d47, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x5d31, 0x0000, 0x582f, 0x6323, 0x0000, 0x0000, + 0x4e6f, 0x0000, 0x0000, 0x7273, 0x0000, 0x0000, 0x0000, 0x0000, + 0x7833, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x604e, 0x0000, 0x757d, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6b6c, 0x0000, 0x0000, 0x5345, 0x7c6c, 0x525b, + 0x546b, 0x0000, 0x5e22, 0x0000, 0x0000, 0x0000, 0x6566, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7030, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5222, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6d74, + 0x0000, 0x0000, 0x0000, 0x636d, 0x0000, 0x6842, 0x0000, 0x6d75, + 0x577c, 0x0000, 0x6d3b, 0x0000, 0x0000, 0x762b, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x7238, 0x7648, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x5366, 0x725d, 0x4f3f, 0x0000, 0x6b2c, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_82[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4f40, 0x0000, 0x6628, + 0x7d69, 0x0000, 0x4f41, 0x0000, 0x605f, 0x5e6c, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6022, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x743f, 0x626f, 0x0000, 0x5971, 0x7147, + 0x0000, 0x4b38, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x797e, 0x5b3a, 0x5a75, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x766c, 0x5a5c, 0x7a64, + 0x0000, 0x604f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5d32, 0x0000, 0x0000, 0x0000, 0x0000, 0x6629, 0x0000, 0x6f73, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x736d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x6b7a, 0x0000, 0x7966, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4a5d, 0x555e, + 0x0000, 0x4a5e, 0x5f64, 0x0000, 0x0000, 0x0000, 0x667d, 0x0000, + 0x752c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6475, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x6963, 0x0000, 0x6d4b, 0x4f64, 0x0000, + 0x0000, 0x0000, 0x5853, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5d33, 0x546c, 0x0000, 0x0000, 0x7239, 0x0000, 0x5f37, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4b4e, 0x7b58, 0x0000, + 0x0000, 0x5059, 0x0000, 0x0000, 0x5d52, 0x7774, 0x675c, 0x6425, + 0x0000, 0x7c23, 0x0000, 0x5b3b, 0x0000, 0x0000, 0x0000, 0x723a, + 0x697d, 0x504a, 0x0000, 0x7556, 0x5945, 0x6434, 0x0000, 0x6d27, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6a3d, 0x667e, 0x0000, 0x7744, 0x752d, 0x0000, 0x5960, + 0x0000, 0x0000, 0x0000, 0x4a34, 0x0000, 0x0000, 0x7862, 0x4f42, + 0x0000, 0x6c3e, 0x0000, 0x0000, 0x0000, 0x652e, 0x4d48, 0x6e48, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6748, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4d49, 0x7937, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_83[] = { + 0x0000, 0x7168, 0x5972, 0x5b75, 0x4a35, 0x5946, 0x0000, 0x0000, + 0x0000, 0x5849, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x592b, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6d3c, 0x0000, 0x0000, 0x5854, 0x0000, 0x0000, 0x0000, 0x5c5a, + 0x0000, 0x623c, 0x0000, 0x0000, 0x7c6d, 0x6c60, 0x527e, 0x0000, + 0x6947, 0x662a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6270, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7a3b, + 0x0000, 0x752e, 0x7b2a, 0x0000, 0x0000, 0x0000, 0x0000, 0x6c7b, + 0x0000, 0x6c3f, 0x7c58, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x5465, 0x0000, 0x0000, 0x0000, 0x7943, + 0x0000, 0x0000, 0x0000, 0x6e62, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5769, 0x6d76, 0x0000, 0x0000, 0x0000, 0x5e6d, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4c6c, 0x0000, + 0x636e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6854, 0x0000, + 0x0000, 0x0000, 0x7a78, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5d34, 0x6435, 0x5830, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5855, 0x0000, 0x0000, + 0x0000, 0x746a, 0x0000, 0x0000, 0x0000, 0x4e39, 0x0000, 0x0000, + 0x0000, 0x5252, 0x4f52, 0x0000, 0x5036, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x4e22, 0x0000, 0x0000, 0x736e, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x7378, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5c4c, 0x0000, 0x504b, 0x0000, 0x0000, 0x0000, 0x7c24, + 0x4d4a, 0x5277, 0x5e23, 0x0000, 0x6460, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6e49, 0x0000, 0x0000, 0x0000, 0x625d, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_84[] = { + 0x0000, 0x0000, 0x0000, 0x757e, 0x542c, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x5551, 0x0000, 0x5870, 0x7843, 0x6a57, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7557, 0x0000, 0x0000, 0x583f, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7d40, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6b2d, 0x0000, 0x0000, 0x0000, 0x0000, 0x5166, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6071, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6e4a, + 0x0000, 0x0000, 0x0000, 0x4a67, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7863, 0x0000, 0x545d, 0x0000, 0x0000, 0x6a58, 0x0000, + 0x0000, 0x0000, 0x0000, 0x7b59, 0x6d77, 0x0000, 0x0000, 0x6535, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x502d, 0x0000, 0x0000, + 0x0000, 0x0000, 0x7171, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x623d, 0x0000, 0x0000, 0x0000, 0x6348, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5955, 0x0000, 0x0000, 0x5f2a, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5b3c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x7864, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x717a, 0x0000, 0x0000, 0x6536, 0x736f, 0x0000, 0x0000, 0x7b5a, + 0x6160, 0x0000, 0x592c, 0x0000, 0x756b, 0x0000, 0x6036, 0x0000, + 0x0000, 0x6948, 0x0000, 0x4b4f, 0x0000, 0x6349, 0x0000, 0x0000, + 0x0000, 0x5e6e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x623e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x5c6f, 0x0000, 0x5625, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x6271, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x567e, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_85[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5921, 0x0000, 0x5840, 0x5c5b, 0x0000, 0x0000, 0x6d3d, + 0x5f38, 0x0000, 0x6a25, 0x0000, 0x0000, 0x0000, 0x572d, 0x0000, + 0x0000, 0x7379, 0x0000, 0x6d78, 0x0000, 0x7547, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x614a, 0x6b63, 0x0000, 0x725e, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x784c, 0x0000, 0x6a59, + 0x0000, 0x5346, 0x0000, 0x5b66, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x752f, 0x0000, 0x0000, 0x0000, 0x0000, 0x4e70, 0x0000, + 0x0000, 0x0000, 0x0000, 0x697e, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7b36, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x6272, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4f72, 0x7739, 0x5973, 0x0000, 0x0000, 0x614b, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x5a5d, 0x0000, 0x0000, 0x5a39, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6b7b, + 0x0000, 0x4b39, 0x0000, 0x0000, 0x6d79, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x6060, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7440, 0x0000, + 0x7d3c, 0x5f31, 0x636f, 0x0000, 0x0000, 0x0000, 0x0000, 0x6023, + 0x7d39, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x7031, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x4d4b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6d3e, 0x0000, 0x0000, 0x0000, 0x517c, 0x6370, 0x6d7a, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6964, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x556d, 0x675d, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x5476, 0x6537, 0x0000, 0x0000, + 0x0000, 0x5b67, 0x623f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6e4b, + 0x0000, 0x0000, 0x5774, 0x705d, 0x0000, 0x0000, 0x0000, 0x4e2b +}; + +static unsigned short ksc5601_from_unicode_86[] = { + 0x0000, 0x0000, 0x675e, 0x0000, 0x0000, 0x0000, 0x5248, 0x614c, + 0x0000, 0x0000, 0x6833, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x656e, 0x5c22, + 0x0000, 0x0000, 0x6050, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5170, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x515d, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7b5b, 0x0000, + 0x794b, 0x0000, 0x0000, 0x0000, 0x4b73, 0x7425, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x7a48, 0x5249, 0x0000, 0x6965, 0x7b5c, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7d50, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7b76, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x5a25, 0x0000, 0x5b3d, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x6c62, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x4d77, 0x705e, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7649, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5e6f, + 0x0000, 0x0000, 0x0000, 0x5331, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x7c6e, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6843, 0x0000, 0x7148, 0x0000, 0x0000, 0x0000, 0x4e71, + 0x0000, 0x0000, 0x0000, 0x0000, 0x796d, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7274, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6436, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_87[] = { + 0x7539, 0x0000, 0x5c70, 0x6371, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6825, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x723b, 0x0000, 0x5e24, 0x0000, 0x5a4c, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4a69, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x635a, 0x0000, 0x7c59, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6a5a, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7944, 0x0000, + 0x6324, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x7b5d, 0x0000, 0x6f4a, 0x0000, + 0x6844, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x554c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6b57, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x592d, + 0x0000, 0x0000, 0x7b2b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x5359, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x515e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x765e, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5a76, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x6051, 0x0000, 0x0000, 0x6928, + 0x0000, 0x0000, 0x7579, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7a2f, 0x0000, 0x6b7c, 0x0000, 0x0000, 0x606a, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_88[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6332, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5223, + 0x0000, 0x0000, 0x7163, 0x556e, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x4d4c, 0x0000, 0x0000, 0x0000, 0x0000, 0x6d59, 0x0000, + 0x0000, 0x0000, 0x0000, 0x5841, 0x0000, 0x0000, 0x0000, 0x0000, + 0x7a6c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x716b, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x7a21, 0x6662, 0x0000, 0x0000, + 0x0000, 0x0000, 0x7a65, 0x627a, 0x0000, 0x0000, 0x0000, 0x4a36, + 0x0000, 0x6437, 0x0000, 0x6a5b, 0x0000, 0x757a, 0x0000, 0x0000, + 0x0000, 0x7b2c, 0x4f43, 0x6b7d, 0x0000, 0x0000, 0x0000, 0x0000, + 0x787a, 0x0000, 0x0000, 0x5f39, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6171, 0x0000, 0x5224, 0x0000, 0x0000, 0x0000, 0x0000, 0x757b, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x505a, 0x505b, + 0x0000, 0x6a3e, 0x5931, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4a37, 0x0000, 0x0000, 0x5367, 0x0000, 0x7865, 0x0000, 0x0000, + 0x0000, 0x0000, 0x5332, 0x0000, 0x0000, 0x0000, 0x6240, 0x725f, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4d65, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x792c, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4d4d, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6e2e, 0x562e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x576a, + 0x0000, 0x0000, 0x0000, 0x0000, 0x6760, 0x6b2e, 0x0000, 0x0000, + 0x0000, 0x4f59, 0x0000, 0x0000, 0x5c4d, 0x6d7b, 0x0000, 0x5e70, + 0x0000, 0x576b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5e25, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x5f57, 0x5b50, 0x5b51, 0x0000, 0x0000, + 0x515f, 0x0000, 0x0000, 0x0000, 0x0000, 0x7032, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_89[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5c5c, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4a68, 0x0000, 0x7866, 0x5c4e, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6a5c, 0x5b52, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6933, 0x0000, 0x0000, + 0x0000, 0x0000, 0x775b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6328, 0x0000, + 0x572e, 0x0000, 0x0000, 0x6061, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x4b3a, 0x0000, 0x0000, 0x6551, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x505c, + 0x0000, 0x0000, 0x0000, 0x0000, 0x517d, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x584a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6329, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6024, + 0x0000, 0x6929, 0x0000, 0x5347, 0x0000, 0x0000, 0x5c5d, 0x782e, + 0x0000, 0x0000, 0x0000, 0x7a66, 0x0000, 0x0000, 0x0000, 0x502e, + 0x0000, 0x0000, 0x0000, 0x5872, 0x0000, 0x0000, 0x634a, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x4c2f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x542d, 0x7651, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x504c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x4a46, 0x0000, 0x0000, 0x5542, 0x0000, 0x0000, + 0x4e3a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x4a47, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x7a30, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x5f58, 0x0000, 0x0000, 0x0000, + 0x753a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_8a[] = { + 0x656b, 0x0000, 0x6f74, 0x5d35, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4d2a, 0x0000, 0x6372, 0x0000, 0x7b77, 0x0000, 0x7750, 0x0000, + 0x0000, 0x0000, 0x0000, 0x7d3a, 0x0000, 0x0000, 0x7d61, 0x767e, + 0x5140, 0x0000, 0x0000, 0x6845, 0x0000, 0x6438, 0x0000, 0x6168, + 0x0000, 0x0000, 0x0000, 0x4c41, 0x0000, 0x526d, 0x0000, 0x0000, + 0x0000, 0x0000, 0x5b3e, 0x0000, 0x0000, 0x6062, 0x0000, 0x0000, + 0x0000, 0x7a49, 0x0000, 0x0000, 0x614d, 0x0000, 0x4a38, 0x0000, + 0x0000, 0x0000, 0x7260, 0x7149, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5e71, 0x0000, 0x0000, 0x0000, 0x705f, 0x7844, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x6e4c, 0x0000, 0x0000, 0x5e72, 0x0000, + 0x6749, 0x0000, 0x6273, 0x6761, 0x0000, 0x0000, 0x634b, 0x0000, + 0x0000, 0x634c, 0x0000, 0x0000, 0x0000, 0x4f78, 0x6f2c, 0x0000, + 0x7d7e, 0x7c25, 0x7a31, 0x5f59, 0x0000, 0x6052, 0x0000, 0x0000, + 0x0000, 0x745a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x714a, 0x0000, 0x4e23, + 0x0000, 0x0000, 0x0000, 0x0000, 0x723c, 0x6c63, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x6025, 0x0000, 0x772b, 0x0000, 0x0000, + 0x6b2f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x655e, 0x0000, + 0x6124, 0x4d2b, 0x0000, 0x5974, 0x6826, 0x4d4e, 0x6169, 0x0000, + 0x7c6f, 0x0000, 0x6063, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6241, 0x0000, 0x4e24, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5e26, 0x0000, 0x0000, 0x6b7e, 0x0000, 0x6b5d, 0x7060, + 0x0000, 0x0000, 0x745b, 0x0000, 0x6274, 0x0000, 0x0000, 0x5348, + 0x0000, 0x0000, 0x0000, 0x746b, 0x0000, 0x6e35, 0x0000, 0x7558, + 0x0000, 0x0000, 0x555f, 0x0000, 0x0000, 0x0000, 0x5255, 0x0000, + 0x0000, 0x0000, 0x0000, 0x6b30, 0x7463, 0x0000, 0x0000, 0x0000, + 0x0000, 0x634d, 0x0000, 0x0000, 0x0000, 0x0000, 0x7474, 0x7a32, + 0x0000, 0x0000, 0x6f75, 0x4a5f, 0x0000, 0x6b31, 0x6d3f, 0x0000, + 0x0000, 0x7d49, 0x0000, 0x0000, 0x0000, 0x0000, 0x6426, 0x7924, + 0x7033, 0x0000, 0x656c, 0x0000, 0x0000, 0x0000, 0x5167, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_8b[] = { + 0x5947, 0x6457, 0x6a5d, 0x0000, 0x5477, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5a3a, 0x0000, + 0x5a4d, 0x0000, 0x0000, 0x0000, 0x794c, 0x0000, 0x615a, 0x5b3f, + 0x0000, 0x4c45, 0x6c50, 0x4b3b, 0x0000, 0x5e73, 0x0000, 0x0000, + 0x692a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5948, 0x0000, 0x0000, 0x6e63, 0x573d, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x4f44, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x504d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7c26, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x717b, 0x0000, 0x0000, 0x0000, 0x0000, 0x7d52, 0x5141, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x635b, 0x0000, 0x5349, 0x0000, 0x5c4f, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4c6d, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x5e27, 0x0000, 0x0000, 0x663b, + 0x6c21, 0x0000, 0x0000, 0x0000, 0x4c39, 0x0000, 0x0000, 0x7b5e, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6762, 0x0000, 0x0000, + 0x5441, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x5c28, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6242, 0x0000, 0x7358, 0x6553, 0x0000, 0x0000, 0x7359, 0x0000, + 0x0000, 0x0000, 0x7346, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_8c[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4d5b, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4d2c, + 0x0000, 0x7c43, 0x0000, 0x0000, 0x0000, 0x0000, 0x5467, 0x0000, + 0x5142, 0x0000, 0x7925, 0x0000, 0x6855, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x634e, 0x0000, 0x0000, + 0x0000, 0x0000, 0x544a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5f5a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x7b5f, 0x6763, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x787b, 0x634f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x7530, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x5867, 0x0000, 0x5949, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x782f, 0x6f76, 0x0000, + 0x5d36, 0x6e2f, 0x4d78, 0x0000, 0x0000, 0x0000, 0x0000, 0x5e38, + 0x7c27, 0x777c, 0x7731, 0x4e3b, 0x7421, 0x0000, 0x0000, 0x6e4d, + 0x612e, 0x0000, 0x0000, 0x6c43, 0x4f7e, 0x0000, 0x783f, 0x5862, + 0x5368, 0x0000, 0x0000, 0x5e28, 0x7464, 0x6c42, 0x0000, 0x5975, + 0x7945, 0x5d53, 0x5261, 0x6c7c, 0x7c70, 0x0000, 0x0000, 0x6d40, + 0x4a39, 0x0000, 0x6e64, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7261, 0x0000, 0x5e39, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x5672, 0x0000, 0x5e74, 0x0000, 0x5f5b, 0x0000, + 0x5b53, 0x0000, 0x7a67, 0x5863, 0x7441, 0x0000, 0x5d37, 0x0000, + 0x0000, 0x0000, 0x7275, 0x0000, 0x0000, 0x542e, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x5673, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x5d38, 0x4f45, 0x5f5f, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_8d[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x723e, 0x7621, 0x0000, 0x6b4b, + 0x717c, 0x0000, 0x7347, 0x0000, 0x0000, 0x606b, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x6d7c, 0x0000, 0x0000, 0x615b, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x6e65, 0x0000, 0x5e75, 0x0000, + 0x0000, 0x0000, 0x0000, 0x7a53, 0x0000, 0x0000, 0x0000, 0x0000, + 0x714b, 0x0000, 0x0000, 0x502f, 0x5d39, 0x0000, 0x0000, 0x5143, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7531, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6a46, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7061, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x762c, 0x0000, 0x0000, 0x0000, 0x0000, + 0x7559, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x706b, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x5d3a, 0x0000, 0x0000, 0x0000, 0x723f, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7745, 0x0000, + 0x0000, 0x0000, 0x0000, 0x5b22, 0x7276, 0x0000, 0x0000, 0x4a3a, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x7775, 0x0000, 0x4b65, 0x0000, 0x0000, + 0x0000, 0x6e66, 0x0000, 0x6053, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4e25, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x524a, + 0x0000, 0x0000, 0x0000, 0x542f, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_8e[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6949, 0x0000, 0x0000, 0x0000, 0x0000, 0x534e, + 0x7442, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4b66, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x7121, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6b32, 0x0000, 0x0000, 0x0000, 0x0000, 0x7122, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6b33, 0x0000, 0x7034, 0x0000, 0x0000, 0x4b74, + 0x5430, 0x7332, 0x7b37, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x756c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6e67, + 0x7432, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x756d, 0x0000, 0x4f73, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7062, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6e4e, + 0x0000, 0x0000, 0x714c, 0x0000, 0x0000, 0x6538, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x5775, 0x6373, 0x4f65, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4f46, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x7333, 0x6458, 0x4f79, 0x4f5a, 0x0000, 0x0000, + 0x0000, 0x0000, 0x7a4d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6663, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x7262, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x756e, 0x0000, 0x0000, 0x4a3b, 0x0000, 0x0000, 0x635c, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_8f[] = { + 0x0000, 0x0000, 0x0000, 0x4e72, 0x0000, 0x5659, 0x0000, 0x0000, + 0x0000, 0x6e30, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x7465, 0x5842, 0x5c50, 0x4c6e, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x5560, 0x764a, 0x7d4a, 0x5856, 0x744f, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5626, 0x5c3e, + 0x0000, 0x5b54, 0x5747, 0x0000, 0x0000, 0x0000, 0x0000, 0x727e, + 0x0000, 0x0000, 0x0000, 0x714d, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6243, 0x5c5e, 0x0000, 0x5c5f, 0x0000, 0x0000, 0x6f2d, 0x662b, + 0x0000, 0x0000, 0x0000, 0x0000, 0x795d, 0x6a3f, 0x0000, 0x0000, + 0x0000, 0x6f2e, 0x0000, 0x0000, 0x0000, 0x7450, 0x4e73, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x662c, 0x0000, 0x4e5e, + 0x0000, 0x0000, 0x5579, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x6374, 0x4d50, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x5538, 0x0000, 0x0000, 0x777d, 0x0000, + 0x5c29, 0x0000, 0x0000, 0x0000, 0x0000, 0x5e76, 0x0000, 0x5c2a, + 0x6375, 0x6934, 0x525c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6966, 0x0000, 0x0000, 0x6376, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x674a, 0x0000, + 0x0000, 0x504e, 0x0000, 0x0000, 0x5a77, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4a3c, 0x0000, + 0x0000, 0x0000, 0x6e68, 0x5a5e, 0x0000, 0x7277, 0x0000, 0x0000, + 0x627b, 0x0000, 0x4c26, 0x0000, 0x0000, 0x0000, 0x0000, 0x5a3b, + 0x0000, 0x6e69, 0x0000, 0x0000, 0x0000, 0x755a, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_90[] = { + 0x775c, 0x616a, 0x4e41, 0x5431, 0x0000, 0x7d31, 0x663d, 0x0000, + 0x7b2d, 0x0000, 0x0000, 0x7867, 0x0000, 0x614e, 0x0000, 0x7762, + 0x756f, 0x4f47, 0x0000, 0x0000, 0x5432, 0x4c6f, 0x0000, 0x5468, + 0x0000, 0x6e4f, 0x7757, 0x0000, 0x0000, 0x6026, 0x5641, 0x615c, + 0x7063, 0x7164, 0x5c71, 0x5627, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7475, 0x0000, + 0x0000, 0x714e, 0x7264, 0x0000, 0x0000, 0x5030, 0x0000, 0x0000, + 0x6c6f, 0x0000, 0x0000, 0x0000, 0x793a, 0x0000, 0x6b35, 0x0000, + 0x0000, 0x546d, 0x6244, 0x0000, 0x0000, 0x0000, 0x0000, 0x6967, + 0x0000, 0x0000, 0x6b34, 0x6a21, 0x0000, 0x783c, 0x4e26, 0x0000, + 0x7946, 0x7c5a, 0x0000, 0x5433, 0x5339, 0x6a5e, 0x0000, 0x0000, + 0x0000, 0x692b, 0x0000, 0x0000, 0x6161, 0x534f, 0x7476, 0x0000, + 0x6a40, 0x614f, 0x0000, 0x4c3a, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6e6a, 0x0000, 0x0000, 0x0000, 0x7064, 0x7334, 0x546e, + 0x0000, 0x0000, 0x7240, 0x0000, 0x0000, 0x7165, 0x0000, 0x7443, + 0x6054, 0x0000, 0x6b36, 0x0000, 0x5721, 0x4b68, 0x0000, 0x792d, + 0x692d, 0x5864, 0x7a33, 0x6245, 0x7c3d, 0x0000, 0x0000, 0x6c44, + 0x5831, 0x0000, 0x5c2b, 0x0000, 0x0000, 0x0000, 0x0000, 0x5160, + 0x0000, 0x6b69, 0x0000, 0x0000, 0x0000, 0x683b, 0x0000, 0x0000, + 0x0000, 0x5857, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x7b2e, 0x5161, 0x0000, 0x0000, 0x5b40, 0x0000, + 0x753e, 0x0000, 0x5e77, 0x0000, 0x0000, 0x0000, 0x0000, 0x4a7b, + 0x7746, 0x4f48, 0x0000, 0x0000, 0x0000, 0x6150, 0x0000, 0x0000, + 0x6e50, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6974, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x4e74, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x522b, 0x0000, + 0x0000, 0x4f5b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5d3b, 0x0000, 0x0000, 0x0000, 0x0000, 0x4e2c, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6968, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5434, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_91[] = { + 0x0000, 0x0000, 0x6447, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x755b, 0x0000, 0x0000, 0x7a41, 0x0000, 0x0000, + 0x0000, 0x5e29, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5478, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6f77, 0x0000, 0x0000, + 0x0000, 0x0000, 0x5333, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6b37, 0x6f78, 0x755c, 0x6d4c, 0x5b55, 0x714f, 0x0000, + 0x0000, 0x0000, 0x7150, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x7532, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x592e, 0x5168, 0x0000, 0x6246, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7d23, 0x0000, 0x7b65, + 0x5f2b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6275, + 0x0000, 0x762d, 0x0000, 0x7533, 0x0000, 0x7035, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6125, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x755d, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x6c22, 0x6d7d, 0x0000, 0x7534, 0x7b38, + 0x0000, 0x5b23, 0x0000, 0x0000, 0x564a, 0x4b59, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6554, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x737a, + 0x0000, 0x6b38, 0x0000, 0x6037, 0x576c, 0x716c, 0x652f, 0x5561, + 0x576d, 0x505d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6172, + 0x6f79, 0x0000, 0x0000, 0x0000, 0x5d3c, 0x765c, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x7065, 0x0000, 0x0000, 0x0000, 0x7444, + 0x0000, 0x0000, 0x6969, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x737b, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_92[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x546f, 0x0000, 0x0000, + 0x4c22, 0x777e, 0x5f3c, 0x0000, 0x0000, 0x0000, 0x0000, 0x6b4d, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5037, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x5642, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x682d, 0x0000, 0x0000, 0x0000, 0x0000, 0x6f2f, + 0x4b25, 0x0000, 0x0000, 0x0000, 0x0000, 0x4b69, 0x0000, 0x0000, + 0x0000, 0x7a68, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4c46, + 0x0000, 0x0000, 0x0000, 0x6667, 0x0000, 0x0000, 0x6a47, 0x0000, + 0x0000, 0x0000, 0x5b24, 0x0000, 0x4f49, 0x627c, 0x6f7a, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6b5e, 0x0000, 0x0000, 0x7548, 0x0000, 0x545e, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6055, 0x0000, 0x6f30, 0x0000, 0x0000, 0x6247, 0x0000, + 0x592f, 0x0000, 0x0000, 0x0000, 0x7967, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x6765, 0x0000, 0x0000, 0x4f4a, 0x6151, + 0x0000, 0x6248, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x6f7b, 0x0000, 0x0000, 0x7a79, + 0x0000, 0x0000, 0x5c72, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x6027, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x7868, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4b6a, 0x0000, 0x0000, 0x0000, 0x4b3c, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_93[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x5253, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x755e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x755f, 0x0000, 0x6e36, 0x0000, 0x0000, 0x0000, 0x6276, 0x534a, + 0x6f7c, 0x5144, 0x6f31, 0x0000, 0x5145, 0x0000, 0x505e, 0x0000, + 0x5961, 0x0000, 0x0000, 0x6038, 0x0000, 0x0000, 0x4d51, 0x7339, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x674c, 0x0000, 0x5628, 0x4e27, 0x0000, 0x5435, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x6448, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x5334, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6b39, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4b75, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x765d, 0x0000, 0x7123, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4c47, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x694a, 0x0000, 0x6170, 0x0000, + 0x0000, 0x0000, 0x7560, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x7b2f, 0x0000, 0x0000, 0x0000, 0x4b51, + 0x0000, 0x0000, 0x0000, 0x0000, 0x7b60, 0x7265, 0x0000, 0x0000, + 0x6c70, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x706c, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6e6b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x694b, 0x0000, + 0x0000, 0x4c70, 0x0000, 0x0000, 0x572f, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7321, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_94[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x7c75, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x7124, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6056, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x6f32, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7451, 0x0000, 0x0000, + 0x7721, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x7151, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x4a7c, 0x4a7d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x4e4e, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7348, 0x0000, 0x733a, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_95[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6d7e, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5a26, 0x0000, 0x0000, 0x606c, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x784d, 0x0000, 0x4b52, 0x0000, 0x0000, 0x0000, 0x6b4e, + 0x0000, 0x7958, 0x7959, 0x4a60, 0x5a4a, 0x0000, 0x0000, 0x0000, + 0x4b26, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x4a48, 0x796e, 0x5b6c, 0x0000, 0x0000, + 0x5031, 0x0000, 0x0000, 0x0000, 0x0000, 0x556f, 0x0000, 0x0000, + 0x0000, 0x6673, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x6722, 0x6459, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6461, + 0x0000, 0x0000, 0x7c44, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x796f, 0x4f74, 0x7766, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4e3c, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7445, 0x5c23, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_96[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x5d3d, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7446, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x7821, 0x0000, 0x0000, 0x0000, 0x6856, 0x0000, + 0x0000, 0x0000, 0x5b41, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x7066, 0x0000, 0x0000, 0x0000, 0x6439, + 0x766d, 0x0000, 0x792e, 0x0000, 0x5d3e, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x526b, 0x5868, 0x7a22, 0x0000, 0x0000, + 0x795a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x784e, 0x7970, 0x606d, 0x6333, 0x7433, + 0x0000, 0x0000, 0x6a42, 0x7266, 0x7036, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x5b56, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6b64, 0x0000, 0x0000, 0x7267, 0x0000, 0x5278, 0x5436, 0x7968, + 0x5741, 0x0000, 0x0000, 0x0000, 0x0000, 0x6555, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x696a, 0x574c, 0x0000, + 0x0000, 0x0000, 0x5369, 0x6249, 0x0000, 0x7c5b, 0x4d2d, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4c30, 0x6a22, 0x0000, 0x0000, + 0x6476, 0x5040, 0x0000, 0x7037, 0x6e21, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x5776, 0x0000, 0x0000, 0x0000, 0x624a, + 0x624b, 0x0000, 0x7a4f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6b5f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x564b, + 0x0000, 0x0000, 0x0000, 0x7434, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6d4d, 0x6452, 0x0000, 0x0000, 0x6a29, 0x643a, 0x7322, 0x4d52, + 0x0000, 0x764b, 0x0000, 0x7166, 0x6d41, 0x683c, 0x6e51, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7067, 0x624c, 0x0000, + 0x0000, 0x642a, 0x0000, 0x7561, 0x6d5a, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x576e, 0x5171, 0x0000, 0x0000, 0x0000, 0x0000, + 0x696b, 0x696c, 0x6064, 0x0000, 0x0000, 0x0000, 0x0000, 0x5a27, + 0x5d54, 0x0000, 0x6a23, 0x0000, 0x0000, 0x0000, 0x5643, 0x5262, + 0x0000, 0x5a5f, 0x0000, 0x6f33, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_97[] = { + 0x624d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6f7d, 0x7268, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6f45, 0x0000, 0x6767, 0x0000, 0x0000, 0x577d, 0x0000, + 0x0000, 0x674e, 0x0000, 0x0000, 0x5f5c, 0x0000, 0x7947, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5976, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5f2c, 0x0000, 0x524b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5c24, 0x0000, 0x0000, 0x0000, 0x7038, 0x0000, 0x0000, + 0x0000, 0x0000, 0x557a, 0x0000, 0x6477, 0x0000, 0x0000, 0x0000, + 0x5644, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x746c, 0x0000, 0x0000, 0x0000, 0x0000, 0x6f7e, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x7021, 0x0000, 0x5e2a, 0x0000, + 0x0000, 0x5a3c, 0x587c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7a54, 0x0000, 0x0000, 0x0000, 0x6c65, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x7c28, 0x0000, 0x0000, 0x6c66, + 0x0000, 0x0000, 0x584b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x7b39, 0x0000, 0x6453, 0x0000, 0x4d79, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4f53, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4a6a, 0x0000, 0x0000, 0x4f54, 0x0000, 0x783d, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7447, 0x0000, + 0x0000, 0x0000, 0x0000, 0x6a5f, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x795b, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x5437, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x6b65, 0x0000, 0x0000, 0x6152, 0x0000, + 0x0000, 0x0000, 0x0000, 0x6a24, 0x0000, 0x0000, 0x0000, 0x7a42 +}; + +static unsigned short ksc5601_from_unicode_98[] = { + 0x7b61, 0x7a6d, 0x7022, 0x4c71, 0x0000, 0x7a23, 0x6277, 0x0000, + 0x624e, 0x0000, 0x6975, 0x0000, 0x616b, 0x0000, 0x0000, 0x0000, + 0x6768, 0x6857, 0x5a78, 0x544b, 0x0000, 0x0000, 0x0000, 0x7776, + 0x5645, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5469, 0x0000, 0x0000, + 0x7a7a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4c72, 0x775d, 0x0000, 0x5e3a, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4e28, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x7039, 0x647e, 0x6449, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x6454, 0x0000, 0x0000, 0x0000, + 0x6a43, 0x0000, 0x6f34, 0x0000, 0x0000, 0x0000, 0x573e, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7b62, 0x0000, 0x4d53, + 0x0000, 0x0000, 0x0000, 0x6f35, 0x0000, 0x0000, 0x0000, 0x7a69, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x7926, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5f3d, + 0x0000, 0x7747, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x787d, 0x0000, 0x0000, 0x787c, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x5e2b, 0x5b68, 0x0000, 0x0000, 0x635d, + 0x0000, 0x6162, 0x5146, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7650, 0x6b66, 0x5a79, + 0x0000, 0x0000, 0x0000, 0x0000, 0x6c47, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x5e78, 0x7869, 0x635e, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_99[] = { + 0x0000, 0x0000, 0x0000, 0x4e75, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7a43, 0x6557, 0x0000, 0x6c48, 0x0000, 0x0000, 0x0000, + 0x7349, 0x0000, 0x0000, 0x643b, 0x0000, 0x0000, 0x0000, 0x0000, + 0x662e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6f36, 0x0000, + 0x5c3f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4e3d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5843, 0x0000, 0x0000, + 0x0000, 0x504f, 0x0000, 0x4f7a, 0x734a, 0x6057, 0x0000, 0x0000, + 0x0000, 0x5147, 0x692e, 0x0000, 0x683d, 0x0000, 0x0000, 0x7a44, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x624f, 0x0000, + 0x0000, 0x7a45, 0x0000, 0x0000, 0x0000, 0x7938, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5c60, 0x0000, 0x0000, + 0x7b30, 0x0000, 0x0000, 0x0000, 0x5829, 0x655f, 0x7927, 0x0000, + 0x0000, 0x766e, 0x0000, 0x764c, 0x6278, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6c71, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5a60, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x7152, 0x524c, 0x4f4b, 0x0000, 0x0000, 0x4a3d, 0x0000, 0x0000, + 0x0000, 0x5d3f, 0x0000, 0x0000, 0x0000, 0x766f, 0x0000, 0x5e79, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7a34, 0x0000, 0x0000, + 0x0000, 0x5169, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7167 +}; + +static unsigned short ksc5601_from_unicode_9a[] = { + 0x0000, 0x5e3e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5c40, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5148, 0x5149, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x783e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x4b76, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5479, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7562, 0x6153, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5869, 0x0000, 0x0000, 0x787e, 0x0000, 0x4f4c, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7d24, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4e76, 0x0000, 0x7a50, + 0x0000, 0x0000, 0x4c73, 0x663e, 0x0000, 0x0000, 0x0000, 0x762e, + 0x0000, 0x0000, 0x5570, 0x0000, 0x0000, 0x514a, 0x0000, 0x0000, + 0x0000, 0x7c3e, 0x5571, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4d69, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x7a35, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x6250, 0x7477, 0x0000, 0x0000, 0x0000, + 0x4d54, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6723, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5b25, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_9b[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6251, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5722, + 0x0000, 0x0000, 0x7763, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6a26, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x5021, 0x0000, 0x0000, 0x0000, + 0x0000, 0x4e5a, 0x7b6b, 0x5b26, 0x5b5e, 0x5865, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6a60, + 0x0000, 0x0000, 0x0000, 0x0000, 0x582a, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6560, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x524d, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6f46, 0x0000, + 0x0000, 0x786a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6455, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x4e77, 0x0000, 0x0000, 0x6058, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x576f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x746d, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4d66, 0x0000, 0x0000, 0x0000, + 0x4c74, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_9c[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7563, 0x0000, 0x0000, + 0x644a, 0x0000, 0x5c61, 0x0000, 0x0000, 0x7948, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7c3f, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6827, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x5844, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4b3e, + 0x0000, 0x5c2e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5777, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7068, 0x0000, 0x5d40, + 0x0000, 0x4f4d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x5c73, 0x5930, 0x0000, 0x6669, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_9d[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x643c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x6a44, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x646c, 0x0000, + 0x6465, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x7b78, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x4c3b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x643d, 0x0000, 0x0000, + 0x4d5c, 0x5977, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x5d5f, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6d4e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5950, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6523, + 0x0000, 0x0000, 0x0000, 0x0000, 0x794d, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4d2e, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4f4e, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x762f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x7d53, 0x6b6d, 0x524e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_9e[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6524, 0x0000, 0x0000, 0x0000, 0x5172, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x565d, 0x0000, 0x0000, + 0x0000, 0x7969, 0x0000, 0x0000, 0x0000, 0x6724, 0x0000, 0x5254, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x514b, 0x5664, 0x0000, 0x0000, 0x0000, 0x5572, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5e7a, 0x0000, 0x5778, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x586a, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4f55, 0x587d, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x582b, 0x0000, 0x0000, 0x7d4b, 0x0000, + 0x0000, 0x0000, 0x0000, 0x7c5c, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6028, 0x5573, 0x0000, + 0x0000, 0x7d59, 0x0000, 0x0000, 0x4c23, 0x0000, 0x0000, 0x0000, + 0x5979, 0x0000, 0x0000, 0x536a, 0x7575, 0x0000, 0x6f47, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x535a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x5a3d, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_9f[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6828, + 0x5c2f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7023, 0x0000, + 0x0000, 0x0000, 0x0000, 0x4d55, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6029, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x5e2c, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x703a, 0x6e31, 0x0000, 0x0000, 0x6e32, 0x0000, + 0x0000, 0x0000, 0x764d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6e52, + 0x0000, 0x5646, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6065, + 0x0000, 0x0000, 0x733b, 0x0000, 0x6561, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x644b, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5723, 0x0000, 0x0000, + 0x5b42, 0x0000, 0x0000, 0x0000, 0x0000, 0x4a7e, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4f4f, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_ac[] = { + 0x3021, 0x3022, 0x0000, 0x0000, 0x3023, 0x0000, 0x0000, 0x3024, + 0x3025, 0x3026, 0x3027, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3028, 0x3029, 0x302a, 0x302b, 0x302c, 0x302d, 0x302e, 0x302f, + 0x0000, 0x3030, 0x3031, 0x3032, 0x3033, 0x3034, 0x0000, 0x0000, + 0x3035, 0x0000, 0x0000, 0x0000, 0x3036, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3037, 0x3038, 0x0000, 0x3039, + 0x303a, 0x303b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x303c, 0x303d, 0x0000, 0x0000, 0x303e, 0x0000, 0x0000, 0x0000, + 0x303f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x3040, 0x0000, 0x3041, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3042, 0x0000, 0x0000, 0x0000, + 0x3043, 0x0000, 0x0000, 0x0000, 0x3044, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3045, 0x3046, 0x0000, 0x0000, 0x3047, 0x0000, 0x0000, 0x3048, + 0x3049, 0x0000, 0x304a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x304b, 0x304c, 0x0000, 0x304d, 0x304e, 0x304f, 0x3050, 0x0000, + 0x0000, 0x3051, 0x3052, 0x3053, 0x3054, 0x0000, 0x0000, 0x0000, + 0x3055, 0x0000, 0x0000, 0x0000, 0x3056, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3057, 0x3058, 0x0000, 0x3059, + 0x305a, 0x305b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x305c, 0x305d, 0x305e, 0x0000, 0x305f, 0x0000, 0x0000, 0x3060, + 0x3061, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3062, 0x3063, 0x0000, 0x3064, 0x3065, 0x3066, 0x0000, 0x0000, + 0x0000, 0x3067, 0x0000, 0x0000, 0x3068, 0x0000, 0x0000, 0x0000, + 0x3069, 0x0000, 0x0000, 0x0000, 0x306a, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x306b, 0x0000, 0x306c, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x306d, 0x306e, 0x0000, 0x0000, 0x306f, 0x0000, 0x0000, 0x3070, + 0x3071, 0x0000, 0x3072, 0x0000, 0x3073, 0x0000, 0x0000, 0x3074, + 0x3075, 0x3076, 0x0000, 0x3077, 0x0000, 0x3078, 0x3079, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x307a, 0x307b, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_ad[] = { + 0x307c, 0x0000, 0x0000, 0x0000, 0x307d, 0x0000, 0x307e, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3121, 0x3122, 0x0000, 0x3123, + 0x0000, 0x3124, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3125, 0x0000, 0x0000, 0x0000, 0x3126, 0x0000, 0x0000, 0x0000, + 0x3127, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x3128, 0x0000, 0x0000, 0x3129, 0x312a, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x312b, 0x312c, 0x0000, 0x0000, + 0x312d, 0x0000, 0x0000, 0x0000, 0x312e, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x312f, 0x3130, 0x0000, 0x3131, + 0x0000, 0x3132, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3133, 0x0000, 0x0000, 0x0000, 0x3134, 0x0000, 0x0000, 0x0000, + 0x3135, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x3136, 0x0000, 0x3137, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3138, 0x3139, 0x0000, 0x0000, + 0x313a, 0x0000, 0x0000, 0x313b, 0x313c, 0x313d, 0x313e, 0x0000, + 0x0000, 0x0000, 0x0000, 0x313f, 0x3140, 0x3141, 0x0000, 0x3142, + 0x0000, 0x3143, 0x3144, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3145, 0x3146, 0x0000, 0x0000, 0x3147, 0x0000, 0x0000, 0x0000, + 0x3148, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3149, 0x314a, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x314b, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x314c, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x314d, 0x314e, 0x0000, 0x0000, 0x314f, 0x0000, 0x0000, 0x0000, + 0x3150, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3151, 0x3152, 0x0000, 0x3153, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3154, 0x0000, 0x0000, 0x0000, + 0x3155, 0x0000, 0x0000, 0x0000, 0x3156, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3157, 0x3158, 0x0000, 0x0000, 0x3159, 0x0000, 0x0000, 0x315a +}; + +static unsigned short ksc5601_from_unicode_ae[] = { + 0x315b, 0x315c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x315d, 0x315e, 0x0000, 0x315f, 0x0000, 0x3160, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3161, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3162, 0x3163, 0x0000, 0x0000, 0x3164, 0x0000, 0x0000, 0x3165, + 0x3166, 0x0000, 0x3167, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3168, 0x3169, 0x0000, 0x316a, 0x0000, 0x316b, 0x316c, 0x0000, + 0x0000, 0x0000, 0x316d, 0x0000, 0x316e, 0x316f, 0x3170, 0x0000, + 0x3171, 0x0000, 0x0000, 0x0000, 0x3172, 0x0000, 0x3173, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3174, 0x3175, 0x0000, 0x3176, + 0x3177, 0x3178, 0x0000, 0x0000, 0x0000, 0x3179, 0x0000, 0x0000, + 0x317a, 0x317b, 0x0000, 0x0000, 0x317c, 0x0000, 0x0000, 0x0000, + 0x317d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x317e, 0x3221, 0x0000, 0x3222, 0x3223, 0x3224, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3225, 0x3226, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3227, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3228, 0x3229, 0x322a, 0x0000, + 0x322b, 0x0000, 0x0000, 0x0000, 0x322c, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x322d, 0x322e, 0x0000, 0x322f, + 0x3230, 0x3231, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3232, 0x3233, 0x0000, 0x0000, 0x3234, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3235, 0x0000, 0x0000, 0x3236, 0x0000, 0x3237, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3238, 0x0000, 0x0000, 0x0000, + 0x3239, 0x0000, 0x0000, 0x0000, 0x323a, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_af[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x323b, + 0x323c, 0x0000, 0x0000, 0x0000, 0x0000, 0x323d, 0x0000, 0x0000, + 0x323e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x323f, 0x3240, 0x0000, 0x0000, + 0x3241, 0x0000, 0x3242, 0x0000, 0x3243, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3244, 0x3245, 0x0000, 0x3246, + 0x0000, 0x3247, 0x3248, 0x3249, 0x0000, 0x0000, 0x0000, 0x0000, + 0x324a, 0x324b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x324c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x324d, 0x324e, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x324f, 0x3250, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x3251, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3252, 0x0000, 0x0000, 0x0000, 0x3253, 0x0000, 0x0000, 0x0000, + 0x3254, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3255, 0x3256, 0x0000, 0x0000, 0x0000, 0x3257, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3258, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3259, 0x325a, 0x0000, 0x0000, 0x325b, 0x0000, 0x0000, 0x0000, + 0x325c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x325d, + 0x325e, 0x325f, 0x0000, 0x3260, 0x0000, 0x3261, 0x3262, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3263, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3264, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3265, 0x3266, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3267, 0x3268, 0x0000, 0x0000, 0x3269, 0x0000, 0x0000, 0x0000, + 0x326a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_b0[] = { + 0x326b, 0x326c, 0x0000, 0x0000, 0x326d, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x326e, 0x0000, 0x0000, 0x0000, + 0x326f, 0x0000, 0x0000, 0x0000, 0x3270, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3271, 0x3272, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3273, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3274, 0x3275, 0x0000, 0x0000, + 0x3276, 0x0000, 0x3277, 0x0000, 0x3278, 0x0000, 0x3279, 0x0000, + 0x0000, 0x0000, 0x0000, 0x327a, 0x327b, 0x327c, 0x0000, 0x327d, + 0x0000, 0x327e, 0x0000, 0x0000, 0x0000, 0x3321, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3322, 0x3323, 0x0000, 0x0000, + 0x3324, 0x0000, 0x0000, 0x0000, 0x3325, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3326, 0x3327, 0x0000, 0x3328, + 0x0000, 0x3329, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x332a, 0x332b, 0x332c, 0x0000, 0x332d, 0x0000, 0x0000, 0x332e, + 0x332f, 0x3330, 0x3331, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3332, 0x3333, 0x0000, 0x3334, 0x3335, 0x3336, 0x3337, 0x3338, + 0x0000, 0x3339, 0x0000, 0x333a, 0x333b, 0x333c, 0x0000, 0x0000, + 0x333d, 0x0000, 0x0000, 0x0000, 0x333e, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x333f, 0x3340, 0x0000, 0x3341, + 0x3342, 0x3343, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3344, 0x3345, 0x0000, 0x0000, 0x3346, 0x0000, 0x0000, 0x0000, + 0x3347, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3348, 0x0000, 0x0000, 0x0000, 0x0000, 0x3349, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_b1[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x334a, 0x334b, 0x0000, 0x334c, 0x334d, 0x0000, 0x0000, 0x0000, + 0x334e, 0x0000, 0x334f, 0x3350, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3351, 0x3352, 0x0000, 0x3353, 0x3354, 0x3355, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x3356, 0x3357, 0x3358, 0x0000, 0x0000, + 0x3359, 0x0000, 0x0000, 0x0000, 0x335a, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x335b, 0x335c, 0x0000, 0x335d, + 0x335e, 0x335f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3360, 0x3361, 0x0000, 0x0000, 0x3362, 0x0000, 0x0000, 0x0000, + 0x3363, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3364, 0x3365, 0x0000, 0x0000, 0x3366, 0x3367, 0x0000, 0x0000, + 0x3368, 0x0000, 0x0000, 0x0000, 0x3369, 0x0000, 0x0000, 0x0000, + 0x336a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x336b, 0x336c, 0x0000, 0x0000, 0x336d, 0x0000, 0x0000, 0x0000, + 0x336e, 0x0000, 0x336f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3370, 0x3371, 0x0000, 0x3372, 0x0000, 0x3373, 0x0000, 0x0000, + 0x0000, 0x0000, 0x3374, 0x3375, 0x3376, 0x0000, 0x0000, 0x0000, + 0x3377, 0x0000, 0x0000, 0x0000, 0x3378, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3379, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x337a, 0x0000, 0x0000, 0x0000, + 0x337b, 0x0000, 0x0000, 0x0000, 0x337c, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x337d, 0x337e, 0x0000, 0x3421, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3422, 0x3423, 0x0000, 0x0000, 0x3424, 0x0000, 0x0000, 0x0000, + 0x3425, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x3426, 0x0000, 0x3427, 0x0000, 0x3428, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_b2[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x3429, 0x342a, 0x0000, 0x0000, + 0x342b, 0x0000, 0x0000, 0x342c, 0x342d, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x342e, 0x342f, 0x0000, 0x3430, + 0x0000, 0x3431, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3432, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3433, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3434, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3435, 0x0000, 0x0000, 0x0000, 0x3436, 0x0000, 0x0000, 0x0000, + 0x3437, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3438, 0x3439, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x343a, 0x343b, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x343c, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x343d, 0x343e, 0x0000, 0x0000, + 0x0000, 0x343f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3440, 0x3441, 0x0000, 0x0000, 0x3442, 0x0000, 0x0000, 0x0000, + 0x3443, 0x3444, 0x3445, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3446, 0x3447, 0x0000, 0x3448, 0x0000, 0x3449, 0x344a, 0x0000, + 0x0000, 0x0000, 0x344b, 0x0000, 0x344c, 0x0000, 0x0000, 0x0000, + 0x344d, 0x0000, 0x0000, 0x0000, 0x344e, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x344f, 0x3450, 0x0000, 0x0000, 0x3451, 0x0000, 0x0000, 0x0000, + 0x3452, 0x0000, 0x3453, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3454, 0x3455, 0x0000, 0x3456, 0x0000, 0x3457, 0x0000, 0x0000, + 0x0000, 0x0000, 0x3458, 0x0000, 0x3459, 0x345a, 0x345b, 0x0000, + 0x345c, 0x0000, 0x0000, 0x345d, 0x345e, 0x345f, 0x3460, 0x3461, + 0x0000, 0x0000, 0x0000, 0x3462, 0x3463, 0x3464, 0x0000, 0x3465, + 0x3466, 0x3467, 0x3468, 0x3469, 0x0000, 0x0000, 0x0000, 0x346a +}; + +static unsigned short ksc5601_from_unicode_b3[] = { + 0x346b, 0x346c, 0x0000, 0x0000, 0x346d, 0x0000, 0x0000, 0x0000, + 0x346e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x346f, 0x3470, 0x0000, 0x3471, 0x3472, 0x3473, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3474, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3475, 0x3476, 0x3477, 0x0000, + 0x3478, 0x0000, 0x0000, 0x3479, 0x347a, 0x0000, 0x347b, 0x347c, + 0x0000, 0x0000, 0x0000, 0x0000, 0x347d, 0x347e, 0x0000, 0x3521, + 0x0000, 0x3522, 0x0000, 0x3523, 0x0000, 0x0000, 0x3524, 0x0000, + 0x3525, 0x3526, 0x0000, 0x0000, 0x3527, 0x0000, 0x0000, 0x0000, + 0x3528, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3529, 0x352a, 0x0000, 0x352b, 0x352c, 0x352d, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x352e, 0x0000, 0x0000, 0x0000, + 0x352f, 0x0000, 0x0000, 0x0000, 0x3530, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3531, 0x3532, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3533, 0x0000, 0x0000, 0x0000, 0x3534, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3535, 0x3536, 0x0000, 0x0000, + 0x3537, 0x0000, 0x0000, 0x3538, 0x3539, 0x0000, 0x353a, 0x0000, + 0x353b, 0x0000, 0x0000, 0x0000, 0x353c, 0x353d, 0x0000, 0x353e, + 0x0000, 0x353f, 0x0000, 0x3540, 0x0000, 0x3541, 0x0000, 0x0000, + 0x3542, 0x0000, 0x0000, 0x0000, 0x3543, 0x0000, 0x0000, 0x0000, + 0x3544, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3545, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_b4[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3546, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3547, 0x0000, 0x0000, 0x0000, 0x3548, 0x0000, 0x0000, 0x0000, + 0x3549, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x354a, 0x354b, 0x0000, 0x354c, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x354d, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x354e, 0x354f, 0x0000, 0x0000, 0x3550, 0x0000, 0x0000, 0x0000, + 0x3551, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3552, 0x3553, 0x0000, 0x3554, 0x0000, 0x3555, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3556, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3557, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3558, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3559, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x355a, 0x0000, 0x0000, 0x0000, + 0x355b, 0x0000, 0x0000, 0x0000, 0x355c, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x355d, 0x0000, 0x355e, + 0x0000, 0x355f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3560, 0x0000, 0x0000, 0x0000, 0x3561, 0x0000, 0x0000, 0x0000, + 0x3562, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3563, 0x0000, 0x0000, 0x0000, 0x0000, 0x3564, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3565, 0x3566, 0x0000, 0x0000, + 0x3567, 0x0000, 0x0000, 0x3568, 0x3569, 0x0000, 0x356a, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x356b, 0x356c, 0x0000, 0x356d, + 0x0000, 0x356e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x356f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_b5[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3570, 0x3571, 0x0000, 0x0000, + 0x3572, 0x0000, 0x0000, 0x3573, 0x3574, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3575, 0x3576, 0x0000, 0x3577, + 0x3578, 0x3579, 0x357a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x357b, 0x357c, 0x0000, 0x0000, 0x357d, 0x0000, 0x0000, 0x0000, + 0x357e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3621, 0x3622, 0x0000, 0x3623, 0x3624, 0x3625, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x3626, 0x3627, 0x3628, 0x0000, 0x0000, + 0x3629, 0x0000, 0x0000, 0x0000, 0x362a, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x362b, 0x362c, 0x0000, 0x362d, + 0x362e, 0x362f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3630, 0x3631, 0x0000, 0x0000, 0x3632, 0x0000, 0x0000, 0x0000, + 0x3633, 0x0000, 0x3634, 0x3635, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3636, 0x3637, 0x0000, 0x3638, 0x3639, 0x363a, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x363b, 0x363c, 0x363d, 0x0000, 0x0000, + 0x363e, 0x0000, 0x0000, 0x0000, 0x363f, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3640, 0x3641, 0x0000, 0x3642, + 0x3643, 0x3644, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3645, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3646, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_b6[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3647, 0x3648, 0x0000, 0x0000, 0x3649, 0x0000, 0x0000, 0x0000, + 0x364a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x364b, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x364c, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x364d, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x364e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x364f, 0x0000, 0x0000, 0x0000, + 0x3650, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3651, 0x3652, 0x0000, 0x0000, + 0x3653, 0x0000, 0x0000, 0x0000, 0x3654, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x3655, 0x3656, 0x0000, 0x0000, 0x0000, + 0x0000, 0x3657, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3658, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3659, 0x0000, 0x0000, 0x0000, 0x365a, 0x0000, 0x0000, 0x0000, + 0x365b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_b7[] = { + 0x365c, 0x365d, 0x0000, 0x0000, 0x0000, 0x365e, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x365f, 0x3660, 0x0000, 0x0000, 0x3661, 0x0000, 0x0000, 0x3662, + 0x3663, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3664, 0x3665, 0x0000, 0x3666, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3667, 0x0000, 0x0000, 0x0000, + 0x3668, 0x0000, 0x0000, 0x0000, 0x3669, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x366a, 0x366b, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x366c, 0x0000, 0x0000, 0x0000, 0x366d, 0x0000, 0x0000, 0x0000, + 0x366e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x366f, 0x3670, 0x0000, 0x3671, 0x0000, 0x3672, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3673, 0x3674, 0x0000, 0x0000, + 0x3675, 0x0000, 0x0000, 0x0000, 0x3676, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3677, 0x3678, 0x0000, 0x3679, + 0x367a, 0x367b, 0x367c, 0x0000, 0x0000, 0x0000, 0x367d, 0x367e, + 0x3721, 0x3722, 0x0000, 0x0000, 0x3723, 0x0000, 0x0000, 0x0000, + 0x3724, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3725, 0x3726, 0x0000, 0x3727, 0x3728, 0x3729, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x372a, 0x372b, 0x0000, 0x0000, + 0x372c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x372d, + 0x0000, 0x372e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x372f, 0x3730, 0x0000, 0x0000, + 0x3731, 0x0000, 0x0000, 0x0000, 0x3732, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3733, 0x3734, 0x0000, 0x3735 +}; + +static unsigned short ksc5601_from_unicode_b8[] = { + 0x3736, 0x3737, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3738, + 0x3739, 0x373a, 0x0000, 0x0000, 0x373b, 0x0000, 0x0000, 0x0000, + 0x373c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x373d, 0x373e, 0x0000, 0x373f, 0x0000, 0x3740, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3741, 0x3742, 0x0000, 0x0000, + 0x3743, 0x0000, 0x0000, 0x0000, 0x3744, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3745, 0x3746, 0x0000, 0x3747, + 0x3748, 0x3749, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x374a, 0x0000, 0x0000, 0x0000, 0x374b, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x374c, 0x0000, 0x374d, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x374e, 0x374f, 0x0000, 0x0000, + 0x3750, 0x0000, 0x0000, 0x0000, 0x3751, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3752, 0x3753, 0x0000, 0x3754, + 0x0000, 0x3755, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3756, 0x0000, 0x0000, 0x0000, 0x3757, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3758, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3759, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x375a, 0x0000, 0x0000, 0x0000, 0x375b, 0x0000, 0x0000, 0x0000, + 0x375c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x375d, 0x375e, 0x0000, 0x375f, 0x0000, 0x3760, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3761, 0x0000, 0x0000, 0x0000, + 0x3762, 0x0000, 0x0000, 0x0000, 0x3763, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3764, 0x0000, 0x3765, + 0x0000, 0x3766, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3767, 0x3768, 0x0000, 0x0000, 0x3769, 0x0000, 0x0000, 0x0000, + 0x376a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x376b, 0x376c, 0x0000, 0x376d, 0x0000, 0x376e, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_b9[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x376f, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3770, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3771, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3772, 0x3773, 0x0000, 0x0000, + 0x3774, 0x0000, 0x0000, 0x0000, 0x3775, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3776, 0x0000, 0x0000, 0x3777, + 0x0000, 0x3778, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3779, 0x377a, 0x0000, 0x0000, 0x377b, 0x0000, 0x0000, 0x0000, + 0x377c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x377d, 0x377e, 0x0000, 0x3821, 0x0000, 0x3822, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3823, 0x3824, 0x0000, 0x0000, + 0x3825, 0x0000, 0x0000, 0x0000, 0x3826, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3827, 0x3828, 0x0000, 0x3829, + 0x0000, 0x382a, 0x382b, 0x0000, 0x0000, 0x382c, 0x382d, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x382e, 0x382f, 0x0000, 0x0000, + 0x3830, 0x0000, 0x0000, 0x0000, 0x3831, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3832, 0x3833, 0x0000, 0x3834, + 0x0000, 0x3835, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3836, 0x3837, 0x0000, 0x0000, 0x3838, 0x0000, 0x3839, 0x383a, + 0x383b, 0x383c, 0x383d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x383e, 0x383f, 0x0000, 0x3840, 0x0000, 0x3841, 0x3842, 0x0000, + 0x0000, 0x3843, 0x0000, 0x3844, 0x3845, 0x3846, 0x0000, 0x0000, + 0x3847, 0x0000, 0x0000, 0x0000, 0x3848, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3849, 0x384a, 0x0000, 0x384b, + 0x384c, 0x384d, 0x384e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_ba[] = { + 0x384f, 0x3850, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3851, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3852, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3853, 0x3854, 0x0000, 0x0000, 0x3855, 0x0000, 0x0000, 0x0000, + 0x3856, 0x0000, 0x3857, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3858, 0x3859, 0x0000, 0x385a, 0x0000, 0x385b, 0x385c, 0x0000, + 0x0000, 0x0000, 0x0000, 0x385d, 0x385e, 0x385f, 0x0000, 0x0000, + 0x3860, 0x0000, 0x0000, 0x0000, 0x3861, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3862, 0x3863, 0x0000, 0x3864, + 0x3865, 0x3866, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3867, 0x3868, 0x0000, 0x0000, 0x3869, 0x0000, 0x0000, 0x0000, + 0x386a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x386b, 0x386c, 0x386d, 0x0000, 0x386e, + 0x0000, 0x0000, 0x0000, 0x0000, 0x386f, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3870, 0x3871, 0x0000, 0x3872, 0x3873, 0x0000, 0x0000, 0x0000, + 0x3874, 0x0000, 0x3875, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3876, 0x3877, 0x0000, 0x3878, 0x0000, 0x3879, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x387a, 0x0000, 0x0000, 0x0000, + 0x387b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x387c, 0x387d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x387e, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_bb[] = { + 0x3921, 0x0000, 0x0000, 0x0000, 0x3922, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3923, 0x0000, 0x3924, + 0x0000, 0x3925, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3926, 0x0000, 0x0000, 0x0000, 0x3927, 0x0000, 0x0000, 0x0000, + 0x3928, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x3929, 0x0000, 0x392a, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x392b, 0x392c, 0x392d, 0x0000, + 0x392e, 0x0000, 0x0000, 0x392f, 0x3930, 0x3931, 0x3932, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3933, 0x3934, 0x0000, 0x3935, + 0x0000, 0x3936, 0x0000, 0x0000, 0x0000, 0x3937, 0x0000, 0x3938, + 0x3939, 0x0000, 0x0000, 0x0000, 0x393a, 0x0000, 0x0000, 0x0000, + 0x393b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x393c, 0x0000, 0x393d, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x393e, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x393f, 0x0000, 0x0000, 0x0000, 0x3940, 0x0000, 0x0000, 0x0000, + 0x3941, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3942, 0x0000, 0x0000, 0x0000, + 0x3943, 0x0000, 0x0000, 0x0000, 0x3944, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3945, 0x0000, 0x0000, 0x3946, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3947, 0x0000, 0x0000, 0x0000, 0x3948, 0x0000, 0x0000, 0x0000, + 0x3949, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x394a, 0x0000, 0x0000, 0x394b, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x394c, 0x394d, 0x0000, 0x0000, 0x394e, 0x0000, 0x0000, 0x394f +}; + +static unsigned short ksc5601_from_unicode_bc[] = { + 0x3950, 0x0000, 0x3951, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3952, 0x3953, 0x0000, 0x3954, 0x3955, 0x3956, 0x0000, 0x3957, + 0x0000, 0x3958, 0x0000, 0x0000, 0x3959, 0x395a, 0x395b, 0x395c, + 0x395d, 0x0000, 0x0000, 0x395e, 0x395f, 0x3960, 0x3961, 0x3962, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3963, 0x3964, 0x0000, 0x3965, + 0x0000, 0x3966, 0x0000, 0x0000, 0x0000, 0x3967, 0x0000, 0x0000, + 0x3968, 0x3969, 0x0000, 0x0000, 0x396a, 0x0000, 0x0000, 0x0000, + 0x396b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x396c, 0x396d, 0x0000, 0x396e, 0x396f, 0x3970, 0x0000, 0x0000, + 0x0000, 0x3971, 0x0000, 0x0000, 0x3972, 0x3973, 0x0000, 0x0000, + 0x3974, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3975, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3976, 0x3977, 0x0000, 0x0000, + 0x3978, 0x0000, 0x0000, 0x3979, 0x397a, 0x0000, 0x397b, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x397c, 0x397d, 0x0000, 0x397e, + 0x0000, 0x3a21, 0x3a22, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3a23, 0x3a24, 0x0000, 0x0000, 0x3a25, 0x0000, 0x0000, 0x3a26, + 0x3a27, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3a28, 0x3a29, 0x0000, 0x3a2a, 0x3a2b, 0x3a2c, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3a2d, 0x3a2e, 0x0000, 0x0000, + 0x3a2f, 0x0000, 0x0000, 0x0000, 0x3a30, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3a31, 0x0000, 0x3a32, + 0x3a33, 0x3a34, 0x0000, 0x0000, 0x0000, 0x3a35, 0x0000, 0x0000, + 0x3a36, 0x0000, 0x0000, 0x0000, 0x3a37, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3a38, 0x3a39, 0x3a3a, 0x0000, + 0x3a3b, 0x0000, 0x0000, 0x0000, 0x3a3c, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_bd[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x3a3d, 0x3a3e, 0x0000, 0x3a3f, + 0x0000, 0x3a40, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3a41, 0x0000, 0x0000, 0x0000, 0x3a42, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3a43, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3a44, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3a45, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3a46, 0x3a47, 0x0000, 0x0000, 0x3a48, 0x0000, 0x0000, 0x0000, + 0x3a49, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3a4a, 0x3a4b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3a4c, 0x0000, 0x0000, 0x0000, + 0x3a4d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3a4e, 0x3a4f, 0x0000, 0x0000, 0x3a50, 0x0000, 0x0000, 0x3a51, + 0x3a52, 0x3a53, 0x3a54, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3a55, 0x3a56, 0x0000, 0x3a57, 0x0000, 0x3a58, 0x0000, 0x0000, + 0x0000, 0x3a59, 0x3a5a, 0x0000, 0x3a5b, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3a5c, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3a5d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3a5e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3a5f, 0x3a60, 0x0000, 0x0000, + 0x3a61, 0x0000, 0x0000, 0x0000, 0x3a62, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x3a63, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3a64, 0x0000, 0x0000, 0x0000, 0x3a65, 0x0000, 0x0000, 0x0000, + 0x3a66, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_be[] = { + 0x3a67, 0x0000, 0x0000, 0x3a68, 0x0000, 0x3a69, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3a6a, 0x3a6b, 0x0000, 0x0000, + 0x3a6c, 0x0000, 0x0000, 0x0000, 0x3a6d, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3a6e, 0x3a6f, 0x0000, 0x3a70, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3a71, 0x3a72, 0x0000, 0x0000, + 0x3a73, 0x0000, 0x0000, 0x0000, 0x3a74, 0x0000, 0x3a75, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3a76, 0x3a77, 0x0000, 0x3a78, + 0x0000, 0x3a79, 0x3a7a, 0x3a7b, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3a7c, 0x3a7d, 0x0000, 0x0000, 0x3a7e, 0x0000, 0x0000, 0x0000, + 0x3b21, 0x0000, 0x3b22, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3b23, 0x3b24, 0x0000, 0x3b25, 0x3b26, 0x3b27, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x3b28, 0x3b29, 0x3b2a, 0x0000, 0x0000, + 0x3b2b, 0x0000, 0x0000, 0x0000, 0x3b2c, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3b2d, 0x3b2e, 0x0000, 0x3b2f, + 0x3b30, 0x3b31, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3b32, 0x3b33, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3b34, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3b35, 0x3b36, 0x0000, 0x0000, 0x3b37, 0x0000, 0x0000, 0x3b38, + 0x3b39, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3b3a, 0x0000, 0x0000, 0x3b3b, 0x3b3c, 0x3b3d, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3b3e, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_bf[] = { + 0x0000, 0x3b3f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3b40, 0x3b41, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3b42, 0x3b43, 0x0000, 0x3b44, 0x3b45, 0x3b46, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3b47, 0x3b48, 0x0000, 0x0000, 0x3b49, 0x0000, 0x0000, 0x0000, + 0x3b4a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3b4b, 0x3b4c, 0x0000, 0x0000, 0x0000, 0x3b4d, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3b4e, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3b4f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3b50, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3b51, 0x3b52, 0x0000, 0x0000, + 0x3b53, 0x0000, 0x0000, 0x0000, 0x3b54, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3b55, 0x0000, 0x0000, 0x3b56, + 0x0000, 0x3b57, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_c0[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3b58, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x3b59, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3b5a, 0x0000, 0x0000, 0x0000, 0x3b5b, 0x0000, 0x0000, 0x0000, + 0x3b5c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3b5d, 0x3b5e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3b5f, 0x3b60, 0x0000, 0x0000, 0x3b61, 0x0000, 0x0000, 0x0000, + 0x3b62, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3b63, 0x3b64, 0x0000, 0x3b65, 0x0000, 0x3b66, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3b67, 0x3b68, 0x0000, 0x3b69, + 0x3b6a, 0x0000, 0x0000, 0x3b6b, 0x3b6c, 0x3b6d, 0x3b6e, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3b6f, 0x3b70, 0x0000, 0x3b71, + 0x3b72, 0x3b73, 0x0000, 0x0000, 0x0000, 0x3b74, 0x0000, 0x0000, + 0x3b75, 0x3b76, 0x0000, 0x0000, 0x3b77, 0x0000, 0x0000, 0x0000, + 0x3b78, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3b79, 0x3b7a, 0x0000, 0x3b7b, 0x3b7c, 0x3b7d, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3b7e, 0x3c21, 0x0000, 0x0000, + 0x3c22, 0x0000, 0x0000, 0x0000, 0x3c23, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3c24, 0x3c25, 0x0000, 0x3c26, + 0x0000, 0x3c27, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_c1[] = { + 0x3c28, 0x0000, 0x0000, 0x0000, 0x3c29, 0x0000, 0x0000, 0x0000, + 0x3c2a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3c2b, 0x0000, 0x0000, 0x0000, 0x0000, 0x3c2c, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3c2d, 0x3c2e, 0x3c2f, 0x3c30, + 0x3c31, 0x0000, 0x0000, 0x3c32, 0x3c33, 0x0000, 0x3c34, 0x3c35, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3c36, 0x3c37, 0x0000, 0x3c38, + 0x3c39, 0x3c3a, 0x0000, 0x0000, 0x0000, 0x0000, 0x3c3b, 0x0000, + 0x3c3c, 0x3c3d, 0x0000, 0x0000, 0x3c3e, 0x0000, 0x0000, 0x0000, + 0x3c3f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3c40, 0x3c41, 0x0000, 0x3c42, 0x3c43, 0x3c44, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3c45, 0x3c46, 0x0000, 0x0000, + 0x3c47, 0x0000, 0x0000, 0x0000, 0x3c48, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3c49, 0x3c4a, 0x0000, 0x3c4b, + 0x3c4c, 0x3c4d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3c4e, 0x0000, 0x0000, 0x0000, 0x3c4f, 0x0000, 0x0000, 0x0000, + 0x3c50, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3c51, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3c52, 0x3c53, 0x3c54, 0x0000, + 0x3c55, 0x0000, 0x0000, 0x0000, 0x3c56, 0x0000, 0x3c57, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3c58, 0x3c59, 0x0000, 0x3c5a, + 0x0000, 0x3c5b, 0x0000, 0x0000, 0x0000, 0x3c5c, 0x0000, 0x0000, + 0x3c5d, 0x3c5e, 0x0000, 0x0000, 0x3c5f, 0x0000, 0x0000, 0x0000, + 0x3c60, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3c61, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3c62, 0x0000, 0x0000, 0x0000, + 0x3c63, 0x0000, 0x0000, 0x0000, 0x3c64, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3c65, 0x0000, 0x0000, 0x3c66, + 0x3c67, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3c68, 0x0000, 0x0000, 0x0000, 0x3c69, 0x0000, 0x0000, 0x0000, + 0x3c6a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3c6b, 0x3c6c, 0x0000, 0x3c6d, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3c6e, 0x3c6f, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_c2[] = { + 0x3c70, 0x0000, 0x0000, 0x0000, 0x3c71, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3c72, 0x3c73, 0x0000, 0x3c74, + 0x0000, 0x3c75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3c76, 0x3c77, 0x0000, 0x0000, 0x3c78, 0x0000, 0x0000, 0x3c79, + 0x3c7a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3c7b, 0x3c7c, 0x0000, 0x3c7d, 0x0000, 0x3c7e, 0x0000, 0x3d21, + 0x0000, 0x3d22, 0x3d23, 0x0000, 0x3d24, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3d25, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3d26, 0x3d27, 0x0000, 0x0000, 0x3d28, 0x0000, 0x0000, 0x0000, + 0x3d29, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3d2a, 0x0000, 0x0000, 0x0000, 0x0000, 0x3d2b, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3d2c, 0x3d2d, 0x0000, 0x0000, + 0x3d2e, 0x0000, 0x0000, 0x0000, 0x3d2f, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3d30, 0x3d31, 0x0000, 0x3d32, + 0x0000, 0x3d33, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3d34, 0x3d35, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3d36, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3d37, 0x0000, 0x0000, 0x3d38, 0x0000, 0x3d39, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3d3a, 0x3d3b, 0x0000, 0x0000, + 0x3d3c, 0x0000, 0x0000, 0x0000, 0x3d3d, 0x3d3e, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3d3f, 0x3d40, 0x0000, 0x3d41, + 0x0000, 0x3d42, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3d43, 0x3d44, 0x0000, 0x0000, + 0x3d45, 0x0000, 0x0000, 0x3d46, 0x3d47, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x3d48, 0x3d49, 0x3d4a, 0x0000, 0x3d4b, + 0x0000, 0x3d4c, 0x0000, 0x0000, 0x0000, 0x0000, 0x3d4d, 0x0000, + 0x3d4e, 0x3d4f, 0x0000, 0x3d50, 0x3d51, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_c3[] = { + 0x3d52, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3d53, 0x3d54, 0x0000, 0x0000, 0x3d55, 0x3d56, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x3d57, 0x3d58, 0x3d59, 0x0000, 0x0000, + 0x3d5a, 0x0000, 0x0000, 0x0000, 0x3d5b, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3d5c, 0x3d5d, 0x0000, 0x0000, + 0x3d5e, 0x3d5f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3d60, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3d61, 0x3d62, 0x0000, 0x0000, 0x3d63, 0x0000, 0x0000, 0x0000, + 0x3d64, 0x0000, 0x3d65, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3d66, 0x3d67, 0x0000, 0x0000, 0x3d68, 0x3d69, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3d6a, 0x0000, 0x0000, 0x0000, + 0x3d6b, 0x0000, 0x0000, 0x0000, 0x3d6c, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3d6d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3d6e, 0x3d6f, 0x0000, 0x0000, 0x3d70, 0x0000, 0x0000, 0x3d71, + 0x3d72, 0x0000, 0x3d73, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3d74, 0x3d75, 0x0000, 0x0000, 0x0000, 0x3d76, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3d77, 0x3d78, 0x0000, 0x0000, + 0x3d79, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_c4[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3d7a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3d7b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3d7c, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3d7d, 0x0000, 0x0000, 0x0000, + 0x3d7e, 0x0000, 0x0000, 0x0000, 0x3e21, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3e22, 0x3e23, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3e24, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3e25, 0x3e26, 0x0000, 0x0000, + 0x3e27, 0x0000, 0x0000, 0x0000, 0x3e28, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3e29, 0x3e2a, 0x0000, 0x0000, + 0x0000, 0x3e2b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3e2c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3e2d, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3e2e, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3e2f, 0x0000, 0x0000, 0x0000, 0x3e30, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x3e31, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3e32, 0x3e33, 0x0000, 0x0000, 0x3e34, 0x0000, 0x0000, 0x0000, + 0x3e35, 0x0000, 0x3e36, 0x0000, 0x0000, 0x0000, 0x0000, 0x3e37 +}; + +static unsigned short ksc5601_from_unicode_c5[] = { + 0x3e38, 0x3e39, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3e3a, 0x0000, 0x0000, 0x0000, + 0x3e3b, 0x0000, 0x0000, 0x0000, 0x3e3c, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3e3d, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3e3e, 0x3e3f, 0x0000, 0x0000, 0x3e40, 0x0000, 0x0000, 0x0000, + 0x3e41, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3e42, 0x3e43, 0x0000, 0x3e44, 0x0000, 0x3e45, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3e46, 0x3e47, 0x0000, 0x0000, + 0x3e48, 0x3e49, 0x3e4a, 0x0000, 0x3e4b, 0x3e4c, 0x3e4d, 0x0000, + 0x0000, 0x0000, 0x0000, 0x3e4e, 0x3e4f, 0x3e50, 0x0000, 0x3e51, + 0x3e52, 0x3e53, 0x0000, 0x0000, 0x0000, 0x3e54, 0x3e55, 0x0000, + 0x3e56, 0x3e57, 0x0000, 0x0000, 0x3e58, 0x0000, 0x0000, 0x0000, + 0x3e59, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3e5a, 0x3e5b, 0x0000, 0x3e5c, 0x3e5d, 0x3e5e, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3e5f, 0x3e60, 0x0000, 0x0000, + 0x3e61, 0x0000, 0x0000, 0x0000, 0x3e62, 0x0000, 0x0000, 0x3e63, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3e64, 0x3e65, 0x0000, 0x3e66, + 0x0000, 0x3e67, 0x0000, 0x0000, 0x0000, 0x3e68, 0x0000, 0x3e69, + 0x3e6a, 0x0000, 0x0000, 0x0000, 0x3e6b, 0x0000, 0x0000, 0x0000, + 0x3e6c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x3e6d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3e6e, 0x3e6f, 0x0000, 0x0000, + 0x3e70, 0x3e71, 0x0000, 0x3e72, 0x3e73, 0x3e74, 0x3e75, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3e76, 0x3e77, 0x3e78, 0x3e79, + 0x3e7a, 0x3e7b, 0x3e7c, 0x0000, 0x3e7d, 0x0000, 0x3e7e, 0x0000, + 0x3f21, 0x3f22, 0x0000, 0x0000, 0x3f23, 0x0000, 0x0000, 0x0000, + 0x3f24, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3f25, 0x3f26, 0x0000, 0x3f27, 0x0000, 0x3f28, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3f29, 0x3f2a, 0x3f2b, 0x0000, + 0x3f2c, 0x0000, 0x0000, 0x0000, 0x3f2d, 0x0000, 0x3f2e, 0x3f2f, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3f30, 0x3f31, 0x3f32, 0x3f33 +}; + +static unsigned short ksc5601_from_unicode_c6[] = { + 0x3f34, 0x3f35, 0x0000, 0x0000, 0x0000, 0x3f36, 0x3f37, 0x3f38, + 0x3f39, 0x0000, 0x0000, 0x0000, 0x3f3a, 0x0000, 0x0000, 0x0000, + 0x3f3b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3f3c, 0x3f3d, 0x0000, 0x3f3e, 0x3f3f, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3f40, 0x3f41, 0x0000, 0x0000, + 0x3f42, 0x0000, 0x0000, 0x0000, 0x3f43, 0x3f44, 0x3f45, 0x0000, + 0x3f46, 0x0000, 0x0000, 0x3f47, 0x3f48, 0x3f49, 0x0000, 0x3f4a, + 0x0000, 0x3f4b, 0x0000, 0x3f4c, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3f4d, 0x3f4e, 0x0000, 0x0000, 0x3f4f, 0x0000, 0x0000, 0x0000, + 0x3f50, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3f51, 0x3f52, 0x0000, 0x3f53, 0x3f54, 0x3f55, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3f56, 0x3f57, 0x0000, 0x0000, + 0x3f58, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3f59, 0x0000, 0x0000, 0x3f5a, + 0x0000, 0x3f5b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3f5c, 0x3f5d, 0x0000, 0x0000, 0x3f5e, 0x0000, 0x0000, 0x0000, + 0x3f5f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3f60, 0x3f61, 0x0000, 0x3f62, 0x0000, 0x3f63, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3f64, 0x3f65, 0x0000, 0x0000, + 0x3f66, 0x0000, 0x0000, 0x0000, 0x3f67, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3f68, 0x3f69, 0x0000, 0x3f6a, + 0x0000, 0x3f6b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3f6c, 0x3f6d, 0x0000, 0x0000, 0x3f6e, 0x0000, 0x0000, 0x0000, + 0x3f6f, 0x3f70, 0x3f71, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3f72, 0x3f73, 0x0000, 0x3f74, 0x0000, 0x3f75, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3f76, 0x3f77, 0x0000, 0x0000, + 0x3f78, 0x0000, 0x0000, 0x0000, 0x3f79, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3f7a, 0x3f7b, 0x0000, 0x0000, + 0x3f7c, 0x3f7d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3f7e, 0x4021, 0x0000, 0x0000, 0x4022, 0x0000, 0x0000, 0x0000, + 0x4023, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4024, 0x4025, 0x0000, 0x0000, 0x0000, 0x4026, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_c7[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x4027, 0x4028, 0x0000, 0x0000, + 0x4029, 0x0000, 0x0000, 0x0000, 0x402a, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x402b, 0x402c, 0x0000, 0x402d, + 0x0000, 0x402e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x402f, 0x4030, 0x0000, 0x0000, 0x4031, 0x0000, 0x0000, 0x0000, + 0x4032, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4033, 0x4034, 0x0000, 0x4035, 0x0000, 0x4036, 0x0000, 0x4037, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4038, 0x4039, 0x0000, 0x0000, + 0x403a, 0x0000, 0x0000, 0x0000, 0x403b, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x403c, 0x0000, 0x403d, 0x403e, 0x0000, 0x403f, + 0x0000, 0x4040, 0x4041, 0x4042, 0x4043, 0x4044, 0x4045, 0x4046, + 0x4047, 0x0000, 0x0000, 0x0000, 0x4048, 0x0000, 0x0000, 0x0000, + 0x4049, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x404a, 0x0000, 0x0000, 0x404b, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x404c, 0x404d, 0x0000, 0x0000, + 0x404e, 0x0000, 0x0000, 0x0000, 0x404f, 0x4050, 0x4051, 0x0000, + 0x0000, 0x0000, 0x0000, 0x4052, 0x4053, 0x4054, 0x0000, 0x4055, + 0x4056, 0x4057, 0x4058, 0x0000, 0x0000, 0x0000, 0x4059, 0x0000, + 0x405a, 0x405b, 0x0000, 0x0000, 0x405c, 0x0000, 0x405d, 0x405e, + 0x405f, 0x0000, 0x4060, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4061, 0x4062, 0x0000, 0x4063, 0x4064, 0x4065, 0x4066, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4067, 0x4068, 0x0000, 0x0000, + 0x4069, 0x0000, 0x0000, 0x0000, 0x406a, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x406b, 0x406c, 0x0000, 0x406d, + 0x406e, 0x406f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4070, 0x4071, 0x0000, 0x0000, 0x4072, 0x0000, 0x4073, 0x0000, + 0x4074, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4075, 0x0000, 0x0000, 0x0000, 0x0000, 0x4076, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4077, 0x0000, 0x0000, 0x0000, + 0x4078, 0x0000, 0x0000, 0x0000, 0x4079, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_c8[] = { + 0x407a, 0x407b, 0x0000, 0x0000, 0x407c, 0x0000, 0x0000, 0x0000, + 0x407d, 0x0000, 0x407e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4121, 0x4122, 0x0000, 0x4123, 0x0000, 0x4124, 0x4125, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4126, 0x4127, 0x0000, 0x0000, + 0x4128, 0x0000, 0x0000, 0x0000, 0x4129, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x412a, 0x412b, 0x0000, 0x412c, + 0x0000, 0x412d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x412e, 0x0000, 0x0000, 0x0000, 0x412f, 0x0000, 0x0000, 0x0000, + 0x4130, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4131, 0x4132, 0x0000, 0x0000, 0x4133, 0x4134, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4135, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4136, 0x4137, 0x0000, 0x0000, 0x4138, 0x0000, 0x0000, 0x0000, + 0x4139, 0x0000, 0x413a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x413b, 0x413c, 0x0000, 0x413d, 0x0000, 0x413e, 0x413f, 0x4140, + 0x0000, 0x0000, 0x0000, 0x4141, 0x4142, 0x4143, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4144, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4145, 0x0000, 0x4146, + 0x0000, 0x4147, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4148, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4149, 0x414a, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x414b, 0x0000, 0x0000, 0x0000, + 0x414c, 0x0000, 0x0000, 0x0000, 0x414d, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x414e, 0x414f, 0x0000, 0x4150, + 0x0000, 0x4151, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4152, 0x4153, 0x0000, 0x0000, 0x4154, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4155, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4156, 0x4157, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_c9[] = { + 0x4158, 0x0000, 0x0000, 0x0000, 0x4159, 0x415a, 0x415b, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x415c, 0x415d, 0x0000, 0x415e, + 0x0000, 0x415f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4160, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4161, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4162, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4163, 0x4164, 0x0000, 0x0000, 0x4165, 0x0000, 0x0000, 0x0000, + 0x4166, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4167, 0x4168, 0x0000, 0x4169, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x416a, 0x0000, 0x0000, 0x0000, + 0x416b, 0x0000, 0x0000, 0x0000, 0x416c, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x416d, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x416e, 0x416f, 0x0000, 0x0000, 0x4170, 0x0000, 0x0000, 0x0000, + 0x4171, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4172, 0x4173, 0x0000, 0x4174, 0x0000, 0x4175, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4176, 0x4177, 0x0000, 0x0000, 0x4178, 0x0000, 0x0000, 0x4179, + 0x417a, 0x0000, 0x417b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x417c, 0x417d, 0x0000, 0x417e, 0x0000, 0x4221, 0x4222, 0x0000, + 0x0000, 0x4223, 0x4224, 0x0000, 0x4225, 0x4226, 0x0000, 0x0000, + 0x4227, 0x0000, 0x4228, 0x0000, 0x4229, 0x0000, 0x0000, 0x422a, + 0x0000, 0x0000, 0x0000, 0x0000, 0x422b, 0x422c, 0x0000, 0x422d, + 0x422e, 0x422f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4230, 0x4231, 0x0000, 0x0000, 0x4232, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_ca[] = { + 0x4233, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4234, 0x4235, 0x0000, 0x4236, 0x4237, 0x4238, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4239, 0x0000, 0x0000, 0x0000, + 0x423a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x423b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x423c, 0x423d, 0x0000, 0x0000, + 0x423e, 0x0000, 0x0000, 0x0000, 0x423f, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4240, 0x4241, 0x0000, 0x4242, + 0x4243, 0x4244, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4245, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4246, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4247, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4248, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4249, 0x424a, 0x0000, 0x0000, + 0x424b, 0x0000, 0x0000, 0x0000, 0x424c, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x424d, 0x424e, 0x0000, 0x424f, + 0x0000, 0x4250, 0x0000, 0x4251, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4252, 0x4253, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4254, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4255, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4256, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_cb[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4257, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4258, 0x0000, 0x0000, 0x0000, 0x4259, 0x0000, 0x0000, 0x0000, + 0x425a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x425b, 0x425c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x425d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x425e, 0x425f, 0x0000, 0x0000, 0x4260, 0x0000, 0x0000, 0x0000, + 0x4261, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4262, 0x4263, 0x0000, 0x0000, 0x0000, 0x4264, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4265, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4266, 0x4267, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4268, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4269, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x426a, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x426b, 0x0000, 0x0000, 0x426c, + 0x0000, 0x426d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_cc[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x426e, 0x426f, 0x0000, 0x0000, + 0x4270, 0x0000, 0x0000, 0x0000, 0x4271, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4272, 0x4273, 0x0000, 0x0000, + 0x0000, 0x4274, 0x4275, 0x0000, 0x0000, 0x0000, 0x0000, 0x4276, + 0x4277, 0x4278, 0x0000, 0x0000, 0x4279, 0x0000, 0x427a, 0x0000, + 0x427b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x427c, 0x427d, 0x0000, 0x427e, 0x4321, 0x4322, 0x4323, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4324, 0x4325, 0x0000, 0x0000, + 0x4326, 0x0000, 0x0000, 0x0000, 0x4327, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4328, 0x4329, 0x0000, 0x432a, + 0x432b, 0x432c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x432d, 0x0000, 0x0000, 0x0000, 0x432e, 0x0000, 0x432f, 0x0000, + 0x4330, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4331, 0x0000, 0x0000, 0x0000, 0x0000, 0x4332, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4333, 0x4334, 0x0000, 0x0000, 0x4335, 0x0000, 0x0000, 0x0000, + 0x4336, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4337, 0x4338, 0x0000, 0x4339, 0x433a, 0x433b, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x433c, 0x433d, 0x0000, 0x0000, + 0x433e, 0x0000, 0x0000, 0x0000, 0x433f, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4340, 0x4341, 0x0000, 0x4342, + 0x0000, 0x4343, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4344, 0x0000, 0x0000, 0x0000, 0x4345, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4346, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4347, 0x0000, 0x0000, 0x0000, + 0x4348, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_cd[] = { + 0x0000, 0x4349, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x434a, 0x434b, 0x0000, 0x0000, 0x434c, 0x0000, 0x0000, 0x0000, + 0x434d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x434e, 0x434f, 0x0000, 0x4350, 0x0000, 0x4351, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4352, 0x0000, 0x0000, 0x0000, + 0x4353, 0x0000, 0x0000, 0x0000, 0x4354, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x4355, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4356, 0x0000, 0x0000, 0x0000, + 0x4357, 0x0000, 0x0000, 0x0000, 0x4358, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4359, 0x435a, 0x0000, 0x435b, + 0x0000, 0x435c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x435d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x435e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x435f, 0x4360, 0x0000, 0x0000, + 0x4361, 0x0000, 0x0000, 0x0000, 0x4362, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4363, 0x4364, 0x0000, 0x4365, + 0x0000, 0x4366, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4367, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4368, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4369, 0x0000, 0x0000, 0x0000, + 0x436a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x436b, 0x0000, 0x0000, 0x0000, 0x436c, 0x0000, 0x0000, 0x0000, + 0x436d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x436e, 0x436f, 0x0000, 0x4370, 0x0000, 0x4371, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_ce[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x4372, 0x0000, 0x0000, 0x0000, + 0x4373, 0x0000, 0x0000, 0x0000, 0x4374, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4375, 0x0000, 0x0000, 0x0000, + 0x0000, 0x4376, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4377, 0x4378, 0x0000, 0x0000, 0x4379, 0x0000, 0x0000, 0x0000, + 0x437a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x437b, 0x437c, 0x0000, 0x437d, 0x0000, 0x437e, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4421, 0x4422, 0x0000, 0x0000, 0x4423, 0x0000, 0x0000, 0x4424, + 0x4425, 0x4426, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4427, 0x4428, 0x0000, 0x4429, 0x0000, 0x442a, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x442b, 0x442c, 0x0000, 0x0000, + 0x442d, 0x0000, 0x0000, 0x0000, 0x442e, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x442f, 0x4430, 0x0000, 0x4431, + 0x0000, 0x4432, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4433, 0x4434, 0x0000, 0x0000, 0x4435, 0x0000, 0x0000, 0x0000, + 0x4436, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4437, 0x4438, 0x0000, 0x4439, 0x443a, 0x443b, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x443c, 0x443d, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x443e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x443f, 0x4440, 0x0000, 0x0000, + 0x4441, 0x0000, 0x0000, 0x4442, 0x4443, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4444, 0x4445, 0x0000, 0x4446, + 0x4447, 0x4448, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_cf[] = { + 0x4449, 0x444a, 0x0000, 0x0000, 0x444b, 0x0000, 0x0000, 0x0000, + 0x444c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x444d, 0x444e, 0x0000, 0x444f, 0x0000, 0x4450, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4451, 0x0000, 0x0000, 0x0000, + 0x4452, 0x0000, 0x0000, 0x0000, 0x4453, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4454, 0x4455, 0x0000, 0x4456, + 0x4457, 0x4458, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4459, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x445a, 0x445b, 0x0000, 0x0000, + 0x445c, 0x0000, 0x0000, 0x0000, 0x445d, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x445e, 0x445f, 0x0000, 0x4460, + 0x0000, 0x4461, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4462, 0x4463, 0x0000, 0x0000, 0x4464, 0x0000, 0x0000, 0x0000, + 0x4465, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4466, 0x0000, 0x0000, 0x0000, 0x0000, 0x4467, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4468, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x4469, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x446a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x446b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x446c, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x446d, 0x446e, 0x0000, 0x0000, 0x446f, 0x0000, 0x0000, 0x0000, + 0x4470, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4471, 0x4472, 0x0000, 0x4473, 0x0000, 0x4474, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4475, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_d0[] = { + 0x4476, 0x0000, 0x0000, 0x0000, 0x4477, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x4478, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4479, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x447a, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x447b, 0x447c, 0x0000, 0x0000, + 0x447d, 0x0000, 0x0000, 0x0000, 0x447e, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4521, 0x4522, 0x0000, 0x4523, + 0x0000, 0x4524, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4525, 0x0000, 0x0000, 0x0000, 0x4526, 0x0000, 0x0000, 0x0000, + 0x4527, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4528, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4529, 0x452a, 0x0000, 0x0000, + 0x452b, 0x0000, 0x0000, 0x0000, 0x452c, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x452d, 0x452e, 0x0000, 0x0000, + 0x0000, 0x452f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4530, 0x4531, 0x0000, 0x0000, + 0x4532, 0x0000, 0x0000, 0x0000, 0x4533, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4534, 0x4535, 0x0000, 0x4536, + 0x0000, 0x4537, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4538, 0x4539, 0x0000, 0x0000, 0x453a, 0x0000, 0x0000, 0x0000, + 0x453b, 0x453c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x453d, 0x453e, 0x0000, 0x453f, 0x4540, 0x4541, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4542, 0x4543, 0x0000, 0x0000, + 0x4544, 0x0000, 0x0000, 0x0000, 0x4545, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4546, 0x4547, 0x0000, 0x4548, + 0x4549, 0x454a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x454b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_d1[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x454c, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x454d, 0x454e, 0x0000, 0x0000, 0x454f, 0x0000, 0x0000, 0x0000, + 0x4550, 0x0000, 0x4551, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4552, 0x4553, 0x0000, 0x4554, 0x4555, 0x4556, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4557, 0x4558, 0x0000, 0x0000, + 0x4559, 0x0000, 0x0000, 0x0000, 0x455a, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x455b, 0x455c, 0x0000, 0x455d, + 0x0000, 0x455e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x455f, 0x0000, 0x0000, 0x0000, 0x4560, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4561, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4562, 0x0000, 0x0000, 0x0000, + 0x4563, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4564, 0x4565, 0x0000, 0x0000, 0x4566, 0x0000, 0x0000, 0x0000, + 0x4567, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4568, 0x4569, 0x0000, 0x456a, 0x0000, 0x456b, 0x0000, 0x0000, + 0x0000, 0x0000, 0x456c, 0x0000, 0x456d, 0x0000, 0x0000, 0x0000, + 0x456e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x456f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4570, 0x0000, 0x0000, 0x0000, + 0x4571, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_d2[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4572, + 0x0000, 0x4573, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4574, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4575, 0x4576, 0x0000, 0x0000, + 0x4577, 0x0000, 0x0000, 0x0000, 0x4578, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4579, 0x457a, 0x0000, 0x457b, + 0x0000, 0x457c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x457d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x457e, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4621, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4622, 0x4623, 0x0000, 0x0000, 0x4624, 0x0000, 0x0000, 0x0000, + 0x4625, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4626, 0x4627, 0x0000, 0x0000, 0x0000, 0x4628, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4629, 0x0000, 0x0000, 0x0000, + 0x462a, 0x0000, 0x0000, 0x0000, 0x462b, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x462c, 0x0000, 0x0000, 0x0000, + 0x0000, 0x462d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x462e, 0x462f, 0x0000, 0x0000, 0x4630, 0x0000, 0x0000, 0x4631, + 0x4632, 0x0000, 0x4633, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4634, 0x4635, 0x0000, 0x4636, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4637, 0x0000, 0x0000, 0x0000, + 0x4638, 0x0000, 0x0000, 0x0000, 0x4639, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x463a, 0x463b, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x463c, 0x463d, 0x0000, 0x0000, 0x463e, 0x0000, 0x0000, 0x0000, + 0x463f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_d3[] = { + 0x4640, 0x4641, 0x0000, 0x4642, 0x0000, 0x4643, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4644, 0x4645, 0x4646, 0x0000, + 0x4647, 0x0000, 0x0000, 0x0000, 0x4648, 0x0000, 0x4649, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x464a, 0x464b, 0x0000, 0x464c, + 0x464d, 0x464e, 0x0000, 0x0000, 0x0000, 0x464f, 0x0000, 0x0000, + 0x4650, 0x4651, 0x0000, 0x0000, 0x4652, 0x0000, 0x0000, 0x0000, + 0x4653, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4654, 0x4655, 0x0000, 0x4656, 0x4657, 0x4658, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4659, 0x465a, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x465b, 0x465c, 0x0000, 0x0000, + 0x465d, 0x0000, 0x0000, 0x0000, 0x465e, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x465f, 0x4660, 0x0000, 0x4661, + 0x4662, 0x4663, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4664, 0x4665, 0x0000, 0x0000, 0x4666, 0x0000, 0x0000, 0x0000, + 0x4667, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4668, 0x4669, 0x0000, 0x466a, 0x0000, 0x466b, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x466c, 0x0000, 0x0000, 0x0000, + 0x466d, 0x0000, 0x0000, 0x0000, 0x466e, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x466f, 0x4670, 0x0000, 0x0000, + 0x4671, 0x4672, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4673, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4674, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x4675, 0x0000, 0x4676, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4677, 0x4678, 0x0000, 0x0000, + 0x4679, 0x0000, 0x0000, 0x0000, 0x467a, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x467b, 0x467c, 0x0000, 0x467d +}; + +static unsigned short ksc5601_from_unicode_d4[] = { + 0x0000, 0x467e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4721, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4722, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4723, 0x0000, 0x0000, 0x0000, 0x4724, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4725, 0x0000, 0x0000, 0x0000, + 0x4726, 0x0000, 0x0000, 0x0000, 0x4727, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4728, 0x0000, 0x4729, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x472a, 0x472b, 0x0000, 0x0000, 0x472c, 0x0000, 0x0000, 0x472d, + 0x472e, 0x0000, 0x472f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4730, 0x4731, 0x0000, 0x4732, 0x0000, 0x4733, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4734, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x4735, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4736, 0x0000, 0x0000, 0x0000, + 0x4737, 0x0000, 0x0000, 0x0000, 0x4738, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4739, 0x0000, 0x0000, 0x473a, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x473b, 0x0000, 0x0000, 0x0000, 0x473c, 0x0000, 0x0000, 0x0000, + 0x473d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x473e, 0x0000, 0x0000, 0x473f, 0x0000, 0x4740, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_d5[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x4741, 0x0000, 0x0000, 0x0000, + 0x4742, 0x0000, 0x0000, 0x0000, 0x4743, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4744, 0x4745, 0x0000, 0x4746, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4747, 0x4748, 0x0000, 0x0000, + 0x4749, 0x0000, 0x0000, 0x0000, 0x474a, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x474b, 0x474c, 0x0000, 0x474d, + 0x0000, 0x474e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x474f, 0x4750, 0x0000, 0x0000, 0x4751, 0x0000, 0x0000, 0x0000, + 0x4752, 0x0000, 0x0000, 0x0000, 0x0000, 0x4753, 0x0000, 0x0000, + 0x4754, 0x4755, 0x0000, 0x4756, 0x0000, 0x4757, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4758, 0x4759, 0x0000, 0x0000, + 0x475a, 0x0000, 0x0000, 0x0000, 0x475b, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x475c, 0x475d, 0x0000, 0x475e, + 0x475f, 0x4760, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4761, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4762, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4763, 0x4764, 0x0000, 0x0000, 0x4765, 0x0000, 0x0000, 0x0000, + 0x4766, 0x0000, 0x4767, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4768, 0x4769, 0x0000, 0x476a, 0x0000, 0x476b, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x476c, 0x476d, 0x0000, 0x0000, + 0x476e, 0x0000, 0x0000, 0x0000, 0x476f, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4770, 0x4771, 0x0000, 0x4772, + 0x0000, 0x4773, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_d6[] = { + 0x4774, 0x4775, 0x0000, 0x0000, 0x4776, 0x0000, 0x0000, 0x0000, + 0x4777, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4778, 0x4779, 0x0000, 0x477a, 0x477b, 0x477c, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x477d, 0x0000, 0x0000, 0x0000, + 0x477e, 0x0000, 0x0000, 0x0000, 0x4821, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4822, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4823, 0x4824, 0x0000, 0x0000, 0x4825, 0x0000, 0x0000, 0x0000, + 0x4826, 0x0000, 0x0000, 0x0000, 0x0000, 0x4827, 0x0000, 0x0000, + 0x4828, 0x4829, 0x0000, 0x482a, 0x0000, 0x482b, 0x0000, 0x0000, + 0x0000, 0x482c, 0x0000, 0x0000, 0x482d, 0x482e, 0x0000, 0x0000, + 0x482f, 0x0000, 0x0000, 0x0000, 0x4830, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4831, + 0x0000, 0x4832, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4833, 0x4834, 0x0000, 0x0000, 0x4835, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x4836, 0x0000, 0x4837, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4838, 0x4839, 0x0000, 0x0000, + 0x483a, 0x0000, 0x0000, 0x0000, 0x483b, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x483c, 0x0000, 0x483d, + 0x0000, 0x483e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x483f, 0x0000, 0x0000, 0x0000, 0x4840, 0x0000, 0x0000, 0x0000, + 0x4841, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x4842, 0x0000, 0x4843, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4844, 0x4845, 0x0000, 0x0000, + 0x4846, 0x0000, 0x0000, 0x0000, 0x4847, 0x0000, 0x0000, 0x0000, + 0x0000, 0x4848, 0x0000, 0x0000, 0x4849, 0x0000, 0x0000, 0x484a, + 0x0000, 0x484b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x484c, 0x0000, 0x0000, 0x0000, 0x484d, 0x0000, 0x0000, 0x0000, + 0x484e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x484f, 0x0000, 0x0000, 0x0000, 0x0000, 0x4850, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4851, 0x4852, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_d7[] = { + 0x4853, 0x0000, 0x0000, 0x0000, 0x4854, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x4855, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4856, 0x4857, 0x0000, 0x0000, 0x4858, 0x0000, 0x0000, 0x0000, + 0x4859, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x485a, 0x485b, 0x0000, 0x485c, 0x0000, 0x485d, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x485e, 0x485f, 0x0000, 0x0000, + 0x4860, 0x0000, 0x0000, 0x0000, 0x4861, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4862, 0x0000, 0x0000, 0x4863, + 0x0000, 0x4864, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4865, 0x4866, 0x0000, 0x0000, 0x4867, 0x0000, 0x4868, 0x4869, + 0x486a, 0x486b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x486c, 0x486d, 0x0000, 0x486e, 0x0000, 0x486f, 0x0000, 0x0000, + 0x0000, 0x4870, 0x0000, 0x0000, 0x4871, 0x0000, 0x0000, 0x0000, + 0x4872, 0x0000, 0x0000, 0x0000, 0x4873, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4874, 0x4875, 0x0000, 0x0000, + 0x0000, 0x4876, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4877, 0x4878, 0x0000, 0x0000, 0x4879, 0x0000, 0x0000, 0x0000, + 0x487a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x487b, 0x487c, 0x0000, 0x487d, 0x0000, 0x487e, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short ksc5601_from_unicode_ff[] = { + 0x0000, 0x2321, 0x2322, 0x2323, 0x2324, 0x2325, 0x2326, 0x2327, + 0x2328, 0x2329, 0x232a, 0x232b, 0x232c, 0x232d, 0x232e, 0x232f, + 0x2330, 0x2331, 0x2332, 0x2333, 0x2334, 0x2335, 0x2336, 0x2337, + 0x2338, 0x2339, 0x233a, 0x233b, 0x233c, 0x233d, 0x233e, 0x233f, + 0x2340, 0x2341, 0x2342, 0x2343, 0x2344, 0x2345, 0x2346, 0x2347, + 0x2348, 0x2349, 0x234a, 0x234b, 0x234c, 0x234d, 0x234e, 0x234f, + 0x2350, 0x2351, 0x2352, 0x2353, 0x2354, 0x2355, 0x2356, 0x2357, + 0x2358, 0x2359, 0x235a, 0x235b, 0x212c, 0x235d, 0x235e, 0x235f, + 0x2360, 0x2361, 0x2362, 0x2363, 0x2364, 0x2365, 0x2366, 0x2367, + 0x2368, 0x2369, 0x236a, 0x236b, 0x236c, 0x236d, 0x236e, 0x236f, + 0x2370, 0x2371, 0x2372, 0x2373, 0x2374, 0x2375, 0x2376, 0x2377, + 0x2378, 0x2379, 0x237a, 0x237b, 0x237c, 0x237d, 0x212d, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x214b, 0x214c, 0x217e, 0x237e, 0x0000, 0x214d, 0x235c, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short * const ksc5601_from_unicode_[] = { + ksc5601_from_unicode_0, + ksc5601_from_unicode_1, + ksc5601_from_unicode_2, + ksc5601_from_unicode_3, + ksc5601_from_unicode_4, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + ksc5601_from_unicode_20, + ksc5601_from_unicode_21, + ksc5601_from_unicode_22, + ksc5601_from_unicode_23, + ksc5601_from_unicode_24, + ksc5601_from_unicode_25, + ksc5601_from_unicode_26, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + ksc5601_from_unicode_30, + ksc5601_from_unicode_31, + ksc5601_from_unicode_32, + ksc5601_from_unicode_33, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + ksc5601_from_unicode_4e, + ksc5601_from_unicode_4f, + ksc5601_from_unicode_50, + ksc5601_from_unicode_51, + ksc5601_from_unicode_52, + ksc5601_from_unicode_53, + ksc5601_from_unicode_54, + ksc5601_from_unicode_55, + ksc5601_from_unicode_56, + ksc5601_from_unicode_57, + ksc5601_from_unicode_58, + ksc5601_from_unicode_59, + ksc5601_from_unicode_5a, + ksc5601_from_unicode_5b, + ksc5601_from_unicode_5c, + ksc5601_from_unicode_5d, + ksc5601_from_unicode_5e, + ksc5601_from_unicode_5f, + ksc5601_from_unicode_60, + ksc5601_from_unicode_61, + ksc5601_from_unicode_62, + ksc5601_from_unicode_63, + ksc5601_from_unicode_64, + ksc5601_from_unicode_65, + ksc5601_from_unicode_66, + ksc5601_from_unicode_67, + ksc5601_from_unicode_68, + ksc5601_from_unicode_69, + ksc5601_from_unicode_6a, + ksc5601_from_unicode_6b, + ksc5601_from_unicode_6c, + ksc5601_from_unicode_6d, + ksc5601_from_unicode_6e, + ksc5601_from_unicode_6f, + ksc5601_from_unicode_70, + ksc5601_from_unicode_71, + ksc5601_from_unicode_72, + ksc5601_from_unicode_73, + ksc5601_from_unicode_74, + ksc5601_from_unicode_75, + ksc5601_from_unicode_76, + ksc5601_from_unicode_77, + ksc5601_from_unicode_78, + ksc5601_from_unicode_79, + ksc5601_from_unicode_7a, + ksc5601_from_unicode_7b, + ksc5601_from_unicode_7c, + ksc5601_from_unicode_7d, + ksc5601_from_unicode_7e, + ksc5601_from_unicode_7f, + ksc5601_from_unicode_80, + ksc5601_from_unicode_81, + ksc5601_from_unicode_82, + ksc5601_from_unicode_83, + ksc5601_from_unicode_84, + ksc5601_from_unicode_85, + ksc5601_from_unicode_86, + ksc5601_from_unicode_87, + ksc5601_from_unicode_88, + ksc5601_from_unicode_89, + ksc5601_from_unicode_8a, + ksc5601_from_unicode_8b, + ksc5601_from_unicode_8c, + ksc5601_from_unicode_8d, + ksc5601_from_unicode_8e, + ksc5601_from_unicode_8f, + ksc5601_from_unicode_90, + ksc5601_from_unicode_91, + ksc5601_from_unicode_92, + ksc5601_from_unicode_93, + ksc5601_from_unicode_94, + ksc5601_from_unicode_95, + ksc5601_from_unicode_96, + ksc5601_from_unicode_97, + ksc5601_from_unicode_98, + ksc5601_from_unicode_99, + ksc5601_from_unicode_9a, + ksc5601_from_unicode_9b, + ksc5601_from_unicode_9c, + ksc5601_from_unicode_9d, + ksc5601_from_unicode_9e, + ksc5601_from_unicode_9f, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + ksc5601_from_unicode_ac, + ksc5601_from_unicode_ad, + ksc5601_from_unicode_ae, + ksc5601_from_unicode_af, + ksc5601_from_unicode_b0, + ksc5601_from_unicode_b1, + ksc5601_from_unicode_b2, + ksc5601_from_unicode_b3, + ksc5601_from_unicode_b4, + ksc5601_from_unicode_b5, + ksc5601_from_unicode_b6, + ksc5601_from_unicode_b7, + ksc5601_from_unicode_b8, + ksc5601_from_unicode_b9, + ksc5601_from_unicode_ba, + ksc5601_from_unicode_bb, + ksc5601_from_unicode_bc, + ksc5601_from_unicode_bd, + ksc5601_from_unicode_be, + ksc5601_from_unicode_bf, + ksc5601_from_unicode_c0, + ksc5601_from_unicode_c1, + ksc5601_from_unicode_c2, + ksc5601_from_unicode_c3, + ksc5601_from_unicode_c4, + ksc5601_from_unicode_c5, + ksc5601_from_unicode_c6, + ksc5601_from_unicode_c7, + ksc5601_from_unicode_c8, + ksc5601_from_unicode_c9, + ksc5601_from_unicode_ca, + ksc5601_from_unicode_cb, + ksc5601_from_unicode_cc, + ksc5601_from_unicode_cd, + ksc5601_from_unicode_ce, + ksc5601_from_unicode_cf, + ksc5601_from_unicode_d0, + ksc5601_from_unicode_d1, + ksc5601_from_unicode_d2, + ksc5601_from_unicode_d3, + ksc5601_from_unicode_d4, + ksc5601_from_unicode_d5, + ksc5601_from_unicode_d6, + ksc5601_from_unicode_d7, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + ksc5601_from_unicode_ff +}; + +struct charmap2 ksc5601_from_unicode = { 0, 255, (unsigned short **) ksc5601_from_unicode_, (unichar_t *) unicode_from_ksc5601 }; + +const unichar_t unicode_from_johab[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x3131, 0x3132, 0x3133, 0x3134, 0x3135, 0x3136, + 0x3137, 0x3139, 0x313a, 0x313b, 0x313c, 0x313d, 0x313e, 0x313f, + 0x3140, 0x3141, 0x0000, 0x3142, 0x3144, 0x3145, 0x3146, 0x3147, + 0x3148, 0x314a, 0x314b, 0x314c, 0x314d, 0x314e, 0x0000, 0x0000, + 0x0000, 0x314f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x3150, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x3151, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x3152, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x3153, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x3154, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x3155, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x3156, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x3157, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x3158, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x3159, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x315a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x315b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x315c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x315d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x315e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x315f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x3160, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x3161, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x3162, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x3163, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xac00, 0xac01, 0xac02, 0xac03, 0xac04, 0xac05, 0xac06, + 0xac07, 0xac08, 0xac09, 0xac0a, 0xac0b, 0xac0c, 0xac0d, 0xac0e, + 0xac0f, 0xac10, 0x0000, 0xac11, 0xac12, 0xac13, 0xac14, 0xac15, + 0xac16, 0xac17, 0xac18, 0xac19, 0xac1a, 0xac1b, 0x0000, 0x0000, + 0x0000, 0xac1c, 0xac1d, 0xac1e, 0xac1f, 0xac20, 0xac21, 0xac22, + 0xac23, 0xac24, 0xac25, 0xac26, 0xac27, 0xac28, 0xac29, 0xac2a, + 0xac2b, 0xac2c, 0x0000, 0xac2d, 0xac2e, 0xac2f, 0xac30, 0xac31, + 0xac32, 0xac33, 0xac34, 0xac35, 0xac36, 0xac37, 0x0000, 0x0000, + 0x0000, 0xac38, 0xac39, 0xac3a, 0xac3b, 0xac3c, 0xac3d, 0xac3e, + 0xac3f, 0xac40, 0xac41, 0xac42, 0xac43, 0xac44, 0xac45, 0xac46, + 0xac47, 0xac48, 0x0000, 0xac49, 0xac4a, 0xac4b, 0xac4c, 0xac4d, + 0xac4e, 0xac4f, 0xac50, 0xac51, 0xac52, 0xac53, 0x0000, 0x0000, + 0x0000, 0xac54, 0xac55, 0xac56, 0xac57, 0xac58, 0xac59, 0xac5a, + 0xac5b, 0xac5c, 0xac5d, 0xac5e, 0xac5f, 0xac60, 0xac61, 0xac62, + 0xac63, 0xac64, 0x0000, 0xac65, 0xac66, 0xac67, 0xac68, 0xac69, + 0xac6a, 0xac6b, 0xac6c, 0xac6d, 0xac6e, 0xac6f, 0x0000, 0x0000, + 0x0000, 0xac70, 0xac71, 0xac72, 0xac73, 0xac74, 0xac75, 0xac76, + 0xac77, 0xac78, 0xac79, 0xac7a, 0xac7b, 0xac7c, 0xac7d, 0xac7e, + 0xac7f, 0xac80, 0x0000, 0xac81, 0xac82, 0xac83, 0xac84, 0xac85, + 0xac86, 0xac87, 0xac88, 0xac89, 0xac8a, 0xac8b, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xac8c, 0xac8d, 0xac8e, 0xac8f, 0xac90, 0xac91, 0xac92, + 0xac93, 0xac94, 0xac95, 0xac96, 0xac97, 0xac98, 0xac99, 0xac9a, + 0xac9b, 0xac9c, 0x0000, 0xac9d, 0xac9e, 0xac9f, 0xaca0, 0xaca1, + 0xaca2, 0xaca3, 0xaca4, 0xaca5, 0xaca6, 0xaca7, 0x0000, 0x0000, + 0x0000, 0xaca8, 0xaca9, 0xacaa, 0xacab, 0xacac, 0xacad, 0xacae, + 0xacaf, 0xacb0, 0xacb1, 0xacb2, 0xacb3, 0xacb4, 0xacb5, 0xacb6, + 0xacb7, 0xacb8, 0x0000, 0xacb9, 0xacba, 0xacbb, 0xacbc, 0xacbd, + 0xacbe, 0xacbf, 0xacc0, 0xacc1, 0xacc2, 0xacc3, 0x0000, 0x0000, + 0x0000, 0xacc4, 0xacc5, 0xacc6, 0xacc7, 0xacc8, 0xacc9, 0xacca, + 0xaccb, 0xaccc, 0xaccd, 0xacce, 0xaccf, 0xacd0, 0xacd1, 0xacd2, + 0xacd3, 0xacd4, 0x0000, 0xacd5, 0xacd6, 0xacd7, 0xacd8, 0xacd9, + 0xacda, 0xacdb, 0xacdc, 0xacdd, 0xacde, 0xacdf, 0x0000, 0x0000, + 0x0000, 0xace0, 0xace1, 0xace2, 0xace3, 0xace4, 0xace5, 0xace6, + 0xace7, 0xace8, 0xace9, 0xacea, 0xaceb, 0xacec, 0xaced, 0xacee, + 0xacef, 0xacf0, 0x0000, 0xacf1, 0xacf2, 0xacf3, 0xacf4, 0xacf5, + 0xacf6, 0xacf7, 0xacf8, 0xacf9, 0xacfa, 0xacfb, 0x0000, 0x0000, + 0x0000, 0xacfc, 0xacfd, 0xacfe, 0xacff, 0xad00, 0xad01, 0xad02, + 0xad03, 0xad04, 0xad05, 0xad06, 0xad07, 0xad08, 0xad09, 0xad0a, + 0xad0b, 0xad0c, 0x0000, 0xad0d, 0xad0e, 0xad0f, 0xad10, 0xad11, + 0xad12, 0xad13, 0xad14, 0xad15, 0xad16, 0xad17, 0x0000, 0x0000, + 0x0000, 0xad18, 0xad19, 0xad1a, 0xad1b, 0xad1c, 0xad1d, 0xad1e, + 0xad1f, 0xad20, 0xad21, 0xad22, 0xad23, 0xad24, 0xad25, 0xad26, + 0xad27, 0xad28, 0x0000, 0xad29, 0xad2a, 0xad2b, 0xad2c, 0xad2d, + 0xad2e, 0xad2f, 0xad30, 0xad31, 0xad32, 0xad33, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xad34, 0xad35, 0xad36, 0xad37, 0xad38, 0xad39, 0xad3a, + 0xad3b, 0xad3c, 0xad3d, 0xad3e, 0xad3f, 0xad40, 0xad41, 0xad42, + 0xad43, 0xad44, 0x0000, 0xad45, 0xad46, 0xad47, 0xad48, 0xad49, + 0xad4a, 0xad4b, 0xad4c, 0xad4d, 0xad4e, 0xad4f, 0x0000, 0x0000, + 0x0000, 0xad50, 0xad51, 0xad52, 0xad53, 0xad54, 0xad55, 0xad56, + 0xad57, 0xad58, 0xad59, 0xad5a, 0xad5b, 0xad5c, 0xad5d, 0xad5e, + 0xad5f, 0xad60, 0x0000, 0xad61, 0xad62, 0xad63, 0xad64, 0xad65, + 0xad66, 0xad67, 0xad68, 0xad69, 0xad6a, 0xad6b, 0x0000, 0x0000, + 0x0000, 0xad6c, 0xad6d, 0xad6e, 0xad6f, 0xad70, 0xad71, 0xad72, + 0xad73, 0xad74, 0xad75, 0xad76, 0xad77, 0xad78, 0xad79, 0xad7a, + 0xad7b, 0xad7c, 0x0000, 0xad7d, 0xad7e, 0xad7f, 0xad80, 0xad81, + 0xad82, 0xad83, 0xad84, 0xad85, 0xad86, 0xad87, 0x0000, 0x0000, + 0x0000, 0xad88, 0xad89, 0xad8a, 0xad8b, 0xad8c, 0xad8d, 0xad8e, + 0xad8f, 0xad90, 0xad91, 0xad92, 0xad93, 0xad94, 0xad95, 0xad96, + 0xad97, 0xad98, 0x0000, 0xad99, 0xad9a, 0xad9b, 0xad9c, 0xad9d, + 0xad9e, 0xad9f, 0xada0, 0xada1, 0xada2, 0xada3, 0x0000, 0x0000, + 0x0000, 0xada4, 0xada5, 0xada6, 0xada7, 0xada8, 0xada9, 0xadaa, + 0xadab, 0xadac, 0xadad, 0xadae, 0xadaf, 0xadb0, 0xadb1, 0xadb2, + 0xadb3, 0xadb4, 0x0000, 0xadb5, 0xadb6, 0xadb7, 0xadb8, 0xadb9, + 0xadba, 0xadbb, 0xadbc, 0xadbd, 0xadbe, 0xadbf, 0x0000, 0x0000, + 0x0000, 0xadc0, 0xadc1, 0xadc2, 0xadc3, 0xadc4, 0xadc5, 0xadc6, + 0xadc7, 0xadc8, 0xadc9, 0xadca, 0xadcb, 0xadcc, 0xadcd, 0xadce, + 0xadcf, 0xadd0, 0x0000, 0xadd1, 0xadd2, 0xadd3, 0xadd4, 0xadd5, + 0xadd6, 0xadd7, 0xadd8, 0xadd9, 0xadda, 0xaddb, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xaddc, 0xaddd, 0xadde, 0xaddf, 0xade0, 0xade1, 0xade2, + 0xade3, 0xade4, 0xade5, 0xade6, 0xade7, 0xade8, 0xade9, 0xadea, + 0xadeb, 0xadec, 0x0000, 0xaded, 0xadee, 0xadef, 0xadf0, 0xadf1, + 0xadf2, 0xadf3, 0xadf4, 0xadf5, 0xadf6, 0xadf7, 0x0000, 0x0000, + 0x0000, 0xadf8, 0xadf9, 0xadfa, 0xadfb, 0xadfc, 0xadfd, 0xadfe, + 0xadff, 0xae00, 0xae01, 0xae02, 0xae03, 0xae04, 0xae05, 0xae06, + 0xae07, 0xae08, 0x0000, 0xae09, 0xae0a, 0xae0b, 0xae0c, 0xae0d, + 0xae0e, 0xae0f, 0xae10, 0xae11, 0xae12, 0xae13, 0x0000, 0x0000, + 0x0000, 0xae14, 0xae15, 0xae16, 0xae17, 0xae18, 0xae19, 0xae1a, + 0xae1b, 0xae1c, 0xae1d, 0xae1e, 0xae1f, 0xae20, 0xae21, 0xae22, + 0xae23, 0xae24, 0x0000, 0xae25, 0xae26, 0xae27, 0xae28, 0xae29, + 0xae2a, 0xae2b, 0xae2c, 0xae2d, 0xae2e, 0xae2f, 0x0000, 0x0000, + 0x0000, 0xae30, 0xae31, 0xae32, 0xae33, 0xae34, 0xae35, 0xae36, + 0xae37, 0xae38, 0xae39, 0xae3a, 0xae3b, 0xae3c, 0xae3d, 0xae3e, + 0xae3f, 0xae40, 0x0000, 0xae41, 0xae42, 0xae43, 0xae44, 0xae45, + 0xae46, 0xae47, 0xae48, 0xae49, 0xae4a, 0xae4b, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xae4c, 0xae4d, 0xae4e, 0xae4f, 0xae50, 0xae51, 0xae52, + 0xae53, 0xae54, 0xae55, 0xae56, 0xae57, 0xae58, 0xae59, 0xae5a, + 0xae5b, 0xae5c, 0x0000, 0xae5d, 0xae5e, 0xae5f, 0xae60, 0xae61, + 0xae62, 0xae63, 0xae64, 0xae65, 0xae66, 0xae67, 0x0000, 0x0000, + 0x0000, 0xae68, 0xae69, 0xae6a, 0xae6b, 0xae6c, 0xae6d, 0xae6e, + 0xae6f, 0xae70, 0xae71, 0xae72, 0xae73, 0xae74, 0xae75, 0xae76, + 0xae77, 0xae78, 0x0000, 0xae79, 0xae7a, 0xae7b, 0xae7c, 0xae7d, + 0xae7e, 0xae7f, 0xae80, 0xae81, 0xae82, 0xae83, 0x0000, 0x0000, + 0x0000, 0xae84, 0xae85, 0xae86, 0xae87, 0xae88, 0xae89, 0xae8a, + 0xae8b, 0xae8c, 0xae8d, 0xae8e, 0xae8f, 0xae90, 0xae91, 0xae92, + 0xae93, 0xae94, 0x0000, 0xae95, 0xae96, 0xae97, 0xae98, 0xae99, + 0xae9a, 0xae9b, 0xae9c, 0xae9d, 0xae9e, 0xae9f, 0x0000, 0x0000, + 0x0000, 0xaea0, 0xaea1, 0xaea2, 0xaea3, 0xaea4, 0xaea5, 0xaea6, + 0xaea7, 0xaea8, 0xaea9, 0xaeaa, 0xaeab, 0xaeac, 0xaead, 0xaeae, + 0xaeaf, 0xaeb0, 0x0000, 0xaeb1, 0xaeb2, 0xaeb3, 0xaeb4, 0xaeb5, + 0xaeb6, 0xaeb7, 0xaeb8, 0xaeb9, 0xaeba, 0xaebb, 0x0000, 0x0000, + 0x0000, 0xaebc, 0xaebd, 0xaebe, 0xaebf, 0xaec0, 0xaec1, 0xaec2, + 0xaec3, 0xaec4, 0xaec5, 0xaec6, 0xaec7, 0xaec8, 0xaec9, 0xaeca, + 0xaecb, 0xaecc, 0x0000, 0xaecd, 0xaece, 0xaecf, 0xaed0, 0xaed1, + 0xaed2, 0xaed3, 0xaed4, 0xaed5, 0xaed6, 0xaed7, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xaed8, 0xaed9, 0xaeda, 0xaedb, 0xaedc, 0xaedd, 0xaede, + 0xaedf, 0xaee0, 0xaee1, 0xaee2, 0xaee3, 0xaee4, 0xaee5, 0xaee6, + 0xaee7, 0xaee8, 0x0000, 0xaee9, 0xaeea, 0xaeeb, 0xaeec, 0xaeed, + 0xaeee, 0xaeef, 0xaef0, 0xaef1, 0xaef2, 0xaef3, 0x0000, 0x0000, + 0x0000, 0xaef4, 0xaef5, 0xaef6, 0xaef7, 0xaef8, 0xaef9, 0xaefa, + 0xaefb, 0xaefc, 0xaefd, 0xaefe, 0xaeff, 0xaf00, 0xaf01, 0xaf02, + 0xaf03, 0xaf04, 0x0000, 0xaf05, 0xaf06, 0xaf07, 0xaf08, 0xaf09, + 0xaf0a, 0xaf0b, 0xaf0c, 0xaf0d, 0xaf0e, 0xaf0f, 0x0000, 0x0000, + 0x0000, 0xaf10, 0xaf11, 0xaf12, 0xaf13, 0xaf14, 0xaf15, 0xaf16, + 0xaf17, 0xaf18, 0xaf19, 0xaf1a, 0xaf1b, 0xaf1c, 0xaf1d, 0xaf1e, + 0xaf1f, 0xaf20, 0x0000, 0xaf21, 0xaf22, 0xaf23, 0xaf24, 0xaf25, + 0xaf26, 0xaf27, 0xaf28, 0xaf29, 0xaf2a, 0xaf2b, 0x0000, 0x0000, + 0x0000, 0xaf2c, 0xaf2d, 0xaf2e, 0xaf2f, 0xaf30, 0xaf31, 0xaf32, + 0xaf33, 0xaf34, 0xaf35, 0xaf36, 0xaf37, 0xaf38, 0xaf39, 0xaf3a, + 0xaf3b, 0xaf3c, 0x0000, 0xaf3d, 0xaf3e, 0xaf3f, 0xaf40, 0xaf41, + 0xaf42, 0xaf43, 0xaf44, 0xaf45, 0xaf46, 0xaf47, 0x0000, 0x0000, + 0x0000, 0xaf48, 0xaf49, 0xaf4a, 0xaf4b, 0xaf4c, 0xaf4d, 0xaf4e, + 0xaf4f, 0xaf50, 0xaf51, 0xaf52, 0xaf53, 0xaf54, 0xaf55, 0xaf56, + 0xaf57, 0xaf58, 0x0000, 0xaf59, 0xaf5a, 0xaf5b, 0xaf5c, 0xaf5d, + 0xaf5e, 0xaf5f, 0xaf60, 0xaf61, 0xaf62, 0xaf63, 0x0000, 0x0000, + 0x0000, 0xaf64, 0xaf65, 0xaf66, 0xaf67, 0xaf68, 0xaf69, 0xaf6a, + 0xaf6b, 0xaf6c, 0xaf6d, 0xaf6e, 0xaf6f, 0xaf70, 0xaf71, 0xaf72, + 0xaf73, 0xaf74, 0x0000, 0xaf75, 0xaf76, 0xaf77, 0xaf78, 0xaf79, + 0xaf7a, 0xaf7b, 0xaf7c, 0xaf7d, 0xaf7e, 0xaf7f, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xaf80, 0xaf81, 0xaf82, 0xaf83, 0xaf84, 0xaf85, 0xaf86, + 0xaf87, 0xaf88, 0xaf89, 0xaf8a, 0xaf8b, 0xaf8c, 0xaf8d, 0xaf8e, + 0xaf8f, 0xaf90, 0x0000, 0xaf91, 0xaf92, 0xaf93, 0xaf94, 0xaf95, + 0xaf96, 0xaf97, 0xaf98, 0xaf99, 0xaf9a, 0xaf9b, 0x0000, 0x0000, + 0x0000, 0xaf9c, 0xaf9d, 0xaf9e, 0xaf9f, 0xafa0, 0xafa1, 0xafa2, + 0xafa3, 0xafa4, 0xafa5, 0xafa6, 0xafa7, 0xafa8, 0xafa9, 0xafaa, + 0xafab, 0xafac, 0x0000, 0xafad, 0xafae, 0xafaf, 0xafb0, 0xafb1, + 0xafb2, 0xafb3, 0xafb4, 0xafb5, 0xafb6, 0xafb7, 0x0000, 0x0000, + 0x0000, 0xafb8, 0xafb9, 0xafba, 0xafbb, 0xafbc, 0xafbd, 0xafbe, + 0xafbf, 0xafc0, 0xafc1, 0xafc2, 0xafc3, 0xafc4, 0xafc5, 0xafc6, + 0xafc7, 0xafc8, 0x0000, 0xafc9, 0xafca, 0xafcb, 0xafcc, 0xafcd, + 0xafce, 0xafcf, 0xafd0, 0xafd1, 0xafd2, 0xafd3, 0x0000, 0x0000, + 0x0000, 0xafd4, 0xafd5, 0xafd6, 0xafd7, 0xafd8, 0xafd9, 0xafda, + 0xafdb, 0xafdc, 0xafdd, 0xafde, 0xafdf, 0xafe0, 0xafe1, 0xafe2, + 0xafe3, 0xafe4, 0x0000, 0xafe5, 0xafe6, 0xafe7, 0xafe8, 0xafe9, + 0xafea, 0xafeb, 0xafec, 0xafed, 0xafee, 0xafef, 0x0000, 0x0000, + 0x0000, 0xaff0, 0xaff1, 0xaff2, 0xaff3, 0xaff4, 0xaff5, 0xaff6, + 0xaff7, 0xaff8, 0xaff9, 0xaffa, 0xaffb, 0xaffc, 0xaffd, 0xaffe, + 0xafff, 0xb000, 0x0000, 0xb001, 0xb002, 0xb003, 0xb004, 0xb005, + 0xb006, 0xb007, 0xb008, 0xb009, 0xb00a, 0xb00b, 0x0000, 0x0000, + 0x0000, 0xb00c, 0xb00d, 0xb00e, 0xb00f, 0xb010, 0xb011, 0xb012, + 0xb013, 0xb014, 0xb015, 0xb016, 0xb017, 0xb018, 0xb019, 0xb01a, + 0xb01b, 0xb01c, 0x0000, 0xb01d, 0xb01e, 0xb01f, 0xb020, 0xb021, + 0xb022, 0xb023, 0xb024, 0xb025, 0xb026, 0xb027, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xb028, 0xb029, 0xb02a, 0xb02b, 0xb02c, 0xb02d, 0xb02e, + 0xb02f, 0xb030, 0xb031, 0xb032, 0xb033, 0xb034, 0xb035, 0xb036, + 0xb037, 0xb038, 0x0000, 0xb039, 0xb03a, 0xb03b, 0xb03c, 0xb03d, + 0xb03e, 0xb03f, 0xb040, 0xb041, 0xb042, 0xb043, 0x0000, 0x0000, + 0x0000, 0xb044, 0xb045, 0xb046, 0xb047, 0xb048, 0xb049, 0xb04a, + 0xb04b, 0xb04c, 0xb04d, 0xb04e, 0xb04f, 0xb050, 0xb051, 0xb052, + 0xb053, 0xb054, 0x0000, 0xb055, 0xb056, 0xb057, 0xb058, 0xb059, + 0xb05a, 0xb05b, 0xb05c, 0xb05d, 0xb05e, 0xb05f, 0x0000, 0x0000, + 0x0000, 0xb060, 0xb061, 0xb062, 0xb063, 0xb064, 0xb065, 0xb066, + 0xb067, 0xb068, 0xb069, 0xb06a, 0xb06b, 0xb06c, 0xb06d, 0xb06e, + 0xb06f, 0xb070, 0x0000, 0xb071, 0xb072, 0xb073, 0xb074, 0xb075, + 0xb076, 0xb077, 0xb078, 0xb079, 0xb07a, 0xb07b, 0x0000, 0x0000, + 0x0000, 0xb07c, 0xb07d, 0xb07e, 0xb07f, 0xb080, 0xb081, 0xb082, + 0xb083, 0xb084, 0xb085, 0xb086, 0xb087, 0xb088, 0xb089, 0xb08a, + 0xb08b, 0xb08c, 0x0000, 0xb08d, 0xb08e, 0xb08f, 0xb090, 0xb091, + 0xb092, 0xb093, 0xb094, 0xb095, 0xb096, 0xb097, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xb098, 0xb099, 0xb09a, 0xb09b, 0xb09c, 0xb09d, 0xb09e, + 0xb09f, 0xb0a0, 0xb0a1, 0xb0a2, 0xb0a3, 0xb0a4, 0xb0a5, 0xb0a6, + 0xb0a7, 0xb0a8, 0x0000, 0xb0a9, 0xb0aa, 0xb0ab, 0xb0ac, 0xb0ad, + 0xb0ae, 0xb0af, 0xb0b0, 0xb0b1, 0xb0b2, 0xb0b3, 0x0000, 0x0000, + 0x0000, 0xb0b4, 0xb0b5, 0xb0b6, 0xb0b7, 0xb0b8, 0xb0b9, 0xb0ba, + 0xb0bb, 0xb0bc, 0xb0bd, 0xb0be, 0xb0bf, 0xb0c0, 0xb0c1, 0xb0c2, + 0xb0c3, 0xb0c4, 0x0000, 0xb0c5, 0xb0c6, 0xb0c7, 0xb0c8, 0xb0c9, + 0xb0ca, 0xb0cb, 0xb0cc, 0xb0cd, 0xb0ce, 0xb0cf, 0x0000, 0x0000, + 0x0000, 0xb0d0, 0xb0d1, 0xb0d2, 0xb0d3, 0xb0d4, 0xb0d5, 0xb0d6, + 0xb0d7, 0xb0d8, 0xb0d9, 0xb0da, 0xb0db, 0xb0dc, 0xb0dd, 0xb0de, + 0xb0df, 0xb0e0, 0x0000, 0xb0e1, 0xb0e2, 0xb0e3, 0xb0e4, 0xb0e5, + 0xb0e6, 0xb0e7, 0xb0e8, 0xb0e9, 0xb0ea, 0xb0eb, 0x0000, 0x0000, + 0x0000, 0xb0ec, 0xb0ed, 0xb0ee, 0xb0ef, 0xb0f0, 0xb0f1, 0xb0f2, + 0xb0f3, 0xb0f4, 0xb0f5, 0xb0f6, 0xb0f7, 0xb0f8, 0xb0f9, 0xb0fa, + 0xb0fb, 0xb0fc, 0x0000, 0xb0fd, 0xb0fe, 0xb0ff, 0xb100, 0xb101, + 0xb102, 0xb103, 0xb104, 0xb105, 0xb106, 0xb107, 0x0000, 0x0000, + 0x0000, 0xb108, 0xb109, 0xb10a, 0xb10b, 0xb10c, 0xb10d, 0xb10e, + 0xb10f, 0xb110, 0xb111, 0xb112, 0xb113, 0xb114, 0xb115, 0xb116, + 0xb117, 0xb118, 0x0000, 0xb119, 0xb11a, 0xb11b, 0xb11c, 0xb11d, + 0xb11e, 0xb11f, 0xb120, 0xb121, 0xb122, 0xb123, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xb124, 0xb125, 0xb126, 0xb127, 0xb128, 0xb129, 0xb12a, + 0xb12b, 0xb12c, 0xb12d, 0xb12e, 0xb12f, 0xb130, 0xb131, 0xb132, + 0xb133, 0xb134, 0x0000, 0xb135, 0xb136, 0xb137, 0xb138, 0xb139, + 0xb13a, 0xb13b, 0xb13c, 0xb13d, 0xb13e, 0xb13f, 0x0000, 0x0000, + 0x0000, 0xb140, 0xb141, 0xb142, 0xb143, 0xb144, 0xb145, 0xb146, + 0xb147, 0xb148, 0xb149, 0xb14a, 0xb14b, 0xb14c, 0xb14d, 0xb14e, + 0xb14f, 0xb150, 0x0000, 0xb151, 0xb152, 0xb153, 0xb154, 0xb155, + 0xb156, 0xb157, 0xb158, 0xb159, 0xb15a, 0xb15b, 0x0000, 0x0000, + 0x0000, 0xb15c, 0xb15d, 0xb15e, 0xb15f, 0xb160, 0xb161, 0xb162, + 0xb163, 0xb164, 0xb165, 0xb166, 0xb167, 0xb168, 0xb169, 0xb16a, + 0xb16b, 0xb16c, 0x0000, 0xb16d, 0xb16e, 0xb16f, 0xb170, 0xb171, + 0xb172, 0xb173, 0xb174, 0xb175, 0xb176, 0xb177, 0x0000, 0x0000, + 0x0000, 0xb178, 0xb179, 0xb17a, 0xb17b, 0xb17c, 0xb17d, 0xb17e, + 0xb17f, 0xb180, 0xb181, 0xb182, 0xb183, 0xb184, 0xb185, 0xb186, + 0xb187, 0xb188, 0x0000, 0xb189, 0xb18a, 0xb18b, 0xb18c, 0xb18d, + 0xb18e, 0xb18f, 0xb190, 0xb191, 0xb192, 0xb193, 0x0000, 0x0000, + 0x0000, 0xb194, 0xb195, 0xb196, 0xb197, 0xb198, 0xb199, 0xb19a, + 0xb19b, 0xb19c, 0xb19d, 0xb19e, 0xb19f, 0xb1a0, 0xb1a1, 0xb1a2, + 0xb1a3, 0xb1a4, 0x0000, 0xb1a5, 0xb1a6, 0xb1a7, 0xb1a8, 0xb1a9, + 0xb1aa, 0xb1ab, 0xb1ac, 0xb1ad, 0xb1ae, 0xb1af, 0x0000, 0x0000, + 0x0000, 0xb1b0, 0xb1b1, 0xb1b2, 0xb1b3, 0xb1b4, 0xb1b5, 0xb1b6, + 0xb1b7, 0xb1b8, 0xb1b9, 0xb1ba, 0xb1bb, 0xb1bc, 0xb1bd, 0xb1be, + 0xb1bf, 0xb1c0, 0x0000, 0xb1c1, 0xb1c2, 0xb1c3, 0xb1c4, 0xb1c5, + 0xb1c6, 0xb1c7, 0xb1c8, 0xb1c9, 0xb1ca, 0xb1cb, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xb1cc, 0xb1cd, 0xb1ce, 0xb1cf, 0xb1d0, 0xb1d1, 0xb1d2, + 0xb1d3, 0xb1d4, 0xb1d5, 0xb1d6, 0xb1d7, 0xb1d8, 0xb1d9, 0xb1da, + 0xb1db, 0xb1dc, 0x0000, 0xb1dd, 0xb1de, 0xb1df, 0xb1e0, 0xb1e1, + 0xb1e2, 0xb1e3, 0xb1e4, 0xb1e5, 0xb1e6, 0xb1e7, 0x0000, 0x0000, + 0x0000, 0xb1e8, 0xb1e9, 0xb1ea, 0xb1eb, 0xb1ec, 0xb1ed, 0xb1ee, + 0xb1ef, 0xb1f0, 0xb1f1, 0xb1f2, 0xb1f3, 0xb1f4, 0xb1f5, 0xb1f6, + 0xb1f7, 0xb1f8, 0x0000, 0xb1f9, 0xb1fa, 0xb1fb, 0xb1fc, 0xb1fd, + 0xb1fe, 0xb1ff, 0xb200, 0xb201, 0xb202, 0xb203, 0x0000, 0x0000, + 0x0000, 0xb204, 0xb205, 0xb206, 0xb207, 0xb208, 0xb209, 0xb20a, + 0xb20b, 0xb20c, 0xb20d, 0xb20e, 0xb20f, 0xb210, 0xb211, 0xb212, + 0xb213, 0xb214, 0x0000, 0xb215, 0xb216, 0xb217, 0xb218, 0xb219, + 0xb21a, 0xb21b, 0xb21c, 0xb21d, 0xb21e, 0xb21f, 0x0000, 0x0000, + 0x0000, 0xb220, 0xb221, 0xb222, 0xb223, 0xb224, 0xb225, 0xb226, + 0xb227, 0xb228, 0xb229, 0xb22a, 0xb22b, 0xb22c, 0xb22d, 0xb22e, + 0xb22f, 0xb230, 0x0000, 0xb231, 0xb232, 0xb233, 0xb234, 0xb235, + 0xb236, 0xb237, 0xb238, 0xb239, 0xb23a, 0xb23b, 0x0000, 0x0000, + 0x0000, 0xb23c, 0xb23d, 0xb23e, 0xb23f, 0xb240, 0xb241, 0xb242, + 0xb243, 0xb244, 0xb245, 0xb246, 0xb247, 0xb248, 0xb249, 0xb24a, + 0xb24b, 0xb24c, 0x0000, 0xb24d, 0xb24e, 0xb24f, 0xb250, 0xb251, + 0xb252, 0xb253, 0xb254, 0xb255, 0xb256, 0xb257, 0x0000, 0x0000, + 0x0000, 0xb258, 0xb259, 0xb25a, 0xb25b, 0xb25c, 0xb25d, 0xb25e, + 0xb25f, 0xb260, 0xb261, 0xb262, 0xb263, 0xb264, 0xb265, 0xb266, + 0xb267, 0xb268, 0x0000, 0xb269, 0xb26a, 0xb26b, 0xb26c, 0xb26d, + 0xb26e, 0xb26f, 0xb270, 0xb271, 0xb272, 0xb273, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xb274, 0xb275, 0xb276, 0xb277, 0xb278, 0xb279, 0xb27a, + 0xb27b, 0xb27c, 0xb27d, 0xb27e, 0xb27f, 0xb280, 0xb281, 0xb282, + 0xb283, 0xb284, 0x0000, 0xb285, 0xb286, 0xb287, 0xb288, 0xb289, + 0xb28a, 0xb28b, 0xb28c, 0xb28d, 0xb28e, 0xb28f, 0x0000, 0x0000, + 0x0000, 0xb290, 0xb291, 0xb292, 0xb293, 0xb294, 0xb295, 0xb296, + 0xb297, 0xb298, 0xb299, 0xb29a, 0xb29b, 0xb29c, 0xb29d, 0xb29e, + 0xb29f, 0xb2a0, 0x0000, 0xb2a1, 0xb2a2, 0xb2a3, 0xb2a4, 0xb2a5, + 0xb2a6, 0xb2a7, 0xb2a8, 0xb2a9, 0xb2aa, 0xb2ab, 0x0000, 0x0000, + 0x0000, 0xb2ac, 0xb2ad, 0xb2ae, 0xb2af, 0xb2b0, 0xb2b1, 0xb2b2, + 0xb2b3, 0xb2b4, 0xb2b5, 0xb2b6, 0xb2b7, 0xb2b8, 0xb2b9, 0xb2ba, + 0xb2bb, 0xb2bc, 0x0000, 0xb2bd, 0xb2be, 0xb2bf, 0xb2c0, 0xb2c1, + 0xb2c2, 0xb2c3, 0xb2c4, 0xb2c5, 0xb2c6, 0xb2c7, 0x0000, 0x0000, + 0x0000, 0xb2c8, 0xb2c9, 0xb2ca, 0xb2cb, 0xb2cc, 0xb2cd, 0xb2ce, + 0xb2cf, 0xb2d0, 0xb2d1, 0xb2d2, 0xb2d3, 0xb2d4, 0xb2d5, 0xb2d6, + 0xb2d7, 0xb2d8, 0x0000, 0xb2d9, 0xb2da, 0xb2db, 0xb2dc, 0xb2dd, + 0xb2de, 0xb2df, 0xb2e0, 0xb2e1, 0xb2e2, 0xb2e3, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xb2e4, 0xb2e5, 0xb2e6, 0xb2e7, 0xb2e8, 0xb2e9, 0xb2ea, + 0xb2eb, 0xb2ec, 0xb2ed, 0xb2ee, 0xb2ef, 0xb2f0, 0xb2f1, 0xb2f2, + 0xb2f3, 0xb2f4, 0x0000, 0xb2f5, 0xb2f6, 0xb2f7, 0xb2f8, 0xb2f9, + 0xb2fa, 0xb2fb, 0xb2fc, 0xb2fd, 0xb2fe, 0xb2ff, 0x0000, 0x0000, + 0x0000, 0xb300, 0xb301, 0xb302, 0xb303, 0xb304, 0xb305, 0xb306, + 0xb307, 0xb308, 0xb309, 0xb30a, 0xb30b, 0xb30c, 0xb30d, 0xb30e, + 0xb30f, 0xb310, 0x0000, 0xb311, 0xb312, 0xb313, 0xb314, 0xb315, + 0xb316, 0xb317, 0xb318, 0xb319, 0xb31a, 0xb31b, 0x0000, 0x0000, + 0x0000, 0xb31c, 0xb31d, 0xb31e, 0xb31f, 0xb320, 0xb321, 0xb322, + 0xb323, 0xb324, 0xb325, 0xb326, 0xb327, 0xb328, 0xb329, 0xb32a, + 0xb32b, 0xb32c, 0x0000, 0xb32d, 0xb32e, 0xb32f, 0xb330, 0xb331, + 0xb332, 0xb333, 0xb334, 0xb335, 0xb336, 0xb337, 0x0000, 0x0000, + 0x0000, 0xb338, 0xb339, 0xb33a, 0xb33b, 0xb33c, 0xb33d, 0xb33e, + 0xb33f, 0xb340, 0xb341, 0xb342, 0xb343, 0xb344, 0xb345, 0xb346, + 0xb347, 0xb348, 0x0000, 0xb349, 0xb34a, 0xb34b, 0xb34c, 0xb34d, + 0xb34e, 0xb34f, 0xb350, 0xb351, 0xb352, 0xb353, 0x0000, 0x0000, + 0x0000, 0xb354, 0xb355, 0xb356, 0xb357, 0xb358, 0xb359, 0xb35a, + 0xb35b, 0xb35c, 0xb35d, 0xb35e, 0xb35f, 0xb360, 0xb361, 0xb362, + 0xb363, 0xb364, 0x0000, 0xb365, 0xb366, 0xb367, 0xb368, 0xb369, + 0xb36a, 0xb36b, 0xb36c, 0xb36d, 0xb36e, 0xb36f, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xb370, 0xb371, 0xb372, 0xb373, 0xb374, 0xb375, 0xb376, + 0xb377, 0xb378, 0xb379, 0xb37a, 0xb37b, 0xb37c, 0xb37d, 0xb37e, + 0xb37f, 0xb380, 0x0000, 0xb381, 0xb382, 0xb383, 0xb384, 0xb385, + 0xb386, 0xb387, 0xb388, 0xb389, 0xb38a, 0xb38b, 0x0000, 0x0000, + 0x0000, 0xb38c, 0xb38d, 0xb38e, 0xb38f, 0xb390, 0xb391, 0xb392, + 0xb393, 0xb394, 0xb395, 0xb396, 0xb397, 0xb398, 0xb399, 0xb39a, + 0xb39b, 0xb39c, 0x0000, 0xb39d, 0xb39e, 0xb39f, 0xb3a0, 0xb3a1, + 0xb3a2, 0xb3a3, 0xb3a4, 0xb3a5, 0xb3a6, 0xb3a7, 0x0000, 0x0000, + 0x0000, 0xb3a8, 0xb3a9, 0xb3aa, 0xb3ab, 0xb3ac, 0xb3ad, 0xb3ae, + 0xb3af, 0xb3b0, 0xb3b1, 0xb3b2, 0xb3b3, 0xb3b4, 0xb3b5, 0xb3b6, + 0xb3b7, 0xb3b8, 0x0000, 0xb3b9, 0xb3ba, 0xb3bb, 0xb3bc, 0xb3bd, + 0xb3be, 0xb3bf, 0xb3c0, 0xb3c1, 0xb3c2, 0xb3c3, 0x0000, 0x0000, + 0x0000, 0xb3c4, 0xb3c5, 0xb3c6, 0xb3c7, 0xb3c8, 0xb3c9, 0xb3ca, + 0xb3cb, 0xb3cc, 0xb3cd, 0xb3ce, 0xb3cf, 0xb3d0, 0xb3d1, 0xb3d2, + 0xb3d3, 0xb3d4, 0x0000, 0xb3d5, 0xb3d6, 0xb3d7, 0xb3d8, 0xb3d9, + 0xb3da, 0xb3db, 0xb3dc, 0xb3dd, 0xb3de, 0xb3df, 0x0000, 0x0000, + 0x0000, 0xb3e0, 0xb3e1, 0xb3e2, 0xb3e3, 0xb3e4, 0xb3e5, 0xb3e6, + 0xb3e7, 0xb3e8, 0xb3e9, 0xb3ea, 0xb3eb, 0xb3ec, 0xb3ed, 0xb3ee, + 0xb3ef, 0xb3f0, 0x0000, 0xb3f1, 0xb3f2, 0xb3f3, 0xb3f4, 0xb3f5, + 0xb3f6, 0xb3f7, 0xb3f8, 0xb3f9, 0xb3fa, 0xb3fb, 0x0000, 0x0000, + 0x0000, 0xb3fc, 0xb3fd, 0xb3fe, 0xb3ff, 0xb400, 0xb401, 0xb402, + 0xb403, 0xb404, 0xb405, 0xb406, 0xb407, 0xb408, 0xb409, 0xb40a, + 0xb40b, 0xb40c, 0x0000, 0xb40d, 0xb40e, 0xb40f, 0xb410, 0xb411, + 0xb412, 0xb413, 0xb414, 0xb415, 0xb416, 0xb417, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xb418, 0xb419, 0xb41a, 0xb41b, 0xb41c, 0xb41d, 0xb41e, + 0xb41f, 0xb420, 0xb421, 0xb422, 0xb423, 0xb424, 0xb425, 0xb426, + 0xb427, 0xb428, 0x0000, 0xb429, 0xb42a, 0xb42b, 0xb42c, 0xb42d, + 0xb42e, 0xb42f, 0xb430, 0xb431, 0xb432, 0xb433, 0x0000, 0x0000, + 0x0000, 0xb434, 0xb435, 0xb436, 0xb437, 0xb438, 0xb439, 0xb43a, + 0xb43b, 0xb43c, 0xb43d, 0xb43e, 0xb43f, 0xb440, 0xb441, 0xb442, + 0xb443, 0xb444, 0x0000, 0xb445, 0xb446, 0xb447, 0xb448, 0xb449, + 0xb44a, 0xb44b, 0xb44c, 0xb44d, 0xb44e, 0xb44f, 0x0000, 0x0000, + 0x0000, 0xb450, 0xb451, 0xb452, 0xb453, 0xb454, 0xb455, 0xb456, + 0xb457, 0xb458, 0xb459, 0xb45a, 0xb45b, 0xb45c, 0xb45d, 0xb45e, + 0xb45f, 0xb460, 0x0000, 0xb461, 0xb462, 0xb463, 0xb464, 0xb465, + 0xb466, 0xb467, 0xb468, 0xb469, 0xb46a, 0xb46b, 0x0000, 0x0000, + 0x0000, 0xb46c, 0xb46d, 0xb46e, 0xb46f, 0xb470, 0xb471, 0xb472, + 0xb473, 0xb474, 0xb475, 0xb476, 0xb477, 0xb478, 0xb479, 0xb47a, + 0xb47b, 0xb47c, 0x0000, 0xb47d, 0xb47e, 0xb47f, 0xb480, 0xb481, + 0xb482, 0xb483, 0xb484, 0xb485, 0xb486, 0xb487, 0x0000, 0x0000, + 0x0000, 0xb488, 0xb489, 0xb48a, 0xb48b, 0xb48c, 0xb48d, 0xb48e, + 0xb48f, 0xb490, 0xb491, 0xb492, 0xb493, 0xb494, 0xb495, 0xb496, + 0xb497, 0xb498, 0x0000, 0xb499, 0xb49a, 0xb49b, 0xb49c, 0xb49d, + 0xb49e, 0xb49f, 0xb4a0, 0xb4a1, 0xb4a2, 0xb4a3, 0x0000, 0x0000, + 0x0000, 0xb4a4, 0xb4a5, 0xb4a6, 0xb4a7, 0xb4a8, 0xb4a9, 0xb4aa, + 0xb4ab, 0xb4ac, 0xb4ad, 0xb4ae, 0xb4af, 0xb4b0, 0xb4b1, 0xb4b2, + 0xb4b3, 0xb4b4, 0x0000, 0xb4b5, 0xb4b6, 0xb4b7, 0xb4b8, 0xb4b9, + 0xb4ba, 0xb4bb, 0xb4bc, 0xb4bd, 0xb4be, 0xb4bf, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xb4c0, 0xb4c1, 0xb4c2, 0xb4c3, 0xb4c4, 0xb4c5, 0xb4c6, + 0xb4c7, 0xb4c8, 0xb4c9, 0xb4ca, 0xb4cb, 0xb4cc, 0xb4cd, 0xb4ce, + 0xb4cf, 0xb4d0, 0x0000, 0xb4d1, 0xb4d2, 0xb4d3, 0xb4d4, 0xb4d5, + 0xb4d6, 0xb4d7, 0xb4d8, 0xb4d9, 0xb4da, 0xb4db, 0x0000, 0x0000, + 0x0000, 0xb4dc, 0xb4dd, 0xb4de, 0xb4df, 0xb4e0, 0xb4e1, 0xb4e2, + 0xb4e3, 0xb4e4, 0xb4e5, 0xb4e6, 0xb4e7, 0xb4e8, 0xb4e9, 0xb4ea, + 0xb4eb, 0xb4ec, 0x0000, 0xb4ed, 0xb4ee, 0xb4ef, 0xb4f0, 0xb4f1, + 0xb4f2, 0xb4f3, 0xb4f4, 0xb4f5, 0xb4f6, 0xb4f7, 0x0000, 0x0000, + 0x0000, 0xb4f8, 0xb4f9, 0xb4fa, 0xb4fb, 0xb4fc, 0xb4fd, 0xb4fe, + 0xb4ff, 0xb500, 0xb501, 0xb502, 0xb503, 0xb504, 0xb505, 0xb506, + 0xb507, 0xb508, 0x0000, 0xb509, 0xb50a, 0xb50b, 0xb50c, 0xb50d, + 0xb50e, 0xb50f, 0xb510, 0xb511, 0xb512, 0xb513, 0x0000, 0x0000, + 0x0000, 0xb514, 0xb515, 0xb516, 0xb517, 0xb518, 0xb519, 0xb51a, + 0xb51b, 0xb51c, 0xb51d, 0xb51e, 0xb51f, 0xb520, 0xb521, 0xb522, + 0xb523, 0xb524, 0x0000, 0xb525, 0xb526, 0xb527, 0xb528, 0xb529, + 0xb52a, 0xb52b, 0xb52c, 0xb52d, 0xb52e, 0xb52f, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x3138, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xb530, 0xb531, 0xb532, 0xb533, 0xb534, 0xb535, 0xb536, + 0xb537, 0xb538, 0xb539, 0xb53a, 0xb53b, 0xb53c, 0xb53d, 0xb53e, + 0xb53f, 0xb540, 0x0000, 0xb541, 0xb542, 0xb543, 0xb544, 0xb545, + 0xb546, 0xb547, 0xb548, 0xb549, 0xb54a, 0xb54b, 0x0000, 0x0000, + 0x0000, 0xb54c, 0xb54d, 0xb54e, 0xb54f, 0xb550, 0xb551, 0xb552, + 0xb553, 0xb554, 0xb555, 0xb556, 0xb557, 0xb558, 0xb559, 0xb55a, + 0xb55b, 0xb55c, 0x0000, 0xb55d, 0xb55e, 0xb55f, 0xb560, 0xb561, + 0xb562, 0xb563, 0xb564, 0xb565, 0xb566, 0xb567, 0x0000, 0x0000, + 0x0000, 0xb568, 0xb569, 0xb56a, 0xb56b, 0xb56c, 0xb56d, 0xb56e, + 0xb56f, 0xb570, 0xb571, 0xb572, 0xb573, 0xb574, 0xb575, 0xb576, + 0xb577, 0xb578, 0x0000, 0xb579, 0xb57a, 0xb57b, 0xb57c, 0xb57d, + 0xb57e, 0xb57f, 0xb580, 0xb581, 0xb582, 0xb583, 0x0000, 0x0000, + 0x0000, 0xb584, 0xb585, 0xb586, 0xb587, 0xb588, 0xb589, 0xb58a, + 0xb58b, 0xb58c, 0xb58d, 0xb58e, 0xb58f, 0xb590, 0xb591, 0xb592, + 0xb593, 0xb594, 0x0000, 0xb595, 0xb596, 0xb597, 0xb598, 0xb599, + 0xb59a, 0xb59b, 0xb59c, 0xb59d, 0xb59e, 0xb59f, 0x0000, 0x0000, + 0x0000, 0xb5a0, 0xb5a1, 0xb5a2, 0xb5a3, 0xb5a4, 0xb5a5, 0xb5a6, + 0xb5a7, 0xb5a8, 0xb5a9, 0xb5aa, 0xb5ab, 0xb5ac, 0xb5ad, 0xb5ae, + 0xb5af, 0xb5b0, 0x0000, 0xb5b1, 0xb5b2, 0xb5b3, 0xb5b4, 0xb5b5, + 0xb5b6, 0xb5b7, 0xb5b8, 0xb5b9, 0xb5ba, 0xb5bb, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xb5bc, 0xb5bd, 0xb5be, 0xb5bf, 0xb5c0, 0xb5c1, 0xb5c2, + 0xb5c3, 0xb5c4, 0xb5c5, 0xb5c6, 0xb5c7, 0xb5c8, 0xb5c9, 0xb5ca, + 0xb5cb, 0xb5cc, 0x0000, 0xb5cd, 0xb5ce, 0xb5cf, 0xb5d0, 0xb5d1, + 0xb5d2, 0xb5d3, 0xb5d4, 0xb5d5, 0xb5d6, 0xb5d7, 0x0000, 0x0000, + 0x0000, 0xb5d8, 0xb5d9, 0xb5da, 0xb5db, 0xb5dc, 0xb5dd, 0xb5de, + 0xb5df, 0xb5e0, 0xb5e1, 0xb5e2, 0xb5e3, 0xb5e4, 0xb5e5, 0xb5e6, + 0xb5e7, 0xb5e8, 0x0000, 0xb5e9, 0xb5ea, 0xb5eb, 0xb5ec, 0xb5ed, + 0xb5ee, 0xb5ef, 0xb5f0, 0xb5f1, 0xb5f2, 0xb5f3, 0x0000, 0x0000, + 0x0000, 0xb5f4, 0xb5f5, 0xb5f6, 0xb5f7, 0xb5f8, 0xb5f9, 0xb5fa, + 0xb5fb, 0xb5fc, 0xb5fd, 0xb5fe, 0xb5ff, 0xb600, 0xb601, 0xb602, + 0xb603, 0xb604, 0x0000, 0xb605, 0xb606, 0xb607, 0xb608, 0xb609, + 0xb60a, 0xb60b, 0xb60c, 0xb60d, 0xb60e, 0xb60f, 0x0000, 0x0000, + 0x0000, 0xb610, 0xb611, 0xb612, 0xb613, 0xb614, 0xb615, 0xb616, + 0xb617, 0xb618, 0xb619, 0xb61a, 0xb61b, 0xb61c, 0xb61d, 0xb61e, + 0xb61f, 0xb620, 0x0000, 0xb621, 0xb622, 0xb623, 0xb624, 0xb625, + 0xb626, 0xb627, 0xb628, 0xb629, 0xb62a, 0xb62b, 0x0000, 0x0000, + 0x0000, 0xb62c, 0xb62d, 0xb62e, 0xb62f, 0xb630, 0xb631, 0xb632, + 0xb633, 0xb634, 0xb635, 0xb636, 0xb637, 0xb638, 0xb639, 0xb63a, + 0xb63b, 0xb63c, 0x0000, 0xb63d, 0xb63e, 0xb63f, 0xb640, 0xb641, + 0xb642, 0xb643, 0xb644, 0xb645, 0xb646, 0xb647, 0x0000, 0x0000, + 0x0000, 0xb648, 0xb649, 0xb64a, 0xb64b, 0xb64c, 0xb64d, 0xb64e, + 0xb64f, 0xb650, 0xb651, 0xb652, 0xb653, 0xb654, 0xb655, 0xb656, + 0xb657, 0xb658, 0x0000, 0xb659, 0xb65a, 0xb65b, 0xb65c, 0xb65d, + 0xb65e, 0xb65f, 0xb660, 0xb661, 0xb662, 0xb663, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xb664, 0xb665, 0xb666, 0xb667, 0xb668, 0xb669, 0xb66a, + 0xb66b, 0xb66c, 0xb66d, 0xb66e, 0xb66f, 0xb670, 0xb671, 0xb672, + 0xb673, 0xb674, 0x0000, 0xb675, 0xb676, 0xb677, 0xb678, 0xb679, + 0xb67a, 0xb67b, 0xb67c, 0xb67d, 0xb67e, 0xb67f, 0x0000, 0x0000, + 0x0000, 0xb680, 0xb681, 0xb682, 0xb683, 0xb684, 0xb685, 0xb686, + 0xb687, 0xb688, 0xb689, 0xb68a, 0xb68b, 0xb68c, 0xb68d, 0xb68e, + 0xb68f, 0xb690, 0x0000, 0xb691, 0xb692, 0xb693, 0xb694, 0xb695, + 0xb696, 0xb697, 0xb698, 0xb699, 0xb69a, 0xb69b, 0x0000, 0x0000, + 0x0000, 0xb69c, 0xb69d, 0xb69e, 0xb69f, 0xb6a0, 0xb6a1, 0xb6a2, + 0xb6a3, 0xb6a4, 0xb6a5, 0xb6a6, 0xb6a7, 0xb6a8, 0xb6a9, 0xb6aa, + 0xb6ab, 0xb6ac, 0x0000, 0xb6ad, 0xb6ae, 0xb6af, 0xb6b0, 0xb6b1, + 0xb6b2, 0xb6b3, 0xb6b4, 0xb6b5, 0xb6b6, 0xb6b7, 0x0000, 0x0000, + 0x0000, 0xb6b8, 0xb6b9, 0xb6ba, 0xb6bb, 0xb6bc, 0xb6bd, 0xb6be, + 0xb6bf, 0xb6c0, 0xb6c1, 0xb6c2, 0xb6c3, 0xb6c4, 0xb6c5, 0xb6c6, + 0xb6c7, 0xb6c8, 0x0000, 0xb6c9, 0xb6ca, 0xb6cb, 0xb6cc, 0xb6cd, + 0xb6ce, 0xb6cf, 0xb6d0, 0xb6d1, 0xb6d2, 0xb6d3, 0x0000, 0x0000, + 0x0000, 0xb6d4, 0xb6d5, 0xb6d6, 0xb6d7, 0xb6d8, 0xb6d9, 0xb6da, + 0xb6db, 0xb6dc, 0xb6dd, 0xb6de, 0xb6df, 0xb6e0, 0xb6e1, 0xb6e2, + 0xb6e3, 0xb6e4, 0x0000, 0xb6e5, 0xb6e6, 0xb6e7, 0xb6e8, 0xb6e9, + 0xb6ea, 0xb6eb, 0xb6ec, 0xb6ed, 0xb6ee, 0xb6ef, 0x0000, 0x0000, + 0x0000, 0xb6f0, 0xb6f1, 0xb6f2, 0xb6f3, 0xb6f4, 0xb6f5, 0xb6f6, + 0xb6f7, 0xb6f8, 0xb6f9, 0xb6fa, 0xb6fb, 0xb6fc, 0xb6fd, 0xb6fe, + 0xb6ff, 0xb700, 0x0000, 0xb701, 0xb702, 0xb703, 0xb704, 0xb705, + 0xb706, 0xb707, 0xb708, 0xb709, 0xb70a, 0xb70b, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xb70c, 0xb70d, 0xb70e, 0xb70f, 0xb710, 0xb711, 0xb712, + 0xb713, 0xb714, 0xb715, 0xb716, 0xb717, 0xb718, 0xb719, 0xb71a, + 0xb71b, 0xb71c, 0x0000, 0xb71d, 0xb71e, 0xb71f, 0xb720, 0xb721, + 0xb722, 0xb723, 0xb724, 0xb725, 0xb726, 0xb727, 0x0000, 0x0000, + 0x0000, 0xb728, 0xb729, 0xb72a, 0xb72b, 0xb72c, 0xb72d, 0xb72e, + 0xb72f, 0xb730, 0xb731, 0xb732, 0xb733, 0xb734, 0xb735, 0xb736, + 0xb737, 0xb738, 0x0000, 0xb739, 0xb73a, 0xb73b, 0xb73c, 0xb73d, + 0xb73e, 0xb73f, 0xb740, 0xb741, 0xb742, 0xb743, 0x0000, 0x0000, + 0x0000, 0xb744, 0xb745, 0xb746, 0xb747, 0xb748, 0xb749, 0xb74a, + 0xb74b, 0xb74c, 0xb74d, 0xb74e, 0xb74f, 0xb750, 0xb751, 0xb752, + 0xb753, 0xb754, 0x0000, 0xb755, 0xb756, 0xb757, 0xb758, 0xb759, + 0xb75a, 0xb75b, 0xb75c, 0xb75d, 0xb75e, 0xb75f, 0x0000, 0x0000, + 0x0000, 0xb760, 0xb761, 0xb762, 0xb763, 0xb764, 0xb765, 0xb766, + 0xb767, 0xb768, 0xb769, 0xb76a, 0xb76b, 0xb76c, 0xb76d, 0xb76e, + 0xb76f, 0xb770, 0x0000, 0xb771, 0xb772, 0xb773, 0xb774, 0xb775, + 0xb776, 0xb777, 0xb778, 0xb779, 0xb77a, 0xb77b, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xb77c, 0xb77d, 0xb77e, 0xb77f, 0xb780, 0xb781, 0xb782, + 0xb783, 0xb784, 0xb785, 0xb786, 0xb787, 0xb788, 0xb789, 0xb78a, + 0xb78b, 0xb78c, 0x0000, 0xb78d, 0xb78e, 0xb78f, 0xb790, 0xb791, + 0xb792, 0xb793, 0xb794, 0xb795, 0xb796, 0xb797, 0x0000, 0x0000, + 0x0000, 0xb798, 0xb799, 0xb79a, 0xb79b, 0xb79c, 0xb79d, 0xb79e, + 0xb79f, 0xb7a0, 0xb7a1, 0xb7a2, 0xb7a3, 0xb7a4, 0xb7a5, 0xb7a6, + 0xb7a7, 0xb7a8, 0x0000, 0xb7a9, 0xb7aa, 0xb7ab, 0xb7ac, 0xb7ad, + 0xb7ae, 0xb7af, 0xb7b0, 0xb7b1, 0xb7b2, 0xb7b3, 0x0000, 0x0000, + 0x0000, 0xb7b4, 0xb7b5, 0xb7b6, 0xb7b7, 0xb7b8, 0xb7b9, 0xb7ba, + 0xb7bb, 0xb7bc, 0xb7bd, 0xb7be, 0xb7bf, 0xb7c0, 0xb7c1, 0xb7c2, + 0xb7c3, 0xb7c4, 0x0000, 0xb7c5, 0xb7c6, 0xb7c7, 0xb7c8, 0xb7c9, + 0xb7ca, 0xb7cb, 0xb7cc, 0xb7cd, 0xb7ce, 0xb7cf, 0x0000, 0x0000, + 0x0000, 0xb7d0, 0xb7d1, 0xb7d2, 0xb7d3, 0xb7d4, 0xb7d5, 0xb7d6, + 0xb7d7, 0xb7d8, 0xb7d9, 0xb7da, 0xb7db, 0xb7dc, 0xb7dd, 0xb7de, + 0xb7df, 0xb7e0, 0x0000, 0xb7e1, 0xb7e2, 0xb7e3, 0xb7e4, 0xb7e5, + 0xb7e6, 0xb7e7, 0xb7e8, 0xb7e9, 0xb7ea, 0xb7eb, 0x0000, 0x0000, + 0x0000, 0xb7ec, 0xb7ed, 0xb7ee, 0xb7ef, 0xb7f0, 0xb7f1, 0xb7f2, + 0xb7f3, 0xb7f4, 0xb7f5, 0xb7f6, 0xb7f7, 0xb7f8, 0xb7f9, 0xb7fa, + 0xb7fb, 0xb7fc, 0x0000, 0xb7fd, 0xb7fe, 0xb7ff, 0xb800, 0xb801, + 0xb802, 0xb803, 0xb804, 0xb805, 0xb806, 0xb807, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xb808, 0xb809, 0xb80a, 0xb80b, 0xb80c, 0xb80d, 0xb80e, + 0xb80f, 0xb810, 0xb811, 0xb812, 0xb813, 0xb814, 0xb815, 0xb816, + 0xb817, 0xb818, 0x0000, 0xb819, 0xb81a, 0xb81b, 0xb81c, 0xb81d, + 0xb81e, 0xb81f, 0xb820, 0xb821, 0xb822, 0xb823, 0x0000, 0x0000, + 0x0000, 0xb824, 0xb825, 0xb826, 0xb827, 0xb828, 0xb829, 0xb82a, + 0xb82b, 0xb82c, 0xb82d, 0xb82e, 0xb82f, 0xb830, 0xb831, 0xb832, + 0xb833, 0xb834, 0x0000, 0xb835, 0xb836, 0xb837, 0xb838, 0xb839, + 0xb83a, 0xb83b, 0xb83c, 0xb83d, 0xb83e, 0xb83f, 0x0000, 0x0000, + 0x0000, 0xb840, 0xb841, 0xb842, 0xb843, 0xb844, 0xb845, 0xb846, + 0xb847, 0xb848, 0xb849, 0xb84a, 0xb84b, 0xb84c, 0xb84d, 0xb84e, + 0xb84f, 0xb850, 0x0000, 0xb851, 0xb852, 0xb853, 0xb854, 0xb855, + 0xb856, 0xb857, 0xb858, 0xb859, 0xb85a, 0xb85b, 0x0000, 0x0000, + 0x0000, 0xb85c, 0xb85d, 0xb85e, 0xb85f, 0xb860, 0xb861, 0xb862, + 0xb863, 0xb864, 0xb865, 0xb866, 0xb867, 0xb868, 0xb869, 0xb86a, + 0xb86b, 0xb86c, 0x0000, 0xb86d, 0xb86e, 0xb86f, 0xb870, 0xb871, + 0xb872, 0xb873, 0xb874, 0xb875, 0xb876, 0xb877, 0x0000, 0x0000, + 0x0000, 0xb878, 0xb879, 0xb87a, 0xb87b, 0xb87c, 0xb87d, 0xb87e, + 0xb87f, 0xb880, 0xb881, 0xb882, 0xb883, 0xb884, 0xb885, 0xb886, + 0xb887, 0xb888, 0x0000, 0xb889, 0xb88a, 0xb88b, 0xb88c, 0xb88d, + 0xb88e, 0xb88f, 0xb890, 0xb891, 0xb892, 0xb893, 0x0000, 0x0000, + 0x0000, 0xb894, 0xb895, 0xb896, 0xb897, 0xb898, 0xb899, 0xb89a, + 0xb89b, 0xb89c, 0xb89d, 0xb89e, 0xb89f, 0xb8a0, 0xb8a1, 0xb8a2, + 0xb8a3, 0xb8a4, 0x0000, 0xb8a5, 0xb8a6, 0xb8a7, 0xb8a8, 0xb8a9, + 0xb8aa, 0xb8ab, 0xb8ac, 0xb8ad, 0xb8ae, 0xb8af, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xb8b0, 0xb8b1, 0xb8b2, 0xb8b3, 0xb8b4, 0xb8b5, 0xb8b6, + 0xb8b7, 0xb8b8, 0xb8b9, 0xb8ba, 0xb8bb, 0xb8bc, 0xb8bd, 0xb8be, + 0xb8bf, 0xb8c0, 0x0000, 0xb8c1, 0xb8c2, 0xb8c3, 0xb8c4, 0xb8c5, + 0xb8c6, 0xb8c7, 0xb8c8, 0xb8c9, 0xb8ca, 0xb8cb, 0x0000, 0x0000, + 0x0000, 0xb8cc, 0xb8cd, 0xb8ce, 0xb8cf, 0xb8d0, 0xb8d1, 0xb8d2, + 0xb8d3, 0xb8d4, 0xb8d5, 0xb8d6, 0xb8d7, 0xb8d8, 0xb8d9, 0xb8da, + 0xb8db, 0xb8dc, 0x0000, 0xb8dd, 0xb8de, 0xb8df, 0xb8e0, 0xb8e1, + 0xb8e2, 0xb8e3, 0xb8e4, 0xb8e5, 0xb8e6, 0xb8e7, 0x0000, 0x0000, + 0x0000, 0xb8e8, 0xb8e9, 0xb8ea, 0xb8eb, 0xb8ec, 0xb8ed, 0xb8ee, + 0xb8ef, 0xb8f0, 0xb8f1, 0xb8f2, 0xb8f3, 0xb8f4, 0xb8f5, 0xb8f6, + 0xb8f7, 0xb8f8, 0x0000, 0xb8f9, 0xb8fa, 0xb8fb, 0xb8fc, 0xb8fd, + 0xb8fe, 0xb8ff, 0xb900, 0xb901, 0xb902, 0xb903, 0x0000, 0x0000, + 0x0000, 0xb904, 0xb905, 0xb906, 0xb907, 0xb908, 0xb909, 0xb90a, + 0xb90b, 0xb90c, 0xb90d, 0xb90e, 0xb90f, 0xb910, 0xb911, 0xb912, + 0xb913, 0xb914, 0x0000, 0xb915, 0xb916, 0xb917, 0xb918, 0xb919, + 0xb91a, 0xb91b, 0xb91c, 0xb91d, 0xb91e, 0xb91f, 0x0000, 0x0000, + 0x0000, 0xb920, 0xb921, 0xb922, 0xb923, 0xb924, 0xb925, 0xb926, + 0xb927, 0xb928, 0xb929, 0xb92a, 0xb92b, 0xb92c, 0xb92d, 0xb92e, + 0xb92f, 0xb930, 0x0000, 0xb931, 0xb932, 0xb933, 0xb934, 0xb935, + 0xb936, 0xb937, 0xb938, 0xb939, 0xb93a, 0xb93b, 0x0000, 0x0000, + 0x0000, 0xb93c, 0xb93d, 0xb93e, 0xb93f, 0xb940, 0xb941, 0xb942, + 0xb943, 0xb944, 0xb945, 0xb946, 0xb947, 0xb948, 0xb949, 0xb94a, + 0xb94b, 0xb94c, 0x0000, 0xb94d, 0xb94e, 0xb94f, 0xb950, 0xb951, + 0xb952, 0xb953, 0xb954, 0xb955, 0xb956, 0xb957, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xb958, 0xb959, 0xb95a, 0xb95b, 0xb95c, 0xb95d, 0xb95e, + 0xb95f, 0xb960, 0xb961, 0xb962, 0xb963, 0xb964, 0xb965, 0xb966, + 0xb967, 0xb968, 0x0000, 0xb969, 0xb96a, 0xb96b, 0xb96c, 0xb96d, + 0xb96e, 0xb96f, 0xb970, 0xb971, 0xb972, 0xb973, 0x0000, 0x0000, + 0x0000, 0xb974, 0xb975, 0xb976, 0xb977, 0xb978, 0xb979, 0xb97a, + 0xb97b, 0xb97c, 0xb97d, 0xb97e, 0xb97f, 0xb980, 0xb981, 0xb982, + 0xb983, 0xb984, 0x0000, 0xb985, 0xb986, 0xb987, 0xb988, 0xb989, + 0xb98a, 0xb98b, 0xb98c, 0xb98d, 0xb98e, 0xb98f, 0x0000, 0x0000, + 0x0000, 0xb990, 0xb991, 0xb992, 0xb993, 0xb994, 0xb995, 0xb996, + 0xb997, 0xb998, 0xb999, 0xb99a, 0xb99b, 0xb99c, 0xb99d, 0xb99e, + 0xb99f, 0xb9a0, 0x0000, 0xb9a1, 0xb9a2, 0xb9a3, 0xb9a4, 0xb9a5, + 0xb9a6, 0xb9a7, 0xb9a8, 0xb9a9, 0xb9aa, 0xb9ab, 0x0000, 0x0000, + 0x0000, 0xb9ac, 0xb9ad, 0xb9ae, 0xb9af, 0xb9b0, 0xb9b1, 0xb9b2, + 0xb9b3, 0xb9b4, 0xb9b5, 0xb9b6, 0xb9b7, 0xb9b8, 0xb9b9, 0xb9ba, + 0xb9bb, 0xb9bc, 0x0000, 0xb9bd, 0xb9be, 0xb9bf, 0xb9c0, 0xb9c1, + 0xb9c2, 0xb9c3, 0xb9c4, 0xb9c5, 0xb9c6, 0xb9c7, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xb9c8, 0xb9c9, 0xb9ca, 0xb9cb, 0xb9cc, 0xb9cd, 0xb9ce, + 0xb9cf, 0xb9d0, 0xb9d1, 0xb9d2, 0xb9d3, 0xb9d4, 0xb9d5, 0xb9d6, + 0xb9d7, 0xb9d8, 0x0000, 0xb9d9, 0xb9da, 0xb9db, 0xb9dc, 0xb9dd, + 0xb9de, 0xb9df, 0xb9e0, 0xb9e1, 0xb9e2, 0xb9e3, 0x0000, 0x0000, + 0x0000, 0xb9e4, 0xb9e5, 0xb9e6, 0xb9e7, 0xb9e8, 0xb9e9, 0xb9ea, + 0xb9eb, 0xb9ec, 0xb9ed, 0xb9ee, 0xb9ef, 0xb9f0, 0xb9f1, 0xb9f2, + 0xb9f3, 0xb9f4, 0x0000, 0xb9f5, 0xb9f6, 0xb9f7, 0xb9f8, 0xb9f9, + 0xb9fa, 0xb9fb, 0xb9fc, 0xb9fd, 0xb9fe, 0xb9ff, 0x0000, 0x0000, + 0x0000, 0xba00, 0xba01, 0xba02, 0xba03, 0xba04, 0xba05, 0xba06, + 0xba07, 0xba08, 0xba09, 0xba0a, 0xba0b, 0xba0c, 0xba0d, 0xba0e, + 0xba0f, 0xba10, 0x0000, 0xba11, 0xba12, 0xba13, 0xba14, 0xba15, + 0xba16, 0xba17, 0xba18, 0xba19, 0xba1a, 0xba1b, 0x0000, 0x0000, + 0x0000, 0xba1c, 0xba1d, 0xba1e, 0xba1f, 0xba20, 0xba21, 0xba22, + 0xba23, 0xba24, 0xba25, 0xba26, 0xba27, 0xba28, 0xba29, 0xba2a, + 0xba2b, 0xba2c, 0x0000, 0xba2d, 0xba2e, 0xba2f, 0xba30, 0xba31, + 0xba32, 0xba33, 0xba34, 0xba35, 0xba36, 0xba37, 0x0000, 0x0000, + 0x0000, 0xba38, 0xba39, 0xba3a, 0xba3b, 0xba3c, 0xba3d, 0xba3e, + 0xba3f, 0xba40, 0xba41, 0xba42, 0xba43, 0xba44, 0xba45, 0xba46, + 0xba47, 0xba48, 0x0000, 0xba49, 0xba4a, 0xba4b, 0xba4c, 0xba4d, + 0xba4e, 0xba4f, 0xba50, 0xba51, 0xba52, 0xba53, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xba54, 0xba55, 0xba56, 0xba57, 0xba58, 0xba59, 0xba5a, + 0xba5b, 0xba5c, 0xba5d, 0xba5e, 0xba5f, 0xba60, 0xba61, 0xba62, + 0xba63, 0xba64, 0x0000, 0xba65, 0xba66, 0xba67, 0xba68, 0xba69, + 0xba6a, 0xba6b, 0xba6c, 0xba6d, 0xba6e, 0xba6f, 0x0000, 0x0000, + 0x0000, 0xba70, 0xba71, 0xba72, 0xba73, 0xba74, 0xba75, 0xba76, + 0xba77, 0xba78, 0xba79, 0xba7a, 0xba7b, 0xba7c, 0xba7d, 0xba7e, + 0xba7f, 0xba80, 0x0000, 0xba81, 0xba82, 0xba83, 0xba84, 0xba85, + 0xba86, 0xba87, 0xba88, 0xba89, 0xba8a, 0xba8b, 0x0000, 0x0000, + 0x0000, 0xba8c, 0xba8d, 0xba8e, 0xba8f, 0xba90, 0xba91, 0xba92, + 0xba93, 0xba94, 0xba95, 0xba96, 0xba97, 0xba98, 0xba99, 0xba9a, + 0xba9b, 0xba9c, 0x0000, 0xba9d, 0xba9e, 0xba9f, 0xbaa0, 0xbaa1, + 0xbaa2, 0xbaa3, 0xbaa4, 0xbaa5, 0xbaa6, 0xbaa7, 0x0000, 0x0000, + 0x0000, 0xbaa8, 0xbaa9, 0xbaaa, 0xbaab, 0xbaac, 0xbaad, 0xbaae, + 0xbaaf, 0xbab0, 0xbab1, 0xbab2, 0xbab3, 0xbab4, 0xbab5, 0xbab6, + 0xbab7, 0xbab8, 0x0000, 0xbab9, 0xbaba, 0xbabb, 0xbabc, 0xbabd, + 0xbabe, 0xbabf, 0xbac0, 0xbac1, 0xbac2, 0xbac3, 0x0000, 0x0000, + 0x0000, 0xbac4, 0xbac5, 0xbac6, 0xbac7, 0xbac8, 0xbac9, 0xbaca, + 0xbacb, 0xbacc, 0xbacd, 0xbace, 0xbacf, 0xbad0, 0xbad1, 0xbad2, + 0xbad3, 0xbad4, 0x0000, 0xbad5, 0xbad6, 0xbad7, 0xbad8, 0xbad9, + 0xbada, 0xbadb, 0xbadc, 0xbadd, 0xbade, 0xbadf, 0x0000, 0x0000, + 0x0000, 0xbae0, 0xbae1, 0xbae2, 0xbae3, 0xbae4, 0xbae5, 0xbae6, + 0xbae7, 0xbae8, 0xbae9, 0xbaea, 0xbaeb, 0xbaec, 0xbaed, 0xbaee, + 0xbaef, 0xbaf0, 0x0000, 0xbaf1, 0xbaf2, 0xbaf3, 0xbaf4, 0xbaf5, + 0xbaf6, 0xbaf7, 0xbaf8, 0xbaf9, 0xbafa, 0xbafb, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xbafc, 0xbafd, 0xbafe, 0xbaff, 0xbb00, 0xbb01, 0xbb02, + 0xbb03, 0xbb04, 0xbb05, 0xbb06, 0xbb07, 0xbb08, 0xbb09, 0xbb0a, + 0xbb0b, 0xbb0c, 0x0000, 0xbb0d, 0xbb0e, 0xbb0f, 0xbb10, 0xbb11, + 0xbb12, 0xbb13, 0xbb14, 0xbb15, 0xbb16, 0xbb17, 0x0000, 0x0000, + 0x0000, 0xbb18, 0xbb19, 0xbb1a, 0xbb1b, 0xbb1c, 0xbb1d, 0xbb1e, + 0xbb1f, 0xbb20, 0xbb21, 0xbb22, 0xbb23, 0xbb24, 0xbb25, 0xbb26, + 0xbb27, 0xbb28, 0x0000, 0xbb29, 0xbb2a, 0xbb2b, 0xbb2c, 0xbb2d, + 0xbb2e, 0xbb2f, 0xbb30, 0xbb31, 0xbb32, 0xbb33, 0x0000, 0x0000, + 0x0000, 0xbb34, 0xbb35, 0xbb36, 0xbb37, 0xbb38, 0xbb39, 0xbb3a, + 0xbb3b, 0xbb3c, 0xbb3d, 0xbb3e, 0xbb3f, 0xbb40, 0xbb41, 0xbb42, + 0xbb43, 0xbb44, 0x0000, 0xbb45, 0xbb46, 0xbb47, 0xbb48, 0xbb49, + 0xbb4a, 0xbb4b, 0xbb4c, 0xbb4d, 0xbb4e, 0xbb4f, 0x0000, 0x0000, + 0x0000, 0xbb50, 0xbb51, 0xbb52, 0xbb53, 0xbb54, 0xbb55, 0xbb56, + 0xbb57, 0xbb58, 0xbb59, 0xbb5a, 0xbb5b, 0xbb5c, 0xbb5d, 0xbb5e, + 0xbb5f, 0xbb60, 0x0000, 0xbb61, 0xbb62, 0xbb63, 0xbb64, 0xbb65, + 0xbb66, 0xbb67, 0xbb68, 0xbb69, 0xbb6a, 0xbb6b, 0x0000, 0x0000, + 0x0000, 0xbb6c, 0xbb6d, 0xbb6e, 0xbb6f, 0xbb70, 0xbb71, 0xbb72, + 0xbb73, 0xbb74, 0xbb75, 0xbb76, 0xbb77, 0xbb78, 0xbb79, 0xbb7a, + 0xbb7b, 0xbb7c, 0x0000, 0xbb7d, 0xbb7e, 0xbb7f, 0xbb80, 0xbb81, + 0xbb82, 0xbb83, 0xbb84, 0xbb85, 0xbb86, 0xbb87, 0x0000, 0x0000, + 0x0000, 0xbb88, 0xbb89, 0xbb8a, 0xbb8b, 0xbb8c, 0xbb8d, 0xbb8e, + 0xbb8f, 0xbb90, 0xbb91, 0xbb92, 0xbb93, 0xbb94, 0xbb95, 0xbb96, + 0xbb97, 0xbb98, 0x0000, 0xbb99, 0xbb9a, 0xbb9b, 0xbb9c, 0xbb9d, + 0xbb9e, 0xbb9f, 0xbba0, 0xbba1, 0xbba2, 0xbba3, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xbba4, 0xbba5, 0xbba6, 0xbba7, 0xbba8, 0xbba9, 0xbbaa, + 0xbbab, 0xbbac, 0xbbad, 0xbbae, 0xbbaf, 0xbbb0, 0xbbb1, 0xbbb2, + 0xbbb3, 0xbbb4, 0x0000, 0xbbb5, 0xbbb6, 0xbbb7, 0xbbb8, 0xbbb9, + 0xbbba, 0xbbbb, 0xbbbc, 0xbbbd, 0xbbbe, 0xbbbf, 0x0000, 0x0000, + 0x0000, 0xbbc0, 0xbbc1, 0xbbc2, 0xbbc3, 0xbbc4, 0xbbc5, 0xbbc6, + 0xbbc7, 0xbbc8, 0xbbc9, 0xbbca, 0xbbcb, 0xbbcc, 0xbbcd, 0xbbce, + 0xbbcf, 0xbbd0, 0x0000, 0xbbd1, 0xbbd2, 0xbbd3, 0xbbd4, 0xbbd5, + 0xbbd6, 0xbbd7, 0xbbd8, 0xbbd9, 0xbbda, 0xbbdb, 0x0000, 0x0000, + 0x0000, 0xbbdc, 0xbbdd, 0xbbde, 0xbbdf, 0xbbe0, 0xbbe1, 0xbbe2, + 0xbbe3, 0xbbe4, 0xbbe5, 0xbbe6, 0xbbe7, 0xbbe8, 0xbbe9, 0xbbea, + 0xbbeb, 0xbbec, 0x0000, 0xbbed, 0xbbee, 0xbbef, 0xbbf0, 0xbbf1, + 0xbbf2, 0xbbf3, 0xbbf4, 0xbbf5, 0xbbf6, 0xbbf7, 0x0000, 0x0000, + 0x0000, 0xbbf8, 0xbbf9, 0xbbfa, 0xbbfb, 0xbbfc, 0xbbfd, 0xbbfe, + 0xbbff, 0xbc00, 0xbc01, 0xbc02, 0xbc03, 0xbc04, 0xbc05, 0xbc06, + 0xbc07, 0xbc08, 0x0000, 0xbc09, 0xbc0a, 0xbc0b, 0xbc0c, 0xbc0d, + 0xbc0e, 0xbc0f, 0xbc10, 0xbc11, 0xbc12, 0xbc13, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xbc14, 0xbc15, 0xbc16, 0xbc17, 0xbc18, 0xbc19, 0xbc1a, + 0xbc1b, 0xbc1c, 0xbc1d, 0xbc1e, 0xbc1f, 0xbc20, 0xbc21, 0xbc22, + 0xbc23, 0xbc24, 0x0000, 0xbc25, 0xbc26, 0xbc27, 0xbc28, 0xbc29, + 0xbc2a, 0xbc2b, 0xbc2c, 0xbc2d, 0xbc2e, 0xbc2f, 0x0000, 0x0000, + 0x0000, 0xbc30, 0xbc31, 0xbc32, 0xbc33, 0xbc34, 0xbc35, 0xbc36, + 0xbc37, 0xbc38, 0xbc39, 0xbc3a, 0xbc3b, 0xbc3c, 0xbc3d, 0xbc3e, + 0xbc3f, 0xbc40, 0x0000, 0xbc41, 0xbc42, 0xbc43, 0xbc44, 0xbc45, + 0xbc46, 0xbc47, 0xbc48, 0xbc49, 0xbc4a, 0xbc4b, 0x0000, 0x0000, + 0x0000, 0xbc4c, 0xbc4d, 0xbc4e, 0xbc4f, 0xbc50, 0xbc51, 0xbc52, + 0xbc53, 0xbc54, 0xbc55, 0xbc56, 0xbc57, 0xbc58, 0xbc59, 0xbc5a, + 0xbc5b, 0xbc5c, 0x0000, 0xbc5d, 0xbc5e, 0xbc5f, 0xbc60, 0xbc61, + 0xbc62, 0xbc63, 0xbc64, 0xbc65, 0xbc66, 0xbc67, 0x0000, 0x0000, + 0x0000, 0xbc68, 0xbc69, 0xbc6a, 0xbc6b, 0xbc6c, 0xbc6d, 0xbc6e, + 0xbc6f, 0xbc70, 0xbc71, 0xbc72, 0xbc73, 0xbc74, 0xbc75, 0xbc76, + 0xbc77, 0xbc78, 0x0000, 0xbc79, 0xbc7a, 0xbc7b, 0xbc7c, 0xbc7d, + 0xbc7e, 0xbc7f, 0xbc80, 0xbc81, 0xbc82, 0xbc83, 0x0000, 0x0000, + 0x0000, 0xbc84, 0xbc85, 0xbc86, 0xbc87, 0xbc88, 0xbc89, 0xbc8a, + 0xbc8b, 0xbc8c, 0xbc8d, 0xbc8e, 0xbc8f, 0xbc90, 0xbc91, 0xbc92, + 0xbc93, 0xbc94, 0x0000, 0xbc95, 0xbc96, 0xbc97, 0xbc98, 0xbc99, + 0xbc9a, 0xbc9b, 0xbc9c, 0xbc9d, 0xbc9e, 0xbc9f, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xbca0, 0xbca1, 0xbca2, 0xbca3, 0xbca4, 0xbca5, 0xbca6, + 0xbca7, 0xbca8, 0xbca9, 0xbcaa, 0xbcab, 0xbcac, 0xbcad, 0xbcae, + 0xbcaf, 0xbcb0, 0x0000, 0xbcb1, 0xbcb2, 0xbcb3, 0xbcb4, 0xbcb5, + 0xbcb6, 0xbcb7, 0xbcb8, 0xbcb9, 0xbcba, 0xbcbb, 0x0000, 0x0000, + 0x0000, 0xbcbc, 0xbcbd, 0xbcbe, 0xbcbf, 0xbcc0, 0xbcc1, 0xbcc2, + 0xbcc3, 0xbcc4, 0xbcc5, 0xbcc6, 0xbcc7, 0xbcc8, 0xbcc9, 0xbcca, + 0xbccb, 0xbccc, 0x0000, 0xbccd, 0xbcce, 0xbccf, 0xbcd0, 0xbcd1, + 0xbcd2, 0xbcd3, 0xbcd4, 0xbcd5, 0xbcd6, 0xbcd7, 0x0000, 0x0000, + 0x0000, 0xbcd8, 0xbcd9, 0xbcda, 0xbcdb, 0xbcdc, 0xbcdd, 0xbcde, + 0xbcdf, 0xbce0, 0xbce1, 0xbce2, 0xbce3, 0xbce4, 0xbce5, 0xbce6, + 0xbce7, 0xbce8, 0x0000, 0xbce9, 0xbcea, 0xbceb, 0xbcec, 0xbced, + 0xbcee, 0xbcef, 0xbcf0, 0xbcf1, 0xbcf2, 0xbcf3, 0x0000, 0x0000, + 0x0000, 0xbcf4, 0xbcf5, 0xbcf6, 0xbcf7, 0xbcf8, 0xbcf9, 0xbcfa, + 0xbcfb, 0xbcfc, 0xbcfd, 0xbcfe, 0xbcff, 0xbd00, 0xbd01, 0xbd02, + 0xbd03, 0xbd04, 0x0000, 0xbd05, 0xbd06, 0xbd07, 0xbd08, 0xbd09, + 0xbd0a, 0xbd0b, 0xbd0c, 0xbd0d, 0xbd0e, 0xbd0f, 0x0000, 0x0000, + 0x0000, 0xbd10, 0xbd11, 0xbd12, 0xbd13, 0xbd14, 0xbd15, 0xbd16, + 0xbd17, 0xbd18, 0xbd19, 0xbd1a, 0xbd1b, 0xbd1c, 0xbd1d, 0xbd1e, + 0xbd1f, 0xbd20, 0x0000, 0xbd21, 0xbd22, 0xbd23, 0xbd24, 0xbd25, + 0xbd26, 0xbd27, 0xbd28, 0xbd29, 0xbd2a, 0xbd2b, 0x0000, 0x0000, + 0x0000, 0xbd2c, 0xbd2d, 0xbd2e, 0xbd2f, 0xbd30, 0xbd31, 0xbd32, + 0xbd33, 0xbd34, 0xbd35, 0xbd36, 0xbd37, 0xbd38, 0xbd39, 0xbd3a, + 0xbd3b, 0xbd3c, 0x0000, 0xbd3d, 0xbd3e, 0xbd3f, 0xbd40, 0xbd41, + 0xbd42, 0xbd43, 0xbd44, 0xbd45, 0xbd46, 0xbd47, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xbd48, 0xbd49, 0xbd4a, 0xbd4b, 0xbd4c, 0xbd4d, 0xbd4e, + 0xbd4f, 0xbd50, 0xbd51, 0xbd52, 0xbd53, 0xbd54, 0xbd55, 0xbd56, + 0xbd57, 0xbd58, 0x0000, 0xbd59, 0xbd5a, 0xbd5b, 0xbd5c, 0xbd5d, + 0xbd5e, 0xbd5f, 0xbd60, 0xbd61, 0xbd62, 0xbd63, 0x0000, 0x0000, + 0x0000, 0xbd64, 0xbd65, 0xbd66, 0xbd67, 0xbd68, 0xbd69, 0xbd6a, + 0xbd6b, 0xbd6c, 0xbd6d, 0xbd6e, 0xbd6f, 0xbd70, 0xbd71, 0xbd72, + 0xbd73, 0xbd74, 0x0000, 0xbd75, 0xbd76, 0xbd77, 0xbd78, 0xbd79, + 0xbd7a, 0xbd7b, 0xbd7c, 0xbd7d, 0xbd7e, 0xbd7f, 0x0000, 0x0000, + 0x0000, 0xbd80, 0xbd81, 0xbd82, 0xbd83, 0xbd84, 0xbd85, 0xbd86, + 0xbd87, 0xbd88, 0xbd89, 0xbd8a, 0xbd8b, 0xbd8c, 0xbd8d, 0xbd8e, + 0xbd8f, 0xbd90, 0x0000, 0xbd91, 0xbd92, 0xbd93, 0xbd94, 0xbd95, + 0xbd96, 0xbd97, 0xbd98, 0xbd99, 0xbd9a, 0xbd9b, 0x0000, 0x0000, + 0x0000, 0xbd9c, 0xbd9d, 0xbd9e, 0xbd9f, 0xbda0, 0xbda1, 0xbda2, + 0xbda3, 0xbda4, 0xbda5, 0xbda6, 0xbda7, 0xbda8, 0xbda9, 0xbdaa, + 0xbdab, 0xbdac, 0x0000, 0xbdad, 0xbdae, 0xbdaf, 0xbdb0, 0xbdb1, + 0xbdb2, 0xbdb3, 0xbdb4, 0xbdb5, 0xbdb6, 0xbdb7, 0x0000, 0x0000, + 0x0000, 0xbdb8, 0xbdb9, 0xbdba, 0xbdbb, 0xbdbc, 0xbdbd, 0xbdbe, + 0xbdbf, 0xbdc0, 0xbdc1, 0xbdc2, 0xbdc3, 0xbdc4, 0xbdc5, 0xbdc6, + 0xbdc7, 0xbdc8, 0x0000, 0xbdc9, 0xbdca, 0xbdcb, 0xbdcc, 0xbdcd, + 0xbdce, 0xbdcf, 0xbdd0, 0xbdd1, 0xbdd2, 0xbdd3, 0x0000, 0x0000, + 0x0000, 0xbdd4, 0xbdd5, 0xbdd6, 0xbdd7, 0xbdd8, 0xbdd9, 0xbdda, + 0xbddb, 0xbddc, 0xbddd, 0xbdde, 0xbddf, 0xbde0, 0xbde1, 0xbde2, + 0xbde3, 0xbde4, 0x0000, 0xbde5, 0xbde6, 0xbde7, 0xbde8, 0xbde9, + 0xbdea, 0xbdeb, 0xbdec, 0xbded, 0xbdee, 0xbdef, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xbdf0, 0xbdf1, 0xbdf2, 0xbdf3, 0xbdf4, 0xbdf5, 0xbdf6, + 0xbdf7, 0xbdf8, 0xbdf9, 0xbdfa, 0xbdfb, 0xbdfc, 0xbdfd, 0xbdfe, + 0xbdff, 0xbe00, 0x0000, 0xbe01, 0xbe02, 0xbe03, 0xbe04, 0xbe05, + 0xbe06, 0xbe07, 0xbe08, 0xbe09, 0xbe0a, 0xbe0b, 0x0000, 0x0000, + 0x0000, 0xbe0c, 0xbe0d, 0xbe0e, 0xbe0f, 0xbe10, 0xbe11, 0xbe12, + 0xbe13, 0xbe14, 0xbe15, 0xbe16, 0xbe17, 0xbe18, 0xbe19, 0xbe1a, + 0xbe1b, 0xbe1c, 0x0000, 0xbe1d, 0xbe1e, 0xbe1f, 0xbe20, 0xbe21, + 0xbe22, 0xbe23, 0xbe24, 0xbe25, 0xbe26, 0xbe27, 0x0000, 0x0000, + 0x0000, 0xbe28, 0xbe29, 0xbe2a, 0xbe2b, 0xbe2c, 0xbe2d, 0xbe2e, + 0xbe2f, 0xbe30, 0xbe31, 0xbe32, 0xbe33, 0xbe34, 0xbe35, 0xbe36, + 0xbe37, 0xbe38, 0x0000, 0xbe39, 0xbe3a, 0xbe3b, 0xbe3c, 0xbe3d, + 0xbe3e, 0xbe3f, 0xbe40, 0xbe41, 0xbe42, 0xbe43, 0x0000, 0x0000, + 0x0000, 0xbe44, 0xbe45, 0xbe46, 0xbe47, 0xbe48, 0xbe49, 0xbe4a, + 0xbe4b, 0xbe4c, 0xbe4d, 0xbe4e, 0xbe4f, 0xbe50, 0xbe51, 0xbe52, + 0xbe53, 0xbe54, 0x0000, 0xbe55, 0xbe56, 0xbe57, 0xbe58, 0xbe59, + 0xbe5a, 0xbe5b, 0xbe5c, 0xbe5d, 0xbe5e, 0xbe5f, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x3143, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xbe60, 0xbe61, 0xbe62, 0xbe63, 0xbe64, 0xbe65, 0xbe66, + 0xbe67, 0xbe68, 0xbe69, 0xbe6a, 0xbe6b, 0xbe6c, 0xbe6d, 0xbe6e, + 0xbe6f, 0xbe70, 0x0000, 0xbe71, 0xbe72, 0xbe73, 0xbe74, 0xbe75, + 0xbe76, 0xbe77, 0xbe78, 0xbe79, 0xbe7a, 0xbe7b, 0x0000, 0x0000, + 0x0000, 0xbe7c, 0xbe7d, 0xbe7e, 0xbe7f, 0xbe80, 0xbe81, 0xbe82, + 0xbe83, 0xbe84, 0xbe85, 0xbe86, 0xbe87, 0xbe88, 0xbe89, 0xbe8a, + 0xbe8b, 0xbe8c, 0x0000, 0xbe8d, 0xbe8e, 0xbe8f, 0xbe90, 0xbe91, + 0xbe92, 0xbe93, 0xbe94, 0xbe95, 0xbe96, 0xbe97, 0x0000, 0x0000, + 0x0000, 0xbe98, 0xbe99, 0xbe9a, 0xbe9b, 0xbe9c, 0xbe9d, 0xbe9e, + 0xbe9f, 0xbea0, 0xbea1, 0xbea2, 0xbea3, 0xbea4, 0xbea5, 0xbea6, + 0xbea7, 0xbea8, 0x0000, 0xbea9, 0xbeaa, 0xbeab, 0xbeac, 0xbead, + 0xbeae, 0xbeaf, 0xbeb0, 0xbeb1, 0xbeb2, 0xbeb3, 0x0000, 0x0000, + 0x0000, 0xbeb4, 0xbeb5, 0xbeb6, 0xbeb7, 0xbeb8, 0xbeb9, 0xbeba, + 0xbebb, 0xbebc, 0xbebd, 0xbebe, 0xbebf, 0xbec0, 0xbec1, 0xbec2, + 0xbec3, 0xbec4, 0x0000, 0xbec5, 0xbec6, 0xbec7, 0xbec8, 0xbec9, + 0xbeca, 0xbecb, 0xbecc, 0xbecd, 0xbece, 0xbecf, 0x0000, 0x0000, + 0x0000, 0xbed0, 0xbed1, 0xbed2, 0xbed3, 0xbed4, 0xbed5, 0xbed6, + 0xbed7, 0xbed8, 0xbed9, 0xbeda, 0xbedb, 0xbedc, 0xbedd, 0xbede, + 0xbedf, 0xbee0, 0x0000, 0xbee1, 0xbee2, 0xbee3, 0xbee4, 0xbee5, + 0xbee6, 0xbee7, 0xbee8, 0xbee9, 0xbeea, 0xbeeb, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xbeec, 0xbeed, 0xbeee, 0xbeef, 0xbef0, 0xbef1, 0xbef2, + 0xbef3, 0xbef4, 0xbef5, 0xbef6, 0xbef7, 0xbef8, 0xbef9, 0xbefa, + 0xbefb, 0xbefc, 0x0000, 0xbefd, 0xbefe, 0xbeff, 0xbf00, 0xbf01, + 0xbf02, 0xbf03, 0xbf04, 0xbf05, 0xbf06, 0xbf07, 0x0000, 0x0000, + 0x0000, 0xbf08, 0xbf09, 0xbf0a, 0xbf0b, 0xbf0c, 0xbf0d, 0xbf0e, + 0xbf0f, 0xbf10, 0xbf11, 0xbf12, 0xbf13, 0xbf14, 0xbf15, 0xbf16, + 0xbf17, 0xbf18, 0x0000, 0xbf19, 0xbf1a, 0xbf1b, 0xbf1c, 0xbf1d, + 0xbf1e, 0xbf1f, 0xbf20, 0xbf21, 0xbf22, 0xbf23, 0x0000, 0x0000, + 0x0000, 0xbf24, 0xbf25, 0xbf26, 0xbf27, 0xbf28, 0xbf29, 0xbf2a, + 0xbf2b, 0xbf2c, 0xbf2d, 0xbf2e, 0xbf2f, 0xbf30, 0xbf31, 0xbf32, + 0xbf33, 0xbf34, 0x0000, 0xbf35, 0xbf36, 0xbf37, 0xbf38, 0xbf39, + 0xbf3a, 0xbf3b, 0xbf3c, 0xbf3d, 0xbf3e, 0xbf3f, 0x0000, 0x0000, + 0x0000, 0xbf40, 0xbf41, 0xbf42, 0xbf43, 0xbf44, 0xbf45, 0xbf46, + 0xbf47, 0xbf48, 0xbf49, 0xbf4a, 0xbf4b, 0xbf4c, 0xbf4d, 0xbf4e, + 0xbf4f, 0xbf50, 0x0000, 0xbf51, 0xbf52, 0xbf53, 0xbf54, 0xbf55, + 0xbf56, 0xbf57, 0xbf58, 0xbf59, 0xbf5a, 0xbf5b, 0x0000, 0x0000, + 0x0000, 0xbf5c, 0xbf5d, 0xbf5e, 0xbf5f, 0xbf60, 0xbf61, 0xbf62, + 0xbf63, 0xbf64, 0xbf65, 0xbf66, 0xbf67, 0xbf68, 0xbf69, 0xbf6a, + 0xbf6b, 0xbf6c, 0x0000, 0xbf6d, 0xbf6e, 0xbf6f, 0xbf70, 0xbf71, + 0xbf72, 0xbf73, 0xbf74, 0xbf75, 0xbf76, 0xbf77, 0x0000, 0x0000, + 0x0000, 0xbf78, 0xbf79, 0xbf7a, 0xbf7b, 0xbf7c, 0xbf7d, 0xbf7e, + 0xbf7f, 0xbf80, 0xbf81, 0xbf82, 0xbf83, 0xbf84, 0xbf85, 0xbf86, + 0xbf87, 0xbf88, 0x0000, 0xbf89, 0xbf8a, 0xbf8b, 0xbf8c, 0xbf8d, + 0xbf8e, 0xbf8f, 0xbf90, 0xbf91, 0xbf92, 0xbf93, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xbf94, 0xbf95, 0xbf96, 0xbf97, 0xbf98, 0xbf99, 0xbf9a, + 0xbf9b, 0xbf9c, 0xbf9d, 0xbf9e, 0xbf9f, 0xbfa0, 0xbfa1, 0xbfa2, + 0xbfa3, 0xbfa4, 0x0000, 0xbfa5, 0xbfa6, 0xbfa7, 0xbfa8, 0xbfa9, + 0xbfaa, 0xbfab, 0xbfac, 0xbfad, 0xbfae, 0xbfaf, 0x0000, 0x0000, + 0x0000, 0xbfb0, 0xbfb1, 0xbfb2, 0xbfb3, 0xbfb4, 0xbfb5, 0xbfb6, + 0xbfb7, 0xbfb8, 0xbfb9, 0xbfba, 0xbfbb, 0xbfbc, 0xbfbd, 0xbfbe, + 0xbfbf, 0xbfc0, 0x0000, 0xbfc1, 0xbfc2, 0xbfc3, 0xbfc4, 0xbfc5, + 0xbfc6, 0xbfc7, 0xbfc8, 0xbfc9, 0xbfca, 0xbfcb, 0x0000, 0x0000, + 0x0000, 0xbfcc, 0xbfcd, 0xbfce, 0xbfcf, 0xbfd0, 0xbfd1, 0xbfd2, + 0xbfd3, 0xbfd4, 0xbfd5, 0xbfd6, 0xbfd7, 0xbfd8, 0xbfd9, 0xbfda, + 0xbfdb, 0xbfdc, 0x0000, 0xbfdd, 0xbfde, 0xbfdf, 0xbfe0, 0xbfe1, + 0xbfe2, 0xbfe3, 0xbfe4, 0xbfe5, 0xbfe6, 0xbfe7, 0x0000, 0x0000, + 0x0000, 0xbfe8, 0xbfe9, 0xbfea, 0xbfeb, 0xbfec, 0xbfed, 0xbfee, + 0xbfef, 0xbff0, 0xbff1, 0xbff2, 0xbff3, 0xbff4, 0xbff5, 0xbff6, + 0xbff7, 0xbff8, 0x0000, 0xbff9, 0xbffa, 0xbffb, 0xbffc, 0xbffd, + 0xbffe, 0xbfff, 0xc000, 0xc001, 0xc002, 0xc003, 0x0000, 0x0000, + 0x0000, 0xc004, 0xc005, 0xc006, 0xc007, 0xc008, 0xc009, 0xc00a, + 0xc00b, 0xc00c, 0xc00d, 0xc00e, 0xc00f, 0xc010, 0xc011, 0xc012, + 0xc013, 0xc014, 0x0000, 0xc015, 0xc016, 0xc017, 0xc018, 0xc019, + 0xc01a, 0xc01b, 0xc01c, 0xc01d, 0xc01e, 0xc01f, 0x0000, 0x0000, + 0x0000, 0xc020, 0xc021, 0xc022, 0xc023, 0xc024, 0xc025, 0xc026, + 0xc027, 0xc028, 0xc029, 0xc02a, 0xc02b, 0xc02c, 0xc02d, 0xc02e, + 0xc02f, 0xc030, 0x0000, 0xc031, 0xc032, 0xc033, 0xc034, 0xc035, + 0xc036, 0xc037, 0xc038, 0xc039, 0xc03a, 0xc03b, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xc03c, 0xc03d, 0xc03e, 0xc03f, 0xc040, 0xc041, 0xc042, + 0xc043, 0xc044, 0xc045, 0xc046, 0xc047, 0xc048, 0xc049, 0xc04a, + 0xc04b, 0xc04c, 0x0000, 0xc04d, 0xc04e, 0xc04f, 0xc050, 0xc051, + 0xc052, 0xc053, 0xc054, 0xc055, 0xc056, 0xc057, 0x0000, 0x0000, + 0x0000, 0xc058, 0xc059, 0xc05a, 0xc05b, 0xc05c, 0xc05d, 0xc05e, + 0xc05f, 0xc060, 0xc061, 0xc062, 0xc063, 0xc064, 0xc065, 0xc066, + 0xc067, 0xc068, 0x0000, 0xc069, 0xc06a, 0xc06b, 0xc06c, 0xc06d, + 0xc06e, 0xc06f, 0xc070, 0xc071, 0xc072, 0xc073, 0x0000, 0x0000, + 0x0000, 0xc074, 0xc075, 0xc076, 0xc077, 0xc078, 0xc079, 0xc07a, + 0xc07b, 0xc07c, 0xc07d, 0xc07e, 0xc07f, 0xc080, 0xc081, 0xc082, + 0xc083, 0xc084, 0x0000, 0xc085, 0xc086, 0xc087, 0xc088, 0xc089, + 0xc08a, 0xc08b, 0xc08c, 0xc08d, 0xc08e, 0xc08f, 0x0000, 0x0000, + 0x0000, 0xc090, 0xc091, 0xc092, 0xc093, 0xc094, 0xc095, 0xc096, + 0xc097, 0xc098, 0xc099, 0xc09a, 0xc09b, 0xc09c, 0xc09d, 0xc09e, + 0xc09f, 0xc0a0, 0x0000, 0xc0a1, 0xc0a2, 0xc0a3, 0xc0a4, 0xc0a5, + 0xc0a6, 0xc0a7, 0xc0a8, 0xc0a9, 0xc0aa, 0xc0ab, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xc0ac, 0xc0ad, 0xc0ae, 0xc0af, 0xc0b0, 0xc0b1, 0xc0b2, + 0xc0b3, 0xc0b4, 0xc0b5, 0xc0b6, 0xc0b7, 0xc0b8, 0xc0b9, 0xc0ba, + 0xc0bb, 0xc0bc, 0x0000, 0xc0bd, 0xc0be, 0xc0bf, 0xc0c0, 0xc0c1, + 0xc0c2, 0xc0c3, 0xc0c4, 0xc0c5, 0xc0c6, 0xc0c7, 0x0000, 0x0000, + 0x0000, 0xc0c8, 0xc0c9, 0xc0ca, 0xc0cb, 0xc0cc, 0xc0cd, 0xc0ce, + 0xc0cf, 0xc0d0, 0xc0d1, 0xc0d2, 0xc0d3, 0xc0d4, 0xc0d5, 0xc0d6, + 0xc0d7, 0xc0d8, 0x0000, 0xc0d9, 0xc0da, 0xc0db, 0xc0dc, 0xc0dd, + 0xc0de, 0xc0df, 0xc0e0, 0xc0e1, 0xc0e2, 0xc0e3, 0x0000, 0x0000, + 0x0000, 0xc0e4, 0xc0e5, 0xc0e6, 0xc0e7, 0xc0e8, 0xc0e9, 0xc0ea, + 0xc0eb, 0xc0ec, 0xc0ed, 0xc0ee, 0xc0ef, 0xc0f0, 0xc0f1, 0xc0f2, + 0xc0f3, 0xc0f4, 0x0000, 0xc0f5, 0xc0f6, 0xc0f7, 0xc0f8, 0xc0f9, + 0xc0fa, 0xc0fb, 0xc0fc, 0xc0fd, 0xc0fe, 0xc0ff, 0x0000, 0x0000, + 0x0000, 0xc100, 0xc101, 0xc102, 0xc103, 0xc104, 0xc105, 0xc106, + 0xc107, 0xc108, 0xc109, 0xc10a, 0xc10b, 0xc10c, 0xc10d, 0xc10e, + 0xc10f, 0xc110, 0x0000, 0xc111, 0xc112, 0xc113, 0xc114, 0xc115, + 0xc116, 0xc117, 0xc118, 0xc119, 0xc11a, 0xc11b, 0x0000, 0x0000, + 0x0000, 0xc11c, 0xc11d, 0xc11e, 0xc11f, 0xc120, 0xc121, 0xc122, + 0xc123, 0xc124, 0xc125, 0xc126, 0xc127, 0xc128, 0xc129, 0xc12a, + 0xc12b, 0xc12c, 0x0000, 0xc12d, 0xc12e, 0xc12f, 0xc130, 0xc131, + 0xc132, 0xc133, 0xc134, 0xc135, 0xc136, 0xc137, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xc138, 0xc139, 0xc13a, 0xc13b, 0xc13c, 0xc13d, 0xc13e, + 0xc13f, 0xc140, 0xc141, 0xc142, 0xc143, 0xc144, 0xc145, 0xc146, + 0xc147, 0xc148, 0x0000, 0xc149, 0xc14a, 0xc14b, 0xc14c, 0xc14d, + 0xc14e, 0xc14f, 0xc150, 0xc151, 0xc152, 0xc153, 0x0000, 0x0000, + 0x0000, 0xc154, 0xc155, 0xc156, 0xc157, 0xc158, 0xc159, 0xc15a, + 0xc15b, 0xc15c, 0xc15d, 0xc15e, 0xc15f, 0xc160, 0xc161, 0xc162, + 0xc163, 0xc164, 0x0000, 0xc165, 0xc166, 0xc167, 0xc168, 0xc169, + 0xc16a, 0xc16b, 0xc16c, 0xc16d, 0xc16e, 0xc16f, 0x0000, 0x0000, + 0x0000, 0xc170, 0xc171, 0xc172, 0xc173, 0xc174, 0xc175, 0xc176, + 0xc177, 0xc178, 0xc179, 0xc17a, 0xc17b, 0xc17c, 0xc17d, 0xc17e, + 0xc17f, 0xc180, 0x0000, 0xc181, 0xc182, 0xc183, 0xc184, 0xc185, + 0xc186, 0xc187, 0xc188, 0xc189, 0xc18a, 0xc18b, 0x0000, 0x0000, + 0x0000, 0xc18c, 0xc18d, 0xc18e, 0xc18f, 0xc190, 0xc191, 0xc192, + 0xc193, 0xc194, 0xc195, 0xc196, 0xc197, 0xc198, 0xc199, 0xc19a, + 0xc19b, 0xc19c, 0x0000, 0xc19d, 0xc19e, 0xc19f, 0xc1a0, 0xc1a1, + 0xc1a2, 0xc1a3, 0xc1a4, 0xc1a5, 0xc1a6, 0xc1a7, 0x0000, 0x0000, + 0x0000, 0xc1a8, 0xc1a9, 0xc1aa, 0xc1ab, 0xc1ac, 0xc1ad, 0xc1ae, + 0xc1af, 0xc1b0, 0xc1b1, 0xc1b2, 0xc1b3, 0xc1b4, 0xc1b5, 0xc1b6, + 0xc1b7, 0xc1b8, 0x0000, 0xc1b9, 0xc1ba, 0xc1bb, 0xc1bc, 0xc1bd, + 0xc1be, 0xc1bf, 0xc1c0, 0xc1c1, 0xc1c2, 0xc1c3, 0x0000, 0x0000, + 0x0000, 0xc1c4, 0xc1c5, 0xc1c6, 0xc1c7, 0xc1c8, 0xc1c9, 0xc1ca, + 0xc1cb, 0xc1cc, 0xc1cd, 0xc1ce, 0xc1cf, 0xc1d0, 0xc1d1, 0xc1d2, + 0xc1d3, 0xc1d4, 0x0000, 0xc1d5, 0xc1d6, 0xc1d7, 0xc1d8, 0xc1d9, + 0xc1da, 0xc1db, 0xc1dc, 0xc1dd, 0xc1de, 0xc1df, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xc1e0, 0xc1e1, 0xc1e2, 0xc1e3, 0xc1e4, 0xc1e5, 0xc1e6, + 0xc1e7, 0xc1e8, 0xc1e9, 0xc1ea, 0xc1eb, 0xc1ec, 0xc1ed, 0xc1ee, + 0xc1ef, 0xc1f0, 0x0000, 0xc1f1, 0xc1f2, 0xc1f3, 0xc1f4, 0xc1f5, + 0xc1f6, 0xc1f7, 0xc1f8, 0xc1f9, 0xc1fa, 0xc1fb, 0x0000, 0x0000, + 0x0000, 0xc1fc, 0xc1fd, 0xc1fe, 0xc1ff, 0xc200, 0xc201, 0xc202, + 0xc203, 0xc204, 0xc205, 0xc206, 0xc207, 0xc208, 0xc209, 0xc20a, + 0xc20b, 0xc20c, 0x0000, 0xc20d, 0xc20e, 0xc20f, 0xc210, 0xc211, + 0xc212, 0xc213, 0xc214, 0xc215, 0xc216, 0xc217, 0x0000, 0x0000, + 0x0000, 0xc218, 0xc219, 0xc21a, 0xc21b, 0xc21c, 0xc21d, 0xc21e, + 0xc21f, 0xc220, 0xc221, 0xc222, 0xc223, 0xc224, 0xc225, 0xc226, + 0xc227, 0xc228, 0x0000, 0xc229, 0xc22a, 0xc22b, 0xc22c, 0xc22d, + 0xc22e, 0xc22f, 0xc230, 0xc231, 0xc232, 0xc233, 0x0000, 0x0000, + 0x0000, 0xc234, 0xc235, 0xc236, 0xc237, 0xc238, 0xc239, 0xc23a, + 0xc23b, 0xc23c, 0xc23d, 0xc23e, 0xc23f, 0xc240, 0xc241, 0xc242, + 0xc243, 0xc244, 0x0000, 0xc245, 0xc246, 0xc247, 0xc248, 0xc249, + 0xc24a, 0xc24b, 0xc24c, 0xc24d, 0xc24e, 0xc24f, 0x0000, 0x0000, + 0x0000, 0xc250, 0xc251, 0xc252, 0xc253, 0xc254, 0xc255, 0xc256, + 0xc257, 0xc258, 0xc259, 0xc25a, 0xc25b, 0xc25c, 0xc25d, 0xc25e, + 0xc25f, 0xc260, 0x0000, 0xc261, 0xc262, 0xc263, 0xc264, 0xc265, + 0xc266, 0xc267, 0xc268, 0xc269, 0xc26a, 0xc26b, 0x0000, 0x0000, + 0x0000, 0xc26c, 0xc26d, 0xc26e, 0xc26f, 0xc270, 0xc271, 0xc272, + 0xc273, 0xc274, 0xc275, 0xc276, 0xc277, 0xc278, 0xc279, 0xc27a, + 0xc27b, 0xc27c, 0x0000, 0xc27d, 0xc27e, 0xc27f, 0xc280, 0xc281, + 0xc282, 0xc283, 0xc284, 0xc285, 0xc286, 0xc287, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xc288, 0xc289, 0xc28a, 0xc28b, 0xc28c, 0xc28d, 0xc28e, + 0xc28f, 0xc290, 0xc291, 0xc292, 0xc293, 0xc294, 0xc295, 0xc296, + 0xc297, 0xc298, 0x0000, 0xc299, 0xc29a, 0xc29b, 0xc29c, 0xc29d, + 0xc29e, 0xc29f, 0xc2a0, 0xc2a1, 0xc2a2, 0xc2a3, 0x0000, 0x0000, + 0x0000, 0xc2a4, 0xc2a5, 0xc2a6, 0xc2a7, 0xc2a8, 0xc2a9, 0xc2aa, + 0xc2ab, 0xc2ac, 0xc2ad, 0xc2ae, 0xc2af, 0xc2b0, 0xc2b1, 0xc2b2, + 0xc2b3, 0xc2b4, 0x0000, 0xc2b5, 0xc2b6, 0xc2b7, 0xc2b8, 0xc2b9, + 0xc2ba, 0xc2bb, 0xc2bc, 0xc2bd, 0xc2be, 0xc2bf, 0x0000, 0x0000, + 0x0000, 0xc2c0, 0xc2c1, 0xc2c2, 0xc2c3, 0xc2c4, 0xc2c5, 0xc2c6, + 0xc2c7, 0xc2c8, 0xc2c9, 0xc2ca, 0xc2cb, 0xc2cc, 0xc2cd, 0xc2ce, + 0xc2cf, 0xc2d0, 0x0000, 0xc2d1, 0xc2d2, 0xc2d3, 0xc2d4, 0xc2d5, + 0xc2d6, 0xc2d7, 0xc2d8, 0xc2d9, 0xc2da, 0xc2db, 0x0000, 0x0000, + 0x0000, 0xc2dc, 0xc2dd, 0xc2de, 0xc2df, 0xc2e0, 0xc2e1, 0xc2e2, + 0xc2e3, 0xc2e4, 0xc2e5, 0xc2e6, 0xc2e7, 0xc2e8, 0xc2e9, 0xc2ea, + 0xc2eb, 0xc2ec, 0x0000, 0xc2ed, 0xc2ee, 0xc2ef, 0xc2f0, 0xc2f1, + 0xc2f2, 0xc2f3, 0xc2f4, 0xc2f5, 0xc2f6, 0xc2f7, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xc2f8, 0xc2f9, 0xc2fa, 0xc2fb, 0xc2fc, 0xc2fd, 0xc2fe, + 0xc2ff, 0xc300, 0xc301, 0xc302, 0xc303, 0xc304, 0xc305, 0xc306, + 0xc307, 0xc308, 0x0000, 0xc309, 0xc30a, 0xc30b, 0xc30c, 0xc30d, + 0xc30e, 0xc30f, 0xc310, 0xc311, 0xc312, 0xc313, 0x0000, 0x0000, + 0x0000, 0xc314, 0xc315, 0xc316, 0xc317, 0xc318, 0xc319, 0xc31a, + 0xc31b, 0xc31c, 0xc31d, 0xc31e, 0xc31f, 0xc320, 0xc321, 0xc322, + 0xc323, 0xc324, 0x0000, 0xc325, 0xc326, 0xc327, 0xc328, 0xc329, + 0xc32a, 0xc32b, 0xc32c, 0xc32d, 0xc32e, 0xc32f, 0x0000, 0x0000, + 0x0000, 0xc330, 0xc331, 0xc332, 0xc333, 0xc334, 0xc335, 0xc336, + 0xc337, 0xc338, 0xc339, 0xc33a, 0xc33b, 0xc33c, 0xc33d, 0xc33e, + 0xc33f, 0xc340, 0x0000, 0xc341, 0xc342, 0xc343, 0xc344, 0xc345, + 0xc346, 0xc347, 0xc348, 0xc349, 0xc34a, 0xc34b, 0x0000, 0x0000, + 0x0000, 0xc34c, 0xc34d, 0xc34e, 0xc34f, 0xc350, 0xc351, 0xc352, + 0xc353, 0xc354, 0xc355, 0xc356, 0xc357, 0xc358, 0xc359, 0xc35a, + 0xc35b, 0xc35c, 0x0000, 0xc35d, 0xc35e, 0xc35f, 0xc360, 0xc361, + 0xc362, 0xc363, 0xc364, 0xc365, 0xc366, 0xc367, 0x0000, 0x0000, + 0x0000, 0xc368, 0xc369, 0xc36a, 0xc36b, 0xc36c, 0xc36d, 0xc36e, + 0xc36f, 0xc370, 0xc371, 0xc372, 0xc373, 0xc374, 0xc375, 0xc376, + 0xc377, 0xc378, 0x0000, 0xc379, 0xc37a, 0xc37b, 0xc37c, 0xc37d, + 0xc37e, 0xc37f, 0xc380, 0xc381, 0xc382, 0xc383, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xc384, 0xc385, 0xc386, 0xc387, 0xc388, 0xc389, 0xc38a, + 0xc38b, 0xc38c, 0xc38d, 0xc38e, 0xc38f, 0xc390, 0xc391, 0xc392, + 0xc393, 0xc394, 0x0000, 0xc395, 0xc396, 0xc397, 0xc398, 0xc399, + 0xc39a, 0xc39b, 0xc39c, 0xc39d, 0xc39e, 0xc39f, 0x0000, 0x0000, + 0x0000, 0xc3a0, 0xc3a1, 0xc3a2, 0xc3a3, 0xc3a4, 0xc3a5, 0xc3a6, + 0xc3a7, 0xc3a8, 0xc3a9, 0xc3aa, 0xc3ab, 0xc3ac, 0xc3ad, 0xc3ae, + 0xc3af, 0xc3b0, 0x0000, 0xc3b1, 0xc3b2, 0xc3b3, 0xc3b4, 0xc3b5, + 0xc3b6, 0xc3b7, 0xc3b8, 0xc3b9, 0xc3ba, 0xc3bb, 0x0000, 0x0000, + 0x0000, 0xc3bc, 0xc3bd, 0xc3be, 0xc3bf, 0xc3c0, 0xc3c1, 0xc3c2, + 0xc3c3, 0xc3c4, 0xc3c5, 0xc3c6, 0xc3c7, 0xc3c8, 0xc3c9, 0xc3ca, + 0xc3cb, 0xc3cc, 0x0000, 0xc3cd, 0xc3ce, 0xc3cf, 0xc3d0, 0xc3d1, + 0xc3d2, 0xc3d3, 0xc3d4, 0xc3d5, 0xc3d6, 0xc3d7, 0x0000, 0x0000, + 0x0000, 0xc3d8, 0xc3d9, 0xc3da, 0xc3db, 0xc3dc, 0xc3dd, 0xc3de, + 0xc3df, 0xc3e0, 0xc3e1, 0xc3e2, 0xc3e3, 0xc3e4, 0xc3e5, 0xc3e6, + 0xc3e7, 0xc3e8, 0x0000, 0xc3e9, 0xc3ea, 0xc3eb, 0xc3ec, 0xc3ed, + 0xc3ee, 0xc3ef, 0xc3f0, 0xc3f1, 0xc3f2, 0xc3f3, 0x0000, 0x0000, + 0x0000, 0xc3f4, 0xc3f5, 0xc3f6, 0xc3f7, 0xc3f8, 0xc3f9, 0xc3fa, + 0xc3fb, 0xc3fc, 0xc3fd, 0xc3fe, 0xc3ff, 0xc400, 0xc401, 0xc402, + 0xc403, 0xc404, 0x0000, 0xc405, 0xc406, 0xc407, 0xc408, 0xc409, + 0xc40a, 0xc40b, 0xc40c, 0xc40d, 0xc40e, 0xc40f, 0x0000, 0x0000, + 0x0000, 0xc410, 0xc411, 0xc412, 0xc413, 0xc414, 0xc415, 0xc416, + 0xc417, 0xc418, 0xc419, 0xc41a, 0xc41b, 0xc41c, 0xc41d, 0xc41e, + 0xc41f, 0xc420, 0x0000, 0xc421, 0xc422, 0xc423, 0xc424, 0xc425, + 0xc426, 0xc427, 0xc428, 0xc429, 0xc42a, 0xc42b, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xc42c, 0xc42d, 0xc42e, 0xc42f, 0xc430, 0xc431, 0xc432, + 0xc433, 0xc434, 0xc435, 0xc436, 0xc437, 0xc438, 0xc439, 0xc43a, + 0xc43b, 0xc43c, 0x0000, 0xc43d, 0xc43e, 0xc43f, 0xc440, 0xc441, + 0xc442, 0xc443, 0xc444, 0xc445, 0xc446, 0xc447, 0x0000, 0x0000, + 0x0000, 0xc448, 0xc449, 0xc44a, 0xc44b, 0xc44c, 0xc44d, 0xc44e, + 0xc44f, 0xc450, 0xc451, 0xc452, 0xc453, 0xc454, 0xc455, 0xc456, + 0xc457, 0xc458, 0x0000, 0xc459, 0xc45a, 0xc45b, 0xc45c, 0xc45d, + 0xc45e, 0xc45f, 0xc460, 0xc461, 0xc462, 0xc463, 0x0000, 0x0000, + 0x0000, 0xc464, 0xc465, 0xc466, 0xc467, 0xc468, 0xc469, 0xc46a, + 0xc46b, 0xc46c, 0xc46d, 0xc46e, 0xc46f, 0xc470, 0xc471, 0xc472, + 0xc473, 0xc474, 0x0000, 0xc475, 0xc476, 0xc477, 0xc478, 0xc479, + 0xc47a, 0xc47b, 0xc47c, 0xc47d, 0xc47e, 0xc47f, 0x0000, 0x0000, + 0x0000, 0xc480, 0xc481, 0xc482, 0xc483, 0xc484, 0xc485, 0xc486, + 0xc487, 0xc488, 0xc489, 0xc48a, 0xc48b, 0xc48c, 0xc48d, 0xc48e, + 0xc48f, 0xc490, 0x0000, 0xc491, 0xc492, 0xc493, 0xc494, 0xc495, + 0xc496, 0xc497, 0xc498, 0xc499, 0xc49a, 0xc49b, 0x0000, 0x0000, + 0x0000, 0xc49c, 0xc49d, 0xc49e, 0xc49f, 0xc4a0, 0xc4a1, 0xc4a2, + 0xc4a3, 0xc4a4, 0xc4a5, 0xc4a6, 0xc4a7, 0xc4a8, 0xc4a9, 0xc4aa, + 0xc4ab, 0xc4ac, 0x0000, 0xc4ad, 0xc4ae, 0xc4af, 0xc4b0, 0xc4b1, + 0xc4b2, 0xc4b3, 0xc4b4, 0xc4b5, 0xc4b6, 0xc4b7, 0x0000, 0x0000, + 0x0000, 0xc4b8, 0xc4b9, 0xc4ba, 0xc4bb, 0xc4bc, 0xc4bd, 0xc4be, + 0xc4bf, 0xc4c0, 0xc4c1, 0xc4c2, 0xc4c3, 0xc4c4, 0xc4c5, 0xc4c6, + 0xc4c7, 0xc4c8, 0x0000, 0xc4c9, 0xc4ca, 0xc4cb, 0xc4cc, 0xc4cd, + 0xc4ce, 0xc4cf, 0xc4d0, 0xc4d1, 0xc4d2, 0xc4d3, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xc4d4, 0xc4d5, 0xc4d6, 0xc4d7, 0xc4d8, 0xc4d9, 0xc4da, + 0xc4db, 0xc4dc, 0xc4dd, 0xc4de, 0xc4df, 0xc4e0, 0xc4e1, 0xc4e2, + 0xc4e3, 0xc4e4, 0x0000, 0xc4e5, 0xc4e6, 0xc4e7, 0xc4e8, 0xc4e9, + 0xc4ea, 0xc4eb, 0xc4ec, 0xc4ed, 0xc4ee, 0xc4ef, 0x0000, 0x0000, + 0x0000, 0xc4f0, 0xc4f1, 0xc4f2, 0xc4f3, 0xc4f4, 0xc4f5, 0xc4f6, + 0xc4f7, 0xc4f8, 0xc4f9, 0xc4fa, 0xc4fb, 0xc4fc, 0xc4fd, 0xc4fe, + 0xc4ff, 0xc500, 0x0000, 0xc501, 0xc502, 0xc503, 0xc504, 0xc505, + 0xc506, 0xc507, 0xc508, 0xc509, 0xc50a, 0xc50b, 0x0000, 0x0000, + 0x0000, 0xc50c, 0xc50d, 0xc50e, 0xc50f, 0xc510, 0xc511, 0xc512, + 0xc513, 0xc514, 0xc515, 0xc516, 0xc517, 0xc518, 0xc519, 0xc51a, + 0xc51b, 0xc51c, 0x0000, 0xc51d, 0xc51e, 0xc51f, 0xc520, 0xc521, + 0xc522, 0xc523, 0xc524, 0xc525, 0xc526, 0xc527, 0x0000, 0x0000, + 0x0000, 0xc528, 0xc529, 0xc52a, 0xc52b, 0xc52c, 0xc52d, 0xc52e, + 0xc52f, 0xc530, 0xc531, 0xc532, 0xc533, 0xc534, 0xc535, 0xc536, + 0xc537, 0xc538, 0x0000, 0xc539, 0xc53a, 0xc53b, 0xc53c, 0xc53d, + 0xc53e, 0xc53f, 0xc540, 0xc541, 0xc542, 0xc543, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xc544, 0xc545, 0xc546, 0xc547, 0xc548, 0xc549, 0xc54a, + 0xc54b, 0xc54c, 0xc54d, 0xc54e, 0xc54f, 0xc550, 0xc551, 0xc552, + 0xc553, 0xc554, 0x0000, 0xc555, 0xc556, 0xc557, 0xc558, 0xc559, + 0xc55a, 0xc55b, 0xc55c, 0xc55d, 0xc55e, 0xc55f, 0x0000, 0x0000, + 0x0000, 0xc560, 0xc561, 0xc562, 0xc563, 0xc564, 0xc565, 0xc566, + 0xc567, 0xc568, 0xc569, 0xc56a, 0xc56b, 0xc56c, 0xc56d, 0xc56e, + 0xc56f, 0xc570, 0x0000, 0xc571, 0xc572, 0xc573, 0xc574, 0xc575, + 0xc576, 0xc577, 0xc578, 0xc579, 0xc57a, 0xc57b, 0x0000, 0x0000, + 0x0000, 0xc57c, 0xc57d, 0xc57e, 0xc57f, 0xc580, 0xc581, 0xc582, + 0xc583, 0xc584, 0xc585, 0xc586, 0xc587, 0xc588, 0xc589, 0xc58a, + 0xc58b, 0xc58c, 0x0000, 0xc58d, 0xc58e, 0xc58f, 0xc590, 0xc591, + 0xc592, 0xc593, 0xc594, 0xc595, 0xc596, 0xc597, 0x0000, 0x0000, + 0x0000, 0xc598, 0xc599, 0xc59a, 0xc59b, 0xc59c, 0xc59d, 0xc59e, + 0xc59f, 0xc5a0, 0xc5a1, 0xc5a2, 0xc5a3, 0xc5a4, 0xc5a5, 0xc5a6, + 0xc5a7, 0xc5a8, 0x0000, 0xc5a9, 0xc5aa, 0xc5ab, 0xc5ac, 0xc5ad, + 0xc5ae, 0xc5af, 0xc5b0, 0xc5b1, 0xc5b2, 0xc5b3, 0x0000, 0x0000, + 0x0000, 0xc5b4, 0xc5b5, 0xc5b6, 0xc5b7, 0xc5b8, 0xc5b9, 0xc5ba, + 0xc5bb, 0xc5bc, 0xc5bd, 0xc5be, 0xc5bf, 0xc5c0, 0xc5c1, 0xc5c2, + 0xc5c3, 0xc5c4, 0x0000, 0xc5c5, 0xc5c6, 0xc5c7, 0xc5c8, 0xc5c9, + 0xc5ca, 0xc5cb, 0xc5cc, 0xc5cd, 0xc5ce, 0xc5cf, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xc5d0, 0xc5d1, 0xc5d2, 0xc5d3, 0xc5d4, 0xc5d5, 0xc5d6, + 0xc5d7, 0xc5d8, 0xc5d9, 0xc5da, 0xc5db, 0xc5dc, 0xc5dd, 0xc5de, + 0xc5df, 0xc5e0, 0x0000, 0xc5e1, 0xc5e2, 0xc5e3, 0xc5e4, 0xc5e5, + 0xc5e6, 0xc5e7, 0xc5e8, 0xc5e9, 0xc5ea, 0xc5eb, 0x0000, 0x0000, + 0x0000, 0xc5ec, 0xc5ed, 0xc5ee, 0xc5ef, 0xc5f0, 0xc5f1, 0xc5f2, + 0xc5f3, 0xc5f4, 0xc5f5, 0xc5f6, 0xc5f7, 0xc5f8, 0xc5f9, 0xc5fa, + 0xc5fb, 0xc5fc, 0x0000, 0xc5fd, 0xc5fe, 0xc5ff, 0xc600, 0xc601, + 0xc602, 0xc603, 0xc604, 0xc605, 0xc606, 0xc607, 0x0000, 0x0000, + 0x0000, 0xc608, 0xc609, 0xc60a, 0xc60b, 0xc60c, 0xc60d, 0xc60e, + 0xc60f, 0xc610, 0xc611, 0xc612, 0xc613, 0xc614, 0xc615, 0xc616, + 0xc617, 0xc618, 0x0000, 0xc619, 0xc61a, 0xc61b, 0xc61c, 0xc61d, + 0xc61e, 0xc61f, 0xc620, 0xc621, 0xc622, 0xc623, 0x0000, 0x0000, + 0x0000, 0xc624, 0xc625, 0xc626, 0xc627, 0xc628, 0xc629, 0xc62a, + 0xc62b, 0xc62c, 0xc62d, 0xc62e, 0xc62f, 0xc630, 0xc631, 0xc632, + 0xc633, 0xc634, 0x0000, 0xc635, 0xc636, 0xc637, 0xc638, 0xc639, + 0xc63a, 0xc63b, 0xc63c, 0xc63d, 0xc63e, 0xc63f, 0x0000, 0x0000, + 0x0000, 0xc640, 0xc641, 0xc642, 0xc643, 0xc644, 0xc645, 0xc646, + 0xc647, 0xc648, 0xc649, 0xc64a, 0xc64b, 0xc64c, 0xc64d, 0xc64e, + 0xc64f, 0xc650, 0x0000, 0xc651, 0xc652, 0xc653, 0xc654, 0xc655, + 0xc656, 0xc657, 0xc658, 0xc659, 0xc65a, 0xc65b, 0x0000, 0x0000, + 0x0000, 0xc65c, 0xc65d, 0xc65e, 0xc65f, 0xc660, 0xc661, 0xc662, + 0xc663, 0xc664, 0xc665, 0xc666, 0xc667, 0xc668, 0xc669, 0xc66a, + 0xc66b, 0xc66c, 0x0000, 0xc66d, 0xc66e, 0xc66f, 0xc670, 0xc671, + 0xc672, 0xc673, 0xc674, 0xc675, 0xc676, 0xc677, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xc678, 0xc679, 0xc67a, 0xc67b, 0xc67c, 0xc67d, 0xc67e, + 0xc67f, 0xc680, 0xc681, 0xc682, 0xc683, 0xc684, 0xc685, 0xc686, + 0xc687, 0xc688, 0x0000, 0xc689, 0xc68a, 0xc68b, 0xc68c, 0xc68d, + 0xc68e, 0xc68f, 0xc690, 0xc691, 0xc692, 0xc693, 0x0000, 0x0000, + 0x0000, 0xc694, 0xc695, 0xc696, 0xc697, 0xc698, 0xc699, 0xc69a, + 0xc69b, 0xc69c, 0xc69d, 0xc69e, 0xc69f, 0xc6a0, 0xc6a1, 0xc6a2, + 0xc6a3, 0xc6a4, 0x0000, 0xc6a5, 0xc6a6, 0xc6a7, 0xc6a8, 0xc6a9, + 0xc6aa, 0xc6ab, 0xc6ac, 0xc6ad, 0xc6ae, 0xc6af, 0x0000, 0x0000, + 0x0000, 0xc6b0, 0xc6b1, 0xc6b2, 0xc6b3, 0xc6b4, 0xc6b5, 0xc6b6, + 0xc6b7, 0xc6b8, 0xc6b9, 0xc6ba, 0xc6bb, 0xc6bc, 0xc6bd, 0xc6be, + 0xc6bf, 0xc6c0, 0x0000, 0xc6c1, 0xc6c2, 0xc6c3, 0xc6c4, 0xc6c5, + 0xc6c6, 0xc6c7, 0xc6c8, 0xc6c9, 0xc6ca, 0xc6cb, 0x0000, 0x0000, + 0x0000, 0xc6cc, 0xc6cd, 0xc6ce, 0xc6cf, 0xc6d0, 0xc6d1, 0xc6d2, + 0xc6d3, 0xc6d4, 0xc6d5, 0xc6d6, 0xc6d7, 0xc6d8, 0xc6d9, 0xc6da, + 0xc6db, 0xc6dc, 0x0000, 0xc6dd, 0xc6de, 0xc6df, 0xc6e0, 0xc6e1, + 0xc6e2, 0xc6e3, 0xc6e4, 0xc6e5, 0xc6e6, 0xc6e7, 0x0000, 0x0000, + 0x0000, 0xc6e8, 0xc6e9, 0xc6ea, 0xc6eb, 0xc6ec, 0xc6ed, 0xc6ee, + 0xc6ef, 0xc6f0, 0xc6f1, 0xc6f2, 0xc6f3, 0xc6f4, 0xc6f5, 0xc6f6, + 0xc6f7, 0xc6f8, 0x0000, 0xc6f9, 0xc6fa, 0xc6fb, 0xc6fc, 0xc6fd, + 0xc6fe, 0xc6ff, 0xc700, 0xc701, 0xc702, 0xc703, 0x0000, 0x0000, + 0x0000, 0xc704, 0xc705, 0xc706, 0xc707, 0xc708, 0xc709, 0xc70a, + 0xc70b, 0xc70c, 0xc70d, 0xc70e, 0xc70f, 0xc710, 0xc711, 0xc712, + 0xc713, 0xc714, 0x0000, 0xc715, 0xc716, 0xc717, 0xc718, 0xc719, + 0xc71a, 0xc71b, 0xc71c, 0xc71d, 0xc71e, 0xc71f, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xc720, 0xc721, 0xc722, 0xc723, 0xc724, 0xc725, 0xc726, + 0xc727, 0xc728, 0xc729, 0xc72a, 0xc72b, 0xc72c, 0xc72d, 0xc72e, + 0xc72f, 0xc730, 0x0000, 0xc731, 0xc732, 0xc733, 0xc734, 0xc735, + 0xc736, 0xc737, 0xc738, 0xc739, 0xc73a, 0xc73b, 0x0000, 0x0000, + 0x0000, 0xc73c, 0xc73d, 0xc73e, 0xc73f, 0xc740, 0xc741, 0xc742, + 0xc743, 0xc744, 0xc745, 0xc746, 0xc747, 0xc748, 0xc749, 0xc74a, + 0xc74b, 0xc74c, 0x0000, 0xc74d, 0xc74e, 0xc74f, 0xc750, 0xc751, + 0xc752, 0xc753, 0xc754, 0xc755, 0xc756, 0xc757, 0x0000, 0x0000, + 0x0000, 0xc758, 0xc759, 0xc75a, 0xc75b, 0xc75c, 0xc75d, 0xc75e, + 0xc75f, 0xc760, 0xc761, 0xc762, 0xc763, 0xc764, 0xc765, 0xc766, + 0xc767, 0xc768, 0x0000, 0xc769, 0xc76a, 0xc76b, 0xc76c, 0xc76d, + 0xc76e, 0xc76f, 0xc770, 0xc771, 0xc772, 0xc773, 0x0000, 0x0000, + 0x0000, 0xc774, 0xc775, 0xc776, 0xc777, 0xc778, 0xc779, 0xc77a, + 0xc77b, 0xc77c, 0xc77d, 0xc77e, 0xc77f, 0xc780, 0xc781, 0xc782, + 0xc783, 0xc784, 0x0000, 0xc785, 0xc786, 0xc787, 0xc788, 0xc789, + 0xc78a, 0xc78b, 0xc78c, 0xc78d, 0xc78e, 0xc78f, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xc790, 0xc791, 0xc792, 0xc793, 0xc794, 0xc795, 0xc796, + 0xc797, 0xc798, 0xc799, 0xc79a, 0xc79b, 0xc79c, 0xc79d, 0xc79e, + 0xc79f, 0xc7a0, 0x0000, 0xc7a1, 0xc7a2, 0xc7a3, 0xc7a4, 0xc7a5, + 0xc7a6, 0xc7a7, 0xc7a8, 0xc7a9, 0xc7aa, 0xc7ab, 0x0000, 0x0000, + 0x0000, 0xc7ac, 0xc7ad, 0xc7ae, 0xc7af, 0xc7b0, 0xc7b1, 0xc7b2, + 0xc7b3, 0xc7b4, 0xc7b5, 0xc7b6, 0xc7b7, 0xc7b8, 0xc7b9, 0xc7ba, + 0xc7bb, 0xc7bc, 0x0000, 0xc7bd, 0xc7be, 0xc7bf, 0xc7c0, 0xc7c1, + 0xc7c2, 0xc7c3, 0xc7c4, 0xc7c5, 0xc7c6, 0xc7c7, 0x0000, 0x0000, + 0x0000, 0xc7c8, 0xc7c9, 0xc7ca, 0xc7cb, 0xc7cc, 0xc7cd, 0xc7ce, + 0xc7cf, 0xc7d0, 0xc7d1, 0xc7d2, 0xc7d3, 0xc7d4, 0xc7d5, 0xc7d6, + 0xc7d7, 0xc7d8, 0x0000, 0xc7d9, 0xc7da, 0xc7db, 0xc7dc, 0xc7dd, + 0xc7de, 0xc7df, 0xc7e0, 0xc7e1, 0xc7e2, 0xc7e3, 0x0000, 0x0000, + 0x0000, 0xc7e4, 0xc7e5, 0xc7e6, 0xc7e7, 0xc7e8, 0xc7e9, 0xc7ea, + 0xc7eb, 0xc7ec, 0xc7ed, 0xc7ee, 0xc7ef, 0xc7f0, 0xc7f1, 0xc7f2, + 0xc7f3, 0xc7f4, 0x0000, 0xc7f5, 0xc7f6, 0xc7f7, 0xc7f8, 0xc7f9, + 0xc7fa, 0xc7fb, 0xc7fc, 0xc7fd, 0xc7fe, 0xc7ff, 0x0000, 0x0000, + 0x0000, 0xc800, 0xc801, 0xc802, 0xc803, 0xc804, 0xc805, 0xc806, + 0xc807, 0xc808, 0xc809, 0xc80a, 0xc80b, 0xc80c, 0xc80d, 0xc80e, + 0xc80f, 0xc810, 0x0000, 0xc811, 0xc812, 0xc813, 0xc814, 0xc815, + 0xc816, 0xc817, 0xc818, 0xc819, 0xc81a, 0xc81b, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xc81c, 0xc81d, 0xc81e, 0xc81f, 0xc820, 0xc821, 0xc822, + 0xc823, 0xc824, 0xc825, 0xc826, 0xc827, 0xc828, 0xc829, 0xc82a, + 0xc82b, 0xc82c, 0x0000, 0xc82d, 0xc82e, 0xc82f, 0xc830, 0xc831, + 0xc832, 0xc833, 0xc834, 0xc835, 0xc836, 0xc837, 0x0000, 0x0000, + 0x0000, 0xc838, 0xc839, 0xc83a, 0xc83b, 0xc83c, 0xc83d, 0xc83e, + 0xc83f, 0xc840, 0xc841, 0xc842, 0xc843, 0xc844, 0xc845, 0xc846, + 0xc847, 0xc848, 0x0000, 0xc849, 0xc84a, 0xc84b, 0xc84c, 0xc84d, + 0xc84e, 0xc84f, 0xc850, 0xc851, 0xc852, 0xc853, 0x0000, 0x0000, + 0x0000, 0xc854, 0xc855, 0xc856, 0xc857, 0xc858, 0xc859, 0xc85a, + 0xc85b, 0xc85c, 0xc85d, 0xc85e, 0xc85f, 0xc860, 0xc861, 0xc862, + 0xc863, 0xc864, 0x0000, 0xc865, 0xc866, 0xc867, 0xc868, 0xc869, + 0xc86a, 0xc86b, 0xc86c, 0xc86d, 0xc86e, 0xc86f, 0x0000, 0x0000, + 0x0000, 0xc870, 0xc871, 0xc872, 0xc873, 0xc874, 0xc875, 0xc876, + 0xc877, 0xc878, 0xc879, 0xc87a, 0xc87b, 0xc87c, 0xc87d, 0xc87e, + 0xc87f, 0xc880, 0x0000, 0xc881, 0xc882, 0xc883, 0xc884, 0xc885, + 0xc886, 0xc887, 0xc888, 0xc889, 0xc88a, 0xc88b, 0x0000, 0x0000, + 0x0000, 0xc88c, 0xc88d, 0xc88e, 0xc88f, 0xc890, 0xc891, 0xc892, + 0xc893, 0xc894, 0xc895, 0xc896, 0xc897, 0xc898, 0xc899, 0xc89a, + 0xc89b, 0xc89c, 0x0000, 0xc89d, 0xc89e, 0xc89f, 0xc8a0, 0xc8a1, + 0xc8a2, 0xc8a3, 0xc8a4, 0xc8a5, 0xc8a6, 0xc8a7, 0x0000, 0x0000, + 0x0000, 0xc8a8, 0xc8a9, 0xc8aa, 0xc8ab, 0xc8ac, 0xc8ad, 0xc8ae, + 0xc8af, 0xc8b0, 0xc8b1, 0xc8b2, 0xc8b3, 0xc8b4, 0xc8b5, 0xc8b6, + 0xc8b7, 0xc8b8, 0x0000, 0xc8b9, 0xc8ba, 0xc8bb, 0xc8bc, 0xc8bd, + 0xc8be, 0xc8bf, 0xc8c0, 0xc8c1, 0xc8c2, 0xc8c3, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xc8c4, 0xc8c5, 0xc8c6, 0xc8c7, 0xc8c8, 0xc8c9, 0xc8ca, + 0xc8cb, 0xc8cc, 0xc8cd, 0xc8ce, 0xc8cf, 0xc8d0, 0xc8d1, 0xc8d2, + 0xc8d3, 0xc8d4, 0x0000, 0xc8d5, 0xc8d6, 0xc8d7, 0xc8d8, 0xc8d9, + 0xc8da, 0xc8db, 0xc8dc, 0xc8dd, 0xc8de, 0xc8df, 0x0000, 0x0000, + 0x0000, 0xc8e0, 0xc8e1, 0xc8e2, 0xc8e3, 0xc8e4, 0xc8e5, 0xc8e6, + 0xc8e7, 0xc8e8, 0xc8e9, 0xc8ea, 0xc8eb, 0xc8ec, 0xc8ed, 0xc8ee, + 0xc8ef, 0xc8f0, 0x0000, 0xc8f1, 0xc8f2, 0xc8f3, 0xc8f4, 0xc8f5, + 0xc8f6, 0xc8f7, 0xc8f8, 0xc8f9, 0xc8fa, 0xc8fb, 0x0000, 0x0000, + 0x0000, 0xc8fc, 0xc8fd, 0xc8fe, 0xc8ff, 0xc900, 0xc901, 0xc902, + 0xc903, 0xc904, 0xc905, 0xc906, 0xc907, 0xc908, 0xc909, 0xc90a, + 0xc90b, 0xc90c, 0x0000, 0xc90d, 0xc90e, 0xc90f, 0xc910, 0xc911, + 0xc912, 0xc913, 0xc914, 0xc915, 0xc916, 0xc917, 0x0000, 0x0000, + 0x0000, 0xc918, 0xc919, 0xc91a, 0xc91b, 0xc91c, 0xc91d, 0xc91e, + 0xc91f, 0xc920, 0xc921, 0xc922, 0xc923, 0xc924, 0xc925, 0xc926, + 0xc927, 0xc928, 0x0000, 0xc929, 0xc92a, 0xc92b, 0xc92c, 0xc92d, + 0xc92e, 0xc92f, 0xc930, 0xc931, 0xc932, 0xc933, 0x0000, 0x0000, + 0x0000, 0xc934, 0xc935, 0xc936, 0xc937, 0xc938, 0xc939, 0xc93a, + 0xc93b, 0xc93c, 0xc93d, 0xc93e, 0xc93f, 0xc940, 0xc941, 0xc942, + 0xc943, 0xc944, 0x0000, 0xc945, 0xc946, 0xc947, 0xc948, 0xc949, + 0xc94a, 0xc94b, 0xc94c, 0xc94d, 0xc94e, 0xc94f, 0x0000, 0x0000, + 0x0000, 0xc950, 0xc951, 0xc952, 0xc953, 0xc954, 0xc955, 0xc956, + 0xc957, 0xc958, 0xc959, 0xc95a, 0xc95b, 0xc95c, 0xc95d, 0xc95e, + 0xc95f, 0xc960, 0x0000, 0xc961, 0xc962, 0xc963, 0xc964, 0xc965, + 0xc966, 0xc967, 0xc968, 0xc969, 0xc96a, 0xc96b, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xc96c, 0xc96d, 0xc96e, 0xc96f, 0xc970, 0xc971, 0xc972, + 0xc973, 0xc974, 0xc975, 0xc976, 0xc977, 0xc978, 0xc979, 0xc97a, + 0xc97b, 0xc97c, 0x0000, 0xc97d, 0xc97e, 0xc97f, 0xc980, 0xc981, + 0xc982, 0xc983, 0xc984, 0xc985, 0xc986, 0xc987, 0x0000, 0x0000, + 0x0000, 0xc988, 0xc989, 0xc98a, 0xc98b, 0xc98c, 0xc98d, 0xc98e, + 0xc98f, 0xc990, 0xc991, 0xc992, 0xc993, 0xc994, 0xc995, 0xc996, + 0xc997, 0xc998, 0x0000, 0xc999, 0xc99a, 0xc99b, 0xc99c, 0xc99d, + 0xc99e, 0xc99f, 0xc9a0, 0xc9a1, 0xc9a2, 0xc9a3, 0x0000, 0x0000, + 0x0000, 0xc9a4, 0xc9a5, 0xc9a6, 0xc9a7, 0xc9a8, 0xc9a9, 0xc9aa, + 0xc9ab, 0xc9ac, 0xc9ad, 0xc9ae, 0xc9af, 0xc9b0, 0xc9b1, 0xc9b2, + 0xc9b3, 0xc9b4, 0x0000, 0xc9b5, 0xc9b6, 0xc9b7, 0xc9b8, 0xc9b9, + 0xc9ba, 0xc9bb, 0xc9bc, 0xc9bd, 0xc9be, 0xc9bf, 0x0000, 0x0000, + 0x0000, 0xc9c0, 0xc9c1, 0xc9c2, 0xc9c3, 0xc9c4, 0xc9c5, 0xc9c6, + 0xc9c7, 0xc9c8, 0xc9c9, 0xc9ca, 0xc9cb, 0xc9cc, 0xc9cd, 0xc9ce, + 0xc9cf, 0xc9d0, 0x0000, 0xc9d1, 0xc9d2, 0xc9d3, 0xc9d4, 0xc9d5, + 0xc9d6, 0xc9d7, 0xc9d8, 0xc9d9, 0xc9da, 0xc9db, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x3149, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xc9dc, 0xc9dd, 0xc9de, 0xc9df, 0xc9e0, 0xc9e1, 0xc9e2, + 0xc9e3, 0xc9e4, 0xc9e5, 0xc9e6, 0xc9e7, 0xc9e8, 0xc9e9, 0xc9ea, + 0xc9eb, 0xc9ec, 0x0000, 0xc9ed, 0xc9ee, 0xc9ef, 0xc9f0, 0xc9f1, + 0xc9f2, 0xc9f3, 0xc9f4, 0xc9f5, 0xc9f6, 0xc9f7, 0x0000, 0x0000, + 0x0000, 0xc9f8, 0xc9f9, 0xc9fa, 0xc9fb, 0xc9fc, 0xc9fd, 0xc9fe, + 0xc9ff, 0xca00, 0xca01, 0xca02, 0xca03, 0xca04, 0xca05, 0xca06, + 0xca07, 0xca08, 0x0000, 0xca09, 0xca0a, 0xca0b, 0xca0c, 0xca0d, + 0xca0e, 0xca0f, 0xca10, 0xca11, 0xca12, 0xca13, 0x0000, 0x0000, + 0x0000, 0xca14, 0xca15, 0xca16, 0xca17, 0xca18, 0xca19, 0xca1a, + 0xca1b, 0xca1c, 0xca1d, 0xca1e, 0xca1f, 0xca20, 0xca21, 0xca22, + 0xca23, 0xca24, 0x0000, 0xca25, 0xca26, 0xca27, 0xca28, 0xca29, + 0xca2a, 0xca2b, 0xca2c, 0xca2d, 0xca2e, 0xca2f, 0x0000, 0x0000, + 0x0000, 0xca30, 0xca31, 0xca32, 0xca33, 0xca34, 0xca35, 0xca36, + 0xca37, 0xca38, 0xca39, 0xca3a, 0xca3b, 0xca3c, 0xca3d, 0xca3e, + 0xca3f, 0xca40, 0x0000, 0xca41, 0xca42, 0xca43, 0xca44, 0xca45, + 0xca46, 0xca47, 0xca48, 0xca49, 0xca4a, 0xca4b, 0x0000, 0x0000, + 0x0000, 0xca4c, 0xca4d, 0xca4e, 0xca4f, 0xca50, 0xca51, 0xca52, + 0xca53, 0xca54, 0xca55, 0xca56, 0xca57, 0xca58, 0xca59, 0xca5a, + 0xca5b, 0xca5c, 0x0000, 0xca5d, 0xca5e, 0xca5f, 0xca60, 0xca61, + 0xca62, 0xca63, 0xca64, 0xca65, 0xca66, 0xca67, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xca68, 0xca69, 0xca6a, 0xca6b, 0xca6c, 0xca6d, 0xca6e, + 0xca6f, 0xca70, 0xca71, 0xca72, 0xca73, 0xca74, 0xca75, 0xca76, + 0xca77, 0xca78, 0x0000, 0xca79, 0xca7a, 0xca7b, 0xca7c, 0xca7d, + 0xca7e, 0xca7f, 0xca80, 0xca81, 0xca82, 0xca83, 0x0000, 0x0000, + 0x0000, 0xca84, 0xca85, 0xca86, 0xca87, 0xca88, 0xca89, 0xca8a, + 0xca8b, 0xca8c, 0xca8d, 0xca8e, 0xca8f, 0xca90, 0xca91, 0xca92, + 0xca93, 0xca94, 0x0000, 0xca95, 0xca96, 0xca97, 0xca98, 0xca99, + 0xca9a, 0xca9b, 0xca9c, 0xca9d, 0xca9e, 0xca9f, 0x0000, 0x0000, + 0x0000, 0xcaa0, 0xcaa1, 0xcaa2, 0xcaa3, 0xcaa4, 0xcaa5, 0xcaa6, + 0xcaa7, 0xcaa8, 0xcaa9, 0xcaaa, 0xcaab, 0xcaac, 0xcaad, 0xcaae, + 0xcaaf, 0xcab0, 0x0000, 0xcab1, 0xcab2, 0xcab3, 0xcab4, 0xcab5, + 0xcab6, 0xcab7, 0xcab8, 0xcab9, 0xcaba, 0xcabb, 0x0000, 0x0000, + 0x0000, 0xcabc, 0xcabd, 0xcabe, 0xcabf, 0xcac0, 0xcac1, 0xcac2, + 0xcac3, 0xcac4, 0xcac5, 0xcac6, 0xcac7, 0xcac8, 0xcac9, 0xcaca, + 0xcacb, 0xcacc, 0x0000, 0xcacd, 0xcace, 0xcacf, 0xcad0, 0xcad1, + 0xcad2, 0xcad3, 0xcad4, 0xcad5, 0xcad6, 0xcad7, 0x0000, 0x0000, + 0x0000, 0xcad8, 0xcad9, 0xcada, 0xcadb, 0xcadc, 0xcadd, 0xcade, + 0xcadf, 0xcae0, 0xcae1, 0xcae2, 0xcae3, 0xcae4, 0xcae5, 0xcae6, + 0xcae7, 0xcae8, 0x0000, 0xcae9, 0xcaea, 0xcaeb, 0xcaec, 0xcaed, + 0xcaee, 0xcaef, 0xcaf0, 0xcaf1, 0xcaf2, 0xcaf3, 0x0000, 0x0000, + 0x0000, 0xcaf4, 0xcaf5, 0xcaf6, 0xcaf7, 0xcaf8, 0xcaf9, 0xcafa, + 0xcafb, 0xcafc, 0xcafd, 0xcafe, 0xcaff, 0xcb00, 0xcb01, 0xcb02, + 0xcb03, 0xcb04, 0x0000, 0xcb05, 0xcb06, 0xcb07, 0xcb08, 0xcb09, + 0xcb0a, 0xcb0b, 0xcb0c, 0xcb0d, 0xcb0e, 0xcb0f, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xcb10, 0xcb11, 0xcb12, 0xcb13, 0xcb14, 0xcb15, 0xcb16, + 0xcb17, 0xcb18, 0xcb19, 0xcb1a, 0xcb1b, 0xcb1c, 0xcb1d, 0xcb1e, + 0xcb1f, 0xcb20, 0x0000, 0xcb21, 0xcb22, 0xcb23, 0xcb24, 0xcb25, + 0xcb26, 0xcb27, 0xcb28, 0xcb29, 0xcb2a, 0xcb2b, 0x0000, 0x0000, + 0x0000, 0xcb2c, 0xcb2d, 0xcb2e, 0xcb2f, 0xcb30, 0xcb31, 0xcb32, + 0xcb33, 0xcb34, 0xcb35, 0xcb36, 0xcb37, 0xcb38, 0xcb39, 0xcb3a, + 0xcb3b, 0xcb3c, 0x0000, 0xcb3d, 0xcb3e, 0xcb3f, 0xcb40, 0xcb41, + 0xcb42, 0xcb43, 0xcb44, 0xcb45, 0xcb46, 0xcb47, 0x0000, 0x0000, + 0x0000, 0xcb48, 0xcb49, 0xcb4a, 0xcb4b, 0xcb4c, 0xcb4d, 0xcb4e, + 0xcb4f, 0xcb50, 0xcb51, 0xcb52, 0xcb53, 0xcb54, 0xcb55, 0xcb56, + 0xcb57, 0xcb58, 0x0000, 0xcb59, 0xcb5a, 0xcb5b, 0xcb5c, 0xcb5d, + 0xcb5e, 0xcb5f, 0xcb60, 0xcb61, 0xcb62, 0xcb63, 0x0000, 0x0000, + 0x0000, 0xcb64, 0xcb65, 0xcb66, 0xcb67, 0xcb68, 0xcb69, 0xcb6a, + 0xcb6b, 0xcb6c, 0xcb6d, 0xcb6e, 0xcb6f, 0xcb70, 0xcb71, 0xcb72, + 0xcb73, 0xcb74, 0x0000, 0xcb75, 0xcb76, 0xcb77, 0xcb78, 0xcb79, + 0xcb7a, 0xcb7b, 0xcb7c, 0xcb7d, 0xcb7e, 0xcb7f, 0x0000, 0x0000, + 0x0000, 0xcb80, 0xcb81, 0xcb82, 0xcb83, 0xcb84, 0xcb85, 0xcb86, + 0xcb87, 0xcb88, 0xcb89, 0xcb8a, 0xcb8b, 0xcb8c, 0xcb8d, 0xcb8e, + 0xcb8f, 0xcb90, 0x0000, 0xcb91, 0xcb92, 0xcb93, 0xcb94, 0xcb95, + 0xcb96, 0xcb97, 0xcb98, 0xcb99, 0xcb9a, 0xcb9b, 0x0000, 0x0000, + 0x0000, 0xcb9c, 0xcb9d, 0xcb9e, 0xcb9f, 0xcba0, 0xcba1, 0xcba2, + 0xcba3, 0xcba4, 0xcba5, 0xcba6, 0xcba7, 0xcba8, 0xcba9, 0xcbaa, + 0xcbab, 0xcbac, 0x0000, 0xcbad, 0xcbae, 0xcbaf, 0xcbb0, 0xcbb1, + 0xcbb2, 0xcbb3, 0xcbb4, 0xcbb5, 0xcbb6, 0xcbb7, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xcbb8, 0xcbb9, 0xcbba, 0xcbbb, 0xcbbc, 0xcbbd, 0xcbbe, + 0xcbbf, 0xcbc0, 0xcbc1, 0xcbc2, 0xcbc3, 0xcbc4, 0xcbc5, 0xcbc6, + 0xcbc7, 0xcbc8, 0x0000, 0xcbc9, 0xcbca, 0xcbcb, 0xcbcc, 0xcbcd, + 0xcbce, 0xcbcf, 0xcbd0, 0xcbd1, 0xcbd2, 0xcbd3, 0x0000, 0x0000, + 0x0000, 0xcbd4, 0xcbd5, 0xcbd6, 0xcbd7, 0xcbd8, 0xcbd9, 0xcbda, + 0xcbdb, 0xcbdc, 0xcbdd, 0xcbde, 0xcbdf, 0xcbe0, 0xcbe1, 0xcbe2, + 0xcbe3, 0xcbe4, 0x0000, 0xcbe5, 0xcbe6, 0xcbe7, 0xcbe8, 0xcbe9, + 0xcbea, 0xcbeb, 0xcbec, 0xcbed, 0xcbee, 0xcbef, 0x0000, 0x0000, + 0x0000, 0xcbf0, 0xcbf1, 0xcbf2, 0xcbf3, 0xcbf4, 0xcbf5, 0xcbf6, + 0xcbf7, 0xcbf8, 0xcbf9, 0xcbfa, 0xcbfb, 0xcbfc, 0xcbfd, 0xcbfe, + 0xcbff, 0xcc00, 0x0000, 0xcc01, 0xcc02, 0xcc03, 0xcc04, 0xcc05, + 0xcc06, 0xcc07, 0xcc08, 0xcc09, 0xcc0a, 0xcc0b, 0x0000, 0x0000, + 0x0000, 0xcc0c, 0xcc0d, 0xcc0e, 0xcc0f, 0xcc10, 0xcc11, 0xcc12, + 0xcc13, 0xcc14, 0xcc15, 0xcc16, 0xcc17, 0xcc18, 0xcc19, 0xcc1a, + 0xcc1b, 0xcc1c, 0x0000, 0xcc1d, 0xcc1e, 0xcc1f, 0xcc20, 0xcc21, + 0xcc22, 0xcc23, 0xcc24, 0xcc25, 0xcc26, 0xcc27, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xcc28, 0xcc29, 0xcc2a, 0xcc2b, 0xcc2c, 0xcc2d, 0xcc2e, + 0xcc2f, 0xcc30, 0xcc31, 0xcc32, 0xcc33, 0xcc34, 0xcc35, 0xcc36, + 0xcc37, 0xcc38, 0x0000, 0xcc39, 0xcc3a, 0xcc3b, 0xcc3c, 0xcc3d, + 0xcc3e, 0xcc3f, 0xcc40, 0xcc41, 0xcc42, 0xcc43, 0x0000, 0x0000, + 0x0000, 0xcc44, 0xcc45, 0xcc46, 0xcc47, 0xcc48, 0xcc49, 0xcc4a, + 0xcc4b, 0xcc4c, 0xcc4d, 0xcc4e, 0xcc4f, 0xcc50, 0xcc51, 0xcc52, + 0xcc53, 0xcc54, 0x0000, 0xcc55, 0xcc56, 0xcc57, 0xcc58, 0xcc59, + 0xcc5a, 0xcc5b, 0xcc5c, 0xcc5d, 0xcc5e, 0xcc5f, 0x0000, 0x0000, + 0x0000, 0xcc60, 0xcc61, 0xcc62, 0xcc63, 0xcc64, 0xcc65, 0xcc66, + 0xcc67, 0xcc68, 0xcc69, 0xcc6a, 0xcc6b, 0xcc6c, 0xcc6d, 0xcc6e, + 0xcc6f, 0xcc70, 0x0000, 0xcc71, 0xcc72, 0xcc73, 0xcc74, 0xcc75, + 0xcc76, 0xcc77, 0xcc78, 0xcc79, 0xcc7a, 0xcc7b, 0x0000, 0x0000, + 0x0000, 0xcc7c, 0xcc7d, 0xcc7e, 0xcc7f, 0xcc80, 0xcc81, 0xcc82, + 0xcc83, 0xcc84, 0xcc85, 0xcc86, 0xcc87, 0xcc88, 0xcc89, 0xcc8a, + 0xcc8b, 0xcc8c, 0x0000, 0xcc8d, 0xcc8e, 0xcc8f, 0xcc90, 0xcc91, + 0xcc92, 0xcc93, 0xcc94, 0xcc95, 0xcc96, 0xcc97, 0x0000, 0x0000, + 0x0000, 0xcc98, 0xcc99, 0xcc9a, 0xcc9b, 0xcc9c, 0xcc9d, 0xcc9e, + 0xcc9f, 0xcca0, 0xcca1, 0xcca2, 0xcca3, 0xcca4, 0xcca5, 0xcca6, + 0xcca7, 0xcca8, 0x0000, 0xcca9, 0xccaa, 0xccab, 0xccac, 0xccad, + 0xccae, 0xccaf, 0xccb0, 0xccb1, 0xccb2, 0xccb3, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xccb4, 0xccb5, 0xccb6, 0xccb7, 0xccb8, 0xccb9, 0xccba, + 0xccbb, 0xccbc, 0xccbd, 0xccbe, 0xccbf, 0xccc0, 0xccc1, 0xccc2, + 0xccc3, 0xccc4, 0x0000, 0xccc5, 0xccc6, 0xccc7, 0xccc8, 0xccc9, + 0xccca, 0xcccb, 0xcccc, 0xcccd, 0xccce, 0xcccf, 0x0000, 0x0000, + 0x0000, 0xccd0, 0xccd1, 0xccd2, 0xccd3, 0xccd4, 0xccd5, 0xccd6, + 0xccd7, 0xccd8, 0xccd9, 0xccda, 0xccdb, 0xccdc, 0xccdd, 0xccde, + 0xccdf, 0xcce0, 0x0000, 0xcce1, 0xcce2, 0xcce3, 0xcce4, 0xcce5, + 0xcce6, 0xcce7, 0xcce8, 0xcce9, 0xccea, 0xcceb, 0x0000, 0x0000, + 0x0000, 0xccec, 0xcced, 0xccee, 0xccef, 0xccf0, 0xccf1, 0xccf2, + 0xccf3, 0xccf4, 0xccf5, 0xccf6, 0xccf7, 0xccf8, 0xccf9, 0xccfa, + 0xccfb, 0xccfc, 0x0000, 0xccfd, 0xccfe, 0xccff, 0xcd00, 0xcd01, + 0xcd02, 0xcd03, 0xcd04, 0xcd05, 0xcd06, 0xcd07, 0x0000, 0x0000, + 0x0000, 0xcd08, 0xcd09, 0xcd0a, 0xcd0b, 0xcd0c, 0xcd0d, 0xcd0e, + 0xcd0f, 0xcd10, 0xcd11, 0xcd12, 0xcd13, 0xcd14, 0xcd15, 0xcd16, + 0xcd17, 0xcd18, 0x0000, 0xcd19, 0xcd1a, 0xcd1b, 0xcd1c, 0xcd1d, + 0xcd1e, 0xcd1f, 0xcd20, 0xcd21, 0xcd22, 0xcd23, 0x0000, 0x0000, + 0x0000, 0xcd24, 0xcd25, 0xcd26, 0xcd27, 0xcd28, 0xcd29, 0xcd2a, + 0xcd2b, 0xcd2c, 0xcd2d, 0xcd2e, 0xcd2f, 0xcd30, 0xcd31, 0xcd32, + 0xcd33, 0xcd34, 0x0000, 0xcd35, 0xcd36, 0xcd37, 0xcd38, 0xcd39, + 0xcd3a, 0xcd3b, 0xcd3c, 0xcd3d, 0xcd3e, 0xcd3f, 0x0000, 0x0000, + 0x0000, 0xcd40, 0xcd41, 0xcd42, 0xcd43, 0xcd44, 0xcd45, 0xcd46, + 0xcd47, 0xcd48, 0xcd49, 0xcd4a, 0xcd4b, 0xcd4c, 0xcd4d, 0xcd4e, + 0xcd4f, 0xcd50, 0x0000, 0xcd51, 0xcd52, 0xcd53, 0xcd54, 0xcd55, + 0xcd56, 0xcd57, 0xcd58, 0xcd59, 0xcd5a, 0xcd5b, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xcd5c, 0xcd5d, 0xcd5e, 0xcd5f, 0xcd60, 0xcd61, 0xcd62, + 0xcd63, 0xcd64, 0xcd65, 0xcd66, 0xcd67, 0xcd68, 0xcd69, 0xcd6a, + 0xcd6b, 0xcd6c, 0x0000, 0xcd6d, 0xcd6e, 0xcd6f, 0xcd70, 0xcd71, + 0xcd72, 0xcd73, 0xcd74, 0xcd75, 0xcd76, 0xcd77, 0x0000, 0x0000, + 0x0000, 0xcd78, 0xcd79, 0xcd7a, 0xcd7b, 0xcd7c, 0xcd7d, 0xcd7e, + 0xcd7f, 0xcd80, 0xcd81, 0xcd82, 0xcd83, 0xcd84, 0xcd85, 0xcd86, + 0xcd87, 0xcd88, 0x0000, 0xcd89, 0xcd8a, 0xcd8b, 0xcd8c, 0xcd8d, + 0xcd8e, 0xcd8f, 0xcd90, 0xcd91, 0xcd92, 0xcd93, 0x0000, 0x0000, + 0x0000, 0xcd94, 0xcd95, 0xcd96, 0xcd97, 0xcd98, 0xcd99, 0xcd9a, + 0xcd9b, 0xcd9c, 0xcd9d, 0xcd9e, 0xcd9f, 0xcda0, 0xcda1, 0xcda2, + 0xcda3, 0xcda4, 0x0000, 0xcda5, 0xcda6, 0xcda7, 0xcda8, 0xcda9, + 0xcdaa, 0xcdab, 0xcdac, 0xcdad, 0xcdae, 0xcdaf, 0x0000, 0x0000, + 0x0000, 0xcdb0, 0xcdb1, 0xcdb2, 0xcdb3, 0xcdb4, 0xcdb5, 0xcdb6, + 0xcdb7, 0xcdb8, 0xcdb9, 0xcdba, 0xcdbb, 0xcdbc, 0xcdbd, 0xcdbe, + 0xcdbf, 0xcdc0, 0x0000, 0xcdc1, 0xcdc2, 0xcdc3, 0xcdc4, 0xcdc5, + 0xcdc6, 0xcdc7, 0xcdc8, 0xcdc9, 0xcdca, 0xcdcb, 0x0000, 0x0000, + 0x0000, 0xcdcc, 0xcdcd, 0xcdce, 0xcdcf, 0xcdd0, 0xcdd1, 0xcdd2, + 0xcdd3, 0xcdd4, 0xcdd5, 0xcdd6, 0xcdd7, 0xcdd8, 0xcdd9, 0xcdda, + 0xcddb, 0xcddc, 0x0000, 0xcddd, 0xcdde, 0xcddf, 0xcde0, 0xcde1, + 0xcde2, 0xcde3, 0xcde4, 0xcde5, 0xcde6, 0xcde7, 0x0000, 0x0000, + 0x0000, 0xcde8, 0xcde9, 0xcdea, 0xcdeb, 0xcdec, 0xcded, 0xcdee, + 0xcdef, 0xcdf0, 0xcdf1, 0xcdf2, 0xcdf3, 0xcdf4, 0xcdf5, 0xcdf6, + 0xcdf7, 0xcdf8, 0x0000, 0xcdf9, 0xcdfa, 0xcdfb, 0xcdfc, 0xcdfd, + 0xcdfe, 0xcdff, 0xce00, 0xce01, 0xce02, 0xce03, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xce04, 0xce05, 0xce06, 0xce07, 0xce08, 0xce09, 0xce0a, + 0xce0b, 0xce0c, 0xce0d, 0xce0e, 0xce0f, 0xce10, 0xce11, 0xce12, + 0xce13, 0xce14, 0x0000, 0xce15, 0xce16, 0xce17, 0xce18, 0xce19, + 0xce1a, 0xce1b, 0xce1c, 0xce1d, 0xce1e, 0xce1f, 0x0000, 0x0000, + 0x0000, 0xce20, 0xce21, 0xce22, 0xce23, 0xce24, 0xce25, 0xce26, + 0xce27, 0xce28, 0xce29, 0xce2a, 0xce2b, 0xce2c, 0xce2d, 0xce2e, + 0xce2f, 0xce30, 0x0000, 0xce31, 0xce32, 0xce33, 0xce34, 0xce35, + 0xce36, 0xce37, 0xce38, 0xce39, 0xce3a, 0xce3b, 0x0000, 0x0000, + 0x0000, 0xce3c, 0xce3d, 0xce3e, 0xce3f, 0xce40, 0xce41, 0xce42, + 0xce43, 0xce44, 0xce45, 0xce46, 0xce47, 0xce48, 0xce49, 0xce4a, + 0xce4b, 0xce4c, 0x0000, 0xce4d, 0xce4e, 0xce4f, 0xce50, 0xce51, + 0xce52, 0xce53, 0xce54, 0xce55, 0xce56, 0xce57, 0x0000, 0x0000, + 0x0000, 0xce58, 0xce59, 0xce5a, 0xce5b, 0xce5c, 0xce5d, 0xce5e, + 0xce5f, 0xce60, 0xce61, 0xce62, 0xce63, 0xce64, 0xce65, 0xce66, + 0xce67, 0xce68, 0x0000, 0xce69, 0xce6a, 0xce6b, 0xce6c, 0xce6d, + 0xce6e, 0xce6f, 0xce70, 0xce71, 0xce72, 0xce73, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xce74, 0xce75, 0xce76, 0xce77, 0xce78, 0xce79, 0xce7a, + 0xce7b, 0xce7c, 0xce7d, 0xce7e, 0xce7f, 0xce80, 0xce81, 0xce82, + 0xce83, 0xce84, 0x0000, 0xce85, 0xce86, 0xce87, 0xce88, 0xce89, + 0xce8a, 0xce8b, 0xce8c, 0xce8d, 0xce8e, 0xce8f, 0x0000, 0x0000, + 0x0000, 0xce90, 0xce91, 0xce92, 0xce93, 0xce94, 0xce95, 0xce96, + 0xce97, 0xce98, 0xce99, 0xce9a, 0xce9b, 0xce9c, 0xce9d, 0xce9e, + 0xce9f, 0xcea0, 0x0000, 0xcea1, 0xcea2, 0xcea3, 0xcea4, 0xcea5, + 0xcea6, 0xcea7, 0xcea8, 0xcea9, 0xceaa, 0xceab, 0x0000, 0x0000, + 0x0000, 0xceac, 0xcead, 0xceae, 0xceaf, 0xceb0, 0xceb1, 0xceb2, + 0xceb3, 0xceb4, 0xceb5, 0xceb6, 0xceb7, 0xceb8, 0xceb9, 0xceba, + 0xcebb, 0xcebc, 0x0000, 0xcebd, 0xcebe, 0xcebf, 0xcec0, 0xcec1, + 0xcec2, 0xcec3, 0xcec4, 0xcec5, 0xcec6, 0xcec7, 0x0000, 0x0000, + 0x0000, 0xcec8, 0xcec9, 0xceca, 0xcecb, 0xcecc, 0xcecd, 0xcece, + 0xcecf, 0xced0, 0xced1, 0xced2, 0xced3, 0xced4, 0xced5, 0xced6, + 0xced7, 0xced8, 0x0000, 0xced9, 0xceda, 0xcedb, 0xcedc, 0xcedd, + 0xcede, 0xcedf, 0xcee0, 0xcee1, 0xcee2, 0xcee3, 0x0000, 0x0000, + 0x0000, 0xcee4, 0xcee5, 0xcee6, 0xcee7, 0xcee8, 0xcee9, 0xceea, + 0xceeb, 0xceec, 0xceed, 0xceee, 0xceef, 0xcef0, 0xcef1, 0xcef2, + 0xcef3, 0xcef4, 0x0000, 0xcef5, 0xcef6, 0xcef7, 0xcef8, 0xcef9, + 0xcefa, 0xcefb, 0xcefc, 0xcefd, 0xcefe, 0xceff, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xcf00, 0xcf01, 0xcf02, 0xcf03, 0xcf04, 0xcf05, 0xcf06, + 0xcf07, 0xcf08, 0xcf09, 0xcf0a, 0xcf0b, 0xcf0c, 0xcf0d, 0xcf0e, + 0xcf0f, 0xcf10, 0x0000, 0xcf11, 0xcf12, 0xcf13, 0xcf14, 0xcf15, + 0xcf16, 0xcf17, 0xcf18, 0xcf19, 0xcf1a, 0xcf1b, 0x0000, 0x0000, + 0x0000, 0xcf1c, 0xcf1d, 0xcf1e, 0xcf1f, 0xcf20, 0xcf21, 0xcf22, + 0xcf23, 0xcf24, 0xcf25, 0xcf26, 0xcf27, 0xcf28, 0xcf29, 0xcf2a, + 0xcf2b, 0xcf2c, 0x0000, 0xcf2d, 0xcf2e, 0xcf2f, 0xcf30, 0xcf31, + 0xcf32, 0xcf33, 0xcf34, 0xcf35, 0xcf36, 0xcf37, 0x0000, 0x0000, + 0x0000, 0xcf38, 0xcf39, 0xcf3a, 0xcf3b, 0xcf3c, 0xcf3d, 0xcf3e, + 0xcf3f, 0xcf40, 0xcf41, 0xcf42, 0xcf43, 0xcf44, 0xcf45, 0xcf46, + 0xcf47, 0xcf48, 0x0000, 0xcf49, 0xcf4a, 0xcf4b, 0xcf4c, 0xcf4d, + 0xcf4e, 0xcf4f, 0xcf50, 0xcf51, 0xcf52, 0xcf53, 0x0000, 0x0000, + 0x0000, 0xcf54, 0xcf55, 0xcf56, 0xcf57, 0xcf58, 0xcf59, 0xcf5a, + 0xcf5b, 0xcf5c, 0xcf5d, 0xcf5e, 0xcf5f, 0xcf60, 0xcf61, 0xcf62, + 0xcf63, 0xcf64, 0x0000, 0xcf65, 0xcf66, 0xcf67, 0xcf68, 0xcf69, + 0xcf6a, 0xcf6b, 0xcf6c, 0xcf6d, 0xcf6e, 0xcf6f, 0x0000, 0x0000, + 0x0000, 0xcf70, 0xcf71, 0xcf72, 0xcf73, 0xcf74, 0xcf75, 0xcf76, + 0xcf77, 0xcf78, 0xcf79, 0xcf7a, 0xcf7b, 0xcf7c, 0xcf7d, 0xcf7e, + 0xcf7f, 0xcf80, 0x0000, 0xcf81, 0xcf82, 0xcf83, 0xcf84, 0xcf85, + 0xcf86, 0xcf87, 0xcf88, 0xcf89, 0xcf8a, 0xcf8b, 0x0000, 0x0000, + 0x0000, 0xcf8c, 0xcf8d, 0xcf8e, 0xcf8f, 0xcf90, 0xcf91, 0xcf92, + 0xcf93, 0xcf94, 0xcf95, 0xcf96, 0xcf97, 0xcf98, 0xcf99, 0xcf9a, + 0xcf9b, 0xcf9c, 0x0000, 0xcf9d, 0xcf9e, 0xcf9f, 0xcfa0, 0xcfa1, + 0xcfa2, 0xcfa3, 0xcfa4, 0xcfa5, 0xcfa6, 0xcfa7, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xcfa8, 0xcfa9, 0xcfaa, 0xcfab, 0xcfac, 0xcfad, 0xcfae, + 0xcfaf, 0xcfb0, 0xcfb1, 0xcfb2, 0xcfb3, 0xcfb4, 0xcfb5, 0xcfb6, + 0xcfb7, 0xcfb8, 0x0000, 0xcfb9, 0xcfba, 0xcfbb, 0xcfbc, 0xcfbd, + 0xcfbe, 0xcfbf, 0xcfc0, 0xcfc1, 0xcfc2, 0xcfc3, 0x0000, 0x0000, + 0x0000, 0xcfc4, 0xcfc5, 0xcfc6, 0xcfc7, 0xcfc8, 0xcfc9, 0xcfca, + 0xcfcb, 0xcfcc, 0xcfcd, 0xcfce, 0xcfcf, 0xcfd0, 0xcfd1, 0xcfd2, + 0xcfd3, 0xcfd4, 0x0000, 0xcfd5, 0xcfd6, 0xcfd7, 0xcfd8, 0xcfd9, + 0xcfda, 0xcfdb, 0xcfdc, 0xcfdd, 0xcfde, 0xcfdf, 0x0000, 0x0000, + 0x0000, 0xcfe0, 0xcfe1, 0xcfe2, 0xcfe3, 0xcfe4, 0xcfe5, 0xcfe6, + 0xcfe7, 0xcfe8, 0xcfe9, 0xcfea, 0xcfeb, 0xcfec, 0xcfed, 0xcfee, + 0xcfef, 0xcff0, 0x0000, 0xcff1, 0xcff2, 0xcff3, 0xcff4, 0xcff5, + 0xcff6, 0xcff7, 0xcff8, 0xcff9, 0xcffa, 0xcffb, 0x0000, 0x0000, + 0x0000, 0xcffc, 0xcffd, 0xcffe, 0xcfff, 0xd000, 0xd001, 0xd002, + 0xd003, 0xd004, 0xd005, 0xd006, 0xd007, 0xd008, 0xd009, 0xd00a, + 0xd00b, 0xd00c, 0x0000, 0xd00d, 0xd00e, 0xd00f, 0xd010, 0xd011, + 0xd012, 0xd013, 0xd014, 0xd015, 0xd016, 0xd017, 0x0000, 0x0000, + 0x0000, 0xd018, 0xd019, 0xd01a, 0xd01b, 0xd01c, 0xd01d, 0xd01e, + 0xd01f, 0xd020, 0xd021, 0xd022, 0xd023, 0xd024, 0xd025, 0xd026, + 0xd027, 0xd028, 0x0000, 0xd029, 0xd02a, 0xd02b, 0xd02c, 0xd02d, + 0xd02e, 0xd02f, 0xd030, 0xd031, 0xd032, 0xd033, 0x0000, 0x0000, + 0x0000, 0xd034, 0xd035, 0xd036, 0xd037, 0xd038, 0xd039, 0xd03a, + 0xd03b, 0xd03c, 0xd03d, 0xd03e, 0xd03f, 0xd040, 0xd041, 0xd042, + 0xd043, 0xd044, 0x0000, 0xd045, 0xd046, 0xd047, 0xd048, 0xd049, + 0xd04a, 0xd04b, 0xd04c, 0xd04d, 0xd04e, 0xd04f, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xd050, 0xd051, 0xd052, 0xd053, 0xd054, 0xd055, 0xd056, + 0xd057, 0xd058, 0xd059, 0xd05a, 0xd05b, 0xd05c, 0xd05d, 0xd05e, + 0xd05f, 0xd060, 0x0000, 0xd061, 0xd062, 0xd063, 0xd064, 0xd065, + 0xd066, 0xd067, 0xd068, 0xd069, 0xd06a, 0xd06b, 0x0000, 0x0000, + 0x0000, 0xd06c, 0xd06d, 0xd06e, 0xd06f, 0xd070, 0xd071, 0xd072, + 0xd073, 0xd074, 0xd075, 0xd076, 0xd077, 0xd078, 0xd079, 0xd07a, + 0xd07b, 0xd07c, 0x0000, 0xd07d, 0xd07e, 0xd07f, 0xd080, 0xd081, + 0xd082, 0xd083, 0xd084, 0xd085, 0xd086, 0xd087, 0x0000, 0x0000, + 0x0000, 0xd088, 0xd089, 0xd08a, 0xd08b, 0xd08c, 0xd08d, 0xd08e, + 0xd08f, 0xd090, 0xd091, 0xd092, 0xd093, 0xd094, 0xd095, 0xd096, + 0xd097, 0xd098, 0x0000, 0xd099, 0xd09a, 0xd09b, 0xd09c, 0xd09d, + 0xd09e, 0xd09f, 0xd0a0, 0xd0a1, 0xd0a2, 0xd0a3, 0x0000, 0x0000, + 0x0000, 0xd0a4, 0xd0a5, 0xd0a6, 0xd0a7, 0xd0a8, 0xd0a9, 0xd0aa, + 0xd0ab, 0xd0ac, 0xd0ad, 0xd0ae, 0xd0af, 0xd0b0, 0xd0b1, 0xd0b2, + 0xd0b3, 0xd0b4, 0x0000, 0xd0b5, 0xd0b6, 0xd0b7, 0xd0b8, 0xd0b9, + 0xd0ba, 0xd0bb, 0xd0bc, 0xd0bd, 0xd0be, 0xd0bf, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xd0c0, 0xd0c1, 0xd0c2, 0xd0c3, 0xd0c4, 0xd0c5, 0xd0c6, + 0xd0c7, 0xd0c8, 0xd0c9, 0xd0ca, 0xd0cb, 0xd0cc, 0xd0cd, 0xd0ce, + 0xd0cf, 0xd0d0, 0x0000, 0xd0d1, 0xd0d2, 0xd0d3, 0xd0d4, 0xd0d5, + 0xd0d6, 0xd0d7, 0xd0d8, 0xd0d9, 0xd0da, 0xd0db, 0x0000, 0x0000, + 0x0000, 0xd0dc, 0xd0dd, 0xd0de, 0xd0df, 0xd0e0, 0xd0e1, 0xd0e2, + 0xd0e3, 0xd0e4, 0xd0e5, 0xd0e6, 0xd0e7, 0xd0e8, 0xd0e9, 0xd0ea, + 0xd0eb, 0xd0ec, 0x0000, 0xd0ed, 0xd0ee, 0xd0ef, 0xd0f0, 0xd0f1, + 0xd0f2, 0xd0f3, 0xd0f4, 0xd0f5, 0xd0f6, 0xd0f7, 0x0000, 0x0000, + 0x0000, 0xd0f8, 0xd0f9, 0xd0fa, 0xd0fb, 0xd0fc, 0xd0fd, 0xd0fe, + 0xd0ff, 0xd100, 0xd101, 0xd102, 0xd103, 0xd104, 0xd105, 0xd106, + 0xd107, 0xd108, 0x0000, 0xd109, 0xd10a, 0xd10b, 0xd10c, 0xd10d, + 0xd10e, 0xd10f, 0xd110, 0xd111, 0xd112, 0xd113, 0x0000, 0x0000, + 0x0000, 0xd114, 0xd115, 0xd116, 0xd117, 0xd118, 0xd119, 0xd11a, + 0xd11b, 0xd11c, 0xd11d, 0xd11e, 0xd11f, 0xd120, 0xd121, 0xd122, + 0xd123, 0xd124, 0x0000, 0xd125, 0xd126, 0xd127, 0xd128, 0xd129, + 0xd12a, 0xd12b, 0xd12c, 0xd12d, 0xd12e, 0xd12f, 0x0000, 0x0000, + 0x0000, 0xd130, 0xd131, 0xd132, 0xd133, 0xd134, 0xd135, 0xd136, + 0xd137, 0xd138, 0xd139, 0xd13a, 0xd13b, 0xd13c, 0xd13d, 0xd13e, + 0xd13f, 0xd140, 0x0000, 0xd141, 0xd142, 0xd143, 0xd144, 0xd145, + 0xd146, 0xd147, 0xd148, 0xd149, 0xd14a, 0xd14b, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xd14c, 0xd14d, 0xd14e, 0xd14f, 0xd150, 0xd151, 0xd152, + 0xd153, 0xd154, 0xd155, 0xd156, 0xd157, 0xd158, 0xd159, 0xd15a, + 0xd15b, 0xd15c, 0x0000, 0xd15d, 0xd15e, 0xd15f, 0xd160, 0xd161, + 0xd162, 0xd163, 0xd164, 0xd165, 0xd166, 0xd167, 0x0000, 0x0000, + 0x0000, 0xd168, 0xd169, 0xd16a, 0xd16b, 0xd16c, 0xd16d, 0xd16e, + 0xd16f, 0xd170, 0xd171, 0xd172, 0xd173, 0xd174, 0xd175, 0xd176, + 0xd177, 0xd178, 0x0000, 0xd179, 0xd17a, 0xd17b, 0xd17c, 0xd17d, + 0xd17e, 0xd17f, 0xd180, 0xd181, 0xd182, 0xd183, 0x0000, 0x0000, + 0x0000, 0xd184, 0xd185, 0xd186, 0xd187, 0xd188, 0xd189, 0xd18a, + 0xd18b, 0xd18c, 0xd18d, 0xd18e, 0xd18f, 0xd190, 0xd191, 0xd192, + 0xd193, 0xd194, 0x0000, 0xd195, 0xd196, 0xd197, 0xd198, 0xd199, + 0xd19a, 0xd19b, 0xd19c, 0xd19d, 0xd19e, 0xd19f, 0x0000, 0x0000, + 0x0000, 0xd1a0, 0xd1a1, 0xd1a2, 0xd1a3, 0xd1a4, 0xd1a5, 0xd1a6, + 0xd1a7, 0xd1a8, 0xd1a9, 0xd1aa, 0xd1ab, 0xd1ac, 0xd1ad, 0xd1ae, + 0xd1af, 0xd1b0, 0x0000, 0xd1b1, 0xd1b2, 0xd1b3, 0xd1b4, 0xd1b5, + 0xd1b6, 0xd1b7, 0xd1b8, 0xd1b9, 0xd1ba, 0xd1bb, 0x0000, 0x0000, + 0x0000, 0xd1bc, 0xd1bd, 0xd1be, 0xd1bf, 0xd1c0, 0xd1c1, 0xd1c2, + 0xd1c3, 0xd1c4, 0xd1c5, 0xd1c6, 0xd1c7, 0xd1c8, 0xd1c9, 0xd1ca, + 0xd1cb, 0xd1cc, 0x0000, 0xd1cd, 0xd1ce, 0xd1cf, 0xd1d0, 0xd1d1, + 0xd1d2, 0xd1d3, 0xd1d4, 0xd1d5, 0xd1d6, 0xd1d7, 0x0000, 0x0000, + 0x0000, 0xd1d8, 0xd1d9, 0xd1da, 0xd1db, 0xd1dc, 0xd1dd, 0xd1de, + 0xd1df, 0xd1e0, 0xd1e1, 0xd1e2, 0xd1e3, 0xd1e4, 0xd1e5, 0xd1e6, + 0xd1e7, 0xd1e8, 0x0000, 0xd1e9, 0xd1ea, 0xd1eb, 0xd1ec, 0xd1ed, + 0xd1ee, 0xd1ef, 0xd1f0, 0xd1f1, 0xd1f2, 0xd1f3, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xd1f4, 0xd1f5, 0xd1f6, 0xd1f7, 0xd1f8, 0xd1f9, 0xd1fa, + 0xd1fb, 0xd1fc, 0xd1fd, 0xd1fe, 0xd1ff, 0xd200, 0xd201, 0xd202, + 0xd203, 0xd204, 0x0000, 0xd205, 0xd206, 0xd207, 0xd208, 0xd209, + 0xd20a, 0xd20b, 0xd20c, 0xd20d, 0xd20e, 0xd20f, 0x0000, 0x0000, + 0x0000, 0xd210, 0xd211, 0xd212, 0xd213, 0xd214, 0xd215, 0xd216, + 0xd217, 0xd218, 0xd219, 0xd21a, 0xd21b, 0xd21c, 0xd21d, 0xd21e, + 0xd21f, 0xd220, 0x0000, 0xd221, 0xd222, 0xd223, 0xd224, 0xd225, + 0xd226, 0xd227, 0xd228, 0xd229, 0xd22a, 0xd22b, 0x0000, 0x0000, + 0x0000, 0xd22c, 0xd22d, 0xd22e, 0xd22f, 0xd230, 0xd231, 0xd232, + 0xd233, 0xd234, 0xd235, 0xd236, 0xd237, 0xd238, 0xd239, 0xd23a, + 0xd23b, 0xd23c, 0x0000, 0xd23d, 0xd23e, 0xd23f, 0xd240, 0xd241, + 0xd242, 0xd243, 0xd244, 0xd245, 0xd246, 0xd247, 0x0000, 0x0000, + 0x0000, 0xd248, 0xd249, 0xd24a, 0xd24b, 0xd24c, 0xd24d, 0xd24e, + 0xd24f, 0xd250, 0xd251, 0xd252, 0xd253, 0xd254, 0xd255, 0xd256, + 0xd257, 0xd258, 0x0000, 0xd259, 0xd25a, 0xd25b, 0xd25c, 0xd25d, + 0xd25e, 0xd25f, 0xd260, 0xd261, 0xd262, 0xd263, 0x0000, 0x0000, + 0x0000, 0xd264, 0xd265, 0xd266, 0xd267, 0xd268, 0xd269, 0xd26a, + 0xd26b, 0xd26c, 0xd26d, 0xd26e, 0xd26f, 0xd270, 0xd271, 0xd272, + 0xd273, 0xd274, 0x0000, 0xd275, 0xd276, 0xd277, 0xd278, 0xd279, + 0xd27a, 0xd27b, 0xd27c, 0xd27d, 0xd27e, 0xd27f, 0x0000, 0x0000, + 0x0000, 0xd280, 0xd281, 0xd282, 0xd283, 0xd284, 0xd285, 0xd286, + 0xd287, 0xd288, 0xd289, 0xd28a, 0xd28b, 0xd28c, 0xd28d, 0xd28e, + 0xd28f, 0xd290, 0x0000, 0xd291, 0xd292, 0xd293, 0xd294, 0xd295, + 0xd296, 0xd297, 0xd298, 0xd299, 0xd29a, 0xd29b, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xd29c, 0xd29d, 0xd29e, 0xd29f, 0xd2a0, 0xd2a1, 0xd2a2, + 0xd2a3, 0xd2a4, 0xd2a5, 0xd2a6, 0xd2a7, 0xd2a8, 0xd2a9, 0xd2aa, + 0xd2ab, 0xd2ac, 0x0000, 0xd2ad, 0xd2ae, 0xd2af, 0xd2b0, 0xd2b1, + 0xd2b2, 0xd2b3, 0xd2b4, 0xd2b5, 0xd2b6, 0xd2b7, 0x0000, 0x0000, + 0x0000, 0xd2b8, 0xd2b9, 0xd2ba, 0xd2bb, 0xd2bc, 0xd2bd, 0xd2be, + 0xd2bf, 0xd2c0, 0xd2c1, 0xd2c2, 0xd2c3, 0xd2c4, 0xd2c5, 0xd2c6, + 0xd2c7, 0xd2c8, 0x0000, 0xd2c9, 0xd2ca, 0xd2cb, 0xd2cc, 0xd2cd, + 0xd2ce, 0xd2cf, 0xd2d0, 0xd2d1, 0xd2d2, 0xd2d3, 0x0000, 0x0000, + 0x0000, 0xd2d4, 0xd2d5, 0xd2d6, 0xd2d7, 0xd2d8, 0xd2d9, 0xd2da, + 0xd2db, 0xd2dc, 0xd2dd, 0xd2de, 0xd2df, 0xd2e0, 0xd2e1, 0xd2e2, + 0xd2e3, 0xd2e4, 0x0000, 0xd2e5, 0xd2e6, 0xd2e7, 0xd2e8, 0xd2e9, + 0xd2ea, 0xd2eb, 0xd2ec, 0xd2ed, 0xd2ee, 0xd2ef, 0x0000, 0x0000, + 0x0000, 0xd2f0, 0xd2f1, 0xd2f2, 0xd2f3, 0xd2f4, 0xd2f5, 0xd2f6, + 0xd2f7, 0xd2f8, 0xd2f9, 0xd2fa, 0xd2fb, 0xd2fc, 0xd2fd, 0xd2fe, + 0xd2ff, 0xd300, 0x0000, 0xd301, 0xd302, 0xd303, 0xd304, 0xd305, + 0xd306, 0xd307, 0xd308, 0xd309, 0xd30a, 0xd30b, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xd30c, 0xd30d, 0xd30e, 0xd30f, 0xd310, 0xd311, 0xd312, + 0xd313, 0xd314, 0xd315, 0xd316, 0xd317, 0xd318, 0xd319, 0xd31a, + 0xd31b, 0xd31c, 0x0000, 0xd31d, 0xd31e, 0xd31f, 0xd320, 0xd321, + 0xd322, 0xd323, 0xd324, 0xd325, 0xd326, 0xd327, 0x0000, 0x0000, + 0x0000, 0xd328, 0xd329, 0xd32a, 0xd32b, 0xd32c, 0xd32d, 0xd32e, + 0xd32f, 0xd330, 0xd331, 0xd332, 0xd333, 0xd334, 0xd335, 0xd336, + 0xd337, 0xd338, 0x0000, 0xd339, 0xd33a, 0xd33b, 0xd33c, 0xd33d, + 0xd33e, 0xd33f, 0xd340, 0xd341, 0xd342, 0xd343, 0x0000, 0x0000, + 0x0000, 0xd344, 0xd345, 0xd346, 0xd347, 0xd348, 0xd349, 0xd34a, + 0xd34b, 0xd34c, 0xd34d, 0xd34e, 0xd34f, 0xd350, 0xd351, 0xd352, + 0xd353, 0xd354, 0x0000, 0xd355, 0xd356, 0xd357, 0xd358, 0xd359, + 0xd35a, 0xd35b, 0xd35c, 0xd35d, 0xd35e, 0xd35f, 0x0000, 0x0000, + 0x0000, 0xd360, 0xd361, 0xd362, 0xd363, 0xd364, 0xd365, 0xd366, + 0xd367, 0xd368, 0xd369, 0xd36a, 0xd36b, 0xd36c, 0xd36d, 0xd36e, + 0xd36f, 0xd370, 0x0000, 0xd371, 0xd372, 0xd373, 0xd374, 0xd375, + 0xd376, 0xd377, 0xd378, 0xd379, 0xd37a, 0xd37b, 0x0000, 0x0000, + 0x0000, 0xd37c, 0xd37d, 0xd37e, 0xd37f, 0xd380, 0xd381, 0xd382, + 0xd383, 0xd384, 0xd385, 0xd386, 0xd387, 0xd388, 0xd389, 0xd38a, + 0xd38b, 0xd38c, 0x0000, 0xd38d, 0xd38e, 0xd38f, 0xd390, 0xd391, + 0xd392, 0xd393, 0xd394, 0xd395, 0xd396, 0xd397, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xd398, 0xd399, 0xd39a, 0xd39b, 0xd39c, 0xd39d, 0xd39e, + 0xd39f, 0xd3a0, 0xd3a1, 0xd3a2, 0xd3a3, 0xd3a4, 0xd3a5, 0xd3a6, + 0xd3a7, 0xd3a8, 0x0000, 0xd3a9, 0xd3aa, 0xd3ab, 0xd3ac, 0xd3ad, + 0xd3ae, 0xd3af, 0xd3b0, 0xd3b1, 0xd3b2, 0xd3b3, 0x0000, 0x0000, + 0x0000, 0xd3b4, 0xd3b5, 0xd3b6, 0xd3b7, 0xd3b8, 0xd3b9, 0xd3ba, + 0xd3bb, 0xd3bc, 0xd3bd, 0xd3be, 0xd3bf, 0xd3c0, 0xd3c1, 0xd3c2, + 0xd3c3, 0xd3c4, 0x0000, 0xd3c5, 0xd3c6, 0xd3c7, 0xd3c8, 0xd3c9, + 0xd3ca, 0xd3cb, 0xd3cc, 0xd3cd, 0xd3ce, 0xd3cf, 0x0000, 0x0000, + 0x0000, 0xd3d0, 0xd3d1, 0xd3d2, 0xd3d3, 0xd3d4, 0xd3d5, 0xd3d6, + 0xd3d7, 0xd3d8, 0xd3d9, 0xd3da, 0xd3db, 0xd3dc, 0xd3dd, 0xd3de, + 0xd3df, 0xd3e0, 0x0000, 0xd3e1, 0xd3e2, 0xd3e3, 0xd3e4, 0xd3e5, + 0xd3e6, 0xd3e7, 0xd3e8, 0xd3e9, 0xd3ea, 0xd3eb, 0x0000, 0x0000, + 0x0000, 0xd3ec, 0xd3ed, 0xd3ee, 0xd3ef, 0xd3f0, 0xd3f1, 0xd3f2, + 0xd3f3, 0xd3f4, 0xd3f5, 0xd3f6, 0xd3f7, 0xd3f8, 0xd3f9, 0xd3fa, + 0xd3fb, 0xd3fc, 0x0000, 0xd3fd, 0xd3fe, 0xd3ff, 0xd400, 0xd401, + 0xd402, 0xd403, 0xd404, 0xd405, 0xd406, 0xd407, 0x0000, 0x0000, + 0x0000, 0xd408, 0xd409, 0xd40a, 0xd40b, 0xd40c, 0xd40d, 0xd40e, + 0xd40f, 0xd410, 0xd411, 0xd412, 0xd413, 0xd414, 0xd415, 0xd416, + 0xd417, 0xd418, 0x0000, 0xd419, 0xd41a, 0xd41b, 0xd41c, 0xd41d, + 0xd41e, 0xd41f, 0xd420, 0xd421, 0xd422, 0xd423, 0x0000, 0x0000, + 0x0000, 0xd424, 0xd425, 0xd426, 0xd427, 0xd428, 0xd429, 0xd42a, + 0xd42b, 0xd42c, 0xd42d, 0xd42e, 0xd42f, 0xd430, 0xd431, 0xd432, + 0xd433, 0xd434, 0x0000, 0xd435, 0xd436, 0xd437, 0xd438, 0xd439, + 0xd43a, 0xd43b, 0xd43c, 0xd43d, 0xd43e, 0xd43f, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xd440, 0xd441, 0xd442, 0xd443, 0xd444, 0xd445, 0xd446, + 0xd447, 0xd448, 0xd449, 0xd44a, 0xd44b, 0xd44c, 0xd44d, 0xd44e, + 0xd44f, 0xd450, 0x0000, 0xd451, 0xd452, 0xd453, 0xd454, 0xd455, + 0xd456, 0xd457, 0xd458, 0xd459, 0xd45a, 0xd45b, 0x0000, 0x0000, + 0x0000, 0xd45c, 0xd45d, 0xd45e, 0xd45f, 0xd460, 0xd461, 0xd462, + 0xd463, 0xd464, 0xd465, 0xd466, 0xd467, 0xd468, 0xd469, 0xd46a, + 0xd46b, 0xd46c, 0x0000, 0xd46d, 0xd46e, 0xd46f, 0xd470, 0xd471, + 0xd472, 0xd473, 0xd474, 0xd475, 0xd476, 0xd477, 0x0000, 0x0000, + 0x0000, 0xd478, 0xd479, 0xd47a, 0xd47b, 0xd47c, 0xd47d, 0xd47e, + 0xd47f, 0xd480, 0xd481, 0xd482, 0xd483, 0xd484, 0xd485, 0xd486, + 0xd487, 0xd488, 0x0000, 0xd489, 0xd48a, 0xd48b, 0xd48c, 0xd48d, + 0xd48e, 0xd48f, 0xd490, 0xd491, 0xd492, 0xd493, 0x0000, 0x0000, + 0x0000, 0xd494, 0xd495, 0xd496, 0xd497, 0xd498, 0xd499, 0xd49a, + 0xd49b, 0xd49c, 0xd49d, 0xd49e, 0xd49f, 0xd4a0, 0xd4a1, 0xd4a2, + 0xd4a3, 0xd4a4, 0x0000, 0xd4a5, 0xd4a6, 0xd4a7, 0xd4a8, 0xd4a9, + 0xd4aa, 0xd4ab, 0xd4ac, 0xd4ad, 0xd4ae, 0xd4af, 0x0000, 0x0000, + 0x0000, 0xd4b0, 0xd4b1, 0xd4b2, 0xd4b3, 0xd4b4, 0xd4b5, 0xd4b6, + 0xd4b7, 0xd4b8, 0xd4b9, 0xd4ba, 0xd4bb, 0xd4bc, 0xd4bd, 0xd4be, + 0xd4bf, 0xd4c0, 0x0000, 0xd4c1, 0xd4c2, 0xd4c3, 0xd4c4, 0xd4c5, + 0xd4c6, 0xd4c7, 0xd4c8, 0xd4c9, 0xd4ca, 0xd4cb, 0x0000, 0x0000, + 0x0000, 0xd4cc, 0xd4cd, 0xd4ce, 0xd4cf, 0xd4d0, 0xd4d1, 0xd4d2, + 0xd4d3, 0xd4d4, 0xd4d5, 0xd4d6, 0xd4d7, 0xd4d8, 0xd4d9, 0xd4da, + 0xd4db, 0xd4dc, 0x0000, 0xd4dd, 0xd4de, 0xd4df, 0xd4e0, 0xd4e1, + 0xd4e2, 0xd4e3, 0xd4e4, 0xd4e5, 0xd4e6, 0xd4e7, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xd4e8, 0xd4e9, 0xd4ea, 0xd4eb, 0xd4ec, 0xd4ed, 0xd4ee, + 0xd4ef, 0xd4f0, 0xd4f1, 0xd4f2, 0xd4f3, 0xd4f4, 0xd4f5, 0xd4f6, + 0xd4f7, 0xd4f8, 0x0000, 0xd4f9, 0xd4fa, 0xd4fb, 0xd4fc, 0xd4fd, + 0xd4fe, 0xd4ff, 0xd500, 0xd501, 0xd502, 0xd503, 0x0000, 0x0000, + 0x0000, 0xd504, 0xd505, 0xd506, 0xd507, 0xd508, 0xd509, 0xd50a, + 0xd50b, 0xd50c, 0xd50d, 0xd50e, 0xd50f, 0xd510, 0xd511, 0xd512, + 0xd513, 0xd514, 0x0000, 0xd515, 0xd516, 0xd517, 0xd518, 0xd519, + 0xd51a, 0xd51b, 0xd51c, 0xd51d, 0xd51e, 0xd51f, 0x0000, 0x0000, + 0x0000, 0xd520, 0xd521, 0xd522, 0xd523, 0xd524, 0xd525, 0xd526, + 0xd527, 0xd528, 0xd529, 0xd52a, 0xd52b, 0xd52c, 0xd52d, 0xd52e, + 0xd52f, 0xd530, 0x0000, 0xd531, 0xd532, 0xd533, 0xd534, 0xd535, + 0xd536, 0xd537, 0xd538, 0xd539, 0xd53a, 0xd53b, 0x0000, 0x0000, + 0x0000, 0xd53c, 0xd53d, 0xd53e, 0xd53f, 0xd540, 0xd541, 0xd542, + 0xd543, 0xd544, 0xd545, 0xd546, 0xd547, 0xd548, 0xd549, 0xd54a, + 0xd54b, 0xd54c, 0x0000, 0xd54d, 0xd54e, 0xd54f, 0xd550, 0xd551, + 0xd552, 0xd553, 0xd554, 0xd555, 0xd556, 0xd557, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xd558, 0xd559, 0xd55a, 0xd55b, 0xd55c, 0xd55d, 0xd55e, + 0xd55f, 0xd560, 0xd561, 0xd562, 0xd563, 0xd564, 0xd565, 0xd566, + 0xd567, 0xd568, 0x0000, 0xd569, 0xd56a, 0xd56b, 0xd56c, 0xd56d, + 0xd56e, 0xd56f, 0xd570, 0xd571, 0xd572, 0xd573, 0x0000, 0x0000, + 0x0000, 0xd574, 0xd575, 0xd576, 0xd577, 0xd578, 0xd579, 0xd57a, + 0xd57b, 0xd57c, 0xd57d, 0xd57e, 0xd57f, 0xd580, 0xd581, 0xd582, + 0xd583, 0xd584, 0x0000, 0xd585, 0xd586, 0xd587, 0xd588, 0xd589, + 0xd58a, 0xd58b, 0xd58c, 0xd58d, 0xd58e, 0xd58f, 0x0000, 0x0000, + 0x0000, 0xd590, 0xd591, 0xd592, 0xd593, 0xd594, 0xd595, 0xd596, + 0xd597, 0xd598, 0xd599, 0xd59a, 0xd59b, 0xd59c, 0xd59d, 0xd59e, + 0xd59f, 0xd5a0, 0x0000, 0xd5a1, 0xd5a2, 0xd5a3, 0xd5a4, 0xd5a5, + 0xd5a6, 0xd5a7, 0xd5a8, 0xd5a9, 0xd5aa, 0xd5ab, 0x0000, 0x0000, + 0x0000, 0xd5ac, 0xd5ad, 0xd5ae, 0xd5af, 0xd5b0, 0xd5b1, 0xd5b2, + 0xd5b3, 0xd5b4, 0xd5b5, 0xd5b6, 0xd5b7, 0xd5b8, 0xd5b9, 0xd5ba, + 0xd5bb, 0xd5bc, 0x0000, 0xd5bd, 0xd5be, 0xd5bf, 0xd5c0, 0xd5c1, + 0xd5c2, 0xd5c3, 0xd5c4, 0xd5c5, 0xd5c6, 0xd5c7, 0x0000, 0x0000, + 0x0000, 0xd5c8, 0xd5c9, 0xd5ca, 0xd5cb, 0xd5cc, 0xd5cd, 0xd5ce, + 0xd5cf, 0xd5d0, 0xd5d1, 0xd5d2, 0xd5d3, 0xd5d4, 0xd5d5, 0xd5d6, + 0xd5d7, 0xd5d8, 0x0000, 0xd5d9, 0xd5da, 0xd5db, 0xd5dc, 0xd5dd, + 0xd5de, 0xd5df, 0xd5e0, 0xd5e1, 0xd5e2, 0xd5e3, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xd5e4, 0xd5e5, 0xd5e6, 0xd5e7, 0xd5e8, 0xd5e9, 0xd5ea, + 0xd5eb, 0xd5ec, 0xd5ed, 0xd5ee, 0xd5ef, 0xd5f0, 0xd5f1, 0xd5f2, + 0xd5f3, 0xd5f4, 0x0000, 0xd5f5, 0xd5f6, 0xd5f7, 0xd5f8, 0xd5f9, + 0xd5fa, 0xd5fb, 0xd5fc, 0xd5fd, 0xd5fe, 0xd5ff, 0x0000, 0x0000, + 0x0000, 0xd600, 0xd601, 0xd602, 0xd603, 0xd604, 0xd605, 0xd606, + 0xd607, 0xd608, 0xd609, 0xd60a, 0xd60b, 0xd60c, 0xd60d, 0xd60e, + 0xd60f, 0xd610, 0x0000, 0xd611, 0xd612, 0xd613, 0xd614, 0xd615, + 0xd616, 0xd617, 0xd618, 0xd619, 0xd61a, 0xd61b, 0x0000, 0x0000, + 0x0000, 0xd61c, 0xd61d, 0xd61e, 0xd61f, 0xd620, 0xd621, 0xd622, + 0xd623, 0xd624, 0xd625, 0xd626, 0xd627, 0xd628, 0xd629, 0xd62a, + 0xd62b, 0xd62c, 0x0000, 0xd62d, 0xd62e, 0xd62f, 0xd630, 0xd631, + 0xd632, 0xd633, 0xd634, 0xd635, 0xd636, 0xd637, 0x0000, 0x0000, + 0x0000, 0xd638, 0xd639, 0xd63a, 0xd63b, 0xd63c, 0xd63d, 0xd63e, + 0xd63f, 0xd640, 0xd641, 0xd642, 0xd643, 0xd644, 0xd645, 0xd646, + 0xd647, 0xd648, 0x0000, 0xd649, 0xd64a, 0xd64b, 0xd64c, 0xd64d, + 0xd64e, 0xd64f, 0xd650, 0xd651, 0xd652, 0xd653, 0x0000, 0x0000, + 0x0000, 0xd654, 0xd655, 0xd656, 0xd657, 0xd658, 0xd659, 0xd65a, + 0xd65b, 0xd65c, 0xd65d, 0xd65e, 0xd65f, 0xd660, 0xd661, 0xd662, + 0xd663, 0xd664, 0x0000, 0xd665, 0xd666, 0xd667, 0xd668, 0xd669, + 0xd66a, 0xd66b, 0xd66c, 0xd66d, 0xd66e, 0xd66f, 0x0000, 0x0000, + 0x0000, 0xd670, 0xd671, 0xd672, 0xd673, 0xd674, 0xd675, 0xd676, + 0xd677, 0xd678, 0xd679, 0xd67a, 0xd67b, 0xd67c, 0xd67d, 0xd67e, + 0xd67f, 0xd680, 0x0000, 0xd681, 0xd682, 0xd683, 0xd684, 0xd685, + 0xd686, 0xd687, 0xd688, 0xd689, 0xd68a, 0xd68b, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xd68c, 0xd68d, 0xd68e, 0xd68f, 0xd690, 0xd691, 0xd692, + 0xd693, 0xd694, 0xd695, 0xd696, 0xd697, 0xd698, 0xd699, 0xd69a, + 0xd69b, 0xd69c, 0x0000, 0xd69d, 0xd69e, 0xd69f, 0xd6a0, 0xd6a1, + 0xd6a2, 0xd6a3, 0xd6a4, 0xd6a5, 0xd6a6, 0xd6a7, 0x0000, 0x0000, + 0x0000, 0xd6a8, 0xd6a9, 0xd6aa, 0xd6ab, 0xd6ac, 0xd6ad, 0xd6ae, + 0xd6af, 0xd6b0, 0xd6b1, 0xd6b2, 0xd6b3, 0xd6b4, 0xd6b5, 0xd6b6, + 0xd6b7, 0xd6b8, 0x0000, 0xd6b9, 0xd6ba, 0xd6bb, 0xd6bc, 0xd6bd, + 0xd6be, 0xd6bf, 0xd6c0, 0xd6c1, 0xd6c2, 0xd6c3, 0x0000, 0x0000, + 0x0000, 0xd6c4, 0xd6c5, 0xd6c6, 0xd6c7, 0xd6c8, 0xd6c9, 0xd6ca, + 0xd6cb, 0xd6cc, 0xd6cd, 0xd6ce, 0xd6cf, 0xd6d0, 0xd6d1, 0xd6d2, + 0xd6d3, 0xd6d4, 0x0000, 0xd6d5, 0xd6d6, 0xd6d7, 0xd6d8, 0xd6d9, + 0xd6da, 0xd6db, 0xd6dc, 0xd6dd, 0xd6de, 0xd6df, 0x0000, 0x0000, + 0x0000, 0xd6e0, 0xd6e1, 0xd6e2, 0xd6e3, 0xd6e4, 0xd6e5, 0xd6e6, + 0xd6e7, 0xd6e8, 0xd6e9, 0xd6ea, 0xd6eb, 0xd6ec, 0xd6ed, 0xd6ee, + 0xd6ef, 0xd6f0, 0x0000, 0xd6f1, 0xd6f2, 0xd6f3, 0xd6f4, 0xd6f5, + 0xd6f6, 0xd6f7, 0xd6f8, 0xd6f9, 0xd6fa, 0xd6fb, 0x0000, 0x0000, + 0x0000, 0xd6fc, 0xd6fd, 0xd6fe, 0xd6ff, 0xd700, 0xd701, 0xd702, + 0xd703, 0xd704, 0xd705, 0xd706, 0xd707, 0xd708, 0xd709, 0xd70a, + 0xd70b, 0xd70c, 0x0000, 0xd70d, 0xd70e, 0xd70f, 0xd710, 0xd711, + 0xd712, 0xd713, 0xd714, 0xd715, 0xd716, 0xd717, 0x0000, 0x0000, + 0x0000, 0xd718, 0xd719, 0xd71a, 0xd71b, 0xd71c, 0xd71d, 0xd71e, + 0xd71f, 0xd720, 0xd721, 0xd722, 0xd723, 0xd724, 0xd725, 0xd726, + 0xd727, 0xd728, 0x0000, 0xd729, 0xd72a, 0xd72b, 0xd72c, 0xd72d, + 0xd72e, 0xd72f, 0xd730, 0xd731, 0xd732, 0xd733, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xd734, 0xd735, 0xd736, 0xd737, 0xd738, 0xd739, 0xd73a, + 0xd73b, 0xd73c, 0xd73d, 0xd73e, 0xd73f, 0xd740, 0xd741, 0xd742, + 0xd743, 0xd744, 0x0000, 0xd745, 0xd746, 0xd747, 0xd748, 0xd749, + 0xd74a, 0xd74b, 0xd74c, 0xd74d, 0xd74e, 0xd74f, 0x0000, 0x0000, + 0x0000, 0xd750, 0xd751, 0xd752, 0xd753, 0xd754, 0xd755, 0xd756, + 0xd757, 0xd758, 0xd759, 0xd75a, 0xd75b, 0xd75c, 0xd75d, 0xd75e, + 0xd75f, 0xd760, 0x0000, 0xd761, 0xd762, 0xd763, 0xd764, 0xd765, + 0xd766, 0xd767, 0xd768, 0xd769, 0xd76a, 0xd76b, 0x0000, 0x0000, + 0x0000, 0xd76c, 0xd76d, 0xd76e, 0xd76f, 0xd770, 0xd771, 0xd772, + 0xd773, 0xd774, 0xd775, 0xd776, 0xd777, 0xd778, 0xd779, 0xd77a, + 0xd77b, 0xd77c, 0x0000, 0xd77d, 0xd77e, 0xd77f, 0xd780, 0xd781, + 0xd782, 0xd783, 0xd784, 0xd785, 0xd786, 0xd787, 0x0000, 0x0000, + 0x0000, 0xd788, 0xd789, 0xd78a, 0xd78b, 0xd78c, 0xd78d, 0xd78e, + 0xd78f, 0xd790, 0xd791, 0xd792, 0xd793, 0xd794, 0xd795, 0xd796, + 0xd797, 0xd798, 0x0000, 0xd799, 0xd79a, 0xd79b, 0xd79c, 0xd79d, + 0xd79e, 0xd79f, 0xd7a0, 0xd7a1, 0xd7a2, 0xd7a3, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x3164, 0x3001, 0x3002, 0x30fb, 0x2025, 0x22ef, 0x00a8, + 0x3003, 0x2013, 0x2014, 0x2016, 0xff3c, 0xff5e, 0x2018, 0x2019, + 0x201c, 0x201d, 0x3014, 0x3015, 0x3008, 0x3009, 0x300a, 0x300b, + 0x300c, 0x300d, 0x300e, 0x300f, 0x3010, 0x3011, 0x00b1, 0x00d7, + 0x00f7, 0x2260, 0x2264, 0x2265, 0x221e, 0x2234, 0x00b0, 0x2032, + 0x2033, 0x2103, 0x212b, 0xffe0, 0xffe1, 0xffe5, 0x2642, 0x2640, + 0x2220, 0x22a5, 0x2312, 0x2202, 0x2207, 0x2261, 0x2252, 0x00a7, + 0x203b, 0x2606, 0x2605, 0x25cb, 0x25cf, 0x25ce, 0x25c7, 0x25c6, + 0x25a1, 0x25a0, 0x25b3, 0x25b2, 0x25bd, 0x25bc, 0x2192, 0x2190, + 0x2191, 0x2193, 0x2194, 0x3013, 0x00ab, 0x00bb, 0x221a, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x223d, 0x221d, 0x2235, 0x222b, 0x222c, 0x2208, 0x220b, + 0x2286, 0x2287, 0x2282, 0x2283, 0x222a, 0x2229, 0x2227, 0x2228, + 0xffe2, 0x21d2, 0x21d4, 0x2200, 0x2203, 0x00b4, 0x02dc, 0x02c7, + 0x02d8, 0x02dd, 0x02da, 0x02d9, 0x00b8, 0x02db, 0x00a1, 0x00bf, + 0x2236, 0x222e, 0x2211, 0x220f, 0x00a4, 0x2109, 0x2030, 0x25c1, + 0x25c0, 0x25b7, 0x25b6, 0x2664, 0x2660, 0x2661, 0x2665, 0x2667, + 0x2663, 0x25c9, 0x25c8, 0x25a3, 0x25d0, 0x25d1, 0x2592, 0x25a4, + 0x25a5, 0x25a8, 0x25a7, 0x25a6, 0x25a9, 0x2668, 0x260f, 0x260e, + 0x261c, 0x261e, 0x00b6, 0x2020, 0x2021, 0x2195, 0x2197, 0x2199, + 0x2196, 0x2198, 0x266d, 0x2669, 0x266a, 0x266c, 0x327f, 0x321c, + 0x2116, 0x33c7, 0x2122, 0x33c2, 0x33d8, 0x2121, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xff01, 0xff02, 0xff03, 0xff04, 0xff05, 0xff06, 0xff07, + 0xff08, 0xff09, 0xff0a, 0xff0b, 0xff0c, 0xff0d, 0xff0e, 0xff0f, + 0xff10, 0xff11, 0xff12, 0xff13, 0xff14, 0xff15, 0xff16, 0xff17, + 0xff18, 0xff19, 0xff1a, 0xff1b, 0xff1c, 0xff1d, 0xff1e, 0xff1f, + 0xff20, 0xff21, 0xff22, 0xff23, 0xff24, 0xff25, 0xff26, 0xff27, + 0xff28, 0xff29, 0xff2a, 0xff2b, 0xff2c, 0xff2d, 0xff2e, 0xff2f, + 0xff30, 0xff31, 0xff32, 0xff33, 0xff34, 0xff35, 0xff36, 0xff37, + 0xff38, 0xff39, 0xff3a, 0xff3b, 0xffe6, 0xff3d, 0xff3e, 0xff3f, + 0xff40, 0xff41, 0xff42, 0xff43, 0xff44, 0xff45, 0xff46, 0xff47, + 0xff48, 0xff49, 0xff4a, 0xff4b, 0xff4c, 0xff4d, 0xff4e, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xff4f, 0xff50, 0xff51, 0xff52, 0xff53, 0xff54, 0xff55, + 0xff56, 0xff57, 0xff58, 0xff59, 0xff5a, 0xff5b, 0xff5c, 0xff5d, + 0xffe3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3165, 0x3166, 0x3167, + 0x3168, 0x3169, 0x316a, 0x316b, 0x316c, 0x316d, 0x316e, 0x316f, + 0x3170, 0x3171, 0x3172, 0x3173, 0x3174, 0x3175, 0x3176, 0x3177, + 0x3178, 0x3179, 0x317a, 0x317b, 0x317c, 0x317d, 0x317e, 0x317f, + 0x3180, 0x3181, 0x3182, 0x3183, 0x3184, 0x3185, 0x3186, 0x3187, + 0x3188, 0x3189, 0x318a, 0x318b, 0x318c, 0x318d, 0x318e, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x2170, 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176, + 0x2177, 0x2178, 0x2179, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, + 0x2168, 0x2169, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, + 0x0398, 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, + 0x03a0, 0x03a1, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, + 0x03a9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, + 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x03bf, 0x03c0, 0x03c1, 0x03c3, 0x03c4, 0x03c5, 0x03c6, + 0x03c7, 0x03c8, 0x03c9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x2500, 0x2502, 0x250c, 0x2510, 0x2518, 0x2514, 0x251c, + 0x252c, 0x2524, 0x2534, 0x253c, 0x2501, 0x2503, 0x250f, 0x2513, + 0x251b, 0x2517, 0x2523, 0x2533, 0x252b, 0x253b, 0x254b, 0x2520, + 0x252f, 0x2528, 0x2537, 0x253f, 0x251d, 0x2530, 0x2525, 0x2538, + 0x2542, 0x2512, 0x2511, 0x251a, 0x2519, 0x2516, 0x2515, 0x250e, + 0x250d, 0x251e, 0x251f, 0x2521, 0x2522, 0x2526, 0x2527, 0x2529, + 0x252a, 0x252d, 0x252e, 0x2531, 0x2532, 0x2535, 0x2536, 0x2539, + 0x253a, 0x253d, 0x253e, 0x2540, 0x2541, 0x2543, 0x2544, 0x2545, + 0x2546, 0x2547, 0x2548, 0x2549, 0x254a, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x3395, 0x3396, 0x3397, 0x2113, 0x3398, 0x33c4, 0x33a3, + 0x33a4, 0x33a5, 0x33a6, 0x3399, 0x339a, 0x339b, 0x339c, 0x339d, + 0x339e, 0x339f, 0x33a0, 0x33a1, 0x33a2, 0x33ca, 0x338d, 0x338e, + 0x338f, 0x33cf, 0x3388, 0x3389, 0x33c8, 0x33a7, 0x33a8, 0x33b0, + 0x33b1, 0x33b2, 0x33b3, 0x33b4, 0x33b5, 0x33b6, 0x33b7, 0x33b8, + 0x33b9, 0x3380, 0x3381, 0x3382, 0x3383, 0x3384, 0x33ba, 0x33bb, + 0x33bc, 0x33bd, 0x33be, 0x33bf, 0x3390, 0x3391, 0x3392, 0x3393, + 0x3394, 0x2126, 0x33c0, 0x33c1, 0x338a, 0x338b, 0x338c, 0x33d6, + 0x33c5, 0x33ad, 0x33ae, 0x33af, 0x33db, 0x33a9, 0x33aa, 0x33ab, + 0x33ac, 0x33dd, 0x33d0, 0x33d3, 0x33c3, 0x33c9, 0x33dc, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x33c6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x00c6, 0x00d0, 0x00aa, 0x0126, 0x0000, 0x0132, 0x0000, + 0x013f, 0x0141, 0x00d8, 0x0152, 0x00ba, 0x00de, 0x0166, 0x014a, + 0x0000, 0x3260, 0x3261, 0x3262, 0x3263, 0x3264, 0x3265, 0x3266, + 0x3267, 0x3268, 0x3269, 0x326a, 0x326b, 0x326c, 0x326d, 0x326e, + 0x326f, 0x3270, 0x3271, 0x3272, 0x3273, 0x3274, 0x3275, 0x3276, + 0x3277, 0x3278, 0x3279, 0x327a, 0x327b, 0x24d0, 0x24d1, 0x24d2, + 0x24d3, 0x24d4, 0x24d5, 0x24d6, 0x24d7, 0x24d8, 0x24d9, 0x24da, + 0x24db, 0x24dc, 0x24dd, 0x24de, 0x24df, 0x24e0, 0x24e1, 0x24e2, + 0x24e3, 0x24e4, 0x24e5, 0x24e6, 0x24e7, 0x24e8, 0x24e9, 0x2460, + 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, 0x2468, + 0x2469, 0x246a, 0x246b, 0x246c, 0x246d, 0x246e, 0x00bd, 0x2153, + 0x2154, 0x00bc, 0x00be, 0x215b, 0x215c, 0x215d, 0x215e, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x00e6, 0x0111, 0x00f0, 0x0127, 0x0131, 0x0133, 0x0138, + 0x0140, 0x0142, 0x00f8, 0x0153, 0x00df, 0x00fe, 0x0167, 0x014b, + 0x0149, 0x3200, 0x3201, 0x3202, 0x3203, 0x3204, 0x3205, 0x3206, + 0x3207, 0x3208, 0x3209, 0x320a, 0x320b, 0x320c, 0x320d, 0x320e, + 0x320f, 0x3210, 0x3211, 0x3212, 0x3213, 0x3214, 0x3215, 0x3216, + 0x3217, 0x3218, 0x3219, 0x321a, 0x321b, 0x249c, 0x249d, 0x249e, + 0x249f, 0x24a0, 0x24a1, 0x24a2, 0x24a3, 0x24a4, 0x24a5, 0x24a6, + 0x24a7, 0x24a8, 0x24a9, 0x24aa, 0x24ab, 0x24ac, 0x24ad, 0x24ae, + 0x24af, 0x24b0, 0x24b1, 0x24b2, 0x24b3, 0x24b4, 0x24b5, 0x2474, + 0x2475, 0x2476, 0x2477, 0x2478, 0x2479, 0x247a, 0x247b, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x247c, 0x247d, 0x247e, 0x247f, 0x2480, 0x2481, 0x2482, + 0x00b9, 0x00b2, 0x00b3, 0x2074, 0x207f, 0x2081, 0x2082, 0x2083, + 0x2084, 0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046, 0x3047, + 0x3048, 0x3049, 0x304a, 0x304b, 0x304c, 0x304d, 0x304e, 0x304f, + 0x3050, 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056, 0x3057, + 0x3058, 0x3059, 0x305a, 0x305b, 0x305c, 0x305d, 0x305e, 0x305f, + 0x3060, 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067, + 0x3068, 0x3069, 0x306a, 0x306b, 0x306c, 0x306d, 0x306e, 0x306f, + 0x3070, 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, 0x3077, + 0x3078, 0x3079, 0x307a, 0x307b, 0x307c, 0x307d, 0x307e, 0x307f, + 0x3080, 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086, 0x3087, + 0x3088, 0x3089, 0x308a, 0x308b, 0x308c, 0x308d, 0x308e, 0x308f, + 0x3090, 0x3091, 0x3092, 0x3093, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x30a1, 0x30a2, 0x30a3, 0x30a4, 0x30a5, 0x30a6, 0x30a7, + 0x30a8, 0x30a9, 0x30aa, 0x30ab, 0x30ac, 0x30ad, 0x30ae, 0x30af, + 0x30b0, 0x30b1, 0x30b2, 0x30b3, 0x30b4, 0x30b5, 0x30b6, 0x30b7, + 0x30b8, 0x30b9, 0x30ba, 0x30bb, 0x30bc, 0x30bd, 0x30be, 0x30bf, + 0x30c0, 0x30c1, 0x30c2, 0x30c3, 0x30c4, 0x30c5, 0x30c6, 0x30c7, + 0x30c8, 0x30c9, 0x30ca, 0x30cb, 0x30cc, 0x30cd, 0x30ce, 0x30cf, + 0x30d0, 0x30d1, 0x30d2, 0x30d3, 0x30d4, 0x30d5, 0x30d6, 0x30d7, + 0x30d8, 0x30d9, 0x30da, 0x30db, 0x30dc, 0x30dd, 0x30de, 0x30df, + 0x30e0, 0x30e1, 0x30e2, 0x30e3, 0x30e4, 0x30e5, 0x30e6, 0x30e7, + 0x30e8, 0x30e9, 0x30ea, 0x30eb, 0x30ec, 0x30ed, 0x30ee, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x30ef, 0x30f0, 0x30f1, 0x30f2, 0x30f3, 0x30f4, 0x30f5, + 0x30f6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0401, + 0x0416, 0x0417, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, + 0x041e, 0x041f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, + 0x0426, 0x0427, 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, + 0x042e, 0x042f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0451, + 0x0436, 0x0437, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, + 0x043e, 0x043f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, + 0x0446, 0x0447, 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, + 0x044e, 0x044f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x4f3d, 0x4f73, 0x5047, 0x50f9, 0x52a0, 0x53ef, 0x5475, + 0x54e5, 0x5609, 0x5ac1, 0x5bb6, 0x6687, 0x67b6, 0x67b7, 0x67ef, + 0x6b4c, 0x73c2, 0x75c2, 0x7a3c, 0x82db, 0x8304, 0x8857, 0x8888, + 0x8a36, 0x8cc8, 0x8dcf, 0x8efb, 0x8fe6, 0x99d5, 0x523b, 0x5374, + 0x5404, 0x606a, 0x6164, 0x6bbc, 0x73cf, 0x811a, 0x89ba, 0x89d2, + 0x95a3, 0x4f83, 0x520a, 0x58be, 0x5978, 0x59e6, 0x5e72, 0x5e79, + 0x61c7, 0x63c0, 0x6746, 0x67ec, 0x687f, 0x6f97, 0x764e, 0x770b, + 0x78f5, 0x7a08, 0x7aff, 0x7c21, 0x809d, 0x826e, 0x8271, 0x8aeb, + 0x9593, 0x4e6b, 0x559d, 0x66f7, 0x6e34, 0x78a3, 0x7aed, 0x845b, + 0x8910, 0x874e, 0x97a8, 0x52d8, 0x574e, 0x582a, 0x5d4c, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x611f, 0x61be, 0x6221, 0x6562, 0x67d1, 0x6a44, 0x6e1b, + 0x7518, 0x75b3, 0x76e3, 0x77b0, 0x7d3a, 0x90af, 0x9451, 0x9452, + 0x9f95, 0x5323, 0x5cac, 0x7532, 0x80db, 0x9240, 0x9598, 0x525b, + 0x5808, 0x59dc, 0x5ca1, 0x5d17, 0x5eb7, 0x5f3a, 0x5f4a, 0x6177, + 0x6c5f, 0x757a, 0x7586, 0x7ce0, 0x7d73, 0x7db1, 0x7f8c, 0x8154, + 0x8221, 0x8591, 0x8941, 0x8b1b, 0x92fc, 0x964d, 0x9c47, 0x4ecb, + 0x4ef7, 0x500b, 0x51f1, 0x584f, 0x6137, 0x613e, 0x6168, 0x6539, + 0x69ea, 0x6f11, 0x75a5, 0x7686, 0x76d6, 0x7b87, 0x82a5, 0x84cb, + 0x8c48, 0x93a7, 0x958b, 0x5580, 0x5ba2, 0x5751, 0x66f4, 0x7cb3, + 0x7fb9, 0x91b5, 0x5028, 0x53bb, 0x5c45, 0x5de8, 0x62d2, 0x636e, + 0x64da, 0x64e7, 0x6e20, 0x70ac, 0x795b, 0x8ddd, 0x8e1e, 0x8eca, + 0x907d, 0x9245, 0x92f8, 0x4e7e, 0x4ef6, 0x5065, 0x5dfe, 0x5efa, + 0x6106, 0x6957, 0x8171, 0x8654, 0x8e47, 0x9375, 0x9a2b, 0x4e5e, + 0x5091, 0x6770, 0x6840, 0x5109, 0x528d, 0x5292, 0x6aa2, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x77bc, 0x9210, 0x9ed4, 0x52ab, 0x602f, 0x8ff2, 0x5048, + 0x61a9, 0x63ed, 0x64ca, 0x683c, 0x6a84, 0x6fc0, 0x8188, 0x89a1, + 0x9694, 0x5805, 0x727d, 0x72ac, 0x7504, 0x7d79, 0x7e6d, 0x80a9, + 0x898b, 0x8b74, 0x9063, 0x9d51, 0x6289, 0x6c7a, 0x6f54, 0x7d50, + 0x7f3a, 0x8a23, 0x517c, 0x614a, 0x7b9d, 0x8b19, 0x9257, 0x938c, + 0x4eac, 0x4fd3, 0x501e, 0x50be, 0x5106, 0x52c1, 0x52cd, 0x537f, + 0x5770, 0x5883, 0x5e9a, 0x5f91, 0x6176, 0x61ac, 0x64ce, 0x656c, + 0x666f, 0x66bb, 0x0000, 0x6897, 0x6d87, 0x7085, 0x70f1, 0x749f, + 0x74a5, 0x74ca, 0x75d9, 0x786c, 0x78ec, 0x7adf, 0x7af6, 0x7d45, + 0x7d93, 0x8015, 0x803f, 0x811b, 0x8396, 0x8b66, 0x8f15, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x9015, 0x93e1, 0x9803, 0x9838, 0x9a5a, 0x9be8, 0x4fc2, + 0x5553, 0x583a, 0x5951, 0x5b63, 0x5c46, 0x60b8, 0x6212, 0x6842, + 0x68b0, 0x68e8, 0x6eaa, 0x754c, 0x7678, 0x78ce, 0x7a3d, 0x7cfb, + 0x7e6b, 0x7e7c, 0x8a08, 0x8aa1, 0x8c3f, 0x968e, 0x9dc4, 0x53e4, + 0x53e9, 0x544a, 0x5471, 0x56fa, 0x59d1, 0x5b64, 0x5c3b, 0x5eab, + 0x62f7, 0x6537, 0x6545, 0x6572, 0x66a0, 0x67af, 0x69c1, 0x6cbd, + 0x75fc, 0x7690, 0x777e, 0x7a3f, 0x7f94, 0x8003, 0x80a1, 0x818f, + 0x82e6, 0x82fd, 0x83f0, 0x85c1, 0x8831, 0x88b4, 0x8aa5, 0x0000, + 0x8f9c, 0x932e, 0x96c7, 0x9867, 0x9ad8, 0x9f13, 0x54ed, 0x659b, + 0x66f2, 0x688f, 0x7a40, 0x8c37, 0x9d60, 0x56f0, 0x5764, 0x5d11, + 0x6606, 0x68b1, 0x68cd, 0x6efe, 0x7428, 0x889e, 0x9be4, 0x6c68, + 0x6ed1, 0x9aa8, 0x4f9b, 0x516c, 0x5171, 0x529f, 0x5b54, 0x5de5, + 0x6050, 0x606d, 0x62f1, 0x63a7, 0x653b, 0x73d9, 0x7a7a, 0x86a3, + 0x8ca2, 0x978f, 0x4e32, 0x5be1, 0x6208, 0x679c, 0x74dc, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x79d1, 0x83d3, 0x8a87, 0x8ab2, 0x8de8, 0x904e, 0x934b, + 0x9846, 0x5ed3, 0x69e8, 0x85ff, 0x90ed, 0x0000, 0x51a0, 0x5b98, + 0x5bec, 0x6163, 0x68fa, 0x6b3e, 0x704c, 0x742f, 0x74d8, 0x7ba1, + 0x7f50, 0x83c5, 0x89c0, 0x8cab, 0x95dc, 0x9928, 0x522e, 0x605d, + 0x62ec, 0x9002, 0x4f8a, 0x5149, 0x5321, 0x58d9, 0x5ee3, 0x66e0, + 0x6d38, 0x709a, 0x72c2, 0x73d6, 0x7b50, 0x80f1, 0x945b, 0x5366, + 0x639b, 0x7f6b, 0x4e56, 0x5080, 0x584a, 0x58de, 0x602a, 0x6127, + 0x62d0, 0x69d0, 0x9b41, 0x5b8f, 0x7d18, 0x80b1, 0x8f5f, 0x4ea4, + 0x50d1, 0x54ac, 0x55ac, 0x5b0c, 0x5da0, 0x5de7, 0x652a, 0x654e, + 0x6821, 0x6a4b, 0x72e1, 0x768e, 0x77ef, 0x7d5e, 0x7ff9, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x81a0, 0x854e, 0x86df, 0x8f03, 0x8f4e, 0x90ca, 0x9903, + 0x9a55, 0x9bab, 0x4e18, 0x4e45, 0x4e5d, 0x4ec7, 0x4ff1, 0x5177, + 0x52fe, 0x5340, 0x53e3, 0x53e5, 0x548e, 0x5614, 0x5775, 0x57a2, + 0x5bc7, 0x5d87, 0x5ed0, 0x61fc, 0x62d8, 0x6551, 0x67b8, 0x67e9, + 0x69cb, 0x6b50, 0x6bc6, 0x6bec, 0x6c42, 0x6e9d, 0x7078, 0x72d7, + 0x7396, 0x7403, 0x77bf, 0x77e9, 0x7a76, 0x7d7f, 0x8009, 0x81fc, + 0x8205, 0x820a, 0x82df, 0x8862, 0x8b33, 0x8cfc, 0x8ec0, 0x9011, + 0x90b1, 0x9264, 0x92b6, 0x99d2, 0x9a45, 0x9ce9, 0x9dd7, 0x9f9c, + 0x570b, 0x5c40, 0x83ca, 0x97a0, 0x97ab, 0x9eb4, 0x541b, 0x7a98, + 0x7fa4, 0x88d9, 0x8ecd, 0x90e1, 0x5800, 0x5c48, 0x6398, 0x7a9f, + 0x5bae, 0x5f13, 0x7a79, 0x7aae, 0x828e, 0x8eac, 0x5026, 0x5238, + 0x52f8, 0x5377, 0x5708, 0x62f3, 0x6372, 0x6b0a, 0x6dc3, 0x7737, + 0x53a5, 0x7357, 0x8568, 0x8e76, 0x95d5, 0x673a, 0x6ac3, 0x6f70, + 0x8a6d, 0x8ecc, 0x994b, 0x0000, 0x6677, 0x6b78, 0x8cb4, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x9b3c, 0x0000, 0x53eb, 0x572d, 0x594e, 0x63c6, 0x69fb, + 0x73ea, 0x7845, 0x7aba, 0x7ac5, 0x7cfe, 0x8475, 0x898f, 0x8d73, + 0x9035, 0x95a8, 0x52fb, 0x5747, 0x7547, 0x7b60, 0x83cc, 0x921e, + 0x0000, 0x6a58, 0x514b, 0x524b, 0x5287, 0x621f, 0x68d8, 0x6975, + 0x9699, 0x50c5, 0x52a4, 0x52e4, 0x61c3, 0x65a4, 0x6839, 0x69ff, + 0x747e, 0x7b4b, 0x82b9, 0x83eb, 0x89b2, 0x8b39, 0x8fd1, 0x9949, + 0x0000, 0x4eca, 0x5997, 0x64d2, 0x6611, 0x6a8e, 0x7434, 0x7981, + 0x79bd, 0x82a9, 0x887e, 0x887f, 0x895f, 0x91d1, 0x9326, 0x4f0b, + 0x53ca, 0x6025, 0x6271, 0x6c72, 0x7d1a, 0x7d66, 0x4e98, 0x5162, + 0x77dc, 0x80af, 0x4f01, 0x4f0e, 0x5176, 0x5180, 0x55dc, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5668, 0x573b, 0x57fa, 0x57fc, 0x5914, 0x5947, 0x5993, + 0x5bc4, 0x5c90, 0x5d0e, 0x5df1, 0x5e7e, 0x5fcc, 0x6280, 0x65d7, + 0x65e3, 0x671e, 0x671f, 0x675e, 0x68cb, 0x68c4, 0x6a5f, 0x6b3a, + 0x6c23, 0x6c7d, 0x6c82, 0x6dc7, 0x7398, 0x7426, 0x742a, 0x7482, + 0x74a3, 0x7578, 0x757f, 0x7881, 0x78ef, 0x7941, 0x7947, 0x7948, + 0x797a, 0x7b95, 0x7d00, 0x7dba, 0x7f88, 0x8006, 0x802d, 0x808c, + 0x8a18, 0x8b4f, 0x0000, 0x8d77, 0x9321, 0x9324, 0x98e2, 0x9951, + 0x9a0e, 0x9a0f, 0x9a65, 0x9e92, 0x7dca, 0x4f76, 0x5409, 0x62ee, + 0x6854, 0x0000, 0x55ab, 0x513a, 0x5587, 0x5948, 0x5a1c, 0x61e6, + 0x61f6, 0x62cf, 0x62ff, 0x7669, 0x7f85, 0x863f, 0x87ba, 0x88f8, + 0x908f, 0x90a3, 0x6a02, 0x6d1b, 0x70d9, 0x73de, 0x843d, 0x8afe, + 0x916a, 0x99f1, 0x4e82, 0x5375, 0x6696, 0x6b04, 0x7156, 0x721b, + 0x862d, 0x96e3, 0x9e1e, 0x634f, 0x637a, 0x5357, 0x5d50, 0x678f, + 0x6960, 0x6e73, 0x6feb, 0x7537, 0x85cd, 0x8964, 0x62c9, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7d0d, 0x81d8, 0x881f, 0x8872, 0x56ca, 0x5a18, 0x5eca, + 0x6717, 0x6d6a, 0x72fc, 0x90de, 0x4e43, 0x4f86, 0x5167, 0x0000, + 0x67f0, 0x8010, 0x51b7, 0x5973, 0x5e74, 0x649a, 0x79ca, 0x5ff5, + 0x606c, 0x62c8, 0x637b, 0x5be7, 0x5bd7, 0x52aa, 0x52de, 0x5974, + 0x5f29, 0x6012, 0x64c4, 0x6ad3, 0x7210, 0x7459, 0x76e7, 0x8001, + 0x8606, 0x865c, 0x8def, 0x9732, 0x99d1, 0x9b6f, 0x9dfa, 0x788c, + 0x797f, 0x7da0, 0x83c9, 0x9304, 0x9e7f, 0x8ad6, 0x58df, 0x5f04, + 0x6fc3, 0x7c60, 0x807e, 0x81bf, 0x8fb2, 0x60f1, 0x7262, 0x78ca, + 0x8166, 0x8cc2, 0x96f7, 0x5c3f, 0x58d8, 0x5c62, 0x6a13, 0x6dda, + 0x6f0f, 0x7d2f, 0x7e37, 0x964b, 0x5ae9, 0x8a25, 0x677b, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7d10, 0x52d2, 0x808b, 0x51dc, 0x51cc, 0x7a1c, 0x7dbe, + 0x80fd, 0x83f1, 0x9675, 0x5c3c, 0x6ce5, 0x533f, 0x6eba, 0x591a, + 0x8336, 0x4e39, 0x4eb6, 0x4f46, 0x55ae, 0x5718, 0x58c7, 0x5f56, + 0x65b7, 0x65e6, 0x6a80, 0x6bb5, 0x6e4d, 0x77ed, 0x7aef, 0x7c1e, + 0x7dde, 0x86cb, 0x8892, 0x9132, 0x935b, 0x64bb, 0x6fbe, 0x737a, + 0x75b8, 0x9054, 0x5556, 0x574d, 0x61ba, 0x64d4, 0x66c7, 0x6de1, + 0x6e5b, 0x6f6d, 0x6fb9, 0x75f0, 0x8043, 0x81bd, 0x8541, 0x8983, + 0x8ac7, 0x8b5a, 0x931f, 0x6c93, 0x7553, 0x7b54, 0x8e0f, 0x905d, + 0x5510, 0x5802, 0x5858, 0x5e62, 0x6207, 0x649e, 0x68e0, 0x7576, + 0x7cd6, 0x87b3, 0x9ee8, 0x4ee3, 0x5788, 0x576e, 0x5927, 0x5c0d, + 0x5cb1, 0x5e36, 0x5f85, 0x6234, 0x64e1, 0x73b3, 0x81fa, 0x888b, + 0x8cb8, 0x968a, 0x9edb, 0x5b85, 0x5fb7, 0x60b3, 0x5012, 0x5200, + 0x5230, 0x5716, 0x5835, 0x5857, 0x5c0e, 0x5c60, 0x5cf6, 0x5d8b, + 0x5ea6, 0x5f92, 0x60bc, 0x6311, 0x6389, 0x6417, 0x6843, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x68f9, 0x6ac2, 0x6dd8, 0x6e21, 0x6ed4, 0x6fe4, 0x71fe, + 0x76dc, 0x7779, 0x79b1, 0x7a3b, 0x8404, 0x89a9, 0x8ced, 0x8df3, + 0x8e48, 0x9003, 0x9014, 0x9053, 0x90fd, 0x934d, 0x9676, 0x97dc, + 0x6bd2, 0x7006, 0x7258, 0x72a2, 0x7368, 0x7763, 0x79bf, 0x7be4, + 0x7e9b, 0x8b80, 0x58a9, 0x60c7, 0x6566, 0x65fd, 0x66be, 0x6c8c, + 0x711e, 0x71c9, 0x8c5a, 0x9813, 0x4e6d, 0x7a81, 0x4edd, 0x51ac, + 0x51cd, 0x52d5, 0x540c, 0x61a7, 0x6771, 0x6850, 0x68df, 0x6d1e, + 0x6f7c, 0x75bc, 0x77b3, 0x7ae5, 0x80f4, 0x8463, 0x9285, 0x515c, + 0x6597, 0x675c, 0x6793, 0x75d8, 0x7ac7, 0x8373, 0x0000, 0x8c46, + 0x9017, 0x982d, 0x5c6f, 0x81c0, 0x829a, 0x9041, 0x906f, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x920d, 0x5f97, 0x5d9d, 0x6a59, 0x71c8, 0x767b, 0x7b49, + 0x85e4, 0x8b04, 0x9127, 0x9a30, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7d61, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6b12, 0x703e, 0x0000, 0x0000, 0x0000, 0x524c, + 0x8fa3, 0x0000, 0x64e5, 0x652c, 0x6b16, 0x0000, 0x7c43, 0x7e9c, + 0x0000, 0x0000, 0x89bd, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x7405, 0x746f, 0x8782, 0x0000, 0x0000, 0x5d0d, + 0x5fa0, 0x840a, 0x0000, 0x63a0, 0x7565, 0x4eae, 0x5006, 0x5169, + 0x51c9, 0x6881, 0x6a11, 0x7cae, 0x7cb1, 0x7ce7, 0x826f, 0x8ad2, + 0x8f1b, 0x91cf, 0x4fb6, 0x5137, 0x52f5, 0x5442, 0x5eec, 0x616e, + 0x623e, 0x65c5, 0x6ada, 0x6ffe, 0x792a, 0x85dc, 0x8823, 0x95ad, + 0x9a62, 0x9a6a, 0x9e97, 0x9ece, 0x529b, 0x66c6, 0x6b77, 0x701d, + 0x792b, 0x8f62, 0x9742, 0x6190, 0x6200, 0x6523, 0x6f23, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7149, 0x7489, 0x7df4, 0x806f, 0x84ee, 0x8f26, 0x9023, + 0x934a, 0x51bd, 0x5217, 0x52a3, 0x6d0c, 0x70c8, 0x88c2, 0x5ec9, + 0x6582, 0x6bae, 0x6fc2, 0x7c3e, 0x7375, 0x4ee4, 0x4f36, 0x56f9, + 0x0000, 0x5cba, 0x5dba, 0x601c, 0x73b2, 0x7b2d, 0x7f9a, 0x7fce, + 0x8046, 0x901e, 0x9234, 0x96f6, 0x9748, 0x9818, 0x9f61, 0x4f8b, + 0x6fa7, 0x79ae, 0x91b4, 0x96b7, 0x0000, 0x0000, 0x6488, 0x0000, + 0x0000, 0x6f5e, 0x7018, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8f05, 0x0000, 0x0000, 0x0000, 0x9e75, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x9e93, 0x0000, 0x0000, 0x0000, + 0x6727, 0x7027, 0x74cf, 0x0000, 0x0000, 0x5121, 0x7028, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x8cda, 0x8cf4, 0x0000, 0x4e86, + 0x50da, 0x5bee, 0x5ed6, 0x6599, 0x71ce, 0x7642, 0x77ad, 0x804a, + 0x84fc, 0x907c, 0x9b27, 0x9f8d, 0x0000, 0x5a41, 0x0000, 0x0000, + 0x0000, 0x0000, 0x763b, 0x0000, 0x0000, 0x851e, 0x8938, 0x93e4, + 0x0000, 0x5289, 0x65d2, 0x67f3, 0x69b4, 0x6d41, 0x6e9c, 0x700f, + 0x7409, 0x7460, 0x7559, 0x7624, 0x786b, 0x8b2c, 0x985e, 0x516d, + 0x622e, 0x9678, 0x4f96, 0x502b, 0x5d19, 0x6dea, 0x7db8, 0x8f2a, + 0x5f8b, 0x6144, 0x6817, 0x7387, 0x9686, 0x0000, 0x0000, 0x0000, + 0x0000, 0x695e, 0x0000, 0x0000, 0x0000, 0x0000, 0x4fda, 0x5229, + 0x5398, 0x540f, 0x550e, 0x5c65, 0x60a7, 0x674e, 0x68a8, 0x6d6c, + 0x7281, 0x72f8, 0x7406, 0x7483, 0x7570, 0x75e2, 0x7c6c, 0x7f79, + 0x7fb8, 0x8389, 0x88cf, 0x88e1, 0x91cc, 0x91d0, 0x96e2, 0x9bc9, + 0x541d, 0x6f7e, 0x71d0, 0x7498, 0x85fa, 0x8eaa, 0x96a3, 0x9c57, + 0x9e9f, 0x6797, 0x6dcb, 0x7433, 0x81e8, 0x9716, 0x782c, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7acb, 0x7b20, 0x7c92, 0x6469, 0x746a, 0x75f2, 0x78bc, + 0x78e8, 0x99ac, 0x9b54, 0x9ebb, 0x5bde, 0x5e55, 0x6f20, 0x819c, + 0x83ab, 0x9088, 0x4e07, 0x534d, 0x5a29, 0x5dd2, 0x5f4e, 0x6162, + 0x633d, 0x6669, 0x66fc, 0x6eff, 0x6f2b, 0x7063, 0x779e, 0x842c, + 0x8513, 0x883b, 0x8f13, 0x9945, 0x9c3b, 0x551c, 0x62b9, 0x672b, + 0x6cab, 0x8309, 0x896a, 0x977a, 0x4ea1, 0x5984, 0x5fd8, 0x5fd9, + 0x671b, 0x7db2, 0x7f54, 0x8292, 0x832b, 0x83bd, 0x8f1e, 0x9099, + 0x57cb, 0x59b9, 0x5a92, 0x5bd0, 0x6627, 0x679a, 0x6885, 0x6bcf, + 0x7164, 0x7f75, 0x8cb7, 0x8ce3, 0x9081, 0x9b45, 0x8108, 0x8c8a, + 0x964c, 0x9a40, 0x9ea5, 0x5b5f, 0x6c13, 0x731b, 0x76f2, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x76df, 0x840c, 0x51aa, 0x8993, 0x514d, 0x5195, 0x52c9, + 0x68c9, 0x6c94, 0x7704, 0x7720, 0x7dbf, 0x7dec, 0x9762, 0x9eb5, + 0x6ec5, 0x8511, 0x51a5, 0x540d, 0x547d, 0x660e, 0x669d, 0x6927, + 0x6e9f, 0x76bf, 0x7791, 0x8317, 0x84c2, 0x879f, 0x9169, 0x9298, + 0x9cf4, 0x8882, 0x4fae, 0x5192, 0x52df, 0x59c6, 0x5e3d, 0x6155, + 0x6478, 0x6479, 0x66ae, 0x67d0, 0x6a21, 0x6bcd, 0x6bdb, 0x725f, + 0x7261, 0x7441, 0x7738, 0x77db, 0x8017, 0x82bc, 0x8305, 0x8b00, + 0x8b28, 0x8c8c, 0x6728, 0x6c90, 0x7267, 0x76ee, 0x7766, 0x7a46, + 0x9da9, 0x6b7f, 0x6c92, 0x5922, 0x6726, 0x8499, 0x536f, 0x5893, + 0x5999, 0x5edf, 0x63cf, 0x6634, 0x6773, 0x6e3a, 0x732b, 0x7ad7, + 0x82d7, 0x9328, 0x52d9, 0x5deb, 0x61ae, 0x61cb, 0x620a, 0x62c7, + 0x64ab, 0x65e0, 0x6959, 0x6b66, 0x6bcb, 0x7121, 0x73f7, 0x755d, + 0x7e46, 0x821e, 0x8302, 0x856a, 0x8aa3, 0x8cbf, 0x9727, 0x9d61, + 0x58a8, 0x9ed8, 0x5011, 0x520e, 0x543b, 0x554f, 0x6587, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6c76, 0x7d0a, 0x7d0b, 0x805e, 0x868a, 0x9580, 0x96ef, + 0x52ff, 0x6c95, 0x7269, 0x5473, 0x5a9a, 0x5c3e, 0x5d4b, 0x5f4c, + 0x5fae, 0x672a, 0x68b6, 0x6963, 0x6e3c, 0x6e44, 0x7709, 0x7c73, + 0x7f8e, 0x8587, 0x8b0e, 0x8ff7, 0x9761, 0x9ef4, 0x5cb7, 0x60b6, + 0x610d, 0x61ab, 0x654f, 0x65fb, 0x65fc, 0x6c11, 0x6cef, 0x739f, + 0x73c9, 0x7de1, 0x9594, 0x5bc6, 0x871c, 0x8b10, 0x525d, 0x535a, + 0x62cd, 0x640f, 0x64b2, 0x6734, 0x6a38, 0x6cca, 0x73c0, 0x749e, + 0x7b94, 0x7c95, 0x7e1b, 0x818a, 0x8236, 0x8584, 0x8feb, 0x96f9, + 0x99c1, 0x4f34, 0x534a, 0x53cd, 0x53db, 0x62cc, 0x642c, 0x6500, + 0x6591, 0x69c3, 0x6cee, 0x6f58, 0x73ed, 0x7554, 0x7622, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x76e4, 0x76fc, 0x78d0, 0x78fb, 0x792c, 0x7d46, 0x822c, + 0x87e0, 0x8fd4, 0x9812, 0x98ef, 0x52c3, 0x62d4, 0x64a5, 0x6e24, + 0x6f51, 0x767c, 0x8dcb, 0x91b1, 0x9262, 0x9aee, 0x9b43, 0x5023, + 0x508d, 0x574a, 0x59a8, 0x5c28, 0x5e47, 0x5f77, 0x623f, 0x653e, + 0x65b9, 0x65c1, 0x6609, 0x678b, 0x699c, 0x6ec2, 0x78c5, 0x7d21, + 0x80aa, 0x8180, 0x822b, 0x82b3, 0x84a1, 0x868c, 0x8a2a, 0x8b17, + 0x90a6, 0x9632, 0x9f90, 0x500d, 0x4ff3, 0x5317, 0x57f9, 0x5f98, + 0x62dc, 0x6392, 0x676f, 0x6e43, 0x7119, 0x76c3, 0x80cc, 0x80da, + 0x88f4, 0x88f5, 0x8919, 0x8ce0, 0x8f29, 0x914d, 0x966a, 0x4f2f, + 0x4f70, 0x5e1b, 0x67cf, 0x6822, 0x767d, 0x767e, 0x9b44, 0x5e61, + 0x6a0a, 0x7169, 0x71d4, 0x756a, 0x0000, 0x7e41, 0x8543, 0x85e9, + 0x98dc, 0x4f10, 0x7b4f, 0x7f70, 0x95a5, 0x51e1, 0x5e06, 0x68b5, + 0x6c3e, 0x6c4e, 0x6cdb, 0x72af, 0x7bc4, 0x8303, 0x6cd5, 0x743a, + 0x50fb, 0x5288, 0x58c1, 0x64d8, 0x6a97, 0x74a7, 0x7656, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x78a7, 0x8617, 0x95e2, 0x9739, 0x4fbf, 0x535e, 0x5f01, + 0x8b8a, 0x8fa8, 0x8faf, 0x908a, 0x5225, 0x77a5, 0x9c49, 0x9f08, + 0x4e19, 0x5002, 0x5175, 0x5c5b, 0x5e77, 0x661e, 0x663a, 0x67c4, + 0x68c5, 0x70b3, 0x7501, 0x75c5, 0x79c9, 0x7add, 0x8f27, 0x9920, + 0x9a08, 0x4fdd, 0x5821, 0x5831, 0x5bf6, 0x666e, 0x6b65, 0x6d11, + 0x6e7a, 0x6f7d, 0x73e4, 0x752b, 0x83e9, 0x88dc, 0x8913, 0x8b5c, + 0x8f14, 0x4f0f, 0x50d5, 0x5310, 0x535c, 0x5b93, 0x5fa9, 0x670d, + 0x798f, 0x8179, 0x832f, 0x8514, 0x8907, 0x8986, 0x8f39, 0x8f3b, + 0x99a5, 0x9c12, 0x672c, 0x4e76, 0x4ff8, 0x5949, 0x5c01, 0x5cef, + 0x5cf0, 0x6367, 0x68d2, 0x70fd, 0x71a2, 0x742b, 0x7e2b, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x84ec, 0x8702, 0x9022, 0x92d2, 0x9cf3, 0x4e0d, 0x4ed8, + 0x4fef, 0x5085, 0x5256, 0x526f, 0x5426, 0x5490, 0x57e0, 0x592b, + 0x5a66, 0x5b5a, 0x5b75, 0x5bcc, 0x5e9c, 0x0000, 0x6276, 0x6577, + 0x65a7, 0x6d6e, 0x6ea5, 0x7236, 0x7b26, 0x7c3f, 0x7f36, 0x8150, + 0x8151, 0x819a, 0x8240, 0x8299, 0x83a9, 0x8a03, 0x8ca0, 0x8ce6, + 0x8cfb, 0x8d74, 0x8dba, 0x90e8, 0x91dc, 0x961c, 0x9644, 0x99d9, + 0x9ce7, 0x0000, 0x5206, 0x5429, 0x5674, 0x58b3, 0x5954, 0x596e, + 0x5fff, 0x61a4, 0x626e, 0x6610, 0x6c7e, 0x711a, 0x76c6, 0x7c89, + 0x7cde, 0x7d1b, 0x82ac, 0x8cc1, 0x96f0, 0x0000, 0x4f5b, 0x5f17, + 0x5f7f, 0x62c2, 0x5d29, 0x670b, 0x68da, 0x787c, 0x7e43, 0x9d6c, + 0x4e15, 0x5099, 0x5315, 0x532a, 0x5351, 0x5983, 0x5a62, 0x5e87, + 0x60b2, 0x618a, 0x6249, 0x6279, 0x6590, 0x6787, 0x69a7, 0x6bd4, + 0x6bd6, 0x6bd7, 0x6bd8, 0x6cb8, 0x6ccc, 0x7435, 0x75fa, 0x7812, + 0x7891, 0x79d5, 0x79d8, 0x7c83, 0x7dcb, 0x7fe1, 0x80a5, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x813e, 0x81c2, 0x83f2, 0x871a, 0x88e8, 0x8ab9, 0x8b6c, + 0x8cbb, 0x9119, 0x975e, 0x98db, 0x9f3b, 0x56ac, 0x5b2a, 0x5f6c, + 0x658c, 0x6ab3, 0x6baf, 0x6d5c, 0x6ff1, 0x7015, 0x725d, 0x73ad, + 0x8ca7, 0x8cd3, 0x983b, 0x6191, 0x6c37, 0x8058, 0x9a01, 0x4e4d, + 0x4e8b, 0x4e9b, 0x4ed5, 0x4f3a, 0x4f3c, 0x4f7f, 0x4fdf, 0x50ff, + 0x53f2, 0x53f8, 0x5506, 0x55e3, 0x56db, 0x58eb, 0x5962, 0x5a11, + 0x5beb, 0x5bfa, 0x5c04, 0x5df3, 0x5e2b, 0x5f99, 0x601d, 0x6368, + 0x659c, 0x65af, 0x67f6, 0x67fb, 0x68ad, 0x6b7b, 0x6c99, 0x6cd7, + 0x6e23, 0x7009, 0x7345, 0x7802, 0x793e, 0x7940, 0x7960, 0x79c1, + 0x7be9, 0x7d17, 0x7d72, 0x8086, 0x820d, 0x838e, 0x84d1, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x86c7, 0x88df, 0x8a50, 0x8a5e, 0x8b1d, 0x8cdc, 0x8d66, + 0x8fad, 0x90aa, 0x98fc, 0x99df, 0x9e9d, 0x524a, 0x6578, 0x6714, + 0x7d22, 0x5098, 0x522a, 0x5c71, 0x6563, 0x6c55, 0x73ca, 0x7523, + 0x759d, 0x7b97, 0x849c, 0x9178, 0x9730, 0x4e77, 0x6492, 0x6bba, + 0x715e, 0x85a9, 0x4e09, 0x53c3, 0x6749, 0x68ee, 0x6e17, 0x829f, + 0x8518, 0x886b, 0x63f7, 0x6f81, 0x9212, 0x98af, 0x4e0a, 0x50b7, + 0x50cf, 0x511f, 0x5546, 0x55aa, 0x5617, 0x5b40, 0x5c19, 0x5ce0, + 0x5e38, 0x5e8a, 0x5ea0, 0x5ec2, 0x60f3, 0x6851, 0x6a61, 0x6e58, + 0x723d, 0x7240, 0x72c0, 0x76f8, 0x7965, 0x7bb1, 0x7fd4, 0x88f3, + 0x89f4, 0x8a73, 0x8c61, 0x8cde, 0x971c, 0x585e, 0x74bd, 0x8cfd, + 0x55c7, 0x0000, 0x7a61, 0x0000, 0x8272, 0x7272, 0x751f, 0x7525, + 0x7701, 0x7b19, 0x5885, 0x58fb, 0x5dbc, 0x5e8f, 0x5eb6, 0x5f90, + 0x6055, 0x6292, 0x637f, 0x654d, 0x6691, 0x66d9, 0x66f8, 0x6816, + 0x68f2, 0x7280, 0x745e, 0x7b6e, 0x7d6e, 0x7dd6, 0x7f72, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x80e5, 0x8212, 0x85af, 0x897f, 0x8a93, 0x901d, 0x92e4, + 0x9ecd, 0x9f20, 0x5915, 0x596d, 0x5e2d, 0x60dc, 0x6614, 0x6673, + 0x6790, 0x6c50, 0x6dc5, 0x6f5f, 0x77f3, 0x78a9, 0x84c6, 0x91cb, + 0x932b, 0x4ed9, 0x50ca, 0x5148, 0x5584, 0x5b0b, 0x5ba3, 0x6247, + 0x657e, 0x65cb, 0x6e32, 0x717d, 0x7401, 0x7444, 0x7487, 0x74bf, + 0x766c, 0x79aa, 0x7dda, 0x7e55, 0x7fa8, 0x817a, 0x81b3, 0x8239, + 0x861a, 0x87ec, 0x8a75, 0x8de3, 0x9078, 0x9291, 0x9425, 0x994d, + 0x9bae, 0x5368, 0x5c51, 0x6954, 0x6cc4, 0x6d29, 0x6e2b, 0x820c, + 0x859b, 0x893b, 0x8a2d, 0x8aaa, 0x96ea, 0x9f67, 0x5261, 0x66b9, + 0x6bb2, 0x7e96, 0x87fe, 0x8d0d, 0x9583, 0x965d, 0x651d, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6d89, 0x71ee, 0x8449, 0x57ce, 0x59d3, 0x5bac, 0x6027, + 0x60fa, 0x6210, 0x661f, 0x665f, 0x7329, 0x73f9, 0x76db, 0x0000, + 0x7b6c, 0x8056, 0x8072, 0x8165, 0x8aa0, 0x9192, 0x4e16, 0x52e2, + 0x6b72, 0x6d17, 0x7a05, 0x7b39, 0x7d30, 0x0000, 0x8cb0, 0x53ec, + 0x562f, 0x5851, 0x5bb5, 0x5c0f, 0x5c11, 0x5de2, 0x6240, 0x6383, + 0x6414, 0x662d, 0x68b3, 0x6cbc, 0x6d88, 0x6eaf, 0x701f, 0x70a4, + 0x71d2, 0x7526, 0x758f, 0x758e, 0x7619, 0x7b11, 0x7be0, 0x7c2b, + 0x7d20, 0x7d39, 0x852c, 0x856d, 0x8607, 0x8a34, 0x900d, 0x9061, + 0x90b5, 0x92b7, 0x97f6, 0x9a37, 0x4fd7, 0x5c6c, 0x675f, 0x6d91, + 0x7c9f, 0x7e8c, 0x8b16, 0x8d16, 0x901f, 0x5b6b, 0x5dfd, 0x640d, + 0x84c0, 0x905c, 0x98e1, 0x0000, 0x5b8b, 0x609a, 0x677e, 0x6dde, + 0x8a1f, 0x8aa6, 0x9001, 0x980c, 0x5237, 0x0000, 0x7051, 0x788e, + 0x9396, 0x8870, 0x91d7, 0x4fee, 0x53d7, 0x55fd, 0x56da, 0x5782, + 0x58fd, 0x5ac2, 0x5b88, 0x5cab, 0x5cc0, 0x5e25, 0x6101, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x620d, 0x624b, 0x6388, 0x641c, 0x6536, 0x0000, 0x6a39, + 0x6b8a, 0x6c34, 0x6d19, 0x6f31, 0x71e7, 0x72e9, 0x7378, 0x7407, + 0x74b2, 0x7626, 0x7761, 0x79c0, 0x7a57, 0x7aea, 0x7cb9, 0x7d8f, + 0x7dac, 0x7e61, 0x7f9e, 0x8129, 0x8331, 0x8490, 0x84da, 0x85ea, + 0x8896, 0x8ab0, 0x8b90, 0x8f38, 0x9042, 0x9083, 0x916c, 0x9296, + 0x92b9, 0x968b, 0x96a7, 0x96a8, 0x96d6, 0x9700, 0x9808, 0x9996, + 0x9ad3, 0x9b1a, 0x53d4, 0x587e, 0x5919, 0x5b70, 0x5bbf, 0x6dd1, + 0x6f5a, 0x719f, 0x7421, 0x74b9, 0x8085, 0x83fd, 0x5de1, 0x5f87, + 0x5faa, 0x6042, 0x65ec, 0x6812, 0x696f, 0x6a53, 0x6b89, 0x6d35, + 0x6df3, 0x73e3, 0x76fe, 0x77ac, 0x7b4d, 0x7d14, 0x8123, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x821c, 0x8340, 0x84f4, 0x8563, 0x8a62, 0x8ac4, 0x9187, + 0x931e, 0x9806, 0x99b4, 0x620c, 0x8853, 0x8ff0, 0x9265, 0x5d07, + 0x5d27, 0x5d69, 0x745f, 0x819d, 0x8768, 0x6fd5, 0x62fe, 0x7fd2, + 0x8936, 0x8972, 0x4e1e, 0x4e58, 0x50e7, 0x52dd, 0x5347, 0x627f, + 0x6607, 0x7e69, 0x8805, 0x965e, 0x4f8d, 0x5319, 0x5636, 0x59cb, + 0x5aa4, 0x5c38, 0x5c4e, 0x5c4d, 0x5e02, 0x5f11, 0x6043, 0x65bd, + 0x662f, 0x6642, 0x67be, 0x67f4, 0x731c, 0x77e2, 0x793a, 0x7fc5, + 0x8494, 0x84cd, 0x8996, 0x8a66, 0x8a69, 0x8ae1, 0x8c55, 0x8c7a, + 0x57f4, 0x5bd4, 0x5f0f, 0x606f, 0x62ed, 0x690d, 0x6b96, 0x6e5c, + 0x7184, 0x7bd2, 0x8755, 0x8b58, 0x8efe, 0x98df, 0x98fe, 0x4f38, + 0x4f81, 0x4fe1, 0x547b, 0x5a20, 0x5bb8, 0x613c, 0x65b0, 0x6668, + 0x71fc, 0x7533, 0x795e, 0x7d33, 0x814e, 0x81e3, 0x8398, 0x85aa, + 0x85ce, 0x8703, 0x8a0a, 0x8eab, 0x8f9b, 0x8fb0, 0x8fc5, 0x5931, + 0x5ba4, 0x5be6, 0x6089, 0x5be9, 0x5c0b, 0x5fc3, 0x6c81, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6c88, 0x6df1, 0x700b, 0x751a, 0x82af, 0x8af6, 0x4ec0, + 0x5341, 0x0000, 0x96d9, 0x6c0f, 0x4e9e, 0x4fc4, 0x5152, 0x555e, + 0x5a25, 0x5ce8, 0x6211, 0x7259, 0x82bd, 0x83aa, 0x86fe, 0x8859, + 0x8a1d, 0x963f, 0x96c5, 0x9913, 0x9d09, 0x9d5d, 0x580a, 0x5cb3, + 0x5dbd, 0x5e44, 0x60e1, 0x6115, 0x63e1, 0x0000, 0x6e25, 0x9102, + 0x9354, 0x984e, 0x9c10, 0x9f77, 0x5b89, 0x5cb8, 0x6309, 0x664f, + 0x6848, 0x773c, 0x96c1, 0x978d, 0x9854, 0x9b9f, 0x65a1, 0x8b01, + 0x8ecb, 0x95bc, 0x5535, 0x5ca9, 0x5dd6, 0x5eb5, 0x6697, 0x764c, + 0x83f4, 0x95c7, 0x58d3, 0x62bc, 0x72ce, 0x9d28, 0x4ef0, 0x592e, + 0x600f, 0x663b, 0x6b83, 0x79e7, 0x9d26, 0x5393, 0x54c0, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x57c3, 0x5d16, 0x611b, 0x66d6, 0x6daf, 0x788d, 0x827e, + 0x9698, 0x9744, 0x5384, 0x627c, 0x6396, 0x6db2, 0x7e0a, 0x814b, + 0x984d, 0x6afb, 0x7f4c, 0x9daf, 0x9e1a, 0x4e5f, 0x503b, 0x51b6, + 0x591c, 0x60f9, 0x63f6, 0x6930, 0x723a, 0x8036, 0x82e5, 0x91ce, + 0x5f31, 0x0000, 0x0000, 0x7d04, 0x0000, 0x846f, 0x84bb, 0x85e5, + 0x8e8d, 0x0000, 0x4f6f, 0x0000, 0x0000, 0x58e4, 0x5b43, 0x6059, + 0x63da, 0x6518, 0x656d, 0x6698, 0x0000, 0x694a, 0x6a23, 0x6d0b, + 0x7001, 0x716c, 0x75d2, 0x760d, 0x79b3, 0x7a70, 0x0000, 0x7f8a, + 0x0000, 0x8944, 0x0000, 0x8b93, 0x91c0, 0x967d, 0x0000, 0x990a, + 0x5704, 0x5fa1, 0x65bc, 0x6f01, 0x7600, 0x79a6, 0x8a9e, 0x99ad, + 0x9b5a, 0x9f6c, 0x5104, 0x61b6, 0x6291, 0x6a8d, 0x81c6, 0x5043, + 0x5830, 0x5f66, 0x7109, 0x8a00, 0x8afa, 0x5b7c, 0x8616, 0x4ffa, + 0x513c, 0x56b4, 0x5944, 0x63a9, 0x6df9, 0x5daa, 0x696d, 0x5186, + 0x4e88, 0x4f59, 0x0000, 0x0000, 0x0000, 0x5982, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6b5f, 0x6c5d, 0x0000, 0x74b5, 0x7916, 0x0000, + 0x8207, 0x8245, 0x8339, 0x8f3f, 0x8f5d, 0x0000, 0x9918, 0x0000, + 0x0000, 0x0000, 0x4ea6, 0x0000, 0x57df, 0x5f79, 0x6613, 0x0000, + 0x0000, 0x75ab, 0x7e79, 0x8b6f, 0x0000, 0x9006, 0x9a5b, 0x56a5, + 0x5827, 0x59f8, 0x5a1f, 0x5bb4, 0x0000, 0x5ef6, 0x0000, 0x0000, + 0x6350, 0x633b, 0x0000, 0x693d, 0x6c87, 0x6cbf, 0x6d8e, 0x6d93, + 0x6df5, 0x6f14, 0x0000, 0x70df, 0x7136, 0x7159, 0x0000, 0x71c3, + 0x71d5, 0x0000, 0x784f, 0x786f, 0x0000, 0x7b75, 0x7de3, 0x0000, + 0x7e2f, 0x0000, 0x884d, 0x8edf, 0x0000, 0x0000, 0x0000, 0x925b, + 0x0000, 0x9cf6, 0x0000, 0x0000, 0x54bd, 0x6085, 0x6d85, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x71b1, 0x0000, 0x0000, 0x95b1, 0x53ad, 0x0000, + 0x0000, 0x0000, 0x67d3, 0x0000, 0x708e, 0x7130, 0x7430, 0x8276, + 0x82d2, 0x0000, 0x95bb, 0x9ae5, 0x9e7d, 0x66c4, 0x0000, 0x71c1, + 0x0000, 0x0000, 0x0000, 0x584b, 0x0000, 0x0000, 0x5db8, 0x5f71, + 0x0000, 0x6620, 0x668e, 0x6979, 0x69ae, 0x6c38, 0x6cf3, 0x6e36, + 0x6f41, 0x6fda, 0x701b, 0x702f, 0x7150, 0x71df, 0x7370, 0x0000, + 0x745b, 0x7469, 0x74d4, 0x76c8, 0x7a4e, 0x7e93, 0x0000, 0x0000, + 0x82f1, 0x8a60, 0x8fce, 0x0000, 0x9348, 0x0000, 0x9719, 0x0000, + 0x0000, 0x4e42, 0x502a, 0x0000, 0x5208, 0x53e1, 0x66f3, 0x6c6d, + 0x6fca, 0x730a, 0x777f, 0x7a62, 0x82ae, 0x85dd, 0x8602, 0x0000, + 0x88d4, 0x8a63, 0x8b7d, 0x8c6b, 0x0000, 0x92b3, 0x0000, 0x9713, + 0x9810, 0x4e94, 0x4f0d, 0x4fc9, 0x50b2, 0x5348, 0x543e, 0x5433, + 0x55da, 0x5862, 0x58ba, 0x5967, 0x5a1b, 0x5be4, 0x609f, 0x0000, + 0x61ca, 0x6556, 0x65ff, 0x6664, 0x68a7, 0x6c5a, 0x6fb3, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x70cf, 0x71ac, 0x7352, 0x7b7d, 0x8708, 0x8aa4, 0x9c32, + 0x9f07, 0x5c4b, 0x6c83, 0x7344, 0x7389, 0x923a, 0x6eab, 0x7465, + 0x761f, 0x7a69, 0x7e15, 0x860a, 0x5140, 0x58c5, 0x64c1, 0x74ee, + 0x7515, 0x7670, 0x7fc1, 0x9095, 0x96cd, 0x9954, 0x6e26, 0x74e6, + 0x7aa9, 0x7aaa, 0x81e5, 0x86d9, 0x8778, 0x8a1b, 0x5a49, 0x5b8c, + 0x5b9b, 0x68a1, 0x6900, 0x6d63, 0x73a9, 0x7413, 0x742c, 0x7897, + 0x7de9, 0x7feb, 0x8118, 0x8155, 0x839e, 0x8c4c, 0x962e, 0x9811, + 0x66f0, 0x5f80, 0x65fa, 0x6789, 0x6c6a, 0x738b, 0x502d, 0x5a03, + 0x6b6a, 0x77ee, 0x5916, 0x5d6c, 0x5dcd, 0x7325, 0x754f, 0x0000, + 0x0000, 0x50e5, 0x51f9, 0x582f, 0x592d, 0x5996, 0x59da, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5be5, 0x0000, 0x0000, 0x5da2, 0x62d7, 0x6416, 0x6493, + 0x64fe, 0x0000, 0x66dc, 0x0000, 0x6a48, 0x0000, 0x71ff, 0x7464, + 0x0000, 0x7a88, 0x7aaf, 0x7e47, 0x7e5e, 0x8000, 0x8170, 0x0000, + 0x87ef, 0x8981, 0x8b20, 0x9059, 0x0000, 0x9080, 0x9952, 0x617e, + 0x6b32, 0x6d74, 0x7e1f, 0x8925, 0x8fb1, 0x4fd1, 0x50ad, 0x5197, + 0x52c7, 0x57c7, 0x5889, 0x5bb9, 0x5eb8, 0x6142, 0x6995, 0x6d8c, + 0x6e67, 0x6eb6, 0x7194, 0x7462, 0x7528, 0x752c, 0x8073, 0x8338, + 0x84c9, 0x8e0a, 0x9394, 0x93de, 0x0000, 0x4e8e, 0x4f51, 0x5076, + 0x512a, 0x53c8, 0x53cb, 0x53f3, 0x5b87, 0x5bd3, 0x5c24, 0x611a, + 0x6182, 0x65f4, 0x725b, 0x7397, 0x7440, 0x76c2, 0x7950, 0x7991, + 0x79b9, 0x7d06, 0x7fbd, 0x828b, 0x85d5, 0x865e, 0x8fc2, 0x9047, + 0x90f5, 0x91ea, 0x9685, 0x96e8, 0x96e9, 0x52d6, 0x5f67, 0x65ed, + 0x6631, 0x682f, 0x715c, 0x7a36, 0x90c1, 0x980a, 0x4e91, 0x6688, + 0x6a52, 0x6b9e, 0x6f90, 0x7189, 0x8018, 0x82b8, 0x8553, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x904b, 0x9695, 0x96f2, 0x97fb, 0x851a, 0x9b31, 0x4e90, + 0x718a, 0x96c4, 0x5143, 0x539f, 0x54e1, 0x5713, 0x5712, 0x57a3, + 0x5a9b, 0x5ac4, 0x5bc3, 0x6028, 0x613f, 0x63f4, 0x6c85, 0x6d39, + 0x6e72, 0x6e90, 0x7230, 0x733f, 0x7457, 0x82d1, 0x8881, 0x8f45, + 0x9060, 0x0000, 0x9662, 0x9858, 0x9d1b, 0x6708, 0x8d8a, 0x925e, + 0x4f4d, 0x5049, 0x50de, 0x5371, 0x570d, 0x59d4, 0x5a01, 0x5c09, + 0x6170, 0x6690, 0x6e2d, 0x7232, 0x744b, 0x7def, 0x80c3, 0x840e, + 0x8466, 0x853f, 0x875f, 0x885b, 0x8918, 0x8b02, 0x9055, 0x97cb, + 0x9b4f, 0x4e73, 0x4f91, 0x5112, 0x516a, 0x0000, 0x552f, 0x55a9, + 0x5b7a, 0x5ba5, 0x5e7c, 0x5e7d, 0x5ebe, 0x60a0, 0x60df, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6108, 0x6109, 0x63c4, 0x6538, 0x6709, 0x0000, 0x67d4, + 0x67da, 0x0000, 0x6961, 0x6962, 0x6cb9, 0x6d27, 0x0000, 0x6e38, + 0x0000, 0x6fe1, 0x7336, 0x7337, 0x0000, 0x745c, 0x7531, 0x0000, + 0x7652, 0x0000, 0x0000, 0x7dad, 0x81fe, 0x8438, 0x88d5, 0x8a98, + 0x8adb, 0x8aed, 0x8e30, 0x8e42, 0x904a, 0x903e, 0x907a, 0x9149, + 0x91c9, 0x936e, 0x0000, 0x0000, 0x5809, 0x0000, 0x6bd3, 0x8089, + 0x80b2, 0x0000, 0x0000, 0x5141, 0x596b, 0x5c39, 0x0000, 0x0000, + 0x6f64, 0x73a7, 0x80e4, 0x8d07, 0x0000, 0x9217, 0x958f, 0x0000, + 0x0000, 0x0000, 0x0000, 0x807f, 0x620e, 0x701c, 0x7d68, 0x878d, + 0x0000, 0x57a0, 0x6069, 0x6147, 0x6bb7, 0x8abe, 0x9280, 0x96b1, + 0x4e59, 0x541f, 0x6deb, 0x852d, 0x9670, 0x97f3, 0x98ee, 0x63d6, + 0x6ce3, 0x9091, 0x51dd, 0x61c9, 0x81ba, 0x9df9, 0x4f9d, 0x501a, + 0x5100, 0x5b9c, 0x610f, 0x61ff, 0x64ec, 0x6905, 0x6bc5, 0x7591, + 0x77e3, 0x7fa9, 0x8264, 0x858f, 0x87fb, 0x8863, 0x8abc, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8b70, 0x91ab, 0x4e8c, 0x4ee5, 0x4f0a, 0x0000, 0x0000, + 0x5937, 0x59e8, 0x0000, 0x5df2, 0x5f1b, 0x5f5b, 0x6021, 0x0000, + 0x0000, 0x0000, 0x0000, 0x723e, 0x73e5, 0x0000, 0x0000, 0x75cd, + 0x0000, 0x79fb, 0x0000, 0x800c, 0x8033, 0x8084, 0x82e1, 0x8351, + 0x0000, 0x0000, 0x8cbd, 0x8cb3, 0x9087, 0x0000, 0x0000, 0x98f4, + 0x990c, 0x0000, 0x0000, 0x7037, 0x76ca, 0x7fca, 0x7fcc, 0x7ffc, + 0x8b1a, 0x4eba, 0x4ec1, 0x5203, 0x5370, 0x0000, 0x0000, 0x56e0, + 0x59fb, 0x5bc5, 0x5f15, 0x5fcd, 0x6e6e, 0x0000, 0x0000, 0x7d6a, + 0x8335, 0x0000, 0x8693, 0x8a8d, 0x0000, 0x976d, 0x9777, 0x0000, + 0x0000, 0x4e00, 0x4f5a, 0x4f7e, 0x58f9, 0x65e5, 0x6ea2, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x9038, 0x93b0, 0x99b9, 0x4efb, 0x58ec, 0x598a, 0x59d9, + 0x6041, 0x0000, 0x0000, 0x7a14, 0x0000, 0x834f, 0x8cc3, 0x5165, + 0x5344, 0x0000, 0x0000, 0x0000, 0x4ecd, 0x5269, 0x5b55, 0x82bf, + 0x4ed4, 0x523a, 0x54a8, 0x59c9, 0x59ff, 0x5b50, 0x5b57, 0x5b5c, + 0x6063, 0x6148, 0x6ecb, 0x7099, 0x716e, 0x7386, 0x74f7, 0x75b5, + 0x78c1, 0x7d2b, 0x8005, 0x81ea, 0x8328, 0x8517, 0x85c9, 0x8aee, + 0x8cc7, 0x96cc, 0x4f5c, 0x52fa, 0x56bc, 0x65ab, 0x6628, 0x707c, + 0x70b8, 0x7235, 0x7dbd, 0x828d, 0x914c, 0x96c0, 0x9d72, 0x5b71, + 0x68e7, 0x6b98, 0x6f7a, 0x76de, 0x5c91, 0x66ab, 0x6f5b, 0x7bb4, + 0x7c2a, 0x8836, 0x96dc, 0x4e08, 0x4ed7, 0x5320, 0x5834, 0x58bb, + 0x58ef, 0x596c, 0x5c07, 0x5e33, 0x5e84, 0x5f35, 0x638c, 0x66b2, + 0x6756, 0x6a1f, 0x6aa3, 0x6b0c, 0x6f3f, 0x7246, 0x0000, 0x7350, + 0x748b, 0x7ae0, 0x7ca7, 0x8178, 0x81df, 0x81e7, 0x838a, 0x846c, + 0x8523, 0x8594, 0x85cf, 0x88dd, 0x8d13, 0x91ac, 0x9577, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x969c, 0x518d, 0x54c9, 0x5728, 0x5bb0, 0x624d, 0x6750, + 0x683d, 0x6893, 0x6e3d, 0x6ed3, 0x707d, 0x7e21, 0x88c1, 0x8ca1, + 0x8f09, 0x9f4b, 0x9f4e, 0x722d, 0x7b8f, 0x8acd, 0x931a, 0x4f47, + 0x4f4e, 0x5132, 0x5480, 0x59d0, 0x5e95, 0x62b5, 0x6775, 0x696e, + 0x6a17, 0x6cae, 0x6e1a, 0x72d9, 0x732a, 0x75bd, 0x7bb8, 0x7d35, + 0x82e7, 0x83f9, 0x8457, 0x85f7, 0x8a5b, 0x8caf, 0x8e87, 0x9019, + 0x90b8, 0x96ce, 0x9f5f, 0x52e3, 0x540a, 0x5ae1, 0x5bc2, 0x6458, + 0x6575, 0x6ef4, 0x72c4, 0x0000, 0x7684, 0x7a4d, 0x7b1b, 0x7c4d, + 0x7e3e, 0x7fdf, 0x837b, 0x8b2b, 0x8cca, 0x8d64, 0x8de1, 0x8e5f, + 0x8fea, 0x8ff9, 0x9069, 0x93d1, 0x4f43, 0x4f7a, 0x50b3, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5168, 0x5178, 0x524d, 0x526a, 0x5861, 0x587c, 0x5960, + 0x5c08, 0x5c55, 0x5edb, 0x609b, 0x6230, 0x6813, 0x6bbf, 0x6c08, + 0x6fb1, 0x714e, 0x7420, 0x7530, 0x7538, 0x7551, 0x7672, 0x7b4c, + 0x7b8b, 0x7bad, 0x7bc6, 0x7e8f, 0x8a6e, 0x8f3e, 0x8f49, 0x923f, + 0x9293, 0x9322, 0x942b, 0x96fb, 0x985a, 0x986b, 0x991e, 0x5207, + 0x622a, 0x6298, 0x6d59, 0x7664, 0x7aca, 0x7bc0, 0x7d76, 0x5360, + 0x5cbe, 0x5e97, 0x6f38, 0x70b9, 0x7c98, 0x9711, 0x9b8e, 0x9ede, + 0x63a5, 0x647a, 0x8776, 0x4e01, 0x4e95, 0x4ead, 0x505c, 0x5075, + 0x5448, 0x59c3, 0x5b9a, 0x5e40, 0x5ead, 0x5ef7, 0x5f81, 0x60c5, + 0x633a, 0x653f, 0x6574, 0x65cc, 0x6676, 0x6678, 0x67fe, 0x6968, + 0x6a89, 0x6b63, 0x6c40, 0x6dc0, 0x6de8, 0x6e1f, 0x6e5e, 0x701e, + 0x70a1, 0x738e, 0x73fd, 0x753a, 0x775b, 0x7887, 0x798e, 0x7a0b, + 0x7a7d, 0x7cbe, 0x7d8e, 0x8247, 0x8a02, 0x8aea, 0x8c9e, 0x912d, + 0x914a, 0x91d8, 0x9266, 0x92cc, 0x9320, 0x9706, 0x9756, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x975c, 0x9802, 0x9f0e, 0x5236, 0x5291, 0x557c, 0x5824, + 0x5e1d, 0x5f1f, 0x608c, 0x63d0, 0x68af, 0x6fdf, 0x796d, 0x7b2c, + 0x81cd, 0x85ba, 0x88fd, 0x8af8, 0x8e44, 0x918d, 0x9664, 0x969b, + 0x973d, 0x984c, 0x9f4a, 0x4fce, 0x5146, 0x51cb, 0x52a9, 0x5632, + 0x5f14, 0x5f6b, 0x63aa, 0x64cd, 0x65e9, 0x6641, 0x66fa, 0x66f9, + 0x671d, 0x689d, 0x68d7, 0x69fd, 0x6f15, 0x6f6e, 0x7167, 0x71e5, + 0x722a, 0x74aa, 0x773a, 0x7956, 0x795a, 0x79df, 0x7a20, 0x7a95, + 0x7c97, 0x7cdf, 0x7d44, 0x7e70, 0x8087, 0x85fb, 0x86a4, 0x8a54, + 0x8abf, 0x8d99, 0x8e81, 0x9020, 0x906d, 0x91e3, 0x963b, 0x96d5, + 0x9ce5, 0x65cf, 0x7c07, 0x8db3, 0x93c3, 0x5b58, 0x5c0a, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5352, 0x62d9, 0x731d, 0x5027, 0x5b97, 0x5f9e, 0x60b0, + 0x616b, 0x68d5, 0x6dd9, 0x742e, 0x7a2e, 0x7d42, 0x7d9c, 0x7e31, + 0x816b, 0x8e2a, 0x8e35, 0x937e, 0x9418, 0x4f50, 0x5750, 0x5de6, + 0x5ea7, 0x632b, 0x7f6a, 0x4e3b, 0x4f4f, 0x4f8f, 0x505a, 0x59dd, + 0x80c4, 0x546a, 0x5468, 0x55fe, 0x594f, 0x5b99, 0x5dde, 0x5eda, + 0x665d, 0x6731, 0x67f1, 0x682a, 0x6ce8, 0x6d32, 0x6e4a, 0x6f8d, + 0x70b7, 0x73e0, 0x7587, 0x7c4c, 0x7d02, 0x7d2c, 0x7da2, 0x821f, + 0x86db, 0x8a3b, 0x8a85, 0x8d70, 0x8e8a, 0x8f33, 0x9031, 0x914e, + 0x9152, 0x9444, 0x99d0, 0x7af9, 0x7ca5, 0x4fca, 0x5101, 0x51c6, + 0x57c8, 0x5bef, 0x5cfb, 0x6659, 0x6a3d, 0x6d5a, 0x6e96, 0x6fec, + 0x710c, 0x756f, 0x7ae3, 0x8822, 0x9021, 0x9075, 0x96cb, 0x99ff, + 0x8301, 0x4e2d, 0x4ef2, 0x8846, 0x91cd, 0x537d, 0x6adb, 0x696b, + 0x6c41, 0x847a, 0x589e, 0x618e, 0x66fe, 0x62ef, 0x70dd, 0x7511, + 0x75c7, 0x7e52, 0x84b8, 0x8b49, 0x8d08, 0x4e4b, 0x53ea, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x54ab, 0x5730, 0x5740, 0x5fd7, 0x6301, 0x6307, 0x646f, + 0x652f, 0x65e8, 0x667a, 0x679d, 0x67b3, 0x6b62, 0x6c60, 0x6c9a, + 0x6f2c, 0x77e5, 0x7825, 0x7949, 0x7957, 0x7d19, 0x80a2, 0x8102, + 0x81f3, 0x829d, 0x82b7, 0x8718, 0x8a8c, 0x0000, 0x8d04, 0x8dbe, + 0x9072, 0x76f4, 0x7a19, 0x7a37, 0x7e54, 0x8077, 0x5507, 0x55d4, + 0x5875, 0x632f, 0x6422, 0x6649, 0x664b, 0x686d, 0x699b, 0x6b84, + 0x6d25, 0x6eb1, 0x73cd, 0x7468, 0x74a1, 0x755b, 0x75b9, 0x76e1, + 0x771e, 0x778b, 0x79e6, 0x7e09, 0x7e1d, 0x81fb, 0x852f, 0x8897, + 0x8a3a, 0x8cd1, 0x8eeb, 0x0000, 0x9032, 0x93ad, 0x9663, 0x9673, + 0x9707, 0x4f84, 0x53f1, 0x59ea, 0x5ac9, 0x5e19, 0x684e, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x74c6, 0x75be, 0x79e9, 0x7a92, 0x81a3, 0x86ed, 0x8cea, + 0x8dcc, 0x8fed, 0x659f, 0x6715, 0x0000, 0x57f7, 0x6f57, 0x7ddd, + 0x8f2f, 0x93f6, 0x96c6, 0x5fb5, 0x61f2, 0x6f84, 0x4e14, 0x4f98, + 0x501f, 0x53c9, 0x55df, 0x5d6f, 0x5dee, 0x6b21, 0x6b64, 0x78cb, + 0x7b9a, 0x0000, 0x8e49, 0x0000, 0x906e, 0x6349, 0x643e, 0x7740, + 0x7a84, 0x932f, 0x947f, 0x9f6a, 0x64b0, 0x6faf, 0x71e6, 0x74a8, + 0x74da, 0x7ac4, 0x7c12, 0x7e82, 0x7cb2, 0x7e98, 0x8b9a, 0x8d0a, + 0x947d, 0x9910, 0x994c, 0x5239, 0x5bdf, 0x64e6, 0x672d, 0x7d2e, + 0x50ed, 0x0000, 0x5879, 0x6158, 0x6159, 0x61fa, 0x65ac, 0x7ad9, + 0x8b92, 0x8b96, 0x5009, 0x5021, 0x5275, 0x5531, 0x5a3c, 0x5ee0, + 0x5f70, 0x6134, 0x655e, 0x660c, 0x6636, 0x66a2, 0x69cd, 0x6ec4, + 0x6f32, 0x7316, 0x7621, 0x7a93, 0x8139, 0x8259, 0x83d6, 0x84bc, + 0x50b5, 0x57f0, 0x5bc0, 0x5be8, 0x5f69, 0x63a1, 0x7826, 0x7db5, + 0x83dc, 0x8521, 0x91c7, 0x91f5, 0x518a, 0x67f5, 0x7b56, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8cac, 0x51c4, 0x59bb, 0x60bd, 0x8655, 0x501c, 0x0000, + 0x5254, 0x5c3a, 0x617d, 0x621a, 0x62d3, 0x64f2, 0x65a5, 0x6ecc, + 0x7620, 0x810a, 0x8e60, 0x965f, 0x96bb, 0x4edf, 0x5343, 0x5598, + 0x5929, 0x5ddd, 0x64c5, 0x6cc9, 0x6dfa, 0x7394, 0x7a7f, 0x821b, + 0x85a6, 0x8ce4, 0x8e10, 0x9077, 0x91e7, 0x95e1, 0x9621, 0x97c6, + 0x51f8, 0x54f2, 0x5586, 0x5fb9, 0x64a4, 0x6f88, 0x7db4, 0x8f1f, + 0x8f4d, 0x9435, 0x50c9, 0x5c16, 0x6cbe, 0x6dfb, 0x751b, 0x77bb, + 0x7c3d, 0x7c64, 0x8a79, 0x8ac2, 0x581e, 0x59be, 0x5e16, 0x6377, + 0x7252, 0x758a, 0x776b, 0x8adc, 0x8cbc, 0x8f12, 0x5ef3, 0x6674, + 0x6df8, 0x807d, 0x83c1, 0x8acb, 0x9751, 0x9bd6, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5243, 0x66ff, 0x6d95, 0x6eef, 0x7de0, 0x8ae6, 0x902e, + 0x905e, 0x9ad4, 0x521d, 0x527f, 0x54e8, 0x6194, 0x6284, 0x62db, + 0x68a2, 0x6912, 0x695a, 0x6a35, 0x7092, 0x7126, 0x785d, 0x7901, + 0x790e, 0x79d2, 0x7a0d, 0x8096, 0x8278, 0x82d5, 0x8349, 0x8549, + 0x8c82, 0x8d85, 0x9162, 0x918b, 0x91ae, 0x4fc3, 0x56d1, 0x71ed, + 0x77d7, 0x8700, 0x89f8, 0x5bf8, 0x5fd6, 0x6751, 0x90a8, 0x53e2, + 0x585a, 0x5bf5, 0x60a4, 0x6181, 0x6460, 0x7e3d, 0x8070, 0x8525, + 0x9283, 0x64ae, 0x50ac, 0x5d14, 0x6700, 0x589c, 0x62bd, 0x63a8, + 0x690e, 0x6978, 0x6a1e, 0x6e6b, 0x76ba, 0x79cb, 0x82bb, 0x8429, + 0x8acf, 0x8da8, 0x8ffd, 0x9112, 0x914b, 0x919c, 0x9310, 0x9318, + 0x939a, 0x96db, 0x9a36, 0x9c0d, 0x4e11, 0x755c, 0x795d, 0x7afa, + 0x7b51, 0x7bc9, 0x7e2e, 0x84c4, 0x8e59, 0x8e74, 0x8ef8, 0x9010, + 0x6625, 0x693f, 0x7443, 0x51fa, 0x672e, 0x9edc, 0x5145, 0x5fe0, + 0x6c96, 0x87f2, 0x885d, 0x8877, 0x60b4, 0x81b5, 0x8403, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8d05, 0x53d6, 0x5439, 0x5634, 0x5a36, 0x5c31, 0x708a, + 0x7fe0, 0x805a, 0x8106, 0x81ed, 0x8da3, 0x9189, 0x9a5f, 0x9df2, + 0x5074, 0x4ec4, 0x53a0, 0x60fb, 0x6e2c, 0x5c64, 0x4f88, 0x5024, + 0x55e4, 0x5cd9, 0x5e5f, 0x6065, 0x6894, 0x6cbb, 0x6dc4, 0x71be, + 0x75d4, 0x75f4, 0x7661, 0x7a1a, 0x7a49, 0x7dc7, 0x7dfb, 0x7f6e, + 0x81f4, 0x86a9, 0x8f1c, 0x96c9, 0x99b3, 0x9f52, 0x5247, 0x52c5, + 0x98ed, 0x89aa, 0x4e03, 0x67d2, 0x6f06, 0x4fb5, 0x5be2, 0x6795, + 0x0000, 0x6d78, 0x741b, 0x7827, 0x91dd, 0x937c, 0x87c4, 0x79e4, + 0x7a31, 0x5feb, 0x4ed6, 0x54a4, 0x553e, 0x58ae, 0x59a5, 0x60f0, + 0x6253, 0x62d6, 0x6736, 0x6955, 0x8235, 0x9640, 0x99b1, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x99dd, 0x502c, 0x5353, 0x5544, 0x577c, 0x0000, 0x6258, + 0x0000, 0x64e2, 0x666b, 0x67dd, 0x6fc1, 0x6fef, 0x7422, 0x7438, + 0x8a17, 0x9438, 0x5451, 0x5606, 0x5766, 0x5f48, 0x619a, 0x6b4e, + 0x7058, 0x70ad, 0x7dbb, 0x8a95, 0x596a, 0x812b, 0x63a2, 0x7708, + 0x803d, 0x8caa, 0x5854, 0x642d, 0x69bb, 0x5b95, 0x5e11, 0x6e6f, + 0x0000, 0x8569, 0x514c, 0x53f0, 0x592a, 0x6020, 0x614b, 0x6b86, + 0x6c70, 0x6cf0, 0x7b1e, 0x80ce, 0x82d4, 0x8dc6, 0x90b0, 0x98b1, + 0x0000, 0x64c7, 0x6fa4, 0x6491, 0x6504, 0x514e, 0x5410, 0x571f, + 0x8a0e, 0x615f, 0x6876, 0x0000, 0x75db, 0x7b52, 0x7d71, 0x901a, + 0x5806, 0x69cc, 0x817f, 0x892a, 0x9000, 0x9839, 0x5078, 0x5957, + 0x59ac, 0x6295, 0x900f, 0x9b2a, 0x615d, 0x7279, 0x95d6, 0x5761, + 0x5a46, 0x5df4, 0x628a, 0x64ad, 0x64fa, 0x6777, 0x6ce2, 0x6d3e, + 0x722c, 0x7436, 0x7834, 0x7f77, 0x82ad, 0x8ddb, 0x9817, 0x5224, + 0x5742, 0x677f, 0x7248, 0x74e3, 0x8ca9, 0x8fa6, 0x9211, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x962a, 0x516b, 0x53ed, 0x634c, 0x4f69, 0x5504, 0x6096, + 0x6557, 0x6c9b, 0x6d7f, 0x724c, 0x72fd, 0x7a17, 0x8987, 0x8c9d, + 0x5f6d, 0x6f8e, 0x70f9, 0x81a8, 0x610e, 0x0000, 0x504f, 0x6241, + 0x7247, 0x7bc7, 0x7de8, 0x7fe9, 0x904d, 0x97ad, 0x9a19, 0x8cb6, + 0x576a, 0x5e73, 0x67b0, 0x840d, 0x8a55, 0x5420, 0x5b16, 0x5e63, + 0x5ee2, 0x5f0a, 0x6583, 0x80ba, 0x853d, 0x9589, 0x965b, 0x4f48, + 0x5305, 0x530d, 0x530f, 0x5486, 0x54fa, 0x5703, 0x5e03, 0x6016, + 0x629b, 0x62b1, 0x6355, 0x66b4, 0x6ce1, 0x6d66, 0x75b1, 0x7832, + 0x80de, 0x812f, 0x82de, 0x8461, 0x84b2, 0x888d, 0x8912, 0x900b, + 0x92ea, 0x98fd, 0x9b91, 0x5e45, 0x0000, 0x66dd, 0x7011, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7206, 0x0000, 0x4ff5, 0x527d, 0x5f6a, 0x6153, 0x6753, + 0x6a19, 0x6f02, 0x74e2, 0x7968, 0x8868, 0x8c79, 0x98c7, 0x98c4, + 0x9a43, 0x54c1, 0x7a1f, 0x6953, 0x8af7, 0x8c4a, 0x98a8, 0x99ae, + 0x5f7c, 0x62ab, 0x75b2, 0x76ae, 0x88ab, 0x907f, 0x9642, 0x5339, + 0x5f3c, 0x5fc5, 0x0000, 0x73cc, 0x7562, 0x758b, 0x7b46, 0x82fe, + 0x999d, 0x4e4f, 0x903c, 0x4e0b, 0x4f55, 0x53a6, 0x590f, 0x5ec8, + 0x6630, 0x6cb3, 0x7455, 0x8377, 0x8766, 0x8cc0, 0x9050, 0x971e, + 0x9c15, 0x58d1, 0x5b78, 0x8650, 0x8b14, 0x9db4, 0x5bd2, 0x6068, + 0x608d, 0x65f1, 0x6c57, 0x6f22, 0x6fa3, 0x701a, 0x7f55, 0x7ff0, + 0x9591, 0x9592, 0x9650, 0x97d3, 0x5272, 0x8f44, 0x51fd, 0x542b, + 0x54b8, 0x5563, 0x558a, 0x6abb, 0x6db5, 0x7dd8, 0x8266, 0x929c, + 0x9677, 0x9e79, 0x5408, 0x54c8, 0x76d2, 0x86e4, 0x95a4, 0x95d4, + 0x965c, 0x4ea2, 0x4f09, 0x59ee, 0x5ae6, 0x5df7, 0x6052, 0x6297, + 0x676d, 0x6841, 0x6c86, 0x6e2f, 0x7f38, 0x809b, 0x822a, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x884c, 0x0000, 0x9805, 0x4ea5, 0x5055, 0x54b3, 0x5793, + 0x595a, 0x5b69, 0x5bb3, 0x61c8, 0x6977, 0x6d77, 0x7023, 0x87f9, + 0x89e3, 0x8a72, 0x8ae7, 0x9082, 0x99ed, 0x9ab8, 0x52be, 0x6838, + 0x5016, 0x5e78, 0x674f, 0x8347, 0x0000, 0x4eab, 0x5411, 0x56ae, + 0x73e6, 0x9115, 0x97ff, 0x9909, 0x9957, 0x9999, 0x5653, 0x589f, + 0x865b, 0x8a31, 0x61b2, 0x6af6, 0x737b, 0x8ed2, 0x6b47, 0x96aa, + 0x9a57, 0x5955, 0x7200, 0x8d6b, 0x9769, 0x4fd4, 0x5cf4, 0x5f26, + 0x61f8, 0x665b, 0x6ceb, 0x70ab, 0x7384, 0x73b9, 0x73fe, 0x7729, + 0x774d, 0x7d43, 0x7d62, 0x7e23, 0x8237, 0x8852, 0x0000, 0x8ce2, + 0x9249, 0x986f, 0x5b51, 0x7a74, 0x8840, 0x9801, 0x5acc, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x4fe0, 0x5354, 0x593e, 0x5cfd, 0x633e, 0x6d79, 0x72f9, + 0x8105, 0x8107, 0x83a2, 0x92cf, 0x9830, 0x4ea8, 0x5144, 0x5211, + 0x578b, 0x5f62, 0x6cc2, 0x6ece, 0x7005, 0x7050, 0x70af, 0x7192, + 0x73e9, 0x0000, 0x834a, 0x87a2, 0x8861, 0x9008, 0x90a2, 0x93a3, + 0x99a8, 0x516e, 0x5f57, 0x60e0, 0x6167, 0x66b3, 0x8559, 0x8e4a, + 0x91af, 0x978b, 0x4e4e, 0x4e92, 0x547c, 0x58d5, 0x58fa, 0x597d, + 0x5cb5, 0x5f27, 0x6236, 0x6248, 0x660a, 0x6667, 0x6beb, 0x6d69, + 0x6dcf, 0x6e56, 0x6ef8, 0x6f94, 0x6fe0, 0x6fe9, 0x705d, 0x72d0, + 0x7425, 0x745a, 0x74e0, 0x7693, 0x795c, 0x7cca, 0x7e1e, 0x80e1, + 0x82a6, 0x846b, 0x84bf, 0x864e, 0x865f, 0x8774, 0x8b77, 0x8c6a, + 0x93ac, 0x9800, 0x9865, 0x60d1, 0x6216, 0x9177, 0x5a5a, 0x660f, + 0x6df7, 0x6e3e, 0x743f, 0x9b42, 0x5ffd, 0x60da, 0x7b0f, 0x54c4, + 0x5f18, 0x6c5e, 0x6cd3, 0x6d2a, 0x70d8, 0x7d05, 0x8679, 0x8a0c, + 0x9d3b, 0x5316, 0x548c, 0x5b05, 0x6a3a, 0x706b, 0x7575, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x798d, 0x79be, 0x82b1, 0x83ef, 0x8a71, 0x8b41, 0x8ca8, + 0x9774, 0x0000, 0x64f4, 0x652b, 0x78ba, 0x78bb, 0x7a6b, 0x4e38, + 0x559a, 0x5950, 0x5ba6, 0x5e7b, 0x60a3, 0x63db, 0x6b61, 0x6665, + 0x6853, 0x6e19, 0x7165, 0x74b0, 0x7d08, 0x9084, 0x9a69, 0x9c25, + 0x6d3b, 0x0000, 0x733e, 0x8c41, 0x95ca, 0x51f0, 0x5e4c, 0x5fa8, + 0x604d, 0x60f6, 0x6130, 0x614c, 0x6643, 0x6644, 0x69a5, 0x6cc1, + 0x6e5f, 0x6ec9, 0x6f62, 0x714c, 0x749c, 0x7687, 0x7bc1, 0x7c27, + 0x8352, 0x8757, 0x9051, 0x968d, 0x9ec3, 0x532f, 0x56de, 0x5efb, + 0x5f8a, 0x6062, 0x6094, 0x61f7, 0x6666, 0x6703, 0x6a9c, 0x6dee, + 0x6fae, 0x7070, 0x736a, 0x7e6a, 0x81be, 0x8334, 0x86d4, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8aa8, 0x8cc4, 0x5283, 0x7372, 0x5b96, 0x6a6b, 0x9404, + 0x54ee, 0x5686, 0x5b5d, 0x6548, 0x6585, 0x66c9, 0x689f, 0x6d8d, + 0x6dc6, 0x723b, 0x80b4, 0x9175, 0x9a4d, 0x4faf, 0x5019, 0x539a, + 0x540e, 0x543c, 0x5589, 0x55c5, 0x5e3f, 0x5f8c, 0x673d, 0x7166, + 0x73dd, 0x9005, 0x52db, 0x52f3, 0x5864, 0x58ce, 0x7104, 0x718f, + 0x71fb, 0x85b0, 0x8a13, 0x0000, 0x85a8, 0x55a7, 0x6684, 0x714a, + 0x8431, 0x5349, 0x5599, 0x6bc1, 0x5f59, 0x5fbd, 0x63ee, 0x6689, + 0x7147, 0x8af1, 0x8f1d, 0x9ebe, 0x4f11, 0x643a, 0x70cb, 0x7566, + 0x8667, 0x6064, 0x8b4e, 0x9df8, 0x5147, 0x51f6, 0x5308, 0x6d36, + 0x80f8, 0x9ed1, 0x6615, 0x6b23, 0x7098, 0x75d5, 0x5403, 0x5c79, + 0x7d07, 0x8a16, 0x6b20, 0x6b3d, 0x6b46, 0x5438, 0x6070, 0x6d3d, + 0x7fd5, 0x8208, 0x50d6, 0x51de, 0x559c, 0x566b, 0x56cd, 0x59ec, + 0x5b09, 0x5e0c, 0x6199, 0x6198, 0x6231, 0x665e, 0x66e6, 0x7199, + 0x71b9, 0x71ba, 0x72a7, 0x79a7, 0x7a00, 0x7fb2, 0x8a70, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3164, 0x3001, 0x3002, 0x30fb, 0x2025, 0x22ef, 0x00a8, 0x3003 +}; + +static unsigned short johab_from_unicode_0[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xd9ae, 0x0000, 0x0000, 0xd9b4, 0x0000, 0x0000, 0xd967, + 0xd937, 0x0000, 0xdca3, 0xd97c, 0x0000, 0x0000, 0x0000, 0x0000, + 0xd956, 0xd94e, 0xdd99, 0xdd9a, 0xd9a5, 0x0000, 0xd9d2, 0x0000, + 0xd9ac, 0xdd98, 0xdcac, 0xd97d, 0xdcf9, 0xdcf6, 0xdcfa, 0xd9af, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xdca1, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xdca2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xd94f, + 0xdcaa, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xdcad, 0xdd3c, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xdd31, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xdd33, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xd950, + 0xdd3a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xdd3d, 0x0000 +}; + +static unsigned short johab_from_unicode_1[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xdd32, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xdca4, 0xdd34, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xdd35, 0xdca6, 0xdd36, 0x0000, 0x0000, 0x0000, 0x0000, + 0xdd37, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xdca8, + 0xdd38, 0xdca9, 0xdd39, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xdd40, 0xdcaf, 0xdd3f, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xdcab, 0xdd3b, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xdcae, 0xdd3e, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short johab_from_unicode_2[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xd9a7, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xd9a8, 0xd9ab, 0xd9aa, 0xd9ad, 0xd9a6, 0xd9a9, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short johab_from_unicode_3[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xdb51, 0xdb52, 0xdb53, 0xdb54, 0xdb55, 0xdb56, 0xdb57, + 0xdb58, 0xdb59, 0xdb5a, 0xdb5b, 0xdb5c, 0xdb5d, 0xdb5e, 0xdb5f, + 0xdb60, 0xdb61, 0x0000, 0xdb62, 0xdb63, 0xdb64, 0xdb65, 0xdb66, + 0xdb67, 0xdb68, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xdb71, 0xdb72, 0xdb73, 0xdb74, 0xdb75, 0xdb76, 0xdb77, + 0xdb78, 0xdb79, 0xdb7a, 0xdb7b, 0xdb7c, 0xdb7d, 0xdb7e, 0xdb91, + 0xdb92, 0xdb93, 0x0000, 0xdb94, 0xdb95, 0xdb96, 0xdb97, 0xdb98, + 0xdb99, 0xdb9a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short johab_from_unicode_4[] = { + 0x0000, 0xdea7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xdea1, 0xdea2, 0xdea3, 0xdea4, 0xdea5, 0xdea6, 0xdea8, 0xdea9, + 0xdeaa, 0xdeab, 0xdeac, 0xdead, 0xdeae, 0xdeaf, 0xdeb0, 0xdeb1, + 0xdeb2, 0xdeb3, 0xdeb4, 0xdeb5, 0xdeb6, 0xdeb7, 0xdeb8, 0xdeb9, + 0xdeba, 0xdebb, 0xdebc, 0xdebd, 0xdebe, 0xdebf, 0xdec0, 0xdec1, + 0xded1, 0xded2, 0xded3, 0xded4, 0xded5, 0xded6, 0xded8, 0xded9, + 0xdeda, 0xdedb, 0xdedc, 0xdedd, 0xdede, 0xdedf, 0xdee0, 0xdee1, + 0xdee2, 0xdee3, 0xdee4, 0xdee5, 0xdee6, 0xdee7, 0xdee8, 0xdee9, + 0xdeea, 0xdeeb, 0xdeec, 0xdeed, 0xdeee, 0xdeef, 0xdef0, 0xdef1, + 0x0000, 0xded7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short johab_from_unicode_20[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xd939, 0xd93a, 0x0000, 0xd93b, 0x0000, + 0xd93e, 0xd93f, 0x0000, 0x0000, 0xd940, 0xd941, 0x0000, 0x0000, + 0xd9d3, 0xd9d4, 0x0000, 0x0000, 0x0000, 0xd935, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xd9b6, 0x0000, 0xd957, 0xd958, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xd968, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xdd9b, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xdd9c, + 0x0000, 0xdd9d, 0xdd9e, 0xdd9f, 0xdda0, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short johab_from_unicode_21[] = { + 0x0000, 0x0000, 0x0000, 0xd959, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xd9b5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xdc34, 0x0000, 0x0000, 0xd9e0, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xd9e5, 0xd9e2, 0x0000, 0x0000, 0x0000, 0xdc69, 0x0000, + 0x0000, 0x0000, 0x0000, 0xd95a, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xdcf7, 0xdcf8, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xdcfb, 0xdcfc, 0xdcfd, 0xdcfe, 0x0000, + 0xdb40, 0xdb41, 0xdb42, 0xdb43, 0xdb44, 0xdb45, 0xdb46, 0xdb47, + 0xdb48, 0xdb49, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xdb31, 0xdb32, 0xdb33, 0xdb34, 0xdb35, 0xdb36, 0xdb37, 0xdb38, + 0xdb39, 0xdb3a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xd977, 0xd978, 0xd976, 0xd979, 0xd97a, 0xd9d5, 0xd9d8, 0xd9d6, + 0xd9d9, 0xd9d7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xd9a1, 0x0000, 0xd9a2, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short johab_from_unicode_22[] = { + 0xd9a3, 0x0000, 0xd963, 0xd9a4, 0x0000, 0x0000, 0x0000, 0xd964, + 0xd996, 0x0000, 0x0000, 0xd997, 0x0000, 0x0000, 0x0000, 0xd9b3, + 0x0000, 0xd9b2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xd97e, 0x0000, 0x0000, 0xd992, 0xd954, 0x0000, + 0xd960, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xd99e, + 0xd99f, 0xd99d, 0xd99c, 0xd994, 0xd995, 0x0000, 0xd9b1, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xd955, 0xd993, 0xd9b0, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xd991, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xd966, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xd951, 0xd965, 0x0000, 0x0000, 0xd952, 0xd953, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xd99a, 0xd99b, 0x0000, 0x0000, 0xd998, 0xd999, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xd961, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xd936, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short johab_from_unicode_23[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xd962, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short johab_from_unicode_24[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xdce7, 0xdce8, 0xdce9, 0xdcea, 0xdceb, 0xdcec, 0xdced, 0xdcee, + 0xdcef, 0xdcf0, 0xdcf1, 0xdcf2, 0xdcf3, 0xdcf4, 0xdcf5, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xdd77, 0xdd78, 0xdd79, 0xdd7a, + 0xdd7b, 0xdd7c, 0xdd7d, 0xdd7e, 0xdd91, 0xdd92, 0xdd93, 0xdd94, + 0xdd95, 0xdd96, 0xdd97, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xdd5d, 0xdd5e, 0xdd5f, 0xdd60, + 0xdd61, 0xdd62, 0xdd63, 0xdd64, 0xdd65, 0xdd66, 0xdd67, 0xdd68, + 0xdd69, 0xdd6a, 0xdd6b, 0xdd6c, 0xdd6d, 0xdd6e, 0xdd6f, 0xdd70, + 0xdd71, 0xdd72, 0xdd73, 0xdd74, 0xdd75, 0xdd76, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xdccd, 0xdcce, 0xdccf, 0xdcd0, 0xdcd1, 0xdcd2, 0xdcd3, 0xdcd4, + 0xdcd5, 0xdcd6, 0xdcd7, 0xdcd8, 0xdcd9, 0xdcda, 0xdcdb, 0xdcdc, + 0xdcdd, 0xdcde, 0xdcdf, 0xdce0, 0xdce1, 0xdce2, 0xdce3, 0xdce4, + 0xdce5, 0xdce6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short johab_from_unicode_25[] = { + 0xdba1, 0xdbac, 0xdba2, 0xdbad, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xdba3, 0xdbc8, 0xdbc7, 0xdbae, + 0xdba4, 0xdbc2, 0xdbc1, 0xdbaf, 0xdba6, 0xdbc6, 0xdbc5, 0xdbb1, + 0xdba5, 0xdbc4, 0xdbc3, 0xdbb0, 0xdba7, 0xdbbc, 0xdbc9, 0xdbca, + 0xdbb7, 0xdbcb, 0xdbcc, 0xdbb2, 0xdba9, 0xdbbe, 0xdbcd, 0xdbce, + 0xdbb9, 0xdbcf, 0xdbd0, 0xdbb4, 0xdba8, 0xdbd1, 0xdbd2, 0xdbb8, + 0xdbbd, 0xdbd3, 0xdbd4, 0xdbb3, 0xdbaa, 0xdbd5, 0xdbd6, 0xdbba, + 0xdbbf, 0xdbd7, 0xdbd8, 0xdbb5, 0xdbab, 0xdbd9, 0xdbda, 0xdbbb, + 0xdbdb, 0xdbdc, 0xdbc0, 0xdbdd, 0xdbde, 0xdbdf, 0xdbe0, 0xdbe1, + 0xdbe2, 0xdbe3, 0xdbe4, 0xdbb6, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xd9c6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xd971, 0xd970, 0x0000, 0xd9c3, 0xd9c7, 0xd9c8, 0xd9cb, 0xd9ca, + 0xd9c9, 0xd9cc, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xd973, 0xd972, 0x0000, 0x0000, 0xd9ba, 0xd9b9, + 0x0000, 0x0000, 0x0000, 0x0000, 0xd975, 0xd974, 0x0000, 0x0000, + 0xd9b8, 0xd9b7, 0x0000, 0x0000, 0x0000, 0x0000, 0xd96f, 0xd96e, + 0xd9c2, 0xd9c1, 0x0000, 0xd96b, 0x0000, 0x0000, 0xd96d, 0xd96c, + 0xd9c4, 0xd9c5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short johab_from_unicode_26[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xd96a, 0xd969, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xd9cf, 0xd9ce, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xd9d0, 0x0000, 0xd9d1, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xd95f, 0x0000, 0xd95e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xd9bc, 0xd9bd, 0x0000, 0xd9c0, 0xd9bb, 0xd9be, 0x0000, 0xd9bf, + 0xd9cd, 0xd9db, 0xd9dc, 0x0000, 0xd9dd, 0xd9da, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short johab_from_unicode_30[] = { + 0x0000, 0xd932, 0xd933, 0xd938, 0x0000, 0x0000, 0x0000, 0x0000, + 0xd944, 0xd945, 0xd946, 0xd947, 0xd948, 0xd949, 0xd94a, 0xd94b, + 0xd94c, 0xd94d, 0x0000, 0xd97b, 0xd942, 0xd943, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xdda1, 0xdda2, 0xdda3, 0xdda4, 0xdda5, 0xdda6, 0xdda7, + 0xdda8, 0xdda9, 0xddaa, 0xddab, 0xddac, 0xddad, 0xddae, 0xddaf, + 0xddb0, 0xddb1, 0xddb2, 0xddb3, 0xddb4, 0xddb5, 0xddb6, 0xddb7, + 0xddb8, 0xddb9, 0xddba, 0xddbb, 0xddbc, 0xddbd, 0xddbe, 0xddbf, + 0xddc0, 0xddc1, 0xddc2, 0xddc3, 0xddc4, 0xddc5, 0xddc6, 0xddc7, + 0xddc8, 0xddc9, 0xddca, 0xddcb, 0xddcc, 0xddcd, 0xddce, 0xddcf, + 0xddd0, 0xddd1, 0xddd2, 0xddd3, 0xddd4, 0xddd5, 0xddd6, 0xddd7, + 0xddd8, 0xddd9, 0xddda, 0xdddb, 0xdddc, 0xdddd, 0xddde, 0xdddf, + 0xdde0, 0xdde1, 0xdde2, 0xdde3, 0xdde4, 0xdde5, 0xdde6, 0xdde7, + 0xdde8, 0xdde9, 0xddea, 0xddeb, 0xddec, 0xdded, 0xddee, 0xddef, + 0xddf0, 0xddf1, 0xddf2, 0xddf3, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xde31, 0xde32, 0xde33, 0xde34, 0xde35, 0xde36, 0xde37, + 0xde38, 0xde39, 0xde3a, 0xde3b, 0xde3c, 0xde3d, 0xde3e, 0xde3f, + 0xde40, 0xde41, 0xde42, 0xde43, 0xde44, 0xde45, 0xde46, 0xde47, + 0xde48, 0xde49, 0xde4a, 0xde4b, 0xde4c, 0xde4d, 0xde4e, 0xde4f, + 0xde50, 0xde51, 0xde52, 0xde53, 0xde54, 0xde55, 0xde56, 0xde57, + 0xde58, 0xde59, 0xde5a, 0xde5b, 0xde5c, 0xde5d, 0xde5e, 0xde5f, + 0xde60, 0xde61, 0xde62, 0xde63, 0xde64, 0xde65, 0xde66, 0xde67, + 0xde68, 0xde69, 0xde6a, 0xde6b, 0xde6c, 0xde6d, 0xde6e, 0xde6f, + 0xde70, 0xde71, 0xde72, 0xde73, 0xde74, 0xde75, 0xde76, 0xde77, + 0xde78, 0xde79, 0xde7a, 0xde7b, 0xde7c, 0xde7d, 0xde7e, 0xde91, + 0xde92, 0xde93, 0xde94, 0xde95, 0xde96, 0xde97, 0xde98, 0x0000, + 0x0000, 0x0000, 0x0000, 0xd934, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short johab_from_unicode_31[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x8442, 0x8443, 0x8444, 0x8445, 0x8446, 0x8447, 0x8448, + 0x9841, 0x8449, 0x844a, 0x844b, 0x844c, 0x844d, 0x844e, 0x844f, + 0x8450, 0x8451, 0x8453, 0xa841, 0x8454, 0x8455, 0x8456, 0x8457, + 0x8458, 0xbc41, 0x8459, 0x845a, 0x845b, 0x845c, 0x845d, 0x8461, + 0x8481, 0x84a1, 0x84c1, 0x84e1, 0x8541, 0x8561, 0x8581, 0x85a1, + 0x85c1, 0x85e1, 0x8641, 0x8661, 0x8681, 0x86a1, 0x86c1, 0x86e1, + 0x8741, 0x8761, 0x8781, 0x87a1, 0xd931, 0xdad5, 0xdad6, 0xdad7, + 0xdad8, 0xdad9, 0xdada, 0xdadb, 0xdadc, 0xdadd, 0xdade, 0xdadf, + 0xdae0, 0xdae1, 0xdae2, 0xdae3, 0xdae4, 0xdae5, 0xdae6, 0xdae7, + 0xdae8, 0xdae9, 0xdaea, 0xdaeb, 0xdaec, 0xdaed, 0xdaee, 0xdaef, + 0xdaf0, 0xdaf1, 0xdaf2, 0xdaf3, 0xdaf4, 0xdaf5, 0xdaf6, 0xdaf7, + 0xdaf8, 0xdaf9, 0xdafa, 0xdafb, 0xdafc, 0xdafd, 0xdafe, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short johab_from_unicode_32[] = { + 0xdd41, 0xdd42, 0xdd43, 0xdd44, 0xdd45, 0xdd46, 0xdd47, 0xdd48, + 0xdd49, 0xdd4a, 0xdd4b, 0xdd4c, 0xdd4d, 0xdd4e, 0xdd4f, 0xdd50, + 0xdd51, 0xdd52, 0xdd53, 0xdd54, 0xdd55, 0xdd56, 0xdd57, 0xdd58, + 0xdd59, 0xdd5a, 0xdd5b, 0xdd5c, 0xd9df, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xdcb1, 0xdcb2, 0xdcb3, 0xdcb4, 0xdcb5, 0xdcb6, 0xdcb7, 0xdcb8, + 0xdcb9, 0xdcba, 0xdcbb, 0xdcbc, 0xdcbd, 0xdcbe, 0xdcbf, 0xdcc0, + 0xdcc1, 0xdcc2, 0xdcc3, 0xdcc4, 0xdcc5, 0xdcc6, 0xdcc7, 0xdcc8, + 0xdcc9, 0xdcca, 0xdccb, 0xdccc, 0x0000, 0x0000, 0x0000, 0xd9de, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short johab_from_unicode_33[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xdc59, 0xdc5a, 0xdc5b, 0xdc5c, 0xdc5d, 0x0000, 0x0000, 0x0000, + 0xdc4a, 0xdc4b, 0xdc6c, 0xdc6d, 0xdc6e, 0xdc46, 0xdc47, 0xdc48, + 0xdc64, 0xdc65, 0xdc66, 0xdc67, 0xdc68, 0xdc31, 0xdc32, 0xdc33, + 0xdc35, 0xdc3b, 0xdc3c, 0xdc3d, 0xdc3e, 0xdc3f, 0xdc40, 0xdc41, + 0xdc42, 0xdc43, 0xdc44, 0xdc37, 0xdc38, 0xdc39, 0xdc3a, 0xdc4d, + 0xdc4e, 0xdc75, 0xdc76, 0xdc77, 0xdc78, 0xdc71, 0xdc72, 0xdc73, + 0xdc4f, 0xdc50, 0xdc51, 0xdc52, 0xdc53, 0xdc54, 0xdc55, 0xdc56, + 0xdc57, 0xdc58, 0xdc5e, 0xdc5f, 0xdc60, 0xdc61, 0xdc62, 0xdc63, + 0xdc6a, 0xdc6b, 0xd9e3, 0xdc7c, 0xdc36, 0xdc70, 0xdc91, 0xd9e1, + 0xdc4c, 0xdc7d, 0xdc45, 0x0000, 0x0000, 0x0000, 0x0000, 0xdc49, + 0xdc7a, 0x0000, 0x0000, 0xdc7b, 0x0000, 0x0000, 0xdc6f, 0x0000, + 0xd9e4, 0x0000, 0x0000, 0xdc74, 0xdc7e, 0xdc79, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short johab_from_unicode_4e[] = { + 0xf179, 0xf2cb, 0x0000, 0xf662, 0x0000, 0x0000, 0x0000, 0xe742, + 0xf1db, 0xeab2, 0xeabe, 0xf7bb, 0x0000, 0xe996, 0x0000, 0x0000, + 0x0000, 0xf5e4, 0x0000, 0x0000, 0xf4a6, 0xe9e0, 0xeba6, 0x0000, + 0xe29a, 0xe940, 0x0000, 0x0000, 0x0000, 0x0000, 0xecaa, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf3e9, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe1fa, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf93f, 0xe4a1, 0x0000, 0xf3ab, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xeed1, 0xe43c, 0x0000, 0xe29b, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf3fd, 0x0000, 0xea4f, 0xf8ba, 0xf7b9, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe262, 0x0000, + 0xecab, 0xf0e0, 0x0000, 0x0000, 0x0000, 0xe29c, 0xe0f7, 0xeda5, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xe071, 0x0000, 0xe55c, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf071, 0x0000, 0x0000, 0xe973, 0xeaad, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe0eb, 0x0000, + 0x0000, 0x0000, 0xe3ea, 0x0000, 0x0000, 0x0000, 0xe697, 0x0000, + 0xedf8, 0x0000, 0x0000, 0xea50, 0xf133, 0x0000, 0xefcd, 0x0000, + 0xf037, 0xeff6, 0xf8bb, 0x0000, 0xeee9, 0xf2cc, 0x0000, 0x0000, + 0xe376, 0x0000, 0x0000, 0xea51, 0x0000, 0x0000, 0xed3c, 0x0000, + 0x0000, 0xe75c, 0xf7f1, 0x0000, 0xe26f, 0xf834, 0xee42, 0x0000, + 0xf89d, 0x0000, 0x0000, 0xf84d, 0xe158, 0xf2cd, 0xe5d5, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe4a2, 0x0000, + 0x0000, 0x0000, 0xf161, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xed37, 0xf162, 0x0000, 0x0000, 0xf641, 0x0000, 0x0000, 0xe29d, + 0x0000, 0x0000, 0xe361, 0xe0bf, 0x0000, 0xf1a4, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xf1a8, 0xea52, 0xf672, 0xf1dc, + 0xe997, 0xeb49, 0x0000, 0x0000, 0x0000, 0xe55e, 0x0000, 0xf545, + 0x0000, 0x0000, 0x0000, 0xe4db, 0xe645, 0xf134, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xed76, 0x0000, 0xf3ea, 0x0000, 0x0000, 0x0000, 0xe0ec, 0xe0c0, + 0x0000, 0x0000, 0x0000, 0xf194, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short johab_from_unicode_4f[] = { + 0x0000, 0xe37a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf7f2, 0xf135, 0xe36f, 0x0000, 0xeeea, 0xe37b, 0xe961, + 0xe8e9, 0xf9cc, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe8d7, + 0x0000, 0x0000, 0x0000, 0x0000, 0xe871, 0x0000, 0xe646, 0x0000, + 0xecdf, 0x0000, 0xea53, 0x0000, 0xea54, 0xe031, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf27c, 0x0000, 0x0000, 0xe4a3, 0xf247, + 0xf75f, 0x0000, 0x0000, 0x0000, 0x0000, 0xf058, 0xf248, 0xf3ac, + 0xf3a5, 0xefce, 0x0000, 0x0000, 0x0000, 0xf7bc, 0x0000, 0x0000, + 0x0000, 0xedf9, 0xf17a, 0xe9d6, 0xf1c2, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf735, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xedba, + 0xe8d8, 0x0000, 0x0000, 0xe032, 0x0000, 0x0000, 0xe3cd, 0x0000, + 0x0000, 0x0000, 0xf27d, 0x0000, 0x0000, 0x0000, 0xf17b, 0xea55, + 0x0000, 0xece0, 0x0000, 0xe059, 0xf479, 0x0000, 0xe43d, 0x0000, + 0xf646, 0x0000, 0xe252, 0xe657, 0x0000, 0xecb4, 0x0000, 0xf3ad, + 0x0000, 0xf072, 0x0000, 0x0000, 0x0000, 0x0000, 0xe6c2, 0x0000, + 0xf4a7, 0x0000, 0x0000, 0xe1ea, 0x0000, 0xf0ee, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe7b2, 0xf9a5, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf665, 0xe5e2, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe935, + 0x0000, 0x0000, 0xe197, 0xf5b5, 0xed3d, 0x0000, 0x0000, 0x0000, + 0x0000, 0xeeeb, 0xf3d5, 0x0000, 0x0000, 0x0000, 0xf34b, 0x0000, + 0x0000, 0xefb5, 0x0000, 0xe159, 0xf865, 0x0000, 0x0000, 0xebd4, + 0x0000, 0x0000, 0xe6d6, 0x0000, 0x0000, 0xe951, 0x0000, 0xea56, + 0xf891, 0xece1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xebf3, 0xe998, + 0x0000, 0xe29e, 0x0000, 0xe8c4, 0x0000, 0xf793, 0x0000, 0x0000, + 0xe974, 0x0000, 0xedef, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short johab_from_unicode_50[] = { + 0x0000, 0x0000, 0xe941, 0x0000, 0x0000, 0x0000, 0xe5d6, 0x0000, + 0x0000, 0xf4da, 0x0000, 0xe0c1, 0x0000, 0xe8c3, 0x0000, 0x0000, + 0x0000, 0xe7fa, 0xe4ee, 0x0000, 0x0000, 0x0000, 0xf848, 0x0000, + 0x0000, 0xf9a6, 0xf0ef, 0x0000, 0xf536, 0x0000, 0xe15a, 0xf4a8, + 0x0000, 0xf4db, 0x0000, 0xe8a7, 0xf647, 0x0000, 0xe2e6, 0xf394, + 0xe0da, 0x0000, 0xeed2, 0xe6c3, 0xf692, 0xef6e, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xeda6, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xede7, 0x0000, 0x0000, 0x0000, 0xe033, + 0xe137, 0xf059, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf746, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf835, 0x0000, 0x0000, + 0x0000, 0x0000, 0xf3ae, 0x0000, 0xf2ce, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe0ed, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xf640, 0xf2cf, 0xefcf, 0x0000, + 0xf6de, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe263, 0x0000, 0x0000, 0x0000, 0x0000, 0xe999, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe8a8, 0x0000, 0x0000, + 0x0000, 0xe0f8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xeaa1, 0xe9e1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xf5ca, 0xefb6, 0x0000, 0x0000, + 0x0000, 0x0000, 0xeeec, 0xf27e, 0x0000, 0xf4f0, 0x0000, 0xeabf, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe15b, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe351, 0x0000, 0x0000, + 0x0000, 0xf562, 0xeb4a, 0x0000, 0x0000, 0x0000, 0x0000, 0xeac0, + 0x0000, 0xe270, 0x0000, 0x0000, 0x0000, 0xe962, 0xf9ea, 0x0000, + 0x0000, 0x0000, 0xe698, 0x0000, 0x0000, 0x0000, 0xf05a, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xef79, 0x0000, 0xecac, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf4d0, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xe034, 0x0000, 0xe8f8, 0x0000, 0x0000, 0x0000, 0xea57 +}; + +static unsigned short johab_from_unicode_51[] = { + 0xf0f0, 0xf3d6, 0x0000, 0x0000, 0xede2, 0x0000, 0xe15c, 0x0000, + 0x0000, 0xe0fb, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xf073, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xeac1, + 0x0000, 0xe67d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xefd0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xf249, 0x0000, 0x0000, 0x0000, 0x0000, 0xe5e3, + 0x0000, 0x0000, 0xe3d3, 0x0000, 0xedf0, 0x0000, 0x0000, 0x0000, + 0xef44, 0xf0c3, 0x0000, 0xf03a, 0xf89e, 0xf5f6, 0xf34c, 0xf9d4, + 0xeb4b, 0xe253, 0x0000, 0xe34a, 0xf6ba, 0xe795, 0xf6cd, 0x0000, + 0x0000, 0x0000, 0xed3e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xe56f, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe377, 0x0000, 0x0000, 0xf19f, 0x0000, 0xe43e, + 0xf291, 0xe5d7, 0xf074, 0xf732, 0xe1eb, 0xe6bf, 0xf8b1, 0x0000, + 0x0000, 0xe1ec, 0x0000, 0x0000, 0x0000, 0xe942, 0xe37c, 0xe29f, + 0xf292, 0x0000, 0x0000, 0x0000, 0xe152, 0x0000, 0x0000, 0x0000, + 0xe37d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xedf7, 0x0000, + 0x0000, 0x0000, 0xf4fc, 0x0000, 0x0000, 0xf232, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe7b3, 0x0000, 0x0000, 0xe796, 0x0000, 0xefb7, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe23e, 0x0000, 0x0000, 0x0000, 0x0000, 0xe7a2, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe793, 0x0000, 0xe55f, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xeda7, 0xe442, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe639, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xf532, 0x0000, 0xf3d7, 0x0000, + 0x0000, 0xe5d8, 0x0000, 0xf34d, 0xe495, 0xe560, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xe494, 0xf0ea, 0xf9eb, 0x0000, + 0x0000, 0xe8ed, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf955, 0xe0c2, 0x0000, 0x0000, 0x0000, 0x0000, 0xf9d5, 0x0000, + 0xf558, 0xef7a, 0xf5f3, 0x0000, 0x0000, 0xf7de, 0x0000, 0x0000 +}; + +static unsigned short johab_from_unicode_52[] = { + 0xe4ef, 0x0000, 0x0000, 0xf163, 0x0000, 0x0000, 0xe9c2, 0xf2b7, + 0xeed4, 0x0000, 0xe05a, 0x0000, 0x0000, 0x0000, 0xe7fb, 0x0000, + 0x0000, 0xf89f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe63a, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf59a, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xf6f7, 0xe93c, 0x0000, 0x0000, + 0x0000, 0xe6d7, 0xeaa2, 0x0000, 0x0000, 0x0000, 0xe24e, 0x0000, + 0xe4f0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf334, 0xebec, + 0xe2e7, 0xf4cb, 0xf1a9, 0xe04e, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf591, 0x0000, 0x0000, 0x0000, 0xf65e, + 0x0000, 0x0000, 0xea9d, 0xe34b, 0xe5b7, 0xf293, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xf538, 0x0000, 0xe99a, 0x0000, + 0x0000, 0x0000, 0x0000, 0xe0a7, 0x0000, 0xe85e, 0x0000, 0x0000, + 0x0000, 0xeb76, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf1a5, 0xf294, 0x0000, 0x0000, 0x0000, 0x0000, 0xe99b, + 0x0000, 0x0000, 0xf7dc, 0x0000, 0x0000, 0xf4dc, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf794, 0x0000, 0xf59b, + 0x0000, 0x0000, 0x0000, 0xf993, 0x0000, 0x0000, 0x0000, 0xe34c, + 0xe8f9, 0xe6b1, 0x0000, 0x0000, 0x0000, 0xe0fc, 0x0000, 0x0000, + 0x0000, 0xf335, 0xe0fd, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xe5f4, 0x0000, 0x0000, 0x0000, 0xe1ed, + 0xe035, 0x0000, 0x0000, 0xe63b, 0xe352, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf34e, 0xe44d, 0xe134, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf846, 0x0000, + 0x0000, 0xe15d, 0x0000, 0xe89c, 0x0000, 0xf65f, 0x0000, 0xefb8, + 0x0000, 0xe797, 0x0000, 0x0000, 0x0000, 0xe15e, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe492, 0x0000, 0x0000, 0xe561, 0xefed, 0x0000, + 0xe07b, 0xe7e2, 0x0000, 0xf9b2, 0x0000, 0xecad, 0xe44e, 0xe7b4, + 0x0000, 0x0000, 0xeba7, 0xf263, 0xe353, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf9b3, 0x0000, 0xe5e4, 0x0000, 0x0000, + 0xe2e8, 0x0000, 0xf1c3, 0xe342, 0x0000, 0x0000, 0xe2a0, 0xe838 +}; + +static unsigned short johab_from_unicode_53[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf760, 0x0000, 0x0000, + 0xf9d6, 0x0000, 0x0000, 0x0000, 0x0000, 0xf761, 0x0000, 0xf762, + 0xe963, 0x0000, 0x0000, 0x0000, 0x0000, 0xe9e2, 0xf8f9, 0xe8c5, + 0x0000, 0xecb5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf1dd, 0xe254, 0x0000, 0xe0a1, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe9e3, 0x0000, 0x0000, 0x0000, 0x0000, 0xf96d, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf7af, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe49d, + 0xe2a1, 0xed38, 0x0000, 0xf546, 0xf1a0, 0x0000, 0x0000, 0xecae, + 0xeeed, 0xf9c1, 0xe872, 0x0000, 0x0000, 0xe743, 0x0000, 0x0000, + 0x0000, 0xe9e4, 0xf391, 0xf693, 0xf892, 0x0000, 0x0000, 0xe3f5, + 0x0000, 0x0000, 0xe85f, 0x0000, 0xe964, 0x0000, 0xe936, 0x0000, + 0xf2bf, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe25f, 0x0000, + 0xeb69, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe7d6, + 0xf164, 0xf05b, 0x0000, 0x0000, 0xe04f, 0xe3eb, 0x0000, 0xe2e9, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf3ed, 0x0000, 0xe15f, + 0x0000, 0x0000, 0x0000, 0x0000, 0xed9a, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xed7d, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe6d8, 0x0000, 0xf9a7, 0x0000, 0x0000, 0x0000, 0x0000, 0xf03b, + 0xf642, 0x0000, 0x0000, 0x0000, 0x0000, 0xe2f0, 0xf7bd, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xee96, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xe0db, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xeab3, 0x0000, 0x0000, 0x0000, 0x0000, + 0xefd1, 0xf4a9, 0xe370, 0xefd2, 0x0000, 0xe873, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xec62, 0x0000, 0xf632, 0xebf4, + 0x0000, 0x0000, 0x0000, 0xe874, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xeed5, 0xf5bf, 0xe2a2, 0xe1af, 0xe2a3, 0x0000, 0x0000, + 0x0000, 0xe1b0, 0xf3fe, 0xe333, 0xebaf, 0xf733, 0x0000, 0xe036, + 0xf6bb, 0xf47a, 0xea58, 0xefd3, 0x0000, 0x0000, 0x0000, 0x0000, + 0xea59, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short johab_from_unicode_54[] = { + 0x0000, 0x0000, 0x0000, 0xf9de, 0xe050, 0x0000, 0x0000, 0x0000, + 0xf7ea, 0xe3ce, 0xf264, 0x0000, 0xe562, 0xe7a3, 0xf9a8, 0xe6d9, + 0xf6ce, 0xf84e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xe2d6, 0x0000, 0xe6f0, 0x0000, 0xf0e1, + 0xf755, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe99c, 0x0000, + 0x0000, 0xe9c3, 0x0000, 0xf7df, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xeeef, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf9e5, 0xf633, 0x0000, 0xe7fc, 0xf9a9, 0x0000, 0xeeee, 0x0000, + 0x0000, 0x0000, 0xe5e5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf2d0, 0x0000, 0xe1b1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf6a2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf3b2, 0x0000, 0xf3b1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xe1b2, 0x0000, 0xe83b, 0x0000, 0xe037, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xece2, 0xf8bc, 0xe7a4, 0x0000, 0x0000, + 0xf24a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf763, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xf8fa, 0x0000, 0xe2a4, 0x0000, + 0xe99d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xf673, 0x0000, 0x0000, 0x0000, + 0xf1aa, 0x0000, 0x0000, 0xf431, 0xe271, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf836, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf7e0, 0x0000, 0x0000, 0x0000, 0x0000, 0xee7c, 0x0000, 0x0000, + 0xed7e, 0xf7a1, 0x0000, 0x0000, 0xf8ef, 0x0000, 0x0000, 0x0000, + 0xf7eb, 0xf233, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf03c, 0x0000, 0x0000, 0x0000, 0xe038, 0x0000, 0x0000, + 0xf59c, 0x0000, 0x0000, 0x0000, 0x0000, 0xe1d6, 0xf998, 0x0000, + 0x0000, 0x0000, 0xf559, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xf764, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short johab_from_unicode_55[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0xf736, 0x0000, 0xea5a, 0xf456, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe6da, 0x0000, + 0xe4d0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xe755, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf076, + 0x0000, 0xf4dd, 0x0000, 0x0000, 0x0000, 0xed6a, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf674, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xf694, 0x0000, 0xeac2, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe7fd, + 0x0000, 0x0000, 0x0000, 0xe198, 0x0000, 0x0000, 0xe4ba, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xed3f, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf7e1, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xf336, 0x0000, 0x0000, 0x0000, + 0xe0d3, 0x0000, 0x0000, 0x0000, 0xeb4c, 0x0000, 0xf55a, 0xe3d4, + 0x0000, 0xf9aa, 0xf7e2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf547, 0xf9c2, 0xf940, 0x0000, 0xf9ec, 0xe072, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf9bd, + 0x0000, 0xf077, 0xeac3, 0xe3d2, 0xe272, 0x0000, 0xe4a4, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf9ab, 0x0000, 0xeae0, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xf457, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xeef0, 0x0000, 0xe37e, 0x0000, 0x0000, 0xf4aa, + 0x0000, 0x0000, 0x0000, 0xea5b, 0xf648, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xebf5, 0xf3b3, 0x0000 +}; + +static unsigned short johab_from_unicode_56[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf6a3, 0x0000, + 0x0000, 0xe039, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xe2a5, 0x0000, 0x0000, 0xeac4, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xebb0, + 0x0000, 0x0000, 0xf34f, 0x0000, 0xf634, 0x0000, 0xecb6, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf856, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe391, 0x0000, 0x0000, 0xf9ed, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xe9c4, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf999, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xee4f, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xea3d, 0x0000, 0xf84f, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xedf1, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xf1c4, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe435, 0x0000, 0x0000, 0xf9ee, 0x0000, 0x0000, + 0x0000, 0xf5b6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xebf6, 0xea5c, 0x0000, 0x0000, 0xf96e, 0x0000, + 0xf167, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe1dd, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xe647, 0xe1b3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short johab_from_unicode_57[] = { + 0x0000, 0x0000, 0x0000, 0xf765, 0xedd8, 0x0000, 0x0000, 0x0000, + 0xe2ea, 0x0000, 0x0000, 0xe2d0, 0x0000, 0xf05c, 0x0000, 0x0000, + 0x0000, 0x0000, 0xf03e, 0xf03d, 0x0000, 0x0000, 0xe4f1, 0x0000, + 0xe4a5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf6cf, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf234, 0x0000, 0x0000, 0x0000, 0x0000, 0xe334, 0x0000, 0x0000, + 0xf432, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xe392, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf433, 0x0000, 0xf6f8, 0x0000, 0x0000, 0x0000, 0x0000, 0xe343, + 0x0000, 0x0000, 0xe8a9, 0x0000, 0x0000, 0xe4bb, 0xe07c, 0x0000, + 0xf3a6, 0xe0d5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf6e7, 0x0000, 0x0000, 0xe1de, 0x0000, 0xf6a4, 0x0000, + 0x0000, 0x0000, 0xf750, 0x0000, 0x0000, 0x0000, 0xe4dd, 0x0000, + 0xe160, 0x0000, 0x0000, 0x0000, 0x0000, 0xe2a6, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xf695, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xebf7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe4dc, 0x0000, 0x0000, 0xf8a0, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf837, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf0d9, 0x0000, 0xe2a7, 0xf03f, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xed91, 0x0000, 0x0000, 0x0000, 0xefb9, + 0xf3d8, 0x0000, 0x0000, 0xe768, 0x0000, 0x0000, 0xeb94, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xee44, + 0xe99e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf4f1, 0x0000, 0x0000, 0x0000, 0xecd0, 0x0000, 0x0000, 0xf49d, + 0x0000, 0xe8c6, 0xe393, 0x0000, 0xe394, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short johab_from_unicode_58[] = { + 0xe2dc, 0x0000, 0xe4d1, 0x0000, 0x0000, 0xe141, 0xf6d8, 0x0000, + 0xe0a8, 0xf0bc, 0xed4e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf56c, 0x0000, + 0x0000, 0xe952, 0x0000, 0x0000, 0xf337, 0x0000, 0x0000, 0xee50, + 0x0000, 0x0000, 0xe07d, 0x0000, 0x0000, 0x0000, 0x0000, 0xef7b, + 0xede8, 0xe953, 0x0000, 0x0000, 0xf1de, 0xe4f2, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe199, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe264, 0xeeab, 0x0000, 0x0000, 0x0000, 0xe0c3, + 0x0000, 0xebb1, 0x0000, 0x0000, 0xf6b2, 0x0000, 0x0000, 0xe4f3, + 0xe4d2, 0x0000, 0xf5c0, 0x0000, 0x0000, 0x0000, 0xeadd, 0x0000, + 0x0000, 0xf295, 0xeef1, 0x0000, 0xf9b4, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf458, 0x0000, 0x0000, + 0x0000, 0xf4d2, 0x0000, 0x0000, 0xf296, 0x0000, 0xec63, 0x0000, + 0x0000, 0x0000, 0x0000, 0xe161, 0x0000, 0xeaea, 0x0000, 0x0000, + 0x0000, 0xefba, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xe7d7, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xf5cd, 0x0000, 0xf3f2, 0xf857, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe7f8, 0xe552, 0x0000, 0x0000, 0x0000, 0x0000, 0xf675, 0x0000, + 0x0000, 0x0000, 0x0000, 0xe9c5, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xeef2, 0xf1df, 0x0000, 0x0000, 0xe05b, 0x0000, + 0x0000, 0xe8fa, 0x0000, 0x0000, 0x0000, 0xef45, 0x0000, 0xe4a6, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf9b5, 0x0000, + 0x0000, 0xf7c9, 0x0000, 0xed72, 0x0000, 0xf8bd, 0x0000, 0x0000, + 0xe474, 0xe255, 0x0000, 0x0000, 0x0000, 0x0000, 0xe265, 0xe466, + 0x0000, 0x0000, 0x0000, 0x0000, 0xedbd, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xea5d, 0xf195, 0x0000, 0x0000, 0xf1e0, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf17c, 0xf8be, 0xeaeb, 0x0000, 0xebf8, 0x0000, 0x0000 +}; + +static unsigned short johab_from_unicode_59[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf7be, + 0x0000, 0x0000, 0x0000, 0x0000, 0xe395, 0xeb3a, 0xef72, 0x0000, + 0x0000, 0xec64, 0xe49f, 0x0000, 0xeda8, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe7d3, 0x0000, 0x0000, 0x0000, 0x0000, 0xe4de, + 0x0000, 0xf548, 0xf6bc, 0xe99f, 0x0000, 0xef7c, 0xed77, 0x0000, + 0x0000, 0xecf7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf138, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf893, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xedf2, 0x0000, 0x0000, 0xe396, + 0xe3d5, 0xe975, 0x0000, 0x0000, 0x0000, 0x0000, 0xe335, 0xf3b4, + 0xf941, 0xe19a, 0x0000, 0x0000, 0xe9c6, 0xf861, 0x0000, 0xf6df, + 0x0000, 0x0000, 0xf838, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf297, 0x0000, 0xea5e, 0x0000, 0x0000, 0x0000, 0x0000, 0xeef3, + 0x0000, 0x0000, 0xf6ac, 0xf0c4, 0xf1e1, 0xeb3b, 0xe9c7, 0x0000, + 0x0000, 0x0000, 0x0000, 0xe443, 0xe44f, 0x0000, 0x0000, 0x0000, + 0xe05c, 0x0000, 0x0000, 0x0000, 0x0000, 0xf8bf, 0x0000, 0x0000, + 0x0000, 0x0000, 0xedfd, 0xe9e5, 0xe75d, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xf196, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xe397, 0x0000, 0x0000, 0xef7d, 0xe362, + 0x0000, 0xe7d8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf676, 0x0000, 0x0000, + 0xe8aa, 0x0000, 0x0000, 0x0000, 0xf6e0, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xe769, 0x0000, 0xf533, 0x0000, 0x0000, 0xf56d, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf2d1, 0x0000, 0x0000, 0xe7b5, 0x0000, + 0x0000, 0xf1ab, 0x0000, 0xecb7, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf24b, 0xe1b4, 0x0000, 0xeb95, 0xf05d, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf197, 0xef7e, 0x0000, 0xe0a9, 0xf3af, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe05d, 0x0000, + 0xf139, 0x0000, 0xf47b, 0x0000, 0xf9ef, 0x0000, 0xf7f3, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xee51, 0x0000, 0x0000, 0xf168, 0x0000, 0x0000, 0x0000, 0xf1ac +}; + +static unsigned short johab_from_unicode_5a[] = { + 0x0000, 0xf05e, 0x0000, 0xef6f, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xea5f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe436, 0x0000, 0x0000, 0xeef4, 0xe3d6, 0x0000, 0x0000, 0xee52, + 0xece3, 0x0000, 0x0000, 0x0000, 0x0000, 0xed40, 0x0000, 0x0000, + 0x0000, 0xe744, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf635, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xf4de, 0x0000, 0x0000, 0x0000, + 0x0000, 0xe6a5, 0x0000, 0x0000, 0x0000, 0x0000, 0xf6e8, 0x0000, + 0x0000, 0xef56, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xf8e6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe9e6, 0x0000, 0x0000, 0x0000, 0xe9a0, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe76a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe83c, 0xf040, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xecb8, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xe03a, 0xebf9, 0x0000, 0xf041, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf47c, 0x0000, 0x0000, 0xf87e, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf265, 0x0000, 0x0000, 0x0000, 0x0000, 0xf7f4, 0x0000, + 0x0000, 0xe47c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short johab_from_unicode_5b[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf8fb, 0x0000, 0x0000, + 0x0000, 0xf9f0, 0x0000, 0xeb4d, 0xe273, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf756, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xea3e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xeac5, 0x0000, 0x0000, 0xedbe, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf1ad, 0xf87a, 0x0000, 0x0000, 0xe1ee, 0xf1a6, 0x0000, 0xf1ae, + 0xf37d, 0x0000, 0xe9a1, 0x0000, 0xf1af, 0xf99a, 0x0000, 0xe77b, + 0x0000, 0x0000, 0x0000, 0xe19b, 0xe1b5, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf839, 0x0000, 0xebdd, 0x0000, 0x0000, 0x0000, 0x0000, + 0xec65, 0xf1cf, 0x0000, 0x0000, 0x0000, 0xe9a2, 0x0000, 0x0000, + 0xf7ca, 0x0000, 0xf078, 0x0000, 0xeded, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe4eb, 0x0000, 0xefd4, + 0xebfa, 0xed5c, 0x0000, 0xebe4, 0xef57, 0x0000, 0x0000, 0xe26b, + 0x0000, 0x0000, 0x0000, 0xe965, 0x0000, 0xf6b5, 0xf995, 0xf395, + 0xe23f, 0xf3b5, 0xf2d2, 0xef58, 0xf0f1, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe0d4, 0xeb4e, 0xecf8, 0xf079, 0xf942, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xeb96, 0x0000, 0xe2e0, 0x0000, + 0xf235, 0x0000, 0x0000, 0xf83a, 0xee53, 0xebb2, 0xe03b, 0x0000, + 0xece4, 0xefbb, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xec66, + 0xf4f2, 0x0000, 0xf266, 0xf042, 0xe398, 0xf169, 0xe85b, 0xe2a8, + 0x0000, 0x0000, 0x0000, 0x0000, 0xe9a3, 0x0000, 0x0000, 0x0000, + 0xe76b, 0x0000, 0xf7ce, 0xefd5, 0xecd1, 0x0000, 0x0000, 0xe44c, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe73c, 0xf4cc, + 0x0000, 0xe1fb, 0xf666, 0x0000, 0xeef5, 0xef91, 0xecf9, 0xe44b, + 0xf4f3, 0xecfb, 0x0000, 0xea60, 0xe240, 0x0000, 0xe699, 0xf3d9, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf5c1, 0xe954, 0x0000, + 0xf5bb, 0x0000, 0xea61, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short johab_from_unicode_5c[] = { + 0x0000, 0xe976, 0x0000, 0x0000, 0xea62, 0x0000, 0x0000, 0xf1e2, + 0xf298, 0xf05f, 0xf37e, 0xecfc, 0x0000, 0xe4df, 0xe4f4, 0xebb3, + 0x0000, 0xebb4, 0x0000, 0x0000, 0x0000, 0x0000, 0xf563, 0x0000, + 0x0000, 0xeac6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xefd6, 0x0000, 0x0000, 0x0000, + 0xe8ab, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf636, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xecb9, 0xf0c5, 0xf539, 0xe1b6, 0xe49b, 0x0000, 0xe83d, 0xe473, + 0xe2d1, 0x0000, 0x0000, 0x0000, 0x0000, 0xe0dc, 0xe19c, 0x0000, + 0xe2dd, 0x0000, 0x0000, 0xef39, 0x0000, 0xecbb, 0xecba, 0x0000, + 0x0000, 0xeb6a, 0x0000, 0x0000, 0x0000, 0xf299, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xe943, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe4f5, 0x0000, 0xe475, 0x0000, 0xf645, 0xe6db, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xebd5, 0x0000, 0x0000, 0xe57a, + 0x0000, 0xeaa3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf9df, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe399, 0xf1d4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xe0aa, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xed6b, 0x0000, 0xebfb, 0xe0a2, 0x0000, 0x0000, 0x0000, + 0x0000, 0xe4e0, 0x0000, 0xed4f, 0x0000, 0xf8c0, 0x0000, 0xe84e, + 0xed5d, 0x0000, 0xe649, 0x0000, 0x0000, 0x0000, 0xf2c0, 0x0000, + 0xebfc, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf649, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xeac7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xed41, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe977, + 0xe978, 0x0000, 0x0000, 0x0000, 0xf866, 0x0000, 0xe4f6, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf3da, 0x0000, 0xf894, 0x0000, 0x0000 +}; + +static unsigned short johab_from_unicode_5d[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xec9f, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe5cf, 0xe39a, 0x0000, + 0x0000, 0xe1df, 0x0000, 0x0000, 0xf5cb, 0x0000, 0xed92, 0xe0ab, + 0x0000, 0xe6c4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xeca0, + 0x0000, 0xe9da, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xe83e, 0xe07e, 0x0000, 0x0000, 0x0000, + 0xe3f6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xeca1, 0x0000, 0x0000, 0xef73, 0x0000, 0x0000, 0xf4ab, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe2a9, + 0x0000, 0x0000, 0x0000, 0xe4f7, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe593, 0x0000, 0x0000, + 0xe274, 0x0000, 0xef94, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xedf5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xeeae, 0x0000, 0xe64a, 0x0000, 0xeaec, 0xed50, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xef74, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe745, 0x0000, 0x0000, 0x0000, 0xed6c, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf549, 0xf3b6, 0x0000, + 0x0000, 0xec6e, 0xebb5, 0x0000, 0x0000, 0xe1ef, 0xf3a7, 0xe275, + 0xe0dd, 0x0000, 0x0000, 0xe7e3, 0x0000, 0x0000, 0xf4ac, 0x0000, + 0x0000, 0xe39b, 0xf13b, 0xea63, 0xf6e9, 0x0000, 0x0000, 0xf7f5, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xebde, 0xe0ee, 0x0000 +}; + +static unsigned short johab_from_unicode_5e[] = { + 0x0000, 0x0000, 0xecbc, 0xf766, 0x0000, 0x0000, 0xe8ee, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xf9f1, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf6b6, 0x0000, 0x0000, 0x0000, 0x0000, 0xf56e, 0x0000, + 0x0000, 0xf47d, 0x0000, 0xe8d9, 0x0000, 0xf338, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xebfd, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xea64, 0x0000, 0xeb3c, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf1e3, 0x0000, 0x0000, 0xe4e1, 0x0000, + 0xeac8, 0x0000, 0x0000, 0x0000, 0x0000, 0xe7b6, 0x0000, 0xf9ac, + 0xf2d3, 0x0000, 0x0000, 0x0000, 0xed51, 0xf77b, 0x0000, 0xe8ac, + 0x0000, 0x0000, 0x0000, 0x0000, 0xf956, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe73d, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf64a, + 0x0000, 0xe8df, 0xe4d3, 0xf757, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe05e, 0xf751, 0xe444, 0x0000, 0x0000, 0xe944, + 0xf849, 0xe05f, 0x0000, 0xf943, 0xf07a, 0xf07b, 0xe39c, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xf1e4, 0x0000, 0x0000, 0xe9e7, + 0x0000, 0x0000, 0xeac9, 0x0000, 0x0000, 0x0000, 0x0000, 0xeaed, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf24c, 0x0000, 0xf2c1, + 0x0000, 0x0000, 0xe162, 0x0000, 0xe9a4, 0x0000, 0x0000, 0x0000, + 0xeaca, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe4f8, 0xf3a8, + 0x0000, 0x0000, 0x0000, 0xe1b7, 0x0000, 0xf2d4, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xed6d, 0xeaee, 0xe0ac, + 0xefbc, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf07c, 0x0000, + 0x0000, 0x0000, 0xeacb, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf7bf, 0xe63f, 0xe437, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe2aa, 0x0000, 0x0000, 0xe239, 0x0000, 0x0000, 0xe69a, 0x0000, + 0x0000, 0x0000, 0xf3b7, 0xf29a, 0x0000, 0x0000, 0x0000, 0xe7d9, + 0xf4df, 0x0000, 0xf758, 0xe256, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xe5e6, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf576, 0x0000, 0x0000, 0xee55, 0xf2d5, + 0x0000, 0x0000, 0xe0ef, 0xf96f, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short johab_from_unicode_5f[] = { + 0x0000, 0xe937, 0x0000, 0x0000, 0xe467, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xf759, 0x0000, 0x0000, 0x0000, 0x0000, 0xecd2, + 0x0000, 0xecbd, 0x0000, 0xe2e1, 0xf350, 0xf16a, 0x0000, 0xe9d7, + 0xf8f0, 0x0000, 0x0000, 0xf13c, 0x0000, 0x0000, 0x0000, 0xf339, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf867, 0xf8c1, + 0x0000, 0xe450, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xedb0, 0x0000, 0x0000, 0x0000, 0xf1e5, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe0ad, 0x0000, 0xf7b0, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf6a5, 0x0000, 0xe0ae, 0x0000, 0xe83f, 0x0000, 0xe746, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe4a7, 0xf8b2, + 0x0000, 0xf9c4, 0x0000, 0xf13d, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xf8a1, 0x0000, 0x0000, 0x0000, 0xede9, 0xefee, + 0x0000, 0xf4f4, 0xf795, 0xf351, 0xea3f, 0xf740, 0x0000, 0x0000, + 0xf4e0, 0xeeaf, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe8ad, + 0x0000, 0xee45, 0x0000, 0x0000, 0xf7a8, 0x0000, 0x0000, 0xe9d8, + 0xef69, 0xf2d6, 0x0000, 0x0000, 0x0000, 0xe4e2, 0x0000, 0xec6f, + 0x0000, 0x0000, 0xf970, 0xe6c8, 0xf9ad, 0x0000, 0x0000, 0x0000, + 0xeaef, 0xe163, 0xe4f9, 0x0000, 0x0000, 0x0000, 0x0000, 0xe592, + 0xe8c7, 0xea65, 0x0000, 0x0000, 0x0000, 0x0000, 0xf396, 0x0000, + 0xe5d0, 0xedd9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf957, 0xe966, 0xec70, 0x0000, 0x0000, 0x0000, 0xe840, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf4a3, 0x0000, 0xe4ec, + 0x0000, 0xf55b, 0x0000, 0x0000, 0x0000, 0xf9c5, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xecfd, 0x0000, 0xf7b1, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xe39d, 0xf16b, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf5bc, 0xf434, + 0xe75e, 0xe75f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf5f7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf671, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe447, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf8ec, 0x0000, 0xe9c8 +}; + +static unsigned short johab_from_unicode_60[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xed78, + 0x0000, 0x0000, 0xe451, 0x0000, 0x0000, 0x0000, 0xf767, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xe64b, 0xea66, 0x0000, 0x0000, + 0xf6bd, 0xf13e, 0x0000, 0x0000, 0x0000, 0xe371, 0x0000, 0xeb97, + 0xf043, 0x0000, 0xe266, 0x0000, 0x0000, 0x0000, 0x0000, 0xe135, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf198, 0xec71, 0xecbe, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf958, 0x0000, 0x0000, + 0xe1f0, 0x0000, 0xf7f6, 0x0000, 0x0000, 0xeaf0, 0x0000, 0x0000, + 0x0000, 0xedbf, 0x0000, 0x0000, 0x0000, 0xe24f, 0x0000, 0x0000, + 0x0000, 0x0000, 0xf971, 0xf1b0, 0xf9d1, 0xf64b, 0x0000, 0x0000, + 0xf7cf, 0xf0da, 0xe051, 0x0000, 0xe448, 0xe1f1, 0x0000, 0xecd3, + 0xf9e6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xee7d, 0x0000, 0x0000, + 0x0000, 0xecfa, 0x0000, 0x0000, 0xf33a, 0xf7d0, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xf972, 0x0000, 0xf737, 0x0000, + 0x0000, 0x0000, 0xebe5, 0xf29b, 0x0000, 0x0000, 0x0000, 0xeef6, + 0xf07d, 0x0000, 0x0000, 0xf944, 0xf5c2, 0x0000, 0x0000, 0xe6dc, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf397, 0x0000, 0xe9e8, 0xe4ed, 0xf5fc, 0x0000, 0xe84f, 0x0000, + 0xe19d, 0x0000, 0x0000, 0x0000, 0xe4fa, 0xf534, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf2d7, 0x0000, 0xe553, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf8e3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xf8ed, 0x0000, 0xeb3d, 0x0000, 0x0000, 0xf07e, + 0xf8b3, 0xed52, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf677, 0xe46d, 0x0000, 0xeacc, 0x0000, 0x0000, 0xf959, 0x0000, + 0x0000, 0xeda9, 0xeb98, 0xf643, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short johab_from_unicode_61[] = { + 0x0000, 0xebfe, 0x0000, 0x0000, 0x0000, 0x0000, 0xe0f0, 0x0000, + 0xf091, 0xf092, 0x0000, 0x0000, 0x0000, 0xe850, 0xf744, 0xf0f2, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xed53, 0x0000, 0x0000, + 0x0000, 0x0000, 0xefd7, 0xed93, 0x0000, 0x0000, 0x0000, 0xe091, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe267, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf95a, 0x0000, 0x0000, 0x0000, 0xf4e1, 0x0000, 0x0000, 0xe0c4, + 0x0000, 0x0000, 0x0000, 0x0000, 0xece5, 0x0000, 0xe0c5, 0xf044, + 0x0000, 0x0000, 0xefbd, 0x0000, 0xe6c9, 0x0000, 0x0000, 0xf0db, + 0xf1b1, 0x0000, 0xe153, 0xf6be, 0xf95b, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf796, 0x0000, 0xe7b7, 0x0000, 0x0000, + 0xf4d3, 0xf4d4, 0x0000, 0x0000, 0x0000, 0xf6e4, 0x0000, 0xf6d1, + 0x0000, 0x0000, 0xe747, 0xe241, 0xe052, 0x0000, 0x0000, 0xf8b4, + 0xe0c6, 0x0000, 0x0000, 0xf398, 0x0000, 0x0000, 0xe5e7, 0x0000, + 0xf060, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe164, 0xe0af, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf53a, 0xefaf, 0x0000, + 0x0000, 0xf5c3, 0xefd8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe9e9, 0x0000, 0x0000, 0x0000, 0xf3f3, 0x0000, + 0xe5fb, 0xea4b, 0x0000, 0x0000, 0xf59d, 0x0000, 0x0000, 0x0000, + 0xf9f3, 0xf9f2, 0xf6a6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xe9c9, 0x0000, 0x0000, 0xe563, + 0x0000, 0xe138, 0x0000, 0xe851, 0xe165, 0x0000, 0xe7e4, 0x0000, + 0x0000, 0x0000, 0xf85a, 0x0000, 0x0000, 0x0000, 0xede3, 0x0000, + 0x0000, 0x0000, 0xe4bc, 0x0000, 0x0000, 0x0000, 0xe092, 0x0000, + 0x0000, 0x0000, 0x0000, 0xe354, 0x0000, 0x0000, 0x0000, 0xe060, + 0xf83b, 0xf0eb, 0xeef8, 0xe7e5, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe3d7, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xf4a4, 0x0000, 0x0000, 0x0000, 0xe3d8, 0xf973, + 0xf868, 0x0000, 0xf4d5, 0x0000, 0xe2ab, 0x0000, 0x0000, 0xf0f3 +}; + +static unsigned short johab_from_unicode_62[] = { + 0xe5fc, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe4d4, + 0xe1fc, 0x0000, 0xe7e6, 0x0000, 0xec9b, 0xec31, 0xf0d4, 0x0000, + 0xeb99, 0xed42, 0xe19e, 0x0000, 0x0000, 0x0000, 0xf8e4, 0x0000, + 0x0000, 0x0000, 0xf53b, 0x0000, 0x0000, 0x0000, 0x0000, 0xe34d, + 0x0000, 0xe093, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xf2b8, 0x0000, 0x0000, 0x0000, 0xe6c0, 0x0000, + 0xf29c, 0xf9f4, 0x0000, 0x0000, 0xe4e3, 0x0000, 0xf8c2, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe5e8, 0xe8ae, + 0xebb6, 0xf747, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xeb4f, + 0xf8c3, 0xe9ea, 0x0000, 0xec32, 0x0000, 0xf236, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf678, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf697, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe9ca, 0x0000, + 0x0000, 0xe372, 0x0000, 0x0000, 0x0000, 0x0000, 0xe9a6, 0x0000, + 0x0000, 0xe9eb, 0x0000, 0x0000, 0xed9b, 0x0000, 0x0000, 0xecaf, + 0xe39e, 0x0000, 0x0000, 0x0000, 0xf59e, 0x0000, 0x0000, 0x0000, + 0x0000, 0xe14c, 0xf6ea, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xede4, 0xeaf1, 0x0000, 0x0000, 0xf6e1, 0x0000, 0xf7f7, + 0xf2b9, 0x0000, 0x0000, 0xf768, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf7a9, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf769, 0x0000, 0x0000, 0x0000, 0xf24d, 0x0000, 0x0000, + 0x0000, 0xe756, 0x0000, 0x0000, 0xed73, 0xf5ce, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe9d9, 0x0000, 0x0000, 0x0000, 0x0000, 0xe7e7, + 0xe449, 0xe3fe, 0x0000, 0x0000, 0xe875, 0xe860, 0x0000, 0xe3d9, + 0xe268, 0x0000, 0xe0de, 0xf53c, 0xe89d, 0x0000, 0xf679, 0xef95, + 0xe2ac, 0xf392, 0x0000, 0xf59f, 0xe8c8, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xe250, 0xecd4, 0xe3cf, 0xf3f5, + 0x0000, 0xe1f2, 0x0000, 0xe2eb, 0x0000, 0x0000, 0x0000, 0xe1b8, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xeca6, 0xe3da +}; + +static unsigned short johab_from_unicode_63[] = { + 0x0000, 0xf435, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf436, + 0x0000, 0xed5e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xe4fb, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf3a9, 0x0000, 0x0000, 0x0000, 0xf459, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xf2d8, 0xee59, 0x0000, 0xe748, 0xf895, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf4b5, 0x0000, 0x0000, 0xf734, 0x0000, 0x0000, 0xe3f3, + 0xee58, 0x0000, 0x0000, 0x0000, 0x0000, 0xf76a, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe979, + 0xea67, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe0df, 0x0000, + 0x0000, 0x0000, 0xe2ec, 0x0000, 0x0000, 0x0000, 0x0000, 0xf56f, + 0x0000, 0x0000, 0xe3f4, 0xe44a, 0x0000, 0x0000, 0x0000, 0xeaf2, + 0x0000, 0x0000, 0x0000, 0xebb7, 0x0000, 0x0000, 0x0000, 0x0000, + 0xec33, 0xe4fc, 0x0000, 0x0000, 0xf1e6, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe8c9, 0x0000, 0x0000, 0x0000, 0xed9c, 0x0000, + 0xe2de, 0x0000, 0x0000, 0xe260, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe5d3, 0xf4f5, 0xf6ae, 0x0000, 0x0000, 0xf2c8, 0x0000, 0xe1f3, + 0xf5cf, 0xedf3, 0xf352, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe061, 0x0000, 0x0000, 0x0000, 0xf093, 0x0000, 0xe336, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe7da, + 0xf33b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf0e7, 0x0000, + 0x0000, 0x0000, 0xedc0, 0xf945, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xed54, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe139, 0xf9c6, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xf045, 0x0000, 0xedaa, 0xeaba, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short johab_from_unicode_64[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xebdf, 0x0000, 0xe861, + 0x0000, 0x0000, 0x0000, 0x0000, 0xebb8, 0x0000, 0xef96, 0xe4fd, + 0x0000, 0x0000, 0x0000, 0x0000, 0xec34, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xf45a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xe876, 0xf6b3, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xf9cd, 0x0000, 0x0000, 0x0000, 0xf4b6, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf267, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf5c4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xe734, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf437, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe7b8, 0xe7b9, 0xf2c9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe65e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf6cb, 0xeaae, 0xef97, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe445, 0x0000, 0x0000, 0x0000, 0xe4d5, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xf55c, 0xe89e, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xe7e8, 0x0000, 0xf6eb, 0xf5c9, 0x0000, + 0xf4bc, 0x0000, 0xe862, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xe4b5, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xef46, 0x0000, 0x0000, 0xe452, 0xf54a, 0x0000, 0xf6c9, + 0x0000, 0x0000, 0xe13a, 0x0000, 0x0000, 0xf353, 0xe166, 0x0000, + 0x0000, 0x0000, 0xe363, 0x0000, 0xe4bd, 0x0000, 0x0000, 0x0000, + 0xe8fb, 0x0000, 0xe0e0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xe4e4, 0xf699, 0x0000, 0x0000, 0xe5ba, 0xf4cd, 0xe0e1, + 0x0000, 0x0000, 0x0000, 0x0000, 0xf0f4, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xf53d, 0x0000, 0xf93a, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xf6ec, 0x0000, 0x0000, 0x0000, 0xef98, 0x0000 +}; + +static unsigned short johab_from_unicode_65[] = { + 0xe877, 0x0000, 0x0000, 0x0000, 0xf6cc, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xedc1, 0x0000, 0x0000, 0x0000, 0x0000, 0xeb7e, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xe5fd, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe276, 0xf93b, 0xe5bb, 0x0000, 0x0000, 0xf438, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xec35, 0xe1b9, + 0xf094, 0xe0c7, 0x0000, 0xe1f4, 0x0000, 0x0000, 0xe8af, 0xf2d9, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe1ba, 0x0000, 0x0000, + 0xf99b, 0x0000, 0x0000, 0x0000, 0x0000, 0xeaf3, 0xe277, 0xe852, + 0x0000, 0xe2ad, 0x0000, 0x0000, 0x0000, 0x0000, 0xeef9, 0xf738, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf4e2, 0x0000, + 0x0000, 0x0000, 0xe094, 0xeaa4, 0x0000, 0x0000, 0xe554, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xe167, 0xedc2, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe1bb, 0x0000, 0xf2da, 0xf268, 0x0000, 0xe9a7, + 0xea9e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xeb50, 0x0000, + 0x0000, 0x0000, 0xe640, 0xf75a, 0x0000, 0xf99c, 0x0000, 0xe7fe, + 0x0000, 0x0000, 0x0000, 0x0000, 0xea40, 0x0000, 0x0000, 0x0000, + 0xe9ec, 0xe878, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe570, + 0x0000, 0xe69b, 0x0000, 0xe1d7, 0xea68, 0x0000, 0x0000, 0xf49a, + 0x0000, 0xed66, 0x0000, 0x0000, 0xe355, 0xf53e, 0x0000, 0xe9a8, + 0x0000, 0x0000, 0x0000, 0xf1c5, 0xf4d6, 0x0000, 0x0000, 0xea69, + 0xece6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe4a8, + 0x0000, 0xe8b0, 0x0000, 0x0000, 0xedda, 0xecbf, 0x0000, 0x0000, + 0x0000, 0xe8b1, 0x0000, 0x0000, 0x0000, 0xe5e9, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xeb51, 0xf2db, 0x0000, 0x0000, 0xf379, + 0x0000, 0x0000, 0xe6b2, 0x0000, 0x0000, 0x0000, 0x0000, 0xe39f, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe7e9, 0x0000, 0x0000, 0xe3a0, 0x0000, 0xf17d, 0xe4a9, 0x0000, + 0xf439, 0xf354, 0x0000, 0x0000, 0xec72, 0xefef, 0x0000, 0x0000, + 0x0000, 0xf7d1, 0x0000, 0x0000, 0xefd9, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xef6a, 0xe853, 0xe854, 0xe555, 0x0000, 0xeefa +}; + +static unsigned short johab_from_unicode_66[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe1e0, 0xecb0, + 0x0000, 0xe8b2, 0xf8c4, 0x0000, 0xf4e3, 0x0000, 0xe7a5, 0xf8e7, + 0xe9cb, 0xe364, 0x0000, 0xee46, 0xeb3e, 0xf9da, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe945, 0xeb9a, + 0xeeb1, 0x0000, 0x0000, 0x0000, 0x0000, 0xf5f0, 0x0000, 0xe76c, + 0xf1c6, 0x0000, 0x0000, 0x0000, 0x0000, 0xebb9, 0x0000, 0xecc0, + 0xf7c0, 0xeff0, 0x0000, 0x0000, 0xe7db, 0x0000, 0xf4e4, 0x0000, + 0x0000, 0x0000, 0xe946, 0xed79, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf355, 0xecc1, 0xf95c, 0xf95d, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf45b, 0x0000, 0xf45c, 0x0000, 0x0000, 0x0000, 0xed5f, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf3db, 0x0000, 0xf869, 0x0000, 0xf3b8, 0xf9f5, 0xeb9b, + 0x0000, 0x0000, 0x0000, 0x0000, 0xeefb, 0xf947, 0xf974, 0xf8c5, + 0xece7, 0xe749, 0x0000, 0xf69a, 0x0000, 0x0000, 0xe955, 0xe168, + 0x0000, 0x0000, 0x0000, 0xeb3f, 0xf577, 0x0000, 0xf2dc, 0xe2fc, + 0xf2dd, 0x0000, 0xf43a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xf9be, 0x0000, 0x0000, 0xe03c, + 0xeff7, 0xf9c7, 0x0000, 0x0000, 0x0000, 0x0000, 0xeeb2, 0x0000, + 0xf061, 0xeaf4, 0x0000, 0x0000, 0x0000, 0x0000, 0xe3ec, 0xed6e, + 0xedc3, 0x0000, 0x0000, 0x0000, 0x0000, 0xe7a6, 0x0000, 0x0000, + 0xe1bc, 0x0000, 0xf4e5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf1d5, 0x0000, 0x0000, 0xe7ba, 0x0000, + 0x0000, 0x0000, 0xf1e7, 0xf8b5, 0xf76b, 0x0000, 0x0000, 0x0000, + 0x0000, 0xeb77, 0x0000, 0xe169, 0x0000, 0x0000, 0xe556, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xeea5, 0x0000, 0xe5f5, 0xe4be, + 0x0000, 0xf99d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xed94, 0x0000, + 0x0000, 0xeaf5, 0x0000, 0x0000, 0xef9a, 0xf77d, 0x0000, 0x0000, + 0xe257, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf9f6, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xef68, 0x0000, 0xe1d8, 0xeed6, 0xe0d6, 0x0000, 0x0000, 0xe073, + 0xeaf6, 0xf357, 0xf356, 0x0000, 0xe74a, 0x0000, 0xf3f4, 0xf592 +}; + +static unsigned short johab_from_unicode_67[] = { + 0xf5cc, 0x0000, 0x0000, 0xf975, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf055, 0xf095, 0x0000, 0xe9db, 0x0000, 0xe967, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xea9f, 0xf49b, 0x0000, 0xe438, + 0x0000, 0x0000, 0x0000, 0xe760, 0x0000, 0xf358, 0xe3a1, 0xe3a2, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe7d4, 0xe678, + 0xe7ca, 0x0000, 0xe841, 0xe757, 0xe972, 0xf4ce, 0xf5f4, 0x0000, + 0x0000, 0xf3b9, 0x0000, 0x0000, 0xe863, 0x0000, 0xf67a, 0x0000, + 0x0000, 0x0000, 0xe2f5, 0x0000, 0x0000, 0xf9ae, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe062, 0x0000, + 0x0000, 0xeab4, 0x0000, 0x0000, 0x0000, 0x0000, 0xe6dd, 0xf84a, + 0xf237, 0xf5bd, 0x0000, 0xf797, 0x0000, 0x0000, 0xf1e8, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xe571, 0x0000, 0xe3a3, 0xebd6, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf7f8, 0x0000, 0xe8ca, + 0xe0f9, 0xe564, 0x0000, 0xe7dc, 0x0000, 0xf24e, 0x0000, 0xf6ed, + 0x0000, 0x0000, 0x0000, 0xe47e, 0x0000, 0x0000, 0xebe6, 0xf6f9, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe9ed, + 0x0000, 0xef6b, 0x0000, 0xe8b3, 0x0000, 0x0000, 0x0000, 0xe3f7, + 0xeb40, 0x0000, 0x0000, 0xe572, 0x0000, 0xf667, 0x0000, 0xe6f9, + 0x0000, 0x0000, 0xe76d, 0x0000, 0xe1fd, 0xf43b, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe1bd, + 0xf752, 0x0000, 0x0000, 0xf43c, 0x0000, 0x0000, 0xe03d, 0xe03e, + 0xe2ae, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xecc2, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xe947, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe8da, + 0xe7bb, 0xe095, 0xf663, 0xee9a, 0xf097, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xf098, 0x0000, 0x0000, 0xf69b, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xe2af, 0x0000, 0x0000, 0xe063, 0x0000, 0x0000, 0xe03f, + 0xe440, 0xf3ba, 0x0000, 0xe6b3, 0xecc3, 0xf4fd, 0xea6a, 0x0000, + 0x0000, 0x0000, 0x0000, 0xea6b, 0x0000, 0x0000, 0xf2de, 0x0000 +}; + +static unsigned short johab_from_unicode_68[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xec73, 0xf29d, 0x0000, 0x0000, 0xeaf7, 0xe6ca, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xe278, 0xe8db, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xf3bb, 0x0000, 0x0000, 0x0000, 0x0000, 0xeff1, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf847, 0xe356, 0x0000, 0x0000, 0xe13b, 0xf238, 0x0000, 0x0000, + 0xe0fa, 0xf7f9, 0xe19f, 0xe4fe, 0x0000, 0x0000, 0x0000, 0x0000, + 0xed60, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf47e, 0x0000, + 0xe565, 0xeacd, 0x0000, 0xf948, 0xe3d0, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf45d, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf6d2, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe064, + 0x0000, 0xe5d9, 0x0000, 0x0000, 0x0000, 0xe76e, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe1d9, + 0x0000, 0x0000, 0x0000, 0xf239, 0xf64c, 0x0000, 0x0000, 0xe16b, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf359, 0x0000, 0xf99e, + 0x0000, 0xef59, 0xf5a0, 0x0000, 0x0000, 0x0000, 0x0000, 0xeefc, + 0xe6de, 0x0000, 0x0000, 0x0000, 0x0000, 0xea6c, 0x0000, 0xf33c, + 0xe1a0, 0xe1e1, 0x0000, 0xebba, 0x0000, 0xe8ef, 0xe842, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xe3a5, 0xe948, 0x0000, 0x0000, + 0x0000, 0xe798, 0x0000, 0xe3a4, 0x0000, 0xe1e2, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe97a, 0x0000, 0x0000, 0xf399, 0x0000, 0xf35a, + 0xe34e, 0x0000, 0xe9dc, 0x0000, 0x0000, 0x0000, 0x0000, 0xe566, + 0xe4d6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf1d0, + 0xe1a1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xeab5, 0x0000, + 0x0000, 0x0000, 0xeaf8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xe531, 0xe242, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short johab_from_unicode_69[] = { + 0xef5a, 0x0000, 0x0000, 0x0000, 0x0000, 0xf0f5, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xecd5, 0xf5d0, 0x0000, + 0x0000, 0x0000, 0xf5a1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe7a7, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xedab, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xee5b, 0x0000, 0xf5f1, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xedc5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf7a3, 0xeb6b, 0xf67b, 0x0000, 0xe0f1, + 0x0000, 0xe7ea, 0xf5a2, 0x0000, 0x0000, 0x0000, 0xe6d1, 0x0000, + 0xe3f8, 0xf09a, 0xf09b, 0xe843, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf2df, 0x0000, 0x0000, 0xf3ef, 0x0000, 0xedf6, 0xf24f, 0xec74, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe34f, 0x0000, 0xf83c, + 0xf5d1, 0xeeb3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xefbe, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf45e, 0xe8b4, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf95e, 0x0000, 0xe9ee, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xeeb4, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xe6b4, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf6b4, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xe1be, 0x0000, 0xe879, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xe2b0, 0xf6d9, 0xf4e6, 0x0000, 0x0000, + 0xe269, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe23a, 0x0000, 0xe0c8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xe337, 0x0000, 0xf35b, 0x0000, 0xe357 +}; + +static unsigned short johab_from_unicode_6a[] = { + 0x0000, 0x0000, 0xe3e2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe8e0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xe5da, 0x0000, 0xe476, 0x0000, 0x0000, 0x0000, 0xf250, + 0x0000, 0xf798, 0x0000, 0x0000, 0x0000, 0x0000, 0xf5d2, 0xf1e9, + 0x0000, 0xe7bc, 0x0000, 0xedc6, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf5a3, 0x0000, 0x0000, + 0xe864, 0xec37, 0xf8fc, 0x0000, 0x0000, 0xf3dc, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xe096, 0x0000, 0x0000, 0x0000, + 0xef9c, 0x0000, 0x0000, 0xe279, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xeff8, 0xec75, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe349, 0xe594, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe3a6, + 0x0000, 0xeace, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf996, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe4aa, 0x0000, 0x0000, 0x0000, 0xe13c, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf2e0, 0x0000, 0x0000, 0x0000, 0xede5, 0xe365, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe8fc, + 0x0000, 0x0000, 0x0000, 0x0000, 0xf976, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe0fe, 0xf1ea, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xea41, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf7e3, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe532, 0xe2f6, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xe453, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe5ea, 0xf3ee, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf85b, 0x0000, + 0x0000, 0x0000, 0x0000, 0xeda1, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short johab_from_unicode_6b[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0xe3ed, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe2ed, 0x0000, 0xf1eb, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe5b2, 0x0000, 0x0000, 0x0000, 0xe5bc, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf9e2, 0xf4ad, 0x0000, 0xf9db, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xefb0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe3a7, 0x0000, 0x0000, 0xf9e3, 0xe243, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf9e4, 0xf85e, + 0x0000, 0x0000, 0x0000, 0x0000, 0xe040, 0x0000, 0xf6a7, 0x0000, + 0xe2b1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xee32, + 0x0000, 0xf946, 0xf43d, 0xf2e1, 0xf4ae, 0xe956, 0xe7eb, 0x0000, + 0x0000, 0x0000, 0xef70, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xeba8, 0x0000, 0x0000, 0x0000, 0x0000, 0xe5f6, + 0xe2fd, 0x0000, 0x0000, 0xea6d, 0x0000, 0x0000, 0x0000, 0xe7d1, + 0x0000, 0x0000, 0x0000, 0xed7a, 0xf45f, 0x0000, 0xf6bf, 0x0000, + 0x0000, 0xec76, 0xec38, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xecd6, 0x0000, + 0xf1d1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xeff9, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe641, 0xea42, + 0x0000, 0x0000, 0xeb78, 0x0000, 0x0000, 0xe4ab, 0x0000, 0xf0dc, + 0x0000, 0x0000, 0xeaaf, 0x0000, 0xe053, 0x0000, 0x0000, 0xf29e, + 0x0000, 0xf9c3, 0x0000, 0x0000, 0x0000, 0xf0f6, 0xe2b2, 0x0000, + 0x0000, 0x0000, 0x0000, 0xe7ec, 0x0000, 0xe7bd, 0x0000, 0xe76f, + 0x0000, 0x0000, 0xe548, 0xf0be, 0xe9ef, 0x0000, 0xe9f0, 0xe9f1, + 0xe9f2, 0x0000, 0x0000, 0xe7be, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf8c6, 0xe2b3, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short johab_from_unicode_6c[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf29f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xed3b, + 0x0000, 0xe855, 0x0000, 0xe77c, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xe3a8, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xec39, 0x0000, 0x0000, 0xea4c, + 0xeeb5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe8f0, 0x0000, + 0xf2e2, 0xf3f0, 0xe2b4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe8f1, 0x0000, + 0xeb41, 0x0000, 0x0000, 0x0000, 0x0000, 0xeaa5, 0x0000, 0xf7d2, + 0x0000, 0x0000, 0xeefd, 0x0000, 0x0000, 0xee33, 0xf8f1, 0xe0b0, + 0xf43e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe1e7, 0x0000, 0xef6c, 0x0000, 0x0000, 0xeed7, 0x0000, 0x0000, + 0xf6c0, 0x0000, 0xe373, 0x0000, 0x0000, 0x0000, 0xe831, 0x0000, + 0x0000, 0x0000, 0xe14d, 0x0000, 0x0000, 0xe3a9, 0xe9cc, 0x0000, + 0x0000, 0xecfe, 0xe3aa, 0xef3a, 0x0000, 0xf046, 0xf7fa, 0xee5c, + 0xed31, 0x0000, 0x0000, 0x0000, 0xe557, 0x0000, 0x0000, 0x0000, + 0xe7cb, 0x0000, 0xe7d2, 0xe4cb, 0xe799, 0xe839, 0xf5f8, 0x0000, + 0x0000, 0xea6e, 0xf43f, 0xf739, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xe758, 0x0000, 0x0000, 0xf251, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf7c1, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe9f3, 0xf09c, 0x0000, 0xf64d, 0xebbb, 0xe1bf, 0xf564, 0xee5d, + 0x0000, 0xf95f, 0xf8a2, 0x0000, 0xeb6c, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf54b, 0xe865, 0x0000, 0xe9f4, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf8f2, 0x0000, 0xe8f6, 0x0000, 0xea6f, + 0x0000, 0x0000, 0x0000, 0xe8f2, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf76c, 0xf6ee, 0xf0e8, 0x0000, 0xe49c, 0x0000, 0x0000, + 0xf3bc, 0x0000, 0x0000, 0xf86a, 0x0000, 0x0000, 0xe87a, 0xe856, + 0xf6c1, 0x0000, 0x0000, 0xeeb6, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short johab_from_unicode_6d[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xedc7, 0xe63c, 0x0000, 0x0000, 0x0000, + 0x0000, 0xe957, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xeba9, + 0x0000, 0xec3a, 0x0000, 0xe3e3, 0x0000, 0x0000, 0xe567, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf460, 0x0000, 0xf09d, + 0x0000, 0xeb6d, 0xf8f3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xf3bd, 0x0000, 0x0000, 0xec77, 0xf9d7, 0x0000, + 0xe258, 0xf047, 0x0000, 0xf950, 0x0000, 0xf9e7, 0xf6ef, 0x0000, + 0x0000, 0xe6b5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf2ba, 0xf3dd, 0x0000, 0xea43, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xef5b, 0x0000, 0x0000, 0xf76d, 0x0000, + 0x0000, 0xf8c7, 0xe439, 0x0000, 0xe6df, 0x0000, 0xe9a9, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xefb1, 0x0000, 0x0000, 0xf83d, + 0xf669, 0xf896, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf73a, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xee7e, 0x0000, 0xe16c, + 0xebbc, 0xeb91, 0x0000, 0x0000, 0xefbf, 0xf99f, 0xee5e, 0x0000, + 0x0000, 0xebd7, 0x0000, 0xee5f, 0x0000, 0xf593, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xed95, + 0x0000, 0x0000, 0xed9d, 0x0000, 0x0000, 0xf7e4, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf2e3, 0x0000, 0x0000, 0xe2ee, 0xf64e, 0xeb42, 0xf9a0, 0xe3ab, + 0x0000, 0x0000, 0x0000, 0xe6fa, 0x0000, 0x0000, 0x0000, 0xf8c8, + 0x0000, 0xec67, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe533, 0xf39a, 0xe477, 0x0000, 0x0000, 0x0000, 0xebe7, 0x0000, + 0x0000, 0xe4bf, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf2e4, 0x0000, 0xe6c5, 0xf0e2, 0x0000, 0x0000, 0xf977, 0x0000, + 0x0000, 0xed32, 0x0000, 0xec78, 0x0000, 0xee60, 0x0000, 0xf8e8, + 0xf578, 0xedf4, 0xf54c, 0xf565, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short johab_from_unicode_6e[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xeab6, + 0x0000, 0xf949, 0xf252, 0xe097, 0x0000, 0x0000, 0x0000, 0xf2e5, + 0xe0e2, 0xe534, 0x0000, 0xea70, 0xe89f, 0xed56, 0xef4e, 0x0000, + 0x0000, 0x0000, 0x0000, 0xeb6e, 0xf644, 0xf062, 0x0000, 0xf7fb, + 0x0000, 0x0000, 0xeb52, 0x0000, 0xe074, 0x0000, 0xeeb7, 0x0000, + 0xf09f, 0x0000, 0xe7dd, 0x0000, 0xe844, 0xf23a, 0xf8e9, 0x0000, + 0x0000, 0x0000, 0x0000, 0xe8cb, 0xe845, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xf3be, 0x0000, 0x0000, 0xe4ac, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf8c9, 0x0000, + 0xeacf, 0x0000, 0x0000, 0xe4c0, 0xecd7, 0x0000, 0xf2e6, 0xf960, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xefc0, + 0x0000, 0x0000, 0x0000, 0xf5d3, 0x0000, 0x0000, 0xf16c, 0xf6b7, + 0x0000, 0x0000, 0xf048, 0xe3f9, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe958, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf049, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf3de, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xe6b6, 0xe2b5, 0x0000, 0xe7a8, + 0x0000, 0x0000, 0xf17e, 0x0000, 0x0000, 0xe9aa, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe1a2, 0xef3e, 0x0000, 0x0000, 0x0000, 0xebbd, + 0x0000, 0xf461, 0x0000, 0x0000, 0x0000, 0x0000, 0xefc1, 0x0000, + 0x0000, 0x0000, 0xe49e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe8b5, 0x0000, 0xf4e7, 0xe7a0, 0x0000, 0x0000, + 0x0000, 0xf961, 0x0000, 0xf1b2, 0xf53f, 0x0000, 0xf8a3, 0x0000, + 0x0000, 0xe1e8, 0x0000, 0xf23b, 0xe535, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf594, + 0x0000, 0x0000, 0x0000, 0x0000, 0xf269, 0x0000, 0x0000, 0x0000, + 0xf8ca, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe1e3, 0xe74b +}; + +static unsigned short johab_from_unicode_6f[] = { + 0x0000, 0xeddb, 0xf799, 0x0000, 0x0000, 0x0000, 0xf664, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe478, + 0x0000, 0xe0c9, 0x0000, 0x0000, 0xee61, 0xf35c, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe73e, 0x0000, 0xf7d3, 0xe5fe, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xe74c, 0xf440, 0x0000, 0x0000, 0x0000, + 0x0000, 0xec3b, 0xf4e8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf2c2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf1ec, + 0x0000, 0xeeb8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xe8a0, 0x0000, 0x0000, 0xe14e, 0x0000, 0x0000, 0xf49e, + 0xe87b, 0x0000, 0xec68, 0xf1d6, 0x0000, 0x0000, 0xe661, 0xeb43, + 0x0000, 0x0000, 0xf962, 0x0000, 0xf0c8, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe4c1, 0xf35d, 0x0000, + 0xe2f7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xf1d2, 0x0000, 0xe568, 0xe959, 0xe6f1, 0x0000, + 0x0000, 0xeabb, 0x0000, 0x0000, 0xf4a5, 0x0000, 0x0000, 0x0000, + 0xf55d, 0x0000, 0x0000, 0x0000, 0x0000, 0xf3bf, 0xf741, 0x0000, + 0xeffa, 0x0000, 0x0000, 0x0000, 0xf8cb, 0x0000, 0x0000, 0xe065, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf7d4, 0xf6ca, 0x0000, 0x0000, 0xe658, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf978, 0xf4bd, + 0x0000, 0xf2a0, 0x0000, 0xeefe, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xe4c2, 0x0000, 0x0000, 0x0000, 0x0000, 0xe4b6, 0x0000, + 0xe13d, 0xf69c, 0xe642, 0xe468, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xeed8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xeca5, 0x0000, 0x0000, + 0x0000, 0x0000, 0xeeb9, 0x0000, 0x0000, 0x0000, 0x0000, 0xf33d, + 0xf8cc, 0xf0a1, 0x0000, 0x0000, 0xe536, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf8cd, 0x0000, 0xe3fa, 0xf3df, 0x0000, 0x0000, 0xf69d, + 0x0000, 0xea44, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe5eb, 0x0000 +}; + +static unsigned short johab_from_unicode_70[] = { + 0x0000, 0xedc8, 0x0000, 0x0000, 0x0000, 0xf8a4, 0xe549, 0x0000, + 0x0000, 0xea71, 0x0000, 0xed33, 0x0000, 0x0000, 0x0000, 0xe6b7, + 0x0000, 0xf77e, 0x0000, 0x0000, 0x0000, 0xea45, 0x0000, 0x0000, + 0xe662, 0x0000, 0xf7d5, 0xeeba, 0xf0d5, 0xe5f7, 0xf2e7, 0xebbe, + 0x0000, 0x0000, 0x0000, 0xf83e, 0x0000, 0x0000, 0x0000, 0xe679, + 0xe67e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xeebb, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf15b, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe5b3, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xe244, 0x0000, 0x0000, 0x0000, + 0xf8a5, 0xebee, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf6a8, 0x0000, 0x0000, 0x0000, 0x0000, 0xf8ce, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xe74d, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf8fd, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf979, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe2b6, 0x0000, 0x0000, 0x0000, 0xf1c7, 0xf23c, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe16d, 0x0000, 0x0000, + 0x0000, 0x0000, 0xf637, 0x0000, 0x0000, 0x0000, 0xee9c, 0x0000, + 0x0000, 0x0000, 0xf5a4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf9dc, 0xf1b3, 0xe259, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf2e8, 0x0000, 0x0000, 0xebbf, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf86b, 0xe0e3, 0xf6a9, 0x0000, 0xf8a6, + 0x0000, 0x0000, 0x0000, 0xe949, 0x0000, 0x0000, 0x0000, 0xf3c0, + 0xf1c8, 0xf2c3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe63d, 0x0000, 0x0000, 0xf9ce, 0x0000, 0x0000, 0x0000, 0xef31, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf8f4, 0xe3e4, 0x0000, 0x0000, 0x0000, 0xf3f6, 0x0000, 0xee63, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xe16e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf742, 0x0000, 0x0000, 0x0000, 0xe97b, 0x0000, 0x0000 +}; + +static unsigned short johab_from_unicode_71[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0xf9b6, 0x0000, 0x0000, 0x0000, + 0x0000, 0xedea, 0x0000, 0x0000, 0xf3e0, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xe8cc, 0xe9cd, 0x0000, 0x0000, 0x0000, 0xe558, 0x0000, + 0x0000, 0xe7ed, 0x0000, 0x0000, 0x0000, 0x0000, 0xf5a5, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xee9d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xee64, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf9c8, + 0x0000, 0xe631, 0xf9bf, 0x0000, 0xf963, 0x0000, 0xf2a1, 0x0000, + 0xeebc, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe3ee, 0x0000, + 0x0000, 0xee65, 0x0000, 0x0000, 0xeff2, 0x0000, 0xeab0, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xe770, 0xf94a, 0xf9af, 0xf35e, + 0x0000, 0xe8e1, 0x0000, 0x0000, 0xedc9, 0x0000, 0xf1b4, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xeb53, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xecd8, 0x0000, 0x0000, 0x0000, + 0x0000, 0xeffb, 0xf038, 0x0000, 0x0000, 0x0000, 0x0000, 0xf9b7, + 0x0000, 0x0000, 0xf8a7, 0x0000, 0xefc2, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf9f7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xec69, + 0x0000, 0x0000, 0xe97c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xef32, 0x0000, 0x0000, 0x0000, + 0x0000, 0xee92, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf9f8, 0xf9f9, 0x0000, 0x0000, 0x0000, 0xf64f, 0x0000, + 0x0000, 0xeea7, 0x0000, 0xee67, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe595, 0xe559, 0x0000, 0x0000, 0x0000, 0x0000, 0xe69c, 0x0000, + 0xe6f2, 0x0000, 0xebc0, 0x0000, 0xe8e2, 0xee68, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xeebd, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf35f, 0xf4be, 0xec3c, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf5b7, 0xeb92, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf9b8, 0xece8, 0x0000, 0xe537, 0xef9e +}; + +static unsigned short johab_from_unicode_72[] = { + 0xf862, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf791, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe454, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xe3ef, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xf360, 0x0000, 0xf6f0, 0xf243, 0x0000, 0x0000, + 0xf04a, 0x0000, 0xf063, 0x0000, 0x0000, 0xf1c9, 0xe9ab, 0x0000, + 0x0000, 0x0000, 0xedac, 0xf9a1, 0x0000, 0xead0, 0xf143, 0x0000, + 0xead1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf1ed, 0xf748, + 0xf6fa, 0x0000, 0x0000, 0x0000, 0xf73b, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xf570, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe54a, 0xed43, 0x0000, 0xefda, 0x0000, 0xea46, 0x0000, 0xe7bf, + 0x0000, 0xe7c0, 0xe46e, 0x0000, 0x0000, 0x0000, 0x0000, 0xe7cc, + 0x0000, 0xe83a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xeae5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf6e5, 0x0000, 0x0000, 0x0000, 0xe142, 0x0000, 0x0000, + 0xeaf9, 0xe6e0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe54b, 0x0000, 0x0000, 0x0000, 0x0000, 0xf9fa, + 0x0000, 0x0000, 0x0000, 0x0000, 0xe143, 0x0000, 0x0000, 0xe8f3, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xead2, 0x0000, 0xe25a, 0x0000, 0xf26a, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xed74, 0x0000, + 0xf8cf, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe2b7, + 0x0000, 0xf253, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xe27a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xec3d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe6e1, 0xf897, 0x0000, 0x0000, 0xe43a, 0xf73c, 0x0000, 0x0000 +}; + +static unsigned short johab_from_unicode_73[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xeed9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf4e9, 0x0000, + 0x0000, 0x0000, 0x0000, 0xe77d, 0xecc4, 0xf393, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xef75, 0x0000, 0x0000, + 0x0000, 0xeb9c, 0xf254, 0xe7de, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf0a2, 0xf0a3, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf952, 0xf04b, + 0x0000, 0x0000, 0x0000, 0x0000, 0xef3b, 0xea72, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf1ef, 0x0000, 0xef33, 0x0000, 0x0000, 0x0000, 0x0000, 0xe2f1, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe54c, 0x0000, 0xf97a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xeebe, 0x0000, 0xf994, 0x0000, 0x0000, 0xe644, 0x0000, 0x0000, + 0xec3e, 0x0000, 0xe4b7, 0xf85c, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xf86c, 0x0000, 0xf1b5, 0xe6cb, + 0x0000, 0xef3c, 0x0000, 0xef6d, 0x0000, 0x0000, 0xf2e9, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xf54d, 0x0000, 0xe2b8, 0xefdb, + 0xe3ac, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe857, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf0c9, + 0x0000, 0xef5c, 0x0000, 0x0000, 0x0000, 0xea47, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe64c, 0xe4e5, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf86d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe866, 0x0000, 0xe041, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xe858, 0xeaa6, 0x0000, 0xf7b3, 0xf462, 0x0000, 0xe054, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe25b, 0x0000, + 0x0000, 0xe1f5, 0x0000, 0x0000, 0x0000, 0xf9b0, 0xe3e5, 0x0000, + 0xf3c1, 0x0000, 0x0000, 0xec79, 0xe95a, 0xf144, 0xf850, 0x0000, + 0x0000, 0xf8a8, 0xe338, 0x0000, 0x0000, 0xe87c, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe7ee, + 0x0000, 0xeb9d, 0x0000, 0x0000, 0x0000, 0xf2ea, 0xf86e, 0x0000 +}; + +static unsigned short johab_from_unicode_74[] = { + 0x0000, 0xeb54, 0x0000, 0xe2b9, 0x0000, 0xe5ca, 0xe6e2, 0xec3f, + 0x0000, 0xe6b8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xef5d, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf66a, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf2a2, 0xec6a, 0xf69e, 0x0000, 0x0000, 0xf8d0, 0xe3ad, 0x0000, + 0xe1e4, 0x0000, 0xe3ae, 0xe97d, 0xef5e, 0x0000, 0xf39b, 0xe245, + 0xee9e, 0x0000, 0x0000, 0xe6fb, 0xe366, 0xe9f5, 0xf6f1, 0x0000, + 0xf69f, 0x0000, 0xe8f7, 0x0000, 0x0000, 0x0000, 0x0000, 0xf8ea, + 0xefdc, 0xe7c1, 0x0000, 0xf5f2, 0xeb55, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf064, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf7c2, 0x0000, 0xf04c, + 0x0000, 0xe455, 0xf8d1, 0xeec0, 0xf0a5, 0x0000, 0xeafa, 0xeca2, + 0xe6b9, 0x0000, 0xefc3, 0x0000, 0xef9f, 0xef3f, 0x0000, 0x0000, + 0xf463, 0xeec1, 0xe735, 0x0000, 0x0000, 0x0000, 0x0000, 0xe5cb, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe358, 0x0000, + 0x0000, 0x0000, 0xe3af, 0xe6e3, 0x0000, 0x0000, 0x0000, 0xeb56, + 0x0000, 0xe632, 0x0000, 0xf1f0, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe6f3, 0x0000, 0x0000, 0x0000, 0xf964, 0x0000, 0xe867, 0xe16f, + 0x0000, 0xf464, 0x0000, 0xe3b0, 0x0000, 0xe170, 0x0000, 0xe8fd, + 0xf4bf, 0x0000, 0xf361, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf94b, 0x0000, 0xec40, 0x0000, 0x0000, 0xee35, 0x0000, 0x0000, + 0x0000, 0xec6b, 0x0000, 0x0000, 0x0000, 0xeade, 0x0000, 0xeb57, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf491, 0x0000, + 0x0000, 0x0000, 0xe171, 0x0000, 0x0000, 0x0000, 0x0000, 0xe67a, + 0x0000, 0x0000, 0x0000, 0x0000, 0xeec2, 0x0000, 0x0000, 0x0000, + 0xe246, 0x0000, 0xf4c0, 0x0000, 0xe1fe, 0x0000, 0x0000, 0x0000, + 0xf8d2, 0x0000, 0xf79a, 0xf6fb, 0x0000, 0x0000, 0xef4f, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xef47, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf1b6, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short johab_from_unicode_75[] = { + 0x0000, 0xe94a, 0x0000, 0x0000, 0xe144, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf3f7, 0x0000, 0x0000, 0x0000, 0xef48, 0x0000, 0x0000, + 0xe098, 0x0000, 0xed34, 0xf566, 0x0000, 0x0000, 0x0000, 0xeae6, + 0x0000, 0x0000, 0x0000, 0xeaa7, 0x0000, 0xeae7, 0xebc1, 0x0000, + 0xefc4, 0x0000, 0x0000, 0xe95b, 0xefc5, 0x0000, 0x0000, 0x0000, + 0xf2a3, 0xf0a6, 0xe0a3, 0xece9, 0x0000, 0x0000, 0x0000, 0xe3fb, + 0xf2a4, 0x0000, 0xf2eb, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe344, + 0x0000, 0x0000, 0x0000, 0x0000, 0xe1a3, 0x0000, 0x0000, 0xef76, + 0x0000, 0xf2a5, 0x0000, 0xe4cc, 0xe87d, 0x0000, 0x0000, 0x0000, + 0x0000, 0xe6ba, 0x0000, 0xf465, 0xf5e5, 0xe7ef, 0x0000, 0x0000, + 0x0000, 0x0000, 0xf7b4, 0x0000, 0x0000, 0xe5d4, 0xf9cf, 0x0000, + 0x0000, 0x0000, 0xe8e3, 0x0000, 0x0000, 0x0000, 0x0000, 0xf3e1, + 0xe6e4, 0x0000, 0x0000, 0x0000, 0x0000, 0xf8fe, 0xe4d7, 0x0000, + 0xe3b1, 0x0000, 0xe0b1, 0x0000, 0x0000, 0x0000, 0x0000, 0xe3b2, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe0b2, 0xf3c2, + 0x0000, 0x0000, 0xf571, 0xf7b5, 0x0000, 0x0000, 0xebc3, 0xebc2, + 0x0000, 0xf0f7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xeaa8, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe0ca, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xee49, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf76e, 0xf7aa, 0xe099, 0x0000, 0xf1b7, 0x0000, 0x0000, + 0xe4b8, 0xf466, 0x0000, 0x0000, 0xe569, 0xf255, 0xf492, 0x0000, + 0x0000, 0x0000, 0xe042, 0x0000, 0x0000, 0xe94b, 0x0000, 0xf3f8, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf147, 0x0000, 0x0000, + 0x0000, 0x0000, 0xedca, 0x0000, 0xf650, 0xf9dd, 0x0000, 0x0000, + 0xe573, 0xe172, 0x0000, 0xf6d4, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe6e5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe4c3, 0x0000, 0xe736, 0x0000, 0xf651, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe9f6, 0x0000, 0xe1c0, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short johab_from_unicode_76[] = { + 0xeddc, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xedcb, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xebc4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xef40, + 0xf540, 0xf4ea, 0xe87e, 0x0000, 0xe6bb, 0x0000, 0xec41, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xe6aa, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe69d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xed6f, 0x0000, 0xe066, 0x0000, + 0x0000, 0x0000, 0xf0a8, 0x0000, 0x0000, 0x0000, 0xe8fe, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf652, 0x0000, 0x0000, 0xf2bb, 0x0000, 0x0000, 0x0000, + 0x0000, 0xe3db, 0x0000, 0x0000, 0xeb58, 0x0000, 0x0000, 0x0000, + 0xef49, 0x0000, 0xf2a6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe1a4, 0x0000, 0x0000, 0xe596, 0xe8a1, 0xe8dc, 0xe8dd, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xf26c, 0x0000, 0xe0cb, 0xf965, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe27b, 0x0000, + 0xe1c1, 0x0000, 0x0000, 0xf8d3, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf7ab, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xf5d4, 0x0000, 0x0000, 0x0000, 0x0000, 0xe7a9, + 0x0000, 0x0000, 0xefdd, 0xe8cd, 0x0000, 0x0000, 0xe9ce, 0x0000, + 0xeec3, 0x0000, 0xf15c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xf7ec, 0x0000, 0x0000, 0x0000, 0xe0cc, 0x0000, + 0x0000, 0x0000, 0x0000, 0xeb9e, 0xe538, 0x0000, 0xf1d3, 0xe791, + 0x0000, 0xf467, 0x0000, 0xe09a, 0xe891, 0x0000, 0x0000, 0xe456, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe7cd, 0x0000, + 0x0000, 0x0000, 0xe77e, 0x0000, 0xf451, 0x0000, 0x0000, 0x0000, + 0xead3, 0x0000, 0x0000, 0x0000, 0xe892, 0x0000, 0xec7a, 0x0000 +}; + +static unsigned short johab_from_unicode_77[] = { + 0x0000, 0xeae8, 0x0000, 0x0000, 0xe79a, 0x0000, 0x0000, 0x0000, + 0xf6af, 0xe846, 0x0000, 0xe067, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf468, 0x0000, + 0xe79b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf86f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe2ef, + 0xe7c2, 0x0000, 0xf362, 0x0000, 0xed61, 0x0000, 0x0000, 0x0000, + 0xf4b7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf870, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf2ec, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xec42, 0x0000, 0xe54d, 0x0000, 0x0000, 0xe7ce, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf572, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xe539, 0x0000, 0x0000, 0x0000, 0x0000, 0xe1c2, 0xeeda, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf469, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xe7aa, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe74e, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe93d, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xec7b, 0xe69e, 0x0000, 0x0000, + 0xe09b, 0x0000, 0x0000, 0xe56a, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf567, 0xe131, 0x0000, 0x0000, 0xe2ba, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf5b8, + 0x0000, 0x0000, 0x0000, 0xe7c3, 0xe378, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xecc5, 0xf0f8, 0x0000, 0xf441, 0x0000, 0x0000, + 0x0000, 0xe2bb, 0x0000, 0x0000, 0x0000, 0xe4ad, 0xef71, 0xe27c, + 0x0000, 0x0000, 0x0000, 0xeb44, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short johab_from_unicode_78[] = { + 0x0000, 0x0000, 0xea73, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe9f7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf442, 0xf4f6, 0xf66b, + 0x0000, 0x0000, 0x0000, 0x0000, 0xe6fe, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xf76f, 0x0000, 0xf6f2, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe339, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xee6a, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf5a6, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xe6bc, 0xe173, 0x0000, 0x0000, 0xee6b, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xe9dd, 0x0000, 0x0000, 0x0000, + 0x0000, 0xe3b3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf2ed, + 0x0000, 0x0000, 0x0000, 0x0000, 0xe45f, 0xed96, 0xebef, 0x0000, + 0x0000, 0xe9f8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xef5f, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xe075, 0x0000, 0x0000, 0x0000, 0xe931, + 0x0000, 0xeb45, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xf93c, 0xf93d, 0xe737, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf1b8, 0x0000, 0x0000, 0x0000, 0xe8b6, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe46f, 0xf4af, 0x0000, 0x0000, 0xe1a5, 0x0000, + 0xe893, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe738, 0x0000, 0x0000, 0x0000, 0xe174, 0x0000, 0x0000, 0xe3b4, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe068, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xe894, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short johab_from_unicode_79[] = { + 0x0000, 0xf5a7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf5a8, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xee36, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe5ec, 0xe5f8, 0xe895, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xecc6, 0x0000, 0x0000, 0x0000, 0xea74, 0x0000, + 0xea75, 0xe3b5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe3b6, + 0xe3b7, 0xf443, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xefde, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf363, 0xf444, + 0x0000, 0x0000, 0xf364, 0xe0e4, 0xf8d4, 0xf5e6, 0xecea, 0x0000, + 0xea76, 0x0000, 0x0000, 0x0000, 0x0000, 0xead4, 0x0000, 0x0000, + 0xf79b, 0x0000, 0x0000, 0x0000, 0x0000, 0xf33e, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe3b8, 0x0000, 0x0000, 0x0000, 0x0000, 0xe460, + 0x0000, 0xe367, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf931, 0xf2ee, 0xe968, + 0x0000, 0xefdf, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xeddd, 0xf9fb, + 0x0000, 0x0000, 0xeb59, 0x0000, 0x0000, 0x0000, 0xe659, 0x0000, + 0x0000, 0xe53a, 0x0000, 0xedcc, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xefe0, 0x0000, 0x0000, 0x0000, 0xe368, 0xf932, 0xe54e, + 0xec43, 0xea77, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xe94c, 0xe446, 0xf5d5, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xe231, 0xf5a9, 0x0000, 0x0000, 0xe9f9, 0x0000, 0x0000, + 0xe9fa, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf365, + 0x0000, 0x0000, 0x0000, 0x0000, 0xf66f, 0x0000, 0xf46a, 0xed7b, + 0x0000, 0xf493, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf149, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short johab_from_unicode_7a[] = { + 0xf9fc, 0x0000, 0x0000, 0x0000, 0x0000, 0xebaa, 0x0000, 0x0000, + 0xe069, 0x0000, 0x0000, 0xf2ef, 0x0000, 0xf5aa, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xf19b, 0x0000, 0x0000, 0xf73d, + 0x0000, 0xf452, 0xf653, 0x0000, 0xe496, 0x0000, 0x0000, 0xf7a2, + 0xf366, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf39c, 0x0000, + 0x0000, 0xf670, 0x0000, 0x0000, 0x0000, 0x0000, 0xeff3, 0xf453, + 0x0000, 0x0000, 0x0000, 0xe53b, 0xe043, 0xe1a6, 0x0000, 0xe1c3, + 0xe1da, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe7cf, 0x0000, + 0x0000, 0xf654, 0x0000, 0x0000, 0x0000, 0xf26d, 0xeec4, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xec44, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xeae2, 0xeedb, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xef41, 0x0000, 0xf93e, 0x0000, 0x0000, 0x0000, 0x0000, + 0xedcd, 0x0000, 0x0000, 0x0000, 0xf87b, 0x0000, 0xe2bc, 0x0000, + 0x0000, 0xe2e2, 0xe1f6, 0x0000, 0x0000, 0xf2f0, 0x0000, 0xf54e, + 0x0000, 0xe55d, 0x0000, 0x0000, 0xf4b8, 0x0000, 0x0000, 0x0000, + 0xefa1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xf494, 0xf4eb, 0x0000, 0xf367, 0x0000, 0x0000, + 0xe2d7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe2df, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xef50, 0xef51, 0x0000, 0x0000, 0x0000, 0xe2e3, 0xefa2, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe33a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xf4c1, 0xe33b, 0x0000, 0xe574, + 0x0000, 0x0000, 0xf2bc, 0xe731, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe7df, + 0x0000, 0xf4d7, 0x0000, 0x0000, 0x0000, 0xe94d, 0x0000, 0xe175, + 0xf1f1, 0x0000, 0x0000, 0xf3e2, 0x0000, 0xe56b, 0x0000, 0x0000, + 0x0000, 0x0000, 0xec45, 0x0000, 0x0000, 0xe076, 0x0000, 0xe4ae, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe176, 0x0000, + 0x0000, 0xf3d3, 0xf5e7, 0x0000, 0x0000, 0x0000, 0x0000, 0xe06a +}; + +static unsigned short johab_from_unicode_7b[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf8ee, + 0x0000, 0xebc5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xeae9, 0x0000, 0xf26e, 0x0000, 0x0000, 0xf6c2, 0x0000, + 0xe732, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe9ac, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xf33f, 0xe64d, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xebab, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf7b6, 0x0000, + 0x0000, 0xe597, 0x0000, 0xe359, 0xf2a7, 0xec7c, 0x0000, 0xe8ea, + 0xe25c, 0xf5e8, 0xf6d5, 0x0000, 0xe4cd, 0x0000, 0xf4fe, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe345, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xeba0, 0x0000, 0xeafb, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xee6d, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xef34, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe0cd, + 0x0000, 0x0000, 0x0000, 0xf2a8, 0x0000, 0x0000, 0x0000, 0xf244, + 0x0000, 0x0000, 0x0000, 0x0000, 0xe868, 0xe3b9, 0x0000, 0xeaa9, + 0x0000, 0x0000, 0xf4b0, 0x0000, 0x0000, 0xe154, 0x0000, 0x0000, + 0x0000, 0xe247, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf2a9, 0x0000, 0x0000, + 0x0000, 0xead5, 0x0000, 0x0000, 0xf1d7, 0x0000, 0x0000, 0x0000, + 0xf256, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf2bd, 0xf966, 0x0000, 0x0000, 0xe8f4, 0x0000, 0xf2aa, 0xf749, + 0x0000, 0xf5e9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xecd9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xebc6, 0x0000, 0x0000, 0x0000, 0xe54f, 0x0000, 0x0000, 0x0000, + 0x0000, 0xea78, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short johab_from_unicode_7c[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf37a, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xf4c2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe4af, 0x0000, + 0x0000, 0xe06b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf967, + 0x0000, 0x0000, 0xf1d8, 0xebc7, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf568, 0xe643, 0xe9ad, + 0x0000, 0x0000, 0x0000, 0xe5be, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xf3c3, 0xf26f, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe469, 0x0000, 0x0000, 0x0000, 0xf569, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xe6e6, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xe847, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xe9fb, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xe9cf, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe733, 0x0000, 0x0000, 0xe869, 0x0000, 0xf368, + 0xf2c4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xebd8, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf3d4, 0x0000, 0xf1f2, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe5db, 0x0000, + 0x0000, 0xe5dc, 0xf4c4, 0xe0d7, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xec46, 0x0000, 0x0000, 0x0000, 0x0000, 0xf2f1, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xf8d5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe4d8, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe9d0, 0xf369, + 0xe0b3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe5dd, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xe1a7, 0x0000, 0x0000, 0xe33c, 0x0000 +}; + +static unsigned short johab_from_unicode_7d[] = { + 0xe3ba, 0x0000, 0xf3c4, 0x0000, 0xedb3, 0xf8f5, 0xefe1, 0xf9e0, + 0xf94c, 0x0000, 0xe832, 0xe833, 0x0000, 0xe431, 0x0000, 0x0000, + 0xe491, 0x0000, 0x0000, 0x0000, 0xec7d, 0x0000, 0x0000, 0xea79, + 0xe26c, 0xf445, 0xe374, 0xe9d1, 0x0000, 0x0000, 0x0000, 0x0000, + 0xebc8, 0xe8b7, 0xeaa0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf1b9, 0xf3c5, 0x0000, 0xf4cf, 0xe479, + 0xebac, 0x0000, 0x0000, 0xeceb, 0x0000, 0xf257, 0x0000, 0x0000, + 0x0000, 0xebc9, 0xe09c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xf39d, 0xf871, 0xf36a, 0xe177, 0xe896, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe14f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe27d, 0x0000, + 0x0000, 0xe5a9, 0xf872, 0x0000, 0x0000, 0x0000, 0xe375, 0x0000, + 0xf0d6, 0x0000, 0xf16f, 0x0000, 0x0000, 0x0000, 0xeafc, 0x0000, + 0x0000, 0xf6d6, 0xea7a, 0xe0b4, 0x0000, 0x0000, 0xf2be, 0x0000, + 0x0000, 0xe145, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe2bd, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf2f2, 0xec47, + 0x0000, 0x0000, 0x0000, 0xe178, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xf39e, 0x0000, 0x0000, 0x0000, + 0xe461, 0x0000, 0xf3c6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xec48, 0xf0ab, 0x0000, 0x0000, + 0x0000, 0xe0b5, 0xe761, 0x0000, 0xf55e, 0xf4f7, 0x0000, 0x0000, + 0xe6c6, 0x0000, 0xe3bb, 0xf6aa, 0x0000, 0xf1ca, 0xe497, 0xe79c, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf655, + 0x0000, 0x0000, 0xe3cc, 0xe9fc, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xeafd, 0x0000, + 0xf7e5, 0x0000, 0xeb5a, 0x0000, 0x0000, 0xf49f, 0xe4b0, 0x0000, + 0xf595, 0xe859, 0x0000, 0xee6e, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf74a, 0xef60, 0x0000, 0x0000, 0xe79d, 0x0000, 0x0000, 0xf065, + 0x0000, 0x0000, 0x0000, 0x0000, 0xe633, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf656, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short johab_from_unicode_7e[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf46b, 0xed9e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xef42, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xe86a, 0x0000, 0xf46c, 0xf8d6, 0xefb2, + 0x0000, 0xf23d, 0x0000, 0xf873, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xe97e, 0x0000, 0x0000, 0xf5ea, 0xee70, + 0x0000, 0xf39f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe47a, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf5c5, 0xf270, 0x0000, + 0x0000, 0xe8e5, 0x0000, 0xe9de, 0x0000, 0x0000, 0xe7f0, 0xefa3, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xf3f9, 0x0000, 0xf454, 0xeb5b, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xefa4, 0x0000, + 0x0000, 0xec49, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xecb1, 0xf97b, 0xe1a8, 0x0000, 0xe146, 0x0000, 0x0000, + 0xf36b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xee4a, 0x0000, 0x0000, 0xe1a9, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xf4c3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xebd9, 0x0000, 0x0000, 0xf2ab, + 0x0000, 0x0000, 0x0000, 0xeec5, 0x0000, 0x0000, 0xeb79, 0x0000, + 0xf4c5, 0x0000, 0x0000, 0xe550, 0xe5bf, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short johab_from_unicode_7f[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe9ae, 0x0000, + 0xf7fc, 0x0000, 0xe150, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xeda2, 0x0000, 0x0000, 0x0000, + 0xe248, 0x0000, 0x0000, 0x0000, 0xe762, 0xf7d6, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xf3aa, 0xe261, 0x0000, 0x0000, 0xf657, 0x0000, + 0xe8eb, 0x0000, 0xeafe, 0x0000, 0x0000, 0xe771, 0x0000, 0xf6f3, + 0x0000, 0xe6e7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe3dc, 0x0000, 0x0000, + 0xe3bc, 0x0000, 0xedcf, 0x0000, 0xe0b6, 0x0000, 0xe848, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xe1c4, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe64e, 0x0000, 0x0000, 0x0000, 0xec4a, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xe2d8, 0x0000, 0x0000, 0x0000, + 0xeb5c, 0xf0f9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xf9fd, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe6e8, 0xe0d8, 0x0000, 0x0000, 0x0000, 0xefe2, 0x0000, 0x0000, + 0x0000, 0xef4a, 0x0000, 0x0000, 0x0000, 0xecc7, 0x0000, 0x0000, + 0x0000, 0x0000, 0xf15d, 0x0000, 0xf15e, 0x0000, 0xe64f, 0x0000, + 0x0000, 0x0000, 0xeca7, 0x0000, 0xead6, 0xf9e8, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf271, + 0xf638, 0xe9fd, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf74b, 0x0000, 0xef61, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf7d7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xe27e, 0x0000, 0x0000, 0xf15f, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short johab_from_unicode_80[] = { + 0xefa5, 0xe457, 0x0000, 0xe1c5, 0x0000, 0xf1ba, 0xe3bd, 0x0000, + 0x0000, 0xe2be, 0x0000, 0x0000, 0xf14b, 0x0000, 0x0000, 0x0000, + 0xe441, 0x0000, 0x0000, 0x0000, 0x0000, 0xe179, 0x0000, 0xe7c4, + 0xeffc, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe3be, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf14c, 0x0000, 0x0000, 0xedad, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf6b0, 0x0000, 0xe17a, + 0x0000, 0x0000, 0x0000, 0xe4c4, 0x0000, 0x0000, 0xe650, 0x0000, + 0x0000, 0x0000, 0xe69f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xeba1, 0x0000, + 0xea4d, 0x0000, 0xf639, 0x0000, 0x0000, 0x0000, 0xe834, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe634, + 0xf5c6, 0x0000, 0xeba2, 0xefc6, 0x0000, 0x0000, 0x0000, 0xf455, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf579, 0xe46a, 0xf0d3, + 0x0000, 0x0000, 0x0000, 0x0000, 0xf14d, 0xec6c, 0xea7b, 0xf36c, + 0x0000, 0xf0bf, 0x0000, 0xe493, 0xe3bf, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf5ab, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf7fd, 0x0000, 0xe06c, 0x0000, 0x0000, + 0x0000, 0xe1c6, 0xf446, 0x0000, 0x0000, 0xe9fe, 0x0000, 0x0000, + 0x0000, 0xe147, 0xe8b8, 0x0000, 0x0000, 0x0000, 0x0000, 0xe379, + 0x0000, 0xe26d, 0xf0c0, 0x0000, 0xf9a2, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xf75b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf066, 0xf3b0, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xe8ce, 0x0000, 0xf6c3, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe8cf, 0xe0a4, 0x0000, 0x0000, 0xf770, 0x0000, + 0x0000, 0xf8d7, 0x0000, 0x0000, 0xf0ca, 0xeb31, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xe25d, 0x0000, 0x0000, 0xe56c, 0x0000, 0x0000, 0x0000, + 0xf9d8, 0x0000, 0x0000, 0x0000, 0x0000, 0xe498, 0x0000, 0x0000 +}; + +static unsigned short johab_from_unicode_81[] = { + 0x0000, 0x0000, 0xf447, 0x0000, 0x0000, 0xf898, 0xf63a, 0xf899, + 0xe776, 0x0000, 0xf541, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xef62, 0x0000, 0xe055, 0xe17b, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xec7e, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xec4b, 0x0000, 0xf6ad, 0x0000, 0x0000, 0x0000, 0xf771, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf4ec, 0x0000, 0x0000, 0x0000, 0x0000, 0xea31, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xed9f, 0x0000, 0x0000, 0xecec, 0x0000, + 0xe9af, 0xe9b0, 0x0000, 0x0000, 0xe0b7, 0xef63, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xeba3, 0xe470, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf3a0, 0x0000, 0x0000, 0x0000, 0x0000, + 0xefa6, 0xe0f2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf1f3, 0xe969, 0xeb5d, 0x0000, 0x0000, 0x0000, 0x0000, 0xf6da, + 0xe8b9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe13e, 0x0000, 0xe86b, 0x0000, 0x0000, 0x0000, 0x0000, 0xe1c7, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe9b1, 0x0000, 0xe73f, 0xeca3, 0x0000, 0x0000, + 0xe291, 0x0000, 0x0000, 0xf495, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf743, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xeb5e, 0x0000, 0xf5fd, 0x0000, 0x0000, + 0x0000, 0x0000, 0xf0ec, 0x0000, 0x0000, 0xe4c5, 0xf97c, 0xe46b, + 0xe57b, 0x0000, 0xea32, 0x0000, 0x0000, 0x0000, 0xede6, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf340, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe432, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf1f4, + 0x0000, 0x0000, 0x0000, 0xeced, 0x0000, 0xef52, 0x0000, 0xf1f5, + 0xe6fc, 0x0000, 0xf1bb, 0x0000, 0x0000, 0xf63b, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf448, 0xf658, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe4e6, 0xf46d, 0xe2bf, 0x0000, 0xf0ac, 0x0000 +}; + +static unsigned short johab_from_unicode_82[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe2c0, 0x0000, 0xee38, + 0xf9e9, 0x0000, 0xe2c1, 0x0000, 0xeb6f, 0xea7c, 0x0000, 0x0000, + 0x0000, 0x0000, 0xeb32, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf54f, 0xec91, 0x0000, 0xe7f1, 0xf3c7, + 0x0000, 0xe0b8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xf7fe, 0xe8ba, 0xe897, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf67c, 0xe86c, 0xf874, + 0x0000, 0xeb5f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe9b2, 0x0000, 0x0000, 0x0000, 0x0000, 0xee39, 0x0000, 0xf2f3, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf4ed, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xf0fa, 0x0000, 0xf7e6, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe06d, 0xe5de, + 0x0000, 0xe06e, 0xeae4, 0x0000, 0x0000, 0x0000, 0xee9f, 0x0000, + 0xf5ac, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xed97, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xefe3, 0x0000, 0xf1cb, 0xe2e4, 0x0000, + 0x0000, 0x0000, 0xe763, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xe9b3, 0xe57c, 0x0000, 0x0000, 0xf449, 0x0000, 0xeab7, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe0ce, 0xf8d8, 0x0000, + 0x0000, 0xe369, 0x0000, 0x0000, 0xe9d2, 0xf6f4, 0xeedc, 0xed35, + 0x0000, 0xf933, 0x0000, 0xe8bb, 0x0000, 0x0000, 0x0000, 0xf44a, + 0xeffd, 0xe35a, 0x0000, 0xf5d6, 0xe7c5, 0xed44, 0x0000, 0xf1a7, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf04d, 0xeea0, 0x0000, 0xf6c4, 0xf5ad, 0x0000, 0xe7e0, + 0x0000, 0x0000, 0x0000, 0xe044, 0x0000, 0x0000, 0xf772, 0xe2c2, + 0x0000, 0xf14e, 0x0000, 0x0000, 0x0000, 0xedae, 0xe1c8, 0xf258, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xeec8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe1c9, 0xf7b7, 0x0000 +}; + +static unsigned short johab_from_unicode_83[] = { + 0x0000, 0xf3e8, 0xe7f2, 0xe8f5, 0xe045, 0xe7c6, 0x0000, 0x0000, + 0x0000, 0xe759, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe7ab, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf1bc, 0x0000, 0x0000, 0xe764, 0x0000, 0x0000, 0x0000, 0xe96a, + 0x0000, 0xec4c, 0x0000, 0x0000, 0xf97d, 0xf170, 0xe4a0, 0x0000, + 0xefc7, 0xee3a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xec92, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf84b, + 0x0000, 0xf5ae, 0xf8aa, 0x0000, 0x0000, 0x0000, 0x0000, 0xf19d, + 0x0000, 0xf14f, 0xf968, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xe575, 0x0000, 0x0000, 0x0000, 0xf7c3, + 0x0000, 0x0000, 0x0000, 0xf272, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xe6e9, 0xf1f6, 0x0000, 0x0000, 0x0000, 0xea7d, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe17c, 0x0000, + 0xecee, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xef64, 0x0000, + 0x0000, 0x0000, 0xf89a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xe9b4, 0xed45, 0xe740, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe765, 0x0000, 0x0000, + 0x0000, 0xf57a, 0x0000, 0x0000, 0x0000, 0xe249, 0x0000, 0x0000, + 0x0000, 0xe462, 0xe2d2, 0x0000, 0xe346, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xe232, 0x0000, 0x0000, 0xf4ee, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xf4f8, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xe95c, 0x0000, 0xe35b, 0x0000, 0x0000, 0x0000, 0xf934, + 0xe1ca, 0xe499, 0xea33, 0x0000, 0xed70, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf259, 0x0000, 0x0000, 0x0000, 0xec6d, 0x0000, 0x0000 +}; + +static unsigned short johab_from_unicode_84[] = { + 0x0000, 0x0000, 0x0000, 0xf5fe, 0xe53c, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe5d1, 0x0000, 0xe792, 0xf753, 0xf067, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf5d7, 0x0000, 0x0000, 0xe74f, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf9c0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf0ad, 0x0000, 0x0000, 0x0000, 0x0000, 0xe3e6, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xeb93, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf25a, + 0x0000, 0x0000, 0x0000, 0xe077, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf773, 0x0000, 0xe56d, 0x0000, 0x0000, 0xf068, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf8d9, 0xf1f7, 0x0000, 0x0000, 0xedb5, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe33d, 0x0000, 0x0000, + 0x0000, 0x0000, 0xf3f1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xec4d, 0x0000, 0x0000, 0x0000, 0xecc8, 0x0000, 0x0000, 0x0000, + 0x0000, 0xe7d5, 0x0000, 0x0000, 0xeaaa, 0x0000, 0x0000, 0x0000, + 0x0000, 0xe8bc, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xf774, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf3fa, 0x0000, 0x0000, 0xedb6, 0xf4ef, 0x0000, 0x0000, 0xf8da, + 0xebe0, 0x0000, 0xe7ac, 0x0000, 0xf5eb, 0x0000, 0xeb46, 0x0000, + 0x0000, 0xefc8, 0x0000, 0xe0cf, 0x0000, 0xecc9, 0x0000, 0x0000, + 0x0000, 0xea7e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xec4e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xe991, 0x0000, 0xe635, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xec93, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xe6a0, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short johab_from_unicode_85[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xe7a1, 0x0000, 0xe750, 0xe96b, 0x0000, 0x0000, 0xf1bd, + 0xeab8, 0x0000, 0xf035, 0x0000, 0x0000, 0x0000, 0xe6ad, 0x0000, + 0x0000, 0xf4f9, 0x0000, 0xf1f8, 0x0000, 0xf5c7, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xebca, 0xf0e3, 0x0000, 0xf46e, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf75c, 0x0000, 0xf069, + 0x0000, 0xe4c6, 0x0000, 0xe8e6, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf5af, 0x0000, 0x0000, 0x0000, 0x0000, 0xe292, 0x0000, + 0x0000, 0x0000, 0x0000, 0xeffe, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf8b6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xec94, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe2f2, 0xf6b9, 0xe7f3, 0x0000, 0x0000, 0xebcb, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xe86d, 0x0000, 0x0000, 0xe849, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf0fb, + 0x0000, 0xe0b9, 0x0000, 0x0000, 0xf1f9, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xeb70, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf550, 0x0000, + 0xf9bc, 0xeab1, 0xecef, 0x0000, 0x0000, 0x0000, 0x0000, 0xeb33, + 0xf9b9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xf341, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xe1cb, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf1be, 0x0000, 0x0000, 0x0000, 0xe3fc, 0xecf0, 0xf1fa, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xefe4, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xe5ed, 0xeedd, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xe598, 0xedb7, 0x0000, 0x0000, + 0x0000, 0xe8e7, 0xec4f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf25b, + 0x0000, 0x0000, 0xe6f4, 0xf36d, 0x0000, 0x0000, 0x0000, 0xe23b +}; + +static unsigned short johab_from_unicode_86[] = { + 0x0000, 0x0000, 0xeede, 0x0000, 0x0000, 0x0000, 0xe458, 0xebcc, + 0x0000, 0x0000, 0xef43, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xedee, 0xe932, + 0x0000, 0x0000, 0xeb60, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe3f0, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe3dd, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf8db, 0x0000, + 0xf7cb, 0x0000, 0x0000, 0x0000, 0xe0f3, 0xf535, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf858, 0xe459, 0x0000, 0xefe5, 0xf8dc, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf9d0, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf8f6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe835, 0x0000, 0xe8bd, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf172, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xe1f7, 0xf36e, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf659, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xea91, + 0x0000, 0x0000, 0x0000, 0xe4b1, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xf97e, 0x0000, 0x0000, 0x0000, + 0x0000, 0xef53, 0x0000, 0xf3c8, 0x0000, 0x0000, 0x0000, 0xe293, + 0x0000, 0x0000, 0x0000, 0x0000, 0xf7ed, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf496, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xed46, 0x0000 +}; + +static unsigned short johab_from_unicode_87[] = { + 0xf5b9, 0x0000, 0xe992, 0xecf1, 0x0000, 0x0000, 0x0000, 0x0000, + 0xef35, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf44b, 0x0000, 0xea34, 0x0000, 0xe85c, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe079, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xecda, 0x0000, 0xf969, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf06a, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf7c4, 0x0000, + 0xeca4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xf8dd, 0x0000, 0xf2ca, 0x0000, + 0xef54, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe5cc, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf0d7, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe7ad, + 0x0000, 0x0000, 0xf8ab, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xe4d9, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe3de, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xf66e, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe898, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xeb61, 0x0000, 0x0000, 0xefa8, + 0x0000, 0x0000, 0xf5f9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf83f, 0x0000, 0xf0fc, 0x0000, 0x0000, 0xeb7a, 0x0000 +}; + +static unsigned short johab_from_unicode_88[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xecb2, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe433, + 0x0000, 0x0000, 0xf3e3, 0xe5ee, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xe1cc, 0x0000, 0x0000, 0x0000, 0x0000, 0xf1d9, 0x0000, + 0x0000, 0x0000, 0x0000, 0xe751, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf87c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf3eb, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xf831, 0xee72, 0x0000, 0x0000, + 0x0000, 0x0000, 0xf875, 0xec9c, 0x0000, 0x0000, 0x0000, 0xe046, + 0x0000, 0xed47, 0x0000, 0xf06b, 0x0000, 0xf5fa, 0x0000, 0x0000, + 0x0000, 0xf8ac, 0xe2c3, 0xf0fd, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf79c, 0x0000, 0x0000, 0xeab9, 0x0000, 0x0000, 0x0000, 0x0000, + 0xebf1, 0x0000, 0xe434, 0x0000, 0x0000, 0x0000, 0x0000, 0xf5fb, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe36a, 0xe36b, + 0x0000, 0xf04e, 0xe7b1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe047, 0x0000, 0x0000, 0xe4e7, 0x0000, 0xf775, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe4b2, 0x0000, 0x0000, 0x0000, 0xec50, 0xf46f, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe1e5, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf7ac, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xe1cd, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf23e, 0xe63e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe6ea, + 0x0000, 0x0000, 0x0000, 0x0000, 0xeee0, 0xf0ae, 0x0000, 0x0000, + 0x0000, 0xe2d9, 0x0000, 0x0000, 0xe95d, 0xf1fb, 0x0000, 0xea92, + 0x0000, 0xe6eb, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xea35, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xead7, 0xe8d0, 0xe8d1, 0x0000, 0x0000, + 0xe3df, 0x0000, 0x0000, 0x0000, 0x0000, 0xf342, 0x0000, 0x0000 +}; + +static unsigned short johab_from_unicode_89[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe96c, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe078, 0x0000, 0xf776, 0xe95e, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf06c, 0xe8d2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xefb3, 0x0000, 0x0000, + 0x0000, 0x0000, 0xf6db, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xeca8, 0x0000, + 0xe6ae, 0x0000, 0x0000, 0xeb71, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xe0ba, 0x0000, 0x0000, 0xedd1, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe36c, + 0x0000, 0x0000, 0x0000, 0x0000, 0xe3fd, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe75a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xeca9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xeb34, + 0x0000, 0xefa9, 0x0000, 0xe4c7, 0x0000, 0x0000, 0xe96d, 0xf73e, + 0x0000, 0x0000, 0x0000, 0xe148, 0x0000, 0x0000, 0x0000, 0xe33e, + 0x0000, 0x0000, 0x0000, 0xe794, 0x0000, 0x0000, 0xecca, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xe13f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xe53d, 0xf661, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe35c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe056, 0x0000, 0x0000, 0xe5c2, 0x0000, 0x0000, + 0xe24a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe057, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf840, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xead8, 0x0000, 0x0000, 0x0000, + 0xf5ba, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short johab_from_unicode_8a[] = { + 0xedeb, 0x0000, 0xf2f4, 0xe9b5, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe1aa, 0x0000, 0xecf2, 0x0000, 0xf8f7, 0x0000, 0xf6d0, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf9ba, 0x0000, 0x0000, 0xf9e1, 0xf6a0, + 0xe3c0, 0x0000, 0x0000, 0xef55, 0x0000, 0xed48, 0x0000, 0xebe8, + 0x0000, 0x0000, 0x0000, 0xe151, 0x0000, 0xe47d, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe8be, 0x0000, 0x0000, 0xeb72, 0x0000, 0x0000, + 0x0000, 0xf859, 0x0000, 0x0000, 0xebcd, 0x0000, 0xe048, 0x0000, + 0x0000, 0x0000, 0xf470, 0xf3c9, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xea93, 0x0000, 0x0000, 0x0000, 0xf36f, 0xf754, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf25c, 0x0000, 0x0000, 0xea94, 0x0000, + 0xeec9, 0x0000, 0xec95, 0xeee1, 0x0000, 0x0000, 0xeccb, 0x0000, + 0x0000, 0xeccc, 0x0000, 0x0000, 0x0000, 0xe2f8, 0xf2ac, 0x0000, + 0xf9fe, 0xf935, 0xf841, 0xead9, 0x0000, 0xeb62, 0x0000, 0x0000, + 0x0000, 0xf56a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf3ca, 0x0000, 0xe233, + 0x0000, 0x0000, 0x0000, 0x0000, 0xf44c, 0xf173, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xeb35, 0x0000, 0xf6ab, 0x0000, 0x0000, + 0xf0af, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xedde, 0x0000, + 0xeba4, 0xe1ab, 0x0000, 0xe7f4, 0xef36, 0xe1ce, 0xebe9, 0x0000, + 0xf991, 0x0000, 0xeb73, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xec51, 0x0000, 0xe234, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xea36, 0x0000, 0x0000, 0xf0fe, 0x0000, 0xf0dd, 0xf370, + 0x0000, 0x0000, 0xf56b, 0x0000, 0xec96, 0x0000, 0x0000, 0xe4c8, + 0x0000, 0x0000, 0x0000, 0xf57b, 0x0000, 0xf245, 0x0000, 0xf5d8, + 0x0000, 0x0000, 0xe5df, 0x0000, 0x0000, 0x0000, 0xe465, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf0b0, 0xf573, 0x0000, 0x0000, 0x0000, + 0x0000, 0xeccd, 0x0000, 0x0000, 0x0000, 0x0000, 0xf596, 0xf842, + 0x0000, 0x0000, 0xf2f5, 0xe06f, 0x0000, 0xf0b1, 0xf1bf, 0x0000, + 0x0000, 0xf9c9, 0x0000, 0x0000, 0x0000, 0x0000, 0xed36, 0xf7a4, + 0xf343, 0x0000, 0xedec, 0x0000, 0x0000, 0x0000, 0xe3e7, 0x0000 +}; + +static unsigned short johab_from_unicode_8b[] = { + 0xe7c7, 0xed67, 0xf06d, 0x0000, 0xe599, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe84a, 0x0000, + 0xe85d, 0x0000, 0x0000, 0x0000, 0xf7cc, 0x0000, 0xebda, 0xe8bf, + 0x0000, 0xe155, 0xf160, 0xe0bb, 0x0000, 0xea95, 0x0000, 0x0000, + 0xefaa, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe7c8, 0x0000, 0x0000, 0xf273, 0xe6bd, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xe2c4, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xe35d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf936, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf3fb, 0x0000, 0x0000, 0x0000, 0x0000, 0xf9d2, 0xe3c1, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xecdb, 0x0000, 0xe4c9, 0x0000, 0xe95f, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe17d, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xea37, 0x0000, 0x0000, 0xee4b, + 0xf131, 0x0000, 0x0000, 0x0000, 0xe149, 0x0000, 0x0000, 0xf8de, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xeee2, 0x0000, 0x0000, + 0xe551, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe938, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xec52, 0x0000, 0xf4d8, 0xedd3, 0x0000, 0x0000, 0xf4d9, 0x0000, + 0x0000, 0x0000, 0xf4c6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short johab_from_unicode_8c[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe1db, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe1ac, + 0x0000, 0xf953, 0x0000, 0x0000, 0x0000, 0x0000, 0xe577, 0x0000, + 0xe0d0, 0x0000, 0xf7a5, 0x0000, 0xef65, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xecce, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe55a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xeada, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xf8df, 0xeee3, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf79d, 0xeccf, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xf5b0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe777, 0x0000, 0xe7c9, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf73f, 0xf2f6, 0x0000, + 0xe9b6, 0xf23f, 0xe1f8, 0x0000, 0x0000, 0x0000, 0x0000, 0xea48, + 0xf937, 0xf6fc, 0xf6b1, 0xe24b, 0xf531, 0x0000, 0x0000, 0xf25d, + 0xebae, 0x0000, 0x0000, 0xf153, 0xe2fe, 0x0000, 0xf74f, 0xe772, + 0xe4e8, 0x0000, 0x0000, 0xea38, 0xf574, 0xf152, 0x0000, 0xe7f5, + 0xf7c5, 0xe9d3, 0xe471, 0xf19e, 0xf992, 0x0000, 0x0000, 0xf1c0, + 0xe049, 0x0000, 0xf274, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf471, 0x0000, 0xea49, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe694, 0x0000, 0xea96, 0x0000, 0xeadb, 0x0000, + 0xe8d3, 0x0000, 0xf877, 0xe773, 0xf551, 0x0000, 0xe9b7, 0x0000, + 0x0000, 0x0000, 0xf497, 0x0000, 0x0000, 0xe53e, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xe695, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xe9b8, 0xe2c5, 0xeadf, 0x0000, 0x0000 +}; + +static unsigned short johab_from_unicode_8d[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0xf44e, 0xf631, 0x0000, 0xf0cb, + 0xf3fc, 0x0000, 0xf4c7, 0x0000, 0x0000, 0xeb7b, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf1fc, 0x0000, 0x0000, 0xebdb, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xf275, 0x0000, 0xea97, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf863, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf3cb, 0x0000, 0x0000, 0xe33f, 0xe9b9, 0x0000, 0x0000, 0xe3c3, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf5b1, 0x0000, 0x0000, + 0x0000, 0x0000, 0xf056, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf371, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf63c, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf5d9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf37b, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe9ba, 0x0000, 0x0000, 0x0000, 0xf44f, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf6c5, 0x0000, + 0x0000, 0x0000, 0x0000, 0xe8a2, 0xf498, 0x0000, 0x0000, 0xe04a, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf6f5, 0x0000, 0xe0e5, 0x0000, 0x0000, + 0x0000, 0xf276, 0x0000, 0xeb63, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe235, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe45a, + 0x0000, 0x0000, 0x0000, 0xe53f, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short johab_from_unicode_8e[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xefc9, 0x0000, 0x0000, 0x0000, 0x0000, 0xe4ce, + 0xf552, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe0e6, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xf3a1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf0b2, 0x0000, 0x0000, 0x0000, 0x0000, 0xf3a2, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xf0b3, 0x0000, 0xf344, 0x0000, 0x0000, 0xe0f4, + 0xe540, 0xf4b2, 0xf8b7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf5ec, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf277, + 0xf542, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xf5ed, 0x0000, 0xe2f3, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf372, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf25e, + 0x0000, 0x0000, 0xf3cc, 0x0000, 0x0000, 0xedb8, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe6f5, 0xecf3, 0xe2e5, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe2c6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe0e7, 0xed68, 0xe2f9, 0xe2da, 0x0000, 0x0000, + 0x0000, 0x0000, 0xf85d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xee73, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf472, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf5ee, 0x0000, 0x0000, 0xe04b, 0x0000, 0x0000, 0xecdc, 0x0000 +}; + +static unsigned short johab_from_unicode_8f[] = { + 0x0000, 0x0000, 0x0000, 0xe294, 0x0000, 0xe669, 0x0000, 0x0000, + 0x0000, 0xf240, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xf575, 0xe752, 0xe960, 0xe17e, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xe5e0, 0xf65a, 0xf9ca, 0xe766, 0xf55f, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe636, 0xe94e, + 0x0000, 0xe8d4, 0xe6c7, 0x0000, 0x0000, 0x0000, 0x0000, 0xf4a0, + 0x0000, 0x0000, 0x0000, 0xf3cd, 0x0000, 0x0000, 0x0000, 0x0000, + 0xec53, 0xe96e, 0x0000, 0xe96f, 0x0000, 0x0000, 0xf2ad, 0xee3b, + 0x0000, 0x0000, 0x0000, 0x0000, 0xf7dd, 0xf04f, 0x0000, 0x0000, + 0x0000, 0xf2ae, 0x0000, 0x0000, 0x0000, 0xf560, 0xe295, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xee3c, 0x0000, 0xe26e, + 0x0000, 0x0000, 0xe5f9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xecf4, 0xe1d0, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xe5b8, 0x0000, 0x0000, 0xf6fd, 0x0000, + 0xe939, 0x0000, 0x0000, 0x0000, 0x0000, 0xea98, 0x0000, 0xe93a, + 0xecf5, 0xefb4, 0xe46c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xefe6, 0x0000, 0x0000, 0xecf6, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xeeca, 0x0000, + 0x0000, 0xe35e, 0x0000, 0x0000, 0xe899, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe04c, 0x0000, + 0x0000, 0x0000, 0xf278, 0xe86e, 0x0000, 0xf499, 0x0000, 0x0000, + 0xec9d, 0x0000, 0xe136, 0x0000, 0x0000, 0x0000, 0x0000, 0xe84b, + 0x0000, 0xf279, 0x0000, 0x0000, 0x0000, 0xf5da, 0x0000, 0x0000 +}; + +static unsigned short johab_from_unicode_90[] = { + 0xf6dc, 0xebea, 0xe251, 0xe541, 0x0000, 0xf9b1, 0xee4d, 0x0000, + 0xf8ad, 0x0000, 0x0000, 0xf777, 0x0000, 0xebce, 0x0000, 0xf6e2, + 0xf5ef, 0xe2c7, 0x0000, 0x0000, 0xe542, 0xe191, 0x0000, 0xe578, + 0x0000, 0xf25f, 0xf6d7, 0x0000, 0x0000, 0xeb36, 0xe651, 0xebdc, + 0xf373, 0xf3e4, 0xe993, 0xe637, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf597, 0x0000, + 0x0000, 0xf3ce, 0xf474, 0x0000, 0x0000, 0xe340, 0x0000, 0x0000, + 0xf191, 0x0000, 0x0000, 0x0000, 0xf7ba, 0x0000, 0xf0b5, 0x0000, + 0x0000, 0xe57d, 0xec54, 0x0000, 0x0000, 0x0000, 0x0000, 0xefe7, + 0x0000, 0x0000, 0xf0b4, 0xf031, 0x0000, 0xf74c, 0xe236, 0x0000, + 0xf7c6, 0xf96a, 0x0000, 0xe543, 0xe4b9, 0xf06e, 0x0000, 0x0000, + 0x0000, 0xefab, 0x0000, 0x0000, 0xebe1, 0xe4cf, 0xf598, 0x0000, + 0xf050, 0xebcf, 0x0000, 0xe14a, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf27a, 0x0000, 0x0000, 0x0000, 0xf374, 0xf4b4, 0xe57e, + 0x0000, 0x0000, 0xf450, 0x0000, 0x0000, 0xf3e5, 0x0000, 0xf553, + 0xeb64, 0x0000, 0xf0b6, 0x0000, 0xe6a1, 0xe0e8, 0x0000, 0xf7ad, + 0xefad, 0xe774, 0xf843, 0xec55, 0xf94d, 0x0000, 0x0000, 0xf154, + 0xe741, 0x0000, 0xe93b, 0x0000, 0x0000, 0x0000, 0x0000, 0xe3e0, + 0x0000, 0xf0e9, 0x0000, 0x0000, 0x0000, 0xef4b, 0x0000, 0x0000, + 0x0000, 0xe767, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xf8ae, 0xe3e1, 0x0000, 0x0000, 0xe8c0, 0x0000, + 0xf5be, 0x0000, 0xea99, 0x0000, 0x0000, 0x0000, 0x0000, 0xe09d, + 0xf6c6, 0xe2c8, 0x0000, 0x0000, 0x0000, 0xebd0, 0x0000, 0x0000, + 0xf260, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xeff4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe296, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe43b, 0x0000, + 0x0000, 0xe2db, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe9bb, 0x0000, 0x0000, 0x0000, 0x0000, 0xe23c, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xefe8, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe544, 0x0000, 0x0000 +}; + +static unsigned short johab_from_unicode_91[] = { + 0x0000, 0x0000, 0xed57, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xf5db, 0x0000, 0x0000, 0xf851, 0x0000, 0x0000, + 0x0000, 0xea39, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe59a, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf2f7, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe4b3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf0b7, 0xf2f8, 0xf5dc, 0xf1cc, 0xe8d5, 0xf3cf, 0x0000, + 0x0000, 0x0000, 0xf3d0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xf5b2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xe7ae, 0xe3e8, 0x0000, 0xec56, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf9a3, 0x0000, 0xf8e5, + 0xeaab, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xec97, + 0x0000, 0xf63d, 0x0000, 0xf5b3, 0x0000, 0xf345, 0x0000, 0x0000, + 0x0000, 0x0000, 0xeba5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xf5dd, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf132, 0xf1fd, 0x0000, 0xf5b4, 0xf8b8, + 0x0000, 0xe8a3, 0x0000, 0x0000, 0xe65a, 0xe0d9, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xedd4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf4fa, + 0x0000, 0xf0b8, 0x0000, 0xeb47, 0xe6ec, 0xf3ec, 0xedaf, 0xe5e1, + 0xe6ed, 0xe36d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xebf2, + 0xf2f9, 0x0000, 0x0000, 0x0000, 0xe9bc, 0xf66c, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf375, 0x0000, 0x0000, 0x0000, 0xf554, + 0x0000, 0x0000, 0xefe9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf4fb, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short johab_from_unicode_92[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe591, 0x0000, 0x0000, + 0xe132, 0xf6fe, 0xeabc, 0x0000, 0x0000, 0x0000, 0x0000, 0xf0cd, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe347, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xe652, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xef3d, 0x0000, 0x0000, 0x0000, 0x0000, 0xf2af, + 0xe0a5, 0x0000, 0x0000, 0x0000, 0x0000, 0xe0e9, 0x0000, 0x0000, + 0x0000, 0xf878, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe156, + 0x0000, 0x0000, 0x0000, 0xee77, 0x0000, 0x0000, 0xf057, 0x0000, + 0x0000, 0x0000, 0xe8a4, 0x0000, 0xe2c9, 0xec9e, 0xf2fa, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf0de, 0x0000, 0x0000, 0xf5c8, 0x0000, 0xe56e, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xeb65, 0x0000, 0xf2b0, 0x0000, 0x0000, 0xec57, 0x0000, + 0xe7af, 0x0000, 0x0000, 0x0000, 0xf7e7, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xeee5, 0x0000, 0x0000, 0xe2ca, 0xebd1, + 0x0000, 0xec58, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xf2fb, 0x0000, 0x0000, 0xf89b, + 0x0000, 0x0000, 0xe994, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xeb37, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xf778, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe0ea, 0x0000, 0x0000, 0x0000, 0xe0bc, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short johab_from_unicode_93[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0xe463, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf5de, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf5df, 0x0000, 0xf246, 0x0000, 0x0000, 0x0000, 0xec98, 0xe4ca, + 0xf2fc, 0xe3c4, 0xf2b1, 0x0000, 0xe3c5, 0x0000, 0xe36e, 0x0000, + 0xe7e1, 0x0000, 0x0000, 0xeb48, 0x0000, 0x0000, 0xe1d1, 0xf4b9, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xeecc, 0x0000, 0xe638, 0xe237, 0x0000, 0xe545, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xed58, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xe4b4, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf0b9, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe0f5, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xf66d, 0x0000, 0xf3a3, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xe157, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xefca, 0x0000, 0xebf0, 0x0000, + 0x0000, 0x0000, 0xf5e0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf8af, 0x0000, 0x0000, 0x0000, 0xe0d1, + 0x0000, 0x0000, 0x0000, 0x0000, 0xf8e0, 0xf475, 0x0000, 0x0000, + 0xf192, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf37c, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf27b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xefcb, 0x0000, + 0x0000, 0xe192, 0x0000, 0x0000, 0xe6af, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf4a1, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short johab_from_unicode_94[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0xf997, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf3a4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xeb66, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf2b2, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf561, 0x0000, 0x0000, + 0xf6a1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xf3d1, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xe09e, 0xe09f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xe25e, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf4c8, 0x0000, 0xf4ba, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short johab_from_unicode_95[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf1fe, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe836, 0x0000, 0x0000, 0xeb7c, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf75d, 0x0000, 0xe0d2, 0x0000, 0x0000, 0x0000, 0xf0ce, + 0x0000, 0xf7d8, 0xf7d9, 0xe070, 0xe85a, 0x0000, 0x0000, 0x0000, + 0xe0a6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xe058, 0xf7ee, 0xe8ec, 0x0000, 0x0000, + 0xe341, 0x0000, 0x0000, 0x0000, 0x0000, 0xe5ef, 0x0000, 0x0000, + 0x0000, 0xee95, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xeea2, 0xed69, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xed71, + 0x0000, 0x0000, 0xf954, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xf7ef, 0xe2f4, 0xf6e6, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xe24c, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf555, 0xe933, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short johab_from_unicode_96[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xe9bd, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf556, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xf731, 0x0000, 0x0000, 0x0000, 0xef66, 0x0000, + 0x0000, 0x0000, 0xe8c1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf376, 0x0000, 0x0000, 0x0000, 0xed49, + 0xf67d, 0x0000, 0xf7ae, 0x0000, 0xe9be, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xe47b, 0xe778, 0xe0bd, 0x0000, 0x0000, + 0xf7da, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf75e, 0xf7f0, 0xeb7d, 0xecb3, 0xf543, + 0x0000, 0x0000, 0xf052, 0xf476, 0xf346, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe8d6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf0e4, 0x0000, 0x0000, 0xf477, 0x0000, 0xe49a, 0xe546, 0xf7e8, + 0xe6c1, 0x0000, 0x0000, 0x0000, 0x0000, 0xedd5, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xefea, 0xe6cc, 0x0000, + 0x0000, 0x0000, 0xe4e9, 0xec59, 0x0000, 0xf96b, 0xe1ad, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xe140, 0xf032, 0x0000, 0x0000, + 0xed98, 0xe350, 0x0000, 0xf347, 0xf231, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xe6f6, 0x0000, 0x0000, 0x0000, 0xec5a, + 0xec5b, 0x0000, 0xf85f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf0df, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe65b, + 0x0000, 0x0000, 0x0000, 0xf544, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf1cd, 0xed62, 0x0000, 0x0000, 0xf039, 0xed4a, 0xf4a2, 0xe1d2, + 0x0000, 0xf65b, 0x0000, 0xf3e6, 0xf1c1, 0xef4c, 0xf261, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf377, 0xec5c, 0x0000, + 0x0000, 0xed3a, 0x0000, 0xf5e1, 0xf1da, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe6ee, 0xe3f1, 0x0000, 0x0000, 0x0000, 0x0000, + 0xefeb, 0xefec, 0xeb74, 0x0000, 0x0000, 0x0000, 0x0000, 0xe837, + 0xe9d4, 0x0000, 0xf033, 0x0000, 0x0000, 0x0000, 0xe653, 0xe472, + 0x0000, 0xe86f, 0x0000, 0xf2b3, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short johab_from_unicode_97[] = { + 0xec5d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf2fd, 0xf478, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf2c5, 0x0000, 0xeee7, 0x0000, 0x0000, 0xe6fd, 0x0000, + 0x0000, 0xeece, 0x0000, 0x0000, 0xeadc, 0x0000, 0xf7c7, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe7f6, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xeaac, 0x0000, 0xe45b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xe934, 0x0000, 0x0000, 0x0000, 0xf348, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe5fa, 0x0000, 0xed99, 0x0000, 0x0000, 0x0000, + 0xe654, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf57c, 0x0000, 0x0000, 0x0000, 0x0000, 0xf2fe, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xf331, 0x0000, 0xea3a, 0x0000, + 0x0000, 0xe84c, 0xe79e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf864, 0x0000, 0x0000, 0x0000, 0xf175, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xf938, 0x0000, 0x0000, 0xf176, + 0x0000, 0x0000, 0xe75b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf8b9, 0x0000, 0xed63, 0x0000, 0xe1f9, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe2d3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe07a, 0x0000, 0x0000, 0xe2d4, 0x0000, 0xf74d, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf557, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf06f, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf7db, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xe547, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf0e5, 0x0000, 0x0000, 0xebd2, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf034, 0x0000, 0x0000, 0x0000, 0xf852 +}; + +static unsigned short johab_from_unicode_98[] = { + 0xf8e1, 0xf87d, 0xf332, 0xe193, 0x0000, 0xf833, 0xec99, 0x0000, + 0xec5e, 0x0000, 0xeff5, 0x0000, 0xebeb, 0x0000, 0x0000, 0x0000, + 0xeee8, 0xef67, 0xe89a, 0xe55b, 0x0000, 0x0000, 0x0000, 0xf6f6, + 0xe655, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe579, 0x0000, 0x0000, + 0xf89c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe194, 0xf6dd, 0x0000, 0xea4a, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe238, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xf349, 0xeda0, 0xed59, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xed64, 0x0000, 0x0000, 0x0000, + 0xf053, 0x0000, 0xf2b4, 0x0000, 0x0000, 0x0000, 0xe6be, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf8e2, 0x0000, 0xe1d3, + 0x0000, 0x0000, 0x0000, 0xf2b5, 0x0000, 0x0000, 0x0000, 0xf879, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf7a6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xeabd, + 0x0000, 0xf6c7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xf79f, 0x0000, 0x0000, 0xf79e, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xea3b, 0xe8e8, 0x0000, 0x0000, 0xecdd, + 0x0000, 0xebe2, 0xe3c6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf660, 0xf0e6, 0xe89b, + 0x0000, 0x0000, 0x0000, 0x0000, 0xf157, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xea9a, 0xf779, 0xecde, 0x0000 +}; + +static unsigned short johab_from_unicode_99[] = { + 0x0000, 0x0000, 0x0000, 0xe297, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf853, 0xedd7, 0x0000, 0xf158, 0x0000, 0x0000, 0x0000, + 0xf4c9, 0x0000, 0x0000, 0xed4b, 0x0000, 0x0000, 0x0000, 0x0000, + 0xee3e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf2b6, 0x0000, + 0xe94f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe24d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe753, 0x0000, 0x0000, + 0x0000, 0xe35f, 0x0000, 0xe2fa, 0xf4ca, 0xeb67, 0x0000, 0x0000, + 0x0000, 0xe3c7, 0xefae, 0x0000, 0xef4d, 0x0000, 0x0000, 0xf854, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xec5f, 0x0000, + 0x0000, 0xf855, 0x0000, 0x0000, 0x0000, 0xf7b8, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe970, 0x0000, 0x0000, + 0xf8b0, 0x0000, 0x0000, 0x0000, 0xe739, 0xeddf, 0xf7a7, 0x0000, + 0x0000, 0xf67e, 0x0000, 0xf65c, 0xec9a, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf193, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xe870, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf3d2, 0xe45c, 0xe2cb, 0x0000, 0x0000, 0xe04d, 0x0000, 0x0000, + 0x0000, 0xe9bf, 0x0000, 0x0000, 0x0000, 0xf691, 0x0000, 0xea9b, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf844, 0x0000, 0x0000, + 0x0000, 0xe3e9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf3e7 +}; + +static unsigned short johab_from_unicode_9a[] = { + 0x0000, 0xea4e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe950, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe3c8, 0xe3c9, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf74e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xe0f6, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe59b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf5e2, 0xebd3, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe779, 0x0000, 0x0000, 0xf7a0, 0x0000, 0xe2cc, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf9a4, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe298, 0x0000, 0xf860, + 0x0000, 0x0000, 0xe195, 0xee4e, 0x0000, 0x0000, 0x0000, 0xf63e, + 0x0000, 0x0000, 0xe5f0, 0x0000, 0x0000, 0xe3ca, 0x0000, 0x0000, + 0x0000, 0xf94e, 0xe5f1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe1e9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf845, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xec60, 0xf599, 0x0000, 0x0000, 0x0000, + 0xe1d4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xeea3, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe8a5, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short johab_from_unicode_9b[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xec61, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe6a2, + 0x0000, 0x0000, 0xf6e3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf036, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xe331, 0x0000, 0x0000, 0x0000, + 0x0000, 0xe26a, 0xf8eb, 0xe8a6, 0xe8de, 0xe775, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf070, + 0x0000, 0x0000, 0x0000, 0x0000, 0xe73a, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xede0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe45d, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf2c6, 0x0000, + 0x0000, 0xf77a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xed65, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xe299, 0x0000, 0x0000, 0xeb68, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xe6ef, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf57d, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xe1e6, 0x0000, 0x0000, 0x0000, + 0xe196, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short johab_from_unicode_9c[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf5e3, 0x0000, 0x0000, + 0xed5a, 0x0000, 0xe971, 0x0000, 0x0000, 0xf7c8, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf94f, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xef37, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xe754, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe0be, + 0x0000, 0xe93e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe6f7, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf378, 0x0000, 0xe9c0, + 0x0000, 0xe2cd, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xe995, 0xe7b0, 0x0000, 0xee79, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short johab_from_unicode_9d[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xed4c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf054, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xed7c, 0x0000, + 0xed75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf8f8, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xe14b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xed4d, 0x0000, 0x0000, + 0xe1dc, 0xe7f7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xe9df, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xf1ce, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xe7d0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xeda3, + 0x0000, 0x0000, 0x0000, 0x0000, 0xf7cd, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xe1ae, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe2ce, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xf63f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf9d3, 0xf0ed, 0xe45e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short johab_from_unicode_9e[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xeda4, 0x0000, 0x0000, 0x0000, 0xe3f2, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe66d, 0x0000, 0x0000, + 0x0000, 0xf7e9, 0x0000, 0x0000, 0x0000, 0xeea4, 0x0000, 0xe464, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xe3cb, 0xe674, 0x0000, 0x0000, 0x0000, 0xe5f2, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xea9c, 0x0000, 0xe6f8, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe77a, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xe2d5, 0xe79f, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xe73b, 0x0000, 0x0000, 0xf9cb, 0x0000, + 0x0000, 0x0000, 0x0000, 0xf96c, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xeb38, 0xe5f3, 0x0000, + 0x0000, 0xf9d9, 0x0000, 0x0000, 0xe133, 0x0000, 0x0000, 0x0000, + 0xe7f9, 0x0000, 0x0000, 0xe4ea, 0xf5f5, 0x0000, 0xf2c7, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xe4da, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xe84d, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short johab_from_unicode_9f[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xef38, + 0xe93f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf333, 0x0000, + 0x0000, 0x0000, 0x0000, 0xe1d5, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xeb39, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xea3c, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xf34a, 0xf241, 0x0000, 0x0000, 0xf242, 0x0000, + 0x0000, 0x0000, 0xf65d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xf262, + 0x0000, 0xe656, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xeb75, + 0x0000, 0x0000, 0xf4bb, 0x0000, 0xede1, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xed5b, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xe6a3, 0x0000, 0x0000, + 0xe8c2, 0x0000, 0x0000, 0x0000, 0x0000, 0xe0a0, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xe2cf, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short johab_from_unicode_ac[] = { + 0x8861, 0x8862, 0x8863, 0x8864, 0x8865, 0x8866, 0x8867, 0x8868, + 0x8869, 0x886a, 0x886b, 0x886c, 0x886d, 0x886e, 0x886f, 0x8870, + 0x8871, 0x8873, 0x8874, 0x8875, 0x8876, 0x8877, 0x8878, 0x8879, + 0x887a, 0x887b, 0x887c, 0x887d, 0x8881, 0x8882, 0x8883, 0x8884, + 0x8885, 0x8886, 0x8887, 0x8888, 0x8889, 0x888a, 0x888b, 0x888c, + 0x888d, 0x888e, 0x888f, 0x8890, 0x8891, 0x8893, 0x8894, 0x8895, + 0x8896, 0x8897, 0x8898, 0x8899, 0x889a, 0x889b, 0x889c, 0x889d, + 0x88a1, 0x88a2, 0x88a3, 0x88a4, 0x88a5, 0x88a6, 0x88a7, 0x88a8, + 0x88a9, 0x88aa, 0x88ab, 0x88ac, 0x88ad, 0x88ae, 0x88af, 0x88b0, + 0x88b1, 0x88b3, 0x88b4, 0x88b5, 0x88b6, 0x88b7, 0x88b8, 0x88b9, + 0x88ba, 0x88bb, 0x88bc, 0x88bd, 0x88c1, 0x88c2, 0x88c3, 0x88c4, + 0x88c5, 0x88c6, 0x88c7, 0x88c8, 0x88c9, 0x88ca, 0x88cb, 0x88cc, + 0x88cd, 0x88ce, 0x88cf, 0x88d0, 0x88d1, 0x88d3, 0x88d4, 0x88d5, + 0x88d6, 0x88d7, 0x88d8, 0x88d9, 0x88da, 0x88db, 0x88dc, 0x88dd, + 0x88e1, 0x88e2, 0x88e3, 0x88e4, 0x88e5, 0x88e6, 0x88e7, 0x88e8, + 0x88e9, 0x88ea, 0x88eb, 0x88ec, 0x88ed, 0x88ee, 0x88ef, 0x88f0, + 0x88f1, 0x88f3, 0x88f4, 0x88f5, 0x88f6, 0x88f7, 0x88f8, 0x88f9, + 0x88fa, 0x88fb, 0x88fc, 0x88fd, 0x8941, 0x8942, 0x8943, 0x8944, + 0x8945, 0x8946, 0x8947, 0x8948, 0x8949, 0x894a, 0x894b, 0x894c, + 0x894d, 0x894e, 0x894f, 0x8950, 0x8951, 0x8953, 0x8954, 0x8955, + 0x8956, 0x8957, 0x8958, 0x8959, 0x895a, 0x895b, 0x895c, 0x895d, + 0x8961, 0x8962, 0x8963, 0x8964, 0x8965, 0x8966, 0x8967, 0x8968, + 0x8969, 0x896a, 0x896b, 0x896c, 0x896d, 0x896e, 0x896f, 0x8970, + 0x8971, 0x8973, 0x8974, 0x8975, 0x8976, 0x8977, 0x8978, 0x8979, + 0x897a, 0x897b, 0x897c, 0x897d, 0x8981, 0x8982, 0x8983, 0x8984, + 0x8985, 0x8986, 0x8987, 0x8988, 0x8989, 0x898a, 0x898b, 0x898c, + 0x898d, 0x898e, 0x898f, 0x8990, 0x8991, 0x8993, 0x8994, 0x8995, + 0x8996, 0x8997, 0x8998, 0x8999, 0x899a, 0x899b, 0x899c, 0x899d, + 0x89a1, 0x89a2, 0x89a3, 0x89a4, 0x89a5, 0x89a6, 0x89a7, 0x89a8, + 0x89a9, 0x89aa, 0x89ab, 0x89ac, 0x89ad, 0x89ae, 0x89af, 0x89b0, + 0x89b1, 0x89b3, 0x89b4, 0x89b5, 0x89b6, 0x89b7, 0x89b8, 0x89b9, + 0x89ba, 0x89bb, 0x89bc, 0x89bd, 0x89c1, 0x89c2, 0x89c3, 0x89c4 +}; + +static unsigned short johab_from_unicode_ad[] = { + 0x89c5, 0x89c6, 0x89c7, 0x89c8, 0x89c9, 0x89ca, 0x89cb, 0x89cc, + 0x89cd, 0x89ce, 0x89cf, 0x89d0, 0x89d1, 0x89d3, 0x89d4, 0x89d5, + 0x89d6, 0x89d7, 0x89d8, 0x89d9, 0x89da, 0x89db, 0x89dc, 0x89dd, + 0x89e1, 0x89e2, 0x89e3, 0x89e4, 0x89e5, 0x89e6, 0x89e7, 0x89e8, + 0x89e9, 0x89ea, 0x89eb, 0x89ec, 0x89ed, 0x89ee, 0x89ef, 0x89f0, + 0x89f1, 0x89f3, 0x89f4, 0x89f5, 0x89f6, 0x89f7, 0x89f8, 0x89f9, + 0x89fa, 0x89fb, 0x89fc, 0x89fd, 0x8a41, 0x8a42, 0x8a43, 0x8a44, + 0x8a45, 0x8a46, 0x8a47, 0x8a48, 0x8a49, 0x8a4a, 0x8a4b, 0x8a4c, + 0x8a4d, 0x8a4e, 0x8a4f, 0x8a50, 0x8a51, 0x8a53, 0x8a54, 0x8a55, + 0x8a56, 0x8a57, 0x8a58, 0x8a59, 0x8a5a, 0x8a5b, 0x8a5c, 0x8a5d, + 0x8a61, 0x8a62, 0x8a63, 0x8a64, 0x8a65, 0x8a66, 0x8a67, 0x8a68, + 0x8a69, 0x8a6a, 0x8a6b, 0x8a6c, 0x8a6d, 0x8a6e, 0x8a6f, 0x8a70, + 0x8a71, 0x8a73, 0x8a74, 0x8a75, 0x8a76, 0x8a77, 0x8a78, 0x8a79, + 0x8a7a, 0x8a7b, 0x8a7c, 0x8a7d, 0x8a81, 0x8a82, 0x8a83, 0x8a84, + 0x8a85, 0x8a86, 0x8a87, 0x8a88, 0x8a89, 0x8a8a, 0x8a8b, 0x8a8c, + 0x8a8d, 0x8a8e, 0x8a8f, 0x8a90, 0x8a91, 0x8a93, 0x8a94, 0x8a95, + 0x8a96, 0x8a97, 0x8a98, 0x8a99, 0x8a9a, 0x8a9b, 0x8a9c, 0x8a9d, + 0x8aa1, 0x8aa2, 0x8aa3, 0x8aa4, 0x8aa5, 0x8aa6, 0x8aa7, 0x8aa8, + 0x8aa9, 0x8aaa, 0x8aab, 0x8aac, 0x8aad, 0x8aae, 0x8aaf, 0x8ab0, + 0x8ab1, 0x8ab3, 0x8ab4, 0x8ab5, 0x8ab6, 0x8ab7, 0x8ab8, 0x8ab9, + 0x8aba, 0x8abb, 0x8abc, 0x8abd, 0x8ac1, 0x8ac2, 0x8ac3, 0x8ac4, + 0x8ac5, 0x8ac6, 0x8ac7, 0x8ac8, 0x8ac9, 0x8aca, 0x8acb, 0x8acc, + 0x8acd, 0x8ace, 0x8acf, 0x8ad0, 0x8ad1, 0x8ad3, 0x8ad4, 0x8ad5, + 0x8ad6, 0x8ad7, 0x8ad8, 0x8ad9, 0x8ada, 0x8adb, 0x8adc, 0x8add, + 0x8ae1, 0x8ae2, 0x8ae3, 0x8ae4, 0x8ae5, 0x8ae6, 0x8ae7, 0x8ae8, + 0x8ae9, 0x8aea, 0x8aeb, 0x8aec, 0x8aed, 0x8aee, 0x8aef, 0x8af0, + 0x8af1, 0x8af3, 0x8af4, 0x8af5, 0x8af6, 0x8af7, 0x8af8, 0x8af9, + 0x8afa, 0x8afb, 0x8afc, 0x8afd, 0x8b41, 0x8b42, 0x8b43, 0x8b44, + 0x8b45, 0x8b46, 0x8b47, 0x8b48, 0x8b49, 0x8b4a, 0x8b4b, 0x8b4c, + 0x8b4d, 0x8b4e, 0x8b4f, 0x8b50, 0x8b51, 0x8b53, 0x8b54, 0x8b55, + 0x8b56, 0x8b57, 0x8b58, 0x8b59, 0x8b5a, 0x8b5b, 0x8b5c, 0x8b5d, + 0x8b61, 0x8b62, 0x8b63, 0x8b64, 0x8b65, 0x8b66, 0x8b67, 0x8b68 +}; + +static unsigned short johab_from_unicode_ae[] = { + 0x8b69, 0x8b6a, 0x8b6b, 0x8b6c, 0x8b6d, 0x8b6e, 0x8b6f, 0x8b70, + 0x8b71, 0x8b73, 0x8b74, 0x8b75, 0x8b76, 0x8b77, 0x8b78, 0x8b79, + 0x8b7a, 0x8b7b, 0x8b7c, 0x8b7d, 0x8b81, 0x8b82, 0x8b83, 0x8b84, + 0x8b85, 0x8b86, 0x8b87, 0x8b88, 0x8b89, 0x8b8a, 0x8b8b, 0x8b8c, + 0x8b8d, 0x8b8e, 0x8b8f, 0x8b90, 0x8b91, 0x8b93, 0x8b94, 0x8b95, + 0x8b96, 0x8b97, 0x8b98, 0x8b99, 0x8b9a, 0x8b9b, 0x8b9c, 0x8b9d, + 0x8ba1, 0x8ba2, 0x8ba3, 0x8ba4, 0x8ba5, 0x8ba6, 0x8ba7, 0x8ba8, + 0x8ba9, 0x8baa, 0x8bab, 0x8bac, 0x8bad, 0x8bae, 0x8baf, 0x8bb0, + 0x8bb1, 0x8bb3, 0x8bb4, 0x8bb5, 0x8bb6, 0x8bb7, 0x8bb8, 0x8bb9, + 0x8bba, 0x8bbb, 0x8bbc, 0x8bbd, 0x8c61, 0x8c62, 0x8c63, 0x8c64, + 0x8c65, 0x8c66, 0x8c67, 0x8c68, 0x8c69, 0x8c6a, 0x8c6b, 0x8c6c, + 0x8c6d, 0x8c6e, 0x8c6f, 0x8c70, 0x8c71, 0x8c73, 0x8c74, 0x8c75, + 0x8c76, 0x8c77, 0x8c78, 0x8c79, 0x8c7a, 0x8c7b, 0x8c7c, 0x8c7d, + 0x8c81, 0x8c82, 0x8c83, 0x8c84, 0x8c85, 0x8c86, 0x8c87, 0x8c88, + 0x8c89, 0x8c8a, 0x8c8b, 0x8c8c, 0x8c8d, 0x8c8e, 0x8c8f, 0x8c90, + 0x8c91, 0x8c93, 0x8c94, 0x8c95, 0x8c96, 0x8c97, 0x8c98, 0x8c99, + 0x8c9a, 0x8c9b, 0x8c9c, 0x8c9d, 0x8ca1, 0x8ca2, 0x8ca3, 0x8ca4, + 0x8ca5, 0x8ca6, 0x8ca7, 0x8ca8, 0x8ca9, 0x8caa, 0x8cab, 0x8cac, + 0x8cad, 0x8cae, 0x8caf, 0x8cb0, 0x8cb1, 0x8cb3, 0x8cb4, 0x8cb5, + 0x8cb6, 0x8cb7, 0x8cb8, 0x8cb9, 0x8cba, 0x8cbb, 0x8cbc, 0x8cbd, + 0x8cc1, 0x8cc2, 0x8cc3, 0x8cc4, 0x8cc5, 0x8cc6, 0x8cc7, 0x8cc8, + 0x8cc9, 0x8cca, 0x8ccb, 0x8ccc, 0x8ccd, 0x8cce, 0x8ccf, 0x8cd0, + 0x8cd1, 0x8cd3, 0x8cd4, 0x8cd5, 0x8cd6, 0x8cd7, 0x8cd8, 0x8cd9, + 0x8cda, 0x8cdb, 0x8cdc, 0x8cdd, 0x8ce1, 0x8ce2, 0x8ce3, 0x8ce4, + 0x8ce5, 0x8ce6, 0x8ce7, 0x8ce8, 0x8ce9, 0x8cea, 0x8ceb, 0x8cec, + 0x8ced, 0x8cee, 0x8cef, 0x8cf0, 0x8cf1, 0x8cf3, 0x8cf4, 0x8cf5, + 0x8cf6, 0x8cf7, 0x8cf8, 0x8cf9, 0x8cfa, 0x8cfb, 0x8cfc, 0x8cfd, + 0x8d41, 0x8d42, 0x8d43, 0x8d44, 0x8d45, 0x8d46, 0x8d47, 0x8d48, + 0x8d49, 0x8d4a, 0x8d4b, 0x8d4c, 0x8d4d, 0x8d4e, 0x8d4f, 0x8d50, + 0x8d51, 0x8d53, 0x8d54, 0x8d55, 0x8d56, 0x8d57, 0x8d58, 0x8d59, + 0x8d5a, 0x8d5b, 0x8d5c, 0x8d5d, 0x8d61, 0x8d62, 0x8d63, 0x8d64, + 0x8d65, 0x8d66, 0x8d67, 0x8d68, 0x8d69, 0x8d6a, 0x8d6b, 0x8d6c +}; + +static unsigned short johab_from_unicode_af[] = { + 0x8d6d, 0x8d6e, 0x8d6f, 0x8d70, 0x8d71, 0x8d73, 0x8d74, 0x8d75, + 0x8d76, 0x8d77, 0x8d78, 0x8d79, 0x8d7a, 0x8d7b, 0x8d7c, 0x8d7d, + 0x8d81, 0x8d82, 0x8d83, 0x8d84, 0x8d85, 0x8d86, 0x8d87, 0x8d88, + 0x8d89, 0x8d8a, 0x8d8b, 0x8d8c, 0x8d8d, 0x8d8e, 0x8d8f, 0x8d90, + 0x8d91, 0x8d93, 0x8d94, 0x8d95, 0x8d96, 0x8d97, 0x8d98, 0x8d99, + 0x8d9a, 0x8d9b, 0x8d9c, 0x8d9d, 0x8da1, 0x8da2, 0x8da3, 0x8da4, + 0x8da5, 0x8da6, 0x8da7, 0x8da8, 0x8da9, 0x8daa, 0x8dab, 0x8dac, + 0x8dad, 0x8dae, 0x8daf, 0x8db0, 0x8db1, 0x8db3, 0x8db4, 0x8db5, + 0x8db6, 0x8db7, 0x8db8, 0x8db9, 0x8dba, 0x8dbb, 0x8dbc, 0x8dbd, + 0x8dc1, 0x8dc2, 0x8dc3, 0x8dc4, 0x8dc5, 0x8dc6, 0x8dc7, 0x8dc8, + 0x8dc9, 0x8dca, 0x8dcb, 0x8dcc, 0x8dcd, 0x8dce, 0x8dcf, 0x8dd0, + 0x8dd1, 0x8dd3, 0x8dd4, 0x8dd5, 0x8dd6, 0x8dd7, 0x8dd8, 0x8dd9, + 0x8dda, 0x8ddb, 0x8ddc, 0x8ddd, 0x8de1, 0x8de2, 0x8de3, 0x8de4, + 0x8de5, 0x8de6, 0x8de7, 0x8de8, 0x8de9, 0x8dea, 0x8deb, 0x8dec, + 0x8ded, 0x8dee, 0x8def, 0x8df0, 0x8df1, 0x8df3, 0x8df4, 0x8df5, + 0x8df6, 0x8df7, 0x8df8, 0x8df9, 0x8dfa, 0x8dfb, 0x8dfc, 0x8dfd, + 0x8e41, 0x8e42, 0x8e43, 0x8e44, 0x8e45, 0x8e46, 0x8e47, 0x8e48, + 0x8e49, 0x8e4a, 0x8e4b, 0x8e4c, 0x8e4d, 0x8e4e, 0x8e4f, 0x8e50, + 0x8e51, 0x8e53, 0x8e54, 0x8e55, 0x8e56, 0x8e57, 0x8e58, 0x8e59, + 0x8e5a, 0x8e5b, 0x8e5c, 0x8e5d, 0x8e61, 0x8e62, 0x8e63, 0x8e64, + 0x8e65, 0x8e66, 0x8e67, 0x8e68, 0x8e69, 0x8e6a, 0x8e6b, 0x8e6c, + 0x8e6d, 0x8e6e, 0x8e6f, 0x8e70, 0x8e71, 0x8e73, 0x8e74, 0x8e75, + 0x8e76, 0x8e77, 0x8e78, 0x8e79, 0x8e7a, 0x8e7b, 0x8e7c, 0x8e7d, + 0x8e81, 0x8e82, 0x8e83, 0x8e84, 0x8e85, 0x8e86, 0x8e87, 0x8e88, + 0x8e89, 0x8e8a, 0x8e8b, 0x8e8c, 0x8e8d, 0x8e8e, 0x8e8f, 0x8e90, + 0x8e91, 0x8e93, 0x8e94, 0x8e95, 0x8e96, 0x8e97, 0x8e98, 0x8e99, + 0x8e9a, 0x8e9b, 0x8e9c, 0x8e9d, 0x8ea1, 0x8ea2, 0x8ea3, 0x8ea4, + 0x8ea5, 0x8ea6, 0x8ea7, 0x8ea8, 0x8ea9, 0x8eaa, 0x8eab, 0x8eac, + 0x8ead, 0x8eae, 0x8eaf, 0x8eb0, 0x8eb1, 0x8eb3, 0x8eb4, 0x8eb5, + 0x8eb6, 0x8eb7, 0x8eb8, 0x8eb9, 0x8eba, 0x8ebb, 0x8ebc, 0x8ebd, + 0x8ec1, 0x8ec2, 0x8ec3, 0x8ec4, 0x8ec5, 0x8ec6, 0x8ec7, 0x8ec8, + 0x8ec9, 0x8eca, 0x8ecb, 0x8ecc, 0x8ecd, 0x8ece, 0x8ecf, 0x8ed0 +}; + +static unsigned short johab_from_unicode_b0[] = { + 0x8ed1, 0x8ed3, 0x8ed4, 0x8ed5, 0x8ed6, 0x8ed7, 0x8ed8, 0x8ed9, + 0x8eda, 0x8edb, 0x8edc, 0x8edd, 0x8ee1, 0x8ee2, 0x8ee3, 0x8ee4, + 0x8ee5, 0x8ee6, 0x8ee7, 0x8ee8, 0x8ee9, 0x8eea, 0x8eeb, 0x8eec, + 0x8eed, 0x8eee, 0x8eef, 0x8ef0, 0x8ef1, 0x8ef3, 0x8ef4, 0x8ef5, + 0x8ef6, 0x8ef7, 0x8ef8, 0x8ef9, 0x8efa, 0x8efb, 0x8efc, 0x8efd, + 0x8f41, 0x8f42, 0x8f43, 0x8f44, 0x8f45, 0x8f46, 0x8f47, 0x8f48, + 0x8f49, 0x8f4a, 0x8f4b, 0x8f4c, 0x8f4d, 0x8f4e, 0x8f4f, 0x8f50, + 0x8f51, 0x8f53, 0x8f54, 0x8f55, 0x8f56, 0x8f57, 0x8f58, 0x8f59, + 0x8f5a, 0x8f5b, 0x8f5c, 0x8f5d, 0x8f61, 0x8f62, 0x8f63, 0x8f64, + 0x8f65, 0x8f66, 0x8f67, 0x8f68, 0x8f69, 0x8f6a, 0x8f6b, 0x8f6c, + 0x8f6d, 0x8f6e, 0x8f6f, 0x8f70, 0x8f71, 0x8f73, 0x8f74, 0x8f75, + 0x8f76, 0x8f77, 0x8f78, 0x8f79, 0x8f7a, 0x8f7b, 0x8f7c, 0x8f7d, + 0x8f81, 0x8f82, 0x8f83, 0x8f84, 0x8f85, 0x8f86, 0x8f87, 0x8f88, + 0x8f89, 0x8f8a, 0x8f8b, 0x8f8c, 0x8f8d, 0x8f8e, 0x8f8f, 0x8f90, + 0x8f91, 0x8f93, 0x8f94, 0x8f95, 0x8f96, 0x8f97, 0x8f98, 0x8f99, + 0x8f9a, 0x8f9b, 0x8f9c, 0x8f9d, 0x8fa1, 0x8fa2, 0x8fa3, 0x8fa4, + 0x8fa5, 0x8fa6, 0x8fa7, 0x8fa8, 0x8fa9, 0x8faa, 0x8fab, 0x8fac, + 0x8fad, 0x8fae, 0x8faf, 0x8fb0, 0x8fb1, 0x8fb3, 0x8fb4, 0x8fb5, + 0x8fb6, 0x8fb7, 0x8fb8, 0x8fb9, 0x8fba, 0x8fbb, 0x8fbc, 0x8fbd, + 0x9061, 0x9062, 0x9063, 0x9064, 0x9065, 0x9066, 0x9067, 0x9068, + 0x9069, 0x906a, 0x906b, 0x906c, 0x906d, 0x906e, 0x906f, 0x9070, + 0x9071, 0x9073, 0x9074, 0x9075, 0x9076, 0x9077, 0x9078, 0x9079, + 0x907a, 0x907b, 0x907c, 0x907d, 0x9081, 0x9082, 0x9083, 0x9084, + 0x9085, 0x9086, 0x9087, 0x9088, 0x9089, 0x908a, 0x908b, 0x908c, + 0x908d, 0x908e, 0x908f, 0x9090, 0x9091, 0x9093, 0x9094, 0x9095, + 0x9096, 0x9097, 0x9098, 0x9099, 0x909a, 0x909b, 0x909c, 0x909d, + 0x90a1, 0x90a2, 0x90a3, 0x90a4, 0x90a5, 0x90a6, 0x90a7, 0x90a8, + 0x90a9, 0x90aa, 0x90ab, 0x90ac, 0x90ad, 0x90ae, 0x90af, 0x90b0, + 0x90b1, 0x90b3, 0x90b4, 0x90b5, 0x90b6, 0x90b7, 0x90b8, 0x90b9, + 0x90ba, 0x90bb, 0x90bc, 0x90bd, 0x90c1, 0x90c2, 0x90c3, 0x90c4, + 0x90c5, 0x90c6, 0x90c7, 0x90c8, 0x90c9, 0x90ca, 0x90cb, 0x90cc, + 0x90cd, 0x90ce, 0x90cf, 0x90d0, 0x90d1, 0x90d3, 0x90d4, 0x90d5 +}; + +static unsigned short johab_from_unicode_b1[] = { + 0x90d6, 0x90d7, 0x90d8, 0x90d9, 0x90da, 0x90db, 0x90dc, 0x90dd, + 0x90e1, 0x90e2, 0x90e3, 0x90e4, 0x90e5, 0x90e6, 0x90e7, 0x90e8, + 0x90e9, 0x90ea, 0x90eb, 0x90ec, 0x90ed, 0x90ee, 0x90ef, 0x90f0, + 0x90f1, 0x90f3, 0x90f4, 0x90f5, 0x90f6, 0x90f7, 0x90f8, 0x90f9, + 0x90fa, 0x90fb, 0x90fc, 0x90fd, 0x9141, 0x9142, 0x9143, 0x9144, + 0x9145, 0x9146, 0x9147, 0x9148, 0x9149, 0x914a, 0x914b, 0x914c, + 0x914d, 0x914e, 0x914f, 0x9150, 0x9151, 0x9153, 0x9154, 0x9155, + 0x9156, 0x9157, 0x9158, 0x9159, 0x915a, 0x915b, 0x915c, 0x915d, + 0x9161, 0x9162, 0x9163, 0x9164, 0x9165, 0x9166, 0x9167, 0x9168, + 0x9169, 0x916a, 0x916b, 0x916c, 0x916d, 0x916e, 0x916f, 0x9170, + 0x9171, 0x9173, 0x9174, 0x9175, 0x9176, 0x9177, 0x9178, 0x9179, + 0x917a, 0x917b, 0x917c, 0x917d, 0x9181, 0x9182, 0x9183, 0x9184, + 0x9185, 0x9186, 0x9187, 0x9188, 0x9189, 0x918a, 0x918b, 0x918c, + 0x918d, 0x918e, 0x918f, 0x9190, 0x9191, 0x9193, 0x9194, 0x9195, + 0x9196, 0x9197, 0x9198, 0x9199, 0x919a, 0x919b, 0x919c, 0x919d, + 0x91a1, 0x91a2, 0x91a3, 0x91a4, 0x91a5, 0x91a6, 0x91a7, 0x91a8, + 0x91a9, 0x91aa, 0x91ab, 0x91ac, 0x91ad, 0x91ae, 0x91af, 0x91b0, + 0x91b1, 0x91b3, 0x91b4, 0x91b5, 0x91b6, 0x91b7, 0x91b8, 0x91b9, + 0x91ba, 0x91bb, 0x91bc, 0x91bd, 0x91c1, 0x91c2, 0x91c3, 0x91c4, + 0x91c5, 0x91c6, 0x91c7, 0x91c8, 0x91c9, 0x91ca, 0x91cb, 0x91cc, + 0x91cd, 0x91ce, 0x91cf, 0x91d0, 0x91d1, 0x91d3, 0x91d4, 0x91d5, + 0x91d6, 0x91d7, 0x91d8, 0x91d9, 0x91da, 0x91db, 0x91dc, 0x91dd, + 0x91e1, 0x91e2, 0x91e3, 0x91e4, 0x91e5, 0x91e6, 0x91e7, 0x91e8, + 0x91e9, 0x91ea, 0x91eb, 0x91ec, 0x91ed, 0x91ee, 0x91ef, 0x91f0, + 0x91f1, 0x91f3, 0x91f4, 0x91f5, 0x91f6, 0x91f7, 0x91f8, 0x91f9, + 0x91fa, 0x91fb, 0x91fc, 0x91fd, 0x9241, 0x9242, 0x9243, 0x9244, + 0x9245, 0x9246, 0x9247, 0x9248, 0x9249, 0x924a, 0x924b, 0x924c, + 0x924d, 0x924e, 0x924f, 0x9250, 0x9251, 0x9253, 0x9254, 0x9255, + 0x9256, 0x9257, 0x9258, 0x9259, 0x925a, 0x925b, 0x925c, 0x925d, + 0x9261, 0x9262, 0x9263, 0x9264, 0x9265, 0x9266, 0x9267, 0x9268, + 0x9269, 0x926a, 0x926b, 0x926c, 0x926d, 0x926e, 0x926f, 0x9270, + 0x9271, 0x9273, 0x9274, 0x9275, 0x9276, 0x9277, 0x9278, 0x9279 +}; + +static unsigned short johab_from_unicode_b2[] = { + 0x927a, 0x927b, 0x927c, 0x927d, 0x9281, 0x9282, 0x9283, 0x9284, + 0x9285, 0x9286, 0x9287, 0x9288, 0x9289, 0x928a, 0x928b, 0x928c, + 0x928d, 0x928e, 0x928f, 0x9290, 0x9291, 0x9293, 0x9294, 0x9295, + 0x9296, 0x9297, 0x9298, 0x9299, 0x929a, 0x929b, 0x929c, 0x929d, + 0x92a1, 0x92a2, 0x92a3, 0x92a4, 0x92a5, 0x92a6, 0x92a7, 0x92a8, + 0x92a9, 0x92aa, 0x92ab, 0x92ac, 0x92ad, 0x92ae, 0x92af, 0x92b0, + 0x92b1, 0x92b3, 0x92b4, 0x92b5, 0x92b6, 0x92b7, 0x92b8, 0x92b9, + 0x92ba, 0x92bb, 0x92bc, 0x92bd, 0x92c1, 0x92c2, 0x92c3, 0x92c4, + 0x92c5, 0x92c6, 0x92c7, 0x92c8, 0x92c9, 0x92ca, 0x92cb, 0x92cc, + 0x92cd, 0x92ce, 0x92cf, 0x92d0, 0x92d1, 0x92d3, 0x92d4, 0x92d5, + 0x92d6, 0x92d7, 0x92d8, 0x92d9, 0x92da, 0x92db, 0x92dc, 0x92dd, + 0x92e1, 0x92e2, 0x92e3, 0x92e4, 0x92e5, 0x92e6, 0x92e7, 0x92e8, + 0x92e9, 0x92ea, 0x92eb, 0x92ec, 0x92ed, 0x92ee, 0x92ef, 0x92f0, + 0x92f1, 0x92f3, 0x92f4, 0x92f5, 0x92f6, 0x92f7, 0x92f8, 0x92f9, + 0x92fa, 0x92fb, 0x92fc, 0x92fd, 0x9341, 0x9342, 0x9343, 0x9344, + 0x9345, 0x9346, 0x9347, 0x9348, 0x9349, 0x934a, 0x934b, 0x934c, + 0x934d, 0x934e, 0x934f, 0x9350, 0x9351, 0x9353, 0x9354, 0x9355, + 0x9356, 0x9357, 0x9358, 0x9359, 0x935a, 0x935b, 0x935c, 0x935d, + 0x9361, 0x9362, 0x9363, 0x9364, 0x9365, 0x9366, 0x9367, 0x9368, + 0x9369, 0x936a, 0x936b, 0x936c, 0x936d, 0x936e, 0x936f, 0x9370, + 0x9371, 0x9373, 0x9374, 0x9375, 0x9376, 0x9377, 0x9378, 0x9379, + 0x937a, 0x937b, 0x937c, 0x937d, 0x9381, 0x9382, 0x9383, 0x9384, + 0x9385, 0x9386, 0x9387, 0x9388, 0x9389, 0x938a, 0x938b, 0x938c, + 0x938d, 0x938e, 0x938f, 0x9390, 0x9391, 0x9393, 0x9394, 0x9395, + 0x9396, 0x9397, 0x9398, 0x9399, 0x939a, 0x939b, 0x939c, 0x939d, + 0x93a1, 0x93a2, 0x93a3, 0x93a4, 0x93a5, 0x93a6, 0x93a7, 0x93a8, + 0x93a9, 0x93aa, 0x93ab, 0x93ac, 0x93ad, 0x93ae, 0x93af, 0x93b0, + 0x93b1, 0x93b3, 0x93b4, 0x93b5, 0x93b6, 0x93b7, 0x93b8, 0x93b9, + 0x93ba, 0x93bb, 0x93bc, 0x93bd, 0x9461, 0x9462, 0x9463, 0x9464, + 0x9465, 0x9466, 0x9467, 0x9468, 0x9469, 0x946a, 0x946b, 0x946c, + 0x946d, 0x946e, 0x946f, 0x9470, 0x9471, 0x9473, 0x9474, 0x9475, + 0x9476, 0x9477, 0x9478, 0x9479, 0x947a, 0x947b, 0x947c, 0x947d +}; + +static unsigned short johab_from_unicode_b3[] = { + 0x9481, 0x9482, 0x9483, 0x9484, 0x9485, 0x9486, 0x9487, 0x9488, + 0x9489, 0x948a, 0x948b, 0x948c, 0x948d, 0x948e, 0x948f, 0x9490, + 0x9491, 0x9493, 0x9494, 0x9495, 0x9496, 0x9497, 0x9498, 0x9499, + 0x949a, 0x949b, 0x949c, 0x949d, 0x94a1, 0x94a2, 0x94a3, 0x94a4, + 0x94a5, 0x94a6, 0x94a7, 0x94a8, 0x94a9, 0x94aa, 0x94ab, 0x94ac, + 0x94ad, 0x94ae, 0x94af, 0x94b0, 0x94b1, 0x94b3, 0x94b4, 0x94b5, + 0x94b6, 0x94b7, 0x94b8, 0x94b9, 0x94ba, 0x94bb, 0x94bc, 0x94bd, + 0x94c1, 0x94c2, 0x94c3, 0x94c4, 0x94c5, 0x94c6, 0x94c7, 0x94c8, + 0x94c9, 0x94ca, 0x94cb, 0x94cc, 0x94cd, 0x94ce, 0x94cf, 0x94d0, + 0x94d1, 0x94d3, 0x94d4, 0x94d5, 0x94d6, 0x94d7, 0x94d8, 0x94d9, + 0x94da, 0x94db, 0x94dc, 0x94dd, 0x94e1, 0x94e2, 0x94e3, 0x94e4, + 0x94e5, 0x94e6, 0x94e7, 0x94e8, 0x94e9, 0x94ea, 0x94eb, 0x94ec, + 0x94ed, 0x94ee, 0x94ef, 0x94f0, 0x94f1, 0x94f3, 0x94f4, 0x94f5, + 0x94f6, 0x94f7, 0x94f8, 0x94f9, 0x94fa, 0x94fb, 0x94fc, 0x94fd, + 0x9541, 0x9542, 0x9543, 0x9544, 0x9545, 0x9546, 0x9547, 0x9548, + 0x9549, 0x954a, 0x954b, 0x954c, 0x954d, 0x954e, 0x954f, 0x9550, + 0x9551, 0x9553, 0x9554, 0x9555, 0x9556, 0x9557, 0x9558, 0x9559, + 0x955a, 0x955b, 0x955c, 0x955d, 0x9561, 0x9562, 0x9563, 0x9564, + 0x9565, 0x9566, 0x9567, 0x9568, 0x9569, 0x956a, 0x956b, 0x956c, + 0x956d, 0x956e, 0x956f, 0x9570, 0x9571, 0x9573, 0x9574, 0x9575, + 0x9576, 0x9577, 0x9578, 0x9579, 0x957a, 0x957b, 0x957c, 0x957d, + 0x9581, 0x9582, 0x9583, 0x9584, 0x9585, 0x9586, 0x9587, 0x9588, + 0x9589, 0x958a, 0x958b, 0x958c, 0x958d, 0x958e, 0x958f, 0x9590, + 0x9591, 0x9593, 0x9594, 0x9595, 0x9596, 0x9597, 0x9598, 0x9599, + 0x959a, 0x959b, 0x959c, 0x959d, 0x95a1, 0x95a2, 0x95a3, 0x95a4, + 0x95a5, 0x95a6, 0x95a7, 0x95a8, 0x95a9, 0x95aa, 0x95ab, 0x95ac, + 0x95ad, 0x95ae, 0x95af, 0x95b0, 0x95b1, 0x95b3, 0x95b4, 0x95b5, + 0x95b6, 0x95b7, 0x95b8, 0x95b9, 0x95ba, 0x95bb, 0x95bc, 0x95bd, + 0x95c1, 0x95c2, 0x95c3, 0x95c4, 0x95c5, 0x95c6, 0x95c7, 0x95c8, + 0x95c9, 0x95ca, 0x95cb, 0x95cc, 0x95cd, 0x95ce, 0x95cf, 0x95d0, + 0x95d1, 0x95d3, 0x95d4, 0x95d5, 0x95d6, 0x95d7, 0x95d8, 0x95d9, + 0x95da, 0x95db, 0x95dc, 0x95dd, 0x95e1, 0x95e2, 0x95e3, 0x95e4 +}; + +static unsigned short johab_from_unicode_b4[] = { + 0x95e5, 0x95e6, 0x95e7, 0x95e8, 0x95e9, 0x95ea, 0x95eb, 0x95ec, + 0x95ed, 0x95ee, 0x95ef, 0x95f0, 0x95f1, 0x95f3, 0x95f4, 0x95f5, + 0x95f6, 0x95f7, 0x95f8, 0x95f9, 0x95fa, 0x95fb, 0x95fc, 0x95fd, + 0x9641, 0x9642, 0x9643, 0x9644, 0x9645, 0x9646, 0x9647, 0x9648, + 0x9649, 0x964a, 0x964b, 0x964c, 0x964d, 0x964e, 0x964f, 0x9650, + 0x9651, 0x9653, 0x9654, 0x9655, 0x9656, 0x9657, 0x9658, 0x9659, + 0x965a, 0x965b, 0x965c, 0x965d, 0x9661, 0x9662, 0x9663, 0x9664, + 0x9665, 0x9666, 0x9667, 0x9668, 0x9669, 0x966a, 0x966b, 0x966c, + 0x966d, 0x966e, 0x966f, 0x9670, 0x9671, 0x9673, 0x9674, 0x9675, + 0x9676, 0x9677, 0x9678, 0x9679, 0x967a, 0x967b, 0x967c, 0x967d, + 0x9681, 0x9682, 0x9683, 0x9684, 0x9685, 0x9686, 0x9687, 0x9688, + 0x9689, 0x968a, 0x968b, 0x968c, 0x968d, 0x968e, 0x968f, 0x9690, + 0x9691, 0x9693, 0x9694, 0x9695, 0x9696, 0x9697, 0x9698, 0x9699, + 0x969a, 0x969b, 0x969c, 0x969d, 0x96a1, 0x96a2, 0x96a3, 0x96a4, + 0x96a5, 0x96a6, 0x96a7, 0x96a8, 0x96a9, 0x96aa, 0x96ab, 0x96ac, + 0x96ad, 0x96ae, 0x96af, 0x96b0, 0x96b1, 0x96b3, 0x96b4, 0x96b5, + 0x96b6, 0x96b7, 0x96b8, 0x96b9, 0x96ba, 0x96bb, 0x96bc, 0x96bd, + 0x96c1, 0x96c2, 0x96c3, 0x96c4, 0x96c5, 0x96c6, 0x96c7, 0x96c8, + 0x96c9, 0x96ca, 0x96cb, 0x96cc, 0x96cd, 0x96ce, 0x96cf, 0x96d0, + 0x96d1, 0x96d3, 0x96d4, 0x96d5, 0x96d6, 0x96d7, 0x96d8, 0x96d9, + 0x96da, 0x96db, 0x96dc, 0x96dd, 0x96e1, 0x96e2, 0x96e3, 0x96e4, + 0x96e5, 0x96e6, 0x96e7, 0x96e8, 0x96e9, 0x96ea, 0x96eb, 0x96ec, + 0x96ed, 0x96ee, 0x96ef, 0x96f0, 0x96f1, 0x96f3, 0x96f4, 0x96f5, + 0x96f6, 0x96f7, 0x96f8, 0x96f9, 0x96fa, 0x96fb, 0x96fc, 0x96fd, + 0x9741, 0x9742, 0x9743, 0x9744, 0x9745, 0x9746, 0x9747, 0x9748, + 0x9749, 0x974a, 0x974b, 0x974c, 0x974d, 0x974e, 0x974f, 0x9750, + 0x9751, 0x9753, 0x9754, 0x9755, 0x9756, 0x9757, 0x9758, 0x9759, + 0x975a, 0x975b, 0x975c, 0x975d, 0x9761, 0x9762, 0x9763, 0x9764, + 0x9765, 0x9766, 0x9767, 0x9768, 0x9769, 0x976a, 0x976b, 0x976c, + 0x976d, 0x976e, 0x976f, 0x9770, 0x9771, 0x9773, 0x9774, 0x9775, + 0x9776, 0x9777, 0x9778, 0x9779, 0x977a, 0x977b, 0x977c, 0x977d, + 0x9781, 0x9782, 0x9783, 0x9784, 0x9785, 0x9786, 0x9787, 0x9788 +}; + +static unsigned short johab_from_unicode_b5[] = { + 0x9789, 0x978a, 0x978b, 0x978c, 0x978d, 0x978e, 0x978f, 0x9790, + 0x9791, 0x9793, 0x9794, 0x9795, 0x9796, 0x9797, 0x9798, 0x9799, + 0x979a, 0x979b, 0x979c, 0x979d, 0x97a1, 0x97a2, 0x97a3, 0x97a4, + 0x97a5, 0x97a6, 0x97a7, 0x97a8, 0x97a9, 0x97aa, 0x97ab, 0x97ac, + 0x97ad, 0x97ae, 0x97af, 0x97b0, 0x97b1, 0x97b3, 0x97b4, 0x97b5, + 0x97b6, 0x97b7, 0x97b8, 0x97b9, 0x97ba, 0x97bb, 0x97bc, 0x97bd, + 0x9861, 0x9862, 0x9863, 0x9864, 0x9865, 0x9866, 0x9867, 0x9868, + 0x9869, 0x986a, 0x986b, 0x986c, 0x986d, 0x986e, 0x986f, 0x9870, + 0x9871, 0x9873, 0x9874, 0x9875, 0x9876, 0x9877, 0x9878, 0x9879, + 0x987a, 0x987b, 0x987c, 0x987d, 0x9881, 0x9882, 0x9883, 0x9884, + 0x9885, 0x9886, 0x9887, 0x9888, 0x9889, 0x988a, 0x988b, 0x988c, + 0x988d, 0x988e, 0x988f, 0x9890, 0x9891, 0x9893, 0x9894, 0x9895, + 0x9896, 0x9897, 0x9898, 0x9899, 0x989a, 0x989b, 0x989c, 0x989d, + 0x98a1, 0x98a2, 0x98a3, 0x98a4, 0x98a5, 0x98a6, 0x98a7, 0x98a8, + 0x98a9, 0x98aa, 0x98ab, 0x98ac, 0x98ad, 0x98ae, 0x98af, 0x98b0, + 0x98b1, 0x98b3, 0x98b4, 0x98b5, 0x98b6, 0x98b7, 0x98b8, 0x98b9, + 0x98ba, 0x98bb, 0x98bc, 0x98bd, 0x98c1, 0x98c2, 0x98c3, 0x98c4, + 0x98c5, 0x98c6, 0x98c7, 0x98c8, 0x98c9, 0x98ca, 0x98cb, 0x98cc, + 0x98cd, 0x98ce, 0x98cf, 0x98d0, 0x98d1, 0x98d3, 0x98d4, 0x98d5, + 0x98d6, 0x98d7, 0x98d8, 0x98d9, 0x98da, 0x98db, 0x98dc, 0x98dd, + 0x98e1, 0x98e2, 0x98e3, 0x98e4, 0x98e5, 0x98e6, 0x98e7, 0x98e8, + 0x98e9, 0x98ea, 0x98eb, 0x98ec, 0x98ed, 0x98ee, 0x98ef, 0x98f0, + 0x98f1, 0x98f3, 0x98f4, 0x98f5, 0x98f6, 0x98f7, 0x98f8, 0x98f9, + 0x98fa, 0x98fb, 0x98fc, 0x98fd, 0x9941, 0x9942, 0x9943, 0x9944, + 0x9945, 0x9946, 0x9947, 0x9948, 0x9949, 0x994a, 0x994b, 0x994c, + 0x994d, 0x994e, 0x994f, 0x9950, 0x9951, 0x9953, 0x9954, 0x9955, + 0x9956, 0x9957, 0x9958, 0x9959, 0x995a, 0x995b, 0x995c, 0x995d, + 0x9961, 0x9962, 0x9963, 0x9964, 0x9965, 0x9966, 0x9967, 0x9968, + 0x9969, 0x996a, 0x996b, 0x996c, 0x996d, 0x996e, 0x996f, 0x9970, + 0x9971, 0x9973, 0x9974, 0x9975, 0x9976, 0x9977, 0x9978, 0x9979, + 0x997a, 0x997b, 0x997c, 0x997d, 0x9981, 0x9982, 0x9983, 0x9984, + 0x9985, 0x9986, 0x9987, 0x9988, 0x9989, 0x998a, 0x998b, 0x998c +}; + +static unsigned short johab_from_unicode_b6[] = { + 0x998d, 0x998e, 0x998f, 0x9990, 0x9991, 0x9993, 0x9994, 0x9995, + 0x9996, 0x9997, 0x9998, 0x9999, 0x999a, 0x999b, 0x999c, 0x999d, + 0x99a1, 0x99a2, 0x99a3, 0x99a4, 0x99a5, 0x99a6, 0x99a7, 0x99a8, + 0x99a9, 0x99aa, 0x99ab, 0x99ac, 0x99ad, 0x99ae, 0x99af, 0x99b0, + 0x99b1, 0x99b3, 0x99b4, 0x99b5, 0x99b6, 0x99b7, 0x99b8, 0x99b9, + 0x99ba, 0x99bb, 0x99bc, 0x99bd, 0x99c1, 0x99c2, 0x99c3, 0x99c4, + 0x99c5, 0x99c6, 0x99c7, 0x99c8, 0x99c9, 0x99ca, 0x99cb, 0x99cc, + 0x99cd, 0x99ce, 0x99cf, 0x99d0, 0x99d1, 0x99d3, 0x99d4, 0x99d5, + 0x99d6, 0x99d7, 0x99d8, 0x99d9, 0x99da, 0x99db, 0x99dc, 0x99dd, + 0x99e1, 0x99e2, 0x99e3, 0x99e4, 0x99e5, 0x99e6, 0x99e7, 0x99e8, + 0x99e9, 0x99ea, 0x99eb, 0x99ec, 0x99ed, 0x99ee, 0x99ef, 0x99f0, + 0x99f1, 0x99f3, 0x99f4, 0x99f5, 0x99f6, 0x99f7, 0x99f8, 0x99f9, + 0x99fa, 0x99fb, 0x99fc, 0x99fd, 0x9a41, 0x9a42, 0x9a43, 0x9a44, + 0x9a45, 0x9a46, 0x9a47, 0x9a48, 0x9a49, 0x9a4a, 0x9a4b, 0x9a4c, + 0x9a4d, 0x9a4e, 0x9a4f, 0x9a50, 0x9a51, 0x9a53, 0x9a54, 0x9a55, + 0x9a56, 0x9a57, 0x9a58, 0x9a59, 0x9a5a, 0x9a5b, 0x9a5c, 0x9a5d, + 0x9a61, 0x9a62, 0x9a63, 0x9a64, 0x9a65, 0x9a66, 0x9a67, 0x9a68, + 0x9a69, 0x9a6a, 0x9a6b, 0x9a6c, 0x9a6d, 0x9a6e, 0x9a6f, 0x9a70, + 0x9a71, 0x9a73, 0x9a74, 0x9a75, 0x9a76, 0x9a77, 0x9a78, 0x9a79, + 0x9a7a, 0x9a7b, 0x9a7c, 0x9a7d, 0x9a81, 0x9a82, 0x9a83, 0x9a84, + 0x9a85, 0x9a86, 0x9a87, 0x9a88, 0x9a89, 0x9a8a, 0x9a8b, 0x9a8c, + 0x9a8d, 0x9a8e, 0x9a8f, 0x9a90, 0x9a91, 0x9a93, 0x9a94, 0x9a95, + 0x9a96, 0x9a97, 0x9a98, 0x9a99, 0x9a9a, 0x9a9b, 0x9a9c, 0x9a9d, + 0x9aa1, 0x9aa2, 0x9aa3, 0x9aa4, 0x9aa5, 0x9aa6, 0x9aa7, 0x9aa8, + 0x9aa9, 0x9aaa, 0x9aab, 0x9aac, 0x9aad, 0x9aae, 0x9aaf, 0x9ab0, + 0x9ab1, 0x9ab3, 0x9ab4, 0x9ab5, 0x9ab6, 0x9ab7, 0x9ab8, 0x9ab9, + 0x9aba, 0x9abb, 0x9abc, 0x9abd, 0x9ac1, 0x9ac2, 0x9ac3, 0x9ac4, + 0x9ac5, 0x9ac6, 0x9ac7, 0x9ac8, 0x9ac9, 0x9aca, 0x9acb, 0x9acc, + 0x9acd, 0x9ace, 0x9acf, 0x9ad0, 0x9ad1, 0x9ad3, 0x9ad4, 0x9ad5, + 0x9ad6, 0x9ad7, 0x9ad8, 0x9ad9, 0x9ada, 0x9adb, 0x9adc, 0x9add, + 0x9ae1, 0x9ae2, 0x9ae3, 0x9ae4, 0x9ae5, 0x9ae6, 0x9ae7, 0x9ae8, + 0x9ae9, 0x9aea, 0x9aeb, 0x9aec, 0x9aed, 0x9aee, 0x9aef, 0x9af0 +}; + +static unsigned short johab_from_unicode_b7[] = { + 0x9af1, 0x9af3, 0x9af4, 0x9af5, 0x9af6, 0x9af7, 0x9af8, 0x9af9, + 0x9afa, 0x9afb, 0x9afc, 0x9afd, 0x9b41, 0x9b42, 0x9b43, 0x9b44, + 0x9b45, 0x9b46, 0x9b47, 0x9b48, 0x9b49, 0x9b4a, 0x9b4b, 0x9b4c, + 0x9b4d, 0x9b4e, 0x9b4f, 0x9b50, 0x9b51, 0x9b53, 0x9b54, 0x9b55, + 0x9b56, 0x9b57, 0x9b58, 0x9b59, 0x9b5a, 0x9b5b, 0x9b5c, 0x9b5d, + 0x9b61, 0x9b62, 0x9b63, 0x9b64, 0x9b65, 0x9b66, 0x9b67, 0x9b68, + 0x9b69, 0x9b6a, 0x9b6b, 0x9b6c, 0x9b6d, 0x9b6e, 0x9b6f, 0x9b70, + 0x9b71, 0x9b73, 0x9b74, 0x9b75, 0x9b76, 0x9b77, 0x9b78, 0x9b79, + 0x9b7a, 0x9b7b, 0x9b7c, 0x9b7d, 0x9b81, 0x9b82, 0x9b83, 0x9b84, + 0x9b85, 0x9b86, 0x9b87, 0x9b88, 0x9b89, 0x9b8a, 0x9b8b, 0x9b8c, + 0x9b8d, 0x9b8e, 0x9b8f, 0x9b90, 0x9b91, 0x9b93, 0x9b94, 0x9b95, + 0x9b96, 0x9b97, 0x9b98, 0x9b99, 0x9b9a, 0x9b9b, 0x9b9c, 0x9b9d, + 0x9ba1, 0x9ba2, 0x9ba3, 0x9ba4, 0x9ba5, 0x9ba6, 0x9ba7, 0x9ba8, + 0x9ba9, 0x9baa, 0x9bab, 0x9bac, 0x9bad, 0x9bae, 0x9baf, 0x9bb0, + 0x9bb1, 0x9bb3, 0x9bb4, 0x9bb5, 0x9bb6, 0x9bb7, 0x9bb8, 0x9bb9, + 0x9bba, 0x9bbb, 0x9bbc, 0x9bbd, 0x9c61, 0x9c62, 0x9c63, 0x9c64, + 0x9c65, 0x9c66, 0x9c67, 0x9c68, 0x9c69, 0x9c6a, 0x9c6b, 0x9c6c, + 0x9c6d, 0x9c6e, 0x9c6f, 0x9c70, 0x9c71, 0x9c73, 0x9c74, 0x9c75, + 0x9c76, 0x9c77, 0x9c78, 0x9c79, 0x9c7a, 0x9c7b, 0x9c7c, 0x9c7d, + 0x9c81, 0x9c82, 0x9c83, 0x9c84, 0x9c85, 0x9c86, 0x9c87, 0x9c88, + 0x9c89, 0x9c8a, 0x9c8b, 0x9c8c, 0x9c8d, 0x9c8e, 0x9c8f, 0x9c90, + 0x9c91, 0x9c93, 0x9c94, 0x9c95, 0x9c96, 0x9c97, 0x9c98, 0x9c99, + 0x9c9a, 0x9c9b, 0x9c9c, 0x9c9d, 0x9ca1, 0x9ca2, 0x9ca3, 0x9ca4, + 0x9ca5, 0x9ca6, 0x9ca7, 0x9ca8, 0x9ca9, 0x9caa, 0x9cab, 0x9cac, + 0x9cad, 0x9cae, 0x9caf, 0x9cb0, 0x9cb1, 0x9cb3, 0x9cb4, 0x9cb5, + 0x9cb6, 0x9cb7, 0x9cb8, 0x9cb9, 0x9cba, 0x9cbb, 0x9cbc, 0x9cbd, + 0x9cc1, 0x9cc2, 0x9cc3, 0x9cc4, 0x9cc5, 0x9cc6, 0x9cc7, 0x9cc8, + 0x9cc9, 0x9cca, 0x9ccb, 0x9ccc, 0x9ccd, 0x9cce, 0x9ccf, 0x9cd0, + 0x9cd1, 0x9cd3, 0x9cd4, 0x9cd5, 0x9cd6, 0x9cd7, 0x9cd8, 0x9cd9, + 0x9cda, 0x9cdb, 0x9cdc, 0x9cdd, 0x9ce1, 0x9ce2, 0x9ce3, 0x9ce4, + 0x9ce5, 0x9ce6, 0x9ce7, 0x9ce8, 0x9ce9, 0x9cea, 0x9ceb, 0x9cec, + 0x9ced, 0x9cee, 0x9cef, 0x9cf0, 0x9cf1, 0x9cf3, 0x9cf4, 0x9cf5 +}; + +static unsigned short johab_from_unicode_b8[] = { + 0x9cf6, 0x9cf7, 0x9cf8, 0x9cf9, 0x9cfa, 0x9cfb, 0x9cfc, 0x9cfd, + 0x9d41, 0x9d42, 0x9d43, 0x9d44, 0x9d45, 0x9d46, 0x9d47, 0x9d48, + 0x9d49, 0x9d4a, 0x9d4b, 0x9d4c, 0x9d4d, 0x9d4e, 0x9d4f, 0x9d50, + 0x9d51, 0x9d53, 0x9d54, 0x9d55, 0x9d56, 0x9d57, 0x9d58, 0x9d59, + 0x9d5a, 0x9d5b, 0x9d5c, 0x9d5d, 0x9d61, 0x9d62, 0x9d63, 0x9d64, + 0x9d65, 0x9d66, 0x9d67, 0x9d68, 0x9d69, 0x9d6a, 0x9d6b, 0x9d6c, + 0x9d6d, 0x9d6e, 0x9d6f, 0x9d70, 0x9d71, 0x9d73, 0x9d74, 0x9d75, + 0x9d76, 0x9d77, 0x9d78, 0x9d79, 0x9d7a, 0x9d7b, 0x9d7c, 0x9d7d, + 0x9d81, 0x9d82, 0x9d83, 0x9d84, 0x9d85, 0x9d86, 0x9d87, 0x9d88, + 0x9d89, 0x9d8a, 0x9d8b, 0x9d8c, 0x9d8d, 0x9d8e, 0x9d8f, 0x9d90, + 0x9d91, 0x9d93, 0x9d94, 0x9d95, 0x9d96, 0x9d97, 0x9d98, 0x9d99, + 0x9d9a, 0x9d9b, 0x9d9c, 0x9d9d, 0x9da1, 0x9da2, 0x9da3, 0x9da4, + 0x9da5, 0x9da6, 0x9da7, 0x9da8, 0x9da9, 0x9daa, 0x9dab, 0x9dac, + 0x9dad, 0x9dae, 0x9daf, 0x9db0, 0x9db1, 0x9db3, 0x9db4, 0x9db5, + 0x9db6, 0x9db7, 0x9db8, 0x9db9, 0x9dba, 0x9dbb, 0x9dbc, 0x9dbd, + 0x9dc1, 0x9dc2, 0x9dc3, 0x9dc4, 0x9dc5, 0x9dc6, 0x9dc7, 0x9dc8, + 0x9dc9, 0x9dca, 0x9dcb, 0x9dcc, 0x9dcd, 0x9dce, 0x9dcf, 0x9dd0, + 0x9dd1, 0x9dd3, 0x9dd4, 0x9dd5, 0x9dd6, 0x9dd7, 0x9dd8, 0x9dd9, + 0x9dda, 0x9ddb, 0x9ddc, 0x9ddd, 0x9de1, 0x9de2, 0x9de3, 0x9de4, + 0x9de5, 0x9de6, 0x9de7, 0x9de8, 0x9de9, 0x9dea, 0x9deb, 0x9dec, + 0x9ded, 0x9dee, 0x9def, 0x9df0, 0x9df1, 0x9df3, 0x9df4, 0x9df5, + 0x9df6, 0x9df7, 0x9df8, 0x9df9, 0x9dfa, 0x9dfb, 0x9dfc, 0x9dfd, + 0x9e41, 0x9e42, 0x9e43, 0x9e44, 0x9e45, 0x9e46, 0x9e47, 0x9e48, + 0x9e49, 0x9e4a, 0x9e4b, 0x9e4c, 0x9e4d, 0x9e4e, 0x9e4f, 0x9e50, + 0x9e51, 0x9e53, 0x9e54, 0x9e55, 0x9e56, 0x9e57, 0x9e58, 0x9e59, + 0x9e5a, 0x9e5b, 0x9e5c, 0x9e5d, 0x9e61, 0x9e62, 0x9e63, 0x9e64, + 0x9e65, 0x9e66, 0x9e67, 0x9e68, 0x9e69, 0x9e6a, 0x9e6b, 0x9e6c, + 0x9e6d, 0x9e6e, 0x9e6f, 0x9e70, 0x9e71, 0x9e73, 0x9e74, 0x9e75, + 0x9e76, 0x9e77, 0x9e78, 0x9e79, 0x9e7a, 0x9e7b, 0x9e7c, 0x9e7d, + 0x9e81, 0x9e82, 0x9e83, 0x9e84, 0x9e85, 0x9e86, 0x9e87, 0x9e88, + 0x9e89, 0x9e8a, 0x9e8b, 0x9e8c, 0x9e8d, 0x9e8e, 0x9e8f, 0x9e90, + 0x9e91, 0x9e93, 0x9e94, 0x9e95, 0x9e96, 0x9e97, 0x9e98, 0x9e99 +}; + +static unsigned short johab_from_unicode_b9[] = { + 0x9e9a, 0x9e9b, 0x9e9c, 0x9e9d, 0x9ea1, 0x9ea2, 0x9ea3, 0x9ea4, + 0x9ea5, 0x9ea6, 0x9ea7, 0x9ea8, 0x9ea9, 0x9eaa, 0x9eab, 0x9eac, + 0x9ead, 0x9eae, 0x9eaf, 0x9eb0, 0x9eb1, 0x9eb3, 0x9eb4, 0x9eb5, + 0x9eb6, 0x9eb7, 0x9eb8, 0x9eb9, 0x9eba, 0x9ebb, 0x9ebc, 0x9ebd, + 0x9ec1, 0x9ec2, 0x9ec3, 0x9ec4, 0x9ec5, 0x9ec6, 0x9ec7, 0x9ec8, + 0x9ec9, 0x9eca, 0x9ecb, 0x9ecc, 0x9ecd, 0x9ece, 0x9ecf, 0x9ed0, + 0x9ed1, 0x9ed3, 0x9ed4, 0x9ed5, 0x9ed6, 0x9ed7, 0x9ed8, 0x9ed9, + 0x9eda, 0x9edb, 0x9edc, 0x9edd, 0x9ee1, 0x9ee2, 0x9ee3, 0x9ee4, + 0x9ee5, 0x9ee6, 0x9ee7, 0x9ee8, 0x9ee9, 0x9eea, 0x9eeb, 0x9eec, + 0x9eed, 0x9eee, 0x9eef, 0x9ef0, 0x9ef1, 0x9ef3, 0x9ef4, 0x9ef5, + 0x9ef6, 0x9ef7, 0x9ef8, 0x9ef9, 0x9efa, 0x9efb, 0x9efc, 0x9efd, + 0x9f41, 0x9f42, 0x9f43, 0x9f44, 0x9f45, 0x9f46, 0x9f47, 0x9f48, + 0x9f49, 0x9f4a, 0x9f4b, 0x9f4c, 0x9f4d, 0x9f4e, 0x9f4f, 0x9f50, + 0x9f51, 0x9f53, 0x9f54, 0x9f55, 0x9f56, 0x9f57, 0x9f58, 0x9f59, + 0x9f5a, 0x9f5b, 0x9f5c, 0x9f5d, 0x9f61, 0x9f62, 0x9f63, 0x9f64, + 0x9f65, 0x9f66, 0x9f67, 0x9f68, 0x9f69, 0x9f6a, 0x9f6b, 0x9f6c, + 0x9f6d, 0x9f6e, 0x9f6f, 0x9f70, 0x9f71, 0x9f73, 0x9f74, 0x9f75, + 0x9f76, 0x9f77, 0x9f78, 0x9f79, 0x9f7a, 0x9f7b, 0x9f7c, 0x9f7d, + 0x9f81, 0x9f82, 0x9f83, 0x9f84, 0x9f85, 0x9f86, 0x9f87, 0x9f88, + 0x9f89, 0x9f8a, 0x9f8b, 0x9f8c, 0x9f8d, 0x9f8e, 0x9f8f, 0x9f90, + 0x9f91, 0x9f93, 0x9f94, 0x9f95, 0x9f96, 0x9f97, 0x9f98, 0x9f99, + 0x9f9a, 0x9f9b, 0x9f9c, 0x9f9d, 0x9fa1, 0x9fa2, 0x9fa3, 0x9fa4, + 0x9fa5, 0x9fa6, 0x9fa7, 0x9fa8, 0x9fa9, 0x9faa, 0x9fab, 0x9fac, + 0x9fad, 0x9fae, 0x9faf, 0x9fb0, 0x9fb1, 0x9fb3, 0x9fb4, 0x9fb5, + 0x9fb6, 0x9fb7, 0x9fb8, 0x9fb9, 0x9fba, 0x9fbb, 0x9fbc, 0x9fbd, + 0xa061, 0xa062, 0xa063, 0xa064, 0xa065, 0xa066, 0xa067, 0xa068, + 0xa069, 0xa06a, 0xa06b, 0xa06c, 0xa06d, 0xa06e, 0xa06f, 0xa070, + 0xa071, 0xa073, 0xa074, 0xa075, 0xa076, 0xa077, 0xa078, 0xa079, + 0xa07a, 0xa07b, 0xa07c, 0xa07d, 0xa081, 0xa082, 0xa083, 0xa084, + 0xa085, 0xa086, 0xa087, 0xa088, 0xa089, 0xa08a, 0xa08b, 0xa08c, + 0xa08d, 0xa08e, 0xa08f, 0xa090, 0xa091, 0xa093, 0xa094, 0xa095, + 0xa096, 0xa097, 0xa098, 0xa099, 0xa09a, 0xa09b, 0xa09c, 0xa09d +}; + +static unsigned short johab_from_unicode_ba[] = { + 0xa0a1, 0xa0a2, 0xa0a3, 0xa0a4, 0xa0a5, 0xa0a6, 0xa0a7, 0xa0a8, + 0xa0a9, 0xa0aa, 0xa0ab, 0xa0ac, 0xa0ad, 0xa0ae, 0xa0af, 0xa0b0, + 0xa0b1, 0xa0b3, 0xa0b4, 0xa0b5, 0xa0b6, 0xa0b7, 0xa0b8, 0xa0b9, + 0xa0ba, 0xa0bb, 0xa0bc, 0xa0bd, 0xa0c1, 0xa0c2, 0xa0c3, 0xa0c4, + 0xa0c5, 0xa0c6, 0xa0c7, 0xa0c8, 0xa0c9, 0xa0ca, 0xa0cb, 0xa0cc, + 0xa0cd, 0xa0ce, 0xa0cf, 0xa0d0, 0xa0d1, 0xa0d3, 0xa0d4, 0xa0d5, + 0xa0d6, 0xa0d7, 0xa0d8, 0xa0d9, 0xa0da, 0xa0db, 0xa0dc, 0xa0dd, + 0xa0e1, 0xa0e2, 0xa0e3, 0xa0e4, 0xa0e5, 0xa0e6, 0xa0e7, 0xa0e8, + 0xa0e9, 0xa0ea, 0xa0eb, 0xa0ec, 0xa0ed, 0xa0ee, 0xa0ef, 0xa0f0, + 0xa0f1, 0xa0f3, 0xa0f4, 0xa0f5, 0xa0f6, 0xa0f7, 0xa0f8, 0xa0f9, + 0xa0fa, 0xa0fb, 0xa0fc, 0xa0fd, 0xa141, 0xa142, 0xa143, 0xa144, + 0xa145, 0xa146, 0xa147, 0xa148, 0xa149, 0xa14a, 0xa14b, 0xa14c, + 0xa14d, 0xa14e, 0xa14f, 0xa150, 0xa151, 0xa153, 0xa154, 0xa155, + 0xa156, 0xa157, 0xa158, 0xa159, 0xa15a, 0xa15b, 0xa15c, 0xa15d, + 0xa161, 0xa162, 0xa163, 0xa164, 0xa165, 0xa166, 0xa167, 0xa168, + 0xa169, 0xa16a, 0xa16b, 0xa16c, 0xa16d, 0xa16e, 0xa16f, 0xa170, + 0xa171, 0xa173, 0xa174, 0xa175, 0xa176, 0xa177, 0xa178, 0xa179, + 0xa17a, 0xa17b, 0xa17c, 0xa17d, 0xa181, 0xa182, 0xa183, 0xa184, + 0xa185, 0xa186, 0xa187, 0xa188, 0xa189, 0xa18a, 0xa18b, 0xa18c, + 0xa18d, 0xa18e, 0xa18f, 0xa190, 0xa191, 0xa193, 0xa194, 0xa195, + 0xa196, 0xa197, 0xa198, 0xa199, 0xa19a, 0xa19b, 0xa19c, 0xa19d, + 0xa1a1, 0xa1a2, 0xa1a3, 0xa1a4, 0xa1a5, 0xa1a6, 0xa1a7, 0xa1a8, + 0xa1a9, 0xa1aa, 0xa1ab, 0xa1ac, 0xa1ad, 0xa1ae, 0xa1af, 0xa1b0, + 0xa1b1, 0xa1b3, 0xa1b4, 0xa1b5, 0xa1b6, 0xa1b7, 0xa1b8, 0xa1b9, + 0xa1ba, 0xa1bb, 0xa1bc, 0xa1bd, 0xa1c1, 0xa1c2, 0xa1c3, 0xa1c4, + 0xa1c5, 0xa1c6, 0xa1c7, 0xa1c8, 0xa1c9, 0xa1ca, 0xa1cb, 0xa1cc, + 0xa1cd, 0xa1ce, 0xa1cf, 0xa1d0, 0xa1d1, 0xa1d3, 0xa1d4, 0xa1d5, + 0xa1d6, 0xa1d7, 0xa1d8, 0xa1d9, 0xa1da, 0xa1db, 0xa1dc, 0xa1dd, + 0xa1e1, 0xa1e2, 0xa1e3, 0xa1e4, 0xa1e5, 0xa1e6, 0xa1e7, 0xa1e8, + 0xa1e9, 0xa1ea, 0xa1eb, 0xa1ec, 0xa1ed, 0xa1ee, 0xa1ef, 0xa1f0, + 0xa1f1, 0xa1f3, 0xa1f4, 0xa1f5, 0xa1f6, 0xa1f7, 0xa1f8, 0xa1f9, + 0xa1fa, 0xa1fb, 0xa1fc, 0xa1fd, 0xa241, 0xa242, 0xa243, 0xa244 +}; + +static unsigned short johab_from_unicode_bb[] = { + 0xa245, 0xa246, 0xa247, 0xa248, 0xa249, 0xa24a, 0xa24b, 0xa24c, + 0xa24d, 0xa24e, 0xa24f, 0xa250, 0xa251, 0xa253, 0xa254, 0xa255, + 0xa256, 0xa257, 0xa258, 0xa259, 0xa25a, 0xa25b, 0xa25c, 0xa25d, + 0xa261, 0xa262, 0xa263, 0xa264, 0xa265, 0xa266, 0xa267, 0xa268, + 0xa269, 0xa26a, 0xa26b, 0xa26c, 0xa26d, 0xa26e, 0xa26f, 0xa270, + 0xa271, 0xa273, 0xa274, 0xa275, 0xa276, 0xa277, 0xa278, 0xa279, + 0xa27a, 0xa27b, 0xa27c, 0xa27d, 0xa281, 0xa282, 0xa283, 0xa284, + 0xa285, 0xa286, 0xa287, 0xa288, 0xa289, 0xa28a, 0xa28b, 0xa28c, + 0xa28d, 0xa28e, 0xa28f, 0xa290, 0xa291, 0xa293, 0xa294, 0xa295, + 0xa296, 0xa297, 0xa298, 0xa299, 0xa29a, 0xa29b, 0xa29c, 0xa29d, + 0xa2a1, 0xa2a2, 0xa2a3, 0xa2a4, 0xa2a5, 0xa2a6, 0xa2a7, 0xa2a8, + 0xa2a9, 0xa2aa, 0xa2ab, 0xa2ac, 0xa2ad, 0xa2ae, 0xa2af, 0xa2b0, + 0xa2b1, 0xa2b3, 0xa2b4, 0xa2b5, 0xa2b6, 0xa2b7, 0xa2b8, 0xa2b9, + 0xa2ba, 0xa2bb, 0xa2bc, 0xa2bd, 0xa2c1, 0xa2c2, 0xa2c3, 0xa2c4, + 0xa2c5, 0xa2c6, 0xa2c7, 0xa2c8, 0xa2c9, 0xa2ca, 0xa2cb, 0xa2cc, + 0xa2cd, 0xa2ce, 0xa2cf, 0xa2d0, 0xa2d1, 0xa2d3, 0xa2d4, 0xa2d5, + 0xa2d6, 0xa2d7, 0xa2d8, 0xa2d9, 0xa2da, 0xa2db, 0xa2dc, 0xa2dd, + 0xa2e1, 0xa2e2, 0xa2e3, 0xa2e4, 0xa2e5, 0xa2e6, 0xa2e7, 0xa2e8, + 0xa2e9, 0xa2ea, 0xa2eb, 0xa2ec, 0xa2ed, 0xa2ee, 0xa2ef, 0xa2f0, + 0xa2f1, 0xa2f3, 0xa2f4, 0xa2f5, 0xa2f6, 0xa2f7, 0xa2f8, 0xa2f9, + 0xa2fa, 0xa2fb, 0xa2fc, 0xa2fd, 0xa341, 0xa342, 0xa343, 0xa344, + 0xa345, 0xa346, 0xa347, 0xa348, 0xa349, 0xa34a, 0xa34b, 0xa34c, + 0xa34d, 0xa34e, 0xa34f, 0xa350, 0xa351, 0xa353, 0xa354, 0xa355, + 0xa356, 0xa357, 0xa358, 0xa359, 0xa35a, 0xa35b, 0xa35c, 0xa35d, + 0xa361, 0xa362, 0xa363, 0xa364, 0xa365, 0xa366, 0xa367, 0xa368, + 0xa369, 0xa36a, 0xa36b, 0xa36c, 0xa36d, 0xa36e, 0xa36f, 0xa370, + 0xa371, 0xa373, 0xa374, 0xa375, 0xa376, 0xa377, 0xa378, 0xa379, + 0xa37a, 0xa37b, 0xa37c, 0xa37d, 0xa381, 0xa382, 0xa383, 0xa384, + 0xa385, 0xa386, 0xa387, 0xa388, 0xa389, 0xa38a, 0xa38b, 0xa38c, + 0xa38d, 0xa38e, 0xa38f, 0xa390, 0xa391, 0xa393, 0xa394, 0xa395, + 0xa396, 0xa397, 0xa398, 0xa399, 0xa39a, 0xa39b, 0xa39c, 0xa39d, + 0xa3a1, 0xa3a2, 0xa3a3, 0xa3a4, 0xa3a5, 0xa3a6, 0xa3a7, 0xa3a8 +}; + +static unsigned short johab_from_unicode_bc[] = { + 0xa3a9, 0xa3aa, 0xa3ab, 0xa3ac, 0xa3ad, 0xa3ae, 0xa3af, 0xa3b0, + 0xa3b1, 0xa3b3, 0xa3b4, 0xa3b5, 0xa3b6, 0xa3b7, 0xa3b8, 0xa3b9, + 0xa3ba, 0xa3bb, 0xa3bc, 0xa3bd, 0xa461, 0xa462, 0xa463, 0xa464, + 0xa465, 0xa466, 0xa467, 0xa468, 0xa469, 0xa46a, 0xa46b, 0xa46c, + 0xa46d, 0xa46e, 0xa46f, 0xa470, 0xa471, 0xa473, 0xa474, 0xa475, + 0xa476, 0xa477, 0xa478, 0xa479, 0xa47a, 0xa47b, 0xa47c, 0xa47d, + 0xa481, 0xa482, 0xa483, 0xa484, 0xa485, 0xa486, 0xa487, 0xa488, + 0xa489, 0xa48a, 0xa48b, 0xa48c, 0xa48d, 0xa48e, 0xa48f, 0xa490, + 0xa491, 0xa493, 0xa494, 0xa495, 0xa496, 0xa497, 0xa498, 0xa499, + 0xa49a, 0xa49b, 0xa49c, 0xa49d, 0xa4a1, 0xa4a2, 0xa4a3, 0xa4a4, + 0xa4a5, 0xa4a6, 0xa4a7, 0xa4a8, 0xa4a9, 0xa4aa, 0xa4ab, 0xa4ac, + 0xa4ad, 0xa4ae, 0xa4af, 0xa4b0, 0xa4b1, 0xa4b3, 0xa4b4, 0xa4b5, + 0xa4b6, 0xa4b7, 0xa4b8, 0xa4b9, 0xa4ba, 0xa4bb, 0xa4bc, 0xa4bd, + 0xa4c1, 0xa4c2, 0xa4c3, 0xa4c4, 0xa4c5, 0xa4c6, 0xa4c7, 0xa4c8, + 0xa4c9, 0xa4ca, 0xa4cb, 0xa4cc, 0xa4cd, 0xa4ce, 0xa4cf, 0xa4d0, + 0xa4d1, 0xa4d3, 0xa4d4, 0xa4d5, 0xa4d6, 0xa4d7, 0xa4d8, 0xa4d9, + 0xa4da, 0xa4db, 0xa4dc, 0xa4dd, 0xa4e1, 0xa4e2, 0xa4e3, 0xa4e4, + 0xa4e5, 0xa4e6, 0xa4e7, 0xa4e8, 0xa4e9, 0xa4ea, 0xa4eb, 0xa4ec, + 0xa4ed, 0xa4ee, 0xa4ef, 0xa4f0, 0xa4f1, 0xa4f3, 0xa4f4, 0xa4f5, + 0xa4f6, 0xa4f7, 0xa4f8, 0xa4f9, 0xa4fa, 0xa4fb, 0xa4fc, 0xa4fd, + 0xa541, 0xa542, 0xa543, 0xa544, 0xa545, 0xa546, 0xa547, 0xa548, + 0xa549, 0xa54a, 0xa54b, 0xa54c, 0xa54d, 0xa54e, 0xa54f, 0xa550, + 0xa551, 0xa553, 0xa554, 0xa555, 0xa556, 0xa557, 0xa558, 0xa559, + 0xa55a, 0xa55b, 0xa55c, 0xa55d, 0xa561, 0xa562, 0xa563, 0xa564, + 0xa565, 0xa566, 0xa567, 0xa568, 0xa569, 0xa56a, 0xa56b, 0xa56c, + 0xa56d, 0xa56e, 0xa56f, 0xa570, 0xa571, 0xa573, 0xa574, 0xa575, + 0xa576, 0xa577, 0xa578, 0xa579, 0xa57a, 0xa57b, 0xa57c, 0xa57d, + 0xa581, 0xa582, 0xa583, 0xa584, 0xa585, 0xa586, 0xa587, 0xa588, + 0xa589, 0xa58a, 0xa58b, 0xa58c, 0xa58d, 0xa58e, 0xa58f, 0xa590, + 0xa591, 0xa593, 0xa594, 0xa595, 0xa596, 0xa597, 0xa598, 0xa599, + 0xa59a, 0xa59b, 0xa59c, 0xa59d, 0xa5a1, 0xa5a2, 0xa5a3, 0xa5a4, + 0xa5a5, 0xa5a6, 0xa5a7, 0xa5a8, 0xa5a9, 0xa5aa, 0xa5ab, 0xa5ac +}; + +static unsigned short johab_from_unicode_bd[] = { + 0xa5ad, 0xa5ae, 0xa5af, 0xa5b0, 0xa5b1, 0xa5b3, 0xa5b4, 0xa5b5, + 0xa5b6, 0xa5b7, 0xa5b8, 0xa5b9, 0xa5ba, 0xa5bb, 0xa5bc, 0xa5bd, + 0xa5c1, 0xa5c2, 0xa5c3, 0xa5c4, 0xa5c5, 0xa5c6, 0xa5c7, 0xa5c8, + 0xa5c9, 0xa5ca, 0xa5cb, 0xa5cc, 0xa5cd, 0xa5ce, 0xa5cf, 0xa5d0, + 0xa5d1, 0xa5d3, 0xa5d4, 0xa5d5, 0xa5d6, 0xa5d7, 0xa5d8, 0xa5d9, + 0xa5da, 0xa5db, 0xa5dc, 0xa5dd, 0xa5e1, 0xa5e2, 0xa5e3, 0xa5e4, + 0xa5e5, 0xa5e6, 0xa5e7, 0xa5e8, 0xa5e9, 0xa5ea, 0xa5eb, 0xa5ec, + 0xa5ed, 0xa5ee, 0xa5ef, 0xa5f0, 0xa5f1, 0xa5f3, 0xa5f4, 0xa5f5, + 0xa5f6, 0xa5f7, 0xa5f8, 0xa5f9, 0xa5fa, 0xa5fb, 0xa5fc, 0xa5fd, + 0xa641, 0xa642, 0xa643, 0xa644, 0xa645, 0xa646, 0xa647, 0xa648, + 0xa649, 0xa64a, 0xa64b, 0xa64c, 0xa64d, 0xa64e, 0xa64f, 0xa650, + 0xa651, 0xa653, 0xa654, 0xa655, 0xa656, 0xa657, 0xa658, 0xa659, + 0xa65a, 0xa65b, 0xa65c, 0xa65d, 0xa661, 0xa662, 0xa663, 0xa664, + 0xa665, 0xa666, 0xa667, 0xa668, 0xa669, 0xa66a, 0xa66b, 0xa66c, + 0xa66d, 0xa66e, 0xa66f, 0xa670, 0xa671, 0xa673, 0xa674, 0xa675, + 0xa676, 0xa677, 0xa678, 0xa679, 0xa67a, 0xa67b, 0xa67c, 0xa67d, + 0xa681, 0xa682, 0xa683, 0xa684, 0xa685, 0xa686, 0xa687, 0xa688, + 0xa689, 0xa68a, 0xa68b, 0xa68c, 0xa68d, 0xa68e, 0xa68f, 0xa690, + 0xa691, 0xa693, 0xa694, 0xa695, 0xa696, 0xa697, 0xa698, 0xa699, + 0xa69a, 0xa69b, 0xa69c, 0xa69d, 0xa6a1, 0xa6a2, 0xa6a3, 0xa6a4, + 0xa6a5, 0xa6a6, 0xa6a7, 0xa6a8, 0xa6a9, 0xa6aa, 0xa6ab, 0xa6ac, + 0xa6ad, 0xa6ae, 0xa6af, 0xa6b0, 0xa6b1, 0xa6b3, 0xa6b4, 0xa6b5, + 0xa6b6, 0xa6b7, 0xa6b8, 0xa6b9, 0xa6ba, 0xa6bb, 0xa6bc, 0xa6bd, + 0xa6c1, 0xa6c2, 0xa6c3, 0xa6c4, 0xa6c5, 0xa6c6, 0xa6c7, 0xa6c8, + 0xa6c9, 0xa6ca, 0xa6cb, 0xa6cc, 0xa6cd, 0xa6ce, 0xa6cf, 0xa6d0, + 0xa6d1, 0xa6d3, 0xa6d4, 0xa6d5, 0xa6d6, 0xa6d7, 0xa6d8, 0xa6d9, + 0xa6da, 0xa6db, 0xa6dc, 0xa6dd, 0xa6e1, 0xa6e2, 0xa6e3, 0xa6e4, + 0xa6e5, 0xa6e6, 0xa6e7, 0xa6e8, 0xa6e9, 0xa6ea, 0xa6eb, 0xa6ec, + 0xa6ed, 0xa6ee, 0xa6ef, 0xa6f0, 0xa6f1, 0xa6f3, 0xa6f4, 0xa6f5, + 0xa6f6, 0xa6f7, 0xa6f8, 0xa6f9, 0xa6fa, 0xa6fb, 0xa6fc, 0xa6fd, + 0xa741, 0xa742, 0xa743, 0xa744, 0xa745, 0xa746, 0xa747, 0xa748, + 0xa749, 0xa74a, 0xa74b, 0xa74c, 0xa74d, 0xa74e, 0xa74f, 0xa750 +}; + +static unsigned short johab_from_unicode_be[] = { + 0xa751, 0xa753, 0xa754, 0xa755, 0xa756, 0xa757, 0xa758, 0xa759, + 0xa75a, 0xa75b, 0xa75c, 0xa75d, 0xa761, 0xa762, 0xa763, 0xa764, + 0xa765, 0xa766, 0xa767, 0xa768, 0xa769, 0xa76a, 0xa76b, 0xa76c, + 0xa76d, 0xa76e, 0xa76f, 0xa770, 0xa771, 0xa773, 0xa774, 0xa775, + 0xa776, 0xa777, 0xa778, 0xa779, 0xa77a, 0xa77b, 0xa77c, 0xa77d, + 0xa781, 0xa782, 0xa783, 0xa784, 0xa785, 0xa786, 0xa787, 0xa788, + 0xa789, 0xa78a, 0xa78b, 0xa78c, 0xa78d, 0xa78e, 0xa78f, 0xa790, + 0xa791, 0xa793, 0xa794, 0xa795, 0xa796, 0xa797, 0xa798, 0xa799, + 0xa79a, 0xa79b, 0xa79c, 0xa79d, 0xa7a1, 0xa7a2, 0xa7a3, 0xa7a4, + 0xa7a5, 0xa7a6, 0xa7a7, 0xa7a8, 0xa7a9, 0xa7aa, 0xa7ab, 0xa7ac, + 0xa7ad, 0xa7ae, 0xa7af, 0xa7b0, 0xa7b1, 0xa7b3, 0xa7b4, 0xa7b5, + 0xa7b6, 0xa7b7, 0xa7b8, 0xa7b9, 0xa7ba, 0xa7bb, 0xa7bc, 0xa7bd, + 0xa861, 0xa862, 0xa863, 0xa864, 0xa865, 0xa866, 0xa867, 0xa868, + 0xa869, 0xa86a, 0xa86b, 0xa86c, 0xa86d, 0xa86e, 0xa86f, 0xa870, + 0xa871, 0xa873, 0xa874, 0xa875, 0xa876, 0xa877, 0xa878, 0xa879, + 0xa87a, 0xa87b, 0xa87c, 0xa87d, 0xa881, 0xa882, 0xa883, 0xa884, + 0xa885, 0xa886, 0xa887, 0xa888, 0xa889, 0xa88a, 0xa88b, 0xa88c, + 0xa88d, 0xa88e, 0xa88f, 0xa890, 0xa891, 0xa893, 0xa894, 0xa895, + 0xa896, 0xa897, 0xa898, 0xa899, 0xa89a, 0xa89b, 0xa89c, 0xa89d, + 0xa8a1, 0xa8a2, 0xa8a3, 0xa8a4, 0xa8a5, 0xa8a6, 0xa8a7, 0xa8a8, + 0xa8a9, 0xa8aa, 0xa8ab, 0xa8ac, 0xa8ad, 0xa8ae, 0xa8af, 0xa8b0, + 0xa8b1, 0xa8b3, 0xa8b4, 0xa8b5, 0xa8b6, 0xa8b7, 0xa8b8, 0xa8b9, + 0xa8ba, 0xa8bb, 0xa8bc, 0xa8bd, 0xa8c1, 0xa8c2, 0xa8c3, 0xa8c4, + 0xa8c5, 0xa8c6, 0xa8c7, 0xa8c8, 0xa8c9, 0xa8ca, 0xa8cb, 0xa8cc, + 0xa8cd, 0xa8ce, 0xa8cf, 0xa8d0, 0xa8d1, 0xa8d3, 0xa8d4, 0xa8d5, + 0xa8d6, 0xa8d7, 0xa8d8, 0xa8d9, 0xa8da, 0xa8db, 0xa8dc, 0xa8dd, + 0xa8e1, 0xa8e2, 0xa8e3, 0xa8e4, 0xa8e5, 0xa8e6, 0xa8e7, 0xa8e8, + 0xa8e9, 0xa8ea, 0xa8eb, 0xa8ec, 0xa8ed, 0xa8ee, 0xa8ef, 0xa8f0, + 0xa8f1, 0xa8f3, 0xa8f4, 0xa8f5, 0xa8f6, 0xa8f7, 0xa8f8, 0xa8f9, + 0xa8fa, 0xa8fb, 0xa8fc, 0xa8fd, 0xa941, 0xa942, 0xa943, 0xa944, + 0xa945, 0xa946, 0xa947, 0xa948, 0xa949, 0xa94a, 0xa94b, 0xa94c, + 0xa94d, 0xa94e, 0xa94f, 0xa950, 0xa951, 0xa953, 0xa954, 0xa955 +}; + +static unsigned short johab_from_unicode_bf[] = { + 0xa956, 0xa957, 0xa958, 0xa959, 0xa95a, 0xa95b, 0xa95c, 0xa95d, + 0xa961, 0xa962, 0xa963, 0xa964, 0xa965, 0xa966, 0xa967, 0xa968, + 0xa969, 0xa96a, 0xa96b, 0xa96c, 0xa96d, 0xa96e, 0xa96f, 0xa970, + 0xa971, 0xa973, 0xa974, 0xa975, 0xa976, 0xa977, 0xa978, 0xa979, + 0xa97a, 0xa97b, 0xa97c, 0xa97d, 0xa981, 0xa982, 0xa983, 0xa984, + 0xa985, 0xa986, 0xa987, 0xa988, 0xa989, 0xa98a, 0xa98b, 0xa98c, + 0xa98d, 0xa98e, 0xa98f, 0xa990, 0xa991, 0xa993, 0xa994, 0xa995, + 0xa996, 0xa997, 0xa998, 0xa999, 0xa99a, 0xa99b, 0xa99c, 0xa99d, + 0xa9a1, 0xa9a2, 0xa9a3, 0xa9a4, 0xa9a5, 0xa9a6, 0xa9a7, 0xa9a8, + 0xa9a9, 0xa9aa, 0xa9ab, 0xa9ac, 0xa9ad, 0xa9ae, 0xa9af, 0xa9b0, + 0xa9b1, 0xa9b3, 0xa9b4, 0xa9b5, 0xa9b6, 0xa9b7, 0xa9b8, 0xa9b9, + 0xa9ba, 0xa9bb, 0xa9bc, 0xa9bd, 0xa9c1, 0xa9c2, 0xa9c3, 0xa9c4, + 0xa9c5, 0xa9c6, 0xa9c7, 0xa9c8, 0xa9c9, 0xa9ca, 0xa9cb, 0xa9cc, + 0xa9cd, 0xa9ce, 0xa9cf, 0xa9d0, 0xa9d1, 0xa9d3, 0xa9d4, 0xa9d5, + 0xa9d6, 0xa9d7, 0xa9d8, 0xa9d9, 0xa9da, 0xa9db, 0xa9dc, 0xa9dd, + 0xa9e1, 0xa9e2, 0xa9e3, 0xa9e4, 0xa9e5, 0xa9e6, 0xa9e7, 0xa9e8, + 0xa9e9, 0xa9ea, 0xa9eb, 0xa9ec, 0xa9ed, 0xa9ee, 0xa9ef, 0xa9f0, + 0xa9f1, 0xa9f3, 0xa9f4, 0xa9f5, 0xa9f6, 0xa9f7, 0xa9f8, 0xa9f9, + 0xa9fa, 0xa9fb, 0xa9fc, 0xa9fd, 0xaa41, 0xaa42, 0xaa43, 0xaa44, + 0xaa45, 0xaa46, 0xaa47, 0xaa48, 0xaa49, 0xaa4a, 0xaa4b, 0xaa4c, + 0xaa4d, 0xaa4e, 0xaa4f, 0xaa50, 0xaa51, 0xaa53, 0xaa54, 0xaa55, + 0xaa56, 0xaa57, 0xaa58, 0xaa59, 0xaa5a, 0xaa5b, 0xaa5c, 0xaa5d, + 0xaa61, 0xaa62, 0xaa63, 0xaa64, 0xaa65, 0xaa66, 0xaa67, 0xaa68, + 0xaa69, 0xaa6a, 0xaa6b, 0xaa6c, 0xaa6d, 0xaa6e, 0xaa6f, 0xaa70, + 0xaa71, 0xaa73, 0xaa74, 0xaa75, 0xaa76, 0xaa77, 0xaa78, 0xaa79, + 0xaa7a, 0xaa7b, 0xaa7c, 0xaa7d, 0xaa81, 0xaa82, 0xaa83, 0xaa84, + 0xaa85, 0xaa86, 0xaa87, 0xaa88, 0xaa89, 0xaa8a, 0xaa8b, 0xaa8c, + 0xaa8d, 0xaa8e, 0xaa8f, 0xaa90, 0xaa91, 0xaa93, 0xaa94, 0xaa95, + 0xaa96, 0xaa97, 0xaa98, 0xaa99, 0xaa9a, 0xaa9b, 0xaa9c, 0xaa9d, + 0xaaa1, 0xaaa2, 0xaaa3, 0xaaa4, 0xaaa5, 0xaaa6, 0xaaa7, 0xaaa8, + 0xaaa9, 0xaaaa, 0xaaab, 0xaaac, 0xaaad, 0xaaae, 0xaaaf, 0xaab0, + 0xaab1, 0xaab3, 0xaab4, 0xaab5, 0xaab6, 0xaab7, 0xaab8, 0xaab9 +}; + +static unsigned short johab_from_unicode_c0[] = { + 0xaaba, 0xaabb, 0xaabc, 0xaabd, 0xaac1, 0xaac2, 0xaac3, 0xaac4, + 0xaac5, 0xaac6, 0xaac7, 0xaac8, 0xaac9, 0xaaca, 0xaacb, 0xaacc, + 0xaacd, 0xaace, 0xaacf, 0xaad0, 0xaad1, 0xaad3, 0xaad4, 0xaad5, + 0xaad6, 0xaad7, 0xaad8, 0xaad9, 0xaada, 0xaadb, 0xaadc, 0xaadd, + 0xaae1, 0xaae2, 0xaae3, 0xaae4, 0xaae5, 0xaae6, 0xaae7, 0xaae8, + 0xaae9, 0xaaea, 0xaaeb, 0xaaec, 0xaaed, 0xaaee, 0xaaef, 0xaaf0, + 0xaaf1, 0xaaf3, 0xaaf4, 0xaaf5, 0xaaf6, 0xaaf7, 0xaaf8, 0xaaf9, + 0xaafa, 0xaafb, 0xaafc, 0xaafd, 0xab41, 0xab42, 0xab43, 0xab44, + 0xab45, 0xab46, 0xab47, 0xab48, 0xab49, 0xab4a, 0xab4b, 0xab4c, + 0xab4d, 0xab4e, 0xab4f, 0xab50, 0xab51, 0xab53, 0xab54, 0xab55, + 0xab56, 0xab57, 0xab58, 0xab59, 0xab5a, 0xab5b, 0xab5c, 0xab5d, + 0xab61, 0xab62, 0xab63, 0xab64, 0xab65, 0xab66, 0xab67, 0xab68, + 0xab69, 0xab6a, 0xab6b, 0xab6c, 0xab6d, 0xab6e, 0xab6f, 0xab70, + 0xab71, 0xab73, 0xab74, 0xab75, 0xab76, 0xab77, 0xab78, 0xab79, + 0xab7a, 0xab7b, 0xab7c, 0xab7d, 0xab81, 0xab82, 0xab83, 0xab84, + 0xab85, 0xab86, 0xab87, 0xab88, 0xab89, 0xab8a, 0xab8b, 0xab8c, + 0xab8d, 0xab8e, 0xab8f, 0xab90, 0xab91, 0xab93, 0xab94, 0xab95, + 0xab96, 0xab97, 0xab98, 0xab99, 0xab9a, 0xab9b, 0xab9c, 0xab9d, + 0xaba1, 0xaba2, 0xaba3, 0xaba4, 0xaba5, 0xaba6, 0xaba7, 0xaba8, + 0xaba9, 0xabaa, 0xabab, 0xabac, 0xabad, 0xabae, 0xabaf, 0xabb0, + 0xabb1, 0xabb3, 0xabb4, 0xabb5, 0xabb6, 0xabb7, 0xabb8, 0xabb9, + 0xabba, 0xabbb, 0xabbc, 0xabbd, 0xac61, 0xac62, 0xac63, 0xac64, + 0xac65, 0xac66, 0xac67, 0xac68, 0xac69, 0xac6a, 0xac6b, 0xac6c, + 0xac6d, 0xac6e, 0xac6f, 0xac70, 0xac71, 0xac73, 0xac74, 0xac75, + 0xac76, 0xac77, 0xac78, 0xac79, 0xac7a, 0xac7b, 0xac7c, 0xac7d, + 0xac81, 0xac82, 0xac83, 0xac84, 0xac85, 0xac86, 0xac87, 0xac88, + 0xac89, 0xac8a, 0xac8b, 0xac8c, 0xac8d, 0xac8e, 0xac8f, 0xac90, + 0xac91, 0xac93, 0xac94, 0xac95, 0xac96, 0xac97, 0xac98, 0xac99, + 0xac9a, 0xac9b, 0xac9c, 0xac9d, 0xaca1, 0xaca2, 0xaca3, 0xaca4, + 0xaca5, 0xaca6, 0xaca7, 0xaca8, 0xaca9, 0xacaa, 0xacab, 0xacac, + 0xacad, 0xacae, 0xacaf, 0xacb0, 0xacb1, 0xacb3, 0xacb4, 0xacb5, + 0xacb6, 0xacb7, 0xacb8, 0xacb9, 0xacba, 0xacbb, 0xacbc, 0xacbd +}; + +static unsigned short johab_from_unicode_c1[] = { + 0xacc1, 0xacc2, 0xacc3, 0xacc4, 0xacc5, 0xacc6, 0xacc7, 0xacc8, + 0xacc9, 0xacca, 0xaccb, 0xaccc, 0xaccd, 0xacce, 0xaccf, 0xacd0, + 0xacd1, 0xacd3, 0xacd4, 0xacd5, 0xacd6, 0xacd7, 0xacd8, 0xacd9, + 0xacda, 0xacdb, 0xacdc, 0xacdd, 0xace1, 0xace2, 0xace3, 0xace4, + 0xace5, 0xace6, 0xace7, 0xace8, 0xace9, 0xacea, 0xaceb, 0xacec, + 0xaced, 0xacee, 0xacef, 0xacf0, 0xacf1, 0xacf3, 0xacf4, 0xacf5, + 0xacf6, 0xacf7, 0xacf8, 0xacf9, 0xacfa, 0xacfb, 0xacfc, 0xacfd, + 0xad41, 0xad42, 0xad43, 0xad44, 0xad45, 0xad46, 0xad47, 0xad48, + 0xad49, 0xad4a, 0xad4b, 0xad4c, 0xad4d, 0xad4e, 0xad4f, 0xad50, + 0xad51, 0xad53, 0xad54, 0xad55, 0xad56, 0xad57, 0xad58, 0xad59, + 0xad5a, 0xad5b, 0xad5c, 0xad5d, 0xad61, 0xad62, 0xad63, 0xad64, + 0xad65, 0xad66, 0xad67, 0xad68, 0xad69, 0xad6a, 0xad6b, 0xad6c, + 0xad6d, 0xad6e, 0xad6f, 0xad70, 0xad71, 0xad73, 0xad74, 0xad75, + 0xad76, 0xad77, 0xad78, 0xad79, 0xad7a, 0xad7b, 0xad7c, 0xad7d, + 0xad81, 0xad82, 0xad83, 0xad84, 0xad85, 0xad86, 0xad87, 0xad88, + 0xad89, 0xad8a, 0xad8b, 0xad8c, 0xad8d, 0xad8e, 0xad8f, 0xad90, + 0xad91, 0xad93, 0xad94, 0xad95, 0xad96, 0xad97, 0xad98, 0xad99, + 0xad9a, 0xad9b, 0xad9c, 0xad9d, 0xada1, 0xada2, 0xada3, 0xada4, + 0xada5, 0xada6, 0xada7, 0xada8, 0xada9, 0xadaa, 0xadab, 0xadac, + 0xadad, 0xadae, 0xadaf, 0xadb0, 0xadb1, 0xadb3, 0xadb4, 0xadb5, + 0xadb6, 0xadb7, 0xadb8, 0xadb9, 0xadba, 0xadbb, 0xadbc, 0xadbd, + 0xadc1, 0xadc2, 0xadc3, 0xadc4, 0xadc5, 0xadc6, 0xadc7, 0xadc8, + 0xadc9, 0xadca, 0xadcb, 0xadcc, 0xadcd, 0xadce, 0xadcf, 0xadd0, + 0xadd1, 0xadd3, 0xadd4, 0xadd5, 0xadd6, 0xadd7, 0xadd8, 0xadd9, + 0xadda, 0xaddb, 0xaddc, 0xaddd, 0xade1, 0xade2, 0xade3, 0xade4, + 0xade5, 0xade6, 0xade7, 0xade8, 0xade9, 0xadea, 0xadeb, 0xadec, + 0xaded, 0xadee, 0xadef, 0xadf0, 0xadf1, 0xadf3, 0xadf4, 0xadf5, + 0xadf6, 0xadf7, 0xadf8, 0xadf9, 0xadfa, 0xadfb, 0xadfc, 0xadfd, + 0xae41, 0xae42, 0xae43, 0xae44, 0xae45, 0xae46, 0xae47, 0xae48, + 0xae49, 0xae4a, 0xae4b, 0xae4c, 0xae4d, 0xae4e, 0xae4f, 0xae50, + 0xae51, 0xae53, 0xae54, 0xae55, 0xae56, 0xae57, 0xae58, 0xae59, + 0xae5a, 0xae5b, 0xae5c, 0xae5d, 0xae61, 0xae62, 0xae63, 0xae64 +}; + +static unsigned short johab_from_unicode_c2[] = { + 0xae65, 0xae66, 0xae67, 0xae68, 0xae69, 0xae6a, 0xae6b, 0xae6c, + 0xae6d, 0xae6e, 0xae6f, 0xae70, 0xae71, 0xae73, 0xae74, 0xae75, + 0xae76, 0xae77, 0xae78, 0xae79, 0xae7a, 0xae7b, 0xae7c, 0xae7d, + 0xae81, 0xae82, 0xae83, 0xae84, 0xae85, 0xae86, 0xae87, 0xae88, + 0xae89, 0xae8a, 0xae8b, 0xae8c, 0xae8d, 0xae8e, 0xae8f, 0xae90, + 0xae91, 0xae93, 0xae94, 0xae95, 0xae96, 0xae97, 0xae98, 0xae99, + 0xae9a, 0xae9b, 0xae9c, 0xae9d, 0xaea1, 0xaea2, 0xaea3, 0xaea4, + 0xaea5, 0xaea6, 0xaea7, 0xaea8, 0xaea9, 0xaeaa, 0xaeab, 0xaeac, + 0xaead, 0xaeae, 0xaeaf, 0xaeb0, 0xaeb1, 0xaeb3, 0xaeb4, 0xaeb5, + 0xaeb6, 0xaeb7, 0xaeb8, 0xaeb9, 0xaeba, 0xaebb, 0xaebc, 0xaebd, + 0xaec1, 0xaec2, 0xaec3, 0xaec4, 0xaec5, 0xaec6, 0xaec7, 0xaec8, + 0xaec9, 0xaeca, 0xaecb, 0xaecc, 0xaecd, 0xaece, 0xaecf, 0xaed0, + 0xaed1, 0xaed3, 0xaed4, 0xaed5, 0xaed6, 0xaed7, 0xaed8, 0xaed9, + 0xaeda, 0xaedb, 0xaedc, 0xaedd, 0xaee1, 0xaee2, 0xaee3, 0xaee4, + 0xaee5, 0xaee6, 0xaee7, 0xaee8, 0xaee9, 0xaeea, 0xaeeb, 0xaeec, + 0xaeed, 0xaeee, 0xaeef, 0xaef0, 0xaef1, 0xaef3, 0xaef4, 0xaef5, + 0xaef6, 0xaef7, 0xaef8, 0xaef9, 0xaefa, 0xaefb, 0xaefc, 0xaefd, + 0xaf41, 0xaf42, 0xaf43, 0xaf44, 0xaf45, 0xaf46, 0xaf47, 0xaf48, + 0xaf49, 0xaf4a, 0xaf4b, 0xaf4c, 0xaf4d, 0xaf4e, 0xaf4f, 0xaf50, + 0xaf51, 0xaf53, 0xaf54, 0xaf55, 0xaf56, 0xaf57, 0xaf58, 0xaf59, + 0xaf5a, 0xaf5b, 0xaf5c, 0xaf5d, 0xaf61, 0xaf62, 0xaf63, 0xaf64, + 0xaf65, 0xaf66, 0xaf67, 0xaf68, 0xaf69, 0xaf6a, 0xaf6b, 0xaf6c, + 0xaf6d, 0xaf6e, 0xaf6f, 0xaf70, 0xaf71, 0xaf73, 0xaf74, 0xaf75, + 0xaf76, 0xaf77, 0xaf78, 0xaf79, 0xaf7a, 0xaf7b, 0xaf7c, 0xaf7d, + 0xaf81, 0xaf82, 0xaf83, 0xaf84, 0xaf85, 0xaf86, 0xaf87, 0xaf88, + 0xaf89, 0xaf8a, 0xaf8b, 0xaf8c, 0xaf8d, 0xaf8e, 0xaf8f, 0xaf90, + 0xaf91, 0xaf93, 0xaf94, 0xaf95, 0xaf96, 0xaf97, 0xaf98, 0xaf99, + 0xaf9a, 0xaf9b, 0xaf9c, 0xaf9d, 0xafa1, 0xafa2, 0xafa3, 0xafa4, + 0xafa5, 0xafa6, 0xafa7, 0xafa8, 0xafa9, 0xafaa, 0xafab, 0xafac, + 0xafad, 0xafae, 0xafaf, 0xafb0, 0xafb1, 0xafb3, 0xafb4, 0xafb5, + 0xafb6, 0xafb7, 0xafb8, 0xafb9, 0xafba, 0xafbb, 0xafbc, 0xafbd, + 0xb061, 0xb062, 0xb063, 0xb064, 0xb065, 0xb066, 0xb067, 0xb068 +}; + +static unsigned short johab_from_unicode_c3[] = { + 0xb069, 0xb06a, 0xb06b, 0xb06c, 0xb06d, 0xb06e, 0xb06f, 0xb070, + 0xb071, 0xb073, 0xb074, 0xb075, 0xb076, 0xb077, 0xb078, 0xb079, + 0xb07a, 0xb07b, 0xb07c, 0xb07d, 0xb081, 0xb082, 0xb083, 0xb084, + 0xb085, 0xb086, 0xb087, 0xb088, 0xb089, 0xb08a, 0xb08b, 0xb08c, + 0xb08d, 0xb08e, 0xb08f, 0xb090, 0xb091, 0xb093, 0xb094, 0xb095, + 0xb096, 0xb097, 0xb098, 0xb099, 0xb09a, 0xb09b, 0xb09c, 0xb09d, + 0xb0a1, 0xb0a2, 0xb0a3, 0xb0a4, 0xb0a5, 0xb0a6, 0xb0a7, 0xb0a8, + 0xb0a9, 0xb0aa, 0xb0ab, 0xb0ac, 0xb0ad, 0xb0ae, 0xb0af, 0xb0b0, + 0xb0b1, 0xb0b3, 0xb0b4, 0xb0b5, 0xb0b6, 0xb0b7, 0xb0b8, 0xb0b9, + 0xb0ba, 0xb0bb, 0xb0bc, 0xb0bd, 0xb0c1, 0xb0c2, 0xb0c3, 0xb0c4, + 0xb0c5, 0xb0c6, 0xb0c7, 0xb0c8, 0xb0c9, 0xb0ca, 0xb0cb, 0xb0cc, + 0xb0cd, 0xb0ce, 0xb0cf, 0xb0d0, 0xb0d1, 0xb0d3, 0xb0d4, 0xb0d5, + 0xb0d6, 0xb0d7, 0xb0d8, 0xb0d9, 0xb0da, 0xb0db, 0xb0dc, 0xb0dd, + 0xb0e1, 0xb0e2, 0xb0e3, 0xb0e4, 0xb0e5, 0xb0e6, 0xb0e7, 0xb0e8, + 0xb0e9, 0xb0ea, 0xb0eb, 0xb0ec, 0xb0ed, 0xb0ee, 0xb0ef, 0xb0f0, + 0xb0f1, 0xb0f3, 0xb0f4, 0xb0f5, 0xb0f6, 0xb0f7, 0xb0f8, 0xb0f9, + 0xb0fa, 0xb0fb, 0xb0fc, 0xb0fd, 0xb141, 0xb142, 0xb143, 0xb144, + 0xb145, 0xb146, 0xb147, 0xb148, 0xb149, 0xb14a, 0xb14b, 0xb14c, + 0xb14d, 0xb14e, 0xb14f, 0xb150, 0xb151, 0xb153, 0xb154, 0xb155, + 0xb156, 0xb157, 0xb158, 0xb159, 0xb15a, 0xb15b, 0xb15c, 0xb15d, + 0xb161, 0xb162, 0xb163, 0xb164, 0xb165, 0xb166, 0xb167, 0xb168, + 0xb169, 0xb16a, 0xb16b, 0xb16c, 0xb16d, 0xb16e, 0xb16f, 0xb170, + 0xb171, 0xb173, 0xb174, 0xb175, 0xb176, 0xb177, 0xb178, 0xb179, + 0xb17a, 0xb17b, 0xb17c, 0xb17d, 0xb181, 0xb182, 0xb183, 0xb184, + 0xb185, 0xb186, 0xb187, 0xb188, 0xb189, 0xb18a, 0xb18b, 0xb18c, + 0xb18d, 0xb18e, 0xb18f, 0xb190, 0xb191, 0xb193, 0xb194, 0xb195, + 0xb196, 0xb197, 0xb198, 0xb199, 0xb19a, 0xb19b, 0xb19c, 0xb19d, + 0xb1a1, 0xb1a2, 0xb1a3, 0xb1a4, 0xb1a5, 0xb1a6, 0xb1a7, 0xb1a8, + 0xb1a9, 0xb1aa, 0xb1ab, 0xb1ac, 0xb1ad, 0xb1ae, 0xb1af, 0xb1b0, + 0xb1b1, 0xb1b3, 0xb1b4, 0xb1b5, 0xb1b6, 0xb1b7, 0xb1b8, 0xb1b9, + 0xb1ba, 0xb1bb, 0xb1bc, 0xb1bd, 0xb1c1, 0xb1c2, 0xb1c3, 0xb1c4, + 0xb1c5, 0xb1c6, 0xb1c7, 0xb1c8, 0xb1c9, 0xb1ca, 0xb1cb, 0xb1cc +}; + +static unsigned short johab_from_unicode_c4[] = { + 0xb1cd, 0xb1ce, 0xb1cf, 0xb1d0, 0xb1d1, 0xb1d3, 0xb1d4, 0xb1d5, + 0xb1d6, 0xb1d7, 0xb1d8, 0xb1d9, 0xb1da, 0xb1db, 0xb1dc, 0xb1dd, + 0xb1e1, 0xb1e2, 0xb1e3, 0xb1e4, 0xb1e5, 0xb1e6, 0xb1e7, 0xb1e8, + 0xb1e9, 0xb1ea, 0xb1eb, 0xb1ec, 0xb1ed, 0xb1ee, 0xb1ef, 0xb1f0, + 0xb1f1, 0xb1f3, 0xb1f4, 0xb1f5, 0xb1f6, 0xb1f7, 0xb1f8, 0xb1f9, + 0xb1fa, 0xb1fb, 0xb1fc, 0xb1fd, 0xb241, 0xb242, 0xb243, 0xb244, + 0xb245, 0xb246, 0xb247, 0xb248, 0xb249, 0xb24a, 0xb24b, 0xb24c, + 0xb24d, 0xb24e, 0xb24f, 0xb250, 0xb251, 0xb253, 0xb254, 0xb255, + 0xb256, 0xb257, 0xb258, 0xb259, 0xb25a, 0xb25b, 0xb25c, 0xb25d, + 0xb261, 0xb262, 0xb263, 0xb264, 0xb265, 0xb266, 0xb267, 0xb268, + 0xb269, 0xb26a, 0xb26b, 0xb26c, 0xb26d, 0xb26e, 0xb26f, 0xb270, + 0xb271, 0xb273, 0xb274, 0xb275, 0xb276, 0xb277, 0xb278, 0xb279, + 0xb27a, 0xb27b, 0xb27c, 0xb27d, 0xb281, 0xb282, 0xb283, 0xb284, + 0xb285, 0xb286, 0xb287, 0xb288, 0xb289, 0xb28a, 0xb28b, 0xb28c, + 0xb28d, 0xb28e, 0xb28f, 0xb290, 0xb291, 0xb293, 0xb294, 0xb295, + 0xb296, 0xb297, 0xb298, 0xb299, 0xb29a, 0xb29b, 0xb29c, 0xb29d, + 0xb2a1, 0xb2a2, 0xb2a3, 0xb2a4, 0xb2a5, 0xb2a6, 0xb2a7, 0xb2a8, + 0xb2a9, 0xb2aa, 0xb2ab, 0xb2ac, 0xb2ad, 0xb2ae, 0xb2af, 0xb2b0, + 0xb2b1, 0xb2b3, 0xb2b4, 0xb2b5, 0xb2b6, 0xb2b7, 0xb2b8, 0xb2b9, + 0xb2ba, 0xb2bb, 0xb2bc, 0xb2bd, 0xb2c1, 0xb2c2, 0xb2c3, 0xb2c4, + 0xb2c5, 0xb2c6, 0xb2c7, 0xb2c8, 0xb2c9, 0xb2ca, 0xb2cb, 0xb2cc, + 0xb2cd, 0xb2ce, 0xb2cf, 0xb2d0, 0xb2d1, 0xb2d3, 0xb2d4, 0xb2d5, + 0xb2d6, 0xb2d7, 0xb2d8, 0xb2d9, 0xb2da, 0xb2db, 0xb2dc, 0xb2dd, + 0xb2e1, 0xb2e2, 0xb2e3, 0xb2e4, 0xb2e5, 0xb2e6, 0xb2e7, 0xb2e8, + 0xb2e9, 0xb2ea, 0xb2eb, 0xb2ec, 0xb2ed, 0xb2ee, 0xb2ef, 0xb2f0, + 0xb2f1, 0xb2f3, 0xb2f4, 0xb2f5, 0xb2f6, 0xb2f7, 0xb2f8, 0xb2f9, + 0xb2fa, 0xb2fb, 0xb2fc, 0xb2fd, 0xb341, 0xb342, 0xb343, 0xb344, + 0xb345, 0xb346, 0xb347, 0xb348, 0xb349, 0xb34a, 0xb34b, 0xb34c, + 0xb34d, 0xb34e, 0xb34f, 0xb350, 0xb351, 0xb353, 0xb354, 0xb355, + 0xb356, 0xb357, 0xb358, 0xb359, 0xb35a, 0xb35b, 0xb35c, 0xb35d, + 0xb361, 0xb362, 0xb363, 0xb364, 0xb365, 0xb366, 0xb367, 0xb368, + 0xb369, 0xb36a, 0xb36b, 0xb36c, 0xb36d, 0xb36e, 0xb36f, 0xb370 +}; + +static unsigned short johab_from_unicode_c5[] = { + 0xb371, 0xb373, 0xb374, 0xb375, 0xb376, 0xb377, 0xb378, 0xb379, + 0xb37a, 0xb37b, 0xb37c, 0xb37d, 0xb381, 0xb382, 0xb383, 0xb384, + 0xb385, 0xb386, 0xb387, 0xb388, 0xb389, 0xb38a, 0xb38b, 0xb38c, + 0xb38d, 0xb38e, 0xb38f, 0xb390, 0xb391, 0xb393, 0xb394, 0xb395, + 0xb396, 0xb397, 0xb398, 0xb399, 0xb39a, 0xb39b, 0xb39c, 0xb39d, + 0xb3a1, 0xb3a2, 0xb3a3, 0xb3a4, 0xb3a5, 0xb3a6, 0xb3a7, 0xb3a8, + 0xb3a9, 0xb3aa, 0xb3ab, 0xb3ac, 0xb3ad, 0xb3ae, 0xb3af, 0xb3b0, + 0xb3b1, 0xb3b3, 0xb3b4, 0xb3b5, 0xb3b6, 0xb3b7, 0xb3b8, 0xb3b9, + 0xb3ba, 0xb3bb, 0xb3bc, 0xb3bd, 0xb461, 0xb462, 0xb463, 0xb464, + 0xb465, 0xb466, 0xb467, 0xb468, 0xb469, 0xb46a, 0xb46b, 0xb46c, + 0xb46d, 0xb46e, 0xb46f, 0xb470, 0xb471, 0xb473, 0xb474, 0xb475, + 0xb476, 0xb477, 0xb478, 0xb479, 0xb47a, 0xb47b, 0xb47c, 0xb47d, + 0xb481, 0xb482, 0xb483, 0xb484, 0xb485, 0xb486, 0xb487, 0xb488, + 0xb489, 0xb48a, 0xb48b, 0xb48c, 0xb48d, 0xb48e, 0xb48f, 0xb490, + 0xb491, 0xb493, 0xb494, 0xb495, 0xb496, 0xb497, 0xb498, 0xb499, + 0xb49a, 0xb49b, 0xb49c, 0xb49d, 0xb4a1, 0xb4a2, 0xb4a3, 0xb4a4, + 0xb4a5, 0xb4a6, 0xb4a7, 0xb4a8, 0xb4a9, 0xb4aa, 0xb4ab, 0xb4ac, + 0xb4ad, 0xb4ae, 0xb4af, 0xb4b0, 0xb4b1, 0xb4b3, 0xb4b4, 0xb4b5, + 0xb4b6, 0xb4b7, 0xb4b8, 0xb4b9, 0xb4ba, 0xb4bb, 0xb4bc, 0xb4bd, + 0xb4c1, 0xb4c2, 0xb4c3, 0xb4c4, 0xb4c5, 0xb4c6, 0xb4c7, 0xb4c8, + 0xb4c9, 0xb4ca, 0xb4cb, 0xb4cc, 0xb4cd, 0xb4ce, 0xb4cf, 0xb4d0, + 0xb4d1, 0xb4d3, 0xb4d4, 0xb4d5, 0xb4d6, 0xb4d7, 0xb4d8, 0xb4d9, + 0xb4da, 0xb4db, 0xb4dc, 0xb4dd, 0xb4e1, 0xb4e2, 0xb4e3, 0xb4e4, + 0xb4e5, 0xb4e6, 0xb4e7, 0xb4e8, 0xb4e9, 0xb4ea, 0xb4eb, 0xb4ec, + 0xb4ed, 0xb4ee, 0xb4ef, 0xb4f0, 0xb4f1, 0xb4f3, 0xb4f4, 0xb4f5, + 0xb4f6, 0xb4f7, 0xb4f8, 0xb4f9, 0xb4fa, 0xb4fb, 0xb4fc, 0xb4fd, + 0xb541, 0xb542, 0xb543, 0xb544, 0xb545, 0xb546, 0xb547, 0xb548, + 0xb549, 0xb54a, 0xb54b, 0xb54c, 0xb54d, 0xb54e, 0xb54f, 0xb550, + 0xb551, 0xb553, 0xb554, 0xb555, 0xb556, 0xb557, 0xb558, 0xb559, + 0xb55a, 0xb55b, 0xb55c, 0xb55d, 0xb561, 0xb562, 0xb563, 0xb564, + 0xb565, 0xb566, 0xb567, 0xb568, 0xb569, 0xb56a, 0xb56b, 0xb56c, + 0xb56d, 0xb56e, 0xb56f, 0xb570, 0xb571, 0xb573, 0xb574, 0xb575 +}; + +static unsigned short johab_from_unicode_c6[] = { + 0xb576, 0xb577, 0xb578, 0xb579, 0xb57a, 0xb57b, 0xb57c, 0xb57d, + 0xb581, 0xb582, 0xb583, 0xb584, 0xb585, 0xb586, 0xb587, 0xb588, + 0xb589, 0xb58a, 0xb58b, 0xb58c, 0xb58d, 0xb58e, 0xb58f, 0xb590, + 0xb591, 0xb593, 0xb594, 0xb595, 0xb596, 0xb597, 0xb598, 0xb599, + 0xb59a, 0xb59b, 0xb59c, 0xb59d, 0xb5a1, 0xb5a2, 0xb5a3, 0xb5a4, + 0xb5a5, 0xb5a6, 0xb5a7, 0xb5a8, 0xb5a9, 0xb5aa, 0xb5ab, 0xb5ac, + 0xb5ad, 0xb5ae, 0xb5af, 0xb5b0, 0xb5b1, 0xb5b3, 0xb5b4, 0xb5b5, + 0xb5b6, 0xb5b7, 0xb5b8, 0xb5b9, 0xb5ba, 0xb5bb, 0xb5bc, 0xb5bd, + 0xb5c1, 0xb5c2, 0xb5c3, 0xb5c4, 0xb5c5, 0xb5c6, 0xb5c7, 0xb5c8, + 0xb5c9, 0xb5ca, 0xb5cb, 0xb5cc, 0xb5cd, 0xb5ce, 0xb5cf, 0xb5d0, + 0xb5d1, 0xb5d3, 0xb5d4, 0xb5d5, 0xb5d6, 0xb5d7, 0xb5d8, 0xb5d9, + 0xb5da, 0xb5db, 0xb5dc, 0xb5dd, 0xb5e1, 0xb5e2, 0xb5e3, 0xb5e4, + 0xb5e5, 0xb5e6, 0xb5e7, 0xb5e8, 0xb5e9, 0xb5ea, 0xb5eb, 0xb5ec, + 0xb5ed, 0xb5ee, 0xb5ef, 0xb5f0, 0xb5f1, 0xb5f3, 0xb5f4, 0xb5f5, + 0xb5f6, 0xb5f7, 0xb5f8, 0xb5f9, 0xb5fa, 0xb5fb, 0xb5fc, 0xb5fd, + 0xb641, 0xb642, 0xb643, 0xb644, 0xb645, 0xb646, 0xb647, 0xb648, + 0xb649, 0xb64a, 0xb64b, 0xb64c, 0xb64d, 0xb64e, 0xb64f, 0xb650, + 0xb651, 0xb653, 0xb654, 0xb655, 0xb656, 0xb657, 0xb658, 0xb659, + 0xb65a, 0xb65b, 0xb65c, 0xb65d, 0xb661, 0xb662, 0xb663, 0xb664, + 0xb665, 0xb666, 0xb667, 0xb668, 0xb669, 0xb66a, 0xb66b, 0xb66c, + 0xb66d, 0xb66e, 0xb66f, 0xb670, 0xb671, 0xb673, 0xb674, 0xb675, + 0xb676, 0xb677, 0xb678, 0xb679, 0xb67a, 0xb67b, 0xb67c, 0xb67d, + 0xb681, 0xb682, 0xb683, 0xb684, 0xb685, 0xb686, 0xb687, 0xb688, + 0xb689, 0xb68a, 0xb68b, 0xb68c, 0xb68d, 0xb68e, 0xb68f, 0xb690, + 0xb691, 0xb693, 0xb694, 0xb695, 0xb696, 0xb697, 0xb698, 0xb699, + 0xb69a, 0xb69b, 0xb69c, 0xb69d, 0xb6a1, 0xb6a2, 0xb6a3, 0xb6a4, + 0xb6a5, 0xb6a6, 0xb6a7, 0xb6a8, 0xb6a9, 0xb6aa, 0xb6ab, 0xb6ac, + 0xb6ad, 0xb6ae, 0xb6af, 0xb6b0, 0xb6b1, 0xb6b3, 0xb6b4, 0xb6b5, + 0xb6b6, 0xb6b7, 0xb6b8, 0xb6b9, 0xb6ba, 0xb6bb, 0xb6bc, 0xb6bd, + 0xb6c1, 0xb6c2, 0xb6c3, 0xb6c4, 0xb6c5, 0xb6c6, 0xb6c7, 0xb6c8, + 0xb6c9, 0xb6ca, 0xb6cb, 0xb6cc, 0xb6cd, 0xb6ce, 0xb6cf, 0xb6d0, + 0xb6d1, 0xb6d3, 0xb6d4, 0xb6d5, 0xb6d6, 0xb6d7, 0xb6d8, 0xb6d9 +}; + +static unsigned short johab_from_unicode_c7[] = { + 0xb6da, 0xb6db, 0xb6dc, 0xb6dd, 0xb6e1, 0xb6e2, 0xb6e3, 0xb6e4, + 0xb6e5, 0xb6e6, 0xb6e7, 0xb6e8, 0xb6e9, 0xb6ea, 0xb6eb, 0xb6ec, + 0xb6ed, 0xb6ee, 0xb6ef, 0xb6f0, 0xb6f1, 0xb6f3, 0xb6f4, 0xb6f5, + 0xb6f6, 0xb6f7, 0xb6f8, 0xb6f9, 0xb6fa, 0xb6fb, 0xb6fc, 0xb6fd, + 0xb741, 0xb742, 0xb743, 0xb744, 0xb745, 0xb746, 0xb747, 0xb748, + 0xb749, 0xb74a, 0xb74b, 0xb74c, 0xb74d, 0xb74e, 0xb74f, 0xb750, + 0xb751, 0xb753, 0xb754, 0xb755, 0xb756, 0xb757, 0xb758, 0xb759, + 0xb75a, 0xb75b, 0xb75c, 0xb75d, 0xb761, 0xb762, 0xb763, 0xb764, + 0xb765, 0xb766, 0xb767, 0xb768, 0xb769, 0xb76a, 0xb76b, 0xb76c, + 0xb76d, 0xb76e, 0xb76f, 0xb770, 0xb771, 0xb773, 0xb774, 0xb775, + 0xb776, 0xb777, 0xb778, 0xb779, 0xb77a, 0xb77b, 0xb77c, 0xb77d, + 0xb781, 0xb782, 0xb783, 0xb784, 0xb785, 0xb786, 0xb787, 0xb788, + 0xb789, 0xb78a, 0xb78b, 0xb78c, 0xb78d, 0xb78e, 0xb78f, 0xb790, + 0xb791, 0xb793, 0xb794, 0xb795, 0xb796, 0xb797, 0xb798, 0xb799, + 0xb79a, 0xb79b, 0xb79c, 0xb79d, 0xb7a1, 0xb7a2, 0xb7a3, 0xb7a4, + 0xb7a5, 0xb7a6, 0xb7a7, 0xb7a8, 0xb7a9, 0xb7aa, 0xb7ab, 0xb7ac, + 0xb7ad, 0xb7ae, 0xb7af, 0xb7b0, 0xb7b1, 0xb7b3, 0xb7b4, 0xb7b5, + 0xb7b6, 0xb7b7, 0xb7b8, 0xb7b9, 0xb7ba, 0xb7bb, 0xb7bc, 0xb7bd, + 0xb861, 0xb862, 0xb863, 0xb864, 0xb865, 0xb866, 0xb867, 0xb868, + 0xb869, 0xb86a, 0xb86b, 0xb86c, 0xb86d, 0xb86e, 0xb86f, 0xb870, + 0xb871, 0xb873, 0xb874, 0xb875, 0xb876, 0xb877, 0xb878, 0xb879, + 0xb87a, 0xb87b, 0xb87c, 0xb87d, 0xb881, 0xb882, 0xb883, 0xb884, + 0xb885, 0xb886, 0xb887, 0xb888, 0xb889, 0xb88a, 0xb88b, 0xb88c, + 0xb88d, 0xb88e, 0xb88f, 0xb890, 0xb891, 0xb893, 0xb894, 0xb895, + 0xb896, 0xb897, 0xb898, 0xb899, 0xb89a, 0xb89b, 0xb89c, 0xb89d, + 0xb8a1, 0xb8a2, 0xb8a3, 0xb8a4, 0xb8a5, 0xb8a6, 0xb8a7, 0xb8a8, + 0xb8a9, 0xb8aa, 0xb8ab, 0xb8ac, 0xb8ad, 0xb8ae, 0xb8af, 0xb8b0, + 0xb8b1, 0xb8b3, 0xb8b4, 0xb8b5, 0xb8b6, 0xb8b7, 0xb8b8, 0xb8b9, + 0xb8ba, 0xb8bb, 0xb8bc, 0xb8bd, 0xb8c1, 0xb8c2, 0xb8c3, 0xb8c4, + 0xb8c5, 0xb8c6, 0xb8c7, 0xb8c8, 0xb8c9, 0xb8ca, 0xb8cb, 0xb8cc, + 0xb8cd, 0xb8ce, 0xb8cf, 0xb8d0, 0xb8d1, 0xb8d3, 0xb8d4, 0xb8d5, + 0xb8d6, 0xb8d7, 0xb8d8, 0xb8d9, 0xb8da, 0xb8db, 0xb8dc, 0xb8dd +}; + +static unsigned short johab_from_unicode_c8[] = { + 0xb8e1, 0xb8e2, 0xb8e3, 0xb8e4, 0xb8e5, 0xb8e6, 0xb8e7, 0xb8e8, + 0xb8e9, 0xb8ea, 0xb8eb, 0xb8ec, 0xb8ed, 0xb8ee, 0xb8ef, 0xb8f0, + 0xb8f1, 0xb8f3, 0xb8f4, 0xb8f5, 0xb8f6, 0xb8f7, 0xb8f8, 0xb8f9, + 0xb8fa, 0xb8fb, 0xb8fc, 0xb8fd, 0xb941, 0xb942, 0xb943, 0xb944, + 0xb945, 0xb946, 0xb947, 0xb948, 0xb949, 0xb94a, 0xb94b, 0xb94c, + 0xb94d, 0xb94e, 0xb94f, 0xb950, 0xb951, 0xb953, 0xb954, 0xb955, + 0xb956, 0xb957, 0xb958, 0xb959, 0xb95a, 0xb95b, 0xb95c, 0xb95d, + 0xb961, 0xb962, 0xb963, 0xb964, 0xb965, 0xb966, 0xb967, 0xb968, + 0xb969, 0xb96a, 0xb96b, 0xb96c, 0xb96d, 0xb96e, 0xb96f, 0xb970, + 0xb971, 0xb973, 0xb974, 0xb975, 0xb976, 0xb977, 0xb978, 0xb979, + 0xb97a, 0xb97b, 0xb97c, 0xb97d, 0xb981, 0xb982, 0xb983, 0xb984, + 0xb985, 0xb986, 0xb987, 0xb988, 0xb989, 0xb98a, 0xb98b, 0xb98c, + 0xb98d, 0xb98e, 0xb98f, 0xb990, 0xb991, 0xb993, 0xb994, 0xb995, + 0xb996, 0xb997, 0xb998, 0xb999, 0xb99a, 0xb99b, 0xb99c, 0xb99d, + 0xb9a1, 0xb9a2, 0xb9a3, 0xb9a4, 0xb9a5, 0xb9a6, 0xb9a7, 0xb9a8, + 0xb9a9, 0xb9aa, 0xb9ab, 0xb9ac, 0xb9ad, 0xb9ae, 0xb9af, 0xb9b0, + 0xb9b1, 0xb9b3, 0xb9b4, 0xb9b5, 0xb9b6, 0xb9b7, 0xb9b8, 0xb9b9, + 0xb9ba, 0xb9bb, 0xb9bc, 0xb9bd, 0xb9c1, 0xb9c2, 0xb9c3, 0xb9c4, + 0xb9c5, 0xb9c6, 0xb9c7, 0xb9c8, 0xb9c9, 0xb9ca, 0xb9cb, 0xb9cc, + 0xb9cd, 0xb9ce, 0xb9cf, 0xb9d0, 0xb9d1, 0xb9d3, 0xb9d4, 0xb9d5, + 0xb9d6, 0xb9d7, 0xb9d8, 0xb9d9, 0xb9da, 0xb9db, 0xb9dc, 0xb9dd, + 0xb9e1, 0xb9e2, 0xb9e3, 0xb9e4, 0xb9e5, 0xb9e6, 0xb9e7, 0xb9e8, + 0xb9e9, 0xb9ea, 0xb9eb, 0xb9ec, 0xb9ed, 0xb9ee, 0xb9ef, 0xb9f0, + 0xb9f1, 0xb9f3, 0xb9f4, 0xb9f5, 0xb9f6, 0xb9f7, 0xb9f8, 0xb9f9, + 0xb9fa, 0xb9fb, 0xb9fc, 0xb9fd, 0xba41, 0xba42, 0xba43, 0xba44, + 0xba45, 0xba46, 0xba47, 0xba48, 0xba49, 0xba4a, 0xba4b, 0xba4c, + 0xba4d, 0xba4e, 0xba4f, 0xba50, 0xba51, 0xba53, 0xba54, 0xba55, + 0xba56, 0xba57, 0xba58, 0xba59, 0xba5a, 0xba5b, 0xba5c, 0xba5d, + 0xba61, 0xba62, 0xba63, 0xba64, 0xba65, 0xba66, 0xba67, 0xba68, + 0xba69, 0xba6a, 0xba6b, 0xba6c, 0xba6d, 0xba6e, 0xba6f, 0xba70, + 0xba71, 0xba73, 0xba74, 0xba75, 0xba76, 0xba77, 0xba78, 0xba79, + 0xba7a, 0xba7b, 0xba7c, 0xba7d, 0xba81, 0xba82, 0xba83, 0xba84 +}; + +static unsigned short johab_from_unicode_c9[] = { + 0xba85, 0xba86, 0xba87, 0xba88, 0xba89, 0xba8a, 0xba8b, 0xba8c, + 0xba8d, 0xba8e, 0xba8f, 0xba90, 0xba91, 0xba93, 0xba94, 0xba95, + 0xba96, 0xba97, 0xba98, 0xba99, 0xba9a, 0xba9b, 0xba9c, 0xba9d, + 0xbaa1, 0xbaa2, 0xbaa3, 0xbaa4, 0xbaa5, 0xbaa6, 0xbaa7, 0xbaa8, + 0xbaa9, 0xbaaa, 0xbaab, 0xbaac, 0xbaad, 0xbaae, 0xbaaf, 0xbab0, + 0xbab1, 0xbab3, 0xbab4, 0xbab5, 0xbab6, 0xbab7, 0xbab8, 0xbab9, + 0xbaba, 0xbabb, 0xbabc, 0xbabd, 0xbac1, 0xbac2, 0xbac3, 0xbac4, + 0xbac5, 0xbac6, 0xbac7, 0xbac8, 0xbac9, 0xbaca, 0xbacb, 0xbacc, + 0xbacd, 0xbace, 0xbacf, 0xbad0, 0xbad1, 0xbad3, 0xbad4, 0xbad5, + 0xbad6, 0xbad7, 0xbad8, 0xbad9, 0xbada, 0xbadb, 0xbadc, 0xbadd, + 0xbae1, 0xbae2, 0xbae3, 0xbae4, 0xbae5, 0xbae6, 0xbae7, 0xbae8, + 0xbae9, 0xbaea, 0xbaeb, 0xbaec, 0xbaed, 0xbaee, 0xbaef, 0xbaf0, + 0xbaf1, 0xbaf3, 0xbaf4, 0xbaf5, 0xbaf6, 0xbaf7, 0xbaf8, 0xbaf9, + 0xbafa, 0xbafb, 0xbafc, 0xbafd, 0xbb41, 0xbb42, 0xbb43, 0xbb44, + 0xbb45, 0xbb46, 0xbb47, 0xbb48, 0xbb49, 0xbb4a, 0xbb4b, 0xbb4c, + 0xbb4d, 0xbb4e, 0xbb4f, 0xbb50, 0xbb51, 0xbb53, 0xbb54, 0xbb55, + 0xbb56, 0xbb57, 0xbb58, 0xbb59, 0xbb5a, 0xbb5b, 0xbb5c, 0xbb5d, + 0xbb61, 0xbb62, 0xbb63, 0xbb64, 0xbb65, 0xbb66, 0xbb67, 0xbb68, + 0xbb69, 0xbb6a, 0xbb6b, 0xbb6c, 0xbb6d, 0xbb6e, 0xbb6f, 0xbb70, + 0xbb71, 0xbb73, 0xbb74, 0xbb75, 0xbb76, 0xbb77, 0xbb78, 0xbb79, + 0xbb7a, 0xbb7b, 0xbb7c, 0xbb7d, 0xbb81, 0xbb82, 0xbb83, 0xbb84, + 0xbb85, 0xbb86, 0xbb87, 0xbb88, 0xbb89, 0xbb8a, 0xbb8b, 0xbb8c, + 0xbb8d, 0xbb8e, 0xbb8f, 0xbb90, 0xbb91, 0xbb93, 0xbb94, 0xbb95, + 0xbb96, 0xbb97, 0xbb98, 0xbb99, 0xbb9a, 0xbb9b, 0xbb9c, 0xbb9d, + 0xbba1, 0xbba2, 0xbba3, 0xbba4, 0xbba5, 0xbba6, 0xbba7, 0xbba8, + 0xbba9, 0xbbaa, 0xbbab, 0xbbac, 0xbbad, 0xbbae, 0xbbaf, 0xbbb0, + 0xbbb1, 0xbbb3, 0xbbb4, 0xbbb5, 0xbbb6, 0xbbb7, 0xbbb8, 0xbbb9, + 0xbbba, 0xbbbb, 0xbbbc, 0xbbbd, 0xbc61, 0xbc62, 0xbc63, 0xbc64, + 0xbc65, 0xbc66, 0xbc67, 0xbc68, 0xbc69, 0xbc6a, 0xbc6b, 0xbc6c, + 0xbc6d, 0xbc6e, 0xbc6f, 0xbc70, 0xbc71, 0xbc73, 0xbc74, 0xbc75, + 0xbc76, 0xbc77, 0xbc78, 0xbc79, 0xbc7a, 0xbc7b, 0xbc7c, 0xbc7d, + 0xbc81, 0xbc82, 0xbc83, 0xbc84, 0xbc85, 0xbc86, 0xbc87, 0xbc88 +}; + +static unsigned short johab_from_unicode_ca[] = { + 0xbc89, 0xbc8a, 0xbc8b, 0xbc8c, 0xbc8d, 0xbc8e, 0xbc8f, 0xbc90, + 0xbc91, 0xbc93, 0xbc94, 0xbc95, 0xbc96, 0xbc97, 0xbc98, 0xbc99, + 0xbc9a, 0xbc9b, 0xbc9c, 0xbc9d, 0xbca1, 0xbca2, 0xbca3, 0xbca4, + 0xbca5, 0xbca6, 0xbca7, 0xbca8, 0xbca9, 0xbcaa, 0xbcab, 0xbcac, + 0xbcad, 0xbcae, 0xbcaf, 0xbcb0, 0xbcb1, 0xbcb3, 0xbcb4, 0xbcb5, + 0xbcb6, 0xbcb7, 0xbcb8, 0xbcb9, 0xbcba, 0xbcbb, 0xbcbc, 0xbcbd, + 0xbcc1, 0xbcc2, 0xbcc3, 0xbcc4, 0xbcc5, 0xbcc6, 0xbcc7, 0xbcc8, + 0xbcc9, 0xbcca, 0xbccb, 0xbccc, 0xbccd, 0xbcce, 0xbccf, 0xbcd0, + 0xbcd1, 0xbcd3, 0xbcd4, 0xbcd5, 0xbcd6, 0xbcd7, 0xbcd8, 0xbcd9, + 0xbcda, 0xbcdb, 0xbcdc, 0xbcdd, 0xbce1, 0xbce2, 0xbce3, 0xbce4, + 0xbce5, 0xbce6, 0xbce7, 0xbce8, 0xbce9, 0xbcea, 0xbceb, 0xbcec, + 0xbced, 0xbcee, 0xbcef, 0xbcf0, 0xbcf1, 0xbcf3, 0xbcf4, 0xbcf5, + 0xbcf6, 0xbcf7, 0xbcf8, 0xbcf9, 0xbcfa, 0xbcfb, 0xbcfc, 0xbcfd, + 0xbd41, 0xbd42, 0xbd43, 0xbd44, 0xbd45, 0xbd46, 0xbd47, 0xbd48, + 0xbd49, 0xbd4a, 0xbd4b, 0xbd4c, 0xbd4d, 0xbd4e, 0xbd4f, 0xbd50, + 0xbd51, 0xbd53, 0xbd54, 0xbd55, 0xbd56, 0xbd57, 0xbd58, 0xbd59, + 0xbd5a, 0xbd5b, 0xbd5c, 0xbd5d, 0xbd61, 0xbd62, 0xbd63, 0xbd64, + 0xbd65, 0xbd66, 0xbd67, 0xbd68, 0xbd69, 0xbd6a, 0xbd6b, 0xbd6c, + 0xbd6d, 0xbd6e, 0xbd6f, 0xbd70, 0xbd71, 0xbd73, 0xbd74, 0xbd75, + 0xbd76, 0xbd77, 0xbd78, 0xbd79, 0xbd7a, 0xbd7b, 0xbd7c, 0xbd7d, + 0xbd81, 0xbd82, 0xbd83, 0xbd84, 0xbd85, 0xbd86, 0xbd87, 0xbd88, + 0xbd89, 0xbd8a, 0xbd8b, 0xbd8c, 0xbd8d, 0xbd8e, 0xbd8f, 0xbd90, + 0xbd91, 0xbd93, 0xbd94, 0xbd95, 0xbd96, 0xbd97, 0xbd98, 0xbd99, + 0xbd9a, 0xbd9b, 0xbd9c, 0xbd9d, 0xbda1, 0xbda2, 0xbda3, 0xbda4, + 0xbda5, 0xbda6, 0xbda7, 0xbda8, 0xbda9, 0xbdaa, 0xbdab, 0xbdac, + 0xbdad, 0xbdae, 0xbdaf, 0xbdb0, 0xbdb1, 0xbdb3, 0xbdb4, 0xbdb5, + 0xbdb6, 0xbdb7, 0xbdb8, 0xbdb9, 0xbdba, 0xbdbb, 0xbdbc, 0xbdbd, + 0xbdc1, 0xbdc2, 0xbdc3, 0xbdc4, 0xbdc5, 0xbdc6, 0xbdc7, 0xbdc8, + 0xbdc9, 0xbdca, 0xbdcb, 0xbdcc, 0xbdcd, 0xbdce, 0xbdcf, 0xbdd0, + 0xbdd1, 0xbdd3, 0xbdd4, 0xbdd5, 0xbdd6, 0xbdd7, 0xbdd8, 0xbdd9, + 0xbdda, 0xbddb, 0xbddc, 0xbddd, 0xbde1, 0xbde2, 0xbde3, 0xbde4, + 0xbde5, 0xbde6, 0xbde7, 0xbde8, 0xbde9, 0xbdea, 0xbdeb, 0xbdec +}; + +static unsigned short johab_from_unicode_cb[] = { + 0xbded, 0xbdee, 0xbdef, 0xbdf0, 0xbdf1, 0xbdf3, 0xbdf4, 0xbdf5, + 0xbdf6, 0xbdf7, 0xbdf8, 0xbdf9, 0xbdfa, 0xbdfb, 0xbdfc, 0xbdfd, + 0xbe41, 0xbe42, 0xbe43, 0xbe44, 0xbe45, 0xbe46, 0xbe47, 0xbe48, + 0xbe49, 0xbe4a, 0xbe4b, 0xbe4c, 0xbe4d, 0xbe4e, 0xbe4f, 0xbe50, + 0xbe51, 0xbe53, 0xbe54, 0xbe55, 0xbe56, 0xbe57, 0xbe58, 0xbe59, + 0xbe5a, 0xbe5b, 0xbe5c, 0xbe5d, 0xbe61, 0xbe62, 0xbe63, 0xbe64, + 0xbe65, 0xbe66, 0xbe67, 0xbe68, 0xbe69, 0xbe6a, 0xbe6b, 0xbe6c, + 0xbe6d, 0xbe6e, 0xbe6f, 0xbe70, 0xbe71, 0xbe73, 0xbe74, 0xbe75, + 0xbe76, 0xbe77, 0xbe78, 0xbe79, 0xbe7a, 0xbe7b, 0xbe7c, 0xbe7d, + 0xbe81, 0xbe82, 0xbe83, 0xbe84, 0xbe85, 0xbe86, 0xbe87, 0xbe88, + 0xbe89, 0xbe8a, 0xbe8b, 0xbe8c, 0xbe8d, 0xbe8e, 0xbe8f, 0xbe90, + 0xbe91, 0xbe93, 0xbe94, 0xbe95, 0xbe96, 0xbe97, 0xbe98, 0xbe99, + 0xbe9a, 0xbe9b, 0xbe9c, 0xbe9d, 0xbea1, 0xbea2, 0xbea3, 0xbea4, + 0xbea5, 0xbea6, 0xbea7, 0xbea8, 0xbea9, 0xbeaa, 0xbeab, 0xbeac, + 0xbead, 0xbeae, 0xbeaf, 0xbeb0, 0xbeb1, 0xbeb3, 0xbeb4, 0xbeb5, + 0xbeb6, 0xbeb7, 0xbeb8, 0xbeb9, 0xbeba, 0xbebb, 0xbebc, 0xbebd, + 0xbec1, 0xbec2, 0xbec3, 0xbec4, 0xbec5, 0xbec6, 0xbec7, 0xbec8, + 0xbec9, 0xbeca, 0xbecb, 0xbecc, 0xbecd, 0xbece, 0xbecf, 0xbed0, + 0xbed1, 0xbed3, 0xbed4, 0xbed5, 0xbed6, 0xbed7, 0xbed8, 0xbed9, + 0xbeda, 0xbedb, 0xbedc, 0xbedd, 0xbee1, 0xbee2, 0xbee3, 0xbee4, + 0xbee5, 0xbee6, 0xbee7, 0xbee8, 0xbee9, 0xbeea, 0xbeeb, 0xbeec, + 0xbeed, 0xbeee, 0xbeef, 0xbef0, 0xbef1, 0xbef3, 0xbef4, 0xbef5, + 0xbef6, 0xbef7, 0xbef8, 0xbef9, 0xbefa, 0xbefb, 0xbefc, 0xbefd, + 0xbf41, 0xbf42, 0xbf43, 0xbf44, 0xbf45, 0xbf46, 0xbf47, 0xbf48, + 0xbf49, 0xbf4a, 0xbf4b, 0xbf4c, 0xbf4d, 0xbf4e, 0xbf4f, 0xbf50, + 0xbf51, 0xbf53, 0xbf54, 0xbf55, 0xbf56, 0xbf57, 0xbf58, 0xbf59, + 0xbf5a, 0xbf5b, 0xbf5c, 0xbf5d, 0xbf61, 0xbf62, 0xbf63, 0xbf64, + 0xbf65, 0xbf66, 0xbf67, 0xbf68, 0xbf69, 0xbf6a, 0xbf6b, 0xbf6c, + 0xbf6d, 0xbf6e, 0xbf6f, 0xbf70, 0xbf71, 0xbf73, 0xbf74, 0xbf75, + 0xbf76, 0xbf77, 0xbf78, 0xbf79, 0xbf7a, 0xbf7b, 0xbf7c, 0xbf7d, + 0xbf81, 0xbf82, 0xbf83, 0xbf84, 0xbf85, 0xbf86, 0xbf87, 0xbf88, + 0xbf89, 0xbf8a, 0xbf8b, 0xbf8c, 0xbf8d, 0xbf8e, 0xbf8f, 0xbf90 +}; + +static unsigned short johab_from_unicode_cc[] = { + 0xbf91, 0xbf93, 0xbf94, 0xbf95, 0xbf96, 0xbf97, 0xbf98, 0xbf99, + 0xbf9a, 0xbf9b, 0xbf9c, 0xbf9d, 0xbfa1, 0xbfa2, 0xbfa3, 0xbfa4, + 0xbfa5, 0xbfa6, 0xbfa7, 0xbfa8, 0xbfa9, 0xbfaa, 0xbfab, 0xbfac, + 0xbfad, 0xbfae, 0xbfaf, 0xbfb0, 0xbfb1, 0xbfb3, 0xbfb4, 0xbfb5, + 0xbfb6, 0xbfb7, 0xbfb8, 0xbfb9, 0xbfba, 0xbfbb, 0xbfbc, 0xbfbd, + 0xc061, 0xc062, 0xc063, 0xc064, 0xc065, 0xc066, 0xc067, 0xc068, + 0xc069, 0xc06a, 0xc06b, 0xc06c, 0xc06d, 0xc06e, 0xc06f, 0xc070, + 0xc071, 0xc073, 0xc074, 0xc075, 0xc076, 0xc077, 0xc078, 0xc079, + 0xc07a, 0xc07b, 0xc07c, 0xc07d, 0xc081, 0xc082, 0xc083, 0xc084, + 0xc085, 0xc086, 0xc087, 0xc088, 0xc089, 0xc08a, 0xc08b, 0xc08c, + 0xc08d, 0xc08e, 0xc08f, 0xc090, 0xc091, 0xc093, 0xc094, 0xc095, + 0xc096, 0xc097, 0xc098, 0xc099, 0xc09a, 0xc09b, 0xc09c, 0xc09d, + 0xc0a1, 0xc0a2, 0xc0a3, 0xc0a4, 0xc0a5, 0xc0a6, 0xc0a7, 0xc0a8, + 0xc0a9, 0xc0aa, 0xc0ab, 0xc0ac, 0xc0ad, 0xc0ae, 0xc0af, 0xc0b0, + 0xc0b1, 0xc0b3, 0xc0b4, 0xc0b5, 0xc0b6, 0xc0b7, 0xc0b8, 0xc0b9, + 0xc0ba, 0xc0bb, 0xc0bc, 0xc0bd, 0xc0c1, 0xc0c2, 0xc0c3, 0xc0c4, + 0xc0c5, 0xc0c6, 0xc0c7, 0xc0c8, 0xc0c9, 0xc0ca, 0xc0cb, 0xc0cc, + 0xc0cd, 0xc0ce, 0xc0cf, 0xc0d0, 0xc0d1, 0xc0d3, 0xc0d4, 0xc0d5, + 0xc0d6, 0xc0d7, 0xc0d8, 0xc0d9, 0xc0da, 0xc0db, 0xc0dc, 0xc0dd, + 0xc0e1, 0xc0e2, 0xc0e3, 0xc0e4, 0xc0e5, 0xc0e6, 0xc0e7, 0xc0e8, + 0xc0e9, 0xc0ea, 0xc0eb, 0xc0ec, 0xc0ed, 0xc0ee, 0xc0ef, 0xc0f0, + 0xc0f1, 0xc0f3, 0xc0f4, 0xc0f5, 0xc0f6, 0xc0f7, 0xc0f8, 0xc0f9, + 0xc0fa, 0xc0fb, 0xc0fc, 0xc0fd, 0xc141, 0xc142, 0xc143, 0xc144, + 0xc145, 0xc146, 0xc147, 0xc148, 0xc149, 0xc14a, 0xc14b, 0xc14c, + 0xc14d, 0xc14e, 0xc14f, 0xc150, 0xc151, 0xc153, 0xc154, 0xc155, + 0xc156, 0xc157, 0xc158, 0xc159, 0xc15a, 0xc15b, 0xc15c, 0xc15d, + 0xc161, 0xc162, 0xc163, 0xc164, 0xc165, 0xc166, 0xc167, 0xc168, + 0xc169, 0xc16a, 0xc16b, 0xc16c, 0xc16d, 0xc16e, 0xc16f, 0xc170, + 0xc171, 0xc173, 0xc174, 0xc175, 0xc176, 0xc177, 0xc178, 0xc179, + 0xc17a, 0xc17b, 0xc17c, 0xc17d, 0xc181, 0xc182, 0xc183, 0xc184, + 0xc185, 0xc186, 0xc187, 0xc188, 0xc189, 0xc18a, 0xc18b, 0xc18c, + 0xc18d, 0xc18e, 0xc18f, 0xc190, 0xc191, 0xc193, 0xc194, 0xc195 +}; + +static unsigned short johab_from_unicode_cd[] = { + 0xc196, 0xc197, 0xc198, 0xc199, 0xc19a, 0xc19b, 0xc19c, 0xc19d, + 0xc1a1, 0xc1a2, 0xc1a3, 0xc1a4, 0xc1a5, 0xc1a6, 0xc1a7, 0xc1a8, + 0xc1a9, 0xc1aa, 0xc1ab, 0xc1ac, 0xc1ad, 0xc1ae, 0xc1af, 0xc1b0, + 0xc1b1, 0xc1b3, 0xc1b4, 0xc1b5, 0xc1b6, 0xc1b7, 0xc1b8, 0xc1b9, + 0xc1ba, 0xc1bb, 0xc1bc, 0xc1bd, 0xc1c1, 0xc1c2, 0xc1c3, 0xc1c4, + 0xc1c5, 0xc1c6, 0xc1c7, 0xc1c8, 0xc1c9, 0xc1ca, 0xc1cb, 0xc1cc, + 0xc1cd, 0xc1ce, 0xc1cf, 0xc1d0, 0xc1d1, 0xc1d3, 0xc1d4, 0xc1d5, + 0xc1d6, 0xc1d7, 0xc1d8, 0xc1d9, 0xc1da, 0xc1db, 0xc1dc, 0xc1dd, + 0xc1e1, 0xc1e2, 0xc1e3, 0xc1e4, 0xc1e5, 0xc1e6, 0xc1e7, 0xc1e8, + 0xc1e9, 0xc1ea, 0xc1eb, 0xc1ec, 0xc1ed, 0xc1ee, 0xc1ef, 0xc1f0, + 0xc1f1, 0xc1f3, 0xc1f4, 0xc1f5, 0xc1f6, 0xc1f7, 0xc1f8, 0xc1f9, + 0xc1fa, 0xc1fb, 0xc1fc, 0xc1fd, 0xc241, 0xc242, 0xc243, 0xc244, + 0xc245, 0xc246, 0xc247, 0xc248, 0xc249, 0xc24a, 0xc24b, 0xc24c, + 0xc24d, 0xc24e, 0xc24f, 0xc250, 0xc251, 0xc253, 0xc254, 0xc255, + 0xc256, 0xc257, 0xc258, 0xc259, 0xc25a, 0xc25b, 0xc25c, 0xc25d, + 0xc261, 0xc262, 0xc263, 0xc264, 0xc265, 0xc266, 0xc267, 0xc268, + 0xc269, 0xc26a, 0xc26b, 0xc26c, 0xc26d, 0xc26e, 0xc26f, 0xc270, + 0xc271, 0xc273, 0xc274, 0xc275, 0xc276, 0xc277, 0xc278, 0xc279, + 0xc27a, 0xc27b, 0xc27c, 0xc27d, 0xc281, 0xc282, 0xc283, 0xc284, + 0xc285, 0xc286, 0xc287, 0xc288, 0xc289, 0xc28a, 0xc28b, 0xc28c, + 0xc28d, 0xc28e, 0xc28f, 0xc290, 0xc291, 0xc293, 0xc294, 0xc295, + 0xc296, 0xc297, 0xc298, 0xc299, 0xc29a, 0xc29b, 0xc29c, 0xc29d, + 0xc2a1, 0xc2a2, 0xc2a3, 0xc2a4, 0xc2a5, 0xc2a6, 0xc2a7, 0xc2a8, + 0xc2a9, 0xc2aa, 0xc2ab, 0xc2ac, 0xc2ad, 0xc2ae, 0xc2af, 0xc2b0, + 0xc2b1, 0xc2b3, 0xc2b4, 0xc2b5, 0xc2b6, 0xc2b7, 0xc2b8, 0xc2b9, + 0xc2ba, 0xc2bb, 0xc2bc, 0xc2bd, 0xc2c1, 0xc2c2, 0xc2c3, 0xc2c4, + 0xc2c5, 0xc2c6, 0xc2c7, 0xc2c8, 0xc2c9, 0xc2ca, 0xc2cb, 0xc2cc, + 0xc2cd, 0xc2ce, 0xc2cf, 0xc2d0, 0xc2d1, 0xc2d3, 0xc2d4, 0xc2d5, + 0xc2d6, 0xc2d7, 0xc2d8, 0xc2d9, 0xc2da, 0xc2db, 0xc2dc, 0xc2dd, + 0xc2e1, 0xc2e2, 0xc2e3, 0xc2e4, 0xc2e5, 0xc2e6, 0xc2e7, 0xc2e8, + 0xc2e9, 0xc2ea, 0xc2eb, 0xc2ec, 0xc2ed, 0xc2ee, 0xc2ef, 0xc2f0, + 0xc2f1, 0xc2f3, 0xc2f4, 0xc2f5, 0xc2f6, 0xc2f7, 0xc2f8, 0xc2f9 +}; + +static unsigned short johab_from_unicode_ce[] = { + 0xc2fa, 0xc2fb, 0xc2fc, 0xc2fd, 0xc341, 0xc342, 0xc343, 0xc344, + 0xc345, 0xc346, 0xc347, 0xc348, 0xc349, 0xc34a, 0xc34b, 0xc34c, + 0xc34d, 0xc34e, 0xc34f, 0xc350, 0xc351, 0xc353, 0xc354, 0xc355, + 0xc356, 0xc357, 0xc358, 0xc359, 0xc35a, 0xc35b, 0xc35c, 0xc35d, + 0xc361, 0xc362, 0xc363, 0xc364, 0xc365, 0xc366, 0xc367, 0xc368, + 0xc369, 0xc36a, 0xc36b, 0xc36c, 0xc36d, 0xc36e, 0xc36f, 0xc370, + 0xc371, 0xc373, 0xc374, 0xc375, 0xc376, 0xc377, 0xc378, 0xc379, + 0xc37a, 0xc37b, 0xc37c, 0xc37d, 0xc381, 0xc382, 0xc383, 0xc384, + 0xc385, 0xc386, 0xc387, 0xc388, 0xc389, 0xc38a, 0xc38b, 0xc38c, + 0xc38d, 0xc38e, 0xc38f, 0xc390, 0xc391, 0xc393, 0xc394, 0xc395, + 0xc396, 0xc397, 0xc398, 0xc399, 0xc39a, 0xc39b, 0xc39c, 0xc39d, + 0xc3a1, 0xc3a2, 0xc3a3, 0xc3a4, 0xc3a5, 0xc3a6, 0xc3a7, 0xc3a8, + 0xc3a9, 0xc3aa, 0xc3ab, 0xc3ac, 0xc3ad, 0xc3ae, 0xc3af, 0xc3b0, + 0xc3b1, 0xc3b3, 0xc3b4, 0xc3b5, 0xc3b6, 0xc3b7, 0xc3b8, 0xc3b9, + 0xc3ba, 0xc3bb, 0xc3bc, 0xc3bd, 0xc461, 0xc462, 0xc463, 0xc464, + 0xc465, 0xc466, 0xc467, 0xc468, 0xc469, 0xc46a, 0xc46b, 0xc46c, + 0xc46d, 0xc46e, 0xc46f, 0xc470, 0xc471, 0xc473, 0xc474, 0xc475, + 0xc476, 0xc477, 0xc478, 0xc479, 0xc47a, 0xc47b, 0xc47c, 0xc47d, + 0xc481, 0xc482, 0xc483, 0xc484, 0xc485, 0xc486, 0xc487, 0xc488, + 0xc489, 0xc48a, 0xc48b, 0xc48c, 0xc48d, 0xc48e, 0xc48f, 0xc490, + 0xc491, 0xc493, 0xc494, 0xc495, 0xc496, 0xc497, 0xc498, 0xc499, + 0xc49a, 0xc49b, 0xc49c, 0xc49d, 0xc4a1, 0xc4a2, 0xc4a3, 0xc4a4, + 0xc4a5, 0xc4a6, 0xc4a7, 0xc4a8, 0xc4a9, 0xc4aa, 0xc4ab, 0xc4ac, + 0xc4ad, 0xc4ae, 0xc4af, 0xc4b0, 0xc4b1, 0xc4b3, 0xc4b4, 0xc4b5, + 0xc4b6, 0xc4b7, 0xc4b8, 0xc4b9, 0xc4ba, 0xc4bb, 0xc4bc, 0xc4bd, + 0xc4c1, 0xc4c2, 0xc4c3, 0xc4c4, 0xc4c5, 0xc4c6, 0xc4c7, 0xc4c8, + 0xc4c9, 0xc4ca, 0xc4cb, 0xc4cc, 0xc4cd, 0xc4ce, 0xc4cf, 0xc4d0, + 0xc4d1, 0xc4d3, 0xc4d4, 0xc4d5, 0xc4d6, 0xc4d7, 0xc4d8, 0xc4d9, + 0xc4da, 0xc4db, 0xc4dc, 0xc4dd, 0xc4e1, 0xc4e2, 0xc4e3, 0xc4e4, + 0xc4e5, 0xc4e6, 0xc4e7, 0xc4e8, 0xc4e9, 0xc4ea, 0xc4eb, 0xc4ec, + 0xc4ed, 0xc4ee, 0xc4ef, 0xc4f0, 0xc4f1, 0xc4f3, 0xc4f4, 0xc4f5, + 0xc4f6, 0xc4f7, 0xc4f8, 0xc4f9, 0xc4fa, 0xc4fb, 0xc4fc, 0xc4fd +}; + +static unsigned short johab_from_unicode_cf[] = { + 0xc541, 0xc542, 0xc543, 0xc544, 0xc545, 0xc546, 0xc547, 0xc548, + 0xc549, 0xc54a, 0xc54b, 0xc54c, 0xc54d, 0xc54e, 0xc54f, 0xc550, + 0xc551, 0xc553, 0xc554, 0xc555, 0xc556, 0xc557, 0xc558, 0xc559, + 0xc55a, 0xc55b, 0xc55c, 0xc55d, 0xc561, 0xc562, 0xc563, 0xc564, + 0xc565, 0xc566, 0xc567, 0xc568, 0xc569, 0xc56a, 0xc56b, 0xc56c, + 0xc56d, 0xc56e, 0xc56f, 0xc570, 0xc571, 0xc573, 0xc574, 0xc575, + 0xc576, 0xc577, 0xc578, 0xc579, 0xc57a, 0xc57b, 0xc57c, 0xc57d, + 0xc581, 0xc582, 0xc583, 0xc584, 0xc585, 0xc586, 0xc587, 0xc588, + 0xc589, 0xc58a, 0xc58b, 0xc58c, 0xc58d, 0xc58e, 0xc58f, 0xc590, + 0xc591, 0xc593, 0xc594, 0xc595, 0xc596, 0xc597, 0xc598, 0xc599, + 0xc59a, 0xc59b, 0xc59c, 0xc59d, 0xc5a1, 0xc5a2, 0xc5a3, 0xc5a4, + 0xc5a5, 0xc5a6, 0xc5a7, 0xc5a8, 0xc5a9, 0xc5aa, 0xc5ab, 0xc5ac, + 0xc5ad, 0xc5ae, 0xc5af, 0xc5b0, 0xc5b1, 0xc5b3, 0xc5b4, 0xc5b5, + 0xc5b6, 0xc5b7, 0xc5b8, 0xc5b9, 0xc5ba, 0xc5bb, 0xc5bc, 0xc5bd, + 0xc5c1, 0xc5c2, 0xc5c3, 0xc5c4, 0xc5c5, 0xc5c6, 0xc5c7, 0xc5c8, + 0xc5c9, 0xc5ca, 0xc5cb, 0xc5cc, 0xc5cd, 0xc5ce, 0xc5cf, 0xc5d0, + 0xc5d1, 0xc5d3, 0xc5d4, 0xc5d5, 0xc5d6, 0xc5d7, 0xc5d8, 0xc5d9, + 0xc5da, 0xc5db, 0xc5dc, 0xc5dd, 0xc5e1, 0xc5e2, 0xc5e3, 0xc5e4, + 0xc5e5, 0xc5e6, 0xc5e7, 0xc5e8, 0xc5e9, 0xc5ea, 0xc5eb, 0xc5ec, + 0xc5ed, 0xc5ee, 0xc5ef, 0xc5f0, 0xc5f1, 0xc5f3, 0xc5f4, 0xc5f5, + 0xc5f6, 0xc5f7, 0xc5f8, 0xc5f9, 0xc5fa, 0xc5fb, 0xc5fc, 0xc5fd, + 0xc641, 0xc642, 0xc643, 0xc644, 0xc645, 0xc646, 0xc647, 0xc648, + 0xc649, 0xc64a, 0xc64b, 0xc64c, 0xc64d, 0xc64e, 0xc64f, 0xc650, + 0xc651, 0xc653, 0xc654, 0xc655, 0xc656, 0xc657, 0xc658, 0xc659, + 0xc65a, 0xc65b, 0xc65c, 0xc65d, 0xc661, 0xc662, 0xc663, 0xc664, + 0xc665, 0xc666, 0xc667, 0xc668, 0xc669, 0xc66a, 0xc66b, 0xc66c, + 0xc66d, 0xc66e, 0xc66f, 0xc670, 0xc671, 0xc673, 0xc674, 0xc675, + 0xc676, 0xc677, 0xc678, 0xc679, 0xc67a, 0xc67b, 0xc67c, 0xc67d, + 0xc681, 0xc682, 0xc683, 0xc684, 0xc685, 0xc686, 0xc687, 0xc688, + 0xc689, 0xc68a, 0xc68b, 0xc68c, 0xc68d, 0xc68e, 0xc68f, 0xc690, + 0xc691, 0xc693, 0xc694, 0xc695, 0xc696, 0xc697, 0xc698, 0xc699, + 0xc69a, 0xc69b, 0xc69c, 0xc69d, 0xc6a1, 0xc6a2, 0xc6a3, 0xc6a4 +}; + +static unsigned short johab_from_unicode_d0[] = { + 0xc6a5, 0xc6a6, 0xc6a7, 0xc6a8, 0xc6a9, 0xc6aa, 0xc6ab, 0xc6ac, + 0xc6ad, 0xc6ae, 0xc6af, 0xc6b0, 0xc6b1, 0xc6b3, 0xc6b4, 0xc6b5, + 0xc6b6, 0xc6b7, 0xc6b8, 0xc6b9, 0xc6ba, 0xc6bb, 0xc6bc, 0xc6bd, + 0xc6c1, 0xc6c2, 0xc6c3, 0xc6c4, 0xc6c5, 0xc6c6, 0xc6c7, 0xc6c8, + 0xc6c9, 0xc6ca, 0xc6cb, 0xc6cc, 0xc6cd, 0xc6ce, 0xc6cf, 0xc6d0, + 0xc6d1, 0xc6d3, 0xc6d4, 0xc6d5, 0xc6d6, 0xc6d7, 0xc6d8, 0xc6d9, + 0xc6da, 0xc6db, 0xc6dc, 0xc6dd, 0xc6e1, 0xc6e2, 0xc6e3, 0xc6e4, + 0xc6e5, 0xc6e6, 0xc6e7, 0xc6e8, 0xc6e9, 0xc6ea, 0xc6eb, 0xc6ec, + 0xc6ed, 0xc6ee, 0xc6ef, 0xc6f0, 0xc6f1, 0xc6f3, 0xc6f4, 0xc6f5, + 0xc6f6, 0xc6f7, 0xc6f8, 0xc6f9, 0xc6fa, 0xc6fb, 0xc6fc, 0xc6fd, + 0xc741, 0xc742, 0xc743, 0xc744, 0xc745, 0xc746, 0xc747, 0xc748, + 0xc749, 0xc74a, 0xc74b, 0xc74c, 0xc74d, 0xc74e, 0xc74f, 0xc750, + 0xc751, 0xc753, 0xc754, 0xc755, 0xc756, 0xc757, 0xc758, 0xc759, + 0xc75a, 0xc75b, 0xc75c, 0xc75d, 0xc761, 0xc762, 0xc763, 0xc764, + 0xc765, 0xc766, 0xc767, 0xc768, 0xc769, 0xc76a, 0xc76b, 0xc76c, + 0xc76d, 0xc76e, 0xc76f, 0xc770, 0xc771, 0xc773, 0xc774, 0xc775, + 0xc776, 0xc777, 0xc778, 0xc779, 0xc77a, 0xc77b, 0xc77c, 0xc77d, + 0xc781, 0xc782, 0xc783, 0xc784, 0xc785, 0xc786, 0xc787, 0xc788, + 0xc789, 0xc78a, 0xc78b, 0xc78c, 0xc78d, 0xc78e, 0xc78f, 0xc790, + 0xc791, 0xc793, 0xc794, 0xc795, 0xc796, 0xc797, 0xc798, 0xc799, + 0xc79a, 0xc79b, 0xc79c, 0xc79d, 0xc7a1, 0xc7a2, 0xc7a3, 0xc7a4, + 0xc7a5, 0xc7a6, 0xc7a7, 0xc7a8, 0xc7a9, 0xc7aa, 0xc7ab, 0xc7ac, + 0xc7ad, 0xc7ae, 0xc7af, 0xc7b0, 0xc7b1, 0xc7b3, 0xc7b4, 0xc7b5, + 0xc7b6, 0xc7b7, 0xc7b8, 0xc7b9, 0xc7ba, 0xc7bb, 0xc7bc, 0xc7bd, + 0xc861, 0xc862, 0xc863, 0xc864, 0xc865, 0xc866, 0xc867, 0xc868, + 0xc869, 0xc86a, 0xc86b, 0xc86c, 0xc86d, 0xc86e, 0xc86f, 0xc870, + 0xc871, 0xc873, 0xc874, 0xc875, 0xc876, 0xc877, 0xc878, 0xc879, + 0xc87a, 0xc87b, 0xc87c, 0xc87d, 0xc881, 0xc882, 0xc883, 0xc884, + 0xc885, 0xc886, 0xc887, 0xc888, 0xc889, 0xc88a, 0xc88b, 0xc88c, + 0xc88d, 0xc88e, 0xc88f, 0xc890, 0xc891, 0xc893, 0xc894, 0xc895, + 0xc896, 0xc897, 0xc898, 0xc899, 0xc89a, 0xc89b, 0xc89c, 0xc89d, + 0xc8a1, 0xc8a2, 0xc8a3, 0xc8a4, 0xc8a5, 0xc8a6, 0xc8a7, 0xc8a8 +}; + +static unsigned short johab_from_unicode_d1[] = { + 0xc8a9, 0xc8aa, 0xc8ab, 0xc8ac, 0xc8ad, 0xc8ae, 0xc8af, 0xc8b0, + 0xc8b1, 0xc8b3, 0xc8b4, 0xc8b5, 0xc8b6, 0xc8b7, 0xc8b8, 0xc8b9, + 0xc8ba, 0xc8bb, 0xc8bc, 0xc8bd, 0xc8c1, 0xc8c2, 0xc8c3, 0xc8c4, + 0xc8c5, 0xc8c6, 0xc8c7, 0xc8c8, 0xc8c9, 0xc8ca, 0xc8cb, 0xc8cc, + 0xc8cd, 0xc8ce, 0xc8cf, 0xc8d0, 0xc8d1, 0xc8d3, 0xc8d4, 0xc8d5, + 0xc8d6, 0xc8d7, 0xc8d8, 0xc8d9, 0xc8da, 0xc8db, 0xc8dc, 0xc8dd, + 0xc8e1, 0xc8e2, 0xc8e3, 0xc8e4, 0xc8e5, 0xc8e6, 0xc8e7, 0xc8e8, + 0xc8e9, 0xc8ea, 0xc8eb, 0xc8ec, 0xc8ed, 0xc8ee, 0xc8ef, 0xc8f0, + 0xc8f1, 0xc8f3, 0xc8f4, 0xc8f5, 0xc8f6, 0xc8f7, 0xc8f8, 0xc8f9, + 0xc8fa, 0xc8fb, 0xc8fc, 0xc8fd, 0xc941, 0xc942, 0xc943, 0xc944, + 0xc945, 0xc946, 0xc947, 0xc948, 0xc949, 0xc94a, 0xc94b, 0xc94c, + 0xc94d, 0xc94e, 0xc94f, 0xc950, 0xc951, 0xc953, 0xc954, 0xc955, + 0xc956, 0xc957, 0xc958, 0xc959, 0xc95a, 0xc95b, 0xc95c, 0xc95d, + 0xc961, 0xc962, 0xc963, 0xc964, 0xc965, 0xc966, 0xc967, 0xc968, + 0xc969, 0xc96a, 0xc96b, 0xc96c, 0xc96d, 0xc96e, 0xc96f, 0xc970, + 0xc971, 0xc973, 0xc974, 0xc975, 0xc976, 0xc977, 0xc978, 0xc979, + 0xc97a, 0xc97b, 0xc97c, 0xc97d, 0xc981, 0xc982, 0xc983, 0xc984, + 0xc985, 0xc986, 0xc987, 0xc988, 0xc989, 0xc98a, 0xc98b, 0xc98c, + 0xc98d, 0xc98e, 0xc98f, 0xc990, 0xc991, 0xc993, 0xc994, 0xc995, + 0xc996, 0xc997, 0xc998, 0xc999, 0xc99a, 0xc99b, 0xc99c, 0xc99d, + 0xc9a1, 0xc9a2, 0xc9a3, 0xc9a4, 0xc9a5, 0xc9a6, 0xc9a7, 0xc9a8, + 0xc9a9, 0xc9aa, 0xc9ab, 0xc9ac, 0xc9ad, 0xc9ae, 0xc9af, 0xc9b0, + 0xc9b1, 0xc9b3, 0xc9b4, 0xc9b5, 0xc9b6, 0xc9b7, 0xc9b8, 0xc9b9, + 0xc9ba, 0xc9bb, 0xc9bc, 0xc9bd, 0xc9c1, 0xc9c2, 0xc9c3, 0xc9c4, + 0xc9c5, 0xc9c6, 0xc9c7, 0xc9c8, 0xc9c9, 0xc9ca, 0xc9cb, 0xc9cc, + 0xc9cd, 0xc9ce, 0xc9cf, 0xc9d0, 0xc9d1, 0xc9d3, 0xc9d4, 0xc9d5, + 0xc9d6, 0xc9d7, 0xc9d8, 0xc9d9, 0xc9da, 0xc9db, 0xc9dc, 0xc9dd, + 0xc9e1, 0xc9e2, 0xc9e3, 0xc9e4, 0xc9e5, 0xc9e6, 0xc9e7, 0xc9e8, + 0xc9e9, 0xc9ea, 0xc9eb, 0xc9ec, 0xc9ed, 0xc9ee, 0xc9ef, 0xc9f0, + 0xc9f1, 0xc9f3, 0xc9f4, 0xc9f5, 0xc9f6, 0xc9f7, 0xc9f8, 0xc9f9, + 0xc9fa, 0xc9fb, 0xc9fc, 0xc9fd, 0xca41, 0xca42, 0xca43, 0xca44, + 0xca45, 0xca46, 0xca47, 0xca48, 0xca49, 0xca4a, 0xca4b, 0xca4c +}; + +static unsigned short johab_from_unicode_d2[] = { + 0xca4d, 0xca4e, 0xca4f, 0xca50, 0xca51, 0xca53, 0xca54, 0xca55, + 0xca56, 0xca57, 0xca58, 0xca59, 0xca5a, 0xca5b, 0xca5c, 0xca5d, + 0xca61, 0xca62, 0xca63, 0xca64, 0xca65, 0xca66, 0xca67, 0xca68, + 0xca69, 0xca6a, 0xca6b, 0xca6c, 0xca6d, 0xca6e, 0xca6f, 0xca70, + 0xca71, 0xca73, 0xca74, 0xca75, 0xca76, 0xca77, 0xca78, 0xca79, + 0xca7a, 0xca7b, 0xca7c, 0xca7d, 0xca81, 0xca82, 0xca83, 0xca84, + 0xca85, 0xca86, 0xca87, 0xca88, 0xca89, 0xca8a, 0xca8b, 0xca8c, + 0xca8d, 0xca8e, 0xca8f, 0xca90, 0xca91, 0xca93, 0xca94, 0xca95, + 0xca96, 0xca97, 0xca98, 0xca99, 0xca9a, 0xca9b, 0xca9c, 0xca9d, + 0xcaa1, 0xcaa2, 0xcaa3, 0xcaa4, 0xcaa5, 0xcaa6, 0xcaa7, 0xcaa8, + 0xcaa9, 0xcaaa, 0xcaab, 0xcaac, 0xcaad, 0xcaae, 0xcaaf, 0xcab0, + 0xcab1, 0xcab3, 0xcab4, 0xcab5, 0xcab6, 0xcab7, 0xcab8, 0xcab9, + 0xcaba, 0xcabb, 0xcabc, 0xcabd, 0xcac1, 0xcac2, 0xcac3, 0xcac4, + 0xcac5, 0xcac6, 0xcac7, 0xcac8, 0xcac9, 0xcaca, 0xcacb, 0xcacc, + 0xcacd, 0xcace, 0xcacf, 0xcad0, 0xcad1, 0xcad3, 0xcad4, 0xcad5, + 0xcad6, 0xcad7, 0xcad8, 0xcad9, 0xcada, 0xcadb, 0xcadc, 0xcadd, + 0xcae1, 0xcae2, 0xcae3, 0xcae4, 0xcae5, 0xcae6, 0xcae7, 0xcae8, + 0xcae9, 0xcaea, 0xcaeb, 0xcaec, 0xcaed, 0xcaee, 0xcaef, 0xcaf0, + 0xcaf1, 0xcaf3, 0xcaf4, 0xcaf5, 0xcaf6, 0xcaf7, 0xcaf8, 0xcaf9, + 0xcafa, 0xcafb, 0xcafc, 0xcafd, 0xcb41, 0xcb42, 0xcb43, 0xcb44, + 0xcb45, 0xcb46, 0xcb47, 0xcb48, 0xcb49, 0xcb4a, 0xcb4b, 0xcb4c, + 0xcb4d, 0xcb4e, 0xcb4f, 0xcb50, 0xcb51, 0xcb53, 0xcb54, 0xcb55, + 0xcb56, 0xcb57, 0xcb58, 0xcb59, 0xcb5a, 0xcb5b, 0xcb5c, 0xcb5d, + 0xcb61, 0xcb62, 0xcb63, 0xcb64, 0xcb65, 0xcb66, 0xcb67, 0xcb68, + 0xcb69, 0xcb6a, 0xcb6b, 0xcb6c, 0xcb6d, 0xcb6e, 0xcb6f, 0xcb70, + 0xcb71, 0xcb73, 0xcb74, 0xcb75, 0xcb76, 0xcb77, 0xcb78, 0xcb79, + 0xcb7a, 0xcb7b, 0xcb7c, 0xcb7d, 0xcb81, 0xcb82, 0xcb83, 0xcb84, + 0xcb85, 0xcb86, 0xcb87, 0xcb88, 0xcb89, 0xcb8a, 0xcb8b, 0xcb8c, + 0xcb8d, 0xcb8e, 0xcb8f, 0xcb90, 0xcb91, 0xcb93, 0xcb94, 0xcb95, + 0xcb96, 0xcb97, 0xcb98, 0xcb99, 0xcb9a, 0xcb9b, 0xcb9c, 0xcb9d, + 0xcba1, 0xcba2, 0xcba3, 0xcba4, 0xcba5, 0xcba6, 0xcba7, 0xcba8, + 0xcba9, 0xcbaa, 0xcbab, 0xcbac, 0xcbad, 0xcbae, 0xcbaf, 0xcbb0 +}; + +static unsigned short johab_from_unicode_d3[] = { + 0xcbb1, 0xcbb3, 0xcbb4, 0xcbb5, 0xcbb6, 0xcbb7, 0xcbb8, 0xcbb9, + 0xcbba, 0xcbbb, 0xcbbc, 0xcbbd, 0xcc61, 0xcc62, 0xcc63, 0xcc64, + 0xcc65, 0xcc66, 0xcc67, 0xcc68, 0xcc69, 0xcc6a, 0xcc6b, 0xcc6c, + 0xcc6d, 0xcc6e, 0xcc6f, 0xcc70, 0xcc71, 0xcc73, 0xcc74, 0xcc75, + 0xcc76, 0xcc77, 0xcc78, 0xcc79, 0xcc7a, 0xcc7b, 0xcc7c, 0xcc7d, + 0xcc81, 0xcc82, 0xcc83, 0xcc84, 0xcc85, 0xcc86, 0xcc87, 0xcc88, + 0xcc89, 0xcc8a, 0xcc8b, 0xcc8c, 0xcc8d, 0xcc8e, 0xcc8f, 0xcc90, + 0xcc91, 0xcc93, 0xcc94, 0xcc95, 0xcc96, 0xcc97, 0xcc98, 0xcc99, + 0xcc9a, 0xcc9b, 0xcc9c, 0xcc9d, 0xcca1, 0xcca2, 0xcca3, 0xcca4, + 0xcca5, 0xcca6, 0xcca7, 0xcca8, 0xcca9, 0xccaa, 0xccab, 0xccac, + 0xccad, 0xccae, 0xccaf, 0xccb0, 0xccb1, 0xccb3, 0xccb4, 0xccb5, + 0xccb6, 0xccb7, 0xccb8, 0xccb9, 0xccba, 0xccbb, 0xccbc, 0xccbd, + 0xccc1, 0xccc2, 0xccc3, 0xccc4, 0xccc5, 0xccc6, 0xccc7, 0xccc8, + 0xccc9, 0xccca, 0xcccb, 0xcccc, 0xcccd, 0xccce, 0xcccf, 0xccd0, + 0xccd1, 0xccd3, 0xccd4, 0xccd5, 0xccd6, 0xccd7, 0xccd8, 0xccd9, + 0xccda, 0xccdb, 0xccdc, 0xccdd, 0xcce1, 0xcce2, 0xcce3, 0xcce4, + 0xcce5, 0xcce6, 0xcce7, 0xcce8, 0xcce9, 0xccea, 0xcceb, 0xccec, + 0xcced, 0xccee, 0xccef, 0xccf0, 0xccf1, 0xccf3, 0xccf4, 0xccf5, + 0xccf6, 0xccf7, 0xccf8, 0xccf9, 0xccfa, 0xccfb, 0xccfc, 0xccfd, + 0xcd41, 0xcd42, 0xcd43, 0xcd44, 0xcd45, 0xcd46, 0xcd47, 0xcd48, + 0xcd49, 0xcd4a, 0xcd4b, 0xcd4c, 0xcd4d, 0xcd4e, 0xcd4f, 0xcd50, + 0xcd51, 0xcd53, 0xcd54, 0xcd55, 0xcd56, 0xcd57, 0xcd58, 0xcd59, + 0xcd5a, 0xcd5b, 0xcd5c, 0xcd5d, 0xcd61, 0xcd62, 0xcd63, 0xcd64, + 0xcd65, 0xcd66, 0xcd67, 0xcd68, 0xcd69, 0xcd6a, 0xcd6b, 0xcd6c, + 0xcd6d, 0xcd6e, 0xcd6f, 0xcd70, 0xcd71, 0xcd73, 0xcd74, 0xcd75, + 0xcd76, 0xcd77, 0xcd78, 0xcd79, 0xcd7a, 0xcd7b, 0xcd7c, 0xcd7d, + 0xcd81, 0xcd82, 0xcd83, 0xcd84, 0xcd85, 0xcd86, 0xcd87, 0xcd88, + 0xcd89, 0xcd8a, 0xcd8b, 0xcd8c, 0xcd8d, 0xcd8e, 0xcd8f, 0xcd90, + 0xcd91, 0xcd93, 0xcd94, 0xcd95, 0xcd96, 0xcd97, 0xcd98, 0xcd99, + 0xcd9a, 0xcd9b, 0xcd9c, 0xcd9d, 0xcda1, 0xcda2, 0xcda3, 0xcda4, + 0xcda5, 0xcda6, 0xcda7, 0xcda8, 0xcda9, 0xcdaa, 0xcdab, 0xcdac, + 0xcdad, 0xcdae, 0xcdaf, 0xcdb0, 0xcdb1, 0xcdb3, 0xcdb4, 0xcdb5 +}; + +static unsigned short johab_from_unicode_d4[] = { + 0xcdb6, 0xcdb7, 0xcdb8, 0xcdb9, 0xcdba, 0xcdbb, 0xcdbc, 0xcdbd, + 0xcdc1, 0xcdc2, 0xcdc3, 0xcdc4, 0xcdc5, 0xcdc6, 0xcdc7, 0xcdc8, + 0xcdc9, 0xcdca, 0xcdcb, 0xcdcc, 0xcdcd, 0xcdce, 0xcdcf, 0xcdd0, + 0xcdd1, 0xcdd3, 0xcdd4, 0xcdd5, 0xcdd6, 0xcdd7, 0xcdd8, 0xcdd9, + 0xcdda, 0xcddb, 0xcddc, 0xcddd, 0xcde1, 0xcde2, 0xcde3, 0xcde4, + 0xcde5, 0xcde6, 0xcde7, 0xcde8, 0xcde9, 0xcdea, 0xcdeb, 0xcdec, + 0xcded, 0xcdee, 0xcdef, 0xcdf0, 0xcdf1, 0xcdf3, 0xcdf4, 0xcdf5, + 0xcdf6, 0xcdf7, 0xcdf8, 0xcdf9, 0xcdfa, 0xcdfb, 0xcdfc, 0xcdfd, + 0xce41, 0xce42, 0xce43, 0xce44, 0xce45, 0xce46, 0xce47, 0xce48, + 0xce49, 0xce4a, 0xce4b, 0xce4c, 0xce4d, 0xce4e, 0xce4f, 0xce50, + 0xce51, 0xce53, 0xce54, 0xce55, 0xce56, 0xce57, 0xce58, 0xce59, + 0xce5a, 0xce5b, 0xce5c, 0xce5d, 0xce61, 0xce62, 0xce63, 0xce64, + 0xce65, 0xce66, 0xce67, 0xce68, 0xce69, 0xce6a, 0xce6b, 0xce6c, + 0xce6d, 0xce6e, 0xce6f, 0xce70, 0xce71, 0xce73, 0xce74, 0xce75, + 0xce76, 0xce77, 0xce78, 0xce79, 0xce7a, 0xce7b, 0xce7c, 0xce7d, + 0xce81, 0xce82, 0xce83, 0xce84, 0xce85, 0xce86, 0xce87, 0xce88, + 0xce89, 0xce8a, 0xce8b, 0xce8c, 0xce8d, 0xce8e, 0xce8f, 0xce90, + 0xce91, 0xce93, 0xce94, 0xce95, 0xce96, 0xce97, 0xce98, 0xce99, + 0xce9a, 0xce9b, 0xce9c, 0xce9d, 0xcea1, 0xcea2, 0xcea3, 0xcea4, + 0xcea5, 0xcea6, 0xcea7, 0xcea8, 0xcea9, 0xceaa, 0xceab, 0xceac, + 0xcead, 0xceae, 0xceaf, 0xceb0, 0xceb1, 0xceb3, 0xceb4, 0xceb5, + 0xceb6, 0xceb7, 0xceb8, 0xceb9, 0xceba, 0xcebb, 0xcebc, 0xcebd, + 0xcec1, 0xcec2, 0xcec3, 0xcec4, 0xcec5, 0xcec6, 0xcec7, 0xcec8, + 0xcec9, 0xceca, 0xcecb, 0xcecc, 0xcecd, 0xcece, 0xcecf, 0xced0, + 0xced1, 0xced3, 0xced4, 0xced5, 0xced6, 0xced7, 0xced8, 0xced9, + 0xceda, 0xcedb, 0xcedc, 0xcedd, 0xcee1, 0xcee2, 0xcee3, 0xcee4, + 0xcee5, 0xcee6, 0xcee7, 0xcee8, 0xcee9, 0xceea, 0xceeb, 0xceec, + 0xceed, 0xceee, 0xceef, 0xcef0, 0xcef1, 0xcef3, 0xcef4, 0xcef5, + 0xcef6, 0xcef7, 0xcef8, 0xcef9, 0xcefa, 0xcefb, 0xcefc, 0xcefd, + 0xcf41, 0xcf42, 0xcf43, 0xcf44, 0xcf45, 0xcf46, 0xcf47, 0xcf48, + 0xcf49, 0xcf4a, 0xcf4b, 0xcf4c, 0xcf4d, 0xcf4e, 0xcf4f, 0xcf50, + 0xcf51, 0xcf53, 0xcf54, 0xcf55, 0xcf56, 0xcf57, 0xcf58, 0xcf59 +}; + +static unsigned short johab_from_unicode_d5[] = { + 0xcf5a, 0xcf5b, 0xcf5c, 0xcf5d, 0xcf61, 0xcf62, 0xcf63, 0xcf64, + 0xcf65, 0xcf66, 0xcf67, 0xcf68, 0xcf69, 0xcf6a, 0xcf6b, 0xcf6c, + 0xcf6d, 0xcf6e, 0xcf6f, 0xcf70, 0xcf71, 0xcf73, 0xcf74, 0xcf75, + 0xcf76, 0xcf77, 0xcf78, 0xcf79, 0xcf7a, 0xcf7b, 0xcf7c, 0xcf7d, + 0xcf81, 0xcf82, 0xcf83, 0xcf84, 0xcf85, 0xcf86, 0xcf87, 0xcf88, + 0xcf89, 0xcf8a, 0xcf8b, 0xcf8c, 0xcf8d, 0xcf8e, 0xcf8f, 0xcf90, + 0xcf91, 0xcf93, 0xcf94, 0xcf95, 0xcf96, 0xcf97, 0xcf98, 0xcf99, + 0xcf9a, 0xcf9b, 0xcf9c, 0xcf9d, 0xcfa1, 0xcfa2, 0xcfa3, 0xcfa4, + 0xcfa5, 0xcfa6, 0xcfa7, 0xcfa8, 0xcfa9, 0xcfaa, 0xcfab, 0xcfac, + 0xcfad, 0xcfae, 0xcfaf, 0xcfb0, 0xcfb1, 0xcfb3, 0xcfb4, 0xcfb5, + 0xcfb6, 0xcfb7, 0xcfb8, 0xcfb9, 0xcfba, 0xcfbb, 0xcfbc, 0xcfbd, + 0xd061, 0xd062, 0xd063, 0xd064, 0xd065, 0xd066, 0xd067, 0xd068, + 0xd069, 0xd06a, 0xd06b, 0xd06c, 0xd06d, 0xd06e, 0xd06f, 0xd070, + 0xd071, 0xd073, 0xd074, 0xd075, 0xd076, 0xd077, 0xd078, 0xd079, + 0xd07a, 0xd07b, 0xd07c, 0xd07d, 0xd081, 0xd082, 0xd083, 0xd084, + 0xd085, 0xd086, 0xd087, 0xd088, 0xd089, 0xd08a, 0xd08b, 0xd08c, + 0xd08d, 0xd08e, 0xd08f, 0xd090, 0xd091, 0xd093, 0xd094, 0xd095, + 0xd096, 0xd097, 0xd098, 0xd099, 0xd09a, 0xd09b, 0xd09c, 0xd09d, + 0xd0a1, 0xd0a2, 0xd0a3, 0xd0a4, 0xd0a5, 0xd0a6, 0xd0a7, 0xd0a8, + 0xd0a9, 0xd0aa, 0xd0ab, 0xd0ac, 0xd0ad, 0xd0ae, 0xd0af, 0xd0b0, + 0xd0b1, 0xd0b3, 0xd0b4, 0xd0b5, 0xd0b6, 0xd0b7, 0xd0b8, 0xd0b9, + 0xd0ba, 0xd0bb, 0xd0bc, 0xd0bd, 0xd0c1, 0xd0c2, 0xd0c3, 0xd0c4, + 0xd0c5, 0xd0c6, 0xd0c7, 0xd0c8, 0xd0c9, 0xd0ca, 0xd0cb, 0xd0cc, + 0xd0cd, 0xd0ce, 0xd0cf, 0xd0d0, 0xd0d1, 0xd0d3, 0xd0d4, 0xd0d5, + 0xd0d6, 0xd0d7, 0xd0d8, 0xd0d9, 0xd0da, 0xd0db, 0xd0dc, 0xd0dd, + 0xd0e1, 0xd0e2, 0xd0e3, 0xd0e4, 0xd0e5, 0xd0e6, 0xd0e7, 0xd0e8, + 0xd0e9, 0xd0ea, 0xd0eb, 0xd0ec, 0xd0ed, 0xd0ee, 0xd0ef, 0xd0f0, + 0xd0f1, 0xd0f3, 0xd0f4, 0xd0f5, 0xd0f6, 0xd0f7, 0xd0f8, 0xd0f9, + 0xd0fa, 0xd0fb, 0xd0fc, 0xd0fd, 0xd141, 0xd142, 0xd143, 0xd144, + 0xd145, 0xd146, 0xd147, 0xd148, 0xd149, 0xd14a, 0xd14b, 0xd14c, + 0xd14d, 0xd14e, 0xd14f, 0xd150, 0xd151, 0xd153, 0xd154, 0xd155, + 0xd156, 0xd157, 0xd158, 0xd159, 0xd15a, 0xd15b, 0xd15c, 0xd15d +}; + +static unsigned short johab_from_unicode_d6[] = { + 0xd161, 0xd162, 0xd163, 0xd164, 0xd165, 0xd166, 0xd167, 0xd168, + 0xd169, 0xd16a, 0xd16b, 0xd16c, 0xd16d, 0xd16e, 0xd16f, 0xd170, + 0xd171, 0xd173, 0xd174, 0xd175, 0xd176, 0xd177, 0xd178, 0xd179, + 0xd17a, 0xd17b, 0xd17c, 0xd17d, 0xd181, 0xd182, 0xd183, 0xd184, + 0xd185, 0xd186, 0xd187, 0xd188, 0xd189, 0xd18a, 0xd18b, 0xd18c, + 0xd18d, 0xd18e, 0xd18f, 0xd190, 0xd191, 0xd193, 0xd194, 0xd195, + 0xd196, 0xd197, 0xd198, 0xd199, 0xd19a, 0xd19b, 0xd19c, 0xd19d, + 0xd1a1, 0xd1a2, 0xd1a3, 0xd1a4, 0xd1a5, 0xd1a6, 0xd1a7, 0xd1a8, + 0xd1a9, 0xd1aa, 0xd1ab, 0xd1ac, 0xd1ad, 0xd1ae, 0xd1af, 0xd1b0, + 0xd1b1, 0xd1b3, 0xd1b4, 0xd1b5, 0xd1b6, 0xd1b7, 0xd1b8, 0xd1b9, + 0xd1ba, 0xd1bb, 0xd1bc, 0xd1bd, 0xd1c1, 0xd1c2, 0xd1c3, 0xd1c4, + 0xd1c5, 0xd1c6, 0xd1c7, 0xd1c8, 0xd1c9, 0xd1ca, 0xd1cb, 0xd1cc, + 0xd1cd, 0xd1ce, 0xd1cf, 0xd1d0, 0xd1d1, 0xd1d3, 0xd1d4, 0xd1d5, + 0xd1d6, 0xd1d7, 0xd1d8, 0xd1d9, 0xd1da, 0xd1db, 0xd1dc, 0xd1dd, + 0xd1e1, 0xd1e2, 0xd1e3, 0xd1e4, 0xd1e5, 0xd1e6, 0xd1e7, 0xd1e8, + 0xd1e9, 0xd1ea, 0xd1eb, 0xd1ec, 0xd1ed, 0xd1ee, 0xd1ef, 0xd1f0, + 0xd1f1, 0xd1f3, 0xd1f4, 0xd1f5, 0xd1f6, 0xd1f7, 0xd1f8, 0xd1f9, + 0xd1fa, 0xd1fb, 0xd1fc, 0xd1fd, 0xd241, 0xd242, 0xd243, 0xd244, + 0xd245, 0xd246, 0xd247, 0xd248, 0xd249, 0xd24a, 0xd24b, 0xd24c, + 0xd24d, 0xd24e, 0xd24f, 0xd250, 0xd251, 0xd253, 0xd254, 0xd255, + 0xd256, 0xd257, 0xd258, 0xd259, 0xd25a, 0xd25b, 0xd25c, 0xd25d, + 0xd261, 0xd262, 0xd263, 0xd264, 0xd265, 0xd266, 0xd267, 0xd268, + 0xd269, 0xd26a, 0xd26b, 0xd26c, 0xd26d, 0xd26e, 0xd26f, 0xd270, + 0xd271, 0xd273, 0xd274, 0xd275, 0xd276, 0xd277, 0xd278, 0xd279, + 0xd27a, 0xd27b, 0xd27c, 0xd27d, 0xd281, 0xd282, 0xd283, 0xd284, + 0xd285, 0xd286, 0xd287, 0xd288, 0xd289, 0xd28a, 0xd28b, 0xd28c, + 0xd28d, 0xd28e, 0xd28f, 0xd290, 0xd291, 0xd293, 0xd294, 0xd295, + 0xd296, 0xd297, 0xd298, 0xd299, 0xd29a, 0xd29b, 0xd29c, 0xd29d, + 0xd2a1, 0xd2a2, 0xd2a3, 0xd2a4, 0xd2a5, 0xd2a6, 0xd2a7, 0xd2a8, + 0xd2a9, 0xd2aa, 0xd2ab, 0xd2ac, 0xd2ad, 0xd2ae, 0xd2af, 0xd2b0, + 0xd2b1, 0xd2b3, 0xd2b4, 0xd2b5, 0xd2b6, 0xd2b7, 0xd2b8, 0xd2b9, + 0xd2ba, 0xd2bb, 0xd2bc, 0xd2bd, 0xd2c1, 0xd2c2, 0xd2c3, 0xd2c4 +}; + +static unsigned short johab_from_unicode_d7[] = { + 0xd2c5, 0xd2c6, 0xd2c7, 0xd2c8, 0xd2c9, 0xd2ca, 0xd2cb, 0xd2cc, + 0xd2cd, 0xd2ce, 0xd2cf, 0xd2d0, 0xd2d1, 0xd2d3, 0xd2d4, 0xd2d5, + 0xd2d6, 0xd2d7, 0xd2d8, 0xd2d9, 0xd2da, 0xd2db, 0xd2dc, 0xd2dd, + 0xd2e1, 0xd2e2, 0xd2e3, 0xd2e4, 0xd2e5, 0xd2e6, 0xd2e7, 0xd2e8, + 0xd2e9, 0xd2ea, 0xd2eb, 0xd2ec, 0xd2ed, 0xd2ee, 0xd2ef, 0xd2f0, + 0xd2f1, 0xd2f3, 0xd2f4, 0xd2f5, 0xd2f6, 0xd2f7, 0xd2f8, 0xd2f9, + 0xd2fa, 0xd2fb, 0xd2fc, 0xd2fd, 0xd341, 0xd342, 0xd343, 0xd344, + 0xd345, 0xd346, 0xd347, 0xd348, 0xd349, 0xd34a, 0xd34b, 0xd34c, + 0xd34d, 0xd34e, 0xd34f, 0xd350, 0xd351, 0xd353, 0xd354, 0xd355, + 0xd356, 0xd357, 0xd358, 0xd359, 0xd35a, 0xd35b, 0xd35c, 0xd35d, + 0xd361, 0xd362, 0xd363, 0xd364, 0xd365, 0xd366, 0xd367, 0xd368, + 0xd369, 0xd36a, 0xd36b, 0xd36c, 0xd36d, 0xd36e, 0xd36f, 0xd370, + 0xd371, 0xd373, 0xd374, 0xd375, 0xd376, 0xd377, 0xd378, 0xd379, + 0xd37a, 0xd37b, 0xd37c, 0xd37d, 0xd381, 0xd382, 0xd383, 0xd384, + 0xd385, 0xd386, 0xd387, 0xd388, 0xd389, 0xd38a, 0xd38b, 0xd38c, + 0xd38d, 0xd38e, 0xd38f, 0xd390, 0xd391, 0xd393, 0xd394, 0xd395, + 0xd396, 0xd397, 0xd398, 0xd399, 0xd39a, 0xd39b, 0xd39c, 0xd39d, + 0xd3a1, 0xd3a2, 0xd3a3, 0xd3a4, 0xd3a5, 0xd3a6, 0xd3a7, 0xd3a8, + 0xd3a9, 0xd3aa, 0xd3ab, 0xd3ac, 0xd3ad, 0xd3ae, 0xd3af, 0xd3b0, + 0xd3b1, 0xd3b3, 0xd3b4, 0xd3b5, 0xd3b6, 0xd3b7, 0xd3b8, 0xd3b9, + 0xd3ba, 0xd3bb, 0xd3bc, 0xd3bd, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short johab_from_unicode_ff[] = { + 0x0000, 0xda31, 0xda32, 0xda33, 0xda34, 0xda35, 0xda36, 0xda37, + 0xda38, 0xda39, 0xda3a, 0xda3b, 0xda3c, 0xda3d, 0xda3e, 0xda3f, + 0xda40, 0xda41, 0xda42, 0xda43, 0xda44, 0xda45, 0xda46, 0xda47, + 0xda48, 0xda49, 0xda4a, 0xda4b, 0xda4c, 0xda4d, 0xda4e, 0xda4f, + 0xda50, 0xda51, 0xda52, 0xda53, 0xda54, 0xda55, 0xda56, 0xda57, + 0xda58, 0xda59, 0xda5a, 0xda5b, 0xda5c, 0xda5d, 0xda5e, 0xda5f, + 0xda60, 0xda61, 0xda62, 0xda63, 0xda64, 0xda65, 0xda66, 0xda67, + 0xda68, 0xda69, 0xda6a, 0xda6b, 0xd93c, 0xda6d, 0xda6e, 0xda6f, + 0xda70, 0xda71, 0xda72, 0xda73, 0xda74, 0xda75, 0xda76, 0xda77, + 0xda78, 0xda79, 0xda7a, 0xda7b, 0xda7c, 0xda7d, 0xda7e, 0xda91, + 0xda92, 0xda93, 0xda94, 0xda95, 0xda96, 0xda97, 0xda98, 0xda99, + 0xda9a, 0xda9b, 0xda9c, 0xda9d, 0xda9e, 0xda9f, 0xd93d, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xd95b, 0xd95c, 0xd9a0, 0xdaa0, 0x0000, 0xd95d, 0xda6c, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short * const johab_from_unicode_[] = { + johab_from_unicode_0, + johab_from_unicode_1, + johab_from_unicode_2, + johab_from_unicode_3, + johab_from_unicode_4, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + johab_from_unicode_20, + johab_from_unicode_21, + johab_from_unicode_22, + johab_from_unicode_23, + johab_from_unicode_24, + johab_from_unicode_25, + johab_from_unicode_26, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + johab_from_unicode_30, + johab_from_unicode_31, + johab_from_unicode_32, + johab_from_unicode_33, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + johab_from_unicode_4e, + johab_from_unicode_4f, + johab_from_unicode_50, + johab_from_unicode_51, + johab_from_unicode_52, + johab_from_unicode_53, + johab_from_unicode_54, + johab_from_unicode_55, + johab_from_unicode_56, + johab_from_unicode_57, + johab_from_unicode_58, + johab_from_unicode_59, + johab_from_unicode_5a, + johab_from_unicode_5b, + johab_from_unicode_5c, + johab_from_unicode_5d, + johab_from_unicode_5e, + johab_from_unicode_5f, + johab_from_unicode_60, + johab_from_unicode_61, + johab_from_unicode_62, + johab_from_unicode_63, + johab_from_unicode_64, + johab_from_unicode_65, + johab_from_unicode_66, + johab_from_unicode_67, + johab_from_unicode_68, + johab_from_unicode_69, + johab_from_unicode_6a, + johab_from_unicode_6b, + johab_from_unicode_6c, + johab_from_unicode_6d, + johab_from_unicode_6e, + johab_from_unicode_6f, + johab_from_unicode_70, + johab_from_unicode_71, + johab_from_unicode_72, + johab_from_unicode_73, + johab_from_unicode_74, + johab_from_unicode_75, + johab_from_unicode_76, + johab_from_unicode_77, + johab_from_unicode_78, + johab_from_unicode_79, + johab_from_unicode_7a, + johab_from_unicode_7b, + johab_from_unicode_7c, + johab_from_unicode_7d, + johab_from_unicode_7e, + johab_from_unicode_7f, + johab_from_unicode_80, + johab_from_unicode_81, + johab_from_unicode_82, + johab_from_unicode_83, + johab_from_unicode_84, + johab_from_unicode_85, + johab_from_unicode_86, + johab_from_unicode_87, + johab_from_unicode_88, + johab_from_unicode_89, + johab_from_unicode_8a, + johab_from_unicode_8b, + johab_from_unicode_8c, + johab_from_unicode_8d, + johab_from_unicode_8e, + johab_from_unicode_8f, + johab_from_unicode_90, + johab_from_unicode_91, + johab_from_unicode_92, + johab_from_unicode_93, + johab_from_unicode_94, + johab_from_unicode_95, + johab_from_unicode_96, + johab_from_unicode_97, + johab_from_unicode_98, + johab_from_unicode_99, + johab_from_unicode_9a, + johab_from_unicode_9b, + johab_from_unicode_9c, + johab_from_unicode_9d, + johab_from_unicode_9e, + johab_from_unicode_9f, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + johab_from_unicode_ac, + johab_from_unicode_ad, + johab_from_unicode_ae, + johab_from_unicode_af, + johab_from_unicode_b0, + johab_from_unicode_b1, + johab_from_unicode_b2, + johab_from_unicode_b3, + johab_from_unicode_b4, + johab_from_unicode_b5, + johab_from_unicode_b6, + johab_from_unicode_b7, + johab_from_unicode_b8, + johab_from_unicode_b9, + johab_from_unicode_ba, + johab_from_unicode_bb, + johab_from_unicode_bc, + johab_from_unicode_bd, + johab_from_unicode_be, + johab_from_unicode_bf, + johab_from_unicode_c0, + johab_from_unicode_c1, + johab_from_unicode_c2, + johab_from_unicode_c3, + johab_from_unicode_c4, + johab_from_unicode_c5, + johab_from_unicode_c6, + johab_from_unicode_c7, + johab_from_unicode_c8, + johab_from_unicode_c9, + johab_from_unicode_ca, + johab_from_unicode_cb, + johab_from_unicode_cc, + johab_from_unicode_cd, + johab_from_unicode_ce, + johab_from_unicode_cf, + johab_from_unicode_d0, + johab_from_unicode_d1, + johab_from_unicode_d2, + johab_from_unicode_d3, + johab_from_unicode_d4, + johab_from_unicode_d5, + johab_from_unicode_d6, + johab_from_unicode_d7, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + johab_from_unicode_ff +}; + +struct charmap2 johab_from_unicode = { 0, 255, (unsigned short **) johab_from_unicode_, (unichar_t *) unicode_from_johab }; + +const unichar_t unicode_from_gb2312[] = { + 0x3000, 0x3001, 0x3002, 0x00b7, 0x02c9, 0x02c7, 0x00a8, 0x3003, + 0x3005, 0x2014, 0xff5e, 0x2016, 0x2026, 0x2018, 0x2019, 0x201c, + 0x201d, 0x3014, 0x3015, 0x3008, 0x3009, 0x300a, 0x300b, 0x300c, + 0x300d, 0x300e, 0x300f, 0x3016, 0x3017, 0x3010, 0x3011, 0x00b1, + 0x00d7, 0x00f7, 0x2236, 0x2227, 0x2228, 0x2211, 0x220f, 0x222a, + 0x2229, 0x2208, 0x2237, 0x221a, 0x22a5, 0x2225, 0x2220, 0x2312, + 0x2299, 0x222b, 0x222e, 0x2261, 0x224c, 0x2248, 0x223d, 0x221d, + 0x2260, 0x226e, 0x226f, 0x2264, 0x2265, 0x221e, 0x2235, 0x2234, + 0x2642, 0x2640, 0x00b0, 0x2032, 0x2033, 0x2103, 0xff04, 0x00a4, + 0xffe0, 0xffe1, 0x2030, 0x00a7, 0x2116, 0x2606, 0x2605, 0x25cb, + 0x25cf, 0x25ce, 0x25c7, 0x25c6, 0x25a1, 0x25a0, 0x25b3, 0x25b2, + 0x203b, 0x2192, 0x2190, 0x2191, 0x2193, 0x3013, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2488, 0x2489, + 0x248a, 0x248b, 0x248c, 0x248d, 0x248e, 0x248f, 0x2490, 0x2491, + 0x2492, 0x2493, 0x2494, 0x2495, 0x2496, 0x2497, 0x2498, 0x2499, + 0x249a, 0x249b, 0x2474, 0x2475, 0x2476, 0x2477, 0x2478, 0x2479, + 0x247a, 0x247b, 0x247c, 0x247d, 0x247e, 0x247f, 0x2480, 0x2481, + 0x2482, 0x2483, 0x2484, 0x2485, 0x2486, 0x2487, 0x2460, 0x2461, + 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, 0x2468, 0x2469, + 0x0000, 0x0000, 0x3220, 0x3221, 0x3222, 0x3223, 0x3224, 0x3225, + 0x3226, 0x3227, 0x3228, 0x3229, 0x0000, 0x0000, 0x2160, 0x2161, + 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, 0x2168, 0x2169, + 0x216a, 0x216b, 0x0000, 0x0000, 0xff01, 0xff02, 0xff03, 0xffe5, + 0xff05, 0xff06, 0xff07, 0xff08, 0xff09, 0xff0a, 0xff0b, 0xff0c, + 0xff0d, 0xff0e, 0xff0f, 0xff10, 0xff11, 0xff12, 0xff13, 0xff14, + 0xff15, 0xff16, 0xff17, 0xff18, 0xff19, 0xff1a, 0xff1b, 0xff1c, + 0xff1d, 0xff1e, 0xff1f, 0xff20, 0xff21, 0xff22, 0xff23, 0xff24, + 0xff25, 0xff26, 0xff27, 0xff28, 0xff29, 0xff2a, 0xff2b, 0xff2c, + 0xff2d, 0xff2e, 0xff2f, 0xff30, 0xff31, 0xff32, 0xff33, 0xff34, + 0xff35, 0xff36, 0xff37, 0xff38, 0xff39, 0xff3a, 0xff3b, 0xff3c, + 0xff3d, 0xff3e, 0xff3f, 0xff40, 0xff41, 0xff42, 0xff43, 0xff44, + 0xff45, 0xff46, 0xff47, 0xff48, 0xff49, 0xff4a, 0xff4b, 0xff4c, + 0xff4d, 0xff4e, 0xff4f, 0xff50, 0xff51, 0xff52, 0xff53, 0xff54, + 0xff55, 0xff56, 0xff57, 0xff58, 0xff59, 0xff5a, 0xff5b, 0xff5c, + 0xff5d, 0xffe3, 0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046, + 0x3047, 0x3048, 0x3049, 0x304a, 0x304b, 0x304c, 0x304d, 0x304e, + 0x304f, 0x3050, 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056, + 0x3057, 0x3058, 0x3059, 0x305a, 0x305b, 0x305c, 0x305d, 0x305e, + 0x305f, 0x3060, 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, + 0x3067, 0x3068, 0x3069, 0x306a, 0x306b, 0x306c, 0x306d, 0x306e, + 0x306f, 0x3070, 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, + 0x3077, 0x3078, 0x3079, 0x307a, 0x307b, 0x307c, 0x307d, 0x307e, + 0x307f, 0x3080, 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086, + 0x3087, 0x3088, 0x3089, 0x308a, 0x308b, 0x308c, 0x308d, 0x308e, + 0x308f, 0x3090, 0x3091, 0x3092, 0x3093, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x30a1, 0x30a2, 0x30a3, 0x30a4, 0x30a5, 0x30a6, 0x30a7, 0x30a8, + 0x30a9, 0x30aa, 0x30ab, 0x30ac, 0x30ad, 0x30ae, 0x30af, 0x30b0, + 0x30b1, 0x30b2, 0x30b3, 0x30b4, 0x30b5, 0x30b6, 0x30b7, 0x30b8, + 0x30b9, 0x30ba, 0x30bb, 0x30bc, 0x30bd, 0x30be, 0x30bf, 0x30c0, + 0x30c1, 0x30c2, 0x30c3, 0x30c4, 0x30c5, 0x30c6, 0x30c7, 0x30c8, + 0x30c9, 0x30ca, 0x30cb, 0x30cc, 0x30cd, 0x30ce, 0x30cf, 0x30d0, + 0x30d1, 0x30d2, 0x30d3, 0x30d4, 0x30d5, 0x30d6, 0x30d7, 0x30d8, + 0x30d9, 0x30da, 0x30db, 0x30dc, 0x30dd, 0x30de, 0x30df, 0x30e0, + 0x30e1, 0x30e2, 0x30e3, 0x30e4, 0x30e5, 0x30e6, 0x30e7, 0x30e8, + 0x30e9, 0x30ea, 0x30eb, 0x30ec, 0x30ed, 0x30ee, 0x30ef, 0x30f0, + 0x30f1, 0x30f2, 0x30f3, 0x30f4, 0x30f5, 0x30f6, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0391, 0x0392, + 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398, 0x0399, 0x039a, + 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, 0x03a0, 0x03a1, 0x03a3, + 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03b1, 0x03b2, + 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, 0x03b8, 0x03b9, 0x03ba, + 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, 0x03c0, 0x03c1, 0x03c3, + 0x03c4, 0x03c5, 0x03c6, 0x03c7, 0x03c8, 0x03c9, 0xe78d, 0xe78e, + 0xe78f, 0xe790, 0xe791, 0xe792, 0xe793, 0xfe35, 0xfe36, 0xfe39, + 0xfe3a, 0xfe3f, 0xfe40, 0xfe3d, 0xfe3e, 0xfe41, 0xfe42, 0xfe43, + 0xfe44, 0xe794, 0xe795, 0xfe3b, 0xfe3c, 0xfe37, 0xfe38, 0xfe31, + 0x205d, 0xfe33, 0xfe34, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0410, 0x0411, 0x0412, 0x0413, + 0x0414, 0x0415, 0x0401, 0x0416, 0x0417, 0x0418, 0x0419, 0x041a, + 0x041b, 0x041c, 0x041d, 0x041e, 0x041f, 0x0420, 0x0421, 0x0422, + 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042a, + 0x042b, 0x042c, 0x042d, 0x042e, 0x042f, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0430, 0x0431, 0x0432, 0x0433, + 0x0434, 0x0435, 0x0451, 0x0436, 0x0437, 0x0438, 0x0439, 0x043a, + 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, 0x0440, 0x0441, 0x0442, + 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449, 0x044a, + 0x044b, 0x044c, 0x044d, 0x044e, 0x044f, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0101, 0x00e1, 0x01ce, 0x00e0, 0x0113, 0x00e9, + 0x011b, 0x00e8, 0x012b, 0x00ed, 0x01d0, 0x00ec, 0x014d, 0x00f3, + 0x01d2, 0x00f2, 0x016b, 0x00fa, 0x01d4, 0x00f9, 0x01d6, 0x01d8, + 0x01da, 0x01dc, 0x00fc, 0x00ea, 0x0251, 0x1e3f, 0x0144, 0x0148, + 0x01f9, 0x0261, 0x0000, 0x0000, 0x0000, 0x0000, 0x3105, 0x3106, + 0x3107, 0x3108, 0x3109, 0x310a, 0x310b, 0x310c, 0x310d, 0x310e, + 0x310f, 0x3110, 0x3111, 0x3112, 0x3113, 0x3114, 0x3115, 0x3116, + 0x3117, 0x3118, 0x3119, 0x311a, 0x311b, 0x311c, 0x311d, 0x311e, + 0x311f, 0x3120, 0x3121, 0x3122, 0x3123, 0x3124, 0x3125, 0x3126, + 0x3127, 0x3128, 0x3129, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x2500, 0x2501, 0x2502, 0x2503, 0x2504, + 0x2505, 0x2506, 0x2507, 0x2508, 0x2509, 0x250a, 0x250b, 0x250c, + 0x250d, 0x250e, 0x250f, 0x2510, 0x2511, 0x2512, 0x2513, 0x2514, + 0x2515, 0x2516, 0x2517, 0x2518, 0x2519, 0x251a, 0x251b, 0x251c, + 0x251d, 0x251e, 0x251f, 0x2520, 0x2521, 0x2522, 0x2523, 0x2524, + 0x2525, 0x2526, 0x2527, 0x2528, 0x2529, 0x252a, 0x252b, 0x252c, + 0x252d, 0x252e, 0x252f, 0x2530, 0x2531, 0x2532, 0x2533, 0x2534, + 0x2535, 0x2536, 0x2537, 0x2538, 0x2539, 0x253a, 0x253b, 0x253c, + 0x253d, 0x253e, 0x253f, 0x2540, 0x2541, 0x2542, 0x2543, 0x2544, + 0x2545, 0x2546, 0x2547, 0x2548, 0x2549, 0x254a, 0x254b, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x554a, 0x963f, 0x57c3, 0x6328, 0x54ce, 0x5509, + 0x54c0, 0x7691, 0x764c, 0x853c, 0x77ee, 0x827e, 0x788d, 0x7231, + 0x9698, 0x978d, 0x6c28, 0x5b89, 0x4ffa, 0x6309, 0x6697, 0x5cb8, + 0x80fa, 0x6848, 0x80ae, 0x6602, 0x76ce, 0x51f9, 0x6556, 0x71ac, + 0x7ff1, 0x8884, 0x50b2, 0x5965, 0x61ca, 0x6fb3, 0x82ad, 0x634c, + 0x6252, 0x53ed, 0x5427, 0x7b06, 0x516b, 0x75a4, 0x5df4, 0x62d4, + 0x8dcb, 0x9776, 0x628a, 0x8019, 0x575d, 0x9738, 0x7f62, 0x7238, + 0x767d, 0x67cf, 0x767e, 0x6446, 0x4f70, 0x8d25, 0x62dc, 0x7a17, + 0x6591, 0x73ed, 0x642c, 0x6273, 0x822c, 0x9881, 0x677f, 0x7248, + 0x626e, 0x62cc, 0x4f34, 0x74e3, 0x534a, 0x529e, 0x7eca, 0x90a6, + 0x5e2e, 0x6886, 0x699c, 0x8180, 0x7ed1, 0x68d2, 0x78c5, 0x868c, + 0x9551, 0x508d, 0x8c24, 0x82de, 0x80de, 0x5305, 0x8912, 0x5265, + 0x8584, 0x96f9, 0x4fdd, 0x5821, 0x9971, 0x5b9d, 0x62b1, 0x62a5, + 0x66b4, 0x8c79, 0x9c8d, 0x7206, 0x676f, 0x7891, 0x60b2, 0x5351, + 0x5317, 0x8f88, 0x80cc, 0x8d1d, 0x94a1, 0x500d, 0x72c8, 0x5907, + 0x60eb, 0x7119, 0x88ab, 0x5954, 0x82ef, 0x672c, 0x7b28, 0x5d29, + 0x7ef7, 0x752d, 0x6cf5, 0x8e66, 0x8ff8, 0x903c, 0x9f3b, 0x6bd4, + 0x9119, 0x7b14, 0x5f7c, 0x78a7, 0x84d6, 0x853d, 0x6bd5, 0x6bd9, + 0x6bd6, 0x5e01, 0x5e87, 0x75f9, 0x95ed, 0x655d, 0x5f0a, 0x5fc5, + 0x8f9f, 0x58c1, 0x81c2, 0x907f, 0x965b, 0x97ad, 0x8fb9, 0x7f16, + 0x8d2c, 0x6241, 0x4fbf, 0x53d8, 0x535e, 0x8fa8, 0x8fa9, 0x8fab, + 0x904d, 0x6807, 0x5f6a, 0x8198, 0x8868, 0x9cd6, 0x618b, 0x522b, + 0x762a, 0x5f6c, 0x658c, 0x6fd2, 0x6ee8, 0x5bbe, 0x6448, 0x5175, + 0x51b0, 0x67c4, 0x4e19, 0x79c9, 0x997c, 0x70b3, 0x75c5, 0x5e76, + 0x73bb, 0x83e0, 0x64ad, 0x62e8, 0x94b5, 0x6ce2, 0x535a, 0x52c3, + 0x640f, 0x94c2, 0x7b94, 0x4f2f, 0x5e1b, 0x8236, 0x8116, 0x818a, + 0x6e24, 0x6cca, 0x9a73, 0x6355, 0x535c, 0x54fa, 0x8865, 0x57e0, + 0x4e0d, 0x5e03, 0x6b65, 0x7c3f, 0x90e8, 0x6016, 0x64e6, 0x731c, + 0x88c1, 0x6750, 0x624d, 0x8d22, 0x776c, 0x8e29, 0x91c7, 0x5f69, + 0x83dc, 0x8521, 0x9910, 0x53c2, 0x8695, 0x6b8b, 0x60ed, 0x60e8, + 0x707f, 0x82cd, 0x8231, 0x4ed3, 0x6ca7, 0x85cf, 0x64cd, 0x7cd9, + 0x69fd, 0x66f9, 0x8349, 0x5395, 0x7b56, 0x4fa7, 0x518c, 0x6d4b, + 0x5c42, 0x8e6d, 0x63d2, 0x53c9, 0x832c, 0x8336, 0x67e5, 0x78b4, + 0x643d, 0x5bdf, 0x5c94, 0x5dee, 0x8be7, 0x62c6, 0x67f4, 0x8c7a, + 0x6400, 0x63ba, 0x8749, 0x998b, 0x8c17, 0x7f20, 0x94f2, 0x4ea7, + 0x9610, 0x98a4, 0x660c, 0x7316, 0x573a, 0x5c1d, 0x5e38, 0x957f, + 0x507f, 0x80a0, 0x5382, 0x655e, 0x7545, 0x5531, 0x5021, 0x8d85, + 0x6284, 0x949e, 0x671d, 0x5632, 0x6f6e, 0x5de2, 0x5435, 0x7092, + 0x8f66, 0x626f, 0x64a4, 0x63a3, 0x5f7b, 0x6f88, 0x90f4, 0x81e3, + 0x8fb0, 0x5c18, 0x6668, 0x5ff1, 0x6c89, 0x9648, 0x8d81, 0x886c, + 0x6491, 0x79f0, 0x57ce, 0x6a59, 0x6210, 0x5448, 0x4e58, 0x7a0b, + 0x60e9, 0x6f84, 0x8bda, 0x627f, 0x901e, 0x9a8b, 0x79e4, 0x5403, + 0x75f4, 0x6301, 0x5319, 0x6c60, 0x8fdf, 0x5f1b, 0x9a70, 0x803b, + 0x9f7f, 0x4f88, 0x5c3a, 0x8d64, 0x7fc5, 0x65a5, 0x70bd, 0x5145, + 0x51b2, 0x866b, 0x5d07, 0x5ba0, 0x62bd, 0x916c, 0x7574, 0x8e0c, + 0x7a20, 0x6101, 0x7b79, 0x4ec7, 0x7ef8, 0x7785, 0x4e11, 0x81ed, + 0x521d, 0x51fa, 0x6a71, 0x53a8, 0x8e87, 0x9504, 0x96cf, 0x6ec1, + 0x9664, 0x695a, 0x7840, 0x50a8, 0x77d7, 0x6410, 0x89e6, 0x5904, + 0x63e3, 0x5ddd, 0x7a7f, 0x693d, 0x4f20, 0x8239, 0x5598, 0x4e32, + 0x75ae, 0x7a97, 0x5e62, 0x5e8a, 0x95ef, 0x521b, 0x5439, 0x708a, + 0x6376, 0x9524, 0x5782, 0x6625, 0x693f, 0x9187, 0x5507, 0x6df3, + 0x7eaf, 0x8822, 0x6233, 0x7ef0, 0x75b5, 0x8328, 0x78c1, 0x96cc, + 0x8f9e, 0x6148, 0x74f7, 0x8bcd, 0x6b64, 0x523a, 0x8d50, 0x6b21, + 0x806a, 0x8471, 0x56f1, 0x5306, 0x4ece, 0x4e1b, 0x51d1, 0x7c97, + 0x918b, 0x7c07, 0x4fc3, 0x8e7f, 0x7be1, 0x7a9c, 0x6467, 0x5d14, + 0x50ac, 0x8106, 0x7601, 0x7cb9, 0x6dec, 0x7fe0, 0x6751, 0x5b58, + 0x5bf8, 0x78cb, 0x64ae, 0x6413, 0x63aa, 0x632b, 0x9519, 0x642d, + 0x8fbe, 0x7b54, 0x7629, 0x6253, 0x5927, 0x5446, 0x6b79, 0x50a3, + 0x6234, 0x5e26, 0x6b86, 0x4ee3, 0x8d37, 0x888b, 0x5f85, 0x902e, + 0x6020, 0x803d, 0x62c5, 0x4e39, 0x5355, 0x90f8, 0x63b8, 0x80c6, + 0x65e6, 0x6c2e, 0x4f46, 0x60ee, 0x6de1, 0x8bde, 0x5f39, 0x86cb, + 0x5f53, 0x6321, 0x515a, 0x8361, 0x6863, 0x5200, 0x6363, 0x8e48, + 0x5012, 0x5c9b, 0x7977, 0x5bfc, 0x5230, 0x7a3b, 0x60bc, 0x9053, + 0x76d7, 0x5fb7, 0x5f97, 0x7684, 0x8e6c, 0x706f, 0x767b, 0x7b49, + 0x77aa, 0x51f3, 0x9093, 0x5824, 0x4f4e, 0x6ef4, 0x8fea, 0x654c, + 0x7b1b, 0x72c4, 0x6da4, 0x7fdf, 0x5ae1, 0x62b5, 0x5e95, 0x5730, + 0x8482, 0x7b2c, 0x5e1d, 0x5f1f, 0x9012, 0x7f14, 0x98a0, 0x6382, + 0x6ec7, 0x7898, 0x70b9, 0x5178, 0x975b, 0x57ab, 0x7535, 0x4f43, + 0x7538, 0x5e97, 0x60e6, 0x5960, 0x6dc0, 0x6bbf, 0x7889, 0x53fc, + 0x96d5, 0x51cb, 0x5201, 0x6389, 0x540a, 0x9493, 0x8c03, 0x8dcc, + 0x7239, 0x789f, 0x8776, 0x8fed, 0x8c0d, 0x53e0, 0x4e01, 0x76ef, + 0x53ee, 0x9489, 0x9876, 0x9f0e, 0x952d, 0x5b9a, 0x8ba2, 0x4e22, + 0x4e1c, 0x51ac, 0x8463, 0x61c2, 0x52a8, 0x680b, 0x4f97, 0x606b, + 0x51bb, 0x6d1e, 0x515c, 0x6296, 0x6597, 0x9661, 0x8c46, 0x9017, + 0x75d8, 0x90fd, 0x7763, 0x6bd2, 0x728a, 0x72ec, 0x8bfb, 0x5835, + 0x7779, 0x8d4c, 0x675c, 0x9540, 0x809a, 0x5ea6, 0x6e21, 0x5992, + 0x7aef, 0x77ed, 0x953b, 0x6bb5, 0x65ad, 0x7f0e, 0x5806, 0x5151, + 0x961f, 0x5bf9, 0x58a9, 0x5428, 0x8e72, 0x6566, 0x987f, 0x56e4, + 0x949d, 0x76fe, 0x9041, 0x6387, 0x54c6, 0x591a, 0x593a, 0x579b, + 0x8eb2, 0x6735, 0x8dfa, 0x8235, 0x5241, 0x60f0, 0x5815, 0x86fe, + 0x5ce8, 0x9e45, 0x4fc4, 0x989d, 0x8bb9, 0x5a25, 0x6076, 0x5384, + 0x627c, 0x904f, 0x9102, 0x997f, 0x6069, 0x800c, 0x513f, 0x8033, + 0x5c14, 0x9975, 0x6d31, 0x4e8c, 0x8d30, 0x53d1, 0x7f5a, 0x7b4f, + 0x4f10, 0x4e4f, 0x9600, 0x6cd5, 0x73d0, 0x85e9, 0x5e06, 0x756a, + 0x7ffb, 0x6a0a, 0x77fe, 0x9492, 0x7e41, 0x51e1, 0x70e6, 0x53cd, + 0x8fd4, 0x8303, 0x8d29, 0x72af, 0x996d, 0x6cdb, 0x574a, 0x82b3, + 0x65b9, 0x80aa, 0x623f, 0x9632, 0x59a8, 0x4eff, 0x8bbf, 0x7eba, + 0x653e, 0x83f2, 0x975e, 0x5561, 0x98de, 0x80a5, 0x532a, 0x8bfd, + 0x5420, 0x80ba, 0x5e9f, 0x6cb8, 0x8d39, 0x82ac, 0x915a, 0x5429, + 0x6c1b, 0x5206, 0x7eb7, 0x575f, 0x711a, 0x6c7e, 0x7c89, 0x594b, + 0x4efd, 0x5fff, 0x6124, 0x7caa, 0x4e30, 0x5c01, 0x67ab, 0x8702, + 0x5cf0, 0x950b, 0x98ce, 0x75af, 0x70fd, 0x9022, 0x51af, 0x7f1d, + 0x8bbd, 0x5949, 0x51e4, 0x4f5b, 0x5426, 0x592b, 0x6577, 0x80a4, + 0x5b75, 0x6276, 0x62c2, 0x8f90, 0x5e45, 0x6c1f, 0x7b26, 0x4f0f, + 0x4fd8, 0x670d, 0x6d6e, 0x6daa, 0x798f, 0x88b1, 0x5f17, 0x752b, + 0x629a, 0x8f85, 0x4fef, 0x91dc, 0x65a7, 0x812f, 0x8151, 0x5e9c, + 0x8150, 0x8d74, 0x526f, 0x8986, 0x8d4b, 0x590d, 0x5085, 0x4ed8, + 0x961c, 0x7236, 0x8179, 0x8d1f, 0x5bcc, 0x8ba3, 0x9644, 0x5987, + 0x7f1a, 0x5490, 0x5676, 0x560e, 0x8be5, 0x6539, 0x6982, 0x9499, + 0x76d6, 0x6e89, 0x5e72, 0x7518, 0x6746, 0x67d1, 0x7aff, 0x809d, + 0x8d76, 0x611f, 0x79c6, 0x6562, 0x8d63, 0x5188, 0x521a, 0x94a2, + 0x7f38, 0x809b, 0x7eb2, 0x5c97, 0x6e2f, 0x6760, 0x7bd9, 0x768b, + 0x9ad8, 0x818f, 0x7f94, 0x7cd5, 0x641e, 0x9550, 0x7a3f, 0x544a, + 0x54e5, 0x6b4c, 0x6401, 0x6208, 0x9e3d, 0x80f3, 0x7599, 0x5272, + 0x9769, 0x845b, 0x683c, 0x86e4, 0x9601, 0x9694, 0x94ec, 0x4e2a, + 0x5404, 0x7ed9, 0x6839, 0x8ddf, 0x8015, 0x66f4, 0x5e9a, 0x7fb9, + 0x57c2, 0x803f, 0x6897, 0x5de5, 0x653b, 0x529f, 0x606d, 0x9f9a, + 0x4f9b, 0x8eac, 0x516c, 0x5bab, 0x5f13, 0x5de9, 0x6c5e, 0x62f1, + 0x8d21, 0x5171, 0x94a9, 0x52fe, 0x6c9f, 0x82df, 0x72d7, 0x57a2, + 0x6784, 0x8d2d, 0x591f, 0x8f9c, 0x83c7, 0x5495, 0x7b8d, 0x4f30, + 0x6cbd, 0x5b64, 0x59d1, 0x9f13, 0x53e4, 0x86ca, 0x9aa8, 0x8c37, + 0x80a1, 0x6545, 0x987e, 0x56fa, 0x96c7, 0x522e, 0x74dc, 0x5250, + 0x5be1, 0x6302, 0x8902, 0x4e56, 0x62d0, 0x602a, 0x68fa, 0x5173, + 0x5b98, 0x51a0, 0x89c2, 0x7ba1, 0x9986, 0x7f50, 0x60ef, 0x704c, + 0x8d2f, 0x5149, 0x5e7f, 0x901b, 0x7470, 0x89c4, 0x572d, 0x7845, + 0x5f52, 0x9f9f, 0x95fa, 0x8f68, 0x9b3c, 0x8be1, 0x7678, 0x6842, + 0x67dc, 0x8dea, 0x8d35, 0x523d, 0x8f8a, 0x6eda, 0x68cd, 0x9505, + 0x90ed, 0x56fd, 0x679c, 0x88f9, 0x8fc7, 0x54c8, 0x9ab8, 0x5b69, + 0x6d77, 0x6c26, 0x4ea5, 0x5bb3, 0x9a87, 0x9163, 0x61a8, 0x90af, + 0x97e9, 0x542b, 0x6db5, 0x5bd2, 0x51fd, 0x558a, 0x7f55, 0x7ff0, + 0x64bc, 0x634d, 0x65f1, 0x61be, 0x608d, 0x710a, 0x6c57, 0x6c49, + 0x592f, 0x676d, 0x822a, 0x58d5, 0x568e, 0x8c6a, 0x6beb, 0x90dd, + 0x597d, 0x8017, 0x53f7, 0x6d69, 0x5475, 0x559d, 0x8377, 0x83cf, + 0x6838, 0x79be, 0x548c, 0x4f55, 0x5408, 0x76d2, 0x8c89, 0x9602, + 0x6cb3, 0x6db8, 0x8d6b, 0x8910, 0x9e64, 0x8d3a, 0x563f, 0x9ed1, + 0x75d5, 0x5f88, 0x72e0, 0x6068, 0x54fc, 0x4ea8, 0x6a2a, 0x8861, + 0x6052, 0x8f70, 0x54c4, 0x70d8, 0x8679, 0x9e3f, 0x6d2a, 0x5b8f, + 0x5f18, 0x7ea2, 0x5589, 0x4faf, 0x7334, 0x543c, 0x539a, 0x5019, + 0x540e, 0x547c, 0x4e4e, 0x5ffd, 0x745a, 0x58f6, 0x846b, 0x80e1, + 0x8774, 0x72d0, 0x7cca, 0x6e56, 0x5f27, 0x864e, 0x552c, 0x62a4, + 0x4e92, 0x6caa, 0x6237, 0x82b1, 0x54d7, 0x534e, 0x733e, 0x6ed1, + 0x753b, 0x5212, 0x5316, 0x8bdd, 0x69d0, 0x5f8a, 0x6000, 0x6dee, + 0x574f, 0x6b22, 0x73af, 0x6853, 0x8fd8, 0x7f13, 0x6362, 0x60a3, + 0x5524, 0x75ea, 0x8c62, 0x7115, 0x6da3, 0x5ba6, 0x5e7b, 0x8352, + 0x614c, 0x9ec4, 0x78fa, 0x8757, 0x7c27, 0x7687, 0x51f0, 0x60f6, + 0x714c, 0x6643, 0x5e4c, 0x604d, 0x8c0e, 0x7070, 0x6325, 0x8f89, + 0x5fbd, 0x6062, 0x86d4, 0x56de, 0x6bc1, 0x6094, 0x6167, 0x5349, + 0x60e0, 0x6666, 0x8d3f, 0x79fd, 0x4f1a, 0x70e9, 0x6c47, 0x8bb3, + 0x8bf2, 0x7ed8, 0x8364, 0x660f, 0x5a5a, 0x9b42, 0x6d51, 0x6df7, + 0x8c41, 0x6d3b, 0x4f19, 0x706b, 0x83b7, 0x6216, 0x60d1, 0x970d, + 0x8d27, 0x7978, 0x51fb, 0x573e, 0x57fa, 0x673a, 0x7578, 0x7a3d, + 0x79ef, 0x7b95, 0x808c, 0x9965, 0x8ff9, 0x6fc0, 0x8ba5, 0x9e21, + 0x59ec, 0x7ee9, 0x7f09, 0x5409, 0x6781, 0x68d8, 0x8f91, 0x7c4d, + 0x96c6, 0x53ca, 0x6025, 0x75be, 0x6c72, 0x5373, 0x5ac9, 0x7ea7, + 0x6324, 0x51e0, 0x810a, 0x5df1, 0x84df, 0x6280, 0x5180, 0x5b63, + 0x4f0e, 0x796d, 0x5242, 0x60b8, 0x6d4e, 0x5bc4, 0x5bc2, 0x8ba1, + 0x8bb0, 0x65e2, 0x5fcc, 0x9645, 0x5993, 0x7ee7, 0x7eaa, 0x5609, + 0x67b7, 0x5939, 0x4f73, 0x5bb6, 0x52a0, 0x835a, 0x988a, 0x8d3e, + 0x7532, 0x94be, 0x5047, 0x7a3c, 0x4ef7, 0x67b6, 0x9a7e, 0x5ac1, + 0x6b7c, 0x76d1, 0x575a, 0x5c16, 0x7b3a, 0x95f4, 0x714e, 0x517c, + 0x80a9, 0x8270, 0x5978, 0x7f04, 0x8327, 0x68c0, 0x67ec, 0x78b1, + 0x7877, 0x62e3, 0x6361, 0x7b80, 0x4fed, 0x526a, 0x51cf, 0x8350, + 0x69db, 0x9274, 0x8df5, 0x8d31, 0x89c1, 0x952e, 0x7bad, 0x4ef6, + 0x5065, 0x8230, 0x5251, 0x996f, 0x6e10, 0x6e85, 0x6da7, 0x5efa, + 0x50f5, 0x59dc, 0x5c06, 0x6d46, 0x6c5f, 0x7586, 0x848b, 0x6868, + 0x5956, 0x8bb2, 0x5320, 0x9171, 0x964d, 0x8549, 0x6912, 0x7901, + 0x7126, 0x80f6, 0x4ea4, 0x90ca, 0x6d47, 0x9a84, 0x5a07, 0x56bc, + 0x6405, 0x94f0, 0x77eb, 0x4fa5, 0x811a, 0x72e1, 0x89d2, 0x997a, + 0x7f34, 0x7ede, 0x527f, 0x6559, 0x9175, 0x8f7f, 0x8f83, 0x53eb, + 0x7a96, 0x63ed, 0x63a5, 0x7686, 0x79f8, 0x8857, 0x9636, 0x622a, + 0x52ab, 0x8282, 0x6854, 0x6770, 0x6377, 0x776b, 0x7aed, 0x6d01, + 0x7ed3, 0x89e3, 0x59d0, 0x6212, 0x85c9, 0x82a5, 0x754c, 0x501f, + 0x4ecb, 0x75a5, 0x8beb, 0x5c4a, 0x5dfe, 0x7b4b, 0x65a4, 0x91d1, + 0x4eca, 0x6d25, 0x895f, 0x7d27, 0x9526, 0x4ec5, 0x8c28, 0x8fdb, + 0x9773, 0x664b, 0x7981, 0x8fd1, 0x70ec, 0x6d78, 0x5c3d, 0x52b2, + 0x8346, 0x5162, 0x830e, 0x775b, 0x6676, 0x9cb8, 0x4eac, 0x60ca, + 0x7cbe, 0x7cb3, 0x7ecf, 0x4e95, 0x8b66, 0x666f, 0x9888, 0x9759, + 0x5883, 0x656c, 0x955c, 0x5f84, 0x75c9, 0x9756, 0x7adf, 0x7ade, + 0x51c0, 0x70af, 0x7a98, 0x63ea, 0x7a76, 0x7ea0, 0x7396, 0x97ed, + 0x4e45, 0x7078, 0x4e5d, 0x9152, 0x53a9, 0x6551, 0x65e7, 0x81fc, + 0x8205, 0x548e, 0x5c31, 0x759a, 0x97a0, 0x62d8, 0x72d9, 0x75bd, + 0x5c45, 0x9a79, 0x83ca, 0x5c40, 0x5480, 0x77e9, 0x4e3e, 0x6cae, + 0x805a, 0x62d2, 0x636e, 0x5de8, 0x5177, 0x8ddd, 0x8e1e, 0x952f, + 0x4ff1, 0x53e5, 0x60e7, 0x70ac, 0x5267, 0x6350, 0x9e43, 0x5a1f, + 0x5026, 0x7737, 0x5377, 0x7ee2, 0x6485, 0x652b, 0x6289, 0x6398, + 0x5014, 0x7235, 0x89c9, 0x51b3, 0x8bc0, 0x7edd, 0x5747, 0x83cc, + 0x94a7, 0x519b, 0x541b, 0x5cfb, 0x4fca, 0x7ae3, 0x6d5a, 0x90e1, + 0x9a8f, 0x5580, 0x5496, 0x5361, 0x54af, 0x5f00, 0x63e9, 0x6977, + 0x51ef, 0x6168, 0x520a, 0x582a, 0x52d8, 0x574e, 0x780d, 0x770b, + 0x5eb7, 0x6177, 0x7ce0, 0x625b, 0x6297, 0x4ea2, 0x7095, 0x8003, + 0x62f7, 0x70e4, 0x9760, 0x5777, 0x82db, 0x67ef, 0x68f5, 0x78d5, + 0x9897, 0x79d1, 0x58f3, 0x54b3, 0x53ef, 0x6e34, 0x514b, 0x523b, + 0x5ba2, 0x8bfe, 0x80af, 0x5543, 0x57a6, 0x6073, 0x5751, 0x542d, + 0x7a7a, 0x6050, 0x5b54, 0x63a7, 0x62a0, 0x53e3, 0x6263, 0x5bc7, + 0x67af, 0x54ed, 0x7a9f, 0x82e6, 0x9177, 0x5e93, 0x88e4, 0x5938, + 0x57ae, 0x630e, 0x8de8, 0x80ef, 0x5757, 0x7b77, 0x4fa9, 0x5feb, + 0x5bbd, 0x6b3e, 0x5321, 0x7b50, 0x72c2, 0x6846, 0x77ff, 0x7736, + 0x65f7, 0x51b5, 0x4e8f, 0x76d4, 0x5cbf, 0x7aa5, 0x8475, 0x594e, + 0x9b41, 0x5080, 0x9988, 0x6127, 0x6e83, 0x5764, 0x6606, 0x6346, + 0x56f0, 0x62ec, 0x6269, 0x5ed3, 0x9614, 0x5783, 0x62c9, 0x5587, + 0x8721, 0x814a, 0x8fa3, 0x5566, 0x83b1, 0x6765, 0x8d56, 0x84dd, + 0x5a6a, 0x680f, 0x62e6, 0x7bee, 0x9611, 0x5170, 0x6f9c, 0x8c30, + 0x63fd, 0x89c8, 0x61d2, 0x7f06, 0x70c2, 0x6ee5, 0x7405, 0x6994, + 0x72fc, 0x5eca, 0x90ce, 0x6717, 0x6d6a, 0x635e, 0x52b3, 0x7262, + 0x8001, 0x4f6c, 0x59e5, 0x916a, 0x70d9, 0x6d9d, 0x52d2, 0x4e50, + 0x96f7, 0x956d, 0x857e, 0x78ca, 0x7d2f, 0x5121, 0x5792, 0x64c2, + 0x808b, 0x7c7b, 0x6cea, 0x68f1, 0x695e, 0x51b7, 0x5398, 0x68a8, + 0x7281, 0x9ece, 0x7bf1, 0x72f8, 0x79bb, 0x6f13, 0x7406, 0x674e, + 0x91cc, 0x9ca4, 0x793c, 0x8389, 0x8354, 0x540f, 0x6817, 0x4e3d, + 0x5389, 0x52b1, 0x783e, 0x5386, 0x5229, 0x5088, 0x4f8b, 0x4fd0, + 0x75e2, 0x7acb, 0x7c92, 0x6ca5, 0x96b6, 0x529b, 0x7483, 0x54e9, + 0x4fe9, 0x8054, 0x83b2, 0x8fde, 0x9570, 0x5ec9, 0x601c, 0x6d9f, + 0x5e18, 0x655b, 0x8138, 0x94fe, 0x604b, 0x70bc, 0x7ec3, 0x7cae, + 0x51c9, 0x6881, 0x7cb1, 0x826f, 0x4e24, 0x8f86, 0x91cf, 0x667e, + 0x4eae, 0x8c05, 0x64a9, 0x804a, 0x50da, 0x7597, 0x71ce, 0x5be5, + 0x8fbd, 0x6f66, 0x4e86, 0x6482, 0x9563, 0x5ed6, 0x6599, 0x5217, + 0x88c2, 0x70c8, 0x52a3, 0x730e, 0x7433, 0x6797, 0x78f7, 0x9716, + 0x4e34, 0x90bb, 0x9cde, 0x6dcb, 0x51db, 0x8d41, 0x541d, 0x62ce, + 0x73b2, 0x83f1, 0x96f6, 0x9f84, 0x94c3, 0x4f36, 0x7f9a, 0x51cc, + 0x7075, 0x9675, 0x5cad, 0x9886, 0x53e6, 0x4ee4, 0x6e9c, 0x7409, + 0x69b4, 0x786b, 0x998f, 0x7559, 0x5218, 0x7624, 0x6d41, 0x67f3, + 0x516d, 0x9f99, 0x804b, 0x5499, 0x7b3c, 0x7abf, 0x9686, 0x5784, + 0x62e2, 0x9647, 0x697c, 0x5a04, 0x6402, 0x7bd3, 0x6f0f, 0x964b, + 0x82a6, 0x5362, 0x9885, 0x5e90, 0x7089, 0x63b3, 0x5364, 0x864f, + 0x9c81, 0x9e93, 0x788c, 0x9732, 0x8def, 0x8d42, 0x9e7f, 0x6f5e, + 0x7984, 0x5f55, 0x9646, 0x622e, 0x9a74, 0x5415, 0x94dd, 0x4fa3, + 0x65c5, 0x5c65, 0x5c61, 0x7f15, 0x8651, 0x6c2f, 0x5f8b, 0x7387, + 0x6ee4, 0x7eff, 0x5ce6, 0x631b, 0x5b6a, 0x6ee6, 0x5375, 0x4e71, + 0x63a0, 0x7565, 0x62a1, 0x8f6e, 0x4f26, 0x4ed1, 0x6ca6, 0x7eb6, + 0x8bba, 0x841d, 0x87ba, 0x7f57, 0x903b, 0x9523, 0x7ba9, 0x9aa1, + 0x88f8, 0x843d, 0x6d1b, 0x9a86, 0x7edc, 0x5988, 0x9ebb, 0x739b, + 0x7801, 0x8682, 0x9a6c, 0x9a82, 0x561b, 0x5417, 0x57cb, 0x4e70, + 0x9ea6, 0x5356, 0x8fc8, 0x8109, 0x7792, 0x9992, 0x86ee, 0x6ee1, + 0x8513, 0x66fc, 0x6162, 0x6f2b, 0x8c29, 0x8292, 0x832b, 0x76f2, + 0x6c13, 0x5fd9, 0x83bd, 0x732b, 0x8305, 0x951a, 0x6bdb, 0x77db, + 0x94c6, 0x536f, 0x8302, 0x5192, 0x5e3d, 0x8c8c, 0x8d38, 0x4e48, + 0x73ab, 0x679a, 0x6885, 0x9176, 0x9709, 0x7164, 0x6ca1, 0x7709, + 0x5a92, 0x9541, 0x6bcf, 0x7f8e, 0x6627, 0x5bd0, 0x59b9, 0x5a9a, + 0x95e8, 0x95f7, 0x4eec, 0x840c, 0x8499, 0x6aac, 0x76df, 0x9530, + 0x731b, 0x68a6, 0x5b5f, 0x772f, 0x919a, 0x9761, 0x7cdc, 0x8ff7, + 0x8c1c, 0x5f25, 0x7c73, 0x79d8, 0x89c5, 0x6ccc, 0x871c, 0x5bc6, + 0x5e42, 0x68c9, 0x7720, 0x7ef5, 0x5195, 0x514d, 0x52c9, 0x5a29, + 0x7f05, 0x9762, 0x82d7, 0x63cf, 0x7784, 0x85d0, 0x79d2, 0x6e3a, + 0x5e99, 0x5999, 0x8511, 0x706d, 0x6c11, 0x62bf, 0x76bf, 0x654f, + 0x60af, 0x95fd, 0x660e, 0x879f, 0x9e23, 0x94ed, 0x540d, 0x547d, + 0x8c2c, 0x6478, 0x6479, 0x8611, 0x6a21, 0x819c, 0x78e8, 0x6469, + 0x9b54, 0x62b9, 0x672b, 0x83ab, 0x58a8, 0x9ed8, 0x6cab, 0x6f20, + 0x5bde, 0x964c, 0x8c0b, 0x725f, 0x67d0, 0x62c7, 0x7261, 0x4ea9, + 0x59c6, 0x6bcd, 0x5893, 0x66ae, 0x5e55, 0x52df, 0x6155, 0x6728, + 0x76ee, 0x7766, 0x7267, 0x7a46, 0x62ff, 0x54ea, 0x5450, 0x94a0, + 0x90a3, 0x5a1c, 0x7eb3, 0x6c16, 0x4e43, 0x5976, 0x8010, 0x5948, + 0x5357, 0x7537, 0x96be, 0x56ca, 0x6320, 0x8111, 0x607c, 0x95f9, + 0x6dd6, 0x5462, 0x9981, 0x5185, 0x5ae9, 0x80fd, 0x59ae, 0x9713, + 0x502a, 0x6ce5, 0x5c3c, 0x62df, 0x4f60, 0x533f, 0x817b, 0x9006, + 0x6eba, 0x852b, 0x62c8, 0x5e74, 0x78be, 0x64b5, 0x637b, 0x5ff5, + 0x5a18, 0x917f, 0x9e1f, 0x5c3f, 0x634f, 0x8042, 0x5b7d, 0x556e, + 0x954a, 0x954d, 0x6d85, 0x60a8, 0x67e0, 0x72de, 0x51dd, 0x5b81, + 0x62e7, 0x6cde, 0x725b, 0x626d, 0x94ae, 0x7ebd, 0x8113, 0x6d53, + 0x519c, 0x5f04, 0x5974, 0x52aa, 0x6012, 0x5973, 0x6696, 0x8650, + 0x759f, 0x632a, 0x61e6, 0x7cef, 0x8bfa, 0x54e6, 0x6b27, 0x9e25, + 0x6bb4, 0x85d5, 0x5455, 0x5076, 0x6ca4, 0x556a, 0x8db4, 0x722c, + 0x5e15, 0x6015, 0x7436, 0x62cd, 0x6392, 0x724c, 0x5f98, 0x6e43, + 0x6d3e, 0x6500, 0x6f58, 0x76d8, 0x78d0, 0x76fc, 0x7554, 0x5224, + 0x53db, 0x4e53, 0x5e9e, 0x65c1, 0x802a, 0x80d6, 0x629b, 0x5486, + 0x5228, 0x70ae, 0x888d, 0x8dd1, 0x6ce1, 0x5478, 0x80da, 0x57f9, + 0x88f4, 0x8d54, 0x966a, 0x914d, 0x4f69, 0x6c9b, 0x55b7, 0x76c6, + 0x7830, 0x62a8, 0x70f9, 0x6f8e, 0x5f6d, 0x84ec, 0x68da, 0x787c, + 0x7bf7, 0x81a8, 0x670b, 0x9e4f, 0x6367, 0x78b0, 0x576f, 0x7812, + 0x9739, 0x6279, 0x62ab, 0x5288, 0x7435, 0x6bd7, 0x5564, 0x813e, + 0x75b2, 0x76ae, 0x5339, 0x75de, 0x50fb, 0x5c41, 0x8b6c, 0x7bc7, + 0x504f, 0x7247, 0x9a97, 0x98d8, 0x6f02, 0x74e2, 0x7968, 0x6487, + 0x77a5, 0x62fc, 0x9891, 0x8d2b, 0x54c1, 0x8058, 0x4e52, 0x576a, + 0x82f9, 0x840d, 0x5e73, 0x51ed, 0x74f6, 0x8bc4, 0x5c4f, 0x5761, + 0x6cfc, 0x9887, 0x5a46, 0x7834, 0x9b44, 0x8feb, 0x7c95, 0x5256, + 0x6251, 0x94fa, 0x4ec6, 0x8386, 0x8461, 0x83e9, 0x84b2, 0x57d4, + 0x6734, 0x5703, 0x666e, 0x6d66, 0x8c31, 0x66dd, 0x7011, 0x671f, + 0x6b3a, 0x6816, 0x621a, 0x59bb, 0x4e03, 0x51c4, 0x6f06, 0x67d2, + 0x6c8f, 0x5176, 0x68cb, 0x5947, 0x6b67, 0x7566, 0x5d0e, 0x8110, + 0x9f50, 0x65d7, 0x7948, 0x7941, 0x9a91, 0x8d77, 0x5c82, 0x4e5e, + 0x4f01, 0x542f, 0x5951, 0x780c, 0x5668, 0x6c14, 0x8fc4, 0x5f03, + 0x6c7d, 0x6ce3, 0x8bab, 0x6390, 0x6070, 0x6d3d, 0x7275, 0x6266, + 0x948e, 0x94c5, 0x5343, 0x8fc1, 0x7b7e, 0x4edf, 0x8c26, 0x4e7e, + 0x9ed4, 0x94b1, 0x94b3, 0x524d, 0x6f5c, 0x9063, 0x6d45, 0x8c34, + 0x5811, 0x5d4c, 0x6b20, 0x6b49, 0x67aa, 0x545b, 0x8154, 0x7f8c, + 0x5899, 0x8537, 0x5f3a, 0x62a2, 0x6a47, 0x9539, 0x6572, 0x6084, + 0x6865, 0x77a7, 0x4e54, 0x4fa8, 0x5de7, 0x9798, 0x64ac, 0x7fd8, + 0x5ced, 0x4fcf, 0x7a8d, 0x5207, 0x8304, 0x4e14, 0x602f, 0x7a83, + 0x94a6, 0x4fb5, 0x4eb2, 0x79e6, 0x7434, 0x52e4, 0x82b9, 0x64d2, + 0x79bd, 0x5bdd, 0x6c81, 0x9752, 0x8f7b, 0x6c22, 0x503e, 0x537f, + 0x6e05, 0x64ce, 0x6674, 0x6c30, 0x60c5, 0x9877, 0x8bf7, 0x5e86, + 0x743c, 0x7a77, 0x79cb, 0x4e18, 0x90b1, 0x7403, 0x6c42, 0x56da, + 0x914b, 0x6cc5, 0x8d8b, 0x533a, 0x86c6, 0x66f2, 0x8eaf, 0x5c48, + 0x9a71, 0x6e20, 0x53d6, 0x5a36, 0x9f8b, 0x8da3, 0x53bb, 0x5708, + 0x98a7, 0x6743, 0x919b, 0x6cc9, 0x5168, 0x75ca, 0x62f3, 0x72ac, + 0x5238, 0x529d, 0x7f3a, 0x7094, 0x7638, 0x5374, 0x9e4a, 0x69b7, + 0x786e, 0x96c0, 0x88d9, 0x7fa4, 0x7136, 0x71c3, 0x5189, 0x67d3, + 0x74e4, 0x58e4, 0x6518, 0x56b7, 0x8ba9, 0x9976, 0x6270, 0x7ed5, + 0x60f9, 0x70ed, 0x58ec, 0x4ec1, 0x4eba, 0x5fcd, 0x97e7, 0x4efb, + 0x8ba4, 0x5203, 0x598a, 0x7eab, 0x6254, 0x4ecd, 0x65e5, 0x620e, + 0x8338, 0x84c9, 0x8363, 0x878d, 0x7194, 0x6eb6, 0x5bb9, 0x7ed2, + 0x5197, 0x63c9, 0x67d4, 0x8089, 0x8339, 0x8815, 0x5112, 0x5b7a, + 0x5982, 0x8fb1, 0x4e73, 0x6c5d, 0x5165, 0x8925, 0x8f6f, 0x962e, + 0x854a, 0x745e, 0x9510, 0x95f0, 0x6da6, 0x82e5, 0x5f31, 0x6492, + 0x6d12, 0x8428, 0x816e, 0x9cc3, 0x585e, 0x8d5b, 0x4e09, 0x53c1, + 0x4f1e, 0x6563, 0x6851, 0x55d3, 0x4e27, 0x6414, 0x9a9a, 0x626b, + 0x5ac2, 0x745f, 0x8272, 0x6da9, 0x68ee, 0x50e7, 0x838e, 0x7802, + 0x6740, 0x5239, 0x6c99, 0x7eb1, 0x50bb, 0x5565, 0x715e, 0x7b5b, + 0x6652, 0x73ca, 0x82eb, 0x6749, 0x5c71, 0x5220, 0x717d, 0x886b, + 0x95ea, 0x9655, 0x64c5, 0x8d61, 0x81b3, 0x5584, 0x6c55, 0x6247, + 0x7f2e, 0x5892, 0x4f24, 0x5546, 0x8d4f, 0x664c, 0x4e0a, 0x5c1a, + 0x88f3, 0x68a2, 0x634e, 0x7a0d, 0x70e7, 0x828d, 0x52fa, 0x97f6, + 0x5c11, 0x54e8, 0x90b5, 0x7ecd, 0x5962, 0x8d4a, 0x86c7, 0x820c, + 0x820d, 0x8d66, 0x6444, 0x5c04, 0x6151, 0x6d89, 0x793e, 0x8bbe, + 0x7837, 0x7533, 0x547b, 0x4f38, 0x8eab, 0x6df1, 0x5a20, 0x7ec5, + 0x795e, 0x6c88, 0x5ba1, 0x5a76, 0x751a, 0x80be, 0x614e, 0x6e17, + 0x58f0, 0x751f, 0x7525, 0x7272, 0x5347, 0x7ef3, 0x7701, 0x76db, + 0x5269, 0x80dc, 0x5723, 0x5e08, 0x5931, 0x72ee, 0x65bd, 0x6e7f, + 0x8bd7, 0x5c38, 0x8671, 0x5341, 0x77f3, 0x62fe, 0x65f6, 0x4ec0, + 0x98df, 0x8680, 0x5b9e, 0x8bc6, 0x53f2, 0x77e2, 0x4f7f, 0x5c4e, + 0x9a76, 0x59cb, 0x5f0f, 0x793a, 0x58eb, 0x4e16, 0x67ff, 0x4e8b, + 0x62ed, 0x8a93, 0x901d, 0x52bf, 0x662f, 0x55dc, 0x566c, 0x9002, + 0x4ed5, 0x4f8d, 0x91ca, 0x9970, 0x6c0f, 0x5e02, 0x6043, 0x5ba4, + 0x89c6, 0x8bd5, 0x6536, 0x624b, 0x9996, 0x5b88, 0x5bff, 0x6388, + 0x552e, 0x53d7, 0x7626, 0x517d, 0x852c, 0x67a2, 0x68b3, 0x6b8a, + 0x6292, 0x8f93, 0x53d4, 0x8212, 0x6dd1, 0x758f, 0x4e66, 0x8d4e, + 0x5b70, 0x719f, 0x85af, 0x6691, 0x66d9, 0x7f72, 0x8700, 0x9ecd, + 0x9f20, 0x5c5e, 0x672f, 0x8ff0, 0x6811, 0x675f, 0x620d, 0x7ad6, + 0x5885, 0x5eb6, 0x6570, 0x6f31, 0x6055, 0x5237, 0x800d, 0x6454, + 0x8870, 0x7529, 0x5e05, 0x6813, 0x62f4, 0x971c, 0x53cc, 0x723d, + 0x8c01, 0x6c34, 0x7761, 0x7a0e, 0x542e, 0x77ac, 0x987a, 0x821c, + 0x8bf4, 0x7855, 0x6714, 0x70c1, 0x65af, 0x6495, 0x5636, 0x601d, + 0x79c1, 0x53f8, 0x4e1d, 0x6b7b, 0x8086, 0x5bfa, 0x55e3, 0x56db, + 0x4f3a, 0x4f3c, 0x9972, 0x5df3, 0x677e, 0x8038, 0x6002, 0x9882, + 0x9001, 0x5b8b, 0x8bbc, 0x8bf5, 0x641c, 0x8258, 0x64de, 0x55fd, + 0x82cf, 0x9165, 0x4fd7, 0x7d20, 0x901f, 0x7c9f, 0x50f3, 0x5851, + 0x6eaf, 0x5bbf, 0x8bc9, 0x8083, 0x9178, 0x849c, 0x7b97, 0x867d, + 0x968b, 0x968f, 0x7ee5, 0x9ad3, 0x788e, 0x5c81, 0x7a57, 0x9042, + 0x96a7, 0x795f, 0x5b59, 0x635f, 0x7b0b, 0x84d1, 0x68ad, 0x5506, + 0x7f29, 0x7410, 0x7d22, 0x9501, 0x6240, 0x584c, 0x4ed6, 0x5b83, + 0x5979, 0x5854, 0x736d, 0x631e, 0x8e4b, 0x8e0f, 0x80ce, 0x82d4, + 0x62ac, 0x53f0, 0x6cf0, 0x915e, 0x592a, 0x6001, 0x6c70, 0x574d, + 0x644a, 0x8d2a, 0x762b, 0x6ee9, 0x575b, 0x6a80, 0x75f0, 0x6f6d, + 0x8c2d, 0x8c08, 0x5766, 0x6bef, 0x8892, 0x78b3, 0x63a2, 0x53f9, + 0x70ad, 0x6c64, 0x5858, 0x642a, 0x5802, 0x68e0, 0x819b, 0x5510, + 0x7cd6, 0x5018, 0x8eba, 0x6dcc, 0x8d9f, 0x70eb, 0x638f, 0x6d9b, + 0x6ed4, 0x7ee6, 0x8404, 0x6843, 0x9003, 0x6dd8, 0x9676, 0x8ba8, + 0x5957, 0x7279, 0x85e4, 0x817e, 0x75bc, 0x8a8a, 0x68af, 0x5254, + 0x8e22, 0x9511, 0x63d0, 0x9898, 0x8e44, 0x557c, 0x4f53, 0x66ff, + 0x568f, 0x60d5, 0x6d95, 0x5243, 0x5c49, 0x5929, 0x6dfb, 0x586b, + 0x7530, 0x751c, 0x606c, 0x8214, 0x8146, 0x6311, 0x6761, 0x8fe2, + 0x773a, 0x8df3, 0x8d34, 0x94c1, 0x5e16, 0x5385, 0x542c, 0x70c3, + 0x6c40, 0x5ef7, 0x505c, 0x4ead, 0x5ead, 0x633a, 0x8247, 0x901a, + 0x6850, 0x916e, 0x77b3, 0x540c, 0x94dc, 0x5f64, 0x7ae5, 0x6876, + 0x6345, 0x7b52, 0x7edf, 0x75db, 0x5077, 0x6295, 0x5934, 0x900f, + 0x51f8, 0x79c3, 0x7a81, 0x56fe, 0x5f92, 0x9014, 0x6d82, 0x5c60, + 0x571f, 0x5410, 0x5154, 0x6e4d, 0x56e2, 0x63a8, 0x9893, 0x817f, + 0x8715, 0x892a, 0x9000, 0x541e, 0x5c6f, 0x81c0, 0x62d6, 0x6258, + 0x8131, 0x9e35, 0x9640, 0x9a6e, 0x9a7c, 0x692d, 0x59a5, 0x62d3, + 0x553e, 0x6316, 0x54c7, 0x86d9, 0x6d3c, 0x5a03, 0x74e6, 0x889c, + 0x6b6a, 0x5916, 0x8c4c, 0x5f2f, 0x6e7e, 0x73a9, 0x987d, 0x4e38, + 0x70f7, 0x5b8c, 0x7897, 0x633d, 0x665a, 0x7696, 0x60cb, 0x5b9b, + 0x5a49, 0x4e07, 0x8155, 0x6c6a, 0x738b, 0x4ea1, 0x6789, 0x7f51, + 0x5f80, 0x65fa, 0x671b, 0x5fd8, 0x5984, 0x5a01, 0x5dcd, 0x5fae, + 0x5371, 0x97e6, 0x8fdd, 0x6845, 0x56f4, 0x552f, 0x60df, 0x4e3a, + 0x6f4d, 0x7ef4, 0x82c7, 0x840e, 0x59d4, 0x4f1f, 0x4f2a, 0x5c3e, + 0x7eac, 0x672a, 0x851a, 0x5473, 0x754f, 0x80c3, 0x5582, 0x9b4f, + 0x4f4d, 0x6e2d, 0x8c13, 0x5c09, 0x6170, 0x536b, 0x761f, 0x6e29, + 0x868a, 0x6587, 0x95fb, 0x7eb9, 0x543b, 0x7a33, 0x7d0a, 0x95ee, + 0x55e1, 0x7fc1, 0x74ee, 0x631d, 0x8717, 0x6da1, 0x7a9d, 0x6211, + 0x65a1, 0x5367, 0x63e1, 0x6c83, 0x5deb, 0x545c, 0x94a8, 0x4e4c, + 0x6c61, 0x8bec, 0x5c4b, 0x65e0, 0x829c, 0x68a7, 0x543e, 0x5434, + 0x6bcb, 0x6b66, 0x4e94, 0x6342, 0x5348, 0x821e, 0x4f0d, 0x4fae, + 0x575e, 0x620a, 0x96fe, 0x6664, 0x7269, 0x52ff, 0x52a1, 0x609f, + 0x8bef, 0x6614, 0x7199, 0x6790, 0x897f, 0x7852, 0x77fd, 0x6670, + 0x563b, 0x5438, 0x9521, 0x727a, 0x7a00, 0x606f, 0x5e0c, 0x6089, + 0x819d, 0x5915, 0x60dc, 0x7184, 0x70ef, 0x6eaa, 0x6c50, 0x7280, + 0x6a84, 0x88ad, 0x5e2d, 0x4e60, 0x5ab3, 0x559c, 0x94e3, 0x6d17, + 0x7cfb, 0x9699, 0x620f, 0x7ec6, 0x778e, 0x867e, 0x5323, 0x971e, + 0x8f96, 0x6687, 0x5ce1, 0x4fa0, 0x72ed, 0x4e0b, 0x53a6, 0x590f, + 0x5413, 0x6380, 0x9528, 0x5148, 0x4ed9, 0x9c9c, 0x7ea4, 0x54b8, + 0x8d24, 0x8854, 0x8237, 0x95f2, 0x6d8e, 0x5f26, 0x5acc, 0x663e, + 0x9669, 0x73b0, 0x732e, 0x53bf, 0x817a, 0x9985, 0x7fa1, 0x5baa, + 0x9677, 0x9650, 0x7ebf, 0x76f8, 0x53a2, 0x9576, 0x9999, 0x7bb1, + 0x8944, 0x6e58, 0x4e61, 0x7fd4, 0x7965, 0x8be6, 0x60f3, 0x54cd, + 0x4eab, 0x9879, 0x5df7, 0x6a61, 0x50cf, 0x5411, 0x8c61, 0x8427, + 0x785d, 0x9704, 0x524a, 0x54ee, 0x56a3, 0x9500, 0x6d88, 0x5bb5, + 0x6dc6, 0x6653, 0x5c0f, 0x5b5d, 0x6821, 0x8096, 0x5578, 0x7b11, + 0x6548, 0x6954, 0x4e9b, 0x6b47, 0x874e, 0x978b, 0x534f, 0x631f, + 0x643a, 0x90aa, 0x659c, 0x80c1, 0x8c10, 0x5199, 0x68b0, 0x5378, + 0x87f9, 0x61c8, 0x6cc4, 0x6cfb, 0x8c22, 0x5c51, 0x85aa, 0x82af, + 0x950c, 0x6b23, 0x8f9b, 0x65b0, 0x5ffb, 0x5fc3, 0x4fe1, 0x8845, + 0x661f, 0x8165, 0x7329, 0x60fa, 0x5174, 0x5211, 0x578b, 0x5f62, + 0x90a2, 0x884c, 0x9192, 0x5e78, 0x674f, 0x6027, 0x59d3, 0x5144, + 0x51f6, 0x80f8, 0x5308, 0x6c79, 0x96c4, 0x718a, 0x4f11, 0x4fee, + 0x7f9e, 0x673d, 0x55c5, 0x9508, 0x79c0, 0x8896, 0x7ee3, 0x589f, + 0x620c, 0x9700, 0x865a, 0x5618, 0x987b, 0x5f90, 0x8bb8, 0x84c4, + 0x9157, 0x53d9, 0x65ed, 0x5e8f, 0x755c, 0x6064, 0x7d6e, 0x5a7f, + 0x7eea, 0x7eed, 0x8f69, 0x55a7, 0x5ba3, 0x60ac, 0x65cb, 0x7384, + 0x9009, 0x7663, 0x7729, 0x7eda, 0x9774, 0x859b, 0x5b66, 0x7a74, + 0x96ea, 0x8840, 0x52cb, 0x718f, 0x5faa, 0x65ec, 0x8be2, 0x5bfb, + 0x9a6f, 0x5de1, 0x6b89, 0x6c5b, 0x8bad, 0x8baf, 0x900a, 0x8fc5, + 0x538b, 0x62bc, 0x9e26, 0x9e2d, 0x5440, 0x4e2b, 0x82bd, 0x7259, + 0x869c, 0x5d16, 0x8859, 0x6daf, 0x96c5, 0x54d1, 0x4e9a, 0x8bb6, + 0x7109, 0x54bd, 0x9609, 0x70df, 0x6df9, 0x76d0, 0x4e25, 0x7814, + 0x8712, 0x5ca9, 0x5ef6, 0x8a00, 0x989c, 0x960e, 0x708e, 0x6cbf, + 0x5944, 0x63a9, 0x773c, 0x884d, 0x6f14, 0x8273, 0x5830, 0x71d5, + 0x538c, 0x781a, 0x96c1, 0x5501, 0x5f66, 0x7130, 0x5bb4, 0x8c1a, + 0x9a8c, 0x6b83, 0x592e, 0x9e2f, 0x79e7, 0x6768, 0x626c, 0x4f6f, + 0x75a1, 0x7f8a, 0x6d0b, 0x9633, 0x6c27, 0x4ef0, 0x75d2, 0x517b, + 0x6837, 0x6f3e, 0x9080, 0x8170, 0x5996, 0x7476, 0x6447, 0x5c27, + 0x9065, 0x7a91, 0x8c23, 0x59da, 0x54ac, 0x8200, 0x836f, 0x8981, + 0x8000, 0x6930, 0x564e, 0x8036, 0x7237, 0x91ce, 0x51b6, 0x4e5f, + 0x9875, 0x6396, 0x4e1a, 0x53f6, 0x66f3, 0x814b, 0x591c, 0x6db2, + 0x4e00, 0x58f9, 0x533b, 0x63d6, 0x94f1, 0x4f9d, 0x4f0a, 0x8863, + 0x9890, 0x5937, 0x9057, 0x79fb, 0x4eea, 0x80f0, 0x7591, 0x6c82, + 0x5b9c, 0x59e8, 0x5f5d, 0x6905, 0x8681, 0x501a, 0x5df2, 0x4e59, + 0x77e3, 0x4ee5, 0x827a, 0x6291, 0x6613, 0x9091, 0x5c79, 0x4ebf, + 0x5f79, 0x81c6, 0x9038, 0x8084, 0x75ab, 0x4ea6, 0x88d4, 0x610f, + 0x6bc5, 0x5fc6, 0x4e49, 0x76ca, 0x6ea2, 0x8be3, 0x8bae, 0x8c0a, + 0x8bd1, 0x5f02, 0x7ffc, 0x7fcc, 0x7ece, 0x8335, 0x836b, 0x56e0, + 0x6bb7, 0x97f3, 0x9634, 0x59fb, 0x541f, 0x94f6, 0x6deb, 0x5bc5, + 0x996e, 0x5c39, 0x5f15, 0x9690, 0x5370, 0x82f1, 0x6a31, 0x5a74, + 0x9e70, 0x5e94, 0x7f28, 0x83b9, 0x8424, 0x8425, 0x8367, 0x8747, + 0x8fce, 0x8d62, 0x76c8, 0x5f71, 0x9896, 0x786c, 0x6620, 0x54df, + 0x62e5, 0x4f63, 0x81c3, 0x75c8, 0x5eb8, 0x96cd, 0x8e0a, 0x86f9, + 0x548f, 0x6cf3, 0x6d8c, 0x6c38, 0x607f, 0x52c7, 0x7528, 0x5e7d, + 0x4f18, 0x60a0, 0x5fe7, 0x5c24, 0x7531, 0x90ae, 0x94c0, 0x72b9, + 0x6cb9, 0x6e38, 0x9149, 0x6709, 0x53cb, 0x53f3, 0x4f51, 0x91c9, + 0x8bf1, 0x53c8, 0x5e7c, 0x8fc2, 0x6de4, 0x4e8e, 0x76c2, 0x6986, + 0x865e, 0x611a, 0x8206, 0x4f59, 0x4fde, 0x903e, 0x9c7c, 0x6109, + 0x6e1d, 0x6e14, 0x9685, 0x4e88, 0x5a31, 0x96e8, 0x4e0e, 0x5c7f, + 0x79b9, 0x5b87, 0x8bed, 0x7fbd, 0x7389, 0x57df, 0x828b, 0x90c1, + 0x5401, 0x9047, 0x55bb, 0x5cea, 0x5fa1, 0x6108, 0x6b32, 0x72f1, + 0x80b2, 0x8a89, 0x6d74, 0x5bd3, 0x88d5, 0x9884, 0x8c6b, 0x9a6d, + 0x9e33, 0x6e0a, 0x51a4, 0x5143, 0x57a3, 0x8881, 0x539f, 0x63f4, + 0x8f95, 0x56ed, 0x5458, 0x5706, 0x733f, 0x6e90, 0x7f18, 0x8fdc, + 0x82d1, 0x613f, 0x6028, 0x9662, 0x66f0, 0x7ea6, 0x8d8a, 0x8dc3, + 0x94a5, 0x5cb3, 0x7ca4, 0x6708, 0x60a6, 0x9605, 0x8018, 0x4e91, + 0x90e7, 0x5300, 0x9668, 0x5141, 0x8fd0, 0x8574, 0x915d, 0x6655, + 0x97f5, 0x5b55, 0x531d, 0x7838, 0x6742, 0x683d, 0x54c9, 0x707e, + 0x5bb0, 0x8f7d, 0x518d, 0x5728, 0x54b1, 0x6512, 0x6682, 0x8d5e, + 0x8d43, 0x810f, 0x846c, 0x906d, 0x7cdf, 0x51ff, 0x85fb, 0x67a3, + 0x65e9, 0x6fa1, 0x86a4, 0x8e81, 0x566a, 0x9020, 0x7682, 0x7076, + 0x71e5, 0x8d23, 0x62e9, 0x5219, 0x6cfd, 0x8d3c, 0x600e, 0x589e, + 0x618e, 0x66fe, 0x8d60, 0x624e, 0x55b3, 0x6e23, 0x672d, 0x8f67, + 0x94e1, 0x95f8, 0x7728, 0x6805, 0x69a8, 0x548b, 0x4e4d, 0x70b8, + 0x8bc8, 0x6458, 0x658b, 0x5b85, 0x7a84, 0x503a, 0x5be8, 0x77bb, + 0x6be1, 0x8a79, 0x7c98, 0x6cbe, 0x76cf, 0x65a9, 0x8f97, 0x5d2d, + 0x5c55, 0x8638, 0x6808, 0x5360, 0x6218, 0x7ad9, 0x6e5b, 0x7efd, + 0x6a1f, 0x7ae0, 0x5f70, 0x6f33, 0x5f20, 0x638c, 0x6da8, 0x6756, + 0x4e08, 0x5e10, 0x8d26, 0x4ed7, 0x80c0, 0x7634, 0x969c, 0x62db, + 0x662d, 0x627e, 0x6cbc, 0x8d75, 0x7167, 0x7f69, 0x5146, 0x8087, + 0x53ec, 0x906e, 0x6298, 0x54f2, 0x86f0, 0x8f99, 0x8005, 0x9517, + 0x8517, 0x8fd9, 0x6d59, 0x73cd, 0x659f, 0x771f, 0x7504, 0x7827, + 0x81fb, 0x8d1e, 0x9488, 0x4fa6, 0x6795, 0x75b9, 0x8bca, 0x9707, + 0x632f, 0x9547, 0x9635, 0x84b8, 0x6323, 0x7741, 0x5f81, 0x72f0, + 0x4e89, 0x6014, 0x6574, 0x62ef, 0x6b63, 0x653f, 0x5e27, 0x75c7, + 0x90d1, 0x8bc1, 0x829d, 0x679d, 0x652f, 0x5431, 0x8718, 0x77e5, + 0x80a2, 0x8102, 0x6c41, 0x4e4b, 0x7ec7, 0x804c, 0x76f4, 0x690d, + 0x6b96, 0x6267, 0x503c, 0x4f84, 0x5740, 0x6307, 0x6b62, 0x8dbe, + 0x53ea, 0x65e8, 0x7eb8, 0x5fd7, 0x631a, 0x63b7, 0x81f3, 0x81f4, + 0x7f6e, 0x5e1c, 0x5cd9, 0x5236, 0x667a, 0x79e9, 0x7a1a, 0x8d28, + 0x7099, 0x75d4, 0x6ede, 0x6cbb, 0x7a92, 0x4e2d, 0x76c5, 0x5fe0, + 0x949f, 0x8877, 0x7ec8, 0x79cd, 0x80bf, 0x91cd, 0x4ef2, 0x4f17, + 0x821f, 0x5468, 0x5dde, 0x6d32, 0x8bcc, 0x7ca5, 0x8f74, 0x8098, + 0x5e1a, 0x5492, 0x76b1, 0x5b99, 0x663c, 0x9aa4, 0x73e0, 0x682a, + 0x86db, 0x6731, 0x732a, 0x8bf8, 0x8bdb, 0x9010, 0x7af9, 0x70db, + 0x716e, 0x62c4, 0x77a9, 0x5631, 0x4e3b, 0x8457, 0x67f1, 0x52a9, + 0x86c0, 0x8d2e, 0x94f8, 0x7b51, 0x4f4f, 0x6ce8, 0x795d, 0x9a7b, + 0x6293, 0x722a, 0x62fd, 0x4e13, 0x7816, 0x8f6c, 0x64b0, 0x8d5a, + 0x7bc6, 0x6869, 0x5e84, 0x88c5, 0x5986, 0x649e, 0x58ee, 0x72b6, + 0x690e, 0x9525, 0x8ffd, 0x8d58, 0x5760, 0x7f00, 0x8c06, 0x51c6, + 0x6349, 0x62d9, 0x5353, 0x684c, 0x7422, 0x8301, 0x914c, 0x5544, + 0x7740, 0x707c, 0x6d4a, 0x5179, 0x54a8, 0x8d44, 0x59ff, 0x6ecb, + 0x6dc4, 0x5b5c, 0x7d2b, 0x4ed4, 0x7c7d, 0x6ed3, 0x5b50, 0x81ea, + 0x6e0d, 0x5b57, 0x9b03, 0x68d5, 0x8e2a, 0x5b97, 0x7efc, 0x603b, + 0x7eb5, 0x90b9, 0x8d70, 0x594f, 0x63cd, 0x79df, 0x8db3, 0x5352, + 0x65cf, 0x7956, 0x8bc5, 0x963b, 0x7ec4, 0x94bb, 0x7e82, 0x5634, + 0x9189, 0x6700, 0x7f6a, 0x5c0a, 0x9075, 0x6628, 0x5de6, 0x4f50, + 0x67de, 0x505a, 0x4f5c, 0x5750, 0x5ea7, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x4e8d, 0x4e0c, 0x5140, 0x4e10, 0x5eff, 0x5345, + 0x4e15, 0x4e98, 0x4e1e, 0x9b32, 0x5b6c, 0x5669, 0x4e28, 0x79ba, + 0x4e3f, 0x5315, 0x4e47, 0x592d, 0x723b, 0x536e, 0x6c10, 0x56df, + 0x80e4, 0x9997, 0x6bd3, 0x777e, 0x9f17, 0x4e36, 0x4e9f, 0x9f10, + 0x4e5c, 0x4e69, 0x4e93, 0x8288, 0x5b5b, 0x556c, 0x560f, 0x4ec4, + 0x538d, 0x539d, 0x53a3, 0x53a5, 0x53ae, 0x9765, 0x8d5d, 0x531a, + 0x53f5, 0x5326, 0x532e, 0x533e, 0x8d5c, 0x5366, 0x5363, 0x5202, + 0x5208, 0x520e, 0x522d, 0x5233, 0x523f, 0x5240, 0x524c, 0x525e, + 0x5261, 0x525c, 0x84af, 0x527d, 0x5282, 0x5281, 0x5290, 0x5293, + 0x5182, 0x7f54, 0x4ebb, 0x4ec3, 0x4ec9, 0x4ec2, 0x4ee8, 0x4ee1, + 0x4eeb, 0x4ede, 0x4f1b, 0x4ef3, 0x4f22, 0x4f64, 0x4ef5, 0x4f25, + 0x4f27, 0x4f09, 0x4f2b, 0x4f5e, 0x4f67, 0x6538, 0x4f5a, 0x4f5d, + 0x4f5f, 0x4f57, 0x4f32, 0x4f3d, 0x4f76, 0x4f74, 0x4f91, 0x4f89, + 0x4f83, 0x4f8f, 0x4f7e, 0x4f7b, 0x4faa, 0x4f7c, 0x4fac, 0x4f94, + 0x4fe6, 0x4fe8, 0x4fea, 0x4fc5, 0x4fda, 0x4fe3, 0x4fdc, 0x4fd1, + 0x4fdf, 0x4ff8, 0x5029, 0x504c, 0x4ff3, 0x502c, 0x500f, 0x502e, + 0x502d, 0x4ffe, 0x501c, 0x500c, 0x5025, 0x5028, 0x507e, 0x5043, + 0x5055, 0x5048, 0x504e, 0x506c, 0x507b, 0x50a5, 0x50a7, 0x50a9, + 0x50ba, 0x50d6, 0x5106, 0x50ed, 0x50ec, 0x50e6, 0x50ee, 0x5107, + 0x510b, 0x4edd, 0x6c3d, 0x4f58, 0x4f65, 0x4fce, 0x9fa0, 0x6c46, + 0x7c74, 0x516e, 0x5dfd, 0x9ec9, 0x9998, 0x5181, 0x5914, 0x52f9, + 0x530d, 0x8a07, 0x5310, 0x51eb, 0x5919, 0x5155, 0x4ea0, 0x5156, + 0x4eb3, 0x886e, 0x88a4, 0x4eb5, 0x8114, 0x88d2, 0x7980, 0x5b34, + 0x8803, 0x7fb8, 0x51ab, 0x51b1, 0x51bd, 0x51bc, 0x51c7, 0x5196, + 0x51a2, 0x51a5, 0x8ba0, 0x8ba6, 0x8ba7, 0x8baa, 0x8bb4, 0x8bb5, + 0x8bb7, 0x8bc2, 0x8bc3, 0x8bcb, 0x8bcf, 0x8bce, 0x8bd2, 0x8bd3, + 0x8bd4, 0x8bd6, 0x8bd8, 0x8bd9, 0x8bdc, 0x8bdf, 0x8be0, 0x8be4, + 0x8be8, 0x8be9, 0x8bee, 0x8bf0, 0x8bf3, 0x8bf6, 0x8bf9, 0x8bfc, + 0x8bff, 0x8c00, 0x8c02, 0x8c04, 0x8c07, 0x8c0c, 0x8c0f, 0x8c11, + 0x8c12, 0x8c14, 0x8c15, 0x8c16, 0x8c19, 0x8c1b, 0x8c18, 0x8c1d, + 0x8c1f, 0x8c20, 0x8c21, 0x8c25, 0x8c27, 0x8c2a, 0x8c2b, 0x8c2e, + 0x8c2f, 0x8c32, 0x8c33, 0x8c35, 0x8c36, 0x5369, 0x537a, 0x961d, + 0x9622, 0x9621, 0x9631, 0x962a, 0x963d, 0x963c, 0x9642, 0x9649, + 0x9654, 0x965f, 0x9667, 0x966c, 0x9672, 0x9674, 0x9688, 0x968d, + 0x9697, 0x96b0, 0x9097, 0x909b, 0x909d, 0x9099, 0x90ac, 0x90a1, + 0x90b4, 0x90b3, 0x90b6, 0x90ba, 0x90b8, 0x90b0, 0x90cf, 0x90c5, + 0x90be, 0x90d0, 0x90c4, 0x90c7, 0x90d3, 0x90e6, 0x90e2, 0x90dc, + 0x90d7, 0x90db, 0x90eb, 0x90ef, 0x90fe, 0x9104, 0x9122, 0x911e, + 0x9123, 0x9131, 0x912f, 0x9139, 0x9143, 0x9146, 0x520d, 0x5942, + 0x52a2, 0x52ac, 0x52ad, 0x52be, 0x54ff, 0x52d0, 0x52d6, 0x52f0, + 0x53df, 0x71ee, 0x77cd, 0x5ef4, 0x51f5, 0x51fc, 0x9b2f, 0x53b6, + 0x5f01, 0x755a, 0x5def, 0x574c, 0x57a9, 0x57a1, 0x587e, 0x58bc, + 0x58c5, 0x58d1, 0x5729, 0x572c, 0x572a, 0x5733, 0x5739, 0x572e, + 0x572f, 0x575c, 0x573b, 0x5742, 0x5769, 0x5785, 0x576b, 0x5786, + 0x577c, 0x577b, 0x5768, 0x576d, 0x5776, 0x5773, 0x57ad, 0x57a4, + 0x578c, 0x57b2, 0x57cf, 0x57a7, 0x57b4, 0x5793, 0x57a0, 0x57d5, + 0x57d8, 0x57da, 0x57d9, 0x57d2, 0x57b8, 0x57f4, 0x57ef, 0x57f8, + 0x57e4, 0x57dd, 0x580b, 0x580d, 0x57fd, 0x57ed, 0x5800, 0x581e, + 0x5819, 0x5844, 0x5820, 0x5865, 0x586c, 0x5881, 0x5889, 0x589a, + 0x5880, 0x99a8, 0x9f19, 0x61ff, 0x8279, 0x827d, 0x827f, 0x828f, + 0x828a, 0x82a8, 0x8284, 0x828e, 0x8291, 0x8297, 0x8299, 0x82ab, + 0x82b8, 0x82be, 0x82b0, 0x82c8, 0x82ca, 0x82e3, 0x8298, 0x82b7, + 0x82ae, 0x82cb, 0x82cc, 0x82c1, 0x82a9, 0x82b4, 0x82a1, 0x82aa, + 0x829f, 0x82c4, 0x82ce, 0x82a4, 0x82e1, 0x8309, 0x82f7, 0x82e4, + 0x830f, 0x8307, 0x82dc, 0x82f4, 0x82d2, 0x82d8, 0x830c, 0x82fb, + 0x82d3, 0x8311, 0x831a, 0x8306, 0x8314, 0x8315, 0x82e0, 0x82d5, + 0x831c, 0x8351, 0x835b, 0x835c, 0x8308, 0x8392, 0x833c, 0x8334, + 0x8331, 0x839b, 0x835e, 0x832f, 0x834f, 0x8347, 0x8343, 0x835f, + 0x8340, 0x8317, 0x8360, 0x832d, 0x833a, 0x8333, 0x8366, 0x8365, + 0x8368, 0x831b, 0x8369, 0x836c, 0x836a, 0x836d, 0x836e, 0x83b0, + 0x8378, 0x83b3, 0x83b4, 0x83a0, 0x83aa, 0x8393, 0x839c, 0x8385, + 0x837c, 0x83b6, 0x83a9, 0x837d, 0x83b8, 0x837b, 0x8398, 0x839e, + 0x83a8, 0x83ba, 0x83bc, 0x83c1, 0x8401, 0x83e5, 0x83d8, 0x5807, + 0x8418, 0x840b, 0x83dd, 0x83fd, 0x83d6, 0x841c, 0x8438, 0x8411, + 0x8406, 0x83d4, 0x83df, 0x840f, 0x8403, 0x83f8, 0x83f9, 0x83ea, + 0x83c5, 0x83c0, 0x8426, 0x83f0, 0x83e1, 0x845c, 0x8451, 0x845a, + 0x8459, 0x8473, 0x8487, 0x8488, 0x847a, 0x8489, 0x8478, 0x843c, + 0x8446, 0x8469, 0x8476, 0x848c, 0x848e, 0x8431, 0x846d, 0x84c1, + 0x84cd, 0x84d0, 0x84e6, 0x84bd, 0x84d3, 0x84ca, 0x84bf, 0x84ba, + 0x84e0, 0x84a1, 0x84b9, 0x84b4, 0x8497, 0x84e5, 0x84e3, 0x850c, + 0x750d, 0x8538, 0x84f0, 0x8539, 0x851f, 0x853a, 0x8556, 0x853b, + 0x84ff, 0x84fc, 0x8559, 0x8548, 0x8568, 0x8564, 0x855e, 0x857a, + 0x77a2, 0x8543, 0x8572, 0x857b, 0x85a4, 0x85a8, 0x8587, 0x858f, + 0x8579, 0x85ae, 0x859c, 0x8585, 0x85b9, 0x85b7, 0x85b0, 0x85d3, + 0x85c1, 0x85dc, 0x85ff, 0x8627, 0x8605, 0x8629, 0x8616, 0x863c, + 0x5efe, 0x5f08, 0x593c, 0x5941, 0x8037, 0x5955, 0x595a, 0x5958, + 0x530f, 0x5c22, 0x5c25, 0x5c2c, 0x5c34, 0x624c, 0x626a, 0x629f, + 0x62bb, 0x62ca, 0x62da, 0x62d7, 0x62ee, 0x6322, 0x62f6, 0x6339, + 0x634b, 0x6343, 0x63ad, 0x63f6, 0x6371, 0x637a, 0x638e, 0x63b4, + 0x636d, 0x63ac, 0x638a, 0x6369, 0x63ae, 0x63bc, 0x63f2, 0x63f8, + 0x63e0, 0x63ff, 0x63c4, 0x63de, 0x63ce, 0x6452, 0x63c6, 0x63be, + 0x6445, 0x6441, 0x640b, 0x641b, 0x6420, 0x640c, 0x6426, 0x6421, + 0x645e, 0x6484, 0x646d, 0x6496, 0x647a, 0x64b7, 0x64b8, 0x6499, + 0x64ba, 0x64c0, 0x64d0, 0x64d7, 0x64e4, 0x64e2, 0x6509, 0x6525, + 0x652e, 0x5f0b, 0x5fd2, 0x7519, 0x5f11, 0x535f, 0x53f1, 0x53fd, + 0x53e9, 0x53e8, 0x53fb, 0x5412, 0x5416, 0x5406, 0x544b, 0x5452, + 0x5453, 0x5454, 0x5456, 0x5443, 0x5421, 0x5457, 0x5459, 0x5423, + 0x5432, 0x5482, 0x5494, 0x5477, 0x5471, 0x5464, 0x549a, 0x549b, + 0x5484, 0x5476, 0x5466, 0x549d, 0x54d0, 0x54ad, 0x54c2, 0x54b4, + 0x54d2, 0x54a7, 0x54a6, 0x54d3, 0x54d4, 0x5472, 0x54a3, 0x54d5, + 0x54bb, 0x54bf, 0x54cc, 0x54d9, 0x54da, 0x54dc, 0x54a9, 0x54aa, + 0x54a4, 0x54dd, 0x54cf, 0x54de, 0x551b, 0x54e7, 0x5520, 0x54fd, + 0x5514, 0x54f3, 0x5522, 0x5523, 0x550f, 0x5511, 0x5527, 0x552a, + 0x5567, 0x558f, 0x55b5, 0x5549, 0x556d, 0x5541, 0x5555, 0x553f, + 0x5550, 0x553c, 0x5537, 0x5556, 0x5575, 0x5576, 0x5577, 0x5533, + 0x5530, 0x555c, 0x558b, 0x55d2, 0x5583, 0x55b1, 0x55b9, 0x5588, + 0x5581, 0x559f, 0x557e, 0x55d6, 0x5591, 0x557b, 0x55df, 0x55bd, + 0x55be, 0x5594, 0x5599, 0x55ea, 0x55f7, 0x55c9, 0x561f, 0x55d1, + 0x55eb, 0x55ec, 0x55d4, 0x55e6, 0x55dd, 0x55c4, 0x55ef, 0x55e5, + 0x55f2, 0x55f3, 0x55cc, 0x55cd, 0x55e8, 0x55f5, 0x55e4, 0x8f94, + 0x561e, 0x5608, 0x560c, 0x5601, 0x5624, 0x5623, 0x55fe, 0x5600, + 0x5627, 0x562d, 0x5658, 0x5639, 0x5657, 0x562c, 0x564d, 0x5662, + 0x5659, 0x565c, 0x564c, 0x5654, 0x5686, 0x5664, 0x5671, 0x566b, + 0x567b, 0x567c, 0x5685, 0x5693, 0x56af, 0x56d4, 0x56d7, 0x56dd, + 0x56e1, 0x56f5, 0x56eb, 0x56f9, 0x56ff, 0x5704, 0x570a, 0x5709, + 0x571c, 0x5e0f, 0x5e19, 0x5e14, 0x5e11, 0x5e31, 0x5e3b, 0x5e3c, + 0x5e37, 0x5e44, 0x5e54, 0x5e5b, 0x5e5e, 0x5e61, 0x5c8c, 0x5c7a, + 0x5c8d, 0x5c90, 0x5c96, 0x5c88, 0x5c98, 0x5c99, 0x5c91, 0x5c9a, + 0x5c9c, 0x5cb5, 0x5ca2, 0x5cbd, 0x5cac, 0x5cab, 0x5cb1, 0x5ca3, + 0x5cc1, 0x5cb7, 0x5cc4, 0x5cd2, 0x5ce4, 0x5ccb, 0x5ce5, 0x5d02, + 0x5d03, 0x5d27, 0x5d26, 0x5d2e, 0x5d24, 0x5d1e, 0x5d06, 0x5d1b, + 0x5d58, 0x5d3e, 0x5d34, 0x5d3d, 0x5d6c, 0x5d5b, 0x5d6f, 0x5d5d, + 0x5d6b, 0x5d4b, 0x5d4a, 0x5d69, 0x5d74, 0x5d82, 0x5d99, 0x5d9d, + 0x8c73, 0x5db7, 0x5dc5, 0x5f73, 0x5f77, 0x5f82, 0x5f87, 0x5f89, + 0x5f8c, 0x5f95, 0x5f99, 0x5f9c, 0x5fa8, 0x5fad, 0x5fb5, 0x5fbc, + 0x8862, 0x5f61, 0x72ad, 0x72b0, 0x72b4, 0x72b7, 0x72b8, 0x72c3, + 0x72c1, 0x72ce, 0x72cd, 0x72d2, 0x72e8, 0x72ef, 0x72e9, 0x72f2, + 0x72f4, 0x72f7, 0x7301, 0x72f3, 0x7303, 0x72fa, 0x72fb, 0x7317, + 0x7313, 0x7321, 0x730a, 0x731e, 0x731d, 0x7315, 0x7322, 0x7339, + 0x7325, 0x732c, 0x7338, 0x7331, 0x7350, 0x734d, 0x7357, 0x7360, + 0x736c, 0x736f, 0x737e, 0x821b, 0x5925, 0x98e7, 0x5924, 0x5902, + 0x9963, 0x9967, 0x9968, 0x9969, 0x996a, 0x996b, 0x996c, 0x9974, + 0x9977, 0x997d, 0x9980, 0x9984, 0x9987, 0x998a, 0x998d, 0x9990, + 0x9991, 0x9993, 0x9994, 0x9995, 0x5e80, 0x5e91, 0x5e8b, 0x5e96, + 0x5ea5, 0x5ea0, 0x5eb9, 0x5eb5, 0x5ebe, 0x5eb3, 0x8d53, 0x5ed2, + 0x5ed1, 0x5edb, 0x5ee8, 0x5eea, 0x81ba, 0x5fc4, 0x5fc9, 0x5fd6, + 0x5fcf, 0x6003, 0x5fee, 0x6004, 0x5fe1, 0x5fe4, 0x5ffe, 0x6005, + 0x6006, 0x5fea, 0x5fed, 0x5ff8, 0x6019, 0x6035, 0x6026, 0x601b, + 0x600f, 0x600d, 0x6029, 0x602b, 0x600a, 0x603f, 0x6021, 0x6078, + 0x6079, 0x607b, 0x607a, 0x6042, 0x606a, 0x607d, 0x6096, 0x609a, + 0x60ad, 0x609d, 0x6083, 0x6092, 0x608c, 0x609b, 0x60ec, 0x60bb, + 0x60b1, 0x60dd, 0x60d8, 0x60c6, 0x60da, 0x60b4, 0x6120, 0x6126, + 0x6115, 0x6123, 0x60f4, 0x6100, 0x610e, 0x612b, 0x614a, 0x6175, + 0x61ac, 0x6194, 0x61a7, 0x61b7, 0x61d4, 0x61f5, 0x5fdd, 0x96b3, + 0x95e9, 0x95eb, 0x95f1, 0x95f3, 0x95f5, 0x95f6, 0x95fc, 0x95fe, + 0x9603, 0x9604, 0x9606, 0x9608, 0x960a, 0x960b, 0x960c, 0x960d, + 0x960f, 0x9612, 0x9615, 0x9616, 0x9617, 0x9619, 0x961a, 0x4e2c, + 0x723f, 0x6215, 0x6c35, 0x6c54, 0x6c5c, 0x6c4a, 0x6ca3, 0x6c85, + 0x6c90, 0x6c94, 0x6c8c, 0x6c68, 0x6c69, 0x6c74, 0x6c76, 0x6c86, + 0x6ca9, 0x6cd0, 0x6cd4, 0x6cad, 0x6cf7, 0x6cf8, 0x6cf1, 0x6cd7, + 0x6cb2, 0x6ce0, 0x6cd6, 0x6cfa, 0x6ceb, 0x6cee, 0x6cb1, 0x6cd3, + 0x6cef, 0x6cfe, 0x6d39, 0x6d27, 0x6d0c, 0x6d43, 0x6d48, 0x6d07, + 0x6d04, 0x6d19, 0x6d0e, 0x6d2b, 0x6d4d, 0x6d2e, 0x6d35, 0x6d1a, + 0x6d4f, 0x6d52, 0x6d54, 0x6d33, 0x6d91, 0x6d6f, 0x6d9e, 0x6da0, + 0x6d5e, 0x6d93, 0x6d94, 0x6d5c, 0x6d60, 0x6d7c, 0x6d63, 0x6e1a, + 0x6dc7, 0x6dc5, 0x6dde, 0x6e0e, 0x6dbf, 0x6de0, 0x6e11, 0x6de6, + 0x6ddd, 0x6dd9, 0x6e16, 0x6dab, 0x6e0c, 0x6dae, 0x6e2b, 0x6e6e, + 0x6e4e, 0x6e6b, 0x6eb2, 0x6e5f, 0x6e86, 0x6e53, 0x6e54, 0x6e32, + 0x6e25, 0x6e44, 0x6edf, 0x6eb1, 0x6e98, 0x6ee0, 0x6f2d, 0x6ee2, + 0x6ea5, 0x6ea7, 0x6ebd, 0x6ebb, 0x6eb7, 0x6ed7, 0x6eb4, 0x6ecf, + 0x6e8f, 0x6ec2, 0x6e9f, 0x6f62, 0x6f46, 0x6f47, 0x6f24, 0x6f15, + 0x6ef9, 0x6f2f, 0x6f36, 0x6f4b, 0x6f74, 0x6f2a, 0x6f09, 0x6f29, + 0x6f89, 0x6f8d, 0x6f8c, 0x6f78, 0x6f72, 0x6f7c, 0x6f7a, 0x6fd1, + 0x6fc9, 0x6fa7, 0x6fb9, 0x6fb6, 0x6fc2, 0x6fe1, 0x6fee, 0x6fde, + 0x6fe0, 0x6fef, 0x701a, 0x7023, 0x701b, 0x7039, 0x7035, 0x704f, + 0x705e, 0x5b80, 0x5b84, 0x5b95, 0x5b93, 0x5ba5, 0x5bb8, 0x752f, + 0x9a9e, 0x6434, 0x5be4, 0x5bee, 0x8930, 0x5bf0, 0x8e47, 0x8b07, + 0x8fb6, 0x8fd3, 0x8fd5, 0x8fe5, 0x8fee, 0x8fe4, 0x8fe9, 0x8fe6, + 0x8ff3, 0x8fe8, 0x9005, 0x9004, 0x900b, 0x9026, 0x9011, 0x900d, + 0x9016, 0x9021, 0x9035, 0x9036, 0x902d, 0x902f, 0x9044, 0x9051, + 0x9052, 0x9050, 0x9068, 0x9058, 0x9062, 0x905b, 0x66b9, 0x9074, + 0x907d, 0x9082, 0x9088, 0x9083, 0x908b, 0x5f50, 0x5f57, 0x5f56, + 0x5f58, 0x5c3b, 0x54ab, 0x5c50, 0x5c59, 0x5b71, 0x5c63, 0x5c66, + 0x7fbc, 0x5f2a, 0x5f29, 0x5f2d, 0x8274, 0x5f3c, 0x9b3b, 0x5c6e, + 0x5981, 0x5983, 0x598d, 0x59a9, 0x59aa, 0x59a3, 0x5997, 0x59ca, + 0x59ab, 0x599e, 0x59a4, 0x59d2, 0x59b2, 0x59af, 0x59d7, 0x59be, + 0x5a05, 0x5a06, 0x59dd, 0x5a08, 0x59e3, 0x59d8, 0x59f9, 0x5a0c, + 0x5a09, 0x5a32, 0x5a34, 0x5a11, 0x5a23, 0x5a13, 0x5a40, 0x5a67, + 0x5a4a, 0x5a55, 0x5a3c, 0x5a62, 0x5a75, 0x80ec, 0x5aaa, 0x5a9b, + 0x5a77, 0x5a7a, 0x5abe, 0x5aeb, 0x5ab2, 0x5ad2, 0x5ad4, 0x5ab8, + 0x5ae0, 0x5ae3, 0x5af1, 0x5ad6, 0x5ae6, 0x5ad8, 0x5adc, 0x5b09, + 0x5b17, 0x5b16, 0x5b32, 0x5b37, 0x5b40, 0x5c15, 0x5c1c, 0x5b5a, + 0x5b65, 0x5b73, 0x5b51, 0x5b53, 0x5b62, 0x9a75, 0x9a77, 0x9a78, + 0x9a7a, 0x9a7f, 0x9a7d, 0x9a80, 0x9a81, 0x9a85, 0x9a88, 0x9a8a, + 0x9a90, 0x9a92, 0x9a93, 0x9a96, 0x9a98, 0x9a9b, 0x9a9c, 0x9a9d, + 0x9a9f, 0x9aa0, 0x9aa2, 0x9aa3, 0x9aa5, 0x9aa7, 0x7e9f, 0x7ea1, + 0x7ea3, 0x7ea5, 0x7ea8, 0x7ea9, 0x7ead, 0x7eb0, 0x7ebe, 0x7ec0, + 0x7ec1, 0x7ec2, 0x7ec9, 0x7ecb, 0x7ecc, 0x7ed0, 0x7ed4, 0x7ed7, + 0x7edb, 0x7ee0, 0x7ee1, 0x7ee8, 0x7eeb, 0x7eee, 0x7eef, 0x7ef1, + 0x7ef2, 0x7f0d, 0x7ef6, 0x7efa, 0x7efb, 0x7efe, 0x7f01, 0x7f02, + 0x7f03, 0x7f07, 0x7f08, 0x7f0b, 0x7f0c, 0x7f0f, 0x7f11, 0x7f12, + 0x7f17, 0x7f19, 0x7f1c, 0x7f1b, 0x7f1f, 0x7f21, 0x7f22, 0x7f23, + 0x7f24, 0x7f25, 0x7f26, 0x7f27, 0x7f2a, 0x7f2b, 0x7f2c, 0x7f2d, + 0x7f2f, 0x7f30, 0x7f31, 0x7f32, 0x7f33, 0x7f35, 0x5e7a, 0x757f, + 0x5ddb, 0x753e, 0x9095, 0x738e, 0x7391, 0x73ae, 0x73a2, 0x739f, + 0x73cf, 0x73c2, 0x73d1, 0x73b7, 0x73b3, 0x73c0, 0x73c9, 0x73c8, + 0x73e5, 0x73d9, 0x987c, 0x740a, 0x73e9, 0x73e7, 0x73de, 0x73ba, + 0x73f2, 0x740f, 0x742a, 0x745b, 0x7426, 0x7425, 0x7428, 0x7430, + 0x742e, 0x742c, 0x741b, 0x741a, 0x7441, 0x745c, 0x7457, 0x7455, + 0x7459, 0x7477, 0x746d, 0x747e, 0x749c, 0x748e, 0x7480, 0x7481, + 0x7487, 0x748b, 0x749e, 0x74a8, 0x74a9, 0x7490, 0x74a7, 0x74d2, + 0x74ba, 0x97ea, 0x97eb, 0x97ec, 0x674c, 0x6753, 0x675e, 0x6748, + 0x6769, 0x67a5, 0x6787, 0x676a, 0x6773, 0x6798, 0x67a7, 0x6775, + 0x67a8, 0x679e, 0x67ad, 0x678b, 0x6777, 0x677c, 0x67f0, 0x6809, + 0x67d8, 0x680a, 0x67e9, 0x67b0, 0x680c, 0x67d9, 0x67b5, 0x67da, + 0x67b3, 0x67dd, 0x6800, 0x67c3, 0x67b8, 0x67e2, 0x680e, 0x67c1, + 0x67fd, 0x6832, 0x6833, 0x6860, 0x6861, 0x684e, 0x6862, 0x6844, + 0x6864, 0x6883, 0x681d, 0x6855, 0x6866, 0x6841, 0x6867, 0x6840, + 0x683e, 0x684a, 0x6849, 0x6829, 0x68b5, 0x688f, 0x6874, 0x6877, + 0x6893, 0x686b, 0x68c2, 0x696e, 0x68fc, 0x691f, 0x6920, 0x68f9, + 0x6924, 0x68f0, 0x690b, 0x6901, 0x6957, 0x68e3, 0x6910, 0x6971, + 0x6939, 0x6960, 0x6942, 0x695d, 0x6984, 0x696b, 0x6980, 0x6998, + 0x6978, 0x6934, 0x69cc, 0x6987, 0x6988, 0x69ce, 0x6989, 0x6966, + 0x6963, 0x6979, 0x699b, 0x69a7, 0x69bb, 0x69ab, 0x69ad, 0x69d4, + 0x69b1, 0x69c1, 0x69ca, 0x69df, 0x6995, 0x69e0, 0x698d, 0x69ff, + 0x6a2f, 0x69ed, 0x6a17, 0x6a18, 0x6a65, 0x69f2, 0x6a44, 0x6a3e, + 0x6aa0, 0x6a50, 0x6a5b, 0x6a35, 0x6a8e, 0x6a79, 0x6a3d, 0x6a28, + 0x6a58, 0x6a7c, 0x6a91, 0x6a90, 0x6aa9, 0x6a97, 0x6aab, 0x7337, + 0x7352, 0x6b81, 0x6b82, 0x6b87, 0x6b84, 0x6b92, 0x6b93, 0x6b8d, + 0x6b9a, 0x6b9b, 0x6ba1, 0x6baa, 0x8f6b, 0x8f6d, 0x8f71, 0x8f72, + 0x8f73, 0x8f75, 0x8f76, 0x8f78, 0x8f77, 0x8f79, 0x8f7a, 0x8f7c, + 0x8f7e, 0x8f81, 0x8f82, 0x8f84, 0x8f87, 0x8f8b, 0x8f8d, 0x8f8e, + 0x8f8f, 0x8f98, 0x8f9a, 0x8ece, 0x620b, 0x6217, 0x621b, 0x621f, + 0x6222, 0x6221, 0x6225, 0x6224, 0x622c, 0x81e7, 0x74ef, 0x74f4, + 0x74ff, 0x750f, 0x7511, 0x7513, 0x6534, 0x65ee, 0x65ef, 0x65f0, + 0x660a, 0x6619, 0x6772, 0x6603, 0x6615, 0x6600, 0x7085, 0x66f7, + 0x661d, 0x6634, 0x6631, 0x6636, 0x6635, 0x8006, 0x665f, 0x6654, + 0x6641, 0x664f, 0x6656, 0x6661, 0x6657, 0x6677, 0x6684, 0x668c, + 0x66a7, 0x669d, 0x66be, 0x66db, 0x66dc, 0x66e6, 0x66e9, 0x8d32, + 0x8d33, 0x8d36, 0x8d3b, 0x8d3d, 0x8d40, 0x8d45, 0x8d46, 0x8d48, + 0x8d49, 0x8d47, 0x8d4d, 0x8d55, 0x8d59, 0x89c7, 0x89ca, 0x89cb, + 0x89cc, 0x89ce, 0x89cf, 0x89d0, 0x89d1, 0x726e, 0x729f, 0x725d, + 0x7266, 0x726f, 0x727e, 0x727f, 0x7284, 0x728b, 0x728d, 0x728f, + 0x7292, 0x6308, 0x6332, 0x63b0, 0x643f, 0x64d8, 0x8004, 0x6bea, + 0x6bf3, 0x6bfd, 0x6bf5, 0x6bf9, 0x6c05, 0x6c07, 0x6c06, 0x6c0d, + 0x6c15, 0x6c18, 0x6c19, 0x6c1a, 0x6c21, 0x6c29, 0x6c24, 0x6c2a, + 0x6c32, 0x6535, 0x6555, 0x656b, 0x724d, 0x7252, 0x7256, 0x7230, + 0x8662, 0x5216, 0x809f, 0x809c, 0x8093, 0x80bc, 0x670a, 0x80bd, + 0x80b1, 0x80ab, 0x80ad, 0x80b4, 0x80b7, 0x80e7, 0x80e8, 0x80e9, + 0x80ea, 0x80db, 0x80c2, 0x80c4, 0x80d9, 0x80cd, 0x80d7, 0x6710, + 0x80dd, 0x80eb, 0x80f1, 0x80f4, 0x80ed, 0x810d, 0x810e, 0x80f2, + 0x80fc, 0x6715, 0x8112, 0x8c5a, 0x8136, 0x811e, 0x812c, 0x8118, + 0x8132, 0x8148, 0x814c, 0x8153, 0x8174, 0x8159, 0x815a, 0x8171, + 0x8160, 0x8169, 0x817c, 0x817d, 0x816d, 0x8167, 0x584d, 0x5ab5, + 0x8188, 0x8182, 0x8191, 0x6ed5, 0x81a3, 0x81aa, 0x81cc, 0x6726, + 0x81ca, 0x81bb, 0x81c1, 0x81a6, 0x6b24, 0x6b37, 0x6b39, 0x6b43, + 0x6b46, 0x6b59, 0x98d1, 0x98d2, 0x98d3, 0x98d5, 0x98d9, 0x98da, + 0x6bb3, 0x5f40, 0x6bc2, 0x89f3, 0x6590, 0x9f51, 0x6593, 0x65bc, + 0x65c6, 0x65c4, 0x65c3, 0x65cc, 0x65ce, 0x65d2, 0x65d6, 0x7080, + 0x709c, 0x7096, 0x709d, 0x70bb, 0x70c0, 0x70b7, 0x70ab, 0x70b1, + 0x70e8, 0x70ca, 0x7110, 0x7113, 0x7116, 0x712f, 0x7131, 0x7173, + 0x715c, 0x7168, 0x7145, 0x7172, 0x714a, 0x7178, 0x717a, 0x7198, + 0x71b3, 0x71b5, 0x71a8, 0x71a0, 0x71e0, 0x71d4, 0x71e7, 0x71f9, + 0x721d, 0x7228, 0x706c, 0x7118, 0x7166, 0x71b9, 0x623e, 0x623d, + 0x6243, 0x6248, 0x6249, 0x793b, 0x7940, 0x7946, 0x7949, 0x795b, + 0x795c, 0x7953, 0x795a, 0x7962, 0x7957, 0x7960, 0x796f, 0x7967, + 0x797a, 0x7985, 0x798a, 0x799a, 0x79a7, 0x79b3, 0x5fd1, 0x5fd0, + 0x603c, 0x605d, 0x605a, 0x6067, 0x6041, 0x6059, 0x6063, 0x60ab, + 0x6106, 0x610d, 0x615d, 0x61a9, 0x619d, 0x61cb, 0x61d1, 0x6206, + 0x8080, 0x807f, 0x6c93, 0x6cf6, 0x6dfc, 0x77f6, 0x77f8, 0x7800, + 0x7809, 0x7817, 0x7818, 0x7811, 0x65ab, 0x782d, 0x781c, 0x781d, + 0x7839, 0x783a, 0x783b, 0x781f, 0x783c, 0x7825, 0x782c, 0x7823, + 0x7829, 0x784e, 0x786d, 0x7856, 0x7857, 0x7826, 0x7850, 0x7847, + 0x784c, 0x786a, 0x789b, 0x7893, 0x789a, 0x7887, 0x789c, 0x78a1, + 0x78a3, 0x78b2, 0x78b9, 0x78a5, 0x78d4, 0x78d9, 0x78c9, 0x78ec, + 0x78f2, 0x7905, 0x78f4, 0x7913, 0x7924, 0x791e, 0x7934, 0x9f9b, + 0x9ef9, 0x9efb, 0x9efc, 0x76f1, 0x7704, 0x770d, 0x76f9, 0x7707, + 0x7708, 0x771a, 0x7722, 0x7719, 0x772d, 0x7726, 0x7735, 0x7738, + 0x7750, 0x7751, 0x7747, 0x7743, 0x775a, 0x7768, 0x7762, 0x7765, + 0x777f, 0x778d, 0x777d, 0x7780, 0x778c, 0x7791, 0x779f, 0x77a0, + 0x77b0, 0x77b5, 0x77bd, 0x753a, 0x7540, 0x754e, 0x754b, 0x7548, + 0x755b, 0x7572, 0x7579, 0x7583, 0x7f58, 0x7f61, 0x7f5f, 0x8a48, + 0x7f68, 0x7f74, 0x7f71, 0x7f79, 0x7f81, 0x7f7e, 0x76cd, 0x76e5, + 0x8832, 0x9485, 0x9486, 0x9487, 0x948b, 0x948a, 0x948c, 0x948d, + 0x948f, 0x9490, 0x9494, 0x9497, 0x9495, 0x949a, 0x949b, 0x949c, + 0x94a3, 0x94a4, 0x94ab, 0x94aa, 0x94ad, 0x94ac, 0x94af, 0x94b0, + 0x94b2, 0x94b4, 0x94b6, 0x94b7, 0x94b8, 0x94b9, 0x94ba, 0x94bc, + 0x94bd, 0x94bf, 0x94c4, 0x94c8, 0x94c9, 0x94ca, 0x94cb, 0x94cc, + 0x94cd, 0x94ce, 0x94d0, 0x94d1, 0x94d2, 0x94d5, 0x94d6, 0x94d7, + 0x94d9, 0x94d8, 0x94db, 0x94de, 0x94df, 0x94e0, 0x94e2, 0x94e4, + 0x94e5, 0x94e7, 0x94e8, 0x94ea, 0x94e9, 0x94eb, 0x94ee, 0x94ef, + 0x94f3, 0x94f4, 0x94f5, 0x94f7, 0x94f9, 0x94fc, 0x94fd, 0x94ff, + 0x9503, 0x9502, 0x9506, 0x9507, 0x9509, 0x950a, 0x950d, 0x950e, + 0x950f, 0x9512, 0x9513, 0x9514, 0x9515, 0x9516, 0x9518, 0x951b, + 0x951d, 0x951e, 0x951f, 0x9522, 0x952a, 0x952b, 0x9529, 0x952c, + 0x9531, 0x9532, 0x9534, 0x9536, 0x9537, 0x9538, 0x953c, 0x953e, + 0x953f, 0x9542, 0x9535, 0x9544, 0x9545, 0x9546, 0x9549, 0x954c, + 0x954e, 0x954f, 0x9552, 0x9553, 0x9554, 0x9556, 0x9557, 0x9558, + 0x9559, 0x955b, 0x955e, 0x955f, 0x955d, 0x9561, 0x9562, 0x9564, + 0x9565, 0x9566, 0x9567, 0x9568, 0x9569, 0x956a, 0x956b, 0x956c, + 0x956f, 0x9571, 0x9572, 0x9573, 0x953a, 0x77e7, 0x77ec, 0x96c9, + 0x79d5, 0x79ed, 0x79e3, 0x79eb, 0x7a06, 0x5d47, 0x7a03, 0x7a02, + 0x7a1e, 0x7a14, 0x7a39, 0x7a37, 0x7a51, 0x9ecf, 0x99a5, 0x7a70, + 0x7688, 0x768e, 0x7693, 0x7699, 0x76a4, 0x74de, 0x74e0, 0x752c, + 0x9e20, 0x9e22, 0x9e28, 0x9e29, 0x9e2a, 0x9e2b, 0x9e2c, 0x9e32, + 0x9e31, 0x9e36, 0x9e38, 0x9e37, 0x9e39, 0x9e3a, 0x9e3e, 0x9e41, + 0x9e42, 0x9e44, 0x9e46, 0x9e47, 0x9e48, 0x9e49, 0x9e4b, 0x9e4c, + 0x9e4e, 0x9e51, 0x9e55, 0x9e57, 0x9e5a, 0x9e5b, 0x9e5c, 0x9e5e, + 0x9e63, 0x9e66, 0x9e67, 0x9e68, 0x9e69, 0x9e6a, 0x9e6b, 0x9e6c, + 0x9e71, 0x9e6d, 0x9e73, 0x7592, 0x7594, 0x7596, 0x75a0, 0x759d, + 0x75ac, 0x75a3, 0x75b3, 0x75b4, 0x75b8, 0x75c4, 0x75b1, 0x75b0, + 0x75c3, 0x75c2, 0x75d6, 0x75cd, 0x75e3, 0x75e8, 0x75e6, 0x75e4, + 0x75eb, 0x75e7, 0x7603, 0x75f1, 0x75fc, 0x75ff, 0x7610, 0x7600, + 0x7605, 0x760c, 0x7617, 0x760a, 0x7625, 0x7618, 0x7615, 0x7619, + 0x761b, 0x763c, 0x7622, 0x7620, 0x7640, 0x762d, 0x7630, 0x763f, + 0x7635, 0x7643, 0x763e, 0x7633, 0x764d, 0x765e, 0x7654, 0x765c, + 0x7656, 0x766b, 0x766f, 0x7fca, 0x7ae6, 0x7a78, 0x7a79, 0x7a80, + 0x7a86, 0x7a88, 0x7a95, 0x7aa6, 0x7aa0, 0x7aac, 0x7aa8, 0x7aad, + 0x7ab3, 0x8864, 0x8869, 0x8872, 0x887d, 0x887f, 0x8882, 0x88a2, + 0x88c6, 0x88b7, 0x88bc, 0x88c9, 0x88e2, 0x88ce, 0x88e3, 0x88e5, + 0x88f1, 0x891a, 0x88fc, 0x88e8, 0x88fe, 0x88f0, 0x8921, 0x8919, + 0x8913, 0x891b, 0x890a, 0x8934, 0x892b, 0x8936, 0x8941, 0x8966, + 0x897b, 0x758b, 0x80e5, 0x76b2, 0x76b4, 0x77dc, 0x8012, 0x8014, + 0x8016, 0x801c, 0x8020, 0x8022, 0x8025, 0x8026, 0x8027, 0x8029, + 0x8028, 0x8031, 0x800b, 0x8035, 0x8043, 0x8046, 0x804d, 0x8052, + 0x8069, 0x8071, 0x8983, 0x9878, 0x9880, 0x9883, 0x9889, 0x988c, + 0x988d, 0x988f, 0x9894, 0x989a, 0x989b, 0x989e, 0x989f, 0x98a1, + 0x98a2, 0x98a5, 0x98a6, 0x864d, 0x8654, 0x866c, 0x866e, 0x867f, + 0x867a, 0x867c, 0x867b, 0x86a8, 0x868d, 0x868b, 0x86ac, 0x869d, + 0x86a7, 0x86a3, 0x86aa, 0x8693, 0x86a9, 0x86b6, 0x86c4, 0x86b5, + 0x86ce, 0x86b0, 0x86ba, 0x86b1, 0x86af, 0x86c9, 0x86cf, 0x86b4, + 0x86e9, 0x86f1, 0x86f2, 0x86ed, 0x86f3, 0x86d0, 0x8713, 0x86de, + 0x86f4, 0x86df, 0x86d8, 0x86d1, 0x8703, 0x8707, 0x86f8, 0x8708, + 0x870a, 0x870d, 0x8709, 0x8723, 0x873b, 0x871e, 0x8725, 0x872e, + 0x871a, 0x873e, 0x8748, 0x8734, 0x8731, 0x8729, 0x8737, 0x873f, + 0x8782, 0x8722, 0x877d, 0x877e, 0x877b, 0x8760, 0x8770, 0x874c, + 0x876e, 0x878b, 0x8753, 0x8763, 0x877c, 0x8764, 0x8759, 0x8765, + 0x8793, 0x87af, 0x87a8, 0x87d2, 0x87c6, 0x8788, 0x8785, 0x87ad, + 0x8797, 0x8783, 0x87ab, 0x87e5, 0x87ac, 0x87b5, 0x87b3, 0x87cb, + 0x87d3, 0x87bd, 0x87d1, 0x87c0, 0x87ca, 0x87db, 0x87ea, 0x87e0, + 0x87ee, 0x8816, 0x8813, 0x87fe, 0x880a, 0x881b, 0x8821, 0x8839, + 0x883c, 0x7f36, 0x7f42, 0x7f44, 0x7f45, 0x8210, 0x7afa, 0x7afd, + 0x7b08, 0x7b03, 0x7b04, 0x7b15, 0x7b0a, 0x7b2b, 0x7b0f, 0x7b47, + 0x7b38, 0x7b2a, 0x7b19, 0x7b2e, 0x7b31, 0x7b20, 0x7b25, 0x7b24, + 0x7b33, 0x7b3e, 0x7b1e, 0x7b58, 0x7b5a, 0x7b45, 0x7b75, 0x7b4c, + 0x7b5d, 0x7b60, 0x7b6e, 0x7b7b, 0x7b62, 0x7b72, 0x7b71, 0x7b90, + 0x7ba6, 0x7ba7, 0x7bb8, 0x7bac, 0x7b9d, 0x7ba8, 0x7b85, 0x7baa, + 0x7b9c, 0x7ba2, 0x7bab, 0x7bb4, 0x7bd1, 0x7bc1, 0x7bcc, 0x7bdd, + 0x7bda, 0x7be5, 0x7be6, 0x7bea, 0x7c0c, 0x7bfe, 0x7bfc, 0x7c0f, + 0x7c16, 0x7c0b, 0x7c1f, 0x7c2a, 0x7c26, 0x7c38, 0x7c41, 0x7c40, + 0x81fe, 0x8201, 0x8202, 0x8204, 0x81ec, 0x8844, 0x8221, 0x8222, + 0x8223, 0x822d, 0x822f, 0x8228, 0x822b, 0x8238, 0x823b, 0x8233, + 0x8234, 0x823e, 0x8244, 0x8249, 0x824b, 0x824f, 0x825a, 0x825f, + 0x8268, 0x887e, 0x8885, 0x8888, 0x88d8, 0x88df, 0x895e, 0x7f9d, + 0x7f9f, 0x7fa7, 0x7faf, 0x7fb0, 0x7fb2, 0x7c7c, 0x6549, 0x7c91, + 0x7c9d, 0x7c9c, 0x7c9e, 0x7ca2, 0x7cb2, 0x7cbc, 0x7cbd, 0x7cc1, + 0x7cc7, 0x7ccc, 0x7ccd, 0x7cc8, 0x7cc5, 0x7cd7, 0x7ce8, 0x826e, + 0x66a8, 0x7fbf, 0x7fce, 0x7fd5, 0x7fe5, 0x7fe1, 0x7fe6, 0x7fe9, + 0x7fee, 0x7ff3, 0x7cf8, 0x7d77, 0x7da6, 0x7dae, 0x7e47, 0x7e9b, + 0x9eb8, 0x9eb4, 0x8d73, 0x8d84, 0x8d94, 0x8d91, 0x8db1, 0x8d67, + 0x8d6d, 0x8c47, 0x8c49, 0x914a, 0x9150, 0x914e, 0x914f, 0x9164, + 0x9162, 0x9161, 0x9170, 0x9169, 0x916f, 0x917d, 0x917e, 0x9172, + 0x9174, 0x9179, 0x918c, 0x9185, 0x9190, 0x918d, 0x9191, 0x91a2, + 0x91a3, 0x91aa, 0x91ad, 0x91ae, 0x91af, 0x91b5, 0x91b4, 0x91ba, + 0x8c55, 0x9e7e, 0x8db8, 0x8deb, 0x8e05, 0x8e59, 0x8e69, 0x8db5, + 0x8dbf, 0x8dbc, 0x8dba, 0x8dc4, 0x8dd6, 0x8dd7, 0x8dda, 0x8dde, + 0x8dce, 0x8dcf, 0x8ddb, 0x8dc6, 0x8dec, 0x8df7, 0x8df8, 0x8de3, + 0x8df9, 0x8dfb, 0x8de4, 0x8e09, 0x8dfd, 0x8e14, 0x8e1d, 0x8e1f, + 0x8e2c, 0x8e2e, 0x8e23, 0x8e2f, 0x8e3a, 0x8e40, 0x8e39, 0x8e35, + 0x8e3d, 0x8e31, 0x8e49, 0x8e41, 0x8e42, 0x8e51, 0x8e52, 0x8e4a, + 0x8e70, 0x8e76, 0x8e7c, 0x8e6f, 0x8e74, 0x8e85, 0x8e8f, 0x8e94, + 0x8e90, 0x8e9c, 0x8e9e, 0x8c78, 0x8c82, 0x8c8a, 0x8c85, 0x8c98, + 0x8c94, 0x659b, 0x89d6, 0x89de, 0x89da, 0x89dc, 0x89e5, 0x89eb, + 0x89ef, 0x8a3e, 0x8b26, 0x9753, 0x96e9, 0x96f3, 0x96ef, 0x9706, + 0x9701, 0x9708, 0x970f, 0x970e, 0x972a, 0x972d, 0x9730, 0x973e, + 0x9f80, 0x9f83, 0x9f85, 0x9f86, 0x9f87, 0x9f88, 0x9f89, 0x9f8a, + 0x9f8c, 0x9efe, 0x9f0b, 0x9f0d, 0x96b9, 0x96bc, 0x96bd, 0x96ce, + 0x96d2, 0x77bf, 0x96e0, 0x928e, 0x92ae, 0x92c8, 0x933e, 0x936a, + 0x93ca, 0x938f, 0x943e, 0x946b, 0x9c7f, 0x9c82, 0x9c85, 0x9c86, + 0x9c87, 0x9c88, 0x7a23, 0x9c8b, 0x9c8e, 0x9c90, 0x9c91, 0x9c92, + 0x9c94, 0x9c95, 0x9c9a, 0x9c9b, 0x9c9e, 0x9c9f, 0x9ca0, 0x9ca1, + 0x9ca2, 0x9ca3, 0x9ca5, 0x9ca6, 0x9ca7, 0x9ca8, 0x9ca9, 0x9cab, + 0x9cad, 0x9cae, 0x9cb0, 0x9cb1, 0x9cb2, 0x9cb3, 0x9cb4, 0x9cb5, + 0x9cb6, 0x9cb7, 0x9cba, 0x9cbb, 0x9cbc, 0x9cbd, 0x9cc4, 0x9cc5, + 0x9cc6, 0x9cc7, 0x9cca, 0x9ccb, 0x9ccc, 0x9ccd, 0x9cce, 0x9ccf, + 0x9cd0, 0x9cd3, 0x9cd4, 0x9cd5, 0x9cd7, 0x9cd8, 0x9cd9, 0x9cdc, + 0x9cdd, 0x9cdf, 0x9ce2, 0x977c, 0x9785, 0x9791, 0x9792, 0x9794, + 0x97af, 0x97ab, 0x97a3, 0x97b2, 0x97b4, 0x9ab1, 0x9ab0, 0x9ab7, + 0x9e58, 0x9ab6, 0x9aba, 0x9abc, 0x9ac1, 0x9ac0, 0x9ac5, 0x9ac2, + 0x9acb, 0x9acc, 0x9ad1, 0x9b45, 0x9b43, 0x9b47, 0x9b49, 0x9b48, + 0x9b4d, 0x9b51, 0x98e8, 0x990d, 0x992e, 0x9955, 0x9954, 0x9adf, + 0x9ae1, 0x9ae6, 0x9aef, 0x9aeb, 0x9afb, 0x9aed, 0x9af9, 0x9b08, + 0x9b0f, 0x9b13, 0x9b1f, 0x9b23, 0x9ebd, 0x9ebe, 0x7e3b, 0x9e82, + 0x9e87, 0x9e88, 0x9e8b, 0x9e92, 0x93d6, 0x9e9d, 0x9e9f, 0x9edb, + 0x9edc, 0x9edd, 0x9ee0, 0x9edf, 0x9ee2, 0x9ee9, 0x9ee7, 0x9ee5, + 0x9eea, 0x9eef, 0x9f22, 0x9f2c, 0x9f2f, 0x9f39, 0x9f37, 0x9f3d, + 0x9f3e, 0x9f44, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x9f44, 0xffffffff, 0x00ff, 0x0000, + 0x0100, 0x0003, 0x2288, 0x804f240, 0x0100, 0x0005, 0x00f8, 0x42130a14 +}; + +static unsigned short gb2312_from_unicode_0[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x2168, 0x0000, 0x0000, 0x216c, + 0x2127, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x2163, 0x2140, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2124, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2141, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x2824, 0x2822, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x2828, 0x2826, 0x283a, 0x0000, 0x282c, 0x282a, 0x0000, 0x0000, + 0x0000, 0x0000, 0x2830, 0x282e, 0x0000, 0x0000, 0x0000, 0x2142, + 0x0000, 0x2834, 0x2832, 0x0000, 0x2839, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short gb2312_from_unicode_1[] = { + 0x0000, 0x2821, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x2825, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x2827, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x2829, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x283d, 0x0000, 0x0000, 0x0000, + 0x283e, 0x0000, 0x0000, 0x0000, 0x0000, 0x282d, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x2831, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2823, 0x0000, + 0x282b, 0x0000, 0x282f, 0x0000, 0x2833, 0x0000, 0x2835, 0x0000, + 0x2836, 0x0000, 0x2837, 0x0000, 0x2838, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x283f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short gb2312_from_unicode_2[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x283b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x2840, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2126, + 0x0000, 0x2125, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short gb2312_from_unicode_3[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x2621, 0x2622, 0x2623, 0x2624, 0x2625, 0x2626, 0x2627, + 0x2628, 0x2629, 0x262a, 0x262b, 0x262c, 0x262d, 0x262e, 0x262f, + 0x2630, 0x2631, 0x0000, 0x2632, 0x2633, 0x2634, 0x2635, 0x2636, + 0x2637, 0x2638, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x2641, 0x2642, 0x2643, 0x2644, 0x2645, 0x2646, 0x2647, + 0x2648, 0x2649, 0x264a, 0x264b, 0x264c, 0x264d, 0x264e, 0x264f, + 0x2650, 0x2651, 0x0000, 0x2652, 0x2653, 0x2654, 0x2655, 0x2656, + 0x2657, 0x2658, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short gb2312_from_unicode_4[] = { + 0x0000, 0x2727, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x2721, 0x2722, 0x2723, 0x2724, 0x2725, 0x2726, 0x2728, 0x2729, + 0x272a, 0x272b, 0x272c, 0x272d, 0x272e, 0x272f, 0x2730, 0x2731, + 0x2732, 0x2733, 0x2734, 0x2735, 0x2736, 0x2737, 0x2738, 0x2739, + 0x273a, 0x273b, 0x273c, 0x273d, 0x273e, 0x273f, 0x2740, 0x2741, + 0x2751, 0x2752, 0x2753, 0x2754, 0x2755, 0x2756, 0x2758, 0x2759, + 0x275a, 0x275b, 0x275c, 0x275d, 0x275e, 0x275f, 0x2760, 0x2761, + 0x2762, 0x2763, 0x2764, 0x2765, 0x2766, 0x2767, 0x2768, 0x2769, + 0x276a, 0x276b, 0x276c, 0x276d, 0x276e, 0x276f, 0x2770, 0x2771, + 0x0000, 0x2757, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short gb2312_from_unicode_1e[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x283c, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short gb2312_from_unicode_20[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x212a, 0x0000, 0x212c, 0x0000, + 0x212e, 0x212f, 0x0000, 0x0000, 0x2130, 0x2131, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x212d, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x216b, 0x0000, 0x2164, 0x2165, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x2179, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2673, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short gb2312_from_unicode_21[] = { + 0x0000, 0x0000, 0x0000, 0x2166, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x216d, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x2271, 0x2272, 0x2273, 0x2274, 0x2275, 0x2276, 0x2277, 0x2278, + 0x2279, 0x227a, 0x227b, 0x227c, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x217b, 0x217c, 0x217a, 0x217d, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short gb2312_from_unicode_22[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x214a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2147, + 0x0000, 0x2146, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x214c, 0x0000, 0x0000, 0x2158, 0x215e, 0x0000, + 0x214f, 0x0000, 0x0000, 0x0000, 0x0000, 0x214e, 0x0000, 0x2144, + 0x2145, 0x2149, 0x2148, 0x2152, 0x0000, 0x0000, 0x2153, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x2160, 0x215f, 0x2143, 0x214b, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2157, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x2156, 0x0000, 0x0000, 0x0000, 0x2155, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x2159, 0x2154, 0x0000, 0x0000, 0x215c, 0x215d, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x215a, 0x215b, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x2151, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x214d, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short gb2312_from_unicode_23[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x2150, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short gb2312_from_unicode_24[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x2259, 0x225a, 0x225b, 0x225c, 0x225d, 0x225e, 0x225f, 0x2260, + 0x2261, 0x2262, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x2245, 0x2246, 0x2247, 0x2248, + 0x2249, 0x224a, 0x224b, 0x224c, 0x224d, 0x224e, 0x224f, 0x2250, + 0x2251, 0x2252, 0x2253, 0x2254, 0x2255, 0x2256, 0x2257, 0x2258, + 0x2231, 0x2232, 0x2233, 0x2234, 0x2235, 0x2236, 0x2237, 0x2238, + 0x2239, 0x223a, 0x223b, 0x223c, 0x223d, 0x223e, 0x223f, 0x2240, + 0x2241, 0x2242, 0x2243, 0x2244, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short gb2312_from_unicode_25[] = { + 0x2924, 0x2925, 0x2926, 0x2927, 0x2928, 0x2929, 0x292a, 0x292b, + 0x292c, 0x292d, 0x292e, 0x292f, 0x2930, 0x2931, 0x2932, 0x2933, + 0x2934, 0x2935, 0x2936, 0x2937, 0x2938, 0x2939, 0x293a, 0x293b, + 0x293c, 0x293d, 0x293e, 0x293f, 0x2940, 0x2941, 0x2942, 0x2943, + 0x2944, 0x2945, 0x2946, 0x2947, 0x2948, 0x2949, 0x294a, 0x294b, + 0x294c, 0x294d, 0x294e, 0x294f, 0x2950, 0x2951, 0x2952, 0x2953, + 0x2954, 0x2955, 0x2956, 0x2957, 0x2958, 0x2959, 0x295a, 0x295b, + 0x295c, 0x295d, 0x295e, 0x295f, 0x2960, 0x2961, 0x2962, 0x2963, + 0x2964, 0x2965, 0x2966, 0x2967, 0x2968, 0x2969, 0x296a, 0x296b, + 0x296c, 0x296d, 0x296e, 0x296f, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x2176, 0x2175, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x2178, 0x2177, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2174, 0x2173, + 0x0000, 0x0000, 0x0000, 0x2170, 0x0000, 0x0000, 0x2172, 0x2171, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short gb2312_from_unicode_26[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x216f, 0x216e, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x2162, 0x0000, 0x2161, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short gb2312_from_unicode_30[] = { + 0x2121, 0x2122, 0x2123, 0x2128, 0x0000, 0x2129, 0x0000, 0x0000, + 0x2134, 0x2135, 0x2136, 0x2137, 0x2138, 0x2139, 0x213a, 0x213b, + 0x213e, 0x213f, 0x0000, 0x217e, 0x2132, 0x2133, 0x213c, 0x213d, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x2421, 0x2422, 0x2423, 0x2424, 0x2425, 0x2426, 0x2427, + 0x2428, 0x2429, 0x242a, 0x242b, 0x242c, 0x242d, 0x242e, 0x242f, + 0x2430, 0x2431, 0x2432, 0x2433, 0x2434, 0x2435, 0x2436, 0x2437, + 0x2438, 0x2439, 0x243a, 0x243b, 0x243c, 0x243d, 0x243e, 0x243f, + 0x2440, 0x2441, 0x2442, 0x2443, 0x2444, 0x2445, 0x2446, 0x2447, + 0x2448, 0x2449, 0x244a, 0x244b, 0x244c, 0x244d, 0x244e, 0x244f, + 0x2450, 0x2451, 0x2452, 0x2453, 0x2454, 0x2455, 0x2456, 0x2457, + 0x2458, 0x2459, 0x245a, 0x245b, 0x245c, 0x245d, 0x245e, 0x245f, + 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, + 0x2468, 0x2469, 0x246a, 0x246b, 0x246c, 0x246d, 0x246e, 0x246f, + 0x2470, 0x2471, 0x2472, 0x2473, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x2521, 0x2522, 0x2523, 0x2524, 0x2525, 0x2526, 0x2527, + 0x2528, 0x2529, 0x252a, 0x252b, 0x252c, 0x252d, 0x252e, 0x252f, + 0x2530, 0x2531, 0x2532, 0x2533, 0x2534, 0x2535, 0x2536, 0x2537, + 0x2538, 0x2539, 0x253a, 0x253b, 0x253c, 0x253d, 0x253e, 0x253f, + 0x2540, 0x2541, 0x2542, 0x2543, 0x2544, 0x2545, 0x2546, 0x2547, + 0x2548, 0x2549, 0x254a, 0x254b, 0x254c, 0x254d, 0x254e, 0x254f, + 0x2550, 0x2551, 0x2552, 0x2553, 0x2554, 0x2555, 0x2556, 0x2557, + 0x2558, 0x2559, 0x255a, 0x255b, 0x255c, 0x255d, 0x255e, 0x255f, + 0x2560, 0x2561, 0x2562, 0x2563, 0x2564, 0x2565, 0x2566, 0x2567, + 0x2568, 0x2569, 0x256a, 0x256b, 0x256c, 0x256d, 0x256e, 0x256f, + 0x2570, 0x2571, 0x2572, 0x2573, 0x2574, 0x2575, 0x2576, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short gb2312_from_unicode_31[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2845, 0x2846, 0x2847, + 0x2848, 0x2849, 0x284a, 0x284b, 0x284c, 0x284d, 0x284e, 0x284f, + 0x2850, 0x2851, 0x2852, 0x2853, 0x2854, 0x2855, 0x2856, 0x2857, + 0x2858, 0x2859, 0x285a, 0x285b, 0x285c, 0x285d, 0x285e, 0x285f, + 0x2860, 0x2861, 0x2862, 0x2863, 0x2864, 0x2865, 0x2866, 0x2867, + 0x2868, 0x2869, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short gb2312_from_unicode_32[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x2265, 0x2266, 0x2267, 0x2268, 0x2269, 0x226a, 0x226b, 0x226c, + 0x226d, 0x226e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short gb2312_from_unicode_4e[] = { + 0x523b, 0x3621, 0x0000, 0x465f, 0x0000, 0x0000, 0x0000, 0x4d72, + 0x5549, 0x487d, 0x494f, 0x4f42, 0x5822, 0x323b, 0x536b, 0x0000, + 0x5824, 0x3373, 0x0000, 0x5728, 0x4752, 0x5827, 0x4a40, 0x0000, + 0x4770, 0x317b, 0x5235, 0x3454, 0x362b, 0x4b3f, 0x5829, 0x0000, + 0x0000, 0x0000, 0x362a, 0x0000, 0x413d, 0x514f, 0x0000, 0x4925, + 0x582d, 0x0000, 0x3876, 0x513e, 0x635c, 0x5650, 0x0000, 0x0000, + 0x3761, 0x0000, 0x342e, 0x0000, 0x4159, 0x0000, 0x583c, 0x0000, + 0x4d68, 0x3524, 0x4e2a, 0x5677, 0x0000, 0x4076, 0x3e59, 0x582f, + 0x0000, 0x0000, 0x0000, 0x444b, 0x0000, 0x3e43, 0x0000, 0x5831, + 0x4334, 0x5265, 0x0000, 0x562e, 0x4e5a, 0x5527, 0x3a75, 0x3726, + 0x4056, 0x0000, 0x4639, 0x4552, 0x4747, 0x0000, 0x3954, 0x0000, + 0x334b, 0x5252, 0x0000, 0x0000, 0x583f, 0x3e45, 0x4672, 0x5232, + 0x4f30, 0x4f67, 0x0000, 0x0000, 0x0000, 0x0000, 0x4a69, 0x0000, + 0x0000, 0x5840, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4272, 0x4252, 0x0000, 0x4869, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x472c, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x414b, 0x0000, + 0x5368, 0x5579, 0x0000, 0x4a42, 0x367e, 0x5821, 0x535a, 0x3f77, + 0x0000, 0x5446, 0x3b25, 0x5841, 0x4e65, 0x3e2e, 0x0000, 0x0000, + 0x5828, 0x0000, 0x5147, 0x5029, 0x0000, 0x0000, 0x0000, 0x583d, + 0x596f, 0x4d76, 0x3f3a, 0x0000, 0x3d3b, 0x3a25, 0x5260, 0x327a, + 0x3a60, 0x4436, 0x0000, 0x4f6d, 0x3e29, 0x4d24, 0x4141, 0x0000, + 0x0000, 0x0000, 0x4757, 0x5971, 0x0000, 0x5974, 0x0000, 0x0000, + 0x0000, 0x0000, 0x484b, 0x5869, 0x0000, 0x0000, 0x0000, 0x525a, + 0x4a32, 0x484a, 0x586c, 0x586a, 0x5846, 0x3d76, 0x464d, 0x3370, + 0x0000, 0x586b, 0x3d71, 0x3d69, 0x0000, 0x4854, 0x3453, 0x0000, + 0x0000, 0x4258, 0x0000, 0x3256, 0x5750, 0x4a4b, 0x4b7b, 0x554c, + 0x3836, 0x4f49, 0x0000, 0x0000, 0x0000, 0x595a, 0x5870, 0x472a, + 0x0000, 0x586e, 0x0000, 0x347a, 0x416e, 0x5254, 0x0000, 0x0000, + 0x586d, 0x0000, 0x5247, 0x586f, 0x4347, 0x0000, 0x0000, 0x0000, + 0x5176, 0x0000, 0x5659, 0x5872, 0x0000, 0x5875, 0x3c7e, 0x3c5b, + 0x0000, 0x0000, 0x0000, 0x484e, 0x0000, 0x375d, 0x0000, 0x3742 +}; + +static unsigned short gb2312_from_unicode_4f[] = { + 0x0000, 0x4673, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5878, 0x5241, 0x0000, 0x0000, 0x4e69, 0x3c3f, 0x377c, + 0x3725, 0x505d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x565a, + 0x5345, 0x3b6f, 0x3b61, 0x5871, 0x0000, 0x0000, 0x4921, 0x4e30, + 0x342b, 0x0000, 0x5873, 0x0000, 0x494b, 0x5876, 0x4257, 0x5877, + 0x0000, 0x0000, 0x4e31, 0x5879, 0x0000, 0x0000, 0x0000, 0x322e, + 0x3940, 0x0000, 0x5923, 0x0000, 0x3069, 0x0000, 0x4166, 0x0000, + 0x496c, 0x0000, 0x4b45, 0x0000, 0x4b46, 0x5924, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x3568, 0x0000, 0x0000, 0x352b, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4e3b, 0x354d, 0x5721, + 0x5774, 0x5353, 0x0000, 0x4c65, 0x0000, 0x3a4e, 0x0000, 0x5922, + 0x595c, 0x5360, 0x587d, 0x3770, 0x5777, 0x587e, 0x587a, 0x5921, + 0x4463, 0x0000, 0x0000, 0x5336, 0x5874, 0x595d, 0x0000, 0x587b, + 0x0000, 0x4565, 0x0000, 0x0000, 0x4050, 0x0000, 0x0000, 0x5170, + 0x305b, 0x0000, 0x0000, 0x3c51, 0x5926, 0x0000, 0x5925, 0x0000, + 0x0000, 0x0000, 0x0000, 0x592c, 0x592e, 0x0000, 0x592b, 0x4a39, + 0x0000, 0x0000, 0x0000, 0x5929, 0x5636, 0x0000, 0x0000, 0x0000, + 0x335e, 0x5928, 0x0000, 0x407d, 0x0000, 0x4a4c, 0x0000, 0x592a, + 0x0000, 0x5927, 0x0000, 0x0000, 0x5930, 0x0000, 0x0000, 0x3631, + 0x0000, 0x0000, 0x0000, 0x3929, 0x0000, 0x5240, 0x0000, 0x0000, + 0x4f40, 0x0000, 0x0000, 0x4242, 0x0000, 0x3d44, 0x556c, 0x3260, + 0x4748, 0x3f6b, 0x592d, 0x0000, 0x592f, 0x0000, 0x4e6a, 0x3a6e, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4756, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3163, + 0x0000, 0x0000, 0x0000, 0x3459, 0x366d, 0x5934, 0x0000, 0x0000, + 0x0000, 0x0000, 0x3f21, 0x0000, 0x0000, 0x0000, 0x595e, 0x474e, + 0x407e, 0x5938, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4b57, + 0x377d, 0x0000, 0x5935, 0x0000, 0x5937, 0x3123, 0x5361, 0x5939, + 0x0000, 0x5045, 0x0000, 0x5936, 0x0000, 0x0000, 0x5931, 0x0000, + 0x5932, 0x4129, 0x5933, 0x0000, 0x0000, 0x3c73, 0x505e, 0x3829, + 0x0000, 0x3e63, 0x0000, 0x593d, 0x0000, 0x0000, 0x0000, 0x0000, + 0x593a, 0x0000, 0x3033, 0x0000, 0x0000, 0x0000, 0x5942, 0x0000 +}; + +static unsigned short gb2312_from_unicode_50[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x5944, 0x3136, 0x0000, 0x593f, + 0x0000, 0x0000, 0x3539, 0x0000, 0x3e73, 0x0000, 0x0000, 0x0000, + 0x4c48, 0x3a72, 0x5250, 0x0000, 0x5943, 0x0000, 0x0000, 0x3d68, + 0x0000, 0x332b, 0x0000, 0x0000, 0x0000, 0x5945, 0x3e6b, 0x0000, + 0x5946, 0x593b, 0x445f, 0x0000, 0x593e, 0x5941, 0x5940, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x552e, 0x0000, 0x5635, 0x0000, 0x4763, 0x0000, + 0x0000, 0x0000, 0x0000, 0x5948, 0x0000, 0x0000, 0x0000, 0x3c59, + 0x594a, 0x0000, 0x0000, 0x0000, 0x593c, 0x0000, 0x594b, 0x462b, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5949, 0x0000, 0x0000, + 0x0000, 0x0000, 0x5776, 0x0000, 0x4d23, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3d21, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x594c, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x453c, 0x4d35, + 0x0000, 0x0000, 0x0000, 0x594d, 0x0000, 0x0000, 0x5947, 0x3325, + 0x3f7e, 0x0000, 0x0000, 0x0000, 0x0000, 0x3835, 0x0000, 0x0000, + 0x407c, 0x0000, 0x0000, 0x0000, 0x0000, 0x3078, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x3476, 0x0000, 0x594e, 0x0000, 0x594f, + 0x3422, 0x5950, 0x0000, 0x0000, 0x345f, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x3041, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x5951, 0x4935, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4f71, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5952, 0x0000, + 0x0000, 0x0000, 0x4145, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5956, 0x492e, + 0x0000, 0x0000, 0x0000, 0x0000, 0x5955, 0x5954, 0x5957, 0x0000, + 0x0000, 0x0000, 0x0000, 0x4b5b, 0x0000, 0x3d29, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x4627, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short gb2312_from_unicode_51[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5953, 0x5958, + 0x0000, 0x0000, 0x0000, 0x5959, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x4865, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x405c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3679, + 0x5823, 0x544a, 0x0000, 0x542a, 0x5056, 0x3364, 0x5557, 0x0000, + 0x4f48, 0x3962, 0x0000, 0x3f4b, 0x0000, 0x4362, 0x0000, 0x0000, + 0x0000, 0x3652, 0x0000, 0x0000, 0x4d43, 0x596e, 0x5970, 0x0000, + 0x0000, 0x0000, 0x3533, 0x0000, 0x3635, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x3e24, 0x0000, 0x0000, 0x486b, 0x0000, 0x0000, + 0x482b, 0x0000, 0x0000, 0x304b, 0x392b, 0x4179, 0x5962, 0x0000, + 0x403c, 0x3932, 0x0000, 0x3958, 0x504b, 0x3178, 0x4664, 0x3e5f, + 0x3564, 0x5748, 0x0000, 0x5178, 0x3c66, 0x4a5e, 0x0000, 0x0000, + 0x3c3d, 0x5966, 0x5867, 0x0000, 0x0000, 0x445a, 0x0000, 0x0000, + 0x3854, 0x483d, 0x0000, 0x0000, 0x3261, 0x5459, 0x0000, 0x0000, + 0x0000, 0x0000, 0x4330, 0x0000, 0x0000, 0x4361, 0x5a22, 0x485f, + 0x0000, 0x5034, 0x0000, 0x3e7c, 0x4529, 0x0000, 0x0000, 0x0000, + 0x395a, 0x0000, 0x5a23, 0x0000, 0x5429, 0x5a24, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x597b, 0x362c, 0x0000, 0x0000, 0x376b, + 0x3179, 0x597c, 0x3365, 0x3e76, 0x0000, 0x3f76, 0x5231, 0x4064, + 0x0000, 0x0000, 0x0000, 0x3633, 0x597e, 0x597d, 0x0000, 0x0000, + 0x3e3b, 0x0000, 0x0000, 0x0000, 0x4660, 0x0000, 0x573c, 0x5a21, + 0x0000, 0x4139, 0x0000, 0x3572, 0x4168, 0x0000, 0x0000, 0x3c75, + 0x0000, 0x3455, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x415d, 0x0000, 0x447d, 0x0000, 0x0000, + 0x3c38, 0x3732, 0x0000, 0x0000, 0x376f, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x596c, 0x0000, 0x463e, 0x0000, 0x3f2d, + 0x3b4b, 0x0000, 0x0000, 0x354a, 0x0000, 0x5b49, 0x5057, 0x0000, + 0x4d39, 0x303c, 0x3376, 0x3b77, 0x5b4a, 0x3a2f, 0x0000, 0x5464 +}; + +static unsigned short gb2312_from_unicode_52[] = { + 0x3536, 0x3573, 0x5856, 0x4850, 0x0000, 0x0000, 0x3756, 0x4750, + 0x5857, 0x0000, 0x3f2f, 0x0000, 0x0000, 0x5b3b, 0x5858, 0x0000, + 0x0000, 0x504c, 0x3b2e, 0x0000, 0x0000, 0x0000, 0x6b3e, 0x4150, + 0x4175, 0x5472, 0x3855, 0x3434, 0x0000, 0x3375, 0x0000, 0x0000, + 0x493e, 0x0000, 0x0000, 0x0000, 0x4550, 0x0000, 0x0000, 0x0000, + 0x4559, 0x407b, 0x0000, 0x3170, 0x0000, 0x5859, 0x394e, 0x0000, + 0x353d, 0x0000, 0x0000, 0x585a, 0x0000, 0x0000, 0x5646, 0x4b22, + 0x482f, 0x4932, 0x344c, 0x3f4c, 0x0000, 0x3974, 0x0000, 0x585b, + 0x585c, 0x3667, 0x3c41, 0x4c6a, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x4f77, 0x0000, 0x585d, 0x4730, 0x0000, 0x0000, + 0x3950, 0x3d23, 0x0000, 0x0000, 0x4c5e, 0x0000, 0x464a, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x5860, 0x0000, 0x585e, 0x0000, + 0x0000, 0x585f, 0x0000, 0x0000, 0x0000, 0x307e, 0x0000, 0x3e67, + 0x0000, 0x4a23, 0x3c74, 0x0000, 0x0000, 0x0000, 0x0000, 0x3831, + 0x0000, 0x0000, 0x386e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5862, 0x0000, 0x3d4b, + 0x0000, 0x5864, 0x5863, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x457c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5865, 0x0000, 0x0000, 0x5866, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x4126, 0x0000, 0x4830, 0x306c, 0x3926, + 0x3c53, 0x4e71, 0x5b3d, 0x4153, 0x0000, 0x0000, 0x0000, 0x0000, + 0x362f, 0x567a, 0x452c, 0x3d59, 0x5b3e, 0x5b3f, 0x0000, 0x0000, + 0x0000, 0x4078, 0x3e22, 0x404d, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5b40, 0x4a46, + 0x0000, 0x0000, 0x0000, 0x322a, 0x0000, 0x0000, 0x0000, 0x5342, + 0x0000, 0x4363, 0x0000, 0x512b, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5b42, 0x0000, 0x4055, 0x0000, 0x0000, 0x0000, 0x5b43, 0x0000, + 0x3f31, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x443c, + 0x0000, 0x0000, 0x0000, 0x0000, 0x475a, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5b44, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5968, 0x4957, 0x0000, 0x0000, 0x0000, 0x3934, 0x4e70 +}; + +static unsigned short gb2312_from_unicode_53[] = { + 0x5448, 0x0000, 0x0000, 0x0000, 0x0000, 0x307c, 0x3452, 0x0000, + 0x5059, 0x0000, 0x0000, 0x0000, 0x0000, 0x5969, 0x0000, 0x5e4b, + 0x596b, 0x0000, 0x0000, 0x0000, 0x0000, 0x5830, 0x3b2f, 0x3131, + 0x0000, 0x3357, 0x584e, 0x0000, 0x0000, 0x5451, 0x0000, 0x0000, + 0x3d33, 0x3f6f, 0x0000, 0x4f3b, 0x0000, 0x0000, 0x5850, 0x0000, + 0x0000, 0x0000, 0x374b, 0x0000, 0x0000, 0x0000, 0x5851, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x4625, 0x4778, 0x523d, 0x0000, 0x0000, 0x5852, 0x4464, + 0x0000, 0x4a2e, 0x0000, 0x4727, 0x0000, 0x5826, 0x0000, 0x497d, + 0x4e67, 0x3b5c, 0x306b, 0x0000, 0x0000, 0x0000, 0x3b2a, 0x502d, + 0x0000, 0x3130, 0x5764, 0x573f, 0x0000, 0x3525, 0x4274, 0x444f, + 0x0000, 0x0000, 0x3229, 0x0000, 0x3237, 0x0000, 0x3165, 0x5f32, + 0x553c, 0x3f28, 0x422c, 0x5855, 0x4231, 0x0000, 0x5854, 0x4e54, + 0x0000, 0x5a60, 0x0000, 0x4e40, 0x0000, 0x0000, 0x5834, 0x432e, + 0x5321, 0x4e23, 0x0000, 0x3c34, 0x4834, 0x4251, 0x0000, 0x3e6d, + 0x5036, 0x0000, 0x5a61, 0x0000, 0x0000, 0x0000, 0x0000, 0x4764, + 0x0000, 0x0000, 0x3327, 0x0000, 0x3672, 0x4c7c, 0x407a, 0x0000, + 0x0000, 0x4077, 0x0000, 0x5139, 0x5161, 0x5847, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x325e, 0x0000, 0x0000, + 0x4065, 0x0000, 0x3a71, 0x0000, 0x0000, 0x5848, 0x0000, 0x542d, + 0x0000, 0x0000, 0x4f61, 0x5849, 0x0000, 0x584a, 0x4f43, 0x0000, + 0x3378, 0x3e47, 0x0000, 0x0000, 0x0000, 0x0000, 0x584b, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5b4c, 0x0000, + 0x0000, 0x0000, 0x0000, 0x4825, 0x0000, 0x0000, 0x0000, 0x4f58, + 0x0000, 0x487e, 0x324e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5356, 0x3266, 0x3c30, 0x5351, 0x4b2b, 0x3734, 0x0000, 0x0000, + 0x0000, 0x3722, 0x0000, 0x0000, 0x4a65, 0x0000, 0x4821, 0x4a5c, + 0x3164, 0x5070, 0x0000, 0x4551, 0x0000, 0x0000, 0x0000, 0x5b45, + 0x357e, 0x0000, 0x0000, 0x3f5a, 0x3945, 0x3e64, 0x416d, 0x0000, + 0x5f36, 0x5f35, 0x563b, 0x3d50, 0x5559, 0x3048, 0x3623, 0x3f49, + 0x4c28, 0x5f33, 0x4a37, 0x5352, 0x0000, 0x584f, 0x5236, 0x3a45, + 0x4b3e, 0x4c3e, 0x0000, 0x5f37, 0x3570, 0x5f34, 0x0000, 0x0000 +}; + +static unsigned short gb2312_from_unicode_54[] = { + 0x0000, 0x5375, 0x0000, 0x3354, 0x3877, 0x0000, 0x5f3a, 0x0000, + 0x3a4f, 0x3c2a, 0x3575, 0x0000, 0x4d2c, 0x437b, 0x3a73, 0x4074, + 0x4d42, 0x4f72, 0x5f38, 0x4f45, 0x0000, 0x4240, 0x5f39, 0x4270, + 0x0000, 0x0000, 0x0000, 0x3e7d, 0x0000, 0x415f, 0x4d4c, 0x5277, + 0x374d, 0x5f41, 0x0000, 0x5f44, 0x0000, 0x0000, 0x3771, 0x3049, + 0x3656, 0x3754, 0x0000, 0x3a2c, 0x4c7d, 0x3f54, 0x4b31, 0x4674, + 0x0000, 0x5628, 0x5f45, 0x0000, 0x4e62, 0x3333, 0x0000, 0x0000, + 0x4e7c, 0x3435, 0x0000, 0x4e47, 0x3a70, 0x0000, 0x4e61, 0x0000, + 0x513d, 0x0000, 0x0000, 0x5f40, 0x0000, 0x0000, 0x3474, 0x0000, + 0x334a, 0x0000, 0x3866, 0x5f3b, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4445, 0x0000, 0x5f3c, 0x5f3d, 0x5f3e, 0x453b, 0x5f3f, 0x5f42, + 0x5431, 0x5f43, 0x0000, 0x473a, 0x4e58, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x4458, 0x0000, 0x5f4a, 0x0000, 0x5f4f, 0x0000, + 0x565c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5f49, 0x5f5a, 0x4e36, 0x0000, 0x3a47, 0x5f4e, 0x5f48, + 0x455e, 0x0000, 0x0000, 0x496b, 0x3a74, 0x437c, 0x0000, 0x0000, + 0x3e57, 0x0000, 0x5f46, 0x0000, 0x5f4d, 0x0000, 0x4558, 0x0000, + 0x0000, 0x0000, 0x0000, 0x5526, 0x3a4d, 0x0000, 0x3e4c, 0x533d, + 0x3840, 0x0000, 0x5664, 0x0000, 0x5f47, 0x393e, 0x3f27, 0x0000, + 0x0000, 0x417c, 0x5f4b, 0x5f4c, 0x0000, 0x5f50, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x5f5b, 0x5f65, 0x0000, 0x5f57, 0x5f56, + 0x5749, 0x5f63, 0x5f64, 0x656b, 0x5227, 0x5f52, 0x0000, 0x3f29, + 0x0000, 0x545b, 0x0000, 0x3f48, 0x5f54, 0x0000, 0x0000, 0x0000, + 0x4f4c, 0x0000, 0x0000, 0x5f5d, 0x0000, 0x514a, 0x0000, 0x5f5e, + 0x3027, 0x4637, 0x5f53, 0x0000, 0x3a65, 0x0000, 0x365f, 0x4d5b, + 0x397e, 0x5455, 0x0000, 0x0000, 0x5f5f, 0x4f6c, 0x3025, 0x5f67, + 0x5f51, 0x5146, 0x5f55, 0x5f58, 0x5f59, 0x5f5c, 0x0000, 0x3b29, + 0x0000, 0x5f60, 0x5f61, 0x0000, 0x5f62, 0x5f66, 0x5f68, 0x5334, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3867, 0x4536, 0x5f6a, + 0x495a, 0x4128, 0x4444, 0x0000, 0x0000, 0x3f5e, 0x4f78, 0x0000, + 0x0000, 0x0000, 0x555c, 0x5f6e, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x3238, 0x0000, 0x3a5f, 0x5f6c, 0x0000, 0x5b41 +}; + +static unsigned short gb2312_from_unicode_55[] = { + 0x0000, 0x5164, 0x0000, 0x0000, 0x0000, 0x0000, 0x4b74, 0x343d, + 0x0000, 0x3026, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5f71, + 0x4c46, 0x5f72, 0x0000, 0x0000, 0x5f6d, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x5f69, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5f6b, 0x0000, 0x5f6f, 0x5f70, 0x3b3d, 0x0000, 0x0000, 0x5f73, + 0x0000, 0x0000, 0x5f74, 0x0000, 0x3b23, 0x0000, 0x4a5b, 0x4e28, + 0x6027, 0x332a, 0x0000, 0x6026, 0x0000, 0x0000, 0x0000, 0x6021, + 0x0000, 0x0000, 0x0000, 0x0000, 0x5f7e, 0x0000, 0x4d59, 0x5f7c, + 0x0000, 0x5f7a, 0x0000, 0x3f50, 0x5744, 0x0000, 0x494c, 0x0000, + 0x0000, 0x5f78, 0x3021, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5f7d, 0x0000, 0x0000, 0x0000, 0x0000, 0x5f7b, 0x6022, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x6028, 0x0000, 0x0000, 0x0000, + 0x0000, 0x3748, 0x0000, 0x0000, 0x4621, 0x4936, 0x4032, 0x5f75, + 0x0000, 0x0000, 0x453e, 0x0000, 0x5844, 0x5f79, 0x4476, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6023, 0x6024, 0x6025, + 0x5025, 0x0000, 0x0000, 0x6034, 0x4c64, 0x0000, 0x6031, 0x0000, + 0x3f26, 0x602f, 0x4e39, 0x602b, 0x4946, 0x0000, 0x0000, 0x402e, + 0x602e, 0x3a6d, 0x3a30, 0x6029, 0x0000, 0x0000, 0x0000, 0x5f76, + 0x0000, 0x6033, 0x0000, 0x0000, 0x6038, 0x0000, 0x0000, 0x0000, + 0x342d, 0x6039, 0x0000, 0x0000, 0x4f32, 0x3a48, 0x0000, 0x6030, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x507a, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x602c, 0x0000, 0x547b, 0x0000, 0x5f77, 0x0000, 0x4567, + 0x0000, 0x602d, 0x0000, 0x5377, 0x0000, 0x6036, 0x6037, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x6044, 0x5061, 0x0000, 0x0000, + 0x0000, 0x603c, 0x0000, 0x0000, 0x6049, 0x604a, 0x0000, 0x0000, + 0x0000, 0x603e, 0x602a, 0x4924, 0x6041, 0x0000, 0x6032, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4a48, 0x6043, 0x0000, 0x6035, + 0x0000, 0x4e4b, 0x0000, 0x4b43, 0x604d, 0x6046, 0x6042, 0x0000, + 0x604b, 0x0000, 0x603a, 0x603f, 0x6040, 0x0000, 0x0000, 0x6045, + 0x0000, 0x0000, 0x6047, 0x6048, 0x0000, 0x604c, 0x0000, 0x603b, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4b54, 0x6055, 0x0000 +}; + +static unsigned short gb2312_from_unicode_56[] = { + 0x6056, 0x6052, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6050, 0x3c4e, 0x0000, 0x0000, 0x6051, 0x0000, 0x3842, 0x5845, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x506a, 0x0000, 0x0000, 0x426f, 0x0000, 0x0000, 0x604f, 0x603d, + 0x0000, 0x0000, 0x0000, 0x6054, 0x6053, 0x0000, 0x0000, 0x6057, + 0x0000, 0x0000, 0x0000, 0x0000, 0x605c, 0x6058, 0x0000, 0x0000, + 0x0000, 0x5676, 0x3330, 0x0000, 0x576c, 0x0000, 0x4b3b, 0x0000, + 0x0000, 0x605a, 0x0000, 0x4e7b, 0x0000, 0x0000, 0x0000, 0x3a59, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x6061, 0x605d, 0x522d, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x6062, 0x0000, 0x0000, 0x605b, + 0x6059, 0x605f, 0x0000, 0x0000, 0x6060, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x605e, 0x0000, 0x6064, 0x0000, 0x0000, 0x0000, + 0x4677, 0x582c, 0x546b, 0x6066, 0x4a49, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6065, 0x0000, 0x0000, 0x0000, 0x0000, 0x3841, 0x0000, + 0x0000, 0x0000, 0x0000, 0x6067, 0x6068, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6069, 0x6063, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3a3f, 0x4c67, + 0x0000, 0x0000, 0x0000, 0x606a, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x4f79, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x606b, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4842, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3d40, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x4452, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x606c, 0x0000, 0x0000, 0x606d, + 0x0000, 0x0000, 0x4774, 0x4b44, 0x0000, 0x606e, 0x3b58, 0x5836, + 0x5272, 0x606f, 0x4d45, 0x0000, 0x365a, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x6071, 0x0000, 0x5430, 0x0000, 0x0000, + 0x4027, 0x3451, 0x0000, 0x0000, 0x4e27, 0x6070, 0x0000, 0x0000, + 0x0000, 0x6072, 0x394c, 0x0000, 0x0000, 0x397a, 0x4d3c, 0x6073 +}; + +static unsigned short gb2312_from_unicode_57[] = { + 0x0000, 0x0000, 0x0000, 0x4654, 0x6074, 0x0000, 0x5432, 0x0000, + 0x4826, 0x6076, 0x6075, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x6077, 0x0000, 0x0000, 0x4d41, + 0x0000, 0x0000, 0x0000, 0x4a25, 0x0000, 0x0000, 0x0000, 0x0000, + 0x545a, 0x5b57, 0x5b59, 0x0000, 0x5b58, 0x3967, 0x5b5c, 0x5b5d, + 0x3558, 0x0000, 0x0000, 0x5b5a, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5b5b, 0x3321, 0x5b5f, 0x0000, 0x0000, 0x3b78, 0x0000, + 0x5637, 0x0000, 0x5b60, 0x0000, 0x0000, 0x0000, 0x0000, 0x3e79, + 0x0000, 0x0000, 0x373b, 0x0000, 0x5b50, 0x4c2e, 0x3f32, 0x3b35, + 0x5778, 0x3f53, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3f69, + 0x0000, 0x0000, 0x3c61, 0x4c33, 0x5b5e, 0x3053, 0x4e6b, 0x3758, + 0x5739, 0x4642, 0x0000, 0x0000, 0x4024, 0x0000, 0x4c39, 0x0000, + 0x5b67, 0x5b61, 0x463a, 0x5b63, 0x0000, 0x5b68, 0x0000, 0x4577, + 0x0000, 0x0000, 0x0000, 0x5b6a, 0x0000, 0x0000, 0x5b69, 0x3f40, + 0x0000, 0x0000, 0x0000, 0x5b66, 0x5b65, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x3439, 0x402c, 0x4222, 0x5b62, 0x5b64, 0x0000, + 0x0000, 0x0000, 0x0000, 0x504d, 0x5b6d, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x405d, 0x5b72, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x3662, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5b73, 0x5b52, 0x3938, 0x542b, 0x5b6c, 0x0000, 0x3f51, 0x5b70, + 0x0000, 0x5b51, 0x0000, 0x3566, 0x0000, 0x5b6b, 0x3f65, 0x0000, + 0x0000, 0x0000, 0x5b6e, 0x0000, 0x5b71, 0x0000, 0x0000, 0x0000, + 0x5b79, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x3921, 0x3023, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x4271, 0x0000, 0x0000, 0x3347, 0x5b6f, + 0x0000, 0x0000, 0x5b78, 0x0000, 0x4652, 0x5b74, 0x0000, 0x0000, + 0x5b75, 0x5b77, 0x5b76, 0x0000, 0x0000, 0x5b7e, 0x0000, 0x5372, + 0x323a, 0x0000, 0x0000, 0x0000, 0x5b7d, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5c24, 0x0000, 0x5b7b, + 0x0000, 0x0000, 0x0000, 0x0000, 0x5b7a, 0x0000, 0x0000, 0x0000, + 0x5b7c, 0x4560, 0x3b79, 0x0000, 0x0000, 0x5c23, 0x0000, 0x0000 +}; + +static unsigned short gb2312_from_unicode_58[] = { + 0x5c25, 0x0000, 0x4c43, 0x0000, 0x0000, 0x0000, 0x3651, 0x5d40, + 0x0000, 0x0000, 0x0000, 0x5c21, 0x0000, 0x5c22, 0x0000, 0x0000, + 0x0000, 0x4735, 0x0000, 0x0000, 0x0000, 0x3669, 0x0000, 0x0000, + 0x0000, 0x5c27, 0x0000, 0x0000, 0x0000, 0x0000, 0x5c26, 0x0000, + 0x5c29, 0x3124, 0x0000, 0x0000, 0x354c, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x3f30, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x515f, 0x0000, 0x0000, 0x0000, 0x0000, 0x3642, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x5c28, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4b7a, 0x6b73, 0x0000, 0x0000, + 0x0000, 0x4b5c, 0x0000, 0x0000, 0x4b7e, 0x0000, 0x0000, 0x0000, + 0x4c41, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x487b, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5c2a, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x4c6e, 0x5c2b, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5b53, 0x0000, + 0x5c2f, 0x5c2c, 0x0000, 0x3e33, 0x0000, 0x4a7b, 0x0000, 0x0000, + 0x0000, 0x5c2d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x494a, 0x4439, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x473d, 0x5c2e, 0x0000, 0x0000, 0x0000, 0x5476, 0x5066, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x442b, 0x3655, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x5b54, 0x0000, 0x0000, 0x0000, + 0x0000, 0x315a, 0x0000, 0x0000, 0x0000, 0x5b55, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5b56, 0x0000, 0x0000, 0x0000, 0x3a3e, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4840, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x4a3f, 0x4849, 0x0000, 0x5733, 0x0000, + 0x4979, 0x0000, 0x0000, 0x3f47, 0x0000, 0x0000, 0x3a78, 0x0000, + 0x0000, 0x523c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short gb2312_from_unicode_59[] = { + 0x0000, 0x0000, 0x623a, 0x0000, 0x3426, 0x0000, 0x0000, 0x3138, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3834, 0x0000, 0x4f44, + 0x0000, 0x0000, 0x0000, 0x0000, 0x5967, 0x4f26, 0x4d62, 0x0000, + 0x0000, 0x596d, 0x3660, 0x0000, 0x5239, 0x0000, 0x0000, 0x393b, + 0x0000, 0x0000, 0x0000, 0x0000, 0x6239, 0x6237, 0x0000, 0x3473, + 0x0000, 0x4c6c, 0x4c2b, 0x3772, 0x0000, 0x5832, 0x516b, 0x3a3b, + 0x0000, 0x4a27, 0x0000, 0x0000, 0x4d37, 0x0000, 0x0000, 0x5244, + 0x3f64, 0x3c50, 0x3661, 0x0000, 0x5e45, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5e46, 0x5b3c, 0x0000, 0x5159, 0x0000, 0x0000, 0x4666, + 0x444e, 0x376e, 0x0000, 0x375c, 0x0000, 0x0000, 0x3f7c, 0x5760, + 0x0000, 0x4675, 0x0000, 0x0000, 0x313c, 0x5e48, 0x3d31, 0x4c57, + 0x5e4a, 0x0000, 0x5e49, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x356c, 0x0000, 0x495d, 0x0000, 0x0000, 0x3042, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x452e, 0x452b, 0x0000, 0x444c, 0x0000, + 0x3c69, 0x4b7d, 0x0000, 0x0000, 0x0000, 0x3a43, 0x0000, 0x0000, + 0x0000, 0x6579, 0x4867, 0x657a, 0x4d7d, 0x0000, 0x5731, 0x383e, + 0x4268, 0x0000, 0x4851, 0x0000, 0x0000, 0x657b, 0x0000, 0x0000, + 0x0000, 0x0000, 0x364a, 0x3c4b, 0x0000, 0x0000, 0x517d, 0x6621, + 0x0000, 0x436e, 0x0000, 0x0000, 0x0000, 0x0000, 0x6624, 0x0000, + 0x0000, 0x0000, 0x0000, 0x657e, 0x6625, 0x4d57, 0x0000, 0x0000, + 0x3741, 0x657c, 0x657d, 0x6623, 0x0000, 0x0000, 0x445d, 0x6628, + 0x0000, 0x0000, 0x6627, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x4343, 0x0000, 0x465e, 0x0000, 0x0000, 0x662a, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4437, 0x0000, + 0x0000, 0x0000, 0x6622, 0x4a3c, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3d63, 0x3943, 0x6626, 0x5055, 0x4e2f, 0x0000, 0x0000, 0x6629, + 0x6630, 0x0000, 0x5226, 0x0000, 0x3d2a, 0x662d, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x662f, 0x0000, 0x4051, 0x0000, 0x0000, + 0x524c, 0x0000, 0x0000, 0x0000, 0x3c27, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6631, 0x0000, 0x5276, 0x0000, 0x0000, 0x0000, 0x574b +}; + +static unsigned short gb2312_from_unicode_5a[] = { + 0x0000, 0x4d7e, 0x0000, 0x4d5e, 0x4226, 0x662b, 0x662c, 0x3d3f, + 0x662e, 0x6633, 0x0000, 0x0000, 0x6632, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6636, 0x0000, 0x6638, 0x0000, 0x0000, 0x0000, 0x0000, + 0x446f, 0x0000, 0x0000, 0x0000, 0x4448, 0x0000, 0x0000, 0x3e6a, + 0x496f, 0x0000, 0x0000, 0x6637, 0x0000, 0x3670, 0x0000, 0x0000, + 0x0000, 0x4364, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5369, 0x6634, 0x0000, 0x6635, 0x0000, 0x4822, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x663d, 0x0000, 0x0000, 0x0000, + 0x6639, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4645, 0x0000, + 0x0000, 0x4d71, 0x663b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x663c, 0x0000, 0x0000, + 0x0000, 0x0000, 0x3b69, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x663e, 0x0000, 0x0000, 0x0000, 0x0000, 0x663a, + 0x0000, 0x0000, 0x4037, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x5324, 0x663f, 0x4974, 0x6643, + 0x0000, 0x0000, 0x6644, 0x0000, 0x0000, 0x0000, 0x0000, 0x5076, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x433d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x4344, 0x6642, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6641, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6647, 0x4f31, 0x0000, 0x6b74, 0x0000, 0x0000, + 0x664a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6645, 0x0000, + 0x0000, 0x3c5e, 0x4929, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x3c35, 0x0000, 0x0000, 0x4f53, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6648, 0x0000, 0x6649, 0x0000, 0x664e, 0x0000, + 0x6650, 0x0000, 0x0000, 0x0000, 0x6651, 0x0000, 0x0000, 0x0000, + 0x664b, 0x3555, 0x0000, 0x664c, 0x0000, 0x0000, 0x664f, 0x0000, + 0x0000, 0x445b, 0x0000, 0x6646, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x664d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short gb2312_from_unicode_5b[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6652, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6654, 0x6653, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6655, 0x0000, 0x5978, 0x0000, 0x0000, 0x6656, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6657, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5753, 0x665d, 0x0000, 0x665e, 0x3f57, 0x5450, 0x0000, 0x5756, + 0x3466, 0x4b6f, 0x665a, 0x5843, 0x574e, 0x5022, 0x0000, 0x434f, + 0x0000, 0x0000, 0x665f, 0x3c3e, 0x3942, 0x665b, 0x5127, 0x0000, + 0x0000, 0x3a22, 0x424f, 0x0000, 0x582b, 0x0000, 0x0000, 0x0000, + 0x4a6b, 0x656e, 0x0000, 0x665c, 0x0000, 0x3775, 0x0000, 0x0000, + 0x0000, 0x0000, 0x4866, 0x0000, 0x0000, 0x4475, 0x0000, 0x0000, + 0x6532, 0x447e, 0x0000, 0x4b7c, 0x6533, 0x552c, 0x0000, 0x536e, + 0x4a58, 0x3032, 0x0000, 0x4b4e, 0x4d6a, 0x0000, 0x0000, 0x3a6a, + 0x0000, 0x0000, 0x0000, 0x6535, 0x0000, 0x6534, 0x0000, 0x575a, + 0x3959, 0x5666, 0x3628, 0x4d70, 0x524b, 0x3126, 0x4a35, 0x0000, + 0x3368, 0x4973, 0x3f4d, 0x507b, 0x4a52, 0x6536, 0x3b42, 0x0000, + 0x0000, 0x0000, 0x4f5c, 0x392c, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5457, 0x0000, 0x0000, 0x3a26, 0x5167, 0x4f7c, 0x3c52, 0x0000, + 0x6537, 0x485d, 0x0000, 0x0000, 0x0000, 0x3f6d, 0x3176, 0x4b5e, + 0x0000, 0x0000, 0x3c45, 0x0000, 0x3c44, 0x527a, 0x435c, 0x3f5c, + 0x0000, 0x0000, 0x0000, 0x0000, 0x383b, 0x0000, 0x0000, 0x0000, + 0x4342, 0x0000, 0x3a2e, 0x5422, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x475e, 0x442f, 0x326c, + 0x0000, 0x3951, 0x0000, 0x0000, 0x653b, 0x4148, 0x0000, 0x0000, + 0x552f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x653c, 0x0000, + 0x653e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3467, 0x3654, 0x4b42, 0x5130, 0x353c, 0x0000, 0x0000, 0x4a59 +}; + +static unsigned short gb2312_from_unicode_5c[] = { + 0x0000, 0x3762, 0x0000, 0x0000, 0x4964, 0x0000, 0x3d2b, 0x0000, + 0x0000, 0x4e3e, 0x5770, 0x0000, 0x0000, 0x0000, 0x0000, 0x5021, + 0x0000, 0x4959, 0x0000, 0x0000, 0x367b, 0x6658, 0x3c62, 0x0000, + 0x333e, 0x0000, 0x4950, 0x0000, 0x6659, 0x3322, 0x0000, 0x0000, + 0x0000, 0x0000, 0x5e4c, 0x0000, 0x5348, 0x5e4d, 0x0000, 0x5222, + 0x0000, 0x0000, 0x0000, 0x0000, 0x5e4e, 0x0000, 0x0000, 0x0000, + 0x0000, 0x3e4d, 0x0000, 0x0000, 0x5e4f, 0x0000, 0x0000, 0x0000, + 0x4a2c, 0x527c, 0x335f, 0x656a, 0x4461, 0x3e21, 0x4e32, 0x4472, + 0x3e56, 0x4628, 0x3263, 0x0000, 0x0000, 0x3e53, 0x0000, 0x0000, + 0x477c, 0x4c6b, 0x3d6c, 0x4e5d, 0x0000, 0x0000, 0x4a3a, 0x4641, + 0x656c, 0x503c, 0x0000, 0x0000, 0x0000, 0x5539, 0x0000, 0x0000, + 0x0000, 0x656d, 0x0000, 0x0000, 0x0000, 0x0000, 0x4a74, 0x0000, + 0x4d40, 0x4245, 0x0000, 0x656f, 0x0000, 0x4244, 0x6570, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6578, 0x4d4d, + 0x0000, 0x493d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5259, 0x6128, 0x0000, 0x0000, 0x0000, 0x0000, 0x536c, + 0x0000, 0x4b6a, 0x4671, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x612c, 0x0000, 0x0000, 0x0000, 0x6127, 0x6129, 0x0000, 0x0000, + 0x612a, 0x612f, 0x0000, 0x0000, 0x326d, 0x0000, 0x612b, 0x385a, + 0x612d, 0x612e, 0x6130, 0x353a, 0x6131, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6133, 0x6138, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5152, 0x0000, 0x6136, 0x6135, 0x416b, 0x0000, 0x0000, + 0x0000, 0x6137, 0x0000, 0x5440, 0x0000, 0x6132, 0x0000, 0x613a, + 0x3036, 0x0000, 0x0000, 0x0000, 0x0000, 0x6134, 0x0000, 0x3f79, + 0x0000, 0x6139, 0x0000, 0x0000, 0x613b, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x613e, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x613c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5645, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x4f3f, 0x0000, 0x0000, 0x613d, 0x613f, 0x424d, 0x0000, + 0x366b, 0x0000, 0x5378, 0x0000, 0x0000, 0x474d, 0x0000, 0x0000, + 0x3765, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x3e7e, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short gb2312_from_unicode_5d[] = { + 0x0000, 0x0000, 0x6140, 0x6141, 0x0000, 0x0000, 0x6147, 0x3367, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4669, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x345e, 0x0000, 0x5142, 0x0000, + 0x0000, 0x0000, 0x0000, 0x6148, 0x0000, 0x0000, 0x6146, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x6145, 0x0000, 0x6143, 0x6142, + 0x0000, 0x3140, 0x0000, 0x0000, 0x0000, 0x5538, 0x6144, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x614b, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x614c, 0x614a, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6f7a, + 0x0000, 0x0000, 0x6153, 0x6152, 0x4736, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6149, 0x0000, 0x0000, 0x614e, 0x0000, 0x6150, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6154, 0x0000, 0x6151, 0x614d, 0x0000, 0x0000, 0x614f, + 0x0000, 0x0000, 0x0000, 0x0000, 0x6155, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6156, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6157, 0x0000, 0x0000, 0x0000, 0x6158, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x615a, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x615b, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4e21, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x675d, 0x0000, 0x3428, 0x565d, 0x0000, + 0x0000, 0x5132, 0x3332, 0x0000, 0x0000, 0x3924, 0x5773, 0x4749, + 0x3e5e, 0x392e, 0x0000, 0x4e57, 0x0000, 0x0000, 0x326e, 0x5b4f, + 0x0000, 0x3c3a, 0x5251, 0x4b48, 0x304d, 0x0000, 0x0000, 0x4f6f, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5963, 0x3d6d, 0x0000 +}; + +static unsigned short gb2312_from_unicode_5e[] = { + 0x0000, 0x3152, 0x4a50, 0x323c, 0x0000, 0x4b27, 0x372b, 0x0000, + 0x4a26, 0x0000, 0x0000, 0x0000, 0x4f23, 0x0000, 0x0000, 0x6078, + 0x554a, 0x607b, 0x0000, 0x0000, 0x607a, 0x4541, 0x4c7b, 0x0000, + 0x4131, 0x6079, 0x5663, 0x322f, 0x5644, 0x355b, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3478, 0x5621, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4f2f, 0x306f, 0x0000, + 0x0000, 0x607c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6121, + 0x3323, 0x0000, 0x0000, 0x607d, 0x607e, 0x4331, 0x0000, 0x0000, + 0x0000, 0x0000, 0x435d, 0x0000, 0x6122, 0x3779, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3b4f, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x6123, 0x443b, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x6124, 0x0000, 0x0000, 0x6125, 0x0000, + 0x0000, 0x6126, 0x3431, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x3849, 0x463d, 0x446a, 0x0000, 0x3222, 0x0000, + 0x5052, 0x0000, 0x675b, 0x3b43, 0x5357, 0x5344, 0x0000, 0x3963, + 0x624f, 0x0000, 0x0000, 0x0000, 0x572f, 0x0000, 0x476c, 0x3153, + 0x0000, 0x0000, 0x3432, 0x6251, 0x0000, 0x0000, 0x0000, 0x5072, + 0x422e, 0x6250, 0x0000, 0x3f62, 0x5326, 0x3557, 0x6252, 0x356a, + 0x0000, 0x436d, 0x387d, 0x0000, 0x382e, 0x0000, 0x4553, 0x374f, + 0x6254, 0x0000, 0x0000, 0x0000, 0x0000, 0x6253, 0x3648, 0x5779, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4d25, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x6258, 0x0000, 0x6256, 0x4a7c, 0x3f35, + 0x5339, 0x6255, 0x0000, 0x0000, 0x0000, 0x0000, 0x6257, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x412e, 0x4048, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x625b, 0x625a, 0x402a, 0x0000, 0x0000, 0x414e, 0x0000, + 0x0000, 0x0000, 0x0000, 0x625c, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x625d, 0x0000, 0x625e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x5b48, 0x0000, 0x5153, 0x4d22, + 0x0000, 0x0000, 0x3d28, 0x0000, 0x0000, 0x0000, 0x5e43, 0x5825 +}; + +static unsigned short gb2312_from_unicode_5f[] = { + 0x3f2a, 0x5b4d, 0x526c, 0x467a, 0x452a, 0x0000, 0x0000, 0x0000, + 0x5e44, 0x0000, 0x3157, 0x5f2e, 0x0000, 0x0000, 0x0000, 0x4a3d, + 0x0000, 0x5f31, 0x0000, 0x392d, 0x0000, 0x527d, 0x0000, 0x3825, + 0x3a6b, 0x0000, 0x0000, 0x335a, 0x0000, 0x0000, 0x0000, 0x355c, + 0x5545, 0x0000, 0x0000, 0x0000, 0x0000, 0x4356, 0x4f52, 0x3b21, + 0x0000, 0x6573, 0x6572, 0x0000, 0x0000, 0x6574, 0x0000, 0x4d64, + 0x0000, 0x4875, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x352f, 0x473f, 0x0000, 0x6576, 0x0000, 0x0000, 0x0000, + 0x6c30, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6566, 0x0000, 0x3969, 0x3531, 0x0000, 0x423c, 0x6568, 0x6567, + 0x6569, 0x0000, 0x0000, 0x0000, 0x0000, 0x524d, 0x0000, 0x0000, + 0x0000, 0x616a, 0x504e, 0x0000, 0x4d2e, 0x0000, 0x5165, 0x0000, + 0x0000, 0x324a, 0x316b, 0x0000, 0x3172, 0x456d, 0x0000, 0x0000, + 0x5543, 0x5330, 0x0000, 0x615c, 0x0000, 0x0000, 0x0000, 0x615d, + 0x0000, 0x525b, 0x0000, 0x3339, 0x314b, 0x0000, 0x0000, 0x0000, + 0x4d79, 0x5577, 0x615e, 0x0000, 0x3e36, 0x347d, 0x0000, 0x615f, + 0x3a5c, 0x6160, 0x3b32, 0x4249, 0x6161, 0x0000, 0x0000, 0x0000, + 0x506c, 0x0000, 0x4d3d, 0x0000, 0x0000, 0x6162, 0x0000, 0x3543, + 0x4547, 0x6163, 0x0000, 0x0000, 0x6164, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5379, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6165, 0x0000, 0x512d, 0x0000, 0x0000, 0x6166, 0x4e22, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6167, 0x0000, 0x3542, + 0x0000, 0x0000, 0x0000, 0x0000, 0x6168, 0x3b55, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x5044, 0x6260, 0x3158, 0x5264, 0x0000, + 0x0000, 0x6261, 0x0000, 0x0000, 0x3c49, 0x484c, 0x0000, 0x6263, + 0x6c7e, 0x6c7d, 0x5f2f, 0x0000, 0x0000, 0x0000, 0x6262, 0x563e, + 0x4d7c, 0x4326, 0x0000, 0x0000, 0x0000, 0x6343, 0x0000, 0x0000, + 0x5652, 0x6267, 0x0000, 0x0000, 0x6268, 0x0000, 0x0000, 0x5347, + 0x0000, 0x0000, 0x626c, 0x3f6c, 0x0000, 0x626d, 0x6265, 0x0000, + 0x0000, 0x3340, 0x0000, 0x0000, 0x0000, 0x446e, 0x0000, 0x0000, + 0x626e, 0x0000, 0x0000, 0x5043, 0x0000, 0x3a76, 0x6269, 0x375e +}; + +static unsigned short gb2312_from_unicode_60[] = { + 0x3b33, 0x4c2c, 0x4b4b, 0x6264, 0x6266, 0x626a, 0x626b, 0x0000, + 0x0000, 0x0000, 0x6277, 0x0000, 0x0000, 0x6274, 0x5475, 0x6273, + 0x0000, 0x0000, 0x452d, 0x0000, 0x557a, 0x4542, 0x3240, 0x0000, + 0x0000, 0x626f, 0x0000, 0x6272, 0x412f, 0x4b3c, 0x0000, 0x0000, + 0x3521, 0x6279, 0x0000, 0x0000, 0x0000, 0x3c31, 0x6271, 0x5054, + 0x5439, 0x6275, 0x3956, 0x6276, 0x0000, 0x0000, 0x0000, 0x4753, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6270, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x575c, 0x6d21, 0x0000, 0x0000, 0x6278, + 0x0000, 0x6d25, 0x627e, 0x4a51, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x4135, 0x0000, 0x3b50, 0x0000, 0x0000, + 0x3f56, 0x0000, 0x3a63, 0x0000, 0x0000, 0x4b21, 0x0000, 0x0000, + 0x0000, 0x6d26, 0x6d23, 0x0000, 0x0000, 0x6d22, 0x0000, 0x0000, + 0x0000, 0x0000, 0x3b56, 0x6d27, 0x5074, 0x0000, 0x0000, 0x6d24, + 0x3a5e, 0x3677, 0x6321, 0x3632, 0x4c71, 0x3927, 0x0000, 0x4f22, + 0x4721, 0x0000, 0x0000, 0x3f52, 0x0000, 0x0000, 0x3671, 0x0000, + 0x627a, 0x627b, 0x627d, 0x627c, 0x4455, 0x6322, 0x0000, 0x5341, + 0x0000, 0x0000, 0x0000, 0x6327, 0x4744, 0x0000, 0x0000, 0x0000, + 0x0000, 0x4f24, 0x0000, 0x0000, 0x6329, 0x3a37, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6328, 0x0000, 0x3b5a, 0x0000, 0x6323, 0x0000, + 0x0000, 0x0000, 0x6324, 0x632a, 0x0000, 0x6326, 0x0000, 0x4e72, + 0x5346, 0x0000, 0x0000, 0x3b3c, 0x0000, 0x0000, 0x5443, 0x0000, + 0x447a, 0x0000, 0x0000, 0x6d28, 0x507c, 0x6325, 0x0000, 0x4375, + 0x0000, 0x632d, 0x312f, 0x0000, 0x6332, 0x0000, 0x0000, 0x0000, + 0x3c42, 0x0000, 0x0000, 0x632c, 0x353f, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4769, 0x6330, 0x0000, + 0x0000, 0x0000, 0x3e2a, 0x4d6f, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x3b73, 0x0000, 0x0000, 0x0000, 0x4c68, 0x0000, 0x0000, + 0x632f, 0x0000, 0x6331, 0x0000, 0x4f27, 0x632e, 0x0000, 0x4e29, + 0x3b5d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x356b, 0x3e65, + 0x3252, 0x334d, 0x0000, 0x3139, 0x632b, 0x3251, 0x352c, 0x395f, + 0x3668, 0x0000, 0x0000, 0x4f6b, 0x6337, 0x0000, 0x3b4c, 0x0000, + 0x0000, 0x4847, 0x504a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short gb2312_from_unicode_61[] = { + 0x6338, 0x336e, 0x0000, 0x0000, 0x0000, 0x0000, 0x6d29, 0x0000, + 0x537a, 0x5364, 0x0000, 0x0000, 0x0000, 0x6d2a, 0x6339, 0x5262, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6335, 0x0000, 0x0000, + 0x0000, 0x0000, 0x535e, 0x0000, 0x0000, 0x0000, 0x0000, 0x3850, + 0x6333, 0x0000, 0x0000, 0x6336, 0x375f, 0x0000, 0x6334, 0x4022, + 0x0000, 0x0000, 0x0000, 0x633a, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5438, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3448, 0x0000, 0x633b, 0x0000, 0x3b45, 0x0000, 0x4977, 0x0000, + 0x0000, 0x4965, 0x0000, 0x0000, 0x0000, 0x443d, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6d2b, 0x0000, 0x0000, + 0x0000, 0x0000, 0x427d, 0x0000, 0x0000, 0x0000, 0x0000, 0x3b5b, + 0x3f2e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4e3f, 0x0000, 0x0000, 0x0000, 0x0000, 0x633c, 0x0000, 0x3f36, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x316f, 0x0000, 0x0000, 0x5477, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x633e, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6d2d, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x633f, + 0x3a29, 0x6d2c, 0x0000, 0x0000, 0x633d, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6340, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3a36, 0x0000, + 0x0000, 0x0000, 0x362e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5038, 0x0000, 0x3043, 0x6d2e, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6d2f, 0x4041, 0x0000, 0x6341, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4533, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6342, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5c32 +}; + +static unsigned short gb2312_from_unicode_62[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6d30, 0x0000, + 0x386a, 0x0000, 0x4e6c, 0x6a27, 0x5067, 0x4a79, 0x4856, 0x4f37, + 0x3349, 0x4e52, 0x3d64, 0x0000, 0x0000, 0x635e, 0x3b72, 0x6a28, + 0x553d, 0x0000, 0x465d, 0x6a29, 0x0000, 0x0000, 0x0000, 0x6a2a, + 0x0000, 0x6a2c, 0x6a2b, 0x0000, 0x6a2e, 0x6a2d, 0x0000, 0x0000, + 0x0000, 0x0000, 0x3d58, 0x0000, 0x6a2f, 0x0000, 0x423e, 0x0000, + 0x0000, 0x0000, 0x0000, 0x3441, 0x3477, 0x0000, 0x0000, 0x3b27, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6c66, 0x6c65, 0x373f, + 0x4b79, 0x3162, 0x0000, 0x6c67, 0x0000, 0x0000, 0x0000, 0x4948, + 0x6c68, 0x6c69, 0x0000, 0x4a56, 0x5e50, 0x3245, 0x547a, 0x0000, + 0x0000, 0x464b, 0x3047, 0x3472, 0x4853, 0x0000, 0x0000, 0x0000, + 0x4d50, 0x0000, 0x0000, 0x3f38, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x3f5b, 0x0000, 0x0000, 0x4724, 0x5634, + 0x0000, 0x4029, 0x5e51, 0x4928, 0x516f, 0x4524, 0x3067, 0x3336, + 0x4845, 0x0000, 0x0000, 0x3062, 0x0000, 0x0000, 0x3776, 0x0000, + 0x0000, 0x457a, 0x0000, 0x0000, 0x3673, 0x0000, 0x5552, 0x3350, + 0x3c3c, 0x0000, 0x0000, 0x0000, 0x332d, 0x0000, 0x0000, 0x0000, + 0x0000, 0x3e71, 0x3051, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5256, 0x4a63, 0x5725, 0x0000, 0x4d36, 0x3636, 0x3f39, + 0x555b, 0x0000, 0x3827, 0x4557, 0x0000, 0x0000, 0x0000, 0x5e52, + 0x3f59, 0x4255, 0x4740, 0x0000, 0x3b24, 0x3128, 0x0000, 0x0000, + 0x456a, 0x0000, 0x0000, 0x457b, 0x4c27, 0x0000, 0x0000, 0x0000, + 0x0000, 0x3127, 0x0000, 0x0000, 0x0000, 0x3556, 0x0000, 0x0000, + 0x0000, 0x4428, 0x0000, 0x5e53, 0x513a, 0x3369, 0x0000, 0x4372, + 0x0000, 0x0000, 0x3777, 0x0000, 0x5674, 0x3523, 0x3270, 0x4434, + 0x4469, 0x402d, 0x5e54, 0x0000, 0x3068, 0x4544, 0x4160, 0x0000, + 0x3955, 0x0000, 0x3e5c, 0x4d58, 0x304e, 0x0000, 0x4d4f, 0x5e56, + 0x3e50, 0x573e, 0x5e55, 0x5550, 0x305d, 0x0000, 0x0000, 0x4462, + 0x0000, 0x0000, 0x4223, 0x3c70, 0x0000, 0x5335, 0x4039, 0x4521, + 0x3226, 0x5471, 0x0000, 0x0000, 0x4028, 0x4a43, 0x5e57, 0x557c, + 0x0000, 0x3930, 0x0000, 0x482d, 0x4b29, 0x0000, 0x5e59, 0x3f3d, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4634, 0x5727, 0x4a30, 0x4443 +}; + +static unsigned short gb2312_from_unicode_63[] = { + 0x0000, 0x3356, 0x3952, 0x0000, 0x0000, 0x0000, 0x0000, 0x5638, + 0x6a7c, 0x3034, 0x0000, 0x0000, 0x0000, 0x0000, 0x3f66, 0x0000, + 0x0000, 0x4c74, 0x0000, 0x0000, 0x0000, 0x0000, 0x4d5a, 0x0000, + 0x0000, 0x0000, 0x563f, 0x424e, 0x0000, 0x4e4e, 0x4c22, 0x502e, + 0x4453, 0x3532, 0x5e58, 0x5575, 0x3c37, 0x3b53, 0x0000, 0x0000, + 0x3024, 0x0000, 0x4532, 0x346c, 0x0000, 0x0000, 0x0000, 0x5571, + 0x0000, 0x0000, 0x6a7d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5e5a, 0x4d26, 0x0000, 0x0000, 0x4d6c, 0x0000, 0x0000, + 0x0000, 0x0000, 0x4e66, 0x5e5c, 0x0000, 0x4d31, 0x4026, 0x0000, + 0x0000, 0x573d, 0x0000, 0x5e5b, 0x3046, 0x3a34, 0x4953, 0x4473, + 0x3e68, 0x0000, 0x0000, 0x0000, 0x0000, 0x3236, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x404c, 0x4b70, + 0x0000, 0x3c71, 0x3b3b, 0x3537, 0x0000, 0x0000, 0x0000, 0x4575, + 0x0000, 0x5e66, 0x0000, 0x0000, 0x0000, 0x5e63, 0x3e5d, 0x0000, + 0x0000, 0x5e5f, 0x0000, 0x0000, 0x0000, 0x0000, 0x3437, 0x3d5d, + 0x0000, 0x0000, 0x5e60, 0x446d, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4f46, 0x0000, 0x3560, 0x0000, 0x0000, 0x0000, 0x0000, 0x365e, + 0x4a5a, 0x3574, 0x5e65, 0x0000, 0x5546, 0x0000, 0x5e61, 0x4c4d, + 0x467e, 0x0000, 0x4545, 0x0000, 0x0000, 0x0000, 0x5234, 0x0000, + 0x3e72, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4253, 0x0000, 0x4c3d, 0x3338, 0x0000, 0x3d53, 0x0000, 0x3f58, + 0x4d46, 0x515a, 0x346b, 0x0000, 0x5e64, 0x5e5d, 0x5e67, 0x0000, + 0x6a7e, 0x0000, 0x0000, 0x4230, 0x5e62, 0x0000, 0x0000, 0x5640, + 0x3527, 0x0000, 0x3274, 0x0000, 0x5e68, 0x0000, 0x5e72, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x5e6d, 0x0000, 0x5e71, 0x0000, + 0x0000, 0x4860, 0x0000, 0x0000, 0x0000, 0x5761, 0x5e6f, 0x4368, + 0x4c61, 0x0000, 0x3265, 0x0000, 0x0000, 0x0000, 0x523e, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5e6e, 0x0000, + 0x5e6b, 0x4e55, 0x0000, 0x3427, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x3f2b, 0x3e3e, 0x0000, 0x0000, 0x3d52, 0x0000, 0x0000, + 0x0000, 0x0000, 0x5e69, 0x0000, 0x542e, 0x0000, 0x5e5e, 0x0000, + 0x5e6a, 0x0000, 0x0000, 0x0000, 0x0000, 0x403f, 0x0000, 0x5e6c +}; + +static unsigned short gb2312_from_unicode_64[] = { + 0x3273, 0x3869, 0x4227, 0x0000, 0x0000, 0x3d41, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x5e75, 0x5e78, 0x0000, 0x0000, 0x322b, + 0x3424, 0x0000, 0x0000, 0x346a, 0x4926, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x5e76, 0x4b51, 0x0000, 0x3863, 0x0000, + 0x5e77, 0x5e7a, 0x0000, 0x0000, 0x0000, 0x0000, 0x5e79, 0x0000, + 0x0000, 0x0000, 0x4c42, 0x0000, 0x3061, 0x346e, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x653a, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x502f, 0x0000, 0x0000, 0x326b, 0x0000, 0x6b21, + 0x0000, 0x5e74, 0x0000, 0x0000, 0x4963, 0x5e73, 0x305a, 0x5221, + 0x3177, 0x0000, 0x4c2f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x5e70, 0x0000, 0x4b24, 0x0000, 0x0000, 0x0000, + 0x552a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5e7b, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x345d, + 0x0000, 0x4426, 0x0000, 0x0000, 0x0000, 0x5e7d, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x437e, 0x4421, 0x5f21, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x414c, 0x0000, 0x5e7c, 0x3e6f, 0x0000, 0x4632, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x3345, 0x4876, 0x0000, 0x0000, 0x4b3a, 0x5e7e, 0x0000, + 0x0000, 0x5f24, 0x0000, 0x0000, 0x0000, 0x0000, 0x5732, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3337, 0x0000, 0x0000, 0x0000, + 0x0000, 0x4143, 0x0000, 0x0000, 0x474b, 0x3225, 0x3469, 0x0000, + 0x572b, 0x0000, 0x0000, 0x0000, 0x0000, 0x446c, 0x0000, 0x5f22, + 0x5f23, 0x0000, 0x5f25, 0x0000, 0x3a33, 0x0000, 0x0000, 0x0000, + 0x5f26, 0x0000, 0x405e, 0x0000, 0x0000, 0x4943, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3259, 0x4766, 0x0000, + 0x5f27, 0x0000, 0x475c, 0x0000, 0x0000, 0x0000, 0x0000, 0x5f28, + 0x6b22, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4b53, 0x0000, + 0x0000, 0x0000, 0x5f2a, 0x0000, 0x5f29, 0x0000, 0x3241, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short gb2312_from_unicode_65[] = { + 0x454a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5f2b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x545c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4841, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5f2c, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x3e70, 0x0000, 0x0000, 0x5f2d, 0x5627, + 0x0000, 0x0000, 0x0000, 0x0000, 0x6a37, 0x6b36, 0x4a55, 0x0000, + 0x587c, 0x3844, 0x0000, 0x3925, 0x0000, 0x0000, 0x3745, 0x557e, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x394a, 0x0000, 0x0000, + 0x5027, 0x744d, 0x0000, 0x0000, 0x3550, 0x0000, 0x0000, 0x4374, + 0x0000, 0x3e48, 0x0000, 0x0000, 0x0000, 0x6b37, 0x303d, 0x0000, + 0x0000, 0x3d4c, 0x0000, 0x4132, 0x0000, 0x3156, 0x3328, 0x0000, + 0x0000, 0x0000, 0x3852, 0x4922, 0x0000, 0x0000, 0x3658, 0x0000, + 0x0000, 0x0000, 0x0000, 0x6b38, 0x3e34, 0x0000, 0x0000, 0x0000, + 0x4a7d, 0x0000, 0x4743, 0x0000, 0x557b, 0x0000, 0x0000, 0x3773, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4e44, + 0x0000, 0x0000, 0x0000, 0x552b, 0x3173, 0x0000, 0x0000, 0x0000, + 0x6c33, 0x305f, 0x0000, 0x6c35, 0x0000, 0x0000, 0x0000, 0x3637, + 0x0000, 0x414f, 0x0000, 0x757a, 0x5031, 0x0000, 0x0000, 0x5565, + 0x0000, 0x4e53, 0x0000, 0x0000, 0x3d6f, 0x3362, 0x0000, 0x382b, + 0x0000, 0x5536, 0x0000, 0x6d3d, 0x0000, 0x364f, 0x0000, 0x4b39, + 0x5042, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x373d, 0x0000, 0x0000, 0x6c36, 0x4a29, 0x0000, 0x0000, + 0x0000, 0x4554, 0x0000, 0x6c39, 0x6c38, 0x4243, 0x6c37, 0x0000, + 0x0000, 0x0000, 0x0000, 0x507d, 0x6c3a, 0x0000, 0x6c3b, 0x5765, + 0x0000, 0x0000, 0x6c3c, 0x0000, 0x0000, 0x0000, 0x6c3d, 0x466c, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4e5e, 0x0000, 0x3c48, 0x0000, 0x0000, 0x4855, 0x3529, 0x3e49, + 0x563c, 0x5467, 0x0000, 0x0000, 0x512e, 0x5071, 0x6a38, 0x6a39, + 0x6a3a, 0x3a35, 0x0000, 0x0000, 0x0000, 0x0000, 0x4a31, 0x3f75, + 0x0000, 0x0000, 0x4d7a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short gb2312_from_unicode_66[] = { + 0x6a40, 0x0000, 0x303a, 0x6a3e, 0x0000, 0x0000, 0x4025, 0x0000, + 0x0000, 0x0000, 0x6a3b, 0x0000, 0x327d, 0x0000, 0x4377, 0x3b68, + 0x0000, 0x0000, 0x0000, 0x5257, 0x4e74, 0x6a3f, 0x0000, 0x0000, + 0x0000, 0x6a3c, 0x0000, 0x0000, 0x0000, 0x6a43, 0x0000, 0x5047, + 0x5333, 0x0000, 0x0000, 0x0000, 0x0000, 0x343a, 0x0000, 0x4341, + 0x5772, 0x0000, 0x0000, 0x0000, 0x0000, 0x5551, 0x0000, 0x4a47, + 0x0000, 0x6a45, 0x0000, 0x0000, 0x6a44, 0x6a47, 0x6a46, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x5667, 0x0000, 0x4f54, 0x0000, + 0x0000, 0x6a4b, 0x0000, 0x3b4e, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x3d7a, 0x494e, 0x0000, 0x0000, 0x6a4c, + 0x0000, 0x0000, 0x4939, 0x4f7e, 0x6a4a, 0x544e, 0x6a4d, 0x6a4f, + 0x0000, 0x0000, 0x4d6d, 0x0000, 0x0000, 0x0000, 0x0000, 0x6a49, + 0x0000, 0x6a4e, 0x0000, 0x0000, 0x4e6e, 0x0000, 0x3b5e, 0x0000, + 0x333f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4655, 0x3e30, + 0x4e7a, 0x0000, 0x0000, 0x0000, 0x4767, 0x0000, 0x3e27, 0x6a50, + 0x0000, 0x0000, 0x5647, 0x0000, 0x0000, 0x0000, 0x4140, 0x0000, + 0x0000, 0x0000, 0x545d, 0x0000, 0x6a51, 0x0000, 0x0000, 0x4f3e, + 0x0000, 0x0000, 0x0000, 0x0000, 0x6a52, 0x0000, 0x0000, 0x0000, + 0x0000, 0x4a6e, 0x0000, 0x0000, 0x0000, 0x0000, 0x452f, 0x3035, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6a54, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6a53, + 0x745f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x443a, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3129, 0x0000, 0x0000, 0x0000, + 0x0000, 0x655f, 0x0000, 0x0000, 0x0000, 0x0000, 0x6a55, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x4a6f, 0x0000, 0x6a56, 0x6a57, 0x4658, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6a58, 0x0000, + 0x0000, 0x6a59, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x543b, 0x0000, 0x477a, 0x5237, 0x387c, 0x0000, 0x0000, 0x6a42, + 0x0000, 0x325c, 0x0000, 0x0000, 0x427c, 0x0000, 0x5478, 0x4c66 +}; + +static unsigned short gb2312_from_unicode_67[] = { + 0x576e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5442, 0x5350, 0x6b43, 0x4573, 0x0000, 0x377e, 0x0000, 0x0000, + 0x6b54, 0x0000, 0x0000, 0x0000, 0x4b37, 0x6b5e, 0x0000, 0x404a, + 0x0000, 0x0000, 0x0000, 0x4d7b, 0x0000, 0x332f, 0x0000, 0x465a, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6b7c, 0x0000, + 0x443e, 0x0000, 0x4e34, 0x4429, 0x313e, 0x547d, 0x0000, 0x4a75, + 0x0000, 0x566c, 0x0000, 0x0000, 0x4653, 0x3664, 0x0000, 0x0000, + 0x0000, 0x0000, 0x3b7a, 0x0000, 0x0000, 0x5060, 0x0000, 0x0000, + 0x4931, 0x0000, 0x5453, 0x4828, 0x0000, 0x0000, 0x384b, 0x0000, + 0x683e, 0x493c, 0x0000, 0x0000, 0x683b, 0x0000, 0x406e, 0x5053, + 0x3244, 0x3465, 0x0000, 0x683c, 0x0000, 0x0000, 0x5548, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3645, 0x0000, 0x683d, 0x4a78, + 0x385c, 0x4c75, 0x0000, 0x0000, 0x0000, 0x4034, 0x0000, 0x0000, + 0x516e, 0x683f, 0x6842, 0x0000, 0x0000, 0x3a3c, 0x0000, 0x312d, + 0x3d5c, 0x0000, 0x6a3d, 0x6843, 0x0000, 0x6846, 0x0000, 0x684b, + 0x0000, 0x0000, 0x0000, 0x0000, 0x684c, 0x0000, 0x4b49, 0x3065, + 0x0000, 0x3c2b, 0x0000, 0x0000, 0x3939, 0x0000, 0x0000, 0x6841, + 0x0000, 0x4d77, 0x0000, 0x684a, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4e76, 0x0000, 0x0000, 0x0000, 0x0000, 0x556d, 0x0000, 0x4156, + 0x6844, 0x0000, 0x4336, 0x0000, 0x397b, 0x5626, 0x6848, 0x0000, + 0x0000, 0x0000, 0x4a60, 0x5466, 0x0000, 0x6840, 0x0000, 0x6845, + 0x6847, 0x0000, 0x4739, 0x3763, 0x0000, 0x6849, 0x0000, 0x3f5d, + 0x6852, 0x0000, 0x0000, 0x6857, 0x0000, 0x6855, 0x3c5c, 0x3c4f, + 0x685b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x685e, 0x0000, 0x685a, 0x317a, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3058, + 0x4433, 0x384c, 0x4662, 0x483e, 0x4861, 0x0000, 0x0000, 0x0000, + 0x684f, 0x6854, 0x6856, 0x0000, 0x3971, 0x6858, 0x5775, 0x0000, + 0x447b, 0x0000, 0x685c, 0x0000, 0x0000, 0x3269, 0x0000, 0x0000, + 0x0000, 0x6851, 0x0000, 0x0000, 0x3c6d, 0x0000, 0x0000, 0x3f42, + 0x684d, 0x5679, 0x0000, 0x4178, 0x3271, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x685f, 0x0000, 0x4a41 +}; + +static unsigned short gb2312_from_unicode_68[] = { + 0x6859, 0x0000, 0x0000, 0x0000, 0x0000, 0x5524, 0x0000, 0x316a, + 0x553b, 0x684e, 0x6850, 0x3630, 0x6853, 0x0000, 0x685d, 0x4038, + 0x0000, 0x4a77, 0x0000, 0x4b28, 0x0000, 0x0000, 0x465c, 0x4075, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6869, 0x0000, 0x0000, + 0x0000, 0x5023, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6872, 0x566a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6860, 0x6861, 0x0000, 0x0000, 0x0000, 0x5179, + 0x3a4b, 0x3879, 0x0000, 0x0000, 0x3871, 0x5454, 0x686f, 0x0000, + 0x686e, 0x686c, 0x3970, 0x4c52, 0x6866, 0x4e26, 0x3f72, 0x0000, + 0x3038, 0x6871, 0x6870, 0x0000, 0x5740, 0x0000, 0x6864, 0x0000, + 0x4d29, 0x4923, 0x0000, 0x3b38, 0x3d5b, 0x686a, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6862, 0x6863, 0x6865, 0x3535, 0x6867, 0x4745, 0x686b, 0x686d, + 0x3d30, 0x572e, 0x0000, 0x6878, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x6875, 0x0000, 0x4d30, 0x6876, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x413a, 0x0000, 0x6868, 0x0000, 0x4337, 0x3070, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6874, + 0x0000, 0x0000, 0x0000, 0x6877, 0x0000, 0x0000, 0x0000, 0x3923, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x4952, 0x0000, 0x0000, 0x0000, 0x434e, 0x4e60, + 0x4066, 0x0000, 0x0000, 0x0000, 0x0000, 0x4b73, 0x0000, 0x4c5d, + 0x5035, 0x0000, 0x0000, 0x4a61, 0x0000, 0x6873, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3c6c, 0x0000, 0x6879, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x435e, 0x0000, 0x4665, 0x0000, 0x3977, 0x0000, 0x0000, + 0x0000, 0x0000, 0x3074, 0x0000, 0x0000, 0x5758, 0x0000, 0x0000, + 0x3c2c, 0x0000, 0x456f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4c44, 0x0000, 0x0000, 0x6926, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x492d, 0x0000, + 0x6922, 0x4062, 0x0000, 0x0000, 0x0000, 0x3f43, 0x0000, 0x0000, + 0x0000, 0x687e, 0x3957, 0x0000, 0x687b, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short gb2312_from_unicode_69[] = { + 0x0000, 0x6924, 0x0000, 0x0000, 0x0000, 0x524e, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x6923, 0x0000, 0x5632, 0x5735, 0x0000, + 0x6927, 0x0000, 0x3d37, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x687c, + 0x687d, 0x0000, 0x0000, 0x0000, 0x6921, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4d56, 0x0000, 0x0000, + 0x522c, 0x0000, 0x0000, 0x0000, 0x6932, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6929, 0x0000, 0x0000, 0x0000, 0x342a, 0x0000, 0x343b, + 0x0000, 0x0000, 0x692b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x5028, 0x0000, 0x0000, 0x6925, + 0x0000, 0x0000, 0x337e, 0x0000, 0x0000, 0x692c, 0x4063, 0x0000, + 0x692a, 0x0000, 0x0000, 0x6939, 0x0000, 0x0000, 0x6938, 0x0000, + 0x0000, 0x0000, 0x0000, 0x692e, 0x0000, 0x0000, 0x687a, 0x0000, + 0x0000, 0x6928, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3f2c, + 0x6931, 0x693a, 0x0000, 0x0000, 0x4225, 0x0000, 0x0000, 0x0000, + 0x692f, 0x0000, 0x3845, 0x0000, 0x692d, 0x0000, 0x535c, 0x6934, + 0x6935, 0x6937, 0x0000, 0x0000, 0x0000, 0x6947, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4046, 0x6945, 0x0000, 0x0000, + 0x6930, 0x0000, 0x0000, 0x693b, 0x3071, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x693c, + 0x5525, 0x0000, 0x0000, 0x693e, 0x0000, 0x693f, 0x0000, 0x0000, + 0x0000, 0x6941, 0x0000, 0x0000, 0x4171, 0x0000, 0x0000, 0x4836, + 0x0000, 0x0000, 0x0000, 0x693d, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6942, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6943, 0x0000, 0x6933, 0x0000, 0x6936, 0x0000, + 0x3b31, 0x0000, 0x0000, 0x0000, 0x6940, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x3c77, 0x0000, 0x0000, 0x0000, 0x6944, + 0x6946, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x694a, 0x0000, 0x0000, + 0x0000, 0x0000, 0x694e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x325b, 0x0000, 0x6948 +}; + +static unsigned short gb2312_from_unicode_6a[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x372e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x694b, + 0x694c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5541, + 0x0000, 0x4423, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6958, 0x0000, 0x3a61, 0x0000, 0x0000, 0x0000, 0x0000, 0x6949, + 0x0000, 0x5323, 0x0000, 0x0000, 0x0000, 0x6954, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6957, 0x6950, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x694f, 0x0000, 0x0000, 0x4741, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6952, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6959, 0x3348, 0x0000, 0x6953, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x4f70, 0x0000, 0x0000, 0x0000, 0x694d, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x3377, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6956, 0x0000, 0x0000, 0x695a, 0x0000, 0x0000, 0x0000, + 0x4c34, 0x0000, 0x0000, 0x0000, 0x4f2d, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6955, 0x0000, + 0x695c, 0x695b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x695e, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6951, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x695d, 0x0000, 0x695f, 0x434a, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short gb2312_from_unicode_6b[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4737, 0x344e, 0x3b36, 0x5040, 0x6c23, 0x0000, 0x0000, 0x4537, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x537b, 0x0000, 0x0000, 0x0000, 0x0000, 0x6c24, + 0x0000, 0x6c25, 0x465b, 0x0000, 0x0000, 0x0000, 0x3f6e, 0x0000, + 0x0000, 0x0000, 0x0000, 0x6c26, 0x0000, 0x0000, 0x6c27, 0x502a, + 0x0000, 0x4738, 0x0000, 0x0000, 0x3868, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6c28, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x5639, 0x557d, 0x344b, 0x323d, 0x4e64, 0x4667, + 0x0000, 0x0000, 0x4d61, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x3475, 0x0000, 0x4b40, 0x3c5f, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6962, 0x6963, 0x516a, 0x6965, 0x0000, 0x3479, 0x6964, + 0x0000, 0x5133, 0x4a62, 0x3250, 0x0000, 0x6968, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6966, 0x6967, 0x0000, 0x0000, 0x5633, 0x0000, + 0x0000, 0x0000, 0x6969, 0x696a, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x696b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x696c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x6c2f, 0x4539, 0x364e, 0x0000, 0x5273, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x356e, + 0x0000, 0x3b59, 0x6c31, 0x0000, 0x0000, 0x5263, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x4e63, 0x0000, 0x4438, 0x0000, 0x433f, + 0x0000, 0x0000, 0x363e, 0x5839, 0x3148, 0x314f, 0x3151, 0x457e, + 0x0000, 0x3150, 0x0000, 0x432b, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5531, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6b24, 0x3a41, 0x0000, 0x0000, 0x0000, 0x4c3a, + 0x0000, 0x0000, 0x0000, 0x6b25, 0x0000, 0x6b27, 0x0000, 0x0000, + 0x0000, 0x6b28, 0x0000, 0x0000, 0x0000, 0x6b26, 0x0000, 0x0000 +}; + +static unsigned short gb2312_from_unicode_6c[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6b29, 0x6b2b, 0x6b2a, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6b2c, 0x0000, 0x4a4f, + 0x5835, 0x4371, 0x0000, 0x4325, 0x4678, 0x6b2d, 0x444a, 0x0000, + 0x6b2e, 0x6b2f, 0x6b30, 0x3755, 0x0000, 0x0000, 0x0000, 0x377a, + 0x0000, 0x6b31, 0x4762, 0x0000, 0x6b33, 0x0000, 0x3a24, 0x5175, + 0x3031, 0x6b32, 0x6b34, 0x0000, 0x0000, 0x0000, 0x352a, 0x4248, + 0x4768, 0x0000, 0x6b35, 0x0000, 0x4b2e, 0x635f, 0x0000, 0x0000, + 0x5340, 0x0000, 0x0000, 0x0000, 0x0000, 0x595b, 0x0000, 0x0000, + 0x4d21, 0x562d, 0x4773, 0x0000, 0x0000, 0x0000, 0x5960, 0x3b63, + 0x0000, 0x3a3a, 0x6362, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4f2b, 0x0000, 0x0000, 0x0000, 0x6360, 0x4947, 0x0000, 0x3a39, + 0x0000, 0x0000, 0x0000, 0x5134, 0x6361, 0x486a, 0x392f, 0x3d2d, + 0x3358, 0x4e5b, 0x0000, 0x0000, 0x4c40, 0x0000, 0x0000, 0x0000, + 0x6368, 0x6369, 0x4d74, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4c2d, 0x0000, 0x3c33, 0x0000, 0x636a, 0x0000, 0x636b, 0x0000, + 0x0000, 0x505a, 0x0000, 0x0000, 0x0000, 0x467b, 0x375a, 0x0000, + 0x0000, 0x475f, 0x524a, 0x4e56, 0x0000, 0x6364, 0x636c, 0x0000, + 0x4972, 0x3341, 0x0000, 0x0000, 0x6367, 0x0000, 0x0000, 0x4663, + 0x6365, 0x0000, 0x0000, 0x6d33, 0x6366, 0x0000, 0x0000, 0x0000, + 0x0000, 0x4933, 0x0000, 0x4566, 0x0000, 0x0000, 0x0000, 0x3935, + 0x0000, 0x433b, 0x0000, 0x6363, 0x453d, 0x4124, 0x4259, 0x3257, + 0x0000, 0x636d, 0x3b26, 0x442d, 0x0000, 0x6370, 0x3e5a, 0x0000, + 0x0000, 0x637b, 0x6375, 0x3a53, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3750, 0x534d, 0x0000, 0x564e, 0x5553, 0x3941, 0x5534, 0x5158, + 0x0000, 0x0000, 0x0000, 0x0000, 0x5039, 0x4776, 0x0000, 0x0000, + 0x0000, 0x482a, 0x3234, 0x0000, 0x435a, 0x0000, 0x0000, 0x0000, + 0x636e, 0x0000, 0x0000, 0x637c, 0x636f, 0x3728, 0x6377, 0x6374, + 0x0000, 0x0000, 0x0000, 0x373a, 0x0000, 0x0000, 0x4522, 0x0000, + 0x6376, 0x455d, 0x3228, 0x467c, 0x0000, 0x4460, 0x0000, 0x0000, + 0x5722, 0x0000, 0x4061, 0x6379, 0x0000, 0x0000, 0x637a, 0x637d, + 0x4c29, 0x6373, 0x0000, 0x533e, 0x0000, 0x3143, 0x6d34, 0x6371, + 0x6372, 0x0000, 0x6378, 0x503a, 0x4643, 0x5473, 0x637e, 0x0000 +}; + +static unsigned short gb2312_from_unicode_6d[] = { + 0x0000, 0x3d60, 0x0000, 0x0000, 0x6427, 0x0000, 0x0000, 0x6426, + 0x0000, 0x0000, 0x0000, 0x5173, 0x6423, 0x0000, 0x6429, 0x0000, + 0x0000, 0x0000, 0x4877, 0x0000, 0x0000, 0x0000, 0x0000, 0x4f34, + 0x0000, 0x6428, 0x642e, 0x4265, 0x0000, 0x0000, 0x3634, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3d72, 0x0000, 0x6422, + 0x0000, 0x0000, 0x3a69, 0x642a, 0x0000, 0x0000, 0x642c, 0x0000, + 0x0000, 0x367d, 0x565e, 0x6432, 0x0000, 0x642d, 0x0000, 0x0000, + 0x0000, 0x6421, 0x0000, 0x3b6e, 0x4d5d, 0x4722, 0x4549, 0x0000, + 0x0000, 0x4177, 0x0000, 0x6424, 0x0000, 0x4733, 0x3d2c, 0x3d3d, + 0x6425, 0x0000, 0x5747, 0x3262, 0x0000, 0x642b, 0x3c43, 0x642f, + 0x0000, 0x3b6b, 0x6430, 0x4528, 0x6431, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5563, 0x3f23, 0x0000, 0x643a, 0x0000, 0x6437, 0x0000, + 0x643b, 0x0000, 0x0000, 0x643d, 0x0000, 0x0000, 0x4656, 0x0000, + 0x0000, 0x3a46, 0x404b, 0x0000, 0x0000, 0x0000, 0x3821, 0x6434, + 0x0000, 0x0000, 0x0000, 0x0000, 0x5421, 0x0000, 0x0000, 0x3a23, + 0x3d7e, 0x0000, 0x0000, 0x0000, 0x643c, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x4d3f, 0x0000, 0x0000, 0x4479, 0x0000, 0x0000, + 0x4f7b, 0x4966, 0x0000, 0x0000, 0x533f, 0x0000, 0x4f51, 0x0000, + 0x0000, 0x6433, 0x0000, 0x6438, 0x6439, 0x4c69, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x4c4e, 0x0000, 0x4054, 0x6435, 0x4130, + 0x6436, 0x4e50, 0x0000, 0x3b41, 0x3553, 0x0000, 0x4873, 0x3d27, + 0x5547, 0x492c, 0x3822, 0x644a, 0x0000, 0x0000, 0x644c, 0x5144, + 0x0000, 0x0000, 0x523a, 0x0000, 0x0000, 0x3a2d, 0x0000, 0x0000, + 0x3a54, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6443, + 0x356d, 0x0000, 0x0000, 0x0000, 0x574d, 0x6440, 0x4f7d, 0x643f, + 0x0000, 0x0000, 0x0000, 0x415c, 0x4c4a, 0x0000, 0x0000, 0x0000, + 0x0000, 0x4a67, 0x0000, 0x0000, 0x0000, 0x0000, 0x4457, 0x0000, + 0x4c54, 0x6448, 0x0000, 0x0000, 0x0000, 0x6447, 0x6441, 0x0000, + 0x6444, 0x352d, 0x0000, 0x0000, 0x5359, 0x0000, 0x6446, 0x0000, + 0x0000, 0x0000, 0x0000, 0x5279, 0x3463, 0x0000, 0x3b34, 0x0000, + 0x0000, 0x496e, 0x0000, 0x343e, 0x0000, 0x0000, 0x0000, 0x3b6c, + 0x0000, 0x514d, 0x0000, 0x4c6d, 0x6d35, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short gb2312_from_unicode_6e[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4765, 0x0000, 0x0000, + 0x0000, 0x0000, 0x5428, 0x0000, 0x644b, 0x5755, 0x6442, 0x0000, + 0x3d25, 0x6445, 0x0000, 0x0000, 0x5366, 0x0000, 0x6449, 0x4978, + 0x0000, 0x0000, 0x643e, 0x0000, 0x0000, 0x5365, 0x0000, 0x0000, + 0x477e, 0x3649, 0x0000, 0x547c, 0x3233, 0x6457, 0x0000, 0x0000, + 0x0000, 0x4e42, 0x0000, 0x644d, 0x0000, 0x4e3c, 0x0000, 0x385b, + 0x0000, 0x0000, 0x6456, 0x0000, 0x3f4a, 0x0000, 0x0000, 0x0000, + 0x534e, 0x0000, 0x436c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x4548, 0x6458, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4d44, 0x644f, 0x0000, + 0x0000, 0x0000, 0x0000, 0x6454, 0x6455, 0x0000, 0x3a7e, 0x0000, + 0x4f66, 0x0000, 0x0000, 0x553f, 0x0000, 0x0000, 0x0000, 0x6452, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x6450, 0x0000, 0x0000, 0x644e, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4d65, 0x4a2a, + 0x0000, 0x0000, 0x0000, 0x4023, 0x0000, 0x3d26, 0x6453, 0x0000, + 0x0000, 0x3848, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6467, + 0x5434, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x645b, 0x0000, 0x0000, 0x0000, 0x416f, 0x0000, 0x0000, 0x6469, + 0x0000, 0x0000, 0x5267, 0x0000, 0x0000, 0x645f, 0x0000, 0x6460, + 0x0000, 0x0000, 0x4f2a, 0x0000, 0x0000, 0x0000, 0x0000, 0x4b5d, + 0x0000, 0x645a, 0x6451, 0x0000, 0x6465, 0x0000, 0x485c, 0x6463, + 0x0000, 0x0000, 0x4467, 0x6462, 0x0000, 0x6461, 0x0000, 0x0000, + 0x0000, 0x337c, 0x6468, 0x0000, 0x0000, 0x0000, 0x0000, 0x3561, + 0x0000, 0x0000, 0x0000, 0x574c, 0x0000, 0x0000, 0x0000, 0x6466, + 0x0000, 0x3b2c, 0x0000, 0x5752, 0x4c4f, 0x6b78, 0x0000, 0x6464, + 0x0000, 0x0000, 0x3976, 0x0000, 0x0000, 0x0000, 0x564d, 0x6459, + 0x645c, 0x427a, 0x645e, 0x0000, 0x424b, 0x4044, 0x4250, 0x0000, + 0x3175, 0x4c32, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x354e, 0x0000, 0x0000, 0x0000, + 0x0000, 0x646f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short gb2312_from_unicode_6f[] = { + 0x0000, 0x0000, 0x462f, 0x0000, 0x0000, 0x0000, 0x4661, 0x0000, + 0x0000, 0x6475, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4229, + 0x0000, 0x0000, 0x0000, 0x406c, 0x515d, 0x646e, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x442e, 0x0000, 0x0000, 0x0000, 0x646d, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6476, 0x6474, 0x427e, 0x0000, 0x645d, 0x0000, 0x6470, + 0x0000, 0x4a7e, 0x0000, 0x5544, 0x0000, 0x0000, 0x6471, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x517a, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x646b, 0x646c, + 0x0000, 0x0000, 0x0000, 0x6472, 0x0000, 0x4e2b, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x454b, 0x0000, 0x0000, 0x0000, 0x4731, 0x0000, 0x423a, 0x0000, + 0x0000, 0x0000, 0x646a, 0x0000, 0x0000, 0x0000, 0x414a, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4c36, 0x3331, 0x0000, + 0x0000, 0x0000, 0x647b, 0x0000, 0x6473, 0x0000, 0x0000, 0x0000, + 0x647a, 0x0000, 0x647d, 0x0000, 0x647c, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x334e, 0x0000, 0x0000, 0x0000, + 0x333a, 0x6477, 0x0000, 0x0000, 0x6479, 0x6478, 0x456c, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x403d, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5468, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6522, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x3044, 0x0000, 0x0000, 0x6524, 0x0000, + 0x0000, 0x6523, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3c24, 0x0000, 0x6525, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6521, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x647e, 0x3174, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6528, 0x0000, + 0x6529, 0x6526, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6527, 0x652a, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short gb2312_from_unicode_70[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x4659, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x652b, 0x652d, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x652c, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x652f, 0x0000, 0x0000, + 0x0000, 0x652e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3960, 0x0000, 0x0000, 0x6530, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6531, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x3b70, 0x6c61, 0x4370, 0x0000, 0x3546, + 0x3b52, 0x0000, 0x0000, 0x0000, 0x0000, 0x4169, 0x546e, 0x0000, + 0x3e44, 0x0000, 0x0000, 0x0000, 0x5746, 0x0000, 0x5456, 0x3253, + 0x6c3e, 0x0000, 0x0000, 0x0000, 0x0000, 0x6a41, 0x0000, 0x0000, + 0x0000, 0x422f, 0x3436, 0x0000, 0x0000, 0x0000, 0x5157, 0x0000, + 0x0000, 0x0000, 0x3334, 0x0000, 0x4832, 0x3f3b, 0x6c40, 0x0000, + 0x0000, 0x564b, 0x0000, 0x0000, 0x6c3f, 0x6c41, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x6c45, 0x3e66, 0x4c3f, 0x455a, 0x3e3c, + 0x0000, 0x6c46, 0x0000, 0x317e, 0x0000, 0x0000, 0x0000, 0x6c44, + 0x5528, 0x3563, 0x0000, 0x6c42, 0x4136, 0x3363, 0x0000, 0x0000, + 0x6c43, 0x4b38, 0x4043, 0x4c7e, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4152, 0x0000, 0x6c48, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3a66, 0x4053, 0x0000, 0x5672, 0x0000, 0x0000, 0x0000, 0x514c, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3f3e, 0x0000, 0x3733, 0x4955, + 0x6c47, 0x3b62, 0x0000, 0x4c4c, 0x3d7d, 0x4848, 0x0000, 0x4f29, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4d69, + 0x0000, 0x456b, 0x0000, 0x0000, 0x0000, 0x3769, 0x0000, 0x0000 +}; + +static unsigned short gb2312_from_unicode_71[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5149, 0x3a38, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6c49, 0x0000, 0x0000, 0x6c4a, 0x0000, 0x3b40, 0x6c4b, 0x0000, + 0x6c62, 0x313a, 0x3759, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3d39, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6c4c, + 0x5166, 0x6c4d, 0x0000, 0x0000, 0x0000, 0x0000, 0x483b, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6c51, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6c53, 0x0000, 0x3b4d, 0x0000, 0x3c65, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x6c4f, 0x0000, 0x4937, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x433a, 0x0000, 0x6c63, 0x5555, + 0x6c50, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5673, 0x0000, + 0x0000, 0x0000, 0x6c52, 0x6c4e, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6c54, 0x0000, 0x6c55, 0x0000, 0x0000, 0x493f, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4f28, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x505c, 0x0000, 0x0000, 0x0000, 0x0000, 0x512c, + 0x0000, 0x0000, 0x0000, 0x0000, 0x485b, 0x0000, 0x0000, 0x0000, + 0x6c56, 0x4e75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4a6c, + 0x6c5a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6c59, 0x0000, 0x0000, 0x0000, 0x303e, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x6c57, 0x0000, 0x6c58, 0x0000, 0x0000, + 0x0000, 0x6c64, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x483c, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4147, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x6c5c, 0x5160, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6c5b, 0x0000, 0x0000, 0x0000, 0x0000, 0x546f, 0x0000, 0x6c5d, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5b46, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6c5e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short gb2312_from_unicode_72[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x312c, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6c5f, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6c60, 0x0000, 0x5726, 0x0000, 0x4540, 0x0000, 0x0000, 0x0000, + 0x6b3c, 0x302e, 0x0000, 0x0000, 0x0000, 0x3e74, 0x3838, 0x522f, + 0x3056, 0x3579, 0x0000, 0x5833, 0x0000, 0x4b2c, 0x0000, 0x635d, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x462c, + 0x3066, 0x0000, 0x0000, 0x0000, 0x4546, 0x6b39, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6b3a, 0x0000, 0x0000, 0x0000, 0x6b3b, 0x0000, + 0x0000, 0x5140, 0x0000, 0x4523, 0x0000, 0x6a72, 0x0000, 0x4432, + 0x0000, 0x4435, 0x404e, 0x0000, 0x0000, 0x0000, 0x6a73, 0x4441, + 0x0000, 0x4e6f, 0x0000, 0x0000, 0x0000, 0x0000, 0x6a70, 0x6a74, + 0x0000, 0x0000, 0x497c, 0x0000, 0x0000, 0x4723, 0x0000, 0x0000, + 0x0000, 0x4c58, 0x4e7e, 0x0000, 0x0000, 0x0000, 0x6a75, 0x6a76, + 0x4f2c, 0x4067, 0x0000, 0x0000, 0x6a77, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x363f, 0x6a78, 0x0000, 0x6a79, 0x0000, 0x6a7a, + 0x0000, 0x0000, 0x6a7b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6a71, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x482e, 0x616b, 0x0000, 0x3738, + 0x616c, 0x0000, 0x0000, 0x0000, 0x616d, 0x0000, 0x5734, 0x616e, + 0x616f, 0x534c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6171, 0x3f71, 0x6170, 0x3552, 0x0000, 0x0000, 0x0000, + 0x3137, 0x0000, 0x0000, 0x0000, 0x0000, 0x6173, 0x6172, 0x0000, + 0x3a7c, 0x0000, 0x6174, 0x0000, 0x0000, 0x0000, 0x0000, 0x3937, + 0x0000, 0x3e51, 0x0000, 0x0000, 0x0000, 0x0000, 0x447c, 0x0000, + 0x3a5d, 0x3d46, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6175, 0x6177, 0x0000, 0x0000, 0x3640, 0x4f41, 0x4a28, 0x6176, + 0x5578, 0x537c, 0x6178, 0x617c, 0x6179, 0x0000, 0x0000, 0x617a, + 0x406a, 0x0000, 0x617e, 0x6221, 0x4047, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short gb2312_from_unicode_73[] = { + 0x0000, 0x617b, 0x0000, 0x617d, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6225, 0x0000, 0x0000, 0x0000, 0x4154, 0x0000, + 0x0000, 0x0000, 0x0000, 0x6223, 0x0000, 0x6228, 0x327e, 0x6222, + 0x0000, 0x0000, 0x0000, 0x434d, 0x3242, 0x6227, 0x6226, 0x0000, + 0x0000, 0x6224, 0x6229, 0x0000, 0x0000, 0x622b, 0x0000, 0x0000, + 0x0000, 0x5049, 0x566d, 0x4328, 0x622c, 0x0000, 0x4f57, 0x0000, + 0x0000, 0x622e, 0x0000, 0x0000, 0x3a6f, 0x0000, 0x0000, 0x6960, + 0x622d, 0x622a, 0x0000, 0x0000, 0x0000, 0x0000, 0x3b2b, 0x5433, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6230, 0x0000, 0x0000, + 0x622f, 0x0000, 0x6961, 0x0000, 0x0000, 0x0000, 0x0000, 0x6231, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6232, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x6233, 0x4c21, 0x0000, 0x6234, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6235, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x507e, 0x0000, 0x0000, 0x424a, + 0x0000, 0x5371, 0x0000, 0x4d75, 0x0000, 0x0000, 0x6760, 0x0000, + 0x0000, 0x6761, 0x0000, 0x0000, 0x0000, 0x0000, 0x3e41, 0x0000, + 0x0000, 0x0000, 0x0000, 0x426a, 0x0000, 0x0000, 0x0000, 0x6764, + 0x0000, 0x0000, 0x6763, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x4d66, 0x0000, 0x4335, 0x0000, 0x0000, 0x6762, 0x3b37, + 0x4f56, 0x0000, 0x4161, 0x6769, 0x0000, 0x0000, 0x0000, 0x6768, + 0x0000, 0x0000, 0x6774, 0x3223, 0x0000, 0x0000, 0x0000, 0x0000, + 0x676a, 0x0000, 0x6766, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x676c, 0x676b, 0x493a, 0x0000, 0x0000, 0x5564, 0x0000, 0x6765, + 0x3729, 0x6767, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x676e, 0x0000, 0x0000, 0x0000, 0x0000, 0x6773, 0x0000, + 0x5669, 0x0000, 0x0000, 0x0000, 0x0000, 0x676d, 0x0000, 0x6772, + 0x0000, 0x6771, 0x0000, 0x0000, 0x0000, 0x3060, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6775, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short gb2312_from_unicode_74[] = { + 0x0000, 0x0000, 0x0000, 0x4772, 0x0000, 0x4045, 0x406d, 0x0000, + 0x0000, 0x4170, 0x6770, 0x0000, 0x0000, 0x0000, 0x0000, 0x6776, + 0x4b76, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6822, 0x6821, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x5741, 0x0000, 0x0000, 0x677a, 0x6779, 0x0000, + 0x677b, 0x0000, 0x6777, 0x0000, 0x677e, 0x0000, 0x677d, 0x0000, + 0x677c, 0x0000, 0x0000, 0x4155, 0x4759, 0x457d, 0x4543, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x476d, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6823, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6826, 0x0000, 0x6825, + 0x0000, 0x6827, 0x3a77, 0x6778, 0x6824, 0x0000, 0x4870, 0x492a, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6829, 0x0000, 0x0000, + 0x3965, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x517e, 0x6828, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x682a, 0x0000, + 0x682d, 0x682e, 0x0000, 0x4127, 0x0000, 0x0000, 0x0000, 0x682f, + 0x0000, 0x0000, 0x0000, 0x6830, 0x0000, 0x0000, 0x682c, 0x0000, + 0x6834, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x682b, 0x0000, 0x6831, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6835, + 0x6832, 0x6833, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6837, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6836, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x394f, 0x0000, 0x702c, 0x0000, + 0x702d, 0x0000, 0x4630, 0x306a, 0x483f, 0x0000, 0x4d5f, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4e4d, 0x6a31, + 0x0000, 0x0000, 0x0000, 0x0000, 0x6a32, 0x0000, 0x463f, 0x3449, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6a33 +}; + +static unsigned short gb2312_from_unicode_75[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x5567, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5d79, 0x0000, 0x6a34, + 0x0000, 0x6a35, 0x0000, 0x6a36, 0x0000, 0x0000, 0x0000, 0x0000, + 0x384a, 0x5f30, 0x4975, 0x0000, 0x4c70, 0x0000, 0x0000, 0x497a, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x497b, 0x0000, 0x0000, + 0x5343, 0x4b26, 0x0000, 0x3826, 0x702e, 0x3142, 0x0000, 0x6538, + 0x4c6f, 0x5349, 0x3c57, 0x496a, 0x0000, 0x3567, 0x0000, 0x4450, + 0x3569, 0x0000, 0x6e2e, 0x3b2d, 0x0000, 0x0000, 0x675e, 0x0000, + 0x6e2f, 0x0000, 0x0000, 0x0000, 0x0000, 0x3329, 0x0000, 0x0000, + 0x6e32, 0x0000, 0x0000, 0x6e31, 0x3d67, 0x0000, 0x6e30, 0x4e37, + 0x0000, 0x0000, 0x0000, 0x0000, 0x454f, 0x0000, 0x0000, 0x0000, + 0x0000, 0x4174, 0x5b4e, 0x6e33, 0x5073, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4254, 0x4668, 0x0000, + 0x0000, 0x0000, 0x372c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6e34, 0x0000, 0x336b, 0x0000, 0x0000, 0x0000, + 0x3b7b, 0x6e35, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x675c, + 0x0000, 0x0000, 0x0000, 0x6e36, 0x0000, 0x0000, 0x3d2e, 0x0000, + 0x0000, 0x0000, 0x0000, 0x7162, 0x0000, 0x0000, 0x0000, 0x4a68, + 0x0000, 0x5249, 0x705a, 0x0000, 0x705b, 0x0000, 0x705c, 0x4146, + 0x0000, 0x386d, 0x3e4e, 0x0000, 0x0000, 0x705e, 0x0000, 0x4531, + 0x705d, 0x5171, 0x0000, 0x7060, 0x304c, 0x3d6a, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x525f, 0x705f, 0x0000, 0x342f, 0x3768, + 0x7066, 0x7065, 0x4623, 0x7061, 0x7062, 0x3443, 0x0000, 0x0000, + 0x7063, 0x556e, 0x0000, 0x0000, 0x4c5b, 0x3e52, 0x3c32, 0x0000, + 0x0000, 0x0000, 0x7068, 0x7067, 0x7064, 0x3221, 0x0000, 0x5622, + 0x5338, 0x3e37, 0x482c, 0x0000, 0x0000, 0x706a, 0x0000, 0x0000, + 0x0000, 0x0000, 0x5177, 0x0000, 0x564c, 0x3a5b, 0x7069, 0x0000, + 0x363b, 0x0000, 0x0000, 0x4d34, 0x0000, 0x0000, 0x4626, 0x0000, + 0x0000, 0x0000, 0x4121, 0x706b, 0x706e, 0x0000, 0x706d, 0x7070, + 0x706c, 0x0000, 0x3b3e, 0x706f, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4c35, 0x7072, 0x0000, 0x0000, 0x3355, 0x0000, 0x0000, 0x0000, + 0x0000, 0x3154, 0x0000, 0x0000, 0x7073, 0x0000, 0x0000, 0x7074 +}; + +static unsigned short gb2312_from_unicode_76[] = { + 0x7076, 0x3461, 0x0000, 0x7071, 0x0000, 0x7077, 0x0000, 0x0000, + 0x0000, 0x0000, 0x707a, 0x0000, 0x7078, 0x0000, 0x0000, 0x0000, + 0x7075, 0x0000, 0x0000, 0x0000, 0x0000, 0x707d, 0x0000, 0x7079, + 0x707c, 0x707e, 0x0000, 0x7121, 0x0000, 0x0000, 0x0000, 0x4e41, + 0x7124, 0x0000, 0x7123, 0x0000, 0x4176, 0x707b, 0x4a5d, 0x0000, + 0x0000, 0x3471, 0x3171, 0x4c31, 0x0000, 0x7126, 0x0000, 0x0000, + 0x7127, 0x0000, 0x0000, 0x712c, 0x554e, 0x7129, 0x0000, 0x0000, + 0x4833, 0x0000, 0x0000, 0x0000, 0x7122, 0x0000, 0x712b, 0x7128, + 0x7125, 0x0000, 0x0000, 0x712a, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3029, 0x712d, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x712f, 0x0000, 0x7131, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x7130, 0x0000, 0x712e, 0x0000, + 0x0000, 0x0000, 0x0000, 0x5122, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x7132, 0x0000, 0x0000, 0x0000, 0x7133, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x396f, 0x0000, 0x0000, 0x3547, 0x0000, 0x3057, 0x3059, 0x0000, + 0x0000, 0x0000, 0x546d, 0x0000, 0x3544, 0x0000, 0x3d54, 0x3b4a, + 0x7027, 0x0000, 0x0000, 0x385e, 0x0000, 0x0000, 0x7028, 0x0000, + 0x0000, 0x3028, 0x0000, 0x7029, 0x0000, 0x0000, 0x4d6e, 0x0000, + 0x0000, 0x702a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x702b, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4624, 0x0000, + 0x0000, 0x5665, 0x7164, 0x0000, 0x7165, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4373, + 0x0000, 0x0000, 0x535b, 0x0000, 0x0000, 0x5651, 0x4568, 0x0000, + 0x532f, 0x0000, 0x5266, 0x0000, 0x0000, 0x6e41, 0x303b, 0x5535, + 0x514e, 0x3c60, 0x3a50, 0x0000, 0x3f78, 0x0000, 0x3847, 0x3541, + 0x454c, 0x0000, 0x0000, 0x4a22, 0x0000, 0x0000, 0x0000, 0x434b, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6e42, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x443f, 0x3622, + 0x0000, 0x6d6c, 0x4324, 0x0000, 0x5631, 0x0000, 0x0000, 0x0000, + 0x4f60, 0x6d6f, 0x0000, 0x0000, 0x454e, 0x0000, 0x365c, 0x0000 +}; + +static unsigned short gb2312_from_unicode_77[] = { + 0x0000, 0x4a21, 0x0000, 0x0000, 0x6d6d, 0x0000, 0x0000, 0x6d70, + 0x6d71, 0x433c, 0x0000, 0x3f34, 0x0000, 0x6d6e, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6d74, 0x6d72, 0x0000, 0x0000, 0x0000, 0x0000, 0x5566, + 0x435f, 0x0000, 0x6d73, 0x0000, 0x0000, 0x0000, 0x6d76, 0x0000, + 0x5523, 0x5123, 0x0000, 0x0000, 0x0000, 0x6d75, 0x0000, 0x4350, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6d77, 0x3f74, 0x3e6c, + 0x6d78, 0x0000, 0x4c77, 0x0000, 0x515b, 0x0000, 0x0000, 0x0000, + 0x5745, 0x5576, 0x0000, 0x6d7c, 0x0000, 0x0000, 0x0000, 0x6d7b, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6d79, 0x6d7a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6d7d, 0x3e26, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x4b2f, 0x6e21, 0x363d, 0x0000, 0x6e22, 0x4440, 0x0000, + 0x6d7e, 0x0000, 0x0000, 0x3d5e, 0x3247, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x3643, 0x0000, 0x0000, 0x0000, 0x6e25, 0x583a, 0x6e23, + 0x6e26, 0x0000, 0x0000, 0x0000, 0x4369, 0x3372, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x6e27, 0x6e24, 0x4f39, 0x0000, + 0x0000, 0x6e28, 0x4277, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6e29, + 0x6e2a, 0x0000, 0x5e2b, 0x0000, 0x0000, 0x4633, 0x0000, 0x4746, + 0x0000, 0x5675, 0x3549, 0x0000, 0x4b32, 0x0000, 0x0000, 0x0000, + 0x6e2b, 0x0000, 0x0000, 0x4d2b, 0x0000, 0x6e2c, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x5530, 0x0000, 0x6e2d, 0x0000, 0x7644, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5b47, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3423, + 0x0000, 0x0000, 0x0000, 0x432c, 0x7166, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x4a38, 0x5253, 0x0000, 0x562a, 0x0000, 0x6f72, + 0x0000, 0x3e58, 0x0000, 0x3d43, 0x6f73, 0x364c, 0x302b, 0x0000, + 0x0000, 0x0000, 0x0000, 0x4a2f, 0x0000, 0x0000, 0x6d36, 0x0000, + 0x6d37, 0x0000, 0x0000, 0x0000, 0x0000, 0x4e79, 0x372f, 0x3f73 +}; + +static unsigned short gb2312_from_unicode_78[] = { + 0x6d38, 0x426b, 0x4930, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6d39, 0x0000, 0x0000, 0x4676, 0x3f33, 0x0000, 0x0000, + 0x0000, 0x6d3c, 0x4578, 0x0000, 0x5150, 0x0000, 0x5729, 0x6d3a, + 0x6d3b, 0x0000, 0x5162, 0x0000, 0x6d3f, 0x6d40, 0x0000, 0x6d44, + 0x0000, 0x0000, 0x0000, 0x6d48, 0x0000, 0x6d46, 0x6d4e, 0x5568, + 0x0000, 0x6d49, 0x0000, 0x0000, 0x6d47, 0x6d3e, 0x0000, 0x0000, + 0x4569, 0x0000, 0x0000, 0x0000, 0x4646, 0x0000, 0x0000, 0x4969, + 0x5452, 0x6d41, 0x6d42, 0x6d43, 0x6d45, 0x0000, 0x4079, 0x0000, + 0x3421, 0x0000, 0x0000, 0x0000, 0x0000, 0x3968, 0x0000, 0x6d50, + 0x0000, 0x0000, 0x0000, 0x0000, 0x6d51, 0x0000, 0x6d4a, 0x0000, + 0x6d4f, 0x0000, 0x4e78, 0x0000, 0x0000, 0x4b36, 0x6d4c, 0x6d4d, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4f75, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6d52, 0x4172, 0x5332, 0x6d4b, 0x4837, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3c6f, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4570, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6d56, + 0x0000, 0x356f, 0x0000, 0x0000, 0x4235, 0x302d, 0x4b69, 0x0000, + 0x0000, 0x312e, 0x0000, 0x6d54, 0x0000, 0x0000, 0x0000, 0x4d6b, + 0x3562, 0x0000, 0x6d55, 0x6d53, 0x6d57, 0x0000, 0x0000, 0x357a, + 0x0000, 0x6d58, 0x0000, 0x6d59, 0x0000, 0x6d5c, 0x0000, 0x314c, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4576, 0x3c6e, 0x6d5a, 0x4c3c, 0x326a, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6d5b, 0x0000, 0x0000, 0x0000, 0x0000, 0x446b, 0x0000, + 0x0000, 0x3445, 0x0000, 0x0000, 0x0000, 0x3075, 0x0000, 0x0000, + 0x0000, 0x6d5f, 0x405a, 0x3468, 0x0000, 0x0000, 0x0000, 0x0000, + 0x454d, 0x0000, 0x0000, 0x0000, 0x6d5d, 0x3f44, 0x0000, 0x0000, + 0x0000, 0x6d5e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4425, 0x0000, 0x0000, 0x0000, 0x6d60, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6d61, 0x0000, 0x6d63, 0x0000, 0x0000, 0x4157, + 0x0000, 0x0000, 0x3b47, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short gb2312_from_unicode_79[] = { + 0x0000, 0x3d38, 0x0000, 0x0000, 0x0000, 0x6d62, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x6d64, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6d66, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x6d65, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x6d67, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x4a3e, 0x6c6a, 0x4071, 0x0000, 0x4967, 0x0000, + 0x6c6b, 0x466e, 0x0000, 0x0000, 0x0000, 0x0000, 0x6c6c, 0x0000, + 0x466d, 0x6c6d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x6c70, 0x0000, 0x0000, 0x5766, 0x6c73, + 0x0000, 0x0000, 0x6c71, 0x6c6e, 0x6c6f, 0x5723, 0x4971, 0x4b6e, + 0x6c74, 0x0000, 0x6c72, 0x0000, 0x0000, 0x4f69, 0x0000, 0x6c76, + 0x4631, 0x0000, 0x0000, 0x0000, 0x0000, 0x3c40, 0x0000, 0x6c75, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x353b, + 0x3b76, 0x0000, 0x6c77, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5977, 0x3d7b, 0x0000, 0x0000, 0x423b, 0x6c78, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6c79, 0x0000, 0x0000, 0x0000, 0x0000, 0x3823, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6c7a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6c7b, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x6c7c, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x536d, 0x582e, 0x406b, 0x0000, 0x475d, 0x3a4c, 0x0000, + 0x5063, 0x4b3d, 0x0000, 0x4d3a, 0x0000, 0x0000, 0x3851, 0x0000, + 0x0000, 0x317c, 0x0000, 0x476f, 0x0000, 0x5656, 0x0000, 0x0000, + 0x0000, 0x3f46, 0x436b, 0x0000, 0x0000, 0x6f75, 0x0000, 0x0000, + 0x4358, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5762, + 0x0000, 0x0000, 0x0000, 0x6f77, 0x3353, 0x0000, 0x4758, 0x516d, + 0x0000, 0x5648, 0x0000, 0x6f78, 0x0000, 0x6f76, 0x0000, 0x3b7d, + 0x3346, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3d55, 0x0000, 0x0000, 0x5246, 0x0000, 0x3b60, 0x0000, 0x0000 +}; + +static unsigned short gb2312_from_unicode_7a[] = { + 0x4f21, 0x0000, 0x6f7c, 0x6f7b, 0x0000, 0x0000, 0x6f79, 0x0000, + 0x0000, 0x0000, 0x0000, 0x334c, 0x0000, 0x4954, 0x4b30, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x6f7e, 0x0000, 0x0000, 0x305e, + 0x0000, 0x0000, 0x5649, 0x0000, 0x0000, 0x0000, 0x6f7d, 0x0000, + 0x336d, 0x0000, 0x0000, 0x7655, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x4e48, 0x0000, 0x0000, 0x0000, 0x7022, + 0x0000, 0x7021, 0x0000, 0x353e, 0x3c5a, 0x3b7c, 0x0000, 0x3865, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4442, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7023, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4b6b, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x7026, 0x0000, 0x0000, 0x0000, 0x5128, 0x0000, 0x3e3f, 0x476e, + 0x7136, 0x7137, 0x3f55, 0x0000, 0x0000, 0x0000, 0x0000, 0x3429, + 0x7138, 0x4d3b, 0x0000, 0x4754, 0x552d, 0x0000, 0x7139, 0x0000, + 0x713a, 0x0000, 0x0000, 0x0000, 0x0000, 0x474f, 0x0000, 0x0000, + 0x0000, 0x5224, 0x564f, 0x0000, 0x0000, 0x713b, 0x3d51, 0x3430, + 0x3e3d, 0x0000, 0x0000, 0x0000, 0x345c, 0x4e51, 0x0000, 0x3f5f, + 0x713d, 0x0000, 0x0000, 0x0000, 0x0000, 0x3f7a, 0x713c, 0x0000, + 0x713f, 0x0000, 0x0000, 0x0000, 0x713e, 0x7140, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x7141, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x417e, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x4122, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4a7a, 0x0000, + 0x0000, 0x553e, 0x0000, 0x0000, 0x0000, 0x0000, 0x3e3a, 0x3e39, + 0x5542, 0x0000, 0x0000, 0x3f22, 0x0000, 0x4d2f, 0x7135, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3d5f, 0x0000, 0x364b, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5671, 0x7343, 0x0000, 0x0000, 0x7344, 0x0000, 0x384d +}; + +static unsigned short gb2312_from_unicode_7b[] = { + 0x0000, 0x0000, 0x0000, 0x7346, 0x7347, 0x0000, 0x304a, 0x0000, + 0x7345, 0x0000, 0x7349, 0x4b71, 0x0000, 0x0000, 0x0000, 0x734b, + 0x0000, 0x5026, 0x0000, 0x0000, 0x314a, 0x7348, 0x0000, 0x0000, + 0x0000, 0x734f, 0x0000, 0x3551, 0x0000, 0x0000, 0x7357, 0x0000, + 0x7352, 0x0000, 0x0000, 0x0000, 0x7354, 0x7353, 0x377b, 0x0000, + 0x313f, 0x0000, 0x734e, 0x734a, 0x355a, 0x0000, 0x7350, 0x0000, + 0x0000, 0x7351, 0x0000, 0x7355, 0x0000, 0x0000, 0x0000, 0x0000, + 0x734d, 0x0000, 0x3c63, 0x0000, 0x417d, 0x0000, 0x7356, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x735a, 0x0000, 0x734c, + 0x0000, 0x3548, 0x0000, 0x3d6e, 0x735c, 0x0000, 0x0000, 0x3724, + 0x3f70, 0x567e, 0x4d32, 0x0000, 0x3470, 0x0000, 0x325f, 0x0000, + 0x7358, 0x0000, 0x7359, 0x4938, 0x0000, 0x735d, 0x0000, 0x0000, + 0x735e, 0x0000, 0x7361, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x735f, 0x0000, + 0x0000, 0x7363, 0x7362, 0x0000, 0x0000, 0x735b, 0x0000, 0x3f6a, + 0x0000, 0x336f, 0x0000, 0x7360, 0x0000, 0x0000, 0x4729, 0x0000, + 0x3c72, 0x0000, 0x0000, 0x0000, 0x0000, 0x736b, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x393f, 0x0000, 0x0000, + 0x7364, 0x0000, 0x0000, 0x0000, 0x322d, 0x3b7e, 0x0000, 0x4b63, + 0x0000, 0x0000, 0x0000, 0x0000, 0x736d, 0x7369, 0x0000, 0x0000, + 0x0000, 0x395c, 0x736e, 0x0000, 0x0000, 0x0000, 0x7365, 0x7366, + 0x736a, 0x4261, 0x736c, 0x736f, 0x7368, 0x3c7d, 0x0000, 0x0000, + 0x0000, 0x4f64, 0x0000, 0x0000, 0x7370, 0x0000, 0x0000, 0x0000, + 0x7367, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7372, 0x0000, 0x0000, 0x0000, 0x0000, 0x572d, 0x462a, + 0x0000, 0x0000, 0x0000, 0x0000, 0x7373, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7371, 0x0000, 0x4228, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x385d, 0x7375, 0x0000, 0x0000, 0x7374, 0x0000, 0x0000, + 0x0000, 0x345b, 0x0000, 0x0000, 0x0000, 0x7376, 0x7377, 0x0000, + 0x0000, 0x0000, 0x7378, 0x0000, 0x0000, 0x0000, 0x403a, 0x0000, + 0x0000, 0x4069, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4571, + 0x0000, 0x0000, 0x0000, 0x0000, 0x737b, 0x0000, 0x737a, 0x0000 +}; + +static unsigned short gb2312_from_unicode_7c[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3458, + 0x0000, 0x0000, 0x0000, 0x737e, 0x7379, 0x0000, 0x0000, 0x737c, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x737d, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7421, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7423, 0x3b49, + 0x0000, 0x0000, 0x7422, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x7424, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x323e, + 0x7426, 0x7425, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3c2e, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x4357, 0x5961, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x4060, 0x744c, 0x5751, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x375b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x744e, 0x4123, 0x0000, 0x0000, 0x4649, 0x0000, 0x3456, + 0x5533, 0x0000, 0x0000, 0x0000, 0x7450, 0x744f, 0x7451, 0x4b5a, + 0x0000, 0x0000, 0x7452, 0x0000, 0x5441, 0x5660, 0x0000, 0x0000, + 0x0000, 0x0000, 0x3760, 0x0000, 0x0000, 0x0000, 0x4138, 0x0000, + 0x0000, 0x413b, 0x7453, 0x3e2c, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x3462, 0x0000, 0x0000, 0x7454, 0x7455, 0x3e2b, 0x0000, + 0x0000, 0x7456, 0x0000, 0x0000, 0x0000, 0x745b, 0x0000, 0x7457, + 0x745a, 0x0000, 0x3a7d, 0x0000, 0x7458, 0x7459, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3862, 0x4c47, 0x745c, + 0x0000, 0x325a, 0x0000, 0x0000, 0x4353, 0x0000, 0x0000, 0x5463, + 0x3f37, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x745d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4534, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x7469, 0x0000, 0x0000, 0x4f35, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short gb2312_from_unicode_7d[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x4e49, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4b58, 0x0000, 0x4b77, 0x0000, 0x0000, 0x0000, 0x0000, 0x3d74, + 0x0000, 0x0000, 0x0000, 0x574f, 0x0000, 0x0000, 0x0000, 0x405b, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5075, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x746a, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x746b, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x746c, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short gb2312_from_unicode_7e[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x7763, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x3731, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x746d, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x576b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x746e, 0x0000, 0x0000, 0x0000, 0x6679, + 0x3e40, 0x667a, 0x3a6c, 0x667b, 0x4f4b, 0x667c, 0x543c, 0x3c36, + 0x667d, 0x667e, 0x3c4d, 0x4852, 0x4e33, 0x6721, 0x0000, 0x343f, + 0x6722, 0x4934, 0x3859, 0x4449, 0x0000, 0x575d, 0x425a, 0x3757, + 0x563d, 0x4e46, 0x3744, 0x0000, 0x0000, 0x4526, 0x6723, 0x4f5f, + 0x6724, 0x6725, 0x6726, 0x4137, 0x5769, 0x4970, 0x4f38, 0x562f, + 0x5655, 0x6727, 0x306d, 0x6728, 0x6729, 0x495c, 0x526f, 0x3e2d, + 0x672a, 0x3073, 0x485e, 0x3d61, 0x672b, 0x4846, 0x0000, 0x672c, + 0x3b66, 0x3878, 0x5124, 0x672d, 0x4267, 0x3e78, 0x3d4a, 0x4d33, + 0x672e, 0x672f, 0x3e6e, 0x5065, 0x0000, 0x4b67, 0x4c50, 0x3c4c, + 0x6730, 0x3c28, 0x5077, 0x6731, 0x0000, 0x5078, 0x6732, 0x6733, + 0x3442, 0x6734, 0x6735, 0x497e, 0x4e2c, 0x4360, 0x6737, 0x3141, + 0x3371, 0x0000, 0x6738, 0x6739, 0x575b, 0x5540, 0x673a, 0x424c +}; + +static unsigned short gb2312_from_unicode_7f[] = { + 0x573a, 0x673b, 0x673c, 0x673d, 0x3c6a, 0x4365, 0x4042, 0x673e, + 0x673f, 0x3c29, 0x0000, 0x6740, 0x6741, 0x6736, 0x3650, 0x6742, + 0x0000, 0x6743, 0x6744, 0x3b3a, 0x355e, 0x4246, 0x3160, 0x6745, + 0x5435, 0x6746, 0x383f, 0x6748, 0x6747, 0x376c, 0x0000, 0x6749, + 0x3278, 0x674a, 0x674b, 0x674c, 0x674d, 0x674e, 0x674f, 0x6750, + 0x5327, 0x4b75, 0x6751, 0x6752, 0x6753, 0x6754, 0x4949, 0x6755, + 0x6756, 0x6757, 0x6758, 0x6759, 0x3d49, 0x675a, 0x733e, 0x0000, + 0x3857, 0x0000, 0x4831, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x733f, 0x0000, 0x7340, 0x7341, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x395e, 0x4d78, 0x0000, 0x0000, 0x5868, 0x3a31, 0x0000, 0x425e, + 0x6e37, 0x0000, 0x3723, 0x0000, 0x0000, 0x0000, 0x0000, 0x6e39, + 0x0000, 0x6e38, 0x3055, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6e3b, 0x5556, 0x576f, 0x0000, 0x0000, 0x0000, 0x5643, 0x0000, + 0x0000, 0x6e3d, 0x4a70, 0x0000, 0x6e3c, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6e3e, 0x0000, 0x0000, 0x0000, 0x0000, 0x6e40, 0x0000, + 0x0000, 0x6e3f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x5172, 0x0000, 0x473c, 0x0000, 0x4340, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3861, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x4167, 0x0000, 0x0000, 0x7446, 0x505f, 0x7447, + 0x0000, 0x4f5b, 0x0000, 0x0000, 0x483a, 0x0000, 0x0000, 0x7448, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7449, + 0x744a, 0x0000, 0x744b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x597a, 0x387e, 0x0000, 0x0000, 0x6571, 0x5370, 0x0000, 0x7460, + 0x0000, 0x4e4c, 0x0000, 0x0000, 0x0000, 0x3361, 0x0000, 0x0000, + 0x0000, 0x0000, 0x7134, 0x0000, 0x526e, 0x0000, 0x7461, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4f68, 0x7462, 0x0000, 0x0000, + 0x474c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3554, + 0x3464, 0x7464, 0x0000, 0x0000, 0x0000, 0x7463, 0x7465, 0x0000, + 0x0000, 0x7466, 0x0000, 0x0000, 0x0000, 0x0000, 0x7467, 0x0000, + 0x3a32, 0x303f, 0x0000, 0x7468, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x372d, 0x526d, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short gb2312_from_unicode_80[] = { + 0x522b, 0x404f, 0x0000, 0x3f3c, 0x6b23, 0x555f, 0x6a48, 0x0000, + 0x0000, 0x0000, 0x0000, 0x7173, 0x3678, 0x4b23, 0x0000, 0x0000, + 0x444d, 0x0000, 0x7167, 0x0000, 0x7168, 0x387b, 0x7169, 0x3a44, + 0x5445, 0x3052, 0x0000, 0x0000, 0x716a, 0x0000, 0x0000, 0x0000, + 0x716b, 0x0000, 0x716c, 0x0000, 0x0000, 0x716d, 0x716e, 0x716f, + 0x7171, 0x7170, 0x4555, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7172, 0x0000, 0x367a, 0x0000, 0x7174, 0x522e, 0x5e47, + 0x4b4a, 0x0000, 0x0000, 0x335c, 0x0000, 0x3522, 0x0000, 0x3922, + 0x0000, 0x0000, 0x4474, 0x7175, 0x0000, 0x0000, 0x7176, 0x0000, + 0x0000, 0x0000, 0x4144, 0x417b, 0x5630, 0x7177, 0x0000, 0x0000, + 0x0000, 0x0000, 0x7178, 0x0000, 0x412a, 0x0000, 0x0000, 0x0000, + 0x4638, 0x0000, 0x3e5b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7179, 0x344f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x717a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6d32, + 0x6d31, 0x0000, 0x0000, 0x4b60, 0x525e, 0x0000, 0x4b41, 0x5558, + 0x0000, 0x4862, 0x0000, 0x405f, 0x3c21, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x6b41, 0x0000, 0x0000, 0x5024, 0x0000, + 0x5662, 0x0000, 0x3647, 0x3858, 0x6b40, 0x384e, 0x0000, 0x6b3f, + 0x3326, 0x3949, 0x562b, 0x0000, 0x3774, 0x374a, 0x0000, 0x0000, + 0x0000, 0x3c67, 0x373e, 0x6b46, 0x0000, 0x6b47, 0x3039, 0x3f4f, + 0x0000, 0x6b45, 0x537d, 0x0000, 0x6b48, 0x0000, 0x0000, 0x6b49, + 0x0000, 0x0000, 0x374e, 0x0000, 0x6b42, 0x6b44, 0x4976, 0x5657, + 0x554d, 0x5032, 0x6b4f, 0x4e38, 0x6b50, 0x0000, 0x3528, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3133, 0x6b52, 0x4c25, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4556, 0x6b53, + 0x0000, 0x6b51, 0x455f, 0x6b4e, 0x4a24, 0x6b55, 0x307b, 0x0000, + 0x0000, 0x3a7a, 0x0000, 0x0000, 0x5837, 0x7163, 0x0000, 0x6b4a, + 0x6b4b, 0x6b4c, 0x6b4d, 0x6b56, 0x6640, 0x6b59, 0x0000, 0x3f68, + 0x5248, 0x6b57, 0x6b5c, 0x386c, 0x6b58, 0x0000, 0x3d3a, 0x0000, + 0x5058, 0x0000, 0x3037, 0x0000, 0x6b5d, 0x445c, 0x0000, 0x0000 +}; + +static unsigned short gb2312_from_unicode_81[] = { + 0x0000, 0x0000, 0x562c, 0x0000, 0x0000, 0x0000, 0x3460, 0x0000, + 0x0000, 0x4276, 0x3c39, 0x0000, 0x0000, 0x6b5a, 0x6b5b, 0x5460, + 0x466a, 0x4454, 0x6b5f, 0x4527, 0x5975, 0x0000, 0x3231, 0x0000, + 0x6b64, 0x0000, 0x3d45, 0x0000, 0x0000, 0x0000, 0x6b62, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x6b63, 0x0000, 0x0000, 0x382c, + 0x0000, 0x4d51, 0x6b65, 0x0000, 0x0000, 0x0000, 0x6b61, 0x0000, + 0x4133, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4622, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4c73, 0x0000, + 0x6b66, 0x0000, 0x4030, 0x5238, 0x6b67, 0x0000, 0x0000, 0x0000, + 0x382f, 0x382d, 0x0000, 0x6b68, 0x473b, 0x4d73, 0x0000, 0x0000, + 0x0000, 0x6b6a, 0x6b6b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6b6d, 0x0000, 0x0000, 0x0000, 0x0000, 0x5048, 0x0000, 0x6b72, + 0x0000, 0x6b6e, 0x0000, 0x0000, 0x0000, 0x6b71, 0x4879, 0x0000, + 0x517c, 0x6b6c, 0x0000, 0x0000, 0x6b69, 0x0000, 0x0000, 0x0000, + 0x0000, 0x3839, 0x4f59, 0x4465, 0x6b6f, 0x6b70, 0x4c5a, 0x4d48, + 0x3072, 0x0000, 0x6b76, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6b75, 0x0000, 0x3232, 0x0000, 0x0000, 0x0000, 0x0000, 0x3860, + 0x0000, 0x6b77, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x316c, 0x0000, 0x0000, 0x4c45, 0x4424, 0x4f25, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x6b79, 0x0000, 0x0000, 0x6c22, 0x0000, + 0x4572, 0x0000, 0x6b7a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x4945, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x625f, 0x6b7e, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4d4e, 0x6c21, 0x315b, 0x5337, 0x0000, 0x0000, 0x525c, 0x0000, + 0x0000, 0x0000, 0x6b7d, 0x0000, 0x6b7b, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x333c, 0x0000, 0x0000, 0x0000, 0x6a30, + 0x0000, 0x0000, 0x5754, 0x0000, 0x742b, 0x3374, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x5641, 0x5642, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x5569, 0x3e4a, 0x0000, 0x7427, 0x0000 +}; + +static unsigned short gb2312_from_unicode_82[] = { + 0x5228, 0x7428, 0x7429, 0x0000, 0x742a, 0x3e4b, 0x535f, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4960, 0x4961, 0x0000, 0x0000, + 0x7342, 0x0000, 0x4a66, 0x0000, 0x4c72, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x6236, 0x4b34, 0x0000, 0x4e68, 0x565b, + 0x0000, 0x742d, 0x742e, 0x742f, 0x0000, 0x0000, 0x0000, 0x0000, + 0x7432, 0x0000, 0x3a3d, 0x7433, 0x3063, 0x7430, 0x0000, 0x7431, + 0x3d22, 0x3255, 0x0000, 0x7436, 0x7437, 0x3666, 0x3230, 0x4f4f, + 0x7434, 0x342c, 0x0000, 0x7435, 0x0000, 0x0000, 0x7438, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x7439, 0x0000, 0x0000, 0x4d27, + 0x0000, 0x743a, 0x0000, 0x743b, 0x0000, 0x0000, 0x0000, 0x743c, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4b52, 0x0000, 0x743d, 0x0000, 0x0000, 0x0000, 0x0000, 0x743e, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x743f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x745e, 0x413c, + 0x3c68, 0x0000, 0x492b, 0x515e, 0x6575, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5c33, 0x5255, 0x0000, 0x0000, 0x5c34, 0x302c, 0x5c35, + 0x0000, 0x0000, 0x3d5a, 0x0000, 0x5c39, 0x0000, 0x0000, 0x0000, + 0x5842, 0x0000, 0x5c37, 0x5373, 0x0000, 0x4956, 0x5c3a, 0x5c36, + 0x0000, 0x5c3b, 0x4322, 0x0000, 0x0000, 0x0000, 0x0000, 0x5c3c, + 0x5c45, 0x5c3d, 0x0000, 0x0000, 0x4e5f, 0x5625, 0x0000, 0x5c4f, + 0x0000, 0x5c4d, 0x0000, 0x0000, 0x5c52, 0x3d66, 0x422b, 0x0000, + 0x5c38, 0x5c4b, 0x5c4e, 0x5c3e, 0x3752, 0x3045, 0x5c47, 0x503e, + 0x5c41, 0x3b28, 0x0000, 0x373c, 0x5c4c, 0x0000, 0x0000, 0x5c46, + 0x5c3f, 0x475b, 0x0000, 0x0000, 0x0000, 0x513f, 0x5c40, 0x0000, + 0x0000, 0x5c4a, 0x0000, 0x0000, 0x5c50, 0x0000, 0x0000, 0x4e2d, + 0x5c42, 0x0000, 0x5c43, 0x5c48, 0x5c49, 0x3254, 0x5c51, 0x4b55, + 0x0000, 0x5437, 0x5c5b, 0x5c5f, 0x4c26, 0x5c66, 0x0000, 0x4367, + 0x5c5c, 0x0000, 0x0000, 0x3f41, 0x5c59, 0x0000, 0x307a, 0x3936, + 0x5c65, 0x5c53, 0x0000, 0x5c44, 0x5c56, 0x4874, 0x3f60, 0x0000, + 0x0000, 0x0000, 0x0000, 0x493b, 0x0000, 0x0000, 0x0000, 0x313d, + 0x0000, 0x5322, 0x0000, 0x0000, 0x5c5a, 0x0000, 0x0000, 0x5c55, + 0x0000, 0x463b, 0x0000, 0x5c5e, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short gb2312_from_unicode_83[] = { + 0x0000, 0x5742, 0x432f, 0x3736, 0x4751, 0x4329, 0x5c62, 0x5c58, + 0x5c6b, 0x5c54, 0x0000, 0x0000, 0x5c5d, 0x0000, 0x3e25, 0x5c57, + 0x0000, 0x5c60, 0x0000, 0x0000, 0x5c63, 0x5c64, 0x0000, 0x5c78, + 0x0000, 0x0000, 0x5c61, 0x5d22, 0x5c67, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3c6b, + 0x3444, 0x0000, 0x0000, 0x4323, 0x3267, 0x5c7a, 0x0000, 0x5c72, + 0x0000, 0x5c6f, 0x0000, 0x5c7c, 0x5c6e, 0x5270, 0x3268, 0x0000, + 0x4857, 0x4863, 0x5c7b, 0x0000, 0x5c6d, 0x0000, 0x0000, 0x0000, + 0x5c77, 0x0000, 0x0000, 0x5c75, 0x0000, 0x0000, 0x3e23, 0x5c74, + 0x0000, 0x325d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5c73, + 0x3c76, 0x5c68, 0x3b44, 0x0000, 0x4073, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x3c54, 0x5c69, 0x5c6a, 0x0000, 0x5c71, 0x5c76, + 0x5c79, 0x3534, 0x0000, 0x4859, 0x3b67, 0x5c7e, 0x5c7d, 0x532b, + 0x5d21, 0x5d23, 0x5d25, 0x5271, 0x5d24, 0x5d26, 0x5d27, 0x5229, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3a49, + 0x5d29, 0x0000, 0x0000, 0x5d36, 0x5d31, 0x5d34, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5d30, 0x464e, 0x0000, + 0x0000, 0x4072, 0x0000, 0x0000, 0x0000, 0x0000, 0x492f, 0x0000, + 0x0000, 0x0000, 0x5c6c, 0x5d2e, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5d37, 0x0000, 0x0000, 0x5c70, 0x5d2f, 0x0000, 0x5d38, 0x0000, + 0x5d2c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5d39, 0x5d33, 0x5d2d, 0x442a, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5d28, 0x4033, 0x412b, 0x5d2a, 0x5d2b, 0x0000, 0x5d32, 0x3b71, + 0x5d35, 0x5328, 0x5d3a, 0x0000, 0x5d3b, 0x4327, 0x0000, 0x0000, + 0x5d52, 0x5d3c, 0x0000, 0x0000, 0x0000, 0x5d51, 0x0000, 0x393d, + 0x0000, 0x0000, 0x3e55, 0x0000, 0x3e7a, 0x0000, 0x0000, 0x3a4a, + 0x0000, 0x0000, 0x0000, 0x0000, 0x5d4a, 0x0000, 0x5d45, 0x0000, + 0x5d3f, 0x0000, 0x0000, 0x0000, 0x324b, 0x5d43, 0x0000, 0x5d4b, + 0x3224, 0x5d55, 0x0000, 0x0000, 0x0000, 0x5d3e, 0x0000, 0x0000, + 0x0000, 0x4650, 0x5d50, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5d54, 0x4162, 0x3746, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5d4e, 0x5d4f, 0x0000, 0x0000, 0x0000, 0x5d44, 0x0000, 0x0000 +}; + +static unsigned short gb2312_from_unicode_84[] = { + 0x0000, 0x5d3d, 0x0000, 0x5d4d, 0x4c51, 0x0000, 0x5d49, 0x0000, + 0x0000, 0x0000, 0x0000, 0x5d42, 0x4348, 0x463c, 0x4e2e, 0x5d4c, + 0x0000, 0x5d48, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5d41, 0x0000, 0x0000, 0x0000, 0x5d46, 0x425c, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x5329, 0x532a, 0x5d53, 0x4f74, + 0x4878, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5d66, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5d47, 0x0000, 0x0000, 0x0000, 0x5d60, 0x4264, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5d61, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5d57, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5678, + 0x0000, 0x5d59, 0x5d58, 0x3870, 0x5d56, 0x0000, 0x0000, 0x0000, + 0x0000, 0x464f, 0x0000, 0x362d, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5d62, 0x0000, 0x3a79, 0x5461, 0x5d67, 0x0000, 0x0000, + 0x0000, 0x3450, 0x0000, 0x5d5a, 0x0000, 0x3f7b, 0x5d63, 0x0000, + 0x5d5f, 0x0000, 0x5d5d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x3559, 0x0000, 0x0000, 0x0000, 0x0000, 0x5d5b, + 0x5d5c, 0x5d5e, 0x0000, 0x3d2f, 0x5d64, 0x0000, 0x5d65, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5d75, + 0x0000, 0x4349, 0x0000, 0x0000, 0x4b62, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5d72, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5861, + 0x0000, 0x0000, 0x4651, 0x0000, 0x5d74, 0x0000, 0x0000, 0x0000, + 0x5574, 0x5d73, 0x5d70, 0x0000, 0x0000, 0x5d6c, 0x0000, 0x5d6f, + 0x0000, 0x5d68, 0x0000, 0x0000, 0x506e, 0x0000, 0x0000, 0x0000, + 0x0000, 0x4858, 0x5d6e, 0x0000, 0x0000, 0x5d69, 0x0000, 0x0000, + 0x5d6a, 0x4b72, 0x0000, 0x5d6d, 0x0000, 0x0000, 0x314d, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4036, 0x0000, 0x3c3b, + 0x5d71, 0x0000, 0x0000, 0x5d77, 0x0000, 0x5d76, 0x5d6b, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x456e, 0x0000, 0x0000, 0x0000, + 0x5d7b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x5e24, 0x0000, 0x0000, 0x5e23 +}; + +static unsigned short gb2312_from_unicode_85[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x5d78, 0x0000, 0x0000, 0x0000, + 0x0000, 0x436f, 0x0000, 0x427b, 0x0000, 0x0000, 0x0000, 0x5561, + 0x0000, 0x0000, 0x4e35, 0x0000, 0x0000, 0x0000, 0x0000, 0x5d7d, + 0x0000, 0x324c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x4468, 0x4a5f, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x473e, + 0x5d7a, 0x5d7c, 0x5d7e, 0x5e22, 0x302a, 0x314e, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x5e2c, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5e26, 0x3d36, 0x486f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5e21, 0x0000, + 0x0000, 0x5e25, 0x0000, 0x0000, 0x0000, 0x0000, 0x5e29, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x5e28, 0x0000, 0x0000, 0x0000, + 0x5e27, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x5e2d, 0x0000, 0x544c, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5e33, 0x5e2a, 0x5e2e, 0x0000, 0x0000, 0x4059, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3121, 0x5e36, 0x0000, 0x5e31, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5e32, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x5126, 0x5e35, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x5e2f, 0x0000, 0x0000, 0x0000, + 0x5e30, 0x0000, 0x503d, 0x0000, 0x0000, 0x0000, 0x5e34, 0x4a6d, + 0x5e39, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5e38, + 0x0000, 0x5e37, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5e3b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x3d65, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3258, + 0x436a, 0x0000, 0x0000, 0x5e3a, 0x0000, 0x453a, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x5e3c, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4c59, 0x0000, 0x0000, 0x0000, + 0x0000, 0x372a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x5465, 0x0000, 0x0000, 0x0000, 0x5e3d +}; + +static unsigned short gb2312_from_unicode_86[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5e3f, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x4422, 0x0000, 0x0000, 0x0000, 0x0000, 0x5e41, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5e3e, + 0x0000, 0x5e40, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x553a, 0x0000, 0x0000, 0x0000, 0x5e42, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x722e, 0x3b22, 0x4232, + 0x4530, 0x4247, 0x0000, 0x0000, 0x722f, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x5069, 0x0000, 0x0000, 0x0000, 0x535d, 0x0000, + 0x0000, 0x0000, 0x6b3d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x3366, 0x7230, 0x0000, 0x7231, 0x0000, + 0x0000, 0x4a2d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x3a67, 0x7233, 0x7235, 0x7234, 0x4b64, 0x4f3a, 0x7232, + 0x4a34, 0x524f, 0x426c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x4e43, 0x7238, 0x3076, 0x7237, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x723e, 0x0000, 0x324f, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x5141, 0x723a, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x723c, 0x5469, 0x0000, 0x0000, 0x723b, + 0x7236, 0x723f, 0x723d, 0x0000, 0x7239, 0x0000, 0x0000, 0x7247, + 0x7244, 0x7246, 0x0000, 0x0000, 0x724a, 0x7242, 0x7240, 0x0000, + 0x0000, 0x0000, 0x7245, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x567b, 0x0000, 0x0000, 0x0000, 0x7241, 0x0000, 0x4779, 0x495f, + 0x0000, 0x7248, 0x3946, 0x3530, 0x0000, 0x0000, 0x7243, 0x7249, + 0x7250, 0x7256, 0x0000, 0x0000, 0x3b57, 0x0000, 0x0000, 0x0000, + 0x7255, 0x4d5c, 0x0000, 0x566b, 0x0000, 0x0000, 0x7252, 0x7254, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3872, 0x0000, 0x0000, 0x0000, + 0x0000, 0x724b, 0x0000, 0x0000, 0x0000, 0x724e, 0x4279, 0x0000, + 0x555d, 0x724c, 0x724d, 0x724f, 0x7253, 0x0000, 0x0000, 0x0000, + 0x7259, 0x533c, 0x0000, 0x0000, 0x0000, 0x0000, 0x366a, 0x0000 +}; + +static unsigned short gb2312_from_unicode_87[] = { + 0x4a71, 0x0000, 0x3764, 0x7257, 0x0000, 0x0000, 0x0000, 0x7258, + 0x725a, 0x725d, 0x725b, 0x0000, 0x0000, 0x725c, 0x0000, 0x0000, + 0x0000, 0x0000, 0x5151, 0x7251, 0x0000, 0x4d49, 0x0000, 0x4e4f, + 0x5629, 0x0000, 0x7263, 0x0000, 0x435b, 0x0000, 0x7260, 0x0000, + 0x0000, 0x402f, 0x726c, 0x725e, 0x0000, 0x7261, 0x0000, 0x0000, + 0x0000, 0x7268, 0x0000, 0x0000, 0x0000, 0x0000, 0x7262, 0x0000, + 0x0000, 0x7267, 0x0000, 0x0000, 0x7266, 0x0000, 0x0000, 0x7269, + 0x0000, 0x0000, 0x0000, 0x725f, 0x0000, 0x0000, 0x7264, 0x726a, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x532c, + 0x7265, 0x3275, 0x0000, 0x0000, 0x7272, 0x0000, 0x502b, 0x0000, + 0x0000, 0x0000, 0x0000, 0x7275, 0x0000, 0x0000, 0x0000, 0x3b48, + 0x0000, 0x7279, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x7270, 0x0000, 0x0000, 0x7276, 0x7278, 0x727a, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7273, 0x0000, + 0x7271, 0x0000, 0x0000, 0x0000, 0x3a7b, 0x0000, 0x357b, 0x0000, + 0x0000, 0x0000, 0x0000, 0x726f, 0x7277, 0x726d, 0x726e, 0x0000, + 0x0000, 0x0000, 0x726b, 0x7326, 0x0000, 0x7323, 0x0000, 0x0000, + 0x7322, 0x0000, 0x0000, 0x7274, 0x0000, 0x485a, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x727b, 0x0000, 0x0000, 0x0000, 0x7325, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4378, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x727d, 0x0000, 0x0000, 0x7327, 0x7329, 0x7324, 0x0000, 0x727c, + 0x0000, 0x0000, 0x0000, 0x732b, 0x0000, 0x732a, 0x0000, 0x0000, + 0x0000, 0x0000, 0x425d, 0x0000, 0x0000, 0x732e, 0x0000, 0x0000, + 0x7330, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7321, 0x0000, + 0x0000, 0x0000, 0x7331, 0x732c, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x732f, 0x727e, 0x732d, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x7332, 0x0000, 0x0000, 0x0000, 0x0000, + 0x7334, 0x0000, 0x0000, 0x0000, 0x0000, 0x7328, 0x0000, 0x0000, + 0x0000, 0x0000, 0x7333, 0x0000, 0x0000, 0x0000, 0x7335, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5037, 0x0000, 0x0000, 0x0000, 0x0000, 0x7338, 0x0000 +}; + +static unsigned short gb2312_from_unicode_88[] = { + 0x0000, 0x0000, 0x0000, 0x5979, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x7339, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x7337, 0x0000, 0x4864, 0x7336, 0x0000, + 0x0000, 0x0000, 0x0000, 0x733a, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x733b, 0x3440, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6e43, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x733c, 0x0000, 0x0000, 0x733d, 0x0000, 0x0000, 0x0000, + 0x512a, 0x0000, 0x0000, 0x0000, 0x742c, 0x5046, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x5050, 0x515c, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4f4e, 0x0000, 0x0000, 0x3d56, + 0x0000, 0x5143, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x3a62, 0x6169, 0x5242, 0x7142, 0x3239, 0x0000, 0x0000, + 0x316d, 0x7143, 0x0000, 0x4940, 0x3344, 0x0000, 0x5972, 0x0000, + 0x4b25, 0x0000, 0x7144, 0x0000, 0x0000, 0x0000, 0x0000, 0x5654, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7145, 0x7440, 0x7146, + 0x0000, 0x542c, 0x7147, 0x0000, 0x3040, 0x7441, 0x0000, 0x0000, + 0x7442, 0x0000, 0x0000, 0x347c, 0x0000, 0x455b, 0x0000, 0x0000, + 0x0000, 0x0000, 0x4c3b, 0x0000, 0x0000, 0x0000, 0x5064, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4d60, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x7148, 0x0000, 0x5973, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x313b, 0x0000, 0x4f2e, 0x0000, 0x0000, + 0x0000, 0x3824, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x714a, + 0x0000, 0x0000, 0x0000, 0x0000, 0x714b, 0x0000, 0x0000, 0x0000, + 0x0000, 0x3243, 0x4151, 0x0000, 0x0000, 0x5730, 0x7149, 0x0000, + 0x0000, 0x714c, 0x0000, 0x0000, 0x0000, 0x0000, 0x714e, 0x0000, + 0x0000, 0x0000, 0x5976, 0x0000, 0x5261, 0x5423, 0x0000, 0x0000, + 0x7443, 0x4839, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7444, + 0x0000, 0x0000, 0x714d, 0x714f, 0x3f63, 0x7150, 0x0000, 0x0000, + 0x7154, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x7156, 0x7151, 0x0000, 0x4951, 0x4561, 0x0000, 0x0000, 0x0000, + 0x4263, 0x397c, 0x0000, 0x0000, 0x7153, 0x0000, 0x7155, 0x0000 +}; + +static unsigned short gb2312_from_unicode_89[] = { + 0x0000, 0x0000, 0x3953, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x715b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3a56, 0x0000, 0x307d, 0x7159, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7158, 0x7152, 0x715a, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7157, 0x0000, 0x0000, 0x0000, 0x486c, 0x0000, 0x0000, + 0x0000, 0x0000, 0x4d4a, 0x715d, 0x0000, 0x0000, 0x0000, 0x0000, + 0x653d, 0x0000, 0x0000, 0x0000, 0x715c, 0x0000, 0x715e, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x715f, 0x0000, 0x0000, 0x4f65, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7445, 0x3d73, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7160, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x7161, 0x0000, 0x0000, 0x0000, 0x4e77, + 0x0000, 0x522a, 0x0000, 0x717b, 0x0000, 0x0000, 0x3832, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x3c7b, 0x395b, 0x0000, 0x3966, 0x4359, 0x4a53, 0x6a68, + 0x4040, 0x3e75, 0x6a69, 0x6a6a, 0x6a6b, 0x0000, 0x6a6c, 0x6a6d, + 0x6a6e, 0x6a6f, 0x3d47, 0x0000, 0x0000, 0x0000, 0x757b, 0x0000, + 0x0000, 0x0000, 0x757d, 0x0000, 0x757e, 0x0000, 0x757c, 0x0000, + 0x0000, 0x0000, 0x0000, 0x3d62, 0x0000, 0x7621, 0x3425, 0x0000, + 0x0000, 0x0000, 0x0000, 0x7622, 0x0000, 0x0000, 0x0000, 0x7623, + 0x0000, 0x0000, 0x0000, 0x6c32, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short gb2312_from_unicode_8a[] = { + 0x5154, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x596a, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7624, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6e3a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5532, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x537e, 0x4c5c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x4a44, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short gb2312_from_unicode_8b[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6540, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7625, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3e2f, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4629, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5a25, 0x3c46, 0x3629, 0x383c, 0x484f, 0x3c25, 0x5a26, 0x5a27, + 0x4c56, 0x4843, 0x5a28, 0x467d, 0x0000, 0x5135, 0x5269, 0x5136, + 0x3c47, 0x0000, 0x3d32, 0x3b64, 0x5a29, 0x5a2a, 0x5148, 0x5a2b, + 0x506d, 0x366f, 0x425b, 0x0000, 0x4b4f, 0x376d, 0x4968, 0x3743, + 0x3e77, 0x5624, 0x5a2c, 0x5a2d, 0x4640, 0x5767, 0x4a36, 0x0000, + 0x5529, 0x4b5f, 0x556f, 0x5a2e, 0x565f, 0x344a, 0x5a30, 0x5a2f, + 0x0000, 0x526b, 0x5a31, 0x5a32, 0x5a33, 0x4a54, 0x5a34, 0x4a2b, + 0x5a35, 0x5a36, 0x334f, 0x566f, 0x5a37, 0x3b30, 0x352e, 0x5a38, + 0x5a39, 0x396e, 0x512f, 0x5268, 0x5a3a, 0x3843, 0x4f6a, 0x326f, + 0x5a3b, 0x5a3c, 0x0000, 0x3d6b, 0x4e5c, 0x536f, 0x5a3d, 0x4e73, + 0x5a3e, 0x5355, 0x3b65, 0x5a3f, 0x4b35, 0x4b50, 0x5a40, 0x476b, + 0x566e, 0x5a41, 0x4535, 0x3641, 0x5a42, 0x374c, 0x3f4e, 0x5a43 +}; + +static unsigned short gb2312_from_unicode_8c[] = { + 0x5a44, 0x4b2d, 0x5a45, 0x3577, 0x5a46, 0x4142, 0x573b, 0x5a47, + 0x4c38, 0x0000, 0x526a, 0x4431, 0x5a48, 0x357d, 0x3b51, 0x5a49, + 0x5033, 0x5a4a, 0x5a4b, 0x4e3d, 0x5a4c, 0x5a4d, 0x5a4e, 0x3277, + 0x5a51, 0x5a4f, 0x5168, 0x5a50, 0x4355, 0x5a52, 0x0000, 0x5a53, + 0x5a54, 0x5a55, 0x503b, 0x5225, 0x3079, 0x5a56, 0x472b, 0x5a57, + 0x3d77, 0x4321, 0x5a58, 0x5a59, 0x437d, 0x4c37, 0x5a5a, 0x5a5b, + 0x403e, 0x4657, 0x5a5c, 0x5a5d, 0x4734, 0x5a5e, 0x5a5f, 0x3948, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x3b6d, 0x0000, 0x0000, 0x0000, 0x0000, 0x3639, 0x7478, + 0x0000, 0x7479, 0x0000, 0x0000, 0x4d63, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7539, 0x0000, 0x0000, + 0x0000, 0x0000, 0x6b60, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x4f73, 0x3b3f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x3a40, 0x5425, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x6159, 0x0000, 0x0000, 0x0000, 0x0000, + 0x7574, 0x312a, 0x3272, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x7575, 0x0000, 0x0000, 0x7577, 0x0000, 0x0000, + 0x0000, 0x3a51, 0x7576, 0x0000, 0x4332, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x7579, 0x0000, 0x0000, 0x0000, + 0x7578, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short gb2312_from_unicode_8d[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3134, 0x556a, 0x383a, + 0x0000, 0x3931, 0x3246, 0x5470, 0x4f4d, 0x305c, 0x554b, 0x3b75, + 0x564a, 0x3737, 0x4c30, 0x4636, 0x3161, 0x393a, 0x567c, 0x3961, + 0x3721, 0x3c7a, 0x6a5a, 0x6a5b, 0x4c79, 0x3973, 0x6a5c, 0x347b, + 0x4333, 0x3751, 0x3a58, 0x6a5d, 0x5474, 0x6a5e, 0x3c56, 0x3b5f, + 0x6a5f, 0x415e, 0x4238, 0x545f, 0x574a, 0x6a60, 0x6a61, 0x6a64, + 0x6a62, 0x6a63, 0x495e, 0x3833, 0x3644, 0x6a65, 0x4a6a, 0x494d, + 0x344d, 0x0000, 0x0000, 0x6259, 0x4562, 0x6a66, 0x4035, 0x0000, + 0x5738, 0x6a67, 0x572c, 0x487c, 0x5853, 0x584d, 0x545e, 0x0000, + 0x5479, 0x4944, 0x532e, 0x3853, 0x3360, 0x0000, 0x4962, 0x7476, + 0x0000, 0x0000, 0x0000, 0x3a55, 0x0000, 0x7477, 0x0000, 0x0000, + 0x575f, 0x0000, 0x0000, 0x7471, 0x3830, 0x5554, 0x384f, 0x4670, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x3343, 0x0000, 0x0000, 0x7472, 0x332c, 0x0000, 0x0000, + 0x0000, 0x0000, 0x543d, 0x4777, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7474, 0x0000, 0x0000, 0x7473, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4c4b, + 0x0000, 0x0000, 0x0000, 0x4824, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7475, 0x0000, 0x5763, 0x453f, 0x7540, 0x0000, 0x0000, + 0x753b, 0x0000, 0x7543, 0x0000, 0x7542, 0x0000, 0x563a, 0x7541, + 0x0000, 0x0000, 0x0000, 0x543e, 0x7544, 0x0000, 0x754c, 0x0000, + 0x0000, 0x0000, 0x0000, 0x304f, 0x3578, 0x0000, 0x7549, 0x754a, + 0x0000, 0x455c, 0x0000, 0x0000, 0x0000, 0x0000, 0x7545, 0x7546, + 0x0000, 0x0000, 0x7547, 0x754b, 0x0000, 0x3e60, 0x7548, 0x387a, + 0x0000, 0x0000, 0x0000, 0x7550, 0x7553, 0x0000, 0x0000, 0x0000, + 0x3f67, 0x0000, 0x3972, 0x753c, 0x754d, 0x0000, 0x0000, 0x4237, + 0x0000, 0x0000, 0x0000, 0x4c78, 0x0000, 0x3c79, 0x0000, 0x754e, + 0x754f, 0x7551, 0x3665, 0x7552, 0x0000, 0x7555, 0x0000, 0x0000 +}; + +static unsigned short gb2312_from_unicode_8e[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x753d, 0x0000, 0x0000, + 0x0000, 0x7554, 0x533b, 0x0000, 0x336c, 0x0000, 0x0000, 0x4c24, + 0x0000, 0x0000, 0x0000, 0x0000, 0x7556, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7557, 0x3e61, 0x7558, + 0x0000, 0x0000, 0x4c5f, 0x755b, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x3248, 0x5759, 0x0000, 0x7559, 0x0000, 0x755a, 0x755c, + 0x0000, 0x7562, 0x0000, 0x0000, 0x0000, 0x7560, 0x0000, 0x0000, + 0x0000, 0x755f, 0x755d, 0x0000, 0x0000, 0x7561, 0x0000, 0x0000, + 0x755e, 0x7564, 0x7565, 0x0000, 0x4c63, 0x0000, 0x0000, 0x653f, + 0x3538, 0x7563, 0x7568, 0x4c23, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7566, 0x7567, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x753e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3144, 0x0000, + 0x0000, 0x753f, 0x0000, 0x0000, 0x3545, 0x3264, 0x0000, 0x756c, + 0x7569, 0x0000, 0x3657, 0x0000, 0x756d, 0x0000, 0x756a, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x756b, 0x0000, 0x0000, 0x345a, + 0x0000, 0x546a, 0x0000, 0x0000, 0x0000, 0x756e, 0x0000, 0x3379, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x756f, + 0x7571, 0x0000, 0x0000, 0x0000, 0x7570, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x7572, 0x0000, 0x7573, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x496d, 0x392a, 0x0000, 0x0000, 0x477b, + 0x0000, 0x0000, 0x3663, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x4c49, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6a26, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short gb2312_from_unicode_8f[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3335, 0x547e, + 0x396c, 0x5079, 0x0000, 0x696d, 0x572a, 0x696e, 0x4256, 0x486d, + 0x3a64, 0x696f, 0x6970, 0x6971, 0x5661, 0x6972, 0x6973, 0x6975, + 0x6974, 0x6976, 0x6977, 0x4761, 0x6978, 0x5458, 0x6979, 0x3d4e, + 0x0000, 0x697a, 0x697b, 0x3d4f, 0x697c, 0x3828, 0x413e, 0x697d, + 0x3132, 0x3b54, 0x3975, 0x697e, 0x0000, 0x6a21, 0x6a22, 0x6a23, + 0x3778, 0x3c2d, 0x0000, 0x4a64, 0x604e, 0x542f, 0x4f3d, 0x5537, + 0x6a24, 0x555e, 0x6a25, 0x5041, 0x393c, 0x0000, 0x3447, 0x3159, + 0x0000, 0x0000, 0x0000, 0x4031, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3166, 0x3167, 0x0000, 0x3168, 0x0000, 0x0000, 0x0000, 0x0000, + 0x333d, 0x4868, 0x0000, 0x0000, 0x0000, 0x0000, 0x6541, 0x0000, + 0x0000, 0x315f, 0x0000, 0x0000, 0x0000, 0x4149, 0x346f, 0x0000, + 0x0000, 0x4728, 0x5358, 0x0000, 0x4679, 0x5138, 0x0000, 0x397d, + 0x4275, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x532d, 0x0000, + 0x544b, 0x3d7c, 0x0000, 0x6542, 0x3735, 0x6543, 0x0000, 0x0000, + 0x3b39, 0x5562, 0x0000, 0x3d78, 0x5436, 0x4e25, 0x412c, 0x3359, + 0x0000, 0x0000, 0x4c76, 0x0000, 0x6546, 0x6544, 0x6548, 0x0000, + 0x654a, 0x6547, 0x354f, 0x4648, 0x0000, 0x357c, 0x6545, 0x0000, + 0x4a76, 0x0000, 0x0000, 0x6549, 0x0000, 0x0000, 0x0000, 0x4354, + 0x3145, 0x3c23, 0x0000, 0x0000, 0x0000, 0x5737, 0x0000, 0x0000 +}; + +static unsigned short gb2312_from_unicode_90[] = { + 0x4d4b, 0x4b4d, 0x4a4a, 0x4c53, 0x654c, 0x654b, 0x4466, 0x0000, + 0x0000, 0x5121, 0x5137, 0x654d, 0x0000, 0x6550, 0x0000, 0x4d38, + 0x5670, 0x654f, 0x355d, 0x0000, 0x4d3e, 0x0000, 0x6551, 0x363a, + 0x0000, 0x0000, 0x4d28, 0x3964, 0x0000, 0x4a45, 0x3351, 0x4b59, + 0x546c, 0x6552, 0x376a, 0x0000, 0x0000, 0x0000, 0x654e, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6555, 0x347e, 0x6556, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6553, 0x6554, 0x0000, + 0x525d, 0x0000, 0x0000, 0x425f, 0x3146, 0x0000, 0x5362, 0x0000, + 0x0000, 0x365d, 0x4b6c, 0x0000, 0x6557, 0x0000, 0x0000, 0x5376, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3169, 0x0000, 0x3674, + 0x655a, 0x6558, 0x6559, 0x3540, 0x0000, 0x0000, 0x0000, 0x5245, + 0x655c, 0x0000, 0x0000, 0x655e, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x655d, 0x4732, 0x0000, 0x5223, 0x0000, 0x0000, + 0x655b, 0x0000, 0x0000, 0x0000, 0x0000, 0x5462, 0x555a, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x6560, 0x5771, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6561, 0x0000, 0x315c, + 0x517b, 0x0000, 0x6562, 0x6564, 0x0000, 0x0000, 0x0000, 0x0000, + 0x6563, 0x0000, 0x0000, 0x6565, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5258, 0x0000, 0x354b, 0x0000, 0x675f, 0x0000, 0x5a75, + 0x0000, 0x5a78, 0x0000, 0x5a76, 0x0000, 0x5a77, 0x0000, 0x0000, + 0x0000, 0x5a7a, 0x504f, 0x4447, 0x0000, 0x0000, 0x306e, 0x0000, + 0x0000, 0x0000, 0x5030, 0x0000, 0x5a79, 0x0000, 0x534a, 0x3a2a, + 0x5b22, 0x4771, 0x0000, 0x5a7c, 0x5a7b, 0x495b, 0x5a7d, 0x0000, + 0x5b21, 0x575e, 0x5a7e, 0x415a, 0x0000, 0x0000, 0x5b25, 0x0000, + 0x0000, 0x5374, 0x0000, 0x0000, 0x5b27, 0x5b24, 0x0000, 0x5b28, + 0x0000, 0x0000, 0x3d3c, 0x0000, 0x0000, 0x0000, 0x4049, 0x5b23, + 0x5b26, 0x5623, 0x0000, 0x5b29, 0x0000, 0x0000, 0x0000, 0x5b2d, + 0x0000, 0x0000, 0x0000, 0x5b2e, 0x5b2c, 0x3a42, 0x0000, 0x0000, + 0x0000, 0x3f24, 0x5b2b, 0x0000, 0x0000, 0x0000, 0x5b2a, 0x5447, + 0x323f, 0x0000, 0x0000, 0x5b2f, 0x0000, 0x3979, 0x0000, 0x5b30, + 0x0000, 0x0000, 0x0000, 0x0000, 0x333b, 0x0000, 0x0000, 0x0000, + 0x3526, 0x0000, 0x0000, 0x0000, 0x0000, 0x363c, 0x5b31, 0x0000 +}; + +static unsigned short gb2312_from_unicode_91[] = { + 0x0000, 0x0000, 0x3675, 0x0000, 0x5b32, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x3149, 0x0000, 0x0000, 0x0000, 0x0000, 0x5b34, 0x0000, + 0x0000, 0x0000, 0x5b33, 0x5b35, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5b37, + 0x0000, 0x5b36, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5b38, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x5b39, 0x0000, 0x0000, 0x5b3a, 0x0000, + 0x0000, 0x534f, 0x747a, 0x4775, 0x5743, 0x4564, 0x747c, 0x747d, + 0x747b, 0x0000, 0x3e46, 0x0000, 0x0000, 0x0000, 0x0000, 0x506f, + 0x0000, 0x0000, 0x3753, 0x0000, 0x0000, 0x544d, 0x4c2a, 0x0000, + 0x0000, 0x7522, 0x7521, 0x3a28, 0x747e, 0x4b56, 0x0000, 0x0000, + 0x0000, 0x7524, 0x4052, 0x0000, 0x336a, 0x0000, 0x4d2a, 0x7525, + 0x7523, 0x3d34, 0x7528, 0x0000, 0x7529, 0x3d4d, 0x4338, 0x3f61, + 0x4b61, 0x752a, 0x0000, 0x0000, 0x0000, 0x7526, 0x7527, 0x4470, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x752c, 0x0000, 0x343c, + 0x0000, 0x576d, 0x0000, 0x3457, 0x752b, 0x752e, 0x0000, 0x0000, + 0x752d, 0x752f, 0x5051, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x4351, 0x4829, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x7530, 0x7531, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x7532, 0x0000, 0x0000, 0x7533, 0x7534, 0x7535, + 0x0000, 0x0000, 0x0000, 0x0000, 0x7537, 0x7536, 0x0000, 0x0000, + 0x0000, 0x0000, 0x7538, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3249, + 0x0000, 0x5354, 0x4a4d, 0x0000, 0x406f, 0x5658, 0x5230, 0x413f, + 0x0000, 0x3d70, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x382a, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short gb2312_from_unicode_92[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3c78, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7646, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7647, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x7648, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short gb2312_from_unicode_93[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7649, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x764a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x764c, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x764b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7769, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short gb2312_from_unicode_94[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x764d, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x764e, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6e44, 0x6e45, 0x6e46, + 0x556b, 0x3624, 0x6e48, 0x6e47, 0x6e49, 0x6e4a, 0x4725, 0x6e4b, + 0x6e4c, 0x0000, 0x3730, 0x3576, 0x6e4d, 0x6e4f, 0x0000, 0x6e4e, + 0x0000, 0x3846, 0x6e50, 0x6e51, 0x6e52, 0x365b, 0x332e, 0x5653, + 0x4446, 0x3135, 0x3856, 0x6e53, 0x6e54, 0x543f, 0x4755, 0x3e7b, + 0x4e59, 0x3933, 0x6e56, 0x6e55, 0x6e58, 0x6e57, 0x4525, 0x6e59, + 0x6e5a, 0x472e, 0x6e5b, 0x472f, 0x6e5c, 0x3227, 0x6e5d, 0x6e5e, + 0x6e5f, 0x6e60, 0x6e61, 0x576a, 0x6e62, 0x6e63, 0x3c58, 0x6e64, + 0x534b, 0x4c7a, 0x322c, 0x4165, 0x6e65, 0x4726, 0x432d, 0x0000, + 0x6e66, 0x6e67, 0x6e68, 0x6e69, 0x6e6a, 0x6e6b, 0x6e6c, 0x0000, + 0x6e6d, 0x6e6e, 0x6e6f, 0x0000, 0x0000, 0x6e70, 0x6e71, 0x6e72, + 0x6e74, 0x6e73, 0x0000, 0x6e75, 0x4d2d, 0x4241, 0x6e76, 0x6e77, + 0x6e78, 0x5521, 0x6e79, 0x4f33, 0x6e7a, 0x6e7b, 0x0000, 0x6e7c, + 0x6e7d, 0x6f21, 0x6e7e, 0x6f22, 0x3875, 0x437a, 0x6f23, 0x6f24, + 0x3d42, 0x523f, 0x3279, 0x6f25, 0x6f26, 0x6f27, 0x5278, 0x6f28, + 0x567d, 0x6f29, 0x464c, 0x0000, 0x6f2a, 0x6f2b, 0x4134, 0x6f2c +}; + +static unsigned short gb2312_from_unicode_95[] = { + 0x4f7a, 0x4b78, 0x6f2e, 0x6f2d, 0x337a, 0x3978, 0x6f2f, 0x6f30, + 0x5062, 0x6f31, 0x6f32, 0x3766, 0x503f, 0x6f33, 0x6f34, 0x6f35, + 0x4871, 0x4c60, 0x6f36, 0x6f37, 0x6f38, 0x6f39, 0x6f3a, 0x5560, + 0x6f3b, 0x346d, 0x432a, 0x6f3c, 0x0000, 0x6f3d, 0x6f3e, 0x6f3f, + 0x0000, 0x4e7d, 0x6f40, 0x4260, 0x3438, 0x5736, 0x3d75, 0x0000, + 0x4f47, 0x6f43, 0x6f41, 0x6f42, 0x6f44, 0x3627, 0x3c7c, 0x3e62, + 0x434c, 0x6f45, 0x6f46, 0x0000, 0x6f47, 0x6f4f, 0x6f48, 0x6f49, + 0x6f4a, 0x4742, 0x6f71, 0x364d, 0x6f4b, 0x0000, 0x6f4c, 0x6f4d, + 0x3646, 0x433e, 0x6f4e, 0x0000, 0x6f50, 0x6f51, 0x6f52, 0x5572, + 0x0000, 0x6f53, 0x4477, 0x0000, 0x6f54, 0x4478, 0x6f55, 0x6f56, + 0x3864, 0x3077, 0x6f57, 0x6f58, 0x6f59, 0x0000, 0x6f5a, 0x6f5b, + 0x6f5c, 0x6f5d, 0x0000, 0x6f5e, 0x3e35, 0x6f61, 0x6f5f, 0x6f60, + 0x0000, 0x6f62, 0x6f63, 0x414d, 0x6f64, 0x6f65, 0x6f66, 0x6f67, + 0x6f68, 0x6f69, 0x6f6a, 0x6f6b, 0x6f6c, 0x4058, 0x0000, 0x6f6d, + 0x412d, 0x6f6e, 0x6f6f, 0x6f70, 0x0000, 0x0000, 0x4f62, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3324, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4345, 0x6345, 0x4941, 0x6346, 0x0000, 0x3155, 0x4e4a, 0x3433, + 0x4872, 0x6347, 0x4f50, 0x6348, 0x3c64, 0x6349, 0x634a, 0x4346, + 0x5522, 0x4456, 0x396b, 0x4e45, 0x634b, 0x4376, 0x634c, 0x0000 +}; + +static unsigned short gb2312_from_unicode_96[] = { + 0x3727, 0x3873, 0x3a52, 0x634d, 0x634e, 0x5444, 0x634f, 0x0000, + 0x6350, 0x514b, 0x6351, 0x6352, 0x6353, 0x6354, 0x5156, 0x6355, + 0x327b, 0x403b, 0x6356, 0x0000, 0x402b, 0x6357, 0x6358, 0x6359, + 0x0000, 0x635a, 0x635b, 0x0000, 0x3837, 0x5a62, 0x0000, 0x3653, + 0x0000, 0x5a64, 0x5a63, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x5a66, 0x0000, 0x0000, 0x0000, 0x486e, 0x0000, + 0x0000, 0x5a65, 0x3740, 0x5174, 0x5275, 0x5573, 0x3d57, 0x0000, + 0x0000, 0x0000, 0x0000, 0x5768, 0x5a68, 0x5a67, 0x0000, 0x3022, + 0x4d53, 0x0000, 0x5a69, 0x0000, 0x383d, 0x3c4a, 0x423d, 0x4224, + 0x3342, 0x5a6a, 0x0000, 0x422a, 0x4430, 0x3d35, 0x0000, 0x0000, + 0x4f5e, 0x0000, 0x0000, 0x0000, 0x5a6b, 0x4942, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x315d, 0x0000, 0x0000, 0x0000, 0x5a6c, + 0x0000, 0x3638, 0x543a, 0x0000, 0x337d, 0x0000, 0x0000, 0x5a6d, + 0x5449, 0x4f55, 0x4563, 0x0000, 0x5a6e, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x5a6f, 0x0000, 0x5a70, 0x416a, 0x4c55, 0x4f5d, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5367, 0x4221, 0x0000, + 0x5a71, 0x0000, 0x0000, 0x4b65, 0x0000, 0x5a72, 0x0000, 0x4b66, + 0x527e, 0x0000, 0x0000, 0x0000, 0x3874, 0x0000, 0x0000, 0x5a73, + 0x302f, 0x4f36, 0x0000, 0x0000, 0x554f, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4b6d, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x5a74, 0x0000, 0x0000, 0x6344, 0x0000, 0x0000, 0x4125, 0x0000, + 0x0000, 0x763f, 0x0000, 0x0000, 0x7640, 0x7641, 0x4451, 0x0000, + 0x4838, 0x5163, 0x0000, 0x0000, 0x505b, 0x5145, 0x3c2f, 0x394d, + 0x0000, 0x6f74, 0x0000, 0x0000, 0x3446, 0x533a, 0x7642, 0x337b, + 0x0000, 0x0000, 0x7643, 0x0000, 0x0000, 0x3571, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x7645, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x536a, 0x7627, 0x5129, 0x0000, 0x0000, 0x0000, 0x0000, 0x7629, + 0x0000, 0x0000, 0x0000, 0x7628, 0x0000, 0x0000, 0x4163, 0x4057, + 0x0000, 0x3122, 0x0000, 0x0000, 0x0000, 0x0000, 0x4e6d, 0x0000 +}; + +static unsigned short gb2312_from_unicode_97[] = { + 0x5068, 0x762b, 0x0000, 0x0000, 0x4f76, 0x0000, 0x762a, 0x5570, + 0x762c, 0x4339, 0x0000, 0x0000, 0x0000, 0x3b74, 0x762e, 0x762d, + 0x0000, 0x0000, 0x0000, 0x445e, 0x0000, 0x0000, 0x4158, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x4b2a, 0x0000, 0x4f3c, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x762f, 0x0000, 0x0000, 0x7630, 0x0000, 0x0000, + 0x7631, 0x0000, 0x4236, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3054, 0x4579, 0x0000, 0x0000, 0x0000, 0x0000, 0x7632, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x4760, 0x7626, 0x0000, 0x0000, 0x3e38, 0x0000, + 0x0000, 0x3e32, 0x0000, 0x3565, 0x0000, 0x0000, 0x3747, 0x0000, + 0x3f3f, 0x4352, 0x4366, 0x0000, 0x0000, 0x584c, 0x0000, 0x0000, + 0x0000, 0x386f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x3d79, 0x5125, 0x0000, 0x3050, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x7730, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7731, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x502c, 0x0000, 0x3030, 0x0000, 0x0000, + 0x0000, 0x7732, 0x7733, 0x0000, 0x7734, 0x0000, 0x0000, 0x0000, + 0x474a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3e4f, 0x0000, 0x0000, 0x7737, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x7736, 0x0000, 0x315e, 0x0000, 0x7735, + 0x0000, 0x0000, 0x7738, 0x0000, 0x7739, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4e24, 0x484d, + 0x0000, 0x3a2b, 0x6838, 0x6839, 0x683a, 0x3e42, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x5274, 0x0000, 0x544f, 0x4958, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short gb2312_from_unicode_98[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5233, 0x3625, 0x476a, + 0x717c, 0x4f6e, 0x4b33, 0x506b, 0x676f, 0x4d67, 0x394b, 0x3659, + 0x717d, 0x3064, 0x4b4c, 0x717e, 0x5424, 0x422d, 0x416c, 0x4644, + 0x3e31, 0x7221, 0x3c55, 0x0000, 0x7222, 0x7223, 0x0000, 0x7224, + 0x5243, 0x4635, 0x0000, 0x4d47, 0x7225, 0x0000, 0x5331, 0x3f45, + 0x4c62, 0x0000, 0x7226, 0x7227, 0x5155, 0x366e, 0x7228, 0x7229, + 0x355f, 0x722a, 0x722b, 0x0000, 0x327c, 0x722c, 0x722d, 0x4827, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3767, 0x0000, + 0x0000, 0x6c29, 0x6c2a, 0x6c2b, 0x0000, 0x6c2c, 0x0000, 0x0000, + 0x462e, 0x6c2d, 0x6c2e, 0x0000, 0x0000, 0x0000, 0x3749, 0x4a33, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6238, + 0x774f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short gb2312_from_unicode_99[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7750, 0x0000, 0x0000, + 0x324d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7751, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x7753, 0x7752, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x623b, 0x0000, 0x3c22, 0x0000, 0x623c, + 0x623d, 0x623e, 0x623f, 0x6240, 0x6241, 0x3739, 0x527b, 0x3d24, + 0x4a4e, 0x3125, 0x4b47, 0x0000, 0x6242, 0x367c, 0x4844, 0x6243, + 0x0000, 0x0000, 0x3d48, 0x0000, 0x317d, 0x6244, 0x0000, 0x3676, + 0x6245, 0x4459, 0x0000, 0x0000, 0x6246, 0x4f5a, 0x395d, 0x6247, + 0x4021, 0x0000, 0x6248, 0x3276, 0x0000, 0x6249, 0x0000, 0x4173, + 0x624a, 0x624b, 0x4278, 0x624c, 0x624d, 0x624e, 0x4a57, 0x5838, + 0x5965, 0x4f63, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7025, 0x0000, 0x0000, + 0x5c30, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short gb2312_from_unicode_9a[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x426d, 0x5426, 0x4d54, 0x5131, + 0x335b, 0x477d, 0x0000, 0x3235, 0x423f, 0x6660, 0x4a3b, 0x6661, + 0x6662, 0x3e54, 0x6663, 0x5724, 0x4d55, 0x6665, 0x3c5d, 0x6664, + 0x6666, 0x6667, 0x426e, 0x0000, 0x3d3e, 0x6668, 0x4266, 0x3a27, + 0x6669, 0x0000, 0x666a, 0x3352, 0x5169, 0x0000, 0x0000, 0x3f25, + 0x666b, 0x466f, 0x666c, 0x666d, 0x0000, 0x0000, 0x666e, 0x462d, + 0x666f, 0x0000, 0x4927, 0x6670, 0x6671, 0x6672, 0x6539, 0x6673, + 0x6674, 0x4262, 0x6675, 0x6676, 0x5668, 0x6677, 0x0000, 0x6678, + 0x3947, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x773b, 0x773a, 0x0000, 0x0000, 0x0000, 0x0000, 0x773e, 0x773c, + 0x3a21, 0x0000, 0x773f, 0x0000, 0x7740, 0x0000, 0x0000, 0x0000, + 0x7742, 0x7741, 0x7744, 0x0000, 0x0000, 0x7743, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x7745, 0x7746, 0x0000, 0x0000, 0x0000, + 0x0000, 0x7747, 0x0000, 0x4b68, 0x0000, 0x0000, 0x0000, 0x0000, + 0x385f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7754, + 0x0000, 0x7755, 0x0000, 0x0000, 0x0000, 0x0000, 0x7756, 0x0000, + 0x0000, 0x0000, 0x0000, 0x7758, 0x0000, 0x775a, 0x0000, 0x7757, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x775b, 0x0000, 0x7759, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short gb2312_from_unicode_9b[] = { + 0x0000, 0x0000, 0x0000, 0x5757, 0x0000, 0x0000, 0x0000, 0x0000, + 0x775c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x775d, + 0x0000, 0x0000, 0x0000, 0x775e, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x775f, + 0x0000, 0x0000, 0x0000, 0x7760, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5b4b, + 0x0000, 0x0000, 0x582a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x6577, 0x396d, 0x0000, 0x0000, 0x0000, + 0x0000, 0x3f7d, 0x3b6a, 0x7749, 0x4647, 0x7748, 0x0000, 0x774a, + 0x774c, 0x774b, 0x0000, 0x0000, 0x0000, 0x774d, 0x0000, 0x4e3a, + 0x0000, 0x774e, 0x0000, 0x0000, 0x4427, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short gb2312_from_unicode_9c[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x5363, 0x0000, 0x0000, 0x764f, + 0x0000, 0x4233, 0x7650, 0x0000, 0x0000, 0x7651, 0x7652, 0x7653, + 0x7654, 0x0000, 0x0000, 0x7656, 0x0000, 0x312b, 0x7657, 0x0000, + 0x7658, 0x7659, 0x765a, 0x0000, 0x765b, 0x765c, 0x0000, 0x0000, + 0x0000, 0x0000, 0x765d, 0x765e, 0x4f4a, 0x0000, 0x765f, 0x7660, + 0x7661, 0x7662, 0x7663, 0x7664, 0x4070, 0x7665, 0x7666, 0x7667, + 0x7668, 0x7669, 0x0000, 0x766a, 0x0000, 0x766b, 0x766c, 0x0000, + 0x766d, 0x766e, 0x766f, 0x7670, 0x7671, 0x7672, 0x7673, 0x7674, + 0x3e28, 0x0000, 0x7675, 0x7676, 0x7677, 0x7678, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x487a, 0x7679, 0x767a, 0x767b, 0x767c, + 0x0000, 0x0000, 0x767d, 0x767e, 0x7721, 0x7722, 0x7723, 0x7724, + 0x7725, 0x0000, 0x0000, 0x7726, 0x7727, 0x7728, 0x316e, 0x7729, + 0x772a, 0x772b, 0x0000, 0x0000, 0x772c, 0x772d, 0x415b, 0x772e, + 0x0000, 0x0000, 0x772f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short gb2312_from_unicode_9e[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4471, + 0x702f, 0x3c26, 0x7030, 0x4379, 0x0000, 0x4538, 0x513b, 0x0000, + 0x7031, 0x7032, 0x7033, 0x7034, 0x7035, 0x513c, 0x0000, 0x516c, + 0x0000, 0x7037, 0x7036, 0x5427, 0x0000, 0x4d52, 0x7038, 0x703a, + 0x7039, 0x703b, 0x703c, 0x0000, 0x0000, 0x386b, 0x703d, 0x3a68, + 0x0000, 0x703e, 0x703f, 0x3e69, 0x7040, 0x366c, 0x7041, 0x7042, + 0x7043, 0x7044, 0x4835, 0x7045, 0x7046, 0x0000, 0x7047, 0x4574, + 0x0000, 0x7048, 0x0000, 0x0000, 0x0000, 0x7049, 0x0000, 0x704a, + 0x773d, 0x0000, 0x704b, 0x704c, 0x704d, 0x0000, 0x704e, 0x0000, + 0x0000, 0x0000, 0x0000, 0x704f, 0x3a57, 0x0000, 0x7050, 0x7051, + 0x7052, 0x7053, 0x7054, 0x7055, 0x7056, 0x7058, 0x0000, 0x0000, + 0x5325, 0x7057, 0x0000, 0x7059, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x753a, 0x4239, + 0x0000, 0x0000, 0x7764, 0x0000, 0x0000, 0x0000, 0x0000, 0x7765, + 0x7766, 0x0000, 0x0000, 0x7767, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x7768, 0x4234, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x776a, 0x0000, 0x776b, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4273, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x7470, 0x0000, 0x0000, 0x0000, + 0x746f, 0x0000, 0x0000, 0x4269, 0x0000, 0x7761, 0x7762, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x3b46, 0x0000, 0x0000, 0x0000, + 0x0000, 0x5964, 0x0000, 0x0000, 0x0000, 0x4a72, 0x4068, 0x7024, + 0x0000, 0x3a5a, 0x0000, 0x0000, 0x472d, 0x0000, 0x0000, 0x0000, + 0x442c, 0x0000, 0x0000, 0x776c, 0x776d, 0x776e, 0x0000, 0x7770, + 0x776f, 0x0000, 0x7771, 0x0000, 0x0000, 0x7774, 0x0000, 0x7773, + 0x0000, 0x7772, 0x7775, 0x0000, 0x0000, 0x0000, 0x0000, 0x7776, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x6d69, 0x0000, 0x6d6a, 0x6d6b, 0x0000, 0x763c, 0x0000 +}; + +static unsigned short gb2312_from_unicode_9f[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x763d, 0x0000, 0x763e, 0x3626, 0x0000, + 0x583e, 0x0000, 0x0000, 0x3944, 0x0000, 0x0000, 0x0000, 0x583b, + 0x0000, 0x5c31, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4a73, 0x0000, 0x7777, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x7778, 0x0000, 0x0000, 0x7779, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x777b, + 0x0000, 0x777a, 0x0000, 0x3147, 0x0000, 0x777c, 0x777d, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x777e, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x466b, 0x6c34, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x335d, + 0x7633, 0x0000, 0x0000, 0x7634, 0x4164, 0x7635, 0x7636, 0x7637, + 0x7638, 0x7639, 0x763a, 0x4823, 0x763b, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x417a, 0x3928, 0x6d68, 0x0000, 0x0000, 0x0000, 0x396a, + 0x595f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short gb2312_from_unicode_e7[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2659, 0x265a, 0x265b, + 0x265c, 0x265d, 0x265e, 0x265f, 0x266c, 0x266d, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short gb2312_from_unicode_fe[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x2672, 0x0000, 0x2674, 0x2675, 0x2660, 0x2661, 0x2670, + 0x2671, 0x2662, 0x2663, 0x266e, 0x266f, 0x2666, 0x2667, 0x2664, + 0x2665, 0x2668, 0x2669, 0x266a, 0x266b, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static unsigned short gb2312_from_unicode_ff[] = { + 0x0000, 0x2321, 0x2322, 0x2323, 0x2167, 0x2325, 0x2326, 0x2327, + 0x2328, 0x2329, 0x232a, 0x232b, 0x232c, 0x232d, 0x232e, 0x232f, + 0x2330, 0x2331, 0x2332, 0x2333, 0x2334, 0x2335, 0x2336, 0x2337, + 0x2338, 0x2339, 0x233a, 0x233b, 0x233c, 0x233d, 0x233e, 0x233f, + 0x2340, 0x2341, 0x2342, 0x2343, 0x2344, 0x2345, 0x2346, 0x2347, + 0x2348, 0x2349, 0x234a, 0x234b, 0x234c, 0x234d, 0x234e, 0x234f, + 0x2350, 0x2351, 0x2352, 0x2353, 0x2354, 0x2355, 0x2356, 0x2357, + 0x2358, 0x2359, 0x235a, 0x235b, 0x235c, 0x235d, 0x235e, 0x235f, + 0x2360, 0x2361, 0x2362, 0x2363, 0x2364, 0x2365, 0x2366, 0x2367, + 0x2368, 0x2369, 0x236a, 0x236b, 0x236c, 0x236d, 0x236e, 0x236f, + 0x2370, 0x2371, 0x2372, 0x2373, 0x2374, 0x2375, 0x2376, 0x2377, + 0x2378, 0x2379, 0x237a, 0x237b, 0x237c, 0x237d, 0x212b, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x2169, 0x216a, 0x0000, 0x237e, 0x0000, 0x2324, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +static const unsigned short * const gb2312_from_unicode_[] = { + gb2312_from_unicode_0, + gb2312_from_unicode_1, + gb2312_from_unicode_2, + gb2312_from_unicode_3, + gb2312_from_unicode_4, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + gb2312_from_unicode_1e, + u_allzeros, + gb2312_from_unicode_20, + gb2312_from_unicode_21, + gb2312_from_unicode_22, + gb2312_from_unicode_23, + gb2312_from_unicode_24, + gb2312_from_unicode_25, + gb2312_from_unicode_26, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + gb2312_from_unicode_30, + gb2312_from_unicode_31, + gb2312_from_unicode_32, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + gb2312_from_unicode_4e, + gb2312_from_unicode_4f, + gb2312_from_unicode_50, + gb2312_from_unicode_51, + gb2312_from_unicode_52, + gb2312_from_unicode_53, + gb2312_from_unicode_54, + gb2312_from_unicode_55, + gb2312_from_unicode_56, + gb2312_from_unicode_57, + gb2312_from_unicode_58, + gb2312_from_unicode_59, + gb2312_from_unicode_5a, + gb2312_from_unicode_5b, + gb2312_from_unicode_5c, + gb2312_from_unicode_5d, + gb2312_from_unicode_5e, + gb2312_from_unicode_5f, + gb2312_from_unicode_60, + gb2312_from_unicode_61, + gb2312_from_unicode_62, + gb2312_from_unicode_63, + gb2312_from_unicode_64, + gb2312_from_unicode_65, + gb2312_from_unicode_66, + gb2312_from_unicode_67, + gb2312_from_unicode_68, + gb2312_from_unicode_69, + gb2312_from_unicode_6a, + gb2312_from_unicode_6b, + gb2312_from_unicode_6c, + gb2312_from_unicode_6d, + gb2312_from_unicode_6e, + gb2312_from_unicode_6f, + gb2312_from_unicode_70, + gb2312_from_unicode_71, + gb2312_from_unicode_72, + gb2312_from_unicode_73, + gb2312_from_unicode_74, + gb2312_from_unicode_75, + gb2312_from_unicode_76, + gb2312_from_unicode_77, + gb2312_from_unicode_78, + gb2312_from_unicode_79, + gb2312_from_unicode_7a, + gb2312_from_unicode_7b, + gb2312_from_unicode_7c, + gb2312_from_unicode_7d, + gb2312_from_unicode_7e, + gb2312_from_unicode_7f, + gb2312_from_unicode_80, + gb2312_from_unicode_81, + gb2312_from_unicode_82, + gb2312_from_unicode_83, + gb2312_from_unicode_84, + gb2312_from_unicode_85, + gb2312_from_unicode_86, + gb2312_from_unicode_87, + gb2312_from_unicode_88, + gb2312_from_unicode_89, + gb2312_from_unicode_8a, + gb2312_from_unicode_8b, + gb2312_from_unicode_8c, + gb2312_from_unicode_8d, + gb2312_from_unicode_8e, + gb2312_from_unicode_8f, + gb2312_from_unicode_90, + gb2312_from_unicode_91, + gb2312_from_unicode_92, + gb2312_from_unicode_93, + gb2312_from_unicode_94, + gb2312_from_unicode_95, + gb2312_from_unicode_96, + gb2312_from_unicode_97, + gb2312_from_unicode_98, + gb2312_from_unicode_99, + gb2312_from_unicode_9a, + gb2312_from_unicode_9b, + gb2312_from_unicode_9c, + u_allzeros, + gb2312_from_unicode_9e, + gb2312_from_unicode_9f, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + gb2312_from_unicode_e7, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + u_allzeros, + gb2312_from_unicode_fe, + gb2312_from_unicode_ff +}; + +struct charmap2 gb2312_from_unicode = { 0, 255, (unsigned short **) gb2312_from_unicode_, (unichar_t *) unicode_from_gb2312 }; + diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/Unicode/combiners.h b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/Unicode/combiners.h new file mode 100644 index 00000000000..d26960feb95 --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/Unicode/combiners.h @@ -0,0 +1,1014 @@ +static const int poses300[] = { + _Above, + _Above, + _Above, + _Above, + _Above, + _Above, + _Above, + _Above, + _Above, + _Above, + _Above, + _Above, + _Above, + _Above, + _Above, + _Above, + _Above, /* 0x310 */ + _Above, + _Above, + _Above, + _Above, + _Above|_CenterRight, + _Below, + _Below, + _Below, + _Below, + _Above, + _Above|_Right|_Touching, + _Below, + _Below, + _Below, + _Below, + _Below, /* 0x320 */ + _Below|_Touching, + _Below|_Touching, + _Below, + _Below, + _Below, + _Below, + _Below|_Touching, + _Below|_Touching, /* 0x328 */ + _Below, + _Below, + _Below, + _Below, + _Below, + _Below, + _Below, + _Below, /* 0x330 */ + _Below, + _Below, + _Below, + _Overstrike, + _Overstrike, + _Overstrike, + _Overstrike, + _Overstrike, /* 0x338 */ + _Below, + _Below, + _Below, + _Below, + _Above, + _Above, + _Above, + _Above|_Left, /* 0x340 */ + _Above|_Right, + _Above, + _Above, + _Above, + _Below, + 0 +}; +static const int poses360[] = { + _Above|_Joins2, + _Above|_Joins2, + _Below|_Joins2, + 0 +}; +static const int poses385[] = { + _Above +}; +static const int poses483[] = { + _Above|_CenterLeft, + _Above|_CenterLeft, + _Above|_CenterLeft, + _Above|_CenterLeft, + 0 +}; + +static const int poses488[] = { + _CenteredOutside, /* 8 down half-circles distributed in a circle around the character */ + _CenteredOutside /* 8 commas rotated as moved around circle, bottom is normal comma */ +}; + +static const int poses591[] = { + _Below, + _Above, + _Above, + _Above, + _Above, + _Below|_CenterRight, + _Above, + _Above, + _Above|_LeftEdge, + _Below|_RightEdge, + _Below, + _Above|_CenterRight, + _Above|_RightEdge, + _Above|_CenterRight, + _Above, + _Above|_RightEdge, /* 05a0 */ + _Above|_LeftEdge +}; + +static const int poses5A3[] = { + _Below, + _Below, + _Below|_CenterLeft, + _Below|_CenterLeft, + _Below, + _Above|_CenterLeft, + _Above|_LeftEdge, + _Below, + _Above, + _Above, + _Below|_RightEdge, + _Above|_LeftEdge, + _Above, + _Below, /* 05b0 */ + _Below, + _Below, + _Below, + _Below, + _Below, + _Below, + _Below, + _Below, + _Above|_LeftEdge +}; + +static const int poses5BB[] = { + _Below, + _Overstrike, + _Below +}; + +static const int poses5BF[] = { + _Above +}; + +static const int poses5C1[] = { + _Above|_RightEdge, + _Above|_LeftEdge +}; + +static const int poses5C4[] = { + _Above +}; + +static const int poses64b[] = { + _Above, + _Above, + _Below, + _Above, + _Above, + _Below, + _Above, + _Above, + 0 +}; + +static const int poses670[] = { + _Above +}; + +static const int poses6D6[] = { + _Above, + _Above, + _Above, + _Above, + _Above, + _Above, + _Above, + _Overstrike, + _Overstrike, + _Above, + _Above, /* 6e0 */ + _Above, + _Above, + _Below, + _Above +}; + +static const int poses6E7[] = { + _Above, + _Above +}; + +static const int poses6EA[] = { + _Below, + _Above, + _Above, + _Below +}; + +static const int poses711[] = { + _Above +}; + +static const int poses730[] = { + _Above, + _Below, + _CenteredOutside, /* Two dots, one above CenterRight, one below CenterLeft */ + _Above, + _Below, + _Above, + _Above, + _Below, + _Below, + _Below, + _Above, + _Below, + _Below, + _Above, + _Below, + _Above, + _Above|_LeftEdge, /* 0740 */ + _Above, + _Below, + _Above, + _Below, + _Above, + _Below, + _Above, + _Below, + _Above, + _Above +}; + +static const int poses7A6[] = { + _Above|_CenterLeft, + _Above|_CenterLeft, + _Below|_CenterLeft, + _Below|_CenterLeft, + _Above|_CenterLeft, + _Above|_CenterLeft, + _Above|_CenterLeft, + _Above|_CenterLeft, + _Above|_CenterLeft, + _Above|_CenterLeft, + _Above|_CenterLeft, +}; + +static const int poses901[] = { + _Above, + _Above, + _Right +}; + +static const int poses93C[] = { + _Below +}; + +static const int poses93E[] = { + _Right, + _Left, + _Right, /* 940 */ + _Below, + _Below, + _Below, + _Below, + _Above, + _Above|_CenterLeft, + _Above|_CenterLeft, + _Above|_CenterLeft, + _Right, + _Right, + _Right, + _Right, + _Below|_CenterRight +}; + +static const int poses951[] = { + _Above, + _Below, + _Above, + _Above +}; + +static const int poses962[] = { + _Below, + _Below +}; + +static const int poses981[] = { + _Above, + _Right, + _Right +}; + +static const int poses9BC[] = { + _Below +}; + +static const int poses9BE[] = { + _Right, + _Left, + _Right, + _Below, + _Below, + _Below, + _Below|_CenterRight +}; + +static const int poses9C7[] = { + _Left, + _Left +}; + +static const int poses9CB[] = { + _Overstrike, + _Overstrike, + _Below +}; + +static const int poses9D7[] = { + _Right +}; + +static const int poses9E2[] = { + _Below, + _Below +}; + +static const int posesA02[] = { + _Above +}; + +static const int posesA3C[] = { + _Below +}; + +static const int posesA3E[] = { + _Right, + _Left, + _Right, /* 0a40 */ + _Below, + _Below +}; + +static const int posesA47[] = { + _Above|_CenterLeft, + _Above|_CenterLeft +}; + +static const int posesA4B[] = { + _Above|_CenterLeft, + _Above|_CenterLeft, + _Below +}; + +static const int posesA70[] = { + _Above, + _Above +}; + +static const int posesA81[] = { + _Above, + _Above, + _Right +}; + +static const int posesABC[] = { + _Below +}; + +static const int posesABE[] = { + _Right, + _Left, + _Right, + _Below, + _Below, + _Below, + _Below, + _Above +}; + +static const int posesAC7[] = { + _Above|_CenterLeft, + _Above|_CenterLeft, + _Right +}; + +static const int posesACB[] = { + _Right, + _Right, + _Below|_CenterRight +}; + +static const int posesB01[] = { + _Above, + _Above, + _Right +}; + +static const int posesB3C[] = { + _Below +}; + +static const int posesB3E[] = { + _Right, + _Above, + _Right, /* 0b40 */ + _Below, + _Below, + _Below +}; + +static const int posesB47[] = { + _Left, + _Outside|_Left|_Above +}; + +static const int posesB4B[] = { + _CenteredOutside, + _CenteredOutside, + _Below +}; + +static const int posesB56[] = { + _Above, + _Right, +}; + +static const int posesB82[] = { + _Above, + _Right +}; + +static const int posesBBE[] = { + _Right, + _Right, + _Above, + _Right, + _Right +}; + +static const int posesBC6[] = { + _Left, + _Left, + _Left +}; + +static const int posesBCA[] = { + _CenteredOutside, + _CenteredOutside, + _CenteredOutside, + _Above +}; + +static const int posesBD7[] = { + _Right +}; + +static const int posesC01[] = { + _Right, + _Right, + _Right +}; + +static const int posesC3E[] = { + _Above|_CenterRight, + _Above, + _Above, + _Right, + _Right, + _Right, + _Right +}; + +static const int posesC46[] = { + _Above, + _Above, + _CenteredOutside +}; + +static const int posesC4A[] = { + _Above, + _Above, + _Above, + _Above +}; + +static const int posesC55[] = { + _Above, + _Below +}; + +static const int posesC82[] = { + _Right, + _Right +}; + +static const int posesCBE[] = { + _Right, + _Above, + _Outside|_Above|_Right, + _Right, + _Right, + _Right, + _Right +}; + +static const int posesCC6[] = { + _Above, + _Outside|_Above|_Right, + _Outside|_Above|_Right +}; + +static const int posesCCA[] = { + _Outside|_Above|_Right, + _Outside|_Above|_Right, + _Above, + _Above +}; + +static const int posesCD5[] = { + _Right, + _Right +}; + +static const int posesD02[] = { + _Right, + _Right +}; + +static const int posesD3E[] = { + _Right, + _Right, + _Right, + _Below|_Right, + _Below|_Right, + _Below +}; + +static const int posesD46[] = { + _Left, + _Left, + _Left +}; + +static const int posesD4A[] = { + _Outside|_Left|_Right, + _Outside|_Left|_Right, + _Outside|_Left|_Right, + _Above|_Right +}; + +static const int posesD57[] = { + _Right +}; + +static const int posesD82[] = { + _Right, + _Right +}; + +static const int posesDCA[] = { + _Right +}; + +static const int posesDCF[] = { + _Right, + _Right, + _Right, + _Above, + _Above, + _Below +}; + +static const int posesDD6[] = { + _Below +}; + +static const int posesDD8[] = { + _Right, + _Left, + _CenteredOutside, + _Left, + _CenteredOutside, + _CenteredOutside, + _CenteredOutside, + _Right +}; + +static const int posesDF2[] = { + _Right, + _Right +}; + +static const int posesE31[] = { + _Above +}; + +static const int posesE34[] = { + _Above, + _Above, + _Above, + _Above, + _Below|_Right, + _Below|_CenterRight, + _Below|_Right +}; + +static const int posesE47[] = { + _Above, + _Above|_Right, + _Above, + _Above, + _Above|_CenterRight, + _Above, + _Above|_Right, + _Above|_Right, +}; + +static const int posesEB1[] = { + _Above +}; + +static const int posesEB4[] = { + _Above, + _Above, + _Above, + _Above, + _Below, + _Below +}; + +static const int posesEBB[] = { + _Above, + _Below +}; + +static const int posesEC8[] = { + _Above, + _Above, + _Above, + _Above, + _Above, + _Above +}; + +static const int posesF18[] = { + _Below|_Right +}; + +static const int posesF35[] = { + _Below +}; + +static const int posesF37[] = { + _Below +}; + +static const int posesF39[] = { + _Above|_Right|_Touching +}; + +static const int posesF3E[] = { + _Below|_Right, + _Below|_Left +}; + +static const int posesF71[] = { + _Below, + _Above, + _Outside|_Above|_Below, + _Below, + _Below, + _Outside|_Above|_Below, + _Outside|_Above|_Below, + _Outside|_Above|_Below, + _Outside|_Above|_Below, + _Above|_CenterLeft, + _Above|_CenterLeft, + _Above, + _Above, + _Above, + _Right, + _Above, /* 0f80 */ + _Outside|_Above|_Below, + _Above, + _Above, + _Below|_Left +}; + +static const int posesF86[] = { + _Above, + _Above, + _Above, + _Above, + _Above, + _Above +}; + +static const int posesF90[] = { + _Below, + _Below, + _Below, + _Below, + _Below, + _Below, + _Below, + _Below +}; + +static const int posesF99[] = { + _Below, + _Below, + _Below, + _Below, + _Below, + _Below, + _Below, + _Below, + _Below, + _Below, + _Below, + _Below, + _Below, + _Below, + _Below, + _Below, + _Below, + _Below, + _Below, + _Below, + _Below, + _Below, + _Below, + _Below, + _Below, + _Below, + _Below, + _Below, + _Below, + _Below, + _Below, + _Below, + _Below, + _Below, + _Below, + _Below +}; + +static const int posesFC6[] = { + _Below +}; + +static const int poses102C[] = { + _Right, + _Above, + _Above, + _Below, + _Below, /* 1030 */ + _Left, + _Above +}; + +static const int poses1036[] = { + _Above, + _Below, + _Right, + _Above +}; + +static const int poses1056[] = { + _Right, + _Right, + _Below, + _Below +}; + +static const int poses17B4[] = { + _Overstrike, + _Overstrike, + _Right, + _Above, + _Above, + _Above, + _Above, + _Below, + _Below, + _Below, + _Outside|_Left|_Above, + _CenteredOutside, + _CenteredOutside, /* 17c0 */ + _Left, + _Left, + _Left, + _CenteredOutside, + _CenteredOutside, + _Above, + _Right, + _Right, + _Above, + _Above, + _Above, + _Above, + _Above|_CenterRight, + _Above|_CenterRight, + _Above, + _Above|_CenterRight, /* 17d0 */ + _Above, + _Below, + _Above +}; + +static const int poses18A9[] = { + _Above|_Left +}; + +static const int poses1FBD[] = { /* These aren't listed as combiners, but if we don't use them as such greek fonts don't work */ + _Above, + _Right, + _Above, + _Above, + _Above +}; + +static const int poses1FCD[] = { /* These aren't listed as combiners, but if we don't use them as such greek fonts don't work */ + _Above, + _Above, + _Above +}; + +static const int poses1FDD[] = { /* These aren't listed as combiners, but if we don't use them as such greek fonts don't work */ + _Above, + _Above, + _Above +}; + +static const int poses1FED[] = { /* These aren't listed as combiners, but if we don't use them as such greek fonts don't work */ + _Above, + _Above, + _Above +}; + +static const int poses1FFD[] = { /* These aren't listed as combiners, but if we don't use them as such greek fonts don't work */ + _Above, + _Above +}; + +static const int poses20D0[] = { + _Above, + _Above, + _Overstrike, + _Overstrike, + _Above, + _Above, + _Above, + _Above, + _Overstrike, + _Overstrike, + _Overstrike, + _Above, + _Above, + _CenteredOutside, + _CenteredOutside, + _CenteredOutside, + _Overstrike, + _Above, + _CenteredOutside, + _CenteredOutside +}; + +static const int poses302A[] = { + _Below|_Left, + _Above|_Left, + _Above|_Right, + _Below|_Right, + _Left, + _Left +}; + +static const int poses3099[] = { + _Above|_Right, + _Above|_Right, +}; + +static const int posesFB1E[] = { + _Above +}; + +static const int posesFE20[] = { + _Above, + _Above, + _Above, + _Above +}; + +const static struct { + int low, high; + const int *pos; +} combiners[] = { + { 0x300, 0x345, poses300 }, + { 0x360, 0x362, poses360 }, + { 0x385, 0x385, poses385 }, + { 0x483, 0x486, poses483 }, + { 0x488, 0x489, poses488 }, + { 0x591, 0x5A1, poses591 }, + { 0x5A3, 0x5B9, poses5A3 }, + { 0x5BB, 0x5BD, poses5BB }, + { 0x5BF, 0x5BF, poses5BF }, + { 0x5C1, 0x5C2, poses5C1 }, + { 0x5C4, 0x5C4, poses5C4 }, + { 0x64b, 0x655, poses64b }, + { 0x670, 0x670, poses670 }, + { 0x6D6, 0x6E4, poses6D6 }, + { 0x6E7, 0x6E8, poses6E7 }, + { 0x6EA, 0x6ED, poses6EA }, + { 0x711, 0x711, poses711 }, + { 0x730, 0x74A, poses730 }, + { 0x7A6, 0x7B0, poses7A6 }, + { 0x901, 0x903, poses901 }, + { 0x93C, 0x93C, poses93C }, + { 0x93E, 0x94D, poses93E }, + { 0x951, 0x954, poses951 }, + { 0x962, 0x963, poses962 }, + { 0x981, 0x983, poses981 }, + { 0x9BC, 0x9BC, poses9BC }, + { 0x9BE, 0x9C4, poses9BE }, + { 0x9C7, 0x9C8, poses9C7 }, + { 0x9CB, 0x9CD, poses9CB }, + { 0x9D7, 0x9D7, poses9D7 }, + { 0x9E2, 0x9E3, poses9E2 }, + { 0xA02, 0xA02, posesA02 }, + { 0xA3C, 0xA3C, posesA3C }, + { 0xA3E, 0xA42, posesA3E }, + { 0xA47, 0xA48, posesA47 }, + { 0xA4B, 0xA4D, posesA4B }, + { 0xA70, 0xA71, posesA70 }, + { 0xA81, 0xA83, posesA81 }, + { 0xABC, 0xABC, posesABC }, + { 0xABE, 0xAC5, posesABE }, + { 0xAC7, 0xAC9, posesAC7 }, + { 0xACB, 0xACD, posesACB }, + { 0xB01, 0xB03, posesB01 }, + { 0xB3C, 0xB3C, posesB3C }, + { 0xB3E, 0xB43, posesB3E }, + { 0xB47, 0xB48, posesB47 }, + { 0xB4B, 0xB4D, posesB4B }, + { 0xB56, 0xB56, posesB56 }, + { 0xB82, 0xB83, posesB82 }, + { 0xBBE, 0xBC2, posesBBE }, + { 0xBC6, 0xBC8, posesBC6 }, + { 0xBCA, 0xBCD, posesBCA }, + { 0xBD7, 0xBD7, posesBD7 }, + { 0xC01, 0xC03, posesC01 }, + { 0xC3E, 0xC44, posesC3E }, + { 0xC46, 0xC48, posesC46 }, + { 0xC4A, 0xC4D, posesC4A }, + { 0xC55, 0xC56, posesC55 }, + { 0xC82, 0xC83, posesC82 }, + { 0xCBE, 0xCC4, posesCBE }, + { 0xCC6, 0xCC8, posesCC6 }, + { 0xCCA, 0xCCD, posesCCA }, + { 0xCD5, 0xCD6, posesCD5 }, + { 0xD02, 0xD03, posesD02 }, + { 0xD3E, 0xD43, posesD3E }, + { 0xD46, 0xD48, posesD46 }, + { 0xD4A, 0xD4D, posesD4A }, + { 0xD57, 0xD57, posesD57 }, + { 0xD82, 0xD83, posesD82 }, + { 0xDCA, 0xDCA, posesDCA }, + { 0xDCF, 0xDD4, posesDCF }, + { 0xDD6, 0xDD6, posesDD6 }, + { 0xDD8, 0xDDF, posesDD8 }, + { 0xDF2, 0xDF3, posesDF2 }, + { 0xE31, 0xE31, posesE31 }, + { 0xE34, 0xE3A, posesE34 }, + { 0xE47, 0xE4e, posesE47 }, + { 0xEB1, 0xEB1, posesEB1 }, + { 0xEB4, 0xEB9, posesEB4 }, + { 0xEBB, 0xEBC, posesEBB }, + { 0xEC8, 0xECD, posesEC8 }, + { 0xF18, 0xF19, posesF18 }, + { 0xF35, 0xF35, posesF35 }, + { 0xF37, 0xF37, posesF37 }, + { 0xF39, 0xF39, posesF39 }, + { 0xF3E, 0xF3F, posesF3E }, + { 0xF71, 0xF84, posesF71 }, + { 0xF86, 0xF87, posesF86 }, + { 0xF90, 0xF97, posesF90 }, + { 0xF99, 0xFBC, posesF99 }, + { 0xFC6, 0xFC6, posesFC6 }, + { 0x102c, 0x1032, poses102C }, + { 0x1036, 0x1039, poses1036 }, + { 0x1056, 0x1059, poses1056 }, + { 0x17B4, 0x17D3, poses17B4 }, + { 0x18A9, 0x18A9, poses18A9 }, + { 0x1FBD, 0x1FC2, poses1FBD }, + { 0x1FCD, 0x1FCF, poses1FCD }, + { 0x1FDD, 0x1FDF, poses1FDD }, + { 0x1FED, 0x1FEF, poses1FED }, + { 0x1FFD, 0x1FFE, poses1FFD }, + { 0x20D0, 0x20E3, poses20D0 }, + { 0x302A, 0x302F, poses302A }, + { 0x3099, 0x309A, poses3099 }, + { 0xFB1E, 0xFB1E, posesFB1E }, + { 0xFE20, 0xFB23, posesFE20 }, + { 0 } +}; diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/Unicode/dump.c b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/Unicode/dump.c new file mode 100644 index 00000000000..5b0796e2d55 --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/Unicode/dump.c @@ -0,0 +1,994 @@ +/* Copyright (C) 2000-2008 by George Williams */ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include +#include +#include +#include +#include "../inc/charset.h" +#include "../inc/basics.h" + +char *alphabets[] = { "8859-1.TXT", "8859-2.TXT", "8859-3.TXT", "8859-4.TXT", + "8859-5.TXT", "8859-6.TXT", "8859-7.TXT", "8859-8.TXT", "8859-9.TXT", + "8859-10.TXT", "8859-11.TXT", "8859-13.TXT", "8859-14.TXT", "8859-15.TXT", + "koi8r.TXT", "JIS0201.txt", "WIN.TXT", "MacRoman.TXT", + "MacSYMBOL.TXT", "zapfding.TXT", /*"MacCYRILLIC.TXT",*/ NULL }; +char *alnames[] = { "i8859_1", "i8859_2", "i8859_3", "i8859_4", + "i8859_5", "i8859_6", "i8859_7", "i8859_8", "i8859_9", + "i8859_10", "i8859_11", "i8859_13", "i8859_14", "i8859_15", + "koi8_r", "jis201", "win", "mac", + "MacSymbol", "ZapfDingbats", /*"MacCyrillic",*/ NULL }; +int almaps[] = { em_iso8859_1, em_iso8859_2, em_iso8859_3, em_iso8859_4, + em_iso8859_5, em_iso8859_6, em_iso8859_7, em_iso8859_8, em_iso8859_9, + em_iso8859_10, em_iso8859_11, em_iso8859_13, em_iso8859_14, em_iso8859_15, + em_koi8_r, em_jis201, em_win, em_mac, em_symbol, em_zapfding, + -1 }; + + +char *cjk[] = { "JIS0208.TXT", "JIS0212.TXT", "BIG5.TXT", "GB2312.TXT", + "HANGUL.TXT", "Big5HKSCS.txt", NULL }; +/* I'm only paying attention to Wansung encoding (in HANGUL.TXT) which is 94x94 */ +/* I used to look at OLD5601, but that maps to Unicode 1.0, and Hangul's moved*/ +char *adobecjk[] = { "aj16cid2code.txt", "aj20cid2code.txt", "ac15cid2code.txt", + "ag15cid2code.txt", "ak12cid2code.txt", NULL }; +/* I'm told that most of the mappings provided on the Unicode site go to */ +/* Unicode 1.* and that CJK have been moved radically since. So instead */ +/* of the unicode site's files, try using adobe's which claim they are */ +/* up to date. These may be found in: */ +/* ftp://ftp.ora.com/pub/examples/nutshell/ujip/adobe/samples/{aj14,aj20,ak12,ac13,ag14}/cid2code.txt */ +/* they may be bundled up in a tar file, I forget exactly... */ +char *cjknames[] = { "jis208", "jis212", "big5", "gb2312", "ksc5601", "big5hkscs", NULL }; +int cjkmaps[] = { em_jis208, em_jis212, em_big5, em_gb2312, em_ksc5601, em_big5hkscs }; + +unsigned long *used[256]; + +static void dumpalphas(FILE *output, FILE *header) { + FILE *file; + int i,j,k, first, last; + long _orig, _unicode, mask; + unichar_t unicode[256]; + unsigned char *table[256], *plane; + char buffer[200]; + + fprintf(output, "#include \n\n" ); + fprintf(output, "const unsigned char c_allzeros[256] = { 0 };\n\n" ); + + for ( k=0; k<256; ++k ) table[k] = NULL; + + for ( j=0; alphabets[j]!=NULL; ++j ) { + file = fopen( alphabets[j], "r" ); + if ( file==NULL ) { + fprintf( stderr, "Can't open %s\n", alphabets[j]); + } else { + for ( i=0; i<160; ++i ) + unicode[i] = i; + for ( ; i<256; ++i ) + unicode[i] = 0; + while ( fgets(buffer,sizeof(buffer),file)!=NULL ) { + if ( buffer[0]=='#' ) + continue; + sscanf(buffer, "0x%lx 0x%lx", (unsigned long *) &_orig, (unsigned long *) &_unicode); + unicode[_orig] = _unicode; + if ( table[_unicode>>8]==NULL ) { + plane = table[_unicode>>8] = calloc(256,1); + if ( j==0 && (_unicode>>8)==0 ) + for ( k=0; k<256; ++k ) + plane[k] = k; + else if ( j==0 ) + for ( k=0; k<128; ++k ) + plane[k] = k; + } + table[_unicode>>8][_unicode&0xff] = _orig; + if ( used[_unicode>>8]==NULL ) { + used[_unicode>>8] = calloc(256,sizeof(long)); + } + if ( almaps[j]!=-1 ) + used[_unicode>>8][_unicode&0xff] |= (1<=0x2e80 && val<=0x2fff ) +return( 1 ); /* New CJK Radicals are least important */ + else if ( val>=VERTMARK ) +return( 0 ); /* Then vertical guys */ + /* only we can't handle vertical here */ + else if ( val>=0xf000 && val<=0xffff ) +return( 3 ); +/* else if (( val>=0x3400 && val<0x3dff ) || (val>=0x4000 && val<=0x4dff))*/ + else if ( val>=0x3400 && val<=0x4dff ) +return( 4 ); + else +return( 5 ); +} + +static int getnth(char *buffer, int col) { + int i, val=0, best; + char *end; + int vals[10]; + + if ( col==1 ) { + /* first column is decimal, others are hex */ + if ( !isdigit(*buffer)) +return( -1 ); + while ( isdigit(*buffer)) + val = 10*val + *buffer++-'0'; +return( val ); + } + for ( i=1; ibest ) { + val = vals[i]; + best = ucs2_score(vals[i]); + } + } + } + + if ( val >= VERTMARK ) +return( -1 ); + +return( val ); +} + +static void dumpjis(FILE *output,FILE *header) { + FILE *file; + int i,j,k, first, last; + long _orig, _unicode; + unichar_t unicode208[94*94], unicode212[94*94]; + unichar_t *table[256], *plane; + char buffer[400]; + + memset(table,0,sizeof(table)); + + j=0; + file = fopen( adobecjk[j], "r" ); + if ( file==NULL ) { + fprintf( stderr, "Can't open %s\n", adobecjk[j]); + } else { + memset(unicode208,0,sizeof(unicode208)); + while ( fgets(buffer,sizeof(buffer),file)!=NULL ) { + if ( buffer[0]=='#' ) + continue; + _orig = getnth(buffer,2); + if ( _orig==-1 ) + continue; + _unicode = getnth(buffer,22); + if ( _unicode==-1 ) { + fprintf( stderr, "Eh? JIS 208-1997 %lx is unencoded\n", _orig ); + continue; + } + if ( _unicode>0xffff ) { + fprintf( stderr, "Eh? JIS 208-1997 %lx is outside of BMP\n", _orig ); + continue; + } + if ( table[_unicode>>8]==NULL ) + table[_unicode>>8] = calloc(256,sizeof(unichar_t)); + table[_unicode>>8][_unicode&0xff] = _orig; + _orig -= 0x2121; + _orig = (_orig>>8)*94 + (_orig&0xff); + if ( _orig>=94*94 ) + fprintf( stderr, "Attempt to index with %ld\n", _orig ); + else { + unicode208[_orig] = _unicode; + if ( used[_unicode>>8]==NULL ) { + used[_unicode>>8] = calloc(256,sizeof(long)); + } + used[_unicode>>8][_unicode&0xff] |= (1<0xffff ) { + fprintf( stderr, "Eh? JIS 212-1990 %lx is out of BMP U+%lx\n", _orig, _unicode ); + continue; + } + if ( table[_unicode>>8]==NULL ) + table[_unicode>>8] = calloc(256,sizeof(unichar_t)); + if ( table[_unicode>>8][_unicode&0xff]==0 ) + table[_unicode>>8][_unicode&0xff] = _orig|0x8000; + else + fprintf( stderr, "JIS clash at JIS212 %lx, unicode %lx\n", _orig, _unicode ); /* there are said to be a few of these, I'll just always map to 208 */ + _orig -= 0x2121; + _orig = (_orig>>8)*94 + (_orig&0xff); + if ( _orig>=94*94 ) + fprintf( stderr, "Attempt to index JIS212 with %ld\n", _orig ); + else { + unicode212[_orig] = _unicode; + if ( used[_unicode>>8]==NULL ) { + used[_unicode>>8] = calloc(256,sizeof(long)); + } + used[_unicode>>8][_unicode&0xff] |= (1<0xffff ) { + fprintf( stderr, "Eh? BIG5 %lx is out of BMP U+%lx\n", _orig, _unicode ); + continue; + } + unicode[_orig-0xa100] = _unicode; + if ( table[_unicode>>8]==NULL ) + table[_unicode>>8] = calloc(256,sizeof(unichar_t)); + table[_unicode>>8][_unicode&0xff] = _orig; + if ( used[_unicode>>8]==NULL ) { + used[_unicode>>8] = calloc(256,sizeof(long)); + } + used[_unicode>>8][_unicode&0xff] |= (1<>8]==NULL ) + table[_unicode>>8] = calloc(256,sizeof(unichar_t)); + table[_unicode>>8][_unicode&0xff] = _orig; + if ( used[_unicode>>8]==NULL ) { + used[_unicode>>8] = calloc(256,sizeof(long)); + } + used[_unicode>>8][_unicode&0xff] |= (1<=0x2121 && (_orig&0xff)>=0x21 && _orig<=0x7e7e && (_orig&0xff)<=0x7e ) + fprintf( stderr, "Eh? Wansung %lx is unencoded\n", _orig ); + else if ( _johab>=0x8431 && _johab<=0xf9fe ) + fprintf( stderr, "Eh? Johab %lx is unencoded\n", _johab ); + continue; + } + if ( _unicode>0xffff ) { + if ( _orig>=0x2121 && (_orig&0xff)>=0x21 && _orig<=0x7e7e && (_orig&0xff)<=0x7e ) + fprintf( stderr, "Eh? Wansung %lx is out of BMP U+%lx\n", _orig, _unicode ); + else if ( _johab>=0x8431 && _johab<=0xf9fe ) + fprintf( stderr, "Eh? Johab %lx is out of BMP U+%lx\n", _johab, _unicode ); + continue; + } + if ( _orig>=0x2121 && (_orig&0xff)>=0x21 && _orig<=0x7e7e && (_orig&0xff)<=0x7e ) { + if ( table[_unicode>>8]==NULL ) + table[_unicode>>8] = calloc(256,sizeof(unichar_t)); + table[_unicode>>8][_unicode&0xff] = _orig; + _orig -= 0x2121; + _orig = (_orig>>8)*94 + (_orig&0xff); + if ( _orig>=94*94 ) { + fprintf( stderr, "Not 94x94\n" ); + continue; + } + unicode[_orig] = _unicode; + if ( used[_unicode>>8]==NULL ) { + used[_unicode>>8] = calloc(256,sizeof(long)); + } + used[_unicode>>8][_unicode&0xff] |= (1<=0x8431 && _johab<=0xf9fe ) { + if ( jtable[_unicode>>8]==NULL ) + jtable[_unicode>>8] = calloc(256,sizeof(unichar_t)); + jtable[_unicode>>8][_unicode&0xff] = _johab; + _johab -= 0x8400; + junicode[_johab] = _unicode; + if ( used[_unicode>>8]==NULL ) { + used[_unicode>>8] = calloc(256,sizeof(long)); + } + used[_unicode>>8][_unicode&0xff] |= (1<0xffff ) { + fprintf( stderr, "Eh? GB2312-80 %lx is out of BMP U+%lx\n", _orig, _unicode ); + continue; + } + if ( table[_unicode>>8]==NULL ) + table[_unicode>>8] = calloc(256,sizeof(unichar_t)); + table[_unicode>>8][_unicode&0xff] = _orig; + _orig -= 0x2121; + _orig = (_orig>>8)*94 + (_orig&0xff); + unicode[_orig] = _unicode; + if ( used[_unicode>>8]==NULL ) { + used[_unicode>>8] = calloc(256,sizeof(long)); + } + used[_unicode>>8][_unicode&0xff] |= (1<\n\n" ); + fprintf(output, "const unsigned short u_allzeros[256] = { 0 };\n\n" ); + + dumpjis(output,header); + dumpbig5(output,header); + dumpbig5hkscs(output,header); + dumpWansung(output,header); + dumpgb2312(output,header); +} + +static void dumptrans(FILE *output, FILE *header) { + unsigned long *plane; + int k, i; + + fprintf(output, "static const unsigned long l_allzeros[256] = { 0 };\n" ); + for ( k=0; k<256; ++k ) { + if ( used[k]!=NULL ) { + plane = used[k]; + fprintf( output, "static const unsigned long unicode_backtrans_%x[] = {\n", k ); + for ( i=0; i<256-8; i+=8 ) + fprintf( output, " 0x%06lx, 0x%06lx, 0x%06lx, 0x%06lx, 0x%06lx, 0x%06lx, 0x%06lx, 0x%06lx,\n", + plane[i], plane[i+1], plane[i+2], plane[i+3], + plane[i+4], plane[i+5], plane[i+6], plane[i+7]); + fprintf( output, " 0x%06lx, 0x%06lx, 0x%06lx, 0x%06lx, 0x%06lx, 0x%06lx, 0x%06lx, 0x%06lx\n};\n\n", + plane[i], plane[i+1], plane[i+2], plane[i+3], + plane[i+4], plane[i+5], plane[i+6], plane[i+7]); + } + } + fprintf( header, "\n/* a mask for each character saying what charset(s) it may be found in */\n" ); + fprintf( header, "extern const unsigned long * const unicode_backtrans[];\n" ); + fprintf( output, "const unsigned long *const unicode_backtrans[] = {\n" ); + for ( k=0; k<256; ++k ) + if ( used[k]!=NULL ) + fprintf( output, " unicode_backtrans_%x%s", k, k!=255?",\n":"\n" ); + else + fprintf( output, " l_allzeros,\n" ); + fprintf( output, "};\n" ); +} + +int main(int argc, char **argv) { + FILE *output, *header; + + if (( output = fopen( "alphabet.c", "w" ))==NULL ) { + fprintf( stderr, "Can't open %s\n", "alphabet.c" ); +return 1; + } + if (( header = fopen( "chardata.h", "w" ))==NULL ) { + fprintf( stderr, "Can't open %s\n", "chardata.h" ); +return 1; + } + + fprintf( header, "#include \"basics.h\"\n\n" ); + fprintf( header, "struct charmap {\n int first, last;\n unsigned char **table;\n unichar_t *totable;\n};\n" ); + fprintf( header, "struct charmap2 {\n int first, last;\n unsigned short **table;\n unichar_t *totable;\n};\n\n" ); + + dumpalphas(output,header); + /*dumprandom(output,header);*/ + fclose(output); + + if (( output = fopen( "cjk.c", "w" ))==NULL ) { + fprintf( stderr, "Can't open %s\n", "cjk.c" ); +return 1; + } + dumpcjks(output,header); + if (( output = fopen( "backtrns.c", "w" ))==NULL ) { + fprintf( stderr, "Can't open %s\n", "cjk.c" ); +return 1; + } + dumptrans(output,header); + + /* This really should be in make ctype, but putting it there causes all */ + /* sorts of build problems in things happen out of order */ + fprintf( header,"\nextern const unichar_t *const * const unicode_alternates[];\n" ); + + fclose(output); fclose(header); +return 0; +} diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/Unicode/gwwiconv.c b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/Unicode/gwwiconv.c new file mode 100644 index 00000000000..5576de5c18e --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/Unicode/gwwiconv.c @@ -0,0 +1,1076 @@ +/* Copyright (C) 2004-2008 by George Williams */ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include +#include +#include +#include +#include +#include + +#ifdef LUA_FF_LIB +extern void LUAUI_LogError(const char *fmt,...); +#endif + +#ifndef HAVE_ICONV_H + +/* I have written an limited iconv which will convert either to or from unichar_t */ +/* (either UCS2 or UCS4) */ +/* it will not convert latin1 to latin2, but latin1->UCS2, UCS2->latin2 */ +/* it uses the encodings built into libgunicode for systems with no iconv */ +/* (ie. macs before 10.3, perhaps others) */ + +struct gww_iconv_t { + enum encoding from; + enum encoding to; +}; + +enum extended_encoding { e_jisgbpk = e_encodingmax }; + +static enum endian { end_big, end_little, end_unknown } endian = end_unknown; + +static void endian_detector(void) { + union { short s; char c[2]; } u; + + u.s = 0x0102; + if ( u.c[0]==0x1 ) + endian = end_big; + else + endian = end_little; +} + +static enum encoding name_to_enc(const char *encname) { + struct { const char *name; enum encoding enc; } map[] = { + { "UCS-2-INTERNAL", e_unicode }, + { "UCS2", e_unicode }, + { "UCS-2", e_unicode }, + { "UCS-2LE", e_unicode }, + { "UCS-2BE", e_unicode }, + { "UNICODELITTLE", e_unicode }, + { "UNICODEBIG", e_unicode }, + { "ISO-10646/UCS2", e_unicode }, + { "ISO-10646/USC2", e_unicode }, /* Old typo */ + { "UCS4", e_ucs4 }, + { "UCS-4", e_ucs4 }, + { "UCS-4LE", e_ucs4 }, + { "UCS-4BE", e_ucs4 }, + { "UCS-4-INTERNAL", e_ucs4 }, + { "ISO-10646/UCS4", e_ucs4 }, + { "iso8859-1", e_iso8859_1 }, + { "iso8859-2", e_iso8859_2 }, + { "iso8859-3", e_iso8859_3 }, + { "iso8859-4", e_iso8859_4 }, + { "iso8859-5", e_iso8859_5 }, + { "iso8859-6", e_iso8859_6 }, + { "iso8859-7", e_iso8859_7 }, + { "iso8859-8", e_iso8859_8 }, + { "iso8859-9", e_iso8859_9 }, + { "iso8859-10", e_iso8859_10 }, + { "iso8859-11", e_iso8859_11 }, + { "iso8859-13", e_iso8859_13 }, + { "iso8859-14", e_iso8859_14 }, + { "iso8859-15", e_iso8859_15 }, + { "iso-8859-1", e_iso8859_1 }, + { "iso-8859-2", e_iso8859_2 }, + { "iso-8859-3", e_iso8859_3 }, + { "iso-8859-4", e_iso8859_4 }, + { "iso-8859-5", e_iso8859_5 }, + { "iso-8859-6", e_iso8859_6 }, + { "iso-8859-7", e_iso8859_7 }, + { "iso-8859-8", e_iso8859_8 }, + { "iso-8859-9", e_iso8859_9 }, + { "iso-8859-10", e_iso8859_10 }, + { "iso-8859-11", e_iso8859_11 }, + { "iso-8859-13", e_iso8859_13 }, + { "iso-8859-14", e_iso8859_14 }, + { "iso-8859-15", e_iso8859_15 }, + { "koi8-r", e_koi8_r }, + { "jis201", e_jis201 }, + { "mac", e_mac }, + { "Macintosh", e_mac }, + { "MS-ANSI", e_win }, + { "EUC-KR", e_wansung }, + { "johab", e_johab }, + { "ISO-2022-KR", e_jiskorean }, + { "ISO-2022-CN", e_jisgb }, + { "EUC-CN", e_jisgbpk }, + { "big5", e_big5 }, + { "big5hkscs", e_big5hkscs }, + { "ISO-2022-JP", e_jis }, + { "ISO-2022-JP-2", e_jis2 }, + { "Sjis", e_sjis }, + { "UTF-8", e_utf8 }, + { "UTF8", e_utf8 }, + { NULL }}; + int i; + + for ( i=0; map[i].name!=NULL; ++i ) + if ( strmatch(map[i].name,encname)==0 ) +return( map[i].enc ); + +return( -1 ); +} + +gww_iconv_t gww_iconv_open(const char *toenc,const char *fromenc) { + struct gww_iconv_t stuff, *ret; + + if ( endian==end_unknown ) + endian_detector(); + + stuff.from = name_to_enc(fromenc); + stuff.to = name_to_enc(toenc); + if ( stuff.from==(enum encoding) -1 || stuff.to==(enum encoding) -1 ) { + /*fprintf( stderr, "Unknown encoding\n" );*/ +return( (iconv_t)(-1) ); +#ifdef UNICHAR_16 + } else if ( stuff.from!=e_unicode && stuff.to!=e_unicode ) { + fprintf( stderr, "Bad call to gww_iconv_open, neither arg is UCS2\n" ); +return( (iconv_t)(-1) ); +#else + } else if ( stuff.from!=e_ucs4 && stuff.to!=e_ucs4 ) { +#ifdef LUA_FF_LIB + LUAUI_LogError("Bad call to gww_iconv_open, neither arg is UCS4 (%s->%s)", fromenc, toenc); +#else + fprintf( stderr, "Bad call to gww_iconv_open, neither arg is UCS4\n" ); +#endif +return( (iconv_t)(-1) ); +#endif + } + + ret = galloc(sizeof(struct gww_iconv_t)); + *ret = stuff; +return( ret ); +} + +void gww_iconv_close( gww_iconv_t cd) { + free(cd); +} + +size_t gww_iconv( gww_iconv_t _cd, + char **inbuf, size_t *inlen, + char **outbuf, size_t *outlen) { + struct gww_iconv_t *cd = _cd; + int char_cnt = 0; + unsigned char *plane; + int ch; + + if ( inbuf==NULL || outbuf==NULL || inlen==NULL || outlen==NULL || + *inbuf==NULL || *outbuf==NULL ) +return( 0 ); /* Legal, used to reset the state. As we don't do states, irrelevant */ + + if ( cd->from<0 || cd->from>e_encodingmax || cd->to<0 || cd->to>e_encodingmax ) { + fprintf( stderr, "Garbage encoding passed to gww_iconv()\n" ); +return( (size_t) -1 ); + } + + if ( cd->from==e_unicode ) { + if ( cd->to==e_unicode ) { + int min = *inlen < *outlen ? *inlen : *outlen; + min &= ~1; + memcpy(*inbuf,*outbuf,min); + char_cnt = min/sizeof(short); + *inbuf += min; *outbuf += min; + *inlen -= min; *outlen -= min; + if ( *inlen==1 && *outlen>0 ) +return( (size_t) -1 ); /* Incomplete multi-byte sequence */ + } else if ( cd->to==e_ucs4 ) { + int min = *inlen/sizeof(short) < *outlen/sizeof(int32) ? *inlen/sizeof(short) : *outlen/sizeof(int32); + int highch, lowch; + if ( endian == end_little ) { + while ( *inlen>=sizeof(short) && *outlen>=sizeof(int32) ) { + highch = ((unsigned char *) *inbuf)[1], lowch = *(unsigned char *) *inbuf; + ((uint8 *) outbuf)[3] = 0; ((uint8 *) outbuf)[2] = 0; + ((uint8 *) outbuf)[1] = highch; ((uint8 *) outbuf)[0] = lowch; + outbuf += sizeof(int32); inbuf += sizeof(short); + *outlen -= sizeof(int32); *inlen -= sizeof(short); + } + } else { + while ( *inlen>=sizeof(short) && *outlen>=sizeof(int32) ) { + highch = ((unsigned char *) *inbuf)[0], lowch = ((unsigned char *) *inbuf)[1]; + ((uint8 *) outbuf)[0] = 0; ((uint8 *) outbuf)[1] = 0; + ((uint8 *) outbuf)[2] = highch; ((uint8 *) outbuf)[3] = lowch; + outbuf += sizeof(int32); inbuf += sizeof(short); + *outlen -= sizeof(int32); *inlen -= sizeof(short); + } + } + char_cnt = min; + if ( *inlen==1 && *outlen>0 ) +return( (size_t) -1 ); /* Incomplete multi-byte sequence */ + } else if ( cd->toto]; + while ( *inlen>1 && *outlen>0 ) { + int highch, lowch; + if ( endian == end_little ) { + highch = ((unsigned char *) *inbuf)[1], lowch = *(unsigned char *) *inbuf; + } else { + highch = *(unsigned char *) *inbuf, lowch = ((unsigned char *) *inbuf)[1]; + } + if ( highch>=table->first && highch<=table->last && + (plane = table->table[highch])!=NULL && + (ch=plane[lowch])!=0 ) { + *((*outbuf)++) = ch; + -- *outlen; + *inlen -= 2; + *inbuf += 2; + ++char_cnt; + } else +return( (size_t) -1 ); + } + } else if ( cd->to==e_johab || cd->to==e_big5 || cd->to==e_big5hkscs ) { + struct charmap2 *table = cd->to==e_johab ? &johab_from_unicode : + cd->to==e_big5 ? &big5_from_unicode : + &big5hkscs_from_unicode; + unsigned short *plane; + while ( *inlen>1 && *outlen>0 ) { + int highch, lowch; + if ( endian == end_little ) { + highch = ((unsigned char *) *inbuf)[1], lowch = *(unsigned char *) *inbuf; + } else { + highch = *(unsigned char *) *inbuf, lowch = ((unsigned char *) *inbuf)[1]; + } + if ( highch==0 && lowch<=0x80 ) { + *((*outbuf)++) = highch; + --*outlen; + *inlen-=2; + *inbuf+=2; + ++char_cnt; + } else if ( *outlen==1 ) +return( (size_t) -1 ); + else if ( highch>=table->first && highch<=table->last && + (plane = table->table[highch])!=NULL && + (ch=plane[lowch])!=0 ) { + *((*outbuf)++) = (ch>>8); + *((*outbuf)++) = (ch&0xff); + *outlen -= 2; + *inlen -= 2; + *inbuf += 2; + ++char_cnt; + } else +return( (size_t) -1 ); + } + } else if ( cd->to==e_wansung || cd->to==e_jisgbpk ) { + struct charmap2 *table = cd->to==e_wansung ? &ksc5601_from_unicode : + &gb2312_from_unicode; + unsigned short *plane; + while ( *inlen>1 && *outlen>0 ) { + int highch, lowch; + if ( endian == end_little ) { + highch = ((unsigned char *) *inbuf)[1], lowch = *(unsigned char *) *inbuf; + } else { + highch = *(unsigned char *) *inbuf, lowch = ((unsigned char *) *inbuf)[1]; + } + if ( highch==0 && lowch<=0x80 ) { + *((*outbuf)++) = lowch; + --*outlen; + *inlen-=2; + *inbuf+=2; + ++char_cnt; + } else if ( *outlen==1 ) +return( (size_t) -1 ); + else if ( highch>=table->first && highch<=table->last && + (plane = table->table[highch])!=NULL && + (ch=plane[lowch])!=0 ) { + *((*outbuf)++) = (ch>>8)+0x80; + *((*outbuf)++) = (ch&0xff)+0x80; + *outlen -= 2; + *inlen -= 2; + *inbuf += 2; + ++char_cnt; + } else +return( (size_t) -1 ); + } + } else if ( cd->to==e_sjis ) { + unsigned char *plane1; + unsigned short *plane; + while ( *inlen>1 && *outlen>0 ) { + int highch, lowch; + if ( endian == end_little ) { + highch = ((unsigned char *) *inbuf)[1], lowch = *(unsigned char *) *inbuf; + } else { + highch = *(unsigned char *) *inbuf, lowch = ((unsigned char *) *inbuf)[1]; + } + if (( highch>=jis201_from_unicode.first && highch<=jis201_from_unicode.last && + (plane1 = jis201_from_unicode.table[highch-jis201_from_unicode.first])!=NULL && + (ch=plane1[lowch])!=0 ) || + ( highch==0 && (ch=lowch)<' ' )) { /* control chars not mapped in jis201 */ + *((*outbuf)++) = ch; + --*outlen; + *inlen-=2; + *inbuf+=2; + ++char_cnt; + } else if ( *outlen==1 ) +return( (size_t) -1 ); + else if ( highch>=jis_from_unicode.first && highch<=jis_from_unicode.last && + (plane = jis_from_unicode.table[highch-jis_from_unicode.first])!=NULL && + (ch=plane[lowch])!=0 && ch<0x8000 ) { /* no jis212 */ + int j1 = ch>>8, j2 = ch&0xff; + int ro = j1<95 ? 112 : 176; + int co = (j1&1) ? (j2>95?32:31) : 126; + *((*outbuf)++) = ((j1+1)>>1)+ro; + *((*outbuf)++) = j2+co; + *outlen -= 2; + *inlen -= 2; + *inbuf += 2; + ++char_cnt; + } else +return( (size_t) -1 ); + } + } else if ( cd->to==e_jis || cd->to==e_jis2 || + cd->to==e_jiskorean || cd->to==e_jisgb ) { + struct charmap2 *table = cd->to==e_jisgb ? &gb2312_from_unicode : + cd->to==e_jiskorean ? &ksc5601_from_unicode : + &jis_from_unicode; + unsigned short *plane; + while ( *inlen>1 && *outlen>1 ) { + int highch, lowch; + if ( endian == end_little ) { + highch = ((unsigned char *) *inbuf)[1], lowch = *(unsigned char *) *inbuf; + } else { + highch = *(unsigned char *) *inbuf, lowch = ((unsigned char *) *inbuf)[1]; + } + if ( highch>=table->first && highch<=table->last && + (plane = table->table[highch])!=NULL && + (ch=plane[lowch])!=0 ) { + if ( ch>=0x8000 ) { + if ( cd->to!=e_jis2 ) +return( (size_t) -1 ); + ch -= 0x8000; + } else { + if ( cd->to==e_jis2 ) +return( (size_t) -1 ); + } + *((*outbuf)++) = (ch>>8); + *((*outbuf)++) = (ch&0xff); + *outlen -= 2; + *inlen -= 2; + *inbuf += 2; + ++char_cnt; + } else +return( (size_t) -1 ); + } + } else if ( cd->to==e_utf8 ) { + while ( *inlen>1 && *outlen>0 ) { + unichar_t uch; + if ( endian == end_little ) { + uch = (((unsigned char *) *inbuf)[1]<<8) | (*((unsigned char *) *inbuf)); + } else { + uch = (*((unsigned char *) *inbuf)<<8) | (((unsigned char *) *inbuf)[1]); + } + if ( uch < 0x80 ) { + *((*outbuf)++) = uch; + --*outlen; + } else if ( uch<0x800 ) { + if ( *outlen==1 ) +return( (size_t) -1 ); + *((*outbuf)++) = 0xc0 | (uch>>6); + *((*outbuf)++) = 0x80 | (uch&0x3f); + *outlen-=2; + } else { /* I'm not dealing with */ + if ( *outlen<=2 ) +return( (size_t) -1 ); + *((*outbuf)++) = 0xe0 | (uch>>12); + *((*outbuf)++) = 0x80 | ((uch>>6)&0x3f); + *((*outbuf)++) = 0x80 | (uch&0x3f); + *outlen-=3; + } + *inbuf += 2; + *inlen -= 2; + ++char_cnt; + } + } else { + fprintf( stderr, "Unexpected encoding\n" ); +return( (size_t) -1 ); + } + } else if ( cd->from==e_ucs4 ) { + if ( cd->to==e_unicode ) { + int min = *inlen/sizeof(int32) < *outlen/sizeof(int16) ? *inlen/sizeof(int32) : *outlen/sizeof(int16); + int highch, lowch; + if ( endian == end_little ) { + while ( *inlen>=sizeof(short) && *outlen>=sizeof(int32) ) { + highch = ((unsigned char *) *inbuf)[1], lowch = *(unsigned char *) *inbuf; + ((uint8 *) outbuf)[1] = highch; ((uint8 *) outbuf)[0] = lowch; + outbuf += sizeof(int16); inbuf += sizeof(int32); + *outlen -= sizeof(int16); *inlen -= sizeof(int32); + } + } else { + while ( *inlen>=sizeof(short) && *outlen>=sizeof(int32) ) { + highch = ((unsigned char *) *inbuf)[2], lowch = ((unsigned char *) *inbuf)[3]; + ((uint8 *) outbuf)[0] = highch; ((uint8 *) outbuf)[1] = lowch; + outbuf += sizeof(int16); inbuf += sizeof(int32); + *outlen -= sizeof(int16); *inlen -= sizeof(int32); + } + } + char_cnt = min; + if ( *inlen>0 && *outlen>0 ) +return( (size_t) -1 ); /* Incomplete multi-byte sequence */ + } else if ( cd->toto]; + while ( *inlen>1 && *outlen>0 ) { + int highch, lowch; + if ( endian == end_little ) { + highch = ((unsigned char *) *inbuf)[1], lowch = *(unsigned char *) *inbuf; + } else { + highch = ((unsigned char *) *inbuf)[2], lowch = ((unsigned char *) *inbuf)[3]; + } + if ( highch>=table->first && highch<=table->last && + (plane = table->table[highch])!=NULL && + (ch=plane[lowch])!=0 ) { + *((*outbuf)++) = ch; + -- *outlen; + *inlen -= 4; + *inbuf += 4; + ++char_cnt; + } else +return( (size_t) -1 ); + } + } else if ( cd->to==e_johab || cd->to==e_big5 || cd->to==e_big5hkscs ) { + struct charmap2 *table = cd->to==e_johab ? &johab_from_unicode : + cd->to==e_big5 ? &big5_from_unicode : + &big5hkscs_from_unicode; + unsigned short *plane; + while ( *inlen>1 && *outlen>0 ) { + int highch, lowch; + if ( endian == end_little ) { + highch = ((unsigned char *) *inbuf)[1], lowch = *(unsigned char *) *inbuf; + } else { + highch = ((unsigned char *) *inbuf)[2], lowch = ((unsigned char *) *inbuf)[3]; + } + if ( highch==0 && lowch<=0x80 ) { + *((*outbuf)++) = highch; + --*outlen; + *inlen-=4; + *inbuf+=4; + ++char_cnt; + } else if ( *outlen==1 ) +return( (size_t) -1 ); + else if ( highch>=table->first && highch<=table->last && + (plane = table->table[highch])!=NULL && + (ch=plane[lowch])!=0 ) { + *((*outbuf)++) = (ch>>8); + *((*outbuf)++) = (ch&0xff); + *outlen -= 2; + *inlen -= 4; + *inbuf += 4; + ++char_cnt; + } else +return( (size_t) -1 ); + } + } else if ( cd->to==e_wansung || cd->to==e_jisgbpk ) { + struct charmap2 *table = cd->to==e_wansung ? &ksc5601_from_unicode : + &gb2312_from_unicode; + unsigned short *plane; + while ( *inlen>1 && *outlen>0 ) { + int highch, lowch; + if ( endian == end_little ) { + highch = ((unsigned char *) *inbuf)[1], lowch = *(unsigned char *) *inbuf; + } else { + highch = ((unsigned char *) *inbuf)[2], lowch = ((unsigned char *) *inbuf)[3]; + } + if ( highch==0 && lowch<=0x80 ) { + *((*outbuf)++) = lowch; + --*outlen; + *inlen-=4; + *inbuf+=4; + ++char_cnt; + } else if ( *outlen==1 ) +return( (size_t) -1 ); + else if ( highch>=table->first && highch<=table->last && + (plane = table->table[highch])!=NULL && + (ch=plane[lowch])!=0 ) { + *((*outbuf)++) = (ch>>8)+0x80; + *((*outbuf)++) = (ch&0xff)+0x80; + *outlen -= 2; + *inlen -= 4; + *inbuf += 4; + ++char_cnt; + } else +return( (size_t) -1 ); + } + } else if ( cd->to==e_sjis ) { + unsigned char *plane1; + unsigned short *plane; + while ( *inlen>1 && *outlen>0 ) { + int highch, lowch; + if ( endian == end_little ) { + highch = ((unsigned char *) *inbuf)[1], lowch = *(unsigned char *) *inbuf; + } else { + highch = ((unsigned char *) *inbuf)[2], lowch = ((unsigned char *) *inbuf)[3]; + } + if (( highch>=jis201_from_unicode.first && highch<=jis201_from_unicode.last && + (plane1 = jis201_from_unicode.table[highch-jis201_from_unicode.first])!=NULL && + (ch=plane1[lowch])!=0 ) || + ( highch==0 && (ch=lowch)<' ' )) { /* control chars not mapped in jis201 */ + *((*outbuf)++) = ch; + --*outlen; + *inlen-=4; + *inbuf+=4; + ++char_cnt; + } else if ( *outlen==1 ) +return( (size_t) -1 ); + else if ( highch>=jis_from_unicode.first && highch<=jis_from_unicode.last && + (plane = jis_from_unicode.table[highch-jis_from_unicode.first])!=NULL && + (ch=plane[lowch])!=0 && ch<0x8000 ) { /* no jis212 */ + int j1 = ch>>8, j2 = ch&0xff; + int ro = j1<95 ? 112 : 176; + int co = (j1&1) ? (j2>95?32:31) : 126; + *((*outbuf)++) = ((j1+1)>>1)+ro; + *((*outbuf)++) = j2+co; + *outlen -= 2; + *inlen -= 4; + *inbuf += 4; + ++char_cnt; + } else +return( (size_t) -1 ); + } + } else if ( cd->to==e_jis || cd->to==e_jis2 || + cd->to==e_jiskorean || cd->to==e_jisgb ) { + struct charmap2 *table = cd->to==e_jisgb ? &gb2312_from_unicode : + cd->to==e_jiskorean ? &ksc5601_from_unicode : + &jis_from_unicode; + unsigned short *plane; + while ( *inlen>1 && *outlen>1 ) { + int highch, lowch; + if ( endian == end_little ) { + highch = ((unsigned char *) *inbuf)[1], lowch = *(unsigned char *) *inbuf; + } else { + highch = ((unsigned char *) *inbuf)[2], lowch = ((unsigned char *) *inbuf)[3]; + } + if ( highch>=table->first && highch<=table->last && + (plane = table->table[highch])!=NULL && + (ch=plane[lowch])!=0 ) { + if ( ch>=0x8000 ) { + if ( cd->to!=e_jis2 ) +return( (size_t) -1 ); + ch -= 0x8000; + } else { + if ( cd->to==e_jis2 ) +return( (size_t) -1 ); + } + *((*outbuf)++) = (ch>>8); + *((*outbuf)++) = (ch&0xff); + *outlen -= 2; + *inlen -= 4; + *inbuf += 4; + ++char_cnt; + } else +return( (size_t) -1 ); + } + } else if ( cd->to==e_utf8 ) { + while ( *inlen>1 && *outlen>0 ) { + int uch; + if ( endian == end_little ) { + uch = (((unsigned char *) *inbuf)[3]<<24) | + (((unsigned char *) *inbuf)[2]<<16) | + (((unsigned char *) *inbuf)[1]<<8) | + (*((unsigned char *) *inbuf)); + } else { + uch = (*((unsigned char *) *inbuf)<<24) | + (((unsigned char *) *inbuf)[1]<<16) | + (((unsigned char *) *inbuf)[2]<<8) | + (((unsigned char *) *inbuf)[3]); + } + if ( uch < 0x80 ) { + *((*outbuf)++) = uch; + --*outlen; + } else if ( uch<0x800 ) { + if ( *outlen==1 ) +return( (size_t) -1 ); + *((*outbuf)++) = 0xc0 | (uch>>6); + *((*outbuf)++) = 0x80 | (uch&0x3f); + *outlen-=2; + } else if ( uch < 0x10000 ) { + if ( *outlen<=2 ) +return( (size_t) -1 ); + *((*outbuf)++) = 0xe0 | (uch>>12); + *((*outbuf)++) = 0x80 | ((uch>>6)&0x3f); + *((*outbuf)++) = 0x80 | (uch&0x3f); + *outlen-=3; + } else { + uint32 val = uch-0x10000; + int u = ((val&0xf0000)>>16)+1, z=(val&0x0f000)>>12, y=(val&0x00fc0)>>6, x=val&0x0003f; + if ( *outlen<=3 ) +return( (size_t) -1 ); + *(*outbuf)++ = 0xf0 | (u>>2); + *(*outbuf)++ = 0x80 | ((u&3)<<4) | z; + *(*outbuf)++ = 0x80 | y; + *(*outbuf)++ = 0x80 | x; + *outlen-=4; + } + *inbuf += 4; + *inlen -= 4; + ++char_cnt; + } + } else { + fprintf( stderr, "Unexpected encoding\n" ); +return( (size_t) -1 ); + } + } else if ( cd->to==e_unicode ) { + const unichar_t *table; + if ( cd->fromfrom]; + while ( *inlen>0 && *outlen>1 ) { + unichar_t ch = table[ *(unsigned char *) ((*inbuf)++)]; + --*inlen; + if ( endian==end_little ) { + *((*outbuf)++) = ch&0xff; + *((*outbuf)++) = ch>>8; + } else { + *((*outbuf)++) = ch>>8; + *((*outbuf)++) = ch&0xff; + } + *outlen -= sizeof(unichar_t); + ++char_cnt; + } + } else if ( cd->from==e_jis || cd->from==e_jis2 || + cd->from==e_jiskorean || cd->from==e_jisgb ) { + table = cd->from==e_jisgb ? unicode_from_gb2312 : + cd->from==e_jiskorean ? unicode_from_ksc5601 : + cd->from==e_jis ? unicode_from_jis208 : + unicode_from_jis212; + while ( *inlen>1 && *outlen>1 ) { + unsigned char *ipt = (unsigned char *) *inbuf; + int ch; + if ( *ipt<0x21 || *ipt>0x7e || ipt[1]<0x21 || ipt[1]>0x7e ) +return( (size_t) -1 ); + ch = (*ipt-0x21)*94 + (ipt[1]-0x21); + ch = table[ch]; + *inlen -= 2; + *inbuf = (char *) ipt+2; + if ( endian==end_little ) { + *((*outbuf)++) = ch&0xff; + *((*outbuf)++) = ch>>8; + } else { + *((*outbuf)++) = ch>>8; + *((*outbuf)++) = ch&0xff; + } + *outlen -= sizeof(unichar_t); + ++char_cnt; + } + if ( *inlen==1 && *outlen>0 ) +return( (size_t) -1 ); /* Incomplete multi-byte sequence */ + } else if ( cd->from==e_wansung || cd->from==e_jisgbpk ) { + table = cd->from==e_jisgbpk ? unicode_from_gb2312 : + unicode_from_ksc5601 ; + while ( *inlen>0 && *outlen>1 ) { + unsigned char *ipt = (unsigned char *) *inbuf; + int ch; + if ( *ipt<0x7f ) { + ch = *ipt; + --*inlen; + *inbuf = (char *) ipt+1; + } else { + if ( *ipt<0xa1 || *ipt>0xfe || ipt[1]<0xa1 || ipt[1]>0xfe || + *inlen==1 ) +return( (size_t) -1 ); + ch = (*ipt-0xa1)*94 + (ipt[1]-0xa1); + ch = table[ch]; + *inlen -= 2;; + *inbuf = (char *) ipt+2; + } + if ( endian==end_little ) { + *((*outbuf)++) = ch&0xff; + *((*outbuf)++) = ch>>8; + } else { + *((*outbuf)++) = ch>>8; + *((*outbuf)++) = ch&0xff; + } + *outlen -= sizeof(unichar_t); + ++char_cnt; + } + } else if ( cd->from==e_johab || cd->from==e_big5 || cd->from==e_big5hkscs ) { + int offset; + if ( cd->from==e_big5 ) { + offset = 0xa100; + table = unicode_from_big5; + } else if ( cd->from==e_big5hkscs ) { + offset = 0x8100; + table = unicode_from_big5hkscs; + } else { + offset = 0x8400; + table = unicode_from_johab; + } + while ( *inlen>0 && *outlen>1 ) { + unsigned char *ipt = (unsigned char *) *inbuf; + int ch; + if ( *ipt<0x7f ) { + ch = *ipt; + --*inlen; + *inbuf = (char *) ipt+1; + } else { + if ( *inlen==1 ) +return( (size_t) -1 ); + ch = (*ipt<<8) | ipt[1]; + if ( ch>8; + } else { + *((*outbuf)++) = ch>>8; + *((*outbuf)++) = ch&0xff; + } + *outlen -= sizeof(unichar_t); + ++char_cnt; + } + } else if ( cd->from==e_sjis ) { + while ( *inlen>0 && *outlen>1 ) { + unsigned char *ipt = (unsigned char *) *inbuf; + int ch1 = *ipt; + if ( ch1<127 || ( ch1>=161 && ch1<=223 )) { + ch = unicode_from_jis201[ch1]; + *inbuf = (char *) ipt+1; + --*inlen; + } else if ( *inlen==1 ) +return( (size_t) -1 ); + else { + int ch2 = ipt[1]; + if ( ch1 >= 129 && ch1<= 159 ) + ch1 -= 112; + else + ch1 -= 176; + ch1 <<= 1; + if ( ch2>=159 ) + ch2-= 126; + else if ( ch2>127 ) { + --ch1; + ch2 -= 32; + } else { + --ch1; + ch2 -= 31; + } + if ( ch1-0x21>=94 || ch2-0x21>=94 ) +return( (size_t) -1 ); + ch = unicode_from_jis208[(ch1-0x21)*94+(ch2-0x21)]; + *inlen -= 2; + *inbuf = (char *) ipt+2; + } + if ( endian==end_little ) { + *((*outbuf)++) = ch&0xff; + *((*outbuf)++) = ch>>8; + } else { + *((*outbuf)++) = ch>>8; + *((*outbuf)++) = ch&0xff; + } + *outlen -= sizeof(unichar_t); + ++char_cnt; + } + } else if ( cd->from==e_utf8 ) { + while ( *inlen>0 && *outlen>sizeof(unichar_t) ) { + unsigned char *ipt = (unsigned char *) *inbuf; + int ch = *ipt; + if ( ch <= 127 ) { + *inbuf = (char *) ipt+1; + --*inlen; + } else if ( ch<=0xdf ) { + if ( *inlen<2 || ipt[1]<0x80 ) +return( (size_t) -1 ); + ch = ((ch&0x1f)<<6) | (ipt[1] &0x3f); + *inlen -= 2; + *inbuf = (char *) ipt+2; + } else if ( ch<=0xef ) { + if ( *inlen<3 || ipt[1]<0x80 || ipt[2]<0x80 ) +return( (size_t) -1 ); + ch = ((ch&0x1f)<<12) | ((ipt[1] &0x3f)<<6) | (ipt[2]&0x3f); + *inlen -= 3; + *inbuf = (char *) ipt+3; + } else { + int w; + if ( *inlen<4 || *outlen<4 || ipt[1]<0x80 || ipt[2]<0x80 || ipt[3]<0x80 ) +return( (size_t) -1 ); + w = ( ((ch&0x7)<<2) | ((ipt[1]&0x30)>>4) )-1; + ch = 0xd800 | (w<<6) | ((ipt[1]&0xf)<<2) | ((ipt[2]&0x30)>>4); + if ( endian==end_little ) { + *((*outbuf)++) = ch&0xff; + *((*outbuf)++) = ch>>8; + } else { + *((*outbuf)++) = ch>>8; + *((*outbuf)++) = ch&0xff; + } + *outlen -= 2; + ch = 0xdc00 | ((ipt[2]&0xf)<<6) | (ipt[3]&0x3f); + } + if ( endian==end_little ) { + *((*outbuf)++) = ch&0xff; + *((*outbuf)++) = ch>>8; + } else { + *((*outbuf)++) = ch>>8; + *((*outbuf)++) = ch&0xff; + } + *outlen -= sizeof(unichar_t); + ++char_cnt; + } + } else { + fprintf( stderr, "Unexpected encoding\n" ); +return( (size_t) -1 ); + } + } else if ( cd->to==e_ucs4 ) { + const unichar_t *table; + if ( cd->fromfrom]; + while ( *inlen>0 && *outlen>1 ) { + unichar_t ch = table[ *(unsigned char *) ((*inbuf)++)]; + --*inlen; + if ( endian==end_little ) { + *((*outbuf)++) = 0; + *((*outbuf)++) = 0; + *((*outbuf)++) = ch&0xff; + *((*outbuf)++) = ch>>8; + } else { + *((*outbuf)++) = ch>>8; + *((*outbuf)++) = ch&0xff; + *((*outbuf)++) = 0; + *((*outbuf)++) = 0; + } + *outlen -= sizeof(unichar_t); + ++char_cnt; + } + } else if ( cd->from==e_jis || cd->from==e_jis2 || + cd->from==e_jiskorean || cd->from==e_jisgb ) { + table = cd->from==e_jisgb ? unicode_from_gb2312 : + cd->from==e_jiskorean ? unicode_from_ksc5601 : + cd->from==e_jis ? unicode_from_jis208 : + unicode_from_jis212; + while ( *inlen>1 && *outlen>1 ) { + unsigned char *ipt = (unsigned char *) *inbuf; + int ch; + if ( *ipt<0x21 || *ipt>0x7e || ipt[1]<0x21 || ipt[1]>0x7e ) +return( (size_t) -1 ); + ch = (*ipt-0x21)*94 + (ipt[1]-0x21); + ch = table[ch]; + *inlen -= 2; + *inbuf = (char *) ipt+2; + if ( endian==end_little ) { + *((*outbuf)++) = 0; + *((*outbuf)++) = 0; + *((*outbuf)++) = ch&0xff; + *((*outbuf)++) = ch>>8; + } else { + *((*outbuf)++) = ch>>8; + *((*outbuf)++) = ch&0xff; + *((*outbuf)++) = 0; + *((*outbuf)++) = 0; + } + *outlen -= sizeof(unichar_t); + ++char_cnt; + } + if ( *inlen==1 && *outlen>0 ) +return( (size_t) -1 ); /* Incomplete multi-byte sequence */ + } else if ( cd->from==e_wansung || cd->from==e_jisgbpk ) { + table = cd->from==e_jisgbpk ? unicode_from_gb2312 : + unicode_from_ksc5601 ; + while ( *inlen>0 && *outlen>1 ) { + unsigned char *ipt = (unsigned char *) *inbuf; + int ch; + if ( *ipt<0x7f ) { + ch = *ipt; + --*inlen; + *inbuf = (char *) ipt+1; + } else { + if ( *ipt<0xa1 || *ipt>0xfe || ipt[1]<0xa1 || ipt[1]>0xfe || + *inlen==1 ) +return( (size_t) -1 ); + ch = (*ipt-0xa1)*94 + (ipt[1]-0xa1); + ch = table[ch]; + *inlen -= 2;; + *inbuf = (char *) ipt+2; + } + if ( endian==end_little ) { + *((*outbuf)++) = 0; + *((*outbuf)++) = 0; + *((*outbuf)++) = ch&0xff; + *((*outbuf)++) = ch>>8; + } else { + *((*outbuf)++) = ch>>8; + *((*outbuf)++) = ch&0xff; + *((*outbuf)++) = 0; + *((*outbuf)++) = 0; + } + *outlen -= sizeof(unichar_t); + ++char_cnt; + } + } else if ( cd->from==e_johab || cd->from==e_big5 || cd->from==e_big5hkscs ) { + int offset; + if ( cd->from==e_big5 ) { + offset = 0xa100; + table = unicode_from_big5; + } else if ( cd->from==e_big5hkscs ) { + offset = 0x8100; + table = unicode_from_big5hkscs; + } else { + offset = 0x8400; + table = unicode_from_johab; + } + while ( *inlen>0 && *outlen>1 ) { + unsigned char *ipt = (unsigned char *) *inbuf; + int ch; + if ( *ipt<0x7f ) { + ch = *ipt; + --*inlen; + *inbuf = (char *) ipt+1; + } else { + if ( *inlen==1 ) +return( (size_t) -1 ); + ch = (*ipt<<8) | ipt[1]; + if ( ch>8; + } else { + *((*outbuf)++) = ch>>8; + *((*outbuf)++) = ch&0xff; + *((*outbuf)++) = 0; + *((*outbuf)++) = 0; + } + *outlen -= sizeof(unichar_t); + ++char_cnt; + } + } else if ( cd->from==e_sjis ) { + while ( *inlen>0 && *outlen>1 ) { + unsigned char *ipt = (unsigned char *) *inbuf; + int ch1 = *ipt; + if ( ch1<127 || ( ch1>=161 && ch1<=223 )) { + ch = unicode_from_jis201[ch1]; + *inbuf = (char *) ipt+1; + --*inlen; + } else if ( *inlen==1 ) +return( (size_t) -1 ); + else { + int ch2 = ipt[1]; + if ( ch1 >= 129 && ch1<= 159 ) + ch1 -= 112; + else + ch1 -= 176; + ch1 <<= 1; + if ( ch2>=159 ) + ch2-= 126; + else if ( ch2>127 ) { + --ch1; + ch2 -= 32; + } else { + --ch1; + ch2 -= 31; + } + if ( ch1-0x21>=94 || ch2-0x21>=94 ) +return( (size_t) -1 ); + ch = unicode_from_jis208[(ch1-0x21)*94+(ch2-0x21)]; + *inlen -= 2; + *inbuf = (char *) ipt+2; + } + if ( endian==end_little ) { + *((*outbuf)++) = 0; + *((*outbuf)++) = 0; + *((*outbuf)++) = ch&0xff; + *((*outbuf)++) = ch>>8; + } else { + *((*outbuf)++) = ch>>8; + *((*outbuf)++) = ch&0xff; + *((*outbuf)++) = 0; + *((*outbuf)++) = 0; + } + *outlen -= sizeof(unichar_t); + ++char_cnt; + } + } else if ( cd->from==e_utf8 ) { + while ( *inlen>0 && *outlen>sizeof(unichar_t) ) { + unsigned char *ipt = (unsigned char *) *inbuf; + int ch = *ipt; + if ( ch <= 127 ) { + *inbuf = (char *) ipt+1; + --*inlen; + } else if ( ch<=0xdf ) { + if ( *inlen<2 || ipt[1]<0x80 ) +return( (size_t) -1 ); + ch = ((ch&0x1f)<<6) | (ipt[1] &0x3f); + *inlen -= 2; + *inbuf = (char *) ipt+2; + } else if ( ch<=0xef ) { + if ( *inlen<3 || ipt[1]<0x80 || ipt[2]<0x80 ) +return( (size_t) -1 ); + ch = ((ch&0x1f)<<12) | ((ipt[1] &0x3f)<<6) | (ipt[2]&0x3f); + *inlen -= 3; + *inbuf = (char *) ipt+3; + } else { + int w,w2; + w = ( ((*ipt&0x7)<<2) | ((ipt[1]&0x30)>>4) )-1; + w = (w<<6) | ((ipt[1]&0xf)<<2) | ((ipt[2]&0x30)>>4); + w2 = ((ipt[2]&0xf)<<6) | (ipt[3]&0x3f); + ch = w*0x400 + w2 + 0x10000; + *inbuf = (char *) ipt+4; + } + if ( endian==end_little ) { + *((*outbuf)++) = ch&0xff; + *((*outbuf)++) = ch>>8; + *((*outbuf)++) = ch>>16; + *((*outbuf)++) = ch>>24; + } else { + *((*outbuf)++) = ch>>24; + *((*outbuf)++) = ch>>16; + *((*outbuf)++) = ch>>8; + *((*outbuf)++) = ch&0xff; + } + *outlen -= sizeof(unichar_t); + ++char_cnt; + } + } else { + fprintf( stderr, "Unexpected encoding\n" ); +return( (size_t) -1 ); + } + } else { + fprintf( stderr, "One of the two encodings must be UCS2 in gww_iconv()\n" ); +return( (size_t) -1 ); + } + + if ( *outlen>=1 ) { + **outbuf = '\0'; + if ( *outlen>1 ) + (*outbuf)[1] = '\0'; + if ( cd->to==e_ucs4 && *outlen>3 ) { + (*outbuf)[2] = '\0'; + (*outbuf)[3] = '\0'; + } + } +return( char_cnt ); +} +#else +static const int a_file_must_define_something=1; +#endif /* HAVE_ICONV_H */ diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/Unicode/memory.c b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/Unicode/memory.c new file mode 100644 index 00000000000..62c14eb730e --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/Unicode/memory.c @@ -0,0 +1,90 @@ +/* Copyright (C) 2000-2008 by George Williams */ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include +#include +#include +#include "ustring.h" + +/* wrappers around standard memory routines so we can trap errors. */ +static void default_trap(void) { + fprintf(stderr, "Attempt to allocate memory failed.\n" ); + abort(); +} + +static void (*trap)(void) = default_trap; + +void galloc_set_trap(void (*newtrap)(void)) { + if ( newtrap==NULL ) newtrap = default_trap; + trap = newtrap; +} + +void *galloc(long size) { + void *ret; + while (( ret = malloc(size))==NULL ) + trap(); + memset(ret,0x3c,size); /* fill with random junk for debugging */ +return( ret ); +} + +void *gcalloc(int cnt,long size) { + void *ret; + while (( ret = calloc(cnt,size))==NULL ) + trap(); +return( ret ); +} + +void *grealloc(void *old,long size) { + void *ret; + while (( ret = realloc(old,size))==NULL ) + trap(); +return( ret ); +} + +void gfree(void *old) { + free(old); +} + +char *copy(const char *str) { + char *ret; + + if ( str==NULL ) +return( NULL ); + ret = galloc(strlen(str)+1); + strcpy(ret,str); +return( ret ); +} + +char *copyn(const char *str,long n) { + char *ret; + + if ( str==NULL ) +return( NULL ); + ret = galloc(n+1); + memcpy(ret,str,n); + ret[n]='\0'; +return( ret ); +} diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/Unicode/ucharmap.c b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/Unicode/ucharmap.c new file mode 100644 index 00000000000..316234246a9 --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/Unicode/ucharmap.c @@ -0,0 +1,675 @@ +/* Copyright (C) 2000-2008 by George Williams */ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifdef VMS /* these three lines from Jacob Jansen, Open VMS port */ +# include +#endif +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include +#include +#include +#include +#include +#include + +int local_encoding = e_iso8859_1; +#if HAVE_ICONV_H +char *iconv_local_encoding_name = NULL; +#endif + +static int bad_enc_warn = false; + +/* Does not handle conversions to Extended unix */ + +unichar_t *encoding2u_strncpy(unichar_t *uto, const char *_from, int n, enum encoding cs) { + unichar_t *upt=uto; + const unichar_t *table; + int offset; + const unsigned char *from = (const unsigned char *) _from; + + if ( cs0 ) { + *upt++ = *(unsigned char *) (from++); + --n; + } + } else { + while ( *from && n>0 ) { + *upt ++ = table[*(unsigned char *) (from++)]; + --n; + } + } + } else if ( cs0 ) { + if ( *from>=(offset>>8) && from[1]!='\0' ) { + *upt++ = table[ ((*from<<8) | from[1]) - offset ]; + from += 2; + } else + *upt++ = *from++; + --n; + } + break; + case e_wansung: + while ( *from && n>0 ) { + if ( *from>=0xa1 && from[1]>=0xa1 ) { + *upt++ = unicode_from_ksc5601[ (*from-0xa1)*94+(from[1]-0xa1) ]; + from += 2; + } else + *upt++ = *from++; + --n; + } + break; + case e_jisgb: + while ( *from && n>0 ) { + if ( *from>=0xa1 && from[1]>=0xa1 ) { + *upt++ = unicode_from_gb2312[ (*from-0xa1)*94+(from[1]-0xa1) ]; + from += 2; + } else + *upt++ = *from++; + --n; + } + break; + case e_sjis: + while ( *from && n>0 ) { + if ( *from<127 || ( *from>=161 && *from<=223 )) { + *upt++ = unicode_from_jis201[*from++]; + } else { + int ch1 = *from++; + int ch2 = *from++; + if ( ch1 >= 129 && ch1<= 159 ) + ch1 -= 112; + else + ch1 -= 176; + ch1 <<= 1; + if ( ch2>=159 ) + ch2-= 126; + else if ( ch2>127 ) { + --ch1; + ch2 -= 32; + } else { + --ch1; + ch2 -= 31; + } + *upt++ = unicode_from_jis208[(ch1-0x21)*94+(ch2-0x21)]; + } + --n; + } + break; + } + } else if ( cs==e_unicode ) { + unichar_t *ufrom = (unichar_t *) from; + while ( *ufrom && n>0 ) { + *upt++ = *ufrom++; + --n; + } + } else if ( cs==e_unicode_backwards ) { + unichar_t *ufrom = (unichar_t *) from; + while ( *ufrom && n>0 ) { + unichar_t ch = (*ufrom>>8)||((*ufrom&0xff)<<8); + *upt++ = ch; + ++ufrom; + --n; + } + } else if ( cs==e_utf8 ) { + while ( *from && n>0 ) { + if ( *from<=127 ) + *upt = *from++; + else if ( *from<=0xdf ) { + if ( from[1]>=0x80 ) { + *upt = ((*from&0x1f)<<6) | (from[1]&0x3f); + from += 2; + } else { + ++from; /* Badly formed utf */ + *upt = 0xfffd; + } + } else if ( *from<=0xef ) { + if ( from[1]>=0x80 && from[2]>=0x80 ) { + *upt = ((*from&0xf)<<12) | ((from[1]&0x3f)<<6) | (from[2]&0x3f); + from += 3; + } else { + ++from; /* Badly formed utf */ + *upt = 0xfffd; + } + } else if ( n>2 ) { + if ( from[1]>=0x80 && from[2]>=0x80 && from[3]>=0x80 ) { + int w = ( ((*from&0x7)<<2) | ((from[1]&0x30)>>4) )-1; + *upt++ = 0xd800 | (w<<6) | ((from[1]&0xf)<<2) | ((from[2]&0x30)>>4); + *upt = 0xdc00 | ((from[2]&0xf)<<6) | (from[3]&0x3f); + from += 4; + } else { + ++from; /* Badly formed utf */ + *upt = 0xfffd; + } + } else { + /* no space for surrogate */ + from += 4; + } + ++upt; + } + } else { + if ( !bad_enc_warn ) { + bad_enc_warn = true; + fprintf( stderr, "Unexpected encoding %d, I'll pretend it's latin1\n", cs ); + } +return( encoding2u_strncpy(uto,_from,n,e_iso8859_1)); + } + + if ( n>0 ) + *upt = '\0'; + +return( uto ); +} + +char *u2encoding_strncpy(char *to, const unichar_t *ufrom, int n, enum encoding cs) { + char *pt = to; + + /* we just ignore anything that doesn't fit in the encoding we look at */ + if ( cs0 ) { + int ch = *ufrom; + if ( ch<127 ) { + *pt++ = ch; + --n; + } + ++ufrom; + } + } else { + while ( *ufrom && n>0 ) { + int highch = *ufrom>>8, ch; + if ( highch>=table->first && highch<=table->last && + (plane = table->table[highch])!=NULL && + (ch=plane[*ufrom&0xff])!=0 ) { + *pt++ = ch; + --n; + } + ++ufrom; + } + } + if ( n>0 ) + *pt = '\0'; + } else if ( cs0 ) { + int highch = *ufrom>>8, ch; + if ( *ufrom<0x80 ) { + *pt++ = *ufrom; + --n; + } else if ( highch>=table->first && highch<=table->last && + (plane = table->table[highch-table->first])!=NULL && + (ch=plane[*ufrom&0xff])!=0 ) { + *pt++ = ch>>8; + *pt++ = ch&0xff; + n -= 2; + } + ufrom ++; + } + break; + case e_wansung: + while ( *ufrom && n>0 ) { + int highch = *ufrom>>8, ch; + if ( *ufrom<0x80 ) { + *pt++ = *ufrom; + --n; + } else if ( highch>=ksc5601_from_unicode.first && highch<=ksc5601_from_unicode.last && + (plane = ksc5601_from_unicode.table[highch-ksc5601_from_unicode.first])!=NULL && + (ch=plane[*ufrom&0xff])!=0 ) { + *pt++ = (ch>>8) + 0x80; + *pt++ = (ch&0xff) + 0x80; + n -= 2; + } + ufrom ++; + } + break; + case e_jisgb: + while ( *ufrom && n>0 ) { + int highch = *ufrom>>8, ch; + if ( *ufrom<0x80 ) { + *pt++ = *ufrom; + --n; + } else if ( highch>=gb2312_from_unicode.first && highch<=gb2312_from_unicode.last && + (plane = gb2312_from_unicode.table[highch-gb2312_from_unicode.first])!=NULL && + (ch=plane[*ufrom&0xff])!=0 ) { + *pt++ = (ch>>8) + 0x80; + *pt++ = (ch&0xff) + 0x80; + n -= 2; + } + ufrom ++; + } + break; + case e_sjis: + while ( *ufrom && n>0 ) { + int highch = *ufrom>>8, ch; + if ( highch>=jis201_from_unicode.first && highch<=jis201_from_unicode.last && + (plane1 = jis201_from_unicode.table[highch-jis201_from_unicode.first])!=NULL && + (ch=plane1[*ufrom&0xff])!=0 ) { + *pt++ = ch; + --n; + } else if ( *ufrom<' ' ) { /* control chars */ + *pt++ = *ufrom; + --n; + } else if ( highch>=jis_from_unicode.first && highch<=jis_from_unicode.last && + (plane = jis_from_unicode.table[highch-jis_from_unicode.first])!=NULL && + (ch=plane[*ufrom&0xff])!=0 && ch<0x8000 ) { /* no jis212 */ + int j1 = ch>>8, j2 = ch&0xff; + int ro = j1<95 ? 112 : 176; + int co = (j1&1) ? (j2>95?32:31) : 126; + *pt++ = ((j1+1)>>1)+ro; + *pt++ = j2+co; + n -= 2; + } + ++ufrom; + } + break; + } + if ( n>0 ) + *pt = '\0'; + } else if ( cs==e_unicode ) { + unichar_t *uto = (unichar_t *) to; + while ( *ufrom && n>1 ) { + *uto++ = *ufrom++; + n-=sizeof(unichar_t); + } + if ( n>1 ) + *uto = '\0'; + } else if ( cs==e_unicode_backwards ) { + unichar_t *uto = (unichar_t *) to; + while ( *ufrom && n>sizeof(unichar_t)-1 ) { +#ifdef UNICHAR_16 + unichar_t ch = (*ufrom>>8)|((*ufrom&0xff)<<8); +#else + unichar_t ch = (*ufrom>>24)|((*ufrom>>8)&0xff00)| + ((*ufrom<<8)&0xff0000)|(*ufrom<<24); +#endif + *uto++ = ch; + ++ufrom; + n-=sizeof(unichar_t); + } + if ( n>1 ) + *uto = '\0'; + } else if ( cs==e_utf8 ) { + while ( *ufrom ) { + if ( *ufrom<0x80 ) { + if ( n<=1 ) + break; + *pt++ = *ufrom; + --n; + } else if ( *ufrom<0x800 ) { + if ( n<=2 ) + break; + *pt++ = 0xc0 | (*ufrom>>6); + *pt++ = 0x80 | (*ufrom&0x3f); + n -= 2; + } else if ( *ufrom>=0xd800 && *ufrom<0xdc00 && ufrom[1]>=0xdc00 && ufrom[1]<0xe000 ) { + int u = ((*ufrom>>6)&0xf)+1, y = ((*ufrom&3)<<4) | ((ufrom[1]>>6)&0xf); + if ( n<=4 ) + break; + *pt++ = 0xf0 | (u>>2); + *pt++ = 0x80 | ((u&3)<<4) | ((*ufrom>>2)&0xf); + *pt++ = 0x80 | y; + *pt++ = 0x80 | (ufrom[1]&0x3f); + n -= 4; + } else { + if ( n<=3 ) + break; + *pt++ = 0xe0 | (*ufrom>>12); + *pt++ = 0x80 | ((*ufrom>>6)&0x3f); + *pt++ = 0x80 | (*ufrom&0x3f); + } + ++ufrom; + } + if ( n>1 ) + *pt = '\0'; + } else { + if ( !bad_enc_warn ) { + bad_enc_warn = true; + fprintf( stderr, "Unexpected encoding %d, I'll pretend it's latin1\n", cs ); + } +return( u2encoding_strncpy(to,ufrom,n,e_iso8859_1)); + } + +return( to ); +} + +#if HAVE_ICONV_H +static char *old_local_name=NULL; +static iconv_t to_unicode=(iconv_t) (-1), from_unicode=(iconv_t) (-1); +static iconv_t to_utf8=(iconv_t) (-1), from_utf8=(iconv_t) (-1); +#ifdef UNICHAR_16 +static char *names[] = { "UCS-2-INTERNAL", "UCS-2", "UCS2", "ISO-10646/UCS2", "UNICODE", NULL }; +static char *namesle[] = { "UCS-2LE", "UNICODELITTLE", NULL }; +static char *namesbe[] = { "UCS-2BE", "UNICODEBIG", NULL }; +#else +static char *names[] = { "UCS-4-INTERNAL", "UCS-4", "UCS4", "ISO-10646-UCS-4", "UTF-32", NULL }; +static char *namesle[] = { "UCS-4LE", "UTF-32LE", NULL }; +static char *namesbe[] = { "UCS-4BE", "UTF-32BE", NULL }; +#endif +static char *unicode_name = NULL; +static int byteswapped = false; + +static int BytesNormal(iconv_t latin1_2_unicode) { +#ifdef UNICHAR_16 + union { + short s; + char c[2]; + } u[8]; +#else + union { + int s; + char c[4]; + } u[8]; +#endif + char *from = "A", *to = &u[0].c[0]; + size_t in_left = 1, out_left = sizeof(u); + memset(u,0,sizeof(u)); + iconv( latin1_2_unicode, (iconv_arg2_t) &from, &in_left, &to, &out_left); + if ( u[0].s=='A' ) +return( true ); + +return( false ); +} + +static int my_iconv_setup(void) { + char **testnames; + int i; + union { + short s; + char c[2]; + } u; + iconv_t test; + + if ( iconv_local_encoding_name==NULL ) { + if ( to_unicode!=(iconv_t) (-1) ) { + iconv_close(to_unicode); + iconv_close(from_unicode); + to_unicode = from_unicode = (iconv_t) (-1); + } +return(false); + } + if ( old_local_name!=NULL && strcmp(old_local_name,iconv_local_encoding_name)==0 ) +return( to_unicode!=(iconv_t) (-1) ); + + free(old_local_name); + old_local_name = copy(iconv_local_encoding_name); + to_utf8 = iconv_open("UTF-8",iconv_local_encoding_name); + from_utf8 = iconv_open(iconv_local_encoding_name,"UTF-8"); + + if ( unicode_name==NULL ) { + u.c[0] = 0x1; u.c[1] = 0x2; + if ( u.s==0x201 ) { /* Little endian */ + testnames = namesle; + } else { + testnames = namesbe; + } + for ( i=0; testnames[i]!=NULL; ++i ) { + test = iconv_open(testnames[i],"ISO-8859-1"); + if ( test!=(iconv_t) -1 && test!=NULL ) { + iconv_close(test); + unicode_name = testnames[i]; + break; + } + } + if ( unicode_name==NULL ) { + for ( i=0; names[i]!=NULL; ++i ) { + test = iconv_open(names[i],"ISO-8859-1"); + if ( test!=(iconv_t) -1 && test!=NULL ) { + byteswapped = !BytesNormal(test); + iconv_close(test); + unicode_name = names[i]; + break; + } + } + } + } + if ( unicode_name == NULL ) { + fprintf( stderr, "Could not find a name for Unicode which iconv could understand.\n" ); +return( false ); + } else if ( byteswapped ) { + fprintf( stderr, "The only name for Unicode that iconv understood produced unexpected results.\nPerhaps %s was byte swapped.\n", unicode_name ); +return( false ); + } + + to_unicode = iconv_open(unicode_name,iconv_local_encoding_name); + from_unicode = iconv_open(iconv_local_encoding_name,unicode_name); + if ( to_unicode == (iconv_t) (-1) || to_utf8 == (iconv_t) (-1) ) { + fprintf( stderr, "iconv failed to understand encoding %s\n", + iconv_local_encoding_name); +return( false ); + } +return( true ); +} +#endif + +unichar_t *def2u_strncpy(unichar_t *uto, const char *from, int n) { +#if HAVE_ICONV_H + if ( my_iconv_setup() ) { + size_t in_left = n, out_left = sizeof(unichar_t)*n; + char *cto = (char *) uto; + iconv(to_unicode, (iconv_arg2_t) &from, &in_left, &cto, &out_left); + if ( cto<((char *) uto)+2*n) *cto++ = '\0'; + if ( cto<((char *) uto)+2*n) *cto++ = '\0'; +#ifndef UNICHAR_16 + if ( cto<((char *) uto)+4*n) *cto++ = '\0'; + if ( cto<((char *) uto)+4*n) *cto++ = '\0'; +#endif +return( uto ); + } +#endif +return( encoding2u_strncpy(uto,from,n,local_encoding)); +} + +char *u2def_strncpy(char *to, const unichar_t *ufrom, int n) { +#if HAVE_ICONV_H + if ( my_iconv_setup() ) { + size_t in_left = sizeof(unichar_t)*n, out_left = n; + char *cfrom = (char *) ufrom, *cto=to; + iconv(from_unicode, (iconv_arg2_t) &cfrom, &in_left, &cto, &out_left); + if ( cto=e_first2byte ) + len *= 2; + to = galloc(len+sizeof(unichar_t)); + ret = u2encoding_strncpy(to,ufrom,len,local_encoding); + if ( ret==NULL ) + free( to ); + else if ( local_encoding + +static const unichar_t str_a0[] = { 0x0020, 0 }; +static const unichar_t str_a8[] = { 0x0020, 0x0308, 0 }; +static const unichar_t str_aa[] = { 0x0061, 0 }; +static const unichar_t str_af[] = { 0x0020, 0x0304, 0 }; +static const unichar_t str_b2[] = { 0x0032, 0 }; +static const unichar_t str_b3[] = { 0x0033, 0 }; +static const unichar_t str_b4[] = { 0x0020, 0x0301, 0 }; +static const unichar_t str_b5[] = { 0x03bc, 0 }; +static const unichar_t str_b8[] = { 0x0020, 0x0327, 0 }; +static const unichar_t str_b9[] = { 0x0031, 0 }; +static const unichar_t str_ba[] = { 0x006f, 0 }; +static const unichar_t str_bc[] = { 0x0031, 0x2044, 0x0034, 0 }; +static const unichar_t str_bd[] = { 0x0031, 0x2044, 0x0032, 0 }; +static const unichar_t str_be[] = { 0x0033, 0x2044, 0x0034, 0 }; +static const unichar_t str_c0[] = { 0x0041, 0x0300, 0 }; +static const unichar_t str_c1[] = { 0x0041, 0x0301, 0 }; +static const unichar_t str_c2[] = { 0x0041, 0x0302, 0 }; +static const unichar_t str_c3[] = { 0x0041, 0x0303, 0 }; +static const unichar_t str_c4[] = { 0x0041, 0x0308, 0 }; +static const unichar_t str_c5[] = { 0x0041, 0x030a, 0 }; +static const unichar_t str_c7[] = { 0x0043, 0x0327, 0 }; +static const unichar_t str_c8[] = { 0x0045, 0x0300, 0 }; +static const unichar_t str_c9[] = { 0x0045, 0x0301, 0 }; +static const unichar_t str_ca[] = { 0x0045, 0x0302, 0 }; +static const unichar_t str_cb[] = { 0x0045, 0x0308, 0 }; +static const unichar_t str_cc[] = { 0x0049, 0x0300, 0 }; +static const unichar_t str_cd[] = { 0x0049, 0x0301, 0 }; +static const unichar_t str_ce[] = { 0x0049, 0x0302, 0 }; +static const unichar_t str_cf[] = { 0x0049, 0x0308, 0 }; +static const unichar_t str_d1[] = { 0x004e, 0x0303, 0 }; +static const unichar_t str_d2[] = { 0x004f, 0x0300, 0 }; +static const unichar_t str_d3[] = { 0x004f, 0x0301, 0 }; +static const unichar_t str_d4[] = { 0x004f, 0x0302, 0 }; +static const unichar_t str_d5[] = { 0x004f, 0x0303, 0 }; +static const unichar_t str_d6[] = { 0x004f, 0x0308, 0 }; +static const unichar_t str_d9[] = { 0x0055, 0x0300, 0 }; +static const unichar_t str_da[] = { 0x0055, 0x0301, 0 }; +static const unichar_t str_db[] = { 0x0055, 0x0302, 0 }; +static const unichar_t str_dc[] = { 0x0055, 0x0308, 0 }; +static const unichar_t str_dd[] = { 0x0059, 0x0301, 0 }; +static const unichar_t str_e0[] = { 0x0061, 0x0300, 0 }; +static const unichar_t str_e1[] = { 0x0061, 0x0301, 0 }; +static const unichar_t str_e2[] = { 0x0061, 0x0302, 0 }; +static const unichar_t str_e3[] = { 0x0061, 0x0303, 0 }; +static const unichar_t str_e4[] = { 0x0061, 0x0308, 0 }; +static const unichar_t str_e5[] = { 0x0061, 0x030a, 0 }; +static const unichar_t str_e7[] = { 0x0063, 0x0327, 0 }; +static const unichar_t str_e8[] = { 0x0065, 0x0300, 0 }; +static const unichar_t str_e9[] = { 0x0065, 0x0301, 0 }; +static const unichar_t str_ea[] = { 0x0065, 0x0302, 0 }; +static const unichar_t str_eb[] = { 0x0065, 0x0308, 0 }; +static const unichar_t str_ec[] = { 0x0069, 0x0300, 0 }; +static const unichar_t str_ed[] = { 0x0069, 0x0301, 0 }; +static const unichar_t str_ee[] = { 0x0069, 0x0302, 0 }; +static const unichar_t str_ef[] = { 0x0069, 0x0308, 0 }; +static const unichar_t str_f1[] = { 0x006e, 0x0303, 0 }; +static const unichar_t str_f2[] = { 0x006f, 0x0300, 0 }; +static const unichar_t str_f3[] = { 0x006f, 0x0301, 0 }; +static const unichar_t str_f4[] = { 0x006f, 0x0302, 0 }; +static const unichar_t str_f5[] = { 0x006f, 0x0303, 0 }; +static const unichar_t str_f6[] = { 0x006f, 0x0308, 0 }; +static const unichar_t str_f9[] = { 0x0075, 0x0300, 0 }; +static const unichar_t str_fa[] = { 0x0075, 0x0301, 0 }; +static const unichar_t str_fb[] = { 0x0075, 0x0302, 0 }; +static const unichar_t str_fc[] = { 0x0075, 0x0308, 0 }; +static const unichar_t str_fd[] = { 0x0079, 0x0301, 0 }; +static const unichar_t str_ff[] = { 0x0079, 0x0308, 0 }; +static const unichar_t str_100[] = { 0x0041, 0x0304, 0 }; +static const unichar_t str_101[] = { 0x0061, 0x0304, 0 }; +static const unichar_t str_102[] = { 0x0041, 0x0306, 0 }; +static const unichar_t str_103[] = { 0x0061, 0x0306, 0 }; +static const unichar_t str_104[] = { 0x0041, 0x0328, 0 }; +static const unichar_t str_105[] = { 0x0061, 0x0328, 0 }; +static const unichar_t str_106[] = { 0x0043, 0x0301, 0 }; +static const unichar_t str_107[] = { 0x0063, 0x0301, 0 }; +static const unichar_t str_108[] = { 0x0043, 0x0302, 0 }; +static const unichar_t str_109[] = { 0x0063, 0x0302, 0 }; +static const unichar_t str_10a[] = { 0x0043, 0x0307, 0 }; +static const unichar_t str_10b[] = { 0x0063, 0x0307, 0 }; +static const unichar_t str_10c[] = { 0x0043, 0x030c, 0 }; +static const unichar_t str_10d[] = { 0x0063, 0x030c, 0 }; +static const unichar_t str_10e[] = { 0x0044, 0x030c, 0 }; +static const unichar_t str_10f[] = { 0x0064, 0x030c, 0 }; +static const unichar_t str_110[] = { 0x00d0, 0 }; +static const unichar_t str_112[] = { 0x0045, 0x0304, 0 }; +static const unichar_t str_113[] = { 0x0065, 0x0304, 0 }; +static const unichar_t str_114[] = { 0x0045, 0x0306, 0 }; +static const unichar_t str_115[] = { 0x0065, 0x0306, 0 }; +static const unichar_t str_116[] = { 0x0045, 0x0307, 0 }; +static const unichar_t str_117[] = { 0x0065, 0x0307, 0 }; +static const unichar_t str_118[] = { 0x0045, 0x0328, 0 }; +static const unichar_t str_119[] = { 0x0065, 0x0328, 0 }; +static const unichar_t str_11a[] = { 0x0045, 0x030c, 0 }; +static const unichar_t str_11b[] = { 0x0065, 0x030c, 0 }; +static const unichar_t str_11c[] = { 0x0047, 0x0302, 0 }; +static const unichar_t str_11d[] = { 0x0067, 0x0302, 0 }; +static const unichar_t str_11e[] = { 0x0047, 0x0306, 0 }; +static const unichar_t str_11f[] = { 0x0067, 0x0306, 0 }; +static const unichar_t str_120[] = { 0x0047, 0x0307, 0 }; +static const unichar_t str_121[] = { 0x0067, 0x0307, 0 }; +static const unichar_t str_122[] = { 0x0047, 0x0327, 0 }; +static const unichar_t str_123[] = { 0x0067, 0x0327, 0 }; +static const unichar_t str_124[] = { 0x0048, 0x0302, 0 }; +static const unichar_t str_125[] = { 0x0068, 0x0302, 0 }; +static const unichar_t str_128[] = { 0x0049, 0x0303, 0 }; +static const unichar_t str_129[] = { 0x0069, 0x0303, 0 }; +static const unichar_t str_12a[] = { 0x0049, 0x0304, 0 }; +static const unichar_t str_12b[] = { 0x0069, 0x0304, 0 }; +static const unichar_t str_12c[] = { 0x0049, 0x0306, 0 }; +static const unichar_t str_12d[] = { 0x0069, 0x0306, 0 }; +static const unichar_t str_12e[] = { 0x0049, 0x0328, 0 }; +static const unichar_t str_12f[] = { 0x0069, 0x0328, 0 }; +static const unichar_t str_130[] = { 0x0049, 0x0307, 0 }; +static const unichar_t str_132[] = { 0x0049, 0x004a, 0 }; +static const unichar_t str_133[] = { 0x0069, 0x006a, 0 }; +static const unichar_t str_134[] = { 0x004a, 0x0302, 0 }; +static const unichar_t str_135[] = { 0x006a, 0x0302, 0 }; +static const unichar_t str_136[] = { 0x004b, 0x0327, 0 }; +static const unichar_t str_137[] = { 0x006b, 0x0327, 0 }; +static const unichar_t str_138[] = { 0x03ba, 0 }; +static const unichar_t str_139[] = { 0x004c, 0x0301, 0 }; +static const unichar_t str_13a[] = { 0x006c, 0x0301, 0 }; +static const unichar_t str_13b[] = { 0x004c, 0x0327, 0 }; +static const unichar_t str_13c[] = { 0x006c, 0x0327, 0 }; +static const unichar_t str_13d[] = { 0x004c, 0x030c, 0 }; +static const unichar_t str_13e[] = { 0x006c, 0x030c, 0 }; +static const unichar_t str_13f[] = { 0x004c, 0x00b7, 0 }; +static const unichar_t str_140[] = { 0x006c, 0x00b7, 0 }; +static const unichar_t str_143[] = { 0x004e, 0x0301, 0 }; +static const unichar_t str_144[] = { 0x006e, 0x0301, 0 }; +static const unichar_t str_145[] = { 0x004e, 0x0327, 0 }; +static const unichar_t str_146[] = { 0x006e, 0x0327, 0 }; +static const unichar_t str_147[] = { 0x004e, 0x030c, 0 }; +static const unichar_t str_148[] = { 0x006e, 0x030c, 0 }; +static const unichar_t str_149[] = { 0x02bc, 0x006e, 0 }; +static const unichar_t str_14c[] = { 0x004f, 0x0304, 0 }; +static const unichar_t str_14d[] = { 0x006f, 0x0304, 0 }; +static const unichar_t str_14e[] = { 0x004f, 0x0306, 0 }; +static const unichar_t str_14f[] = { 0x006f, 0x0306, 0 }; +static const unichar_t str_150[] = { 0x004f, 0x030b, 0 }; +static const unichar_t str_151[] = { 0x006f, 0x030b, 0 }; +static const unichar_t str_152[] = { 0x004f, 0x0045, 0 }; +static const unichar_t str_153[] = { 0x006f, 0x0065, 0 }; +static const unichar_t str_154[] = { 0x0052, 0x0301, 0 }; +static const unichar_t str_155[] = { 0x0072, 0x0301, 0 }; +static const unichar_t str_156[] = { 0x0052, 0x0327, 0 }; +static const unichar_t str_157[] = { 0x0072, 0x0327, 0 }; +static const unichar_t str_158[] = { 0x0052, 0x030c, 0 }; +static const unichar_t str_159[] = { 0x0072, 0x030c, 0 }; +static const unichar_t str_15a[] = { 0x0053, 0x0301, 0 }; +static const unichar_t str_15b[] = { 0x0073, 0x0301, 0 }; +static const unichar_t str_15c[] = { 0x0053, 0x0302, 0 }; +static const unichar_t str_15d[] = { 0x0073, 0x0302, 0 }; +static const unichar_t str_15e[] = { 0x0053, 0x0327, 0 }; +static const unichar_t str_15f[] = { 0x0073, 0x0327, 0 }; +static const unichar_t str_160[] = { 0x0053, 0x030c, 0 }; +static const unichar_t str_161[] = { 0x0073, 0x030c, 0 }; +static const unichar_t str_162[] = { 0x0054, 0x0327, 0 }; +static const unichar_t str_163[] = { 0x0074, 0x0327, 0 }; +static const unichar_t str_164[] = { 0x0054, 0x030c, 0 }; +static const unichar_t str_165[] = { 0x0074, 0x030c, 0 }; +static const unichar_t str_168[] = { 0x0055, 0x0303, 0 }; +static const unichar_t str_169[] = { 0x0075, 0x0303, 0 }; +static const unichar_t str_16a[] = { 0x0055, 0x0304, 0 }; +static const unichar_t str_16b[] = { 0x0075, 0x0304, 0 }; +static const unichar_t str_16c[] = { 0x0055, 0x0306, 0 }; +static const unichar_t str_16d[] = { 0x0075, 0x0306, 0 }; +static const unichar_t str_16e[] = { 0x0055, 0x030a, 0 }; +static const unichar_t str_16f[] = { 0x0075, 0x030a, 0 }; +static const unichar_t str_170[] = { 0x0055, 0x030b, 0 }; +static const unichar_t str_171[] = { 0x0075, 0x030b, 0 }; +static const unichar_t str_172[] = { 0x0055, 0x0328, 0 }; +static const unichar_t str_173[] = { 0x0075, 0x0328, 0 }; +static const unichar_t str_174[] = { 0x0057, 0x0302, 0 }; +static const unichar_t str_175[] = { 0x0077, 0x0302, 0 }; +static const unichar_t str_176[] = { 0x0059, 0x0302, 0 }; +static const unichar_t str_177[] = { 0x0079, 0x0302, 0 }; +static const unichar_t str_178[] = { 0x0059, 0x0308, 0 }; +static const unichar_t str_179[] = { 0x005a, 0x0301, 0 }; +static const unichar_t str_17a[] = { 0x007a, 0x0301, 0 }; +static const unichar_t str_17b[] = { 0x005a, 0x0307, 0 }; +static const unichar_t str_17c[] = { 0x007a, 0x0307, 0 }; +static const unichar_t str_17d[] = { 0x005a, 0x030c, 0 }; +static const unichar_t str_17e[] = { 0x007a, 0x030c, 0 }; +static const unichar_t str_17f[] = { 0x0073, 0 }; +static const unichar_t str_182[] = { 0x0402, 0 }; +static const unichar_t str_189[] = { 0x00d0, 0 }; +static const unichar_t str_19e[] = { 0x03b7, 0 }; +static const unichar_t str_19f[] = { 0x0398, 0 }; +static const unichar_t str_1a0[] = { 0x004f, 0x031b, 0 }; +static const unichar_t str_1a1[] = { 0x006f, 0x031b, 0 }; +static const unichar_t str_1a9[] = { 0x03a3, 0 }; +static const unichar_t str_1af[] = { 0x0055, 0x031b, 0 }; +static const unichar_t str_1b0[] = { 0x0075, 0x031b, 0 }; +static const unichar_t str_1c0[] = { 0x007c, 0 }; +static const unichar_t str_1c1[] = { 0x007c, 0x007c, 0 }; +static const unichar_t str_1c4[] = { 0x0044, 0x017d, 0 }; +static const unichar_t str_1c5[] = { 0x0044, 0x017e, 0 }; +static const unichar_t str_1c6[] = { 0x0064, 0x017e, 0 }; +static const unichar_t str_1c7[] = { 0x004c, 0x004a, 0 }; +static const unichar_t str_1c8[] = { 0x004c, 0x006a, 0 }; +static const unichar_t str_1c9[] = { 0x006c, 0x006a, 0 }; +static const unichar_t str_1ca[] = { 0x004e, 0x004a, 0 }; +static const unichar_t str_1cb[] = { 0x004e, 0x006a, 0 }; +static const unichar_t str_1cc[] = { 0x006e, 0x006a, 0 }; +static const unichar_t str_1cd[] = { 0x0041, 0x030c, 0 }; +static const unichar_t str_1ce[] = { 0x0061, 0x030c, 0 }; +static const unichar_t str_1cf[] = { 0x0049, 0x030c, 0 }; +static const unichar_t str_1d0[] = { 0x0069, 0x030c, 0 }; +static const unichar_t str_1d1[] = { 0x004f, 0x030c, 0 }; +static const unichar_t str_1d2[] = { 0x006f, 0x030c, 0 }; +static const unichar_t str_1d3[] = { 0x0055, 0x030c, 0 }; +static const unichar_t str_1d4[] = { 0x0075, 0x030c, 0 }; +static const unichar_t str_1d5[] = { 0x00dc, 0x0304, 0 }; +static const unichar_t str_1d6[] = { 0x00fc, 0x0304, 0 }; +static const unichar_t str_1d7[] = { 0x00dc, 0x0301, 0 }; +static const unichar_t str_1d8[] = { 0x00fc, 0x0301, 0 }; +static const unichar_t str_1d9[] = { 0x00dc, 0x030c, 0 }; +static const unichar_t str_1da[] = { 0x00fc, 0x030c, 0 }; +static const unichar_t str_1db[] = { 0x00dc, 0x0300, 0 }; +static const unichar_t str_1dc[] = { 0x00fc, 0x0300, 0 }; +static const unichar_t str_1de[] = { 0x00c4, 0x0304, 0 }; +static const unichar_t str_1df[] = { 0x00e4, 0x0304, 0 }; +static const unichar_t str_1e0[] = { 0x0226, 0x0304, 0 }; +static const unichar_t str_1e1[] = { 0x0227, 0x0304, 0 }; +static const unichar_t str_1e2[] = { 0x00c6, 0x0304, 0 }; +static const unichar_t str_1e3[] = { 0x00e6, 0x0304, 0 }; +static const unichar_t str_1e6[] = { 0x0047, 0x030c, 0 }; +static const unichar_t str_1e7[] = { 0x0067, 0x030c, 0 }; +static const unichar_t str_1e8[] = { 0x004b, 0x030c, 0 }; +static const unichar_t str_1e9[] = { 0x006b, 0x030c, 0 }; +static const unichar_t str_1ea[] = { 0x004f, 0x0328, 0 }; +static const unichar_t str_1eb[] = { 0x006f, 0x0328, 0 }; +static const unichar_t str_1ec[] = { 0x01ea, 0x0304, 0 }; +static const unichar_t str_1ed[] = { 0x01eb, 0x0304, 0 }; +static const unichar_t str_1ee[] = { 0x01b7, 0x030c, 0 }; +static const unichar_t str_1ef[] = { 0x0292, 0x030c, 0 }; +static const unichar_t str_1f0[] = { 0x006a, 0x030c, 0 }; +static const unichar_t str_1f1[] = { 0x0044, 0x005a, 0 }; +static const unichar_t str_1f2[] = { 0x0044, 0x007a, 0 }; +static const unichar_t str_1f3[] = { 0x0064, 0x007a, 0 }; +static const unichar_t str_1f4[] = { 0x0047, 0x0301, 0 }; +static const unichar_t str_1f5[] = { 0x0067, 0x0301, 0 }; +static const unichar_t str_1f8[] = { 0x004e, 0x0300, 0 }; +static const unichar_t str_1f9[] = { 0x006e, 0x0300, 0 }; +static const unichar_t str_1fa[] = { 0x00c5, 0x0301, 0 }; +static const unichar_t str_1fb[] = { 0x00e5, 0x0301, 0 }; +static const unichar_t str_1fc[] = { 0x00c6, 0x0301, 0 }; +static const unichar_t str_1fd[] = { 0x00e6, 0x0301, 0 }; +static const unichar_t str_1fe[] = { 0x00d8, 0x0301, 0 }; +static const unichar_t str_1ff[] = { 0x00f8, 0x0301, 0 }; +static const unichar_t str_200[] = { 0x0041, 0x030f, 0 }; +static const unichar_t str_201[] = { 0x0061, 0x030f, 0 }; +static const unichar_t str_202[] = { 0x0041, 0x0311, 0 }; +static const unichar_t str_203[] = { 0x0061, 0x0311, 0 }; +static const unichar_t str_204[] = { 0x0045, 0x030f, 0 }; +static const unichar_t str_205[] = { 0x0065, 0x030f, 0 }; +static const unichar_t str_206[] = { 0x0045, 0x0311, 0 }; +static const unichar_t str_207[] = { 0x0065, 0x0311, 0 }; +static const unichar_t str_208[] = { 0x0049, 0x030f, 0 }; +static const unichar_t str_209[] = { 0x0069, 0x030f, 0 }; +static const unichar_t str_20a[] = { 0x0049, 0x0311, 0 }; +static const unichar_t str_20b[] = { 0x0069, 0x0311, 0 }; +static const unichar_t str_20c[] = { 0x004f, 0x030f, 0 }; +static const unichar_t str_20d[] = { 0x006f, 0x030f, 0 }; +static const unichar_t str_20e[] = { 0x004f, 0x0311, 0 }; +static const unichar_t str_20f[] = { 0x006f, 0x0311, 0 }; +static const unichar_t str_210[] = { 0x0052, 0x030f, 0 }; +static const unichar_t str_211[] = { 0x0072, 0x030f, 0 }; +static const unichar_t str_212[] = { 0x0052, 0x0311, 0 }; +static const unichar_t str_213[] = { 0x0072, 0x0311, 0 }; +static const unichar_t str_214[] = { 0x0055, 0x030f, 0 }; +static const unichar_t str_215[] = { 0x0075, 0x030f, 0 }; +static const unichar_t str_216[] = { 0x0055, 0x0311, 0 }; +static const unichar_t str_217[] = { 0x0075, 0x0311, 0 }; +static const unichar_t str_218[] = { 0x0053, 0x0326, 0 }; +static const unichar_t str_219[] = { 0x0073, 0x0326, 0 }; +static const unichar_t str_21a[] = { 0x0054, 0x0326, 0 }; +static const unichar_t str_21b[] = { 0x0074, 0x0326, 0 }; +static const unichar_t str_21e[] = { 0x0048, 0x030c, 0 }; +static const unichar_t str_21f[] = { 0x0068, 0x030c, 0 }; +static const unichar_t str_226[] = { 0x0041, 0x0307, 0 }; +static const unichar_t str_227[] = { 0x0061, 0x0307, 0 }; +static const unichar_t str_228[] = { 0x0045, 0x0327, 0 }; +static const unichar_t str_229[] = { 0x0065, 0x0327, 0 }; +static const unichar_t str_22a[] = { 0x00d6, 0x0304, 0 }; +static const unichar_t str_22b[] = { 0x00f6, 0x0304, 0 }; +static const unichar_t str_22c[] = { 0x00d5, 0x0304, 0 }; +static const unichar_t str_22d[] = { 0x00f5, 0x0304, 0 }; +static const unichar_t str_22e[] = { 0x004f, 0x0307, 0 }; +static const unichar_t str_22f[] = { 0x006f, 0x0307, 0 }; +static const unichar_t str_230[] = { 0x022e, 0x0304, 0 }; +static const unichar_t str_231[] = { 0x022f, 0x0304, 0 }; +static const unichar_t str_232[] = { 0x0059, 0x0304, 0 }; +static const unichar_t str_233[] = { 0x0079, 0x0304, 0 }; +static const unichar_t str_269[] = { 0x03b9, 0 }; +static const unichar_t str_278[] = { 0x03a6, 0 }; +static const unichar_t str_292[] = { 0x01b7, 0 }; +static const unichar_t str_299[] = { 0x0432, 0 }; +static const unichar_t str_29c[] = { 0x043d, 0 }; +static const unichar_t str_2b0[] = { 0x0068, 0 }; +static const unichar_t str_2b1[] = { 0x0266, 0 }; +static const unichar_t str_2b2[] = { 0x006a, 0 }; +static const unichar_t str_2b3[] = { 0x0072, 0 }; +static const unichar_t str_2b4[] = { 0x0279, 0 }; +static const unichar_t str_2b5[] = { 0x027b, 0 }; +static const unichar_t str_2b6[] = { 0x0281, 0 }; +static const unichar_t str_2b7[] = { 0x0077, 0 }; +static const unichar_t str_2b8[] = { 0x0079, 0 }; +static const unichar_t str_2b9[] = { 0x0027, 0 }; +static const unichar_t str_2ba[] = { 0x0022, 0 }; +static const unichar_t str_2bc[] = { 0x0027, 0 }; +static const unichar_t str_2c4[] = { 0x005e, 0 }; +static const unichar_t str_2c6[] = { 0x005e, 0 }; +static const unichar_t str_2c8[] = { 0x0027, 0 }; +static const unichar_t str_2d8[] = { 0x0020, 0x0306, 0 }; +static const unichar_t str_2d9[] = { 0x0020, 0x0307, 0 }; +static const unichar_t str_2da[] = { 0x0020, 0x030a, 0 }; +static const unichar_t str_2db[] = { 0x0020, 0x0328, 0 }; +static const unichar_t str_2dc[] = { 0x0020, 0x0303, 0 }; +static const unichar_t str_2dd[] = { 0x0020, 0x030b, 0 }; +static const unichar_t str_2e0[] = { 0x0263, 0 }; +static const unichar_t str_2e1[] = { 0x006c, 0 }; +static const unichar_t str_2e2[] = { 0x0073, 0 }; +static const unichar_t str_2e3[] = { 0x0078, 0 }; +static const unichar_t str_2e4[] = { 0x0295, 0 }; +static const unichar_t str_301[] = { 0x00b4, 0 }; +static const unichar_t str_302[] = { 0x005e, 0 }; +static const unichar_t str_303[] = { 0x007e, 0 }; +static const unichar_t str_308[] = { 0x00a8, 0 }; +static const unichar_t str_30a[] = { 0x00b0, 0 }; +static const unichar_t str_30b[] = { 0x0022, 0 }; +static const unichar_t str_30e[] = { 0x0022, 0 }; +static const unichar_t str_327[] = { 0x00b8, 0 }; +static const unichar_t str_340[] = { 0x0300, 0 }; +static const unichar_t str_341[] = { 0x0301, 0 }; +static const unichar_t str_343[] = { 0x0313, 0 }; +static const unichar_t str_344[] = { 0x0308, 0x0301, 0 }; +static const unichar_t str_374[] = { 0x02b9, 0 }; +static const unichar_t str_375[] = { 0x02cf, 0 }; +static const unichar_t str_37a[] = { 0x0020, 0x0345, 0 }; +static const unichar_t str_37e[] = { 0x003b, 0 }; +static const unichar_t str_384[] = { 0x0020, 0x0301, 0 }; +static const unichar_t str_385[] = { 0x00a8, 0x0301, 0 }; +static const unichar_t str_386[] = { 0x0391, 0x0301, 0 }; +static const unichar_t str_387[] = { 0x00b7, 0 }; +static const unichar_t str_388[] = { 0x0395, 0x0301, 0 }; +static const unichar_t str_389[] = { 0x0397, 0x0301, 0 }; +static const unichar_t str_38a[] = { 0x0399, 0x0301, 0 }; +static const unichar_t str_38c[] = { 0x039f, 0x0301, 0 }; +static const unichar_t str_38e[] = { 0x03a5, 0x0301, 0 }; +static const unichar_t str_38f[] = { 0x03a9, 0x0301, 0 }; +static const unichar_t str_390[] = { 0x03ca, 0x0301, 0 }; +static const unichar_t str_391[] = { 0x0041, 0 }; +static const unichar_t str_392[] = { 0x0042, 0 }; +static const unichar_t str_393[] = { 0x0413, 0 }; +static const unichar_t str_395[] = { 0x0045, 0 }; +static const unichar_t str_396[] = { 0x005a, 0 }; +static const unichar_t str_397[] = { 0x0048, 0 }; +static const unichar_t str_399[] = { 0x0049, 0 }; +static const unichar_t str_39a[] = { 0x004b, 0 }; +static const unichar_t str_39c[] = { 0x004d, 0 }; +static const unichar_t str_39d[] = { 0x004e, 0 }; +static const unichar_t str_39f[] = { 0x004f, 0 }; +static const unichar_t str_3a1[] = { 0x0050, 0 }; +static const unichar_t str_3a4[] = { 0x0054, 0 }; +static const unichar_t str_3a5[] = { 0x0059, 0 }; +static const unichar_t str_3a7[] = { 0x0058, 0 }; +static const unichar_t str_3aa[] = { 0x0399, 0x0308, 0 }; +static const unichar_t str_3ab[] = { 0x03a5, 0x0308, 0 }; +static const unichar_t str_3ac[] = { 0x03b1, 0x0301, 0 }; +static const unichar_t str_3ad[] = { 0x03b5, 0x0301, 0 }; +static const unichar_t str_3ae[] = { 0x03b7, 0x0301, 0 }; +static const unichar_t str_3af[] = { 0x03b9, 0x0301, 0 }; +static const unichar_t str_3b0[] = { 0x03cb, 0x0301, 0 }; +static const unichar_t str_3ba[] = { 0x0138, 0 }; +static const unichar_t str_3bf[] = { 0x006f, 0 }; +static const unichar_t str_3c1[] = { 0x0070, 0 }; +static const unichar_t str_3c7[] = { 0x0078, 0 }; +static const unichar_t str_3ca[] = { 0x03b9, 0x0308, 0 }; +static const unichar_t str_3cb[] = { 0x03c5, 0x0308, 0 }; +static const unichar_t str_3cc[] = { 0x03bf, 0x0301, 0 }; +static const unichar_t str_3cd[] = { 0x03c5, 0x0301, 0 }; +static const unichar_t str_3ce[] = { 0x03c9, 0x0301, 0 }; +static const unichar_t str_3d0[] = { 0x03b2, 0 }; +static const unichar_t str_3d1[] = { 0x03b8, 0 }; +static const unichar_t str_3d2[] = { 0x03a5, 0 }; +static const unichar_t str_3d3[] = { 0x03d2, 0x0301, 0 }; +static const unichar_t str_3d4[] = { 0x03d2, 0x0308, 0 }; +static const unichar_t str_3d5[] = { 0x03c6, 0 }; +static const unichar_t str_3d6[] = { 0x03c0, 0 }; +static const unichar_t str_3f0[] = { 0x03ba, 0 }; +static const unichar_t str_3f1[] = { 0x03c1, 0 }; +static const unichar_t str_3f2[] = { 0x03c2, 0 }; +static const unichar_t str_3f4[] = { 0x0398, 0 }; +static const unichar_t str_3f5[] = { 0x03b5, 0 }; +static const unichar_t str_3f9[] = { 0x03a3, 0 }; +static const unichar_t str_400[] = { 0x0415, 0x0300, 0 }; +static const unichar_t str_401[] = { 0x0415, 0x0308, 0 }; +static const unichar_t str_403[] = { 0x0413, 0x0301, 0 }; +static const unichar_t str_405[] = { 0x0053, 0 }; +static const unichar_t str_406[] = { 0x0049, 0 }; +static const unichar_t str_407[] = { 0x0406, 0x0308, 0 }; +static const unichar_t str_408[] = { 0x004a, 0 }; +static const unichar_t str_40c[] = { 0x041a, 0x0301, 0 }; +static const unichar_t str_40d[] = { 0x0418, 0x0300, 0 }; +static const unichar_t str_40e[] = { 0x0423, 0x0306, 0 }; +static const unichar_t str_410[] = { 0x0041, 0 }; +static const unichar_t str_412[] = { 0x0042, 0 }; +static const unichar_t str_413[] = { 0x0393, 0 }; +static const unichar_t str_415[] = { 0x0045, 0 }; +static const unichar_t str_419[] = { 0x0418, 0x0306, 0 }; +static const unichar_t str_41a[] = { 0x004b, 0 }; +static const unichar_t str_41c[] = { 0x004d, 0 }; +static const unichar_t str_41d[] = { 0x0048, 0 }; +static const unichar_t str_41e[] = { 0x004f, 0 }; +static const unichar_t str_41f[] = { 0x03a0, 0 }; +static const unichar_t str_420[] = { 0x0050, 0 }; +static const unichar_t str_421[] = { 0x0043, 0 }; +static const unichar_t str_422[] = { 0x0054, 0 }; +static const unichar_t str_424[] = { 0x03a6, 0 }; +static const unichar_t str_425[] = { 0x0058, 0 }; +static const unichar_t str_430[] = { 0x0061, 0 }; +static const unichar_t str_435[] = { 0x0065, 0 }; +static const unichar_t str_439[] = { 0x0438, 0x0306, 0 }; +static const unichar_t str_43a[] = { 0x03ba, 0 }; +static const unichar_t str_43e[] = { 0x006f, 0 }; +static const unichar_t str_43f[] = { 0x03c0, 0 }; +static const unichar_t str_440[] = { 0x0070, 0 }; +static const unichar_t str_441[] = { 0x0063, 0 }; +static const unichar_t str_443[] = { 0x0079, 0 }; +static const unichar_t str_445[] = { 0x0078, 0 }; +static const unichar_t str_450[] = { 0x0435, 0x0300, 0 }; +static const unichar_t str_451[] = { 0x0435, 0x0308, 0 }; +static const unichar_t str_453[] = { 0x0433, 0x0301, 0 }; +static const unichar_t str_455[] = { 0x0073, 0 }; +static const unichar_t str_456[] = { 0x0069, 0 }; +static const unichar_t str_457[] = { 0x0456, 0x0308, 0 }; +static const unichar_t str_458[] = { 0x006a, 0 }; +static const unichar_t str_45c[] = { 0x043a, 0x0301, 0 }; +static const unichar_t str_45d[] = { 0x0438, 0x0300, 0 }; +static const unichar_t str_45e[] = { 0x0443, 0x0306, 0 }; +static const unichar_t str_470[] = { 0x03a8, 0 }; +static const unichar_t str_471[] = { 0x03c8, 0 }; +static const unichar_t str_476[] = { 0x0474, 0x030f, 0 }; +static const unichar_t str_477[] = { 0x0475, 0x030f, 0 }; +static const unichar_t str_4ae[] = { 0x0059, 0 }; +static const unichar_t str_4c0[] = { 0x0049, 0 }; +static const unichar_t str_4c1[] = { 0x0416, 0x0306, 0 }; +static const unichar_t str_4c2[] = { 0x0436, 0x0306, 0 }; +static const unichar_t str_4d0[] = { 0x0410, 0x0306, 0 }; +static const unichar_t str_4d1[] = { 0x0430, 0x0306, 0 }; +static const unichar_t str_4d2[] = { 0x0410, 0x0308, 0 }; +static const unichar_t str_4d3[] = { 0x0430, 0x0308, 0 }; +static const unichar_t str_4d4[] = { 0x00c6, 0 }; +static const unichar_t str_4d5[] = { 0x00e6, 0 }; +static const unichar_t str_4d6[] = { 0x0415, 0x0306, 0 }; +static const unichar_t str_4d7[] = { 0x0435, 0x0306, 0 }; +static const unichar_t str_4da[] = { 0x04d8, 0x0308, 0 }; +static const unichar_t str_4db[] = { 0x04d9, 0x0308, 0 }; +static const unichar_t str_4dc[] = { 0x0416, 0x0308, 0 }; +static const unichar_t str_4dd[] = { 0x0436, 0x0308, 0 }; +static const unichar_t str_4de[] = { 0x0417, 0x0308, 0 }; +static const unichar_t str_4df[] = { 0x0437, 0x0308, 0 }; +static const unichar_t str_4e0[] = { 0x01b7, 0 }; +static const unichar_t str_4e1[] = { 0x0292, 0 }; +static const unichar_t str_4e2[] = { 0x0418, 0x0304, 0 }; +static const unichar_t str_4e3[] = { 0x0438, 0x0304, 0 }; +static const unichar_t str_4e4[] = { 0x0418, 0x0308, 0 }; +static const unichar_t str_4e5[] = { 0x0438, 0x0308, 0 }; +static const unichar_t str_4e6[] = { 0x041e, 0x0308, 0 }; +static const unichar_t str_4e7[] = { 0x043e, 0x0308, 0 }; +static const unichar_t str_4e8[] = { 0x0398, 0 }; +static const unichar_t str_4e9[] = { 0x03b8, 0 }; +static const unichar_t str_4ea[] = { 0x04e8, 0x0308, 0 }; +static const unichar_t str_4eb[] = { 0x04e9, 0x0308, 0 }; +static const unichar_t str_4ec[] = { 0x042d, 0x0308, 0 }; +static const unichar_t str_4ed[] = { 0x044d, 0x0308, 0 }; +static const unichar_t str_4ee[] = { 0x0423, 0x0304, 0 }; +static const unichar_t str_4ef[] = { 0x0443, 0x0304, 0 }; +static const unichar_t str_4f0[] = { 0x0423, 0x0308, 0 }; +static const unichar_t str_4f1[] = { 0x0443, 0x0308, 0 }; +static const unichar_t str_4f2[] = { 0x0423, 0x030b, 0 }; +static const unichar_t str_4f3[] = { 0x0443, 0x030b, 0 }; +static const unichar_t str_4f4[] = { 0x0427, 0x0308, 0 }; +static const unichar_t str_4f5[] = { 0x0447, 0x0308, 0 }; +static const unichar_t str_4f8[] = { 0x042b, 0x0308, 0 }; +static const unichar_t str_4f9[] = { 0x044b, 0x0308, 0 }; +static const unichar_t str_54f[] = { 0x0053, 0 }; +static const unichar_t str_555[] = { 0x004f, 0 }; +static const unichar_t str_570[] = { 0x0068, 0 }; +static const unichar_t str_578[] = { 0x006e, 0 }; +static const unichar_t str_57a[] = { 0x0270, 0 }; +static const unichar_t str_57d[] = { 0x0075, 0 }; +static const unichar_t str_581[] = { 0x0261, 0 }; +static const unichar_t str_582[] = { 0x0269, 0 }; +static const unichar_t str_584[] = { 0x0066, 0 }; +static const unichar_t str_585[] = { 0x006f, 0 }; +static const unichar_t str_587[] = { 0x0565, 0x0582, 0 }; +static const unichar_t str_589[] = { 0x003a, 0 }; +static const unichar_t str_5f0[] = { 0x05d5, 0x05d5, 0 }; +static const unichar_t str_5f1[] = { 0x05d5, 0x05d9, 0 }; +static const unichar_t str_5f2[] = { 0x05d9, 0x05d9, 0 }; +static const unichar_t str_60c[] = { 0x2018, 0 }; +static const unichar_t str_621[] = { 0xfe80, 0 }; +static const unichar_t str_622[] = { 0x0627, 0x0653, 0 }; +static const unichar_t str_623[] = { 0x0627, 0x0654, 0 }; +static const unichar_t str_624[] = { 0x0648, 0x0654, 0 }; +static const unichar_t str_625[] = { 0x0627, 0x0655, 0 }; +static const unichar_t str_626[] = { 0x064a, 0x0654, 0 }; +static const unichar_t str_627[] = { 0xfe8d, 0 }; +static const unichar_t str_628[] = { 0xfe8f, 0 }; +static const unichar_t str_629[] = { 0xfe93, 0 }; +static const unichar_t str_62a[] = { 0xfe95, 0 }; +static const unichar_t str_62b[] = { 0xfe99, 0 }; +static const unichar_t str_62c[] = { 0xfe9d, 0 }; +static const unichar_t str_62d[] = { 0xfea1, 0 }; +static const unichar_t str_62e[] = { 0xfea5, 0 }; +static const unichar_t str_62f[] = { 0xfea9, 0 }; +static const unichar_t str_630[] = { 0xfeab, 0 }; +static const unichar_t str_631[] = { 0xfead, 0 }; +static const unichar_t str_632[] = { 0xfeaf, 0 }; +static const unichar_t str_633[] = { 0xfeb1, 0 }; +static const unichar_t str_634[] = { 0xfeb5, 0 }; +static const unichar_t str_635[] = { 0xfeb9, 0 }; +static const unichar_t str_636[] = { 0xfebd, 0 }; +static const unichar_t str_637[] = { 0xfec1, 0 }; +static const unichar_t str_638[] = { 0xfec5, 0 }; +static const unichar_t str_639[] = { 0xfec9, 0 }; +static const unichar_t str_63a[] = { 0xfecd, 0 }; +static const unichar_t str_641[] = { 0xfed1, 0 }; +static const unichar_t str_642[] = { 0xfed5, 0 }; +static const unichar_t str_643[] = { 0xfed9, 0 }; +static const unichar_t str_644[] = { 0xfedd, 0 }; +static const unichar_t str_645[] = { 0xfee1, 0 }; +static const unichar_t str_646[] = { 0xfee5, 0 }; +static const unichar_t str_647[] = { 0xfee9, 0 }; +static const unichar_t str_648[] = { 0xfeed, 0 }; +static const unichar_t str_649[] = { 0xfeef, 0 }; +static const unichar_t str_64a[] = { 0xfef1, 0 }; +static const unichar_t str_66a[] = { 0x0025, 0 }; +static const unichar_t str_66c[] = { 0x002c, 0 }; +static const unichar_t str_66d[] = { 0x22c6, 0 }; +static const unichar_t str_671[] = { 0xfb50, 0 }; +static const unichar_t str_675[] = { 0x0627, 0x0674, 0 }; +static const unichar_t str_676[] = { 0x0648, 0x0674, 0 }; +static const unichar_t str_677[] = { 0x06c7, 0x0674, 0 }; +static const unichar_t str_678[] = { 0x064a, 0x0674, 0 }; +static const unichar_t str_679[] = { 0xfb66, 0 }; +static const unichar_t str_67a[] = { 0xfb5e, 0 }; +static const unichar_t str_67b[] = { 0xfb52, 0 }; +static const unichar_t str_67e[] = { 0xfb56, 0 }; +static const unichar_t str_67f[] = { 0xfb62, 0 }; +static const unichar_t str_680[] = { 0xfb5a, 0 }; +static const unichar_t str_683[] = { 0xfb76, 0 }; +static const unichar_t str_684[] = { 0xfb72, 0 }; +static const unichar_t str_686[] = { 0xfb7a, 0 }; +static const unichar_t str_687[] = { 0xfb7e, 0 }; +static const unichar_t str_688[] = { 0xfb88, 0 }; +static const unichar_t str_68c[] = { 0xfb84, 0 }; +static const unichar_t str_68d[] = { 0xfb82, 0 }; +static const unichar_t str_68e[] = { 0xfb86, 0 }; +static const unichar_t str_691[] = { 0xfb8c, 0 }; +static const unichar_t str_698[] = { 0xfb8a, 0 }; +static const unichar_t str_6a4[] = { 0xfb6a, 0 }; +static const unichar_t str_6a6[] = { 0xfb6e, 0 }; +static const unichar_t str_6a9[] = { 0xfb8e, 0 }; +static const unichar_t str_6ad[] = { 0xfbd3, 0 }; +static const unichar_t str_6af[] = { 0xfb92, 0 }; +static const unichar_t str_6b1[] = { 0xfb9a, 0 }; +static const unichar_t str_6b3[] = { 0xfb96, 0 }; +static const unichar_t str_6ba[] = { 0xfb9e, 0 }; +static const unichar_t str_6bb[] = { 0xfba0, 0 }; +static const unichar_t str_6be[] = { 0xfbaa, 0 }; +static const unichar_t str_6c0[] = { 0x06d5, 0x0654, 0 }; +static const unichar_t str_6c1[] = { 0xfba6, 0 }; +static const unichar_t str_6c2[] = { 0x06c1, 0x0654, 0 }; +static const unichar_t str_6c5[] = { 0xfbe0, 0 }; +static const unichar_t str_6c6[] = { 0xfbd9, 0 }; +static const unichar_t str_6c7[] = { 0xfbd7, 0 }; +static const unichar_t str_6c8[] = { 0xfbdb, 0 }; +static const unichar_t str_6c9[] = { 0xfbe2, 0 }; +static const unichar_t str_6cb[] = { 0xfbde, 0 }; +static const unichar_t str_6cc[] = { 0xfbfc, 0 }; +static const unichar_t str_6d0[] = { 0xfbe4, 0 }; +static const unichar_t str_6d2[] = { 0xfbae, 0 }; +static const unichar_t str_6d3[] = { 0x06d2, 0x0654, 0 }; +static const unichar_t str_6d4[] = { 0x00b7, 0 }; +static const unichar_t str_929[] = { 0x0928, 0x093c, 0 }; +static const unichar_t str_931[] = { 0x0930, 0x093c, 0 }; +static const unichar_t str_934[] = { 0x0933, 0x093c, 0 }; +static const unichar_t str_958[] = { 0x0915, 0x093c, 0 }; +static const unichar_t str_959[] = { 0x0916, 0x093c, 0 }; +static const unichar_t str_95a[] = { 0x0917, 0x093c, 0 }; +static const unichar_t str_95b[] = { 0x091c, 0x093c, 0 }; +static const unichar_t str_95c[] = { 0x0921, 0x093c, 0 }; +static const unichar_t str_95d[] = { 0x0922, 0x093c, 0 }; +static const unichar_t str_95e[] = { 0x092b, 0x093c, 0 }; +static const unichar_t str_95f[] = { 0x092f, 0x093c, 0 }; +static const unichar_t str_9cb[] = { 0x09c7, 0x09be, 0 }; +static const unichar_t str_9cc[] = { 0x09c7, 0x09d7, 0 }; +static const unichar_t str_9dc[] = { 0x09a1, 0x09bc, 0 }; +static const unichar_t str_9dd[] = { 0x09a2, 0x09bc, 0 }; +static const unichar_t str_9df[] = { 0x09af, 0x09bc, 0 }; +static const unichar_t str_a33[] = { 0x0a32, 0x0a3c, 0 }; +static const unichar_t str_a36[] = { 0x0a38, 0x0a3c, 0 }; +static const unichar_t str_a59[] = { 0x0a16, 0x0a3c, 0 }; +static const unichar_t str_a5a[] = { 0x0a17, 0x0a3c, 0 }; +static const unichar_t str_a5b[] = { 0x0a1c, 0x0a3c, 0 }; +static const unichar_t str_a5e[] = { 0x0a2b, 0x0a3c, 0 }; +static const unichar_t str_b48[] = { 0x0b47, 0x0b56, 0 }; +static const unichar_t str_b4b[] = { 0x0b47, 0x0b3e, 0 }; +static const unichar_t str_b4c[] = { 0x0b47, 0x0b57, 0 }; +static const unichar_t str_b5c[] = { 0x0b21, 0x0b3c, 0 }; +static const unichar_t str_b5d[] = { 0x0b22, 0x0b3c, 0 }; +static const unichar_t str_b94[] = { 0x0b92, 0x0bd7, 0 }; +static const unichar_t str_bca[] = { 0x0bc6, 0x0bbe, 0 }; +static const unichar_t str_bcb[] = { 0x0bc7, 0x0bbe, 0 }; +static const unichar_t str_bcc[] = { 0x0bc6, 0x0bd7, 0 }; +static const unichar_t str_c48[] = { 0x0c46, 0x0c56, 0 }; +static const unichar_t str_cc0[] = { 0x0cbf, 0x0cd5, 0 }; +static const unichar_t str_cc7[] = { 0x0cc6, 0x0cd5, 0 }; +static const unichar_t str_cc8[] = { 0x0cc6, 0x0cd6, 0 }; +static const unichar_t str_cca[] = { 0x0cc6, 0x0cc2, 0 }; +static const unichar_t str_ccb[] = { 0x0cca, 0x0cd5, 0 }; +static const unichar_t str_d4a[] = { 0x0d46, 0x0d3e, 0 }; +static const unichar_t str_d4b[] = { 0x0d47, 0x0d3e, 0 }; +static const unichar_t str_d4c[] = { 0x0d46, 0x0d57, 0 }; +static const unichar_t str_dda[] = { 0x0dd9, 0x0dca, 0 }; +static const unichar_t str_ddc[] = { 0x0dd9, 0x0dcf, 0 }; +static const unichar_t str_ddd[] = { 0x0ddc, 0x0dca, 0 }; +static const unichar_t str_dde[] = { 0x0dd9, 0x0ddf, 0 }; +static const unichar_t str_e33[] = { 0x0e4d, 0x0e32, 0 }; +static const unichar_t str_eb3[] = { 0x0ecd, 0x0eb2, 0 }; +static const unichar_t str_edc[] = { 0x0eab, 0x0e99, 0 }; +static const unichar_t str_edd[] = { 0x0eab, 0x0ea1, 0 }; +static const unichar_t str_f0c[] = { 0x0f0b, 0 }; +static const unichar_t str_f43[] = { 0x0f42, 0x0fb7, 0 }; +static const unichar_t str_f4d[] = { 0x0f4c, 0x0fb7, 0 }; +static const unichar_t str_f52[] = { 0x0f51, 0x0fb7, 0 }; +static const unichar_t str_f57[] = { 0x0f56, 0x0fb7, 0 }; +static const unichar_t str_f5c[] = { 0x0f5b, 0x0fb7, 0 }; +static const unichar_t str_f69[] = { 0x0f40, 0x0fb5, 0 }; +static const unichar_t str_f73[] = { 0x0f71, 0x0f72, 0 }; +static const unichar_t str_f75[] = { 0x0f71, 0x0f74, 0 }; +static const unichar_t str_f76[] = { 0x0fb2, 0x0f80, 0 }; +static const unichar_t str_f77[] = { 0x0fb2, 0x0f81, 0 }; +static const unichar_t str_f78[] = { 0x0fb3, 0x0f80, 0 }; +static const unichar_t str_f79[] = { 0x0fb3, 0x0f81, 0 }; +static const unichar_t str_f81[] = { 0x0f71, 0x0f80, 0 }; +static const unichar_t str_f93[] = { 0x0f92, 0x0fb7, 0 }; +static const unichar_t str_f9d[] = { 0x0f9c, 0x0fb7, 0 }; +static const unichar_t str_fa2[] = { 0x0fa1, 0x0fb7, 0 }; +static const unichar_t str_fa7[] = { 0x0fa6, 0x0fb7, 0 }; +static const unichar_t str_fac[] = { 0x0fab, 0x0fb7, 0 }; +static const unichar_t str_fb9[] = { 0x0f90, 0x0fb5, 0 }; +static const unichar_t str_1026[] = { 0x1025, 0x102e, 0 }; +static const unichar_t str_10fc[] = { 0x10dc, 0 }; +static const unichar_t str_1101[] = { 0x1100, 0x1100, 0 }; +static const unichar_t str_1104[] = { 0x1103, 0x1103, 0 }; +static const unichar_t str_1108[] = { 0x1107, 0x1107, 0 }; +static const unichar_t str_110a[] = { 0x1109, 0x1109, 0 }; +static const unichar_t str_110d[] = { 0x110c, 0x110c, 0 }; +static const unichar_t str_1113[] = { 0x1102, 0x1100, 0 }; +static const unichar_t str_1114[] = { 0x1102, 0x1102, 0 }; +static const unichar_t str_1115[] = { 0x1102, 0x1103, 0 }; +static const unichar_t str_1116[] = { 0x1102, 0x1107, 0 }; +static const unichar_t str_1117[] = { 0x1103, 0x1100, 0 }; +static const unichar_t str_1118[] = { 0x1105, 0x1102, 0 }; +static const unichar_t str_1119[] = { 0x1105, 0x1105, 0 }; +static const unichar_t str_111a[] = { 0x1105, 0x1112, 0 }; +static const unichar_t str_111b[] = { 0x1105, 0x110b, 0 }; +static const unichar_t str_111c[] = { 0x1106, 0x1107, 0 }; +static const unichar_t str_111d[] = { 0x1106, 0x110b, 0 }; +static const unichar_t str_111e[] = { 0x1107, 0x1100, 0 }; +static const unichar_t str_111f[] = { 0x1107, 0x1102, 0 }; +static const unichar_t str_1120[] = { 0x1107, 0x1103, 0 }; +static const unichar_t str_1121[] = { 0x1107, 0x1109, 0 }; +static const unichar_t str_1122[] = { 0x1107, 0x1109, 0x1100, 0 }; +static const unichar_t str_1123[] = { 0x1107, 0x1109, 0x1103, 0 }; +static const unichar_t str_1124[] = { 0x1107, 0x1109, 0x1107, 0 }; +static const unichar_t str_1125[] = { 0x1107, 0x1109, 0x1109, 0 }; +static const unichar_t str_1126[] = { 0x1107, 0x1109, 0x110c, 0 }; +static const unichar_t str_1127[] = { 0x1107, 0x110c, 0 }; +static const unichar_t str_1128[] = { 0x1107, 0x110e, 0 }; +static const unichar_t str_1129[] = { 0x1107, 0x1110, 0 }; +static const unichar_t str_112a[] = { 0x1107, 0x1111, 0 }; +static const unichar_t str_112b[] = { 0x1107, 0x110b, 0 }; +static const unichar_t str_112c[] = { 0x1107, 0x1107, 0x110b, 0 }; +static const unichar_t str_112d[] = { 0x1109, 0x1100, 0 }; +static const unichar_t str_112e[] = { 0x1109, 0x1102, 0 }; +static const unichar_t str_112f[] = { 0x1109, 0x1103, 0 }; +static const unichar_t str_1130[] = { 0x1109, 0x1105, 0 }; +static const unichar_t str_1131[] = { 0x1109, 0x1106, 0 }; +static const unichar_t str_1132[] = { 0x1109, 0x1107, 0 }; +static const unichar_t str_1133[] = { 0x1109, 0x1107, 0x1100, 0 }; +static const unichar_t str_1134[] = { 0x1109, 0x1109, 0x1109, 0 }; +static const unichar_t str_1135[] = { 0x1109, 0x110b, 0 }; +static const unichar_t str_1136[] = { 0x1109, 0x110c, 0 }; +static const unichar_t str_1137[] = { 0x1109, 0x110e, 0 }; +static const unichar_t str_1138[] = { 0x1109, 0x110f, 0 }; +static const unichar_t str_1139[] = { 0x1109, 0x1110, 0 }; +static const unichar_t str_113a[] = { 0x1109, 0x1111, 0 }; +static const unichar_t str_113b[] = { 0x1109, 0x1112, 0 }; +static const unichar_t str_113d[] = { 0x113c, 0x113c, 0 }; +static const unichar_t str_113f[] = { 0x113e, 0x113e, 0 }; +static const unichar_t str_1141[] = { 0x110b, 0x1100, 0 }; +static const unichar_t str_1142[] = { 0x110b, 0x1103, 0 }; +static const unichar_t str_1143[] = { 0x110b, 0x1106, 0 }; +static const unichar_t str_1144[] = { 0x110b, 0x1107, 0 }; +static const unichar_t str_1145[] = { 0x110b, 0x1109, 0 }; +static const unichar_t str_1146[] = { 0x110b, 0x1140, 0 }; +static const unichar_t str_1147[] = { 0x110b, 0x110b, 0 }; +static const unichar_t str_1148[] = { 0x110b, 0x110c, 0 }; +static const unichar_t str_1149[] = { 0x110b, 0x110e, 0 }; +static const unichar_t str_114a[] = { 0x110b, 0x1110, 0 }; +static const unichar_t str_114b[] = { 0x110b, 0x1111, 0 }; +static const unichar_t str_114d[] = { 0x110c, 0x110b, 0 }; +static const unichar_t str_114f[] = { 0x114e, 0x114e, 0 }; +static const unichar_t str_1151[] = { 0x1150, 0x1150, 0 }; +static const unichar_t str_1152[] = { 0x110e, 0x110f, 0 }; +static const unichar_t str_1153[] = { 0x110e, 0x1112, 0 }; +static const unichar_t str_1156[] = { 0x1111, 0x1107, 0 }; +static const unichar_t str_1157[] = { 0x1111, 0x110b, 0 }; +static const unichar_t str_1158[] = { 0x1112, 0x1112, 0 }; +static const unichar_t str_1162[] = { 0x1161, 0x1175, 0 }; +static const unichar_t str_1164[] = { 0x1163, 0x1175, 0 }; +static const unichar_t str_1166[] = { 0x1165, 0x1175, 0 }; +static const unichar_t str_1168[] = { 0x1167, 0x1175, 0 }; +static const unichar_t str_116a[] = { 0x1169, 0x1161, 0 }; +static const unichar_t str_116b[] = { 0x1169, 0x1162, 0 }; +static const unichar_t str_116c[] = { 0x1169, 0x1175, 0 }; +static const unichar_t str_116f[] = { 0x116e, 0x1165, 0 }; +static const unichar_t str_1170[] = { 0x116e, 0x1166, 0 }; +static const unichar_t str_1171[] = { 0x116e, 0x1175, 0 }; +static const unichar_t str_1174[] = { 0x1173, 0x1175, 0 }; +static const unichar_t str_1176[] = { 0x1161, 0x1169, 0 }; +static const unichar_t str_1177[] = { 0x1161, 0x116e, 0 }; +static const unichar_t str_1178[] = { 0x1163, 0x1169, 0 }; +static const unichar_t str_1179[] = { 0x1163, 0x116d, 0 }; +static const unichar_t str_117a[] = { 0x1165, 0x1169, 0 }; +static const unichar_t str_117b[] = { 0x1165, 0x116e, 0 }; +static const unichar_t str_117c[] = { 0x1165, 0x1173, 0 }; +static const unichar_t str_117d[] = { 0x1167, 0x1169, 0 }; +static const unichar_t str_117e[] = { 0x1167, 0x116e, 0 }; +static const unichar_t str_117f[] = { 0x1169, 0x1165, 0 }; +static const unichar_t str_1180[] = { 0x1169, 0x1166, 0 }; +static const unichar_t str_1181[] = { 0x1169, 0x1168, 0 }; +static const unichar_t str_1182[] = { 0x1169, 0x1169, 0 }; +static const unichar_t str_1183[] = { 0x1169, 0x116e, 0 }; +static const unichar_t str_1184[] = { 0x116d, 0x1163, 0 }; +static const unichar_t str_1185[] = { 0x116d, 0x1164, 0 }; +static const unichar_t str_1186[] = { 0x116d, 0x1167, 0 }; +static const unichar_t str_1187[] = { 0x116d, 0x1169, 0 }; +static const unichar_t str_1188[] = { 0x116d, 0x1175, 0 }; +static const unichar_t str_1189[] = { 0x116e, 0x1161, 0 }; +static const unichar_t str_118a[] = { 0x116e, 0x1162, 0 }; +static const unichar_t str_118b[] = { 0x116e, 0x1165, 0x1173, 0 }; +static const unichar_t str_118c[] = { 0x116e, 0x1168, 0 }; +static const unichar_t str_118d[] = { 0x116e, 0x116e, 0 }; +static const unichar_t str_118e[] = { 0x1172, 0x1161, 0 }; +static const unichar_t str_118f[] = { 0x1172, 0x1165, 0 }; +static const unichar_t str_1190[] = { 0x1172, 0x1166, 0 }; +static const unichar_t str_1191[] = { 0x1172, 0x1167, 0 }; +static const unichar_t str_1192[] = { 0x1172, 0x1168, 0 }; +static const unichar_t str_1193[] = { 0x1172, 0x116e, 0 }; +static const unichar_t str_1194[] = { 0x1172, 0x1175, 0 }; +static const unichar_t str_1195[] = { 0x1173, 0x116e, 0 }; +static const unichar_t str_1196[] = { 0x1173, 0x1173, 0 }; +static const unichar_t str_1197[] = { 0x1174, 0x116e, 0 }; +static const unichar_t str_1198[] = { 0x1175, 0x1161, 0 }; +static const unichar_t str_1199[] = { 0x1175, 0x1163, 0 }; +static const unichar_t str_119a[] = { 0x1175, 0x1169, 0 }; +static const unichar_t str_119b[] = { 0x1175, 0x116e, 0 }; +static const unichar_t str_119c[] = { 0x1175, 0x1173, 0 }; +static const unichar_t str_119d[] = { 0x1175, 0x119e, 0 }; +static const unichar_t str_119f[] = { 0x119e, 0x1165, 0 }; +static const unichar_t str_11a0[] = { 0x119e, 0x116e, 0 }; +static const unichar_t str_11a1[] = { 0x119e, 0x1175, 0 }; +static const unichar_t str_11a2[] = { 0x119e, 0x119e, 0 }; +static const unichar_t str_11a8[] = { 0x1100, 0 }; +static const unichar_t str_11a9[] = { 0x11a8, 0x11a8, 0 }; +static const unichar_t str_11aa[] = { 0x11a8, 0x11ba, 0 }; +static const unichar_t str_11ab[] = { 0x1102, 0 }; +static const unichar_t str_11ac[] = { 0x11ab, 0x11bd, 0 }; +static const unichar_t str_11ad[] = { 0x11ab, 0x11c2, 0 }; +static const unichar_t str_11ae[] = { 0x1103, 0 }; +static const unichar_t str_11af[] = { 0x1105, 0 }; +static const unichar_t str_11b0[] = { 0x11af, 0x11a8, 0 }; +static const unichar_t str_11b1[] = { 0x11af, 0x11b7, 0 }; +static const unichar_t str_11b2[] = { 0x11af, 0x11b8, 0 }; +static const unichar_t str_11b3[] = { 0x11af, 0x11ba, 0 }; +static const unichar_t str_11b4[] = { 0x11af, 0x11c0, 0 }; +static const unichar_t str_11b5[] = { 0x11af, 0x11c1, 0 }; +static const unichar_t str_11b6[] = { 0x11af, 0x11c2, 0 }; +static const unichar_t str_11b7[] = { 0x1106, 0 }; +static const unichar_t str_11b8[] = { 0x1107, 0 }; +static const unichar_t str_11b9[] = { 0x11b8, 0x11ba, 0 }; +static const unichar_t str_11ba[] = { 0x1109, 0 }; +static const unichar_t str_11bb[] = { 0x11ba, 0x11ba, 0 }; +static const unichar_t str_11bc[] = { 0x110b, 0 }; +static const unichar_t str_11bd[] = { 0x110c, 0 }; +static const unichar_t str_11be[] = { 0x110e, 0 }; +static const unichar_t str_11bf[] = { 0x110f, 0 }; +static const unichar_t str_11c0[] = { 0x1110, 0 }; +static const unichar_t str_11c1[] = { 0x1111, 0 }; +static const unichar_t str_11c2[] = { 0x1112, 0 }; +static const unichar_t str_11c3[] = { 0x11a8, 0x11af, 0 }; +static const unichar_t str_11c4[] = { 0x11a8, 0x11ba, 0x11a8, 0 }; +static const unichar_t str_11c5[] = { 0x11ab, 0x11a8, 0 }; +static const unichar_t str_11c6[] = { 0x11ab, 0x11ae, 0 }; +static const unichar_t str_11c7[] = { 0x11ab, 0x11ba, 0 }; +static const unichar_t str_11c8[] = { 0x11ab, 0x11eb, 0 }; +static const unichar_t str_11c9[] = { 0x11ab, 0x11c0, 0 }; +static const unichar_t str_11ca[] = { 0x11ae, 0x11a8, 0 }; +static const unichar_t str_11cb[] = { 0x11ae, 0x11af, 0 }; +static const unichar_t str_11cc[] = { 0x11af, 0x11a8, 0x11ba, 0 }; +static const unichar_t str_11cd[] = { 0x11af, 0x11ab, 0 }; +static const unichar_t str_11ce[] = { 0x11af, 0x11ae, 0 }; +static const unichar_t str_11cf[] = { 0x11af, 0x11ae, 0x11c2, 0 }; +static const unichar_t str_11d0[] = { 0x11af, 0x11af, 0 }; +static const unichar_t str_11d1[] = { 0x11af, 0x11b7, 0x11a8, 0 }; +static const unichar_t str_11d2[] = { 0x11af, 0x11b7, 0x11ba, 0 }; +static const unichar_t str_11d3[] = { 0x11af, 0x11b8, 0x11ba, 0 }; +static const unichar_t str_11d4[] = { 0x11af, 0x11b8, 0x11c2, 0 }; +static const unichar_t str_11d5[] = { 0x11af, 0x11e6, 0 }; +static const unichar_t str_11d6[] = { 0x11af, 0x11ba, 0x11ba, 0 }; +static const unichar_t str_11d7[] = { 0x11af, 0x11eb, 0 }; +static const unichar_t str_11d8[] = { 0x11af, 0x11bf, 0 }; +static const unichar_t str_11d9[] = { 0x11af, 0x11f9, 0 }; +static const unichar_t str_11da[] = { 0x11b7, 0x11a8, 0 }; +static const unichar_t str_11db[] = { 0x11b7, 0x11af, 0 }; +static const unichar_t str_11dc[] = { 0x11b7, 0x11b8, 0 }; +static const unichar_t str_11dd[] = { 0x11b7, 0x11ba, 0 }; +static const unichar_t str_11de[] = { 0x11b7, 0x11ba, 0x11ba, 0 }; +static const unichar_t str_11df[] = { 0x11b7, 0x11eb, 0 }; +static const unichar_t str_11e0[] = { 0x11b7, 0x11be, 0 }; +static const unichar_t str_11e1[] = { 0x11b7, 0x11c2, 0 }; +static const unichar_t str_11e2[] = { 0x11b7, 0x11bc, 0 }; +static const unichar_t str_11e3[] = { 0x11b8, 0x11af, 0 }; +static const unichar_t str_11e4[] = { 0x11b8, 0x11c1, 0 }; +static const unichar_t str_11e5[] = { 0x11b8, 0x11c2, 0 }; +static const unichar_t str_11e6[] = { 0x11b8, 0x11bc, 0 }; +static const unichar_t str_11e7[] = { 0x11ba, 0x11a8, 0 }; +static const unichar_t str_11e8[] = { 0x11ba, 0x11ae, 0 }; +static const unichar_t str_11e9[] = { 0x11ba, 0x11af, 0 }; +static const unichar_t str_11ea[] = { 0x11ba, 0x11b8, 0 }; +static const unichar_t str_11eb[] = { 0x1140, 0 }; +static const unichar_t str_11ec[] = { 0x11bc, 0x11a8, 0 }; +static const unichar_t str_11ed[] = { 0x11bc, 0x11a8, 0x11a8, 0 }; +static const unichar_t str_11ee[] = { 0x11bc, 0x11bc, 0 }; +static const unichar_t str_11ef[] = { 0x11bc, 0x11bf, 0 }; +static const unichar_t str_11f0[] = { 0x114c, 0 }; +static const unichar_t str_11f1[] = { 0x11f0, 0x11ba, 0 }; +static const unichar_t str_11f2[] = { 0x11f0, 0x11eb, 0 }; +static const unichar_t str_11f3[] = { 0x11c1, 0x11b8, 0 }; +static const unichar_t str_11f4[] = { 0x11c1, 0x11bc, 0 }; +static const unichar_t str_11f5[] = { 0x11c2, 0x11ab, 0 }; +static const unichar_t str_11f6[] = { 0x11c2, 0x11af, 0 }; +static const unichar_t str_11f7[] = { 0x11c2, 0x11b7, 0 }; +static const unichar_t str_11f8[] = { 0x11c2, 0x11b8, 0 }; +static const unichar_t str_11f9[] = { 0x1159, 0 }; +static const unichar_t str_13a0[] = { 0x0044, 0 }; +static const unichar_t str_13a1[] = { 0x0052, 0 }; +static const unichar_t str_13a2[] = { 0x0054, 0 }; +static const unichar_t str_13a9[] = { 0x0423, 0 }; +static const unichar_t str_13aa[] = { 0x0041, 0 }; +static const unichar_t str_13ab[] = { 0x004a, 0 }; +static const unichar_t str_13ac[] = { 0x0045, 0 }; +static const unichar_t str_13b1[] = { 0x0393, 0 }; +static const unichar_t str_13b3[] = { 0x0057, 0 }; +static const unichar_t str_13b7[] = { 0x004d, 0 }; +static const unichar_t str_13bb[] = { 0x0048, 0 }; +static const unichar_t str_13be[] = { 0x0398, 0 }; +static const unichar_t str_13c0[] = { 0x0047, 0 }; +static const unichar_t str_13c2[] = { 0x0068, 0 }; +static const unichar_t str_13c3[] = { 0x005a, 0 }; +static const unichar_t str_13cf[] = { 0x042c, 0 }; +static const unichar_t str_13d9[] = { 0x0056, 0 }; +static const unichar_t str_13da[] = { 0x0053, 0 }; +static const unichar_t str_13de[] = { 0x004c, 0 }; +static const unichar_t str_13df[] = { 0x0043, 0 }; +static const unichar_t str_13e2[] = { 0x0050, 0 }; +static const unichar_t str_13e6[] = { 0x004b, 0 }; +static const unichar_t str_13f4[] = { 0x0042, 0 }; +static const unichar_t str_1b06[] = { 0x1b05, 0x1b35, 0 }; +static const unichar_t str_1b08[] = { 0x1b07, 0x1b35, 0 }; +static const unichar_t str_1b0a[] = { 0x1b09, 0x1b35, 0 }; +static const unichar_t str_1b0c[] = { 0x1b0b, 0x1b35, 0 }; +static const unichar_t str_1b0e[] = { 0x1b0d, 0x1b35, 0 }; +static const unichar_t str_1b12[] = { 0x1b11, 0x1b35, 0 }; +static const unichar_t str_1b3b[] = { 0x1b3a, 0x1b35, 0 }; +static const unichar_t str_1b3d[] = { 0x1b3c, 0x1b35, 0 }; +static const unichar_t str_1b40[] = { 0x1b3e, 0x1b35, 0 }; +static const unichar_t str_1b41[] = { 0x1b3f, 0x1b35, 0 }; +static const unichar_t str_1b43[] = { 0x1b42, 0x1b35, 0 }; +static const unichar_t str_1d2c[] = { 0x0041, 0 }; +static const unichar_t str_1d2d[] = { 0x00c6, 0 }; +static const unichar_t str_1d2e[] = { 0x0042, 0 }; +static const unichar_t str_1d30[] = { 0x0044, 0 }; +static const unichar_t str_1d31[] = { 0x0045, 0 }; +static const unichar_t str_1d32[] = { 0x018e, 0 }; +static const unichar_t str_1d33[] = { 0x0047, 0 }; +static const unichar_t str_1d34[] = { 0x0048, 0 }; +static const unichar_t str_1d35[] = { 0x0049, 0 }; +static const unichar_t str_1d36[] = { 0x004a, 0 }; +static const unichar_t str_1d37[] = { 0x004b, 0 }; +static const unichar_t str_1d38[] = { 0x004c, 0 }; +static const unichar_t str_1d39[] = { 0x004d, 0 }; +static const unichar_t str_1d3a[] = { 0x004e, 0 }; +static const unichar_t str_1d3c[] = { 0x004f, 0 }; +static const unichar_t str_1d3d[] = { 0x0222, 0 }; +static const unichar_t str_1d3e[] = { 0x0050, 0 }; +static const unichar_t str_1d3f[] = { 0x0052, 0 }; +static const unichar_t str_1d40[] = { 0x0054, 0 }; +static const unichar_t str_1d41[] = { 0x0055, 0 }; +static const unichar_t str_1d42[] = { 0x0057, 0 }; +static const unichar_t str_1d43[] = { 0x0061, 0 }; +static const unichar_t str_1d44[] = { 0x0250, 0 }; +static const unichar_t str_1d45[] = { 0x0251, 0 }; +static const unichar_t str_1d46[] = { 0x1d02, 0 }; +static const unichar_t str_1d47[] = { 0x0062, 0 }; +static const unichar_t str_1d48[] = { 0x0064, 0 }; +static const unichar_t str_1d49[] = { 0x0065, 0 }; +static const unichar_t str_1d4a[] = { 0x0259, 0 }; +static const unichar_t str_1d4b[] = { 0x025b, 0 }; +static const unichar_t str_1d4c[] = { 0x025c, 0 }; +static const unichar_t str_1d4d[] = { 0x0067, 0 }; +static const unichar_t str_1d4f[] = { 0x006b, 0 }; +static const unichar_t str_1d50[] = { 0x006d, 0 }; +static const unichar_t str_1d51[] = { 0x014b, 0 }; +static const unichar_t str_1d52[] = { 0x006f, 0 }; +static const unichar_t str_1d53[] = { 0x0254, 0 }; +static const unichar_t str_1d54[] = { 0x1d16, 0 }; +static const unichar_t str_1d55[] = { 0x1d17, 0 }; +static const unichar_t str_1d56[] = { 0x0070, 0 }; +static const unichar_t str_1d57[] = { 0x0074, 0 }; +static const unichar_t str_1d58[] = { 0x0075, 0 }; +static const unichar_t str_1d59[] = { 0x1d1d, 0 }; +static const unichar_t str_1d5a[] = { 0x026f, 0 }; +static const unichar_t str_1d5b[] = { 0x0076, 0 }; +static const unichar_t str_1d5c[] = { 0x1d25, 0 }; +static const unichar_t str_1d5d[] = { 0x03b2, 0 }; +static const unichar_t str_1d5e[] = { 0x03b3, 0 }; +static const unichar_t str_1d5f[] = { 0x03b4, 0 }; +static const unichar_t str_1d60[] = { 0x03c6, 0 }; +static const unichar_t str_1d61[] = { 0x03c7, 0 }; +static const unichar_t str_1d62[] = { 0x0069, 0 }; +static const unichar_t str_1d63[] = { 0x0072, 0 }; +static const unichar_t str_1d64[] = { 0x0075, 0 }; +static const unichar_t str_1d65[] = { 0x0076, 0 }; +static const unichar_t str_1d66[] = { 0x03b2, 0 }; +static const unichar_t str_1d67[] = { 0x03b3, 0 }; +static const unichar_t str_1d68[] = { 0x03c1, 0 }; +static const unichar_t str_1d69[] = { 0x03c6, 0 }; +static const unichar_t str_1d6a[] = { 0x03c7, 0 }; +static const unichar_t str_1d78[] = { 0x043d, 0 }; +static const unichar_t str_1d9b[] = { 0x0252, 0 }; +static const unichar_t str_1d9c[] = { 0x0063, 0 }; +static const unichar_t str_1d9d[] = { 0x0255, 0 }; +static const unichar_t str_1d9e[] = { 0x00f0, 0 }; +static const unichar_t str_1d9f[] = { 0x025c, 0 }; +static const unichar_t str_1da0[] = { 0x0066, 0 }; +static const unichar_t str_1da1[] = { 0x025f, 0 }; +static const unichar_t str_1da2[] = { 0x0261, 0 }; +static const unichar_t str_1da3[] = { 0x0265, 0 }; +static const unichar_t str_1da4[] = { 0x0268, 0 }; +static const unichar_t str_1da5[] = { 0x0269, 0 }; +static const unichar_t str_1da6[] = { 0x026a, 0 }; +static const unichar_t str_1da7[] = { 0x1d7b, 0 }; +static const unichar_t str_1da8[] = { 0x029d, 0 }; +static const unichar_t str_1da9[] = { 0x026d, 0 }; +static const unichar_t str_1daa[] = { 0x1d85, 0 }; +static const unichar_t str_1dab[] = { 0x029f, 0 }; +static const unichar_t str_1dac[] = { 0x0271, 0 }; +static const unichar_t str_1dad[] = { 0x0270, 0 }; +static const unichar_t str_1dae[] = { 0x0272, 0 }; +static const unichar_t str_1daf[] = { 0x0273, 0 }; +static const unichar_t str_1db0[] = { 0x0274, 0 }; +static const unichar_t str_1db1[] = { 0x0275, 0 }; +static const unichar_t str_1db2[] = { 0x0278, 0 }; +static const unichar_t str_1db3[] = { 0x0282, 0 }; +static const unichar_t str_1db4[] = { 0x0283, 0 }; +static const unichar_t str_1db5[] = { 0x01ab, 0 }; +static const unichar_t str_1db6[] = { 0x0289, 0 }; +static const unichar_t str_1db7[] = { 0x028a, 0 }; +static const unichar_t str_1db8[] = { 0x1d1c, 0 }; +static const unichar_t str_1db9[] = { 0x028b, 0 }; +static const unichar_t str_1dba[] = { 0x028c, 0 }; +static const unichar_t str_1dbb[] = { 0x007a, 0 }; +static const unichar_t str_1dbc[] = { 0x0290, 0 }; +static const unichar_t str_1dbd[] = { 0x0291, 0 }; +static const unichar_t str_1dbe[] = { 0x0292, 0 }; +static const unichar_t str_1dbf[] = { 0x03b8, 0 }; +static const unichar_t str_1e00[] = { 0x0041, 0x0325, 0 }; +static const unichar_t str_1e01[] = { 0x0061, 0x0325, 0 }; +static const unichar_t str_1e02[] = { 0x0042, 0x0307, 0 }; +static const unichar_t str_1e03[] = { 0x0062, 0x0307, 0 }; +static const unichar_t str_1e04[] = { 0x0042, 0x0323, 0 }; +static const unichar_t str_1e05[] = { 0x0062, 0x0323, 0 }; +static const unichar_t str_1e06[] = { 0x0042, 0x0331, 0 }; +static const unichar_t str_1e07[] = { 0x0062, 0x0331, 0 }; +static const unichar_t str_1e08[] = { 0x00c7, 0x0301, 0 }; +static const unichar_t str_1e09[] = { 0x00e7, 0x0301, 0 }; +static const unichar_t str_1e0a[] = { 0x0044, 0x0307, 0 }; +static const unichar_t str_1e0b[] = { 0x0064, 0x0307, 0 }; +static const unichar_t str_1e0c[] = { 0x0044, 0x0323, 0 }; +static const unichar_t str_1e0d[] = { 0x0064, 0x0323, 0 }; +static const unichar_t str_1e0e[] = { 0x0044, 0x0331, 0 }; +static const unichar_t str_1e0f[] = { 0x0064, 0x0331, 0 }; +static const unichar_t str_1e10[] = { 0x0044, 0x0327, 0 }; +static const unichar_t str_1e11[] = { 0x0064, 0x0327, 0 }; +static const unichar_t str_1e12[] = { 0x0044, 0x032d, 0 }; +static const unichar_t str_1e13[] = { 0x0064, 0x032d, 0 }; +static const unichar_t str_1e14[] = { 0x0112, 0x0300, 0 }; +static const unichar_t str_1e15[] = { 0x0113, 0x0300, 0 }; +static const unichar_t str_1e16[] = { 0x0112, 0x0301, 0 }; +static const unichar_t str_1e17[] = { 0x0113, 0x0301, 0 }; +static const unichar_t str_1e18[] = { 0x0045, 0x032d, 0 }; +static const unichar_t str_1e19[] = { 0x0065, 0x032d, 0 }; +static const unichar_t str_1e1a[] = { 0x0045, 0x0330, 0 }; +static const unichar_t str_1e1b[] = { 0x0065, 0x0330, 0 }; +static const unichar_t str_1e1c[] = { 0x0228, 0x0306, 0 }; +static const unichar_t str_1e1d[] = { 0x0229, 0x0306, 0 }; +static const unichar_t str_1e1e[] = { 0x0046, 0x0307, 0 }; +static const unichar_t str_1e1f[] = { 0x0066, 0x0307, 0 }; +static const unichar_t str_1e20[] = { 0x0047, 0x0304, 0 }; +static const unichar_t str_1e21[] = { 0x0067, 0x0304, 0 }; +static const unichar_t str_1e22[] = { 0x0048, 0x0307, 0 }; +static const unichar_t str_1e23[] = { 0x0068, 0x0307, 0 }; +static const unichar_t str_1e24[] = { 0x0048, 0x0323, 0 }; +static const unichar_t str_1e25[] = { 0x0068, 0x0323, 0 }; +static const unichar_t str_1e26[] = { 0x0048, 0x0308, 0 }; +static const unichar_t str_1e27[] = { 0x0068, 0x0308, 0 }; +static const unichar_t str_1e28[] = { 0x0048, 0x0327, 0 }; +static const unichar_t str_1e29[] = { 0x0068, 0x0327, 0 }; +static const unichar_t str_1e2a[] = { 0x0048, 0x032e, 0 }; +static const unichar_t str_1e2b[] = { 0x0068, 0x032e, 0 }; +static const unichar_t str_1e2c[] = { 0x0049, 0x0330, 0 }; +static const unichar_t str_1e2d[] = { 0x0069, 0x0330, 0 }; +static const unichar_t str_1e2e[] = { 0x00cf, 0x0301, 0 }; +static const unichar_t str_1e2f[] = { 0x00ef, 0x0301, 0 }; +static const unichar_t str_1e30[] = { 0x004b, 0x0301, 0 }; +static const unichar_t str_1e31[] = { 0x006b, 0x0301, 0 }; +static const unichar_t str_1e32[] = { 0x004b, 0x0323, 0 }; +static const unichar_t str_1e33[] = { 0x006b, 0x0323, 0 }; +static const unichar_t str_1e34[] = { 0x004b, 0x0331, 0 }; +static const unichar_t str_1e35[] = { 0x006b, 0x0331, 0 }; +static const unichar_t str_1e36[] = { 0x004c, 0x0323, 0 }; +static const unichar_t str_1e37[] = { 0x006c, 0x0323, 0 }; +static const unichar_t str_1e38[] = { 0x1e36, 0x0304, 0 }; +static const unichar_t str_1e39[] = { 0x1e37, 0x0304, 0 }; +static const unichar_t str_1e3a[] = { 0x004c, 0x0331, 0 }; +static const unichar_t str_1e3b[] = { 0x006c, 0x0331, 0 }; +static const unichar_t str_1e3c[] = { 0x004c, 0x032d, 0 }; +static const unichar_t str_1e3d[] = { 0x006c, 0x032d, 0 }; +static const unichar_t str_1e3e[] = { 0x004d, 0x0301, 0 }; +static const unichar_t str_1e3f[] = { 0x006d, 0x0301, 0 }; +static const unichar_t str_1e40[] = { 0x004d, 0x0307, 0 }; +static const unichar_t str_1e41[] = { 0x006d, 0x0307, 0 }; +static const unichar_t str_1e42[] = { 0x004d, 0x0323, 0 }; +static const unichar_t str_1e43[] = { 0x006d, 0x0323, 0 }; +static const unichar_t str_1e44[] = { 0x004e, 0x0307, 0 }; +static const unichar_t str_1e45[] = { 0x006e, 0x0307, 0 }; +static const unichar_t str_1e46[] = { 0x004e, 0x0323, 0 }; +static const unichar_t str_1e47[] = { 0x006e, 0x0323, 0 }; +static const unichar_t str_1e48[] = { 0x004e, 0x0331, 0 }; +static const unichar_t str_1e49[] = { 0x006e, 0x0331, 0 }; +static const unichar_t str_1e4a[] = { 0x004e, 0x032d, 0 }; +static const unichar_t str_1e4b[] = { 0x006e, 0x032d, 0 }; +static const unichar_t str_1e4c[] = { 0x00d5, 0x0301, 0 }; +static const unichar_t str_1e4d[] = { 0x00f5, 0x0301, 0 }; +static const unichar_t str_1e4e[] = { 0x00d5, 0x0308, 0 }; +static const unichar_t str_1e4f[] = { 0x00f5, 0x0308, 0 }; +static const unichar_t str_1e50[] = { 0x014c, 0x0300, 0 }; +static const unichar_t str_1e51[] = { 0x014d, 0x0300, 0 }; +static const unichar_t str_1e52[] = { 0x014c, 0x0301, 0 }; +static const unichar_t str_1e53[] = { 0x014d, 0x0301, 0 }; +static const unichar_t str_1e54[] = { 0x0050, 0x0301, 0 }; +static const unichar_t str_1e55[] = { 0x0070, 0x0301, 0 }; +static const unichar_t str_1e56[] = { 0x0050, 0x0307, 0 }; +static const unichar_t str_1e57[] = { 0x0070, 0x0307, 0 }; +static const unichar_t str_1e58[] = { 0x0052, 0x0307, 0 }; +static const unichar_t str_1e59[] = { 0x0072, 0x0307, 0 }; +static const unichar_t str_1e5a[] = { 0x0052, 0x0323, 0 }; +static const unichar_t str_1e5b[] = { 0x0072, 0x0323, 0 }; +static const unichar_t str_1e5c[] = { 0x1e5a, 0x0304, 0 }; +static const unichar_t str_1e5d[] = { 0x1e5b, 0x0304, 0 }; +static const unichar_t str_1e5e[] = { 0x0052, 0x0331, 0 }; +static const unichar_t str_1e5f[] = { 0x0072, 0x0331, 0 }; +static const unichar_t str_1e60[] = { 0x0053, 0x0307, 0 }; +static const unichar_t str_1e61[] = { 0x0073, 0x0307, 0 }; +static const unichar_t str_1e62[] = { 0x0053, 0x0323, 0 }; +static const unichar_t str_1e63[] = { 0x0073, 0x0323, 0 }; +static const unichar_t str_1e64[] = { 0x015a, 0x0307, 0 }; +static const unichar_t str_1e65[] = { 0x015b, 0x0307, 0 }; +static const unichar_t str_1e66[] = { 0x0160, 0x0307, 0 }; +static const unichar_t str_1e67[] = { 0x0161, 0x0307, 0 }; +static const unichar_t str_1e68[] = { 0x1e62, 0x0307, 0 }; +static const unichar_t str_1e69[] = { 0x1e63, 0x0307, 0 }; +static const unichar_t str_1e6a[] = { 0x0054, 0x0307, 0 }; +static const unichar_t str_1e6b[] = { 0x0074, 0x0307, 0 }; +static const unichar_t str_1e6c[] = { 0x0054, 0x0323, 0 }; +static const unichar_t str_1e6d[] = { 0x0074, 0x0323, 0 }; +static const unichar_t str_1e6e[] = { 0x0054, 0x0331, 0 }; +static const unichar_t str_1e6f[] = { 0x0074, 0x0331, 0 }; +static const unichar_t str_1e70[] = { 0x0054, 0x032d, 0 }; +static const unichar_t str_1e71[] = { 0x0074, 0x032d, 0 }; +static const unichar_t str_1e72[] = { 0x0055, 0x0324, 0 }; +static const unichar_t str_1e73[] = { 0x0075, 0x0324, 0 }; +static const unichar_t str_1e74[] = { 0x0055, 0x0330, 0 }; +static const unichar_t str_1e75[] = { 0x0075, 0x0330, 0 }; +static const unichar_t str_1e76[] = { 0x0055, 0x032d, 0 }; +static const unichar_t str_1e77[] = { 0x0075, 0x032d, 0 }; +static const unichar_t str_1e78[] = { 0x0168, 0x0301, 0 }; +static const unichar_t str_1e79[] = { 0x0169, 0x0301, 0 }; +static const unichar_t str_1e7a[] = { 0x016a, 0x0308, 0 }; +static const unichar_t str_1e7b[] = { 0x016b, 0x0308, 0 }; +static const unichar_t str_1e7c[] = { 0x0056, 0x0303, 0 }; +static const unichar_t str_1e7d[] = { 0x0076, 0x0303, 0 }; +static const unichar_t str_1e7e[] = { 0x0056, 0x0323, 0 }; +static const unichar_t str_1e7f[] = { 0x0076, 0x0323, 0 }; +static const unichar_t str_1e80[] = { 0x0057, 0x0300, 0 }; +static const unichar_t str_1e81[] = { 0x0077, 0x0300, 0 }; +static const unichar_t str_1e82[] = { 0x0057, 0x0301, 0 }; +static const unichar_t str_1e83[] = { 0x0077, 0x0301, 0 }; +static const unichar_t str_1e84[] = { 0x0057, 0x0308, 0 }; +static const unichar_t str_1e85[] = { 0x0077, 0x0308, 0 }; +static const unichar_t str_1e86[] = { 0x0057, 0x0307, 0 }; +static const unichar_t str_1e87[] = { 0x0077, 0x0307, 0 }; +static const unichar_t str_1e88[] = { 0x0057, 0x0323, 0 }; +static const unichar_t str_1e89[] = { 0x0077, 0x0323, 0 }; +static const unichar_t str_1e8a[] = { 0x0058, 0x0307, 0 }; +static const unichar_t str_1e8b[] = { 0x0078, 0x0307, 0 }; +static const unichar_t str_1e8c[] = { 0x0058, 0x0308, 0 }; +static const unichar_t str_1e8d[] = { 0x0078, 0x0308, 0 }; +static const unichar_t str_1e8e[] = { 0x0059, 0x0307, 0 }; +static const unichar_t str_1e8f[] = { 0x0079, 0x0307, 0 }; +static const unichar_t str_1e90[] = { 0x005a, 0x0302, 0 }; +static const unichar_t str_1e91[] = { 0x007a, 0x0302, 0 }; +static const unichar_t str_1e92[] = { 0x005a, 0x0323, 0 }; +static const unichar_t str_1e93[] = { 0x007a, 0x0323, 0 }; +static const unichar_t str_1e94[] = { 0x005a, 0x0331, 0 }; +static const unichar_t str_1e95[] = { 0x007a, 0x0331, 0 }; +static const unichar_t str_1e96[] = { 0x0068, 0x0331, 0 }; +static const unichar_t str_1e97[] = { 0x0074, 0x0308, 0 }; +static const unichar_t str_1e98[] = { 0x0077, 0x030a, 0 }; +static const unichar_t str_1e99[] = { 0x0079, 0x030a, 0 }; +static const unichar_t str_1e9a[] = { 0x0061, 0x02be, 0 }; +static const unichar_t str_1e9b[] = { 0x017f, 0x0307, 0 }; +static const unichar_t str_1ea0[] = { 0x0041, 0x0323, 0 }; +static const unichar_t str_1ea1[] = { 0x0061, 0x0323, 0 }; +static const unichar_t str_1ea2[] = { 0x0041, 0x0309, 0 }; +static const unichar_t str_1ea3[] = { 0x0061, 0x0309, 0 }; +static const unichar_t str_1ea4[] = { 0x00c2, 0x0301, 0 }; +static const unichar_t str_1ea5[] = { 0x00e2, 0x0301, 0 }; +static const unichar_t str_1ea6[] = { 0x00c2, 0x0300, 0 }; +static const unichar_t str_1ea7[] = { 0x00e2, 0x0300, 0 }; +static const unichar_t str_1ea8[] = { 0x00c2, 0x0309, 0 }; +static const unichar_t str_1ea9[] = { 0x00e2, 0x0309, 0 }; +static const unichar_t str_1eaa[] = { 0x00c2, 0x0303, 0 }; +static const unichar_t str_1eab[] = { 0x00e2, 0x0303, 0 }; +static const unichar_t str_1eac[] = { 0x1ea0, 0x0302, 0 }; +static const unichar_t str_1ead[] = { 0x1ea1, 0x0302, 0 }; +static const unichar_t str_1eae[] = { 0x0102, 0x0301, 0 }; +static const unichar_t str_1eaf[] = { 0x0103, 0x0301, 0 }; +static const unichar_t str_1eb0[] = { 0x0102, 0x0300, 0 }; +static const unichar_t str_1eb1[] = { 0x0103, 0x0300, 0 }; +static const unichar_t str_1eb2[] = { 0x0102, 0x0309, 0 }; +static const unichar_t str_1eb3[] = { 0x0103, 0x0309, 0 }; +static const unichar_t str_1eb4[] = { 0x0102, 0x0303, 0 }; +static const unichar_t str_1eb5[] = { 0x0103, 0x0303, 0 }; +static const unichar_t str_1eb6[] = { 0x1ea0, 0x0306, 0 }; +static const unichar_t str_1eb7[] = { 0x1ea1, 0x0306, 0 }; +static const unichar_t str_1eb8[] = { 0x0045, 0x0323, 0 }; +static const unichar_t str_1eb9[] = { 0x0065, 0x0323, 0 }; +static const unichar_t str_1eba[] = { 0x0045, 0x0309, 0 }; +static const unichar_t str_1ebb[] = { 0x0065, 0x0309, 0 }; +static const unichar_t str_1ebc[] = { 0x0045, 0x0303, 0 }; +static const unichar_t str_1ebd[] = { 0x0065, 0x0303, 0 }; +static const unichar_t str_1ebe[] = { 0x00ca, 0x0301, 0 }; +static const unichar_t str_1ebf[] = { 0x00ea, 0x0301, 0 }; +static const unichar_t str_1ec0[] = { 0x00ca, 0x0300, 0 }; +static const unichar_t str_1ec1[] = { 0x00ea, 0x0300, 0 }; +static const unichar_t str_1ec2[] = { 0x00ca, 0x0309, 0 }; +static const unichar_t str_1ec3[] = { 0x00ea, 0x0309, 0 }; +static const unichar_t str_1ec4[] = { 0x00ca, 0x0303, 0 }; +static const unichar_t str_1ec5[] = { 0x00ea, 0x0303, 0 }; +static const unichar_t str_1ec6[] = { 0x1eb8, 0x0302, 0 }; +static const unichar_t str_1ec7[] = { 0x1eb9, 0x0302, 0 }; +static const unichar_t str_1ec8[] = { 0x0049, 0x0309, 0 }; +static const unichar_t str_1ec9[] = { 0x0069, 0x0309, 0 }; +static const unichar_t str_1eca[] = { 0x0049, 0x0323, 0 }; +static const unichar_t str_1ecb[] = { 0x0069, 0x0323, 0 }; +static const unichar_t str_1ecc[] = { 0x004f, 0x0323, 0 }; +static const unichar_t str_1ecd[] = { 0x006f, 0x0323, 0 }; +static const unichar_t str_1ece[] = { 0x004f, 0x0309, 0 }; +static const unichar_t str_1ecf[] = { 0x006f, 0x0309, 0 }; +static const unichar_t str_1ed0[] = { 0x00d4, 0x0301, 0 }; +static const unichar_t str_1ed1[] = { 0x00f4, 0x0301, 0 }; +static const unichar_t str_1ed2[] = { 0x00d4, 0x0300, 0 }; +static const unichar_t str_1ed3[] = { 0x00f4, 0x0300, 0 }; +static const unichar_t str_1ed4[] = { 0x00d4, 0x0309, 0 }; +static const unichar_t str_1ed5[] = { 0x00f4, 0x0309, 0 }; +static const unichar_t str_1ed6[] = { 0x00d4, 0x0303, 0 }; +static const unichar_t str_1ed7[] = { 0x00f4, 0x0303, 0 }; +static const unichar_t str_1ed8[] = { 0x1ecc, 0x0302, 0 }; +static const unichar_t str_1ed9[] = { 0x1ecd, 0x0302, 0 }; +static const unichar_t str_1eda[] = { 0x01a0, 0x0301, 0 }; +static const unichar_t str_1edb[] = { 0x01a1, 0x0301, 0 }; +static const unichar_t str_1edc[] = { 0x01a0, 0x0300, 0 }; +static const unichar_t str_1edd[] = { 0x01a1, 0x0300, 0 }; +static const unichar_t str_1ede[] = { 0x01a0, 0x0309, 0 }; +static const unichar_t str_1edf[] = { 0x01a1, 0x0309, 0 }; +static const unichar_t str_1ee0[] = { 0x01a0, 0x0303, 0 }; +static const unichar_t str_1ee1[] = { 0x01a1, 0x0303, 0 }; +static const unichar_t str_1ee2[] = { 0x01a0, 0x0323, 0 }; +static const unichar_t str_1ee3[] = { 0x01a1, 0x0323, 0 }; +static const unichar_t str_1ee4[] = { 0x0055, 0x0323, 0 }; +static const unichar_t str_1ee5[] = { 0x0075, 0x0323, 0 }; +static const unichar_t str_1ee6[] = { 0x0055, 0x0309, 0 }; +static const unichar_t str_1ee7[] = { 0x0075, 0x0309, 0 }; +static const unichar_t str_1ee8[] = { 0x01af, 0x0301, 0 }; +static const unichar_t str_1ee9[] = { 0x01b0, 0x0301, 0 }; +static const unichar_t str_1eea[] = { 0x01af, 0x0300, 0 }; +static const unichar_t str_1eeb[] = { 0x01b0, 0x0300, 0 }; +static const unichar_t str_1eec[] = { 0x01af, 0x0309, 0 }; +static const unichar_t str_1eed[] = { 0x01b0, 0x0309, 0 }; +static const unichar_t str_1eee[] = { 0x01af, 0x0303, 0 }; +static const unichar_t str_1eef[] = { 0x01b0, 0x0303, 0 }; +static const unichar_t str_1ef0[] = { 0x01af, 0x0323, 0 }; +static const unichar_t str_1ef1[] = { 0x01b0, 0x0323, 0 }; +static const unichar_t str_1ef2[] = { 0x0059, 0x0300, 0 }; +static const unichar_t str_1ef3[] = { 0x0079, 0x0300, 0 }; +static const unichar_t str_1ef4[] = { 0x0059, 0x0323, 0 }; +static const unichar_t str_1ef5[] = { 0x0079, 0x0323, 0 }; +static const unichar_t str_1ef6[] = { 0x0059, 0x0309, 0 }; +static const unichar_t str_1ef7[] = { 0x0079, 0x0309, 0 }; +static const unichar_t str_1ef8[] = { 0x0059, 0x0303, 0 }; +static const unichar_t str_1ef9[] = { 0x0079, 0x0303, 0 }; +static const unichar_t str_1f00[] = { 0x03b1, 0x0313, 0 }; +static const unichar_t str_1f01[] = { 0x03b1, 0x0314, 0 }; +static const unichar_t str_1f02[] = { 0x1f00, 0x0300, 0 }; +static const unichar_t str_1f03[] = { 0x1f01, 0x0300, 0 }; +static const unichar_t str_1f04[] = { 0x1f00, 0x0301, 0 }; +static const unichar_t str_1f05[] = { 0x1f01, 0x0301, 0 }; +static const unichar_t str_1f06[] = { 0x1f00, 0x0342, 0 }; +static const unichar_t str_1f07[] = { 0x1f01, 0x0342, 0 }; +static const unichar_t str_1f08[] = { 0x0391, 0x0313, 0 }; +static const unichar_t str_1f09[] = { 0x0391, 0x0314, 0 }; +static const unichar_t str_1f0a[] = { 0x1f08, 0x0300, 0 }; +static const unichar_t str_1f0b[] = { 0x1f09, 0x0300, 0 }; +static const unichar_t str_1f0c[] = { 0x1f08, 0x0301, 0 }; +static const unichar_t str_1f0d[] = { 0x1f09, 0x0301, 0 }; +static const unichar_t str_1f0e[] = { 0x1f08, 0x0342, 0 }; +static const unichar_t str_1f0f[] = { 0x1f09, 0x0342, 0 }; +static const unichar_t str_1f10[] = { 0x03b5, 0x0313, 0 }; +static const unichar_t str_1f11[] = { 0x03b5, 0x0314, 0 }; +static const unichar_t str_1f12[] = { 0x1f10, 0x0300, 0 }; +static const unichar_t str_1f13[] = { 0x1f11, 0x0300, 0 }; +static const unichar_t str_1f14[] = { 0x1f10, 0x0301, 0 }; +static const unichar_t str_1f15[] = { 0x1f11, 0x0301, 0 }; +static const unichar_t str_1f18[] = { 0x0395, 0x0313, 0 }; +static const unichar_t str_1f19[] = { 0x0395, 0x0314, 0 }; +static const unichar_t str_1f1a[] = { 0x1f18, 0x0300, 0 }; +static const unichar_t str_1f1b[] = { 0x1f19, 0x0300, 0 }; +static const unichar_t str_1f1c[] = { 0x1f18, 0x0301, 0 }; +static const unichar_t str_1f1d[] = { 0x1f19, 0x0301, 0 }; +static const unichar_t str_1f20[] = { 0x03b7, 0x0313, 0 }; +static const unichar_t str_1f21[] = { 0x03b7, 0x0314, 0 }; +static const unichar_t str_1f22[] = { 0x1f20, 0x0300, 0 }; +static const unichar_t str_1f23[] = { 0x1f21, 0x0300, 0 }; +static const unichar_t str_1f24[] = { 0x1f20, 0x0301, 0 }; +static const unichar_t str_1f25[] = { 0x1f21, 0x0301, 0 }; +static const unichar_t str_1f26[] = { 0x1f20, 0x0342, 0 }; +static const unichar_t str_1f27[] = { 0x1f21, 0x0342, 0 }; +static const unichar_t str_1f28[] = { 0x0397, 0x0313, 0 }; +static const unichar_t str_1f29[] = { 0x0397, 0x0314, 0 }; +static const unichar_t str_1f2a[] = { 0x1f28, 0x0300, 0 }; +static const unichar_t str_1f2b[] = { 0x1f29, 0x0300, 0 }; +static const unichar_t str_1f2c[] = { 0x1f28, 0x0301, 0 }; +static const unichar_t str_1f2d[] = { 0x1f29, 0x0301, 0 }; +static const unichar_t str_1f2e[] = { 0x1f28, 0x0342, 0 }; +static const unichar_t str_1f2f[] = { 0x1f29, 0x0342, 0 }; +static const unichar_t str_1f30[] = { 0x03b9, 0x0313, 0 }; +static const unichar_t str_1f31[] = { 0x03b9, 0x0314, 0 }; +static const unichar_t str_1f32[] = { 0x1f30, 0x0300, 0 }; +static const unichar_t str_1f33[] = { 0x1f31, 0x0300, 0 }; +static const unichar_t str_1f34[] = { 0x1f30, 0x0301, 0 }; +static const unichar_t str_1f35[] = { 0x1f31, 0x0301, 0 }; +static const unichar_t str_1f36[] = { 0x1f30, 0x0342, 0 }; +static const unichar_t str_1f37[] = { 0x1f31, 0x0342, 0 }; +static const unichar_t str_1f38[] = { 0x0399, 0x0313, 0 }; +static const unichar_t str_1f39[] = { 0x0399, 0x0314, 0 }; +static const unichar_t str_1f3a[] = { 0x1f38, 0x0300, 0 }; +static const unichar_t str_1f3b[] = { 0x1f39, 0x0300, 0 }; +static const unichar_t str_1f3c[] = { 0x1f38, 0x0301, 0 }; +static const unichar_t str_1f3d[] = { 0x1f39, 0x0301, 0 }; +static const unichar_t str_1f3e[] = { 0x1f38, 0x0342, 0 }; +static const unichar_t str_1f3f[] = { 0x1f39, 0x0342, 0 }; +static const unichar_t str_1f40[] = { 0x03bf, 0x0313, 0 }; +static const unichar_t str_1f41[] = { 0x03bf, 0x0314, 0 }; +static const unichar_t str_1f42[] = { 0x1f40, 0x0300, 0 }; +static const unichar_t str_1f43[] = { 0x1f41, 0x0300, 0 }; +static const unichar_t str_1f44[] = { 0x1f40, 0x0301, 0 }; +static const unichar_t str_1f45[] = { 0x1f41, 0x0301, 0 }; +static const unichar_t str_1f48[] = { 0x039f, 0x0313, 0 }; +static const unichar_t str_1f49[] = { 0x039f, 0x0314, 0 }; +static const unichar_t str_1f4a[] = { 0x1f48, 0x0300, 0 }; +static const unichar_t str_1f4b[] = { 0x1f49, 0x0300, 0 }; +static const unichar_t str_1f4c[] = { 0x1f48, 0x0301, 0 }; +static const unichar_t str_1f4d[] = { 0x1f49, 0x0301, 0 }; +static const unichar_t str_1f50[] = { 0x03c5, 0x0313, 0 }; +static const unichar_t str_1f51[] = { 0x03c5, 0x0314, 0 }; +static const unichar_t str_1f52[] = { 0x1f50, 0x0300, 0 }; +static const unichar_t str_1f53[] = { 0x1f51, 0x0300, 0 }; +static const unichar_t str_1f54[] = { 0x1f50, 0x0301, 0 }; +static const unichar_t str_1f55[] = { 0x1f51, 0x0301, 0 }; +static const unichar_t str_1f56[] = { 0x1f50, 0x0342, 0 }; +static const unichar_t str_1f57[] = { 0x1f51, 0x0342, 0 }; +static const unichar_t str_1f59[] = { 0x03a5, 0x0314, 0 }; +static const unichar_t str_1f5b[] = { 0x1f59, 0x0300, 0 }; +static const unichar_t str_1f5d[] = { 0x1f59, 0x0301, 0 }; +static const unichar_t str_1f5f[] = { 0x1f59, 0x0342, 0 }; +static const unichar_t str_1f60[] = { 0x03c9, 0x0313, 0 }; +static const unichar_t str_1f61[] = { 0x03c9, 0x0314, 0 }; +static const unichar_t str_1f62[] = { 0x1f60, 0x0300, 0 }; +static const unichar_t str_1f63[] = { 0x1f61, 0x0300, 0 }; +static const unichar_t str_1f64[] = { 0x1f60, 0x0301, 0 }; +static const unichar_t str_1f65[] = { 0x1f61, 0x0301, 0 }; +static const unichar_t str_1f66[] = { 0x1f60, 0x0342, 0 }; +static const unichar_t str_1f67[] = { 0x1f61, 0x0342, 0 }; +static const unichar_t str_1f68[] = { 0x03a9, 0x0313, 0 }; +static const unichar_t str_1f69[] = { 0x03a9, 0x0314, 0 }; +static const unichar_t str_1f6a[] = { 0x1f68, 0x0300, 0 }; +static const unichar_t str_1f6b[] = { 0x1f69, 0x0300, 0 }; +static const unichar_t str_1f6c[] = { 0x1f68, 0x0301, 0 }; +static const unichar_t str_1f6d[] = { 0x1f69, 0x0301, 0 }; +static const unichar_t str_1f6e[] = { 0x1f68, 0x0342, 0 }; +static const unichar_t str_1f6f[] = { 0x1f69, 0x0342, 0 }; +static const unichar_t str_1f70[] = { 0x03b1, 0x0300, 0 }; +static const unichar_t str_1f71[] = { 0x03ac, 0 }; +static const unichar_t str_1f72[] = { 0x03b5, 0x0300, 0 }; +static const unichar_t str_1f73[] = { 0x03ad, 0 }; +static const unichar_t str_1f74[] = { 0x03b7, 0x0300, 0 }; +static const unichar_t str_1f75[] = { 0x03ae, 0 }; +static const unichar_t str_1f76[] = { 0x03b9, 0x0300, 0 }; +static const unichar_t str_1f77[] = { 0x03af, 0 }; +static const unichar_t str_1f78[] = { 0x03bf, 0x0300, 0 }; +static const unichar_t str_1f79[] = { 0x03cc, 0 }; +static const unichar_t str_1f7a[] = { 0x03c5, 0x0300, 0 }; +static const unichar_t str_1f7b[] = { 0x03cd, 0 }; +static const unichar_t str_1f7c[] = { 0x03c9, 0x0300, 0 }; +static const unichar_t str_1f7d[] = { 0x03ce, 0 }; +static const unichar_t str_1f80[] = { 0x1f00, 0x0345, 0 }; +static const unichar_t str_1f81[] = { 0x1f01, 0x0345, 0 }; +static const unichar_t str_1f82[] = { 0x1f02, 0x0345, 0 }; +static const unichar_t str_1f83[] = { 0x1f03, 0x0345, 0 }; +static const unichar_t str_1f84[] = { 0x1f04, 0x0345, 0 }; +static const unichar_t str_1f85[] = { 0x1f05, 0x0345, 0 }; +static const unichar_t str_1f86[] = { 0x1f06, 0x0345, 0 }; +static const unichar_t str_1f87[] = { 0x1f07, 0x0345, 0 }; +static const unichar_t str_1f88[] = { 0x1f08, 0x0345, 0 }; +static const unichar_t str_1f89[] = { 0x1f09, 0x0345, 0 }; +static const unichar_t str_1f8a[] = { 0x1f0a, 0x0345, 0 }; +static const unichar_t str_1f8b[] = { 0x1f0b, 0x0345, 0 }; +static const unichar_t str_1f8c[] = { 0x1f0c, 0x0345, 0 }; +static const unichar_t str_1f8d[] = { 0x1f0d, 0x0345, 0 }; +static const unichar_t str_1f8e[] = { 0x1f0e, 0x0345, 0 }; +static const unichar_t str_1f8f[] = { 0x1f0f, 0x0345, 0 }; +static const unichar_t str_1f90[] = { 0x1f20, 0x0345, 0 }; +static const unichar_t str_1f91[] = { 0x1f21, 0x0345, 0 }; +static const unichar_t str_1f92[] = { 0x1f22, 0x0345, 0 }; +static const unichar_t str_1f93[] = { 0x1f23, 0x0345, 0 }; +static const unichar_t str_1f94[] = { 0x1f24, 0x0345, 0 }; +static const unichar_t str_1f95[] = { 0x1f25, 0x0345, 0 }; +static const unichar_t str_1f96[] = { 0x1f26, 0x0345, 0 }; +static const unichar_t str_1f97[] = { 0x1f27, 0x0345, 0 }; +static const unichar_t str_1f98[] = { 0x1f28, 0x0345, 0 }; +static const unichar_t str_1f99[] = { 0x1f29, 0x0345, 0 }; +static const unichar_t str_1f9a[] = { 0x1f2a, 0x0345, 0 }; +static const unichar_t str_1f9b[] = { 0x1f2b, 0x0345, 0 }; +static const unichar_t str_1f9c[] = { 0x1f2c, 0x0345, 0 }; +static const unichar_t str_1f9d[] = { 0x1f2d, 0x0345, 0 }; +static const unichar_t str_1f9e[] = { 0x1f2e, 0x0345, 0 }; +static const unichar_t str_1f9f[] = { 0x1f2f, 0x0345, 0 }; +static const unichar_t str_1fa0[] = { 0x1f60, 0x0345, 0 }; +static const unichar_t str_1fa1[] = { 0x1f61, 0x0345, 0 }; +static const unichar_t str_1fa2[] = { 0x1f62, 0x0345, 0 }; +static const unichar_t str_1fa3[] = { 0x1f63, 0x0345, 0 }; +static const unichar_t str_1fa4[] = { 0x1f64, 0x0345, 0 }; +static const unichar_t str_1fa5[] = { 0x1f65, 0x0345, 0 }; +static const unichar_t str_1fa6[] = { 0x1f66, 0x0345, 0 }; +static const unichar_t str_1fa7[] = { 0x1f67, 0x0345, 0 }; +static const unichar_t str_1fa8[] = { 0x1f68, 0x0345, 0 }; +static const unichar_t str_1fa9[] = { 0x1f69, 0x0345, 0 }; +static const unichar_t str_1faa[] = { 0x1f6a, 0x0345, 0 }; +static const unichar_t str_1fab[] = { 0x1f6b, 0x0345, 0 }; +static const unichar_t str_1fac[] = { 0x1f6c, 0x0345, 0 }; +static const unichar_t str_1fad[] = { 0x1f6d, 0x0345, 0 }; +static const unichar_t str_1fae[] = { 0x1f6e, 0x0345, 0 }; +static const unichar_t str_1faf[] = { 0x1f6f, 0x0345, 0 }; +static const unichar_t str_1fb0[] = { 0x03b1, 0x0306, 0 }; +static const unichar_t str_1fb1[] = { 0x03b1, 0x0304, 0 }; +static const unichar_t str_1fb2[] = { 0x1f70, 0x0345, 0 }; +static const unichar_t str_1fb3[] = { 0x03b1, 0x0345, 0 }; +static const unichar_t str_1fb4[] = { 0x03ac, 0x0345, 0 }; +static const unichar_t str_1fb6[] = { 0x03b1, 0x0342, 0 }; +static const unichar_t str_1fb7[] = { 0x1fb6, 0x0345, 0 }; +static const unichar_t str_1fb8[] = { 0x0391, 0x0306, 0 }; +static const unichar_t str_1fb9[] = { 0x0391, 0x0304, 0 }; +static const unichar_t str_1fba[] = { 0x0391, 0x0300, 0 }; +static const unichar_t str_1fbb[] = { 0x0386, 0 }; +static const unichar_t str_1fbc[] = { 0x0391, 0x0345, 0 }; +static const unichar_t str_1fbd[] = { 0x0020, 0x0313, 0 }; +static const unichar_t str_1fbe[] = { 0x03b9, 0 }; +static const unichar_t str_1fbf[] = { 0x0020, 0x0313, 0 }; +static const unichar_t str_1fc0[] = { 0x0020, 0x0342, 0 }; +static const unichar_t str_1fc1[] = { 0x00a8, 0x0342, 0 }; +static const unichar_t str_1fc2[] = { 0x1f74, 0x0345, 0 }; +static const unichar_t str_1fc3[] = { 0x03b7, 0x0345, 0 }; +static const unichar_t str_1fc4[] = { 0x03ae, 0x0345, 0 }; +static const unichar_t str_1fc6[] = { 0x03b7, 0x0342, 0 }; +static const unichar_t str_1fc7[] = { 0x1fc6, 0x0345, 0 }; +static const unichar_t str_1fc8[] = { 0x0395, 0x0300, 0 }; +static const unichar_t str_1fc9[] = { 0x0388, 0 }; +static const unichar_t str_1fca[] = { 0x0397, 0x0300, 0 }; +static const unichar_t str_1fcb[] = { 0x0389, 0 }; +static const unichar_t str_1fcc[] = { 0x0397, 0x0345, 0 }; +static const unichar_t str_1fcd[] = { 0x1fbf, 0x0300, 0 }; +static const unichar_t str_1fce[] = { 0x1fbf, 0x0301, 0 }; +static const unichar_t str_1fcf[] = { 0x1fbf, 0x0342, 0 }; +static const unichar_t str_1fd0[] = { 0x03b9, 0x0306, 0 }; +static const unichar_t str_1fd1[] = { 0x03b9, 0x0304, 0 }; +static const unichar_t str_1fd2[] = { 0x03ca, 0x0300, 0 }; +static const unichar_t str_1fd3[] = { 0x0390, 0 }; +static const unichar_t str_1fd6[] = { 0x03b9, 0x0342, 0 }; +static const unichar_t str_1fd7[] = { 0x03ca, 0x0342, 0 }; +static const unichar_t str_1fd8[] = { 0x0399, 0x0306, 0 }; +static const unichar_t str_1fd9[] = { 0x0399, 0x0304, 0 }; +static const unichar_t str_1fda[] = { 0x0399, 0x0300, 0 }; +static const unichar_t str_1fdb[] = { 0x038a, 0 }; +static const unichar_t str_1fdd[] = { 0x1ffe, 0x0300, 0 }; +static const unichar_t str_1fde[] = { 0x1ffe, 0x0301, 0 }; +static const unichar_t str_1fdf[] = { 0x1ffe, 0x0342, 0 }; +static const unichar_t str_1fe0[] = { 0x03c5, 0x0306, 0 }; +static const unichar_t str_1fe1[] = { 0x03c5, 0x0304, 0 }; +static const unichar_t str_1fe2[] = { 0x03cb, 0x0300, 0 }; +static const unichar_t str_1fe3[] = { 0x03b0, 0 }; +static const unichar_t str_1fe4[] = { 0x03c1, 0x0313, 0 }; +static const unichar_t str_1fe5[] = { 0x03c1, 0x0314, 0 }; +static const unichar_t str_1fe6[] = { 0x03c5, 0x0342, 0 }; +static const unichar_t str_1fe7[] = { 0x03cb, 0x0342, 0 }; +static const unichar_t str_1fe8[] = { 0x03a5, 0x0306, 0 }; +static const unichar_t str_1fe9[] = { 0x03a5, 0x0304, 0 }; +static const unichar_t str_1fea[] = { 0x03a5, 0x0300, 0 }; +static const unichar_t str_1feb[] = { 0x038e, 0 }; +static const unichar_t str_1fec[] = { 0x03a1, 0x0314, 0 }; +static const unichar_t str_1fed[] = { 0x00a8, 0x0300, 0 }; +static const unichar_t str_1fee[] = { 0x0385, 0 }; +static const unichar_t str_1fef[] = { 0x0060, 0 }; +static const unichar_t str_1ff2[] = { 0x1f7c, 0x0345, 0 }; +static const unichar_t str_1ff3[] = { 0x03c9, 0x0345, 0 }; +static const unichar_t str_1ff4[] = { 0x03ce, 0x0345, 0 }; +static const unichar_t str_1ff6[] = { 0x03c9, 0x0342, 0 }; +static const unichar_t str_1ff7[] = { 0x1ff6, 0x0345, 0 }; +static const unichar_t str_1ff8[] = { 0x039f, 0x0300, 0 }; +static const unichar_t str_1ff9[] = { 0x038c, 0 }; +static const unichar_t str_1ffa[] = { 0x03a9, 0x0300, 0 }; +static const unichar_t str_1ffb[] = { 0x038f, 0 }; +static const unichar_t str_1ffc[] = { 0x03a9, 0x0345, 0 }; +static const unichar_t str_1ffd[] = { 0x00b4, 0 }; +static const unichar_t str_1ffe[] = { 0x0020, 0x0314, 0 }; +static const unichar_t str_2000[] = { 0x2002, 0 }; +static const unichar_t str_2001[] = { 0x2003, 0 }; +static const unichar_t str_2002[] = { 0x0020, 0 }; +static const unichar_t str_2003[] = { 0x0020, 0 }; +static const unichar_t str_2004[] = { 0x0020, 0 }; +static const unichar_t str_2005[] = { 0x0020, 0 }; +static const unichar_t str_2006[] = { 0x0020, 0 }; +static const unichar_t str_2007[] = { 0x0020, 0 }; +static const unichar_t str_2008[] = { 0x0020, 0 }; +static const unichar_t str_2009[] = { 0x0020, 0 }; +static const unichar_t str_200a[] = { 0x0020, 0 }; +static const unichar_t str_2010[] = { 0x002d, 0 }; +static const unichar_t str_2011[] = { 0x2010, 0 }; +static const unichar_t str_2012[] = { 0x002d, 0 }; +static const unichar_t str_2013[] = { 0x002d, 0 }; +static const unichar_t str_2014[] = { 0x002d, 0 }; +static const unichar_t str_2015[] = { 0x002d, 0 }; +static const unichar_t str_2016[] = { 0x007c, 0x007c, 0 }; +static const unichar_t str_2017[] = { 0x0020, 0x0333, 0 }; +static const unichar_t str_2018[] = { 0x0060, 0 }; +static const unichar_t str_2019[] = { 0x0027, 0 }; +static const unichar_t str_201c[] = { 0x0022, 0 }; +static const unichar_t str_201d[] = { 0x0022, 0 }; +static const unichar_t str_2024[] = { 0x002e, 0 }; +static const unichar_t str_2025[] = { 0x002e, 0x002e, 0 }; +static const unichar_t str_2026[] = { 0x002e, 0x002e, 0x002e, 0 }; +static const unichar_t str_202f[] = { 0x0020, 0 }; +static const unichar_t str_2032[] = { 0x0027, 0 }; +static const unichar_t str_2033[] = { 0x2032, 0x2032, 0 }; +static const unichar_t str_2034[] = { 0x2032, 0x2032, 0x2032, 0 }; +static const unichar_t str_2035[] = { 0x0060, 0 }; +static const unichar_t str_2036[] = { 0x2035, 0x2035, 0 }; +static const unichar_t str_2037[] = { 0x2035, 0x2035, 0x2035, 0 }; +static const unichar_t str_2039[] = { 0x003c, 0 }; +static const unichar_t str_203a[] = { 0x003e, 0 }; +static const unichar_t str_203c[] = { 0x0021, 0x0021, 0 }; +static const unichar_t str_203e[] = { 0x0020, 0x0305, 0 }; +static const unichar_t str_2047[] = { 0x003f, 0x003f, 0 }; +static const unichar_t str_2048[] = { 0x003f, 0x0021, 0 }; +static const unichar_t str_2049[] = { 0x0021, 0x003f, 0 }; +static const unichar_t str_2057[] = { 0x2032, 0x2032, 0x2032, 0x2032, 0 }; +static const unichar_t str_205f[] = { 0x0020, 0 }; +static const unichar_t str_2070[] = { 0x0030, 0 }; +static const unichar_t str_2071[] = { 0x0069, 0 }; +static const unichar_t str_2074[] = { 0x0034, 0 }; +static const unichar_t str_2075[] = { 0x0035, 0 }; +static const unichar_t str_2076[] = { 0x0036, 0 }; +static const unichar_t str_2077[] = { 0x0037, 0 }; +static const unichar_t str_2078[] = { 0x0038, 0 }; +static const unichar_t str_2079[] = { 0x0039, 0 }; +static const unichar_t str_207a[] = { 0x002b, 0 }; +static const unichar_t str_207b[] = { 0x2212, 0 }; +static const unichar_t str_207c[] = { 0x003d, 0 }; +static const unichar_t str_207d[] = { 0x0028, 0 }; +static const unichar_t str_207e[] = { 0x0029, 0 }; +static const unichar_t str_207f[] = { 0x006e, 0 }; +static const unichar_t str_2080[] = { 0x0030, 0 }; +static const unichar_t str_2081[] = { 0x0031, 0 }; +static const unichar_t str_2082[] = { 0x0032, 0 }; +static const unichar_t str_2083[] = { 0x0033, 0 }; +static const unichar_t str_2084[] = { 0x0034, 0 }; +static const unichar_t str_2085[] = { 0x0035, 0 }; +static const unichar_t str_2086[] = { 0x0036, 0 }; +static const unichar_t str_2087[] = { 0x0037, 0 }; +static const unichar_t str_2088[] = { 0x0038, 0 }; +static const unichar_t str_2089[] = { 0x0039, 0 }; +static const unichar_t str_208a[] = { 0x002b, 0 }; +static const unichar_t str_208b[] = { 0x2212, 0 }; +static const unichar_t str_208c[] = { 0x003d, 0 }; +static const unichar_t str_208d[] = { 0x0028, 0 }; +static const unichar_t str_208e[] = { 0x0029, 0 }; +static const unichar_t str_2090[] = { 0x0061, 0 }; +static const unichar_t str_2091[] = { 0x0065, 0 }; +static const unichar_t str_2092[] = { 0x006f, 0 }; +static const unichar_t str_2093[] = { 0x0078, 0 }; +static const unichar_t str_2094[] = { 0x0259, 0 }; +static const unichar_t str_20a8[] = { 0x0052, 0x0073, 0 }; +static const unichar_t str_2100[] = { 0x0061, 0x002f, 0x0063, 0 }; +static const unichar_t str_2101[] = { 0x0061, 0x002f, 0x0073, 0 }; +static const unichar_t str_2102[] = { 0x0043, 0 }; +static const unichar_t str_2103[] = { 0x00b0, 0x0043, 0 }; +static const unichar_t str_2105[] = { 0x0063, 0x002f, 0x006f, 0 }; +static const unichar_t str_2106[] = { 0x0063, 0x002f, 0x0075, 0 }; +static const unichar_t str_2107[] = { 0x0190, 0 }; +static const unichar_t str_2109[] = { 0x00b0, 0x0046, 0 }; +static const unichar_t str_210a[] = { 0x0067, 0 }; +static const unichar_t str_210b[] = { 0x0048, 0 }; +static const unichar_t str_210c[] = { 0x0048, 0 }; +static const unichar_t str_210d[] = { 0x0048, 0 }; +static const unichar_t str_210e[] = { 0x0068, 0 }; +static const unichar_t str_210f[] = { 0x0127, 0 }; +static const unichar_t str_2110[] = { 0x0049, 0 }; +static const unichar_t str_2111[] = { 0x0049, 0 }; +static const unichar_t str_2112[] = { 0x004c, 0 }; +static const unichar_t str_2113[] = { 0x006c, 0 }; +static const unichar_t str_2115[] = { 0x004e, 0 }; +static const unichar_t str_2116[] = { 0x004e, 0x006f, 0 }; +static const unichar_t str_2119[] = { 0x0050, 0 }; +static const unichar_t str_211a[] = { 0x0051, 0 }; +static const unichar_t str_211b[] = { 0x0052, 0 }; +static const unichar_t str_211c[] = { 0x0052, 0 }; +static const unichar_t str_211d[] = { 0x0052, 0 }; +static const unichar_t str_2120[] = { 0x0053, 0x004d, 0 }; +static const unichar_t str_2121[] = { 0x0054, 0x0045, 0x004c, 0 }; +static const unichar_t str_2122[] = { 0x0054, 0x004d, 0 }; +static const unichar_t str_2124[] = { 0x005a, 0 }; +static const unichar_t str_2126[] = { 0x03a9, 0 }; +static const unichar_t str_2128[] = { 0x005a, 0 }; +static const unichar_t str_212a[] = { 0x004b, 0 }; +static const unichar_t str_212b[] = { 0x00c5, 0 }; +static const unichar_t str_212c[] = { 0x0042, 0 }; +static const unichar_t str_212d[] = { 0x0043, 0 }; +static const unichar_t str_212f[] = { 0x0065, 0 }; +static const unichar_t str_2130[] = { 0x0045, 0 }; +static const unichar_t str_2131[] = { 0x0046, 0 }; +static const unichar_t str_2133[] = { 0x004d, 0 }; +static const unichar_t str_2134[] = { 0x006f, 0 }; +static const unichar_t str_2135[] = { 0x05d0, 0 }; +static const unichar_t str_2136[] = { 0x05d1, 0 }; +static const unichar_t str_2137[] = { 0x05d2, 0 }; +static const unichar_t str_2138[] = { 0x05d3, 0 }; +static const unichar_t str_2139[] = { 0x0069, 0 }; +static const unichar_t str_213b[] = { 0x0046, 0x0041, 0x0058, 0 }; +static const unichar_t str_213c[] = { 0x03c0, 0 }; +static const unichar_t str_213d[] = { 0x03b3, 0 }; +static const unichar_t str_213e[] = { 0x0393, 0 }; +static const unichar_t str_213f[] = { 0x03a0, 0 }; +static const unichar_t str_2140[] = { 0x2211, 0 }; +static const unichar_t str_2145[] = { 0x0044, 0 }; +static const unichar_t str_2146[] = { 0x0064, 0 }; +static const unichar_t str_2147[] = { 0x0065, 0 }; +static const unichar_t str_2148[] = { 0x0069, 0 }; +static const unichar_t str_2149[] = { 0x006a, 0 }; +static const unichar_t str_2153[] = { 0x0031, 0x2044, 0x0033, 0 }; +static const unichar_t str_2154[] = { 0x0032, 0x2044, 0x0033, 0 }; +static const unichar_t str_2155[] = { 0x0031, 0x2044, 0x0035, 0 }; +static const unichar_t str_2156[] = { 0x0032, 0x2044, 0x0035, 0 }; +static const unichar_t str_2157[] = { 0x0033, 0x2044, 0x0035, 0 }; +static const unichar_t str_2158[] = { 0x0034, 0x2044, 0x0035, 0 }; +static const unichar_t str_2159[] = { 0x0031, 0x2044, 0x0036, 0 }; +static const unichar_t str_215a[] = { 0x0035, 0x2044, 0x0036, 0 }; +static const unichar_t str_215b[] = { 0x0031, 0x2044, 0x0038, 0 }; +static const unichar_t str_215c[] = { 0x0033, 0x2044, 0x0038, 0 }; +static const unichar_t str_215d[] = { 0x0035, 0x2044, 0x0038, 0 }; +static const unichar_t str_215e[] = { 0x0037, 0x2044, 0x0038, 0 }; +static const unichar_t str_215f[] = { 0x0031, 0x2044, 0 }; +static const unichar_t str_2160[] = { 0x0049, 0 }; +static const unichar_t str_2161[] = { 0x0049, 0x0049, 0 }; +static const unichar_t str_2162[] = { 0x0049, 0x0049, 0x0049, 0 }; +static const unichar_t str_2163[] = { 0x0049, 0x0056, 0 }; +static const unichar_t str_2164[] = { 0x0056, 0 }; +static const unichar_t str_2165[] = { 0x0056, 0x0049, 0 }; +static const unichar_t str_2166[] = { 0x0056, 0x0049, 0x0049, 0 }; +static const unichar_t str_2167[] = { 0x0056, 0x0049, 0x0049, 0x0049, 0 }; +static const unichar_t str_2168[] = { 0x0049, 0x0058, 0 }; +static const unichar_t str_2169[] = { 0x0058, 0 }; +static const unichar_t str_216a[] = { 0x0058, 0x0049, 0 }; +static const unichar_t str_216b[] = { 0x0058, 0x0049, 0x0049, 0 }; +static const unichar_t str_216c[] = { 0x004c, 0 }; +static const unichar_t str_216d[] = { 0x0043, 0 }; +static const unichar_t str_216e[] = { 0x0044, 0 }; +static const unichar_t str_216f[] = { 0x004d, 0 }; +static const unichar_t str_2170[] = { 0x0069, 0 }; +static const unichar_t str_2171[] = { 0x0069, 0x0069, 0 }; +static const unichar_t str_2172[] = { 0x0069, 0x0069, 0x0069, 0 }; +static const unichar_t str_2173[] = { 0x0069, 0x0076, 0 }; +static const unichar_t str_2174[] = { 0x0076, 0 }; +static const unichar_t str_2175[] = { 0x0076, 0x0069, 0 }; +static const unichar_t str_2176[] = { 0x0076, 0x0069, 0x0069, 0 }; +static const unichar_t str_2177[] = { 0x0076, 0x0069, 0x0069, 0x0069, 0 }; +static const unichar_t str_2178[] = { 0x0069, 0x0078, 0 }; +static const unichar_t str_2179[] = { 0x0078, 0 }; +static const unichar_t str_217a[] = { 0x0078, 0x0069, 0 }; +static const unichar_t str_217b[] = { 0x0078, 0x0069, 0x0069, 0 }; +static const unichar_t str_217c[] = { 0x006c, 0 }; +static const unichar_t str_217d[] = { 0x0063, 0 }; +static const unichar_t str_217e[] = { 0x0064, 0 }; +static const unichar_t str_217f[] = { 0x006d, 0 }; +static const unichar_t str_219a[] = { 0x2190, 0x0338, 0 }; +static const unichar_t str_219b[] = { 0x2192, 0x0338, 0 }; +static const unichar_t str_21ae[] = { 0x2194, 0x0338, 0 }; +static const unichar_t str_21cd[] = { 0x21d0, 0x0338, 0 }; +static const unichar_t str_21ce[] = { 0x21d4, 0x0338, 0 }; +static const unichar_t str_21cf[] = { 0x21d2, 0x0338, 0 }; +static const unichar_t str_2204[] = { 0x2203, 0x0338, 0 }; +static const unichar_t str_2205[] = { 0x00d8, 0 }; +static const unichar_t str_2206[] = { 0x0394, 0 }; +static const unichar_t str_2209[] = { 0x2208, 0x0338, 0 }; +static const unichar_t str_220c[] = { 0x220b, 0x0338, 0 }; +static const unichar_t str_220f[] = { 0x03a0, 0 }; +static const unichar_t str_2211[] = { 0x03a3, 0 }; +static const unichar_t str_2212[] = { 0x002d, 0 }; +static const unichar_t str_2215[] = { 0x002f, 0 }; +static const unichar_t str_2216[] = { 0x005c, 0 }; +static const unichar_t str_2217[] = { 0x002a, 0 }; +static const unichar_t str_2218[] = { 0x00b0, 0 }; +static const unichar_t str_2219[] = { 0x00b7, 0 }; +static const unichar_t str_2223[] = { 0x007c, 0 }; +static const unichar_t str_2224[] = { 0x2223, 0x0338, 0 }; +static const unichar_t str_2225[] = { 0x007c, 0x007c, 0 }; +static const unichar_t str_2226[] = { 0x2225, 0x0338, 0 }; +static const unichar_t str_222c[] = { 0x222b, 0x222b, 0 }; +static const unichar_t str_222d[] = { 0x222b, 0x222b, 0x222b, 0 }; +static const unichar_t str_222f[] = { 0x222e, 0x222e, 0 }; +static const unichar_t str_2230[] = { 0x222e, 0x222e, 0x222e, 0 }; +static const unichar_t str_2236[] = { 0x003a, 0 }; +static const unichar_t str_223c[] = { 0x007e, 0 }; +static const unichar_t str_2241[] = { 0x223c, 0x0338, 0 }; +static const unichar_t str_2244[] = { 0x2243, 0x0338, 0 }; +static const unichar_t str_2247[] = { 0x2245, 0x0338, 0 }; +static const unichar_t str_2249[] = { 0x2248, 0x0338, 0 }; +static const unichar_t str_2260[] = { 0x003d, 0x0338, 0 }; +static const unichar_t str_2262[] = { 0x2261, 0x0338, 0 }; +static const unichar_t str_226a[] = { 0x00ab, 0 }; +static const unichar_t str_226b[] = { 0x00bb, 0 }; +static const unichar_t str_226d[] = { 0x224d, 0x0338, 0 }; +static const unichar_t str_226e[] = { 0x003c, 0x0338, 0 }; +static const unichar_t str_226f[] = { 0x003e, 0x0338, 0 }; +static const unichar_t str_2270[] = { 0x2264, 0x0338, 0 }; +static const unichar_t str_2271[] = { 0x2265, 0x0338, 0 }; +static const unichar_t str_2274[] = { 0x2272, 0x0338, 0 }; +static const unichar_t str_2275[] = { 0x2273, 0x0338, 0 }; +static const unichar_t str_2278[] = { 0x2276, 0x0338, 0 }; +static const unichar_t str_2279[] = { 0x2277, 0x0338, 0 }; +static const unichar_t str_2280[] = { 0x227a, 0x0338, 0 }; +static const unichar_t str_2281[] = { 0x227b, 0x0338, 0 }; +static const unichar_t str_2284[] = { 0x2282, 0x0338, 0 }; +static const unichar_t str_2285[] = { 0x2283, 0x0338, 0 }; +static const unichar_t str_2288[] = { 0x2286, 0x0338, 0 }; +static const unichar_t str_2289[] = { 0x2287, 0x0338, 0 }; +static const unichar_t str_2299[] = { 0x0298, 0 }; +static const unichar_t str_22ac[] = { 0x22a2, 0x0338, 0 }; +static const unichar_t str_22ad[] = { 0x22a8, 0x0338, 0 }; +static const unichar_t str_22ae[] = { 0x22a9, 0x0338, 0 }; +static const unichar_t str_22af[] = { 0x22ab, 0x0338, 0 }; +static const unichar_t str_22c4[] = { 0x25ca, 0 }; +static const unichar_t str_22c5[] = { 0x00b7, 0 }; +static const unichar_t str_22e0[] = { 0x227c, 0x0338, 0 }; +static const unichar_t str_22e1[] = { 0x227d, 0x0338, 0 }; +static const unichar_t str_22e2[] = { 0x2291, 0x0338, 0 }; +static const unichar_t str_22e3[] = { 0x2292, 0x0338, 0 }; +static const unichar_t str_22ea[] = { 0x22b2, 0x0338, 0 }; +static const unichar_t str_22eb[] = { 0x22b3, 0x0338, 0 }; +static const unichar_t str_22ec[] = { 0x22b4, 0x0338, 0 }; +static const unichar_t str_22ed[] = { 0x22b5, 0x0338, 0 }; +static const unichar_t str_22ef[] = { 0x00b7, 0x00b7, 0x00b7, 0 }; +static const unichar_t str_2303[] = { 0x005e, 0 }; +static const unichar_t str_2329[] = { 0x3008, 0 }; +static const unichar_t str_232a[] = { 0x3009, 0 }; +static const unichar_t str_2373[] = { 0x03b9, 0 }; +static const unichar_t str_2374[] = { 0x03c1, 0 }; +static const unichar_t str_2375[] = { 0x03c9, 0 }; +static const unichar_t str_237a[] = { 0x03b1, 0 }; +static const unichar_t str_2400[] = { 0x004e, 0x0055, 0x004c, 0 }; +static const unichar_t str_2401[] = { 0x0053, 0x004f, 0x0048, 0 }; +static const unichar_t str_2402[] = { 0x0053, 0x0054, 0x0058, 0 }; +static const unichar_t str_2403[] = { 0x0045, 0x0054, 0x0058, 0 }; +static const unichar_t str_2404[] = { 0x0045, 0x004f, 0x0054, 0 }; +static const unichar_t str_2405[] = { 0x0045, 0x004e, 0x0041, 0 }; +static const unichar_t str_2406[] = { 0x0041, 0x0043, 0x004b, 0 }; +static const unichar_t str_2407[] = { 0x0042, 0x0045, 0x004c, 0 }; +static const unichar_t str_2408[] = { 0x0042, 0x0053, 0 }; +static const unichar_t str_2409[] = { 0x0048, 0x0054, 0 }; +static const unichar_t str_240a[] = { 0x004c, 0x0046, 0 }; +static const unichar_t str_240b[] = { 0x0056, 0x0054, 0 }; +static const unichar_t str_240c[] = { 0x0046, 0x0046, 0 }; +static const unichar_t str_240d[] = { 0x0043, 0x0052, 0 }; +static const unichar_t str_240e[] = { 0x0053, 0x004f, 0 }; +static const unichar_t str_240f[] = { 0x0053, 0x0049, 0 }; +static const unichar_t str_2410[] = { 0x0044, 0x004c, 0x0045, 0 }; +static const unichar_t str_2411[] = { 0x0044, 0x0043, 0x0031, 0 }; +static const unichar_t str_2412[] = { 0x0044, 0x0043, 0x0032, 0 }; +static const unichar_t str_2413[] = { 0x0044, 0x0043, 0x0033, 0 }; +static const unichar_t str_2414[] = { 0x0044, 0x0043, 0x0034, 0 }; +static const unichar_t str_2415[] = { 0x004e, 0x0041, 0x004b, 0 }; +static const unichar_t str_2416[] = { 0x0053, 0x0059, 0x004e, 0 }; +static const unichar_t str_2417[] = { 0x0045, 0x0054, 0x0042, 0 }; +static const unichar_t str_2418[] = { 0x0043, 0x0041, 0x004e, 0 }; +static const unichar_t str_2419[] = { 0x0045, 0x004d, 0 }; +static const unichar_t str_241a[] = { 0x0053, 0x0055, 0x0042, 0 }; +static const unichar_t str_241b[] = { 0x0045, 0x0053, 0x0043, 0 }; +static const unichar_t str_241c[] = { 0x0046, 0x0053, 0 }; +static const unichar_t str_241d[] = { 0x0047, 0x0053, 0 }; +static const unichar_t str_241e[] = { 0x0052, 0x0053, 0 }; +static const unichar_t str_241f[] = { 0x0055, 0x0053, 0 }; +static const unichar_t str_2420[] = { 0x0053, 0x0050, 0 }; +static const unichar_t str_2421[] = { 0x0044, 0x0045, 0x004c, 0 }; +static const unichar_t str_2422[] = { 0x0180, 0 }; +static const unichar_t str_2460[] = { 0x0031, 0x20dd, 0 }; +static const unichar_t str_2461[] = { 0x0032, 0x20dd, 0 }; +static const unichar_t str_2462[] = { 0x0033, 0x20dd, 0 }; +static const unichar_t str_2463[] = { 0x0034, 0x20dd, 0 }; +static const unichar_t str_2464[] = { 0x0035, 0x20dd, 0 }; +static const unichar_t str_2465[] = { 0x0036, 0x20dd, 0 }; +static const unichar_t str_2466[] = { 0x0037, 0x20dd, 0 }; +static const unichar_t str_2467[] = { 0x0038, 0x20dd, 0 }; +static const unichar_t str_2468[] = { 0x0039, 0x20dd, 0 }; +static const unichar_t str_2469[] = { 0x0031, 0x0030, 0x20dd, 0 }; +static const unichar_t str_246a[] = { 0x0031, 0x0031, 0x20dd, 0 }; +static const unichar_t str_246b[] = { 0x0031, 0x0032, 0x20dd, 0 }; +static const unichar_t str_246c[] = { 0x0031, 0x0033, 0x20dd, 0 }; +static const unichar_t str_246d[] = { 0x0031, 0x0034, 0x20dd, 0 }; +static const unichar_t str_246e[] = { 0x0031, 0x0035, 0x20dd, 0 }; +static const unichar_t str_246f[] = { 0x0031, 0x0036, 0x20dd, 0 }; +static const unichar_t str_2470[] = { 0x0031, 0x0037, 0x20dd, 0 }; +static const unichar_t str_2471[] = { 0x0031, 0x0038, 0x20dd, 0 }; +static const unichar_t str_2472[] = { 0x0031, 0x0039, 0x20dd, 0 }; +static const unichar_t str_2473[] = { 0x0032, 0x0030, 0x20dd, 0 }; +static const unichar_t str_2474[] = { 0x0028, 0x0031, 0x0029, 0 }; +static const unichar_t str_2475[] = { 0x0028, 0x0032, 0x0029, 0 }; +static const unichar_t str_2476[] = { 0x0028, 0x0033, 0x0029, 0 }; +static const unichar_t str_2477[] = { 0x0028, 0x0034, 0x0029, 0 }; +static const unichar_t str_2478[] = { 0x0028, 0x0035, 0x0029, 0 }; +static const unichar_t str_2479[] = { 0x0028, 0x0036, 0x0029, 0 }; +static const unichar_t str_247a[] = { 0x0028, 0x0037, 0x0029, 0 }; +static const unichar_t str_247b[] = { 0x0028, 0x0038, 0x0029, 0 }; +static const unichar_t str_247c[] = { 0x0028, 0x0039, 0x0029, 0 }; +static const unichar_t str_247d[] = { 0x0028, 0x0031, 0x0030, 0x0029, 0 }; +static const unichar_t str_247e[] = { 0x0028, 0x0031, 0x0031, 0x0029, 0 }; +static const unichar_t str_247f[] = { 0x0028, 0x0031, 0x0032, 0x0029, 0 }; +static const unichar_t str_2480[] = { 0x0028, 0x0031, 0x0033, 0x0029, 0 }; +static const unichar_t str_2481[] = { 0x0028, 0x0031, 0x0034, 0x0029, 0 }; +static const unichar_t str_2482[] = { 0x0028, 0x0031, 0x0035, 0x0029, 0 }; +static const unichar_t str_2483[] = { 0x0028, 0x0031, 0x0036, 0x0029, 0 }; +static const unichar_t str_2484[] = { 0x0028, 0x0031, 0x0037, 0x0029, 0 }; +static const unichar_t str_2485[] = { 0x0028, 0x0031, 0x0038, 0x0029, 0 }; +static const unichar_t str_2486[] = { 0x0028, 0x0031, 0x0039, 0x0029, 0 }; +static const unichar_t str_2487[] = { 0x0028, 0x0032, 0x0030, 0x0029, 0 }; +static const unichar_t str_2488[] = { 0x0031, 0x002e, 0 }; +static const unichar_t str_2489[] = { 0x0032, 0x002e, 0 }; +static const unichar_t str_248a[] = { 0x0033, 0x002e, 0 }; +static const unichar_t str_248b[] = { 0x0034, 0x002e, 0 }; +static const unichar_t str_248c[] = { 0x0035, 0x002e, 0 }; +static const unichar_t str_248d[] = { 0x0036, 0x002e, 0 }; +static const unichar_t str_248e[] = { 0x0037, 0x002e, 0 }; +static const unichar_t str_248f[] = { 0x0038, 0x002e, 0 }; +static const unichar_t str_2490[] = { 0x0039, 0x002e, 0 }; +static const unichar_t str_2491[] = { 0x0031, 0x0030, 0x002e, 0 }; +static const unichar_t str_2492[] = { 0x0031, 0x0031, 0x002e, 0 }; +static const unichar_t str_2493[] = { 0x0031, 0x0032, 0x002e, 0 }; +static const unichar_t str_2494[] = { 0x0031, 0x0033, 0x002e, 0 }; +static const unichar_t str_2495[] = { 0x0031, 0x0034, 0x002e, 0 }; +static const unichar_t str_2496[] = { 0x0031, 0x0035, 0x002e, 0 }; +static const unichar_t str_2497[] = { 0x0031, 0x0036, 0x002e, 0 }; +static const unichar_t str_2498[] = { 0x0031, 0x0037, 0x002e, 0 }; +static const unichar_t str_2499[] = { 0x0031, 0x0038, 0x002e, 0 }; +static const unichar_t str_249a[] = { 0x0031, 0x0039, 0x002e, 0 }; +static const unichar_t str_249b[] = { 0x0032, 0x0030, 0x002e, 0 }; +static const unichar_t str_249c[] = { 0x0028, 0x0061, 0x0029, 0 }; +static const unichar_t str_249d[] = { 0x0028, 0x0062, 0x0029, 0 }; +static const unichar_t str_249e[] = { 0x0028, 0x0063, 0x0029, 0 }; +static const unichar_t str_249f[] = { 0x0028, 0x0064, 0x0029, 0 }; +static const unichar_t str_24a0[] = { 0x0028, 0x0065, 0x0029, 0 }; +static const unichar_t str_24a1[] = { 0x0028, 0x0066, 0x0029, 0 }; +static const unichar_t str_24a2[] = { 0x0028, 0x0067, 0x0029, 0 }; +static const unichar_t str_24a3[] = { 0x0028, 0x0068, 0x0029, 0 }; +static const unichar_t str_24a4[] = { 0x0028, 0x0069, 0x0029, 0 }; +static const unichar_t str_24a5[] = { 0x0028, 0x006a, 0x0029, 0 }; +static const unichar_t str_24a6[] = { 0x0028, 0x006b, 0x0029, 0 }; +static const unichar_t str_24a7[] = { 0x0028, 0x006c, 0x0029, 0 }; +static const unichar_t str_24a8[] = { 0x0028, 0x006d, 0x0029, 0 }; +static const unichar_t str_24a9[] = { 0x0028, 0x006e, 0x0029, 0 }; +static const unichar_t str_24aa[] = { 0x0028, 0x006f, 0x0029, 0 }; +static const unichar_t str_24ab[] = { 0x0028, 0x0070, 0x0029, 0 }; +static const unichar_t str_24ac[] = { 0x0028, 0x0071, 0x0029, 0 }; +static const unichar_t str_24ad[] = { 0x0028, 0x0072, 0x0029, 0 }; +static const unichar_t str_24ae[] = { 0x0028, 0x0073, 0x0029, 0 }; +static const unichar_t str_24af[] = { 0x0028, 0x0074, 0x0029, 0 }; +static const unichar_t str_24b0[] = { 0x0028, 0x0075, 0x0029, 0 }; +static const unichar_t str_24b1[] = { 0x0028, 0x0076, 0x0029, 0 }; +static const unichar_t str_24b2[] = { 0x0028, 0x0077, 0x0029, 0 }; +static const unichar_t str_24b3[] = { 0x0028, 0x0078, 0x0029, 0 }; +static const unichar_t str_24b4[] = { 0x0028, 0x0079, 0x0029, 0 }; +static const unichar_t str_24b5[] = { 0x0028, 0x007a, 0x0029, 0 }; +static const unichar_t str_24b6[] = { 0x0041, 0x20dd, 0 }; +static const unichar_t str_24b7[] = { 0x0042, 0x20dd, 0 }; +static const unichar_t str_24b8[] = { 0x0043, 0x20dd, 0 }; +static const unichar_t str_24b9[] = { 0x0044, 0x20dd, 0 }; +static const unichar_t str_24ba[] = { 0x0045, 0x20dd, 0 }; +static const unichar_t str_24bb[] = { 0x0046, 0x20dd, 0 }; +static const unichar_t str_24bc[] = { 0x0047, 0x20dd, 0 }; +static const unichar_t str_24bd[] = { 0x0048, 0x20dd, 0 }; +static const unichar_t str_24be[] = { 0x0049, 0x20dd, 0 }; +static const unichar_t str_24bf[] = { 0x004a, 0x20dd, 0 }; +static const unichar_t str_24c0[] = { 0x004b, 0x20dd, 0 }; +static const unichar_t str_24c1[] = { 0x004c, 0x20dd, 0 }; +static const unichar_t str_24c2[] = { 0x004d, 0x20dd, 0 }; +static const unichar_t str_24c3[] = { 0x004e, 0x20dd, 0 }; +static const unichar_t str_24c4[] = { 0x004f, 0x20dd, 0 }; +static const unichar_t str_24c5[] = { 0x0050, 0x20dd, 0 }; +static const unichar_t str_24c6[] = { 0x0051, 0x20dd, 0 }; +static const unichar_t str_24c7[] = { 0x0052, 0x20dd, 0 }; +static const unichar_t str_24c8[] = { 0x0053, 0x20dd, 0 }; +static const unichar_t str_24c9[] = { 0x0054, 0x20dd, 0 }; +static const unichar_t str_24ca[] = { 0x0055, 0x20dd, 0 }; +static const unichar_t str_24cb[] = { 0x0056, 0x20dd, 0 }; +static const unichar_t str_24cc[] = { 0x0057, 0x20dd, 0 }; +static const unichar_t str_24cd[] = { 0x0058, 0x20dd, 0 }; +static const unichar_t str_24ce[] = { 0x0059, 0x20dd, 0 }; +static const unichar_t str_24cf[] = { 0x005a, 0x20dd, 0 }; +static const unichar_t str_24d0[] = { 0x0061, 0x20dd, 0 }; +static const unichar_t str_24d1[] = { 0x0062, 0x20dd, 0 }; +static const unichar_t str_24d2[] = { 0x0063, 0x20dd, 0 }; +static const unichar_t str_24d3[] = { 0x0064, 0x20dd, 0 }; +static const unichar_t str_24d4[] = { 0x0065, 0x20dd, 0 }; +static const unichar_t str_24d5[] = { 0x0066, 0x20dd, 0 }; +static const unichar_t str_24d6[] = { 0x0067, 0x20dd, 0 }; +static const unichar_t str_24d7[] = { 0x0068, 0x20dd, 0 }; +static const unichar_t str_24d8[] = { 0x0069, 0x20dd, 0 }; +static const unichar_t str_24d9[] = { 0x006a, 0x20dd, 0 }; +static const unichar_t str_24da[] = { 0x006b, 0x20dd, 0 }; +static const unichar_t str_24db[] = { 0x006c, 0x20dd, 0 }; +static const unichar_t str_24dc[] = { 0x006d, 0x20dd, 0 }; +static const unichar_t str_24dd[] = { 0x006e, 0x20dd, 0 }; +static const unichar_t str_24de[] = { 0x006f, 0x20dd, 0 }; +static const unichar_t str_24df[] = { 0x0070, 0x20dd, 0 }; +static const unichar_t str_24e0[] = { 0x0071, 0x20dd, 0 }; +static const unichar_t str_24e1[] = { 0x0072, 0x20dd, 0 }; +static const unichar_t str_24e2[] = { 0x0073, 0x20dd, 0 }; +static const unichar_t str_24e3[] = { 0x0074, 0x20dd, 0 }; +static const unichar_t str_24e4[] = { 0x0075, 0x20dd, 0 }; +static const unichar_t str_24e5[] = { 0x0076, 0x20dd, 0 }; +static const unichar_t str_24e6[] = { 0x0077, 0x20dd, 0 }; +static const unichar_t str_24e7[] = { 0x0078, 0x20dd, 0 }; +static const unichar_t str_24e8[] = { 0x0079, 0x20dd, 0 }; +static const unichar_t str_24e9[] = { 0x007a, 0x20dd, 0 }; +static const unichar_t str_24ea[] = { 0x0030, 0x20dd, 0 }; +static const unichar_t str_2500[] = { 0x2014, 0 }; +static const unichar_t str_2502[] = { 0x007c, 0 }; +static const unichar_t str_25b3[] = { 0x2206, 0 }; +static const unichar_t str_25b8[] = { 0x2023, 0 }; +static const unichar_t str_25bd[] = { 0x2207, 0 }; +static const unichar_t str_25c7[] = { 0x25ca, 0 }; +static const unichar_t str_25e6[] = { 0x00b0, 0 }; +static const unichar_t str_2662[] = { 0x25ca, 0 }; +static const unichar_t str_2731[] = { 0x002a, 0 }; +static const unichar_t str_2758[] = { 0x007c, 0 }; +static const unichar_t str_2762[] = { 0x0021, 0 }; +static const unichar_t str_2a0c[] = { 0x222b, 0x222b, 0x222b, 0x222b, 0 }; +static const unichar_t str_2a74[] = { 0x003a, 0x003a, 0x003d, 0 }; +static const unichar_t str_2a75[] = { 0x003d, 0x003d, 0 }; +static const unichar_t str_2a76[] = { 0x003d, 0x003d, 0x003d, 0 }; +static const unichar_t str_2adc[] = { 0x2add, 0x0338, 0 }; +static const unichar_t str_2c7c[] = { 0x006a, 0 }; +static const unichar_t str_2c7d[] = { 0x0056, 0 }; +static const unichar_t str_2d6f[] = { 0x2d61, 0 }; +static const unichar_t str_2e9f[] = { 0x6bcd, 0 }; +static const unichar_t str_2ef3[] = { 0x9f9f, 0 }; +static const unichar_t str_2f00[] = { 0x4e00, 0 }; +static const unichar_t str_2f01[] = { 0x4e28, 0 }; +static const unichar_t str_2f02[] = { 0x4e36, 0 }; +static const unichar_t str_2f03[] = { 0x4e3f, 0 }; +static const unichar_t str_2f04[] = { 0x4e59, 0 }; +static const unichar_t str_2f05[] = { 0x4e85, 0 }; +static const unichar_t str_2f06[] = { 0x4e8c, 0 }; +static const unichar_t str_2f07[] = { 0x4ea0, 0 }; +static const unichar_t str_2f08[] = { 0x4eba, 0 }; +static const unichar_t str_2f09[] = { 0x513f, 0 }; +static const unichar_t str_2f0a[] = { 0x5165, 0 }; +static const unichar_t str_2f0b[] = { 0x516b, 0 }; +static const unichar_t str_2f0c[] = { 0x5182, 0 }; +static const unichar_t str_2f0d[] = { 0x5196, 0 }; +static const unichar_t str_2f0e[] = { 0x51ab, 0 }; +static const unichar_t str_2f0f[] = { 0x51e0, 0 }; +static const unichar_t str_2f10[] = { 0x51f5, 0 }; +static const unichar_t str_2f11[] = { 0x5200, 0 }; +static const unichar_t str_2f12[] = { 0x529b, 0 }; +static const unichar_t str_2f13[] = { 0x52f9, 0 }; +static const unichar_t str_2f14[] = { 0x5315, 0 }; +static const unichar_t str_2f15[] = { 0x531a, 0 }; +static const unichar_t str_2f16[] = { 0x5338, 0 }; +static const unichar_t str_2f17[] = { 0x5341, 0 }; +static const unichar_t str_2f18[] = { 0x535c, 0 }; +static const unichar_t str_2f19[] = { 0x5369, 0 }; +static const unichar_t str_2f1a[] = { 0x5382, 0 }; +static const unichar_t str_2f1b[] = { 0x53b6, 0 }; +static const unichar_t str_2f1c[] = { 0x53c8, 0 }; +static const unichar_t str_2f1d[] = { 0x53e3, 0 }; +static const unichar_t str_2f1e[] = { 0x56d7, 0 }; +static const unichar_t str_2f1f[] = { 0x571f, 0 }; +static const unichar_t str_2f20[] = { 0x58eb, 0 }; +static const unichar_t str_2f21[] = { 0x5902, 0 }; +static const unichar_t str_2f22[] = { 0x590a, 0 }; +static const unichar_t str_2f23[] = { 0x5915, 0 }; +static const unichar_t str_2f24[] = { 0x5927, 0 }; +static const unichar_t str_2f25[] = { 0x5973, 0 }; +static const unichar_t str_2f26[] = { 0x5b50, 0 }; +static const unichar_t str_2f27[] = { 0x5b80, 0 }; +static const unichar_t str_2f28[] = { 0x5bf8, 0 }; +static const unichar_t str_2f29[] = { 0x5c0f, 0 }; +static const unichar_t str_2f2a[] = { 0x5c22, 0 }; +static const unichar_t str_2f2b[] = { 0x5c38, 0 }; +static const unichar_t str_2f2c[] = { 0x5c6e, 0 }; +static const unichar_t str_2f2d[] = { 0x5c71, 0 }; +static const unichar_t str_2f2e[] = { 0x5ddb, 0 }; +static const unichar_t str_2f2f[] = { 0x5de5, 0 }; +static const unichar_t str_2f30[] = { 0x5df1, 0 }; +static const unichar_t str_2f31[] = { 0x5dfe, 0 }; +static const unichar_t str_2f32[] = { 0x5e72, 0 }; +static const unichar_t str_2f33[] = { 0x5e7a, 0 }; +static const unichar_t str_2f34[] = { 0x5e7f, 0 }; +static const unichar_t str_2f35[] = { 0x5ef4, 0 }; +static const unichar_t str_2f36[] = { 0x5efe, 0 }; +static const unichar_t str_2f37[] = { 0x5f0b, 0 }; +static const unichar_t str_2f38[] = { 0x5f13, 0 }; +static const unichar_t str_2f39[] = { 0x5f50, 0 }; +static const unichar_t str_2f3a[] = { 0x5f61, 0 }; +static const unichar_t str_2f3b[] = { 0x5f73, 0 }; +static const unichar_t str_2f3c[] = { 0x5fc3, 0 }; +static const unichar_t str_2f3d[] = { 0x6208, 0 }; +static const unichar_t str_2f3e[] = { 0x6236, 0 }; +static const unichar_t str_2f3f[] = { 0x624b, 0 }; +static const unichar_t str_2f40[] = { 0x652f, 0 }; +static const unichar_t str_2f41[] = { 0x6534, 0 }; +static const unichar_t str_2f42[] = { 0x6587, 0 }; +static const unichar_t str_2f43[] = { 0x6597, 0 }; +static const unichar_t str_2f44[] = { 0x65a4, 0 }; +static const unichar_t str_2f45[] = { 0x65b9, 0 }; +static const unichar_t str_2f46[] = { 0x65e0, 0 }; +static const unichar_t str_2f47[] = { 0x65e5, 0 }; +static const unichar_t str_2f48[] = { 0x66f0, 0 }; +static const unichar_t str_2f49[] = { 0x6708, 0 }; +static const unichar_t str_2f4a[] = { 0x6728, 0 }; +static const unichar_t str_2f4b[] = { 0x6b20, 0 }; +static const unichar_t str_2f4c[] = { 0x6b62, 0 }; +static const unichar_t str_2f4d[] = { 0x6b79, 0 }; +static const unichar_t str_2f4e[] = { 0x6bb3, 0 }; +static const unichar_t str_2f4f[] = { 0x6bcb, 0 }; +static const unichar_t str_2f50[] = { 0x6bd4, 0 }; +static const unichar_t str_2f51[] = { 0x6bdb, 0 }; +static const unichar_t str_2f52[] = { 0x6c0f, 0 }; +static const unichar_t str_2f53[] = { 0x6c14, 0 }; +static const unichar_t str_2f54[] = { 0x6c34, 0 }; +static const unichar_t str_2f55[] = { 0x706b, 0 }; +static const unichar_t str_2f56[] = { 0x722a, 0 }; +static const unichar_t str_2f57[] = { 0x7236, 0 }; +static const unichar_t str_2f58[] = { 0x723b, 0 }; +static const unichar_t str_2f59[] = { 0x723f, 0 }; +static const unichar_t str_2f5a[] = { 0x7247, 0 }; +static const unichar_t str_2f5b[] = { 0x7259, 0 }; +static const unichar_t str_2f5c[] = { 0x725b, 0 }; +static const unichar_t str_2f5d[] = { 0x72ac, 0 }; +static const unichar_t str_2f5e[] = { 0x7384, 0 }; +static const unichar_t str_2f5f[] = { 0x7389, 0 }; +static const unichar_t str_2f60[] = { 0x74dc, 0 }; +static const unichar_t str_2f61[] = { 0x74e6, 0 }; +static const unichar_t str_2f62[] = { 0x7518, 0 }; +static const unichar_t str_2f63[] = { 0x751f, 0 }; +static const unichar_t str_2f64[] = { 0x7528, 0 }; +static const unichar_t str_2f65[] = { 0x7530, 0 }; +static const unichar_t str_2f66[] = { 0x758b, 0 }; +static const unichar_t str_2f67[] = { 0x7592, 0 }; +static const unichar_t str_2f68[] = { 0x7676, 0 }; +static const unichar_t str_2f69[] = { 0x767d, 0 }; +static const unichar_t str_2f6a[] = { 0x76ae, 0 }; +static const unichar_t str_2f6b[] = { 0x76bf, 0 }; +static const unichar_t str_2f6c[] = { 0x76ee, 0 }; +static const unichar_t str_2f6d[] = { 0x77db, 0 }; +static const unichar_t str_2f6e[] = { 0x77e2, 0 }; +static const unichar_t str_2f6f[] = { 0x77f3, 0 }; +static const unichar_t str_2f70[] = { 0x793a, 0 }; +static const unichar_t str_2f71[] = { 0x79b8, 0 }; +static const unichar_t str_2f72[] = { 0x79be, 0 }; +static const unichar_t str_2f73[] = { 0x7a74, 0 }; +static const unichar_t str_2f74[] = { 0x7acb, 0 }; +static const unichar_t str_2f75[] = { 0x7af9, 0 }; +static const unichar_t str_2f76[] = { 0x7c73, 0 }; +static const unichar_t str_2f77[] = { 0x7cf8, 0 }; +static const unichar_t str_2f78[] = { 0x7f36, 0 }; +static const unichar_t str_2f79[] = { 0x7f51, 0 }; +static const unichar_t str_2f7a[] = { 0x7f8a, 0 }; +static const unichar_t str_2f7b[] = { 0x7fbd, 0 }; +static const unichar_t str_2f7c[] = { 0x8001, 0 }; +static const unichar_t str_2f7d[] = { 0x800c, 0 }; +static const unichar_t str_2f7e[] = { 0x8012, 0 }; +static const unichar_t str_2f7f[] = { 0x8033, 0 }; +static const unichar_t str_2f80[] = { 0x807f, 0 }; +static const unichar_t str_2f81[] = { 0x8089, 0 }; +static const unichar_t str_2f82[] = { 0x81e3, 0 }; +static const unichar_t str_2f83[] = { 0x81ea, 0 }; +static const unichar_t str_2f84[] = { 0x81f3, 0 }; +static const unichar_t str_2f85[] = { 0x81fc, 0 }; +static const unichar_t str_2f86[] = { 0x820c, 0 }; +static const unichar_t str_2f87[] = { 0x821b, 0 }; +static const unichar_t str_2f88[] = { 0x821f, 0 }; +static const unichar_t str_2f89[] = { 0x826e, 0 }; +static const unichar_t str_2f8a[] = { 0x8272, 0 }; +static const unichar_t str_2f8b[] = { 0x8278, 0 }; +static const unichar_t str_2f8c[] = { 0x864d, 0 }; +static const unichar_t str_2f8d[] = { 0x866b, 0 }; +static const unichar_t str_2f8e[] = { 0x8840, 0 }; +static const unichar_t str_2f8f[] = { 0x884c, 0 }; +static const unichar_t str_2f90[] = { 0x8863, 0 }; +static const unichar_t str_2f91[] = { 0x897e, 0 }; +static const unichar_t str_2f92[] = { 0x898b, 0 }; +static const unichar_t str_2f93[] = { 0x89d2, 0 }; +static const unichar_t str_2f94[] = { 0x8a00, 0 }; +static const unichar_t str_2f95[] = { 0x8c37, 0 }; +static const unichar_t str_2f96[] = { 0x8c46, 0 }; +static const unichar_t str_2f97[] = { 0x8c55, 0 }; +static const unichar_t str_2f98[] = { 0x8c78, 0 }; +static const unichar_t str_2f99[] = { 0x8c9d, 0 }; +static const unichar_t str_2f9a[] = { 0x8d64, 0 }; +static const unichar_t str_2f9b[] = { 0x8d70, 0 }; +static const unichar_t str_2f9c[] = { 0x8db3, 0 }; +static const unichar_t str_2f9d[] = { 0x8eab, 0 }; +static const unichar_t str_2f9e[] = { 0x8eca, 0 }; +static const unichar_t str_2f9f[] = { 0x8f9b, 0 }; +static const unichar_t str_2fa0[] = { 0x8fb0, 0 }; +static const unichar_t str_2fa1[] = { 0x8fb5, 0 }; +static const unichar_t str_2fa2[] = { 0x9091, 0 }; +static const unichar_t str_2fa3[] = { 0x9149, 0 }; +static const unichar_t str_2fa4[] = { 0x91c6, 0 }; +static const unichar_t str_2fa5[] = { 0x91cc, 0 }; +static const unichar_t str_2fa6[] = { 0x91d1, 0 }; +static const unichar_t str_2fa7[] = { 0x9577, 0 }; +static const unichar_t str_2fa8[] = { 0x9580, 0 }; +static const unichar_t str_2fa9[] = { 0x961c, 0 }; +static const unichar_t str_2faa[] = { 0x96b6, 0 }; +static const unichar_t str_2fab[] = { 0x96b9, 0 }; +static const unichar_t str_2fac[] = { 0x96e8, 0 }; +static const unichar_t str_2fad[] = { 0x9751, 0 }; +static const unichar_t str_2fae[] = { 0x975e, 0 }; +static const unichar_t str_2faf[] = { 0x9762, 0 }; +static const unichar_t str_2fb0[] = { 0x9769, 0 }; +static const unichar_t str_2fb1[] = { 0x97cb, 0 }; +static const unichar_t str_2fb2[] = { 0x97ed, 0 }; +static const unichar_t str_2fb3[] = { 0x97f3, 0 }; +static const unichar_t str_2fb4[] = { 0x9801, 0 }; +static const unichar_t str_2fb5[] = { 0x98a8, 0 }; +static const unichar_t str_2fb6[] = { 0x98db, 0 }; +static const unichar_t str_2fb7[] = { 0x98df, 0 }; +static const unichar_t str_2fb8[] = { 0x9996, 0 }; +static const unichar_t str_2fb9[] = { 0x9999, 0 }; +static const unichar_t str_2fba[] = { 0x99ac, 0 }; +static const unichar_t str_2fbb[] = { 0x9aa8, 0 }; +static const unichar_t str_2fbc[] = { 0x9ad8, 0 }; +static const unichar_t str_2fbd[] = { 0x9adf, 0 }; +static const unichar_t str_2fbe[] = { 0x9b25, 0 }; +static const unichar_t str_2fbf[] = { 0x9b2f, 0 }; +static const unichar_t str_2fc0[] = { 0x9b32, 0 }; +static const unichar_t str_2fc1[] = { 0x9b3c, 0 }; +static const unichar_t str_2fc2[] = { 0x9b5a, 0 }; +static const unichar_t str_2fc3[] = { 0x9ce5, 0 }; +static const unichar_t str_2fc4[] = { 0x9e75, 0 }; +static const unichar_t str_2fc5[] = { 0x9e7f, 0 }; +static const unichar_t str_2fc6[] = { 0x9ea5, 0 }; +static const unichar_t str_2fc7[] = { 0x9ebb, 0 }; +static const unichar_t str_2fc8[] = { 0x9ec3, 0 }; +static const unichar_t str_2fc9[] = { 0x9ecd, 0 }; +static const unichar_t str_2fca[] = { 0x9ed1, 0 }; +static const unichar_t str_2fcb[] = { 0x9ef9, 0 }; +static const unichar_t str_2fcc[] = { 0x9efd, 0 }; +static const unichar_t str_2fcd[] = { 0x9f0e, 0 }; +static const unichar_t str_2fce[] = { 0x9f13, 0 }; +static const unichar_t str_2fcf[] = { 0x9f20, 0 }; +static const unichar_t str_2fd0[] = { 0x9f3b, 0 }; +static const unichar_t str_2fd1[] = { 0x9f4a, 0 }; +static const unichar_t str_2fd2[] = { 0x9f52, 0 }; +static const unichar_t str_2fd3[] = { 0x9f8d, 0 }; +static const unichar_t str_2fd4[] = { 0x9f9c, 0 }; +static const unichar_t str_2fd5[] = { 0x9fa0, 0 }; +static const unichar_t str_3000[] = { 0x0020, 0 }; +static const unichar_t str_3001[] = { 0x002c, 0 }; +static const unichar_t str_3008[] = { 0x003c, 0 }; +static const unichar_t str_3009[] = { 0x003e, 0 }; +static const unichar_t str_300a[] = { 0x00ab, 0 }; +static const unichar_t str_300b[] = { 0x00bb, 0 }; +static const unichar_t str_3036[] = { 0x3012, 0 }; +static const unichar_t str_3038[] = { 0x5341, 0 }; +static const unichar_t str_3039[] = { 0x5344, 0 }; +static const unichar_t str_303a[] = { 0x5345, 0 }; +static const unichar_t str_304c[] = { 0x304b, 0x3099, 0 }; +static const unichar_t str_304e[] = { 0x304d, 0x3099, 0 }; +static const unichar_t str_3050[] = { 0x304f, 0x3099, 0 }; +static const unichar_t str_3052[] = { 0x3051, 0x3099, 0 }; +static const unichar_t str_3054[] = { 0x3053, 0x3099, 0 }; +static const unichar_t str_3056[] = { 0x3055, 0x3099, 0 }; +static const unichar_t str_3058[] = { 0x3057, 0x3099, 0 }; +static const unichar_t str_305a[] = { 0x3059, 0x3099, 0 }; +static const unichar_t str_305c[] = { 0x305b, 0x3099, 0 }; +static const unichar_t str_305e[] = { 0x305d, 0x3099, 0 }; +static const unichar_t str_3060[] = { 0x305f, 0x3099, 0 }; +static const unichar_t str_3062[] = { 0x3061, 0x3099, 0 }; +static const unichar_t str_3065[] = { 0x3064, 0x3099, 0 }; +static const unichar_t str_3067[] = { 0x3066, 0x3099, 0 }; +static const unichar_t str_3069[] = { 0x3068, 0x3099, 0 }; +static const unichar_t str_3070[] = { 0x306f, 0x3099, 0 }; +static const unichar_t str_3071[] = { 0x306f, 0x309a, 0 }; +static const unichar_t str_3073[] = { 0x3072, 0x3099, 0 }; +static const unichar_t str_3074[] = { 0x3072, 0x309a, 0 }; +static const unichar_t str_3076[] = { 0x3075, 0x3099, 0 }; +static const unichar_t str_3077[] = { 0x3075, 0x309a, 0 }; +static const unichar_t str_3079[] = { 0x3078, 0x3099, 0 }; +static const unichar_t str_307a[] = { 0x3078, 0x309a, 0 }; +static const unichar_t str_307c[] = { 0x307b, 0x3099, 0 }; +static const unichar_t str_307d[] = { 0x307b, 0x309a, 0 }; +static const unichar_t str_3094[] = { 0x3046, 0x3099, 0 }; +static const unichar_t str_309b[] = { 0x0020, 0x3099, 0 }; +static const unichar_t str_309c[] = { 0x0020, 0x309a, 0 }; +static const unichar_t str_309e[] = { 0x309d, 0x3099, 0 }; +static const unichar_t str_309f[] = { 0x3088, 0x308a, 0 }; +static const unichar_t str_30ac[] = { 0x30ab, 0x3099, 0 }; +static const unichar_t str_30ae[] = { 0x30ad, 0x3099, 0 }; +static const unichar_t str_30b0[] = { 0x30af, 0x3099, 0 }; +static const unichar_t str_30b2[] = { 0x30b1, 0x3099, 0 }; +static const unichar_t str_30b4[] = { 0x30b3, 0x3099, 0 }; +static const unichar_t str_30b6[] = { 0x30b5, 0x3099, 0 }; +static const unichar_t str_30b8[] = { 0x30b7, 0x3099, 0 }; +static const unichar_t str_30ba[] = { 0x30b9, 0x3099, 0 }; +static const unichar_t str_30bc[] = { 0x30bb, 0x3099, 0 }; +static const unichar_t str_30be[] = { 0x30bd, 0x3099, 0 }; +static const unichar_t str_30c0[] = { 0x30bf, 0x3099, 0 }; +static const unichar_t str_30c2[] = { 0x30c1, 0x3099, 0 }; +static const unichar_t str_30c5[] = { 0x30c4, 0x3099, 0 }; +static const unichar_t str_30c7[] = { 0x30c6, 0x3099, 0 }; +static const unichar_t str_30c9[] = { 0x30c8, 0x3099, 0 }; +static const unichar_t str_30d0[] = { 0x30cf, 0x3099, 0 }; +static const unichar_t str_30d1[] = { 0x30cf, 0x309a, 0 }; +static const unichar_t str_30d3[] = { 0x30d2, 0x3099, 0 }; +static const unichar_t str_30d4[] = { 0x30d2, 0x309a, 0 }; +static const unichar_t str_30d6[] = { 0x30d5, 0x3099, 0 }; +static const unichar_t str_30d7[] = { 0x30d5, 0x309a, 0 }; +static const unichar_t str_30d9[] = { 0x30d8, 0x3099, 0 }; +static const unichar_t str_30da[] = { 0x30d8, 0x309a, 0 }; +static const unichar_t str_30dc[] = { 0x30db, 0x3099, 0 }; +static const unichar_t str_30dd[] = { 0x30db, 0x309a, 0 }; +static const unichar_t str_30f4[] = { 0x30a6, 0x3099, 0 }; +static const unichar_t str_30f7[] = { 0x30ef, 0x3099, 0 }; +static const unichar_t str_30f8[] = { 0x30f0, 0x3099, 0 }; +static const unichar_t str_30f9[] = { 0x30f1, 0x3099, 0 }; +static const unichar_t str_30fa[] = { 0x30f2, 0x3099, 0 }; +static const unichar_t str_30fe[] = { 0x30fd, 0x3099, 0 }; +static const unichar_t str_30ff[] = { 0x30b3, 0x30c8, 0 }; +static const unichar_t str_3131[] = { 0x1100, 0 }; +static const unichar_t str_3132[] = { 0x1101, 0 }; +static const unichar_t str_3133[] = { 0x11aa, 0 }; +static const unichar_t str_3134[] = { 0x1102, 0 }; +static const unichar_t str_3135[] = { 0x11ac, 0 }; +static const unichar_t str_3136[] = { 0x11ad, 0 }; +static const unichar_t str_3137[] = { 0x1103, 0 }; +static const unichar_t str_3138[] = { 0x1104, 0 }; +static const unichar_t str_3139[] = { 0x1105, 0 }; +static const unichar_t str_313a[] = { 0x11b0, 0 }; +static const unichar_t str_313b[] = { 0x11b1, 0 }; +static const unichar_t str_313c[] = { 0x11b2, 0 }; +static const unichar_t str_313d[] = { 0x11b3, 0 }; +static const unichar_t str_313e[] = { 0x11b4, 0 }; +static const unichar_t str_313f[] = { 0x11b5, 0 }; +static const unichar_t str_3140[] = { 0x111a, 0 }; +static const unichar_t str_3141[] = { 0x1106, 0 }; +static const unichar_t str_3142[] = { 0x1107, 0 }; +static const unichar_t str_3143[] = { 0x1108, 0 }; +static const unichar_t str_3144[] = { 0x1121, 0 }; +static const unichar_t str_3145[] = { 0x1109, 0 }; +static const unichar_t str_3146[] = { 0x110a, 0 }; +static const unichar_t str_3147[] = { 0x110b, 0 }; +static const unichar_t str_3148[] = { 0x110c, 0 }; +static const unichar_t str_3149[] = { 0x110d, 0 }; +static const unichar_t str_314a[] = { 0x110e, 0 }; +static const unichar_t str_314b[] = { 0x110f, 0 }; +static const unichar_t str_314c[] = { 0x1110, 0 }; +static const unichar_t str_314d[] = { 0x1111, 0 }; +static const unichar_t str_314e[] = { 0x1112, 0 }; +static const unichar_t str_314f[] = { 0x1161, 0 }; +static const unichar_t str_3150[] = { 0x1162, 0 }; +static const unichar_t str_3151[] = { 0x1163, 0 }; +static const unichar_t str_3152[] = { 0x1164, 0 }; +static const unichar_t str_3153[] = { 0x1165, 0 }; +static const unichar_t str_3154[] = { 0x1166, 0 }; +static const unichar_t str_3155[] = { 0x1167, 0 }; +static const unichar_t str_3156[] = { 0x1168, 0 }; +static const unichar_t str_3157[] = { 0x1169, 0 }; +static const unichar_t str_3158[] = { 0x116a, 0 }; +static const unichar_t str_3159[] = { 0x116b, 0 }; +static const unichar_t str_315a[] = { 0x116c, 0 }; +static const unichar_t str_315b[] = { 0x116d, 0 }; +static const unichar_t str_315c[] = { 0x116e, 0 }; +static const unichar_t str_315d[] = { 0x116f, 0 }; +static const unichar_t str_315e[] = { 0x1170, 0 }; +static const unichar_t str_315f[] = { 0x1171, 0 }; +static const unichar_t str_3160[] = { 0x1172, 0 }; +static const unichar_t str_3161[] = { 0x1173, 0 }; +static const unichar_t str_3162[] = { 0x1174, 0 }; +static const unichar_t str_3163[] = { 0x1175, 0 }; +static const unichar_t str_3164[] = { 0x1160, 0 }; +static const unichar_t str_3165[] = { 0x1114, 0 }; +static const unichar_t str_3166[] = { 0x1115, 0 }; +static const unichar_t str_3167[] = { 0x11c7, 0 }; +static const unichar_t str_3168[] = { 0x11c8, 0 }; +static const unichar_t str_3169[] = { 0x11cc, 0 }; +static const unichar_t str_316a[] = { 0x11ce, 0 }; +static const unichar_t str_316b[] = { 0x11d3, 0 }; +static const unichar_t str_316c[] = { 0x11d7, 0 }; +static const unichar_t str_316d[] = { 0x11d9, 0 }; +static const unichar_t str_316e[] = { 0x111c, 0 }; +static const unichar_t str_316f[] = { 0x11dd, 0 }; +static const unichar_t str_3170[] = { 0x11df, 0 }; +static const unichar_t str_3171[] = { 0x111d, 0 }; +static const unichar_t str_3172[] = { 0x111e, 0 }; +static const unichar_t str_3173[] = { 0x1120, 0 }; +static const unichar_t str_3174[] = { 0x1122, 0 }; +static const unichar_t str_3175[] = { 0x1123, 0 }; +static const unichar_t str_3176[] = { 0x1127, 0 }; +static const unichar_t str_3177[] = { 0x1129, 0 }; +static const unichar_t str_3178[] = { 0x112b, 0 }; +static const unichar_t str_3179[] = { 0x112c, 0 }; +static const unichar_t str_317a[] = { 0x112d, 0 }; +static const unichar_t str_317b[] = { 0x112e, 0 }; +static const unichar_t str_317c[] = { 0x112f, 0 }; +static const unichar_t str_317d[] = { 0x1132, 0 }; +static const unichar_t str_317e[] = { 0x1136, 0 }; +static const unichar_t str_317f[] = { 0x1140, 0 }; +static const unichar_t str_3180[] = { 0x1147, 0 }; +static const unichar_t str_3181[] = { 0x114c, 0 }; +static const unichar_t str_3182[] = { 0x11f1, 0 }; +static const unichar_t str_3183[] = { 0x11f2, 0 }; +static const unichar_t str_3184[] = { 0x1157, 0 }; +static const unichar_t str_3185[] = { 0x1158, 0 }; +static const unichar_t str_3186[] = { 0x1159, 0 }; +static const unichar_t str_3187[] = { 0x1184, 0 }; +static const unichar_t str_3188[] = { 0x1185, 0 }; +static const unichar_t str_3189[] = { 0x1188, 0 }; +static const unichar_t str_318a[] = { 0x1191, 0 }; +static const unichar_t str_318b[] = { 0x1192, 0 }; +static const unichar_t str_318c[] = { 0x1194, 0 }; +static const unichar_t str_318d[] = { 0x119e, 0 }; +static const unichar_t str_318e[] = { 0x11a1, 0 }; +static const unichar_t str_3192[] = { 0x4e00, 0 }; +static const unichar_t str_3193[] = { 0x4e8c, 0 }; +static const unichar_t str_3194[] = { 0x4e09, 0 }; +static const unichar_t str_3195[] = { 0x56db, 0 }; +static const unichar_t str_3196[] = { 0x4e0a, 0 }; +static const unichar_t str_3197[] = { 0x4e2d, 0 }; +static const unichar_t str_3198[] = { 0x4e0b, 0 }; +static const unichar_t str_3199[] = { 0x7532, 0 }; +static const unichar_t str_319a[] = { 0x4e59, 0 }; +static const unichar_t str_319b[] = { 0x4e19, 0 }; +static const unichar_t str_319c[] = { 0x4e01, 0 }; +static const unichar_t str_319d[] = { 0x5929, 0 }; +static const unichar_t str_319e[] = { 0x5730, 0 }; +static const unichar_t str_319f[] = { 0x4eba, 0 }; +static const unichar_t str_3200[] = { 0x0028, 0x1100, 0x0029, 0 }; +static const unichar_t str_3201[] = { 0x0028, 0x1102, 0x0029, 0 }; +static const unichar_t str_3202[] = { 0x0028, 0x1103, 0x0029, 0 }; +static const unichar_t str_3203[] = { 0x0028, 0x1105, 0x0029, 0 }; +static const unichar_t str_3204[] = { 0x0028, 0x1106, 0x0029, 0 }; +static const unichar_t str_3205[] = { 0x0028, 0x1107, 0x0029, 0 }; +static const unichar_t str_3206[] = { 0x0028, 0x1109, 0x0029, 0 }; +static const unichar_t str_3207[] = { 0x0028, 0x110b, 0x0029, 0 }; +static const unichar_t str_3208[] = { 0x0028, 0x110c, 0x0029, 0 }; +static const unichar_t str_3209[] = { 0x0028, 0x110e, 0x0029, 0 }; +static const unichar_t str_320a[] = { 0x0028, 0x110f, 0x0029, 0 }; +static const unichar_t str_320b[] = { 0x0028, 0x1110, 0x0029, 0 }; +static const unichar_t str_320c[] = { 0x0028, 0x1111, 0x0029, 0 }; +static const unichar_t str_320d[] = { 0x0028, 0x1112, 0x0029, 0 }; +static const unichar_t str_320e[] = { 0x0028, 0x1100, 0x1161, 0x0029, 0 }; +static const unichar_t str_320f[] = { 0x0028, 0x1102, 0x1161, 0x0029, 0 }; +static const unichar_t str_3210[] = { 0x0028, 0x1103, 0x1161, 0x0029, 0 }; +static const unichar_t str_3211[] = { 0x0028, 0x1105, 0x1161, 0x0029, 0 }; +static const unichar_t str_3212[] = { 0x0028, 0x1106, 0x1161, 0x0029, 0 }; +static const unichar_t str_3213[] = { 0x0028, 0x1107, 0x1161, 0x0029, 0 }; +static const unichar_t str_3214[] = { 0x0028, 0x1109, 0x1161, 0x0029, 0 }; +static const unichar_t str_3215[] = { 0x0028, 0x110b, 0x1161, 0x0029, 0 }; +static const unichar_t str_3216[] = { 0x0028, 0x110c, 0x1161, 0x0029, 0 }; +static const unichar_t str_3217[] = { 0x0028, 0x110e, 0x1161, 0x0029, 0 }; +static const unichar_t str_3218[] = { 0x0028, 0x110f, 0x1161, 0x0029, 0 }; +static const unichar_t str_3219[] = { 0x0028, 0x1110, 0x1161, 0x0029, 0 }; +static const unichar_t str_321a[] = { 0x0028, 0x1111, 0x1161, 0x0029, 0 }; +static const unichar_t str_321b[] = { 0x0028, 0x1112, 0x1161, 0x0029, 0 }; +static const unichar_t str_321c[] = { 0x0028, 0x110c, 0x116e, 0x0029, 0 }; +static const unichar_t str_321d[] = { 0x0028, 0x110b, 0x1169, 0x110c, 0x1165, 0x11ab, 0x0029, 0 }; +static const unichar_t str_321e[] = { 0x0028, 0x110b, 0x1169, 0x1112, 0x116e, 0x0029, 0 }; +static const unichar_t str_3220[] = { 0x0028, 0x4e00, 0x0029, 0 }; +static const unichar_t str_3221[] = { 0x0028, 0x4e8c, 0x0029, 0 }; +static const unichar_t str_3222[] = { 0x0028, 0x4e09, 0x0029, 0 }; +static const unichar_t str_3223[] = { 0x0028, 0x56db, 0x0029, 0 }; +static const unichar_t str_3224[] = { 0x0028, 0x4e94, 0x0029, 0 }; +static const unichar_t str_3225[] = { 0x0028, 0x516d, 0x0029, 0 }; +static const unichar_t str_3226[] = { 0x0028, 0x4e03, 0x0029, 0 }; +static const unichar_t str_3227[] = { 0x0028, 0x516b, 0x0029, 0 }; +static const unichar_t str_3228[] = { 0x0028, 0x4e5d, 0x0029, 0 }; +static const unichar_t str_3229[] = { 0x0028, 0x5341, 0x0029, 0 }; +static const unichar_t str_322a[] = { 0x0028, 0x6708, 0x0029, 0 }; +static const unichar_t str_322b[] = { 0x0028, 0x706b, 0x0029, 0 }; +static const unichar_t str_322c[] = { 0x0028, 0x6c34, 0x0029, 0 }; +static const unichar_t str_322d[] = { 0x0028, 0x6728, 0x0029, 0 }; +static const unichar_t str_322e[] = { 0x0028, 0x91d1, 0x0029, 0 }; +static const unichar_t str_322f[] = { 0x0028, 0x571f, 0x0029, 0 }; +static const unichar_t str_3230[] = { 0x0028, 0x65e5, 0x0029, 0 }; +static const unichar_t str_3231[] = { 0x0028, 0x682a, 0x0029, 0 }; +static const unichar_t str_3232[] = { 0x0028, 0x6709, 0x0029, 0 }; +static const unichar_t str_3233[] = { 0x0028, 0x793e, 0x0029, 0 }; +static const unichar_t str_3234[] = { 0x0028, 0x540d, 0x0029, 0 }; +static const unichar_t str_3235[] = { 0x0028, 0x7279, 0x0029, 0 }; +static const unichar_t str_3236[] = { 0x0028, 0x8ca1, 0x0029, 0 }; +static const unichar_t str_3237[] = { 0x0028, 0x795d, 0x0029, 0 }; +static const unichar_t str_3238[] = { 0x0028, 0x52b4, 0x0029, 0 }; +static const unichar_t str_3239[] = { 0x0028, 0x4ee3, 0x0029, 0 }; +static const unichar_t str_323a[] = { 0x0028, 0x547c, 0x0029, 0 }; +static const unichar_t str_323b[] = { 0x0028, 0x5b66, 0x0029, 0 }; +static const unichar_t str_323c[] = { 0x0028, 0x76e3, 0x0029, 0 }; +static const unichar_t str_323d[] = { 0x0028, 0x4f01, 0x0029, 0 }; +static const unichar_t str_323e[] = { 0x0028, 0x8cc7, 0x0029, 0 }; +static const unichar_t str_323f[] = { 0x0028, 0x5354, 0x0029, 0 }; +static const unichar_t str_3240[] = { 0x0028, 0x796d, 0x0029, 0 }; +static const unichar_t str_3241[] = { 0x0028, 0x4f11, 0x0029, 0 }; +static const unichar_t str_3242[] = { 0x0028, 0x81ea, 0x0029, 0 }; +static const unichar_t str_3243[] = { 0x0028, 0x81f3, 0x0029, 0 }; +static const unichar_t str_3250[] = { 0x0050, 0x0054, 0x0045, 0 }; +static const unichar_t str_3251[] = { 0x0032, 0x0031, 0x20dd, 0 }; +static const unichar_t str_3252[] = { 0x0032, 0x0032, 0x20dd, 0 }; +static const unichar_t str_3253[] = { 0x0032, 0x0033, 0x20dd, 0 }; +static const unichar_t str_3254[] = { 0x0032, 0x0034, 0x20dd, 0 }; +static const unichar_t str_3255[] = { 0x0032, 0x0035, 0x20dd, 0 }; +static const unichar_t str_3256[] = { 0x0032, 0x0036, 0x20dd, 0 }; +static const unichar_t str_3257[] = { 0x0032, 0x0037, 0x20dd, 0 }; +static const unichar_t str_3258[] = { 0x0032, 0x0038, 0x20dd, 0 }; +static const unichar_t str_3259[] = { 0x0032, 0x0039, 0x20dd, 0 }; +static const unichar_t str_325a[] = { 0x0033, 0x0030, 0x20dd, 0 }; +static const unichar_t str_325b[] = { 0x0033, 0x0031, 0x20dd, 0 }; +static const unichar_t str_325c[] = { 0x0033, 0x0032, 0x20dd, 0 }; +static const unichar_t str_325d[] = { 0x0033, 0x0033, 0x20dd, 0 }; +static const unichar_t str_325e[] = { 0x0033, 0x0034, 0x20dd, 0 }; +static const unichar_t str_325f[] = { 0x0033, 0x0035, 0x20dd, 0 }; +static const unichar_t str_3260[] = { 0x1100, 0x20dd, 0 }; +static const unichar_t str_3261[] = { 0x1102, 0x20dd, 0 }; +static const unichar_t str_3262[] = { 0x1103, 0x20dd, 0 }; +static const unichar_t str_3263[] = { 0x1105, 0x20dd, 0 }; +static const unichar_t str_3264[] = { 0x1106, 0x20dd, 0 }; +static const unichar_t str_3265[] = { 0x1107, 0x20dd, 0 }; +static const unichar_t str_3266[] = { 0x1109, 0x20dd, 0 }; +static const unichar_t str_3267[] = { 0x110b, 0x20dd, 0 }; +static const unichar_t str_3268[] = { 0x110c, 0x20dd, 0 }; +static const unichar_t str_3269[] = { 0x110e, 0x20dd, 0 }; +static const unichar_t str_326a[] = { 0x110f, 0x20dd, 0 }; +static const unichar_t str_326b[] = { 0x1110, 0x20dd, 0 }; +static const unichar_t str_326c[] = { 0x1111, 0x20dd, 0 }; +static const unichar_t str_326d[] = { 0x1112, 0x20dd, 0 }; +static const unichar_t str_326e[] = { 0x1100, 0x1161, 0x20dd, 0 }; +static const unichar_t str_326f[] = { 0x1102, 0x1161, 0x20dd, 0 }; +static const unichar_t str_3270[] = { 0x1103, 0x1161, 0x20dd, 0 }; +static const unichar_t str_3271[] = { 0x1105, 0x1161, 0x20dd, 0 }; +static const unichar_t str_3272[] = { 0x1106, 0x1161, 0x20dd, 0 }; +static const unichar_t str_3273[] = { 0x1107, 0x1161, 0x20dd, 0 }; +static const unichar_t str_3274[] = { 0x1109, 0x1161, 0x20dd, 0 }; +static const unichar_t str_3275[] = { 0x110b, 0x1161, 0x20dd, 0 }; +static const unichar_t str_3276[] = { 0x110c, 0x1161, 0x20dd, 0 }; +static const unichar_t str_3277[] = { 0x110e, 0x1161, 0x20dd, 0 }; +static const unichar_t str_3278[] = { 0x110f, 0x1161, 0x20dd, 0 }; +static const unichar_t str_3279[] = { 0x1110, 0x1161, 0x20dd, 0 }; +static const unichar_t str_327a[] = { 0x1111, 0x1161, 0x20dd, 0 }; +static const unichar_t str_327b[] = { 0x1112, 0x1161, 0x20dd, 0 }; +static const unichar_t str_327c[] = { 0x110e, 0x1161, 0x11b7, 0x1100, 0x1169, 0x20dd, 0 }; +static const unichar_t str_327d[] = { 0x110c, 0x116e, 0x110b, 0x1174, 0x20dd, 0 }; +static const unichar_t str_327e[] = { 0x110b, 0x116e, 0x20dd, 0 }; +static const unichar_t str_3280[] = { 0x4e00, 0x20dd, 0 }; +static const unichar_t str_3281[] = { 0x4e8c, 0x20dd, 0 }; +static const unichar_t str_3282[] = { 0x4e09, 0x20dd, 0 }; +static const unichar_t str_3283[] = { 0x56db, 0x20dd, 0 }; +static const unichar_t str_3284[] = { 0x4e94, 0x20dd, 0 }; +static const unichar_t str_3285[] = { 0x516d, 0x20dd, 0 }; +static const unichar_t str_3286[] = { 0x4e03, 0x20dd, 0 }; +static const unichar_t str_3287[] = { 0x516b, 0x20dd, 0 }; +static const unichar_t str_3288[] = { 0x4e5d, 0x20dd, 0 }; +static const unichar_t str_3289[] = { 0x5341, 0x20dd, 0 }; +static const unichar_t str_328a[] = { 0x6708, 0x20dd, 0 }; +static const unichar_t str_328b[] = { 0x706b, 0x20dd, 0 }; +static const unichar_t str_328c[] = { 0x6c34, 0x20dd, 0 }; +static const unichar_t str_328d[] = { 0x6728, 0x20dd, 0 }; +static const unichar_t str_328e[] = { 0x91d1, 0x20dd, 0 }; +static const unichar_t str_328f[] = { 0x571f, 0x20dd, 0 }; +static const unichar_t str_3290[] = { 0x65e5, 0x20dd, 0 }; +static const unichar_t str_3291[] = { 0x682a, 0x20dd, 0 }; +static const unichar_t str_3292[] = { 0x6709, 0x20dd, 0 }; +static const unichar_t str_3293[] = { 0x793e, 0x20dd, 0 }; +static const unichar_t str_3294[] = { 0x540d, 0x20dd, 0 }; +static const unichar_t str_3295[] = { 0x7279, 0x20dd, 0 }; +static const unichar_t str_3296[] = { 0x8ca1, 0x20dd, 0 }; +static const unichar_t str_3297[] = { 0x795d, 0x20dd, 0 }; +static const unichar_t str_3298[] = { 0x52b4, 0x20dd, 0 }; +static const unichar_t str_3299[] = { 0x79d8, 0x20dd, 0 }; +static const unichar_t str_329a[] = { 0x7537, 0x20dd, 0 }; +static const unichar_t str_329b[] = { 0x5973, 0x20dd, 0 }; +static const unichar_t str_329c[] = { 0x9069, 0x20dd, 0 }; +static const unichar_t str_329d[] = { 0x512a, 0x20dd, 0 }; +static const unichar_t str_329e[] = { 0x5370, 0x20dd, 0 }; +static const unichar_t str_329f[] = { 0x6ce8, 0x20dd, 0 }; +static const unichar_t str_32a0[] = { 0x9805, 0x20dd, 0 }; +static const unichar_t str_32a1[] = { 0x4f11, 0x20dd, 0 }; +static const unichar_t str_32a2[] = { 0x5199, 0x20dd, 0 }; +static const unichar_t str_32a3[] = { 0x6b63, 0x20dd, 0 }; +static const unichar_t str_32a4[] = { 0x4e0a, 0x20dd, 0 }; +static const unichar_t str_32a5[] = { 0x4e2d, 0x20dd, 0 }; +static const unichar_t str_32a6[] = { 0x4e0b, 0x20dd, 0 }; +static const unichar_t str_32a7[] = { 0x5de6, 0x20dd, 0 }; +static const unichar_t str_32a8[] = { 0x53f3, 0x20dd, 0 }; +static const unichar_t str_32a9[] = { 0x533b, 0x20dd, 0 }; +static const unichar_t str_32aa[] = { 0x5b97, 0x20dd, 0 }; +static const unichar_t str_32ab[] = { 0x5b66, 0x20dd, 0 }; +static const unichar_t str_32ac[] = { 0x76e3, 0x20dd, 0 }; +static const unichar_t str_32ad[] = { 0x4f01, 0x20dd, 0 }; +static const unichar_t str_32ae[] = { 0x8cc7, 0x20dd, 0 }; +static const unichar_t str_32af[] = { 0x5354, 0x20dd, 0 }; +static const unichar_t str_32b0[] = { 0x591c, 0x20dd, 0 }; +static const unichar_t str_32b1[] = { 0x0033, 0x0036, 0x20dd, 0 }; +static const unichar_t str_32b2[] = { 0x0033, 0x0037, 0x20dd, 0 }; +static const unichar_t str_32b3[] = { 0x0033, 0x0038, 0x20dd, 0 }; +static const unichar_t str_32b4[] = { 0x0033, 0x0039, 0x20dd, 0 }; +static const unichar_t str_32b5[] = { 0x0034, 0x0030, 0x20dd, 0 }; +static const unichar_t str_32b6[] = { 0x0034, 0x0031, 0x20dd, 0 }; +static const unichar_t str_32b7[] = { 0x0034, 0x0032, 0x20dd, 0 }; +static const unichar_t str_32b8[] = { 0x0034, 0x0033, 0x20dd, 0 }; +static const unichar_t str_32b9[] = { 0x0034, 0x0034, 0x20dd, 0 }; +static const unichar_t str_32ba[] = { 0x0034, 0x0035, 0x20dd, 0 }; +static const unichar_t str_32bb[] = { 0x0034, 0x0036, 0x20dd, 0 }; +static const unichar_t str_32bc[] = { 0x0034, 0x0037, 0x20dd, 0 }; +static const unichar_t str_32bd[] = { 0x0034, 0x0038, 0x20dd, 0 }; +static const unichar_t str_32be[] = { 0x0034, 0x0039, 0x20dd, 0 }; +static const unichar_t str_32bf[] = { 0x0035, 0x0030, 0x20dd, 0 }; +static const unichar_t str_32c0[] = { 0x0031, 0x6708, 0 }; +static const unichar_t str_32c1[] = { 0x0032, 0x6708, 0 }; +static const unichar_t str_32c2[] = { 0x0033, 0x6708, 0 }; +static const unichar_t str_32c3[] = { 0x0034, 0x6708, 0 }; +static const unichar_t str_32c4[] = { 0x0035, 0x6708, 0 }; +static const unichar_t str_32c5[] = { 0x0036, 0x6708, 0 }; +static const unichar_t str_32c6[] = { 0x0037, 0x6708, 0 }; +static const unichar_t str_32c7[] = { 0x0038, 0x6708, 0 }; +static const unichar_t str_32c8[] = { 0x0039, 0x6708, 0 }; +static const unichar_t str_32c9[] = { 0x0031, 0x0030, 0x6708, 0 }; +static const unichar_t str_32ca[] = { 0x0031, 0x0031, 0x6708, 0 }; +static const unichar_t str_32cb[] = { 0x0031, 0x0032, 0x6708, 0 }; +static const unichar_t str_32cc[] = { 0x0048, 0x0067, 0 }; +static const unichar_t str_32cd[] = { 0x0065, 0x0072, 0x0067, 0 }; +static const unichar_t str_32ce[] = { 0x0065, 0x0056, 0 }; +static const unichar_t str_32cf[] = { 0x004c, 0x0054, 0x0044, 0 }; +static const unichar_t str_32d0[] = { 0x30a2, 0x20dd, 0 }; +static const unichar_t str_32d1[] = { 0x30a4, 0x20dd, 0 }; +static const unichar_t str_32d2[] = { 0x30a6, 0x20dd, 0 }; +static const unichar_t str_32d3[] = { 0x30a8, 0x20dd, 0 }; +static const unichar_t str_32d4[] = { 0x30aa, 0x20dd, 0 }; +static const unichar_t str_32d5[] = { 0x30ab, 0x20dd, 0 }; +static const unichar_t str_32d6[] = { 0x30ad, 0x20dd, 0 }; +static const unichar_t str_32d7[] = { 0x30af, 0x20dd, 0 }; +static const unichar_t str_32d8[] = { 0x30b1, 0x20dd, 0 }; +static const unichar_t str_32d9[] = { 0x30b3, 0x20dd, 0 }; +static const unichar_t str_32da[] = { 0x30b5, 0x20dd, 0 }; +static const unichar_t str_32db[] = { 0x30b7, 0x20dd, 0 }; +static const unichar_t str_32dc[] = { 0x30b9, 0x20dd, 0 }; +static const unichar_t str_32dd[] = { 0x30bb, 0x20dd, 0 }; +static const unichar_t str_32de[] = { 0x30bd, 0x20dd, 0 }; +static const unichar_t str_32df[] = { 0x30bf, 0x20dd, 0 }; +static const unichar_t str_32e0[] = { 0x30c1, 0x20dd, 0 }; +static const unichar_t str_32e1[] = { 0x30c4, 0x20dd, 0 }; +static const unichar_t str_32e2[] = { 0x30c6, 0x20dd, 0 }; +static const unichar_t str_32e3[] = { 0x30c8, 0x20dd, 0 }; +static const unichar_t str_32e4[] = { 0x30ca, 0x20dd, 0 }; +static const unichar_t str_32e5[] = { 0x30cb, 0x20dd, 0 }; +static const unichar_t str_32e6[] = { 0x30cc, 0x20dd, 0 }; +static const unichar_t str_32e7[] = { 0x30cd, 0x20dd, 0 }; +static const unichar_t str_32e8[] = { 0x30ce, 0x20dd, 0 }; +static const unichar_t str_32e9[] = { 0x30cf, 0x20dd, 0 }; +static const unichar_t str_32ea[] = { 0x30d2, 0x20dd, 0 }; +static const unichar_t str_32eb[] = { 0x30d5, 0x20dd, 0 }; +static const unichar_t str_32ec[] = { 0x30d8, 0x20dd, 0 }; +static const unichar_t str_32ed[] = { 0x30db, 0x20dd, 0 }; +static const unichar_t str_32ee[] = { 0x30de, 0x20dd, 0 }; +static const unichar_t str_32ef[] = { 0x30df, 0x20dd, 0 }; +static const unichar_t str_32f0[] = { 0x30e0, 0x20dd, 0 }; +static const unichar_t str_32f1[] = { 0x30e1, 0x20dd, 0 }; +static const unichar_t str_32f2[] = { 0x30e2, 0x20dd, 0 }; +static const unichar_t str_32f3[] = { 0x30e4, 0x20dd, 0 }; +static const unichar_t str_32f4[] = { 0x30e6, 0x20dd, 0 }; +static const unichar_t str_32f5[] = { 0x30e8, 0x20dd, 0 }; +static const unichar_t str_32f6[] = { 0x30e9, 0x20dd, 0 }; +static const unichar_t str_32f7[] = { 0x30ea, 0x20dd, 0 }; +static const unichar_t str_32f8[] = { 0x30eb, 0x20dd, 0 }; +static const unichar_t str_32f9[] = { 0x30ec, 0x20dd, 0 }; +static const unichar_t str_32fa[] = { 0x30ed, 0x20dd, 0 }; +static const unichar_t str_32fb[] = { 0x30ef, 0x20dd, 0 }; +static const unichar_t str_32fc[] = { 0x30f0, 0x20dd, 0 }; +static const unichar_t str_32fd[] = { 0x30f1, 0x20dd, 0 }; +static const unichar_t str_32fe[] = { 0x30f2, 0x20dd, 0 }; +static const unichar_t str_3300[] = { 0x30a2, 0x30d1, 0x30fc, 0x30c8, 0 }; +static const unichar_t str_3301[] = { 0x30a2, 0x30eb, 0x30d5, 0x30a1, 0 }; +static const unichar_t str_3302[] = { 0x30a2, 0x30f3, 0x30da, 0x30a2, 0 }; +static const unichar_t str_3303[] = { 0x30a2, 0x30fc, 0x30eb, 0 }; +static const unichar_t str_3304[] = { 0x30a4, 0x30cb, 0x30f3, 0x30b0, 0 }; +static const unichar_t str_3305[] = { 0x30a4, 0x30f3, 0x30c1, 0 }; +static const unichar_t str_3306[] = { 0x30a6, 0x30a9, 0x30f3, 0 }; +static const unichar_t str_3307[] = { 0x30a8, 0x30b9, 0x30af, 0x30fc, 0x30c9, 0 }; +static const unichar_t str_3308[] = { 0x30a8, 0x30fc, 0x30ab, 0x30fc, 0 }; +static const unichar_t str_3309[] = { 0x30aa, 0x30f3, 0x30b9, 0 }; +static const unichar_t str_330a[] = { 0x30aa, 0x30fc, 0x30e0, 0 }; +static const unichar_t str_330b[] = { 0x30ab, 0x30a4, 0x30ea, 0 }; +static const unichar_t str_330c[] = { 0x30ab, 0x30e9, 0x30c3, 0x30c8, 0 }; +static const unichar_t str_330d[] = { 0x30ab, 0x30ed, 0x30ea, 0x30fc, 0 }; +static const unichar_t str_330e[] = { 0x30ac, 0x30ed, 0x30f3, 0 }; +static const unichar_t str_330f[] = { 0x30ac, 0x30f3, 0x30de, 0 }; +static const unichar_t str_3310[] = { 0x30ae, 0x30ac, 0 }; +static const unichar_t str_3311[] = { 0x30ae, 0x30cb, 0x30fc, 0 }; +static const unichar_t str_3312[] = { 0x30ad, 0x30e5, 0x30ea, 0x30fc, 0 }; +static const unichar_t str_3313[] = { 0x30ae, 0x30eb, 0x30c0, 0x30fc, 0 }; +static const unichar_t str_3314[] = { 0x30ad, 0x30ed, 0 }; +static const unichar_t str_3315[] = { 0x30ad, 0x30ed, 0x30b0, 0x30e9, 0x30e0, 0 }; +static const unichar_t str_3316[] = { 0x30ad, 0x30ed, 0x30e1, 0x30fc, 0x30c8, 0x30eb, 0 }; +static const unichar_t str_3317[] = { 0x30ad, 0x30ed, 0x30ef, 0x30c3, 0x30c8, 0 }; +static const unichar_t str_3318[] = { 0x30b0, 0x30e9, 0x30e0, 0 }; +static const unichar_t str_3319[] = { 0x30b0, 0x30e9, 0x30e0, 0x30c8, 0x30f3, 0 }; +static const unichar_t str_331a[] = { 0x30af, 0x30eb, 0x30bc, 0x30a4, 0x30ed, 0 }; +static const unichar_t str_331b[] = { 0x30af, 0x30ed, 0x30fc, 0x30cd, 0 }; +static const unichar_t str_331c[] = { 0x30b1, 0x30fc, 0x30b9, 0 }; +static const unichar_t str_331d[] = { 0x30b3, 0x30eb, 0x30ca, 0 }; +static const unichar_t str_331e[] = { 0x30b3, 0x30fc, 0x30dd, 0 }; +static const unichar_t str_331f[] = { 0x30b5, 0x30a4, 0x30af, 0x30eb, 0 }; +static const unichar_t str_3320[] = { 0x30b5, 0x30f3, 0x30c1, 0x30fc, 0x30e0, 0 }; +static const unichar_t str_3321[] = { 0x30b7, 0x30ea, 0x30f3, 0x30b0, 0 }; +static const unichar_t str_3322[] = { 0x30bb, 0x30f3, 0x30c1, 0 }; +static const unichar_t str_3323[] = { 0x30bb, 0x30f3, 0x30c8, 0 }; +static const unichar_t str_3324[] = { 0x30c0, 0x30fc, 0x30b9, 0 }; +static const unichar_t str_3325[] = { 0x30c7, 0x30b7, 0 }; +static const unichar_t str_3326[] = { 0x30c9, 0x30eb, 0 }; +static const unichar_t str_3327[] = { 0x30c8, 0x30f3, 0 }; +static const unichar_t str_3328[] = { 0x30ca, 0x30ce, 0 }; +static const unichar_t str_3329[] = { 0x30ce, 0x30c3, 0x30c8, 0 }; +static const unichar_t str_332a[] = { 0x30cf, 0x30a4, 0x30c4, 0 }; +static const unichar_t str_332b[] = { 0x30d1, 0x30fc, 0x30bb, 0x30f3, 0x30c8, 0 }; +static const unichar_t str_332c[] = { 0x30d1, 0x30fc, 0x30c4, 0 }; +static const unichar_t str_332d[] = { 0x30d0, 0x30fc, 0x30ec, 0x30eb, 0 }; +static const unichar_t str_332e[] = { 0x30d4, 0x30a2, 0x30b9, 0x30c8, 0x30eb, 0 }; +static const unichar_t str_332f[] = { 0x30d4, 0x30af, 0x30eb, 0 }; +static const unichar_t str_3330[] = { 0x30d4, 0x30b3, 0 }; +static const unichar_t str_3331[] = { 0x30d3, 0x30eb, 0 }; +static const unichar_t str_3332[] = { 0x30d5, 0x30a1, 0x30e9, 0x30c3, 0x30c9, 0 }; +static const unichar_t str_3333[] = { 0x30d5, 0x30a3, 0x30fc, 0x30c8, 0 }; +static const unichar_t str_3334[] = { 0x30d6, 0x30c3, 0x30b7, 0x30a7, 0x30eb, 0 }; +static const unichar_t str_3335[] = { 0x30d5, 0x30e9, 0x30f3, 0 }; +static const unichar_t str_3336[] = { 0x30d8, 0x30af, 0x30bf, 0x30fc, 0x30eb, 0 }; +static const unichar_t str_3337[] = { 0x30da, 0x30bd, 0 }; +static const unichar_t str_3338[] = { 0x30da, 0x30cb, 0x30d2, 0 }; +static const unichar_t str_3339[] = { 0x30d8, 0x30eb, 0x30c4, 0 }; +static const unichar_t str_333a[] = { 0x30da, 0x30f3, 0x30b9, 0 }; +static const unichar_t str_333b[] = { 0x30da, 0x30fc, 0x30b8, 0 }; +static const unichar_t str_333c[] = { 0x30d9, 0x30fc, 0x30bf, 0 }; +static const unichar_t str_333d[] = { 0x30dd, 0x30a4, 0x30f3, 0x30c8, 0 }; +static const unichar_t str_333e[] = { 0x30dc, 0x30eb, 0x30c8, 0 }; +static const unichar_t str_333f[] = { 0x30db, 0x30f3, 0 }; +static const unichar_t str_3340[] = { 0x30dd, 0x30f3, 0x30c9, 0 }; +static const unichar_t str_3341[] = { 0x30db, 0x30fc, 0x30eb, 0 }; +static const unichar_t str_3342[] = { 0x30db, 0x30fc, 0x30f3, 0 }; +static const unichar_t str_3343[] = { 0x30de, 0x30a4, 0x30af, 0x30ed, 0 }; +static const unichar_t str_3344[] = { 0x30de, 0x30a4, 0x30eb, 0 }; +static const unichar_t str_3345[] = { 0x30de, 0x30c3, 0x30cf, 0 }; +static const unichar_t str_3346[] = { 0x30de, 0x30eb, 0x30af, 0 }; +static const unichar_t str_3347[] = { 0x30de, 0x30f3, 0x30b7, 0x30e7, 0x30f3, 0 }; +static const unichar_t str_3348[] = { 0x30df, 0x30af, 0x30ed, 0x30f3, 0 }; +static const unichar_t str_3349[] = { 0x30df, 0x30ea, 0 }; +static const unichar_t str_334a[] = { 0x30df, 0x30ea, 0x30d0, 0x30fc, 0x30eb, 0 }; +static const unichar_t str_334b[] = { 0x30e1, 0x30ac, 0 }; +static const unichar_t str_334c[] = { 0x30e1, 0x30ac, 0x30c8, 0x30f3, 0 }; +static const unichar_t str_334d[] = { 0x30e1, 0x30fc, 0x30c8, 0x30eb, 0 }; +static const unichar_t str_334e[] = { 0x30e4, 0x30fc, 0x30c9, 0 }; +static const unichar_t str_334f[] = { 0x30e4, 0x30fc, 0x30eb, 0 }; +static const unichar_t str_3350[] = { 0x30e6, 0x30a2, 0x30f3, 0 }; +static const unichar_t str_3351[] = { 0x30ea, 0x30c3, 0x30c8, 0x30eb, 0 }; +static const unichar_t str_3352[] = { 0x30ea, 0x30e9, 0 }; +static const unichar_t str_3353[] = { 0x30eb, 0x30d4, 0x30fc, 0 }; +static const unichar_t str_3354[] = { 0x30eb, 0x30fc, 0x30d6, 0x30eb, 0 }; +static const unichar_t str_3355[] = { 0x30ec, 0x30e0, 0 }; +static const unichar_t str_3356[] = { 0x30ec, 0x30f3, 0x30c8, 0x30b2, 0x30f3, 0 }; +static const unichar_t str_3357[] = { 0x30ef, 0x30c3, 0x30c8, 0 }; +static const unichar_t str_3358[] = { 0x0030, 0x70b9, 0 }; +static const unichar_t str_3359[] = { 0x0031, 0x70b9, 0 }; +static const unichar_t str_335a[] = { 0x0032, 0x70b9, 0 }; +static const unichar_t str_335b[] = { 0x0033, 0x70b9, 0 }; +static const unichar_t str_335c[] = { 0x0034, 0x70b9, 0 }; +static const unichar_t str_335d[] = { 0x0035, 0x70b9, 0 }; +static const unichar_t str_335e[] = { 0x0036, 0x70b9, 0 }; +static const unichar_t str_335f[] = { 0x0037, 0x70b9, 0 }; +static const unichar_t str_3360[] = { 0x0038, 0x70b9, 0 }; +static const unichar_t str_3361[] = { 0x0039, 0x70b9, 0 }; +static const unichar_t str_3362[] = { 0x0031, 0x0030, 0x70b9, 0 }; +static const unichar_t str_3363[] = { 0x0031, 0x0031, 0x70b9, 0 }; +static const unichar_t str_3364[] = { 0x0031, 0x0032, 0x70b9, 0 }; +static const unichar_t str_3365[] = { 0x0031, 0x0033, 0x70b9, 0 }; +static const unichar_t str_3366[] = { 0x0031, 0x0034, 0x70b9, 0 }; +static const unichar_t str_3367[] = { 0x0031, 0x0035, 0x70b9, 0 }; +static const unichar_t str_3368[] = { 0x0031, 0x0036, 0x70b9, 0 }; +static const unichar_t str_3369[] = { 0x0031, 0x0037, 0x70b9, 0 }; +static const unichar_t str_336a[] = { 0x0031, 0x0038, 0x70b9, 0 }; +static const unichar_t str_336b[] = { 0x0031, 0x0039, 0x70b9, 0 }; +static const unichar_t str_336c[] = { 0x0032, 0x0030, 0x70b9, 0 }; +static const unichar_t str_336d[] = { 0x0032, 0x0031, 0x70b9, 0 }; +static const unichar_t str_336e[] = { 0x0032, 0x0032, 0x70b9, 0 }; +static const unichar_t str_336f[] = { 0x0032, 0x0033, 0x70b9, 0 }; +static const unichar_t str_3370[] = { 0x0032, 0x0034, 0x70b9, 0 }; +static const unichar_t str_3371[] = { 0x0068, 0x0050, 0x0061, 0 }; +static const unichar_t str_3372[] = { 0x0064, 0x0061, 0 }; +static const unichar_t str_3373[] = { 0x0041, 0x0055, 0 }; +static const unichar_t str_3374[] = { 0x0062, 0x0061, 0x0072, 0 }; +static const unichar_t str_3375[] = { 0x006f, 0x0056, 0 }; +static const unichar_t str_3376[] = { 0x0070, 0x0063, 0 }; +static const unichar_t str_3377[] = { 0x0064, 0x006d, 0 }; +static const unichar_t str_3378[] = { 0x0064, 0x006d, 0x00b2, 0 }; +static const unichar_t str_3379[] = { 0x0064, 0x006d, 0x00b3, 0 }; +static const unichar_t str_337a[] = { 0x0049, 0x0055, 0 }; +static const unichar_t str_337b[] = { 0x5e73, 0x6210, 0 }; +static const unichar_t str_337c[] = { 0x662d, 0x548c, 0 }; +static const unichar_t str_337d[] = { 0x5927, 0x6b63, 0 }; +static const unichar_t str_337e[] = { 0x660e, 0x6cbb, 0 }; +static const unichar_t str_337f[] = { 0x682a, 0x5f0f, 0x4f1a, 0x793e, 0 }; +static const unichar_t str_3380[] = { 0x0070, 0x0041, 0 }; +static const unichar_t str_3381[] = { 0x006e, 0x0041, 0 }; +static const unichar_t str_3382[] = { 0x03bc, 0x0041, 0 }; +static const unichar_t str_3383[] = { 0x006d, 0x0041, 0 }; +static const unichar_t str_3384[] = { 0x006b, 0x0041, 0 }; +static const unichar_t str_3385[] = { 0x004b, 0x0042, 0 }; +static const unichar_t str_3386[] = { 0x004d, 0x0042, 0 }; +static const unichar_t str_3387[] = { 0x0047, 0x0042, 0 }; +static const unichar_t str_3388[] = { 0x0063, 0x0061, 0x006c, 0 }; +static const unichar_t str_3389[] = { 0x006b, 0x0063, 0x0061, 0x006c, 0 }; +static const unichar_t str_338a[] = { 0x0070, 0x0046, 0 }; +static const unichar_t str_338b[] = { 0x006e, 0x0046, 0 }; +static const unichar_t str_338c[] = { 0x03bc, 0x0046, 0 }; +static const unichar_t str_338d[] = { 0x03bc, 0x0067, 0 }; +static const unichar_t str_338e[] = { 0x006d, 0x0067, 0 }; +static const unichar_t str_338f[] = { 0x006b, 0x0067, 0 }; +static const unichar_t str_3390[] = { 0x0048, 0x007a, 0 }; +static const unichar_t str_3391[] = { 0x006b, 0x0048, 0x007a, 0 }; +static const unichar_t str_3392[] = { 0x004d, 0x0048, 0x007a, 0 }; +static const unichar_t str_3393[] = { 0x0047, 0x0048, 0x007a, 0 }; +static const unichar_t str_3394[] = { 0x0054, 0x0048, 0x007a, 0 }; +static const unichar_t str_3395[] = { 0x03bc, 0x2113, 0 }; +static const unichar_t str_3396[] = { 0x006d, 0x2113, 0 }; +static const unichar_t str_3397[] = { 0x0064, 0x2113, 0 }; +static const unichar_t str_3398[] = { 0x006b, 0x2113, 0 }; +static const unichar_t str_3399[] = { 0x0066, 0x006d, 0 }; +static const unichar_t str_339a[] = { 0x006e, 0x006d, 0 }; +static const unichar_t str_339b[] = { 0x03bc, 0x006d, 0 }; +static const unichar_t str_339c[] = { 0x006d, 0x006d, 0 }; +static const unichar_t str_339d[] = { 0x0063, 0x006d, 0 }; +static const unichar_t str_339e[] = { 0x006b, 0x006d, 0 }; +static const unichar_t str_339f[] = { 0x006d, 0x006d, 0x00b2, 0 }; +static const unichar_t str_33a0[] = { 0x0063, 0x006d, 0x00b2, 0 }; +static const unichar_t str_33a1[] = { 0x006d, 0x00b2, 0 }; +static const unichar_t str_33a2[] = { 0x006b, 0x006d, 0x00b2, 0 }; +static const unichar_t str_33a3[] = { 0x006d, 0x006d, 0x00b3, 0 }; +static const unichar_t str_33a4[] = { 0x0063, 0x006d, 0x00b3, 0 }; +static const unichar_t str_33a5[] = { 0x006d, 0x00b3, 0 }; +static const unichar_t str_33a6[] = { 0x006b, 0x006d, 0x00b3, 0 }; +static const unichar_t str_33a7[] = { 0x006d, 0x2215, 0x0073, 0 }; +static const unichar_t str_33a8[] = { 0x006d, 0x2215, 0x0073, 0x00b2, 0 }; +static const unichar_t str_33a9[] = { 0x0050, 0x0061, 0 }; +static const unichar_t str_33aa[] = { 0x006b, 0x0050, 0x0061, 0 }; +static const unichar_t str_33ab[] = { 0x004d, 0x0050, 0x0061, 0 }; +static const unichar_t str_33ac[] = { 0x0047, 0x0050, 0x0061, 0 }; +static const unichar_t str_33ad[] = { 0x0072, 0x0061, 0x0064, 0 }; +static const unichar_t str_33ae[] = { 0x0072, 0x0061, 0x0064, 0x2215, 0x0073, 0 }; +static const unichar_t str_33af[] = { 0x0072, 0x0061, 0x0064, 0x2215, 0x0073, 0x00b2, 0 }; +static const unichar_t str_33b0[] = { 0x0070, 0x0073, 0 }; +static const unichar_t str_33b1[] = { 0x006e, 0x0073, 0 }; +static const unichar_t str_33b2[] = { 0x03bc, 0x0073, 0 }; +static const unichar_t str_33b3[] = { 0x006d, 0x0073, 0 }; +static const unichar_t str_33b4[] = { 0x0070, 0x0056, 0 }; +static const unichar_t str_33b5[] = { 0x006e, 0x0056, 0 }; +static const unichar_t str_33b6[] = { 0x03bc, 0x0056, 0 }; +static const unichar_t str_33b7[] = { 0x006d, 0x0056, 0 }; +static const unichar_t str_33b8[] = { 0x006b, 0x0056, 0 }; +static const unichar_t str_33b9[] = { 0x004d, 0x0056, 0 }; +static const unichar_t str_33ba[] = { 0x0070, 0x0057, 0 }; +static const unichar_t str_33bb[] = { 0x006e, 0x0057, 0 }; +static const unichar_t str_33bc[] = { 0x03bc, 0x0057, 0 }; +static const unichar_t str_33bd[] = { 0x006d, 0x0057, 0 }; +static const unichar_t str_33be[] = { 0x006b, 0x0057, 0 }; +static const unichar_t str_33bf[] = { 0x004d, 0x0057, 0 }; +static const unichar_t str_33c0[] = { 0x006b, 0x03a9, 0 }; +static const unichar_t str_33c1[] = { 0x004d, 0x03a9, 0 }; +static const unichar_t str_33c2[] = { 0x0061, 0x002e, 0x006d, 0x002e, 0 }; +static const unichar_t str_33c3[] = { 0x0042, 0x0071, 0 }; +static const unichar_t str_33c4[] = { 0x0063, 0x0063, 0 }; +static const unichar_t str_33c5[] = { 0x0063, 0x0064, 0 }; +static const unichar_t str_33c6[] = { 0x0043, 0x2215, 0x006b, 0x0067, 0 }; +static const unichar_t str_33c7[] = { 0x0043, 0x006f, 0x002e, 0 }; +static const unichar_t str_33c8[] = { 0x0064, 0x0042, 0 }; +static const unichar_t str_33c9[] = { 0x0047, 0x0079, 0 }; +static const unichar_t str_33ca[] = { 0x0068, 0x0061, 0 }; +static const unichar_t str_33cb[] = { 0x0048, 0x0050, 0 }; +static const unichar_t str_33cc[] = { 0x0069, 0x006e, 0 }; +static const unichar_t str_33cd[] = { 0x004b, 0x004b, 0 }; +static const unichar_t str_33ce[] = { 0x004b, 0x004d, 0 }; +static const unichar_t str_33cf[] = { 0x006b, 0x0074, 0 }; +static const unichar_t str_33d0[] = { 0x006c, 0x006d, 0 }; +static const unichar_t str_33d1[] = { 0x006c, 0x006e, 0 }; +static const unichar_t str_33d2[] = { 0x006c, 0x006f, 0x0067, 0 }; +static const unichar_t str_33d3[] = { 0x006c, 0x0078, 0 }; +static const unichar_t str_33d4[] = { 0x006d, 0x0062, 0 }; +static const unichar_t str_33d5[] = { 0x006d, 0x0069, 0x006c, 0 }; +static const unichar_t str_33d6[] = { 0x006d, 0x006f, 0x006c, 0 }; +static const unichar_t str_33d7[] = { 0x0050, 0x0048, 0 }; +static const unichar_t str_33d8[] = { 0x0070, 0x002e, 0x006d, 0x002e, 0 }; +static const unichar_t str_33d9[] = { 0x0050, 0x0050, 0x004d, 0 }; +static const unichar_t str_33da[] = { 0x0050, 0x0052, 0 }; +static const unichar_t str_33db[] = { 0x0073, 0x0072, 0 }; +static const unichar_t str_33dc[] = { 0x0053, 0x0076, 0 }; +static const unichar_t str_33dd[] = { 0x0057, 0x0062, 0 }; +static const unichar_t str_33de[] = { 0x0056, 0x2215, 0x006d, 0 }; +static const unichar_t str_33df[] = { 0x0041, 0x2215, 0x006d, 0 }; +static const unichar_t str_33e0[] = { 0x0031, 0x65e5, 0 }; +static const unichar_t str_33e1[] = { 0x0032, 0x65e5, 0 }; +static const unichar_t str_33e2[] = { 0x0033, 0x65e5, 0 }; +static const unichar_t str_33e3[] = { 0x0034, 0x65e5, 0 }; +static const unichar_t str_33e4[] = { 0x0035, 0x65e5, 0 }; +static const unichar_t str_33e5[] = { 0x0036, 0x65e5, 0 }; +static const unichar_t str_33e6[] = { 0x0037, 0x65e5, 0 }; +static const unichar_t str_33e7[] = { 0x0038, 0x65e5, 0 }; +static const unichar_t str_33e8[] = { 0x0039, 0x65e5, 0 }; +static const unichar_t str_33e9[] = { 0x0031, 0x0030, 0x65e5, 0 }; +static const unichar_t str_33ea[] = { 0x0031, 0x0031, 0x65e5, 0 }; +static const unichar_t str_33eb[] = { 0x0031, 0x0032, 0x65e5, 0 }; +static const unichar_t str_33ec[] = { 0x0031, 0x0033, 0x65e5, 0 }; +static const unichar_t str_33ed[] = { 0x0031, 0x0034, 0x65e5, 0 }; +static const unichar_t str_33ee[] = { 0x0031, 0x0035, 0x65e5, 0 }; +static const unichar_t str_33ef[] = { 0x0031, 0x0036, 0x65e5, 0 }; +static const unichar_t str_33f0[] = { 0x0031, 0x0037, 0x65e5, 0 }; +static const unichar_t str_33f1[] = { 0x0031, 0x0038, 0x65e5, 0 }; +static const unichar_t str_33f2[] = { 0x0031, 0x0039, 0x65e5, 0 }; +static const unichar_t str_33f3[] = { 0x0032, 0x0030, 0x65e5, 0 }; +static const unichar_t str_33f4[] = { 0x0032, 0x0031, 0x65e5, 0 }; +static const unichar_t str_33f5[] = { 0x0032, 0x0032, 0x65e5, 0 }; +static const unichar_t str_33f6[] = { 0x0032, 0x0033, 0x65e5, 0 }; +static const unichar_t str_33f7[] = { 0x0032, 0x0034, 0x65e5, 0 }; +static const unichar_t str_33f8[] = { 0x0032, 0x0035, 0x65e5, 0 }; +static const unichar_t str_33f9[] = { 0x0032, 0x0036, 0x65e5, 0 }; +static const unichar_t str_33fa[] = { 0x0032, 0x0037, 0x65e5, 0 }; +static const unichar_t str_33fb[] = { 0x0032, 0x0038, 0x65e5, 0 }; +static const unichar_t str_33fc[] = { 0x0032, 0x0039, 0x65e5, 0 }; +static const unichar_t str_33fd[] = { 0x0033, 0x0030, 0x65e5, 0 }; +static const unichar_t str_33fe[] = { 0x0033, 0x0031, 0x65e5, 0 }; +static const unichar_t str_33ff[] = { 0x0067, 0x0061, 0x006c, 0 }; +static const unichar_t str_a770[] = { 0xa76f, 0 }; +static const unichar_t str_f900[] = { 0x8c48, 0 }; +static const unichar_t str_f901[] = { 0x66f4, 0 }; +static const unichar_t str_f902[] = { 0x8eca, 0 }; +static const unichar_t str_f903[] = { 0x8cc8, 0 }; +static const unichar_t str_f904[] = { 0x6ed1, 0 }; +static const unichar_t str_f905[] = { 0x4e32, 0 }; +static const unichar_t str_f906[] = { 0x53e5, 0 }; +static const unichar_t str_f907[] = { 0x9f9c, 0 }; +static const unichar_t str_f908[] = { 0x9f9c, 0 }; +static const unichar_t str_f909[] = { 0x5951, 0 }; +static const unichar_t str_f90a[] = { 0x91d1, 0 }; +static const unichar_t str_f90b[] = { 0x5587, 0 }; +static const unichar_t str_f90c[] = { 0x5948, 0 }; +static const unichar_t str_f90d[] = { 0x61f6, 0 }; +static const unichar_t str_f90e[] = { 0x7669, 0 }; +static const unichar_t str_f90f[] = { 0x7f85, 0 }; +static const unichar_t str_f910[] = { 0x863f, 0 }; +static const unichar_t str_f911[] = { 0x87ba, 0 }; +static const unichar_t str_f912[] = { 0x88f8, 0 }; +static const unichar_t str_f913[] = { 0x908f, 0 }; +static const unichar_t str_f914[] = { 0x6a02, 0 }; +static const unichar_t str_f915[] = { 0x6d1b, 0 }; +static const unichar_t str_f916[] = { 0x70d9, 0 }; +static const unichar_t str_f917[] = { 0x73de, 0 }; +static const unichar_t str_f918[] = { 0x843d, 0 }; +static const unichar_t str_f919[] = { 0x916a, 0 }; +static const unichar_t str_f91a[] = { 0x99f1, 0 }; +static const unichar_t str_f91b[] = { 0x4e82, 0 }; +static const unichar_t str_f91c[] = { 0x5375, 0 }; +static const unichar_t str_f91d[] = { 0x6b04, 0 }; +static const unichar_t str_f91e[] = { 0x721b, 0 }; +static const unichar_t str_f91f[] = { 0x862d, 0 }; +static const unichar_t str_f920[] = { 0x9e1e, 0 }; +static const unichar_t str_f921[] = { 0x5d50, 0 }; +static const unichar_t str_f922[] = { 0x6feb, 0 }; +static const unichar_t str_f923[] = { 0x85cd, 0 }; +static const unichar_t str_f924[] = { 0x8964, 0 }; +static const unichar_t str_f925[] = { 0x62c9, 0 }; +static const unichar_t str_f926[] = { 0x81d8, 0 }; +static const unichar_t str_f927[] = { 0x881f, 0 }; +static const unichar_t str_f928[] = { 0x5eca, 0 }; +static const unichar_t str_f929[] = { 0x6717, 0 }; +static const unichar_t str_f92a[] = { 0x6d6a, 0 }; +static const unichar_t str_f92b[] = { 0x72fc, 0 }; +static const unichar_t str_f92c[] = { 0x90ce, 0 }; +static const unichar_t str_f92d[] = { 0x4f86, 0 }; +static const unichar_t str_f92e[] = { 0x51b7, 0 }; +static const unichar_t str_f92f[] = { 0x52de, 0 }; +static const unichar_t str_f930[] = { 0x64c4, 0 }; +static const unichar_t str_f931[] = { 0x6ad3, 0 }; +static const unichar_t str_f932[] = { 0x7210, 0 }; +static const unichar_t str_f933[] = { 0x76e7, 0 }; +static const unichar_t str_f934[] = { 0x8001, 0 }; +static const unichar_t str_f935[] = { 0x8606, 0 }; +static const unichar_t str_f936[] = { 0x865c, 0 }; +static const unichar_t str_f937[] = { 0x8def, 0 }; +static const unichar_t str_f938[] = { 0x9732, 0 }; +static const unichar_t str_f939[] = { 0x9b6f, 0 }; +static const unichar_t str_f93a[] = { 0x9dfa, 0 }; +static const unichar_t str_f93b[] = { 0x788c, 0 }; +static const unichar_t str_f93c[] = { 0x797f, 0 }; +static const unichar_t str_f93d[] = { 0x7da0, 0 }; +static const unichar_t str_f93e[] = { 0x83c9, 0 }; +static const unichar_t str_f93f[] = { 0x9304, 0 }; +static const unichar_t str_f940[] = { 0x9e7f, 0 }; +static const unichar_t str_f941[] = { 0x8ad6, 0 }; +static const unichar_t str_f942[] = { 0x58df, 0 }; +static const unichar_t str_f943[] = { 0x5f04, 0 }; +static const unichar_t str_f944[] = { 0x7c60, 0 }; +static const unichar_t str_f945[] = { 0x807e, 0 }; +static const unichar_t str_f946[] = { 0x7262, 0 }; +static const unichar_t str_f947[] = { 0x78ca, 0 }; +static const unichar_t str_f948[] = { 0x8cc2, 0 }; +static const unichar_t str_f949[] = { 0x96f7, 0 }; +static const unichar_t str_f94a[] = { 0x58d8, 0 }; +static const unichar_t str_f94b[] = { 0x5c62, 0 }; +static const unichar_t str_f94c[] = { 0x6a13, 0 }; +static const unichar_t str_f94d[] = { 0x6dda, 0 }; +static const unichar_t str_f94e[] = { 0x6f0f, 0 }; +static const unichar_t str_f94f[] = { 0x7d2f, 0 }; +static const unichar_t str_f950[] = { 0x7e37, 0 }; +static const unichar_t str_f951[] = { 0x964b, 0 }; +static const unichar_t str_f952[] = { 0x52d2, 0 }; +static const unichar_t str_f953[] = { 0x808b, 0 }; +static const unichar_t str_f954[] = { 0x51dc, 0 }; +static const unichar_t str_f955[] = { 0x51cc, 0 }; +static const unichar_t str_f956[] = { 0x7a1c, 0 }; +static const unichar_t str_f957[] = { 0x7dbe, 0 }; +static const unichar_t str_f958[] = { 0x83f1, 0 }; +static const unichar_t str_f959[] = { 0x9675, 0 }; +static const unichar_t str_f95a[] = { 0x8b80, 0 }; +static const unichar_t str_f95b[] = { 0x62cf, 0 }; +static const unichar_t str_f95c[] = { 0x6a02, 0 }; +static const unichar_t str_f95d[] = { 0x8afe, 0 }; +static const unichar_t str_f95e[] = { 0x4e39, 0 }; +static const unichar_t str_f95f[] = { 0x5be7, 0 }; +static const unichar_t str_f960[] = { 0x6012, 0 }; +static const unichar_t str_f961[] = { 0x7387, 0 }; +static const unichar_t str_f962[] = { 0x7570, 0 }; +static const unichar_t str_f963[] = { 0x5317, 0 }; +static const unichar_t str_f964[] = { 0x78fb, 0 }; +static const unichar_t str_f965[] = { 0x4fbf, 0 }; +static const unichar_t str_f966[] = { 0x5fa9, 0 }; +static const unichar_t str_f967[] = { 0x4e0d, 0 }; +static const unichar_t str_f968[] = { 0x6ccc, 0 }; +static const unichar_t str_f969[] = { 0x6578, 0 }; +static const unichar_t str_f96a[] = { 0x7d22, 0 }; +static const unichar_t str_f96b[] = { 0x53c3, 0 }; +static const unichar_t str_f96c[] = { 0x585e, 0 }; +static const unichar_t str_f96d[] = { 0x7701, 0 }; +static const unichar_t str_f96e[] = { 0x8449, 0 }; +static const unichar_t str_f96f[] = { 0x8aaa, 0 }; +static const unichar_t str_f970[] = { 0x6bba, 0 }; +static const unichar_t str_f971[] = { 0x8fb0, 0 }; +static const unichar_t str_f972[] = { 0x6c88, 0 }; +static const unichar_t str_f973[] = { 0x62fe, 0 }; +static const unichar_t str_f974[] = { 0x82e5, 0 }; +static const unichar_t str_f975[] = { 0x63a0, 0 }; +static const unichar_t str_f976[] = { 0x7565, 0 }; +static const unichar_t str_f977[] = { 0x4eae, 0 }; +static const unichar_t str_f978[] = { 0x5169, 0 }; +static const unichar_t str_f979[] = { 0x51c9, 0 }; +static const unichar_t str_f97a[] = { 0x6881, 0 }; +static const unichar_t str_f97b[] = { 0x7ce7, 0 }; +static const unichar_t str_f97c[] = { 0x826f, 0 }; +static const unichar_t str_f97d[] = { 0x8ad2, 0 }; +static const unichar_t str_f97e[] = { 0x91cf, 0 }; +static const unichar_t str_f97f[] = { 0x52f5, 0 }; +static const unichar_t str_f980[] = { 0x5442, 0 }; +static const unichar_t str_f981[] = { 0x5973, 0 }; +static const unichar_t str_f982[] = { 0x5eec, 0 }; +static const unichar_t str_f983[] = { 0x65c5, 0 }; +static const unichar_t str_f984[] = { 0x6ffe, 0 }; +static const unichar_t str_f985[] = { 0x792a, 0 }; +static const unichar_t str_f986[] = { 0x95ad, 0 }; +static const unichar_t str_f987[] = { 0x9a6a, 0 }; +static const unichar_t str_f988[] = { 0x9e97, 0 }; +static const unichar_t str_f989[] = { 0x9ece, 0 }; +static const unichar_t str_f98a[] = { 0x529b, 0 }; +static const unichar_t str_f98b[] = { 0x66c6, 0 }; +static const unichar_t str_f98c[] = { 0x6b77, 0 }; +static const unichar_t str_f98d[] = { 0x8f62, 0 }; +static const unichar_t str_f98e[] = { 0x5e74, 0 }; +static const unichar_t str_f98f[] = { 0x6190, 0 }; +static const unichar_t str_f990[] = { 0x6200, 0 }; +static const unichar_t str_f991[] = { 0x649a, 0 }; +static const unichar_t str_f992[] = { 0x6f23, 0 }; +static const unichar_t str_f993[] = { 0x7149, 0 }; +static const unichar_t str_f994[] = { 0x7489, 0 }; +static const unichar_t str_f995[] = { 0x79ca, 0 }; +static const unichar_t str_f996[] = { 0x7df4, 0 }; +static const unichar_t str_f997[] = { 0x806f, 0 }; +static const unichar_t str_f998[] = { 0x8f26, 0 }; +static const unichar_t str_f999[] = { 0x84ee, 0 }; +static const unichar_t str_f99a[] = { 0x9023, 0 }; +static const unichar_t str_f99b[] = { 0x934a, 0 }; +static const unichar_t str_f99c[] = { 0x5217, 0 }; +static const unichar_t str_f99d[] = { 0x52a3, 0 }; +static const unichar_t str_f99e[] = { 0x54bd, 0 }; +static const unichar_t str_f99f[] = { 0x70c8, 0 }; +static const unichar_t str_f9a0[] = { 0x88c2, 0 }; +static const unichar_t str_f9a1[] = { 0x8aaa, 0 }; +static const unichar_t str_f9a2[] = { 0x5ec9, 0 }; +static const unichar_t str_f9a3[] = { 0x5ff5, 0 }; +static const unichar_t str_f9a4[] = { 0x637b, 0 }; +static const unichar_t str_f9a5[] = { 0x6bae, 0 }; +static const unichar_t str_f9a6[] = { 0x7c3e, 0 }; +static const unichar_t str_f9a7[] = { 0x7375, 0 }; +static const unichar_t str_f9a8[] = { 0x4ee4, 0 }; +static const unichar_t str_f9a9[] = { 0x56f9, 0 }; +static const unichar_t str_f9aa[] = { 0x5be7, 0 }; +static const unichar_t str_f9ab[] = { 0x5dba, 0 }; +static const unichar_t str_f9ac[] = { 0x601c, 0 }; +static const unichar_t str_f9ad[] = { 0x73b2, 0 }; +static const unichar_t str_f9ae[] = { 0x7469, 0 }; +static const unichar_t str_f9af[] = { 0x7f9a, 0 }; +static const unichar_t str_f9b0[] = { 0x8046, 0 }; +static const unichar_t str_f9b1[] = { 0x9234, 0 }; +static const unichar_t str_f9b2[] = { 0x96f6, 0 }; +static const unichar_t str_f9b3[] = { 0x9748, 0 }; +static const unichar_t str_f9b4[] = { 0x9818, 0 }; +static const unichar_t str_f9b5[] = { 0x4f8b, 0 }; +static const unichar_t str_f9b6[] = { 0x79ae, 0 }; +static const unichar_t str_f9b7[] = { 0x91b4, 0 }; +static const unichar_t str_f9b8[] = { 0x96b8, 0 }; +static const unichar_t str_f9b9[] = { 0x60e1, 0 }; +static const unichar_t str_f9ba[] = { 0x4e86, 0 }; +static const unichar_t str_f9bb[] = { 0x50da, 0 }; +static const unichar_t str_f9bc[] = { 0x5bee, 0 }; +static const unichar_t str_f9bd[] = { 0x5c3f, 0 }; +static const unichar_t str_f9be[] = { 0x6599, 0 }; +static const unichar_t str_f9bf[] = { 0x6a02, 0 }; +static const unichar_t str_f9c0[] = { 0x71ce, 0 }; +static const unichar_t str_f9c1[] = { 0x7642, 0 }; +static const unichar_t str_f9c2[] = { 0x84fc, 0 }; +static const unichar_t str_f9c3[] = { 0x907c, 0 }; +static const unichar_t str_f9c4[] = { 0x9f8d, 0 }; +static const unichar_t str_f9c5[] = { 0x6688, 0 }; +static const unichar_t str_f9c6[] = { 0x962e, 0 }; +static const unichar_t str_f9c7[] = { 0x5289, 0 }; +static const unichar_t str_f9c8[] = { 0x677b, 0 }; +static const unichar_t str_f9c9[] = { 0x67f3, 0 }; +static const unichar_t str_f9ca[] = { 0x6d41, 0 }; +static const unichar_t str_f9cb[] = { 0x6e9c, 0 }; +static const unichar_t str_f9cc[] = { 0x7409, 0 }; +static const unichar_t str_f9cd[] = { 0x7559, 0 }; +static const unichar_t str_f9ce[] = { 0x786b, 0 }; +static const unichar_t str_f9cf[] = { 0x7d10, 0 }; +static const unichar_t str_f9d0[] = { 0x985e, 0 }; +static const unichar_t str_f9d1[] = { 0x516d, 0 }; +static const unichar_t str_f9d2[] = { 0x622e, 0 }; +static const unichar_t str_f9d3[] = { 0x9678, 0 }; +static const unichar_t str_f9d4[] = { 0x502b, 0 }; +static const unichar_t str_f9d5[] = { 0x5d19, 0 }; +static const unichar_t str_f9d6[] = { 0x6dea, 0 }; +static const unichar_t str_f9d7[] = { 0x8f2a, 0 }; +static const unichar_t str_f9d8[] = { 0x5f8b, 0 }; +static const unichar_t str_f9d9[] = { 0x6144, 0 }; +static const unichar_t str_f9da[] = { 0x6817, 0 }; +static const unichar_t str_f9db[] = { 0x7387, 0 }; +static const unichar_t str_f9dc[] = { 0x9686, 0 }; +static const unichar_t str_f9dd[] = { 0x5229, 0 }; +static const unichar_t str_f9de[] = { 0x540f, 0 }; +static const unichar_t str_f9df[] = { 0x5c65, 0 }; +static const unichar_t str_f9e0[] = { 0x6613, 0 }; +static const unichar_t str_f9e1[] = { 0x674e, 0 }; +static const unichar_t str_f9e2[] = { 0x68a8, 0 }; +static const unichar_t str_f9e3[] = { 0x6ce5, 0 }; +static const unichar_t str_f9e4[] = { 0x7406, 0 }; +static const unichar_t str_f9e5[] = { 0x75e2, 0 }; +static const unichar_t str_f9e6[] = { 0x7f79, 0 }; +static const unichar_t str_f9e7[] = { 0x88cf, 0 }; +static const unichar_t str_f9e8[] = { 0x88e1, 0 }; +static const unichar_t str_f9e9[] = { 0x91cc, 0 }; +static const unichar_t str_f9ea[] = { 0x96e2, 0 }; +static const unichar_t str_f9eb[] = { 0x533f, 0 }; +static const unichar_t str_f9ec[] = { 0x6eba, 0 }; +static const unichar_t str_f9ed[] = { 0x541d, 0 }; +static const unichar_t str_f9ee[] = { 0x71d0, 0 }; +static const unichar_t str_f9ef[] = { 0x7498, 0 }; +static const unichar_t str_f9f0[] = { 0x85fa, 0 }; +static const unichar_t str_f9f1[] = { 0x96a3, 0 }; +static const unichar_t str_f9f2[] = { 0x9c57, 0 }; +static const unichar_t str_f9f3[] = { 0x9e9f, 0 }; +static const unichar_t str_f9f4[] = { 0x6797, 0 }; +static const unichar_t str_f9f5[] = { 0x6dcb, 0 }; +static const unichar_t str_f9f6[] = { 0x81e8, 0 }; +static const unichar_t str_f9f7[] = { 0x7acb, 0 }; +static const unichar_t str_f9f8[] = { 0x7b20, 0 }; +static const unichar_t str_f9f9[] = { 0x7c92, 0 }; +static const unichar_t str_f9fa[] = { 0x72c0, 0 }; +static const unichar_t str_f9fb[] = { 0x7099, 0 }; +static const unichar_t str_f9fc[] = { 0x8b58, 0 }; +static const unichar_t str_f9fd[] = { 0x4ec0, 0 }; +static const unichar_t str_f9fe[] = { 0x8336, 0 }; +static const unichar_t str_f9ff[] = { 0x523a, 0 }; +static const unichar_t str_fa00[] = { 0x5207, 0 }; +static const unichar_t str_fa01[] = { 0x5ea6, 0 }; +static const unichar_t str_fa02[] = { 0x62d3, 0 }; +static const unichar_t str_fa03[] = { 0x7cd6, 0 }; +static const unichar_t str_fa04[] = { 0x5b85, 0 }; +static const unichar_t str_fa05[] = { 0x6d1e, 0 }; +static const unichar_t str_fa06[] = { 0x66b4, 0 }; +static const unichar_t str_fa07[] = { 0x8f3b, 0 }; +static const unichar_t str_fa08[] = { 0x884c, 0 }; +static const unichar_t str_fa09[] = { 0x964d, 0 }; +static const unichar_t str_fa0a[] = { 0x898b, 0 }; +static const unichar_t str_fa0b[] = { 0x5ed3, 0 }; +static const unichar_t str_fa0c[] = { 0x5140, 0 }; +static const unichar_t str_fa0d[] = { 0x55c0, 0 }; +static const unichar_t str_fa10[] = { 0x585a, 0 }; +static const unichar_t str_fa12[] = { 0x6674, 0 }; +static const unichar_t str_fa15[] = { 0x51de, 0 }; +static const unichar_t str_fa16[] = { 0x732a, 0 }; +static const unichar_t str_fa17[] = { 0x76ca, 0 }; +static const unichar_t str_fa18[] = { 0x793c, 0 }; +static const unichar_t str_fa19[] = { 0x795e, 0 }; +static const unichar_t str_fa1a[] = { 0x7965, 0 }; +static const unichar_t str_fa1b[] = { 0x798f, 0 }; +static const unichar_t str_fa1c[] = { 0x9756, 0 }; +static const unichar_t str_fa1d[] = { 0x7cbe, 0 }; +static const unichar_t str_fa1e[] = { 0x7fbd, 0 }; +static const unichar_t str_fa20[] = { 0x8612, 0 }; +static const unichar_t str_fa22[] = { 0x8af8, 0 }; +static const unichar_t str_fa25[] = { 0x9038, 0 }; +static const unichar_t str_fa26[] = { 0x90fd, 0 }; +static const unichar_t str_fa2a[] = { 0x98ef, 0 }; +static const unichar_t str_fa2b[] = { 0x98fc, 0 }; +static const unichar_t str_fa2c[] = { 0x9928, 0 }; +static const unichar_t str_fa2d[] = { 0x9db4, 0 }; +static const unichar_t str_fa30[] = { 0x4fae, 0 }; +static const unichar_t str_fa31[] = { 0x50e7, 0 }; +static const unichar_t str_fa32[] = { 0x514d, 0 }; +static const unichar_t str_fa33[] = { 0x52c9, 0 }; +static const unichar_t str_fa34[] = { 0x52e4, 0 }; +static const unichar_t str_fa35[] = { 0x5351, 0 }; +static const unichar_t str_fa36[] = { 0x559d, 0 }; +static const unichar_t str_fa37[] = { 0x5606, 0 }; +static const unichar_t str_fa38[] = { 0x5668, 0 }; +static const unichar_t str_fa39[] = { 0x5840, 0 }; +static const unichar_t str_fa3a[] = { 0x58a8, 0 }; +static const unichar_t str_fa3b[] = { 0x5c64, 0 }; +static const unichar_t str_fa3c[] = { 0x5c6e, 0 }; +static const unichar_t str_fa3d[] = { 0x6094, 0 }; +static const unichar_t str_fa3e[] = { 0x6168, 0 }; +static const unichar_t str_fa3f[] = { 0x618e, 0 }; +static const unichar_t str_fa40[] = { 0x61f2, 0 }; +static const unichar_t str_fa41[] = { 0x654f, 0 }; +static const unichar_t str_fa42[] = { 0x65e2, 0 }; +static const unichar_t str_fa43[] = { 0x6691, 0 }; +static const unichar_t str_fa44[] = { 0x6885, 0 }; +static const unichar_t str_fa45[] = { 0x6d77, 0 }; +static const unichar_t str_fa46[] = { 0x6e1a, 0 }; +static const unichar_t str_fa47[] = { 0x6f22, 0 }; +static const unichar_t str_fa48[] = { 0x716e, 0 }; +static const unichar_t str_fa49[] = { 0x722b, 0 }; +static const unichar_t str_fa4a[] = { 0x7422, 0 }; +static const unichar_t str_fa4b[] = { 0x7891, 0 }; +static const unichar_t str_fa4c[] = { 0x793e, 0 }; +static const unichar_t str_fa4d[] = { 0x7949, 0 }; +static const unichar_t str_fa4e[] = { 0x7948, 0 }; +static const unichar_t str_fa4f[] = { 0x7950, 0 }; +static const unichar_t str_fa50[] = { 0x7956, 0 }; +static const unichar_t str_fa51[] = { 0x795d, 0 }; +static const unichar_t str_fa52[] = { 0x798d, 0 }; +static const unichar_t str_fa53[] = { 0x798e, 0 }; +static const unichar_t str_fa54[] = { 0x7a40, 0 }; +static const unichar_t str_fa55[] = { 0x7a81, 0 }; +static const unichar_t str_fa56[] = { 0x7bc0, 0 }; +static const unichar_t str_fa57[] = { 0x7df4, 0 }; +static const unichar_t str_fa58[] = { 0x7e09, 0 }; +static const unichar_t str_fa59[] = { 0x7e41, 0 }; +static const unichar_t str_fa5a[] = { 0x7f72, 0 }; +static const unichar_t str_fa5b[] = { 0x8005, 0 }; +static const unichar_t str_fa5c[] = { 0x81ed, 0 }; +static const unichar_t str_fa5d[] = { 0x8279, 0 }; +static const unichar_t str_fa5e[] = { 0x8279, 0 }; +static const unichar_t str_fa5f[] = { 0x8457, 0 }; +static const unichar_t str_fa60[] = { 0x8910, 0 }; +static const unichar_t str_fa61[] = { 0x8996, 0 }; +static const unichar_t str_fa62[] = { 0x8b01, 0 }; +static const unichar_t str_fa63[] = { 0x8b39, 0 }; +static const unichar_t str_fa64[] = { 0x8cd3, 0 }; +static const unichar_t str_fa65[] = { 0x8d08, 0 }; +static const unichar_t str_fa66[] = { 0x8fb6, 0 }; +static const unichar_t str_fa67[] = { 0x9038, 0 }; +static const unichar_t str_fa68[] = { 0x96e3, 0 }; +static const unichar_t str_fa69[] = { 0x97ff, 0 }; +static const unichar_t str_fa6a[] = { 0x983b, 0 }; +static const unichar_t str_fa70[] = { 0x4e26, 0 }; +static const unichar_t str_fa71[] = { 0x51b5, 0 }; +static const unichar_t str_fa72[] = { 0x5168, 0 }; +static const unichar_t str_fa73[] = { 0x4f80, 0 }; +static const unichar_t str_fa74[] = { 0x5145, 0 }; +static const unichar_t str_fa75[] = { 0x5180, 0 }; +static const unichar_t str_fa76[] = { 0x52c7, 0 }; +static const unichar_t str_fa77[] = { 0x52fa, 0 }; +static const unichar_t str_fa78[] = { 0x559d, 0 }; +static const unichar_t str_fa79[] = { 0x5555, 0 }; +static const unichar_t str_fa7a[] = { 0x5599, 0 }; +static const unichar_t str_fa7b[] = { 0x55e2, 0 }; +static const unichar_t str_fa7c[] = { 0x585a, 0 }; +static const unichar_t str_fa7d[] = { 0x58b3, 0 }; +static const unichar_t str_fa7e[] = { 0x5944, 0 }; +static const unichar_t str_fa7f[] = { 0x5954, 0 }; +static const unichar_t str_fa80[] = { 0x5a62, 0 }; +static const unichar_t str_fa81[] = { 0x5b28, 0 }; +static const unichar_t str_fa82[] = { 0x5ed2, 0 }; +static const unichar_t str_fa83[] = { 0x5ed9, 0 }; +static const unichar_t str_fa84[] = { 0x5f69, 0 }; +static const unichar_t str_fa85[] = { 0x5fad, 0 }; +static const unichar_t str_fa86[] = { 0x60d8, 0 }; +static const unichar_t str_fa87[] = { 0x614e, 0 }; +static const unichar_t str_fa88[] = { 0x6108, 0 }; +static const unichar_t str_fa89[] = { 0x618e, 0 }; +static const unichar_t str_fa8a[] = { 0x6160, 0 }; +static const unichar_t str_fa8b[] = { 0x61f2, 0 }; +static const unichar_t str_fa8c[] = { 0x6234, 0 }; +static const unichar_t str_fa8d[] = { 0x63c4, 0 }; +static const unichar_t str_fa8e[] = { 0x641c, 0 }; +static const unichar_t str_fa8f[] = { 0x6452, 0 }; +static const unichar_t str_fa90[] = { 0x6556, 0 }; +static const unichar_t str_fa91[] = { 0x6674, 0 }; +static const unichar_t str_fa92[] = { 0x6717, 0 }; +static const unichar_t str_fa93[] = { 0x671b, 0 }; +static const unichar_t str_fa94[] = { 0x6756, 0 }; +static const unichar_t str_fa95[] = { 0x6b79, 0 }; +static const unichar_t str_fa96[] = { 0x6bba, 0 }; +static const unichar_t str_fa97[] = { 0x6d41, 0 }; +static const unichar_t str_fa98[] = { 0x6edb, 0 }; +static const unichar_t str_fa99[] = { 0x6ecb, 0 }; +static const unichar_t str_fa9a[] = { 0x6f22, 0 }; +static const unichar_t str_fa9b[] = { 0x701e, 0 }; +static const unichar_t str_fa9c[] = { 0x716e, 0 }; +static const unichar_t str_fa9d[] = { 0x77a7, 0 }; +static const unichar_t str_fa9e[] = { 0x7235, 0 }; +static const unichar_t str_fa9f[] = { 0x72af, 0 }; +static const unichar_t str_faa0[] = { 0x732a, 0 }; +static const unichar_t str_faa1[] = { 0x7471, 0 }; +static const unichar_t str_faa2[] = { 0x7506, 0 }; +static const unichar_t str_faa3[] = { 0x753b, 0 }; +static const unichar_t str_faa4[] = { 0x761d, 0 }; +static const unichar_t str_faa5[] = { 0x761f, 0 }; +static const unichar_t str_faa6[] = { 0x76ca, 0 }; +static const unichar_t str_faa7[] = { 0x76db, 0 }; +static const unichar_t str_faa8[] = { 0x76f4, 0 }; +static const unichar_t str_faa9[] = { 0x774a, 0 }; +static const unichar_t str_faaa[] = { 0x7740, 0 }; +static const unichar_t str_faab[] = { 0x78cc, 0 }; +static const unichar_t str_faac[] = { 0x7ab1, 0 }; +static const unichar_t str_faad[] = { 0x7bc0, 0 }; +static const unichar_t str_faae[] = { 0x7c7b, 0 }; +static const unichar_t str_faaf[] = { 0x7d5b, 0 }; +static const unichar_t str_fab0[] = { 0x7df4, 0 }; +static const unichar_t str_fab1[] = { 0x7f3e, 0 }; +static const unichar_t str_fab2[] = { 0x8005, 0 }; +static const unichar_t str_fab3[] = { 0x8352, 0 }; +static const unichar_t str_fab4[] = { 0x83ef, 0 }; +static const unichar_t str_fab5[] = { 0x8779, 0 }; +static const unichar_t str_fab6[] = { 0x8941, 0 }; +static const unichar_t str_fab7[] = { 0x8986, 0 }; +static const unichar_t str_fab8[] = { 0x8996, 0 }; +static const unichar_t str_fab9[] = { 0x8abf, 0 }; +static const unichar_t str_faba[] = { 0x8af8, 0 }; +static const unichar_t str_fabb[] = { 0x8acb, 0 }; +static const unichar_t str_fabc[] = { 0x8b01, 0 }; +static const unichar_t str_fabd[] = { 0x8afe, 0 }; +static const unichar_t str_fabe[] = { 0x8aed, 0 }; +static const unichar_t str_fabf[] = { 0x8b39, 0 }; +static const unichar_t str_fac0[] = { 0x8b8a, 0 }; +static const unichar_t str_fac1[] = { 0x8d08, 0 }; +static const unichar_t str_fac2[] = { 0x8f38, 0 }; +static const unichar_t str_fac3[] = { 0x9072, 0 }; +static const unichar_t str_fac4[] = { 0x9199, 0 }; +static const unichar_t str_fac5[] = { 0x9276, 0 }; +static const unichar_t str_fac6[] = { 0x967c, 0 }; +static const unichar_t str_fac7[] = { 0x96e3, 0 }; +static const unichar_t str_fac8[] = { 0x9756, 0 }; +static const unichar_t str_fac9[] = { 0x97db, 0 }; +static const unichar_t str_faca[] = { 0x97ff, 0 }; +static const unichar_t str_facb[] = { 0x980b, 0 }; +static const unichar_t str_facc[] = { 0x983b, 0 }; +static const unichar_t str_facd[] = { 0x9b12, 0 }; +static const unichar_t str_face[] = { 0x9f9c, 0 }; +static const unichar_t str_facf[] = { 0x2284a, 0 }; +static const unichar_t str_fad0[] = { 0x22844, 0 }; +static const unichar_t str_fad1[] = { 0x233d5, 0 }; +static const unichar_t str_fad2[] = { 0x3b9d, 0 }; +static const unichar_t str_fad3[] = { 0x4018, 0 }; +static const unichar_t str_fad4[] = { 0x4039, 0 }; +static const unichar_t str_fad5[] = { 0x25249, 0 }; +static const unichar_t str_fad6[] = { 0x25cd0, 0 }; +static const unichar_t str_fad7[] = { 0x27ed3, 0 }; +static const unichar_t str_fad8[] = { 0x9f43, 0 }; +static const unichar_t str_fad9[] = { 0x9f8e, 0 }; +static const unichar_t str_fb00[] = { 0x0066, 0x0066, 0 }; +static const unichar_t str_fb01[] = { 0x0066, 0x0069, 0 }; +static const unichar_t str_fb02[] = { 0x0066, 0x006c, 0 }; +static const unichar_t str_fb03[] = { 0x0066, 0x0066, 0x0069, 0 }; +static const unichar_t str_fb04[] = { 0x0066, 0x0066, 0x006c, 0 }; +static const unichar_t str_fb05[] = { 0x017f, 0x0074, 0 }; +static const unichar_t str_fb06[] = { 0x0073, 0x0074, 0 }; +static const unichar_t str_fb13[] = { 0x0574, 0x0576, 0 }; +static const unichar_t str_fb14[] = { 0x0574, 0x0565, 0 }; +static const unichar_t str_fb15[] = { 0x0574, 0x056b, 0 }; +static const unichar_t str_fb16[] = { 0x057e, 0x0576, 0 }; +static const unichar_t str_fb17[] = { 0x0574, 0x056d, 0 }; +static const unichar_t str_fb1d[] = { 0x05d9, 0x05b4, 0 }; +static const unichar_t str_fb1f[] = { 0x05f2, 0x05b7, 0 }; +static const unichar_t str_fb20[] = { 0x05e2, 0 }; +static const unichar_t str_fb21[] = { 0x05d0, 0 }; +static const unichar_t str_fb22[] = { 0x05d3, 0 }; +static const unichar_t str_fb23[] = { 0x05d4, 0 }; +static const unichar_t str_fb24[] = { 0x05db, 0 }; +static const unichar_t str_fb25[] = { 0x05dc, 0 }; +static const unichar_t str_fb26[] = { 0x05dd, 0 }; +static const unichar_t str_fb27[] = { 0x05e8, 0 }; +static const unichar_t str_fb28[] = { 0x05ea, 0 }; +static const unichar_t str_fb29[] = { 0x002b, 0 }; +static const unichar_t str_fb2a[] = { 0x05e9, 0x05c1, 0 }; +static const unichar_t str_fb2b[] = { 0x05e9, 0x05c2, 0 }; +static const unichar_t str_fb2c[] = { 0xfb49, 0x05c1, 0 }; +static const unichar_t str_fb2d[] = { 0xfb49, 0x05c2, 0 }; +static const unichar_t str_fb2e[] = { 0x05d0, 0x05b7, 0 }; +static const unichar_t str_fb2f[] = { 0x05d0, 0x05b8, 0 }; +static const unichar_t str_fb30[] = { 0x05d0, 0x05bc, 0 }; +static const unichar_t str_fb31[] = { 0x05d1, 0x05bc, 0 }; +static const unichar_t str_fb32[] = { 0x05d2, 0x05bc, 0 }; +static const unichar_t str_fb33[] = { 0x05d3, 0x05bc, 0 }; +static const unichar_t str_fb34[] = { 0x05d4, 0x05bc, 0 }; +static const unichar_t str_fb35[] = { 0x05d5, 0x05bc, 0 }; +static const unichar_t str_fb36[] = { 0x05d6, 0x05bc, 0 }; +static const unichar_t str_fb38[] = { 0x05d8, 0x05bc, 0 }; +static const unichar_t str_fb39[] = { 0x05d9, 0x05bc, 0 }; +static const unichar_t str_fb3a[] = { 0x05da, 0x05bc, 0 }; +static const unichar_t str_fb3b[] = { 0x05db, 0x05bc, 0 }; +static const unichar_t str_fb3c[] = { 0x05dc, 0x05bc, 0 }; +static const unichar_t str_fb3e[] = { 0x05de, 0x05bc, 0 }; +static const unichar_t str_fb40[] = { 0x05e0, 0x05bc, 0 }; +static const unichar_t str_fb41[] = { 0x05e1, 0x05bc, 0 }; +static const unichar_t str_fb43[] = { 0x05e3, 0x05bc, 0 }; +static const unichar_t str_fb44[] = { 0x05e4, 0x05bc, 0 }; +static const unichar_t str_fb46[] = { 0x05e6, 0x05bc, 0 }; +static const unichar_t str_fb47[] = { 0x05e7, 0x05bc, 0 }; +static const unichar_t str_fb48[] = { 0x05e8, 0x05bc, 0 }; +static const unichar_t str_fb49[] = { 0x05e9, 0x05bc, 0 }; +static const unichar_t str_fb4a[] = { 0x05ea, 0x05bc, 0 }; +static const unichar_t str_fb4b[] = { 0x05d5, 0x05b9, 0 }; +static const unichar_t str_fb4c[] = { 0x05d1, 0x05bf, 0 }; +static const unichar_t str_fb4d[] = { 0x05db, 0x05bf, 0 }; +static const unichar_t str_fb4e[] = { 0x05e4, 0x05bf, 0 }; +static const unichar_t str_fb4f[] = { 0x05d0, 0x05dc, 0 }; +static const unichar_t str_fb50[] = { 0x0671, 0 }; +static const unichar_t str_fb51[] = { 0x0671, 0 }; +static const unichar_t str_fb52[] = { 0x067b, 0 }; +static const unichar_t str_fb53[] = { 0x067b, 0 }; +static const unichar_t str_fb54[] = { 0x067b, 0 }; +static const unichar_t str_fb55[] = { 0x067b, 0 }; +static const unichar_t str_fb56[] = { 0x067e, 0 }; +static const unichar_t str_fb57[] = { 0x067e, 0 }; +static const unichar_t str_fb58[] = { 0x067e, 0 }; +static const unichar_t str_fb59[] = { 0x067e, 0 }; +static const unichar_t str_fb5a[] = { 0x0680, 0 }; +static const unichar_t str_fb5b[] = { 0x0680, 0 }; +static const unichar_t str_fb5c[] = { 0x0680, 0 }; +static const unichar_t str_fb5d[] = { 0x0680, 0 }; +static const unichar_t str_fb5e[] = { 0x067a, 0 }; +static const unichar_t str_fb5f[] = { 0x067a, 0 }; +static const unichar_t str_fb60[] = { 0x067a, 0 }; +static const unichar_t str_fb61[] = { 0x067a, 0 }; +static const unichar_t str_fb62[] = { 0x067f, 0 }; +static const unichar_t str_fb63[] = { 0x067f, 0 }; +static const unichar_t str_fb64[] = { 0x067f, 0 }; +static const unichar_t str_fb65[] = { 0x067f, 0 }; +static const unichar_t str_fb66[] = { 0x0679, 0 }; +static const unichar_t str_fb67[] = { 0x0679, 0 }; +static const unichar_t str_fb68[] = { 0x0679, 0 }; +static const unichar_t str_fb69[] = { 0x0679, 0 }; +static const unichar_t str_fb6a[] = { 0x06a4, 0 }; +static const unichar_t str_fb6b[] = { 0x06a4, 0 }; +static const unichar_t str_fb6c[] = { 0x06a4, 0 }; +static const unichar_t str_fb6d[] = { 0x06a4, 0 }; +static const unichar_t str_fb6e[] = { 0x06a6, 0 }; +static const unichar_t str_fb6f[] = { 0x06a6, 0 }; +static const unichar_t str_fb70[] = { 0x06a6, 0 }; +static const unichar_t str_fb71[] = { 0x06a6, 0 }; +static const unichar_t str_fb72[] = { 0x0684, 0 }; +static const unichar_t str_fb73[] = { 0x0684, 0 }; +static const unichar_t str_fb74[] = { 0x0684, 0 }; +static const unichar_t str_fb75[] = { 0x0684, 0 }; +static const unichar_t str_fb76[] = { 0x0683, 0 }; +static const unichar_t str_fb77[] = { 0x0683, 0 }; +static const unichar_t str_fb78[] = { 0x0683, 0 }; +static const unichar_t str_fb79[] = { 0x0683, 0 }; +static const unichar_t str_fb7a[] = { 0x0686, 0 }; +static const unichar_t str_fb7b[] = { 0x0686, 0 }; +static const unichar_t str_fb7c[] = { 0x0686, 0 }; +static const unichar_t str_fb7d[] = { 0x0686, 0 }; +static const unichar_t str_fb7e[] = { 0x0687, 0 }; +static const unichar_t str_fb7f[] = { 0x0687, 0 }; +static const unichar_t str_fb80[] = { 0x0687, 0 }; +static const unichar_t str_fb81[] = { 0x0687, 0 }; +static const unichar_t str_fb82[] = { 0x068d, 0 }; +static const unichar_t str_fb83[] = { 0x068d, 0 }; +static const unichar_t str_fb84[] = { 0x068c, 0 }; +static const unichar_t str_fb85[] = { 0x068c, 0 }; +static const unichar_t str_fb86[] = { 0x068e, 0 }; +static const unichar_t str_fb87[] = { 0x068e, 0 }; +static const unichar_t str_fb88[] = { 0x0688, 0 }; +static const unichar_t str_fb89[] = { 0x0688, 0 }; +static const unichar_t str_fb8a[] = { 0x0698, 0 }; +static const unichar_t str_fb8b[] = { 0x0698, 0 }; +static const unichar_t str_fb8c[] = { 0x0691, 0 }; +static const unichar_t str_fb8d[] = { 0x0691, 0 }; +static const unichar_t str_fb8e[] = { 0x06a9, 0 }; +static const unichar_t str_fb8f[] = { 0x06a9, 0 }; +static const unichar_t str_fb90[] = { 0x06a9, 0 }; +static const unichar_t str_fb91[] = { 0x06a9, 0 }; +static const unichar_t str_fb92[] = { 0x06af, 0 }; +static const unichar_t str_fb93[] = { 0x06af, 0 }; +static const unichar_t str_fb94[] = { 0x06af, 0 }; +static const unichar_t str_fb95[] = { 0x06af, 0 }; +static const unichar_t str_fb96[] = { 0x06b3, 0 }; +static const unichar_t str_fb97[] = { 0x06b3, 0 }; +static const unichar_t str_fb98[] = { 0x06b3, 0 }; +static const unichar_t str_fb99[] = { 0x06b3, 0 }; +static const unichar_t str_fb9a[] = { 0x06b1, 0 }; +static const unichar_t str_fb9b[] = { 0x06b1, 0 }; +static const unichar_t str_fb9c[] = { 0x06b1, 0 }; +static const unichar_t str_fb9d[] = { 0x06b1, 0 }; +static const unichar_t str_fb9e[] = { 0x06ba, 0 }; +static const unichar_t str_fb9f[] = { 0x06ba, 0 }; +static const unichar_t str_fba0[] = { 0x06bb, 0 }; +static const unichar_t str_fba1[] = { 0x06bb, 0 }; +static const unichar_t str_fba2[] = { 0x06bb, 0 }; +static const unichar_t str_fba3[] = { 0x06bb, 0 }; +static const unichar_t str_fba4[] = { 0x06c0, 0 }; +static const unichar_t str_fba5[] = { 0x06c0, 0 }; +static const unichar_t str_fba6[] = { 0x06c1, 0 }; +static const unichar_t str_fba7[] = { 0x06c1, 0 }; +static const unichar_t str_fba8[] = { 0x06c1, 0 }; +static const unichar_t str_fba9[] = { 0x06c1, 0 }; +static const unichar_t str_fbaa[] = { 0x06be, 0 }; +static const unichar_t str_fbab[] = { 0x06be, 0 }; +static const unichar_t str_fbac[] = { 0x06be, 0 }; +static const unichar_t str_fbad[] = { 0x06be, 0 }; +static const unichar_t str_fbae[] = { 0x06d2, 0 }; +static const unichar_t str_fbaf[] = { 0x06d2, 0 }; +static const unichar_t str_fbb0[] = { 0x06d3, 0 }; +static const unichar_t str_fbb1[] = { 0x06d3, 0 }; +static const unichar_t str_fbd3[] = { 0x06ad, 0 }; +static const unichar_t str_fbd4[] = { 0x06ad, 0 }; +static const unichar_t str_fbd5[] = { 0x06ad, 0 }; +static const unichar_t str_fbd6[] = { 0x06ad, 0 }; +static const unichar_t str_fbd7[] = { 0x06c7, 0 }; +static const unichar_t str_fbd8[] = { 0x06c7, 0 }; +static const unichar_t str_fbd9[] = { 0x06c6, 0 }; +static const unichar_t str_fbda[] = { 0x06c6, 0 }; +static const unichar_t str_fbdb[] = { 0x06c8, 0 }; +static const unichar_t str_fbdc[] = { 0x06c8, 0 }; +static const unichar_t str_fbdd[] = { 0x0677, 0 }; +static const unichar_t str_fbde[] = { 0x06cb, 0 }; +static const unichar_t str_fbdf[] = { 0x06cb, 0 }; +static const unichar_t str_fbe0[] = { 0x06c5, 0 }; +static const unichar_t str_fbe1[] = { 0x06c5, 0 }; +static const unichar_t str_fbe2[] = { 0x06c9, 0 }; +static const unichar_t str_fbe3[] = { 0x06c9, 0 }; +static const unichar_t str_fbe4[] = { 0x06d0, 0 }; +static const unichar_t str_fbe5[] = { 0x06d0, 0 }; +static const unichar_t str_fbe6[] = { 0x06d0, 0 }; +static const unichar_t str_fbe7[] = { 0x06d0, 0 }; +static const unichar_t str_fbe8[] = { 0x0649, 0 }; +static const unichar_t str_fbe9[] = { 0x0649, 0 }; +static const unichar_t str_fbea[] = { 0x0626, 0x0627, 0 }; +static const unichar_t str_fbeb[] = { 0x0626, 0x0627, 0 }; +static const unichar_t str_fbec[] = { 0x0626, 0x06d5, 0 }; +static const unichar_t str_fbed[] = { 0x0626, 0x06d5, 0 }; +static const unichar_t str_fbee[] = { 0x0626, 0x0648, 0 }; +static const unichar_t str_fbef[] = { 0x0626, 0x0648, 0 }; +static const unichar_t str_fbf0[] = { 0x0626, 0x06c7, 0 }; +static const unichar_t str_fbf1[] = { 0x0626, 0x06c7, 0 }; +static const unichar_t str_fbf2[] = { 0x0626, 0x06c6, 0 }; +static const unichar_t str_fbf3[] = { 0x0626, 0x06c6, 0 }; +static const unichar_t str_fbf4[] = { 0x0626, 0x06c8, 0 }; +static const unichar_t str_fbf5[] = { 0x0626, 0x06c8, 0 }; +static const unichar_t str_fbf6[] = { 0x0626, 0x06d0, 0 }; +static const unichar_t str_fbf7[] = { 0x0626, 0x06d0, 0 }; +static const unichar_t str_fbf8[] = { 0x0626, 0x06d0, 0 }; +static const unichar_t str_fbf9[] = { 0x0626, 0x0649, 0 }; +static const unichar_t str_fbfa[] = { 0x0626, 0x0649, 0 }; +static const unichar_t str_fbfb[] = { 0x0626, 0x0649, 0 }; +static const unichar_t str_fbfc[] = { 0x06cc, 0 }; +static const unichar_t str_fbfd[] = { 0x06cc, 0 }; +static const unichar_t str_fbfe[] = { 0x06cc, 0 }; +static const unichar_t str_fbff[] = { 0x06cc, 0 }; +static const unichar_t str_fc00[] = { 0x0626, 0x062c, 0 }; +static const unichar_t str_fc01[] = { 0x0626, 0x062d, 0 }; +static const unichar_t str_fc02[] = { 0x0626, 0x0645, 0 }; +static const unichar_t str_fc03[] = { 0x0626, 0x0649, 0 }; +static const unichar_t str_fc04[] = { 0x0626, 0x064a, 0 }; +static const unichar_t str_fc05[] = { 0x0628, 0x062c, 0 }; +static const unichar_t str_fc06[] = { 0x0628, 0x062d, 0 }; +static const unichar_t str_fc07[] = { 0x0628, 0x062e, 0 }; +static const unichar_t str_fc08[] = { 0x0628, 0x0645, 0 }; +static const unichar_t str_fc09[] = { 0x0628, 0x0649, 0 }; +static const unichar_t str_fc0a[] = { 0x0628, 0x064a, 0 }; +static const unichar_t str_fc0b[] = { 0x062a, 0x062c, 0 }; +static const unichar_t str_fc0c[] = { 0x062a, 0x062d, 0 }; +static const unichar_t str_fc0d[] = { 0x062a, 0x062e, 0 }; +static const unichar_t str_fc0e[] = { 0x062a, 0x0645, 0 }; +static const unichar_t str_fc0f[] = { 0x062a, 0x0649, 0 }; +static const unichar_t str_fc10[] = { 0x062a, 0x064a, 0 }; +static const unichar_t str_fc11[] = { 0x062b, 0x062c, 0 }; +static const unichar_t str_fc12[] = { 0x062b, 0x0645, 0 }; +static const unichar_t str_fc13[] = { 0x062b, 0x0649, 0 }; +static const unichar_t str_fc14[] = { 0x062b, 0x064a, 0 }; +static const unichar_t str_fc15[] = { 0x062c, 0x062d, 0 }; +static const unichar_t str_fc16[] = { 0x062c, 0x0645, 0 }; +static const unichar_t str_fc17[] = { 0x062d, 0x062c, 0 }; +static const unichar_t str_fc18[] = { 0x062d, 0x0645, 0 }; +static const unichar_t str_fc19[] = { 0x062e, 0x062c, 0 }; +static const unichar_t str_fc1a[] = { 0x062e, 0x062d, 0 }; +static const unichar_t str_fc1b[] = { 0x062e, 0x0645, 0 }; +static const unichar_t str_fc1c[] = { 0x0633, 0x062c, 0 }; +static const unichar_t str_fc1d[] = { 0x0633, 0x062d, 0 }; +static const unichar_t str_fc1e[] = { 0x0633, 0x062e, 0 }; +static const unichar_t str_fc1f[] = { 0x0633, 0x0645, 0 }; +static const unichar_t str_fc20[] = { 0x0635, 0x062d, 0 }; +static const unichar_t str_fc21[] = { 0x0635, 0x0645, 0 }; +static const unichar_t str_fc22[] = { 0x0636, 0x062c, 0 }; +static const unichar_t str_fc23[] = { 0x0636, 0x062d, 0 }; +static const unichar_t str_fc24[] = { 0x0636, 0x062e, 0 }; +static const unichar_t str_fc25[] = { 0x0636, 0x0645, 0 }; +static const unichar_t str_fc26[] = { 0x0637, 0x062d, 0 }; +static const unichar_t str_fc27[] = { 0x0637, 0x0645, 0 }; +static const unichar_t str_fc28[] = { 0x0638, 0x0645, 0 }; +static const unichar_t str_fc29[] = { 0x0639, 0x062c, 0 }; +static const unichar_t str_fc2a[] = { 0x0639, 0x0645, 0 }; +static const unichar_t str_fc2b[] = { 0x063a, 0x062c, 0 }; +static const unichar_t str_fc2c[] = { 0x063a, 0x0645, 0 }; +static const unichar_t str_fc2d[] = { 0x0641, 0x062c, 0 }; +static const unichar_t str_fc2e[] = { 0x0641, 0x062d, 0 }; +static const unichar_t str_fc2f[] = { 0x0641, 0x062e, 0 }; +static const unichar_t str_fc30[] = { 0x0641, 0x0645, 0 }; +static const unichar_t str_fc31[] = { 0x0641, 0x0649, 0 }; +static const unichar_t str_fc32[] = { 0x0641, 0x064a, 0 }; +static const unichar_t str_fc33[] = { 0x0642, 0x062d, 0 }; +static const unichar_t str_fc34[] = { 0x0642, 0x0645, 0 }; +static const unichar_t str_fc35[] = { 0x0642, 0x0649, 0 }; +static const unichar_t str_fc36[] = { 0x0642, 0x064a, 0 }; +static const unichar_t str_fc37[] = { 0x0643, 0x0627, 0 }; +static const unichar_t str_fc38[] = { 0x0643, 0x062c, 0 }; +static const unichar_t str_fc39[] = { 0x0643, 0x062d, 0 }; +static const unichar_t str_fc3a[] = { 0x0643, 0x062e, 0 }; +static const unichar_t str_fc3b[] = { 0x0643, 0x0644, 0 }; +static const unichar_t str_fc3c[] = { 0x0643, 0x0645, 0 }; +static const unichar_t str_fc3d[] = { 0x0643, 0x0649, 0 }; +static const unichar_t str_fc3e[] = { 0x0643, 0x064a, 0 }; +static const unichar_t str_fc3f[] = { 0x0644, 0x062c, 0 }; +static const unichar_t str_fc40[] = { 0x0644, 0x062d, 0 }; +static const unichar_t str_fc41[] = { 0x0644, 0x062e, 0 }; +static const unichar_t str_fc42[] = { 0x0644, 0x0645, 0 }; +static const unichar_t str_fc43[] = { 0x0644, 0x0649, 0 }; +static const unichar_t str_fc44[] = { 0x0644, 0x064a, 0 }; +static const unichar_t str_fc45[] = { 0x0645, 0x062c, 0 }; +static const unichar_t str_fc46[] = { 0x0645, 0x062d, 0 }; +static const unichar_t str_fc47[] = { 0x0645, 0x062e, 0 }; +static const unichar_t str_fc48[] = { 0x0645, 0x0645, 0 }; +static const unichar_t str_fc49[] = { 0x0645, 0x0649, 0 }; +static const unichar_t str_fc4a[] = { 0x0645, 0x064a, 0 }; +static const unichar_t str_fc4b[] = { 0x0646, 0x062c, 0 }; +static const unichar_t str_fc4c[] = { 0x0646, 0x062d, 0 }; +static const unichar_t str_fc4d[] = { 0x0646, 0x062e, 0 }; +static const unichar_t str_fc4e[] = { 0x0646, 0x0645, 0 }; +static const unichar_t str_fc4f[] = { 0x0646, 0x0649, 0 }; +static const unichar_t str_fc50[] = { 0x0646, 0x064a, 0 }; +static const unichar_t str_fc51[] = { 0x0647, 0x062c, 0 }; +static const unichar_t str_fc52[] = { 0x0647, 0x0645, 0 }; +static const unichar_t str_fc53[] = { 0x0647, 0x0649, 0 }; +static const unichar_t str_fc54[] = { 0x0647, 0x064a, 0 }; +static const unichar_t str_fc55[] = { 0x064a, 0x062c, 0 }; +static const unichar_t str_fc56[] = { 0x064a, 0x062d, 0 }; +static const unichar_t str_fc57[] = { 0x064a, 0x062e, 0 }; +static const unichar_t str_fc58[] = { 0x064a, 0x0645, 0 }; +static const unichar_t str_fc59[] = { 0x064a, 0x0649, 0 }; +static const unichar_t str_fc5a[] = { 0x064a, 0x064a, 0 }; +static const unichar_t str_fc5b[] = { 0x0630, 0x0670, 0 }; +static const unichar_t str_fc5c[] = { 0x0631, 0x0670, 0 }; +static const unichar_t str_fc5d[] = { 0x0649, 0x0670, 0 }; +static const unichar_t str_fc5e[] = { 0x0020, 0x064c, 0x0651, 0 }; +static const unichar_t str_fc5f[] = { 0x0020, 0x064d, 0x0651, 0 }; +static const unichar_t str_fc60[] = { 0x0020, 0x064e, 0x0651, 0 }; +static const unichar_t str_fc61[] = { 0x0020, 0x064f, 0x0651, 0 }; +static const unichar_t str_fc62[] = { 0x0020, 0x0650, 0x0651, 0 }; +static const unichar_t str_fc63[] = { 0x0020, 0x0651, 0x0670, 0 }; +static const unichar_t str_fc64[] = { 0x0626, 0x0631, 0 }; +static const unichar_t str_fc65[] = { 0x0626, 0x0632, 0 }; +static const unichar_t str_fc66[] = { 0x0626, 0x0645, 0 }; +static const unichar_t str_fc67[] = { 0x0626, 0x0646, 0 }; +static const unichar_t str_fc68[] = { 0x0626, 0x0649, 0 }; +static const unichar_t str_fc69[] = { 0x0626, 0x064a, 0 }; +static const unichar_t str_fc6a[] = { 0x0628, 0x0631, 0 }; +static const unichar_t str_fc6b[] = { 0x0628, 0x0632, 0 }; +static const unichar_t str_fc6c[] = { 0x0628, 0x0645, 0 }; +static const unichar_t str_fc6d[] = { 0x0628, 0x0646, 0 }; +static const unichar_t str_fc6e[] = { 0x0628, 0x0649, 0 }; +static const unichar_t str_fc6f[] = { 0x0628, 0x064a, 0 }; +static const unichar_t str_fc70[] = { 0x062a, 0x0631, 0 }; +static const unichar_t str_fc71[] = { 0x062a, 0x0632, 0 }; +static const unichar_t str_fc72[] = { 0x062a, 0x0645, 0 }; +static const unichar_t str_fc73[] = { 0x062a, 0x0646, 0 }; +static const unichar_t str_fc74[] = { 0x062a, 0x0649, 0 }; +static const unichar_t str_fc75[] = { 0x062a, 0x064a, 0 }; +static const unichar_t str_fc76[] = { 0x062b, 0x0631, 0 }; +static const unichar_t str_fc77[] = { 0x062b, 0x0632, 0 }; +static const unichar_t str_fc78[] = { 0x062b, 0x0645, 0 }; +static const unichar_t str_fc79[] = { 0x062b, 0x0646, 0 }; +static const unichar_t str_fc7a[] = { 0x062b, 0x0649, 0 }; +static const unichar_t str_fc7b[] = { 0x062b, 0x064a, 0 }; +static const unichar_t str_fc7c[] = { 0x0641, 0x0649, 0 }; +static const unichar_t str_fc7d[] = { 0x0641, 0x064a, 0 }; +static const unichar_t str_fc7e[] = { 0x0642, 0x0649, 0 }; +static const unichar_t str_fc7f[] = { 0x0642, 0x064a, 0 }; +static const unichar_t str_fc80[] = { 0x0643, 0x0627, 0 }; +static const unichar_t str_fc81[] = { 0x0643, 0x0644, 0 }; +static const unichar_t str_fc82[] = { 0x0643, 0x0645, 0 }; +static const unichar_t str_fc83[] = { 0x0643, 0x0649, 0 }; +static const unichar_t str_fc84[] = { 0x0643, 0x064a, 0 }; +static const unichar_t str_fc85[] = { 0x0644, 0x0645, 0 }; +static const unichar_t str_fc86[] = { 0x0644, 0x0649, 0 }; +static const unichar_t str_fc87[] = { 0x0644, 0x064a, 0 }; +static const unichar_t str_fc88[] = { 0x0645, 0x0627, 0 }; +static const unichar_t str_fc89[] = { 0x0645, 0x0645, 0 }; +static const unichar_t str_fc8a[] = { 0x0646, 0x0631, 0 }; +static const unichar_t str_fc8b[] = { 0x0646, 0x0632, 0 }; +static const unichar_t str_fc8c[] = { 0x0646, 0x0645, 0 }; +static const unichar_t str_fc8d[] = { 0x0646, 0x0646, 0 }; +static const unichar_t str_fc8e[] = { 0x0646, 0x0649, 0 }; +static const unichar_t str_fc8f[] = { 0x0646, 0x064a, 0 }; +static const unichar_t str_fc90[] = { 0x0649, 0x0670, 0 }; +static const unichar_t str_fc91[] = { 0x064a, 0x0631, 0 }; +static const unichar_t str_fc92[] = { 0x064a, 0x0632, 0 }; +static const unichar_t str_fc93[] = { 0x064a, 0x0645, 0 }; +static const unichar_t str_fc94[] = { 0x064a, 0x0646, 0 }; +static const unichar_t str_fc95[] = { 0x064a, 0x0649, 0 }; +static const unichar_t str_fc96[] = { 0x064a, 0x064a, 0 }; +static const unichar_t str_fc97[] = { 0x0626, 0x062c, 0 }; +static const unichar_t str_fc98[] = { 0x0626, 0x062d, 0 }; +static const unichar_t str_fc99[] = { 0x0626, 0x062e, 0 }; +static const unichar_t str_fc9a[] = { 0x0626, 0x0645, 0 }; +static const unichar_t str_fc9b[] = { 0x0626, 0x0647, 0 }; +static const unichar_t str_fc9c[] = { 0x0628, 0x062c, 0 }; +static const unichar_t str_fc9d[] = { 0x0628, 0x062d, 0 }; +static const unichar_t str_fc9e[] = { 0x0628, 0x062e, 0 }; +static const unichar_t str_fc9f[] = { 0x0628, 0x0645, 0 }; +static const unichar_t str_fca0[] = { 0x0628, 0x0647, 0 }; +static const unichar_t str_fca1[] = { 0x062a, 0x062c, 0 }; +static const unichar_t str_fca2[] = { 0x062a, 0x062d, 0 }; +static const unichar_t str_fca3[] = { 0x062a, 0x062e, 0 }; +static const unichar_t str_fca4[] = { 0x062a, 0x0645, 0 }; +static const unichar_t str_fca5[] = { 0x062a, 0x0647, 0 }; +static const unichar_t str_fca6[] = { 0x062b, 0x0645, 0 }; +static const unichar_t str_fca7[] = { 0x062c, 0x062d, 0 }; +static const unichar_t str_fca8[] = { 0x062c, 0x0645, 0 }; +static const unichar_t str_fca9[] = { 0x062d, 0x062c, 0 }; +static const unichar_t str_fcaa[] = { 0x062d, 0x0645, 0 }; +static const unichar_t str_fcab[] = { 0x062e, 0x062c, 0 }; +static const unichar_t str_fcac[] = { 0x062e, 0x0645, 0 }; +static const unichar_t str_fcad[] = { 0x0633, 0x062c, 0 }; +static const unichar_t str_fcae[] = { 0x0633, 0x062d, 0 }; +static const unichar_t str_fcaf[] = { 0x0633, 0x062e, 0 }; +static const unichar_t str_fcb0[] = { 0x0633, 0x0645, 0 }; +static const unichar_t str_fcb1[] = { 0x0635, 0x062d, 0 }; +static const unichar_t str_fcb2[] = { 0x0635, 0x062e, 0 }; +static const unichar_t str_fcb3[] = { 0x0635, 0x0645, 0 }; +static const unichar_t str_fcb4[] = { 0x0636, 0x062c, 0 }; +static const unichar_t str_fcb5[] = { 0x0636, 0x062d, 0 }; +static const unichar_t str_fcb6[] = { 0x0636, 0x062e, 0 }; +static const unichar_t str_fcb7[] = { 0x0636, 0x0645, 0 }; +static const unichar_t str_fcb8[] = { 0x0637, 0x062d, 0 }; +static const unichar_t str_fcb9[] = { 0x0638, 0x0645, 0 }; +static const unichar_t str_fcba[] = { 0x0639, 0x062c, 0 }; +static const unichar_t str_fcbb[] = { 0x0639, 0x0645, 0 }; +static const unichar_t str_fcbc[] = { 0x063a, 0x062c, 0 }; +static const unichar_t str_fcbd[] = { 0x063a, 0x0645, 0 }; +static const unichar_t str_fcbe[] = { 0x0641, 0x062c, 0 }; +static const unichar_t str_fcbf[] = { 0x0641, 0x062d, 0 }; +static const unichar_t str_fcc0[] = { 0x0641, 0x062e, 0 }; +static const unichar_t str_fcc1[] = { 0x0641, 0x0645, 0 }; +static const unichar_t str_fcc2[] = { 0x0642, 0x062d, 0 }; +static const unichar_t str_fcc3[] = { 0x0642, 0x0645, 0 }; +static const unichar_t str_fcc4[] = { 0x0643, 0x062c, 0 }; +static const unichar_t str_fcc5[] = { 0x0643, 0x062d, 0 }; +static const unichar_t str_fcc6[] = { 0x0643, 0x062e, 0 }; +static const unichar_t str_fcc7[] = { 0x0643, 0x0644, 0 }; +static const unichar_t str_fcc8[] = { 0x0643, 0x0645, 0 }; +static const unichar_t str_fcc9[] = { 0x0644, 0x062c, 0 }; +static const unichar_t str_fcca[] = { 0x0644, 0x062d, 0 }; +static const unichar_t str_fccb[] = { 0x0644, 0x062e, 0 }; +static const unichar_t str_fccc[] = { 0x0644, 0x0645, 0 }; +static const unichar_t str_fccd[] = { 0x0644, 0x0647, 0 }; +static const unichar_t str_fcce[] = { 0x0645, 0x062c, 0 }; +static const unichar_t str_fccf[] = { 0x0645, 0x062d, 0 }; +static const unichar_t str_fcd0[] = { 0x0645, 0x062e, 0 }; +static const unichar_t str_fcd1[] = { 0x0645, 0x0645, 0 }; +static const unichar_t str_fcd2[] = { 0x0646, 0x062c, 0 }; +static const unichar_t str_fcd3[] = { 0x0646, 0x062d, 0 }; +static const unichar_t str_fcd4[] = { 0x0646, 0x062e, 0 }; +static const unichar_t str_fcd5[] = { 0x0646, 0x0645, 0 }; +static const unichar_t str_fcd6[] = { 0x0646, 0x0647, 0 }; +static const unichar_t str_fcd7[] = { 0x0647, 0x062c, 0 }; +static const unichar_t str_fcd8[] = { 0x0647, 0x0645, 0 }; +static const unichar_t str_fcd9[] = { 0x0647, 0x0670, 0 }; +static const unichar_t str_fcda[] = { 0x064a, 0x062c, 0 }; +static const unichar_t str_fcdb[] = { 0x064a, 0x062d, 0 }; +static const unichar_t str_fcdc[] = { 0x064a, 0x062e, 0 }; +static const unichar_t str_fcdd[] = { 0x064a, 0x0645, 0 }; +static const unichar_t str_fcde[] = { 0x064a, 0x0647, 0 }; +static const unichar_t str_fcdf[] = { 0x0626, 0x0645, 0 }; +static const unichar_t str_fce0[] = { 0x0626, 0x0647, 0 }; +static const unichar_t str_fce1[] = { 0x0628, 0x0645, 0 }; +static const unichar_t str_fce2[] = { 0x0628, 0x0647, 0 }; +static const unichar_t str_fce3[] = { 0x062a, 0x0645, 0 }; +static const unichar_t str_fce4[] = { 0x062a, 0x0647, 0 }; +static const unichar_t str_fce5[] = { 0x062b, 0x0645, 0 }; +static const unichar_t str_fce6[] = { 0x062b, 0x0647, 0 }; +static const unichar_t str_fce7[] = { 0x0633, 0x0645, 0 }; +static const unichar_t str_fce8[] = { 0x0633, 0x0647, 0 }; +static const unichar_t str_fce9[] = { 0x0634, 0x0645, 0 }; +static const unichar_t str_fcea[] = { 0x0634, 0x0647, 0 }; +static const unichar_t str_fceb[] = { 0x0643, 0x0644, 0 }; +static const unichar_t str_fcec[] = { 0x0643, 0x0645, 0 }; +static const unichar_t str_fced[] = { 0x0644, 0x0645, 0 }; +static const unichar_t str_fcee[] = { 0x0646, 0x0645, 0 }; +static const unichar_t str_fcef[] = { 0x0646, 0x0647, 0 }; +static const unichar_t str_fcf0[] = { 0x064a, 0x0645, 0 }; +static const unichar_t str_fcf1[] = { 0x064a, 0x0647, 0 }; +static const unichar_t str_fcf2[] = { 0x0640, 0x064e, 0x0651, 0 }; +static const unichar_t str_fcf3[] = { 0x0640, 0x064f, 0x0651, 0 }; +static const unichar_t str_fcf4[] = { 0x0640, 0x0650, 0x0651, 0 }; +static const unichar_t str_fcf5[] = { 0x0637, 0x0649, 0 }; +static const unichar_t str_fcf6[] = { 0x0637, 0x064a, 0 }; +static const unichar_t str_fcf7[] = { 0x0639, 0x0649, 0 }; +static const unichar_t str_fcf8[] = { 0x0639, 0x064a, 0 }; +static const unichar_t str_fcf9[] = { 0x063a, 0x0649, 0 }; +static const unichar_t str_fcfa[] = { 0x063a, 0x064a, 0 }; +static const unichar_t str_fcfb[] = { 0x0633, 0x0649, 0 }; +static const unichar_t str_fcfc[] = { 0x0633, 0x064a, 0 }; +static const unichar_t str_fcfd[] = { 0x0634, 0x0649, 0 }; +static const unichar_t str_fcfe[] = { 0x0634, 0x064a, 0 }; +static const unichar_t str_fcff[] = { 0x062d, 0x0649, 0 }; +static const unichar_t str_fd00[] = { 0x062d, 0x064a, 0 }; +static const unichar_t str_fd01[] = { 0x062c, 0x0649, 0 }; +static const unichar_t str_fd02[] = { 0x062c, 0x064a, 0 }; +static const unichar_t str_fd03[] = { 0x062e, 0x0649, 0 }; +static const unichar_t str_fd04[] = { 0x062e, 0x064a, 0 }; +static const unichar_t str_fd05[] = { 0x0635, 0x0649, 0 }; +static const unichar_t str_fd06[] = { 0x0635, 0x064a, 0 }; +static const unichar_t str_fd07[] = { 0x0636, 0x0649, 0 }; +static const unichar_t str_fd08[] = { 0x0636, 0x064a, 0 }; +static const unichar_t str_fd09[] = { 0x0634, 0x062c, 0 }; +static const unichar_t str_fd0a[] = { 0x0634, 0x062d, 0 }; +static const unichar_t str_fd0b[] = { 0x0634, 0x062e, 0 }; +static const unichar_t str_fd0c[] = { 0x0634, 0x0645, 0 }; +static const unichar_t str_fd0d[] = { 0x0634, 0x0631, 0 }; +static const unichar_t str_fd0e[] = { 0x0633, 0x0631, 0 }; +static const unichar_t str_fd0f[] = { 0x0635, 0x0631, 0 }; +static const unichar_t str_fd10[] = { 0x0636, 0x0631, 0 }; +static const unichar_t str_fd11[] = { 0x0637, 0x0649, 0 }; +static const unichar_t str_fd12[] = { 0x0637, 0x064a, 0 }; +static const unichar_t str_fd13[] = { 0x0639, 0x0649, 0 }; +static const unichar_t str_fd14[] = { 0x0639, 0x064a, 0 }; +static const unichar_t str_fd15[] = { 0x063a, 0x0649, 0 }; +static const unichar_t str_fd16[] = { 0x063a, 0x064a, 0 }; +static const unichar_t str_fd17[] = { 0x0633, 0x0649, 0 }; +static const unichar_t str_fd18[] = { 0x0633, 0x064a, 0 }; +static const unichar_t str_fd19[] = { 0x0634, 0x0649, 0 }; +static const unichar_t str_fd1a[] = { 0x0634, 0x064a, 0 }; +static const unichar_t str_fd1b[] = { 0x062d, 0x0649, 0 }; +static const unichar_t str_fd1c[] = { 0x062d, 0x064a, 0 }; +static const unichar_t str_fd1d[] = { 0x062c, 0x0649, 0 }; +static const unichar_t str_fd1e[] = { 0x062c, 0x064a, 0 }; +static const unichar_t str_fd1f[] = { 0x062e, 0x0649, 0 }; +static const unichar_t str_fd20[] = { 0x062e, 0x064a, 0 }; +static const unichar_t str_fd21[] = { 0x0635, 0x0649, 0 }; +static const unichar_t str_fd22[] = { 0x0635, 0x064a, 0 }; +static const unichar_t str_fd23[] = { 0x0636, 0x0649, 0 }; +static const unichar_t str_fd24[] = { 0x0636, 0x064a, 0 }; +static const unichar_t str_fd25[] = { 0x0634, 0x062c, 0 }; +static const unichar_t str_fd26[] = { 0x0634, 0x062d, 0 }; +static const unichar_t str_fd27[] = { 0x0634, 0x062e, 0 }; +static const unichar_t str_fd28[] = { 0x0634, 0x0645, 0 }; +static const unichar_t str_fd29[] = { 0x0634, 0x0631, 0 }; +static const unichar_t str_fd2a[] = { 0x0633, 0x0631, 0 }; +static const unichar_t str_fd2b[] = { 0x0635, 0x0631, 0 }; +static const unichar_t str_fd2c[] = { 0x0636, 0x0631, 0 }; +static const unichar_t str_fd2d[] = { 0x0634, 0x062c, 0 }; +static const unichar_t str_fd2e[] = { 0x0634, 0x062d, 0 }; +static const unichar_t str_fd2f[] = { 0x0634, 0x062e, 0 }; +static const unichar_t str_fd30[] = { 0x0634, 0x0645, 0 }; +static const unichar_t str_fd31[] = { 0x0633, 0x0647, 0 }; +static const unichar_t str_fd32[] = { 0x0634, 0x0647, 0 }; +static const unichar_t str_fd33[] = { 0x0637, 0x0645, 0 }; +static const unichar_t str_fd34[] = { 0x0633, 0x062c, 0 }; +static const unichar_t str_fd35[] = { 0x0633, 0x062d, 0 }; +static const unichar_t str_fd36[] = { 0x0633, 0x062e, 0 }; +static const unichar_t str_fd37[] = { 0x0634, 0x062c, 0 }; +static const unichar_t str_fd38[] = { 0x0634, 0x062d, 0 }; +static const unichar_t str_fd39[] = { 0x0634, 0x062e, 0 }; +static const unichar_t str_fd3a[] = { 0x0637, 0x0645, 0 }; +static const unichar_t str_fd3b[] = { 0x0638, 0x0645, 0 }; +static const unichar_t str_fd3c[] = { 0x0627, 0x064b, 0 }; +static const unichar_t str_fd3d[] = { 0x0627, 0x064b, 0 }; +static const unichar_t str_fd50[] = { 0x062a, 0x062c, 0x0645, 0 }; +static const unichar_t str_fd51[] = { 0x062a, 0x062d, 0x062c, 0 }; +static const unichar_t str_fd52[] = { 0x062a, 0x062d, 0x062c, 0 }; +static const unichar_t str_fd53[] = { 0x062a, 0x062d, 0x0645, 0 }; +static const unichar_t str_fd54[] = { 0x062a, 0x062e, 0x0645, 0 }; +static const unichar_t str_fd55[] = { 0x062a, 0x0645, 0x062c, 0 }; +static const unichar_t str_fd56[] = { 0x062a, 0x0645, 0x062d, 0 }; +static const unichar_t str_fd57[] = { 0x062a, 0x0645, 0x062e, 0 }; +static const unichar_t str_fd58[] = { 0x062c, 0x0645, 0x062d, 0 }; +static const unichar_t str_fd59[] = { 0x062c, 0x0645, 0x062d, 0 }; +static const unichar_t str_fd5a[] = { 0x062d, 0x0645, 0x064a, 0 }; +static const unichar_t str_fd5b[] = { 0x062d, 0x0645, 0x0649, 0 }; +static const unichar_t str_fd5c[] = { 0x0633, 0x062d, 0x062c, 0 }; +static const unichar_t str_fd5d[] = { 0x0633, 0x062c, 0x062d, 0 }; +static const unichar_t str_fd5e[] = { 0x0633, 0x062c, 0x0649, 0 }; +static const unichar_t str_fd5f[] = { 0x0633, 0x0645, 0x062d, 0 }; +static const unichar_t str_fd60[] = { 0x0633, 0x0645, 0x062d, 0 }; +static const unichar_t str_fd61[] = { 0x0633, 0x0645, 0x062c, 0 }; +static const unichar_t str_fd62[] = { 0x0633, 0x0645, 0x0645, 0 }; +static const unichar_t str_fd63[] = { 0x0633, 0x0645, 0x0645, 0 }; +static const unichar_t str_fd64[] = { 0x0635, 0x062d, 0x062d, 0 }; +static const unichar_t str_fd65[] = { 0x0635, 0x062d, 0x062d, 0 }; +static const unichar_t str_fd66[] = { 0x0635, 0x0645, 0x0645, 0 }; +static const unichar_t str_fd67[] = { 0x0634, 0x062d, 0x0645, 0 }; +static const unichar_t str_fd68[] = { 0x0634, 0x062d, 0x0645, 0 }; +static const unichar_t str_fd69[] = { 0x0634, 0x062c, 0x064a, 0 }; +static const unichar_t str_fd6a[] = { 0x0634, 0x0645, 0x062e, 0 }; +static const unichar_t str_fd6b[] = { 0x0634, 0x0645, 0x062e, 0 }; +static const unichar_t str_fd6c[] = { 0x0634, 0x0645, 0x0645, 0 }; +static const unichar_t str_fd6d[] = { 0x0634, 0x0645, 0x0645, 0 }; +static const unichar_t str_fd6e[] = { 0x0636, 0x062d, 0x0649, 0 }; +static const unichar_t str_fd6f[] = { 0x0636, 0x062e, 0x0645, 0 }; +static const unichar_t str_fd70[] = { 0x0636, 0x062e, 0x0645, 0 }; +static const unichar_t str_fd71[] = { 0x0637, 0x0645, 0x062d, 0 }; +static const unichar_t str_fd72[] = { 0x0637, 0x0645, 0x062d, 0 }; +static const unichar_t str_fd73[] = { 0x0637, 0x0645, 0x0645, 0 }; +static const unichar_t str_fd74[] = { 0x0637, 0x0645, 0x064a, 0 }; +static const unichar_t str_fd75[] = { 0x0639, 0x062c, 0x0645, 0 }; +static const unichar_t str_fd76[] = { 0x0639, 0x0645, 0x0645, 0 }; +static const unichar_t str_fd77[] = { 0x0639, 0x0645, 0x0645, 0 }; +static const unichar_t str_fd78[] = { 0x0639, 0x0645, 0x0649, 0 }; +static const unichar_t str_fd79[] = { 0x063a, 0x0645, 0x0645, 0 }; +static const unichar_t str_fd7a[] = { 0x063a, 0x0645, 0x064a, 0 }; +static const unichar_t str_fd7b[] = { 0x063a, 0x0645, 0x0649, 0 }; +static const unichar_t str_fd7c[] = { 0x0641, 0x062e, 0x0645, 0 }; +static const unichar_t str_fd7d[] = { 0x0641, 0x062e, 0x0645, 0 }; +static const unichar_t str_fd7e[] = { 0x0642, 0x0645, 0x062d, 0 }; +static const unichar_t str_fd7f[] = { 0x0642, 0x0645, 0x0645, 0 }; +static const unichar_t str_fd80[] = { 0x0644, 0x062d, 0x0645, 0 }; +static const unichar_t str_fd81[] = { 0x0644, 0x062d, 0x064a, 0 }; +static const unichar_t str_fd82[] = { 0x0644, 0x062d, 0x0649, 0 }; +static const unichar_t str_fd83[] = { 0x0644, 0x062c, 0x062c, 0 }; +static const unichar_t str_fd84[] = { 0x0644, 0x062c, 0x062c, 0 }; +static const unichar_t str_fd85[] = { 0x0644, 0x062e, 0x0645, 0 }; +static const unichar_t str_fd86[] = { 0x0644, 0x062e, 0x0645, 0 }; +static const unichar_t str_fd87[] = { 0x0644, 0x0645, 0x062d, 0 }; +static const unichar_t str_fd88[] = { 0x0644, 0x0645, 0x062d, 0 }; +static const unichar_t str_fd89[] = { 0x0645, 0x062d, 0x062c, 0 }; +static const unichar_t str_fd8a[] = { 0x0645, 0x062d, 0x0645, 0 }; +static const unichar_t str_fd8b[] = { 0x0645, 0x062d, 0x064a, 0 }; +static const unichar_t str_fd8c[] = { 0x0645, 0x062c, 0x062d, 0 }; +static const unichar_t str_fd8d[] = { 0x0645, 0x062c, 0x0645, 0 }; +static const unichar_t str_fd8e[] = { 0x0645, 0x062e, 0x062c, 0 }; +static const unichar_t str_fd8f[] = { 0x0645, 0x062e, 0x0645, 0 }; +static const unichar_t str_fd92[] = { 0x0645, 0x062c, 0x062e, 0 }; +static const unichar_t str_fd93[] = { 0x0647, 0x0645, 0x062c, 0 }; +static const unichar_t str_fd94[] = { 0x0647, 0x0645, 0x0645, 0 }; +static const unichar_t str_fd95[] = { 0x0646, 0x062d, 0x0645, 0 }; +static const unichar_t str_fd96[] = { 0x0646, 0x062d, 0x0649, 0 }; +static const unichar_t str_fd97[] = { 0x0646, 0x062c, 0x0645, 0 }; +static const unichar_t str_fd98[] = { 0x0646, 0x062c, 0x0645, 0 }; +static const unichar_t str_fd99[] = { 0x0646, 0x062c, 0x0649, 0 }; +static const unichar_t str_fd9a[] = { 0x0646, 0x0645, 0x064a, 0 }; +static const unichar_t str_fd9b[] = { 0x0646, 0x0645, 0x0649, 0 }; +static const unichar_t str_fd9c[] = { 0x064a, 0x0645, 0x0645, 0 }; +static const unichar_t str_fd9d[] = { 0x064a, 0x0645, 0x0645, 0 }; +static const unichar_t str_fd9e[] = { 0x0628, 0x062e, 0x064a, 0 }; +static const unichar_t str_fd9f[] = { 0x062a, 0x062c, 0x064a, 0 }; +static const unichar_t str_fda0[] = { 0x062a, 0x062c, 0x0649, 0 }; +static const unichar_t str_fda1[] = { 0x062a, 0x062e, 0x064a, 0 }; +static const unichar_t str_fda2[] = { 0x062a, 0x062e, 0x0649, 0 }; +static const unichar_t str_fda3[] = { 0x062a, 0x0645, 0x064a, 0 }; +static const unichar_t str_fda4[] = { 0x062a, 0x0645, 0x0649, 0 }; +static const unichar_t str_fda5[] = { 0x062c, 0x0645, 0x064a, 0 }; +static const unichar_t str_fda6[] = { 0x062c, 0x062d, 0x0649, 0 }; +static const unichar_t str_fda7[] = { 0x062c, 0x0645, 0x0649, 0 }; +static const unichar_t str_fda8[] = { 0x0633, 0x062e, 0x0649, 0 }; +static const unichar_t str_fda9[] = { 0x0635, 0x062d, 0x064a, 0 }; +static const unichar_t str_fdaa[] = { 0x0634, 0x062d, 0x064a, 0 }; +static const unichar_t str_fdab[] = { 0x0636, 0x062d, 0x064a, 0 }; +static const unichar_t str_fdac[] = { 0x0644, 0x062c, 0x064a, 0 }; +static const unichar_t str_fdad[] = { 0x0644, 0x0645, 0x064a, 0 }; +static const unichar_t str_fdae[] = { 0x064a, 0x062d, 0x064a, 0 }; +static const unichar_t str_fdaf[] = { 0x064a, 0x062c, 0x064a, 0 }; +static const unichar_t str_fdb0[] = { 0x064a, 0x0645, 0x064a, 0 }; +static const unichar_t str_fdb1[] = { 0x0645, 0x0645, 0x064a, 0 }; +static const unichar_t str_fdb2[] = { 0x0642, 0x0645, 0x064a, 0 }; +static const unichar_t str_fdb3[] = { 0x0646, 0x062d, 0x064a, 0 }; +static const unichar_t str_fdb4[] = { 0x0642, 0x0645, 0x062d, 0 }; +static const unichar_t str_fdb5[] = { 0x0644, 0x062d, 0x0645, 0 }; +static const unichar_t str_fdb6[] = { 0x0639, 0x0645, 0x064a, 0 }; +static const unichar_t str_fdb7[] = { 0x0643, 0x0645, 0x064a, 0 }; +static const unichar_t str_fdb8[] = { 0x0646, 0x062c, 0x062d, 0 }; +static const unichar_t str_fdb9[] = { 0x0645, 0x062e, 0x064a, 0 }; +static const unichar_t str_fdba[] = { 0x0644, 0x062c, 0x0645, 0 }; +static const unichar_t str_fdbb[] = { 0x0643, 0x0645, 0x0645, 0 }; +static const unichar_t str_fdbc[] = { 0x0644, 0x062c, 0x0645, 0 }; +static const unichar_t str_fdbd[] = { 0x0646, 0x062c, 0x062d, 0 }; +static const unichar_t str_fdbe[] = { 0x062c, 0x062d, 0x064a, 0 }; +static const unichar_t str_fdbf[] = { 0x062d, 0x062c, 0x064a, 0 }; +static const unichar_t str_fdc0[] = { 0x0645, 0x062c, 0x064a, 0 }; +static const unichar_t str_fdc1[] = { 0x0641, 0x0645, 0x064a, 0 }; +static const unichar_t str_fdc2[] = { 0x0628, 0x062d, 0x064a, 0 }; +static const unichar_t str_fdc3[] = { 0x0643, 0x0645, 0x0645, 0 }; +static const unichar_t str_fdc4[] = { 0x0639, 0x062c, 0x0645, 0 }; +static const unichar_t str_fdc5[] = { 0x0635, 0x0645, 0x0645, 0 }; +static const unichar_t str_fdc6[] = { 0x0633, 0x062e, 0x064a, 0 }; +static const unichar_t str_fdc7[] = { 0x0646, 0x062c, 0x064a, 0 }; +static const unichar_t str_fdf0[] = { 0x0635, 0x0644, 0x06d2, 0 }; +static const unichar_t str_fdf1[] = { 0x0642, 0x0644, 0x06d2, 0 }; +static const unichar_t str_fdf2[] = { 0x0627, 0x0644, 0x0644, 0x0647, 0 }; +static const unichar_t str_fdf3[] = { 0x0627, 0x0643, 0x0628, 0x0631, 0 }; +static const unichar_t str_fdf4[] = { 0x0645, 0x062d, 0x0645, 0x062f, 0 }; +static const unichar_t str_fdf5[] = { 0x0635, 0x0644, 0x0639, 0x0645, 0 }; +static const unichar_t str_fdf6[] = { 0x0631, 0x0633, 0x0648, 0x0644, 0 }; +static const unichar_t str_fdf7[] = { 0x0639, 0x0644, 0x064a, 0x0647, 0 }; +static const unichar_t str_fdf8[] = { 0x0648, 0x0633, 0x0644, 0x0645, 0 }; +static const unichar_t str_fdf9[] = { 0x0635, 0x0644, 0x0649, 0 }; +static const unichar_t str_fdfa[] = { 0x0635, 0x0644, 0x0649, 0x0020, 0x0627, 0x0644, 0x0644, 0x0647, 0x0020, 0x0639, 0x0644, 0x064a, 0x0647, 0x0020, 0x0648, 0x0633, 0x0644, 0x0645, 0 }; +static const unichar_t str_fdfb[] = { 0x062c, 0x0644, 0x0020, 0x062c, 0x0644, 0x0627, 0x0644, 0x0647, 0 }; +static const unichar_t str_fdfc[] = { 0x0631, 0x06cc, 0x0627, 0x0644, 0 }; +static const unichar_t str_fe10[] = { 0x002c, 0 }; +static const unichar_t str_fe11[] = { 0x3001, 0 }; +static const unichar_t str_fe12[] = { 0x3002, 0 }; +static const unichar_t str_fe13[] = { 0x003a, 0 }; +static const unichar_t str_fe14[] = { 0x003b, 0 }; +static const unichar_t str_fe15[] = { 0x0021, 0 }; +static const unichar_t str_fe16[] = { 0x003f, 0 }; +static const unichar_t str_fe17[] = { 0x3016, 0 }; +static const unichar_t str_fe18[] = { 0x3017, 0 }; +static const unichar_t str_fe19[] = { 0x2026, 0 }; +static const unichar_t str_fe30[] = { 0x2025, 0 }; +static const unichar_t str_fe31[] = { 0x2014, 0 }; +static const unichar_t str_fe32[] = { 0x2013, 0 }; +static const unichar_t str_fe33[] = { 0x005f, 0 }; +static const unichar_t str_fe34[] = { 0x005f, 0 }; +static const unichar_t str_fe35[] = { 0x0028, 0 }; +static const unichar_t str_fe36[] = { 0x0029, 0 }; +static const unichar_t str_fe37[] = { 0x007b, 0 }; +static const unichar_t str_fe38[] = { 0x007d, 0 }; +static const unichar_t str_fe39[] = { 0x3014, 0 }; +static const unichar_t str_fe3a[] = { 0x3015, 0 }; +static const unichar_t str_fe3b[] = { 0x3010, 0 }; +static const unichar_t str_fe3c[] = { 0x3011, 0 }; +static const unichar_t str_fe3d[] = { 0x300a, 0 }; +static const unichar_t str_fe3e[] = { 0x300b, 0 }; +static const unichar_t str_fe3f[] = { 0x3008, 0 }; +static const unichar_t str_fe40[] = { 0x3009, 0 }; +static const unichar_t str_fe41[] = { 0x300c, 0 }; +static const unichar_t str_fe42[] = { 0x300d, 0 }; +static const unichar_t str_fe43[] = { 0x300e, 0 }; +static const unichar_t str_fe44[] = { 0x300f, 0 }; +static const unichar_t str_fe47[] = { 0x005b, 0 }; +static const unichar_t str_fe48[] = { 0x005d, 0 }; +static const unichar_t str_fe49[] = { 0x203e, 0 }; +static const unichar_t str_fe4a[] = { 0x203e, 0 }; +static const unichar_t str_fe4b[] = { 0x203e, 0 }; +static const unichar_t str_fe4c[] = { 0x203e, 0 }; +static const unichar_t str_fe4d[] = { 0x005f, 0 }; +static const unichar_t str_fe4e[] = { 0x005f, 0 }; +static const unichar_t str_fe4f[] = { 0x005f, 0 }; +static const unichar_t str_fe50[] = { 0x002c, 0 }; +static const unichar_t str_fe51[] = { 0x3001, 0 }; +static const unichar_t str_fe52[] = { 0x002e, 0 }; +static const unichar_t str_fe54[] = { 0x003b, 0 }; +static const unichar_t str_fe55[] = { 0x003a, 0 }; +static const unichar_t str_fe56[] = { 0x003f, 0 }; +static const unichar_t str_fe57[] = { 0x0021, 0 }; +static const unichar_t str_fe58[] = { 0x2014, 0 }; +static const unichar_t str_fe59[] = { 0x0028, 0 }; +static const unichar_t str_fe5a[] = { 0x0029, 0 }; +static const unichar_t str_fe5b[] = { 0x007b, 0 }; +static const unichar_t str_fe5c[] = { 0x007d, 0 }; +static const unichar_t str_fe5d[] = { 0x3014, 0 }; +static const unichar_t str_fe5e[] = { 0x3015, 0 }; +static const unichar_t str_fe5f[] = { 0x0023, 0 }; +static const unichar_t str_fe60[] = { 0x0026, 0 }; +static const unichar_t str_fe61[] = { 0x002a, 0 }; +static const unichar_t str_fe62[] = { 0x002b, 0 }; +static const unichar_t str_fe63[] = { 0x002d, 0 }; +static const unichar_t str_fe64[] = { 0x003c, 0 }; +static const unichar_t str_fe65[] = { 0x003e, 0 }; +static const unichar_t str_fe66[] = { 0x003d, 0 }; +static const unichar_t str_fe68[] = { 0x005c, 0 }; +static const unichar_t str_fe69[] = { 0x0024, 0 }; +static const unichar_t str_fe6a[] = { 0x0025, 0 }; +static const unichar_t str_fe6b[] = { 0x0040, 0 }; +static const unichar_t str_fe70[] = { 0x0020, 0x064b, 0 }; +static const unichar_t str_fe71[] = { 0x0640, 0x064b, 0 }; +static const unichar_t str_fe72[] = { 0x0020, 0x064c, 0 }; +static const unichar_t str_fe74[] = { 0x0020, 0x064d, 0 }; +static const unichar_t str_fe76[] = { 0x0020, 0x064e, 0 }; +static const unichar_t str_fe77[] = { 0x0640, 0x064e, 0 }; +static const unichar_t str_fe78[] = { 0x0020, 0x064f, 0 }; +static const unichar_t str_fe79[] = { 0x0640, 0x064f, 0 }; +static const unichar_t str_fe7a[] = { 0x0020, 0x0650, 0 }; +static const unichar_t str_fe7b[] = { 0x0640, 0x0650, 0 }; +static const unichar_t str_fe7c[] = { 0x0020, 0x0651, 0 }; +static const unichar_t str_fe7d[] = { 0x0640, 0x0651, 0 }; +static const unichar_t str_fe7e[] = { 0x0020, 0x0652, 0 }; +static const unichar_t str_fe7f[] = { 0x0640, 0x0652, 0 }; +static const unichar_t str_fe80[] = { 0x0621, 0 }; +static const unichar_t str_fe81[] = { 0x0622, 0 }; +static const unichar_t str_fe82[] = { 0x0622, 0 }; +static const unichar_t str_fe83[] = { 0x0623, 0 }; +static const unichar_t str_fe84[] = { 0x0623, 0 }; +static const unichar_t str_fe85[] = { 0x0624, 0 }; +static const unichar_t str_fe86[] = { 0x0624, 0 }; +static const unichar_t str_fe87[] = { 0x0625, 0 }; +static const unichar_t str_fe88[] = { 0x0625, 0 }; +static const unichar_t str_fe89[] = { 0x0626, 0 }; +static const unichar_t str_fe8a[] = { 0x0626, 0 }; +static const unichar_t str_fe8b[] = { 0x0626, 0 }; +static const unichar_t str_fe8c[] = { 0x0626, 0 }; +static const unichar_t str_fe8d[] = { 0x0627, 0 }; +static const unichar_t str_fe8e[] = { 0x0627, 0 }; +static const unichar_t str_fe8f[] = { 0x0628, 0 }; +static const unichar_t str_fe90[] = { 0x0628, 0 }; +static const unichar_t str_fe91[] = { 0x0628, 0 }; +static const unichar_t str_fe92[] = { 0x0628, 0 }; +static const unichar_t str_fe93[] = { 0x0629, 0 }; +static const unichar_t str_fe94[] = { 0x0629, 0 }; +static const unichar_t str_fe95[] = { 0x062a, 0 }; +static const unichar_t str_fe96[] = { 0x062a, 0 }; +static const unichar_t str_fe97[] = { 0x062a, 0 }; +static const unichar_t str_fe98[] = { 0x062a, 0 }; +static const unichar_t str_fe99[] = { 0x062b, 0 }; +static const unichar_t str_fe9a[] = { 0x062b, 0 }; +static const unichar_t str_fe9b[] = { 0x062b, 0 }; +static const unichar_t str_fe9c[] = { 0x062b, 0 }; +static const unichar_t str_fe9d[] = { 0x062c, 0 }; +static const unichar_t str_fe9e[] = { 0x062c, 0 }; +static const unichar_t str_fe9f[] = { 0x062c, 0 }; +static const unichar_t str_fea0[] = { 0x062c, 0 }; +static const unichar_t str_fea1[] = { 0x062d, 0 }; +static const unichar_t str_fea2[] = { 0x062d, 0 }; +static const unichar_t str_fea3[] = { 0x062d, 0 }; +static const unichar_t str_fea4[] = { 0x062d, 0 }; +static const unichar_t str_fea5[] = { 0x062e, 0 }; +static const unichar_t str_fea6[] = { 0x062e, 0 }; +static const unichar_t str_fea7[] = { 0x062e, 0 }; +static const unichar_t str_fea8[] = { 0x062e, 0 }; +static const unichar_t str_fea9[] = { 0x062f, 0 }; +static const unichar_t str_feaa[] = { 0x062f, 0 }; +static const unichar_t str_feab[] = { 0x0630, 0 }; +static const unichar_t str_feac[] = { 0x0630, 0 }; +static const unichar_t str_fead[] = { 0x0631, 0 }; +static const unichar_t str_feae[] = { 0x0631, 0 }; +static const unichar_t str_feaf[] = { 0x0632, 0 }; +static const unichar_t str_feb0[] = { 0x0632, 0 }; +static const unichar_t str_feb1[] = { 0x0633, 0 }; +static const unichar_t str_feb2[] = { 0x0633, 0 }; +static const unichar_t str_feb3[] = { 0x0633, 0 }; +static const unichar_t str_feb4[] = { 0x0633, 0 }; +static const unichar_t str_feb5[] = { 0x0634, 0 }; +static const unichar_t str_feb6[] = { 0x0634, 0 }; +static const unichar_t str_feb7[] = { 0x0634, 0 }; +static const unichar_t str_feb8[] = { 0x0634, 0 }; +static const unichar_t str_feb9[] = { 0x0635, 0 }; +static const unichar_t str_feba[] = { 0x0635, 0 }; +static const unichar_t str_febb[] = { 0x0635, 0 }; +static const unichar_t str_febc[] = { 0x0635, 0 }; +static const unichar_t str_febd[] = { 0x0636, 0 }; +static const unichar_t str_febe[] = { 0x0636, 0 }; +static const unichar_t str_febf[] = { 0x0636, 0 }; +static const unichar_t str_fec0[] = { 0x0636, 0 }; +static const unichar_t str_fec1[] = { 0x0637, 0 }; +static const unichar_t str_fec2[] = { 0x0637, 0 }; +static const unichar_t str_fec3[] = { 0x0637, 0 }; +static const unichar_t str_fec4[] = { 0x0637, 0 }; +static const unichar_t str_fec5[] = { 0x0638, 0 }; +static const unichar_t str_fec6[] = { 0x0638, 0 }; +static const unichar_t str_fec7[] = { 0x0638, 0 }; +static const unichar_t str_fec8[] = { 0x0638, 0 }; +static const unichar_t str_fec9[] = { 0x0639, 0 }; +static const unichar_t str_feca[] = { 0x0639, 0 }; +static const unichar_t str_fecb[] = { 0x0639, 0 }; +static const unichar_t str_fecc[] = { 0x0639, 0 }; +static const unichar_t str_fecd[] = { 0x063a, 0 }; +static const unichar_t str_fece[] = { 0x063a, 0 }; +static const unichar_t str_fecf[] = { 0x063a, 0 }; +static const unichar_t str_fed0[] = { 0x063a, 0 }; +static const unichar_t str_fed1[] = { 0x0641, 0 }; +static const unichar_t str_fed2[] = { 0x0641, 0 }; +static const unichar_t str_fed3[] = { 0x0641, 0 }; +static const unichar_t str_fed4[] = { 0x0641, 0 }; +static const unichar_t str_fed5[] = { 0x0642, 0 }; +static const unichar_t str_fed6[] = { 0x0642, 0 }; +static const unichar_t str_fed7[] = { 0x0642, 0 }; +static const unichar_t str_fed8[] = { 0x0642, 0 }; +static const unichar_t str_fed9[] = { 0x0643, 0 }; +static const unichar_t str_feda[] = { 0x0643, 0 }; +static const unichar_t str_fedb[] = { 0x0643, 0 }; +static const unichar_t str_fedc[] = { 0x0643, 0 }; +static const unichar_t str_fedd[] = { 0x0644, 0 }; +static const unichar_t str_fede[] = { 0x0644, 0 }; +static const unichar_t str_fedf[] = { 0x0644, 0 }; +static const unichar_t str_fee0[] = { 0x0644, 0 }; +static const unichar_t str_fee1[] = { 0x0645, 0 }; +static const unichar_t str_fee2[] = { 0x0645, 0 }; +static const unichar_t str_fee3[] = { 0x0645, 0 }; +static const unichar_t str_fee4[] = { 0x0645, 0 }; +static const unichar_t str_fee5[] = { 0x0646, 0 }; +static const unichar_t str_fee6[] = { 0x0646, 0 }; +static const unichar_t str_fee7[] = { 0x0646, 0 }; +static const unichar_t str_fee8[] = { 0x0646, 0 }; +static const unichar_t str_fee9[] = { 0x0647, 0 }; +static const unichar_t str_feea[] = { 0x0647, 0 }; +static const unichar_t str_feeb[] = { 0x0647, 0 }; +static const unichar_t str_feec[] = { 0x0647, 0 }; +static const unichar_t str_feed[] = { 0x0648, 0 }; +static const unichar_t str_feee[] = { 0x0648, 0 }; +static const unichar_t str_feef[] = { 0x0649, 0 }; +static const unichar_t str_fef0[] = { 0x0649, 0 }; +static const unichar_t str_fef1[] = { 0x064a, 0 }; +static const unichar_t str_fef2[] = { 0x064a, 0 }; +static const unichar_t str_fef3[] = { 0x064a, 0 }; +static const unichar_t str_fef4[] = { 0x064a, 0 }; +static const unichar_t str_fef5[] = { 0x0644, 0x0622, 0 }; +static const unichar_t str_fef6[] = { 0x0644, 0x0622, 0 }; +static const unichar_t str_fef7[] = { 0x0644, 0x0623, 0 }; +static const unichar_t str_fef8[] = { 0x0644, 0x0623, 0 }; +static const unichar_t str_fef9[] = { 0x0644, 0x0625, 0 }; +static const unichar_t str_fefa[] = { 0x0644, 0x0625, 0 }; +static const unichar_t str_fefb[] = { 0x0644, 0x0627, 0 }; +static const unichar_t str_fefc[] = { 0x0644, 0x0627, 0 }; +static const unichar_t str_ff01[] = { 0x0021, 0 }; +static const unichar_t str_ff02[] = { 0x0022, 0 }; +static const unichar_t str_ff03[] = { 0x0023, 0 }; +static const unichar_t str_ff04[] = { 0x0024, 0 }; +static const unichar_t str_ff05[] = { 0x0025, 0 }; +static const unichar_t str_ff06[] = { 0x0026, 0 }; +static const unichar_t str_ff07[] = { 0x0027, 0 }; +static const unichar_t str_ff08[] = { 0x0028, 0 }; +static const unichar_t str_ff09[] = { 0x0029, 0 }; +static const unichar_t str_ff0a[] = { 0x002a, 0 }; +static const unichar_t str_ff0b[] = { 0x002b, 0 }; +static const unichar_t str_ff0c[] = { 0x002c, 0 }; +static const unichar_t str_ff0d[] = { 0x002d, 0 }; +static const unichar_t str_ff0e[] = { 0x002e, 0 }; +static const unichar_t str_ff0f[] = { 0x002f, 0 }; +static const unichar_t str_ff10[] = { 0x0030, 0 }; +static const unichar_t str_ff11[] = { 0x0031, 0 }; +static const unichar_t str_ff12[] = { 0x0032, 0 }; +static const unichar_t str_ff13[] = { 0x0033, 0 }; +static const unichar_t str_ff14[] = { 0x0034, 0 }; +static const unichar_t str_ff15[] = { 0x0035, 0 }; +static const unichar_t str_ff16[] = { 0x0036, 0 }; +static const unichar_t str_ff17[] = { 0x0037, 0 }; +static const unichar_t str_ff18[] = { 0x0038, 0 }; +static const unichar_t str_ff19[] = { 0x0039, 0 }; +static const unichar_t str_ff1a[] = { 0x003a, 0 }; +static const unichar_t str_ff1b[] = { 0x003b, 0 }; +static const unichar_t str_ff1c[] = { 0x003c, 0 }; +static const unichar_t str_ff1d[] = { 0x003d, 0 }; +static const unichar_t str_ff1e[] = { 0x003e, 0 }; +static const unichar_t str_ff1f[] = { 0x003f, 0 }; +static const unichar_t str_ff20[] = { 0x0040, 0 }; +static const unichar_t str_ff21[] = { 0x0041, 0 }; +static const unichar_t str_ff22[] = { 0x0042, 0 }; +static const unichar_t str_ff23[] = { 0x0043, 0 }; +static const unichar_t str_ff24[] = { 0x0044, 0 }; +static const unichar_t str_ff25[] = { 0x0045, 0 }; +static const unichar_t str_ff26[] = { 0x0046, 0 }; +static const unichar_t str_ff27[] = { 0x0047, 0 }; +static const unichar_t str_ff28[] = { 0x0048, 0 }; +static const unichar_t str_ff29[] = { 0x0049, 0 }; +static const unichar_t str_ff2a[] = { 0x004a, 0 }; +static const unichar_t str_ff2b[] = { 0x004b, 0 }; +static const unichar_t str_ff2c[] = { 0x004c, 0 }; +static const unichar_t str_ff2d[] = { 0x004d, 0 }; +static const unichar_t str_ff2e[] = { 0x004e, 0 }; +static const unichar_t str_ff2f[] = { 0x004f, 0 }; +static const unichar_t str_ff30[] = { 0x0050, 0 }; +static const unichar_t str_ff31[] = { 0x0051, 0 }; +static const unichar_t str_ff32[] = { 0x0052, 0 }; +static const unichar_t str_ff33[] = { 0x0053, 0 }; +static const unichar_t str_ff34[] = { 0x0054, 0 }; +static const unichar_t str_ff35[] = { 0x0055, 0 }; +static const unichar_t str_ff36[] = { 0x0056, 0 }; +static const unichar_t str_ff37[] = { 0x0057, 0 }; +static const unichar_t str_ff38[] = { 0x0058, 0 }; +static const unichar_t str_ff39[] = { 0x0059, 0 }; +static const unichar_t str_ff3a[] = { 0x005a, 0 }; +static const unichar_t str_ff3b[] = { 0x005b, 0 }; +static const unichar_t str_ff3c[] = { 0x005c, 0 }; +static const unichar_t str_ff3d[] = { 0x005d, 0 }; +static const unichar_t str_ff3e[] = { 0x005e, 0 }; +static const unichar_t str_ff3f[] = { 0x005f, 0 }; +static const unichar_t str_ff40[] = { 0x0060, 0 }; +static const unichar_t str_ff41[] = { 0x0061, 0 }; +static const unichar_t str_ff42[] = { 0x0062, 0 }; +static const unichar_t str_ff43[] = { 0x0063, 0 }; +static const unichar_t str_ff44[] = { 0x0064, 0 }; +static const unichar_t str_ff45[] = { 0x0065, 0 }; +static const unichar_t str_ff46[] = { 0x0066, 0 }; +static const unichar_t str_ff47[] = { 0x0067, 0 }; +static const unichar_t str_ff48[] = { 0x0068, 0 }; +static const unichar_t str_ff49[] = { 0x0069, 0 }; +static const unichar_t str_ff4a[] = { 0x006a, 0 }; +static const unichar_t str_ff4b[] = { 0x006b, 0 }; +static const unichar_t str_ff4c[] = { 0x006c, 0 }; +static const unichar_t str_ff4d[] = { 0x006d, 0 }; +static const unichar_t str_ff4e[] = { 0x006e, 0 }; +static const unichar_t str_ff4f[] = { 0x006f, 0 }; +static const unichar_t str_ff50[] = { 0x0070, 0 }; +static const unichar_t str_ff51[] = { 0x0071, 0 }; +static const unichar_t str_ff52[] = { 0x0072, 0 }; +static const unichar_t str_ff53[] = { 0x0073, 0 }; +static const unichar_t str_ff54[] = { 0x0074, 0 }; +static const unichar_t str_ff55[] = { 0x0075, 0 }; +static const unichar_t str_ff56[] = { 0x0076, 0 }; +static const unichar_t str_ff57[] = { 0x0077, 0 }; +static const unichar_t str_ff58[] = { 0x0078, 0 }; +static const unichar_t str_ff59[] = { 0x0079, 0 }; +static const unichar_t str_ff5a[] = { 0x007a, 0 }; +static const unichar_t str_ff5b[] = { 0x007b, 0 }; +static const unichar_t str_ff5c[] = { 0x007c, 0 }; +static const unichar_t str_ff5d[] = { 0x007d, 0 }; +static const unichar_t str_ff5e[] = { 0x007e, 0 }; +static const unichar_t str_ff5f[] = { 0x2985, 0 }; +static const unichar_t str_ff60[] = { 0x2986, 0 }; +static const unichar_t str_ff61[] = { 0x3002, 0 }; +static const unichar_t str_ff62[] = { 0x300c, 0 }; +static const unichar_t str_ff63[] = { 0x300d, 0 }; +static const unichar_t str_ff64[] = { 0x3001, 0 }; +static const unichar_t str_ff65[] = { 0x30fb, 0 }; +static const unichar_t str_ff66[] = { 0x30f2, 0 }; +static const unichar_t str_ff67[] = { 0x30a1, 0 }; +static const unichar_t str_ff68[] = { 0x30a3, 0 }; +static const unichar_t str_ff69[] = { 0x30a5, 0 }; +static const unichar_t str_ff6a[] = { 0x30a7, 0 }; +static const unichar_t str_ff6b[] = { 0x30a9, 0 }; +static const unichar_t str_ff6c[] = { 0x30e3, 0 }; +static const unichar_t str_ff6d[] = { 0x30e5, 0 }; +static const unichar_t str_ff6e[] = { 0x30e7, 0 }; +static const unichar_t str_ff6f[] = { 0x30c3, 0 }; +static const unichar_t str_ff70[] = { 0x30fc, 0 }; +static const unichar_t str_ff71[] = { 0x30a2, 0 }; +static const unichar_t str_ff72[] = { 0x30a4, 0 }; +static const unichar_t str_ff73[] = { 0x30a6, 0 }; +static const unichar_t str_ff74[] = { 0x30a8, 0 }; +static const unichar_t str_ff75[] = { 0x30aa, 0 }; +static const unichar_t str_ff76[] = { 0x30ab, 0 }; +static const unichar_t str_ff77[] = { 0x30ad, 0 }; +static const unichar_t str_ff78[] = { 0x30af, 0 }; +static const unichar_t str_ff79[] = { 0x30b1, 0 }; +static const unichar_t str_ff7a[] = { 0x30b3, 0 }; +static const unichar_t str_ff7b[] = { 0x30b5, 0 }; +static const unichar_t str_ff7c[] = { 0x30b7, 0 }; +static const unichar_t str_ff7d[] = { 0x30b9, 0 }; +static const unichar_t str_ff7e[] = { 0x30bb, 0 }; +static const unichar_t str_ff7f[] = { 0x30bd, 0 }; +static const unichar_t str_ff80[] = { 0x30bf, 0 }; +static const unichar_t str_ff81[] = { 0x30c1, 0 }; +static const unichar_t str_ff82[] = { 0x30c4, 0 }; +static const unichar_t str_ff83[] = { 0x30c6, 0 }; +static const unichar_t str_ff84[] = { 0x30c8, 0 }; +static const unichar_t str_ff85[] = { 0x30ca, 0 }; +static const unichar_t str_ff86[] = { 0x30cb, 0 }; +static const unichar_t str_ff87[] = { 0x30cc, 0 }; +static const unichar_t str_ff88[] = { 0x30cd, 0 }; +static const unichar_t str_ff89[] = { 0x30ce, 0 }; +static const unichar_t str_ff8a[] = { 0x30cf, 0 }; +static const unichar_t str_ff8b[] = { 0x30d2, 0 }; +static const unichar_t str_ff8c[] = { 0x30d5, 0 }; +static const unichar_t str_ff8d[] = { 0x30d8, 0 }; +static const unichar_t str_ff8e[] = { 0x30db, 0 }; +static const unichar_t str_ff8f[] = { 0x30de, 0 }; +static const unichar_t str_ff90[] = { 0x30df, 0 }; +static const unichar_t str_ff91[] = { 0x30e0, 0 }; +static const unichar_t str_ff92[] = { 0x30e1, 0 }; +static const unichar_t str_ff93[] = { 0x30e2, 0 }; +static const unichar_t str_ff94[] = { 0x30e4, 0 }; +static const unichar_t str_ff95[] = { 0x30e6, 0 }; +static const unichar_t str_ff96[] = { 0x30e8, 0 }; +static const unichar_t str_ff97[] = { 0x30e9, 0 }; +static const unichar_t str_ff98[] = { 0x30ea, 0 }; +static const unichar_t str_ff99[] = { 0x30eb, 0 }; +static const unichar_t str_ff9a[] = { 0x30ec, 0 }; +static const unichar_t str_ff9b[] = { 0x30ed, 0 }; +static const unichar_t str_ff9c[] = { 0x30ef, 0 }; +static const unichar_t str_ff9d[] = { 0x30f3, 0 }; +static const unichar_t str_ff9e[] = { 0x3099, 0 }; +static const unichar_t str_ff9f[] = { 0x309a, 0 }; +static const unichar_t str_ffa0[] = { 0x3164, 0 }; +static const unichar_t str_ffa1[] = { 0x3131, 0 }; +static const unichar_t str_ffa2[] = { 0x3132, 0 }; +static const unichar_t str_ffa3[] = { 0x3133, 0 }; +static const unichar_t str_ffa4[] = { 0x3134, 0 }; +static const unichar_t str_ffa5[] = { 0x3135, 0 }; +static const unichar_t str_ffa6[] = { 0x3136, 0 }; +static const unichar_t str_ffa7[] = { 0x3137, 0 }; +static const unichar_t str_ffa8[] = { 0x3138, 0 }; +static const unichar_t str_ffa9[] = { 0x3139, 0 }; +static const unichar_t str_ffaa[] = { 0x313a, 0 }; +static const unichar_t str_ffab[] = { 0x313b, 0 }; +static const unichar_t str_ffac[] = { 0x313c, 0 }; +static const unichar_t str_ffad[] = { 0x313d, 0 }; +static const unichar_t str_ffae[] = { 0x313e, 0 }; +static const unichar_t str_ffaf[] = { 0x313f, 0 }; +static const unichar_t str_ffb0[] = { 0x3140, 0 }; +static const unichar_t str_ffb1[] = { 0x3141, 0 }; +static const unichar_t str_ffb2[] = { 0x3142, 0 }; +static const unichar_t str_ffb3[] = { 0x3143, 0 }; +static const unichar_t str_ffb4[] = { 0x3144, 0 }; +static const unichar_t str_ffb5[] = { 0x3145, 0 }; +static const unichar_t str_ffb6[] = { 0x3146, 0 }; +static const unichar_t str_ffb7[] = { 0x3147, 0 }; +static const unichar_t str_ffb8[] = { 0x3148, 0 }; +static const unichar_t str_ffb9[] = { 0x3149, 0 }; +static const unichar_t str_ffba[] = { 0x314a, 0 }; +static const unichar_t str_ffbb[] = { 0x314b, 0 }; +static const unichar_t str_ffbc[] = { 0x314c, 0 }; +static const unichar_t str_ffbd[] = { 0x314d, 0 }; +static const unichar_t str_ffbe[] = { 0x314e, 0 }; +static const unichar_t str_ffc2[] = { 0x314f, 0 }; +static const unichar_t str_ffc3[] = { 0x3150, 0 }; +static const unichar_t str_ffc4[] = { 0x3151, 0 }; +static const unichar_t str_ffc5[] = { 0x3152, 0 }; +static const unichar_t str_ffc6[] = { 0x3153, 0 }; +static const unichar_t str_ffc7[] = { 0x3154, 0 }; +static const unichar_t str_ffca[] = { 0x3155, 0 }; +static const unichar_t str_ffcb[] = { 0x3156, 0 }; +static const unichar_t str_ffcc[] = { 0x3157, 0 }; +static const unichar_t str_ffcd[] = { 0x3158, 0 }; +static const unichar_t str_ffce[] = { 0x3159, 0 }; +static const unichar_t str_ffcf[] = { 0x315a, 0 }; +static const unichar_t str_ffd2[] = { 0x315b, 0 }; +static const unichar_t str_ffd3[] = { 0x315c, 0 }; +static const unichar_t str_ffd4[] = { 0x315d, 0 }; +static const unichar_t str_ffd5[] = { 0x315e, 0 }; +static const unichar_t str_ffd6[] = { 0x315f, 0 }; +static const unichar_t str_ffd7[] = { 0x3160, 0 }; +static const unichar_t str_ffda[] = { 0x3161, 0 }; +static const unichar_t str_ffdb[] = { 0x3162, 0 }; +static const unichar_t str_ffdc[] = { 0x3163, 0 }; +static const unichar_t str_ffe0[] = { 0x00a2, 0 }; +static const unichar_t str_ffe1[] = { 0x00a3, 0 }; +static const unichar_t str_ffe2[] = { 0x00ac, 0 }; +static const unichar_t str_ffe3[] = { 0x00af, 0 }; +static const unichar_t str_ffe4[] = { 0x00a6, 0 }; +static const unichar_t str_ffe5[] = { 0x00a5, 0 }; +static const unichar_t str_ffe6[] = { 0x20a9, 0 }; +static const unichar_t str_ffe8[] = { 0x2502, 0 }; +static const unichar_t str_ffe9[] = { 0x2190, 0 }; +static const unichar_t str_ffea[] = { 0x2191, 0 }; +static const unichar_t str_ffeb[] = { 0x2192, 0 }; +static const unichar_t str_ffec[] = { 0x2193, 0 }; +static const unichar_t str_ffed[] = { 0x25a0, 0 }; +static const unichar_t str_ffee[] = { 0x25cb, 0 }; + +static const unichar_t *const up_allzeros[256] = { NULL }; + +static const unichar_t * const tab_0[] = { +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_a0, +0, 0, 0, 0, 0, 0, 0, str_a8, +0, str_aa, +0, 0, 0, 0, str_af, +0, 0, str_b2, +str_b3, +str_b4, +str_b5, +0, 0, str_b8, +str_b9, +str_ba, +0, str_bc, +str_bd, +str_be, +0, str_c0, +str_c1, +str_c2, +str_c3, +str_c4, +str_c5, +0, str_c7, +str_c8, +str_c9, +str_ca, +str_cb, +str_cc, +str_cd, +str_ce, +str_cf, +0, str_d1, +str_d2, +str_d3, +str_d4, +str_d5, +str_d6, +0, 0, str_d9, +str_da, +str_db, +str_dc, +str_dd, +0, 0, str_e0, +str_e1, +str_e2, +str_e3, +str_e4, +str_e5, +0, str_e7, +str_e8, +str_e9, +str_ea, +str_eb, +str_ec, +str_ed, +str_ee, +str_ef, +0, str_f1, +str_f2, +str_f3, +str_f4, +str_f5, +str_f6, +0, 0, str_f9, +str_fa, +str_fb, +str_fc, +str_fd, +0, str_ff, +0}; + +static const unichar_t * const tab_1[] = { +str_100, +str_101, +str_102, +str_103, +str_104, +str_105, +str_106, +str_107, +str_108, +str_109, +str_10a, +str_10b, +str_10c, +str_10d, +str_10e, +str_10f, +str_110, +0, str_112, +str_113, +str_114, +str_115, +str_116, +str_117, +str_118, +str_119, +str_11a, +str_11b, +str_11c, +str_11d, +str_11e, +str_11f, +str_120, +str_121, +str_122, +str_123, +str_124, +str_125, +0, 0, str_128, +str_129, +str_12a, +str_12b, +str_12c, +str_12d, +str_12e, +str_12f, +str_130, +0, str_132, +str_133, +str_134, +str_135, +str_136, +str_137, +str_138, +str_139, +str_13a, +str_13b, +str_13c, +str_13d, +str_13e, +str_13f, +str_140, +0, 0, str_143, +str_144, +str_145, +str_146, +str_147, +str_148, +str_149, +0, 0, str_14c, +str_14d, +str_14e, +str_14f, +str_150, +str_151, +str_152, +str_153, +str_154, +str_155, +str_156, +str_157, +str_158, +str_159, +str_15a, +str_15b, +str_15c, +str_15d, +str_15e, +str_15f, +str_160, +str_161, +str_162, +str_163, +str_164, +str_165, +0, 0, str_168, +str_169, +str_16a, +str_16b, +str_16c, +str_16d, +str_16e, +str_16f, +str_170, +str_171, +str_172, +str_173, +str_174, +str_175, +str_176, +str_177, +str_178, +str_179, +str_17a, +str_17b, +str_17c, +str_17d, +str_17e, +str_17f, +0, 0, str_182, +0, 0, 0, 0, 0, 0, str_189, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_19e, +str_19f, +str_1a0, +str_1a1, +0, 0, 0, 0, 0, 0, 0, str_1a9, +0, 0, 0, 0, 0, str_1af, +str_1b0, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_1c0, +str_1c1, +0, 0, str_1c4, +str_1c5, +str_1c6, +str_1c7, +str_1c8, +str_1c9, +str_1ca, +str_1cb, +str_1cc, +str_1cd, +str_1ce, +str_1cf, +str_1d0, +str_1d1, +str_1d2, +str_1d3, +str_1d4, +str_1d5, +str_1d6, +str_1d7, +str_1d8, +str_1d9, +str_1da, +str_1db, +str_1dc, +0, str_1de, +str_1df, +str_1e0, +str_1e1, +str_1e2, +str_1e3, +0, 0, str_1e6, +str_1e7, +str_1e8, +str_1e9, +str_1ea, +str_1eb, +str_1ec, +str_1ed, +str_1ee, +str_1ef, +str_1f0, +str_1f1, +str_1f2, +str_1f3, +str_1f4, +str_1f5, +0, 0, str_1f8, +str_1f9, +str_1fa, +str_1fb, +str_1fc, +str_1fd, +str_1fe, +str_1ff, +0}; + +static const unichar_t * const tab_2[] = { +str_200, +str_201, +str_202, +str_203, +str_204, +str_205, +str_206, +str_207, +str_208, +str_209, +str_20a, +str_20b, +str_20c, +str_20d, +str_20e, +str_20f, +str_210, +str_211, +str_212, +str_213, +str_214, +str_215, +str_216, +str_217, +str_218, +str_219, +str_21a, +str_21b, +0, 0, str_21e, +str_21f, +0, 0, 0, 0, 0, 0, str_226, +str_227, +str_228, +str_229, +str_22a, +str_22b, +str_22c, +str_22d, +str_22e, +str_22f, +str_230, +str_231, +str_232, +str_233, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_269, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_278, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_292, +0, 0, 0, 0, 0, 0, str_299, +0, 0, str_29c, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_2b0, +str_2b1, +str_2b2, +str_2b3, +str_2b4, +str_2b5, +str_2b6, +str_2b7, +str_2b8, +str_2b9, +str_2ba, +0, str_2bc, +0, 0, 0, 0, 0, 0, 0, str_2c4, +0, str_2c6, +0, str_2c8, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_2d8, +str_2d9, +str_2da, +str_2db, +str_2dc, +str_2dd, +0, 0, str_2e0, +str_2e1, +str_2e2, +str_2e3, +str_2e4, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + +static const unichar_t * const tab_3[] = { +0, str_301, +str_302, +str_303, +0, 0, 0, 0, str_308, +0, str_30a, +str_30b, +0, 0, str_30e, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_327, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_340, +str_341, +0, str_343, +str_344, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_374, +str_375, +0, 0, 0, 0, str_37a, +0, 0, 0, str_37e, +0, 0, 0, 0, 0, str_384, +str_385, +str_386, +str_387, +str_388, +str_389, +str_38a, +0, str_38c, +0, str_38e, +str_38f, +str_390, +str_391, +str_392, +str_393, +0, str_395, +str_396, +str_397, +0, str_399, +str_39a, +0, str_39c, +str_39d, +0, str_39f, +0, str_3a1, +0, 0, str_3a4, +str_3a5, +0, str_3a7, +0, 0, str_3aa, +str_3ab, +str_3ac, +str_3ad, +str_3ae, +str_3af, +str_3b0, +0, 0, 0, 0, 0, 0, 0, 0, 0, str_3ba, +0, 0, 0, 0, str_3bf, +0, str_3c1, +0, 0, 0, 0, 0, str_3c7, +0, 0, str_3ca, +str_3cb, +str_3cc, +str_3cd, +str_3ce, +0, str_3d0, +str_3d1, +str_3d2, +str_3d3, +str_3d4, +str_3d5, +str_3d6, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_3f0, +str_3f1, +str_3f2, +0, str_3f4, +str_3f5, +0, 0, 0, str_3f9, +0, 0, 0, 0, 0, 0, 0}; + +static const unichar_t * const tab_4[] = { +str_400, +str_401, +0, str_403, +0, str_405, +str_406, +str_407, +str_408, +0, 0, 0, str_40c, +str_40d, +str_40e, +0, str_410, +0, str_412, +str_413, +0, str_415, +0, 0, 0, str_419, +str_41a, +0, str_41c, +str_41d, +str_41e, +str_41f, +str_420, +str_421, +str_422, +0, str_424, +str_425, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_430, +0, 0, 0, 0, str_435, +0, 0, 0, str_439, +str_43a, +0, 0, 0, str_43e, +str_43f, +str_440, +str_441, +0, str_443, +0, str_445, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_450, +str_451, +0, str_453, +0, str_455, +str_456, +str_457, +str_458, +0, 0, 0, str_45c, +str_45d, +str_45e, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_470, +str_471, +0, 0, 0, 0, str_476, +str_477, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_4ae, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_4c0, +str_4c1, +str_4c2, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_4d0, +str_4d1, +str_4d2, +str_4d3, +str_4d4, +str_4d5, +str_4d6, +str_4d7, +0, 0, str_4da, +str_4db, +str_4dc, +str_4dd, +str_4de, +str_4df, +str_4e0, +str_4e1, +str_4e2, +str_4e3, +str_4e4, +str_4e5, +str_4e6, +str_4e7, +str_4e8, +str_4e9, +str_4ea, +str_4eb, +str_4ec, +str_4ed, +str_4ee, +str_4ef, +str_4f0, +str_4f1, +str_4f2, +str_4f3, +str_4f4, +str_4f5, +0, 0, str_4f8, +str_4f9, +0, 0, 0, 0, 0, 0, 0}; + +static const unichar_t * const tab_5[] = { +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_54f, +0, 0, 0, 0, 0, str_555, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_570, +0, 0, 0, 0, 0, 0, 0, str_578, +0, str_57a, +0, 0, str_57d, +0, 0, 0, str_581, +str_582, +0, str_584, +str_585, +0, str_587, +0, str_589, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_5f0, +str_5f1, +str_5f2, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + +static const unichar_t * const tab_6[] = { +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_60c, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_621, +str_622, +str_623, +str_624, +str_625, +str_626, +str_627, +str_628, +str_629, +str_62a, +str_62b, +str_62c, +str_62d, +str_62e, +str_62f, +str_630, +str_631, +str_632, +str_633, +str_634, +str_635, +str_636, +str_637, +str_638, +str_639, +str_63a, +0, 0, 0, 0, 0, 0, str_641, +str_642, +str_643, +str_644, +str_645, +str_646, +str_647, +str_648, +str_649, +str_64a, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_66a, +0, str_66c, +str_66d, +0, 0, 0, str_671, +0, 0, 0, str_675, +str_676, +str_677, +str_678, +str_679, +str_67a, +str_67b, +0, 0, str_67e, +str_67f, +str_680, +0, 0, str_683, +str_684, +0, str_686, +str_687, +str_688, +0, 0, 0, str_68c, +str_68d, +str_68e, +0, 0, str_691, +0, 0, 0, 0, 0, 0, str_698, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_6a4, +0, str_6a6, +0, 0, str_6a9, +0, 0, 0, str_6ad, +0, str_6af, +0, str_6b1, +0, str_6b3, +0, 0, 0, 0, 0, 0, str_6ba, +str_6bb, +0, 0, str_6be, +0, str_6c0, +str_6c1, +str_6c2, +0, 0, str_6c5, +str_6c6, +str_6c7, +str_6c8, +str_6c9, +0, str_6cb, +str_6cc, +0, 0, 0, str_6d0, +0, str_6d2, +str_6d3, +str_6d4, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + +static const unichar_t * const tab_9[] = { +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_929, +0, 0, 0, 0, 0, 0, 0, str_931, +0, 0, str_934, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_958, +str_959, +str_95a, +str_95b, +str_95c, +str_95d, +str_95e, +str_95f, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_9cb, +str_9cc, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_9dc, +str_9dd, +0, str_9df, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + +static const unichar_t * const tab_a[] = { +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_a33, +0, 0, str_a36, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_a59, +str_a5a, +str_a5b, +0, 0, str_a5e, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + +static const unichar_t * const tab_b[] = { +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_b48, +0, 0, str_b4b, +str_b4c, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_b5c, +str_b5d, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_b94, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_bca, +str_bcb, +str_bcc, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + +static const unichar_t * const tab_c[] = { +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_c48, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_cc0, +0, 0, 0, 0, 0, 0, str_cc7, +str_cc8, +0, str_cca, +str_ccb, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + +static const unichar_t * const tab_d[] = { +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_d4a, +str_d4b, +str_d4c, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_dda, +0, str_ddc, +str_ddd, +str_dde, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + +static const unichar_t * const tab_e[] = { +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_e33, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_eb3, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_edc, +str_edd, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + +static const unichar_t * const tab_f[] = { +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_f0c, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_f43, +0, 0, 0, 0, 0, 0, 0, 0, 0, str_f4d, +0, 0, 0, 0, str_f52, +0, 0, 0, 0, str_f57, +0, 0, 0, 0, str_f5c, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_f69, +0, 0, 0, 0, 0, 0, 0, 0, 0, str_f73, +0, str_f75, +str_f76, +str_f77, +str_f78, +str_f79, +0, 0, 0, 0, 0, 0, 0, str_f81, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_f93, +0, 0, 0, 0, 0, 0, 0, 0, 0, str_f9d, +0, 0, 0, 0, str_fa2, +0, 0, 0, 0, str_fa7, +0, 0, 0, 0, str_fac, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_fb9, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + +static const unichar_t * const tab_10[] = { +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_1026, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_10fc, +0, 0, 0, 0}; + +static const unichar_t * const tab_11[] = { +0, str_1101, +0, 0, str_1104, +0, 0, 0, str_1108, +0, str_110a, +0, 0, str_110d, +0, 0, 0, 0, 0, str_1113, +str_1114, +str_1115, +str_1116, +str_1117, +str_1118, +str_1119, +str_111a, +str_111b, +str_111c, +str_111d, +str_111e, +str_111f, +str_1120, +str_1121, +str_1122, +str_1123, +str_1124, +str_1125, +str_1126, +str_1127, +str_1128, +str_1129, +str_112a, +str_112b, +str_112c, +str_112d, +str_112e, +str_112f, +str_1130, +str_1131, +str_1132, +str_1133, +str_1134, +str_1135, +str_1136, +str_1137, +str_1138, +str_1139, +str_113a, +str_113b, +0, str_113d, +0, str_113f, +0, str_1141, +str_1142, +str_1143, +str_1144, +str_1145, +str_1146, +str_1147, +str_1148, +str_1149, +str_114a, +str_114b, +0, str_114d, +0, str_114f, +0, str_1151, +str_1152, +str_1153, +0, 0, str_1156, +str_1157, +str_1158, +0, 0, 0, 0, 0, 0, 0, 0, 0, str_1162, +0, str_1164, +0, str_1166, +0, str_1168, +0, str_116a, +str_116b, +str_116c, +0, 0, str_116f, +str_1170, +str_1171, +0, 0, str_1174, +0, str_1176, +str_1177, +str_1178, +str_1179, +str_117a, +str_117b, +str_117c, +str_117d, +str_117e, +str_117f, +str_1180, +str_1181, +str_1182, +str_1183, +str_1184, +str_1185, +str_1186, +str_1187, +str_1188, +str_1189, +str_118a, +str_118b, +str_118c, +str_118d, +str_118e, +str_118f, +str_1190, +str_1191, +str_1192, +str_1193, +str_1194, +str_1195, +str_1196, +str_1197, +str_1198, +str_1199, +str_119a, +str_119b, +str_119c, +str_119d, +0, str_119f, +str_11a0, +str_11a1, +str_11a2, +0, 0, 0, 0, 0, str_11a8, +str_11a9, +str_11aa, +str_11ab, +str_11ac, +str_11ad, +str_11ae, +str_11af, +str_11b0, +str_11b1, +str_11b2, +str_11b3, +str_11b4, +str_11b5, +str_11b6, +str_11b7, +str_11b8, +str_11b9, +str_11ba, +str_11bb, +str_11bc, +str_11bd, +str_11be, +str_11bf, +str_11c0, +str_11c1, +str_11c2, +str_11c3, +str_11c4, +str_11c5, +str_11c6, +str_11c7, +str_11c8, +str_11c9, +str_11ca, +str_11cb, +str_11cc, +str_11cd, +str_11ce, +str_11cf, +str_11d0, +str_11d1, +str_11d2, +str_11d3, +str_11d4, +str_11d5, +str_11d6, +str_11d7, +str_11d8, +str_11d9, +str_11da, +str_11db, +str_11dc, +str_11dd, +str_11de, +str_11df, +str_11e0, +str_11e1, +str_11e2, +str_11e3, +str_11e4, +str_11e5, +str_11e6, +str_11e7, +str_11e8, +str_11e9, +str_11ea, +str_11eb, +str_11ec, +str_11ed, +str_11ee, +str_11ef, +str_11f0, +str_11f1, +str_11f2, +str_11f3, +str_11f4, +str_11f5, +str_11f6, +str_11f7, +str_11f8, +str_11f9, +0, 0, 0, 0, 0, 0, 0}; + +static const unichar_t * const tab_13[] = { +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_13a0, +str_13a1, +str_13a2, +0, 0, 0, 0, 0, 0, str_13a9, +str_13aa, +str_13ab, +str_13ac, +0, 0, 0, 0, str_13b1, +0, str_13b3, +0, 0, 0, str_13b7, +0, 0, 0, str_13bb, +0, 0, str_13be, +0, str_13c0, +0, str_13c2, +str_13c3, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_13cf, +0, 0, 0, 0, 0, 0, 0, 0, 0, str_13d9, +str_13da, +0, 0, 0, str_13de, +str_13df, +0, 0, str_13e2, +0, 0, 0, str_13e6, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_13f4, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + +static const unichar_t * const tab_1b[] = { +0, 0, 0, 0, 0, 0, str_1b06, +0, str_1b08, +0, str_1b0a, +0, str_1b0c, +0, str_1b0e, +0, 0, 0, str_1b12, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_1b3b, +0, str_1b3d, +0, 0, str_1b40, +str_1b41, +0, str_1b43, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + +static const unichar_t * const tab_1d[] = { +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_1d2c, +str_1d2d, +str_1d2e, +0, str_1d30, +str_1d31, +str_1d32, +str_1d33, +str_1d34, +str_1d35, +str_1d36, +str_1d37, +str_1d38, +str_1d39, +str_1d3a, +0, str_1d3c, +str_1d3d, +str_1d3e, +str_1d3f, +str_1d40, +str_1d41, +str_1d42, +str_1d43, +str_1d44, +str_1d45, +str_1d46, +str_1d47, +str_1d48, +str_1d49, +str_1d4a, +str_1d4b, +str_1d4c, +str_1d4d, +0, str_1d4f, +str_1d50, +str_1d51, +str_1d52, +str_1d53, +str_1d54, +str_1d55, +str_1d56, +str_1d57, +str_1d58, +str_1d59, +str_1d5a, +str_1d5b, +str_1d5c, +str_1d5d, +str_1d5e, +str_1d5f, +str_1d60, +str_1d61, +str_1d62, +str_1d63, +str_1d64, +str_1d65, +str_1d66, +str_1d67, +str_1d68, +str_1d69, +str_1d6a, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_1d78, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_1d9b, +str_1d9c, +str_1d9d, +str_1d9e, +str_1d9f, +str_1da0, +str_1da1, +str_1da2, +str_1da3, +str_1da4, +str_1da5, +str_1da6, +str_1da7, +str_1da8, +str_1da9, +str_1daa, +str_1dab, +str_1dac, +str_1dad, +str_1dae, +str_1daf, +str_1db0, +str_1db1, +str_1db2, +str_1db3, +str_1db4, +str_1db5, +str_1db6, +str_1db7, +str_1db8, +str_1db9, +str_1dba, +str_1dbb, +str_1dbc, +str_1dbd, +str_1dbe, +str_1dbf, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + +static const unichar_t * const tab_1e[] = { +str_1e00, +str_1e01, +str_1e02, +str_1e03, +str_1e04, +str_1e05, +str_1e06, +str_1e07, +str_1e08, +str_1e09, +str_1e0a, +str_1e0b, +str_1e0c, +str_1e0d, +str_1e0e, +str_1e0f, +str_1e10, +str_1e11, +str_1e12, +str_1e13, +str_1e14, +str_1e15, +str_1e16, +str_1e17, +str_1e18, +str_1e19, +str_1e1a, +str_1e1b, +str_1e1c, +str_1e1d, +str_1e1e, +str_1e1f, +str_1e20, +str_1e21, +str_1e22, +str_1e23, +str_1e24, +str_1e25, +str_1e26, +str_1e27, +str_1e28, +str_1e29, +str_1e2a, +str_1e2b, +str_1e2c, +str_1e2d, +str_1e2e, +str_1e2f, +str_1e30, +str_1e31, +str_1e32, +str_1e33, +str_1e34, +str_1e35, +str_1e36, +str_1e37, +str_1e38, +str_1e39, +str_1e3a, +str_1e3b, +str_1e3c, +str_1e3d, +str_1e3e, +str_1e3f, +str_1e40, +str_1e41, +str_1e42, +str_1e43, +str_1e44, +str_1e45, +str_1e46, +str_1e47, +str_1e48, +str_1e49, +str_1e4a, +str_1e4b, +str_1e4c, +str_1e4d, +str_1e4e, +str_1e4f, +str_1e50, +str_1e51, +str_1e52, +str_1e53, +str_1e54, +str_1e55, +str_1e56, +str_1e57, +str_1e58, +str_1e59, +str_1e5a, +str_1e5b, +str_1e5c, +str_1e5d, +str_1e5e, +str_1e5f, +str_1e60, +str_1e61, +str_1e62, +str_1e63, +str_1e64, +str_1e65, +str_1e66, +str_1e67, +str_1e68, +str_1e69, +str_1e6a, +str_1e6b, +str_1e6c, +str_1e6d, +str_1e6e, +str_1e6f, +str_1e70, +str_1e71, +str_1e72, +str_1e73, +str_1e74, +str_1e75, +str_1e76, +str_1e77, +str_1e78, +str_1e79, +str_1e7a, +str_1e7b, +str_1e7c, +str_1e7d, +str_1e7e, +str_1e7f, +str_1e80, +str_1e81, +str_1e82, +str_1e83, +str_1e84, +str_1e85, +str_1e86, +str_1e87, +str_1e88, +str_1e89, +str_1e8a, +str_1e8b, +str_1e8c, +str_1e8d, +str_1e8e, +str_1e8f, +str_1e90, +str_1e91, +str_1e92, +str_1e93, +str_1e94, +str_1e95, +str_1e96, +str_1e97, +str_1e98, +str_1e99, +str_1e9a, +str_1e9b, +0, 0, 0, 0, str_1ea0, +str_1ea1, +str_1ea2, +str_1ea3, +str_1ea4, +str_1ea5, +str_1ea6, +str_1ea7, +str_1ea8, +str_1ea9, +str_1eaa, +str_1eab, +str_1eac, +str_1ead, +str_1eae, +str_1eaf, +str_1eb0, +str_1eb1, +str_1eb2, +str_1eb3, +str_1eb4, +str_1eb5, +str_1eb6, +str_1eb7, +str_1eb8, +str_1eb9, +str_1eba, +str_1ebb, +str_1ebc, +str_1ebd, +str_1ebe, +str_1ebf, +str_1ec0, +str_1ec1, +str_1ec2, +str_1ec3, +str_1ec4, +str_1ec5, +str_1ec6, +str_1ec7, +str_1ec8, +str_1ec9, +str_1eca, +str_1ecb, +str_1ecc, +str_1ecd, +str_1ece, +str_1ecf, +str_1ed0, +str_1ed1, +str_1ed2, +str_1ed3, +str_1ed4, +str_1ed5, +str_1ed6, +str_1ed7, +str_1ed8, +str_1ed9, +str_1eda, +str_1edb, +str_1edc, +str_1edd, +str_1ede, +str_1edf, +str_1ee0, +str_1ee1, +str_1ee2, +str_1ee3, +str_1ee4, +str_1ee5, +str_1ee6, +str_1ee7, +str_1ee8, +str_1ee9, +str_1eea, +str_1eeb, +str_1eec, +str_1eed, +str_1eee, +str_1eef, +str_1ef0, +str_1ef1, +str_1ef2, +str_1ef3, +str_1ef4, +str_1ef5, +str_1ef6, +str_1ef7, +str_1ef8, +str_1ef9, +0, 0, 0, 0, 0, 0, 0}; + +static const unichar_t * const tab_1f[] = { +str_1f00, +str_1f01, +str_1f02, +str_1f03, +str_1f04, +str_1f05, +str_1f06, +str_1f07, +str_1f08, +str_1f09, +str_1f0a, +str_1f0b, +str_1f0c, +str_1f0d, +str_1f0e, +str_1f0f, +str_1f10, +str_1f11, +str_1f12, +str_1f13, +str_1f14, +str_1f15, +0, 0, str_1f18, +str_1f19, +str_1f1a, +str_1f1b, +str_1f1c, +str_1f1d, +0, 0, str_1f20, +str_1f21, +str_1f22, +str_1f23, +str_1f24, +str_1f25, +str_1f26, +str_1f27, +str_1f28, +str_1f29, +str_1f2a, +str_1f2b, +str_1f2c, +str_1f2d, +str_1f2e, +str_1f2f, +str_1f30, +str_1f31, +str_1f32, +str_1f33, +str_1f34, +str_1f35, +str_1f36, +str_1f37, +str_1f38, +str_1f39, +str_1f3a, +str_1f3b, +str_1f3c, +str_1f3d, +str_1f3e, +str_1f3f, +str_1f40, +str_1f41, +str_1f42, +str_1f43, +str_1f44, +str_1f45, +0, 0, str_1f48, +str_1f49, +str_1f4a, +str_1f4b, +str_1f4c, +str_1f4d, +0, 0, str_1f50, +str_1f51, +str_1f52, +str_1f53, +str_1f54, +str_1f55, +str_1f56, +str_1f57, +0, str_1f59, +0, str_1f5b, +0, str_1f5d, +0, str_1f5f, +str_1f60, +str_1f61, +str_1f62, +str_1f63, +str_1f64, +str_1f65, +str_1f66, +str_1f67, +str_1f68, +str_1f69, +str_1f6a, +str_1f6b, +str_1f6c, +str_1f6d, +str_1f6e, +str_1f6f, +str_1f70, +str_1f71, +str_1f72, +str_1f73, +str_1f74, +str_1f75, +str_1f76, +str_1f77, +str_1f78, +str_1f79, +str_1f7a, +str_1f7b, +str_1f7c, +str_1f7d, +0, 0, str_1f80, +str_1f81, +str_1f82, +str_1f83, +str_1f84, +str_1f85, +str_1f86, +str_1f87, +str_1f88, +str_1f89, +str_1f8a, +str_1f8b, +str_1f8c, +str_1f8d, +str_1f8e, +str_1f8f, +str_1f90, +str_1f91, +str_1f92, +str_1f93, +str_1f94, +str_1f95, +str_1f96, +str_1f97, +str_1f98, +str_1f99, +str_1f9a, +str_1f9b, +str_1f9c, +str_1f9d, +str_1f9e, +str_1f9f, +str_1fa0, +str_1fa1, +str_1fa2, +str_1fa3, +str_1fa4, +str_1fa5, +str_1fa6, +str_1fa7, +str_1fa8, +str_1fa9, +str_1faa, +str_1fab, +str_1fac, +str_1fad, +str_1fae, +str_1faf, +str_1fb0, +str_1fb1, +str_1fb2, +str_1fb3, +str_1fb4, +0, str_1fb6, +str_1fb7, +str_1fb8, +str_1fb9, +str_1fba, +str_1fbb, +str_1fbc, +str_1fbd, +str_1fbe, +str_1fbf, +str_1fc0, +str_1fc1, +str_1fc2, +str_1fc3, +str_1fc4, +0, str_1fc6, +str_1fc7, +str_1fc8, +str_1fc9, +str_1fca, +str_1fcb, +str_1fcc, +str_1fcd, +str_1fce, +str_1fcf, +str_1fd0, +str_1fd1, +str_1fd2, +str_1fd3, +0, 0, str_1fd6, +str_1fd7, +str_1fd8, +str_1fd9, +str_1fda, +str_1fdb, +0, str_1fdd, +str_1fde, +str_1fdf, +str_1fe0, +str_1fe1, +str_1fe2, +str_1fe3, +str_1fe4, +str_1fe5, +str_1fe6, +str_1fe7, +str_1fe8, +str_1fe9, +str_1fea, +str_1feb, +str_1fec, +str_1fed, +str_1fee, +str_1fef, +0, 0, str_1ff2, +str_1ff3, +str_1ff4, +0, str_1ff6, +str_1ff7, +str_1ff8, +str_1ff9, +str_1ffa, +str_1ffb, +str_1ffc, +str_1ffd, +str_1ffe, +0, 0}; + +static const unichar_t * const tab_20[] = { +str_2000, +str_2001, +str_2002, +str_2003, +str_2004, +str_2005, +str_2006, +str_2007, +str_2008, +str_2009, +str_200a, +0, 0, 0, 0, 0, str_2010, +str_2011, +str_2012, +str_2013, +str_2014, +str_2015, +str_2016, +str_2017, +str_2018, +str_2019, +0, 0, str_201c, +str_201d, +0, 0, 0, 0, 0, 0, str_2024, +str_2025, +str_2026, +0, 0, 0, 0, 0, 0, 0, 0, str_202f, +0, 0, str_2032, +str_2033, +str_2034, +str_2035, +str_2036, +str_2037, +0, str_2039, +str_203a, +0, str_203c, +0, str_203e, +0, 0, 0, 0, 0, 0, 0, 0, str_2047, +str_2048, +str_2049, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_2057, +0, 0, 0, 0, 0, 0, 0, str_205f, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_2070, +str_2071, +0, 0, str_2074, +str_2075, +str_2076, +str_2077, +str_2078, +str_2079, +str_207a, +str_207b, +str_207c, +str_207d, +str_207e, +str_207f, +str_2080, +str_2081, +str_2082, +str_2083, +str_2084, +str_2085, +str_2086, +str_2087, +str_2088, +str_2089, +str_208a, +str_208b, +str_208c, +str_208d, +str_208e, +0, str_2090, +str_2091, +str_2092, +str_2093, +str_2094, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_20a8, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + +static const unichar_t * const tab_21[] = { +str_2100, +str_2101, +str_2102, +str_2103, +0, str_2105, +str_2106, +str_2107, +0, str_2109, +str_210a, +str_210b, +str_210c, +str_210d, +str_210e, +str_210f, +str_2110, +str_2111, +str_2112, +str_2113, +0, str_2115, +str_2116, +0, 0, str_2119, +str_211a, +str_211b, +str_211c, +str_211d, +0, 0, str_2120, +str_2121, +str_2122, +0, str_2124, +0, str_2126, +0, str_2128, +0, str_212a, +str_212b, +str_212c, +str_212d, +0, str_212f, +str_2130, +str_2131, +0, str_2133, +str_2134, +str_2135, +str_2136, +str_2137, +str_2138, +str_2139, +0, str_213b, +str_213c, +str_213d, +str_213e, +str_213f, +str_2140, +0, 0, 0, 0, str_2145, +str_2146, +str_2147, +str_2148, +str_2149, +0, 0, 0, 0, 0, 0, 0, 0, 0, str_2153, +str_2154, +str_2155, +str_2156, +str_2157, +str_2158, +str_2159, +str_215a, +str_215b, +str_215c, +str_215d, +str_215e, +str_215f, +str_2160, +str_2161, +str_2162, +str_2163, +str_2164, +str_2165, +str_2166, +str_2167, +str_2168, +str_2169, +str_216a, +str_216b, +str_216c, +str_216d, +str_216e, +str_216f, +str_2170, +str_2171, +str_2172, +str_2173, +str_2174, +str_2175, +str_2176, +str_2177, +str_2178, +str_2179, +str_217a, +str_217b, +str_217c, +str_217d, +str_217e, +str_217f, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_219a, +str_219b, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_21ae, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_21cd, +str_21ce, +str_21cf, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + +static const unichar_t * const tab_22[] = { +0, 0, 0, 0, str_2204, +str_2205, +str_2206, +0, 0, str_2209, +0, 0, str_220c, +0, 0, str_220f, +0, str_2211, +str_2212, +0, 0, str_2215, +str_2216, +str_2217, +str_2218, +str_2219, +0, 0, 0, 0, 0, 0, 0, 0, 0, str_2223, +str_2224, +str_2225, +str_2226, +0, 0, 0, 0, 0, str_222c, +str_222d, +0, str_222f, +str_2230, +0, 0, 0, 0, 0, str_2236, +0, 0, 0, 0, 0, str_223c, +0, 0, 0, 0, str_2241, +0, 0, str_2244, +0, 0, str_2247, +0, str_2249, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_2260, +0, str_2262, +0, 0, 0, 0, 0, 0, 0, str_226a, +str_226b, +0, str_226d, +str_226e, +str_226f, +str_2270, +str_2271, +0, 0, str_2274, +str_2275, +0, 0, str_2278, +str_2279, +0, 0, 0, 0, 0, 0, str_2280, +str_2281, +0, 0, str_2284, +str_2285, +0, 0, str_2288, +str_2289, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_2299, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_22ac, +str_22ad, +str_22ae, +str_22af, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_22c4, +str_22c5, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_22e0, +str_22e1, +str_22e2, +str_22e3, +0, 0, 0, 0, 0, 0, str_22ea, +str_22eb, +str_22ec, +str_22ed, +0, str_22ef, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + +static const unichar_t * const tab_23[] = { +0, 0, 0, str_2303, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_2329, +str_232a, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_2373, +str_2374, +str_2375, +0, 0, 0, 0, str_237a, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + +static const unichar_t * const tab_24[] = { +str_2400, +str_2401, +str_2402, +str_2403, +str_2404, +str_2405, +str_2406, +str_2407, +str_2408, +str_2409, +str_240a, +str_240b, +str_240c, +str_240d, +str_240e, +str_240f, +str_2410, +str_2411, +str_2412, +str_2413, +str_2414, +str_2415, +str_2416, +str_2417, +str_2418, +str_2419, +str_241a, +str_241b, +str_241c, +str_241d, +str_241e, +str_241f, +str_2420, +str_2421, +str_2422, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_2460, +str_2461, +str_2462, +str_2463, +str_2464, +str_2465, +str_2466, +str_2467, +str_2468, +str_2469, +str_246a, +str_246b, +str_246c, +str_246d, +str_246e, +str_246f, +str_2470, +str_2471, +str_2472, +str_2473, +str_2474, +str_2475, +str_2476, +str_2477, +str_2478, +str_2479, +str_247a, +str_247b, +str_247c, +str_247d, +str_247e, +str_247f, +str_2480, +str_2481, +str_2482, +str_2483, +str_2484, +str_2485, +str_2486, +str_2487, +str_2488, +str_2489, +str_248a, +str_248b, +str_248c, +str_248d, +str_248e, +str_248f, +str_2490, +str_2491, +str_2492, +str_2493, +str_2494, +str_2495, +str_2496, +str_2497, +str_2498, +str_2499, +str_249a, +str_249b, +str_249c, +str_249d, +str_249e, +str_249f, +str_24a0, +str_24a1, +str_24a2, +str_24a3, +str_24a4, +str_24a5, +str_24a6, +str_24a7, +str_24a8, +str_24a9, +str_24aa, +str_24ab, +str_24ac, +str_24ad, +str_24ae, +str_24af, +str_24b0, +str_24b1, +str_24b2, +str_24b3, +str_24b4, +str_24b5, +str_24b6, +str_24b7, +str_24b8, +str_24b9, +str_24ba, +str_24bb, +str_24bc, +str_24bd, +str_24be, +str_24bf, +str_24c0, +str_24c1, +str_24c2, +str_24c3, +str_24c4, +str_24c5, +str_24c6, +str_24c7, +str_24c8, +str_24c9, +str_24ca, +str_24cb, +str_24cc, +str_24cd, +str_24ce, +str_24cf, +str_24d0, +str_24d1, +str_24d2, +str_24d3, +str_24d4, +str_24d5, +str_24d6, +str_24d7, +str_24d8, +str_24d9, +str_24da, +str_24db, +str_24dc, +str_24dd, +str_24de, +str_24df, +str_24e0, +str_24e1, +str_24e2, +str_24e3, +str_24e4, +str_24e5, +str_24e6, +str_24e7, +str_24e8, +str_24e9, +str_24ea, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + +static const unichar_t * const tab_25[] = { +str_2500, +0, str_2502, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_25b3, +0, 0, 0, 0, str_25b8, +0, 0, 0, 0, str_25bd, +0, 0, 0, 0, 0, 0, 0, 0, 0, str_25c7, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_25e6, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + +static const unichar_t * const tab_26[] = { +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_2662, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + +static const unichar_t * const tab_27[] = { +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_2731, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_2758, +0, 0, 0, 0, 0, 0, 0, 0, 0, str_2762, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + +static const unichar_t * const tab_2a[] = { +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_2a0c, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_2a74, +str_2a75, +str_2a76, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_2adc, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + +static const unichar_t * const tab_2c[] = { +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_2c7c, +str_2c7d, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + +static const unichar_t * const tab_2d[] = { +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_2d6f, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + +static const unichar_t * const tab_2e[] = { +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_2e9f, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_2ef3, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + +static const unichar_t * const tab_2f[] = { +str_2f00, +str_2f01, +str_2f02, +str_2f03, +str_2f04, +str_2f05, +str_2f06, +str_2f07, +str_2f08, +str_2f09, +str_2f0a, +str_2f0b, +str_2f0c, +str_2f0d, +str_2f0e, +str_2f0f, +str_2f10, +str_2f11, +str_2f12, +str_2f13, +str_2f14, +str_2f15, +str_2f16, +str_2f17, +str_2f18, +str_2f19, +str_2f1a, +str_2f1b, +str_2f1c, +str_2f1d, +str_2f1e, +str_2f1f, +str_2f20, +str_2f21, +str_2f22, +str_2f23, +str_2f24, +str_2f25, +str_2f26, +str_2f27, +str_2f28, +str_2f29, +str_2f2a, +str_2f2b, +str_2f2c, +str_2f2d, +str_2f2e, +str_2f2f, +str_2f30, +str_2f31, +str_2f32, +str_2f33, +str_2f34, +str_2f35, +str_2f36, +str_2f37, +str_2f38, +str_2f39, +str_2f3a, +str_2f3b, +str_2f3c, +str_2f3d, +str_2f3e, +str_2f3f, +str_2f40, +str_2f41, +str_2f42, +str_2f43, +str_2f44, +str_2f45, +str_2f46, +str_2f47, +str_2f48, +str_2f49, +str_2f4a, +str_2f4b, +str_2f4c, +str_2f4d, +str_2f4e, +str_2f4f, +str_2f50, +str_2f51, +str_2f52, +str_2f53, +str_2f54, +str_2f55, +str_2f56, +str_2f57, +str_2f58, +str_2f59, +str_2f5a, +str_2f5b, +str_2f5c, +str_2f5d, +str_2f5e, +str_2f5f, +str_2f60, +str_2f61, +str_2f62, +str_2f63, +str_2f64, +str_2f65, +str_2f66, +str_2f67, +str_2f68, +str_2f69, +str_2f6a, +str_2f6b, +str_2f6c, +str_2f6d, +str_2f6e, +str_2f6f, +str_2f70, +str_2f71, +str_2f72, +str_2f73, +str_2f74, +str_2f75, +str_2f76, +str_2f77, +str_2f78, +str_2f79, +str_2f7a, +str_2f7b, +str_2f7c, +str_2f7d, +str_2f7e, +str_2f7f, +str_2f80, +str_2f81, +str_2f82, +str_2f83, +str_2f84, +str_2f85, +str_2f86, +str_2f87, +str_2f88, +str_2f89, +str_2f8a, +str_2f8b, +str_2f8c, +str_2f8d, +str_2f8e, +str_2f8f, +str_2f90, +str_2f91, +str_2f92, +str_2f93, +str_2f94, +str_2f95, +str_2f96, +str_2f97, +str_2f98, +str_2f99, +str_2f9a, +str_2f9b, +str_2f9c, +str_2f9d, +str_2f9e, +str_2f9f, +str_2fa0, +str_2fa1, +str_2fa2, +str_2fa3, +str_2fa4, +str_2fa5, +str_2fa6, +str_2fa7, +str_2fa8, +str_2fa9, +str_2faa, +str_2fab, +str_2fac, +str_2fad, +str_2fae, +str_2faf, +str_2fb0, +str_2fb1, +str_2fb2, +str_2fb3, +str_2fb4, +str_2fb5, +str_2fb6, +str_2fb7, +str_2fb8, +str_2fb9, +str_2fba, +str_2fbb, +str_2fbc, +str_2fbd, +str_2fbe, +str_2fbf, +str_2fc0, +str_2fc1, +str_2fc2, +str_2fc3, +str_2fc4, +str_2fc5, +str_2fc6, +str_2fc7, +str_2fc8, +str_2fc9, +str_2fca, +str_2fcb, +str_2fcc, +str_2fcd, +str_2fce, +str_2fcf, +str_2fd0, +str_2fd1, +str_2fd2, +str_2fd3, +str_2fd4, +str_2fd5, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + +static const unichar_t * const tab_30[] = { +str_3000, +str_3001, +0, 0, 0, 0, 0, 0, str_3008, +str_3009, +str_300a, +str_300b, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_3036, +0, str_3038, +str_3039, +str_303a, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_304c, +0, str_304e, +0, str_3050, +0, str_3052, +0, str_3054, +0, str_3056, +0, str_3058, +0, str_305a, +0, str_305c, +0, str_305e, +0, str_3060, +0, str_3062, +0, 0, str_3065, +0, str_3067, +0, str_3069, +0, 0, 0, 0, 0, 0, str_3070, +str_3071, +0, str_3073, +str_3074, +0, str_3076, +str_3077, +0, str_3079, +str_307a, +0, str_307c, +str_307d, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_3094, +0, 0, 0, 0, 0, 0, str_309b, +str_309c, +0, str_309e, +str_309f, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_30ac, +0, str_30ae, +0, str_30b0, +0, str_30b2, +0, str_30b4, +0, str_30b6, +0, str_30b8, +0, str_30ba, +0, str_30bc, +0, str_30be, +0, str_30c0, +0, str_30c2, +0, 0, str_30c5, +0, str_30c7, +0, str_30c9, +0, 0, 0, 0, 0, 0, str_30d0, +str_30d1, +0, str_30d3, +str_30d4, +0, str_30d6, +str_30d7, +0, str_30d9, +str_30da, +0, str_30dc, +str_30dd, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_30f4, +0, 0, str_30f7, +str_30f8, +str_30f9, +str_30fa, +0, 0, 0, str_30fe, +str_30ff, +0}; + +static const unichar_t * const tab_31[] = { +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_3131, +str_3132, +str_3133, +str_3134, +str_3135, +str_3136, +str_3137, +str_3138, +str_3139, +str_313a, +str_313b, +str_313c, +str_313d, +str_313e, +str_313f, +str_3140, +str_3141, +str_3142, +str_3143, +str_3144, +str_3145, +str_3146, +str_3147, +str_3148, +str_3149, +str_314a, +str_314b, +str_314c, +str_314d, +str_314e, +str_314f, +str_3150, +str_3151, +str_3152, +str_3153, +str_3154, +str_3155, +str_3156, +str_3157, +str_3158, +str_3159, +str_315a, +str_315b, +str_315c, +str_315d, +str_315e, +str_315f, +str_3160, +str_3161, +str_3162, +str_3163, +str_3164, +str_3165, +str_3166, +str_3167, +str_3168, +str_3169, +str_316a, +str_316b, +str_316c, +str_316d, +str_316e, +str_316f, +str_3170, +str_3171, +str_3172, +str_3173, +str_3174, +str_3175, +str_3176, +str_3177, +str_3178, +str_3179, +str_317a, +str_317b, +str_317c, +str_317d, +str_317e, +str_317f, +str_3180, +str_3181, +str_3182, +str_3183, +str_3184, +str_3185, +str_3186, +str_3187, +str_3188, +str_3189, +str_318a, +str_318b, +str_318c, +str_318d, +str_318e, +0, 0, 0, str_3192, +str_3193, +str_3194, +str_3195, +str_3196, +str_3197, +str_3198, +str_3199, +str_319a, +str_319b, +str_319c, +str_319d, +str_319e, +str_319f, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + +static const unichar_t * const tab_32[] = { +str_3200, +str_3201, +str_3202, +str_3203, +str_3204, +str_3205, +str_3206, +str_3207, +str_3208, +str_3209, +str_320a, +str_320b, +str_320c, +str_320d, +str_320e, +str_320f, +str_3210, +str_3211, +str_3212, +str_3213, +str_3214, +str_3215, +str_3216, +str_3217, +str_3218, +str_3219, +str_321a, +str_321b, +str_321c, +str_321d, +str_321e, +0, str_3220, +str_3221, +str_3222, +str_3223, +str_3224, +str_3225, +str_3226, +str_3227, +str_3228, +str_3229, +str_322a, +str_322b, +str_322c, +str_322d, +str_322e, +str_322f, +str_3230, +str_3231, +str_3232, +str_3233, +str_3234, +str_3235, +str_3236, +str_3237, +str_3238, +str_3239, +str_323a, +str_323b, +str_323c, +str_323d, +str_323e, +str_323f, +str_3240, +str_3241, +str_3242, +str_3243, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_3250, +str_3251, +str_3252, +str_3253, +str_3254, +str_3255, +str_3256, +str_3257, +str_3258, +str_3259, +str_325a, +str_325b, +str_325c, +str_325d, +str_325e, +str_325f, +str_3260, +str_3261, +str_3262, +str_3263, +str_3264, +str_3265, +str_3266, +str_3267, +str_3268, +str_3269, +str_326a, +str_326b, +str_326c, +str_326d, +str_326e, +str_326f, +str_3270, +str_3271, +str_3272, +str_3273, +str_3274, +str_3275, +str_3276, +str_3277, +str_3278, +str_3279, +str_327a, +str_327b, +str_327c, +str_327d, +str_327e, +0, str_3280, +str_3281, +str_3282, +str_3283, +str_3284, +str_3285, +str_3286, +str_3287, +str_3288, +str_3289, +str_328a, +str_328b, +str_328c, +str_328d, +str_328e, +str_328f, +str_3290, +str_3291, +str_3292, +str_3293, +str_3294, +str_3295, +str_3296, +str_3297, +str_3298, +str_3299, +str_329a, +str_329b, +str_329c, +str_329d, +str_329e, +str_329f, +str_32a0, +str_32a1, +str_32a2, +str_32a3, +str_32a4, +str_32a5, +str_32a6, +str_32a7, +str_32a8, +str_32a9, +str_32aa, +str_32ab, +str_32ac, +str_32ad, +str_32ae, +str_32af, +str_32b0, +str_32b1, +str_32b2, +str_32b3, +str_32b4, +str_32b5, +str_32b6, +str_32b7, +str_32b8, +str_32b9, +str_32ba, +str_32bb, +str_32bc, +str_32bd, +str_32be, +str_32bf, +str_32c0, +str_32c1, +str_32c2, +str_32c3, +str_32c4, +str_32c5, +str_32c6, +str_32c7, +str_32c8, +str_32c9, +str_32ca, +str_32cb, +str_32cc, +str_32cd, +str_32ce, +str_32cf, +str_32d0, +str_32d1, +str_32d2, +str_32d3, +str_32d4, +str_32d5, +str_32d6, +str_32d7, +str_32d8, +str_32d9, +str_32da, +str_32db, +str_32dc, +str_32dd, +str_32de, +str_32df, +str_32e0, +str_32e1, +str_32e2, +str_32e3, +str_32e4, +str_32e5, +str_32e6, +str_32e7, +str_32e8, +str_32e9, +str_32ea, +str_32eb, +str_32ec, +str_32ed, +str_32ee, +str_32ef, +str_32f0, +str_32f1, +str_32f2, +str_32f3, +str_32f4, +str_32f5, +str_32f6, +str_32f7, +str_32f8, +str_32f9, +str_32fa, +str_32fb, +str_32fc, +str_32fd, +str_32fe, +0, 0}; + +static const unichar_t * const tab_33[] = { +str_3300, +str_3301, +str_3302, +str_3303, +str_3304, +str_3305, +str_3306, +str_3307, +str_3308, +str_3309, +str_330a, +str_330b, +str_330c, +str_330d, +str_330e, +str_330f, +str_3310, +str_3311, +str_3312, +str_3313, +str_3314, +str_3315, +str_3316, +str_3317, +str_3318, +str_3319, +str_331a, +str_331b, +str_331c, +str_331d, +str_331e, +str_331f, +str_3320, +str_3321, +str_3322, +str_3323, +str_3324, +str_3325, +str_3326, +str_3327, +str_3328, +str_3329, +str_332a, +str_332b, +str_332c, +str_332d, +str_332e, +str_332f, +str_3330, +str_3331, +str_3332, +str_3333, +str_3334, +str_3335, +str_3336, +str_3337, +str_3338, +str_3339, +str_333a, +str_333b, +str_333c, +str_333d, +str_333e, +str_333f, +str_3340, +str_3341, +str_3342, +str_3343, +str_3344, +str_3345, +str_3346, +str_3347, +str_3348, +str_3349, +str_334a, +str_334b, +str_334c, +str_334d, +str_334e, +str_334f, +str_3350, +str_3351, +str_3352, +str_3353, +str_3354, +str_3355, +str_3356, +str_3357, +str_3358, +str_3359, +str_335a, +str_335b, +str_335c, +str_335d, +str_335e, +str_335f, +str_3360, +str_3361, +str_3362, +str_3363, +str_3364, +str_3365, +str_3366, +str_3367, +str_3368, +str_3369, +str_336a, +str_336b, +str_336c, +str_336d, +str_336e, +str_336f, +str_3370, +str_3371, +str_3372, +str_3373, +str_3374, +str_3375, +str_3376, +str_3377, +str_3378, +str_3379, +str_337a, +str_337b, +str_337c, +str_337d, +str_337e, +str_337f, +str_3380, +str_3381, +str_3382, +str_3383, +str_3384, +str_3385, +str_3386, +str_3387, +str_3388, +str_3389, +str_338a, +str_338b, +str_338c, +str_338d, +str_338e, +str_338f, +str_3390, +str_3391, +str_3392, +str_3393, +str_3394, +str_3395, +str_3396, +str_3397, +str_3398, +str_3399, +str_339a, +str_339b, +str_339c, +str_339d, +str_339e, +str_339f, +str_33a0, +str_33a1, +str_33a2, +str_33a3, +str_33a4, +str_33a5, +str_33a6, +str_33a7, +str_33a8, +str_33a9, +str_33aa, +str_33ab, +str_33ac, +str_33ad, +str_33ae, +str_33af, +str_33b0, +str_33b1, +str_33b2, +str_33b3, +str_33b4, +str_33b5, +str_33b6, +str_33b7, +str_33b8, +str_33b9, +str_33ba, +str_33bb, +str_33bc, +str_33bd, +str_33be, +str_33bf, +str_33c0, +str_33c1, +str_33c2, +str_33c3, +str_33c4, +str_33c5, +str_33c6, +str_33c7, +str_33c8, +str_33c9, +str_33ca, +str_33cb, +str_33cc, +str_33cd, +str_33ce, +str_33cf, +str_33d0, +str_33d1, +str_33d2, +str_33d3, +str_33d4, +str_33d5, +str_33d6, +str_33d7, +str_33d8, +str_33d9, +str_33da, +str_33db, +str_33dc, +str_33dd, +str_33de, +str_33df, +str_33e0, +str_33e1, +str_33e2, +str_33e3, +str_33e4, +str_33e5, +str_33e6, +str_33e7, +str_33e8, +str_33e9, +str_33ea, +str_33eb, +str_33ec, +str_33ed, +str_33ee, +str_33ef, +str_33f0, +str_33f1, +str_33f2, +str_33f3, +str_33f4, +str_33f5, +str_33f6, +str_33f7, +str_33f8, +str_33f9, +str_33fa, +str_33fb, +str_33fc, +str_33fd, +str_33fe, +str_33ff, +0}; + +static const unichar_t * const tab_a7[] = { +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_a770, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + +static const unichar_t * const tab_f9[] = { +str_f900, +str_f901, +str_f902, +str_f903, +str_f904, +str_f905, +str_f906, +str_f907, +str_f908, +str_f909, +str_f90a, +str_f90b, +str_f90c, +str_f90d, +str_f90e, +str_f90f, +str_f910, +str_f911, +str_f912, +str_f913, +str_f914, +str_f915, +str_f916, +str_f917, +str_f918, +str_f919, +str_f91a, +str_f91b, +str_f91c, +str_f91d, +str_f91e, +str_f91f, +str_f920, +str_f921, +str_f922, +str_f923, +str_f924, +str_f925, +str_f926, +str_f927, +str_f928, +str_f929, +str_f92a, +str_f92b, +str_f92c, +str_f92d, +str_f92e, +str_f92f, +str_f930, +str_f931, +str_f932, +str_f933, +str_f934, +str_f935, +str_f936, +str_f937, +str_f938, +str_f939, +str_f93a, +str_f93b, +str_f93c, +str_f93d, +str_f93e, +str_f93f, +str_f940, +str_f941, +str_f942, +str_f943, +str_f944, +str_f945, +str_f946, +str_f947, +str_f948, +str_f949, +str_f94a, +str_f94b, +str_f94c, +str_f94d, +str_f94e, +str_f94f, +str_f950, +str_f951, +str_f952, +str_f953, +str_f954, +str_f955, +str_f956, +str_f957, +str_f958, +str_f959, +str_f95a, +str_f95b, +str_f95c, +str_f95d, +str_f95e, +str_f95f, +str_f960, +str_f961, +str_f962, +str_f963, +str_f964, +str_f965, +str_f966, +str_f967, +str_f968, +str_f969, +str_f96a, +str_f96b, +str_f96c, +str_f96d, +str_f96e, +str_f96f, +str_f970, +str_f971, +str_f972, +str_f973, +str_f974, +str_f975, +str_f976, +str_f977, +str_f978, +str_f979, +str_f97a, +str_f97b, +str_f97c, +str_f97d, +str_f97e, +str_f97f, +str_f980, +str_f981, +str_f982, +str_f983, +str_f984, +str_f985, +str_f986, +str_f987, +str_f988, +str_f989, +str_f98a, +str_f98b, +str_f98c, +str_f98d, +str_f98e, +str_f98f, +str_f990, +str_f991, +str_f992, +str_f993, +str_f994, +str_f995, +str_f996, +str_f997, +str_f998, +str_f999, +str_f99a, +str_f99b, +str_f99c, +str_f99d, +str_f99e, +str_f99f, +str_f9a0, +str_f9a1, +str_f9a2, +str_f9a3, +str_f9a4, +str_f9a5, +str_f9a6, +str_f9a7, +str_f9a8, +str_f9a9, +str_f9aa, +str_f9ab, +str_f9ac, +str_f9ad, +str_f9ae, +str_f9af, +str_f9b0, +str_f9b1, +str_f9b2, +str_f9b3, +str_f9b4, +str_f9b5, +str_f9b6, +str_f9b7, +str_f9b8, +str_f9b9, +str_f9ba, +str_f9bb, +str_f9bc, +str_f9bd, +str_f9be, +str_f9bf, +str_f9c0, +str_f9c1, +str_f9c2, +str_f9c3, +str_f9c4, +str_f9c5, +str_f9c6, +str_f9c7, +str_f9c8, +str_f9c9, +str_f9ca, +str_f9cb, +str_f9cc, +str_f9cd, +str_f9ce, +str_f9cf, +str_f9d0, +str_f9d1, +str_f9d2, +str_f9d3, +str_f9d4, +str_f9d5, +str_f9d6, +str_f9d7, +str_f9d8, +str_f9d9, +str_f9da, +str_f9db, +str_f9dc, +str_f9dd, +str_f9de, +str_f9df, +str_f9e0, +str_f9e1, +str_f9e2, +str_f9e3, +str_f9e4, +str_f9e5, +str_f9e6, +str_f9e7, +str_f9e8, +str_f9e9, +str_f9ea, +str_f9eb, +str_f9ec, +str_f9ed, +str_f9ee, +str_f9ef, +str_f9f0, +str_f9f1, +str_f9f2, +str_f9f3, +str_f9f4, +str_f9f5, +str_f9f6, +str_f9f7, +str_f9f8, +str_f9f9, +str_f9fa, +str_f9fb, +str_f9fc, +str_f9fd, +str_f9fe, +str_f9ff, +0}; + +static const unichar_t * const tab_fa[] = { +str_fa00, +str_fa01, +str_fa02, +str_fa03, +str_fa04, +str_fa05, +str_fa06, +str_fa07, +str_fa08, +str_fa09, +str_fa0a, +str_fa0b, +str_fa0c, +str_fa0d, +0, 0, str_fa10, +0, str_fa12, +0, 0, str_fa15, +str_fa16, +str_fa17, +str_fa18, +str_fa19, +str_fa1a, +str_fa1b, +str_fa1c, +str_fa1d, +str_fa1e, +0, str_fa20, +0, str_fa22, +0, 0, str_fa25, +str_fa26, +0, 0, 0, str_fa2a, +str_fa2b, +str_fa2c, +str_fa2d, +0, 0, str_fa30, +str_fa31, +str_fa32, +str_fa33, +str_fa34, +str_fa35, +str_fa36, +str_fa37, +str_fa38, +str_fa39, +str_fa3a, +str_fa3b, +str_fa3c, +str_fa3d, +str_fa3e, +str_fa3f, +str_fa40, +str_fa41, +str_fa42, +str_fa43, +str_fa44, +str_fa45, +str_fa46, +str_fa47, +str_fa48, +str_fa49, +str_fa4a, +str_fa4b, +str_fa4c, +str_fa4d, +str_fa4e, +str_fa4f, +str_fa50, +str_fa51, +str_fa52, +str_fa53, +str_fa54, +str_fa55, +str_fa56, +str_fa57, +str_fa58, +str_fa59, +str_fa5a, +str_fa5b, +str_fa5c, +str_fa5d, +str_fa5e, +str_fa5f, +str_fa60, +str_fa61, +str_fa62, +str_fa63, +str_fa64, +str_fa65, +str_fa66, +str_fa67, +str_fa68, +str_fa69, +str_fa6a, +0, 0, 0, 0, 0, str_fa70, +str_fa71, +str_fa72, +str_fa73, +str_fa74, +str_fa75, +str_fa76, +str_fa77, +str_fa78, +str_fa79, +str_fa7a, +str_fa7b, +str_fa7c, +str_fa7d, +str_fa7e, +str_fa7f, +str_fa80, +str_fa81, +str_fa82, +str_fa83, +str_fa84, +str_fa85, +str_fa86, +str_fa87, +str_fa88, +str_fa89, +str_fa8a, +str_fa8b, +str_fa8c, +str_fa8d, +str_fa8e, +str_fa8f, +str_fa90, +str_fa91, +str_fa92, +str_fa93, +str_fa94, +str_fa95, +str_fa96, +str_fa97, +str_fa98, +str_fa99, +str_fa9a, +str_fa9b, +str_fa9c, +str_fa9d, +str_fa9e, +str_fa9f, +str_faa0, +str_faa1, +str_faa2, +str_faa3, +str_faa4, +str_faa5, +str_faa6, +str_faa7, +str_faa8, +str_faa9, +str_faaa, +str_faab, +str_faac, +str_faad, +str_faae, +str_faaf, +str_fab0, +str_fab1, +str_fab2, +str_fab3, +str_fab4, +str_fab5, +str_fab6, +str_fab7, +str_fab8, +str_fab9, +str_faba, +str_fabb, +str_fabc, +str_fabd, +str_fabe, +str_fabf, +str_fac0, +str_fac1, +str_fac2, +str_fac3, +str_fac4, +str_fac5, +str_fac6, +str_fac7, +str_fac8, +str_fac9, +str_faca, +str_facb, +str_facc, +str_facd, +str_face, +str_facf, +str_fad0, +str_fad1, +str_fad2, +str_fad3, +str_fad4, +str_fad5, +str_fad6, +str_fad7, +str_fad8, +str_fad9, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + +static const unichar_t * const tab_fb[] = { +str_fb00, +str_fb01, +str_fb02, +str_fb03, +str_fb04, +str_fb05, +str_fb06, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_fb13, +str_fb14, +str_fb15, +str_fb16, +str_fb17, +0, 0, 0, 0, 0, str_fb1d, +0, str_fb1f, +str_fb20, +str_fb21, +str_fb22, +str_fb23, +str_fb24, +str_fb25, +str_fb26, +str_fb27, +str_fb28, +str_fb29, +str_fb2a, +str_fb2b, +str_fb2c, +str_fb2d, +str_fb2e, +str_fb2f, +str_fb30, +str_fb31, +str_fb32, +str_fb33, +str_fb34, +str_fb35, +str_fb36, +0, str_fb38, +str_fb39, +str_fb3a, +str_fb3b, +str_fb3c, +0, str_fb3e, +0, str_fb40, +str_fb41, +0, str_fb43, +str_fb44, +0, str_fb46, +str_fb47, +str_fb48, +str_fb49, +str_fb4a, +str_fb4b, +str_fb4c, +str_fb4d, +str_fb4e, +str_fb4f, +str_fb50, +str_fb51, +str_fb52, +str_fb53, +str_fb54, +str_fb55, +str_fb56, +str_fb57, +str_fb58, +str_fb59, +str_fb5a, +str_fb5b, +str_fb5c, +str_fb5d, +str_fb5e, +str_fb5f, +str_fb60, +str_fb61, +str_fb62, +str_fb63, +str_fb64, +str_fb65, +str_fb66, +str_fb67, +str_fb68, +str_fb69, +str_fb6a, +str_fb6b, +str_fb6c, +str_fb6d, +str_fb6e, +str_fb6f, +str_fb70, +str_fb71, +str_fb72, +str_fb73, +str_fb74, +str_fb75, +str_fb76, +str_fb77, +str_fb78, +str_fb79, +str_fb7a, +str_fb7b, +str_fb7c, +str_fb7d, +str_fb7e, +str_fb7f, +str_fb80, +str_fb81, +str_fb82, +str_fb83, +str_fb84, +str_fb85, +str_fb86, +str_fb87, +str_fb88, +str_fb89, +str_fb8a, +str_fb8b, +str_fb8c, +str_fb8d, +str_fb8e, +str_fb8f, +str_fb90, +str_fb91, +str_fb92, +str_fb93, +str_fb94, +str_fb95, +str_fb96, +str_fb97, +str_fb98, +str_fb99, +str_fb9a, +str_fb9b, +str_fb9c, +str_fb9d, +str_fb9e, +str_fb9f, +str_fba0, +str_fba1, +str_fba2, +str_fba3, +str_fba4, +str_fba5, +str_fba6, +str_fba7, +str_fba8, +str_fba9, +str_fbaa, +str_fbab, +str_fbac, +str_fbad, +str_fbae, +str_fbaf, +str_fbb0, +str_fbb1, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_fbd3, +str_fbd4, +str_fbd5, +str_fbd6, +str_fbd7, +str_fbd8, +str_fbd9, +str_fbda, +str_fbdb, +str_fbdc, +str_fbdd, +str_fbde, +str_fbdf, +str_fbe0, +str_fbe1, +str_fbe2, +str_fbe3, +str_fbe4, +str_fbe5, +str_fbe6, +str_fbe7, +str_fbe8, +str_fbe9, +str_fbea, +str_fbeb, +str_fbec, +str_fbed, +str_fbee, +str_fbef, +str_fbf0, +str_fbf1, +str_fbf2, +str_fbf3, +str_fbf4, +str_fbf5, +str_fbf6, +str_fbf7, +str_fbf8, +str_fbf9, +str_fbfa, +str_fbfb, +str_fbfc, +str_fbfd, +str_fbfe, +str_fbff, +0}; + +static const unichar_t * const tab_fc[] = { +str_fc00, +str_fc01, +str_fc02, +str_fc03, +str_fc04, +str_fc05, +str_fc06, +str_fc07, +str_fc08, +str_fc09, +str_fc0a, +str_fc0b, +str_fc0c, +str_fc0d, +str_fc0e, +str_fc0f, +str_fc10, +str_fc11, +str_fc12, +str_fc13, +str_fc14, +str_fc15, +str_fc16, +str_fc17, +str_fc18, +str_fc19, +str_fc1a, +str_fc1b, +str_fc1c, +str_fc1d, +str_fc1e, +str_fc1f, +str_fc20, +str_fc21, +str_fc22, +str_fc23, +str_fc24, +str_fc25, +str_fc26, +str_fc27, +str_fc28, +str_fc29, +str_fc2a, +str_fc2b, +str_fc2c, +str_fc2d, +str_fc2e, +str_fc2f, +str_fc30, +str_fc31, +str_fc32, +str_fc33, +str_fc34, +str_fc35, +str_fc36, +str_fc37, +str_fc38, +str_fc39, +str_fc3a, +str_fc3b, +str_fc3c, +str_fc3d, +str_fc3e, +str_fc3f, +str_fc40, +str_fc41, +str_fc42, +str_fc43, +str_fc44, +str_fc45, +str_fc46, +str_fc47, +str_fc48, +str_fc49, +str_fc4a, +str_fc4b, +str_fc4c, +str_fc4d, +str_fc4e, +str_fc4f, +str_fc50, +str_fc51, +str_fc52, +str_fc53, +str_fc54, +str_fc55, +str_fc56, +str_fc57, +str_fc58, +str_fc59, +str_fc5a, +str_fc5b, +str_fc5c, +str_fc5d, +str_fc5e, +str_fc5f, +str_fc60, +str_fc61, +str_fc62, +str_fc63, +str_fc64, +str_fc65, +str_fc66, +str_fc67, +str_fc68, +str_fc69, +str_fc6a, +str_fc6b, +str_fc6c, +str_fc6d, +str_fc6e, +str_fc6f, +str_fc70, +str_fc71, +str_fc72, +str_fc73, +str_fc74, +str_fc75, +str_fc76, +str_fc77, +str_fc78, +str_fc79, +str_fc7a, +str_fc7b, +str_fc7c, +str_fc7d, +str_fc7e, +str_fc7f, +str_fc80, +str_fc81, +str_fc82, +str_fc83, +str_fc84, +str_fc85, +str_fc86, +str_fc87, +str_fc88, +str_fc89, +str_fc8a, +str_fc8b, +str_fc8c, +str_fc8d, +str_fc8e, +str_fc8f, +str_fc90, +str_fc91, +str_fc92, +str_fc93, +str_fc94, +str_fc95, +str_fc96, +str_fc97, +str_fc98, +str_fc99, +str_fc9a, +str_fc9b, +str_fc9c, +str_fc9d, +str_fc9e, +str_fc9f, +str_fca0, +str_fca1, +str_fca2, +str_fca3, +str_fca4, +str_fca5, +str_fca6, +str_fca7, +str_fca8, +str_fca9, +str_fcaa, +str_fcab, +str_fcac, +str_fcad, +str_fcae, +str_fcaf, +str_fcb0, +str_fcb1, +str_fcb2, +str_fcb3, +str_fcb4, +str_fcb5, +str_fcb6, +str_fcb7, +str_fcb8, +str_fcb9, +str_fcba, +str_fcbb, +str_fcbc, +str_fcbd, +str_fcbe, +str_fcbf, +str_fcc0, +str_fcc1, +str_fcc2, +str_fcc3, +str_fcc4, +str_fcc5, +str_fcc6, +str_fcc7, +str_fcc8, +str_fcc9, +str_fcca, +str_fccb, +str_fccc, +str_fccd, +str_fcce, +str_fccf, +str_fcd0, +str_fcd1, +str_fcd2, +str_fcd3, +str_fcd4, +str_fcd5, +str_fcd6, +str_fcd7, +str_fcd8, +str_fcd9, +str_fcda, +str_fcdb, +str_fcdc, +str_fcdd, +str_fcde, +str_fcdf, +str_fce0, +str_fce1, +str_fce2, +str_fce3, +str_fce4, +str_fce5, +str_fce6, +str_fce7, +str_fce8, +str_fce9, +str_fcea, +str_fceb, +str_fcec, +str_fced, +str_fcee, +str_fcef, +str_fcf0, +str_fcf1, +str_fcf2, +str_fcf3, +str_fcf4, +str_fcf5, +str_fcf6, +str_fcf7, +str_fcf8, +str_fcf9, +str_fcfa, +str_fcfb, +str_fcfc, +str_fcfd, +str_fcfe, +str_fcff, +0}; + +static const unichar_t * const tab_fd[] = { +str_fd00, +str_fd01, +str_fd02, +str_fd03, +str_fd04, +str_fd05, +str_fd06, +str_fd07, +str_fd08, +str_fd09, +str_fd0a, +str_fd0b, +str_fd0c, +str_fd0d, +str_fd0e, +str_fd0f, +str_fd10, +str_fd11, +str_fd12, +str_fd13, +str_fd14, +str_fd15, +str_fd16, +str_fd17, +str_fd18, +str_fd19, +str_fd1a, +str_fd1b, +str_fd1c, +str_fd1d, +str_fd1e, +str_fd1f, +str_fd20, +str_fd21, +str_fd22, +str_fd23, +str_fd24, +str_fd25, +str_fd26, +str_fd27, +str_fd28, +str_fd29, +str_fd2a, +str_fd2b, +str_fd2c, +str_fd2d, +str_fd2e, +str_fd2f, +str_fd30, +str_fd31, +str_fd32, +str_fd33, +str_fd34, +str_fd35, +str_fd36, +str_fd37, +str_fd38, +str_fd39, +str_fd3a, +str_fd3b, +str_fd3c, +str_fd3d, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_fd50, +str_fd51, +str_fd52, +str_fd53, +str_fd54, +str_fd55, +str_fd56, +str_fd57, +str_fd58, +str_fd59, +str_fd5a, +str_fd5b, +str_fd5c, +str_fd5d, +str_fd5e, +str_fd5f, +str_fd60, +str_fd61, +str_fd62, +str_fd63, +str_fd64, +str_fd65, +str_fd66, +str_fd67, +str_fd68, +str_fd69, +str_fd6a, +str_fd6b, +str_fd6c, +str_fd6d, +str_fd6e, +str_fd6f, +str_fd70, +str_fd71, +str_fd72, +str_fd73, +str_fd74, +str_fd75, +str_fd76, +str_fd77, +str_fd78, +str_fd79, +str_fd7a, +str_fd7b, +str_fd7c, +str_fd7d, +str_fd7e, +str_fd7f, +str_fd80, +str_fd81, +str_fd82, +str_fd83, +str_fd84, +str_fd85, +str_fd86, +str_fd87, +str_fd88, +str_fd89, +str_fd8a, +str_fd8b, +str_fd8c, +str_fd8d, +str_fd8e, +str_fd8f, +0, 0, str_fd92, +str_fd93, +str_fd94, +str_fd95, +str_fd96, +str_fd97, +str_fd98, +str_fd99, +str_fd9a, +str_fd9b, +str_fd9c, +str_fd9d, +str_fd9e, +str_fd9f, +str_fda0, +str_fda1, +str_fda2, +str_fda3, +str_fda4, +str_fda5, +str_fda6, +str_fda7, +str_fda8, +str_fda9, +str_fdaa, +str_fdab, +str_fdac, +str_fdad, +str_fdae, +str_fdaf, +str_fdb0, +str_fdb1, +str_fdb2, +str_fdb3, +str_fdb4, +str_fdb5, +str_fdb6, +str_fdb7, +str_fdb8, +str_fdb9, +str_fdba, +str_fdbb, +str_fdbc, +str_fdbd, +str_fdbe, +str_fdbf, +str_fdc0, +str_fdc1, +str_fdc2, +str_fdc3, +str_fdc4, +str_fdc5, +str_fdc6, +str_fdc7, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_fdf0, +str_fdf1, +str_fdf2, +str_fdf3, +str_fdf4, +str_fdf5, +str_fdf6, +str_fdf7, +str_fdf8, +str_fdf9, +str_fdfa, +str_fdfb, +str_fdfc, +0, 0, 0, 0}; + +static const unichar_t * const tab_fe[] = { +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_fe10, +str_fe11, +str_fe12, +str_fe13, +str_fe14, +str_fe15, +str_fe16, +str_fe17, +str_fe18, +str_fe19, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, str_fe30, +str_fe31, +str_fe32, +str_fe33, +str_fe34, +str_fe35, +str_fe36, +str_fe37, +str_fe38, +str_fe39, +str_fe3a, +str_fe3b, +str_fe3c, +str_fe3d, +str_fe3e, +str_fe3f, +str_fe40, +str_fe41, +str_fe42, +str_fe43, +str_fe44, +0, 0, str_fe47, +str_fe48, +str_fe49, +str_fe4a, +str_fe4b, +str_fe4c, +str_fe4d, +str_fe4e, +str_fe4f, +str_fe50, +str_fe51, +str_fe52, +0, str_fe54, +str_fe55, +str_fe56, +str_fe57, +str_fe58, +str_fe59, +str_fe5a, +str_fe5b, +str_fe5c, +str_fe5d, +str_fe5e, +str_fe5f, +str_fe60, +str_fe61, +str_fe62, +str_fe63, +str_fe64, +str_fe65, +str_fe66, +0, str_fe68, +str_fe69, +str_fe6a, +str_fe6b, +0, 0, 0, 0, str_fe70, +str_fe71, +str_fe72, +0, str_fe74, +0, str_fe76, +str_fe77, +str_fe78, +str_fe79, +str_fe7a, +str_fe7b, +str_fe7c, +str_fe7d, +str_fe7e, +str_fe7f, +str_fe80, +str_fe81, +str_fe82, +str_fe83, +str_fe84, +str_fe85, +str_fe86, +str_fe87, +str_fe88, +str_fe89, +str_fe8a, +str_fe8b, +str_fe8c, +str_fe8d, +str_fe8e, +str_fe8f, +str_fe90, +str_fe91, +str_fe92, +str_fe93, +str_fe94, +str_fe95, +str_fe96, +str_fe97, +str_fe98, +str_fe99, +str_fe9a, +str_fe9b, +str_fe9c, +str_fe9d, +str_fe9e, +str_fe9f, +str_fea0, +str_fea1, +str_fea2, +str_fea3, +str_fea4, +str_fea5, +str_fea6, +str_fea7, +str_fea8, +str_fea9, +str_feaa, +str_feab, +str_feac, +str_fead, +str_feae, +str_feaf, +str_feb0, +str_feb1, +str_feb2, +str_feb3, +str_feb4, +str_feb5, +str_feb6, +str_feb7, +str_feb8, +str_feb9, +str_feba, +str_febb, +str_febc, +str_febd, +str_febe, +str_febf, +str_fec0, +str_fec1, +str_fec2, +str_fec3, +str_fec4, +str_fec5, +str_fec6, +str_fec7, +str_fec8, +str_fec9, +str_feca, +str_fecb, +str_fecc, +str_fecd, +str_fece, +str_fecf, +str_fed0, +str_fed1, +str_fed2, +str_fed3, +str_fed4, +str_fed5, +str_fed6, +str_fed7, +str_fed8, +str_fed9, +str_feda, +str_fedb, +str_fedc, +str_fedd, +str_fede, +str_fedf, +str_fee0, +str_fee1, +str_fee2, +str_fee3, +str_fee4, +str_fee5, +str_fee6, +str_fee7, +str_fee8, +str_fee9, +str_feea, +str_feeb, +str_feec, +str_feed, +str_feee, +str_feef, +str_fef0, +str_fef1, +str_fef2, +str_fef3, +str_fef4, +str_fef5, +str_fef6, +str_fef7, +str_fef8, +str_fef9, +str_fefa, +str_fefb, +str_fefc, +0, 0, 0, 0}; + +static const unichar_t * const tab_ff[] = { +0, str_ff01, +str_ff02, +str_ff03, +str_ff04, +str_ff05, +str_ff06, +str_ff07, +str_ff08, +str_ff09, +str_ff0a, +str_ff0b, +str_ff0c, +str_ff0d, +str_ff0e, +str_ff0f, +str_ff10, +str_ff11, +str_ff12, +str_ff13, +str_ff14, +str_ff15, +str_ff16, +str_ff17, +str_ff18, +str_ff19, +str_ff1a, +str_ff1b, +str_ff1c, +str_ff1d, +str_ff1e, +str_ff1f, +str_ff20, +str_ff21, +str_ff22, +str_ff23, +str_ff24, +str_ff25, +str_ff26, +str_ff27, +str_ff28, +str_ff29, +str_ff2a, +str_ff2b, +str_ff2c, +str_ff2d, +str_ff2e, +str_ff2f, +str_ff30, +str_ff31, +str_ff32, +str_ff33, +str_ff34, +str_ff35, +str_ff36, +str_ff37, +str_ff38, +str_ff39, +str_ff3a, +str_ff3b, +str_ff3c, +str_ff3d, +str_ff3e, +str_ff3f, +str_ff40, +str_ff41, +str_ff42, +str_ff43, +str_ff44, +str_ff45, +str_ff46, +str_ff47, +str_ff48, +str_ff49, +str_ff4a, +str_ff4b, +str_ff4c, +str_ff4d, +str_ff4e, +str_ff4f, +str_ff50, +str_ff51, +str_ff52, +str_ff53, +str_ff54, +str_ff55, +str_ff56, +str_ff57, +str_ff58, +str_ff59, +str_ff5a, +str_ff5b, +str_ff5c, +str_ff5d, +str_ff5e, +str_ff5f, +str_ff60, +str_ff61, +str_ff62, +str_ff63, +str_ff64, +str_ff65, +str_ff66, +str_ff67, +str_ff68, +str_ff69, +str_ff6a, +str_ff6b, +str_ff6c, +str_ff6d, +str_ff6e, +str_ff6f, +str_ff70, +str_ff71, +str_ff72, +str_ff73, +str_ff74, +str_ff75, +str_ff76, +str_ff77, +str_ff78, +str_ff79, +str_ff7a, +str_ff7b, +str_ff7c, +str_ff7d, +str_ff7e, +str_ff7f, +str_ff80, +str_ff81, +str_ff82, +str_ff83, +str_ff84, +str_ff85, +str_ff86, +str_ff87, +str_ff88, +str_ff89, +str_ff8a, +str_ff8b, +str_ff8c, +str_ff8d, +str_ff8e, +str_ff8f, +str_ff90, +str_ff91, +str_ff92, +str_ff93, +str_ff94, +str_ff95, +str_ff96, +str_ff97, +str_ff98, +str_ff99, +str_ff9a, +str_ff9b, +str_ff9c, +str_ff9d, +str_ff9e, +str_ff9f, +str_ffa0, +str_ffa1, +str_ffa2, +str_ffa3, +str_ffa4, +str_ffa5, +str_ffa6, +str_ffa7, +str_ffa8, +str_ffa9, +str_ffaa, +str_ffab, +str_ffac, +str_ffad, +str_ffae, +str_ffaf, +str_ffb0, +str_ffb1, +str_ffb2, +str_ffb3, +str_ffb4, +str_ffb5, +str_ffb6, +str_ffb7, +str_ffb8, +str_ffb9, +str_ffba, +str_ffbb, +str_ffbc, +str_ffbd, +str_ffbe, +0, 0, 0, str_ffc2, +str_ffc3, +str_ffc4, +str_ffc5, +str_ffc6, +str_ffc7, +0, 0, str_ffca, +str_ffcb, +str_ffcc, +str_ffcd, +str_ffce, +str_ffcf, +0, 0, str_ffd2, +str_ffd3, +str_ffd4, +str_ffd5, +str_ffd6, +str_ffd7, +0, 0, str_ffda, +str_ffdb, +str_ffdc, +0, 0, 0, str_ffe0, +str_ffe1, +str_ffe2, +str_ffe3, +str_ffe4, +str_ffe5, +str_ffe6, +0, str_ffe8, +str_ffe9, +str_ffea, +str_ffeb, +str_ffec, +str_ffed, +str_ffee, +0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + +const unichar_t *const * const unicode_alternates[] = { +tab_0, +tab_1, +tab_2, +tab_3, +tab_4, +tab_5, +tab_6, +up_allzeros, up_allzeros, tab_9, +tab_a, +tab_b, +tab_c, +tab_d, +tab_e, +tab_f, +tab_10, +tab_11, +up_allzeros, tab_13, +up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, tab_1b, +up_allzeros, tab_1d, +tab_1e, +tab_1f, +tab_20, +tab_21, +tab_22, +tab_23, +tab_24, +tab_25, +tab_26, +tab_27, +up_allzeros, up_allzeros, tab_2a, +up_allzeros, tab_2c, +tab_2d, +tab_2e, +tab_2f, +tab_30, +tab_31, +tab_32, +tab_33, +up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, tab_a7, +up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, up_allzeros, tab_f9, +tab_fa, +tab_fb, +tab_fc, +tab_fd, +tab_fe, +tab_ff, +0}; diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/Unicode/ustring.c b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/Unicode/ustring.c new file mode 100644 index 00000000000..b11b8400635 --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/Unicode/ustring.c @@ -0,0 +1,890 @@ +/* Copyright (C) 2000-2008 by George Williams */ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include +#include "ustring.h" +#include "utype.h" + +long uc_strcmp(const unichar_t *str1,const char *str2) { + long ch1, ch2; + for (;;) { + ch1 = *str1++; ch2 = *(unsigned char *) str2++ ; + if ( ch1!=ch2 || ch1=='\0' ) +return(ch1-ch2); + } +} + +long uc_strncmp(const unichar_t *str1,const char *str2,int n) { + long ch1, ch2; + while ( --n>=0 ) { + ch1 = *str1++; ch2 = *(unsigned char *) str2++ ; + if ( ch1!=ch2 || ch1=='\0' ) +return(ch1-ch2); + } +return( 0 ); +} + +long uc_strmatch(const unichar_t *str1, const char *str2) { + long ch1, ch2; + for (;;) { + ch1 = *str1++; ch2 = *(unsigned char *) str2++ ; + ch1 = tolower(ch1); + ch2 = tolower(ch2); + if ( ch1!=ch2 || ch1=='\0' ) +return(ch1-ch2); + } +} + +long uc_strnmatch(const unichar_t *str1, const char *str2, int len) { + long ch1, ch2; + for (;--len>=0;) { + ch1 = *str1++; ch2 = *(unsigned char *) str2++ ; + ch1 = tolower(ch1); + ch2 = tolower(ch2); + if ( ch1!=ch2 || ch1=='\0' || len<=0 ) +return(ch1-ch2); + } +return( 0 ); +} + +long u_strnmatch(const unichar_t *str1, const unichar_t *str2, int len) { + long ch1, ch2; + for (;--len>=0;) { + ch1 = *str1++; ch2 = *str2++ ; + ch1 = tolower(ch1); + ch2 = tolower(ch2); + if ( ch1!=ch2 || ch1=='\0' || len<=0 ) +return(ch1-ch2); + } +return( 0 ); +} + +long u_strcmp(const unichar_t *str1,const unichar_t *str2) { + long ch1, ch2; + for (;;) { + ch1 = *str1++; ch2 = *str2++ ; + if ( ch1!=ch2 || ch1=='\0' ) +return(ch1-ch2); + } +} + +long u_strncmp(const unichar_t *str1,const unichar_t *str2,int n) { + long ch1, ch2; + while ( --n>=0 ) { + ch1 = *str1++; ch2 = *str2++ ; + if ( ch1!=ch2 || ch1=='\0' ) +return(ch1-ch2); + } +return( 0 ); +} + +long u_strmatch(const unichar_t *str1, const unichar_t *str2) { + long ch1, ch2; + for (;;) { + ch1 = *str1++; ch2 = *str2++ ; + ch1 = tolower(ch1); + ch2 = tolower(ch2); + if ( ch1!=ch2 || ch1=='\0' ) +return(ch1-ch2); + } +} + +void cu_strcpy(char *to, const unichar_t *from) { + register unichar_t ch; + while ( (ch = *from++) != '\0' ) + *(to++) = ch; + *to = 0; +} + +void uc_strcpy(unichar_t *to, const char *from) { + register unichar_t ch; + while ( (ch = *(unsigned char *) from++) != '\0' ) + *(to++) = ch; + *to = 0; +} + +void u_strcpy(unichar_t *to, const unichar_t *from) { + register unichar_t ch; + while ( (ch = *from++) != '\0' ) + *(to++) = ch; + *to = 0; +} + +void u_strncpy(register unichar_t *to, const unichar_t *from, int len) { + register unichar_t ch; + while ( (ch = *from++) != '\0' && --len>=0 ) + *(to++) = ch; + *to = 0; +} + +void cu_strncpy(register char *to, const unichar_t *from, int len) { + register unichar_t ch; + while ( (ch = *from++) != '\0' && --len>=0 ) + *(to++) = ch; + *to = 0; +} + +void uc_strncpy(register unichar_t *to, const char *from, int len) { + register unichar_t ch; + while ( (ch = *(unsigned char *) from++) != '\0' && --len>=0 ) + *(to++) = ch; + *to = 0; +} + +void uc_strcat(unichar_t *to, const char *from) { + uc_strcpy(to+u_strlen(to),from); +} + +void uc_strncat(unichar_t *to, const char *from,int len) { + uc_strncpy(to+u_strlen(to),from,len); +} + +void cu_strcat(char *to, const unichar_t *from) { + cu_strcpy(to+strlen(to),from); +} + +void cu_strncat(char *to, const unichar_t *from, int len) { + cu_strncpy(to+strlen(to),from,len); +} + +void u_strcat(unichar_t *to, const unichar_t *from) { + u_strcpy(to+u_strlen(to),from); +} + +void u_strncat(unichar_t *to, const unichar_t *from, int len) { + u_strncpy(to+u_strlen(to),from,len); +} + +int u_strlen(register const unichar_t *str) { + register int len = 0; + + while ( *str++!='\0' ) + ++len; +return( len ); +} + +unichar_t *u_strchr(const unichar_t *str ,unichar_t ch) { + register unichar_t test; + + while ( (test=*(str++))!='\0' ) + if ( test==ch ) +return( (unichar_t *) str-1 ); + +return( NULL ); +} + +unichar_t *u_strrchr(const unichar_t *str ,unichar_t ch) { + register unichar_t test, *last = NULL; + + while ( (test=*(str++))!='\0' ) + if ( test==ch ) + last = (unichar_t *) str-1; + +return( last ); +} + +unichar_t *uc_strstr(const unichar_t *longer, const char *substr) { + long ch1, ch2; + const unichar_t *lpt, *str1; const char *str2; + + for ( lpt=longer; *lpt!='\0'; ++lpt ) { + str1 = lpt; str2 = substr; + for (;;) { + ch1 = *str1++; ch2 = *(unsigned char *) str2++ ; + if ( ch2=='\0' ) +return((unichar_t *) lpt); + if ( ch1!=ch2 ) + break; + } + } +return( NULL ); +} + +unichar_t *u_strstr(const unichar_t *longer, const unichar_t *substr) { + long ch1, ch2; + const unichar_t *lpt, *str1, *str2; + + for ( lpt=longer; *lpt!='\0'; ++lpt ) { + str1 = lpt; str2 = substr; + for (;;) { + ch1 = *str1++; ch2 = *str2++ ; + if ( ch2=='\0' ) +return((unichar_t *) lpt); + if ( ch1!=ch2 ) + break; + } + } +return( NULL ); +} + +unichar_t *uc_strstrmatch(const unichar_t *longer, const char *substr) { + long ch1, ch2; + const unichar_t *lpt, *str1; const unsigned char *str2; + + for ( lpt=longer; *lpt!='\0'; ++lpt ) { + str1 = lpt; str2 = (unsigned char *) substr; + for (;;) { + ch1 = *str1++; ch2 = *str2++ ; + ch1 = tolower(ch1); + ch2 = tolower(ch2); + if ( ch2=='\0' ) +return((unichar_t *) lpt); + if ( ch1!=ch2 ) + break; + } + } +return( NULL ); +} + +unichar_t *u_strstrmatch(const unichar_t *longer, const unichar_t *substr) { + long ch1, ch2; + const unichar_t *lpt, *str1, *str2; + + for ( lpt=longer; *lpt!='\0'; ++lpt ) { + str1 = lpt; str2 = substr; + for (;;) { + ch1 = *str1++; ch2 = *str2++ ; + ch1 = tolower(ch1); + ch2 = tolower(ch2); + if ( ch2=='\0' ) +return((unichar_t *) lpt); + if ( ch1!=ch2 ) + break; + } + } +return( NULL ); +} + +unichar_t *u_copyn(const unichar_t *pt, long n) { + unichar_t *res; +#ifdef MEMORY_MASK + if ( n*sizeof(unichar_t)>=MEMORY_MASK ) + n = MEMORY_MASK/sizeof(unichar_t)-1; +#endif + res = galloc((n+1)*sizeof(unichar_t)); + memcpy(res,pt,n*sizeof(unichar_t)); + res[n]='\0'; +return(res); +} + +unichar_t *u_copy(const unichar_t *pt) { + if(pt) +return u_copyn(pt,u_strlen(pt)); + +return((unichar_t *)0); +} + +unichar_t *u_concat(const unichar_t *s1, const unichar_t *s2) { + long len1, len2; + unichar_t *pt; + + if ( s1==NULL ) +return( u_copy( s2 )); + else if ( s2==NULL ) +return( u_copy( s1 )); + len1 = u_strlen(s1); len2 = u_strlen(s2); + pt = galloc((len1+len2+1)*sizeof(unichar_t)); + u_strcpy(pt,s1); + u_strcpy(pt+len1,s2); +return( pt ); +} + +unichar_t *uc_copyn(const char *pt,int len) { + unichar_t *res, *rpt; + + if(!pt) +return((unichar_t *)0); + +#ifdef MEMORY_MASK + if ( (len+1)*sizeof(unichar_t)>=MEMORY_MASK ) + len = MEMORY_MASK/sizeof(unichar_t)-1; +#endif + res = galloc((len+1)*sizeof(unichar_t)); + for ( rpt=res; --len>=0 ; *rpt++ = *(unsigned char *) pt++ ); + *rpt = '\0'; +return(res); +} + +unichar_t *uc_copy(const char *pt) { + unichar_t *res, *rpt; + int n; + + if(!pt) +return((unichar_t *)0); + + n = strlen(pt); +#ifdef MEMORY_MASK + if ( (n+1)*sizeof(unichar_t)>=MEMORY_MASK ) + n = MEMORY_MASK/sizeof(unichar_t)-1; +#endif + res = galloc((n+1)*sizeof(unichar_t)); + for ( rpt=res; --n>=0 ; *rpt++ = *(unsigned char *) pt++ ); + *rpt = '\0'; +return(res); +} + +char *cu_copyn(const unichar_t *pt,int len) { + char *res, *rpt; + + if(!pt) +return(NULL); + +#ifdef MEMORY_MASK + if ( (len+1)>=MEMORY_MASK ) + len = MEMORY_MASK-1; +#endif + res = galloc(len+1); + for ( rpt=res; --len>=0 ; *rpt++ = *pt++ ); + *rpt = '\0'; +return(res); +} + +char *cu_copy(const unichar_t *pt) { + char *res, *rpt; + int n; + + if(!pt) +return((char *)0); + + n = u_strlen(pt); +#ifdef MEMORY_MASK + if ( (n+1)>=MEMORY_MASK ) + n = MEMORY_MASK/sizeof(unichar_t)-1; +#endif + res = galloc(n+1); + for ( rpt=res; --n>=0 ; *rpt++ = *pt++ ); + *rpt = '\0'; +return(res); +} + +double u_strtod(const unichar_t *str, unichar_t **ptr) { + char buf[60], *pt, *ret; + const unichar_t *upt; + double val; + extern double strtod(); /* Please don't delete this, not all of us have good ansi headers */ + + for ( upt=str, pt=buf; *upt<128 && *upt!='\0'; ) + *pt++ = *upt++; + *pt = '\0'; + val = strtod(buf,&ret); + if ( ptr!=NULL ) { + if ( pt==ret ) + *ptr = (unichar_t *) upt; + else + *ptr = (unichar_t *) (str + (ret-buf)); + } +return( val ); +} + +long u_strtol(const unichar_t *str, unichar_t **ptr, int base) { + char buf[60], *pt, *ret; + const unichar_t *upt; + long val; + extern long strtol(); /* Please don't delete this, not all of us have good ansi headers */ + + for ( upt=str, pt=buf; *upt<128 && *upt!='\0' && pt>4) )-1; + *upt++ = 0xd800 | (w<<6) | ((pt[1]&0xf)<<2) | ((pt[2]&0x30)>>4); + *upt = 0xdc00 | ((pt[2]&0xf)<<6) | (pt[3]&0x3f); + pt += 4; + } else { + /* no space for surrogate */ + pt += 4; +#else + } else { + w = ( ((*pt&0x7)<<2) | ((pt[1]&0x30)>>4) )-1; + w = (w<<6) | ((pt[1]&0xf)<<2) | ((pt[2]&0x30)>>4); + w2 = ((pt[2]&0xf)<<6) | (pt[3]&0x3f); + *upt = w*0x400 + w2 + 0x10000; + pt += 4; +#endif + } + ++upt; + } + *upt = '\0'; +return( ubuf ); +} + +unichar_t *utf82u_strcpy(unichar_t *ubuf,const char *utf8buf) { +return( utf82u_strncpy(ubuf,utf8buf,strlen(utf8buf)+1)); +} + +# ifdef UNICHAR_16 +uint32 *utf82u32_strncpy(uint32 *ubuf,const char *utf8buf,int len) { + uint32 *upt=ubuf, *uend=ubuf+len-1; + const uint8 *pt = (const uint8 *) utf8buf; + int w, w2; + + while ( *pt!='\0' && upt>4) )-1; + w = (w<<6) | ((pt[1]&0xf)<<2) | ((pt[2]&0x30)>>4); + w2 = ((pt[2]&0xf)<<6) | (pt[3]&0x3f); + *upt = w*0x400 + w2 + 0x10000; + pt += 4; + } + ++upt; + } + *upt = '\0'; +return( ubuf ); +} + +char *u322utf8_strncpy(char *utf8buf, const uint32 *ubuf,int len) { + uint8 *pt=(uint8 *) utf8buf, *end=(uint8 *) utf8buf+len-1; + const uint32 *upt = ubuf; + + while ( *upt!='\0' && pt=end ) + break; + *pt++ = 0xc0 | (*upt>>6); + *pt++ = 0x80 | (*upt&0x3f); + } else if ( *upt<=0xffff ) { + if ( pt+2>=end ) + break; + *pt++ = 0xe0 | (*upt>>12); + *pt++ = 0x80 | ((*upt>>6)&0x3f); + *pt++ = 0x80 | (*upt&0x3f); + } else { + uint32 val = *upt-0x10000; + int u = ((val&0xf0000)>>16)+1, z=(val&0x0f000)>>12, y=(val&0x00fc0)>>6, x=val&0x0003f; + if ( pt+3>=end ) + break; + *pt++ = 0xf0 | (u>>2); + *pt++ = 0x80 | ((u&3)<<4) | z; + *pt++ = 0x80 | y; + *pt++ = 0x80 | x; + } + ++upt; + } + *pt = '\0'; +return( utf8buf ); +} + +char *u322utf8_copy(const uint32 *ubuf) { + int i, len; + char *buf; + + for ( i=len=0; ubuf[i]!=0; ++i ) + if ( ubuf[i]<0x80 ) + ++len; + else if ( ubuf[i]<0x800 ) + len += 2; + else if ( ubuf[i]<0x10000 ) + len += 3; + else + len += 4; + buf = galloc(len+1); +return( u322utf8_strncpy(buf,ubuf,len+1)); +} +#endif + +unichar_t *utf82u_copyn(const char *utf8buf,int len) { + unichar_t *ubuf = galloc((len+1)*sizeof(unichar_t)); +return( utf82u_strncpy(ubuf,utf8buf,len+1)); +} + +unichar_t *utf82u_copy(const char *utf8buf) { + int len; + unichar_t *ubuf; + + if ( utf8buf==NULL ) +return( NULL ); + + len = strlen(utf8buf); + ubuf = galloc((len+1)*sizeof(unichar_t)); +return( utf82u_strncpy(ubuf,utf8buf,len+1)); +} + +void utf82u_strcat(unichar_t *to,const char *from) { + utf82u_strcpy(to+u_strlen(to),from); +} + +#ifdef UNICHAR_16 +uint32 *utf82u32_copy(const char *utf8buf) { + int len; + uint32 *ubuf; + + if ( utf8buf==NULL ) +return( NULL ); + + len = strlen(utf8buf); + ubuf = galloc((len+1)*sizeof(uint32)); +return( utf82u32_strncpy(ubuf,utf8buf,len+1)); +} +#endif + +char *u2utf8_strcpy(char *utf8buf,const unichar_t *ubuf) { + char *pt = utf8buf; + + while ( *ubuf ) { + if ( *ubuf<0x80 ) + *pt++ = *ubuf; + else if ( *ubuf<0x800 ) { + *pt++ = 0xc0 | (*ubuf>>6); + *pt++ = 0x80 | (*ubuf&0x3f); +#ifdef UNICHAR_16 + } else if ( *ubuf>=0xd800 && *ubuf<0xdc00 && ubuf[1]>=0xdc00 && ubuf[1]<0xe000 ) { + int u = ((*ubuf>>6)&0xf)+1, y = ((*ubuf&3)<<4) | ((ubuf[1]>>6)&0xf); + *pt++ = 0xf0 | (u>>2); + *pt++ = 0x80 | ((u&3)<<4) | ((*ubuf>>2)&0xf); + *pt++ = 0x80 | y; + *pt++ = 0x80 | (ubuf[1]&0x3f); + } else { + *pt++ = 0xe0 | (*ubuf>>12); + *pt++ = 0x80 | ((*ubuf>>6)&0x3f); + *pt++ = 0x80 | (*ubuf&0x3f); +#else + } else if ( *ubuf < 0x10000 ) { + *pt++ = 0xe0 | (*ubuf>>12); + *pt++ = 0x80 | ((*ubuf>>6)&0x3f); + *pt++ = 0x80 | (*ubuf&0x3f); + } else { + uint32 val = *ubuf-0x10000; + int u = ((val&0xf0000)>>16)+1, z=(val&0x0f000)>>12, y=(val&0x00fc0)>>6, x=val&0x0003f; + *pt++ = 0xf0 | (u>>2); + *pt++ = 0x80 | ((u&3)<<4) | z; + *pt++ = 0x80 | y; + *pt++ = 0x80 | x; +#endif + } + ++ubuf; + } + *pt = '\0'; +return( utf8buf ); +} + +char *utf8_strchr(const char *str, int search) { + int ch; + const char *old = str; + + while ( (ch = utf8_ildb(&str))!=0 ) { + if ( ch==search ) +return( (char *) old ); + old = str; + } +return( NULL ); +} + +char *latin1_2_utf8_strcpy(char *utf8buf,const char *lbuf) { + char *pt = utf8buf; + const unsigned char *lpt = (const unsigned char *) lbuf; + + while ( *lpt ) { + if ( *lpt<0x80 ) + *pt++ = *lpt; + else { + *pt++ = 0xc0 | (*lpt>>6); + *pt++ = 0x80 | (*lpt&0x3f); + } + ++lpt; + } + *pt = '\0'; +return( utf8buf ); +} + +char *latin1_2_utf8_copy(const char *lbuf) { + int len; + char *utf8buf; + + if ( lbuf==NULL ) +return( NULL ); + + len = strlen(lbuf); + utf8buf = galloc(2*len+1); +return( latin1_2_utf8_strcpy(utf8buf,lbuf)); +} + +char *utf8_2_latin1_copy(const char *utf8buf) { + int len; + int ch; + char *lbuf, *pt; const char *upt; + + if ( utf8buf==NULL ) +return( NULL ); + + len = strlen(utf8buf); + pt = lbuf = galloc(len+1); + for ( upt=utf8buf; (ch=utf8_ildb(&upt))!='\0'; ) + if ( ch>=0xff ) + *pt++ = '?'; + else + *pt++ = ch; + *pt = '\0'; +return( lbuf ); +} + +char *u2utf8_copy(const unichar_t *ubuf) { + int len; + char *utf8buf; + + if ( ubuf==NULL ) +return( NULL ); + + len = u_strlen(ubuf); + utf8buf = galloc((len+1)*3); +return( u2utf8_strcpy(utf8buf,ubuf)); +} + +char *u2utf8_copyn(const unichar_t *ubuf,int len) { + int i; + char *utf8buf, *pt; + + if ( ubuf==NULL ) +return( NULL ); + + utf8buf = pt = galloc((len+1)*3); + for ( i=0; i=0x80 && *text<0xc0 ) + val = ((ch&0x1f)<<6) | (*text++&0x3f); + } else if ( ch<=0xef ) { + if ( *text>=0x80 && *text<0xc0 && text[1]>=0x80 && text[1]<0xc0 ) { + val = ((ch&0xf)<<12) | ((text[0]&0x3f)<<6) | (text[1]&0x3f); + text += 2; + } + } else { + int w = ( ((ch&0x7)<<2) | ((text[0]&0x30)>>4) )-1, w2; + w = (w<<6) | ((text[0]&0xf)<<2) | ((text[1]&0x30)>>4); + w2 = ((text[1]&0xf)<<6) | (text[2]&0x3f); + val = w*0x400 + w2 + 0x10000; + if ( *text<0x80 || text[1]<0x80 || text[2]<0x80 || + *text>=0xc0 || text[1]>=0xc0 || text[2]>=0xc0 ) + val = -1; + else + text += 3; + } + *_text = (const char *) text; +return( val ); +} + +char *utf8_idpb(char *utf8_text,uint32 ch) { + /* Increment and deposit character */ + if ( ch<0 || ch>=17*65536 ) +return( utf8_text ); + + if ( ch<=127 ) + *utf8_text++ = ch; + else if ( ch<=0x7ff ) { + *utf8_text++ = 0xc0 | (ch>>6); + *utf8_text++ = 0x80 | (ch&0x3f); + } else if ( ch<=0xffff ) { + *utf8_text++ = 0xe0 | (ch>>12); + *utf8_text++ = 0x80 | ((ch>>6)&0x3f); + *utf8_text++ = 0x80 | (ch&0x3f); + } else { + uint32 val = ch-0x10000; + int u = ((val&0xf0000)>>16)+1, z=(val&0x0f000)>>12, y=(val&0x00fc0)>>6, x=val&0x0003f; + *utf8_text++ = 0xf0 | (u>>2); + *utf8_text++ = 0x80 | ((u&3)<<4) | z; + *utf8_text++ = 0x80 | y; + *utf8_text++ = 0x80 | x; + } +return( utf8_text ); +} + + +char *utf8_ib(char *utf8_text) { + int ch; + + /* Increment character */ + if ( (ch = *utf8_text)=='\0' ) +return( utf8_text ); + else if ( ch<=127 ) +return( utf8_text+1 ); + else if ( ch<0xe0 ) +return( utf8_text+2 ); + else if ( ch<0xf0 ) +return( utf8_text+3 ); + else +return( utf8_text+4 ); +} + +int utf8_valid(const char *str) { + /* Is this a valid utf8 string? */ + int ch; + + while ( (ch=utf8_ildb(&str))!='\0' ) + if ( ch==-1 ) +return( false ); + +return( true ); +} + +char *utf8_db(char *utf8_text) { + /* Decrement utf8 pointer */ + unsigned char *pt = (unsigned char *) utf8_text; + + --pt; + if ( *pt>=0xc0 ) + /* This should never happen. The pointer was looking at an intermediate */ + /* character. However, if it does happen then we are now properly */ + /* positioned at the start of a new char */; + else if ( *pt>=0x80 ) { + --pt; + if ( *pt>=0xc0 ) + /* Done */; + else if ( *pt>=0x80 ) { + --pt; + if ( *pt>=0xc0 ) + /* Done */; + else if ( *pt>=0x80 ) + --pt; + } + } +return( (char *) pt ); +} + +int utf8_strlen(const char *utf8_str) { + /* how many characters in the string NOT bytes */ + int len = 0; + + while ( utf8_ildb(&utf8_str)>0 ) + ++len; +return( len ); +} + +int utf82u_strlen(const char *utf8_str) { + /* how many shorts needed to represent it in UCS2 */ + int ch; + int len = 0; + + while ( (ch = utf8_ildb(&utf8_str))>0 ) + if ( ch>0x10000 ) + len += 2; + else + ++len; +return( len ); +} diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/Unicode/utype.c b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/Unicode/utype.c new file mode 100644 index 00000000000..84ecdbe32c1 --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/Unicode/utype.c @@ -0,0 +1,24588 @@ +#include "utype.h" + +const unsigned short ____tolower[]= { 0, + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, + 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, + 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, + 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, + 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, + 0x0040, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, + 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, + 0x0078, 0x0079, 0x007a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, + 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, + 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, + 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, + 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, + 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, + 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, + 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, + 0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, + 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, + 0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf, + 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, + 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, + 0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00d7, + 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x00df, + 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, + 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, + 0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7, + 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x00ff, + 0x0101, 0x0101, 0x0103, 0x0103, 0x0105, 0x0105, 0x0107, 0x0107, + 0x0109, 0x0109, 0x010b, 0x010b, 0x010d, 0x010d, 0x010f, 0x010f, + 0x0111, 0x0111, 0x0113, 0x0113, 0x0115, 0x0115, 0x0117, 0x0117, + 0x0119, 0x0119, 0x011b, 0x011b, 0x011d, 0x011d, 0x011f, 0x011f, + 0x0121, 0x0121, 0x0123, 0x0123, 0x0125, 0x0125, 0x0127, 0x0127, + 0x0129, 0x0129, 0x012b, 0x012b, 0x012d, 0x012d, 0x012f, 0x012f, + 0x0069, 0x0131, 0x0133, 0x0133, 0x0135, 0x0135, 0x0137, 0x0137, + 0x0138, 0x013a, 0x013a, 0x013c, 0x013c, 0x013e, 0x013e, 0x0140, + 0x0140, 0x0142, 0x0142, 0x0144, 0x0144, 0x0146, 0x0146, 0x0148, + 0x0148, 0x0149, 0x014b, 0x014b, 0x014d, 0x014d, 0x014f, 0x014f, + 0x0151, 0x0151, 0x0153, 0x0153, 0x0155, 0x0155, 0x0157, 0x0157, + 0x0159, 0x0159, 0x015b, 0x015b, 0x015d, 0x015d, 0x015f, 0x015f, + 0x0161, 0x0161, 0x0163, 0x0163, 0x0165, 0x0165, 0x0167, 0x0167, + 0x0169, 0x0169, 0x016b, 0x016b, 0x016d, 0x016d, 0x016f, 0x016f, + 0x0171, 0x0171, 0x0173, 0x0173, 0x0175, 0x0175, 0x0177, 0x0177, + 0x00ff, 0x017a, 0x017a, 0x017c, 0x017c, 0x017e, 0x017e, 0x017f, + 0x0180, 0x0253, 0x0183, 0x0183, 0x0185, 0x0185, 0x0254, 0x0188, + 0x0188, 0x0256, 0x0257, 0x018c, 0x018c, 0x018d, 0x01dd, 0x0259, + 0x025b, 0x0192, 0x0192, 0x0260, 0x0263, 0x0195, 0x0269, 0x0268, + 0x0199, 0x0199, 0x019a, 0x019b, 0x026f, 0x0272, 0x019e, 0x0275, + 0x01a1, 0x01a1, 0x01a3, 0x01a3, 0x01a5, 0x01a5, 0x0280, 0x01a8, + 0x01a8, 0x0283, 0x01aa, 0x01ab, 0x01ad, 0x01ad, 0x0288, 0x01b0, + 0x01b0, 0x028a, 0x028b, 0x01b4, 0x01b4, 0x01b6, 0x01b6, 0x0292, + 0x01b9, 0x01b9, 0x01ba, 0x01bb, 0x01bd, 0x01bd, 0x01be, 0x01bf, + 0x01c0, 0x01c1, 0x01c2, 0x01c3, 0x01c6, 0x01c6, 0x01c6, 0x01c9, + 0x01c9, 0x01c9, 0x01cc, 0x01cc, 0x01cc, 0x01ce, 0x01ce, 0x01d0, + 0x01d0, 0x01d2, 0x01d2, 0x01d4, 0x01d4, 0x01d6, 0x01d6, 0x01d8, + 0x01d8, 0x01da, 0x01da, 0x01dc, 0x01dc, 0x01dd, 0x01df, 0x01df, + 0x01e1, 0x01e1, 0x01e3, 0x01e3, 0x01e5, 0x01e5, 0x01e7, 0x01e7, + 0x01e9, 0x01e9, 0x01eb, 0x01eb, 0x01ed, 0x01ed, 0x01ef, 0x01ef, + 0x01f0, 0x01f3, 0x01f3, 0x01f3, 0x01f5, 0x01f5, 0x0195, 0x01bf, + 0x01f9, 0x01f9, 0x01fb, 0x01fb, 0x01fd, 0x01fd, 0x01ff, 0x01ff, + 0x0201, 0x0201, 0x0203, 0x0203, 0x0205, 0x0205, 0x0207, 0x0207, + 0x0209, 0x0209, 0x020b, 0x020b, 0x020d, 0x020d, 0x020f, 0x020f, + 0x0211, 0x0211, 0x0213, 0x0213, 0x0215, 0x0215, 0x0217, 0x0217, + 0x0219, 0x0219, 0x021b, 0x021b, 0x021d, 0x021d, 0x021f, 0x021f, + 0x019e, 0x0221, 0x0223, 0x0223, 0x0225, 0x0225, 0x0227, 0x0227, + 0x0229, 0x0229, 0x022b, 0x022b, 0x022d, 0x022d, 0x022f, 0x022f, + 0x0231, 0x0231, 0x0233, 0x0233, 0x0234, 0x0235, 0x0236, 0x0237, + 0x0238, 0x0239, 0x2c65, 0x023c, 0x023c, 0x019a, 0x2c66, 0x023f, + 0x0240, 0x0242, 0x0242, 0x0180, 0x0289, 0x028c, 0x0247, 0x0247, + 0x0249, 0x0249, 0x024b, 0x024b, 0x024d, 0x024d, 0x024f, 0x024f, + 0x0250, 0x0251, 0x0252, 0x0253, 0x0254, 0x0255, 0x0256, 0x0257, + 0x0258, 0x0259, 0x025a, 0x025b, 0x025c, 0x025d, 0x025e, 0x025f, + 0x0260, 0x0261, 0x0262, 0x0263, 0x0264, 0x0265, 0x0266, 0x0267, + 0x0268, 0x0269, 0x026a, 0x026b, 0x026c, 0x026d, 0x026e, 0x026f, + 0x0270, 0x0271, 0x0272, 0x0273, 0x0274, 0x0275, 0x0276, 0x0277, + 0x0278, 0x0279, 0x027a, 0x027b, 0x027c, 0x027d, 0x027e, 0x027f, + 0x0280, 0x0281, 0x0282, 0x0283, 0x0284, 0x0285, 0x0286, 0x0287, + 0x0288, 0x0289, 0x028a, 0x028b, 0x028c, 0x028d, 0x028e, 0x028f, + 0x0290, 0x0291, 0x0292, 0x0293, 0x0294, 0x0295, 0x0296, 0x0297, + 0x0298, 0x0299, 0x029a, 0x029b, 0x029c, 0x029d, 0x029e, 0x029f, + 0x02a0, 0x02a1, 0x02a2, 0x02a3, 0x02a4, 0x02a5, 0x02a6, 0x02a7, + 0x02a8, 0x02a9, 0x02aa, 0x02ab, 0x02ac, 0x02ad, 0x02ae, 0x02af, + 0x02b0, 0x02b1, 0x02b2, 0x02b3, 0x02b4, 0x02b5, 0x02b6, 0x02b7, + 0x02b8, 0x02b9, 0x02ba, 0x02bb, 0x02bc, 0x02bd, 0x02be, 0x02bf, + 0x02c0, 0x02c1, 0x02c2, 0x02c3, 0x02c4, 0x02c5, 0x02c6, 0x02c7, + 0x02c8, 0x02c9, 0x02ca, 0x02cb, 0x02cc, 0x02cd, 0x02ce, 0x02cf, + 0x02d0, 0x02d1, 0x02d2, 0x02d3, 0x02d4, 0x02d5, 0x02d6, 0x02d7, + 0x02d8, 0x02d9, 0x02da, 0x02db, 0x02dc, 0x02dd, 0x02de, 0x02df, + 0x02e0, 0x02e1, 0x02e2, 0x02e3, 0x02e4, 0x02e5, 0x02e6, 0x02e7, + 0x02e8, 0x02e9, 0x02ea, 0x02eb, 0x02ec, 0x02ed, 0x02ee, 0x02ef, + 0x02f0, 0x02f1, 0x02f2, 0x02f3, 0x02f4, 0x02f5, 0x02f6, 0x02f7, + 0x02f8, 0x02f9, 0x02fa, 0x02fb, 0x02fc, 0x02fd, 0x02fe, 0x02ff, + 0x0300, 0x0301, 0x0302, 0x0303, 0x0304, 0x0305, 0x0306, 0x0307, + 0x0308, 0x0309, 0x030a, 0x030b, 0x030c, 0x030d, 0x030e, 0x030f, + 0x0310, 0x0311, 0x0312, 0x0313, 0x0314, 0x0315, 0x0316, 0x0317, + 0x0318, 0x0319, 0x031a, 0x031b, 0x031c, 0x031d, 0x031e, 0x031f, + 0x0320, 0x0321, 0x0322, 0x0323, 0x0324, 0x0325, 0x0326, 0x0327, + 0x0328, 0x0329, 0x032a, 0x032b, 0x032c, 0x032d, 0x032e, 0x032f, + 0x0330, 0x0331, 0x0332, 0x0333, 0x0334, 0x0335, 0x0336, 0x0337, + 0x0338, 0x0339, 0x033a, 0x033b, 0x033c, 0x033d, 0x033e, 0x033f, + 0x0340, 0x0341, 0x0342, 0x0343, 0x0344, 0x0345, 0x0346, 0x0347, + 0x0348, 0x0349, 0x034a, 0x034b, 0x034c, 0x034d, 0x034e, 0x034f, + 0x0350, 0x0351, 0x0352, 0x0353, 0x0354, 0x0355, 0x0356, 0x0357, + 0x0358, 0x0359, 0x035a, 0x035b, 0x035c, 0x035d, 0x035e, 0x035f, + 0x0360, 0x0361, 0x0362, 0x0363, 0x0364, 0x0365, 0x0366, 0x0367, + 0x0368, 0x0369, 0x036a, 0x036b, 0x036c, 0x036d, 0x036e, 0x036f, + 0x0371, 0x0371, 0x0373, 0x0373, 0x0374, 0x0375, 0x0377, 0x0377, + 0x0000, 0x0000, 0x037a, 0x037b, 0x037c, 0x037d, 0x037e, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0384, 0x0385, 0x03ac, 0x0387, + 0x03ad, 0x03ae, 0x03af, 0x0000, 0x03cc, 0x0000, 0x03cd, 0x03ce, + 0x0390, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, + 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, + 0x03c0, 0x03c1, 0x0000, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, + 0x03c8, 0x03c9, 0x03ca, 0x03cb, 0x03ac, 0x03ad, 0x03ae, 0x03af, + 0x03b0, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, + 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, + 0x03c0, 0x03c1, 0x03c2, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, + 0x03c8, 0x03c9, 0x03ca, 0x03cb, 0x03cc, 0x03cd, 0x03ce, 0x03d7, + 0x03d0, 0x03d1, 0x03d2, 0x03d3, 0x03d4, 0x03d5, 0x03d6, 0x03d7, + 0x03d9, 0x03d9, 0x03db, 0x03db, 0x03dd, 0x03dd, 0x03df, 0x03df, + 0x03e1, 0x03e1, 0x03e3, 0x03e3, 0x03e5, 0x03e5, 0x03e7, 0x03e7, + 0x03e9, 0x03e9, 0x03eb, 0x03eb, 0x03ed, 0x03ed, 0x03ef, 0x03ef, + 0x03f0, 0x03f1, 0x03f2, 0x03f3, 0x03b8, 0x03f5, 0x03f6, 0x03f8, + 0x03f8, 0x03f2, 0x03fb, 0x03fb, 0x03fc, 0x037b, 0x037c, 0x037d, + 0x0450, 0x0451, 0x0452, 0x0453, 0x0454, 0x0455, 0x0456, 0x0457, + 0x0458, 0x0459, 0x045a, 0x045b, 0x045c, 0x045d, 0x045e, 0x045f, + 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, + 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, + 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, + 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f, + 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, + 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, + 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, + 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f, + 0x0450, 0x0451, 0x0452, 0x0453, 0x0454, 0x0455, 0x0456, 0x0457, + 0x0458, 0x0459, 0x045a, 0x045b, 0x045c, 0x045d, 0x045e, 0x045f, + 0x0461, 0x0461, 0x0463, 0x0463, 0x0465, 0x0465, 0x0467, 0x0467, + 0x0469, 0x0469, 0x046b, 0x046b, 0x046d, 0x046d, 0x046f, 0x046f, + 0x0471, 0x0471, 0x0473, 0x0473, 0x0475, 0x0475, 0x0477, 0x0477, + 0x0479, 0x0479, 0x047b, 0x047b, 0x047d, 0x047d, 0x047f, 0x047f, + 0x0481, 0x0481, 0x0482, 0x0483, 0x0484, 0x0485, 0x0486, 0x0487, + 0x0488, 0x0489, 0x048b, 0x048b, 0x048d, 0x048d, 0x048f, 0x048f, + 0x0491, 0x0491, 0x0493, 0x0493, 0x0495, 0x0495, 0x0497, 0x0497, + 0x0499, 0x0499, 0x049b, 0x049b, 0x049d, 0x049d, 0x049f, 0x049f, + 0x04a1, 0x04a1, 0x04a3, 0x04a3, 0x04a5, 0x04a5, 0x04a7, 0x04a7, + 0x04a9, 0x04a9, 0x04ab, 0x04ab, 0x04ad, 0x04ad, 0x04af, 0x04af, + 0x04b1, 0x04b1, 0x04b3, 0x04b3, 0x04b5, 0x04b5, 0x04b7, 0x04b7, + 0x04b9, 0x04b9, 0x04bb, 0x04bb, 0x04bd, 0x04bd, 0x04bf, 0x04bf, + 0x04cf, 0x04c2, 0x04c2, 0x04c4, 0x04c4, 0x04c6, 0x04c6, 0x04c8, + 0x04c8, 0x04ca, 0x04ca, 0x04cc, 0x04cc, 0x04ce, 0x04ce, 0x04cf, + 0x04d1, 0x04d1, 0x04d3, 0x04d3, 0x04d5, 0x04d5, 0x04d7, 0x04d7, + 0x04d9, 0x04d9, 0x04db, 0x04db, 0x04dd, 0x04dd, 0x04df, 0x04df, + 0x04e1, 0x04e1, 0x04e3, 0x04e3, 0x04e5, 0x04e5, 0x04e7, 0x04e7, + 0x04e9, 0x04e9, 0x04eb, 0x04eb, 0x04ed, 0x04ed, 0x04ef, 0x04ef, + 0x04f1, 0x04f1, 0x04f3, 0x04f3, 0x04f5, 0x04f5, 0x04f7, 0x04f7, + 0x04f9, 0x04f9, 0x04fb, 0x04fb, 0x04fd, 0x04fd, 0x04ff, 0x04ff, + 0x0501, 0x0501, 0x0503, 0x0503, 0x0505, 0x0505, 0x0507, 0x0507, + 0x0509, 0x0509, 0x050b, 0x050b, 0x050d, 0x050d, 0x050f, 0x050f, + 0x0511, 0x0511, 0x0513, 0x0513, 0x0515, 0x0515, 0x0517, 0x0517, + 0x0519, 0x0519, 0x051b, 0x051b, 0x051d, 0x051d, 0x051f, 0x051f, + 0x0521, 0x0521, 0x0523, 0x0523, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0561, 0x0562, 0x0563, 0x0564, 0x0565, 0x0566, 0x0567, + 0x0568, 0x0569, 0x056a, 0x056b, 0x056c, 0x056d, 0x056e, 0x056f, + 0x0570, 0x0571, 0x0572, 0x0573, 0x0574, 0x0575, 0x0576, 0x0577, + 0x0578, 0x0579, 0x057a, 0x057b, 0x057c, 0x057d, 0x057e, 0x057f, + 0x0580, 0x0581, 0x0582, 0x0583, 0x0584, 0x0585, 0x0586, 0x0000, + 0x0000, 0x0559, 0x055a, 0x055b, 0x055c, 0x055d, 0x055e, 0x055f, + 0x0000, 0x0561, 0x0562, 0x0563, 0x0564, 0x0565, 0x0566, 0x0567, + 0x0568, 0x0569, 0x056a, 0x056b, 0x056c, 0x056d, 0x056e, 0x056f, + 0x0570, 0x0571, 0x0572, 0x0573, 0x0574, 0x0575, 0x0576, 0x0577, + 0x0578, 0x0579, 0x057a, 0x057b, 0x057c, 0x057d, 0x057e, 0x057f, + 0x0580, 0x0581, 0x0582, 0x0583, 0x0584, 0x0585, 0x0586, 0x0587, + 0x0000, 0x0589, 0x058a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0591, 0x0592, 0x0593, 0x0594, 0x0595, 0x0596, 0x0597, + 0x0598, 0x0599, 0x059a, 0x059b, 0x059c, 0x059d, 0x059e, 0x059f, + 0x05a0, 0x05a1, 0x05a2, 0x05a3, 0x05a4, 0x05a5, 0x05a6, 0x05a7, + 0x05a8, 0x05a9, 0x05aa, 0x05ab, 0x05ac, 0x05ad, 0x05ae, 0x05af, + 0x05b0, 0x05b1, 0x05b2, 0x05b3, 0x05b4, 0x05b5, 0x05b6, 0x05b7, + 0x05b8, 0x05b9, 0x05ba, 0x05bb, 0x05bc, 0x05bd, 0x05be, 0x05bf, + 0x05c0, 0x05c1, 0x05c2, 0x05c3, 0x05c4, 0x05c5, 0x05c6, 0x05c7, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x05d0, 0x05d1, 0x05d2, 0x05d3, 0x05d4, 0x05d5, 0x05d6, 0x05d7, + 0x05d8, 0x05d9, 0x05da, 0x05db, 0x05dc, 0x05dd, 0x05de, 0x05df, + 0x05e0, 0x05e1, 0x05e2, 0x05e3, 0x05e4, 0x05e5, 0x05e6, 0x05e7, + 0x05e8, 0x05e9, 0x05ea, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x05f0, 0x05f1, 0x05f2, 0x05f3, 0x05f4, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0600, 0x0601, 0x0602, 0x0603, 0x0000, 0x0000, 0x0606, 0x0607, + 0x0608, 0x0609, 0x060a, 0x060b, 0x060c, 0x060d, 0x060e, 0x060f, + 0x0610, 0x0611, 0x0612, 0x0613, 0x0614, 0x0615, 0x0616, 0x0617, + 0x0618, 0x0619, 0x061a, 0x061b, 0x0000, 0x0000, 0x061e, 0x061f, + 0x0000, 0x0621, 0x0622, 0x0623, 0x0624, 0x0625, 0x0626, 0x0627, + 0x0628, 0x0629, 0x062a, 0x062b, 0x062c, 0x062d, 0x062e, 0x062f, + 0x0630, 0x0631, 0x0632, 0x0633, 0x0634, 0x0635, 0x0636, 0x0637, + 0x0638, 0x0639, 0x063a, 0x063b, 0x063c, 0x063d, 0x063e, 0x063f, + 0x0640, 0x0641, 0x0642, 0x0643, 0x0644, 0x0645, 0x0646, 0x0647, + 0x0648, 0x0649, 0x064a, 0x064b, 0x064c, 0x064d, 0x064e, 0x064f, + 0x0650, 0x0651, 0x0652, 0x0653, 0x0654, 0x0655, 0x0656, 0x0657, + 0x0658, 0x0659, 0x065a, 0x065b, 0x065c, 0x065d, 0x065e, 0x0000, + 0x0660, 0x0661, 0x0662, 0x0663, 0x0664, 0x0665, 0x0666, 0x0667, + 0x0668, 0x0669, 0x066a, 0x066b, 0x066c, 0x066d, 0x066e, 0x066f, + 0x0670, 0x0671, 0x0672, 0x0673, 0x0674, 0x0675, 0x0676, 0x0677, + 0x0678, 0x0679, 0x067a, 0x067b, 0x067c, 0x067d, 0x067e, 0x067f, + 0x0680, 0x0681, 0x0682, 0x0683, 0x0684, 0x0685, 0x0686, 0x0687, + 0x0688, 0x0689, 0x068a, 0x068b, 0x068c, 0x068d, 0x068e, 0x068f, + 0x0690, 0x0691, 0x0692, 0x0693, 0x0694, 0x0695, 0x0696, 0x0697, + 0x0698, 0x0699, 0x069a, 0x069b, 0x069c, 0x069d, 0x069e, 0x069f, + 0x06a0, 0x06a1, 0x06a2, 0x06a3, 0x06a4, 0x06a5, 0x06a6, 0x06a7, + 0x06a8, 0x06a9, 0x06aa, 0x06ab, 0x06ac, 0x06ad, 0x06ae, 0x06af, + 0x06b0, 0x06b1, 0x06b2, 0x06b3, 0x06b4, 0x06b5, 0x06b6, 0x06b7, + 0x06b8, 0x06b9, 0x06ba, 0x06bb, 0x06bc, 0x06bd, 0x06be, 0x06bf, + 0x06c0, 0x06c1, 0x06c2, 0x06c3, 0x06c4, 0x06c5, 0x06c6, 0x06c7, + 0x06c8, 0x06c9, 0x06ca, 0x06cb, 0x06cc, 0x06cd, 0x06ce, 0x06cf, + 0x06d0, 0x06d1, 0x06d2, 0x06d3, 0x06d4, 0x06d5, 0x06d6, 0x06d7, + 0x06d8, 0x06d9, 0x06da, 0x06db, 0x06dc, 0x06dd, 0x06de, 0x06df, + 0x06e0, 0x06e1, 0x06e2, 0x06e3, 0x06e4, 0x06e5, 0x06e6, 0x06e7, + 0x06e8, 0x06e9, 0x06ea, 0x06eb, 0x06ec, 0x06ed, 0x06ee, 0x06ef, + 0x06f0, 0x06f1, 0x06f2, 0x06f3, 0x06f4, 0x06f5, 0x06f6, 0x06f7, + 0x06f8, 0x06f9, 0x06fa, 0x06fb, 0x06fc, 0x06fd, 0x06fe, 0x06ff, + 0x0700, 0x0701, 0x0702, 0x0703, 0x0704, 0x0705, 0x0706, 0x0707, + 0x0708, 0x0709, 0x070a, 0x070b, 0x070c, 0x070d, 0x0000, 0x070f, + 0x0710, 0x0711, 0x0712, 0x0713, 0x0714, 0x0715, 0x0716, 0x0717, + 0x0718, 0x0719, 0x071a, 0x071b, 0x071c, 0x071d, 0x071e, 0x071f, + 0x0720, 0x0721, 0x0722, 0x0723, 0x0724, 0x0725, 0x0726, 0x0727, + 0x0728, 0x0729, 0x072a, 0x072b, 0x072c, 0x072d, 0x072e, 0x072f, + 0x0730, 0x0731, 0x0732, 0x0733, 0x0734, 0x0735, 0x0736, 0x0737, + 0x0738, 0x0739, 0x073a, 0x073b, 0x073c, 0x073d, 0x073e, 0x073f, + 0x0740, 0x0741, 0x0742, 0x0743, 0x0744, 0x0745, 0x0746, 0x0747, + 0x0748, 0x0749, 0x074a, 0x0000, 0x0000, 0x074d, 0x074e, 0x074f, + 0x0750, 0x0751, 0x0752, 0x0753, 0x0754, 0x0755, 0x0756, 0x0757, + 0x0758, 0x0759, 0x075a, 0x075b, 0x075c, 0x075d, 0x075e, 0x075f, + 0x0760, 0x0761, 0x0762, 0x0763, 0x0764, 0x0765, 0x0766, 0x0767, + 0x0768, 0x0769, 0x076a, 0x076b, 0x076c, 0x076d, 0x076e, 0x076f, + 0x0770, 0x0771, 0x0772, 0x0773, 0x0774, 0x0775, 0x0776, 0x0777, + 0x0778, 0x0779, 0x077a, 0x077b, 0x077c, 0x077d, 0x077e, 0x077f, + 0x0780, 0x0781, 0x0782, 0x0783, 0x0784, 0x0785, 0x0786, 0x0787, + 0x0788, 0x0789, 0x078a, 0x078b, 0x078c, 0x078d, 0x078e, 0x078f, + 0x0790, 0x0791, 0x0792, 0x0793, 0x0794, 0x0795, 0x0796, 0x0797, + 0x0798, 0x0799, 0x079a, 0x079b, 0x079c, 0x079d, 0x079e, 0x079f, + 0x07a0, 0x07a1, 0x07a2, 0x07a3, 0x07a4, 0x07a5, 0x07a6, 0x07a7, + 0x07a8, 0x07a9, 0x07aa, 0x07ab, 0x07ac, 0x07ad, 0x07ae, 0x07af, + 0x07b0, 0x07b1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x07c0, 0x07c1, 0x07c2, 0x07c3, 0x07c4, 0x07c5, 0x07c6, 0x07c7, + 0x07c8, 0x07c9, 0x07ca, 0x07cb, 0x07cc, 0x07cd, 0x07ce, 0x07cf, + 0x07d0, 0x07d1, 0x07d2, 0x07d3, 0x07d4, 0x07d5, 0x07d6, 0x07d7, + 0x07d8, 0x07d9, 0x07da, 0x07db, 0x07dc, 0x07dd, 0x07de, 0x07df, + 0x07e0, 0x07e1, 0x07e2, 0x07e3, 0x07e4, 0x07e5, 0x07e6, 0x07e7, + 0x07e8, 0x07e9, 0x07ea, 0x07eb, 0x07ec, 0x07ed, 0x07ee, 0x07ef, + 0x07f0, 0x07f1, 0x07f2, 0x07f3, 0x07f4, 0x07f5, 0x07f6, 0x07f7, + 0x07f8, 0x07f9, 0x07fa, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0901, 0x0902, 0x0903, 0x0904, 0x0905, 0x0906, 0x0907, + 0x0908, 0x0909, 0x090a, 0x090b, 0x090c, 0x090d, 0x090e, 0x090f, + 0x0910, 0x0911, 0x0912, 0x0913, 0x0914, 0x0915, 0x0916, 0x0917, + 0x0918, 0x0919, 0x091a, 0x091b, 0x091c, 0x091d, 0x091e, 0x091f, + 0x0920, 0x0921, 0x0922, 0x0923, 0x0924, 0x0925, 0x0926, 0x0927, + 0x0928, 0x0929, 0x092a, 0x092b, 0x092c, 0x092d, 0x092e, 0x092f, + 0x0930, 0x0931, 0x0932, 0x0933, 0x0934, 0x0935, 0x0936, 0x0937, + 0x0938, 0x0939, 0x0000, 0x0000, 0x093c, 0x093d, 0x093e, 0x093f, + 0x0940, 0x0941, 0x0942, 0x0943, 0x0944, 0x0945, 0x0946, 0x0947, + 0x0948, 0x0949, 0x094a, 0x094b, 0x094c, 0x094d, 0x0000, 0x0000, + 0x0950, 0x0951, 0x0952, 0x0953, 0x0954, 0x0000, 0x0000, 0x0000, + 0x0958, 0x0959, 0x095a, 0x095b, 0x095c, 0x095d, 0x095e, 0x095f, + 0x0960, 0x0961, 0x0962, 0x0963, 0x0964, 0x0965, 0x0966, 0x0967, + 0x0968, 0x0969, 0x096a, 0x096b, 0x096c, 0x096d, 0x096e, 0x096f, + 0x0970, 0x0971, 0x0972, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x097b, 0x097c, 0x097d, 0x097e, 0x097f, + 0x0000, 0x0981, 0x0982, 0x0983, 0x0000, 0x0985, 0x0986, 0x0987, + 0x0988, 0x0989, 0x098a, 0x098b, 0x098c, 0x0000, 0x0000, 0x098f, + 0x0990, 0x0000, 0x0000, 0x0993, 0x0994, 0x0995, 0x0996, 0x0997, + 0x0998, 0x0999, 0x099a, 0x099b, 0x099c, 0x099d, 0x099e, 0x099f, + 0x09a0, 0x09a1, 0x09a2, 0x09a3, 0x09a4, 0x09a5, 0x09a6, 0x09a7, + 0x09a8, 0x0000, 0x09aa, 0x09ab, 0x09ac, 0x09ad, 0x09ae, 0x09af, + 0x09b0, 0x0000, 0x09b2, 0x0000, 0x0000, 0x0000, 0x09b6, 0x09b7, + 0x09b8, 0x09b9, 0x0000, 0x0000, 0x09bc, 0x09bd, 0x09be, 0x09bf, + 0x09c0, 0x09c1, 0x09c2, 0x09c3, 0x09c4, 0x0000, 0x0000, 0x09c7, + 0x09c8, 0x0000, 0x0000, 0x09cb, 0x09cc, 0x09cd, 0x09ce, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x09d7, + 0x0000, 0x0000, 0x0000, 0x0000, 0x09dc, 0x09dd, 0x0000, 0x09df, + 0x09e0, 0x09e1, 0x09e2, 0x09e3, 0x0000, 0x0000, 0x09e6, 0x09e7, + 0x09e8, 0x09e9, 0x09ea, 0x09eb, 0x09ec, 0x09ed, 0x09ee, 0x09ef, + 0x09f0, 0x09f1, 0x09f2, 0x09f3, 0x09f4, 0x09f5, 0x09f6, 0x09f7, + 0x09f8, 0x09f9, 0x09fa, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0a01, 0x0a02, 0x0a03, 0x0000, 0x0a05, 0x0a06, 0x0a07, + 0x0a08, 0x0a09, 0x0a0a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0a0f, + 0x0a10, 0x0000, 0x0000, 0x0a13, 0x0a14, 0x0a15, 0x0a16, 0x0a17, + 0x0a18, 0x0a19, 0x0a1a, 0x0a1b, 0x0a1c, 0x0a1d, 0x0a1e, 0x0a1f, + 0x0a20, 0x0a21, 0x0a22, 0x0a23, 0x0a24, 0x0a25, 0x0a26, 0x0a27, + 0x0a28, 0x0000, 0x0a2a, 0x0a2b, 0x0a2c, 0x0a2d, 0x0a2e, 0x0a2f, + 0x0a30, 0x0000, 0x0a32, 0x0a33, 0x0000, 0x0a35, 0x0a36, 0x0000, + 0x0a38, 0x0a39, 0x0000, 0x0000, 0x0a3c, 0x0000, 0x0a3e, 0x0a3f, + 0x0a40, 0x0a41, 0x0a42, 0x0000, 0x0000, 0x0000, 0x0000, 0x0a47, + 0x0a48, 0x0000, 0x0000, 0x0a4b, 0x0a4c, 0x0a4d, 0x0000, 0x0000, + 0x0000, 0x0a51, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0a59, 0x0a5a, 0x0a5b, 0x0a5c, 0x0000, 0x0a5e, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0a66, 0x0a67, + 0x0a68, 0x0a69, 0x0a6a, 0x0a6b, 0x0a6c, 0x0a6d, 0x0a6e, 0x0a6f, + 0x0a70, 0x0a71, 0x0a72, 0x0a73, 0x0a74, 0x0a75, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0a81, 0x0a82, 0x0a83, 0x0000, 0x0a85, 0x0a86, 0x0a87, + 0x0a88, 0x0a89, 0x0a8a, 0x0a8b, 0x0a8c, 0x0a8d, 0x0000, 0x0a8f, + 0x0a90, 0x0a91, 0x0000, 0x0a93, 0x0a94, 0x0a95, 0x0a96, 0x0a97, + 0x0a98, 0x0a99, 0x0a9a, 0x0a9b, 0x0a9c, 0x0a9d, 0x0a9e, 0x0a9f, + 0x0aa0, 0x0aa1, 0x0aa2, 0x0aa3, 0x0aa4, 0x0aa5, 0x0aa6, 0x0aa7, + 0x0aa8, 0x0000, 0x0aaa, 0x0aab, 0x0aac, 0x0aad, 0x0aae, 0x0aaf, + 0x0ab0, 0x0000, 0x0ab2, 0x0ab3, 0x0000, 0x0ab5, 0x0ab6, 0x0ab7, + 0x0ab8, 0x0ab9, 0x0000, 0x0000, 0x0abc, 0x0abd, 0x0abe, 0x0abf, + 0x0ac0, 0x0ac1, 0x0ac2, 0x0ac3, 0x0ac4, 0x0ac5, 0x0000, 0x0ac7, + 0x0ac8, 0x0ac9, 0x0000, 0x0acb, 0x0acc, 0x0acd, 0x0000, 0x0000, + 0x0ad0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0ae0, 0x0ae1, 0x0ae2, 0x0ae3, 0x0000, 0x0000, 0x0ae6, 0x0ae7, + 0x0ae8, 0x0ae9, 0x0aea, 0x0aeb, 0x0aec, 0x0aed, 0x0aee, 0x0aef, + 0x0000, 0x0af1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0b01, 0x0b02, 0x0b03, 0x0000, 0x0b05, 0x0b06, 0x0b07, + 0x0b08, 0x0b09, 0x0b0a, 0x0b0b, 0x0b0c, 0x0000, 0x0000, 0x0b0f, + 0x0b10, 0x0000, 0x0000, 0x0b13, 0x0b14, 0x0b15, 0x0b16, 0x0b17, + 0x0b18, 0x0b19, 0x0b1a, 0x0b1b, 0x0b1c, 0x0b1d, 0x0b1e, 0x0b1f, + 0x0b20, 0x0b21, 0x0b22, 0x0b23, 0x0b24, 0x0b25, 0x0b26, 0x0b27, + 0x0b28, 0x0000, 0x0b2a, 0x0b2b, 0x0b2c, 0x0b2d, 0x0b2e, 0x0b2f, + 0x0b30, 0x0000, 0x0b32, 0x0b33, 0x0000, 0x0b35, 0x0b36, 0x0b37, + 0x0b38, 0x0b39, 0x0000, 0x0000, 0x0b3c, 0x0b3d, 0x0b3e, 0x0b3f, + 0x0b40, 0x0b41, 0x0b42, 0x0b43, 0x0b44, 0x0000, 0x0000, 0x0b47, + 0x0b48, 0x0000, 0x0000, 0x0b4b, 0x0b4c, 0x0b4d, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0b56, 0x0b57, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0b5c, 0x0b5d, 0x0000, 0x0b5f, + 0x0b60, 0x0b61, 0x0b62, 0x0b63, 0x0000, 0x0000, 0x0b66, 0x0b67, + 0x0b68, 0x0b69, 0x0b6a, 0x0b6b, 0x0b6c, 0x0b6d, 0x0b6e, 0x0b6f, + 0x0b70, 0x0b71, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0b82, 0x0b83, 0x0000, 0x0b85, 0x0b86, 0x0b87, + 0x0b88, 0x0b89, 0x0b8a, 0x0000, 0x0000, 0x0000, 0x0b8e, 0x0b8f, + 0x0b90, 0x0000, 0x0b92, 0x0b93, 0x0b94, 0x0b95, 0x0000, 0x0000, + 0x0000, 0x0b99, 0x0b9a, 0x0000, 0x0b9c, 0x0000, 0x0b9e, 0x0b9f, + 0x0000, 0x0000, 0x0000, 0x0ba3, 0x0ba4, 0x0000, 0x0000, 0x0000, + 0x0ba8, 0x0ba9, 0x0baa, 0x0000, 0x0000, 0x0000, 0x0bae, 0x0baf, + 0x0bb0, 0x0bb1, 0x0bb2, 0x0bb3, 0x0bb4, 0x0bb5, 0x0bb6, 0x0bb7, + 0x0bb8, 0x0bb9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0bbe, 0x0bbf, + 0x0bc0, 0x0bc1, 0x0bc2, 0x0000, 0x0000, 0x0000, 0x0bc6, 0x0bc7, + 0x0bc8, 0x0000, 0x0bca, 0x0bcb, 0x0bcc, 0x0bcd, 0x0000, 0x0000, + 0x0bd0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0bd7, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0be6, 0x0be7, + 0x0be8, 0x0be9, 0x0bea, 0x0beb, 0x0bec, 0x0bed, 0x0bee, 0x0bef, + 0x0bf0, 0x0bf1, 0x0bf2, 0x0bf3, 0x0bf4, 0x0bf5, 0x0bf6, 0x0bf7, + 0x0bf8, 0x0bf9, 0x0bfa, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0c01, 0x0c02, 0x0c03, 0x0000, 0x0c05, 0x0c06, 0x0c07, + 0x0c08, 0x0c09, 0x0c0a, 0x0c0b, 0x0c0c, 0x0000, 0x0c0e, 0x0c0f, + 0x0c10, 0x0000, 0x0c12, 0x0c13, 0x0c14, 0x0c15, 0x0c16, 0x0c17, + 0x0c18, 0x0c19, 0x0c1a, 0x0c1b, 0x0c1c, 0x0c1d, 0x0c1e, 0x0c1f, + 0x0c20, 0x0c21, 0x0c22, 0x0c23, 0x0c24, 0x0c25, 0x0c26, 0x0c27, + 0x0c28, 0x0000, 0x0c2a, 0x0c2b, 0x0c2c, 0x0c2d, 0x0c2e, 0x0c2f, + 0x0c30, 0x0c31, 0x0c32, 0x0c33, 0x0000, 0x0c35, 0x0c36, 0x0c37, + 0x0c38, 0x0c39, 0x0000, 0x0000, 0x0000, 0x0c3d, 0x0c3e, 0x0c3f, + 0x0c40, 0x0c41, 0x0c42, 0x0c43, 0x0c44, 0x0000, 0x0c46, 0x0c47, + 0x0c48, 0x0000, 0x0c4a, 0x0c4b, 0x0c4c, 0x0c4d, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0c55, 0x0c56, 0x0000, + 0x0c58, 0x0c59, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0c60, 0x0c61, 0x0c62, 0x0c63, 0x0000, 0x0000, 0x0c66, 0x0c67, + 0x0c68, 0x0c69, 0x0c6a, 0x0c6b, 0x0c6c, 0x0c6d, 0x0c6e, 0x0c6f, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0c78, 0x0c79, 0x0c7a, 0x0c7b, 0x0c7c, 0x0c7d, 0x0c7e, 0x0c7f, + 0x0000, 0x0000, 0x0c82, 0x0c83, 0x0000, 0x0c85, 0x0c86, 0x0c87, + 0x0c88, 0x0c89, 0x0c8a, 0x0c8b, 0x0c8c, 0x0000, 0x0c8e, 0x0c8f, + 0x0c90, 0x0000, 0x0c92, 0x0c93, 0x0c94, 0x0c95, 0x0c96, 0x0c97, + 0x0c98, 0x0c99, 0x0c9a, 0x0c9b, 0x0c9c, 0x0c9d, 0x0c9e, 0x0c9f, + 0x0ca0, 0x0ca1, 0x0ca2, 0x0ca3, 0x0ca4, 0x0ca5, 0x0ca6, 0x0ca7, + 0x0ca8, 0x0000, 0x0caa, 0x0cab, 0x0cac, 0x0cad, 0x0cae, 0x0caf, + 0x0cb0, 0x0cb1, 0x0cb2, 0x0cb3, 0x0000, 0x0cb5, 0x0cb6, 0x0cb7, + 0x0cb8, 0x0cb9, 0x0000, 0x0000, 0x0cbc, 0x0cbd, 0x0cbe, 0x0cbf, + 0x0cc0, 0x0cc1, 0x0cc2, 0x0cc3, 0x0cc4, 0x0000, 0x0cc6, 0x0cc7, + 0x0cc8, 0x0000, 0x0cca, 0x0ccb, 0x0ccc, 0x0ccd, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0cd5, 0x0cd6, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0cde, 0x0000, + 0x0ce0, 0x0ce1, 0x0ce2, 0x0ce3, 0x0000, 0x0000, 0x0ce6, 0x0ce7, + 0x0ce8, 0x0ce9, 0x0cea, 0x0ceb, 0x0cec, 0x0ced, 0x0cee, 0x0cef, + 0x0000, 0x0cf1, 0x0cf2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0d02, 0x0d03, 0x0000, 0x0d05, 0x0d06, 0x0d07, + 0x0d08, 0x0d09, 0x0d0a, 0x0d0b, 0x0d0c, 0x0000, 0x0d0e, 0x0d0f, + 0x0d10, 0x0000, 0x0d12, 0x0d13, 0x0d14, 0x0d15, 0x0d16, 0x0d17, + 0x0d18, 0x0d19, 0x0d1a, 0x0d1b, 0x0d1c, 0x0d1d, 0x0d1e, 0x0d1f, + 0x0d20, 0x0d21, 0x0d22, 0x0d23, 0x0d24, 0x0d25, 0x0d26, 0x0d27, + 0x0d28, 0x0000, 0x0d2a, 0x0d2b, 0x0d2c, 0x0d2d, 0x0d2e, 0x0d2f, + 0x0d30, 0x0d31, 0x0d32, 0x0d33, 0x0d34, 0x0d35, 0x0d36, 0x0d37, + 0x0d38, 0x0d39, 0x0000, 0x0000, 0x0000, 0x0d3d, 0x0d3e, 0x0d3f, + 0x0d40, 0x0d41, 0x0d42, 0x0d43, 0x0d44, 0x0000, 0x0d46, 0x0d47, + 0x0d48, 0x0000, 0x0d4a, 0x0d4b, 0x0d4c, 0x0d4d, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0d57, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0d60, 0x0d61, 0x0d62, 0x0d63, 0x0000, 0x0000, 0x0d66, 0x0d67, + 0x0d68, 0x0d69, 0x0d6a, 0x0d6b, 0x0d6c, 0x0d6d, 0x0d6e, 0x0d6f, + 0x0d70, 0x0d71, 0x0d72, 0x0d73, 0x0d74, 0x0d75, 0x0000, 0x0000, + 0x0000, 0x0d79, 0x0d7a, 0x0d7b, 0x0d7c, 0x0d7d, 0x0d7e, 0x0d7f, + 0x0000, 0x0000, 0x0d82, 0x0d83, 0x0000, 0x0d85, 0x0d86, 0x0d87, + 0x0d88, 0x0d89, 0x0d8a, 0x0d8b, 0x0d8c, 0x0d8d, 0x0d8e, 0x0d8f, + 0x0d90, 0x0d91, 0x0d92, 0x0d93, 0x0d94, 0x0d95, 0x0d96, 0x0000, + 0x0000, 0x0000, 0x0d9a, 0x0d9b, 0x0d9c, 0x0d9d, 0x0d9e, 0x0d9f, + 0x0da0, 0x0da1, 0x0da2, 0x0da3, 0x0da4, 0x0da5, 0x0da6, 0x0da7, + 0x0da8, 0x0da9, 0x0daa, 0x0dab, 0x0dac, 0x0dad, 0x0dae, 0x0daf, + 0x0db0, 0x0db1, 0x0000, 0x0db3, 0x0db4, 0x0db5, 0x0db6, 0x0db7, + 0x0db8, 0x0db9, 0x0dba, 0x0dbb, 0x0000, 0x0dbd, 0x0000, 0x0000, + 0x0dc0, 0x0dc1, 0x0dc2, 0x0dc3, 0x0dc4, 0x0dc5, 0x0dc6, 0x0000, + 0x0000, 0x0000, 0x0dca, 0x0000, 0x0000, 0x0000, 0x0000, 0x0dcf, + 0x0dd0, 0x0dd1, 0x0dd2, 0x0dd3, 0x0dd4, 0x0000, 0x0dd6, 0x0000, + 0x0dd8, 0x0dd9, 0x0dda, 0x0ddb, 0x0ddc, 0x0ddd, 0x0dde, 0x0ddf, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0df2, 0x0df3, 0x0df4, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0e01, 0x0e02, 0x0e03, 0x0e04, 0x0e05, 0x0e06, 0x0e07, + 0x0e08, 0x0e09, 0x0e0a, 0x0e0b, 0x0e0c, 0x0e0d, 0x0e0e, 0x0e0f, + 0x0e10, 0x0e11, 0x0e12, 0x0e13, 0x0e14, 0x0e15, 0x0e16, 0x0e17, + 0x0e18, 0x0e19, 0x0e1a, 0x0e1b, 0x0e1c, 0x0e1d, 0x0e1e, 0x0e1f, + 0x0e20, 0x0e21, 0x0e22, 0x0e23, 0x0e24, 0x0e25, 0x0e26, 0x0e27, + 0x0e28, 0x0e29, 0x0e2a, 0x0e2b, 0x0e2c, 0x0e2d, 0x0e2e, 0x0e2f, + 0x0e30, 0x0e31, 0x0e32, 0x0e33, 0x0e34, 0x0e35, 0x0e36, 0x0e37, + 0x0e38, 0x0e39, 0x0e3a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0e3f, + 0x0e40, 0x0e41, 0x0e42, 0x0e43, 0x0e44, 0x0e45, 0x0e46, 0x0e47, + 0x0e48, 0x0e49, 0x0e4a, 0x0e4b, 0x0e4c, 0x0e4d, 0x0e4e, 0x0e4f, + 0x0e50, 0x0e51, 0x0e52, 0x0e53, 0x0e54, 0x0e55, 0x0e56, 0x0e57, + 0x0e58, 0x0e59, 0x0e5a, 0x0e5b, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0e81, 0x0e82, 0x0000, 0x0e84, 0x0000, 0x0000, 0x0e87, + 0x0e88, 0x0000, 0x0e8a, 0x0000, 0x0000, 0x0e8d, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0e94, 0x0e95, 0x0e96, 0x0e97, + 0x0000, 0x0e99, 0x0e9a, 0x0e9b, 0x0e9c, 0x0e9d, 0x0e9e, 0x0e9f, + 0x0000, 0x0ea1, 0x0ea2, 0x0ea3, 0x0000, 0x0ea5, 0x0000, 0x0ea7, + 0x0000, 0x0000, 0x0eaa, 0x0eab, 0x0000, 0x0ead, 0x0eae, 0x0eaf, + 0x0eb0, 0x0eb1, 0x0eb2, 0x0eb3, 0x0eb4, 0x0eb5, 0x0eb6, 0x0eb7, + 0x0eb8, 0x0eb9, 0x0000, 0x0ebb, 0x0ebc, 0x0ebd, 0x0000, 0x0000, + 0x0ec0, 0x0ec1, 0x0ec2, 0x0ec3, 0x0ec4, 0x0000, 0x0ec6, 0x0000, + 0x0ec8, 0x0ec9, 0x0eca, 0x0ecb, 0x0ecc, 0x0ecd, 0x0000, 0x0000, + 0x0ed0, 0x0ed1, 0x0ed2, 0x0ed3, 0x0ed4, 0x0ed5, 0x0ed6, 0x0ed7, + 0x0ed8, 0x0ed9, 0x0000, 0x0000, 0x0edc, 0x0edd, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0f00, 0x0f01, 0x0f02, 0x0f03, 0x0f04, 0x0f05, 0x0f06, 0x0f07, + 0x0f08, 0x0f09, 0x0f0a, 0x0f0b, 0x0f0c, 0x0f0d, 0x0f0e, 0x0f0f, + 0x0f10, 0x0f11, 0x0f12, 0x0f13, 0x0f14, 0x0f15, 0x0f16, 0x0f17, + 0x0f18, 0x0f19, 0x0f1a, 0x0f1b, 0x0f1c, 0x0f1d, 0x0f1e, 0x0f1f, + 0x0f20, 0x0f21, 0x0f22, 0x0f23, 0x0f24, 0x0f25, 0x0f26, 0x0f27, + 0x0f28, 0x0f29, 0x0f2a, 0x0f2b, 0x0f2c, 0x0f2d, 0x0f2e, 0x0f2f, + 0x0f30, 0x0f31, 0x0f32, 0x0f33, 0x0f34, 0x0f35, 0x0f36, 0x0f37, + 0x0f38, 0x0f39, 0x0f3a, 0x0f3b, 0x0f3c, 0x0f3d, 0x0f3e, 0x0f3f, + 0x0f40, 0x0f41, 0x0f42, 0x0f43, 0x0f44, 0x0f45, 0x0f46, 0x0f47, + 0x0000, 0x0f49, 0x0f4a, 0x0f4b, 0x0f4c, 0x0f4d, 0x0f4e, 0x0f4f, + 0x0f50, 0x0f51, 0x0f52, 0x0f53, 0x0f54, 0x0f55, 0x0f56, 0x0f57, + 0x0f58, 0x0f59, 0x0f5a, 0x0f5b, 0x0f5c, 0x0f5d, 0x0f5e, 0x0f5f, + 0x0f60, 0x0f61, 0x0f62, 0x0f63, 0x0f64, 0x0f65, 0x0f66, 0x0f67, + 0x0f68, 0x0f69, 0x0f6a, 0x0f6b, 0x0f6c, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0f71, 0x0f72, 0x0f73, 0x0f74, 0x0f75, 0x0f76, 0x0f77, + 0x0f78, 0x0f79, 0x0f7a, 0x0f7b, 0x0f7c, 0x0f7d, 0x0f7e, 0x0f7f, + 0x0f80, 0x0f81, 0x0f82, 0x0f83, 0x0f84, 0x0f85, 0x0f86, 0x0f87, + 0x0f88, 0x0f89, 0x0f8a, 0x0f8b, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0f90, 0x0f91, 0x0f92, 0x0f93, 0x0f94, 0x0f95, 0x0f96, 0x0f97, + 0x0000, 0x0f99, 0x0f9a, 0x0f9b, 0x0f9c, 0x0f9d, 0x0f9e, 0x0f9f, + 0x0fa0, 0x0fa1, 0x0fa2, 0x0fa3, 0x0fa4, 0x0fa5, 0x0fa6, 0x0fa7, + 0x0fa8, 0x0fa9, 0x0faa, 0x0fab, 0x0fac, 0x0fad, 0x0fae, 0x0faf, + 0x0fb0, 0x0fb1, 0x0fb2, 0x0fb3, 0x0fb4, 0x0fb5, 0x0fb6, 0x0fb7, + 0x0fb8, 0x0fb9, 0x0fba, 0x0fbb, 0x0fbc, 0x0000, 0x0fbe, 0x0fbf, + 0x0fc0, 0x0fc1, 0x0fc2, 0x0fc3, 0x0fc4, 0x0fc5, 0x0fc6, 0x0fc7, + 0x0fc8, 0x0fc9, 0x0fca, 0x0fcb, 0x0fcc, 0x0000, 0x0fce, 0x0fcf, + 0x0fd0, 0x0fd1, 0x0fd2, 0x0fd3, 0x0fd4, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x1000, 0x1001, 0x1002, 0x1003, 0x1004, 0x1005, 0x1006, 0x1007, + 0x1008, 0x1009, 0x100a, 0x100b, 0x100c, 0x100d, 0x100e, 0x100f, + 0x1010, 0x1011, 0x1012, 0x1013, 0x1014, 0x1015, 0x1016, 0x1017, + 0x1018, 0x1019, 0x101a, 0x101b, 0x101c, 0x101d, 0x101e, 0x101f, + 0x1020, 0x1021, 0x1022, 0x1023, 0x1024, 0x1025, 0x1026, 0x1027, + 0x1028, 0x1029, 0x102a, 0x102b, 0x102c, 0x102d, 0x102e, 0x102f, + 0x1030, 0x1031, 0x1032, 0x1033, 0x1034, 0x1035, 0x1036, 0x1037, + 0x1038, 0x1039, 0x103a, 0x103b, 0x103c, 0x103d, 0x103e, 0x103f, + 0x1040, 0x1041, 0x1042, 0x1043, 0x1044, 0x1045, 0x1046, 0x1047, + 0x1048, 0x1049, 0x104a, 0x104b, 0x104c, 0x104d, 0x104e, 0x104f, + 0x1050, 0x1051, 0x1052, 0x1053, 0x1054, 0x1055, 0x1056, 0x1057, + 0x1058, 0x1059, 0x105a, 0x105b, 0x105c, 0x105d, 0x105e, 0x105f, + 0x1060, 0x1061, 0x1062, 0x1063, 0x1064, 0x1065, 0x1066, 0x1067, + 0x1068, 0x1069, 0x106a, 0x106b, 0x106c, 0x106d, 0x106e, 0x106f, + 0x1070, 0x1071, 0x1072, 0x1073, 0x1074, 0x1075, 0x1076, 0x1077, + 0x1078, 0x1079, 0x107a, 0x107b, 0x107c, 0x107d, 0x107e, 0x107f, + 0x1080, 0x1081, 0x1082, 0x1083, 0x1084, 0x1085, 0x1086, 0x1087, + 0x1088, 0x1089, 0x108a, 0x108b, 0x108c, 0x108d, 0x108e, 0x108f, + 0x1090, 0x1091, 0x1092, 0x1093, 0x1094, 0x1095, 0x1096, 0x1097, + 0x1098, 0x1099, 0x0000, 0x0000, 0x0000, 0x0000, 0x109e, 0x109f, + 0x2d00, 0x2d01, 0x2d02, 0x2d03, 0x2d04, 0x2d05, 0x2d06, 0x2d07, + 0x2d08, 0x2d09, 0x2d0a, 0x2d0b, 0x2d0c, 0x2d0d, 0x2d0e, 0x2d0f, + 0x2d10, 0x2d11, 0x2d12, 0x2d13, 0x2d14, 0x2d15, 0x2d16, 0x2d17, + 0x2d18, 0x2d19, 0x2d1a, 0x2d1b, 0x2d1c, 0x2d1d, 0x2d1e, 0x2d1f, + 0x2d20, 0x2d21, 0x2d22, 0x2d23, 0x2d24, 0x2d25, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x10d0, 0x10d1, 0x10d2, 0x10d3, 0x10d4, 0x10d5, 0x10d6, 0x10d7, + 0x10d8, 0x10d9, 0x10da, 0x10db, 0x10dc, 0x10dd, 0x10de, 0x10df, + 0x10e0, 0x10e1, 0x10e2, 0x10e3, 0x10e4, 0x10e5, 0x10e6, 0x10e7, + 0x10e8, 0x10e9, 0x10ea, 0x10eb, 0x10ec, 0x10ed, 0x10ee, 0x10ef, + 0x10f0, 0x10f1, 0x10f2, 0x10f3, 0x10f4, 0x10f5, 0x10f6, 0x10f7, + 0x10f8, 0x10f9, 0x10fa, 0x10fb, 0x10fc, 0x0000, 0x0000, 0x0000, + 0x1100, 0x1101, 0x1102, 0x1103, 0x1104, 0x1105, 0x1106, 0x1107, + 0x1108, 0x1109, 0x110a, 0x110b, 0x110c, 0x110d, 0x110e, 0x110f, + 0x1110, 0x1111, 0x1112, 0x1113, 0x1114, 0x1115, 0x1116, 0x1117, + 0x1118, 0x1119, 0x111a, 0x111b, 0x111c, 0x111d, 0x111e, 0x111f, + 0x1120, 0x1121, 0x1122, 0x1123, 0x1124, 0x1125, 0x1126, 0x1127, + 0x1128, 0x1129, 0x112a, 0x112b, 0x112c, 0x112d, 0x112e, 0x112f, + 0x1130, 0x1131, 0x1132, 0x1133, 0x1134, 0x1135, 0x1136, 0x1137, + 0x1138, 0x1139, 0x113a, 0x113b, 0x113c, 0x113d, 0x113e, 0x113f, + 0x1140, 0x1141, 0x1142, 0x1143, 0x1144, 0x1145, 0x1146, 0x1147, + 0x1148, 0x1149, 0x114a, 0x114b, 0x114c, 0x114d, 0x114e, 0x114f, + 0x1150, 0x1151, 0x1152, 0x1153, 0x1154, 0x1155, 0x1156, 0x1157, + 0x1158, 0x1159, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x115f, + 0x1160, 0x1161, 0x1162, 0x1163, 0x1164, 0x1165, 0x1166, 0x1167, + 0x1168, 0x1169, 0x116a, 0x116b, 0x116c, 0x116d, 0x116e, 0x116f, + 0x1170, 0x1171, 0x1172, 0x1173, 0x1174, 0x1175, 0x1176, 0x1177, + 0x1178, 0x1179, 0x117a, 0x117b, 0x117c, 0x117d, 0x117e, 0x117f, + 0x1180, 0x1181, 0x1182, 0x1183, 0x1184, 0x1185, 0x1186, 0x1187, + 0x1188, 0x1189, 0x118a, 0x118b, 0x118c, 0x118d, 0x118e, 0x118f, + 0x1190, 0x1191, 0x1192, 0x1193, 0x1194, 0x1195, 0x1196, 0x1197, + 0x1198, 0x1199, 0x119a, 0x119b, 0x119c, 0x119d, 0x119e, 0x119f, + 0x11a0, 0x11a1, 0x11a2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x11a8, 0x11a9, 0x11aa, 0x11ab, 0x11ac, 0x11ad, 0x11ae, 0x11af, + 0x11b0, 0x11b1, 0x11b2, 0x11b3, 0x11b4, 0x11b5, 0x11b6, 0x11b7, + 0x11b8, 0x11b9, 0x11ba, 0x11bb, 0x11bc, 0x11bd, 0x11be, 0x11bf, + 0x11c0, 0x11c1, 0x11c2, 0x11c3, 0x11c4, 0x11c5, 0x11c6, 0x11c7, + 0x11c8, 0x11c9, 0x11ca, 0x11cb, 0x11cc, 0x11cd, 0x11ce, 0x11cf, + 0x11d0, 0x11d1, 0x11d2, 0x11d3, 0x11d4, 0x11d5, 0x11d6, 0x11d7, + 0x11d8, 0x11d9, 0x11da, 0x11db, 0x11dc, 0x11dd, 0x11de, 0x11df, + 0x11e0, 0x11e1, 0x11e2, 0x11e3, 0x11e4, 0x11e5, 0x11e6, 0x11e7, + 0x11e8, 0x11e9, 0x11ea, 0x11eb, 0x11ec, 0x11ed, 0x11ee, 0x11ef, + 0x11f0, 0x11f1, 0x11f2, 0x11f3, 0x11f4, 0x11f5, 0x11f6, 0x11f7, + 0x11f8, 0x11f9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x1200, 0x1201, 0x1202, 0x1203, 0x1204, 0x1205, 0x1206, 0x1207, + 0x1208, 0x1209, 0x120a, 0x120b, 0x120c, 0x120d, 0x120e, 0x120f, + 0x1210, 0x1211, 0x1212, 0x1213, 0x1214, 0x1215, 0x1216, 0x1217, + 0x1218, 0x1219, 0x121a, 0x121b, 0x121c, 0x121d, 0x121e, 0x121f, + 0x1220, 0x1221, 0x1222, 0x1223, 0x1224, 0x1225, 0x1226, 0x1227, + 0x1228, 0x1229, 0x122a, 0x122b, 0x122c, 0x122d, 0x122e, 0x122f, + 0x1230, 0x1231, 0x1232, 0x1233, 0x1234, 0x1235, 0x1236, 0x1237, + 0x1238, 0x1239, 0x123a, 0x123b, 0x123c, 0x123d, 0x123e, 0x123f, + 0x1240, 0x1241, 0x1242, 0x1243, 0x1244, 0x1245, 0x1246, 0x1247, + 0x1248, 0x0000, 0x124a, 0x124b, 0x124c, 0x124d, 0x0000, 0x0000, + 0x1250, 0x1251, 0x1252, 0x1253, 0x1254, 0x1255, 0x1256, 0x0000, + 0x1258, 0x0000, 0x125a, 0x125b, 0x125c, 0x125d, 0x0000, 0x0000, + 0x1260, 0x1261, 0x1262, 0x1263, 0x1264, 0x1265, 0x1266, 0x1267, + 0x1268, 0x1269, 0x126a, 0x126b, 0x126c, 0x126d, 0x126e, 0x126f, + 0x1270, 0x1271, 0x1272, 0x1273, 0x1274, 0x1275, 0x1276, 0x1277, + 0x1278, 0x1279, 0x127a, 0x127b, 0x127c, 0x127d, 0x127e, 0x127f, + 0x1280, 0x1281, 0x1282, 0x1283, 0x1284, 0x1285, 0x1286, 0x1287, + 0x1288, 0x0000, 0x128a, 0x128b, 0x128c, 0x128d, 0x0000, 0x0000, + 0x1290, 0x1291, 0x1292, 0x1293, 0x1294, 0x1295, 0x1296, 0x1297, + 0x1298, 0x1299, 0x129a, 0x129b, 0x129c, 0x129d, 0x129e, 0x129f, + 0x12a0, 0x12a1, 0x12a2, 0x12a3, 0x12a4, 0x12a5, 0x12a6, 0x12a7, + 0x12a8, 0x12a9, 0x12aa, 0x12ab, 0x12ac, 0x12ad, 0x12ae, 0x12af, + 0x12b0, 0x0000, 0x12b2, 0x12b3, 0x12b4, 0x12b5, 0x0000, 0x0000, + 0x12b8, 0x12b9, 0x12ba, 0x12bb, 0x12bc, 0x12bd, 0x12be, 0x0000, + 0x12c0, 0x0000, 0x12c2, 0x12c3, 0x12c4, 0x12c5, 0x0000, 0x0000, + 0x12c8, 0x12c9, 0x12ca, 0x12cb, 0x12cc, 0x12cd, 0x12ce, 0x12cf, + 0x12d0, 0x12d1, 0x12d2, 0x12d3, 0x12d4, 0x12d5, 0x12d6, 0x0000, + 0x12d8, 0x12d9, 0x12da, 0x12db, 0x12dc, 0x12dd, 0x12de, 0x12df, + 0x12e0, 0x12e1, 0x12e2, 0x12e3, 0x12e4, 0x12e5, 0x12e6, 0x12e7, + 0x12e8, 0x12e9, 0x12ea, 0x12eb, 0x12ec, 0x12ed, 0x12ee, 0x12ef, + 0x12f0, 0x12f1, 0x12f2, 0x12f3, 0x12f4, 0x12f5, 0x12f6, 0x12f7, + 0x12f8, 0x12f9, 0x12fa, 0x12fb, 0x12fc, 0x12fd, 0x12fe, 0x12ff, + 0x1300, 0x1301, 0x1302, 0x1303, 0x1304, 0x1305, 0x1306, 0x1307, + 0x1308, 0x1309, 0x130a, 0x130b, 0x130c, 0x130d, 0x130e, 0x130f, + 0x1310, 0x0000, 0x1312, 0x1313, 0x1314, 0x1315, 0x0000, 0x0000, + 0x1318, 0x1319, 0x131a, 0x131b, 0x131c, 0x131d, 0x131e, 0x131f, + 0x1320, 0x1321, 0x1322, 0x1323, 0x1324, 0x1325, 0x1326, 0x1327, + 0x1328, 0x1329, 0x132a, 0x132b, 0x132c, 0x132d, 0x132e, 0x132f, + 0x1330, 0x1331, 0x1332, 0x1333, 0x1334, 0x1335, 0x1336, 0x1337, + 0x1338, 0x1339, 0x133a, 0x133b, 0x133c, 0x133d, 0x133e, 0x133f, + 0x1340, 0x1341, 0x1342, 0x1343, 0x1344, 0x1345, 0x1346, 0x1347, + 0x1348, 0x1349, 0x134a, 0x134b, 0x134c, 0x134d, 0x134e, 0x134f, + 0x1350, 0x1351, 0x1352, 0x1353, 0x1354, 0x1355, 0x1356, 0x1357, + 0x1358, 0x1359, 0x135a, 0x0000, 0x0000, 0x0000, 0x0000, 0x135f, + 0x1360, 0x1361, 0x1362, 0x1363, 0x1364, 0x1365, 0x1366, 0x1367, + 0x1368, 0x1369, 0x136a, 0x136b, 0x136c, 0x136d, 0x136e, 0x136f, + 0x1370, 0x1371, 0x1372, 0x1373, 0x1374, 0x1375, 0x1376, 0x1377, + 0x1378, 0x1379, 0x137a, 0x137b, 0x137c, 0x0000, 0x0000, 0x0000, + 0x1380, 0x1381, 0x1382, 0x1383, 0x1384, 0x1385, 0x1386, 0x1387, + 0x1388, 0x1389, 0x138a, 0x138b, 0x138c, 0x138d, 0x138e, 0x138f, + 0x1390, 0x1391, 0x1392, 0x1393, 0x1394, 0x1395, 0x1396, 0x1397, + 0x1398, 0x1399, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x13a0, 0x13a1, 0x13a2, 0x13a3, 0x13a4, 0x13a5, 0x13a6, 0x13a7, + 0x13a8, 0x13a9, 0x13aa, 0x13ab, 0x13ac, 0x13ad, 0x13ae, 0x13af, + 0x13b0, 0x13b1, 0x13b2, 0x13b3, 0x13b4, 0x13b5, 0x13b6, 0x13b7, + 0x13b8, 0x13b9, 0x13ba, 0x13bb, 0x13bc, 0x13bd, 0x13be, 0x13bf, + 0x13c0, 0x13c1, 0x13c2, 0x13c3, 0x13c4, 0x13c5, 0x13c6, 0x13c7, + 0x13c8, 0x13c9, 0x13ca, 0x13cb, 0x13cc, 0x13cd, 0x13ce, 0x13cf, + 0x13d0, 0x13d1, 0x13d2, 0x13d3, 0x13d4, 0x13d5, 0x13d6, 0x13d7, + 0x13d8, 0x13d9, 0x13da, 0x13db, 0x13dc, 0x13dd, 0x13de, 0x13df, + 0x13e0, 0x13e1, 0x13e2, 0x13e3, 0x13e4, 0x13e5, 0x13e6, 0x13e7, + 0x13e8, 0x13e9, 0x13ea, 0x13eb, 0x13ec, 0x13ed, 0x13ee, 0x13ef, + 0x13f0, 0x13f1, 0x13f2, 0x13f3, 0x13f4, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x1401, 0x1402, 0x1403, 0x1404, 0x1405, 0x1406, 0x1407, + 0x1408, 0x1409, 0x140a, 0x140b, 0x140c, 0x140d, 0x140e, 0x140f, + 0x1410, 0x1411, 0x1412, 0x1413, 0x1414, 0x1415, 0x1416, 0x1417, + 0x1418, 0x1419, 0x141a, 0x141b, 0x141c, 0x141d, 0x141e, 0x141f, + 0x1420, 0x1421, 0x1422, 0x1423, 0x1424, 0x1425, 0x1426, 0x1427, + 0x1428, 0x1429, 0x142a, 0x142b, 0x142c, 0x142d, 0x142e, 0x142f, + 0x1430, 0x1431, 0x1432, 0x1433, 0x1434, 0x1435, 0x1436, 0x1437, + 0x1438, 0x1439, 0x143a, 0x143b, 0x143c, 0x143d, 0x143e, 0x143f, + 0x1440, 0x1441, 0x1442, 0x1443, 0x1444, 0x1445, 0x1446, 0x1447, + 0x1448, 0x1449, 0x144a, 0x144b, 0x144c, 0x144d, 0x144e, 0x144f, + 0x1450, 0x1451, 0x1452, 0x1453, 0x1454, 0x1455, 0x1456, 0x1457, + 0x1458, 0x1459, 0x145a, 0x145b, 0x145c, 0x145d, 0x145e, 0x145f, + 0x1460, 0x1461, 0x1462, 0x1463, 0x1464, 0x1465, 0x1466, 0x1467, + 0x1468, 0x1469, 0x146a, 0x146b, 0x146c, 0x146d, 0x146e, 0x146f, + 0x1470, 0x1471, 0x1472, 0x1473, 0x1474, 0x1475, 0x1476, 0x1477, + 0x1478, 0x1479, 0x147a, 0x147b, 0x147c, 0x147d, 0x147e, 0x147f, + 0x1480, 0x1481, 0x1482, 0x1483, 0x1484, 0x1485, 0x1486, 0x1487, + 0x1488, 0x1489, 0x148a, 0x148b, 0x148c, 0x148d, 0x148e, 0x148f, + 0x1490, 0x1491, 0x1492, 0x1493, 0x1494, 0x1495, 0x1496, 0x1497, + 0x1498, 0x1499, 0x149a, 0x149b, 0x149c, 0x149d, 0x149e, 0x149f, + 0x14a0, 0x14a1, 0x14a2, 0x14a3, 0x14a4, 0x14a5, 0x14a6, 0x14a7, + 0x14a8, 0x14a9, 0x14aa, 0x14ab, 0x14ac, 0x14ad, 0x14ae, 0x14af, + 0x14b0, 0x14b1, 0x14b2, 0x14b3, 0x14b4, 0x14b5, 0x14b6, 0x14b7, + 0x14b8, 0x14b9, 0x14ba, 0x14bb, 0x14bc, 0x14bd, 0x14be, 0x14bf, + 0x14c0, 0x14c1, 0x14c2, 0x14c3, 0x14c4, 0x14c5, 0x14c6, 0x14c7, + 0x14c8, 0x14c9, 0x14ca, 0x14cb, 0x14cc, 0x14cd, 0x14ce, 0x14cf, + 0x14d0, 0x14d1, 0x14d2, 0x14d3, 0x14d4, 0x14d5, 0x14d6, 0x14d7, + 0x14d8, 0x14d9, 0x14da, 0x14db, 0x14dc, 0x14dd, 0x14de, 0x14df, + 0x14e0, 0x14e1, 0x14e2, 0x14e3, 0x14e4, 0x14e5, 0x14e6, 0x14e7, + 0x14e8, 0x14e9, 0x14ea, 0x14eb, 0x14ec, 0x14ed, 0x14ee, 0x14ef, + 0x14f0, 0x14f1, 0x14f2, 0x14f3, 0x14f4, 0x14f5, 0x14f6, 0x14f7, + 0x14f8, 0x14f9, 0x14fa, 0x14fb, 0x14fc, 0x14fd, 0x14fe, 0x14ff, + 0x1500, 0x1501, 0x1502, 0x1503, 0x1504, 0x1505, 0x1506, 0x1507, + 0x1508, 0x1509, 0x150a, 0x150b, 0x150c, 0x150d, 0x150e, 0x150f, + 0x1510, 0x1511, 0x1512, 0x1513, 0x1514, 0x1515, 0x1516, 0x1517, + 0x1518, 0x1519, 0x151a, 0x151b, 0x151c, 0x151d, 0x151e, 0x151f, + 0x1520, 0x1521, 0x1522, 0x1523, 0x1524, 0x1525, 0x1526, 0x1527, + 0x1528, 0x1529, 0x152a, 0x152b, 0x152c, 0x152d, 0x152e, 0x152f, + 0x1530, 0x1531, 0x1532, 0x1533, 0x1534, 0x1535, 0x1536, 0x1537, + 0x1538, 0x1539, 0x153a, 0x153b, 0x153c, 0x153d, 0x153e, 0x153f, + 0x1540, 0x1541, 0x1542, 0x1543, 0x1544, 0x1545, 0x1546, 0x1547, + 0x1548, 0x1549, 0x154a, 0x154b, 0x154c, 0x154d, 0x154e, 0x154f, + 0x1550, 0x1551, 0x1552, 0x1553, 0x1554, 0x1555, 0x1556, 0x1557, + 0x1558, 0x1559, 0x155a, 0x155b, 0x155c, 0x155d, 0x155e, 0x155f, + 0x1560, 0x1561, 0x1562, 0x1563, 0x1564, 0x1565, 0x1566, 0x1567, + 0x1568, 0x1569, 0x156a, 0x156b, 0x156c, 0x156d, 0x156e, 0x156f, + 0x1570, 0x1571, 0x1572, 0x1573, 0x1574, 0x1575, 0x1576, 0x1577, + 0x1578, 0x1579, 0x157a, 0x157b, 0x157c, 0x157d, 0x157e, 0x157f, + 0x1580, 0x1581, 0x1582, 0x1583, 0x1584, 0x1585, 0x1586, 0x1587, + 0x1588, 0x1589, 0x158a, 0x158b, 0x158c, 0x158d, 0x158e, 0x158f, + 0x1590, 0x1591, 0x1592, 0x1593, 0x1594, 0x1595, 0x1596, 0x1597, + 0x1598, 0x1599, 0x159a, 0x159b, 0x159c, 0x159d, 0x159e, 0x159f, + 0x15a0, 0x15a1, 0x15a2, 0x15a3, 0x15a4, 0x15a5, 0x15a6, 0x15a7, + 0x15a8, 0x15a9, 0x15aa, 0x15ab, 0x15ac, 0x15ad, 0x15ae, 0x15af, + 0x15b0, 0x15b1, 0x15b2, 0x15b3, 0x15b4, 0x15b5, 0x15b6, 0x15b7, + 0x15b8, 0x15b9, 0x15ba, 0x15bb, 0x15bc, 0x15bd, 0x15be, 0x15bf, + 0x15c0, 0x15c1, 0x15c2, 0x15c3, 0x15c4, 0x15c5, 0x15c6, 0x15c7, + 0x15c8, 0x15c9, 0x15ca, 0x15cb, 0x15cc, 0x15cd, 0x15ce, 0x15cf, + 0x15d0, 0x15d1, 0x15d2, 0x15d3, 0x15d4, 0x15d5, 0x15d6, 0x15d7, + 0x15d8, 0x15d9, 0x15da, 0x15db, 0x15dc, 0x15dd, 0x15de, 0x15df, + 0x15e0, 0x15e1, 0x15e2, 0x15e3, 0x15e4, 0x15e5, 0x15e6, 0x15e7, + 0x15e8, 0x15e9, 0x15ea, 0x15eb, 0x15ec, 0x15ed, 0x15ee, 0x15ef, + 0x15f0, 0x15f1, 0x15f2, 0x15f3, 0x15f4, 0x15f5, 0x15f6, 0x15f7, + 0x15f8, 0x15f9, 0x15fa, 0x15fb, 0x15fc, 0x15fd, 0x15fe, 0x15ff, + 0x1600, 0x1601, 0x1602, 0x1603, 0x1604, 0x1605, 0x1606, 0x1607, + 0x1608, 0x1609, 0x160a, 0x160b, 0x160c, 0x160d, 0x160e, 0x160f, + 0x1610, 0x1611, 0x1612, 0x1613, 0x1614, 0x1615, 0x1616, 0x1617, + 0x1618, 0x1619, 0x161a, 0x161b, 0x161c, 0x161d, 0x161e, 0x161f, + 0x1620, 0x1621, 0x1622, 0x1623, 0x1624, 0x1625, 0x1626, 0x1627, + 0x1628, 0x1629, 0x162a, 0x162b, 0x162c, 0x162d, 0x162e, 0x162f, + 0x1630, 0x1631, 0x1632, 0x1633, 0x1634, 0x1635, 0x1636, 0x1637, + 0x1638, 0x1639, 0x163a, 0x163b, 0x163c, 0x163d, 0x163e, 0x163f, + 0x1640, 0x1641, 0x1642, 0x1643, 0x1644, 0x1645, 0x1646, 0x1647, + 0x1648, 0x1649, 0x164a, 0x164b, 0x164c, 0x164d, 0x164e, 0x164f, + 0x1650, 0x1651, 0x1652, 0x1653, 0x1654, 0x1655, 0x1656, 0x1657, + 0x1658, 0x1659, 0x165a, 0x165b, 0x165c, 0x165d, 0x165e, 0x165f, + 0x1660, 0x1661, 0x1662, 0x1663, 0x1664, 0x1665, 0x1666, 0x1667, + 0x1668, 0x1669, 0x166a, 0x166b, 0x166c, 0x166d, 0x166e, 0x166f, + 0x1670, 0x1671, 0x1672, 0x1673, 0x1674, 0x1675, 0x1676, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x1680, 0x1681, 0x1682, 0x1683, 0x1684, 0x1685, 0x1686, 0x1687, + 0x1688, 0x1689, 0x168a, 0x168b, 0x168c, 0x168d, 0x168e, 0x168f, + 0x1690, 0x1691, 0x1692, 0x1693, 0x1694, 0x1695, 0x1696, 0x1697, + 0x1698, 0x1699, 0x169a, 0x169b, 0x169c, 0x0000, 0x0000, 0x0000, + 0x16a0, 0x16a1, 0x16a2, 0x16a3, 0x16a4, 0x16a5, 0x16a6, 0x16a7, + 0x16a8, 0x16a9, 0x16aa, 0x16ab, 0x16ac, 0x16ad, 0x16ae, 0x16af, + 0x16b0, 0x16b1, 0x16b2, 0x16b3, 0x16b4, 0x16b5, 0x16b6, 0x16b7, + 0x16b8, 0x16b9, 0x16ba, 0x16bb, 0x16bc, 0x16bd, 0x16be, 0x16bf, + 0x16c0, 0x16c1, 0x16c2, 0x16c3, 0x16c4, 0x16c5, 0x16c6, 0x16c7, + 0x16c8, 0x16c9, 0x16ca, 0x16cb, 0x16cc, 0x16cd, 0x16ce, 0x16cf, + 0x16d0, 0x16d1, 0x16d2, 0x16d3, 0x16d4, 0x16d5, 0x16d6, 0x16d7, + 0x16d8, 0x16d9, 0x16da, 0x16db, 0x16dc, 0x16dd, 0x16de, 0x16df, + 0x16e0, 0x16e1, 0x16e2, 0x16e3, 0x16e4, 0x16e5, 0x16e6, 0x16e7, + 0x16e8, 0x16e9, 0x16ea, 0x16eb, 0x16ec, 0x16ed, 0x16ee, 0x16ef, + 0x16f0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x1700, 0x1701, 0x1702, 0x1703, 0x1704, 0x1705, 0x1706, 0x1707, + 0x1708, 0x1709, 0x170a, 0x170b, 0x170c, 0x0000, 0x170e, 0x170f, + 0x1710, 0x1711, 0x1712, 0x1713, 0x1714, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x1720, 0x1721, 0x1722, 0x1723, 0x1724, 0x1725, 0x1726, 0x1727, + 0x1728, 0x1729, 0x172a, 0x172b, 0x172c, 0x172d, 0x172e, 0x172f, + 0x1730, 0x1731, 0x1732, 0x1733, 0x1734, 0x1735, 0x1736, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x1740, 0x1741, 0x1742, 0x1743, 0x1744, 0x1745, 0x1746, 0x1747, + 0x1748, 0x1749, 0x174a, 0x174b, 0x174c, 0x174d, 0x174e, 0x174f, + 0x1750, 0x1751, 0x1752, 0x1753, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x1760, 0x1761, 0x1762, 0x1763, 0x1764, 0x1765, 0x1766, 0x1767, + 0x1768, 0x1769, 0x176a, 0x176b, 0x176c, 0x0000, 0x176e, 0x176f, + 0x1770, 0x0000, 0x1772, 0x1773, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x1780, 0x1781, 0x1782, 0x1783, 0x1784, 0x1785, 0x1786, 0x1787, + 0x1788, 0x1789, 0x178a, 0x178b, 0x178c, 0x178d, 0x178e, 0x178f, + 0x1790, 0x1791, 0x1792, 0x1793, 0x1794, 0x1795, 0x1796, 0x1797, + 0x1798, 0x1799, 0x179a, 0x179b, 0x179c, 0x179d, 0x179e, 0x179f, + 0x17a0, 0x17a1, 0x17a2, 0x17a3, 0x17a4, 0x17a5, 0x17a6, 0x17a7, + 0x17a8, 0x17a9, 0x17aa, 0x17ab, 0x17ac, 0x17ad, 0x17ae, 0x17af, + 0x17b0, 0x17b1, 0x17b2, 0x17b3, 0x17b4, 0x17b5, 0x17b6, 0x17b7, + 0x17b8, 0x17b9, 0x17ba, 0x17bb, 0x17bc, 0x17bd, 0x17be, 0x17bf, + 0x17c0, 0x17c1, 0x17c2, 0x17c3, 0x17c4, 0x17c5, 0x17c6, 0x17c7, + 0x17c8, 0x17c9, 0x17ca, 0x17cb, 0x17cc, 0x17cd, 0x17ce, 0x17cf, + 0x17d0, 0x17d1, 0x17d2, 0x17d3, 0x17d4, 0x17d5, 0x17d6, 0x17d7, + 0x17d8, 0x17d9, 0x17da, 0x17db, 0x17dc, 0x17dd, 0x0000, 0x0000, + 0x17e0, 0x17e1, 0x17e2, 0x17e3, 0x17e4, 0x17e5, 0x17e6, 0x17e7, + 0x17e8, 0x17e9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x17f0, 0x17f1, 0x17f2, 0x17f3, 0x17f4, 0x17f5, 0x17f6, 0x17f7, + 0x17f8, 0x17f9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x1800, 0x1801, 0x1802, 0x1803, 0x1804, 0x1805, 0x1806, 0x1807, + 0x1808, 0x1809, 0x180a, 0x180b, 0x180c, 0x180d, 0x180e, 0x0000, + 0x1810, 0x1811, 0x1812, 0x1813, 0x1814, 0x1815, 0x1816, 0x1817, + 0x1818, 0x1819, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x1820, 0x1821, 0x1822, 0x1823, 0x1824, 0x1825, 0x1826, 0x1827, + 0x1828, 0x1829, 0x182a, 0x182b, 0x182c, 0x182d, 0x182e, 0x182f, + 0x1830, 0x1831, 0x1832, 0x1833, 0x1834, 0x1835, 0x1836, 0x1837, + 0x1838, 0x1839, 0x183a, 0x183b, 0x183c, 0x183d, 0x183e, 0x183f, + 0x1840, 0x1841, 0x1842, 0x1843, 0x1844, 0x1845, 0x1846, 0x1847, + 0x1848, 0x1849, 0x184a, 0x184b, 0x184c, 0x184d, 0x184e, 0x184f, + 0x1850, 0x1851, 0x1852, 0x1853, 0x1854, 0x1855, 0x1856, 0x1857, + 0x1858, 0x1859, 0x185a, 0x185b, 0x185c, 0x185d, 0x185e, 0x185f, + 0x1860, 0x1861, 0x1862, 0x1863, 0x1864, 0x1865, 0x1866, 0x1867, + 0x1868, 0x1869, 0x186a, 0x186b, 0x186c, 0x186d, 0x186e, 0x186f, + 0x1870, 0x1871, 0x1872, 0x1873, 0x1874, 0x1875, 0x1876, 0x1877, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x1880, 0x1881, 0x1882, 0x1883, 0x1884, 0x1885, 0x1886, 0x1887, + 0x1888, 0x1889, 0x188a, 0x188b, 0x188c, 0x188d, 0x188e, 0x188f, + 0x1890, 0x1891, 0x1892, 0x1893, 0x1894, 0x1895, 0x1896, 0x1897, + 0x1898, 0x1899, 0x189a, 0x189b, 0x189c, 0x189d, 0x189e, 0x189f, + 0x18a0, 0x18a1, 0x18a2, 0x18a3, 0x18a4, 0x18a5, 0x18a6, 0x18a7, + 0x18a8, 0x18a9, 0x18aa, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x1900, 0x1901, 0x1902, 0x1903, 0x1904, 0x1905, 0x1906, 0x1907, + 0x1908, 0x1909, 0x190a, 0x190b, 0x190c, 0x190d, 0x190e, 0x190f, + 0x1910, 0x1911, 0x1912, 0x1913, 0x1914, 0x1915, 0x1916, 0x1917, + 0x1918, 0x1919, 0x191a, 0x191b, 0x191c, 0x0000, 0x0000, 0x0000, + 0x1920, 0x1921, 0x1922, 0x1923, 0x1924, 0x1925, 0x1926, 0x1927, + 0x1928, 0x1929, 0x192a, 0x192b, 0x0000, 0x0000, 0x0000, 0x0000, + 0x1930, 0x1931, 0x1932, 0x1933, 0x1934, 0x1935, 0x1936, 0x1937, + 0x1938, 0x1939, 0x193a, 0x193b, 0x0000, 0x0000, 0x0000, 0x0000, + 0x1940, 0x0000, 0x0000, 0x0000, 0x1944, 0x1945, 0x1946, 0x1947, + 0x1948, 0x1949, 0x194a, 0x194b, 0x194c, 0x194d, 0x194e, 0x194f, + 0x1950, 0x1951, 0x1952, 0x1953, 0x1954, 0x1955, 0x1956, 0x1957, + 0x1958, 0x1959, 0x195a, 0x195b, 0x195c, 0x195d, 0x195e, 0x195f, + 0x1960, 0x1961, 0x1962, 0x1963, 0x1964, 0x1965, 0x1966, 0x1967, + 0x1968, 0x1969, 0x196a, 0x196b, 0x196c, 0x196d, 0x0000, 0x0000, + 0x1970, 0x1971, 0x1972, 0x1973, 0x1974, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x1980, 0x1981, 0x1982, 0x1983, 0x1984, 0x1985, 0x1986, 0x1987, + 0x1988, 0x1989, 0x198a, 0x198b, 0x198c, 0x198d, 0x198e, 0x198f, + 0x1990, 0x1991, 0x1992, 0x1993, 0x1994, 0x1995, 0x1996, 0x1997, + 0x1998, 0x1999, 0x199a, 0x199b, 0x199c, 0x199d, 0x199e, 0x199f, + 0x19a0, 0x19a1, 0x19a2, 0x19a3, 0x19a4, 0x19a5, 0x19a6, 0x19a7, + 0x19a8, 0x19a9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x19b0, 0x19b1, 0x19b2, 0x19b3, 0x19b4, 0x19b5, 0x19b6, 0x19b7, + 0x19b8, 0x19b9, 0x19ba, 0x19bb, 0x19bc, 0x19bd, 0x19be, 0x19bf, + 0x19c0, 0x19c1, 0x19c2, 0x19c3, 0x19c4, 0x19c5, 0x19c6, 0x19c7, + 0x19c8, 0x19c9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x19d0, 0x19d1, 0x19d2, 0x19d3, 0x19d4, 0x19d5, 0x19d6, 0x19d7, + 0x19d8, 0x19d9, 0x0000, 0x0000, 0x0000, 0x0000, 0x19de, 0x19df, + 0x19e0, 0x19e1, 0x19e2, 0x19e3, 0x19e4, 0x19e5, 0x19e6, 0x19e7, + 0x19e8, 0x19e9, 0x19ea, 0x19eb, 0x19ec, 0x19ed, 0x19ee, 0x19ef, + 0x19f0, 0x19f1, 0x19f2, 0x19f3, 0x19f4, 0x19f5, 0x19f6, 0x19f7, + 0x19f8, 0x19f9, 0x19fa, 0x19fb, 0x19fc, 0x19fd, 0x19fe, 0x19ff, + 0x1a00, 0x1a01, 0x1a02, 0x1a03, 0x1a04, 0x1a05, 0x1a06, 0x1a07, + 0x1a08, 0x1a09, 0x1a0a, 0x1a0b, 0x1a0c, 0x1a0d, 0x1a0e, 0x1a0f, + 0x1a10, 0x1a11, 0x1a12, 0x1a13, 0x1a14, 0x1a15, 0x1a16, 0x1a17, + 0x1a18, 0x1a19, 0x1a1a, 0x1a1b, 0x0000, 0x0000, 0x1a1e, 0x1a1f, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x1b00, 0x1b01, 0x1b02, 0x1b03, 0x1b04, 0x1b05, 0x1b06, 0x1b07, + 0x1b08, 0x1b09, 0x1b0a, 0x1b0b, 0x1b0c, 0x1b0d, 0x1b0e, 0x1b0f, + 0x1b10, 0x1b11, 0x1b12, 0x1b13, 0x1b14, 0x1b15, 0x1b16, 0x1b17, + 0x1b18, 0x1b19, 0x1b1a, 0x1b1b, 0x1b1c, 0x1b1d, 0x1b1e, 0x1b1f, + 0x1b20, 0x1b21, 0x1b22, 0x1b23, 0x1b24, 0x1b25, 0x1b26, 0x1b27, + 0x1b28, 0x1b29, 0x1b2a, 0x1b2b, 0x1b2c, 0x1b2d, 0x1b2e, 0x1b2f, + 0x1b30, 0x1b31, 0x1b32, 0x1b33, 0x1b34, 0x1b35, 0x1b36, 0x1b37, + 0x1b38, 0x1b39, 0x1b3a, 0x1b3b, 0x1b3c, 0x1b3d, 0x1b3e, 0x1b3f, + 0x1b40, 0x1b41, 0x1b42, 0x1b43, 0x1b44, 0x1b45, 0x1b46, 0x1b47, + 0x1b48, 0x1b49, 0x1b4a, 0x1b4b, 0x0000, 0x0000, 0x0000, 0x0000, + 0x1b50, 0x1b51, 0x1b52, 0x1b53, 0x1b54, 0x1b55, 0x1b56, 0x1b57, + 0x1b58, 0x1b59, 0x1b5a, 0x1b5b, 0x1b5c, 0x1b5d, 0x1b5e, 0x1b5f, + 0x1b60, 0x1b61, 0x1b62, 0x1b63, 0x1b64, 0x1b65, 0x1b66, 0x1b67, + 0x1b68, 0x1b69, 0x1b6a, 0x1b6b, 0x1b6c, 0x1b6d, 0x1b6e, 0x1b6f, + 0x1b70, 0x1b71, 0x1b72, 0x1b73, 0x1b74, 0x1b75, 0x1b76, 0x1b77, + 0x1b78, 0x1b79, 0x1b7a, 0x1b7b, 0x1b7c, 0x0000, 0x0000, 0x0000, + 0x1b80, 0x1b81, 0x1b82, 0x1b83, 0x1b84, 0x1b85, 0x1b86, 0x1b87, + 0x1b88, 0x1b89, 0x1b8a, 0x1b8b, 0x1b8c, 0x1b8d, 0x1b8e, 0x1b8f, + 0x1b90, 0x1b91, 0x1b92, 0x1b93, 0x1b94, 0x1b95, 0x1b96, 0x1b97, + 0x1b98, 0x1b99, 0x1b9a, 0x1b9b, 0x1b9c, 0x1b9d, 0x1b9e, 0x1b9f, + 0x1ba0, 0x1ba1, 0x1ba2, 0x1ba3, 0x1ba4, 0x1ba5, 0x1ba6, 0x1ba7, + 0x1ba8, 0x1ba9, 0x1baa, 0x0000, 0x0000, 0x0000, 0x1bae, 0x1baf, + 0x1bb0, 0x1bb1, 0x1bb2, 0x1bb3, 0x1bb4, 0x1bb5, 0x1bb6, 0x1bb7, + 0x1bb8, 0x1bb9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x1c00, 0x1c01, 0x1c02, 0x1c03, 0x1c04, 0x1c05, 0x1c06, 0x1c07, + 0x1c08, 0x1c09, 0x1c0a, 0x1c0b, 0x1c0c, 0x1c0d, 0x1c0e, 0x1c0f, + 0x1c10, 0x1c11, 0x1c12, 0x1c13, 0x1c14, 0x1c15, 0x1c16, 0x1c17, + 0x1c18, 0x1c19, 0x1c1a, 0x1c1b, 0x1c1c, 0x1c1d, 0x1c1e, 0x1c1f, + 0x1c20, 0x1c21, 0x1c22, 0x1c23, 0x1c24, 0x1c25, 0x1c26, 0x1c27, + 0x1c28, 0x1c29, 0x1c2a, 0x1c2b, 0x1c2c, 0x1c2d, 0x1c2e, 0x1c2f, + 0x1c30, 0x1c31, 0x1c32, 0x1c33, 0x1c34, 0x1c35, 0x1c36, 0x1c37, + 0x0000, 0x0000, 0x0000, 0x1c3b, 0x1c3c, 0x1c3d, 0x1c3e, 0x1c3f, + 0x1c40, 0x1c41, 0x1c42, 0x1c43, 0x1c44, 0x1c45, 0x1c46, 0x1c47, + 0x1c48, 0x1c49, 0x0000, 0x0000, 0x0000, 0x1c4d, 0x1c4e, 0x1c4f, + 0x1c50, 0x1c51, 0x1c52, 0x1c53, 0x1c54, 0x1c55, 0x1c56, 0x1c57, + 0x1c58, 0x1c59, 0x1c5a, 0x1c5b, 0x1c5c, 0x1c5d, 0x1c5e, 0x1c5f, + 0x1c60, 0x1c61, 0x1c62, 0x1c63, 0x1c64, 0x1c65, 0x1c66, 0x1c67, + 0x1c68, 0x1c69, 0x1c6a, 0x1c6b, 0x1c6c, 0x1c6d, 0x1c6e, 0x1c6f, + 0x1c70, 0x1c71, 0x1c72, 0x1c73, 0x1c74, 0x1c75, 0x1c76, 0x1c77, + 0x1c78, 0x1c79, 0x1c7a, 0x1c7b, 0x1c7c, 0x1c7d, 0x1c7e, 0x1c7f, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x1d00, 0x1d01, 0x1d02, 0x1d03, 0x1d04, 0x1d05, 0x1d06, 0x1d07, + 0x1d08, 0x1d09, 0x1d0a, 0x1d0b, 0x1d0c, 0x1d0d, 0x1d0e, 0x1d0f, + 0x1d10, 0x1d11, 0x1d12, 0x1d13, 0x1d14, 0x1d15, 0x1d16, 0x1d17, + 0x1d18, 0x1d19, 0x1d1a, 0x1d1b, 0x1d1c, 0x1d1d, 0x1d1e, 0x1d1f, + 0x1d20, 0x1d21, 0x1d22, 0x1d23, 0x1d24, 0x1d25, 0x1d26, 0x1d27, + 0x1d28, 0x1d29, 0x1d2a, 0x1d2b, 0x1d2c, 0x1d2d, 0x1d2e, 0x1d2f, + 0x1d30, 0x1d31, 0x1d32, 0x1d33, 0x1d34, 0x1d35, 0x1d36, 0x1d37, + 0x1d38, 0x1d39, 0x1d3a, 0x1d3b, 0x1d3c, 0x1d3d, 0x1d3e, 0x1d3f, + 0x1d40, 0x1d41, 0x1d42, 0x1d43, 0x1d44, 0x1d45, 0x1d46, 0x1d47, + 0x1d48, 0x1d49, 0x1d4a, 0x1d4b, 0x1d4c, 0x1d4d, 0x1d4e, 0x1d4f, + 0x1d50, 0x1d51, 0x1d52, 0x1d53, 0x1d54, 0x1d55, 0x1d56, 0x1d57, + 0x1d58, 0x1d59, 0x1d5a, 0x1d5b, 0x1d5c, 0x1d5d, 0x1d5e, 0x1d5f, + 0x1d60, 0x1d61, 0x1d62, 0x1d63, 0x1d64, 0x1d65, 0x1d66, 0x1d67, + 0x1d68, 0x1d69, 0x1d6a, 0x1d6b, 0x1d6c, 0x1d6d, 0x1d6e, 0x1d6f, + 0x1d70, 0x1d71, 0x1d72, 0x1d73, 0x1d74, 0x1d75, 0x1d76, 0x1d77, + 0x1d78, 0x1d79, 0x1d7a, 0x1d7b, 0x1d7c, 0x1d7d, 0x1d7e, 0x1d7f, + 0x1d80, 0x1d81, 0x1d82, 0x1d83, 0x1d84, 0x1d85, 0x1d86, 0x1d87, + 0x1d88, 0x1d89, 0x1d8a, 0x1d8b, 0x1d8c, 0x1d8d, 0x1d8e, 0x1d8f, + 0x1d90, 0x1d91, 0x1d92, 0x1d93, 0x1d94, 0x1d95, 0x1d96, 0x1d97, + 0x1d98, 0x1d99, 0x1d9a, 0x1d9b, 0x1d9c, 0x1d9d, 0x1d9e, 0x1d9f, + 0x1da0, 0x1da1, 0x1da2, 0x1da3, 0x1da4, 0x1da5, 0x1da6, 0x1da7, + 0x1da8, 0x1da9, 0x1daa, 0x1dab, 0x1dac, 0x1dad, 0x1dae, 0x1daf, + 0x1db0, 0x1db1, 0x1db2, 0x1db3, 0x1db4, 0x1db5, 0x1db6, 0x1db7, + 0x1db8, 0x1db9, 0x1dba, 0x1dbb, 0x1dbc, 0x1dbd, 0x1dbe, 0x1dbf, + 0x1dc0, 0x1dc1, 0x1dc2, 0x1dc3, 0x1dc4, 0x1dc5, 0x1dc6, 0x1dc7, + 0x1dc8, 0x1dc9, 0x1dca, 0x1dcb, 0x1dcc, 0x1dcd, 0x1dce, 0x1dcf, + 0x1dd0, 0x1dd1, 0x1dd2, 0x1dd3, 0x1dd4, 0x1dd5, 0x1dd6, 0x1dd7, + 0x1dd8, 0x1dd9, 0x1dda, 0x1ddb, 0x1ddc, 0x1ddd, 0x1dde, 0x1ddf, + 0x1de0, 0x1de1, 0x1de2, 0x1de3, 0x1de4, 0x1de5, 0x1de6, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1dfe, 0x1dff, + 0x1e01, 0x1e01, 0x1e03, 0x1e03, 0x1e05, 0x1e05, 0x1e07, 0x1e07, + 0x1e09, 0x1e09, 0x1e0b, 0x1e0b, 0x1e0d, 0x1e0d, 0x1e0f, 0x1e0f, + 0x1e11, 0x1e11, 0x1e13, 0x1e13, 0x1e15, 0x1e15, 0x1e17, 0x1e17, + 0x1e19, 0x1e19, 0x1e1b, 0x1e1b, 0x1e1d, 0x1e1d, 0x1e1f, 0x1e1f, + 0x1e21, 0x1e21, 0x1e23, 0x1e23, 0x1e25, 0x1e25, 0x1e27, 0x1e27, + 0x1e29, 0x1e29, 0x1e2b, 0x1e2b, 0x1e2d, 0x1e2d, 0x1e2f, 0x1e2f, + 0x1e31, 0x1e31, 0x1e33, 0x1e33, 0x1e35, 0x1e35, 0x1e37, 0x1e37, + 0x1e39, 0x1e39, 0x1e3b, 0x1e3b, 0x1e3d, 0x1e3d, 0x1e3f, 0x1e3f, + 0x1e41, 0x1e41, 0x1e43, 0x1e43, 0x1e45, 0x1e45, 0x1e47, 0x1e47, + 0x1e49, 0x1e49, 0x1e4b, 0x1e4b, 0x1e4d, 0x1e4d, 0x1e4f, 0x1e4f, + 0x1e51, 0x1e51, 0x1e53, 0x1e53, 0x1e55, 0x1e55, 0x1e57, 0x1e57, + 0x1e59, 0x1e59, 0x1e5b, 0x1e5b, 0x1e5d, 0x1e5d, 0x1e5f, 0x1e5f, + 0x1e61, 0x1e61, 0x1e63, 0x1e63, 0x1e65, 0x1e65, 0x1e67, 0x1e67, + 0x1e69, 0x1e69, 0x1e6b, 0x1e6b, 0x1e6d, 0x1e6d, 0x1e6f, 0x1e6f, + 0x1e71, 0x1e71, 0x1e73, 0x1e73, 0x1e75, 0x1e75, 0x1e77, 0x1e77, + 0x1e79, 0x1e79, 0x1e7b, 0x1e7b, 0x1e7d, 0x1e7d, 0x1e7f, 0x1e7f, + 0x1e81, 0x1e81, 0x1e83, 0x1e83, 0x1e85, 0x1e85, 0x1e87, 0x1e87, + 0x1e89, 0x1e89, 0x1e8b, 0x1e8b, 0x1e8d, 0x1e8d, 0x1e8f, 0x1e8f, + 0x1e91, 0x1e91, 0x1e93, 0x1e93, 0x1e95, 0x1e95, 0x1e96, 0x1e97, + 0x1e98, 0x1e99, 0x1e9a, 0x1e9b, 0x1e9c, 0x1e9d, 0x00df, 0x1e9f, + 0x1ea1, 0x1ea1, 0x1ea3, 0x1ea3, 0x1ea5, 0x1ea5, 0x1ea7, 0x1ea7, + 0x1ea9, 0x1ea9, 0x1eab, 0x1eab, 0x1ead, 0x1ead, 0x1eaf, 0x1eaf, + 0x1eb1, 0x1eb1, 0x1eb3, 0x1eb3, 0x1eb5, 0x1eb5, 0x1eb7, 0x1eb7, + 0x1eb9, 0x1eb9, 0x1ebb, 0x1ebb, 0x1ebd, 0x1ebd, 0x1ebf, 0x1ebf, + 0x1ec1, 0x1ec1, 0x1ec3, 0x1ec3, 0x1ec5, 0x1ec5, 0x1ec7, 0x1ec7, + 0x1ec9, 0x1ec9, 0x1ecb, 0x1ecb, 0x1ecd, 0x1ecd, 0x1ecf, 0x1ecf, + 0x1ed1, 0x1ed1, 0x1ed3, 0x1ed3, 0x1ed5, 0x1ed5, 0x1ed7, 0x1ed7, + 0x1ed9, 0x1ed9, 0x1edb, 0x1edb, 0x1edd, 0x1edd, 0x1edf, 0x1edf, + 0x1ee1, 0x1ee1, 0x1ee3, 0x1ee3, 0x1ee5, 0x1ee5, 0x1ee7, 0x1ee7, + 0x1ee9, 0x1ee9, 0x1eeb, 0x1eeb, 0x1eed, 0x1eed, 0x1eef, 0x1eef, + 0x1ef1, 0x1ef1, 0x1ef3, 0x1ef3, 0x1ef5, 0x1ef5, 0x1ef7, 0x1ef7, + 0x1ef9, 0x1ef9, 0x1efb, 0x1efb, 0x1efd, 0x1efd, 0x1eff, 0x1eff, + 0x1f00, 0x1f01, 0x1f02, 0x1f03, 0x1f04, 0x1f05, 0x1f06, 0x1f07, + 0x1f00, 0x1f01, 0x1f02, 0x1f03, 0x1f04, 0x1f05, 0x1f06, 0x1f07, + 0x1f10, 0x1f11, 0x1f12, 0x1f13, 0x1f14, 0x1f15, 0x0000, 0x0000, + 0x1f10, 0x1f11, 0x1f12, 0x1f13, 0x1f14, 0x1f15, 0x0000, 0x0000, + 0x1f20, 0x1f21, 0x1f22, 0x1f23, 0x1f24, 0x1f25, 0x1f26, 0x1f27, + 0x1f20, 0x1f21, 0x1f22, 0x1f23, 0x1f24, 0x1f25, 0x1f26, 0x1f27, + 0x1f30, 0x1f31, 0x1f32, 0x1f33, 0x1f34, 0x1f35, 0x1f36, 0x1f37, + 0x1f30, 0x1f31, 0x1f32, 0x1f33, 0x1f34, 0x1f35, 0x1f36, 0x1f37, + 0x1f40, 0x1f41, 0x1f42, 0x1f43, 0x1f44, 0x1f45, 0x0000, 0x0000, + 0x1f40, 0x1f41, 0x1f42, 0x1f43, 0x1f44, 0x1f45, 0x0000, 0x0000, + 0x1f50, 0x1f51, 0x1f52, 0x1f53, 0x1f54, 0x1f55, 0x1f56, 0x1f57, + 0x0000, 0x1f51, 0x0000, 0x1f53, 0x0000, 0x1f55, 0x0000, 0x1f57, + 0x1f60, 0x1f61, 0x1f62, 0x1f63, 0x1f64, 0x1f65, 0x1f66, 0x1f67, + 0x1f60, 0x1f61, 0x1f62, 0x1f63, 0x1f64, 0x1f65, 0x1f66, 0x1f67, + 0x1f70, 0x1f71, 0x1f72, 0x1f73, 0x1f74, 0x1f75, 0x1f76, 0x1f77, + 0x1f78, 0x1f79, 0x1f7a, 0x1f7b, 0x1f7c, 0x1f7d, 0x0000, 0x0000, + 0x1f80, 0x1f81, 0x1f82, 0x1f83, 0x1f84, 0x1f85, 0x1f86, 0x1f87, + 0x1f80, 0x1f81, 0x1f82, 0x1f83, 0x1f84, 0x1f85, 0x1f86, 0x1f87, + 0x1f90, 0x1f91, 0x1f92, 0x1f93, 0x1f94, 0x1f95, 0x1f96, 0x1f97, + 0x1f90, 0x1f91, 0x1f92, 0x1f93, 0x1f94, 0x1f95, 0x1f96, 0x1f97, + 0x1fa0, 0x1fa1, 0x1fa2, 0x1fa3, 0x1fa4, 0x1fa5, 0x1fa6, 0x1fa7, + 0x1fa0, 0x1fa1, 0x1fa2, 0x1fa3, 0x1fa4, 0x1fa5, 0x1fa6, 0x1fa7, + 0x1fb0, 0x1fb1, 0x1fb2, 0x1fb3, 0x1fb4, 0x0000, 0x1fb6, 0x1fb7, + 0x1fb0, 0x1fb1, 0x1f70, 0x1f71, 0x1fb3, 0x1fbd, 0x1fbe, 0x1fbf, + 0x1fc0, 0x1fc1, 0x1fc2, 0x1fc3, 0x1fc4, 0x0000, 0x1fc6, 0x1fc7, + 0x1f72, 0x1f73, 0x1f74, 0x1f75, 0x1fc3, 0x1fcd, 0x1fce, 0x1fcf, + 0x1fd0, 0x1fd1, 0x1fd2, 0x1fd3, 0x0000, 0x0000, 0x1fd6, 0x1fd7, + 0x1fd0, 0x1fd1, 0x1f76, 0x1f77, 0x0000, 0x1fdd, 0x1fde, 0x1fdf, + 0x1fe0, 0x1fe1, 0x1fe2, 0x1fe3, 0x1fe4, 0x1fe5, 0x1fe6, 0x1fe7, + 0x1fe0, 0x1fe1, 0x1f7a, 0x1f7b, 0x1fe5, 0x1fed, 0x1fee, 0x1fef, + 0x0000, 0x0000, 0x1ff2, 0x1ff3, 0x1ff4, 0x0000, 0x1ff6, 0x1ff7, + 0x1f78, 0x1f79, 0x1f7c, 0x1f7d, 0x1ff3, 0x1ffd, 0x1ffe, 0x0000, + 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, + 0x2008, 0x2009, 0x200a, 0x200b, 0x200c, 0x200d, 0x200e, 0x200f, + 0x2010, 0x2011, 0x2012, 0x2013, 0x2014, 0x2015, 0x2016, 0x2017, + 0x2018, 0x2019, 0x201a, 0x201b, 0x201c, 0x201d, 0x201e, 0x201f, + 0x2020, 0x2021, 0x2022, 0x2023, 0x2024, 0x2025, 0x2026, 0x2027, + 0x2028, 0x2029, 0x202a, 0x202b, 0x202c, 0x202d, 0x202e, 0x202f, + 0x2030, 0x2031, 0x2032, 0x2033, 0x2034, 0x2035, 0x2036, 0x2037, + 0x2038, 0x2039, 0x203a, 0x203b, 0x203c, 0x203d, 0x203e, 0x203f, + 0x2040, 0x2041, 0x2042, 0x2043, 0x2044, 0x2045, 0x2046, 0x2047, + 0x2048, 0x2049, 0x204a, 0x204b, 0x204c, 0x204d, 0x204e, 0x204f, + 0x2050, 0x2051, 0x2052, 0x2053, 0x2054, 0x2055, 0x2056, 0x2057, + 0x2058, 0x2059, 0x205a, 0x205b, 0x205c, 0x205d, 0x205e, 0x205f, + 0x2060, 0x2061, 0x2062, 0x2063, 0x2064, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x206a, 0x206b, 0x206c, 0x206d, 0x206e, 0x206f, + 0x2070, 0x2071, 0x0000, 0x0000, 0x2074, 0x2075, 0x2076, 0x2077, + 0x2078, 0x2079, 0x207a, 0x207b, 0x207c, 0x207d, 0x207e, 0x207f, + 0x2080, 0x2081, 0x2082, 0x2083, 0x2084, 0x2085, 0x2086, 0x2087, + 0x2088, 0x2089, 0x208a, 0x208b, 0x208c, 0x208d, 0x208e, 0x0000, + 0x2090, 0x2091, 0x2092, 0x2093, 0x2094, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x20a0, 0x20a1, 0x20a2, 0x20a3, 0x20a4, 0x20a5, 0x20a6, 0x20a7, + 0x20a8, 0x20a9, 0x20aa, 0x20ab, 0x20ac, 0x20ad, 0x20ae, 0x20af, + 0x20b0, 0x20b1, 0x20b2, 0x20b3, 0x20b4, 0x20b5, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x20d0, 0x20d1, 0x20d2, 0x20d3, 0x20d4, 0x20d5, 0x20d6, 0x20d7, + 0x20d8, 0x20d9, 0x20da, 0x20db, 0x20dc, 0x20dd, 0x20de, 0x20df, + 0x20e0, 0x20e1, 0x20e2, 0x20e3, 0x20e4, 0x20e5, 0x20e6, 0x20e7, + 0x20e8, 0x20e9, 0x20ea, 0x20eb, 0x20ec, 0x20ed, 0x20ee, 0x20ef, + 0x20f0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x2100, 0x2101, 0x2102, 0x2103, 0x2104, 0x2105, 0x2106, 0x2107, + 0x2108, 0x2109, 0x210a, 0x210b, 0x210c, 0x210d, 0x210e, 0x210f, + 0x2110, 0x2111, 0x2112, 0x2113, 0x2114, 0x2115, 0x2116, 0x2117, + 0x2118, 0x2119, 0x211a, 0x211b, 0x211c, 0x211d, 0x211e, 0x211f, + 0x2120, 0x2121, 0x2122, 0x2123, 0x2124, 0x2125, 0x03c9, 0x2127, + 0x2128, 0x2129, 0x006b, 0x00e5, 0x212c, 0x212d, 0x212e, 0x212f, + 0x2130, 0x2131, 0x214e, 0x2133, 0x2134, 0x2135, 0x2136, 0x2137, + 0x2138, 0x2139, 0x213a, 0x213b, 0x213c, 0x213d, 0x213e, 0x213f, + 0x2140, 0x2141, 0x2142, 0x2143, 0x2144, 0x2145, 0x2146, 0x2147, + 0x2148, 0x2149, 0x214a, 0x214b, 0x214c, 0x214d, 0x214e, 0x214f, + 0x0000, 0x0000, 0x0000, 0x2153, 0x2154, 0x2155, 0x2156, 0x2157, + 0x2158, 0x2159, 0x215a, 0x215b, 0x215c, 0x215d, 0x215e, 0x215f, + 0x2170, 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176, 0x2177, + 0x2178, 0x2179, 0x217a, 0x217b, 0x217c, 0x217d, 0x217e, 0x217f, + 0x2170, 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176, 0x2177, + 0x2178, 0x2179, 0x217a, 0x217b, 0x217c, 0x217d, 0x217e, 0x217f, + 0x2180, 0x2181, 0x2182, 0x2184, 0x2184, 0x2185, 0x2186, 0x2187, + 0x2188, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x2190, 0x2191, 0x2192, 0x2193, 0x2194, 0x2195, 0x2196, 0x2197, + 0x2198, 0x2199, 0x219a, 0x219b, 0x219c, 0x219d, 0x219e, 0x219f, + 0x21a0, 0x21a1, 0x21a2, 0x21a3, 0x21a4, 0x21a5, 0x21a6, 0x21a7, + 0x21a8, 0x21a9, 0x21aa, 0x21ab, 0x21ac, 0x21ad, 0x21ae, 0x21af, + 0x21b0, 0x21b1, 0x21b2, 0x21b3, 0x21b4, 0x21b5, 0x21b6, 0x21b7, + 0x21b8, 0x21b9, 0x21ba, 0x21bb, 0x21bc, 0x21bd, 0x21be, 0x21bf, + 0x21c0, 0x21c1, 0x21c2, 0x21c3, 0x21c4, 0x21c5, 0x21c6, 0x21c7, + 0x21c8, 0x21c9, 0x21ca, 0x21cb, 0x21cc, 0x21cd, 0x21ce, 0x21cf, + 0x21d0, 0x21d1, 0x21d2, 0x21d3, 0x21d4, 0x21d5, 0x21d6, 0x21d7, + 0x21d8, 0x21d9, 0x21da, 0x21db, 0x21dc, 0x21dd, 0x21de, 0x21df, + 0x21e0, 0x21e1, 0x21e2, 0x21e3, 0x21e4, 0x21e5, 0x21e6, 0x21e7, + 0x21e8, 0x21e9, 0x21ea, 0x21eb, 0x21ec, 0x21ed, 0x21ee, 0x21ef, + 0x21f0, 0x21f1, 0x21f2, 0x21f3, 0x21f4, 0x21f5, 0x21f6, 0x21f7, + 0x21f8, 0x21f9, 0x21fa, 0x21fb, 0x21fc, 0x21fd, 0x21fe, 0x21ff, + 0x2200, 0x2201, 0x2202, 0x2203, 0x2204, 0x2205, 0x2206, 0x2207, + 0x2208, 0x2209, 0x220a, 0x220b, 0x220c, 0x220d, 0x220e, 0x220f, + 0x2210, 0x2211, 0x2212, 0x2213, 0x2214, 0x2215, 0x2216, 0x2217, + 0x2218, 0x2219, 0x221a, 0x221b, 0x221c, 0x221d, 0x221e, 0x221f, + 0x2220, 0x2221, 0x2222, 0x2223, 0x2224, 0x2225, 0x2226, 0x2227, + 0x2228, 0x2229, 0x222a, 0x222b, 0x222c, 0x222d, 0x222e, 0x222f, + 0x2230, 0x2231, 0x2232, 0x2233, 0x2234, 0x2235, 0x2236, 0x2237, + 0x2238, 0x2239, 0x223a, 0x223b, 0x223c, 0x223d, 0x223e, 0x223f, + 0x2240, 0x2241, 0x2242, 0x2243, 0x2244, 0x2245, 0x2246, 0x2247, + 0x2248, 0x2249, 0x224a, 0x224b, 0x224c, 0x224d, 0x224e, 0x224f, + 0x2250, 0x2251, 0x2252, 0x2253, 0x2254, 0x2255, 0x2256, 0x2257, + 0x2258, 0x2259, 0x225a, 0x225b, 0x225c, 0x225d, 0x225e, 0x225f, + 0x2260, 0x2261, 0x2262, 0x2263, 0x2264, 0x2265, 0x2266, 0x2267, + 0x2268, 0x2269, 0x226a, 0x226b, 0x226c, 0x226d, 0x226e, 0x226f, + 0x2270, 0x2271, 0x2272, 0x2273, 0x2274, 0x2275, 0x2276, 0x2277, + 0x2278, 0x2279, 0x227a, 0x227b, 0x227c, 0x227d, 0x227e, 0x227f, + 0x2280, 0x2281, 0x2282, 0x2283, 0x2284, 0x2285, 0x2286, 0x2287, + 0x2288, 0x2289, 0x228a, 0x228b, 0x228c, 0x228d, 0x228e, 0x228f, + 0x2290, 0x2291, 0x2292, 0x2293, 0x2294, 0x2295, 0x2296, 0x2297, + 0x2298, 0x2299, 0x229a, 0x229b, 0x229c, 0x229d, 0x229e, 0x229f, + 0x22a0, 0x22a1, 0x22a2, 0x22a3, 0x22a4, 0x22a5, 0x22a6, 0x22a7, + 0x22a8, 0x22a9, 0x22aa, 0x22ab, 0x22ac, 0x22ad, 0x22ae, 0x22af, + 0x22b0, 0x22b1, 0x22b2, 0x22b3, 0x22b4, 0x22b5, 0x22b6, 0x22b7, + 0x22b8, 0x22b9, 0x22ba, 0x22bb, 0x22bc, 0x22bd, 0x22be, 0x22bf, + 0x22c0, 0x22c1, 0x22c2, 0x22c3, 0x22c4, 0x22c5, 0x22c6, 0x22c7, + 0x22c8, 0x22c9, 0x22ca, 0x22cb, 0x22cc, 0x22cd, 0x22ce, 0x22cf, + 0x22d0, 0x22d1, 0x22d2, 0x22d3, 0x22d4, 0x22d5, 0x22d6, 0x22d7, + 0x22d8, 0x22d9, 0x22da, 0x22db, 0x22dc, 0x22dd, 0x22de, 0x22df, + 0x22e0, 0x22e1, 0x22e2, 0x22e3, 0x22e4, 0x22e5, 0x22e6, 0x22e7, + 0x22e8, 0x22e9, 0x22ea, 0x22eb, 0x22ec, 0x22ed, 0x22ee, 0x22ef, + 0x22f0, 0x22f1, 0x22f2, 0x22f3, 0x22f4, 0x22f5, 0x22f6, 0x22f7, + 0x22f8, 0x22f9, 0x22fa, 0x22fb, 0x22fc, 0x22fd, 0x22fe, 0x22ff, + 0x2300, 0x2301, 0x2302, 0x2303, 0x2304, 0x2305, 0x2306, 0x2307, + 0x2308, 0x2309, 0x230a, 0x230b, 0x230c, 0x230d, 0x230e, 0x230f, + 0x2310, 0x2311, 0x2312, 0x2313, 0x2314, 0x2315, 0x2316, 0x2317, + 0x2318, 0x2319, 0x231a, 0x231b, 0x231c, 0x231d, 0x231e, 0x231f, + 0x2320, 0x2321, 0x2322, 0x2323, 0x2324, 0x2325, 0x2326, 0x2327, + 0x2328, 0x2329, 0x232a, 0x232b, 0x232c, 0x232d, 0x232e, 0x232f, + 0x2330, 0x2331, 0x2332, 0x2333, 0x2334, 0x2335, 0x2336, 0x2337, + 0x2338, 0x2339, 0x233a, 0x233b, 0x233c, 0x233d, 0x233e, 0x233f, + 0x2340, 0x2341, 0x2342, 0x2343, 0x2344, 0x2345, 0x2346, 0x2347, + 0x2348, 0x2349, 0x234a, 0x234b, 0x234c, 0x234d, 0x234e, 0x234f, + 0x2350, 0x2351, 0x2352, 0x2353, 0x2354, 0x2355, 0x2356, 0x2357, + 0x2358, 0x2359, 0x235a, 0x235b, 0x235c, 0x235d, 0x235e, 0x235f, + 0x2360, 0x2361, 0x2362, 0x2363, 0x2364, 0x2365, 0x2366, 0x2367, + 0x2368, 0x2369, 0x236a, 0x236b, 0x236c, 0x236d, 0x236e, 0x236f, + 0x2370, 0x2371, 0x2372, 0x2373, 0x2374, 0x2375, 0x2376, 0x2377, + 0x2378, 0x2379, 0x237a, 0x237b, 0x237c, 0x237d, 0x237e, 0x237f, + 0x2380, 0x2381, 0x2382, 0x2383, 0x2384, 0x2385, 0x2386, 0x2387, + 0x2388, 0x2389, 0x238a, 0x238b, 0x238c, 0x238d, 0x238e, 0x238f, + 0x2390, 0x2391, 0x2392, 0x2393, 0x2394, 0x2395, 0x2396, 0x2397, + 0x2398, 0x2399, 0x239a, 0x239b, 0x239c, 0x239d, 0x239e, 0x239f, + 0x23a0, 0x23a1, 0x23a2, 0x23a3, 0x23a4, 0x23a5, 0x23a6, 0x23a7, + 0x23a8, 0x23a9, 0x23aa, 0x23ab, 0x23ac, 0x23ad, 0x23ae, 0x23af, + 0x23b0, 0x23b1, 0x23b2, 0x23b3, 0x23b4, 0x23b5, 0x23b6, 0x23b7, + 0x23b8, 0x23b9, 0x23ba, 0x23bb, 0x23bc, 0x23bd, 0x23be, 0x23bf, + 0x23c0, 0x23c1, 0x23c2, 0x23c3, 0x23c4, 0x23c5, 0x23c6, 0x23c7, + 0x23c8, 0x23c9, 0x23ca, 0x23cb, 0x23cc, 0x23cd, 0x23ce, 0x23cf, + 0x23d0, 0x23d1, 0x23d2, 0x23d3, 0x23d4, 0x23d5, 0x23d6, 0x23d7, + 0x23d8, 0x23d9, 0x23da, 0x23db, 0x23dc, 0x23dd, 0x23de, 0x23df, + 0x23e0, 0x23e1, 0x23e2, 0x23e3, 0x23e4, 0x23e5, 0x23e6, 0x23e7, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x2400, 0x2401, 0x2402, 0x2403, 0x2404, 0x2405, 0x2406, 0x2407, + 0x2408, 0x2409, 0x240a, 0x240b, 0x240c, 0x240d, 0x240e, 0x240f, + 0x2410, 0x2411, 0x2412, 0x2413, 0x2414, 0x2415, 0x2416, 0x2417, + 0x2418, 0x2419, 0x241a, 0x241b, 0x241c, 0x241d, 0x241e, 0x241f, + 0x2420, 0x2421, 0x2422, 0x2423, 0x2424, 0x2425, 0x2426, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x2440, 0x2441, 0x2442, 0x2443, 0x2444, 0x2445, 0x2446, 0x2447, + 0x2448, 0x2449, 0x244a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, + 0x2468, 0x2469, 0x246a, 0x246b, 0x246c, 0x246d, 0x246e, 0x246f, + 0x2470, 0x2471, 0x2472, 0x2473, 0x2474, 0x2475, 0x2476, 0x2477, + 0x2478, 0x2479, 0x247a, 0x247b, 0x247c, 0x247d, 0x247e, 0x247f, + 0x2480, 0x2481, 0x2482, 0x2483, 0x2484, 0x2485, 0x2486, 0x2487, + 0x2488, 0x2489, 0x248a, 0x248b, 0x248c, 0x248d, 0x248e, 0x248f, + 0x2490, 0x2491, 0x2492, 0x2493, 0x2494, 0x2495, 0x2496, 0x2497, + 0x2498, 0x2499, 0x249a, 0x249b, 0x249c, 0x249d, 0x249e, 0x249f, + 0x24a0, 0x24a1, 0x24a2, 0x24a3, 0x24a4, 0x24a5, 0x24a6, 0x24a7, + 0x24a8, 0x24a9, 0x24aa, 0x24ab, 0x24ac, 0x24ad, 0x24ae, 0x24af, + 0x24b0, 0x24b1, 0x24b2, 0x24b3, 0x24b4, 0x24b5, 0x24d0, 0x24d1, + 0x24d2, 0x24d3, 0x24d4, 0x24d5, 0x24d6, 0x24d7, 0x24d8, 0x24d9, + 0x24da, 0x24db, 0x24dc, 0x24dd, 0x24de, 0x24df, 0x24e0, 0x24e1, + 0x24e2, 0x24e3, 0x24e4, 0x24e5, 0x24e6, 0x24e7, 0x24e8, 0x24e9, + 0x24d0, 0x24d1, 0x24d2, 0x24d3, 0x24d4, 0x24d5, 0x24d6, 0x24d7, + 0x24d8, 0x24d9, 0x24da, 0x24db, 0x24dc, 0x24dd, 0x24de, 0x24df, + 0x24e0, 0x24e1, 0x24e2, 0x24e3, 0x24e4, 0x24e5, 0x24e6, 0x24e7, + 0x24e8, 0x24e9, 0x24ea, 0x24eb, 0x24ec, 0x24ed, 0x24ee, 0x24ef, + 0x24f0, 0x24f1, 0x24f2, 0x24f3, 0x24f4, 0x24f5, 0x24f6, 0x24f7, + 0x24f8, 0x24f9, 0x24fa, 0x24fb, 0x24fc, 0x24fd, 0x24fe, 0x24ff, + 0x2500, 0x2501, 0x2502, 0x2503, 0x2504, 0x2505, 0x2506, 0x2507, + 0x2508, 0x2509, 0x250a, 0x250b, 0x250c, 0x250d, 0x250e, 0x250f, + 0x2510, 0x2511, 0x2512, 0x2513, 0x2514, 0x2515, 0x2516, 0x2517, + 0x2518, 0x2519, 0x251a, 0x251b, 0x251c, 0x251d, 0x251e, 0x251f, + 0x2520, 0x2521, 0x2522, 0x2523, 0x2524, 0x2525, 0x2526, 0x2527, + 0x2528, 0x2529, 0x252a, 0x252b, 0x252c, 0x252d, 0x252e, 0x252f, + 0x2530, 0x2531, 0x2532, 0x2533, 0x2534, 0x2535, 0x2536, 0x2537, + 0x2538, 0x2539, 0x253a, 0x253b, 0x253c, 0x253d, 0x253e, 0x253f, + 0x2540, 0x2541, 0x2542, 0x2543, 0x2544, 0x2545, 0x2546, 0x2547, + 0x2548, 0x2549, 0x254a, 0x254b, 0x254c, 0x254d, 0x254e, 0x254f, + 0x2550, 0x2551, 0x2552, 0x2553, 0x2554, 0x2555, 0x2556, 0x2557, + 0x2558, 0x2559, 0x255a, 0x255b, 0x255c, 0x255d, 0x255e, 0x255f, + 0x2560, 0x2561, 0x2562, 0x2563, 0x2564, 0x2565, 0x2566, 0x2567, + 0x2568, 0x2569, 0x256a, 0x256b, 0x256c, 0x256d, 0x256e, 0x256f, + 0x2570, 0x2571, 0x2572, 0x2573, 0x2574, 0x2575, 0x2576, 0x2577, + 0x2578, 0x2579, 0x257a, 0x257b, 0x257c, 0x257d, 0x257e, 0x257f, + 0x2580, 0x2581, 0x2582, 0x2583, 0x2584, 0x2585, 0x2586, 0x2587, + 0x2588, 0x2589, 0x258a, 0x258b, 0x258c, 0x258d, 0x258e, 0x258f, + 0x2590, 0x2591, 0x2592, 0x2593, 0x2594, 0x2595, 0x2596, 0x2597, + 0x2598, 0x2599, 0x259a, 0x259b, 0x259c, 0x259d, 0x259e, 0x259f, + 0x25a0, 0x25a1, 0x25a2, 0x25a3, 0x25a4, 0x25a5, 0x25a6, 0x25a7, + 0x25a8, 0x25a9, 0x25aa, 0x25ab, 0x25ac, 0x25ad, 0x25ae, 0x25af, + 0x25b0, 0x25b1, 0x25b2, 0x25b3, 0x25b4, 0x25b5, 0x25b6, 0x25b7, + 0x25b8, 0x25b9, 0x25ba, 0x25bb, 0x25bc, 0x25bd, 0x25be, 0x25bf, + 0x25c0, 0x25c1, 0x25c2, 0x25c3, 0x25c4, 0x25c5, 0x25c6, 0x25c7, + 0x25c8, 0x25c9, 0x25ca, 0x25cb, 0x25cc, 0x25cd, 0x25ce, 0x25cf, + 0x25d0, 0x25d1, 0x25d2, 0x25d3, 0x25d4, 0x25d5, 0x25d6, 0x25d7, + 0x25d8, 0x25d9, 0x25da, 0x25db, 0x25dc, 0x25dd, 0x25de, 0x25df, + 0x25e0, 0x25e1, 0x25e2, 0x25e3, 0x25e4, 0x25e5, 0x25e6, 0x25e7, + 0x25e8, 0x25e9, 0x25ea, 0x25eb, 0x25ec, 0x25ed, 0x25ee, 0x25ef, + 0x25f0, 0x25f1, 0x25f2, 0x25f3, 0x25f4, 0x25f5, 0x25f6, 0x25f7, + 0x25f8, 0x25f9, 0x25fa, 0x25fb, 0x25fc, 0x25fd, 0x25fe, 0x25ff, + 0x2600, 0x2601, 0x2602, 0x2603, 0x2604, 0x2605, 0x2606, 0x2607, + 0x2608, 0x2609, 0x260a, 0x260b, 0x260c, 0x260d, 0x260e, 0x260f, + 0x2610, 0x2611, 0x2612, 0x2613, 0x2614, 0x2615, 0x2616, 0x2617, + 0x2618, 0x2619, 0x261a, 0x261b, 0x261c, 0x261d, 0x261e, 0x261f, + 0x2620, 0x2621, 0x2622, 0x2623, 0x2624, 0x2625, 0x2626, 0x2627, + 0x2628, 0x2629, 0x262a, 0x262b, 0x262c, 0x262d, 0x262e, 0x262f, + 0x2630, 0x2631, 0x2632, 0x2633, 0x2634, 0x2635, 0x2636, 0x2637, + 0x2638, 0x2639, 0x263a, 0x263b, 0x263c, 0x263d, 0x263e, 0x263f, + 0x2640, 0x2641, 0x2642, 0x2643, 0x2644, 0x2645, 0x2646, 0x2647, + 0x2648, 0x2649, 0x264a, 0x264b, 0x264c, 0x264d, 0x264e, 0x264f, + 0x2650, 0x2651, 0x2652, 0x2653, 0x2654, 0x2655, 0x2656, 0x2657, + 0x2658, 0x2659, 0x265a, 0x265b, 0x265c, 0x265d, 0x265e, 0x265f, + 0x2660, 0x2661, 0x2662, 0x2663, 0x2664, 0x2665, 0x2666, 0x2667, + 0x2668, 0x2669, 0x266a, 0x266b, 0x266c, 0x266d, 0x266e, 0x266f, + 0x2670, 0x2671, 0x2672, 0x2673, 0x2674, 0x2675, 0x2676, 0x2677, + 0x2678, 0x2679, 0x267a, 0x267b, 0x267c, 0x267d, 0x267e, 0x267f, + 0x2680, 0x2681, 0x2682, 0x2683, 0x2684, 0x2685, 0x2686, 0x2687, + 0x2688, 0x2689, 0x268a, 0x268b, 0x268c, 0x268d, 0x268e, 0x268f, + 0x2690, 0x2691, 0x2692, 0x2693, 0x2694, 0x2695, 0x2696, 0x2697, + 0x2698, 0x2699, 0x269a, 0x269b, 0x269c, 0x269d, 0x0000, 0x0000, + 0x26a0, 0x26a1, 0x26a2, 0x26a3, 0x26a4, 0x26a5, 0x26a6, 0x26a7, + 0x26a8, 0x26a9, 0x26aa, 0x26ab, 0x26ac, 0x26ad, 0x26ae, 0x26af, + 0x26b0, 0x26b1, 0x26b2, 0x26b3, 0x26b4, 0x26b5, 0x26b6, 0x26b7, + 0x26b8, 0x26b9, 0x26ba, 0x26bb, 0x26bc, 0x0000, 0x0000, 0x0000, + 0x26c0, 0x26c1, 0x26c2, 0x26c3, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x2701, 0x2702, 0x2703, 0x2704, 0x0000, 0x2706, 0x2707, + 0x2708, 0x2709, 0x0000, 0x0000, 0x270c, 0x270d, 0x270e, 0x270f, + 0x2710, 0x2711, 0x2712, 0x2713, 0x2714, 0x2715, 0x2716, 0x2717, + 0x2718, 0x2719, 0x271a, 0x271b, 0x271c, 0x271d, 0x271e, 0x271f, + 0x2720, 0x2721, 0x2722, 0x2723, 0x2724, 0x2725, 0x2726, 0x2727, + 0x0000, 0x2729, 0x272a, 0x272b, 0x272c, 0x272d, 0x272e, 0x272f, + 0x2730, 0x2731, 0x2732, 0x2733, 0x2734, 0x2735, 0x2736, 0x2737, + 0x2738, 0x2739, 0x273a, 0x273b, 0x273c, 0x273d, 0x273e, 0x273f, + 0x2740, 0x2741, 0x2742, 0x2743, 0x2744, 0x2745, 0x2746, 0x2747, + 0x2748, 0x2749, 0x274a, 0x274b, 0x0000, 0x274d, 0x0000, 0x274f, + 0x2750, 0x2751, 0x2752, 0x0000, 0x0000, 0x0000, 0x2756, 0x0000, + 0x2758, 0x2759, 0x275a, 0x275b, 0x275c, 0x275d, 0x275e, 0x0000, + 0x0000, 0x2761, 0x2762, 0x2763, 0x2764, 0x2765, 0x2766, 0x2767, + 0x2768, 0x2769, 0x276a, 0x276b, 0x276c, 0x276d, 0x276e, 0x276f, + 0x2770, 0x2771, 0x2772, 0x2773, 0x2774, 0x2775, 0x2776, 0x2777, + 0x2778, 0x2779, 0x277a, 0x277b, 0x277c, 0x277d, 0x277e, 0x277f, + 0x2780, 0x2781, 0x2782, 0x2783, 0x2784, 0x2785, 0x2786, 0x2787, + 0x2788, 0x2789, 0x278a, 0x278b, 0x278c, 0x278d, 0x278e, 0x278f, + 0x2790, 0x2791, 0x2792, 0x2793, 0x2794, 0x0000, 0x0000, 0x0000, + 0x2798, 0x2799, 0x279a, 0x279b, 0x279c, 0x279d, 0x279e, 0x279f, + 0x27a0, 0x27a1, 0x27a2, 0x27a3, 0x27a4, 0x27a5, 0x27a6, 0x27a7, + 0x27a8, 0x27a9, 0x27aa, 0x27ab, 0x27ac, 0x27ad, 0x27ae, 0x27af, + 0x0000, 0x27b1, 0x27b2, 0x27b3, 0x27b4, 0x27b5, 0x27b6, 0x27b7, + 0x27b8, 0x27b9, 0x27ba, 0x27bb, 0x27bc, 0x27bd, 0x27be, 0x0000, + 0x27c0, 0x27c1, 0x27c2, 0x27c3, 0x27c4, 0x27c5, 0x27c6, 0x27c7, + 0x27c8, 0x27c9, 0x27ca, 0x0000, 0x27cc, 0x0000, 0x0000, 0x0000, + 0x27d0, 0x27d1, 0x27d2, 0x27d3, 0x27d4, 0x27d5, 0x27d6, 0x27d7, + 0x27d8, 0x27d9, 0x27da, 0x27db, 0x27dc, 0x27dd, 0x27de, 0x27df, + 0x27e0, 0x27e1, 0x27e2, 0x27e3, 0x27e4, 0x27e5, 0x27e6, 0x27e7, + 0x27e8, 0x27e9, 0x27ea, 0x27eb, 0x27ec, 0x27ed, 0x27ee, 0x27ef, + 0x27f0, 0x27f1, 0x27f2, 0x27f3, 0x27f4, 0x27f5, 0x27f6, 0x27f7, + 0x27f8, 0x27f9, 0x27fa, 0x27fb, 0x27fc, 0x27fd, 0x27fe, 0x27ff, + 0x2800, 0x2801, 0x2802, 0x2803, 0x2804, 0x2805, 0x2806, 0x2807, + 0x2808, 0x2809, 0x280a, 0x280b, 0x280c, 0x280d, 0x280e, 0x280f, + 0x2810, 0x2811, 0x2812, 0x2813, 0x2814, 0x2815, 0x2816, 0x2817, + 0x2818, 0x2819, 0x281a, 0x281b, 0x281c, 0x281d, 0x281e, 0x281f, + 0x2820, 0x2821, 0x2822, 0x2823, 0x2824, 0x2825, 0x2826, 0x2827, + 0x2828, 0x2829, 0x282a, 0x282b, 0x282c, 0x282d, 0x282e, 0x282f, + 0x2830, 0x2831, 0x2832, 0x2833, 0x2834, 0x2835, 0x2836, 0x2837, + 0x2838, 0x2839, 0x283a, 0x283b, 0x283c, 0x283d, 0x283e, 0x283f, + 0x2840, 0x2841, 0x2842, 0x2843, 0x2844, 0x2845, 0x2846, 0x2847, + 0x2848, 0x2849, 0x284a, 0x284b, 0x284c, 0x284d, 0x284e, 0x284f, + 0x2850, 0x2851, 0x2852, 0x2853, 0x2854, 0x2855, 0x2856, 0x2857, + 0x2858, 0x2859, 0x285a, 0x285b, 0x285c, 0x285d, 0x285e, 0x285f, + 0x2860, 0x2861, 0x2862, 0x2863, 0x2864, 0x2865, 0x2866, 0x2867, + 0x2868, 0x2869, 0x286a, 0x286b, 0x286c, 0x286d, 0x286e, 0x286f, + 0x2870, 0x2871, 0x2872, 0x2873, 0x2874, 0x2875, 0x2876, 0x2877, + 0x2878, 0x2879, 0x287a, 0x287b, 0x287c, 0x287d, 0x287e, 0x287f, + 0x2880, 0x2881, 0x2882, 0x2883, 0x2884, 0x2885, 0x2886, 0x2887, + 0x2888, 0x2889, 0x288a, 0x288b, 0x288c, 0x288d, 0x288e, 0x288f, + 0x2890, 0x2891, 0x2892, 0x2893, 0x2894, 0x2895, 0x2896, 0x2897, + 0x2898, 0x2899, 0x289a, 0x289b, 0x289c, 0x289d, 0x289e, 0x289f, + 0x28a0, 0x28a1, 0x28a2, 0x28a3, 0x28a4, 0x28a5, 0x28a6, 0x28a7, + 0x28a8, 0x28a9, 0x28aa, 0x28ab, 0x28ac, 0x28ad, 0x28ae, 0x28af, + 0x28b0, 0x28b1, 0x28b2, 0x28b3, 0x28b4, 0x28b5, 0x28b6, 0x28b7, + 0x28b8, 0x28b9, 0x28ba, 0x28bb, 0x28bc, 0x28bd, 0x28be, 0x28bf, + 0x28c0, 0x28c1, 0x28c2, 0x28c3, 0x28c4, 0x28c5, 0x28c6, 0x28c7, + 0x28c8, 0x28c9, 0x28ca, 0x28cb, 0x28cc, 0x28cd, 0x28ce, 0x28cf, + 0x28d0, 0x28d1, 0x28d2, 0x28d3, 0x28d4, 0x28d5, 0x28d6, 0x28d7, + 0x28d8, 0x28d9, 0x28da, 0x28db, 0x28dc, 0x28dd, 0x28de, 0x28df, + 0x28e0, 0x28e1, 0x28e2, 0x28e3, 0x28e4, 0x28e5, 0x28e6, 0x28e7, + 0x28e8, 0x28e9, 0x28ea, 0x28eb, 0x28ec, 0x28ed, 0x28ee, 0x28ef, + 0x28f0, 0x28f1, 0x28f2, 0x28f3, 0x28f4, 0x28f5, 0x28f6, 0x28f7, + 0x28f8, 0x28f9, 0x28fa, 0x28fb, 0x28fc, 0x28fd, 0x28fe, 0x28ff, + 0x2900, 0x2901, 0x2902, 0x2903, 0x2904, 0x2905, 0x2906, 0x2907, + 0x2908, 0x2909, 0x290a, 0x290b, 0x290c, 0x290d, 0x290e, 0x290f, + 0x2910, 0x2911, 0x2912, 0x2913, 0x2914, 0x2915, 0x2916, 0x2917, + 0x2918, 0x2919, 0x291a, 0x291b, 0x291c, 0x291d, 0x291e, 0x291f, + 0x2920, 0x2921, 0x2922, 0x2923, 0x2924, 0x2925, 0x2926, 0x2927, + 0x2928, 0x2929, 0x292a, 0x292b, 0x292c, 0x292d, 0x292e, 0x292f, + 0x2930, 0x2931, 0x2932, 0x2933, 0x2934, 0x2935, 0x2936, 0x2937, + 0x2938, 0x2939, 0x293a, 0x293b, 0x293c, 0x293d, 0x293e, 0x293f, + 0x2940, 0x2941, 0x2942, 0x2943, 0x2944, 0x2945, 0x2946, 0x2947, + 0x2948, 0x2949, 0x294a, 0x294b, 0x294c, 0x294d, 0x294e, 0x294f, + 0x2950, 0x2951, 0x2952, 0x2953, 0x2954, 0x2955, 0x2956, 0x2957, + 0x2958, 0x2959, 0x295a, 0x295b, 0x295c, 0x295d, 0x295e, 0x295f, + 0x2960, 0x2961, 0x2962, 0x2963, 0x2964, 0x2965, 0x2966, 0x2967, + 0x2968, 0x2969, 0x296a, 0x296b, 0x296c, 0x296d, 0x296e, 0x296f, + 0x2970, 0x2971, 0x2972, 0x2973, 0x2974, 0x2975, 0x2976, 0x2977, + 0x2978, 0x2979, 0x297a, 0x297b, 0x297c, 0x297d, 0x297e, 0x297f, + 0x2980, 0x2981, 0x2982, 0x2983, 0x2984, 0x2985, 0x2986, 0x2987, + 0x2988, 0x2989, 0x298a, 0x298b, 0x298c, 0x298d, 0x298e, 0x298f, + 0x2990, 0x2991, 0x2992, 0x2993, 0x2994, 0x2995, 0x2996, 0x2997, + 0x2998, 0x2999, 0x299a, 0x299b, 0x299c, 0x299d, 0x299e, 0x299f, + 0x29a0, 0x29a1, 0x29a2, 0x29a3, 0x29a4, 0x29a5, 0x29a6, 0x29a7, + 0x29a8, 0x29a9, 0x29aa, 0x29ab, 0x29ac, 0x29ad, 0x29ae, 0x29af, + 0x29b0, 0x29b1, 0x29b2, 0x29b3, 0x29b4, 0x29b5, 0x29b6, 0x29b7, + 0x29b8, 0x29b9, 0x29ba, 0x29bb, 0x29bc, 0x29bd, 0x29be, 0x29bf, + 0x29c0, 0x29c1, 0x29c2, 0x29c3, 0x29c4, 0x29c5, 0x29c6, 0x29c7, + 0x29c8, 0x29c9, 0x29ca, 0x29cb, 0x29cc, 0x29cd, 0x29ce, 0x29cf, + 0x29d0, 0x29d1, 0x29d2, 0x29d3, 0x29d4, 0x29d5, 0x29d6, 0x29d7, + 0x29d8, 0x29d9, 0x29da, 0x29db, 0x29dc, 0x29dd, 0x29de, 0x29df, + 0x29e0, 0x29e1, 0x29e2, 0x29e3, 0x29e4, 0x29e5, 0x29e6, 0x29e7, + 0x29e8, 0x29e9, 0x29ea, 0x29eb, 0x29ec, 0x29ed, 0x29ee, 0x29ef, + 0x29f0, 0x29f1, 0x29f2, 0x29f3, 0x29f4, 0x29f5, 0x29f6, 0x29f7, + 0x29f8, 0x29f9, 0x29fa, 0x29fb, 0x29fc, 0x29fd, 0x29fe, 0x29ff, + 0x2a00, 0x2a01, 0x2a02, 0x2a03, 0x2a04, 0x2a05, 0x2a06, 0x2a07, + 0x2a08, 0x2a09, 0x2a0a, 0x2a0b, 0x2a0c, 0x2a0d, 0x2a0e, 0x2a0f, + 0x2a10, 0x2a11, 0x2a12, 0x2a13, 0x2a14, 0x2a15, 0x2a16, 0x2a17, + 0x2a18, 0x2a19, 0x2a1a, 0x2a1b, 0x2a1c, 0x2a1d, 0x2a1e, 0x2a1f, + 0x2a20, 0x2a21, 0x2a22, 0x2a23, 0x2a24, 0x2a25, 0x2a26, 0x2a27, + 0x2a28, 0x2a29, 0x2a2a, 0x2a2b, 0x2a2c, 0x2a2d, 0x2a2e, 0x2a2f, + 0x2a30, 0x2a31, 0x2a32, 0x2a33, 0x2a34, 0x2a35, 0x2a36, 0x2a37, + 0x2a38, 0x2a39, 0x2a3a, 0x2a3b, 0x2a3c, 0x2a3d, 0x2a3e, 0x2a3f, + 0x2a40, 0x2a41, 0x2a42, 0x2a43, 0x2a44, 0x2a45, 0x2a46, 0x2a47, + 0x2a48, 0x2a49, 0x2a4a, 0x2a4b, 0x2a4c, 0x2a4d, 0x2a4e, 0x2a4f, + 0x2a50, 0x2a51, 0x2a52, 0x2a53, 0x2a54, 0x2a55, 0x2a56, 0x2a57, + 0x2a58, 0x2a59, 0x2a5a, 0x2a5b, 0x2a5c, 0x2a5d, 0x2a5e, 0x2a5f, + 0x2a60, 0x2a61, 0x2a62, 0x2a63, 0x2a64, 0x2a65, 0x2a66, 0x2a67, + 0x2a68, 0x2a69, 0x2a6a, 0x2a6b, 0x2a6c, 0x2a6d, 0x2a6e, 0x2a6f, + 0x2a70, 0x2a71, 0x2a72, 0x2a73, 0x2a74, 0x2a75, 0x2a76, 0x2a77, + 0x2a78, 0x2a79, 0x2a7a, 0x2a7b, 0x2a7c, 0x2a7d, 0x2a7e, 0x2a7f, + 0x2a80, 0x2a81, 0x2a82, 0x2a83, 0x2a84, 0x2a85, 0x2a86, 0x2a87, + 0x2a88, 0x2a89, 0x2a8a, 0x2a8b, 0x2a8c, 0x2a8d, 0x2a8e, 0x2a8f, + 0x2a90, 0x2a91, 0x2a92, 0x2a93, 0x2a94, 0x2a95, 0x2a96, 0x2a97, + 0x2a98, 0x2a99, 0x2a9a, 0x2a9b, 0x2a9c, 0x2a9d, 0x2a9e, 0x2a9f, + 0x2aa0, 0x2aa1, 0x2aa2, 0x2aa3, 0x2aa4, 0x2aa5, 0x2aa6, 0x2aa7, + 0x2aa8, 0x2aa9, 0x2aaa, 0x2aab, 0x2aac, 0x2aad, 0x2aae, 0x2aaf, + 0x2ab0, 0x2ab1, 0x2ab2, 0x2ab3, 0x2ab4, 0x2ab5, 0x2ab6, 0x2ab7, + 0x2ab8, 0x2ab9, 0x2aba, 0x2abb, 0x2abc, 0x2abd, 0x2abe, 0x2abf, + 0x2ac0, 0x2ac1, 0x2ac2, 0x2ac3, 0x2ac4, 0x2ac5, 0x2ac6, 0x2ac7, + 0x2ac8, 0x2ac9, 0x2aca, 0x2acb, 0x2acc, 0x2acd, 0x2ace, 0x2acf, + 0x2ad0, 0x2ad1, 0x2ad2, 0x2ad3, 0x2ad4, 0x2ad5, 0x2ad6, 0x2ad7, + 0x2ad8, 0x2ad9, 0x2ada, 0x2adb, 0x2adc, 0x2add, 0x2ade, 0x2adf, + 0x2ae0, 0x2ae1, 0x2ae2, 0x2ae3, 0x2ae4, 0x2ae5, 0x2ae6, 0x2ae7, + 0x2ae8, 0x2ae9, 0x2aea, 0x2aeb, 0x2aec, 0x2aed, 0x2aee, 0x2aef, + 0x2af0, 0x2af1, 0x2af2, 0x2af3, 0x2af4, 0x2af5, 0x2af6, 0x2af7, + 0x2af8, 0x2af9, 0x2afa, 0x2afb, 0x2afc, 0x2afd, 0x2afe, 0x2aff, + 0x2b00, 0x2b01, 0x2b02, 0x2b03, 0x2b04, 0x2b05, 0x2b06, 0x2b07, + 0x2b08, 0x2b09, 0x2b0a, 0x2b0b, 0x2b0c, 0x2b0d, 0x2b0e, 0x2b0f, + 0x2b10, 0x2b11, 0x2b12, 0x2b13, 0x2b14, 0x2b15, 0x2b16, 0x2b17, + 0x2b18, 0x2b19, 0x2b1a, 0x2b1b, 0x2b1c, 0x2b1d, 0x2b1e, 0x2b1f, + 0x2b20, 0x2b21, 0x2b22, 0x2b23, 0x2b24, 0x2b25, 0x2b26, 0x2b27, + 0x2b28, 0x2b29, 0x2b2a, 0x2b2b, 0x2b2c, 0x2b2d, 0x2b2e, 0x2b2f, + 0x2b30, 0x2b31, 0x2b32, 0x2b33, 0x2b34, 0x2b35, 0x2b36, 0x2b37, + 0x2b38, 0x2b39, 0x2b3a, 0x2b3b, 0x2b3c, 0x2b3d, 0x2b3e, 0x2b3f, + 0x2b40, 0x2b41, 0x2b42, 0x2b43, 0x2b44, 0x2b45, 0x2b46, 0x2b47, + 0x2b48, 0x2b49, 0x2b4a, 0x2b4b, 0x2b4c, 0x0000, 0x0000, 0x0000, + 0x2b50, 0x2b51, 0x2b52, 0x2b53, 0x2b54, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x2c30, 0x2c31, 0x2c32, 0x2c33, 0x2c34, 0x2c35, 0x2c36, 0x2c37, + 0x2c38, 0x2c39, 0x2c3a, 0x2c3b, 0x2c3c, 0x2c3d, 0x2c3e, 0x2c3f, + 0x2c40, 0x2c41, 0x2c42, 0x2c43, 0x2c44, 0x2c45, 0x2c46, 0x2c47, + 0x2c48, 0x2c49, 0x2c4a, 0x2c4b, 0x2c4c, 0x2c4d, 0x2c4e, 0x2c4f, + 0x2c50, 0x2c51, 0x2c52, 0x2c53, 0x2c54, 0x2c55, 0x2c56, 0x2c57, + 0x2c58, 0x2c59, 0x2c5a, 0x2c5b, 0x2c5c, 0x2c5d, 0x2c5e, 0x0000, + 0x2c30, 0x2c31, 0x2c32, 0x2c33, 0x2c34, 0x2c35, 0x2c36, 0x2c37, + 0x2c38, 0x2c39, 0x2c3a, 0x2c3b, 0x2c3c, 0x2c3d, 0x2c3e, 0x2c3f, + 0x2c40, 0x2c41, 0x2c42, 0x2c43, 0x2c44, 0x2c45, 0x2c46, 0x2c47, + 0x2c48, 0x2c49, 0x2c4a, 0x2c4b, 0x2c4c, 0x2c4d, 0x2c4e, 0x2c4f, + 0x2c50, 0x2c51, 0x2c52, 0x2c53, 0x2c54, 0x2c55, 0x2c56, 0x2c57, + 0x2c58, 0x2c59, 0x2c5a, 0x2c5b, 0x2c5c, 0x2c5d, 0x2c5e, 0x0000, + 0x2c61, 0x2c61, 0x026b, 0x1d7d, 0x027d, 0x2c65, 0x2c66, 0x2c68, + 0x2c68, 0x2c6a, 0x2c6a, 0x2c6c, 0x2c6c, 0x0251, 0x0271, 0x0250, + 0x0000, 0x2c71, 0x2c73, 0x2c73, 0x2c74, 0x2c76, 0x2c76, 0x2c77, + 0x2c78, 0x2c79, 0x2c7a, 0x2c7b, 0x2c7c, 0x2c7d, 0x0000, 0x0000, + 0x2c81, 0x2c81, 0x2c83, 0x2c83, 0x2c85, 0x2c85, 0x2c87, 0x2c87, + 0x2c89, 0x2c89, 0x2c8b, 0x2c8b, 0x2c8d, 0x2c8d, 0x2c8f, 0x2c8f, + 0x2c91, 0x2c91, 0x2c93, 0x2c93, 0x2c95, 0x2c95, 0x2c97, 0x2c97, + 0x2c99, 0x2c99, 0x2c9b, 0x2c9b, 0x2c9d, 0x2c9d, 0x2c9f, 0x2c9f, + 0x2ca1, 0x2ca1, 0x2ca3, 0x2ca3, 0x2ca5, 0x2ca5, 0x2ca7, 0x2ca7, + 0x2ca9, 0x2ca9, 0x2cab, 0x2cab, 0x2cad, 0x2cad, 0x2caf, 0x2caf, + 0x2cb1, 0x2cb1, 0x2cb3, 0x2cb3, 0x2cb5, 0x2cb5, 0x2cb7, 0x2cb7, + 0x2cb9, 0x2cb9, 0x2cbb, 0x2cbb, 0x2cbd, 0x2cbd, 0x2cbf, 0x2cbf, + 0x2cc1, 0x2cc1, 0x2cc3, 0x2cc3, 0x2cc5, 0x2cc5, 0x2cc7, 0x2cc7, + 0x2cc9, 0x2cc9, 0x2ccb, 0x2ccb, 0x2ccd, 0x2ccd, 0x2ccf, 0x2ccf, + 0x2cd1, 0x2cd1, 0x2cd3, 0x2cd3, 0x2cd5, 0x2cd5, 0x2cd7, 0x2cd7, + 0x2cd9, 0x2cd9, 0x2cdb, 0x2cdb, 0x2cdd, 0x2cdd, 0x2cdf, 0x2cdf, + 0x2ce1, 0x2ce1, 0x2ce3, 0x2ce3, 0x2ce4, 0x2ce5, 0x2ce6, 0x2ce7, + 0x2ce8, 0x2ce9, 0x2cea, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x2cf9, 0x2cfa, 0x2cfb, 0x2cfc, 0x2cfd, 0x2cfe, 0x2cff, + 0x2d00, 0x2d01, 0x2d02, 0x2d03, 0x2d04, 0x2d05, 0x2d06, 0x2d07, + 0x2d08, 0x2d09, 0x2d0a, 0x2d0b, 0x2d0c, 0x2d0d, 0x2d0e, 0x2d0f, + 0x2d10, 0x2d11, 0x2d12, 0x2d13, 0x2d14, 0x2d15, 0x2d16, 0x2d17, + 0x2d18, 0x2d19, 0x2d1a, 0x2d1b, 0x2d1c, 0x2d1d, 0x2d1e, 0x2d1f, + 0x2d20, 0x2d21, 0x2d22, 0x2d23, 0x2d24, 0x2d25, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x2d30, 0x2d31, 0x2d32, 0x2d33, 0x2d34, 0x2d35, 0x2d36, 0x2d37, + 0x2d38, 0x2d39, 0x2d3a, 0x2d3b, 0x2d3c, 0x2d3d, 0x2d3e, 0x2d3f, + 0x2d40, 0x2d41, 0x2d42, 0x2d43, 0x2d44, 0x2d45, 0x2d46, 0x2d47, + 0x2d48, 0x2d49, 0x2d4a, 0x2d4b, 0x2d4c, 0x2d4d, 0x2d4e, 0x2d4f, + 0x2d50, 0x2d51, 0x2d52, 0x2d53, 0x2d54, 0x2d55, 0x2d56, 0x2d57, + 0x2d58, 0x2d59, 0x2d5a, 0x2d5b, 0x2d5c, 0x2d5d, 0x2d5e, 0x2d5f, + 0x2d60, 0x2d61, 0x2d62, 0x2d63, 0x2d64, 0x2d65, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2d6f, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x2d80, 0x2d81, 0x2d82, 0x2d83, 0x2d84, 0x2d85, 0x2d86, 0x2d87, + 0x2d88, 0x2d89, 0x2d8a, 0x2d8b, 0x2d8c, 0x2d8d, 0x2d8e, 0x2d8f, + 0x2d90, 0x2d91, 0x2d92, 0x2d93, 0x2d94, 0x2d95, 0x2d96, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x2da0, 0x2da1, 0x2da2, 0x2da3, 0x2da4, 0x2da5, 0x2da6, 0x0000, + 0x2da8, 0x2da9, 0x2daa, 0x2dab, 0x2dac, 0x2dad, 0x2dae, 0x0000, + 0x2db0, 0x2db1, 0x2db2, 0x2db3, 0x2db4, 0x2db5, 0x2db6, 0x0000, + 0x2db8, 0x2db9, 0x2dba, 0x2dbb, 0x2dbc, 0x2dbd, 0x2dbe, 0x0000, + 0x2dc0, 0x2dc1, 0x2dc2, 0x2dc3, 0x2dc4, 0x2dc5, 0x2dc6, 0x0000, + 0x2dc8, 0x2dc9, 0x2dca, 0x2dcb, 0x2dcc, 0x2dcd, 0x2dce, 0x0000, + 0x2dd0, 0x2dd1, 0x2dd2, 0x2dd3, 0x2dd4, 0x2dd5, 0x2dd6, 0x0000, + 0x2dd8, 0x2dd9, 0x2dda, 0x2ddb, 0x2ddc, 0x2ddd, 0x2dde, 0x0000, + 0x2de0, 0x2de1, 0x2de2, 0x2de3, 0x2de4, 0x2de5, 0x2de6, 0x2de7, + 0x2de8, 0x2de9, 0x2dea, 0x2deb, 0x2dec, 0x2ded, 0x2dee, 0x2def, + 0x2df0, 0x2df1, 0x2df2, 0x2df3, 0x2df4, 0x2df5, 0x2df6, 0x2df7, + 0x2df8, 0x2df9, 0x2dfa, 0x2dfb, 0x2dfc, 0x2dfd, 0x2dfe, 0x2dff, + 0x2e00, 0x2e01, 0x2e02, 0x2e03, 0x2e04, 0x2e05, 0x2e06, 0x2e07, + 0x2e08, 0x2e09, 0x2e0a, 0x2e0b, 0x2e0c, 0x2e0d, 0x2e0e, 0x2e0f, + 0x2e10, 0x2e11, 0x2e12, 0x2e13, 0x2e14, 0x2e15, 0x2e16, 0x2e17, + 0x2e18, 0x2e19, 0x2e1a, 0x2e1b, 0x2e1c, 0x2e1d, 0x2e1e, 0x2e1f, + 0x2e20, 0x2e21, 0x2e22, 0x2e23, 0x2e24, 0x2e25, 0x2e26, 0x2e27, + 0x2e28, 0x2e29, 0x2e2a, 0x2e2b, 0x2e2c, 0x2e2d, 0x2e2e, 0x2e2f, + 0x2e30, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x2e80, 0x2e81, 0x2e82, 0x2e83, 0x2e84, 0x2e85, 0x2e86, 0x2e87, + 0x2e88, 0x2e89, 0x2e8a, 0x2e8b, 0x2e8c, 0x2e8d, 0x2e8e, 0x2e8f, + 0x2e90, 0x2e91, 0x2e92, 0x2e93, 0x2e94, 0x2e95, 0x2e96, 0x2e97, + 0x2e98, 0x2e99, 0x0000, 0x2e9b, 0x2e9c, 0x2e9d, 0x2e9e, 0x2e9f, + 0x2ea0, 0x2ea1, 0x2ea2, 0x2ea3, 0x2ea4, 0x2ea5, 0x2ea6, 0x2ea7, + 0x2ea8, 0x2ea9, 0x2eaa, 0x2eab, 0x2eac, 0x2ead, 0x2eae, 0x2eaf, + 0x2eb0, 0x2eb1, 0x2eb2, 0x2eb3, 0x2eb4, 0x2eb5, 0x2eb6, 0x2eb7, + 0x2eb8, 0x2eb9, 0x2eba, 0x2ebb, 0x2ebc, 0x2ebd, 0x2ebe, 0x2ebf, + 0x2ec0, 0x2ec1, 0x2ec2, 0x2ec3, 0x2ec4, 0x2ec5, 0x2ec6, 0x2ec7, + 0x2ec8, 0x2ec9, 0x2eca, 0x2ecb, 0x2ecc, 0x2ecd, 0x2ece, 0x2ecf, + 0x2ed0, 0x2ed1, 0x2ed2, 0x2ed3, 0x2ed4, 0x2ed5, 0x2ed6, 0x2ed7, + 0x2ed8, 0x2ed9, 0x2eda, 0x2edb, 0x2edc, 0x2edd, 0x2ede, 0x2edf, + 0x2ee0, 0x2ee1, 0x2ee2, 0x2ee3, 0x2ee4, 0x2ee5, 0x2ee6, 0x2ee7, + 0x2ee8, 0x2ee9, 0x2eea, 0x2eeb, 0x2eec, 0x2eed, 0x2eee, 0x2eef, + 0x2ef0, 0x2ef1, 0x2ef2, 0x2ef3, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x2f00, 0x2f01, 0x2f02, 0x2f03, 0x2f04, 0x2f05, 0x2f06, 0x2f07, + 0x2f08, 0x2f09, 0x2f0a, 0x2f0b, 0x2f0c, 0x2f0d, 0x2f0e, 0x2f0f, + 0x2f10, 0x2f11, 0x2f12, 0x2f13, 0x2f14, 0x2f15, 0x2f16, 0x2f17, + 0x2f18, 0x2f19, 0x2f1a, 0x2f1b, 0x2f1c, 0x2f1d, 0x2f1e, 0x2f1f, + 0x2f20, 0x2f21, 0x2f22, 0x2f23, 0x2f24, 0x2f25, 0x2f26, 0x2f27, + 0x2f28, 0x2f29, 0x2f2a, 0x2f2b, 0x2f2c, 0x2f2d, 0x2f2e, 0x2f2f, + 0x2f30, 0x2f31, 0x2f32, 0x2f33, 0x2f34, 0x2f35, 0x2f36, 0x2f37, + 0x2f38, 0x2f39, 0x2f3a, 0x2f3b, 0x2f3c, 0x2f3d, 0x2f3e, 0x2f3f, + 0x2f40, 0x2f41, 0x2f42, 0x2f43, 0x2f44, 0x2f45, 0x2f46, 0x2f47, + 0x2f48, 0x2f49, 0x2f4a, 0x2f4b, 0x2f4c, 0x2f4d, 0x2f4e, 0x2f4f, + 0x2f50, 0x2f51, 0x2f52, 0x2f53, 0x2f54, 0x2f55, 0x2f56, 0x2f57, + 0x2f58, 0x2f59, 0x2f5a, 0x2f5b, 0x2f5c, 0x2f5d, 0x2f5e, 0x2f5f, + 0x2f60, 0x2f61, 0x2f62, 0x2f63, 0x2f64, 0x2f65, 0x2f66, 0x2f67, + 0x2f68, 0x2f69, 0x2f6a, 0x2f6b, 0x2f6c, 0x2f6d, 0x2f6e, 0x2f6f, + 0x2f70, 0x2f71, 0x2f72, 0x2f73, 0x2f74, 0x2f75, 0x2f76, 0x2f77, + 0x2f78, 0x2f79, 0x2f7a, 0x2f7b, 0x2f7c, 0x2f7d, 0x2f7e, 0x2f7f, + 0x2f80, 0x2f81, 0x2f82, 0x2f83, 0x2f84, 0x2f85, 0x2f86, 0x2f87, + 0x2f88, 0x2f89, 0x2f8a, 0x2f8b, 0x2f8c, 0x2f8d, 0x2f8e, 0x2f8f, + 0x2f90, 0x2f91, 0x2f92, 0x2f93, 0x2f94, 0x2f95, 0x2f96, 0x2f97, + 0x2f98, 0x2f99, 0x2f9a, 0x2f9b, 0x2f9c, 0x2f9d, 0x2f9e, 0x2f9f, + 0x2fa0, 0x2fa1, 0x2fa2, 0x2fa3, 0x2fa4, 0x2fa5, 0x2fa6, 0x2fa7, + 0x2fa8, 0x2fa9, 0x2faa, 0x2fab, 0x2fac, 0x2fad, 0x2fae, 0x2faf, + 0x2fb0, 0x2fb1, 0x2fb2, 0x2fb3, 0x2fb4, 0x2fb5, 0x2fb6, 0x2fb7, + 0x2fb8, 0x2fb9, 0x2fba, 0x2fbb, 0x2fbc, 0x2fbd, 0x2fbe, 0x2fbf, + 0x2fc0, 0x2fc1, 0x2fc2, 0x2fc3, 0x2fc4, 0x2fc5, 0x2fc6, 0x2fc7, + 0x2fc8, 0x2fc9, 0x2fca, 0x2fcb, 0x2fcc, 0x2fcd, 0x2fce, 0x2fcf, + 0x2fd0, 0x2fd1, 0x2fd2, 0x2fd3, 0x2fd4, 0x2fd5, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x2ff0, 0x2ff1, 0x2ff2, 0x2ff3, 0x2ff4, 0x2ff5, 0x2ff6, 0x2ff7, + 0x2ff8, 0x2ff9, 0x2ffa, 0x2ffb, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3000, 0x3001, 0x3002, 0x3003, 0x3004, 0x3005, 0x3006, 0x3007, + 0x3008, 0x3009, 0x300a, 0x300b, 0x300c, 0x300d, 0x300e, 0x300f, + 0x3010, 0x3011, 0x3012, 0x3013, 0x3014, 0x3015, 0x3016, 0x3017, + 0x3018, 0x3019, 0x301a, 0x301b, 0x301c, 0x301d, 0x301e, 0x301f, + 0x3020, 0x3021, 0x3022, 0x3023, 0x3024, 0x3025, 0x3026, 0x3027, + 0x3028, 0x3029, 0x302a, 0x302b, 0x302c, 0x302d, 0x302e, 0x302f, + 0x3030, 0x3031, 0x3032, 0x3033, 0x3034, 0x3035, 0x3036, 0x3037, + 0x3038, 0x3039, 0x303a, 0x303b, 0x303c, 0x303d, 0x303e, 0x303f, + 0x0000, 0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046, 0x3047, + 0x3048, 0x3049, 0x304a, 0x304b, 0x304c, 0x304d, 0x304e, 0x304f, + 0x3050, 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056, 0x3057, + 0x3058, 0x3059, 0x305a, 0x305b, 0x305c, 0x305d, 0x305e, 0x305f, + 0x3060, 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067, + 0x3068, 0x3069, 0x306a, 0x306b, 0x306c, 0x306d, 0x306e, 0x306f, + 0x3070, 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, 0x3077, + 0x3078, 0x3079, 0x307a, 0x307b, 0x307c, 0x307d, 0x307e, 0x307f, + 0x3080, 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086, 0x3087, + 0x3088, 0x3089, 0x308a, 0x308b, 0x308c, 0x308d, 0x308e, 0x308f, + 0x3090, 0x3091, 0x3092, 0x3093, 0x3094, 0x3095, 0x3096, 0x0000, + 0x0000, 0x3099, 0x309a, 0x309b, 0x309c, 0x309d, 0x309e, 0x309f, + 0x30a0, 0x30a1, 0x30a2, 0x30a3, 0x30a4, 0x30a5, 0x30a6, 0x30a7, + 0x30a8, 0x30a9, 0x30aa, 0x30ab, 0x30ac, 0x30ad, 0x30ae, 0x30af, + 0x30b0, 0x30b1, 0x30b2, 0x30b3, 0x30b4, 0x30b5, 0x30b6, 0x30b7, + 0x30b8, 0x30b9, 0x30ba, 0x30bb, 0x30bc, 0x30bd, 0x30be, 0x30bf, + 0x30c0, 0x30c1, 0x30c2, 0x30c3, 0x30c4, 0x30c5, 0x30c6, 0x30c7, + 0x30c8, 0x30c9, 0x30ca, 0x30cb, 0x30cc, 0x30cd, 0x30ce, 0x30cf, + 0x30d0, 0x30d1, 0x30d2, 0x30d3, 0x30d4, 0x30d5, 0x30d6, 0x30d7, + 0x30d8, 0x30d9, 0x30da, 0x30db, 0x30dc, 0x30dd, 0x30de, 0x30df, + 0x30e0, 0x30e1, 0x30e2, 0x30e3, 0x30e4, 0x30e5, 0x30e6, 0x30e7, + 0x30e8, 0x30e9, 0x30ea, 0x30eb, 0x30ec, 0x30ed, 0x30ee, 0x30ef, + 0x30f0, 0x30f1, 0x30f2, 0x30f3, 0x30f4, 0x30f5, 0x30f6, 0x30f7, + 0x30f8, 0x30f9, 0x30fa, 0x30fb, 0x30fc, 0x30fd, 0x30fe, 0x30ff, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3105, 0x3106, 0x3107, + 0x3108, 0x3109, 0x310a, 0x310b, 0x310c, 0x310d, 0x310e, 0x310f, + 0x3110, 0x3111, 0x3112, 0x3113, 0x3114, 0x3115, 0x3116, 0x3117, + 0x3118, 0x3119, 0x311a, 0x311b, 0x311c, 0x311d, 0x311e, 0x311f, + 0x3120, 0x3121, 0x3122, 0x3123, 0x3124, 0x3125, 0x3126, 0x3127, + 0x3128, 0x3129, 0x312a, 0x312b, 0x312c, 0x312d, 0x0000, 0x0000, + 0x0000, 0x3131, 0x3132, 0x3133, 0x3134, 0x3135, 0x3136, 0x3137, + 0x3138, 0x3139, 0x313a, 0x313b, 0x313c, 0x313d, 0x313e, 0x313f, + 0x3140, 0x3141, 0x3142, 0x3143, 0x3144, 0x3145, 0x3146, 0x3147, + 0x3148, 0x3149, 0x314a, 0x314b, 0x314c, 0x314d, 0x314e, 0x314f, + 0x3150, 0x3151, 0x3152, 0x3153, 0x3154, 0x3155, 0x3156, 0x3157, + 0x3158, 0x3159, 0x315a, 0x315b, 0x315c, 0x315d, 0x315e, 0x315f, + 0x3160, 0x3161, 0x3162, 0x3163, 0x3164, 0x3165, 0x3166, 0x3167, + 0x3168, 0x3169, 0x316a, 0x316b, 0x316c, 0x316d, 0x316e, 0x316f, + 0x3170, 0x3171, 0x3172, 0x3173, 0x3174, 0x3175, 0x3176, 0x3177, + 0x3178, 0x3179, 0x317a, 0x317b, 0x317c, 0x317d, 0x317e, 0x317f, + 0x3180, 0x3181, 0x3182, 0x3183, 0x3184, 0x3185, 0x3186, 0x3187, + 0x3188, 0x3189, 0x318a, 0x318b, 0x318c, 0x318d, 0x318e, 0x0000, + 0x3190, 0x3191, 0x3192, 0x3193, 0x3194, 0x3195, 0x3196, 0x3197, + 0x3198, 0x3199, 0x319a, 0x319b, 0x319c, 0x319d, 0x319e, 0x319f, + 0x31a0, 0x31a1, 0x31a2, 0x31a3, 0x31a4, 0x31a5, 0x31a6, 0x31a7, + 0x31a8, 0x31a9, 0x31aa, 0x31ab, 0x31ac, 0x31ad, 0x31ae, 0x31af, + 0x31b0, 0x31b1, 0x31b2, 0x31b3, 0x31b4, 0x31b5, 0x31b6, 0x31b7, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x31c0, 0x31c1, 0x31c2, 0x31c3, 0x31c4, 0x31c5, 0x31c6, 0x31c7, + 0x31c8, 0x31c9, 0x31ca, 0x31cb, 0x31cc, 0x31cd, 0x31ce, 0x31cf, + 0x31d0, 0x31d1, 0x31d2, 0x31d3, 0x31d4, 0x31d5, 0x31d6, 0x31d7, + 0x31d8, 0x31d9, 0x31da, 0x31db, 0x31dc, 0x31dd, 0x31de, 0x31df, + 0x31e0, 0x31e1, 0x31e2, 0x31e3, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x31f0, 0x31f1, 0x31f2, 0x31f3, 0x31f4, 0x31f5, 0x31f6, 0x31f7, + 0x31f8, 0x31f9, 0x31fa, 0x31fb, 0x31fc, 0x31fd, 0x31fe, 0x31ff, + 0x3200, 0x3201, 0x3202, 0x3203, 0x3204, 0x3205, 0x3206, 0x3207, + 0x3208, 0x3209, 0x320a, 0x320b, 0x320c, 0x320d, 0x320e, 0x320f, + 0x3210, 0x3211, 0x3212, 0x3213, 0x3214, 0x3215, 0x3216, 0x3217, + 0x3218, 0x3219, 0x321a, 0x321b, 0x321c, 0x321d, 0x321e, 0x0000, + 0x3220, 0x3221, 0x3222, 0x3223, 0x3224, 0x3225, 0x3226, 0x3227, + 0x3228, 0x3229, 0x322a, 0x322b, 0x322c, 0x322d, 0x322e, 0x322f, + 0x3230, 0x3231, 0x3232, 0x3233, 0x3234, 0x3235, 0x3236, 0x3237, + 0x3238, 0x3239, 0x323a, 0x323b, 0x323c, 0x323d, 0x323e, 0x323f, + 0x3240, 0x3241, 0x3242, 0x3243, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3250, 0x3251, 0x3252, 0x3253, 0x3254, 0x3255, 0x3256, 0x3257, + 0x3258, 0x3259, 0x325a, 0x325b, 0x325c, 0x325d, 0x325e, 0x325f, + 0x3260, 0x3261, 0x3262, 0x3263, 0x3264, 0x3265, 0x3266, 0x3267, + 0x3268, 0x3269, 0x326a, 0x326b, 0x326c, 0x326d, 0x326e, 0x326f, + 0x3270, 0x3271, 0x3272, 0x3273, 0x3274, 0x3275, 0x3276, 0x3277, + 0x3278, 0x3279, 0x327a, 0x327b, 0x327c, 0x327d, 0x327e, 0x327f, + 0x3280, 0x3281, 0x3282, 0x3283, 0x3284, 0x3285, 0x3286, 0x3287, + 0x3288, 0x3289, 0x328a, 0x328b, 0x328c, 0x328d, 0x328e, 0x328f, + 0x3290, 0x3291, 0x3292, 0x3293, 0x3294, 0x3295, 0x3296, 0x3297, + 0x3298, 0x3299, 0x329a, 0x329b, 0x329c, 0x329d, 0x329e, 0x329f, + 0x32a0, 0x32a1, 0x32a2, 0x32a3, 0x32a4, 0x32a5, 0x32a6, 0x32a7, + 0x32a8, 0x32a9, 0x32aa, 0x32ab, 0x32ac, 0x32ad, 0x32ae, 0x32af, + 0x32b0, 0x32b1, 0x32b2, 0x32b3, 0x32b4, 0x32b5, 0x32b6, 0x32b7, + 0x32b8, 0x32b9, 0x32ba, 0x32bb, 0x32bc, 0x32bd, 0x32be, 0x32bf, + 0x32c0, 0x32c1, 0x32c2, 0x32c3, 0x32c4, 0x32c5, 0x32c6, 0x32c7, + 0x32c8, 0x32c9, 0x32ca, 0x32cb, 0x32cc, 0x32cd, 0x32ce, 0x32cf, + 0x32d0, 0x32d1, 0x32d2, 0x32d3, 0x32d4, 0x32d5, 0x32d6, 0x32d7, + 0x32d8, 0x32d9, 0x32da, 0x32db, 0x32dc, 0x32dd, 0x32de, 0x32df, + 0x32e0, 0x32e1, 0x32e2, 0x32e3, 0x32e4, 0x32e5, 0x32e6, 0x32e7, + 0x32e8, 0x32e9, 0x32ea, 0x32eb, 0x32ec, 0x32ed, 0x32ee, 0x32ef, + 0x32f0, 0x32f1, 0x32f2, 0x32f3, 0x32f4, 0x32f5, 0x32f6, 0x32f7, + 0x32f8, 0x32f9, 0x32fa, 0x32fb, 0x32fc, 0x32fd, 0x32fe, 0x0000, + 0x3300, 0x3301, 0x3302, 0x3303, 0x3304, 0x3305, 0x3306, 0x3307, + 0x3308, 0x3309, 0x330a, 0x330b, 0x330c, 0x330d, 0x330e, 0x330f, + 0x3310, 0x3311, 0x3312, 0x3313, 0x3314, 0x3315, 0x3316, 0x3317, + 0x3318, 0x3319, 0x331a, 0x331b, 0x331c, 0x331d, 0x331e, 0x331f, + 0x3320, 0x3321, 0x3322, 0x3323, 0x3324, 0x3325, 0x3326, 0x3327, + 0x3328, 0x3329, 0x332a, 0x332b, 0x332c, 0x332d, 0x332e, 0x332f, + 0x3330, 0x3331, 0x3332, 0x3333, 0x3334, 0x3335, 0x3336, 0x3337, + 0x3338, 0x3339, 0x333a, 0x333b, 0x333c, 0x333d, 0x333e, 0x333f, + 0x3340, 0x3341, 0x3342, 0x3343, 0x3344, 0x3345, 0x3346, 0x3347, + 0x3348, 0x3349, 0x334a, 0x334b, 0x334c, 0x334d, 0x334e, 0x334f, + 0x3350, 0x3351, 0x3352, 0x3353, 0x3354, 0x3355, 0x3356, 0x3357, + 0x3358, 0x3359, 0x335a, 0x335b, 0x335c, 0x335d, 0x335e, 0x335f, + 0x3360, 0x3361, 0x3362, 0x3363, 0x3364, 0x3365, 0x3366, 0x3367, + 0x3368, 0x3369, 0x336a, 0x336b, 0x336c, 0x336d, 0x336e, 0x336f, + 0x3370, 0x3371, 0x3372, 0x3373, 0x3374, 0x3375, 0x3376, 0x3377, + 0x3378, 0x3379, 0x337a, 0x337b, 0x337c, 0x337d, 0x337e, 0x337f, + 0x3380, 0x3381, 0x3382, 0x3383, 0x3384, 0x3385, 0x3386, 0x3387, + 0x3388, 0x3389, 0x338a, 0x338b, 0x338c, 0x338d, 0x338e, 0x338f, + 0x3390, 0x3391, 0x3392, 0x3393, 0x3394, 0x3395, 0x3396, 0x3397, + 0x3398, 0x3399, 0x339a, 0x339b, 0x339c, 0x339d, 0x339e, 0x339f, + 0x33a0, 0x33a1, 0x33a2, 0x33a3, 0x33a4, 0x33a5, 0x33a6, 0x33a7, + 0x33a8, 0x33a9, 0x33aa, 0x33ab, 0x33ac, 0x33ad, 0x33ae, 0x33af, + 0x33b0, 0x33b1, 0x33b2, 0x33b3, 0x33b4, 0x33b5, 0x33b6, 0x33b7, + 0x33b8, 0x33b9, 0x33ba, 0x33bb, 0x33bc, 0x33bd, 0x33be, 0x33bf, + 0x33c0, 0x33c1, 0x33c2, 0x33c3, 0x33c4, 0x33c5, 0x33c6, 0x33c7, + 0x33c8, 0x33c9, 0x33ca, 0x33cb, 0x33cc, 0x33cd, 0x33ce, 0x33cf, + 0x33d0, 0x33d1, 0x33d2, 0x33d3, 0x33d4, 0x33d5, 0x33d6, 0x33d7, + 0x33d8, 0x33d9, 0x33da, 0x33db, 0x33dc, 0x33dd, 0x33de, 0x33df, + 0x33e0, 0x33e1, 0x33e2, 0x33e3, 0x33e4, 0x33e5, 0x33e6, 0x33e7, + 0x33e8, 0x33e9, 0x33ea, 0x33eb, 0x33ec, 0x33ed, 0x33ee, 0x33ef, + 0x33f0, 0x33f1, 0x33f2, 0x33f3, 0x33f4, 0x33f5, 0x33f6, 0x33f7, + 0x33f8, 0x33f9, 0x33fa, 0x33fb, 0x33fc, 0x33fd, 0x33fe, 0x33ff, + 0x3400, 0x3401, 0x3402, 0x3403, 0x3404, 0x3405, 0x3406, 0x3407, + 0x3408, 0x3409, 0x340a, 0x340b, 0x340c, 0x340d, 0x340e, 0x340f, + 0x3410, 0x3411, 0x3412, 0x3413, 0x3414, 0x3415, 0x3416, 0x3417, + 0x3418, 0x3419, 0x341a, 0x341b, 0x341c, 0x341d, 0x341e, 0x341f, + 0x3420, 0x3421, 0x3422, 0x3423, 0x3424, 0x3425, 0x3426, 0x3427, + 0x3428, 0x3429, 0x342a, 0x342b, 0x342c, 0x342d, 0x342e, 0x342f, + 0x3430, 0x3431, 0x3432, 0x3433, 0x3434, 0x3435, 0x3436, 0x3437, + 0x3438, 0x3439, 0x343a, 0x343b, 0x343c, 0x343d, 0x343e, 0x343f, + 0x3440, 0x3441, 0x3442, 0x3443, 0x3444, 0x3445, 0x3446, 0x3447, + 0x3448, 0x3449, 0x344a, 0x344b, 0x344c, 0x344d, 0x344e, 0x344f, + 0x3450, 0x3451, 0x3452, 0x3453, 0x3454, 0x3455, 0x3456, 0x3457, + 0x3458, 0x3459, 0x345a, 0x345b, 0x345c, 0x345d, 0x345e, 0x345f, + 0x3460, 0x3461, 0x3462, 0x3463, 0x3464, 0x3465, 0x3466, 0x3467, + 0x3468, 0x3469, 0x346a, 0x346b, 0x346c, 0x346d, 0x346e, 0x346f, + 0x3470, 0x3471, 0x3472, 0x3473, 0x3474, 0x3475, 0x3476, 0x3477, + 0x3478, 0x3479, 0x347a, 0x347b, 0x347c, 0x347d, 0x347e, 0x347f, + 0x3480, 0x3481, 0x3482, 0x3483, 0x3484, 0x3485, 0x3486, 0x3487, + 0x3488, 0x3489, 0x348a, 0x348b, 0x348c, 0x348d, 0x348e, 0x348f, + 0x3490, 0x3491, 0x3492, 0x3493, 0x3494, 0x3495, 0x3496, 0x3497, + 0x3498, 0x3499, 0x349a, 0x349b, 0x349c, 0x349d, 0x349e, 0x349f, + 0x34a0, 0x34a1, 0x34a2, 0x34a3, 0x34a4, 0x34a5, 0x34a6, 0x34a7, + 0x34a8, 0x34a9, 0x34aa, 0x34ab, 0x34ac, 0x34ad, 0x34ae, 0x34af, + 0x34b0, 0x34b1, 0x34b2, 0x34b3, 0x34b4, 0x34b5, 0x34b6, 0x34b7, + 0x34b8, 0x34b9, 0x34ba, 0x34bb, 0x34bc, 0x34bd, 0x34be, 0x34bf, + 0x34c0, 0x34c1, 0x34c2, 0x34c3, 0x34c4, 0x34c5, 0x34c6, 0x34c7, + 0x34c8, 0x34c9, 0x34ca, 0x34cb, 0x34cc, 0x34cd, 0x34ce, 0x34cf, + 0x34d0, 0x34d1, 0x34d2, 0x34d3, 0x34d4, 0x34d5, 0x34d6, 0x34d7, + 0x34d8, 0x34d9, 0x34da, 0x34db, 0x34dc, 0x34dd, 0x34de, 0x34df, + 0x34e0, 0x34e1, 0x34e2, 0x34e3, 0x34e4, 0x34e5, 0x34e6, 0x34e7, + 0x34e8, 0x34e9, 0x34ea, 0x34eb, 0x34ec, 0x34ed, 0x34ee, 0x34ef, + 0x34f0, 0x34f1, 0x34f2, 0x34f3, 0x34f4, 0x34f5, 0x34f6, 0x34f7, + 0x34f8, 0x34f9, 0x34fa, 0x34fb, 0x34fc, 0x34fd, 0x34fe, 0x34ff, + 0x3500, 0x3501, 0x3502, 0x3503, 0x3504, 0x3505, 0x3506, 0x3507, + 0x3508, 0x3509, 0x350a, 0x350b, 0x350c, 0x350d, 0x350e, 0x350f, + 0x3510, 0x3511, 0x3512, 0x3513, 0x3514, 0x3515, 0x3516, 0x3517, + 0x3518, 0x3519, 0x351a, 0x351b, 0x351c, 0x351d, 0x351e, 0x351f, + 0x3520, 0x3521, 0x3522, 0x3523, 0x3524, 0x3525, 0x3526, 0x3527, + 0x3528, 0x3529, 0x352a, 0x352b, 0x352c, 0x352d, 0x352e, 0x352f, + 0x3530, 0x3531, 0x3532, 0x3533, 0x3534, 0x3535, 0x3536, 0x3537, + 0x3538, 0x3539, 0x353a, 0x353b, 0x353c, 0x353d, 0x353e, 0x353f, + 0x3540, 0x3541, 0x3542, 0x3543, 0x3544, 0x3545, 0x3546, 0x3547, + 0x3548, 0x3549, 0x354a, 0x354b, 0x354c, 0x354d, 0x354e, 0x354f, + 0x3550, 0x3551, 0x3552, 0x3553, 0x3554, 0x3555, 0x3556, 0x3557, + 0x3558, 0x3559, 0x355a, 0x355b, 0x355c, 0x355d, 0x355e, 0x355f, + 0x3560, 0x3561, 0x3562, 0x3563, 0x3564, 0x3565, 0x3566, 0x3567, + 0x3568, 0x3569, 0x356a, 0x356b, 0x356c, 0x356d, 0x356e, 0x356f, + 0x3570, 0x3571, 0x3572, 0x3573, 0x3574, 0x3575, 0x3576, 0x3577, + 0x3578, 0x3579, 0x357a, 0x357b, 0x357c, 0x357d, 0x357e, 0x357f, + 0x3580, 0x3581, 0x3582, 0x3583, 0x3584, 0x3585, 0x3586, 0x3587, + 0x3588, 0x3589, 0x358a, 0x358b, 0x358c, 0x358d, 0x358e, 0x358f, + 0x3590, 0x3591, 0x3592, 0x3593, 0x3594, 0x3595, 0x3596, 0x3597, + 0x3598, 0x3599, 0x359a, 0x359b, 0x359c, 0x359d, 0x359e, 0x359f, + 0x35a0, 0x35a1, 0x35a2, 0x35a3, 0x35a4, 0x35a5, 0x35a6, 0x35a7, + 0x35a8, 0x35a9, 0x35aa, 0x35ab, 0x35ac, 0x35ad, 0x35ae, 0x35af, + 0x35b0, 0x35b1, 0x35b2, 0x35b3, 0x35b4, 0x35b5, 0x35b6, 0x35b7, + 0x35b8, 0x35b9, 0x35ba, 0x35bb, 0x35bc, 0x35bd, 0x35be, 0x35bf, + 0x35c0, 0x35c1, 0x35c2, 0x35c3, 0x35c4, 0x35c5, 0x35c6, 0x35c7, + 0x35c8, 0x35c9, 0x35ca, 0x35cb, 0x35cc, 0x35cd, 0x35ce, 0x35cf, + 0x35d0, 0x35d1, 0x35d2, 0x35d3, 0x35d4, 0x35d5, 0x35d6, 0x35d7, + 0x35d8, 0x35d9, 0x35da, 0x35db, 0x35dc, 0x35dd, 0x35de, 0x35df, + 0x35e0, 0x35e1, 0x35e2, 0x35e3, 0x35e4, 0x35e5, 0x35e6, 0x35e7, + 0x35e8, 0x35e9, 0x35ea, 0x35eb, 0x35ec, 0x35ed, 0x35ee, 0x35ef, + 0x35f0, 0x35f1, 0x35f2, 0x35f3, 0x35f4, 0x35f5, 0x35f6, 0x35f7, + 0x35f8, 0x35f9, 0x35fa, 0x35fb, 0x35fc, 0x35fd, 0x35fe, 0x35ff, + 0x3600, 0x3601, 0x3602, 0x3603, 0x3604, 0x3605, 0x3606, 0x3607, + 0x3608, 0x3609, 0x360a, 0x360b, 0x360c, 0x360d, 0x360e, 0x360f, + 0x3610, 0x3611, 0x3612, 0x3613, 0x3614, 0x3615, 0x3616, 0x3617, + 0x3618, 0x3619, 0x361a, 0x361b, 0x361c, 0x361d, 0x361e, 0x361f, + 0x3620, 0x3621, 0x3622, 0x3623, 0x3624, 0x3625, 0x3626, 0x3627, + 0x3628, 0x3629, 0x362a, 0x362b, 0x362c, 0x362d, 0x362e, 0x362f, + 0x3630, 0x3631, 0x3632, 0x3633, 0x3634, 0x3635, 0x3636, 0x3637, + 0x3638, 0x3639, 0x363a, 0x363b, 0x363c, 0x363d, 0x363e, 0x363f, + 0x3640, 0x3641, 0x3642, 0x3643, 0x3644, 0x3645, 0x3646, 0x3647, + 0x3648, 0x3649, 0x364a, 0x364b, 0x364c, 0x364d, 0x364e, 0x364f, + 0x3650, 0x3651, 0x3652, 0x3653, 0x3654, 0x3655, 0x3656, 0x3657, + 0x3658, 0x3659, 0x365a, 0x365b, 0x365c, 0x365d, 0x365e, 0x365f, + 0x3660, 0x3661, 0x3662, 0x3663, 0x3664, 0x3665, 0x3666, 0x3667, + 0x3668, 0x3669, 0x366a, 0x366b, 0x366c, 0x366d, 0x366e, 0x366f, + 0x3670, 0x3671, 0x3672, 0x3673, 0x3674, 0x3675, 0x3676, 0x3677, + 0x3678, 0x3679, 0x367a, 0x367b, 0x367c, 0x367d, 0x367e, 0x367f, + 0x3680, 0x3681, 0x3682, 0x3683, 0x3684, 0x3685, 0x3686, 0x3687, + 0x3688, 0x3689, 0x368a, 0x368b, 0x368c, 0x368d, 0x368e, 0x368f, + 0x3690, 0x3691, 0x3692, 0x3693, 0x3694, 0x3695, 0x3696, 0x3697, + 0x3698, 0x3699, 0x369a, 0x369b, 0x369c, 0x369d, 0x369e, 0x369f, + 0x36a0, 0x36a1, 0x36a2, 0x36a3, 0x36a4, 0x36a5, 0x36a6, 0x36a7, + 0x36a8, 0x36a9, 0x36aa, 0x36ab, 0x36ac, 0x36ad, 0x36ae, 0x36af, + 0x36b0, 0x36b1, 0x36b2, 0x36b3, 0x36b4, 0x36b5, 0x36b6, 0x36b7, + 0x36b8, 0x36b9, 0x36ba, 0x36bb, 0x36bc, 0x36bd, 0x36be, 0x36bf, + 0x36c0, 0x36c1, 0x36c2, 0x36c3, 0x36c4, 0x36c5, 0x36c6, 0x36c7, + 0x36c8, 0x36c9, 0x36ca, 0x36cb, 0x36cc, 0x36cd, 0x36ce, 0x36cf, + 0x36d0, 0x36d1, 0x36d2, 0x36d3, 0x36d4, 0x36d5, 0x36d6, 0x36d7, + 0x36d8, 0x36d9, 0x36da, 0x36db, 0x36dc, 0x36dd, 0x36de, 0x36df, + 0x36e0, 0x36e1, 0x36e2, 0x36e3, 0x36e4, 0x36e5, 0x36e6, 0x36e7, + 0x36e8, 0x36e9, 0x36ea, 0x36eb, 0x36ec, 0x36ed, 0x36ee, 0x36ef, + 0x36f0, 0x36f1, 0x36f2, 0x36f3, 0x36f4, 0x36f5, 0x36f6, 0x36f7, + 0x36f8, 0x36f9, 0x36fa, 0x36fb, 0x36fc, 0x36fd, 0x36fe, 0x36ff, + 0x3700, 0x3701, 0x3702, 0x3703, 0x3704, 0x3705, 0x3706, 0x3707, + 0x3708, 0x3709, 0x370a, 0x370b, 0x370c, 0x370d, 0x370e, 0x370f, + 0x3710, 0x3711, 0x3712, 0x3713, 0x3714, 0x3715, 0x3716, 0x3717, + 0x3718, 0x3719, 0x371a, 0x371b, 0x371c, 0x371d, 0x371e, 0x371f, + 0x3720, 0x3721, 0x3722, 0x3723, 0x3724, 0x3725, 0x3726, 0x3727, + 0x3728, 0x3729, 0x372a, 0x372b, 0x372c, 0x372d, 0x372e, 0x372f, + 0x3730, 0x3731, 0x3732, 0x3733, 0x3734, 0x3735, 0x3736, 0x3737, + 0x3738, 0x3739, 0x373a, 0x373b, 0x373c, 0x373d, 0x373e, 0x373f, + 0x3740, 0x3741, 0x3742, 0x3743, 0x3744, 0x3745, 0x3746, 0x3747, + 0x3748, 0x3749, 0x374a, 0x374b, 0x374c, 0x374d, 0x374e, 0x374f, + 0x3750, 0x3751, 0x3752, 0x3753, 0x3754, 0x3755, 0x3756, 0x3757, + 0x3758, 0x3759, 0x375a, 0x375b, 0x375c, 0x375d, 0x375e, 0x375f, + 0x3760, 0x3761, 0x3762, 0x3763, 0x3764, 0x3765, 0x3766, 0x3767, + 0x3768, 0x3769, 0x376a, 0x376b, 0x376c, 0x376d, 0x376e, 0x376f, + 0x3770, 0x3771, 0x3772, 0x3773, 0x3774, 0x3775, 0x3776, 0x3777, + 0x3778, 0x3779, 0x377a, 0x377b, 0x377c, 0x377d, 0x377e, 0x377f, + 0x3780, 0x3781, 0x3782, 0x3783, 0x3784, 0x3785, 0x3786, 0x3787, + 0x3788, 0x3789, 0x378a, 0x378b, 0x378c, 0x378d, 0x378e, 0x378f, + 0x3790, 0x3791, 0x3792, 0x3793, 0x3794, 0x3795, 0x3796, 0x3797, + 0x3798, 0x3799, 0x379a, 0x379b, 0x379c, 0x379d, 0x379e, 0x379f, + 0x37a0, 0x37a1, 0x37a2, 0x37a3, 0x37a4, 0x37a5, 0x37a6, 0x37a7, + 0x37a8, 0x37a9, 0x37aa, 0x37ab, 0x37ac, 0x37ad, 0x37ae, 0x37af, + 0x37b0, 0x37b1, 0x37b2, 0x37b3, 0x37b4, 0x37b5, 0x37b6, 0x37b7, + 0x37b8, 0x37b9, 0x37ba, 0x37bb, 0x37bc, 0x37bd, 0x37be, 0x37bf, + 0x37c0, 0x37c1, 0x37c2, 0x37c3, 0x37c4, 0x37c5, 0x37c6, 0x37c7, + 0x37c8, 0x37c9, 0x37ca, 0x37cb, 0x37cc, 0x37cd, 0x37ce, 0x37cf, + 0x37d0, 0x37d1, 0x37d2, 0x37d3, 0x37d4, 0x37d5, 0x37d6, 0x37d7, + 0x37d8, 0x37d9, 0x37da, 0x37db, 0x37dc, 0x37dd, 0x37de, 0x37df, + 0x37e0, 0x37e1, 0x37e2, 0x37e3, 0x37e4, 0x37e5, 0x37e6, 0x37e7, + 0x37e8, 0x37e9, 0x37ea, 0x37eb, 0x37ec, 0x37ed, 0x37ee, 0x37ef, + 0x37f0, 0x37f1, 0x37f2, 0x37f3, 0x37f4, 0x37f5, 0x37f6, 0x37f7, + 0x37f8, 0x37f9, 0x37fa, 0x37fb, 0x37fc, 0x37fd, 0x37fe, 0x37ff, + 0x3800, 0x3801, 0x3802, 0x3803, 0x3804, 0x3805, 0x3806, 0x3807, + 0x3808, 0x3809, 0x380a, 0x380b, 0x380c, 0x380d, 0x380e, 0x380f, + 0x3810, 0x3811, 0x3812, 0x3813, 0x3814, 0x3815, 0x3816, 0x3817, + 0x3818, 0x3819, 0x381a, 0x381b, 0x381c, 0x381d, 0x381e, 0x381f, + 0x3820, 0x3821, 0x3822, 0x3823, 0x3824, 0x3825, 0x3826, 0x3827, + 0x3828, 0x3829, 0x382a, 0x382b, 0x382c, 0x382d, 0x382e, 0x382f, + 0x3830, 0x3831, 0x3832, 0x3833, 0x3834, 0x3835, 0x3836, 0x3837, + 0x3838, 0x3839, 0x383a, 0x383b, 0x383c, 0x383d, 0x383e, 0x383f, + 0x3840, 0x3841, 0x3842, 0x3843, 0x3844, 0x3845, 0x3846, 0x3847, + 0x3848, 0x3849, 0x384a, 0x384b, 0x384c, 0x384d, 0x384e, 0x384f, + 0x3850, 0x3851, 0x3852, 0x3853, 0x3854, 0x3855, 0x3856, 0x3857, + 0x3858, 0x3859, 0x385a, 0x385b, 0x385c, 0x385d, 0x385e, 0x385f, + 0x3860, 0x3861, 0x3862, 0x3863, 0x3864, 0x3865, 0x3866, 0x3867, + 0x3868, 0x3869, 0x386a, 0x386b, 0x386c, 0x386d, 0x386e, 0x386f, + 0x3870, 0x3871, 0x3872, 0x3873, 0x3874, 0x3875, 0x3876, 0x3877, + 0x3878, 0x3879, 0x387a, 0x387b, 0x387c, 0x387d, 0x387e, 0x387f, + 0x3880, 0x3881, 0x3882, 0x3883, 0x3884, 0x3885, 0x3886, 0x3887, + 0x3888, 0x3889, 0x388a, 0x388b, 0x388c, 0x388d, 0x388e, 0x388f, + 0x3890, 0x3891, 0x3892, 0x3893, 0x3894, 0x3895, 0x3896, 0x3897, + 0x3898, 0x3899, 0x389a, 0x389b, 0x389c, 0x389d, 0x389e, 0x389f, + 0x38a0, 0x38a1, 0x38a2, 0x38a3, 0x38a4, 0x38a5, 0x38a6, 0x38a7, + 0x38a8, 0x38a9, 0x38aa, 0x38ab, 0x38ac, 0x38ad, 0x38ae, 0x38af, + 0x38b0, 0x38b1, 0x38b2, 0x38b3, 0x38b4, 0x38b5, 0x38b6, 0x38b7, + 0x38b8, 0x38b9, 0x38ba, 0x38bb, 0x38bc, 0x38bd, 0x38be, 0x38bf, + 0x38c0, 0x38c1, 0x38c2, 0x38c3, 0x38c4, 0x38c5, 0x38c6, 0x38c7, + 0x38c8, 0x38c9, 0x38ca, 0x38cb, 0x38cc, 0x38cd, 0x38ce, 0x38cf, + 0x38d0, 0x38d1, 0x38d2, 0x38d3, 0x38d4, 0x38d5, 0x38d6, 0x38d7, + 0x38d8, 0x38d9, 0x38da, 0x38db, 0x38dc, 0x38dd, 0x38de, 0x38df, + 0x38e0, 0x38e1, 0x38e2, 0x38e3, 0x38e4, 0x38e5, 0x38e6, 0x38e7, + 0x38e8, 0x38e9, 0x38ea, 0x38eb, 0x38ec, 0x38ed, 0x38ee, 0x38ef, + 0x38f0, 0x38f1, 0x38f2, 0x38f3, 0x38f4, 0x38f5, 0x38f6, 0x38f7, + 0x38f8, 0x38f9, 0x38fa, 0x38fb, 0x38fc, 0x38fd, 0x38fe, 0x38ff, + 0x3900, 0x3901, 0x3902, 0x3903, 0x3904, 0x3905, 0x3906, 0x3907, + 0x3908, 0x3909, 0x390a, 0x390b, 0x390c, 0x390d, 0x390e, 0x390f, + 0x3910, 0x3911, 0x3912, 0x3913, 0x3914, 0x3915, 0x3916, 0x3917, + 0x3918, 0x3919, 0x391a, 0x391b, 0x391c, 0x391d, 0x391e, 0x391f, + 0x3920, 0x3921, 0x3922, 0x3923, 0x3924, 0x3925, 0x3926, 0x3927, + 0x3928, 0x3929, 0x392a, 0x392b, 0x392c, 0x392d, 0x392e, 0x392f, + 0x3930, 0x3931, 0x3932, 0x3933, 0x3934, 0x3935, 0x3936, 0x3937, + 0x3938, 0x3939, 0x393a, 0x393b, 0x393c, 0x393d, 0x393e, 0x393f, + 0x3940, 0x3941, 0x3942, 0x3943, 0x3944, 0x3945, 0x3946, 0x3947, + 0x3948, 0x3949, 0x394a, 0x394b, 0x394c, 0x394d, 0x394e, 0x394f, + 0x3950, 0x3951, 0x3952, 0x3953, 0x3954, 0x3955, 0x3956, 0x3957, + 0x3958, 0x3959, 0x395a, 0x395b, 0x395c, 0x395d, 0x395e, 0x395f, + 0x3960, 0x3961, 0x3962, 0x3963, 0x3964, 0x3965, 0x3966, 0x3967, + 0x3968, 0x3969, 0x396a, 0x396b, 0x396c, 0x396d, 0x396e, 0x396f, + 0x3970, 0x3971, 0x3972, 0x3973, 0x3974, 0x3975, 0x3976, 0x3977, + 0x3978, 0x3979, 0x397a, 0x397b, 0x397c, 0x397d, 0x397e, 0x397f, + 0x3980, 0x3981, 0x3982, 0x3983, 0x3984, 0x3985, 0x3986, 0x3987, + 0x3988, 0x3989, 0x398a, 0x398b, 0x398c, 0x398d, 0x398e, 0x398f, + 0x3990, 0x3991, 0x3992, 0x3993, 0x3994, 0x3995, 0x3996, 0x3997, + 0x3998, 0x3999, 0x399a, 0x399b, 0x399c, 0x399d, 0x399e, 0x399f, + 0x39a0, 0x39a1, 0x39a2, 0x39a3, 0x39a4, 0x39a5, 0x39a6, 0x39a7, + 0x39a8, 0x39a9, 0x39aa, 0x39ab, 0x39ac, 0x39ad, 0x39ae, 0x39af, + 0x39b0, 0x39b1, 0x39b2, 0x39b3, 0x39b4, 0x39b5, 0x39b6, 0x39b7, + 0x39b8, 0x39b9, 0x39ba, 0x39bb, 0x39bc, 0x39bd, 0x39be, 0x39bf, + 0x39c0, 0x39c1, 0x39c2, 0x39c3, 0x39c4, 0x39c5, 0x39c6, 0x39c7, + 0x39c8, 0x39c9, 0x39ca, 0x39cb, 0x39cc, 0x39cd, 0x39ce, 0x39cf, + 0x39d0, 0x39d1, 0x39d2, 0x39d3, 0x39d4, 0x39d5, 0x39d6, 0x39d7, + 0x39d8, 0x39d9, 0x39da, 0x39db, 0x39dc, 0x39dd, 0x39de, 0x39df, + 0x39e0, 0x39e1, 0x39e2, 0x39e3, 0x39e4, 0x39e5, 0x39e6, 0x39e7, + 0x39e8, 0x39e9, 0x39ea, 0x39eb, 0x39ec, 0x39ed, 0x39ee, 0x39ef, + 0x39f0, 0x39f1, 0x39f2, 0x39f3, 0x39f4, 0x39f5, 0x39f6, 0x39f7, + 0x39f8, 0x39f9, 0x39fa, 0x39fb, 0x39fc, 0x39fd, 0x39fe, 0x39ff, + 0x3a00, 0x3a01, 0x3a02, 0x3a03, 0x3a04, 0x3a05, 0x3a06, 0x3a07, + 0x3a08, 0x3a09, 0x3a0a, 0x3a0b, 0x3a0c, 0x3a0d, 0x3a0e, 0x3a0f, + 0x3a10, 0x3a11, 0x3a12, 0x3a13, 0x3a14, 0x3a15, 0x3a16, 0x3a17, + 0x3a18, 0x3a19, 0x3a1a, 0x3a1b, 0x3a1c, 0x3a1d, 0x3a1e, 0x3a1f, + 0x3a20, 0x3a21, 0x3a22, 0x3a23, 0x3a24, 0x3a25, 0x3a26, 0x3a27, + 0x3a28, 0x3a29, 0x3a2a, 0x3a2b, 0x3a2c, 0x3a2d, 0x3a2e, 0x3a2f, + 0x3a30, 0x3a31, 0x3a32, 0x3a33, 0x3a34, 0x3a35, 0x3a36, 0x3a37, + 0x3a38, 0x3a39, 0x3a3a, 0x3a3b, 0x3a3c, 0x3a3d, 0x3a3e, 0x3a3f, + 0x3a40, 0x3a41, 0x3a42, 0x3a43, 0x3a44, 0x3a45, 0x3a46, 0x3a47, + 0x3a48, 0x3a49, 0x3a4a, 0x3a4b, 0x3a4c, 0x3a4d, 0x3a4e, 0x3a4f, + 0x3a50, 0x3a51, 0x3a52, 0x3a53, 0x3a54, 0x3a55, 0x3a56, 0x3a57, + 0x3a58, 0x3a59, 0x3a5a, 0x3a5b, 0x3a5c, 0x3a5d, 0x3a5e, 0x3a5f, + 0x3a60, 0x3a61, 0x3a62, 0x3a63, 0x3a64, 0x3a65, 0x3a66, 0x3a67, + 0x3a68, 0x3a69, 0x3a6a, 0x3a6b, 0x3a6c, 0x3a6d, 0x3a6e, 0x3a6f, + 0x3a70, 0x3a71, 0x3a72, 0x3a73, 0x3a74, 0x3a75, 0x3a76, 0x3a77, + 0x3a78, 0x3a79, 0x3a7a, 0x3a7b, 0x3a7c, 0x3a7d, 0x3a7e, 0x3a7f, + 0x3a80, 0x3a81, 0x3a82, 0x3a83, 0x3a84, 0x3a85, 0x3a86, 0x3a87, + 0x3a88, 0x3a89, 0x3a8a, 0x3a8b, 0x3a8c, 0x3a8d, 0x3a8e, 0x3a8f, + 0x3a90, 0x3a91, 0x3a92, 0x3a93, 0x3a94, 0x3a95, 0x3a96, 0x3a97, + 0x3a98, 0x3a99, 0x3a9a, 0x3a9b, 0x3a9c, 0x3a9d, 0x3a9e, 0x3a9f, + 0x3aa0, 0x3aa1, 0x3aa2, 0x3aa3, 0x3aa4, 0x3aa5, 0x3aa6, 0x3aa7, + 0x3aa8, 0x3aa9, 0x3aaa, 0x3aab, 0x3aac, 0x3aad, 0x3aae, 0x3aaf, + 0x3ab0, 0x3ab1, 0x3ab2, 0x3ab3, 0x3ab4, 0x3ab5, 0x3ab6, 0x3ab7, + 0x3ab8, 0x3ab9, 0x3aba, 0x3abb, 0x3abc, 0x3abd, 0x3abe, 0x3abf, + 0x3ac0, 0x3ac1, 0x3ac2, 0x3ac3, 0x3ac4, 0x3ac5, 0x3ac6, 0x3ac7, + 0x3ac8, 0x3ac9, 0x3aca, 0x3acb, 0x3acc, 0x3acd, 0x3ace, 0x3acf, + 0x3ad0, 0x3ad1, 0x3ad2, 0x3ad3, 0x3ad4, 0x3ad5, 0x3ad6, 0x3ad7, + 0x3ad8, 0x3ad9, 0x3ada, 0x3adb, 0x3adc, 0x3add, 0x3ade, 0x3adf, + 0x3ae0, 0x3ae1, 0x3ae2, 0x3ae3, 0x3ae4, 0x3ae5, 0x3ae6, 0x3ae7, + 0x3ae8, 0x3ae9, 0x3aea, 0x3aeb, 0x3aec, 0x3aed, 0x3aee, 0x3aef, + 0x3af0, 0x3af1, 0x3af2, 0x3af3, 0x3af4, 0x3af5, 0x3af6, 0x3af7, + 0x3af8, 0x3af9, 0x3afa, 0x3afb, 0x3afc, 0x3afd, 0x3afe, 0x3aff, + 0x3b00, 0x3b01, 0x3b02, 0x3b03, 0x3b04, 0x3b05, 0x3b06, 0x3b07, + 0x3b08, 0x3b09, 0x3b0a, 0x3b0b, 0x3b0c, 0x3b0d, 0x3b0e, 0x3b0f, + 0x3b10, 0x3b11, 0x3b12, 0x3b13, 0x3b14, 0x3b15, 0x3b16, 0x3b17, + 0x3b18, 0x3b19, 0x3b1a, 0x3b1b, 0x3b1c, 0x3b1d, 0x3b1e, 0x3b1f, + 0x3b20, 0x3b21, 0x3b22, 0x3b23, 0x3b24, 0x3b25, 0x3b26, 0x3b27, + 0x3b28, 0x3b29, 0x3b2a, 0x3b2b, 0x3b2c, 0x3b2d, 0x3b2e, 0x3b2f, + 0x3b30, 0x3b31, 0x3b32, 0x3b33, 0x3b34, 0x3b35, 0x3b36, 0x3b37, + 0x3b38, 0x3b39, 0x3b3a, 0x3b3b, 0x3b3c, 0x3b3d, 0x3b3e, 0x3b3f, + 0x3b40, 0x3b41, 0x3b42, 0x3b43, 0x3b44, 0x3b45, 0x3b46, 0x3b47, + 0x3b48, 0x3b49, 0x3b4a, 0x3b4b, 0x3b4c, 0x3b4d, 0x3b4e, 0x3b4f, + 0x3b50, 0x3b51, 0x3b52, 0x3b53, 0x3b54, 0x3b55, 0x3b56, 0x3b57, + 0x3b58, 0x3b59, 0x3b5a, 0x3b5b, 0x3b5c, 0x3b5d, 0x3b5e, 0x3b5f, + 0x3b60, 0x3b61, 0x3b62, 0x3b63, 0x3b64, 0x3b65, 0x3b66, 0x3b67, + 0x3b68, 0x3b69, 0x3b6a, 0x3b6b, 0x3b6c, 0x3b6d, 0x3b6e, 0x3b6f, + 0x3b70, 0x3b71, 0x3b72, 0x3b73, 0x3b74, 0x3b75, 0x3b76, 0x3b77, + 0x3b78, 0x3b79, 0x3b7a, 0x3b7b, 0x3b7c, 0x3b7d, 0x3b7e, 0x3b7f, + 0x3b80, 0x3b81, 0x3b82, 0x3b83, 0x3b84, 0x3b85, 0x3b86, 0x3b87, + 0x3b88, 0x3b89, 0x3b8a, 0x3b8b, 0x3b8c, 0x3b8d, 0x3b8e, 0x3b8f, + 0x3b90, 0x3b91, 0x3b92, 0x3b93, 0x3b94, 0x3b95, 0x3b96, 0x3b97, + 0x3b98, 0x3b99, 0x3b9a, 0x3b9b, 0x3b9c, 0x3b9d, 0x3b9e, 0x3b9f, + 0x3ba0, 0x3ba1, 0x3ba2, 0x3ba3, 0x3ba4, 0x3ba5, 0x3ba6, 0x3ba7, + 0x3ba8, 0x3ba9, 0x3baa, 0x3bab, 0x3bac, 0x3bad, 0x3bae, 0x3baf, + 0x3bb0, 0x3bb1, 0x3bb2, 0x3bb3, 0x3bb4, 0x3bb5, 0x3bb6, 0x3bb7, + 0x3bb8, 0x3bb9, 0x3bba, 0x3bbb, 0x3bbc, 0x3bbd, 0x3bbe, 0x3bbf, + 0x3bc0, 0x3bc1, 0x3bc2, 0x3bc3, 0x3bc4, 0x3bc5, 0x3bc6, 0x3bc7, + 0x3bc8, 0x3bc9, 0x3bca, 0x3bcb, 0x3bcc, 0x3bcd, 0x3bce, 0x3bcf, + 0x3bd0, 0x3bd1, 0x3bd2, 0x3bd3, 0x3bd4, 0x3bd5, 0x3bd6, 0x3bd7, + 0x3bd8, 0x3bd9, 0x3bda, 0x3bdb, 0x3bdc, 0x3bdd, 0x3bde, 0x3bdf, + 0x3be0, 0x3be1, 0x3be2, 0x3be3, 0x3be4, 0x3be5, 0x3be6, 0x3be7, + 0x3be8, 0x3be9, 0x3bea, 0x3beb, 0x3bec, 0x3bed, 0x3bee, 0x3bef, + 0x3bf0, 0x3bf1, 0x3bf2, 0x3bf3, 0x3bf4, 0x3bf5, 0x3bf6, 0x3bf7, + 0x3bf8, 0x3bf9, 0x3bfa, 0x3bfb, 0x3bfc, 0x3bfd, 0x3bfe, 0x3bff, + 0x3c00, 0x3c01, 0x3c02, 0x3c03, 0x3c04, 0x3c05, 0x3c06, 0x3c07, + 0x3c08, 0x3c09, 0x3c0a, 0x3c0b, 0x3c0c, 0x3c0d, 0x3c0e, 0x3c0f, + 0x3c10, 0x3c11, 0x3c12, 0x3c13, 0x3c14, 0x3c15, 0x3c16, 0x3c17, + 0x3c18, 0x3c19, 0x3c1a, 0x3c1b, 0x3c1c, 0x3c1d, 0x3c1e, 0x3c1f, + 0x3c20, 0x3c21, 0x3c22, 0x3c23, 0x3c24, 0x3c25, 0x3c26, 0x3c27, + 0x3c28, 0x3c29, 0x3c2a, 0x3c2b, 0x3c2c, 0x3c2d, 0x3c2e, 0x3c2f, + 0x3c30, 0x3c31, 0x3c32, 0x3c33, 0x3c34, 0x3c35, 0x3c36, 0x3c37, + 0x3c38, 0x3c39, 0x3c3a, 0x3c3b, 0x3c3c, 0x3c3d, 0x3c3e, 0x3c3f, + 0x3c40, 0x3c41, 0x3c42, 0x3c43, 0x3c44, 0x3c45, 0x3c46, 0x3c47, + 0x3c48, 0x3c49, 0x3c4a, 0x3c4b, 0x3c4c, 0x3c4d, 0x3c4e, 0x3c4f, + 0x3c50, 0x3c51, 0x3c52, 0x3c53, 0x3c54, 0x3c55, 0x3c56, 0x3c57, + 0x3c58, 0x3c59, 0x3c5a, 0x3c5b, 0x3c5c, 0x3c5d, 0x3c5e, 0x3c5f, + 0x3c60, 0x3c61, 0x3c62, 0x3c63, 0x3c64, 0x3c65, 0x3c66, 0x3c67, + 0x3c68, 0x3c69, 0x3c6a, 0x3c6b, 0x3c6c, 0x3c6d, 0x3c6e, 0x3c6f, + 0x3c70, 0x3c71, 0x3c72, 0x3c73, 0x3c74, 0x3c75, 0x3c76, 0x3c77, + 0x3c78, 0x3c79, 0x3c7a, 0x3c7b, 0x3c7c, 0x3c7d, 0x3c7e, 0x3c7f, + 0x3c80, 0x3c81, 0x3c82, 0x3c83, 0x3c84, 0x3c85, 0x3c86, 0x3c87, + 0x3c88, 0x3c89, 0x3c8a, 0x3c8b, 0x3c8c, 0x3c8d, 0x3c8e, 0x3c8f, + 0x3c90, 0x3c91, 0x3c92, 0x3c93, 0x3c94, 0x3c95, 0x3c96, 0x3c97, + 0x3c98, 0x3c99, 0x3c9a, 0x3c9b, 0x3c9c, 0x3c9d, 0x3c9e, 0x3c9f, + 0x3ca0, 0x3ca1, 0x3ca2, 0x3ca3, 0x3ca4, 0x3ca5, 0x3ca6, 0x3ca7, + 0x3ca8, 0x3ca9, 0x3caa, 0x3cab, 0x3cac, 0x3cad, 0x3cae, 0x3caf, + 0x3cb0, 0x3cb1, 0x3cb2, 0x3cb3, 0x3cb4, 0x3cb5, 0x3cb6, 0x3cb7, + 0x3cb8, 0x3cb9, 0x3cba, 0x3cbb, 0x3cbc, 0x3cbd, 0x3cbe, 0x3cbf, + 0x3cc0, 0x3cc1, 0x3cc2, 0x3cc3, 0x3cc4, 0x3cc5, 0x3cc6, 0x3cc7, + 0x3cc8, 0x3cc9, 0x3cca, 0x3ccb, 0x3ccc, 0x3ccd, 0x3cce, 0x3ccf, + 0x3cd0, 0x3cd1, 0x3cd2, 0x3cd3, 0x3cd4, 0x3cd5, 0x3cd6, 0x3cd7, + 0x3cd8, 0x3cd9, 0x3cda, 0x3cdb, 0x3cdc, 0x3cdd, 0x3cde, 0x3cdf, + 0x3ce0, 0x3ce1, 0x3ce2, 0x3ce3, 0x3ce4, 0x3ce5, 0x3ce6, 0x3ce7, + 0x3ce8, 0x3ce9, 0x3cea, 0x3ceb, 0x3cec, 0x3ced, 0x3cee, 0x3cef, + 0x3cf0, 0x3cf1, 0x3cf2, 0x3cf3, 0x3cf4, 0x3cf5, 0x3cf6, 0x3cf7, + 0x3cf8, 0x3cf9, 0x3cfa, 0x3cfb, 0x3cfc, 0x3cfd, 0x3cfe, 0x3cff, + 0x3d00, 0x3d01, 0x3d02, 0x3d03, 0x3d04, 0x3d05, 0x3d06, 0x3d07, + 0x3d08, 0x3d09, 0x3d0a, 0x3d0b, 0x3d0c, 0x3d0d, 0x3d0e, 0x3d0f, + 0x3d10, 0x3d11, 0x3d12, 0x3d13, 0x3d14, 0x3d15, 0x3d16, 0x3d17, + 0x3d18, 0x3d19, 0x3d1a, 0x3d1b, 0x3d1c, 0x3d1d, 0x3d1e, 0x3d1f, + 0x3d20, 0x3d21, 0x3d22, 0x3d23, 0x3d24, 0x3d25, 0x3d26, 0x3d27, + 0x3d28, 0x3d29, 0x3d2a, 0x3d2b, 0x3d2c, 0x3d2d, 0x3d2e, 0x3d2f, + 0x3d30, 0x3d31, 0x3d32, 0x3d33, 0x3d34, 0x3d35, 0x3d36, 0x3d37, + 0x3d38, 0x3d39, 0x3d3a, 0x3d3b, 0x3d3c, 0x3d3d, 0x3d3e, 0x3d3f, + 0x3d40, 0x3d41, 0x3d42, 0x3d43, 0x3d44, 0x3d45, 0x3d46, 0x3d47, + 0x3d48, 0x3d49, 0x3d4a, 0x3d4b, 0x3d4c, 0x3d4d, 0x3d4e, 0x3d4f, + 0x3d50, 0x3d51, 0x3d52, 0x3d53, 0x3d54, 0x3d55, 0x3d56, 0x3d57, + 0x3d58, 0x3d59, 0x3d5a, 0x3d5b, 0x3d5c, 0x3d5d, 0x3d5e, 0x3d5f, + 0x3d60, 0x3d61, 0x3d62, 0x3d63, 0x3d64, 0x3d65, 0x3d66, 0x3d67, + 0x3d68, 0x3d69, 0x3d6a, 0x3d6b, 0x3d6c, 0x3d6d, 0x3d6e, 0x3d6f, + 0x3d70, 0x3d71, 0x3d72, 0x3d73, 0x3d74, 0x3d75, 0x3d76, 0x3d77, + 0x3d78, 0x3d79, 0x3d7a, 0x3d7b, 0x3d7c, 0x3d7d, 0x3d7e, 0x3d7f, + 0x3d80, 0x3d81, 0x3d82, 0x3d83, 0x3d84, 0x3d85, 0x3d86, 0x3d87, + 0x3d88, 0x3d89, 0x3d8a, 0x3d8b, 0x3d8c, 0x3d8d, 0x3d8e, 0x3d8f, + 0x3d90, 0x3d91, 0x3d92, 0x3d93, 0x3d94, 0x3d95, 0x3d96, 0x3d97, + 0x3d98, 0x3d99, 0x3d9a, 0x3d9b, 0x3d9c, 0x3d9d, 0x3d9e, 0x3d9f, + 0x3da0, 0x3da1, 0x3da2, 0x3da3, 0x3da4, 0x3da5, 0x3da6, 0x3da7, + 0x3da8, 0x3da9, 0x3daa, 0x3dab, 0x3dac, 0x3dad, 0x3dae, 0x3daf, + 0x3db0, 0x3db1, 0x3db2, 0x3db3, 0x3db4, 0x3db5, 0x3db6, 0x3db7, + 0x3db8, 0x3db9, 0x3dba, 0x3dbb, 0x3dbc, 0x3dbd, 0x3dbe, 0x3dbf, + 0x3dc0, 0x3dc1, 0x3dc2, 0x3dc3, 0x3dc4, 0x3dc5, 0x3dc6, 0x3dc7, + 0x3dc8, 0x3dc9, 0x3dca, 0x3dcb, 0x3dcc, 0x3dcd, 0x3dce, 0x3dcf, + 0x3dd0, 0x3dd1, 0x3dd2, 0x3dd3, 0x3dd4, 0x3dd5, 0x3dd6, 0x3dd7, + 0x3dd8, 0x3dd9, 0x3dda, 0x3ddb, 0x3ddc, 0x3ddd, 0x3dde, 0x3ddf, + 0x3de0, 0x3de1, 0x3de2, 0x3de3, 0x3de4, 0x3de5, 0x3de6, 0x3de7, + 0x3de8, 0x3de9, 0x3dea, 0x3deb, 0x3dec, 0x3ded, 0x3dee, 0x3def, + 0x3df0, 0x3df1, 0x3df2, 0x3df3, 0x3df4, 0x3df5, 0x3df6, 0x3df7, + 0x3df8, 0x3df9, 0x3dfa, 0x3dfb, 0x3dfc, 0x3dfd, 0x3dfe, 0x3dff, + 0x3e00, 0x3e01, 0x3e02, 0x3e03, 0x3e04, 0x3e05, 0x3e06, 0x3e07, + 0x3e08, 0x3e09, 0x3e0a, 0x3e0b, 0x3e0c, 0x3e0d, 0x3e0e, 0x3e0f, + 0x3e10, 0x3e11, 0x3e12, 0x3e13, 0x3e14, 0x3e15, 0x3e16, 0x3e17, + 0x3e18, 0x3e19, 0x3e1a, 0x3e1b, 0x3e1c, 0x3e1d, 0x3e1e, 0x3e1f, + 0x3e20, 0x3e21, 0x3e22, 0x3e23, 0x3e24, 0x3e25, 0x3e26, 0x3e27, + 0x3e28, 0x3e29, 0x3e2a, 0x3e2b, 0x3e2c, 0x3e2d, 0x3e2e, 0x3e2f, + 0x3e30, 0x3e31, 0x3e32, 0x3e33, 0x3e34, 0x3e35, 0x3e36, 0x3e37, + 0x3e38, 0x3e39, 0x3e3a, 0x3e3b, 0x3e3c, 0x3e3d, 0x3e3e, 0x3e3f, + 0x3e40, 0x3e41, 0x3e42, 0x3e43, 0x3e44, 0x3e45, 0x3e46, 0x3e47, + 0x3e48, 0x3e49, 0x3e4a, 0x3e4b, 0x3e4c, 0x3e4d, 0x3e4e, 0x3e4f, + 0x3e50, 0x3e51, 0x3e52, 0x3e53, 0x3e54, 0x3e55, 0x3e56, 0x3e57, + 0x3e58, 0x3e59, 0x3e5a, 0x3e5b, 0x3e5c, 0x3e5d, 0x3e5e, 0x3e5f, + 0x3e60, 0x3e61, 0x3e62, 0x3e63, 0x3e64, 0x3e65, 0x3e66, 0x3e67, + 0x3e68, 0x3e69, 0x3e6a, 0x3e6b, 0x3e6c, 0x3e6d, 0x3e6e, 0x3e6f, + 0x3e70, 0x3e71, 0x3e72, 0x3e73, 0x3e74, 0x3e75, 0x3e76, 0x3e77, + 0x3e78, 0x3e79, 0x3e7a, 0x3e7b, 0x3e7c, 0x3e7d, 0x3e7e, 0x3e7f, + 0x3e80, 0x3e81, 0x3e82, 0x3e83, 0x3e84, 0x3e85, 0x3e86, 0x3e87, + 0x3e88, 0x3e89, 0x3e8a, 0x3e8b, 0x3e8c, 0x3e8d, 0x3e8e, 0x3e8f, + 0x3e90, 0x3e91, 0x3e92, 0x3e93, 0x3e94, 0x3e95, 0x3e96, 0x3e97, + 0x3e98, 0x3e99, 0x3e9a, 0x3e9b, 0x3e9c, 0x3e9d, 0x3e9e, 0x3e9f, + 0x3ea0, 0x3ea1, 0x3ea2, 0x3ea3, 0x3ea4, 0x3ea5, 0x3ea6, 0x3ea7, + 0x3ea8, 0x3ea9, 0x3eaa, 0x3eab, 0x3eac, 0x3ead, 0x3eae, 0x3eaf, + 0x3eb0, 0x3eb1, 0x3eb2, 0x3eb3, 0x3eb4, 0x3eb5, 0x3eb6, 0x3eb7, + 0x3eb8, 0x3eb9, 0x3eba, 0x3ebb, 0x3ebc, 0x3ebd, 0x3ebe, 0x3ebf, + 0x3ec0, 0x3ec1, 0x3ec2, 0x3ec3, 0x3ec4, 0x3ec5, 0x3ec6, 0x3ec7, + 0x3ec8, 0x3ec9, 0x3eca, 0x3ecb, 0x3ecc, 0x3ecd, 0x3ece, 0x3ecf, + 0x3ed0, 0x3ed1, 0x3ed2, 0x3ed3, 0x3ed4, 0x3ed5, 0x3ed6, 0x3ed7, + 0x3ed8, 0x3ed9, 0x3eda, 0x3edb, 0x3edc, 0x3edd, 0x3ede, 0x3edf, + 0x3ee0, 0x3ee1, 0x3ee2, 0x3ee3, 0x3ee4, 0x3ee5, 0x3ee6, 0x3ee7, + 0x3ee8, 0x3ee9, 0x3eea, 0x3eeb, 0x3eec, 0x3eed, 0x3eee, 0x3eef, + 0x3ef0, 0x3ef1, 0x3ef2, 0x3ef3, 0x3ef4, 0x3ef5, 0x3ef6, 0x3ef7, + 0x3ef8, 0x3ef9, 0x3efa, 0x3efb, 0x3efc, 0x3efd, 0x3efe, 0x3eff, + 0x3f00, 0x3f01, 0x3f02, 0x3f03, 0x3f04, 0x3f05, 0x3f06, 0x3f07, + 0x3f08, 0x3f09, 0x3f0a, 0x3f0b, 0x3f0c, 0x3f0d, 0x3f0e, 0x3f0f, + 0x3f10, 0x3f11, 0x3f12, 0x3f13, 0x3f14, 0x3f15, 0x3f16, 0x3f17, + 0x3f18, 0x3f19, 0x3f1a, 0x3f1b, 0x3f1c, 0x3f1d, 0x3f1e, 0x3f1f, + 0x3f20, 0x3f21, 0x3f22, 0x3f23, 0x3f24, 0x3f25, 0x3f26, 0x3f27, + 0x3f28, 0x3f29, 0x3f2a, 0x3f2b, 0x3f2c, 0x3f2d, 0x3f2e, 0x3f2f, + 0x3f30, 0x3f31, 0x3f32, 0x3f33, 0x3f34, 0x3f35, 0x3f36, 0x3f37, + 0x3f38, 0x3f39, 0x3f3a, 0x3f3b, 0x3f3c, 0x3f3d, 0x3f3e, 0x3f3f, + 0x3f40, 0x3f41, 0x3f42, 0x3f43, 0x3f44, 0x3f45, 0x3f46, 0x3f47, + 0x3f48, 0x3f49, 0x3f4a, 0x3f4b, 0x3f4c, 0x3f4d, 0x3f4e, 0x3f4f, + 0x3f50, 0x3f51, 0x3f52, 0x3f53, 0x3f54, 0x3f55, 0x3f56, 0x3f57, + 0x3f58, 0x3f59, 0x3f5a, 0x3f5b, 0x3f5c, 0x3f5d, 0x3f5e, 0x3f5f, + 0x3f60, 0x3f61, 0x3f62, 0x3f63, 0x3f64, 0x3f65, 0x3f66, 0x3f67, + 0x3f68, 0x3f69, 0x3f6a, 0x3f6b, 0x3f6c, 0x3f6d, 0x3f6e, 0x3f6f, + 0x3f70, 0x3f71, 0x3f72, 0x3f73, 0x3f74, 0x3f75, 0x3f76, 0x3f77, + 0x3f78, 0x3f79, 0x3f7a, 0x3f7b, 0x3f7c, 0x3f7d, 0x3f7e, 0x3f7f, + 0x3f80, 0x3f81, 0x3f82, 0x3f83, 0x3f84, 0x3f85, 0x3f86, 0x3f87, + 0x3f88, 0x3f89, 0x3f8a, 0x3f8b, 0x3f8c, 0x3f8d, 0x3f8e, 0x3f8f, + 0x3f90, 0x3f91, 0x3f92, 0x3f93, 0x3f94, 0x3f95, 0x3f96, 0x3f97, + 0x3f98, 0x3f99, 0x3f9a, 0x3f9b, 0x3f9c, 0x3f9d, 0x3f9e, 0x3f9f, + 0x3fa0, 0x3fa1, 0x3fa2, 0x3fa3, 0x3fa4, 0x3fa5, 0x3fa6, 0x3fa7, + 0x3fa8, 0x3fa9, 0x3faa, 0x3fab, 0x3fac, 0x3fad, 0x3fae, 0x3faf, + 0x3fb0, 0x3fb1, 0x3fb2, 0x3fb3, 0x3fb4, 0x3fb5, 0x3fb6, 0x3fb7, + 0x3fb8, 0x3fb9, 0x3fba, 0x3fbb, 0x3fbc, 0x3fbd, 0x3fbe, 0x3fbf, + 0x3fc0, 0x3fc1, 0x3fc2, 0x3fc3, 0x3fc4, 0x3fc5, 0x3fc6, 0x3fc7, + 0x3fc8, 0x3fc9, 0x3fca, 0x3fcb, 0x3fcc, 0x3fcd, 0x3fce, 0x3fcf, + 0x3fd0, 0x3fd1, 0x3fd2, 0x3fd3, 0x3fd4, 0x3fd5, 0x3fd6, 0x3fd7, + 0x3fd8, 0x3fd9, 0x3fda, 0x3fdb, 0x3fdc, 0x3fdd, 0x3fde, 0x3fdf, + 0x3fe0, 0x3fe1, 0x3fe2, 0x3fe3, 0x3fe4, 0x3fe5, 0x3fe6, 0x3fe7, + 0x3fe8, 0x3fe9, 0x3fea, 0x3feb, 0x3fec, 0x3fed, 0x3fee, 0x3fef, + 0x3ff0, 0x3ff1, 0x3ff2, 0x3ff3, 0x3ff4, 0x3ff5, 0x3ff6, 0x3ff7, + 0x3ff8, 0x3ff9, 0x3ffa, 0x3ffb, 0x3ffc, 0x3ffd, 0x3ffe, 0x3fff, + 0x4000, 0x4001, 0x4002, 0x4003, 0x4004, 0x4005, 0x4006, 0x4007, + 0x4008, 0x4009, 0x400a, 0x400b, 0x400c, 0x400d, 0x400e, 0x400f, + 0x4010, 0x4011, 0x4012, 0x4013, 0x4014, 0x4015, 0x4016, 0x4017, + 0x4018, 0x4019, 0x401a, 0x401b, 0x401c, 0x401d, 0x401e, 0x401f, + 0x4020, 0x4021, 0x4022, 0x4023, 0x4024, 0x4025, 0x4026, 0x4027, + 0x4028, 0x4029, 0x402a, 0x402b, 0x402c, 0x402d, 0x402e, 0x402f, + 0x4030, 0x4031, 0x4032, 0x4033, 0x4034, 0x4035, 0x4036, 0x4037, + 0x4038, 0x4039, 0x403a, 0x403b, 0x403c, 0x403d, 0x403e, 0x403f, + 0x4040, 0x4041, 0x4042, 0x4043, 0x4044, 0x4045, 0x4046, 0x4047, + 0x4048, 0x4049, 0x404a, 0x404b, 0x404c, 0x404d, 0x404e, 0x404f, + 0x4050, 0x4051, 0x4052, 0x4053, 0x4054, 0x4055, 0x4056, 0x4057, + 0x4058, 0x4059, 0x405a, 0x405b, 0x405c, 0x405d, 0x405e, 0x405f, + 0x4060, 0x4061, 0x4062, 0x4063, 0x4064, 0x4065, 0x4066, 0x4067, + 0x4068, 0x4069, 0x406a, 0x406b, 0x406c, 0x406d, 0x406e, 0x406f, + 0x4070, 0x4071, 0x4072, 0x4073, 0x4074, 0x4075, 0x4076, 0x4077, + 0x4078, 0x4079, 0x407a, 0x407b, 0x407c, 0x407d, 0x407e, 0x407f, + 0x4080, 0x4081, 0x4082, 0x4083, 0x4084, 0x4085, 0x4086, 0x4087, + 0x4088, 0x4089, 0x408a, 0x408b, 0x408c, 0x408d, 0x408e, 0x408f, + 0x4090, 0x4091, 0x4092, 0x4093, 0x4094, 0x4095, 0x4096, 0x4097, + 0x4098, 0x4099, 0x409a, 0x409b, 0x409c, 0x409d, 0x409e, 0x409f, + 0x40a0, 0x40a1, 0x40a2, 0x40a3, 0x40a4, 0x40a5, 0x40a6, 0x40a7, + 0x40a8, 0x40a9, 0x40aa, 0x40ab, 0x40ac, 0x40ad, 0x40ae, 0x40af, + 0x40b0, 0x40b1, 0x40b2, 0x40b3, 0x40b4, 0x40b5, 0x40b6, 0x40b7, + 0x40b8, 0x40b9, 0x40ba, 0x40bb, 0x40bc, 0x40bd, 0x40be, 0x40bf, + 0x40c0, 0x40c1, 0x40c2, 0x40c3, 0x40c4, 0x40c5, 0x40c6, 0x40c7, + 0x40c8, 0x40c9, 0x40ca, 0x40cb, 0x40cc, 0x40cd, 0x40ce, 0x40cf, + 0x40d0, 0x40d1, 0x40d2, 0x40d3, 0x40d4, 0x40d5, 0x40d6, 0x40d7, + 0x40d8, 0x40d9, 0x40da, 0x40db, 0x40dc, 0x40dd, 0x40de, 0x40df, + 0x40e0, 0x40e1, 0x40e2, 0x40e3, 0x40e4, 0x40e5, 0x40e6, 0x40e7, + 0x40e8, 0x40e9, 0x40ea, 0x40eb, 0x40ec, 0x40ed, 0x40ee, 0x40ef, + 0x40f0, 0x40f1, 0x40f2, 0x40f3, 0x40f4, 0x40f5, 0x40f6, 0x40f7, + 0x40f8, 0x40f9, 0x40fa, 0x40fb, 0x40fc, 0x40fd, 0x40fe, 0x40ff, + 0x4100, 0x4101, 0x4102, 0x4103, 0x4104, 0x4105, 0x4106, 0x4107, + 0x4108, 0x4109, 0x410a, 0x410b, 0x410c, 0x410d, 0x410e, 0x410f, + 0x4110, 0x4111, 0x4112, 0x4113, 0x4114, 0x4115, 0x4116, 0x4117, + 0x4118, 0x4119, 0x411a, 0x411b, 0x411c, 0x411d, 0x411e, 0x411f, + 0x4120, 0x4121, 0x4122, 0x4123, 0x4124, 0x4125, 0x4126, 0x4127, + 0x4128, 0x4129, 0x412a, 0x412b, 0x412c, 0x412d, 0x412e, 0x412f, + 0x4130, 0x4131, 0x4132, 0x4133, 0x4134, 0x4135, 0x4136, 0x4137, + 0x4138, 0x4139, 0x413a, 0x413b, 0x413c, 0x413d, 0x413e, 0x413f, + 0x4140, 0x4141, 0x4142, 0x4143, 0x4144, 0x4145, 0x4146, 0x4147, + 0x4148, 0x4149, 0x414a, 0x414b, 0x414c, 0x414d, 0x414e, 0x414f, + 0x4150, 0x4151, 0x4152, 0x4153, 0x4154, 0x4155, 0x4156, 0x4157, + 0x4158, 0x4159, 0x415a, 0x415b, 0x415c, 0x415d, 0x415e, 0x415f, + 0x4160, 0x4161, 0x4162, 0x4163, 0x4164, 0x4165, 0x4166, 0x4167, + 0x4168, 0x4169, 0x416a, 0x416b, 0x416c, 0x416d, 0x416e, 0x416f, + 0x4170, 0x4171, 0x4172, 0x4173, 0x4174, 0x4175, 0x4176, 0x4177, + 0x4178, 0x4179, 0x417a, 0x417b, 0x417c, 0x417d, 0x417e, 0x417f, + 0x4180, 0x4181, 0x4182, 0x4183, 0x4184, 0x4185, 0x4186, 0x4187, + 0x4188, 0x4189, 0x418a, 0x418b, 0x418c, 0x418d, 0x418e, 0x418f, + 0x4190, 0x4191, 0x4192, 0x4193, 0x4194, 0x4195, 0x4196, 0x4197, + 0x4198, 0x4199, 0x419a, 0x419b, 0x419c, 0x419d, 0x419e, 0x419f, + 0x41a0, 0x41a1, 0x41a2, 0x41a3, 0x41a4, 0x41a5, 0x41a6, 0x41a7, + 0x41a8, 0x41a9, 0x41aa, 0x41ab, 0x41ac, 0x41ad, 0x41ae, 0x41af, + 0x41b0, 0x41b1, 0x41b2, 0x41b3, 0x41b4, 0x41b5, 0x41b6, 0x41b7, + 0x41b8, 0x41b9, 0x41ba, 0x41bb, 0x41bc, 0x41bd, 0x41be, 0x41bf, + 0x41c0, 0x41c1, 0x41c2, 0x41c3, 0x41c4, 0x41c5, 0x41c6, 0x41c7, + 0x41c8, 0x41c9, 0x41ca, 0x41cb, 0x41cc, 0x41cd, 0x41ce, 0x41cf, + 0x41d0, 0x41d1, 0x41d2, 0x41d3, 0x41d4, 0x41d5, 0x41d6, 0x41d7, + 0x41d8, 0x41d9, 0x41da, 0x41db, 0x41dc, 0x41dd, 0x41de, 0x41df, + 0x41e0, 0x41e1, 0x41e2, 0x41e3, 0x41e4, 0x41e5, 0x41e6, 0x41e7, + 0x41e8, 0x41e9, 0x41ea, 0x41eb, 0x41ec, 0x41ed, 0x41ee, 0x41ef, + 0x41f0, 0x41f1, 0x41f2, 0x41f3, 0x41f4, 0x41f5, 0x41f6, 0x41f7, + 0x41f8, 0x41f9, 0x41fa, 0x41fb, 0x41fc, 0x41fd, 0x41fe, 0x41ff, + 0x4200, 0x4201, 0x4202, 0x4203, 0x4204, 0x4205, 0x4206, 0x4207, + 0x4208, 0x4209, 0x420a, 0x420b, 0x420c, 0x420d, 0x420e, 0x420f, + 0x4210, 0x4211, 0x4212, 0x4213, 0x4214, 0x4215, 0x4216, 0x4217, + 0x4218, 0x4219, 0x421a, 0x421b, 0x421c, 0x421d, 0x421e, 0x421f, + 0x4220, 0x4221, 0x4222, 0x4223, 0x4224, 0x4225, 0x4226, 0x4227, + 0x4228, 0x4229, 0x422a, 0x422b, 0x422c, 0x422d, 0x422e, 0x422f, + 0x4230, 0x4231, 0x4232, 0x4233, 0x4234, 0x4235, 0x4236, 0x4237, + 0x4238, 0x4239, 0x423a, 0x423b, 0x423c, 0x423d, 0x423e, 0x423f, + 0x4240, 0x4241, 0x4242, 0x4243, 0x4244, 0x4245, 0x4246, 0x4247, + 0x4248, 0x4249, 0x424a, 0x424b, 0x424c, 0x424d, 0x424e, 0x424f, + 0x4250, 0x4251, 0x4252, 0x4253, 0x4254, 0x4255, 0x4256, 0x4257, + 0x4258, 0x4259, 0x425a, 0x425b, 0x425c, 0x425d, 0x425e, 0x425f, + 0x4260, 0x4261, 0x4262, 0x4263, 0x4264, 0x4265, 0x4266, 0x4267, + 0x4268, 0x4269, 0x426a, 0x426b, 0x426c, 0x426d, 0x426e, 0x426f, + 0x4270, 0x4271, 0x4272, 0x4273, 0x4274, 0x4275, 0x4276, 0x4277, + 0x4278, 0x4279, 0x427a, 0x427b, 0x427c, 0x427d, 0x427e, 0x427f, + 0x4280, 0x4281, 0x4282, 0x4283, 0x4284, 0x4285, 0x4286, 0x4287, + 0x4288, 0x4289, 0x428a, 0x428b, 0x428c, 0x428d, 0x428e, 0x428f, + 0x4290, 0x4291, 0x4292, 0x4293, 0x4294, 0x4295, 0x4296, 0x4297, + 0x4298, 0x4299, 0x429a, 0x429b, 0x429c, 0x429d, 0x429e, 0x429f, + 0x42a0, 0x42a1, 0x42a2, 0x42a3, 0x42a4, 0x42a5, 0x42a6, 0x42a7, + 0x42a8, 0x42a9, 0x42aa, 0x42ab, 0x42ac, 0x42ad, 0x42ae, 0x42af, + 0x42b0, 0x42b1, 0x42b2, 0x42b3, 0x42b4, 0x42b5, 0x42b6, 0x42b7, + 0x42b8, 0x42b9, 0x42ba, 0x42bb, 0x42bc, 0x42bd, 0x42be, 0x42bf, + 0x42c0, 0x42c1, 0x42c2, 0x42c3, 0x42c4, 0x42c5, 0x42c6, 0x42c7, + 0x42c8, 0x42c9, 0x42ca, 0x42cb, 0x42cc, 0x42cd, 0x42ce, 0x42cf, + 0x42d0, 0x42d1, 0x42d2, 0x42d3, 0x42d4, 0x42d5, 0x42d6, 0x42d7, + 0x42d8, 0x42d9, 0x42da, 0x42db, 0x42dc, 0x42dd, 0x42de, 0x42df, + 0x42e0, 0x42e1, 0x42e2, 0x42e3, 0x42e4, 0x42e5, 0x42e6, 0x42e7, + 0x42e8, 0x42e9, 0x42ea, 0x42eb, 0x42ec, 0x42ed, 0x42ee, 0x42ef, + 0x42f0, 0x42f1, 0x42f2, 0x42f3, 0x42f4, 0x42f5, 0x42f6, 0x42f7, + 0x42f8, 0x42f9, 0x42fa, 0x42fb, 0x42fc, 0x42fd, 0x42fe, 0x42ff, + 0x4300, 0x4301, 0x4302, 0x4303, 0x4304, 0x4305, 0x4306, 0x4307, + 0x4308, 0x4309, 0x430a, 0x430b, 0x430c, 0x430d, 0x430e, 0x430f, + 0x4310, 0x4311, 0x4312, 0x4313, 0x4314, 0x4315, 0x4316, 0x4317, + 0x4318, 0x4319, 0x431a, 0x431b, 0x431c, 0x431d, 0x431e, 0x431f, + 0x4320, 0x4321, 0x4322, 0x4323, 0x4324, 0x4325, 0x4326, 0x4327, + 0x4328, 0x4329, 0x432a, 0x432b, 0x432c, 0x432d, 0x432e, 0x432f, + 0x4330, 0x4331, 0x4332, 0x4333, 0x4334, 0x4335, 0x4336, 0x4337, + 0x4338, 0x4339, 0x433a, 0x433b, 0x433c, 0x433d, 0x433e, 0x433f, + 0x4340, 0x4341, 0x4342, 0x4343, 0x4344, 0x4345, 0x4346, 0x4347, + 0x4348, 0x4349, 0x434a, 0x434b, 0x434c, 0x434d, 0x434e, 0x434f, + 0x4350, 0x4351, 0x4352, 0x4353, 0x4354, 0x4355, 0x4356, 0x4357, + 0x4358, 0x4359, 0x435a, 0x435b, 0x435c, 0x435d, 0x435e, 0x435f, + 0x4360, 0x4361, 0x4362, 0x4363, 0x4364, 0x4365, 0x4366, 0x4367, + 0x4368, 0x4369, 0x436a, 0x436b, 0x436c, 0x436d, 0x436e, 0x436f, + 0x4370, 0x4371, 0x4372, 0x4373, 0x4374, 0x4375, 0x4376, 0x4377, + 0x4378, 0x4379, 0x437a, 0x437b, 0x437c, 0x437d, 0x437e, 0x437f, + 0x4380, 0x4381, 0x4382, 0x4383, 0x4384, 0x4385, 0x4386, 0x4387, + 0x4388, 0x4389, 0x438a, 0x438b, 0x438c, 0x438d, 0x438e, 0x438f, + 0x4390, 0x4391, 0x4392, 0x4393, 0x4394, 0x4395, 0x4396, 0x4397, + 0x4398, 0x4399, 0x439a, 0x439b, 0x439c, 0x439d, 0x439e, 0x439f, + 0x43a0, 0x43a1, 0x43a2, 0x43a3, 0x43a4, 0x43a5, 0x43a6, 0x43a7, + 0x43a8, 0x43a9, 0x43aa, 0x43ab, 0x43ac, 0x43ad, 0x43ae, 0x43af, + 0x43b0, 0x43b1, 0x43b2, 0x43b3, 0x43b4, 0x43b5, 0x43b6, 0x43b7, + 0x43b8, 0x43b9, 0x43ba, 0x43bb, 0x43bc, 0x43bd, 0x43be, 0x43bf, + 0x43c0, 0x43c1, 0x43c2, 0x43c3, 0x43c4, 0x43c5, 0x43c6, 0x43c7, + 0x43c8, 0x43c9, 0x43ca, 0x43cb, 0x43cc, 0x43cd, 0x43ce, 0x43cf, + 0x43d0, 0x43d1, 0x43d2, 0x43d3, 0x43d4, 0x43d5, 0x43d6, 0x43d7, + 0x43d8, 0x43d9, 0x43da, 0x43db, 0x43dc, 0x43dd, 0x43de, 0x43df, + 0x43e0, 0x43e1, 0x43e2, 0x43e3, 0x43e4, 0x43e5, 0x43e6, 0x43e7, + 0x43e8, 0x43e9, 0x43ea, 0x43eb, 0x43ec, 0x43ed, 0x43ee, 0x43ef, + 0x43f0, 0x43f1, 0x43f2, 0x43f3, 0x43f4, 0x43f5, 0x43f6, 0x43f7, + 0x43f8, 0x43f9, 0x43fa, 0x43fb, 0x43fc, 0x43fd, 0x43fe, 0x43ff, + 0x4400, 0x4401, 0x4402, 0x4403, 0x4404, 0x4405, 0x4406, 0x4407, + 0x4408, 0x4409, 0x440a, 0x440b, 0x440c, 0x440d, 0x440e, 0x440f, + 0x4410, 0x4411, 0x4412, 0x4413, 0x4414, 0x4415, 0x4416, 0x4417, + 0x4418, 0x4419, 0x441a, 0x441b, 0x441c, 0x441d, 0x441e, 0x441f, + 0x4420, 0x4421, 0x4422, 0x4423, 0x4424, 0x4425, 0x4426, 0x4427, + 0x4428, 0x4429, 0x442a, 0x442b, 0x442c, 0x442d, 0x442e, 0x442f, + 0x4430, 0x4431, 0x4432, 0x4433, 0x4434, 0x4435, 0x4436, 0x4437, + 0x4438, 0x4439, 0x443a, 0x443b, 0x443c, 0x443d, 0x443e, 0x443f, + 0x4440, 0x4441, 0x4442, 0x4443, 0x4444, 0x4445, 0x4446, 0x4447, + 0x4448, 0x4449, 0x444a, 0x444b, 0x444c, 0x444d, 0x444e, 0x444f, + 0x4450, 0x4451, 0x4452, 0x4453, 0x4454, 0x4455, 0x4456, 0x4457, + 0x4458, 0x4459, 0x445a, 0x445b, 0x445c, 0x445d, 0x445e, 0x445f, + 0x4460, 0x4461, 0x4462, 0x4463, 0x4464, 0x4465, 0x4466, 0x4467, + 0x4468, 0x4469, 0x446a, 0x446b, 0x446c, 0x446d, 0x446e, 0x446f, + 0x4470, 0x4471, 0x4472, 0x4473, 0x4474, 0x4475, 0x4476, 0x4477, + 0x4478, 0x4479, 0x447a, 0x447b, 0x447c, 0x447d, 0x447e, 0x447f, + 0x4480, 0x4481, 0x4482, 0x4483, 0x4484, 0x4485, 0x4486, 0x4487, + 0x4488, 0x4489, 0x448a, 0x448b, 0x448c, 0x448d, 0x448e, 0x448f, + 0x4490, 0x4491, 0x4492, 0x4493, 0x4494, 0x4495, 0x4496, 0x4497, + 0x4498, 0x4499, 0x449a, 0x449b, 0x449c, 0x449d, 0x449e, 0x449f, + 0x44a0, 0x44a1, 0x44a2, 0x44a3, 0x44a4, 0x44a5, 0x44a6, 0x44a7, + 0x44a8, 0x44a9, 0x44aa, 0x44ab, 0x44ac, 0x44ad, 0x44ae, 0x44af, + 0x44b0, 0x44b1, 0x44b2, 0x44b3, 0x44b4, 0x44b5, 0x44b6, 0x44b7, + 0x44b8, 0x44b9, 0x44ba, 0x44bb, 0x44bc, 0x44bd, 0x44be, 0x44bf, + 0x44c0, 0x44c1, 0x44c2, 0x44c3, 0x44c4, 0x44c5, 0x44c6, 0x44c7, + 0x44c8, 0x44c9, 0x44ca, 0x44cb, 0x44cc, 0x44cd, 0x44ce, 0x44cf, + 0x44d0, 0x44d1, 0x44d2, 0x44d3, 0x44d4, 0x44d5, 0x44d6, 0x44d7, + 0x44d8, 0x44d9, 0x44da, 0x44db, 0x44dc, 0x44dd, 0x44de, 0x44df, + 0x44e0, 0x44e1, 0x44e2, 0x44e3, 0x44e4, 0x44e5, 0x44e6, 0x44e7, + 0x44e8, 0x44e9, 0x44ea, 0x44eb, 0x44ec, 0x44ed, 0x44ee, 0x44ef, + 0x44f0, 0x44f1, 0x44f2, 0x44f3, 0x44f4, 0x44f5, 0x44f6, 0x44f7, + 0x44f8, 0x44f9, 0x44fa, 0x44fb, 0x44fc, 0x44fd, 0x44fe, 0x44ff, + 0x4500, 0x4501, 0x4502, 0x4503, 0x4504, 0x4505, 0x4506, 0x4507, + 0x4508, 0x4509, 0x450a, 0x450b, 0x450c, 0x450d, 0x450e, 0x450f, + 0x4510, 0x4511, 0x4512, 0x4513, 0x4514, 0x4515, 0x4516, 0x4517, + 0x4518, 0x4519, 0x451a, 0x451b, 0x451c, 0x451d, 0x451e, 0x451f, + 0x4520, 0x4521, 0x4522, 0x4523, 0x4524, 0x4525, 0x4526, 0x4527, + 0x4528, 0x4529, 0x452a, 0x452b, 0x452c, 0x452d, 0x452e, 0x452f, + 0x4530, 0x4531, 0x4532, 0x4533, 0x4534, 0x4535, 0x4536, 0x4537, + 0x4538, 0x4539, 0x453a, 0x453b, 0x453c, 0x453d, 0x453e, 0x453f, + 0x4540, 0x4541, 0x4542, 0x4543, 0x4544, 0x4545, 0x4546, 0x4547, + 0x4548, 0x4549, 0x454a, 0x454b, 0x454c, 0x454d, 0x454e, 0x454f, + 0x4550, 0x4551, 0x4552, 0x4553, 0x4554, 0x4555, 0x4556, 0x4557, + 0x4558, 0x4559, 0x455a, 0x455b, 0x455c, 0x455d, 0x455e, 0x455f, + 0x4560, 0x4561, 0x4562, 0x4563, 0x4564, 0x4565, 0x4566, 0x4567, + 0x4568, 0x4569, 0x456a, 0x456b, 0x456c, 0x456d, 0x456e, 0x456f, + 0x4570, 0x4571, 0x4572, 0x4573, 0x4574, 0x4575, 0x4576, 0x4577, + 0x4578, 0x4579, 0x457a, 0x457b, 0x457c, 0x457d, 0x457e, 0x457f, + 0x4580, 0x4581, 0x4582, 0x4583, 0x4584, 0x4585, 0x4586, 0x4587, + 0x4588, 0x4589, 0x458a, 0x458b, 0x458c, 0x458d, 0x458e, 0x458f, + 0x4590, 0x4591, 0x4592, 0x4593, 0x4594, 0x4595, 0x4596, 0x4597, + 0x4598, 0x4599, 0x459a, 0x459b, 0x459c, 0x459d, 0x459e, 0x459f, + 0x45a0, 0x45a1, 0x45a2, 0x45a3, 0x45a4, 0x45a5, 0x45a6, 0x45a7, + 0x45a8, 0x45a9, 0x45aa, 0x45ab, 0x45ac, 0x45ad, 0x45ae, 0x45af, + 0x45b0, 0x45b1, 0x45b2, 0x45b3, 0x45b4, 0x45b5, 0x45b6, 0x45b7, + 0x45b8, 0x45b9, 0x45ba, 0x45bb, 0x45bc, 0x45bd, 0x45be, 0x45bf, + 0x45c0, 0x45c1, 0x45c2, 0x45c3, 0x45c4, 0x45c5, 0x45c6, 0x45c7, + 0x45c8, 0x45c9, 0x45ca, 0x45cb, 0x45cc, 0x45cd, 0x45ce, 0x45cf, + 0x45d0, 0x45d1, 0x45d2, 0x45d3, 0x45d4, 0x45d5, 0x45d6, 0x45d7, + 0x45d8, 0x45d9, 0x45da, 0x45db, 0x45dc, 0x45dd, 0x45de, 0x45df, + 0x45e0, 0x45e1, 0x45e2, 0x45e3, 0x45e4, 0x45e5, 0x45e6, 0x45e7, + 0x45e8, 0x45e9, 0x45ea, 0x45eb, 0x45ec, 0x45ed, 0x45ee, 0x45ef, + 0x45f0, 0x45f1, 0x45f2, 0x45f3, 0x45f4, 0x45f5, 0x45f6, 0x45f7, + 0x45f8, 0x45f9, 0x45fa, 0x45fb, 0x45fc, 0x45fd, 0x45fe, 0x45ff, + 0x4600, 0x4601, 0x4602, 0x4603, 0x4604, 0x4605, 0x4606, 0x4607, + 0x4608, 0x4609, 0x460a, 0x460b, 0x460c, 0x460d, 0x460e, 0x460f, + 0x4610, 0x4611, 0x4612, 0x4613, 0x4614, 0x4615, 0x4616, 0x4617, + 0x4618, 0x4619, 0x461a, 0x461b, 0x461c, 0x461d, 0x461e, 0x461f, + 0x4620, 0x4621, 0x4622, 0x4623, 0x4624, 0x4625, 0x4626, 0x4627, + 0x4628, 0x4629, 0x462a, 0x462b, 0x462c, 0x462d, 0x462e, 0x462f, + 0x4630, 0x4631, 0x4632, 0x4633, 0x4634, 0x4635, 0x4636, 0x4637, + 0x4638, 0x4639, 0x463a, 0x463b, 0x463c, 0x463d, 0x463e, 0x463f, + 0x4640, 0x4641, 0x4642, 0x4643, 0x4644, 0x4645, 0x4646, 0x4647, + 0x4648, 0x4649, 0x464a, 0x464b, 0x464c, 0x464d, 0x464e, 0x464f, + 0x4650, 0x4651, 0x4652, 0x4653, 0x4654, 0x4655, 0x4656, 0x4657, + 0x4658, 0x4659, 0x465a, 0x465b, 0x465c, 0x465d, 0x465e, 0x465f, + 0x4660, 0x4661, 0x4662, 0x4663, 0x4664, 0x4665, 0x4666, 0x4667, + 0x4668, 0x4669, 0x466a, 0x466b, 0x466c, 0x466d, 0x466e, 0x466f, + 0x4670, 0x4671, 0x4672, 0x4673, 0x4674, 0x4675, 0x4676, 0x4677, + 0x4678, 0x4679, 0x467a, 0x467b, 0x467c, 0x467d, 0x467e, 0x467f, + 0x4680, 0x4681, 0x4682, 0x4683, 0x4684, 0x4685, 0x4686, 0x4687, + 0x4688, 0x4689, 0x468a, 0x468b, 0x468c, 0x468d, 0x468e, 0x468f, + 0x4690, 0x4691, 0x4692, 0x4693, 0x4694, 0x4695, 0x4696, 0x4697, + 0x4698, 0x4699, 0x469a, 0x469b, 0x469c, 0x469d, 0x469e, 0x469f, + 0x46a0, 0x46a1, 0x46a2, 0x46a3, 0x46a4, 0x46a5, 0x46a6, 0x46a7, + 0x46a8, 0x46a9, 0x46aa, 0x46ab, 0x46ac, 0x46ad, 0x46ae, 0x46af, + 0x46b0, 0x46b1, 0x46b2, 0x46b3, 0x46b4, 0x46b5, 0x46b6, 0x46b7, + 0x46b8, 0x46b9, 0x46ba, 0x46bb, 0x46bc, 0x46bd, 0x46be, 0x46bf, + 0x46c0, 0x46c1, 0x46c2, 0x46c3, 0x46c4, 0x46c5, 0x46c6, 0x46c7, + 0x46c8, 0x46c9, 0x46ca, 0x46cb, 0x46cc, 0x46cd, 0x46ce, 0x46cf, + 0x46d0, 0x46d1, 0x46d2, 0x46d3, 0x46d4, 0x46d5, 0x46d6, 0x46d7, + 0x46d8, 0x46d9, 0x46da, 0x46db, 0x46dc, 0x46dd, 0x46de, 0x46df, + 0x46e0, 0x46e1, 0x46e2, 0x46e3, 0x46e4, 0x46e5, 0x46e6, 0x46e7, + 0x46e8, 0x46e9, 0x46ea, 0x46eb, 0x46ec, 0x46ed, 0x46ee, 0x46ef, + 0x46f0, 0x46f1, 0x46f2, 0x46f3, 0x46f4, 0x46f5, 0x46f6, 0x46f7, + 0x46f8, 0x46f9, 0x46fa, 0x46fb, 0x46fc, 0x46fd, 0x46fe, 0x46ff, + 0x4700, 0x4701, 0x4702, 0x4703, 0x4704, 0x4705, 0x4706, 0x4707, + 0x4708, 0x4709, 0x470a, 0x470b, 0x470c, 0x470d, 0x470e, 0x470f, + 0x4710, 0x4711, 0x4712, 0x4713, 0x4714, 0x4715, 0x4716, 0x4717, + 0x4718, 0x4719, 0x471a, 0x471b, 0x471c, 0x471d, 0x471e, 0x471f, + 0x4720, 0x4721, 0x4722, 0x4723, 0x4724, 0x4725, 0x4726, 0x4727, + 0x4728, 0x4729, 0x472a, 0x472b, 0x472c, 0x472d, 0x472e, 0x472f, + 0x4730, 0x4731, 0x4732, 0x4733, 0x4734, 0x4735, 0x4736, 0x4737, + 0x4738, 0x4739, 0x473a, 0x473b, 0x473c, 0x473d, 0x473e, 0x473f, + 0x4740, 0x4741, 0x4742, 0x4743, 0x4744, 0x4745, 0x4746, 0x4747, + 0x4748, 0x4749, 0x474a, 0x474b, 0x474c, 0x474d, 0x474e, 0x474f, + 0x4750, 0x4751, 0x4752, 0x4753, 0x4754, 0x4755, 0x4756, 0x4757, + 0x4758, 0x4759, 0x475a, 0x475b, 0x475c, 0x475d, 0x475e, 0x475f, + 0x4760, 0x4761, 0x4762, 0x4763, 0x4764, 0x4765, 0x4766, 0x4767, + 0x4768, 0x4769, 0x476a, 0x476b, 0x476c, 0x476d, 0x476e, 0x476f, + 0x4770, 0x4771, 0x4772, 0x4773, 0x4774, 0x4775, 0x4776, 0x4777, + 0x4778, 0x4779, 0x477a, 0x477b, 0x477c, 0x477d, 0x477e, 0x477f, + 0x4780, 0x4781, 0x4782, 0x4783, 0x4784, 0x4785, 0x4786, 0x4787, + 0x4788, 0x4789, 0x478a, 0x478b, 0x478c, 0x478d, 0x478e, 0x478f, + 0x4790, 0x4791, 0x4792, 0x4793, 0x4794, 0x4795, 0x4796, 0x4797, + 0x4798, 0x4799, 0x479a, 0x479b, 0x479c, 0x479d, 0x479e, 0x479f, + 0x47a0, 0x47a1, 0x47a2, 0x47a3, 0x47a4, 0x47a5, 0x47a6, 0x47a7, + 0x47a8, 0x47a9, 0x47aa, 0x47ab, 0x47ac, 0x47ad, 0x47ae, 0x47af, + 0x47b0, 0x47b1, 0x47b2, 0x47b3, 0x47b4, 0x47b5, 0x47b6, 0x47b7, + 0x47b8, 0x47b9, 0x47ba, 0x47bb, 0x47bc, 0x47bd, 0x47be, 0x47bf, + 0x47c0, 0x47c1, 0x47c2, 0x47c3, 0x47c4, 0x47c5, 0x47c6, 0x47c7, + 0x47c8, 0x47c9, 0x47ca, 0x47cb, 0x47cc, 0x47cd, 0x47ce, 0x47cf, + 0x47d0, 0x47d1, 0x47d2, 0x47d3, 0x47d4, 0x47d5, 0x47d6, 0x47d7, + 0x47d8, 0x47d9, 0x47da, 0x47db, 0x47dc, 0x47dd, 0x47de, 0x47df, + 0x47e0, 0x47e1, 0x47e2, 0x47e3, 0x47e4, 0x47e5, 0x47e6, 0x47e7, + 0x47e8, 0x47e9, 0x47ea, 0x47eb, 0x47ec, 0x47ed, 0x47ee, 0x47ef, + 0x47f0, 0x47f1, 0x47f2, 0x47f3, 0x47f4, 0x47f5, 0x47f6, 0x47f7, + 0x47f8, 0x47f9, 0x47fa, 0x47fb, 0x47fc, 0x47fd, 0x47fe, 0x47ff, + 0x4800, 0x4801, 0x4802, 0x4803, 0x4804, 0x4805, 0x4806, 0x4807, + 0x4808, 0x4809, 0x480a, 0x480b, 0x480c, 0x480d, 0x480e, 0x480f, + 0x4810, 0x4811, 0x4812, 0x4813, 0x4814, 0x4815, 0x4816, 0x4817, + 0x4818, 0x4819, 0x481a, 0x481b, 0x481c, 0x481d, 0x481e, 0x481f, + 0x4820, 0x4821, 0x4822, 0x4823, 0x4824, 0x4825, 0x4826, 0x4827, + 0x4828, 0x4829, 0x482a, 0x482b, 0x482c, 0x482d, 0x482e, 0x482f, + 0x4830, 0x4831, 0x4832, 0x4833, 0x4834, 0x4835, 0x4836, 0x4837, + 0x4838, 0x4839, 0x483a, 0x483b, 0x483c, 0x483d, 0x483e, 0x483f, + 0x4840, 0x4841, 0x4842, 0x4843, 0x4844, 0x4845, 0x4846, 0x4847, + 0x4848, 0x4849, 0x484a, 0x484b, 0x484c, 0x484d, 0x484e, 0x484f, + 0x4850, 0x4851, 0x4852, 0x4853, 0x4854, 0x4855, 0x4856, 0x4857, + 0x4858, 0x4859, 0x485a, 0x485b, 0x485c, 0x485d, 0x485e, 0x485f, + 0x4860, 0x4861, 0x4862, 0x4863, 0x4864, 0x4865, 0x4866, 0x4867, + 0x4868, 0x4869, 0x486a, 0x486b, 0x486c, 0x486d, 0x486e, 0x486f, + 0x4870, 0x4871, 0x4872, 0x4873, 0x4874, 0x4875, 0x4876, 0x4877, + 0x4878, 0x4879, 0x487a, 0x487b, 0x487c, 0x487d, 0x487e, 0x487f, + 0x4880, 0x4881, 0x4882, 0x4883, 0x4884, 0x4885, 0x4886, 0x4887, + 0x4888, 0x4889, 0x488a, 0x488b, 0x488c, 0x488d, 0x488e, 0x488f, + 0x4890, 0x4891, 0x4892, 0x4893, 0x4894, 0x4895, 0x4896, 0x4897, + 0x4898, 0x4899, 0x489a, 0x489b, 0x489c, 0x489d, 0x489e, 0x489f, + 0x48a0, 0x48a1, 0x48a2, 0x48a3, 0x48a4, 0x48a5, 0x48a6, 0x48a7, + 0x48a8, 0x48a9, 0x48aa, 0x48ab, 0x48ac, 0x48ad, 0x48ae, 0x48af, + 0x48b0, 0x48b1, 0x48b2, 0x48b3, 0x48b4, 0x48b5, 0x48b6, 0x48b7, + 0x48b8, 0x48b9, 0x48ba, 0x48bb, 0x48bc, 0x48bd, 0x48be, 0x48bf, + 0x48c0, 0x48c1, 0x48c2, 0x48c3, 0x48c4, 0x48c5, 0x48c6, 0x48c7, + 0x48c8, 0x48c9, 0x48ca, 0x48cb, 0x48cc, 0x48cd, 0x48ce, 0x48cf, + 0x48d0, 0x48d1, 0x48d2, 0x48d3, 0x48d4, 0x48d5, 0x48d6, 0x48d7, + 0x48d8, 0x48d9, 0x48da, 0x48db, 0x48dc, 0x48dd, 0x48de, 0x48df, + 0x48e0, 0x48e1, 0x48e2, 0x48e3, 0x48e4, 0x48e5, 0x48e6, 0x48e7, + 0x48e8, 0x48e9, 0x48ea, 0x48eb, 0x48ec, 0x48ed, 0x48ee, 0x48ef, + 0x48f0, 0x48f1, 0x48f2, 0x48f3, 0x48f4, 0x48f5, 0x48f6, 0x48f7, + 0x48f8, 0x48f9, 0x48fa, 0x48fb, 0x48fc, 0x48fd, 0x48fe, 0x48ff, + 0x4900, 0x4901, 0x4902, 0x4903, 0x4904, 0x4905, 0x4906, 0x4907, + 0x4908, 0x4909, 0x490a, 0x490b, 0x490c, 0x490d, 0x490e, 0x490f, + 0x4910, 0x4911, 0x4912, 0x4913, 0x4914, 0x4915, 0x4916, 0x4917, + 0x4918, 0x4919, 0x491a, 0x491b, 0x491c, 0x491d, 0x491e, 0x491f, + 0x4920, 0x4921, 0x4922, 0x4923, 0x4924, 0x4925, 0x4926, 0x4927, + 0x4928, 0x4929, 0x492a, 0x492b, 0x492c, 0x492d, 0x492e, 0x492f, + 0x4930, 0x4931, 0x4932, 0x4933, 0x4934, 0x4935, 0x4936, 0x4937, + 0x4938, 0x4939, 0x493a, 0x493b, 0x493c, 0x493d, 0x493e, 0x493f, + 0x4940, 0x4941, 0x4942, 0x4943, 0x4944, 0x4945, 0x4946, 0x4947, + 0x4948, 0x4949, 0x494a, 0x494b, 0x494c, 0x494d, 0x494e, 0x494f, + 0x4950, 0x4951, 0x4952, 0x4953, 0x4954, 0x4955, 0x4956, 0x4957, + 0x4958, 0x4959, 0x495a, 0x495b, 0x495c, 0x495d, 0x495e, 0x495f, + 0x4960, 0x4961, 0x4962, 0x4963, 0x4964, 0x4965, 0x4966, 0x4967, + 0x4968, 0x4969, 0x496a, 0x496b, 0x496c, 0x496d, 0x496e, 0x496f, + 0x4970, 0x4971, 0x4972, 0x4973, 0x4974, 0x4975, 0x4976, 0x4977, + 0x4978, 0x4979, 0x497a, 0x497b, 0x497c, 0x497d, 0x497e, 0x497f, + 0x4980, 0x4981, 0x4982, 0x4983, 0x4984, 0x4985, 0x4986, 0x4987, + 0x4988, 0x4989, 0x498a, 0x498b, 0x498c, 0x498d, 0x498e, 0x498f, + 0x4990, 0x4991, 0x4992, 0x4993, 0x4994, 0x4995, 0x4996, 0x4997, + 0x4998, 0x4999, 0x499a, 0x499b, 0x499c, 0x499d, 0x499e, 0x499f, + 0x49a0, 0x49a1, 0x49a2, 0x49a3, 0x49a4, 0x49a5, 0x49a6, 0x49a7, + 0x49a8, 0x49a9, 0x49aa, 0x49ab, 0x49ac, 0x49ad, 0x49ae, 0x49af, + 0x49b0, 0x49b1, 0x49b2, 0x49b3, 0x49b4, 0x49b5, 0x49b6, 0x49b7, + 0x49b8, 0x49b9, 0x49ba, 0x49bb, 0x49bc, 0x49bd, 0x49be, 0x49bf, + 0x49c0, 0x49c1, 0x49c2, 0x49c3, 0x49c4, 0x49c5, 0x49c6, 0x49c7, + 0x49c8, 0x49c9, 0x49ca, 0x49cb, 0x49cc, 0x49cd, 0x49ce, 0x49cf, + 0x49d0, 0x49d1, 0x49d2, 0x49d3, 0x49d4, 0x49d5, 0x49d6, 0x49d7, + 0x49d8, 0x49d9, 0x49da, 0x49db, 0x49dc, 0x49dd, 0x49de, 0x49df, + 0x49e0, 0x49e1, 0x49e2, 0x49e3, 0x49e4, 0x49e5, 0x49e6, 0x49e7, + 0x49e8, 0x49e9, 0x49ea, 0x49eb, 0x49ec, 0x49ed, 0x49ee, 0x49ef, + 0x49f0, 0x49f1, 0x49f2, 0x49f3, 0x49f4, 0x49f5, 0x49f6, 0x49f7, + 0x49f8, 0x49f9, 0x49fa, 0x49fb, 0x49fc, 0x49fd, 0x49fe, 0x49ff, + 0x4a00, 0x4a01, 0x4a02, 0x4a03, 0x4a04, 0x4a05, 0x4a06, 0x4a07, + 0x4a08, 0x4a09, 0x4a0a, 0x4a0b, 0x4a0c, 0x4a0d, 0x4a0e, 0x4a0f, + 0x4a10, 0x4a11, 0x4a12, 0x4a13, 0x4a14, 0x4a15, 0x4a16, 0x4a17, + 0x4a18, 0x4a19, 0x4a1a, 0x4a1b, 0x4a1c, 0x4a1d, 0x4a1e, 0x4a1f, + 0x4a20, 0x4a21, 0x4a22, 0x4a23, 0x4a24, 0x4a25, 0x4a26, 0x4a27, + 0x4a28, 0x4a29, 0x4a2a, 0x4a2b, 0x4a2c, 0x4a2d, 0x4a2e, 0x4a2f, + 0x4a30, 0x4a31, 0x4a32, 0x4a33, 0x4a34, 0x4a35, 0x4a36, 0x4a37, + 0x4a38, 0x4a39, 0x4a3a, 0x4a3b, 0x4a3c, 0x4a3d, 0x4a3e, 0x4a3f, + 0x4a40, 0x4a41, 0x4a42, 0x4a43, 0x4a44, 0x4a45, 0x4a46, 0x4a47, + 0x4a48, 0x4a49, 0x4a4a, 0x4a4b, 0x4a4c, 0x4a4d, 0x4a4e, 0x4a4f, + 0x4a50, 0x4a51, 0x4a52, 0x4a53, 0x4a54, 0x4a55, 0x4a56, 0x4a57, + 0x4a58, 0x4a59, 0x4a5a, 0x4a5b, 0x4a5c, 0x4a5d, 0x4a5e, 0x4a5f, + 0x4a60, 0x4a61, 0x4a62, 0x4a63, 0x4a64, 0x4a65, 0x4a66, 0x4a67, + 0x4a68, 0x4a69, 0x4a6a, 0x4a6b, 0x4a6c, 0x4a6d, 0x4a6e, 0x4a6f, + 0x4a70, 0x4a71, 0x4a72, 0x4a73, 0x4a74, 0x4a75, 0x4a76, 0x4a77, + 0x4a78, 0x4a79, 0x4a7a, 0x4a7b, 0x4a7c, 0x4a7d, 0x4a7e, 0x4a7f, + 0x4a80, 0x4a81, 0x4a82, 0x4a83, 0x4a84, 0x4a85, 0x4a86, 0x4a87, + 0x4a88, 0x4a89, 0x4a8a, 0x4a8b, 0x4a8c, 0x4a8d, 0x4a8e, 0x4a8f, + 0x4a90, 0x4a91, 0x4a92, 0x4a93, 0x4a94, 0x4a95, 0x4a96, 0x4a97, + 0x4a98, 0x4a99, 0x4a9a, 0x4a9b, 0x4a9c, 0x4a9d, 0x4a9e, 0x4a9f, + 0x4aa0, 0x4aa1, 0x4aa2, 0x4aa3, 0x4aa4, 0x4aa5, 0x4aa6, 0x4aa7, + 0x4aa8, 0x4aa9, 0x4aaa, 0x4aab, 0x4aac, 0x4aad, 0x4aae, 0x4aaf, + 0x4ab0, 0x4ab1, 0x4ab2, 0x4ab3, 0x4ab4, 0x4ab5, 0x4ab6, 0x4ab7, + 0x4ab8, 0x4ab9, 0x4aba, 0x4abb, 0x4abc, 0x4abd, 0x4abe, 0x4abf, + 0x4ac0, 0x4ac1, 0x4ac2, 0x4ac3, 0x4ac4, 0x4ac5, 0x4ac6, 0x4ac7, + 0x4ac8, 0x4ac9, 0x4aca, 0x4acb, 0x4acc, 0x4acd, 0x4ace, 0x4acf, + 0x4ad0, 0x4ad1, 0x4ad2, 0x4ad3, 0x4ad4, 0x4ad5, 0x4ad6, 0x4ad7, + 0x4ad8, 0x4ad9, 0x4ada, 0x4adb, 0x4adc, 0x4add, 0x4ade, 0x4adf, + 0x4ae0, 0x4ae1, 0x4ae2, 0x4ae3, 0x4ae4, 0x4ae5, 0x4ae6, 0x4ae7, + 0x4ae8, 0x4ae9, 0x4aea, 0x4aeb, 0x4aec, 0x4aed, 0x4aee, 0x4aef, + 0x4af0, 0x4af1, 0x4af2, 0x4af3, 0x4af4, 0x4af5, 0x4af6, 0x4af7, + 0x4af8, 0x4af9, 0x4afa, 0x4afb, 0x4afc, 0x4afd, 0x4afe, 0x4aff, + 0x4b00, 0x4b01, 0x4b02, 0x4b03, 0x4b04, 0x4b05, 0x4b06, 0x4b07, + 0x4b08, 0x4b09, 0x4b0a, 0x4b0b, 0x4b0c, 0x4b0d, 0x4b0e, 0x4b0f, + 0x4b10, 0x4b11, 0x4b12, 0x4b13, 0x4b14, 0x4b15, 0x4b16, 0x4b17, + 0x4b18, 0x4b19, 0x4b1a, 0x4b1b, 0x4b1c, 0x4b1d, 0x4b1e, 0x4b1f, + 0x4b20, 0x4b21, 0x4b22, 0x4b23, 0x4b24, 0x4b25, 0x4b26, 0x4b27, + 0x4b28, 0x4b29, 0x4b2a, 0x4b2b, 0x4b2c, 0x4b2d, 0x4b2e, 0x4b2f, + 0x4b30, 0x4b31, 0x4b32, 0x4b33, 0x4b34, 0x4b35, 0x4b36, 0x4b37, + 0x4b38, 0x4b39, 0x4b3a, 0x4b3b, 0x4b3c, 0x4b3d, 0x4b3e, 0x4b3f, + 0x4b40, 0x4b41, 0x4b42, 0x4b43, 0x4b44, 0x4b45, 0x4b46, 0x4b47, + 0x4b48, 0x4b49, 0x4b4a, 0x4b4b, 0x4b4c, 0x4b4d, 0x4b4e, 0x4b4f, + 0x4b50, 0x4b51, 0x4b52, 0x4b53, 0x4b54, 0x4b55, 0x4b56, 0x4b57, + 0x4b58, 0x4b59, 0x4b5a, 0x4b5b, 0x4b5c, 0x4b5d, 0x4b5e, 0x4b5f, + 0x4b60, 0x4b61, 0x4b62, 0x4b63, 0x4b64, 0x4b65, 0x4b66, 0x4b67, + 0x4b68, 0x4b69, 0x4b6a, 0x4b6b, 0x4b6c, 0x4b6d, 0x4b6e, 0x4b6f, + 0x4b70, 0x4b71, 0x4b72, 0x4b73, 0x4b74, 0x4b75, 0x4b76, 0x4b77, + 0x4b78, 0x4b79, 0x4b7a, 0x4b7b, 0x4b7c, 0x4b7d, 0x4b7e, 0x4b7f, + 0x4b80, 0x4b81, 0x4b82, 0x4b83, 0x4b84, 0x4b85, 0x4b86, 0x4b87, + 0x4b88, 0x4b89, 0x4b8a, 0x4b8b, 0x4b8c, 0x4b8d, 0x4b8e, 0x4b8f, + 0x4b90, 0x4b91, 0x4b92, 0x4b93, 0x4b94, 0x4b95, 0x4b96, 0x4b97, + 0x4b98, 0x4b99, 0x4b9a, 0x4b9b, 0x4b9c, 0x4b9d, 0x4b9e, 0x4b9f, + 0x4ba0, 0x4ba1, 0x4ba2, 0x4ba3, 0x4ba4, 0x4ba5, 0x4ba6, 0x4ba7, + 0x4ba8, 0x4ba9, 0x4baa, 0x4bab, 0x4bac, 0x4bad, 0x4bae, 0x4baf, + 0x4bb0, 0x4bb1, 0x4bb2, 0x4bb3, 0x4bb4, 0x4bb5, 0x4bb6, 0x4bb7, + 0x4bb8, 0x4bb9, 0x4bba, 0x4bbb, 0x4bbc, 0x4bbd, 0x4bbe, 0x4bbf, + 0x4bc0, 0x4bc1, 0x4bc2, 0x4bc3, 0x4bc4, 0x4bc5, 0x4bc6, 0x4bc7, + 0x4bc8, 0x4bc9, 0x4bca, 0x4bcb, 0x4bcc, 0x4bcd, 0x4bce, 0x4bcf, + 0x4bd0, 0x4bd1, 0x4bd2, 0x4bd3, 0x4bd4, 0x4bd5, 0x4bd6, 0x4bd7, + 0x4bd8, 0x4bd9, 0x4bda, 0x4bdb, 0x4bdc, 0x4bdd, 0x4bde, 0x4bdf, + 0x4be0, 0x4be1, 0x4be2, 0x4be3, 0x4be4, 0x4be5, 0x4be6, 0x4be7, + 0x4be8, 0x4be9, 0x4bea, 0x4beb, 0x4bec, 0x4bed, 0x4bee, 0x4bef, + 0x4bf0, 0x4bf1, 0x4bf2, 0x4bf3, 0x4bf4, 0x4bf5, 0x4bf6, 0x4bf7, + 0x4bf8, 0x4bf9, 0x4bfa, 0x4bfb, 0x4bfc, 0x4bfd, 0x4bfe, 0x4bff, + 0x4c00, 0x4c01, 0x4c02, 0x4c03, 0x4c04, 0x4c05, 0x4c06, 0x4c07, + 0x4c08, 0x4c09, 0x4c0a, 0x4c0b, 0x4c0c, 0x4c0d, 0x4c0e, 0x4c0f, + 0x4c10, 0x4c11, 0x4c12, 0x4c13, 0x4c14, 0x4c15, 0x4c16, 0x4c17, + 0x4c18, 0x4c19, 0x4c1a, 0x4c1b, 0x4c1c, 0x4c1d, 0x4c1e, 0x4c1f, + 0x4c20, 0x4c21, 0x4c22, 0x4c23, 0x4c24, 0x4c25, 0x4c26, 0x4c27, + 0x4c28, 0x4c29, 0x4c2a, 0x4c2b, 0x4c2c, 0x4c2d, 0x4c2e, 0x4c2f, + 0x4c30, 0x4c31, 0x4c32, 0x4c33, 0x4c34, 0x4c35, 0x4c36, 0x4c37, + 0x4c38, 0x4c39, 0x4c3a, 0x4c3b, 0x4c3c, 0x4c3d, 0x4c3e, 0x4c3f, + 0x4c40, 0x4c41, 0x4c42, 0x4c43, 0x4c44, 0x4c45, 0x4c46, 0x4c47, + 0x4c48, 0x4c49, 0x4c4a, 0x4c4b, 0x4c4c, 0x4c4d, 0x4c4e, 0x4c4f, + 0x4c50, 0x4c51, 0x4c52, 0x4c53, 0x4c54, 0x4c55, 0x4c56, 0x4c57, + 0x4c58, 0x4c59, 0x4c5a, 0x4c5b, 0x4c5c, 0x4c5d, 0x4c5e, 0x4c5f, + 0x4c60, 0x4c61, 0x4c62, 0x4c63, 0x4c64, 0x4c65, 0x4c66, 0x4c67, + 0x4c68, 0x4c69, 0x4c6a, 0x4c6b, 0x4c6c, 0x4c6d, 0x4c6e, 0x4c6f, + 0x4c70, 0x4c71, 0x4c72, 0x4c73, 0x4c74, 0x4c75, 0x4c76, 0x4c77, + 0x4c78, 0x4c79, 0x4c7a, 0x4c7b, 0x4c7c, 0x4c7d, 0x4c7e, 0x4c7f, + 0x4c80, 0x4c81, 0x4c82, 0x4c83, 0x4c84, 0x4c85, 0x4c86, 0x4c87, + 0x4c88, 0x4c89, 0x4c8a, 0x4c8b, 0x4c8c, 0x4c8d, 0x4c8e, 0x4c8f, + 0x4c90, 0x4c91, 0x4c92, 0x4c93, 0x4c94, 0x4c95, 0x4c96, 0x4c97, + 0x4c98, 0x4c99, 0x4c9a, 0x4c9b, 0x4c9c, 0x4c9d, 0x4c9e, 0x4c9f, + 0x4ca0, 0x4ca1, 0x4ca2, 0x4ca3, 0x4ca4, 0x4ca5, 0x4ca6, 0x4ca7, + 0x4ca8, 0x4ca9, 0x4caa, 0x4cab, 0x4cac, 0x4cad, 0x4cae, 0x4caf, + 0x4cb0, 0x4cb1, 0x4cb2, 0x4cb3, 0x4cb4, 0x4cb5, 0x4cb6, 0x4cb7, + 0x4cb8, 0x4cb9, 0x4cba, 0x4cbb, 0x4cbc, 0x4cbd, 0x4cbe, 0x4cbf, + 0x4cc0, 0x4cc1, 0x4cc2, 0x4cc3, 0x4cc4, 0x4cc5, 0x4cc6, 0x4cc7, + 0x4cc8, 0x4cc9, 0x4cca, 0x4ccb, 0x4ccc, 0x4ccd, 0x4cce, 0x4ccf, + 0x4cd0, 0x4cd1, 0x4cd2, 0x4cd3, 0x4cd4, 0x4cd5, 0x4cd6, 0x4cd7, + 0x4cd8, 0x4cd9, 0x4cda, 0x4cdb, 0x4cdc, 0x4cdd, 0x4cde, 0x4cdf, + 0x4ce0, 0x4ce1, 0x4ce2, 0x4ce3, 0x4ce4, 0x4ce5, 0x4ce6, 0x4ce7, + 0x4ce8, 0x4ce9, 0x4cea, 0x4ceb, 0x4cec, 0x4ced, 0x4cee, 0x4cef, + 0x4cf0, 0x4cf1, 0x4cf2, 0x4cf3, 0x4cf4, 0x4cf5, 0x4cf6, 0x4cf7, + 0x4cf8, 0x4cf9, 0x4cfa, 0x4cfb, 0x4cfc, 0x4cfd, 0x4cfe, 0x4cff, + 0x4d00, 0x4d01, 0x4d02, 0x4d03, 0x4d04, 0x4d05, 0x4d06, 0x4d07, + 0x4d08, 0x4d09, 0x4d0a, 0x4d0b, 0x4d0c, 0x4d0d, 0x4d0e, 0x4d0f, + 0x4d10, 0x4d11, 0x4d12, 0x4d13, 0x4d14, 0x4d15, 0x4d16, 0x4d17, + 0x4d18, 0x4d19, 0x4d1a, 0x4d1b, 0x4d1c, 0x4d1d, 0x4d1e, 0x4d1f, + 0x4d20, 0x4d21, 0x4d22, 0x4d23, 0x4d24, 0x4d25, 0x4d26, 0x4d27, + 0x4d28, 0x4d29, 0x4d2a, 0x4d2b, 0x4d2c, 0x4d2d, 0x4d2e, 0x4d2f, + 0x4d30, 0x4d31, 0x4d32, 0x4d33, 0x4d34, 0x4d35, 0x4d36, 0x4d37, + 0x4d38, 0x4d39, 0x4d3a, 0x4d3b, 0x4d3c, 0x4d3d, 0x4d3e, 0x4d3f, + 0x4d40, 0x4d41, 0x4d42, 0x4d43, 0x4d44, 0x4d45, 0x4d46, 0x4d47, + 0x4d48, 0x4d49, 0x4d4a, 0x4d4b, 0x4d4c, 0x4d4d, 0x4d4e, 0x4d4f, + 0x4d50, 0x4d51, 0x4d52, 0x4d53, 0x4d54, 0x4d55, 0x4d56, 0x4d57, + 0x4d58, 0x4d59, 0x4d5a, 0x4d5b, 0x4d5c, 0x4d5d, 0x4d5e, 0x4d5f, + 0x4d60, 0x4d61, 0x4d62, 0x4d63, 0x4d64, 0x4d65, 0x4d66, 0x4d67, + 0x4d68, 0x4d69, 0x4d6a, 0x4d6b, 0x4d6c, 0x4d6d, 0x4d6e, 0x4d6f, + 0x4d70, 0x4d71, 0x4d72, 0x4d73, 0x4d74, 0x4d75, 0x4d76, 0x4d77, + 0x4d78, 0x4d79, 0x4d7a, 0x4d7b, 0x4d7c, 0x4d7d, 0x4d7e, 0x4d7f, + 0x4d80, 0x4d81, 0x4d82, 0x4d83, 0x4d84, 0x4d85, 0x4d86, 0x4d87, + 0x4d88, 0x4d89, 0x4d8a, 0x4d8b, 0x4d8c, 0x4d8d, 0x4d8e, 0x4d8f, + 0x4d90, 0x4d91, 0x4d92, 0x4d93, 0x4d94, 0x4d95, 0x4d96, 0x4d97, + 0x4d98, 0x4d99, 0x4d9a, 0x4d9b, 0x4d9c, 0x4d9d, 0x4d9e, 0x4d9f, + 0x4da0, 0x4da1, 0x4da2, 0x4da3, 0x4da4, 0x4da5, 0x4da6, 0x4da7, + 0x4da8, 0x4da9, 0x4daa, 0x4dab, 0x4dac, 0x4dad, 0x4dae, 0x4daf, + 0x4db0, 0x4db1, 0x4db2, 0x4db3, 0x4db4, 0x4db5, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4dc0, 0x4dc1, 0x4dc2, 0x4dc3, 0x4dc4, 0x4dc5, 0x4dc6, 0x4dc7, + 0x4dc8, 0x4dc9, 0x4dca, 0x4dcb, 0x4dcc, 0x4dcd, 0x4dce, 0x4dcf, + 0x4dd0, 0x4dd1, 0x4dd2, 0x4dd3, 0x4dd4, 0x4dd5, 0x4dd6, 0x4dd7, + 0x4dd8, 0x4dd9, 0x4dda, 0x4ddb, 0x4ddc, 0x4ddd, 0x4dde, 0x4ddf, + 0x4de0, 0x4de1, 0x4de2, 0x4de3, 0x4de4, 0x4de5, 0x4de6, 0x4de7, + 0x4de8, 0x4de9, 0x4dea, 0x4deb, 0x4dec, 0x4ded, 0x4dee, 0x4def, + 0x4df0, 0x4df1, 0x4df2, 0x4df3, 0x4df4, 0x4df5, 0x4df6, 0x4df7, + 0x4df8, 0x4df9, 0x4dfa, 0x4dfb, 0x4dfc, 0x4dfd, 0x4dfe, 0x4dff, + 0x4e00, 0x4e01, 0x4e02, 0x4e03, 0x4e04, 0x4e05, 0x4e06, 0x4e07, + 0x4e08, 0x4e09, 0x4e0a, 0x4e0b, 0x4e0c, 0x4e0d, 0x4e0e, 0x4e0f, + 0x4e10, 0x4e11, 0x4e12, 0x4e13, 0x4e14, 0x4e15, 0x4e16, 0x4e17, + 0x4e18, 0x4e19, 0x4e1a, 0x4e1b, 0x4e1c, 0x4e1d, 0x4e1e, 0x4e1f, + 0x4e20, 0x4e21, 0x4e22, 0x4e23, 0x4e24, 0x4e25, 0x4e26, 0x4e27, + 0x4e28, 0x4e29, 0x4e2a, 0x4e2b, 0x4e2c, 0x4e2d, 0x4e2e, 0x4e2f, + 0x4e30, 0x4e31, 0x4e32, 0x4e33, 0x4e34, 0x4e35, 0x4e36, 0x4e37, + 0x4e38, 0x4e39, 0x4e3a, 0x4e3b, 0x4e3c, 0x4e3d, 0x4e3e, 0x4e3f, + 0x4e40, 0x4e41, 0x4e42, 0x4e43, 0x4e44, 0x4e45, 0x4e46, 0x4e47, + 0x4e48, 0x4e49, 0x4e4a, 0x4e4b, 0x4e4c, 0x4e4d, 0x4e4e, 0x4e4f, + 0x4e50, 0x4e51, 0x4e52, 0x4e53, 0x4e54, 0x4e55, 0x4e56, 0x4e57, + 0x4e58, 0x4e59, 0x4e5a, 0x4e5b, 0x4e5c, 0x4e5d, 0x4e5e, 0x4e5f, + 0x4e60, 0x4e61, 0x4e62, 0x4e63, 0x4e64, 0x4e65, 0x4e66, 0x4e67, + 0x4e68, 0x4e69, 0x4e6a, 0x4e6b, 0x4e6c, 0x4e6d, 0x4e6e, 0x4e6f, + 0x4e70, 0x4e71, 0x4e72, 0x4e73, 0x4e74, 0x4e75, 0x4e76, 0x4e77, + 0x4e78, 0x4e79, 0x4e7a, 0x4e7b, 0x4e7c, 0x4e7d, 0x4e7e, 0x4e7f, + 0x4e80, 0x4e81, 0x4e82, 0x4e83, 0x4e84, 0x4e85, 0x4e86, 0x4e87, + 0x4e88, 0x4e89, 0x4e8a, 0x4e8b, 0x4e8c, 0x4e8d, 0x4e8e, 0x4e8f, + 0x4e90, 0x4e91, 0x4e92, 0x4e93, 0x4e94, 0x4e95, 0x4e96, 0x4e97, + 0x4e98, 0x4e99, 0x4e9a, 0x4e9b, 0x4e9c, 0x4e9d, 0x4e9e, 0x4e9f, + 0x4ea0, 0x4ea1, 0x4ea2, 0x4ea3, 0x4ea4, 0x4ea5, 0x4ea6, 0x4ea7, + 0x4ea8, 0x4ea9, 0x4eaa, 0x4eab, 0x4eac, 0x4ead, 0x4eae, 0x4eaf, + 0x4eb0, 0x4eb1, 0x4eb2, 0x4eb3, 0x4eb4, 0x4eb5, 0x4eb6, 0x4eb7, + 0x4eb8, 0x4eb9, 0x4eba, 0x4ebb, 0x4ebc, 0x4ebd, 0x4ebe, 0x4ebf, + 0x4ec0, 0x4ec1, 0x4ec2, 0x4ec3, 0x4ec4, 0x4ec5, 0x4ec6, 0x4ec7, + 0x4ec8, 0x4ec9, 0x4eca, 0x4ecb, 0x4ecc, 0x4ecd, 0x4ece, 0x4ecf, + 0x4ed0, 0x4ed1, 0x4ed2, 0x4ed3, 0x4ed4, 0x4ed5, 0x4ed6, 0x4ed7, + 0x4ed8, 0x4ed9, 0x4eda, 0x4edb, 0x4edc, 0x4edd, 0x4ede, 0x4edf, + 0x4ee0, 0x4ee1, 0x4ee2, 0x4ee3, 0x4ee4, 0x4ee5, 0x4ee6, 0x4ee7, + 0x4ee8, 0x4ee9, 0x4eea, 0x4eeb, 0x4eec, 0x4eed, 0x4eee, 0x4eef, + 0x4ef0, 0x4ef1, 0x4ef2, 0x4ef3, 0x4ef4, 0x4ef5, 0x4ef6, 0x4ef7, + 0x4ef8, 0x4ef9, 0x4efa, 0x4efb, 0x4efc, 0x4efd, 0x4efe, 0x4eff, + 0x4f00, 0x4f01, 0x4f02, 0x4f03, 0x4f04, 0x4f05, 0x4f06, 0x4f07, + 0x4f08, 0x4f09, 0x4f0a, 0x4f0b, 0x4f0c, 0x4f0d, 0x4f0e, 0x4f0f, + 0x4f10, 0x4f11, 0x4f12, 0x4f13, 0x4f14, 0x4f15, 0x4f16, 0x4f17, + 0x4f18, 0x4f19, 0x4f1a, 0x4f1b, 0x4f1c, 0x4f1d, 0x4f1e, 0x4f1f, + 0x4f20, 0x4f21, 0x4f22, 0x4f23, 0x4f24, 0x4f25, 0x4f26, 0x4f27, + 0x4f28, 0x4f29, 0x4f2a, 0x4f2b, 0x4f2c, 0x4f2d, 0x4f2e, 0x4f2f, + 0x4f30, 0x4f31, 0x4f32, 0x4f33, 0x4f34, 0x4f35, 0x4f36, 0x4f37, + 0x4f38, 0x4f39, 0x4f3a, 0x4f3b, 0x4f3c, 0x4f3d, 0x4f3e, 0x4f3f, + 0x4f40, 0x4f41, 0x4f42, 0x4f43, 0x4f44, 0x4f45, 0x4f46, 0x4f47, + 0x4f48, 0x4f49, 0x4f4a, 0x4f4b, 0x4f4c, 0x4f4d, 0x4f4e, 0x4f4f, + 0x4f50, 0x4f51, 0x4f52, 0x4f53, 0x4f54, 0x4f55, 0x4f56, 0x4f57, + 0x4f58, 0x4f59, 0x4f5a, 0x4f5b, 0x4f5c, 0x4f5d, 0x4f5e, 0x4f5f, + 0x4f60, 0x4f61, 0x4f62, 0x4f63, 0x4f64, 0x4f65, 0x4f66, 0x4f67, + 0x4f68, 0x4f69, 0x4f6a, 0x4f6b, 0x4f6c, 0x4f6d, 0x4f6e, 0x4f6f, + 0x4f70, 0x4f71, 0x4f72, 0x4f73, 0x4f74, 0x4f75, 0x4f76, 0x4f77, + 0x4f78, 0x4f79, 0x4f7a, 0x4f7b, 0x4f7c, 0x4f7d, 0x4f7e, 0x4f7f, + 0x4f80, 0x4f81, 0x4f82, 0x4f83, 0x4f84, 0x4f85, 0x4f86, 0x4f87, + 0x4f88, 0x4f89, 0x4f8a, 0x4f8b, 0x4f8c, 0x4f8d, 0x4f8e, 0x4f8f, + 0x4f90, 0x4f91, 0x4f92, 0x4f93, 0x4f94, 0x4f95, 0x4f96, 0x4f97, + 0x4f98, 0x4f99, 0x4f9a, 0x4f9b, 0x4f9c, 0x4f9d, 0x4f9e, 0x4f9f, + 0x4fa0, 0x4fa1, 0x4fa2, 0x4fa3, 0x4fa4, 0x4fa5, 0x4fa6, 0x4fa7, + 0x4fa8, 0x4fa9, 0x4faa, 0x4fab, 0x4fac, 0x4fad, 0x4fae, 0x4faf, + 0x4fb0, 0x4fb1, 0x4fb2, 0x4fb3, 0x4fb4, 0x4fb5, 0x4fb6, 0x4fb7, + 0x4fb8, 0x4fb9, 0x4fba, 0x4fbb, 0x4fbc, 0x4fbd, 0x4fbe, 0x4fbf, + 0x4fc0, 0x4fc1, 0x4fc2, 0x4fc3, 0x4fc4, 0x4fc5, 0x4fc6, 0x4fc7, + 0x4fc8, 0x4fc9, 0x4fca, 0x4fcb, 0x4fcc, 0x4fcd, 0x4fce, 0x4fcf, + 0x4fd0, 0x4fd1, 0x4fd2, 0x4fd3, 0x4fd4, 0x4fd5, 0x4fd6, 0x4fd7, + 0x4fd8, 0x4fd9, 0x4fda, 0x4fdb, 0x4fdc, 0x4fdd, 0x4fde, 0x4fdf, + 0x4fe0, 0x4fe1, 0x4fe2, 0x4fe3, 0x4fe4, 0x4fe5, 0x4fe6, 0x4fe7, + 0x4fe8, 0x4fe9, 0x4fea, 0x4feb, 0x4fec, 0x4fed, 0x4fee, 0x4fef, + 0x4ff0, 0x4ff1, 0x4ff2, 0x4ff3, 0x4ff4, 0x4ff5, 0x4ff6, 0x4ff7, + 0x4ff8, 0x4ff9, 0x4ffa, 0x4ffb, 0x4ffc, 0x4ffd, 0x4ffe, 0x4fff, + 0x5000, 0x5001, 0x5002, 0x5003, 0x5004, 0x5005, 0x5006, 0x5007, + 0x5008, 0x5009, 0x500a, 0x500b, 0x500c, 0x500d, 0x500e, 0x500f, + 0x5010, 0x5011, 0x5012, 0x5013, 0x5014, 0x5015, 0x5016, 0x5017, + 0x5018, 0x5019, 0x501a, 0x501b, 0x501c, 0x501d, 0x501e, 0x501f, + 0x5020, 0x5021, 0x5022, 0x5023, 0x5024, 0x5025, 0x5026, 0x5027, + 0x5028, 0x5029, 0x502a, 0x502b, 0x502c, 0x502d, 0x502e, 0x502f, + 0x5030, 0x5031, 0x5032, 0x5033, 0x5034, 0x5035, 0x5036, 0x5037, + 0x5038, 0x5039, 0x503a, 0x503b, 0x503c, 0x503d, 0x503e, 0x503f, + 0x5040, 0x5041, 0x5042, 0x5043, 0x5044, 0x5045, 0x5046, 0x5047, + 0x5048, 0x5049, 0x504a, 0x504b, 0x504c, 0x504d, 0x504e, 0x504f, + 0x5050, 0x5051, 0x5052, 0x5053, 0x5054, 0x5055, 0x5056, 0x5057, + 0x5058, 0x5059, 0x505a, 0x505b, 0x505c, 0x505d, 0x505e, 0x505f, + 0x5060, 0x5061, 0x5062, 0x5063, 0x5064, 0x5065, 0x5066, 0x5067, + 0x5068, 0x5069, 0x506a, 0x506b, 0x506c, 0x506d, 0x506e, 0x506f, + 0x5070, 0x5071, 0x5072, 0x5073, 0x5074, 0x5075, 0x5076, 0x5077, + 0x5078, 0x5079, 0x507a, 0x507b, 0x507c, 0x507d, 0x507e, 0x507f, + 0x5080, 0x5081, 0x5082, 0x5083, 0x5084, 0x5085, 0x5086, 0x5087, + 0x5088, 0x5089, 0x508a, 0x508b, 0x508c, 0x508d, 0x508e, 0x508f, + 0x5090, 0x5091, 0x5092, 0x5093, 0x5094, 0x5095, 0x5096, 0x5097, + 0x5098, 0x5099, 0x509a, 0x509b, 0x509c, 0x509d, 0x509e, 0x509f, + 0x50a0, 0x50a1, 0x50a2, 0x50a3, 0x50a4, 0x50a5, 0x50a6, 0x50a7, + 0x50a8, 0x50a9, 0x50aa, 0x50ab, 0x50ac, 0x50ad, 0x50ae, 0x50af, + 0x50b0, 0x50b1, 0x50b2, 0x50b3, 0x50b4, 0x50b5, 0x50b6, 0x50b7, + 0x50b8, 0x50b9, 0x50ba, 0x50bb, 0x50bc, 0x50bd, 0x50be, 0x50bf, + 0x50c0, 0x50c1, 0x50c2, 0x50c3, 0x50c4, 0x50c5, 0x50c6, 0x50c7, + 0x50c8, 0x50c9, 0x50ca, 0x50cb, 0x50cc, 0x50cd, 0x50ce, 0x50cf, + 0x50d0, 0x50d1, 0x50d2, 0x50d3, 0x50d4, 0x50d5, 0x50d6, 0x50d7, + 0x50d8, 0x50d9, 0x50da, 0x50db, 0x50dc, 0x50dd, 0x50de, 0x50df, + 0x50e0, 0x50e1, 0x50e2, 0x50e3, 0x50e4, 0x50e5, 0x50e6, 0x50e7, + 0x50e8, 0x50e9, 0x50ea, 0x50eb, 0x50ec, 0x50ed, 0x50ee, 0x50ef, + 0x50f0, 0x50f1, 0x50f2, 0x50f3, 0x50f4, 0x50f5, 0x50f6, 0x50f7, + 0x50f8, 0x50f9, 0x50fa, 0x50fb, 0x50fc, 0x50fd, 0x50fe, 0x50ff, + 0x5100, 0x5101, 0x5102, 0x5103, 0x5104, 0x5105, 0x5106, 0x5107, + 0x5108, 0x5109, 0x510a, 0x510b, 0x510c, 0x510d, 0x510e, 0x510f, + 0x5110, 0x5111, 0x5112, 0x5113, 0x5114, 0x5115, 0x5116, 0x5117, + 0x5118, 0x5119, 0x511a, 0x511b, 0x511c, 0x511d, 0x511e, 0x511f, + 0x5120, 0x5121, 0x5122, 0x5123, 0x5124, 0x5125, 0x5126, 0x5127, + 0x5128, 0x5129, 0x512a, 0x512b, 0x512c, 0x512d, 0x512e, 0x512f, + 0x5130, 0x5131, 0x5132, 0x5133, 0x5134, 0x5135, 0x5136, 0x5137, + 0x5138, 0x5139, 0x513a, 0x513b, 0x513c, 0x513d, 0x513e, 0x513f, + 0x5140, 0x5141, 0x5142, 0x5143, 0x5144, 0x5145, 0x5146, 0x5147, + 0x5148, 0x5149, 0x514a, 0x514b, 0x514c, 0x514d, 0x514e, 0x514f, + 0x5150, 0x5151, 0x5152, 0x5153, 0x5154, 0x5155, 0x5156, 0x5157, + 0x5158, 0x5159, 0x515a, 0x515b, 0x515c, 0x515d, 0x515e, 0x515f, + 0x5160, 0x5161, 0x5162, 0x5163, 0x5164, 0x5165, 0x5166, 0x5167, + 0x5168, 0x5169, 0x516a, 0x516b, 0x516c, 0x516d, 0x516e, 0x516f, + 0x5170, 0x5171, 0x5172, 0x5173, 0x5174, 0x5175, 0x5176, 0x5177, + 0x5178, 0x5179, 0x517a, 0x517b, 0x517c, 0x517d, 0x517e, 0x517f, + 0x5180, 0x5181, 0x5182, 0x5183, 0x5184, 0x5185, 0x5186, 0x5187, + 0x5188, 0x5189, 0x518a, 0x518b, 0x518c, 0x518d, 0x518e, 0x518f, + 0x5190, 0x5191, 0x5192, 0x5193, 0x5194, 0x5195, 0x5196, 0x5197, + 0x5198, 0x5199, 0x519a, 0x519b, 0x519c, 0x519d, 0x519e, 0x519f, + 0x51a0, 0x51a1, 0x51a2, 0x51a3, 0x51a4, 0x51a5, 0x51a6, 0x51a7, + 0x51a8, 0x51a9, 0x51aa, 0x51ab, 0x51ac, 0x51ad, 0x51ae, 0x51af, + 0x51b0, 0x51b1, 0x51b2, 0x51b3, 0x51b4, 0x51b5, 0x51b6, 0x51b7, + 0x51b8, 0x51b9, 0x51ba, 0x51bb, 0x51bc, 0x51bd, 0x51be, 0x51bf, + 0x51c0, 0x51c1, 0x51c2, 0x51c3, 0x51c4, 0x51c5, 0x51c6, 0x51c7, + 0x51c8, 0x51c9, 0x51ca, 0x51cb, 0x51cc, 0x51cd, 0x51ce, 0x51cf, + 0x51d0, 0x51d1, 0x51d2, 0x51d3, 0x51d4, 0x51d5, 0x51d6, 0x51d7, + 0x51d8, 0x51d9, 0x51da, 0x51db, 0x51dc, 0x51dd, 0x51de, 0x51df, + 0x51e0, 0x51e1, 0x51e2, 0x51e3, 0x51e4, 0x51e5, 0x51e6, 0x51e7, + 0x51e8, 0x51e9, 0x51ea, 0x51eb, 0x51ec, 0x51ed, 0x51ee, 0x51ef, + 0x51f0, 0x51f1, 0x51f2, 0x51f3, 0x51f4, 0x51f5, 0x51f6, 0x51f7, + 0x51f8, 0x51f9, 0x51fa, 0x51fb, 0x51fc, 0x51fd, 0x51fe, 0x51ff, + 0x5200, 0x5201, 0x5202, 0x5203, 0x5204, 0x5205, 0x5206, 0x5207, + 0x5208, 0x5209, 0x520a, 0x520b, 0x520c, 0x520d, 0x520e, 0x520f, + 0x5210, 0x5211, 0x5212, 0x5213, 0x5214, 0x5215, 0x5216, 0x5217, + 0x5218, 0x5219, 0x521a, 0x521b, 0x521c, 0x521d, 0x521e, 0x521f, + 0x5220, 0x5221, 0x5222, 0x5223, 0x5224, 0x5225, 0x5226, 0x5227, + 0x5228, 0x5229, 0x522a, 0x522b, 0x522c, 0x522d, 0x522e, 0x522f, + 0x5230, 0x5231, 0x5232, 0x5233, 0x5234, 0x5235, 0x5236, 0x5237, + 0x5238, 0x5239, 0x523a, 0x523b, 0x523c, 0x523d, 0x523e, 0x523f, + 0x5240, 0x5241, 0x5242, 0x5243, 0x5244, 0x5245, 0x5246, 0x5247, + 0x5248, 0x5249, 0x524a, 0x524b, 0x524c, 0x524d, 0x524e, 0x524f, + 0x5250, 0x5251, 0x5252, 0x5253, 0x5254, 0x5255, 0x5256, 0x5257, + 0x5258, 0x5259, 0x525a, 0x525b, 0x525c, 0x525d, 0x525e, 0x525f, + 0x5260, 0x5261, 0x5262, 0x5263, 0x5264, 0x5265, 0x5266, 0x5267, + 0x5268, 0x5269, 0x526a, 0x526b, 0x526c, 0x526d, 0x526e, 0x526f, + 0x5270, 0x5271, 0x5272, 0x5273, 0x5274, 0x5275, 0x5276, 0x5277, + 0x5278, 0x5279, 0x527a, 0x527b, 0x527c, 0x527d, 0x527e, 0x527f, + 0x5280, 0x5281, 0x5282, 0x5283, 0x5284, 0x5285, 0x5286, 0x5287, + 0x5288, 0x5289, 0x528a, 0x528b, 0x528c, 0x528d, 0x528e, 0x528f, + 0x5290, 0x5291, 0x5292, 0x5293, 0x5294, 0x5295, 0x5296, 0x5297, + 0x5298, 0x5299, 0x529a, 0x529b, 0x529c, 0x529d, 0x529e, 0x529f, + 0x52a0, 0x52a1, 0x52a2, 0x52a3, 0x52a4, 0x52a5, 0x52a6, 0x52a7, + 0x52a8, 0x52a9, 0x52aa, 0x52ab, 0x52ac, 0x52ad, 0x52ae, 0x52af, + 0x52b0, 0x52b1, 0x52b2, 0x52b3, 0x52b4, 0x52b5, 0x52b6, 0x52b7, + 0x52b8, 0x52b9, 0x52ba, 0x52bb, 0x52bc, 0x52bd, 0x52be, 0x52bf, + 0x52c0, 0x52c1, 0x52c2, 0x52c3, 0x52c4, 0x52c5, 0x52c6, 0x52c7, + 0x52c8, 0x52c9, 0x52ca, 0x52cb, 0x52cc, 0x52cd, 0x52ce, 0x52cf, + 0x52d0, 0x52d1, 0x52d2, 0x52d3, 0x52d4, 0x52d5, 0x52d6, 0x52d7, + 0x52d8, 0x52d9, 0x52da, 0x52db, 0x52dc, 0x52dd, 0x52de, 0x52df, + 0x52e0, 0x52e1, 0x52e2, 0x52e3, 0x52e4, 0x52e5, 0x52e6, 0x52e7, + 0x52e8, 0x52e9, 0x52ea, 0x52eb, 0x52ec, 0x52ed, 0x52ee, 0x52ef, + 0x52f0, 0x52f1, 0x52f2, 0x52f3, 0x52f4, 0x52f5, 0x52f6, 0x52f7, + 0x52f8, 0x52f9, 0x52fa, 0x52fb, 0x52fc, 0x52fd, 0x52fe, 0x52ff, + 0x5300, 0x5301, 0x5302, 0x5303, 0x5304, 0x5305, 0x5306, 0x5307, + 0x5308, 0x5309, 0x530a, 0x530b, 0x530c, 0x530d, 0x530e, 0x530f, + 0x5310, 0x5311, 0x5312, 0x5313, 0x5314, 0x5315, 0x5316, 0x5317, + 0x5318, 0x5319, 0x531a, 0x531b, 0x531c, 0x531d, 0x531e, 0x531f, + 0x5320, 0x5321, 0x5322, 0x5323, 0x5324, 0x5325, 0x5326, 0x5327, + 0x5328, 0x5329, 0x532a, 0x532b, 0x532c, 0x532d, 0x532e, 0x532f, + 0x5330, 0x5331, 0x5332, 0x5333, 0x5334, 0x5335, 0x5336, 0x5337, + 0x5338, 0x5339, 0x533a, 0x533b, 0x533c, 0x533d, 0x533e, 0x533f, + 0x5340, 0x5341, 0x5342, 0x5343, 0x5344, 0x5345, 0x5346, 0x5347, + 0x5348, 0x5349, 0x534a, 0x534b, 0x534c, 0x534d, 0x534e, 0x534f, + 0x5350, 0x5351, 0x5352, 0x5353, 0x5354, 0x5355, 0x5356, 0x5357, + 0x5358, 0x5359, 0x535a, 0x535b, 0x535c, 0x535d, 0x535e, 0x535f, + 0x5360, 0x5361, 0x5362, 0x5363, 0x5364, 0x5365, 0x5366, 0x5367, + 0x5368, 0x5369, 0x536a, 0x536b, 0x536c, 0x536d, 0x536e, 0x536f, + 0x5370, 0x5371, 0x5372, 0x5373, 0x5374, 0x5375, 0x5376, 0x5377, + 0x5378, 0x5379, 0x537a, 0x537b, 0x537c, 0x537d, 0x537e, 0x537f, + 0x5380, 0x5381, 0x5382, 0x5383, 0x5384, 0x5385, 0x5386, 0x5387, + 0x5388, 0x5389, 0x538a, 0x538b, 0x538c, 0x538d, 0x538e, 0x538f, + 0x5390, 0x5391, 0x5392, 0x5393, 0x5394, 0x5395, 0x5396, 0x5397, + 0x5398, 0x5399, 0x539a, 0x539b, 0x539c, 0x539d, 0x539e, 0x539f, + 0x53a0, 0x53a1, 0x53a2, 0x53a3, 0x53a4, 0x53a5, 0x53a6, 0x53a7, + 0x53a8, 0x53a9, 0x53aa, 0x53ab, 0x53ac, 0x53ad, 0x53ae, 0x53af, + 0x53b0, 0x53b1, 0x53b2, 0x53b3, 0x53b4, 0x53b5, 0x53b6, 0x53b7, + 0x53b8, 0x53b9, 0x53ba, 0x53bb, 0x53bc, 0x53bd, 0x53be, 0x53bf, + 0x53c0, 0x53c1, 0x53c2, 0x53c3, 0x53c4, 0x53c5, 0x53c6, 0x53c7, + 0x53c8, 0x53c9, 0x53ca, 0x53cb, 0x53cc, 0x53cd, 0x53ce, 0x53cf, + 0x53d0, 0x53d1, 0x53d2, 0x53d3, 0x53d4, 0x53d5, 0x53d6, 0x53d7, + 0x53d8, 0x53d9, 0x53da, 0x53db, 0x53dc, 0x53dd, 0x53de, 0x53df, + 0x53e0, 0x53e1, 0x53e2, 0x53e3, 0x53e4, 0x53e5, 0x53e6, 0x53e7, + 0x53e8, 0x53e9, 0x53ea, 0x53eb, 0x53ec, 0x53ed, 0x53ee, 0x53ef, + 0x53f0, 0x53f1, 0x53f2, 0x53f3, 0x53f4, 0x53f5, 0x53f6, 0x53f7, + 0x53f8, 0x53f9, 0x53fa, 0x53fb, 0x53fc, 0x53fd, 0x53fe, 0x53ff, + 0x5400, 0x5401, 0x5402, 0x5403, 0x5404, 0x5405, 0x5406, 0x5407, + 0x5408, 0x5409, 0x540a, 0x540b, 0x540c, 0x540d, 0x540e, 0x540f, + 0x5410, 0x5411, 0x5412, 0x5413, 0x5414, 0x5415, 0x5416, 0x5417, + 0x5418, 0x5419, 0x541a, 0x541b, 0x541c, 0x541d, 0x541e, 0x541f, + 0x5420, 0x5421, 0x5422, 0x5423, 0x5424, 0x5425, 0x5426, 0x5427, + 0x5428, 0x5429, 0x542a, 0x542b, 0x542c, 0x542d, 0x542e, 0x542f, + 0x5430, 0x5431, 0x5432, 0x5433, 0x5434, 0x5435, 0x5436, 0x5437, + 0x5438, 0x5439, 0x543a, 0x543b, 0x543c, 0x543d, 0x543e, 0x543f, + 0x5440, 0x5441, 0x5442, 0x5443, 0x5444, 0x5445, 0x5446, 0x5447, + 0x5448, 0x5449, 0x544a, 0x544b, 0x544c, 0x544d, 0x544e, 0x544f, + 0x5450, 0x5451, 0x5452, 0x5453, 0x5454, 0x5455, 0x5456, 0x5457, + 0x5458, 0x5459, 0x545a, 0x545b, 0x545c, 0x545d, 0x545e, 0x545f, + 0x5460, 0x5461, 0x5462, 0x5463, 0x5464, 0x5465, 0x5466, 0x5467, + 0x5468, 0x5469, 0x546a, 0x546b, 0x546c, 0x546d, 0x546e, 0x546f, + 0x5470, 0x5471, 0x5472, 0x5473, 0x5474, 0x5475, 0x5476, 0x5477, + 0x5478, 0x5479, 0x547a, 0x547b, 0x547c, 0x547d, 0x547e, 0x547f, + 0x5480, 0x5481, 0x5482, 0x5483, 0x5484, 0x5485, 0x5486, 0x5487, + 0x5488, 0x5489, 0x548a, 0x548b, 0x548c, 0x548d, 0x548e, 0x548f, + 0x5490, 0x5491, 0x5492, 0x5493, 0x5494, 0x5495, 0x5496, 0x5497, + 0x5498, 0x5499, 0x549a, 0x549b, 0x549c, 0x549d, 0x549e, 0x549f, + 0x54a0, 0x54a1, 0x54a2, 0x54a3, 0x54a4, 0x54a5, 0x54a6, 0x54a7, + 0x54a8, 0x54a9, 0x54aa, 0x54ab, 0x54ac, 0x54ad, 0x54ae, 0x54af, + 0x54b0, 0x54b1, 0x54b2, 0x54b3, 0x54b4, 0x54b5, 0x54b6, 0x54b7, + 0x54b8, 0x54b9, 0x54ba, 0x54bb, 0x54bc, 0x54bd, 0x54be, 0x54bf, + 0x54c0, 0x54c1, 0x54c2, 0x54c3, 0x54c4, 0x54c5, 0x54c6, 0x54c7, + 0x54c8, 0x54c9, 0x54ca, 0x54cb, 0x54cc, 0x54cd, 0x54ce, 0x54cf, + 0x54d0, 0x54d1, 0x54d2, 0x54d3, 0x54d4, 0x54d5, 0x54d6, 0x54d7, + 0x54d8, 0x54d9, 0x54da, 0x54db, 0x54dc, 0x54dd, 0x54de, 0x54df, + 0x54e0, 0x54e1, 0x54e2, 0x54e3, 0x54e4, 0x54e5, 0x54e6, 0x54e7, + 0x54e8, 0x54e9, 0x54ea, 0x54eb, 0x54ec, 0x54ed, 0x54ee, 0x54ef, + 0x54f0, 0x54f1, 0x54f2, 0x54f3, 0x54f4, 0x54f5, 0x54f6, 0x54f7, + 0x54f8, 0x54f9, 0x54fa, 0x54fb, 0x54fc, 0x54fd, 0x54fe, 0x54ff, + 0x5500, 0x5501, 0x5502, 0x5503, 0x5504, 0x5505, 0x5506, 0x5507, + 0x5508, 0x5509, 0x550a, 0x550b, 0x550c, 0x550d, 0x550e, 0x550f, + 0x5510, 0x5511, 0x5512, 0x5513, 0x5514, 0x5515, 0x5516, 0x5517, + 0x5518, 0x5519, 0x551a, 0x551b, 0x551c, 0x551d, 0x551e, 0x551f, + 0x5520, 0x5521, 0x5522, 0x5523, 0x5524, 0x5525, 0x5526, 0x5527, + 0x5528, 0x5529, 0x552a, 0x552b, 0x552c, 0x552d, 0x552e, 0x552f, + 0x5530, 0x5531, 0x5532, 0x5533, 0x5534, 0x5535, 0x5536, 0x5537, + 0x5538, 0x5539, 0x553a, 0x553b, 0x553c, 0x553d, 0x553e, 0x553f, + 0x5540, 0x5541, 0x5542, 0x5543, 0x5544, 0x5545, 0x5546, 0x5547, + 0x5548, 0x5549, 0x554a, 0x554b, 0x554c, 0x554d, 0x554e, 0x554f, + 0x5550, 0x5551, 0x5552, 0x5553, 0x5554, 0x5555, 0x5556, 0x5557, + 0x5558, 0x5559, 0x555a, 0x555b, 0x555c, 0x555d, 0x555e, 0x555f, + 0x5560, 0x5561, 0x5562, 0x5563, 0x5564, 0x5565, 0x5566, 0x5567, + 0x5568, 0x5569, 0x556a, 0x556b, 0x556c, 0x556d, 0x556e, 0x556f, + 0x5570, 0x5571, 0x5572, 0x5573, 0x5574, 0x5575, 0x5576, 0x5577, + 0x5578, 0x5579, 0x557a, 0x557b, 0x557c, 0x557d, 0x557e, 0x557f, + 0x5580, 0x5581, 0x5582, 0x5583, 0x5584, 0x5585, 0x5586, 0x5587, + 0x5588, 0x5589, 0x558a, 0x558b, 0x558c, 0x558d, 0x558e, 0x558f, + 0x5590, 0x5591, 0x5592, 0x5593, 0x5594, 0x5595, 0x5596, 0x5597, + 0x5598, 0x5599, 0x559a, 0x559b, 0x559c, 0x559d, 0x559e, 0x559f, + 0x55a0, 0x55a1, 0x55a2, 0x55a3, 0x55a4, 0x55a5, 0x55a6, 0x55a7, + 0x55a8, 0x55a9, 0x55aa, 0x55ab, 0x55ac, 0x55ad, 0x55ae, 0x55af, + 0x55b0, 0x55b1, 0x55b2, 0x55b3, 0x55b4, 0x55b5, 0x55b6, 0x55b7, + 0x55b8, 0x55b9, 0x55ba, 0x55bb, 0x55bc, 0x55bd, 0x55be, 0x55bf, + 0x55c0, 0x55c1, 0x55c2, 0x55c3, 0x55c4, 0x55c5, 0x55c6, 0x55c7, + 0x55c8, 0x55c9, 0x55ca, 0x55cb, 0x55cc, 0x55cd, 0x55ce, 0x55cf, + 0x55d0, 0x55d1, 0x55d2, 0x55d3, 0x55d4, 0x55d5, 0x55d6, 0x55d7, + 0x55d8, 0x55d9, 0x55da, 0x55db, 0x55dc, 0x55dd, 0x55de, 0x55df, + 0x55e0, 0x55e1, 0x55e2, 0x55e3, 0x55e4, 0x55e5, 0x55e6, 0x55e7, + 0x55e8, 0x55e9, 0x55ea, 0x55eb, 0x55ec, 0x55ed, 0x55ee, 0x55ef, + 0x55f0, 0x55f1, 0x55f2, 0x55f3, 0x55f4, 0x55f5, 0x55f6, 0x55f7, + 0x55f8, 0x55f9, 0x55fa, 0x55fb, 0x55fc, 0x55fd, 0x55fe, 0x55ff, + 0x5600, 0x5601, 0x5602, 0x5603, 0x5604, 0x5605, 0x5606, 0x5607, + 0x5608, 0x5609, 0x560a, 0x560b, 0x560c, 0x560d, 0x560e, 0x560f, + 0x5610, 0x5611, 0x5612, 0x5613, 0x5614, 0x5615, 0x5616, 0x5617, + 0x5618, 0x5619, 0x561a, 0x561b, 0x561c, 0x561d, 0x561e, 0x561f, + 0x5620, 0x5621, 0x5622, 0x5623, 0x5624, 0x5625, 0x5626, 0x5627, + 0x5628, 0x5629, 0x562a, 0x562b, 0x562c, 0x562d, 0x562e, 0x562f, + 0x5630, 0x5631, 0x5632, 0x5633, 0x5634, 0x5635, 0x5636, 0x5637, + 0x5638, 0x5639, 0x563a, 0x563b, 0x563c, 0x563d, 0x563e, 0x563f, + 0x5640, 0x5641, 0x5642, 0x5643, 0x5644, 0x5645, 0x5646, 0x5647, + 0x5648, 0x5649, 0x564a, 0x564b, 0x564c, 0x564d, 0x564e, 0x564f, + 0x5650, 0x5651, 0x5652, 0x5653, 0x5654, 0x5655, 0x5656, 0x5657, + 0x5658, 0x5659, 0x565a, 0x565b, 0x565c, 0x565d, 0x565e, 0x565f, + 0x5660, 0x5661, 0x5662, 0x5663, 0x5664, 0x5665, 0x5666, 0x5667, + 0x5668, 0x5669, 0x566a, 0x566b, 0x566c, 0x566d, 0x566e, 0x566f, + 0x5670, 0x5671, 0x5672, 0x5673, 0x5674, 0x5675, 0x5676, 0x5677, + 0x5678, 0x5679, 0x567a, 0x567b, 0x567c, 0x567d, 0x567e, 0x567f, + 0x5680, 0x5681, 0x5682, 0x5683, 0x5684, 0x5685, 0x5686, 0x5687, + 0x5688, 0x5689, 0x568a, 0x568b, 0x568c, 0x568d, 0x568e, 0x568f, + 0x5690, 0x5691, 0x5692, 0x5693, 0x5694, 0x5695, 0x5696, 0x5697, + 0x5698, 0x5699, 0x569a, 0x569b, 0x569c, 0x569d, 0x569e, 0x569f, + 0x56a0, 0x56a1, 0x56a2, 0x56a3, 0x56a4, 0x56a5, 0x56a6, 0x56a7, + 0x56a8, 0x56a9, 0x56aa, 0x56ab, 0x56ac, 0x56ad, 0x56ae, 0x56af, + 0x56b0, 0x56b1, 0x56b2, 0x56b3, 0x56b4, 0x56b5, 0x56b6, 0x56b7, + 0x56b8, 0x56b9, 0x56ba, 0x56bb, 0x56bc, 0x56bd, 0x56be, 0x56bf, + 0x56c0, 0x56c1, 0x56c2, 0x56c3, 0x56c4, 0x56c5, 0x56c6, 0x56c7, + 0x56c8, 0x56c9, 0x56ca, 0x56cb, 0x56cc, 0x56cd, 0x56ce, 0x56cf, + 0x56d0, 0x56d1, 0x56d2, 0x56d3, 0x56d4, 0x56d5, 0x56d6, 0x56d7, + 0x56d8, 0x56d9, 0x56da, 0x56db, 0x56dc, 0x56dd, 0x56de, 0x56df, + 0x56e0, 0x56e1, 0x56e2, 0x56e3, 0x56e4, 0x56e5, 0x56e6, 0x56e7, + 0x56e8, 0x56e9, 0x56ea, 0x56eb, 0x56ec, 0x56ed, 0x56ee, 0x56ef, + 0x56f0, 0x56f1, 0x56f2, 0x56f3, 0x56f4, 0x56f5, 0x56f6, 0x56f7, + 0x56f8, 0x56f9, 0x56fa, 0x56fb, 0x56fc, 0x56fd, 0x56fe, 0x56ff, + 0x5700, 0x5701, 0x5702, 0x5703, 0x5704, 0x5705, 0x5706, 0x5707, + 0x5708, 0x5709, 0x570a, 0x570b, 0x570c, 0x570d, 0x570e, 0x570f, + 0x5710, 0x5711, 0x5712, 0x5713, 0x5714, 0x5715, 0x5716, 0x5717, + 0x5718, 0x5719, 0x571a, 0x571b, 0x571c, 0x571d, 0x571e, 0x571f, + 0x5720, 0x5721, 0x5722, 0x5723, 0x5724, 0x5725, 0x5726, 0x5727, + 0x5728, 0x5729, 0x572a, 0x572b, 0x572c, 0x572d, 0x572e, 0x572f, + 0x5730, 0x5731, 0x5732, 0x5733, 0x5734, 0x5735, 0x5736, 0x5737, + 0x5738, 0x5739, 0x573a, 0x573b, 0x573c, 0x573d, 0x573e, 0x573f, + 0x5740, 0x5741, 0x5742, 0x5743, 0x5744, 0x5745, 0x5746, 0x5747, + 0x5748, 0x5749, 0x574a, 0x574b, 0x574c, 0x574d, 0x574e, 0x574f, + 0x5750, 0x5751, 0x5752, 0x5753, 0x5754, 0x5755, 0x5756, 0x5757, + 0x5758, 0x5759, 0x575a, 0x575b, 0x575c, 0x575d, 0x575e, 0x575f, + 0x5760, 0x5761, 0x5762, 0x5763, 0x5764, 0x5765, 0x5766, 0x5767, + 0x5768, 0x5769, 0x576a, 0x576b, 0x576c, 0x576d, 0x576e, 0x576f, + 0x5770, 0x5771, 0x5772, 0x5773, 0x5774, 0x5775, 0x5776, 0x5777, + 0x5778, 0x5779, 0x577a, 0x577b, 0x577c, 0x577d, 0x577e, 0x577f, + 0x5780, 0x5781, 0x5782, 0x5783, 0x5784, 0x5785, 0x5786, 0x5787, + 0x5788, 0x5789, 0x578a, 0x578b, 0x578c, 0x578d, 0x578e, 0x578f, + 0x5790, 0x5791, 0x5792, 0x5793, 0x5794, 0x5795, 0x5796, 0x5797, + 0x5798, 0x5799, 0x579a, 0x579b, 0x579c, 0x579d, 0x579e, 0x579f, + 0x57a0, 0x57a1, 0x57a2, 0x57a3, 0x57a4, 0x57a5, 0x57a6, 0x57a7, + 0x57a8, 0x57a9, 0x57aa, 0x57ab, 0x57ac, 0x57ad, 0x57ae, 0x57af, + 0x57b0, 0x57b1, 0x57b2, 0x57b3, 0x57b4, 0x57b5, 0x57b6, 0x57b7, + 0x57b8, 0x57b9, 0x57ba, 0x57bb, 0x57bc, 0x57bd, 0x57be, 0x57bf, + 0x57c0, 0x57c1, 0x57c2, 0x57c3, 0x57c4, 0x57c5, 0x57c6, 0x57c7, + 0x57c8, 0x57c9, 0x57ca, 0x57cb, 0x57cc, 0x57cd, 0x57ce, 0x57cf, + 0x57d0, 0x57d1, 0x57d2, 0x57d3, 0x57d4, 0x57d5, 0x57d6, 0x57d7, + 0x57d8, 0x57d9, 0x57da, 0x57db, 0x57dc, 0x57dd, 0x57de, 0x57df, + 0x57e0, 0x57e1, 0x57e2, 0x57e3, 0x57e4, 0x57e5, 0x57e6, 0x57e7, + 0x57e8, 0x57e9, 0x57ea, 0x57eb, 0x57ec, 0x57ed, 0x57ee, 0x57ef, + 0x57f0, 0x57f1, 0x57f2, 0x57f3, 0x57f4, 0x57f5, 0x57f6, 0x57f7, + 0x57f8, 0x57f9, 0x57fa, 0x57fb, 0x57fc, 0x57fd, 0x57fe, 0x57ff, + 0x5800, 0x5801, 0x5802, 0x5803, 0x5804, 0x5805, 0x5806, 0x5807, + 0x5808, 0x5809, 0x580a, 0x580b, 0x580c, 0x580d, 0x580e, 0x580f, + 0x5810, 0x5811, 0x5812, 0x5813, 0x5814, 0x5815, 0x5816, 0x5817, + 0x5818, 0x5819, 0x581a, 0x581b, 0x581c, 0x581d, 0x581e, 0x581f, + 0x5820, 0x5821, 0x5822, 0x5823, 0x5824, 0x5825, 0x5826, 0x5827, + 0x5828, 0x5829, 0x582a, 0x582b, 0x582c, 0x582d, 0x582e, 0x582f, + 0x5830, 0x5831, 0x5832, 0x5833, 0x5834, 0x5835, 0x5836, 0x5837, + 0x5838, 0x5839, 0x583a, 0x583b, 0x583c, 0x583d, 0x583e, 0x583f, + 0x5840, 0x5841, 0x5842, 0x5843, 0x5844, 0x5845, 0x5846, 0x5847, + 0x5848, 0x5849, 0x584a, 0x584b, 0x584c, 0x584d, 0x584e, 0x584f, + 0x5850, 0x5851, 0x5852, 0x5853, 0x5854, 0x5855, 0x5856, 0x5857, + 0x5858, 0x5859, 0x585a, 0x585b, 0x585c, 0x585d, 0x585e, 0x585f, + 0x5860, 0x5861, 0x5862, 0x5863, 0x5864, 0x5865, 0x5866, 0x5867, + 0x5868, 0x5869, 0x586a, 0x586b, 0x586c, 0x586d, 0x586e, 0x586f, + 0x5870, 0x5871, 0x5872, 0x5873, 0x5874, 0x5875, 0x5876, 0x5877, + 0x5878, 0x5879, 0x587a, 0x587b, 0x587c, 0x587d, 0x587e, 0x587f, + 0x5880, 0x5881, 0x5882, 0x5883, 0x5884, 0x5885, 0x5886, 0x5887, + 0x5888, 0x5889, 0x588a, 0x588b, 0x588c, 0x588d, 0x588e, 0x588f, + 0x5890, 0x5891, 0x5892, 0x5893, 0x5894, 0x5895, 0x5896, 0x5897, + 0x5898, 0x5899, 0x589a, 0x589b, 0x589c, 0x589d, 0x589e, 0x589f, + 0x58a0, 0x58a1, 0x58a2, 0x58a3, 0x58a4, 0x58a5, 0x58a6, 0x58a7, + 0x58a8, 0x58a9, 0x58aa, 0x58ab, 0x58ac, 0x58ad, 0x58ae, 0x58af, + 0x58b0, 0x58b1, 0x58b2, 0x58b3, 0x58b4, 0x58b5, 0x58b6, 0x58b7, + 0x58b8, 0x58b9, 0x58ba, 0x58bb, 0x58bc, 0x58bd, 0x58be, 0x58bf, + 0x58c0, 0x58c1, 0x58c2, 0x58c3, 0x58c4, 0x58c5, 0x58c6, 0x58c7, + 0x58c8, 0x58c9, 0x58ca, 0x58cb, 0x58cc, 0x58cd, 0x58ce, 0x58cf, + 0x58d0, 0x58d1, 0x58d2, 0x58d3, 0x58d4, 0x58d5, 0x58d6, 0x58d7, + 0x58d8, 0x58d9, 0x58da, 0x58db, 0x58dc, 0x58dd, 0x58de, 0x58df, + 0x58e0, 0x58e1, 0x58e2, 0x58e3, 0x58e4, 0x58e5, 0x58e6, 0x58e7, + 0x58e8, 0x58e9, 0x58ea, 0x58eb, 0x58ec, 0x58ed, 0x58ee, 0x58ef, + 0x58f0, 0x58f1, 0x58f2, 0x58f3, 0x58f4, 0x58f5, 0x58f6, 0x58f7, + 0x58f8, 0x58f9, 0x58fa, 0x58fb, 0x58fc, 0x58fd, 0x58fe, 0x58ff, + 0x5900, 0x5901, 0x5902, 0x5903, 0x5904, 0x5905, 0x5906, 0x5907, + 0x5908, 0x5909, 0x590a, 0x590b, 0x590c, 0x590d, 0x590e, 0x590f, + 0x5910, 0x5911, 0x5912, 0x5913, 0x5914, 0x5915, 0x5916, 0x5917, + 0x5918, 0x5919, 0x591a, 0x591b, 0x591c, 0x591d, 0x591e, 0x591f, + 0x5920, 0x5921, 0x5922, 0x5923, 0x5924, 0x5925, 0x5926, 0x5927, + 0x5928, 0x5929, 0x592a, 0x592b, 0x592c, 0x592d, 0x592e, 0x592f, + 0x5930, 0x5931, 0x5932, 0x5933, 0x5934, 0x5935, 0x5936, 0x5937, + 0x5938, 0x5939, 0x593a, 0x593b, 0x593c, 0x593d, 0x593e, 0x593f, + 0x5940, 0x5941, 0x5942, 0x5943, 0x5944, 0x5945, 0x5946, 0x5947, + 0x5948, 0x5949, 0x594a, 0x594b, 0x594c, 0x594d, 0x594e, 0x594f, + 0x5950, 0x5951, 0x5952, 0x5953, 0x5954, 0x5955, 0x5956, 0x5957, + 0x5958, 0x5959, 0x595a, 0x595b, 0x595c, 0x595d, 0x595e, 0x595f, + 0x5960, 0x5961, 0x5962, 0x5963, 0x5964, 0x5965, 0x5966, 0x5967, + 0x5968, 0x5969, 0x596a, 0x596b, 0x596c, 0x596d, 0x596e, 0x596f, + 0x5970, 0x5971, 0x5972, 0x5973, 0x5974, 0x5975, 0x5976, 0x5977, + 0x5978, 0x5979, 0x597a, 0x597b, 0x597c, 0x597d, 0x597e, 0x597f, + 0x5980, 0x5981, 0x5982, 0x5983, 0x5984, 0x5985, 0x5986, 0x5987, + 0x5988, 0x5989, 0x598a, 0x598b, 0x598c, 0x598d, 0x598e, 0x598f, + 0x5990, 0x5991, 0x5992, 0x5993, 0x5994, 0x5995, 0x5996, 0x5997, + 0x5998, 0x5999, 0x599a, 0x599b, 0x599c, 0x599d, 0x599e, 0x599f, + 0x59a0, 0x59a1, 0x59a2, 0x59a3, 0x59a4, 0x59a5, 0x59a6, 0x59a7, + 0x59a8, 0x59a9, 0x59aa, 0x59ab, 0x59ac, 0x59ad, 0x59ae, 0x59af, + 0x59b0, 0x59b1, 0x59b2, 0x59b3, 0x59b4, 0x59b5, 0x59b6, 0x59b7, + 0x59b8, 0x59b9, 0x59ba, 0x59bb, 0x59bc, 0x59bd, 0x59be, 0x59bf, + 0x59c0, 0x59c1, 0x59c2, 0x59c3, 0x59c4, 0x59c5, 0x59c6, 0x59c7, + 0x59c8, 0x59c9, 0x59ca, 0x59cb, 0x59cc, 0x59cd, 0x59ce, 0x59cf, + 0x59d0, 0x59d1, 0x59d2, 0x59d3, 0x59d4, 0x59d5, 0x59d6, 0x59d7, + 0x59d8, 0x59d9, 0x59da, 0x59db, 0x59dc, 0x59dd, 0x59de, 0x59df, + 0x59e0, 0x59e1, 0x59e2, 0x59e3, 0x59e4, 0x59e5, 0x59e6, 0x59e7, + 0x59e8, 0x59e9, 0x59ea, 0x59eb, 0x59ec, 0x59ed, 0x59ee, 0x59ef, + 0x59f0, 0x59f1, 0x59f2, 0x59f3, 0x59f4, 0x59f5, 0x59f6, 0x59f7, + 0x59f8, 0x59f9, 0x59fa, 0x59fb, 0x59fc, 0x59fd, 0x59fe, 0x59ff, + 0x5a00, 0x5a01, 0x5a02, 0x5a03, 0x5a04, 0x5a05, 0x5a06, 0x5a07, + 0x5a08, 0x5a09, 0x5a0a, 0x5a0b, 0x5a0c, 0x5a0d, 0x5a0e, 0x5a0f, + 0x5a10, 0x5a11, 0x5a12, 0x5a13, 0x5a14, 0x5a15, 0x5a16, 0x5a17, + 0x5a18, 0x5a19, 0x5a1a, 0x5a1b, 0x5a1c, 0x5a1d, 0x5a1e, 0x5a1f, + 0x5a20, 0x5a21, 0x5a22, 0x5a23, 0x5a24, 0x5a25, 0x5a26, 0x5a27, + 0x5a28, 0x5a29, 0x5a2a, 0x5a2b, 0x5a2c, 0x5a2d, 0x5a2e, 0x5a2f, + 0x5a30, 0x5a31, 0x5a32, 0x5a33, 0x5a34, 0x5a35, 0x5a36, 0x5a37, + 0x5a38, 0x5a39, 0x5a3a, 0x5a3b, 0x5a3c, 0x5a3d, 0x5a3e, 0x5a3f, + 0x5a40, 0x5a41, 0x5a42, 0x5a43, 0x5a44, 0x5a45, 0x5a46, 0x5a47, + 0x5a48, 0x5a49, 0x5a4a, 0x5a4b, 0x5a4c, 0x5a4d, 0x5a4e, 0x5a4f, + 0x5a50, 0x5a51, 0x5a52, 0x5a53, 0x5a54, 0x5a55, 0x5a56, 0x5a57, + 0x5a58, 0x5a59, 0x5a5a, 0x5a5b, 0x5a5c, 0x5a5d, 0x5a5e, 0x5a5f, + 0x5a60, 0x5a61, 0x5a62, 0x5a63, 0x5a64, 0x5a65, 0x5a66, 0x5a67, + 0x5a68, 0x5a69, 0x5a6a, 0x5a6b, 0x5a6c, 0x5a6d, 0x5a6e, 0x5a6f, + 0x5a70, 0x5a71, 0x5a72, 0x5a73, 0x5a74, 0x5a75, 0x5a76, 0x5a77, + 0x5a78, 0x5a79, 0x5a7a, 0x5a7b, 0x5a7c, 0x5a7d, 0x5a7e, 0x5a7f, + 0x5a80, 0x5a81, 0x5a82, 0x5a83, 0x5a84, 0x5a85, 0x5a86, 0x5a87, + 0x5a88, 0x5a89, 0x5a8a, 0x5a8b, 0x5a8c, 0x5a8d, 0x5a8e, 0x5a8f, + 0x5a90, 0x5a91, 0x5a92, 0x5a93, 0x5a94, 0x5a95, 0x5a96, 0x5a97, + 0x5a98, 0x5a99, 0x5a9a, 0x5a9b, 0x5a9c, 0x5a9d, 0x5a9e, 0x5a9f, + 0x5aa0, 0x5aa1, 0x5aa2, 0x5aa3, 0x5aa4, 0x5aa5, 0x5aa6, 0x5aa7, + 0x5aa8, 0x5aa9, 0x5aaa, 0x5aab, 0x5aac, 0x5aad, 0x5aae, 0x5aaf, + 0x5ab0, 0x5ab1, 0x5ab2, 0x5ab3, 0x5ab4, 0x5ab5, 0x5ab6, 0x5ab7, + 0x5ab8, 0x5ab9, 0x5aba, 0x5abb, 0x5abc, 0x5abd, 0x5abe, 0x5abf, + 0x5ac0, 0x5ac1, 0x5ac2, 0x5ac3, 0x5ac4, 0x5ac5, 0x5ac6, 0x5ac7, + 0x5ac8, 0x5ac9, 0x5aca, 0x5acb, 0x5acc, 0x5acd, 0x5ace, 0x5acf, + 0x5ad0, 0x5ad1, 0x5ad2, 0x5ad3, 0x5ad4, 0x5ad5, 0x5ad6, 0x5ad7, + 0x5ad8, 0x5ad9, 0x5ada, 0x5adb, 0x5adc, 0x5add, 0x5ade, 0x5adf, + 0x5ae0, 0x5ae1, 0x5ae2, 0x5ae3, 0x5ae4, 0x5ae5, 0x5ae6, 0x5ae7, + 0x5ae8, 0x5ae9, 0x5aea, 0x5aeb, 0x5aec, 0x5aed, 0x5aee, 0x5aef, + 0x5af0, 0x5af1, 0x5af2, 0x5af3, 0x5af4, 0x5af5, 0x5af6, 0x5af7, + 0x5af8, 0x5af9, 0x5afa, 0x5afb, 0x5afc, 0x5afd, 0x5afe, 0x5aff, + 0x5b00, 0x5b01, 0x5b02, 0x5b03, 0x5b04, 0x5b05, 0x5b06, 0x5b07, + 0x5b08, 0x5b09, 0x5b0a, 0x5b0b, 0x5b0c, 0x5b0d, 0x5b0e, 0x5b0f, + 0x5b10, 0x5b11, 0x5b12, 0x5b13, 0x5b14, 0x5b15, 0x5b16, 0x5b17, + 0x5b18, 0x5b19, 0x5b1a, 0x5b1b, 0x5b1c, 0x5b1d, 0x5b1e, 0x5b1f, + 0x5b20, 0x5b21, 0x5b22, 0x5b23, 0x5b24, 0x5b25, 0x5b26, 0x5b27, + 0x5b28, 0x5b29, 0x5b2a, 0x5b2b, 0x5b2c, 0x5b2d, 0x5b2e, 0x5b2f, + 0x5b30, 0x5b31, 0x5b32, 0x5b33, 0x5b34, 0x5b35, 0x5b36, 0x5b37, + 0x5b38, 0x5b39, 0x5b3a, 0x5b3b, 0x5b3c, 0x5b3d, 0x5b3e, 0x5b3f, + 0x5b40, 0x5b41, 0x5b42, 0x5b43, 0x5b44, 0x5b45, 0x5b46, 0x5b47, + 0x5b48, 0x5b49, 0x5b4a, 0x5b4b, 0x5b4c, 0x5b4d, 0x5b4e, 0x5b4f, + 0x5b50, 0x5b51, 0x5b52, 0x5b53, 0x5b54, 0x5b55, 0x5b56, 0x5b57, + 0x5b58, 0x5b59, 0x5b5a, 0x5b5b, 0x5b5c, 0x5b5d, 0x5b5e, 0x5b5f, + 0x5b60, 0x5b61, 0x5b62, 0x5b63, 0x5b64, 0x5b65, 0x5b66, 0x5b67, + 0x5b68, 0x5b69, 0x5b6a, 0x5b6b, 0x5b6c, 0x5b6d, 0x5b6e, 0x5b6f, + 0x5b70, 0x5b71, 0x5b72, 0x5b73, 0x5b74, 0x5b75, 0x5b76, 0x5b77, + 0x5b78, 0x5b79, 0x5b7a, 0x5b7b, 0x5b7c, 0x5b7d, 0x5b7e, 0x5b7f, + 0x5b80, 0x5b81, 0x5b82, 0x5b83, 0x5b84, 0x5b85, 0x5b86, 0x5b87, + 0x5b88, 0x5b89, 0x5b8a, 0x5b8b, 0x5b8c, 0x5b8d, 0x5b8e, 0x5b8f, + 0x5b90, 0x5b91, 0x5b92, 0x5b93, 0x5b94, 0x5b95, 0x5b96, 0x5b97, + 0x5b98, 0x5b99, 0x5b9a, 0x5b9b, 0x5b9c, 0x5b9d, 0x5b9e, 0x5b9f, + 0x5ba0, 0x5ba1, 0x5ba2, 0x5ba3, 0x5ba4, 0x5ba5, 0x5ba6, 0x5ba7, + 0x5ba8, 0x5ba9, 0x5baa, 0x5bab, 0x5bac, 0x5bad, 0x5bae, 0x5baf, + 0x5bb0, 0x5bb1, 0x5bb2, 0x5bb3, 0x5bb4, 0x5bb5, 0x5bb6, 0x5bb7, + 0x5bb8, 0x5bb9, 0x5bba, 0x5bbb, 0x5bbc, 0x5bbd, 0x5bbe, 0x5bbf, + 0x5bc0, 0x5bc1, 0x5bc2, 0x5bc3, 0x5bc4, 0x5bc5, 0x5bc6, 0x5bc7, + 0x5bc8, 0x5bc9, 0x5bca, 0x5bcb, 0x5bcc, 0x5bcd, 0x5bce, 0x5bcf, + 0x5bd0, 0x5bd1, 0x5bd2, 0x5bd3, 0x5bd4, 0x5bd5, 0x5bd6, 0x5bd7, + 0x5bd8, 0x5bd9, 0x5bda, 0x5bdb, 0x5bdc, 0x5bdd, 0x5bde, 0x5bdf, + 0x5be0, 0x5be1, 0x5be2, 0x5be3, 0x5be4, 0x5be5, 0x5be6, 0x5be7, + 0x5be8, 0x5be9, 0x5bea, 0x5beb, 0x5bec, 0x5bed, 0x5bee, 0x5bef, + 0x5bf0, 0x5bf1, 0x5bf2, 0x5bf3, 0x5bf4, 0x5bf5, 0x5bf6, 0x5bf7, + 0x5bf8, 0x5bf9, 0x5bfa, 0x5bfb, 0x5bfc, 0x5bfd, 0x5bfe, 0x5bff, + 0x5c00, 0x5c01, 0x5c02, 0x5c03, 0x5c04, 0x5c05, 0x5c06, 0x5c07, + 0x5c08, 0x5c09, 0x5c0a, 0x5c0b, 0x5c0c, 0x5c0d, 0x5c0e, 0x5c0f, + 0x5c10, 0x5c11, 0x5c12, 0x5c13, 0x5c14, 0x5c15, 0x5c16, 0x5c17, + 0x5c18, 0x5c19, 0x5c1a, 0x5c1b, 0x5c1c, 0x5c1d, 0x5c1e, 0x5c1f, + 0x5c20, 0x5c21, 0x5c22, 0x5c23, 0x5c24, 0x5c25, 0x5c26, 0x5c27, + 0x5c28, 0x5c29, 0x5c2a, 0x5c2b, 0x5c2c, 0x5c2d, 0x5c2e, 0x5c2f, + 0x5c30, 0x5c31, 0x5c32, 0x5c33, 0x5c34, 0x5c35, 0x5c36, 0x5c37, + 0x5c38, 0x5c39, 0x5c3a, 0x5c3b, 0x5c3c, 0x5c3d, 0x5c3e, 0x5c3f, + 0x5c40, 0x5c41, 0x5c42, 0x5c43, 0x5c44, 0x5c45, 0x5c46, 0x5c47, + 0x5c48, 0x5c49, 0x5c4a, 0x5c4b, 0x5c4c, 0x5c4d, 0x5c4e, 0x5c4f, + 0x5c50, 0x5c51, 0x5c52, 0x5c53, 0x5c54, 0x5c55, 0x5c56, 0x5c57, + 0x5c58, 0x5c59, 0x5c5a, 0x5c5b, 0x5c5c, 0x5c5d, 0x5c5e, 0x5c5f, + 0x5c60, 0x5c61, 0x5c62, 0x5c63, 0x5c64, 0x5c65, 0x5c66, 0x5c67, + 0x5c68, 0x5c69, 0x5c6a, 0x5c6b, 0x5c6c, 0x5c6d, 0x5c6e, 0x5c6f, + 0x5c70, 0x5c71, 0x5c72, 0x5c73, 0x5c74, 0x5c75, 0x5c76, 0x5c77, + 0x5c78, 0x5c79, 0x5c7a, 0x5c7b, 0x5c7c, 0x5c7d, 0x5c7e, 0x5c7f, + 0x5c80, 0x5c81, 0x5c82, 0x5c83, 0x5c84, 0x5c85, 0x5c86, 0x5c87, + 0x5c88, 0x5c89, 0x5c8a, 0x5c8b, 0x5c8c, 0x5c8d, 0x5c8e, 0x5c8f, + 0x5c90, 0x5c91, 0x5c92, 0x5c93, 0x5c94, 0x5c95, 0x5c96, 0x5c97, + 0x5c98, 0x5c99, 0x5c9a, 0x5c9b, 0x5c9c, 0x5c9d, 0x5c9e, 0x5c9f, + 0x5ca0, 0x5ca1, 0x5ca2, 0x5ca3, 0x5ca4, 0x5ca5, 0x5ca6, 0x5ca7, + 0x5ca8, 0x5ca9, 0x5caa, 0x5cab, 0x5cac, 0x5cad, 0x5cae, 0x5caf, + 0x5cb0, 0x5cb1, 0x5cb2, 0x5cb3, 0x5cb4, 0x5cb5, 0x5cb6, 0x5cb7, + 0x5cb8, 0x5cb9, 0x5cba, 0x5cbb, 0x5cbc, 0x5cbd, 0x5cbe, 0x5cbf, + 0x5cc0, 0x5cc1, 0x5cc2, 0x5cc3, 0x5cc4, 0x5cc5, 0x5cc6, 0x5cc7, + 0x5cc8, 0x5cc9, 0x5cca, 0x5ccb, 0x5ccc, 0x5ccd, 0x5cce, 0x5ccf, + 0x5cd0, 0x5cd1, 0x5cd2, 0x5cd3, 0x5cd4, 0x5cd5, 0x5cd6, 0x5cd7, + 0x5cd8, 0x5cd9, 0x5cda, 0x5cdb, 0x5cdc, 0x5cdd, 0x5cde, 0x5cdf, + 0x5ce0, 0x5ce1, 0x5ce2, 0x5ce3, 0x5ce4, 0x5ce5, 0x5ce6, 0x5ce7, + 0x5ce8, 0x5ce9, 0x5cea, 0x5ceb, 0x5cec, 0x5ced, 0x5cee, 0x5cef, + 0x5cf0, 0x5cf1, 0x5cf2, 0x5cf3, 0x5cf4, 0x5cf5, 0x5cf6, 0x5cf7, + 0x5cf8, 0x5cf9, 0x5cfa, 0x5cfb, 0x5cfc, 0x5cfd, 0x5cfe, 0x5cff, + 0x5d00, 0x5d01, 0x5d02, 0x5d03, 0x5d04, 0x5d05, 0x5d06, 0x5d07, + 0x5d08, 0x5d09, 0x5d0a, 0x5d0b, 0x5d0c, 0x5d0d, 0x5d0e, 0x5d0f, + 0x5d10, 0x5d11, 0x5d12, 0x5d13, 0x5d14, 0x5d15, 0x5d16, 0x5d17, + 0x5d18, 0x5d19, 0x5d1a, 0x5d1b, 0x5d1c, 0x5d1d, 0x5d1e, 0x5d1f, + 0x5d20, 0x5d21, 0x5d22, 0x5d23, 0x5d24, 0x5d25, 0x5d26, 0x5d27, + 0x5d28, 0x5d29, 0x5d2a, 0x5d2b, 0x5d2c, 0x5d2d, 0x5d2e, 0x5d2f, + 0x5d30, 0x5d31, 0x5d32, 0x5d33, 0x5d34, 0x5d35, 0x5d36, 0x5d37, + 0x5d38, 0x5d39, 0x5d3a, 0x5d3b, 0x5d3c, 0x5d3d, 0x5d3e, 0x5d3f, + 0x5d40, 0x5d41, 0x5d42, 0x5d43, 0x5d44, 0x5d45, 0x5d46, 0x5d47, + 0x5d48, 0x5d49, 0x5d4a, 0x5d4b, 0x5d4c, 0x5d4d, 0x5d4e, 0x5d4f, + 0x5d50, 0x5d51, 0x5d52, 0x5d53, 0x5d54, 0x5d55, 0x5d56, 0x5d57, + 0x5d58, 0x5d59, 0x5d5a, 0x5d5b, 0x5d5c, 0x5d5d, 0x5d5e, 0x5d5f, + 0x5d60, 0x5d61, 0x5d62, 0x5d63, 0x5d64, 0x5d65, 0x5d66, 0x5d67, + 0x5d68, 0x5d69, 0x5d6a, 0x5d6b, 0x5d6c, 0x5d6d, 0x5d6e, 0x5d6f, + 0x5d70, 0x5d71, 0x5d72, 0x5d73, 0x5d74, 0x5d75, 0x5d76, 0x5d77, + 0x5d78, 0x5d79, 0x5d7a, 0x5d7b, 0x5d7c, 0x5d7d, 0x5d7e, 0x5d7f, + 0x5d80, 0x5d81, 0x5d82, 0x5d83, 0x5d84, 0x5d85, 0x5d86, 0x5d87, + 0x5d88, 0x5d89, 0x5d8a, 0x5d8b, 0x5d8c, 0x5d8d, 0x5d8e, 0x5d8f, + 0x5d90, 0x5d91, 0x5d92, 0x5d93, 0x5d94, 0x5d95, 0x5d96, 0x5d97, + 0x5d98, 0x5d99, 0x5d9a, 0x5d9b, 0x5d9c, 0x5d9d, 0x5d9e, 0x5d9f, + 0x5da0, 0x5da1, 0x5da2, 0x5da3, 0x5da4, 0x5da5, 0x5da6, 0x5da7, + 0x5da8, 0x5da9, 0x5daa, 0x5dab, 0x5dac, 0x5dad, 0x5dae, 0x5daf, + 0x5db0, 0x5db1, 0x5db2, 0x5db3, 0x5db4, 0x5db5, 0x5db6, 0x5db7, + 0x5db8, 0x5db9, 0x5dba, 0x5dbb, 0x5dbc, 0x5dbd, 0x5dbe, 0x5dbf, + 0x5dc0, 0x5dc1, 0x5dc2, 0x5dc3, 0x5dc4, 0x5dc5, 0x5dc6, 0x5dc7, + 0x5dc8, 0x5dc9, 0x5dca, 0x5dcb, 0x5dcc, 0x5dcd, 0x5dce, 0x5dcf, + 0x5dd0, 0x5dd1, 0x5dd2, 0x5dd3, 0x5dd4, 0x5dd5, 0x5dd6, 0x5dd7, + 0x5dd8, 0x5dd9, 0x5dda, 0x5ddb, 0x5ddc, 0x5ddd, 0x5dde, 0x5ddf, + 0x5de0, 0x5de1, 0x5de2, 0x5de3, 0x5de4, 0x5de5, 0x5de6, 0x5de7, + 0x5de8, 0x5de9, 0x5dea, 0x5deb, 0x5dec, 0x5ded, 0x5dee, 0x5def, + 0x5df0, 0x5df1, 0x5df2, 0x5df3, 0x5df4, 0x5df5, 0x5df6, 0x5df7, + 0x5df8, 0x5df9, 0x5dfa, 0x5dfb, 0x5dfc, 0x5dfd, 0x5dfe, 0x5dff, + 0x5e00, 0x5e01, 0x5e02, 0x5e03, 0x5e04, 0x5e05, 0x5e06, 0x5e07, + 0x5e08, 0x5e09, 0x5e0a, 0x5e0b, 0x5e0c, 0x5e0d, 0x5e0e, 0x5e0f, + 0x5e10, 0x5e11, 0x5e12, 0x5e13, 0x5e14, 0x5e15, 0x5e16, 0x5e17, + 0x5e18, 0x5e19, 0x5e1a, 0x5e1b, 0x5e1c, 0x5e1d, 0x5e1e, 0x5e1f, + 0x5e20, 0x5e21, 0x5e22, 0x5e23, 0x5e24, 0x5e25, 0x5e26, 0x5e27, + 0x5e28, 0x5e29, 0x5e2a, 0x5e2b, 0x5e2c, 0x5e2d, 0x5e2e, 0x5e2f, + 0x5e30, 0x5e31, 0x5e32, 0x5e33, 0x5e34, 0x5e35, 0x5e36, 0x5e37, + 0x5e38, 0x5e39, 0x5e3a, 0x5e3b, 0x5e3c, 0x5e3d, 0x5e3e, 0x5e3f, + 0x5e40, 0x5e41, 0x5e42, 0x5e43, 0x5e44, 0x5e45, 0x5e46, 0x5e47, + 0x5e48, 0x5e49, 0x5e4a, 0x5e4b, 0x5e4c, 0x5e4d, 0x5e4e, 0x5e4f, + 0x5e50, 0x5e51, 0x5e52, 0x5e53, 0x5e54, 0x5e55, 0x5e56, 0x5e57, + 0x5e58, 0x5e59, 0x5e5a, 0x5e5b, 0x5e5c, 0x5e5d, 0x5e5e, 0x5e5f, + 0x5e60, 0x5e61, 0x5e62, 0x5e63, 0x5e64, 0x5e65, 0x5e66, 0x5e67, + 0x5e68, 0x5e69, 0x5e6a, 0x5e6b, 0x5e6c, 0x5e6d, 0x5e6e, 0x5e6f, + 0x5e70, 0x5e71, 0x5e72, 0x5e73, 0x5e74, 0x5e75, 0x5e76, 0x5e77, + 0x5e78, 0x5e79, 0x5e7a, 0x5e7b, 0x5e7c, 0x5e7d, 0x5e7e, 0x5e7f, + 0x5e80, 0x5e81, 0x5e82, 0x5e83, 0x5e84, 0x5e85, 0x5e86, 0x5e87, + 0x5e88, 0x5e89, 0x5e8a, 0x5e8b, 0x5e8c, 0x5e8d, 0x5e8e, 0x5e8f, + 0x5e90, 0x5e91, 0x5e92, 0x5e93, 0x5e94, 0x5e95, 0x5e96, 0x5e97, + 0x5e98, 0x5e99, 0x5e9a, 0x5e9b, 0x5e9c, 0x5e9d, 0x5e9e, 0x5e9f, + 0x5ea0, 0x5ea1, 0x5ea2, 0x5ea3, 0x5ea4, 0x5ea5, 0x5ea6, 0x5ea7, + 0x5ea8, 0x5ea9, 0x5eaa, 0x5eab, 0x5eac, 0x5ead, 0x5eae, 0x5eaf, + 0x5eb0, 0x5eb1, 0x5eb2, 0x5eb3, 0x5eb4, 0x5eb5, 0x5eb6, 0x5eb7, + 0x5eb8, 0x5eb9, 0x5eba, 0x5ebb, 0x5ebc, 0x5ebd, 0x5ebe, 0x5ebf, + 0x5ec0, 0x5ec1, 0x5ec2, 0x5ec3, 0x5ec4, 0x5ec5, 0x5ec6, 0x5ec7, + 0x5ec8, 0x5ec9, 0x5eca, 0x5ecb, 0x5ecc, 0x5ecd, 0x5ece, 0x5ecf, + 0x5ed0, 0x5ed1, 0x5ed2, 0x5ed3, 0x5ed4, 0x5ed5, 0x5ed6, 0x5ed7, + 0x5ed8, 0x5ed9, 0x5eda, 0x5edb, 0x5edc, 0x5edd, 0x5ede, 0x5edf, + 0x5ee0, 0x5ee1, 0x5ee2, 0x5ee3, 0x5ee4, 0x5ee5, 0x5ee6, 0x5ee7, + 0x5ee8, 0x5ee9, 0x5eea, 0x5eeb, 0x5eec, 0x5eed, 0x5eee, 0x5eef, + 0x5ef0, 0x5ef1, 0x5ef2, 0x5ef3, 0x5ef4, 0x5ef5, 0x5ef6, 0x5ef7, + 0x5ef8, 0x5ef9, 0x5efa, 0x5efb, 0x5efc, 0x5efd, 0x5efe, 0x5eff, + 0x5f00, 0x5f01, 0x5f02, 0x5f03, 0x5f04, 0x5f05, 0x5f06, 0x5f07, + 0x5f08, 0x5f09, 0x5f0a, 0x5f0b, 0x5f0c, 0x5f0d, 0x5f0e, 0x5f0f, + 0x5f10, 0x5f11, 0x5f12, 0x5f13, 0x5f14, 0x5f15, 0x5f16, 0x5f17, + 0x5f18, 0x5f19, 0x5f1a, 0x5f1b, 0x5f1c, 0x5f1d, 0x5f1e, 0x5f1f, + 0x5f20, 0x5f21, 0x5f22, 0x5f23, 0x5f24, 0x5f25, 0x5f26, 0x5f27, + 0x5f28, 0x5f29, 0x5f2a, 0x5f2b, 0x5f2c, 0x5f2d, 0x5f2e, 0x5f2f, + 0x5f30, 0x5f31, 0x5f32, 0x5f33, 0x5f34, 0x5f35, 0x5f36, 0x5f37, + 0x5f38, 0x5f39, 0x5f3a, 0x5f3b, 0x5f3c, 0x5f3d, 0x5f3e, 0x5f3f, + 0x5f40, 0x5f41, 0x5f42, 0x5f43, 0x5f44, 0x5f45, 0x5f46, 0x5f47, + 0x5f48, 0x5f49, 0x5f4a, 0x5f4b, 0x5f4c, 0x5f4d, 0x5f4e, 0x5f4f, + 0x5f50, 0x5f51, 0x5f52, 0x5f53, 0x5f54, 0x5f55, 0x5f56, 0x5f57, + 0x5f58, 0x5f59, 0x5f5a, 0x5f5b, 0x5f5c, 0x5f5d, 0x5f5e, 0x5f5f, + 0x5f60, 0x5f61, 0x5f62, 0x5f63, 0x5f64, 0x5f65, 0x5f66, 0x5f67, + 0x5f68, 0x5f69, 0x5f6a, 0x5f6b, 0x5f6c, 0x5f6d, 0x5f6e, 0x5f6f, + 0x5f70, 0x5f71, 0x5f72, 0x5f73, 0x5f74, 0x5f75, 0x5f76, 0x5f77, + 0x5f78, 0x5f79, 0x5f7a, 0x5f7b, 0x5f7c, 0x5f7d, 0x5f7e, 0x5f7f, + 0x5f80, 0x5f81, 0x5f82, 0x5f83, 0x5f84, 0x5f85, 0x5f86, 0x5f87, + 0x5f88, 0x5f89, 0x5f8a, 0x5f8b, 0x5f8c, 0x5f8d, 0x5f8e, 0x5f8f, + 0x5f90, 0x5f91, 0x5f92, 0x5f93, 0x5f94, 0x5f95, 0x5f96, 0x5f97, + 0x5f98, 0x5f99, 0x5f9a, 0x5f9b, 0x5f9c, 0x5f9d, 0x5f9e, 0x5f9f, + 0x5fa0, 0x5fa1, 0x5fa2, 0x5fa3, 0x5fa4, 0x5fa5, 0x5fa6, 0x5fa7, + 0x5fa8, 0x5fa9, 0x5faa, 0x5fab, 0x5fac, 0x5fad, 0x5fae, 0x5faf, + 0x5fb0, 0x5fb1, 0x5fb2, 0x5fb3, 0x5fb4, 0x5fb5, 0x5fb6, 0x5fb7, + 0x5fb8, 0x5fb9, 0x5fba, 0x5fbb, 0x5fbc, 0x5fbd, 0x5fbe, 0x5fbf, + 0x5fc0, 0x5fc1, 0x5fc2, 0x5fc3, 0x5fc4, 0x5fc5, 0x5fc6, 0x5fc7, + 0x5fc8, 0x5fc9, 0x5fca, 0x5fcb, 0x5fcc, 0x5fcd, 0x5fce, 0x5fcf, + 0x5fd0, 0x5fd1, 0x5fd2, 0x5fd3, 0x5fd4, 0x5fd5, 0x5fd6, 0x5fd7, + 0x5fd8, 0x5fd9, 0x5fda, 0x5fdb, 0x5fdc, 0x5fdd, 0x5fde, 0x5fdf, + 0x5fe0, 0x5fe1, 0x5fe2, 0x5fe3, 0x5fe4, 0x5fe5, 0x5fe6, 0x5fe7, + 0x5fe8, 0x5fe9, 0x5fea, 0x5feb, 0x5fec, 0x5fed, 0x5fee, 0x5fef, + 0x5ff0, 0x5ff1, 0x5ff2, 0x5ff3, 0x5ff4, 0x5ff5, 0x5ff6, 0x5ff7, + 0x5ff8, 0x5ff9, 0x5ffa, 0x5ffb, 0x5ffc, 0x5ffd, 0x5ffe, 0x5fff, + 0x6000, 0x6001, 0x6002, 0x6003, 0x6004, 0x6005, 0x6006, 0x6007, + 0x6008, 0x6009, 0x600a, 0x600b, 0x600c, 0x600d, 0x600e, 0x600f, + 0x6010, 0x6011, 0x6012, 0x6013, 0x6014, 0x6015, 0x6016, 0x6017, + 0x6018, 0x6019, 0x601a, 0x601b, 0x601c, 0x601d, 0x601e, 0x601f, + 0x6020, 0x6021, 0x6022, 0x6023, 0x6024, 0x6025, 0x6026, 0x6027, + 0x6028, 0x6029, 0x602a, 0x602b, 0x602c, 0x602d, 0x602e, 0x602f, + 0x6030, 0x6031, 0x6032, 0x6033, 0x6034, 0x6035, 0x6036, 0x6037, + 0x6038, 0x6039, 0x603a, 0x603b, 0x603c, 0x603d, 0x603e, 0x603f, + 0x6040, 0x6041, 0x6042, 0x6043, 0x6044, 0x6045, 0x6046, 0x6047, + 0x6048, 0x6049, 0x604a, 0x604b, 0x604c, 0x604d, 0x604e, 0x604f, + 0x6050, 0x6051, 0x6052, 0x6053, 0x6054, 0x6055, 0x6056, 0x6057, + 0x6058, 0x6059, 0x605a, 0x605b, 0x605c, 0x605d, 0x605e, 0x605f, + 0x6060, 0x6061, 0x6062, 0x6063, 0x6064, 0x6065, 0x6066, 0x6067, + 0x6068, 0x6069, 0x606a, 0x606b, 0x606c, 0x606d, 0x606e, 0x606f, + 0x6070, 0x6071, 0x6072, 0x6073, 0x6074, 0x6075, 0x6076, 0x6077, + 0x6078, 0x6079, 0x607a, 0x607b, 0x607c, 0x607d, 0x607e, 0x607f, + 0x6080, 0x6081, 0x6082, 0x6083, 0x6084, 0x6085, 0x6086, 0x6087, + 0x6088, 0x6089, 0x608a, 0x608b, 0x608c, 0x608d, 0x608e, 0x608f, + 0x6090, 0x6091, 0x6092, 0x6093, 0x6094, 0x6095, 0x6096, 0x6097, + 0x6098, 0x6099, 0x609a, 0x609b, 0x609c, 0x609d, 0x609e, 0x609f, + 0x60a0, 0x60a1, 0x60a2, 0x60a3, 0x60a4, 0x60a5, 0x60a6, 0x60a7, + 0x60a8, 0x60a9, 0x60aa, 0x60ab, 0x60ac, 0x60ad, 0x60ae, 0x60af, + 0x60b0, 0x60b1, 0x60b2, 0x60b3, 0x60b4, 0x60b5, 0x60b6, 0x60b7, + 0x60b8, 0x60b9, 0x60ba, 0x60bb, 0x60bc, 0x60bd, 0x60be, 0x60bf, + 0x60c0, 0x60c1, 0x60c2, 0x60c3, 0x60c4, 0x60c5, 0x60c6, 0x60c7, + 0x60c8, 0x60c9, 0x60ca, 0x60cb, 0x60cc, 0x60cd, 0x60ce, 0x60cf, + 0x60d0, 0x60d1, 0x60d2, 0x60d3, 0x60d4, 0x60d5, 0x60d6, 0x60d7, + 0x60d8, 0x60d9, 0x60da, 0x60db, 0x60dc, 0x60dd, 0x60de, 0x60df, + 0x60e0, 0x60e1, 0x60e2, 0x60e3, 0x60e4, 0x60e5, 0x60e6, 0x60e7, + 0x60e8, 0x60e9, 0x60ea, 0x60eb, 0x60ec, 0x60ed, 0x60ee, 0x60ef, + 0x60f0, 0x60f1, 0x60f2, 0x60f3, 0x60f4, 0x60f5, 0x60f6, 0x60f7, + 0x60f8, 0x60f9, 0x60fa, 0x60fb, 0x60fc, 0x60fd, 0x60fe, 0x60ff, + 0x6100, 0x6101, 0x6102, 0x6103, 0x6104, 0x6105, 0x6106, 0x6107, + 0x6108, 0x6109, 0x610a, 0x610b, 0x610c, 0x610d, 0x610e, 0x610f, + 0x6110, 0x6111, 0x6112, 0x6113, 0x6114, 0x6115, 0x6116, 0x6117, + 0x6118, 0x6119, 0x611a, 0x611b, 0x611c, 0x611d, 0x611e, 0x611f, + 0x6120, 0x6121, 0x6122, 0x6123, 0x6124, 0x6125, 0x6126, 0x6127, + 0x6128, 0x6129, 0x612a, 0x612b, 0x612c, 0x612d, 0x612e, 0x612f, + 0x6130, 0x6131, 0x6132, 0x6133, 0x6134, 0x6135, 0x6136, 0x6137, + 0x6138, 0x6139, 0x613a, 0x613b, 0x613c, 0x613d, 0x613e, 0x613f, + 0x6140, 0x6141, 0x6142, 0x6143, 0x6144, 0x6145, 0x6146, 0x6147, + 0x6148, 0x6149, 0x614a, 0x614b, 0x614c, 0x614d, 0x614e, 0x614f, + 0x6150, 0x6151, 0x6152, 0x6153, 0x6154, 0x6155, 0x6156, 0x6157, + 0x6158, 0x6159, 0x615a, 0x615b, 0x615c, 0x615d, 0x615e, 0x615f, + 0x6160, 0x6161, 0x6162, 0x6163, 0x6164, 0x6165, 0x6166, 0x6167, + 0x6168, 0x6169, 0x616a, 0x616b, 0x616c, 0x616d, 0x616e, 0x616f, + 0x6170, 0x6171, 0x6172, 0x6173, 0x6174, 0x6175, 0x6176, 0x6177, + 0x6178, 0x6179, 0x617a, 0x617b, 0x617c, 0x617d, 0x617e, 0x617f, + 0x6180, 0x6181, 0x6182, 0x6183, 0x6184, 0x6185, 0x6186, 0x6187, + 0x6188, 0x6189, 0x618a, 0x618b, 0x618c, 0x618d, 0x618e, 0x618f, + 0x6190, 0x6191, 0x6192, 0x6193, 0x6194, 0x6195, 0x6196, 0x6197, + 0x6198, 0x6199, 0x619a, 0x619b, 0x619c, 0x619d, 0x619e, 0x619f, + 0x61a0, 0x61a1, 0x61a2, 0x61a3, 0x61a4, 0x61a5, 0x61a6, 0x61a7, + 0x61a8, 0x61a9, 0x61aa, 0x61ab, 0x61ac, 0x61ad, 0x61ae, 0x61af, + 0x61b0, 0x61b1, 0x61b2, 0x61b3, 0x61b4, 0x61b5, 0x61b6, 0x61b7, + 0x61b8, 0x61b9, 0x61ba, 0x61bb, 0x61bc, 0x61bd, 0x61be, 0x61bf, + 0x61c0, 0x61c1, 0x61c2, 0x61c3, 0x61c4, 0x61c5, 0x61c6, 0x61c7, + 0x61c8, 0x61c9, 0x61ca, 0x61cb, 0x61cc, 0x61cd, 0x61ce, 0x61cf, + 0x61d0, 0x61d1, 0x61d2, 0x61d3, 0x61d4, 0x61d5, 0x61d6, 0x61d7, + 0x61d8, 0x61d9, 0x61da, 0x61db, 0x61dc, 0x61dd, 0x61de, 0x61df, + 0x61e0, 0x61e1, 0x61e2, 0x61e3, 0x61e4, 0x61e5, 0x61e6, 0x61e7, + 0x61e8, 0x61e9, 0x61ea, 0x61eb, 0x61ec, 0x61ed, 0x61ee, 0x61ef, + 0x61f0, 0x61f1, 0x61f2, 0x61f3, 0x61f4, 0x61f5, 0x61f6, 0x61f7, + 0x61f8, 0x61f9, 0x61fa, 0x61fb, 0x61fc, 0x61fd, 0x61fe, 0x61ff, + 0x6200, 0x6201, 0x6202, 0x6203, 0x6204, 0x6205, 0x6206, 0x6207, + 0x6208, 0x6209, 0x620a, 0x620b, 0x620c, 0x620d, 0x620e, 0x620f, + 0x6210, 0x6211, 0x6212, 0x6213, 0x6214, 0x6215, 0x6216, 0x6217, + 0x6218, 0x6219, 0x621a, 0x621b, 0x621c, 0x621d, 0x621e, 0x621f, + 0x6220, 0x6221, 0x6222, 0x6223, 0x6224, 0x6225, 0x6226, 0x6227, + 0x6228, 0x6229, 0x622a, 0x622b, 0x622c, 0x622d, 0x622e, 0x622f, + 0x6230, 0x6231, 0x6232, 0x6233, 0x6234, 0x6235, 0x6236, 0x6237, + 0x6238, 0x6239, 0x623a, 0x623b, 0x623c, 0x623d, 0x623e, 0x623f, + 0x6240, 0x6241, 0x6242, 0x6243, 0x6244, 0x6245, 0x6246, 0x6247, + 0x6248, 0x6249, 0x624a, 0x624b, 0x624c, 0x624d, 0x624e, 0x624f, + 0x6250, 0x6251, 0x6252, 0x6253, 0x6254, 0x6255, 0x6256, 0x6257, + 0x6258, 0x6259, 0x625a, 0x625b, 0x625c, 0x625d, 0x625e, 0x625f, + 0x6260, 0x6261, 0x6262, 0x6263, 0x6264, 0x6265, 0x6266, 0x6267, + 0x6268, 0x6269, 0x626a, 0x626b, 0x626c, 0x626d, 0x626e, 0x626f, + 0x6270, 0x6271, 0x6272, 0x6273, 0x6274, 0x6275, 0x6276, 0x6277, + 0x6278, 0x6279, 0x627a, 0x627b, 0x627c, 0x627d, 0x627e, 0x627f, + 0x6280, 0x6281, 0x6282, 0x6283, 0x6284, 0x6285, 0x6286, 0x6287, + 0x6288, 0x6289, 0x628a, 0x628b, 0x628c, 0x628d, 0x628e, 0x628f, + 0x6290, 0x6291, 0x6292, 0x6293, 0x6294, 0x6295, 0x6296, 0x6297, + 0x6298, 0x6299, 0x629a, 0x629b, 0x629c, 0x629d, 0x629e, 0x629f, + 0x62a0, 0x62a1, 0x62a2, 0x62a3, 0x62a4, 0x62a5, 0x62a6, 0x62a7, + 0x62a8, 0x62a9, 0x62aa, 0x62ab, 0x62ac, 0x62ad, 0x62ae, 0x62af, + 0x62b0, 0x62b1, 0x62b2, 0x62b3, 0x62b4, 0x62b5, 0x62b6, 0x62b7, + 0x62b8, 0x62b9, 0x62ba, 0x62bb, 0x62bc, 0x62bd, 0x62be, 0x62bf, + 0x62c0, 0x62c1, 0x62c2, 0x62c3, 0x62c4, 0x62c5, 0x62c6, 0x62c7, + 0x62c8, 0x62c9, 0x62ca, 0x62cb, 0x62cc, 0x62cd, 0x62ce, 0x62cf, + 0x62d0, 0x62d1, 0x62d2, 0x62d3, 0x62d4, 0x62d5, 0x62d6, 0x62d7, + 0x62d8, 0x62d9, 0x62da, 0x62db, 0x62dc, 0x62dd, 0x62de, 0x62df, + 0x62e0, 0x62e1, 0x62e2, 0x62e3, 0x62e4, 0x62e5, 0x62e6, 0x62e7, + 0x62e8, 0x62e9, 0x62ea, 0x62eb, 0x62ec, 0x62ed, 0x62ee, 0x62ef, + 0x62f0, 0x62f1, 0x62f2, 0x62f3, 0x62f4, 0x62f5, 0x62f6, 0x62f7, + 0x62f8, 0x62f9, 0x62fa, 0x62fb, 0x62fc, 0x62fd, 0x62fe, 0x62ff, + 0x6300, 0x6301, 0x6302, 0x6303, 0x6304, 0x6305, 0x6306, 0x6307, + 0x6308, 0x6309, 0x630a, 0x630b, 0x630c, 0x630d, 0x630e, 0x630f, + 0x6310, 0x6311, 0x6312, 0x6313, 0x6314, 0x6315, 0x6316, 0x6317, + 0x6318, 0x6319, 0x631a, 0x631b, 0x631c, 0x631d, 0x631e, 0x631f, + 0x6320, 0x6321, 0x6322, 0x6323, 0x6324, 0x6325, 0x6326, 0x6327, + 0x6328, 0x6329, 0x632a, 0x632b, 0x632c, 0x632d, 0x632e, 0x632f, + 0x6330, 0x6331, 0x6332, 0x6333, 0x6334, 0x6335, 0x6336, 0x6337, + 0x6338, 0x6339, 0x633a, 0x633b, 0x633c, 0x633d, 0x633e, 0x633f, + 0x6340, 0x6341, 0x6342, 0x6343, 0x6344, 0x6345, 0x6346, 0x6347, + 0x6348, 0x6349, 0x634a, 0x634b, 0x634c, 0x634d, 0x634e, 0x634f, + 0x6350, 0x6351, 0x6352, 0x6353, 0x6354, 0x6355, 0x6356, 0x6357, + 0x6358, 0x6359, 0x635a, 0x635b, 0x635c, 0x635d, 0x635e, 0x635f, + 0x6360, 0x6361, 0x6362, 0x6363, 0x6364, 0x6365, 0x6366, 0x6367, + 0x6368, 0x6369, 0x636a, 0x636b, 0x636c, 0x636d, 0x636e, 0x636f, + 0x6370, 0x6371, 0x6372, 0x6373, 0x6374, 0x6375, 0x6376, 0x6377, + 0x6378, 0x6379, 0x637a, 0x637b, 0x637c, 0x637d, 0x637e, 0x637f, + 0x6380, 0x6381, 0x6382, 0x6383, 0x6384, 0x6385, 0x6386, 0x6387, + 0x6388, 0x6389, 0x638a, 0x638b, 0x638c, 0x638d, 0x638e, 0x638f, + 0x6390, 0x6391, 0x6392, 0x6393, 0x6394, 0x6395, 0x6396, 0x6397, + 0x6398, 0x6399, 0x639a, 0x639b, 0x639c, 0x639d, 0x639e, 0x639f, + 0x63a0, 0x63a1, 0x63a2, 0x63a3, 0x63a4, 0x63a5, 0x63a6, 0x63a7, + 0x63a8, 0x63a9, 0x63aa, 0x63ab, 0x63ac, 0x63ad, 0x63ae, 0x63af, + 0x63b0, 0x63b1, 0x63b2, 0x63b3, 0x63b4, 0x63b5, 0x63b6, 0x63b7, + 0x63b8, 0x63b9, 0x63ba, 0x63bb, 0x63bc, 0x63bd, 0x63be, 0x63bf, + 0x63c0, 0x63c1, 0x63c2, 0x63c3, 0x63c4, 0x63c5, 0x63c6, 0x63c7, + 0x63c8, 0x63c9, 0x63ca, 0x63cb, 0x63cc, 0x63cd, 0x63ce, 0x63cf, + 0x63d0, 0x63d1, 0x63d2, 0x63d3, 0x63d4, 0x63d5, 0x63d6, 0x63d7, + 0x63d8, 0x63d9, 0x63da, 0x63db, 0x63dc, 0x63dd, 0x63de, 0x63df, + 0x63e0, 0x63e1, 0x63e2, 0x63e3, 0x63e4, 0x63e5, 0x63e6, 0x63e7, + 0x63e8, 0x63e9, 0x63ea, 0x63eb, 0x63ec, 0x63ed, 0x63ee, 0x63ef, + 0x63f0, 0x63f1, 0x63f2, 0x63f3, 0x63f4, 0x63f5, 0x63f6, 0x63f7, + 0x63f8, 0x63f9, 0x63fa, 0x63fb, 0x63fc, 0x63fd, 0x63fe, 0x63ff, + 0x6400, 0x6401, 0x6402, 0x6403, 0x6404, 0x6405, 0x6406, 0x6407, + 0x6408, 0x6409, 0x640a, 0x640b, 0x640c, 0x640d, 0x640e, 0x640f, + 0x6410, 0x6411, 0x6412, 0x6413, 0x6414, 0x6415, 0x6416, 0x6417, + 0x6418, 0x6419, 0x641a, 0x641b, 0x641c, 0x641d, 0x641e, 0x641f, + 0x6420, 0x6421, 0x6422, 0x6423, 0x6424, 0x6425, 0x6426, 0x6427, + 0x6428, 0x6429, 0x642a, 0x642b, 0x642c, 0x642d, 0x642e, 0x642f, + 0x6430, 0x6431, 0x6432, 0x6433, 0x6434, 0x6435, 0x6436, 0x6437, + 0x6438, 0x6439, 0x643a, 0x643b, 0x643c, 0x643d, 0x643e, 0x643f, + 0x6440, 0x6441, 0x6442, 0x6443, 0x6444, 0x6445, 0x6446, 0x6447, + 0x6448, 0x6449, 0x644a, 0x644b, 0x644c, 0x644d, 0x644e, 0x644f, + 0x6450, 0x6451, 0x6452, 0x6453, 0x6454, 0x6455, 0x6456, 0x6457, + 0x6458, 0x6459, 0x645a, 0x645b, 0x645c, 0x645d, 0x645e, 0x645f, + 0x6460, 0x6461, 0x6462, 0x6463, 0x6464, 0x6465, 0x6466, 0x6467, + 0x6468, 0x6469, 0x646a, 0x646b, 0x646c, 0x646d, 0x646e, 0x646f, + 0x6470, 0x6471, 0x6472, 0x6473, 0x6474, 0x6475, 0x6476, 0x6477, + 0x6478, 0x6479, 0x647a, 0x647b, 0x647c, 0x647d, 0x647e, 0x647f, + 0x6480, 0x6481, 0x6482, 0x6483, 0x6484, 0x6485, 0x6486, 0x6487, + 0x6488, 0x6489, 0x648a, 0x648b, 0x648c, 0x648d, 0x648e, 0x648f, + 0x6490, 0x6491, 0x6492, 0x6493, 0x6494, 0x6495, 0x6496, 0x6497, + 0x6498, 0x6499, 0x649a, 0x649b, 0x649c, 0x649d, 0x649e, 0x649f, + 0x64a0, 0x64a1, 0x64a2, 0x64a3, 0x64a4, 0x64a5, 0x64a6, 0x64a7, + 0x64a8, 0x64a9, 0x64aa, 0x64ab, 0x64ac, 0x64ad, 0x64ae, 0x64af, + 0x64b0, 0x64b1, 0x64b2, 0x64b3, 0x64b4, 0x64b5, 0x64b6, 0x64b7, + 0x64b8, 0x64b9, 0x64ba, 0x64bb, 0x64bc, 0x64bd, 0x64be, 0x64bf, + 0x64c0, 0x64c1, 0x64c2, 0x64c3, 0x64c4, 0x64c5, 0x64c6, 0x64c7, + 0x64c8, 0x64c9, 0x64ca, 0x64cb, 0x64cc, 0x64cd, 0x64ce, 0x64cf, + 0x64d0, 0x64d1, 0x64d2, 0x64d3, 0x64d4, 0x64d5, 0x64d6, 0x64d7, + 0x64d8, 0x64d9, 0x64da, 0x64db, 0x64dc, 0x64dd, 0x64de, 0x64df, + 0x64e0, 0x64e1, 0x64e2, 0x64e3, 0x64e4, 0x64e5, 0x64e6, 0x64e7, + 0x64e8, 0x64e9, 0x64ea, 0x64eb, 0x64ec, 0x64ed, 0x64ee, 0x64ef, + 0x64f0, 0x64f1, 0x64f2, 0x64f3, 0x64f4, 0x64f5, 0x64f6, 0x64f7, + 0x64f8, 0x64f9, 0x64fa, 0x64fb, 0x64fc, 0x64fd, 0x64fe, 0x64ff, + 0x6500, 0x6501, 0x6502, 0x6503, 0x6504, 0x6505, 0x6506, 0x6507, + 0x6508, 0x6509, 0x650a, 0x650b, 0x650c, 0x650d, 0x650e, 0x650f, + 0x6510, 0x6511, 0x6512, 0x6513, 0x6514, 0x6515, 0x6516, 0x6517, + 0x6518, 0x6519, 0x651a, 0x651b, 0x651c, 0x651d, 0x651e, 0x651f, + 0x6520, 0x6521, 0x6522, 0x6523, 0x6524, 0x6525, 0x6526, 0x6527, + 0x6528, 0x6529, 0x652a, 0x652b, 0x652c, 0x652d, 0x652e, 0x652f, + 0x6530, 0x6531, 0x6532, 0x6533, 0x6534, 0x6535, 0x6536, 0x6537, + 0x6538, 0x6539, 0x653a, 0x653b, 0x653c, 0x653d, 0x653e, 0x653f, + 0x6540, 0x6541, 0x6542, 0x6543, 0x6544, 0x6545, 0x6546, 0x6547, + 0x6548, 0x6549, 0x654a, 0x654b, 0x654c, 0x654d, 0x654e, 0x654f, + 0x6550, 0x6551, 0x6552, 0x6553, 0x6554, 0x6555, 0x6556, 0x6557, + 0x6558, 0x6559, 0x655a, 0x655b, 0x655c, 0x655d, 0x655e, 0x655f, + 0x6560, 0x6561, 0x6562, 0x6563, 0x6564, 0x6565, 0x6566, 0x6567, + 0x6568, 0x6569, 0x656a, 0x656b, 0x656c, 0x656d, 0x656e, 0x656f, + 0x6570, 0x6571, 0x6572, 0x6573, 0x6574, 0x6575, 0x6576, 0x6577, + 0x6578, 0x6579, 0x657a, 0x657b, 0x657c, 0x657d, 0x657e, 0x657f, + 0x6580, 0x6581, 0x6582, 0x6583, 0x6584, 0x6585, 0x6586, 0x6587, + 0x6588, 0x6589, 0x658a, 0x658b, 0x658c, 0x658d, 0x658e, 0x658f, + 0x6590, 0x6591, 0x6592, 0x6593, 0x6594, 0x6595, 0x6596, 0x6597, + 0x6598, 0x6599, 0x659a, 0x659b, 0x659c, 0x659d, 0x659e, 0x659f, + 0x65a0, 0x65a1, 0x65a2, 0x65a3, 0x65a4, 0x65a5, 0x65a6, 0x65a7, + 0x65a8, 0x65a9, 0x65aa, 0x65ab, 0x65ac, 0x65ad, 0x65ae, 0x65af, + 0x65b0, 0x65b1, 0x65b2, 0x65b3, 0x65b4, 0x65b5, 0x65b6, 0x65b7, + 0x65b8, 0x65b9, 0x65ba, 0x65bb, 0x65bc, 0x65bd, 0x65be, 0x65bf, + 0x65c0, 0x65c1, 0x65c2, 0x65c3, 0x65c4, 0x65c5, 0x65c6, 0x65c7, + 0x65c8, 0x65c9, 0x65ca, 0x65cb, 0x65cc, 0x65cd, 0x65ce, 0x65cf, + 0x65d0, 0x65d1, 0x65d2, 0x65d3, 0x65d4, 0x65d5, 0x65d6, 0x65d7, + 0x65d8, 0x65d9, 0x65da, 0x65db, 0x65dc, 0x65dd, 0x65de, 0x65df, + 0x65e0, 0x65e1, 0x65e2, 0x65e3, 0x65e4, 0x65e5, 0x65e6, 0x65e7, + 0x65e8, 0x65e9, 0x65ea, 0x65eb, 0x65ec, 0x65ed, 0x65ee, 0x65ef, + 0x65f0, 0x65f1, 0x65f2, 0x65f3, 0x65f4, 0x65f5, 0x65f6, 0x65f7, + 0x65f8, 0x65f9, 0x65fa, 0x65fb, 0x65fc, 0x65fd, 0x65fe, 0x65ff, + 0x6600, 0x6601, 0x6602, 0x6603, 0x6604, 0x6605, 0x6606, 0x6607, + 0x6608, 0x6609, 0x660a, 0x660b, 0x660c, 0x660d, 0x660e, 0x660f, + 0x6610, 0x6611, 0x6612, 0x6613, 0x6614, 0x6615, 0x6616, 0x6617, + 0x6618, 0x6619, 0x661a, 0x661b, 0x661c, 0x661d, 0x661e, 0x661f, + 0x6620, 0x6621, 0x6622, 0x6623, 0x6624, 0x6625, 0x6626, 0x6627, + 0x6628, 0x6629, 0x662a, 0x662b, 0x662c, 0x662d, 0x662e, 0x662f, + 0x6630, 0x6631, 0x6632, 0x6633, 0x6634, 0x6635, 0x6636, 0x6637, + 0x6638, 0x6639, 0x663a, 0x663b, 0x663c, 0x663d, 0x663e, 0x663f, + 0x6640, 0x6641, 0x6642, 0x6643, 0x6644, 0x6645, 0x6646, 0x6647, + 0x6648, 0x6649, 0x664a, 0x664b, 0x664c, 0x664d, 0x664e, 0x664f, + 0x6650, 0x6651, 0x6652, 0x6653, 0x6654, 0x6655, 0x6656, 0x6657, + 0x6658, 0x6659, 0x665a, 0x665b, 0x665c, 0x665d, 0x665e, 0x665f, + 0x6660, 0x6661, 0x6662, 0x6663, 0x6664, 0x6665, 0x6666, 0x6667, + 0x6668, 0x6669, 0x666a, 0x666b, 0x666c, 0x666d, 0x666e, 0x666f, + 0x6670, 0x6671, 0x6672, 0x6673, 0x6674, 0x6675, 0x6676, 0x6677, + 0x6678, 0x6679, 0x667a, 0x667b, 0x667c, 0x667d, 0x667e, 0x667f, + 0x6680, 0x6681, 0x6682, 0x6683, 0x6684, 0x6685, 0x6686, 0x6687, + 0x6688, 0x6689, 0x668a, 0x668b, 0x668c, 0x668d, 0x668e, 0x668f, + 0x6690, 0x6691, 0x6692, 0x6693, 0x6694, 0x6695, 0x6696, 0x6697, + 0x6698, 0x6699, 0x669a, 0x669b, 0x669c, 0x669d, 0x669e, 0x669f, + 0x66a0, 0x66a1, 0x66a2, 0x66a3, 0x66a4, 0x66a5, 0x66a6, 0x66a7, + 0x66a8, 0x66a9, 0x66aa, 0x66ab, 0x66ac, 0x66ad, 0x66ae, 0x66af, + 0x66b0, 0x66b1, 0x66b2, 0x66b3, 0x66b4, 0x66b5, 0x66b6, 0x66b7, + 0x66b8, 0x66b9, 0x66ba, 0x66bb, 0x66bc, 0x66bd, 0x66be, 0x66bf, + 0x66c0, 0x66c1, 0x66c2, 0x66c3, 0x66c4, 0x66c5, 0x66c6, 0x66c7, + 0x66c8, 0x66c9, 0x66ca, 0x66cb, 0x66cc, 0x66cd, 0x66ce, 0x66cf, + 0x66d0, 0x66d1, 0x66d2, 0x66d3, 0x66d4, 0x66d5, 0x66d6, 0x66d7, + 0x66d8, 0x66d9, 0x66da, 0x66db, 0x66dc, 0x66dd, 0x66de, 0x66df, + 0x66e0, 0x66e1, 0x66e2, 0x66e3, 0x66e4, 0x66e5, 0x66e6, 0x66e7, + 0x66e8, 0x66e9, 0x66ea, 0x66eb, 0x66ec, 0x66ed, 0x66ee, 0x66ef, + 0x66f0, 0x66f1, 0x66f2, 0x66f3, 0x66f4, 0x66f5, 0x66f6, 0x66f7, + 0x66f8, 0x66f9, 0x66fa, 0x66fb, 0x66fc, 0x66fd, 0x66fe, 0x66ff, + 0x6700, 0x6701, 0x6702, 0x6703, 0x6704, 0x6705, 0x6706, 0x6707, + 0x6708, 0x6709, 0x670a, 0x670b, 0x670c, 0x670d, 0x670e, 0x670f, + 0x6710, 0x6711, 0x6712, 0x6713, 0x6714, 0x6715, 0x6716, 0x6717, + 0x6718, 0x6719, 0x671a, 0x671b, 0x671c, 0x671d, 0x671e, 0x671f, + 0x6720, 0x6721, 0x6722, 0x6723, 0x6724, 0x6725, 0x6726, 0x6727, + 0x6728, 0x6729, 0x672a, 0x672b, 0x672c, 0x672d, 0x672e, 0x672f, + 0x6730, 0x6731, 0x6732, 0x6733, 0x6734, 0x6735, 0x6736, 0x6737, + 0x6738, 0x6739, 0x673a, 0x673b, 0x673c, 0x673d, 0x673e, 0x673f, + 0x6740, 0x6741, 0x6742, 0x6743, 0x6744, 0x6745, 0x6746, 0x6747, + 0x6748, 0x6749, 0x674a, 0x674b, 0x674c, 0x674d, 0x674e, 0x674f, + 0x6750, 0x6751, 0x6752, 0x6753, 0x6754, 0x6755, 0x6756, 0x6757, + 0x6758, 0x6759, 0x675a, 0x675b, 0x675c, 0x675d, 0x675e, 0x675f, + 0x6760, 0x6761, 0x6762, 0x6763, 0x6764, 0x6765, 0x6766, 0x6767, + 0x6768, 0x6769, 0x676a, 0x676b, 0x676c, 0x676d, 0x676e, 0x676f, + 0x6770, 0x6771, 0x6772, 0x6773, 0x6774, 0x6775, 0x6776, 0x6777, + 0x6778, 0x6779, 0x677a, 0x677b, 0x677c, 0x677d, 0x677e, 0x677f, + 0x6780, 0x6781, 0x6782, 0x6783, 0x6784, 0x6785, 0x6786, 0x6787, + 0x6788, 0x6789, 0x678a, 0x678b, 0x678c, 0x678d, 0x678e, 0x678f, + 0x6790, 0x6791, 0x6792, 0x6793, 0x6794, 0x6795, 0x6796, 0x6797, + 0x6798, 0x6799, 0x679a, 0x679b, 0x679c, 0x679d, 0x679e, 0x679f, + 0x67a0, 0x67a1, 0x67a2, 0x67a3, 0x67a4, 0x67a5, 0x67a6, 0x67a7, + 0x67a8, 0x67a9, 0x67aa, 0x67ab, 0x67ac, 0x67ad, 0x67ae, 0x67af, + 0x67b0, 0x67b1, 0x67b2, 0x67b3, 0x67b4, 0x67b5, 0x67b6, 0x67b7, + 0x67b8, 0x67b9, 0x67ba, 0x67bb, 0x67bc, 0x67bd, 0x67be, 0x67bf, + 0x67c0, 0x67c1, 0x67c2, 0x67c3, 0x67c4, 0x67c5, 0x67c6, 0x67c7, + 0x67c8, 0x67c9, 0x67ca, 0x67cb, 0x67cc, 0x67cd, 0x67ce, 0x67cf, + 0x67d0, 0x67d1, 0x67d2, 0x67d3, 0x67d4, 0x67d5, 0x67d6, 0x67d7, + 0x67d8, 0x67d9, 0x67da, 0x67db, 0x67dc, 0x67dd, 0x67de, 0x67df, + 0x67e0, 0x67e1, 0x67e2, 0x67e3, 0x67e4, 0x67e5, 0x67e6, 0x67e7, + 0x67e8, 0x67e9, 0x67ea, 0x67eb, 0x67ec, 0x67ed, 0x67ee, 0x67ef, + 0x67f0, 0x67f1, 0x67f2, 0x67f3, 0x67f4, 0x67f5, 0x67f6, 0x67f7, + 0x67f8, 0x67f9, 0x67fa, 0x67fb, 0x67fc, 0x67fd, 0x67fe, 0x67ff, + 0x6800, 0x6801, 0x6802, 0x6803, 0x6804, 0x6805, 0x6806, 0x6807, + 0x6808, 0x6809, 0x680a, 0x680b, 0x680c, 0x680d, 0x680e, 0x680f, + 0x6810, 0x6811, 0x6812, 0x6813, 0x6814, 0x6815, 0x6816, 0x6817, + 0x6818, 0x6819, 0x681a, 0x681b, 0x681c, 0x681d, 0x681e, 0x681f, + 0x6820, 0x6821, 0x6822, 0x6823, 0x6824, 0x6825, 0x6826, 0x6827, + 0x6828, 0x6829, 0x682a, 0x682b, 0x682c, 0x682d, 0x682e, 0x682f, + 0x6830, 0x6831, 0x6832, 0x6833, 0x6834, 0x6835, 0x6836, 0x6837, + 0x6838, 0x6839, 0x683a, 0x683b, 0x683c, 0x683d, 0x683e, 0x683f, + 0x6840, 0x6841, 0x6842, 0x6843, 0x6844, 0x6845, 0x6846, 0x6847, + 0x6848, 0x6849, 0x684a, 0x684b, 0x684c, 0x684d, 0x684e, 0x684f, + 0x6850, 0x6851, 0x6852, 0x6853, 0x6854, 0x6855, 0x6856, 0x6857, + 0x6858, 0x6859, 0x685a, 0x685b, 0x685c, 0x685d, 0x685e, 0x685f, + 0x6860, 0x6861, 0x6862, 0x6863, 0x6864, 0x6865, 0x6866, 0x6867, + 0x6868, 0x6869, 0x686a, 0x686b, 0x686c, 0x686d, 0x686e, 0x686f, + 0x6870, 0x6871, 0x6872, 0x6873, 0x6874, 0x6875, 0x6876, 0x6877, + 0x6878, 0x6879, 0x687a, 0x687b, 0x687c, 0x687d, 0x687e, 0x687f, + 0x6880, 0x6881, 0x6882, 0x6883, 0x6884, 0x6885, 0x6886, 0x6887, + 0x6888, 0x6889, 0x688a, 0x688b, 0x688c, 0x688d, 0x688e, 0x688f, + 0x6890, 0x6891, 0x6892, 0x6893, 0x6894, 0x6895, 0x6896, 0x6897, + 0x6898, 0x6899, 0x689a, 0x689b, 0x689c, 0x689d, 0x689e, 0x689f, + 0x68a0, 0x68a1, 0x68a2, 0x68a3, 0x68a4, 0x68a5, 0x68a6, 0x68a7, + 0x68a8, 0x68a9, 0x68aa, 0x68ab, 0x68ac, 0x68ad, 0x68ae, 0x68af, + 0x68b0, 0x68b1, 0x68b2, 0x68b3, 0x68b4, 0x68b5, 0x68b6, 0x68b7, + 0x68b8, 0x68b9, 0x68ba, 0x68bb, 0x68bc, 0x68bd, 0x68be, 0x68bf, + 0x68c0, 0x68c1, 0x68c2, 0x68c3, 0x68c4, 0x68c5, 0x68c6, 0x68c7, + 0x68c8, 0x68c9, 0x68ca, 0x68cb, 0x68cc, 0x68cd, 0x68ce, 0x68cf, + 0x68d0, 0x68d1, 0x68d2, 0x68d3, 0x68d4, 0x68d5, 0x68d6, 0x68d7, + 0x68d8, 0x68d9, 0x68da, 0x68db, 0x68dc, 0x68dd, 0x68de, 0x68df, + 0x68e0, 0x68e1, 0x68e2, 0x68e3, 0x68e4, 0x68e5, 0x68e6, 0x68e7, + 0x68e8, 0x68e9, 0x68ea, 0x68eb, 0x68ec, 0x68ed, 0x68ee, 0x68ef, + 0x68f0, 0x68f1, 0x68f2, 0x68f3, 0x68f4, 0x68f5, 0x68f6, 0x68f7, + 0x68f8, 0x68f9, 0x68fa, 0x68fb, 0x68fc, 0x68fd, 0x68fe, 0x68ff, + 0x6900, 0x6901, 0x6902, 0x6903, 0x6904, 0x6905, 0x6906, 0x6907, + 0x6908, 0x6909, 0x690a, 0x690b, 0x690c, 0x690d, 0x690e, 0x690f, + 0x6910, 0x6911, 0x6912, 0x6913, 0x6914, 0x6915, 0x6916, 0x6917, + 0x6918, 0x6919, 0x691a, 0x691b, 0x691c, 0x691d, 0x691e, 0x691f, + 0x6920, 0x6921, 0x6922, 0x6923, 0x6924, 0x6925, 0x6926, 0x6927, + 0x6928, 0x6929, 0x692a, 0x692b, 0x692c, 0x692d, 0x692e, 0x692f, + 0x6930, 0x6931, 0x6932, 0x6933, 0x6934, 0x6935, 0x6936, 0x6937, + 0x6938, 0x6939, 0x693a, 0x693b, 0x693c, 0x693d, 0x693e, 0x693f, + 0x6940, 0x6941, 0x6942, 0x6943, 0x6944, 0x6945, 0x6946, 0x6947, + 0x6948, 0x6949, 0x694a, 0x694b, 0x694c, 0x694d, 0x694e, 0x694f, + 0x6950, 0x6951, 0x6952, 0x6953, 0x6954, 0x6955, 0x6956, 0x6957, + 0x6958, 0x6959, 0x695a, 0x695b, 0x695c, 0x695d, 0x695e, 0x695f, + 0x6960, 0x6961, 0x6962, 0x6963, 0x6964, 0x6965, 0x6966, 0x6967, + 0x6968, 0x6969, 0x696a, 0x696b, 0x696c, 0x696d, 0x696e, 0x696f, + 0x6970, 0x6971, 0x6972, 0x6973, 0x6974, 0x6975, 0x6976, 0x6977, + 0x6978, 0x6979, 0x697a, 0x697b, 0x697c, 0x697d, 0x697e, 0x697f, + 0x6980, 0x6981, 0x6982, 0x6983, 0x6984, 0x6985, 0x6986, 0x6987, + 0x6988, 0x6989, 0x698a, 0x698b, 0x698c, 0x698d, 0x698e, 0x698f, + 0x6990, 0x6991, 0x6992, 0x6993, 0x6994, 0x6995, 0x6996, 0x6997, + 0x6998, 0x6999, 0x699a, 0x699b, 0x699c, 0x699d, 0x699e, 0x699f, + 0x69a0, 0x69a1, 0x69a2, 0x69a3, 0x69a4, 0x69a5, 0x69a6, 0x69a7, + 0x69a8, 0x69a9, 0x69aa, 0x69ab, 0x69ac, 0x69ad, 0x69ae, 0x69af, + 0x69b0, 0x69b1, 0x69b2, 0x69b3, 0x69b4, 0x69b5, 0x69b6, 0x69b7, + 0x69b8, 0x69b9, 0x69ba, 0x69bb, 0x69bc, 0x69bd, 0x69be, 0x69bf, + 0x69c0, 0x69c1, 0x69c2, 0x69c3, 0x69c4, 0x69c5, 0x69c6, 0x69c7, + 0x69c8, 0x69c9, 0x69ca, 0x69cb, 0x69cc, 0x69cd, 0x69ce, 0x69cf, + 0x69d0, 0x69d1, 0x69d2, 0x69d3, 0x69d4, 0x69d5, 0x69d6, 0x69d7, + 0x69d8, 0x69d9, 0x69da, 0x69db, 0x69dc, 0x69dd, 0x69de, 0x69df, + 0x69e0, 0x69e1, 0x69e2, 0x69e3, 0x69e4, 0x69e5, 0x69e6, 0x69e7, + 0x69e8, 0x69e9, 0x69ea, 0x69eb, 0x69ec, 0x69ed, 0x69ee, 0x69ef, + 0x69f0, 0x69f1, 0x69f2, 0x69f3, 0x69f4, 0x69f5, 0x69f6, 0x69f7, + 0x69f8, 0x69f9, 0x69fa, 0x69fb, 0x69fc, 0x69fd, 0x69fe, 0x69ff, + 0x6a00, 0x6a01, 0x6a02, 0x6a03, 0x6a04, 0x6a05, 0x6a06, 0x6a07, + 0x6a08, 0x6a09, 0x6a0a, 0x6a0b, 0x6a0c, 0x6a0d, 0x6a0e, 0x6a0f, + 0x6a10, 0x6a11, 0x6a12, 0x6a13, 0x6a14, 0x6a15, 0x6a16, 0x6a17, + 0x6a18, 0x6a19, 0x6a1a, 0x6a1b, 0x6a1c, 0x6a1d, 0x6a1e, 0x6a1f, + 0x6a20, 0x6a21, 0x6a22, 0x6a23, 0x6a24, 0x6a25, 0x6a26, 0x6a27, + 0x6a28, 0x6a29, 0x6a2a, 0x6a2b, 0x6a2c, 0x6a2d, 0x6a2e, 0x6a2f, + 0x6a30, 0x6a31, 0x6a32, 0x6a33, 0x6a34, 0x6a35, 0x6a36, 0x6a37, + 0x6a38, 0x6a39, 0x6a3a, 0x6a3b, 0x6a3c, 0x6a3d, 0x6a3e, 0x6a3f, + 0x6a40, 0x6a41, 0x6a42, 0x6a43, 0x6a44, 0x6a45, 0x6a46, 0x6a47, + 0x6a48, 0x6a49, 0x6a4a, 0x6a4b, 0x6a4c, 0x6a4d, 0x6a4e, 0x6a4f, + 0x6a50, 0x6a51, 0x6a52, 0x6a53, 0x6a54, 0x6a55, 0x6a56, 0x6a57, + 0x6a58, 0x6a59, 0x6a5a, 0x6a5b, 0x6a5c, 0x6a5d, 0x6a5e, 0x6a5f, + 0x6a60, 0x6a61, 0x6a62, 0x6a63, 0x6a64, 0x6a65, 0x6a66, 0x6a67, + 0x6a68, 0x6a69, 0x6a6a, 0x6a6b, 0x6a6c, 0x6a6d, 0x6a6e, 0x6a6f, + 0x6a70, 0x6a71, 0x6a72, 0x6a73, 0x6a74, 0x6a75, 0x6a76, 0x6a77, + 0x6a78, 0x6a79, 0x6a7a, 0x6a7b, 0x6a7c, 0x6a7d, 0x6a7e, 0x6a7f, + 0x6a80, 0x6a81, 0x6a82, 0x6a83, 0x6a84, 0x6a85, 0x6a86, 0x6a87, + 0x6a88, 0x6a89, 0x6a8a, 0x6a8b, 0x6a8c, 0x6a8d, 0x6a8e, 0x6a8f, + 0x6a90, 0x6a91, 0x6a92, 0x6a93, 0x6a94, 0x6a95, 0x6a96, 0x6a97, + 0x6a98, 0x6a99, 0x6a9a, 0x6a9b, 0x6a9c, 0x6a9d, 0x6a9e, 0x6a9f, + 0x6aa0, 0x6aa1, 0x6aa2, 0x6aa3, 0x6aa4, 0x6aa5, 0x6aa6, 0x6aa7, + 0x6aa8, 0x6aa9, 0x6aaa, 0x6aab, 0x6aac, 0x6aad, 0x6aae, 0x6aaf, + 0x6ab0, 0x6ab1, 0x6ab2, 0x6ab3, 0x6ab4, 0x6ab5, 0x6ab6, 0x6ab7, + 0x6ab8, 0x6ab9, 0x6aba, 0x6abb, 0x6abc, 0x6abd, 0x6abe, 0x6abf, + 0x6ac0, 0x6ac1, 0x6ac2, 0x6ac3, 0x6ac4, 0x6ac5, 0x6ac6, 0x6ac7, + 0x6ac8, 0x6ac9, 0x6aca, 0x6acb, 0x6acc, 0x6acd, 0x6ace, 0x6acf, + 0x6ad0, 0x6ad1, 0x6ad2, 0x6ad3, 0x6ad4, 0x6ad5, 0x6ad6, 0x6ad7, + 0x6ad8, 0x6ad9, 0x6ada, 0x6adb, 0x6adc, 0x6add, 0x6ade, 0x6adf, + 0x6ae0, 0x6ae1, 0x6ae2, 0x6ae3, 0x6ae4, 0x6ae5, 0x6ae6, 0x6ae7, + 0x6ae8, 0x6ae9, 0x6aea, 0x6aeb, 0x6aec, 0x6aed, 0x6aee, 0x6aef, + 0x6af0, 0x6af1, 0x6af2, 0x6af3, 0x6af4, 0x6af5, 0x6af6, 0x6af7, + 0x6af8, 0x6af9, 0x6afa, 0x6afb, 0x6afc, 0x6afd, 0x6afe, 0x6aff, + 0x6b00, 0x6b01, 0x6b02, 0x6b03, 0x6b04, 0x6b05, 0x6b06, 0x6b07, + 0x6b08, 0x6b09, 0x6b0a, 0x6b0b, 0x6b0c, 0x6b0d, 0x6b0e, 0x6b0f, + 0x6b10, 0x6b11, 0x6b12, 0x6b13, 0x6b14, 0x6b15, 0x6b16, 0x6b17, + 0x6b18, 0x6b19, 0x6b1a, 0x6b1b, 0x6b1c, 0x6b1d, 0x6b1e, 0x6b1f, + 0x6b20, 0x6b21, 0x6b22, 0x6b23, 0x6b24, 0x6b25, 0x6b26, 0x6b27, + 0x6b28, 0x6b29, 0x6b2a, 0x6b2b, 0x6b2c, 0x6b2d, 0x6b2e, 0x6b2f, + 0x6b30, 0x6b31, 0x6b32, 0x6b33, 0x6b34, 0x6b35, 0x6b36, 0x6b37, + 0x6b38, 0x6b39, 0x6b3a, 0x6b3b, 0x6b3c, 0x6b3d, 0x6b3e, 0x6b3f, + 0x6b40, 0x6b41, 0x6b42, 0x6b43, 0x6b44, 0x6b45, 0x6b46, 0x6b47, + 0x6b48, 0x6b49, 0x6b4a, 0x6b4b, 0x6b4c, 0x6b4d, 0x6b4e, 0x6b4f, + 0x6b50, 0x6b51, 0x6b52, 0x6b53, 0x6b54, 0x6b55, 0x6b56, 0x6b57, + 0x6b58, 0x6b59, 0x6b5a, 0x6b5b, 0x6b5c, 0x6b5d, 0x6b5e, 0x6b5f, + 0x6b60, 0x6b61, 0x6b62, 0x6b63, 0x6b64, 0x6b65, 0x6b66, 0x6b67, + 0x6b68, 0x6b69, 0x6b6a, 0x6b6b, 0x6b6c, 0x6b6d, 0x6b6e, 0x6b6f, + 0x6b70, 0x6b71, 0x6b72, 0x6b73, 0x6b74, 0x6b75, 0x6b76, 0x6b77, + 0x6b78, 0x6b79, 0x6b7a, 0x6b7b, 0x6b7c, 0x6b7d, 0x6b7e, 0x6b7f, + 0x6b80, 0x6b81, 0x6b82, 0x6b83, 0x6b84, 0x6b85, 0x6b86, 0x6b87, + 0x6b88, 0x6b89, 0x6b8a, 0x6b8b, 0x6b8c, 0x6b8d, 0x6b8e, 0x6b8f, + 0x6b90, 0x6b91, 0x6b92, 0x6b93, 0x6b94, 0x6b95, 0x6b96, 0x6b97, + 0x6b98, 0x6b99, 0x6b9a, 0x6b9b, 0x6b9c, 0x6b9d, 0x6b9e, 0x6b9f, + 0x6ba0, 0x6ba1, 0x6ba2, 0x6ba3, 0x6ba4, 0x6ba5, 0x6ba6, 0x6ba7, + 0x6ba8, 0x6ba9, 0x6baa, 0x6bab, 0x6bac, 0x6bad, 0x6bae, 0x6baf, + 0x6bb0, 0x6bb1, 0x6bb2, 0x6bb3, 0x6bb4, 0x6bb5, 0x6bb6, 0x6bb7, + 0x6bb8, 0x6bb9, 0x6bba, 0x6bbb, 0x6bbc, 0x6bbd, 0x6bbe, 0x6bbf, + 0x6bc0, 0x6bc1, 0x6bc2, 0x6bc3, 0x6bc4, 0x6bc5, 0x6bc6, 0x6bc7, + 0x6bc8, 0x6bc9, 0x6bca, 0x6bcb, 0x6bcc, 0x6bcd, 0x6bce, 0x6bcf, + 0x6bd0, 0x6bd1, 0x6bd2, 0x6bd3, 0x6bd4, 0x6bd5, 0x6bd6, 0x6bd7, + 0x6bd8, 0x6bd9, 0x6bda, 0x6bdb, 0x6bdc, 0x6bdd, 0x6bde, 0x6bdf, + 0x6be0, 0x6be1, 0x6be2, 0x6be3, 0x6be4, 0x6be5, 0x6be6, 0x6be7, + 0x6be8, 0x6be9, 0x6bea, 0x6beb, 0x6bec, 0x6bed, 0x6bee, 0x6bef, + 0x6bf0, 0x6bf1, 0x6bf2, 0x6bf3, 0x6bf4, 0x6bf5, 0x6bf6, 0x6bf7, + 0x6bf8, 0x6bf9, 0x6bfa, 0x6bfb, 0x6bfc, 0x6bfd, 0x6bfe, 0x6bff, + 0x6c00, 0x6c01, 0x6c02, 0x6c03, 0x6c04, 0x6c05, 0x6c06, 0x6c07, + 0x6c08, 0x6c09, 0x6c0a, 0x6c0b, 0x6c0c, 0x6c0d, 0x6c0e, 0x6c0f, + 0x6c10, 0x6c11, 0x6c12, 0x6c13, 0x6c14, 0x6c15, 0x6c16, 0x6c17, + 0x6c18, 0x6c19, 0x6c1a, 0x6c1b, 0x6c1c, 0x6c1d, 0x6c1e, 0x6c1f, + 0x6c20, 0x6c21, 0x6c22, 0x6c23, 0x6c24, 0x6c25, 0x6c26, 0x6c27, + 0x6c28, 0x6c29, 0x6c2a, 0x6c2b, 0x6c2c, 0x6c2d, 0x6c2e, 0x6c2f, + 0x6c30, 0x6c31, 0x6c32, 0x6c33, 0x6c34, 0x6c35, 0x6c36, 0x6c37, + 0x6c38, 0x6c39, 0x6c3a, 0x6c3b, 0x6c3c, 0x6c3d, 0x6c3e, 0x6c3f, + 0x6c40, 0x6c41, 0x6c42, 0x6c43, 0x6c44, 0x6c45, 0x6c46, 0x6c47, + 0x6c48, 0x6c49, 0x6c4a, 0x6c4b, 0x6c4c, 0x6c4d, 0x6c4e, 0x6c4f, + 0x6c50, 0x6c51, 0x6c52, 0x6c53, 0x6c54, 0x6c55, 0x6c56, 0x6c57, + 0x6c58, 0x6c59, 0x6c5a, 0x6c5b, 0x6c5c, 0x6c5d, 0x6c5e, 0x6c5f, + 0x6c60, 0x6c61, 0x6c62, 0x6c63, 0x6c64, 0x6c65, 0x6c66, 0x6c67, + 0x6c68, 0x6c69, 0x6c6a, 0x6c6b, 0x6c6c, 0x6c6d, 0x6c6e, 0x6c6f, + 0x6c70, 0x6c71, 0x6c72, 0x6c73, 0x6c74, 0x6c75, 0x6c76, 0x6c77, + 0x6c78, 0x6c79, 0x6c7a, 0x6c7b, 0x6c7c, 0x6c7d, 0x6c7e, 0x6c7f, + 0x6c80, 0x6c81, 0x6c82, 0x6c83, 0x6c84, 0x6c85, 0x6c86, 0x6c87, + 0x6c88, 0x6c89, 0x6c8a, 0x6c8b, 0x6c8c, 0x6c8d, 0x6c8e, 0x6c8f, + 0x6c90, 0x6c91, 0x6c92, 0x6c93, 0x6c94, 0x6c95, 0x6c96, 0x6c97, + 0x6c98, 0x6c99, 0x6c9a, 0x6c9b, 0x6c9c, 0x6c9d, 0x6c9e, 0x6c9f, + 0x6ca0, 0x6ca1, 0x6ca2, 0x6ca3, 0x6ca4, 0x6ca5, 0x6ca6, 0x6ca7, + 0x6ca8, 0x6ca9, 0x6caa, 0x6cab, 0x6cac, 0x6cad, 0x6cae, 0x6caf, + 0x6cb0, 0x6cb1, 0x6cb2, 0x6cb3, 0x6cb4, 0x6cb5, 0x6cb6, 0x6cb7, + 0x6cb8, 0x6cb9, 0x6cba, 0x6cbb, 0x6cbc, 0x6cbd, 0x6cbe, 0x6cbf, + 0x6cc0, 0x6cc1, 0x6cc2, 0x6cc3, 0x6cc4, 0x6cc5, 0x6cc6, 0x6cc7, + 0x6cc8, 0x6cc9, 0x6cca, 0x6ccb, 0x6ccc, 0x6ccd, 0x6cce, 0x6ccf, + 0x6cd0, 0x6cd1, 0x6cd2, 0x6cd3, 0x6cd4, 0x6cd5, 0x6cd6, 0x6cd7, + 0x6cd8, 0x6cd9, 0x6cda, 0x6cdb, 0x6cdc, 0x6cdd, 0x6cde, 0x6cdf, + 0x6ce0, 0x6ce1, 0x6ce2, 0x6ce3, 0x6ce4, 0x6ce5, 0x6ce6, 0x6ce7, + 0x6ce8, 0x6ce9, 0x6cea, 0x6ceb, 0x6cec, 0x6ced, 0x6cee, 0x6cef, + 0x6cf0, 0x6cf1, 0x6cf2, 0x6cf3, 0x6cf4, 0x6cf5, 0x6cf6, 0x6cf7, + 0x6cf8, 0x6cf9, 0x6cfa, 0x6cfb, 0x6cfc, 0x6cfd, 0x6cfe, 0x6cff, + 0x6d00, 0x6d01, 0x6d02, 0x6d03, 0x6d04, 0x6d05, 0x6d06, 0x6d07, + 0x6d08, 0x6d09, 0x6d0a, 0x6d0b, 0x6d0c, 0x6d0d, 0x6d0e, 0x6d0f, + 0x6d10, 0x6d11, 0x6d12, 0x6d13, 0x6d14, 0x6d15, 0x6d16, 0x6d17, + 0x6d18, 0x6d19, 0x6d1a, 0x6d1b, 0x6d1c, 0x6d1d, 0x6d1e, 0x6d1f, + 0x6d20, 0x6d21, 0x6d22, 0x6d23, 0x6d24, 0x6d25, 0x6d26, 0x6d27, + 0x6d28, 0x6d29, 0x6d2a, 0x6d2b, 0x6d2c, 0x6d2d, 0x6d2e, 0x6d2f, + 0x6d30, 0x6d31, 0x6d32, 0x6d33, 0x6d34, 0x6d35, 0x6d36, 0x6d37, + 0x6d38, 0x6d39, 0x6d3a, 0x6d3b, 0x6d3c, 0x6d3d, 0x6d3e, 0x6d3f, + 0x6d40, 0x6d41, 0x6d42, 0x6d43, 0x6d44, 0x6d45, 0x6d46, 0x6d47, + 0x6d48, 0x6d49, 0x6d4a, 0x6d4b, 0x6d4c, 0x6d4d, 0x6d4e, 0x6d4f, + 0x6d50, 0x6d51, 0x6d52, 0x6d53, 0x6d54, 0x6d55, 0x6d56, 0x6d57, + 0x6d58, 0x6d59, 0x6d5a, 0x6d5b, 0x6d5c, 0x6d5d, 0x6d5e, 0x6d5f, + 0x6d60, 0x6d61, 0x6d62, 0x6d63, 0x6d64, 0x6d65, 0x6d66, 0x6d67, + 0x6d68, 0x6d69, 0x6d6a, 0x6d6b, 0x6d6c, 0x6d6d, 0x6d6e, 0x6d6f, + 0x6d70, 0x6d71, 0x6d72, 0x6d73, 0x6d74, 0x6d75, 0x6d76, 0x6d77, + 0x6d78, 0x6d79, 0x6d7a, 0x6d7b, 0x6d7c, 0x6d7d, 0x6d7e, 0x6d7f, + 0x6d80, 0x6d81, 0x6d82, 0x6d83, 0x6d84, 0x6d85, 0x6d86, 0x6d87, + 0x6d88, 0x6d89, 0x6d8a, 0x6d8b, 0x6d8c, 0x6d8d, 0x6d8e, 0x6d8f, + 0x6d90, 0x6d91, 0x6d92, 0x6d93, 0x6d94, 0x6d95, 0x6d96, 0x6d97, + 0x6d98, 0x6d99, 0x6d9a, 0x6d9b, 0x6d9c, 0x6d9d, 0x6d9e, 0x6d9f, + 0x6da0, 0x6da1, 0x6da2, 0x6da3, 0x6da4, 0x6da5, 0x6da6, 0x6da7, + 0x6da8, 0x6da9, 0x6daa, 0x6dab, 0x6dac, 0x6dad, 0x6dae, 0x6daf, + 0x6db0, 0x6db1, 0x6db2, 0x6db3, 0x6db4, 0x6db5, 0x6db6, 0x6db7, + 0x6db8, 0x6db9, 0x6dba, 0x6dbb, 0x6dbc, 0x6dbd, 0x6dbe, 0x6dbf, + 0x6dc0, 0x6dc1, 0x6dc2, 0x6dc3, 0x6dc4, 0x6dc5, 0x6dc6, 0x6dc7, + 0x6dc8, 0x6dc9, 0x6dca, 0x6dcb, 0x6dcc, 0x6dcd, 0x6dce, 0x6dcf, + 0x6dd0, 0x6dd1, 0x6dd2, 0x6dd3, 0x6dd4, 0x6dd5, 0x6dd6, 0x6dd7, + 0x6dd8, 0x6dd9, 0x6dda, 0x6ddb, 0x6ddc, 0x6ddd, 0x6dde, 0x6ddf, + 0x6de0, 0x6de1, 0x6de2, 0x6de3, 0x6de4, 0x6de5, 0x6de6, 0x6de7, + 0x6de8, 0x6de9, 0x6dea, 0x6deb, 0x6dec, 0x6ded, 0x6dee, 0x6def, + 0x6df0, 0x6df1, 0x6df2, 0x6df3, 0x6df4, 0x6df5, 0x6df6, 0x6df7, + 0x6df8, 0x6df9, 0x6dfa, 0x6dfb, 0x6dfc, 0x6dfd, 0x6dfe, 0x6dff, + 0x6e00, 0x6e01, 0x6e02, 0x6e03, 0x6e04, 0x6e05, 0x6e06, 0x6e07, + 0x6e08, 0x6e09, 0x6e0a, 0x6e0b, 0x6e0c, 0x6e0d, 0x6e0e, 0x6e0f, + 0x6e10, 0x6e11, 0x6e12, 0x6e13, 0x6e14, 0x6e15, 0x6e16, 0x6e17, + 0x6e18, 0x6e19, 0x6e1a, 0x6e1b, 0x6e1c, 0x6e1d, 0x6e1e, 0x6e1f, + 0x6e20, 0x6e21, 0x6e22, 0x6e23, 0x6e24, 0x6e25, 0x6e26, 0x6e27, + 0x6e28, 0x6e29, 0x6e2a, 0x6e2b, 0x6e2c, 0x6e2d, 0x6e2e, 0x6e2f, + 0x6e30, 0x6e31, 0x6e32, 0x6e33, 0x6e34, 0x6e35, 0x6e36, 0x6e37, + 0x6e38, 0x6e39, 0x6e3a, 0x6e3b, 0x6e3c, 0x6e3d, 0x6e3e, 0x6e3f, + 0x6e40, 0x6e41, 0x6e42, 0x6e43, 0x6e44, 0x6e45, 0x6e46, 0x6e47, + 0x6e48, 0x6e49, 0x6e4a, 0x6e4b, 0x6e4c, 0x6e4d, 0x6e4e, 0x6e4f, + 0x6e50, 0x6e51, 0x6e52, 0x6e53, 0x6e54, 0x6e55, 0x6e56, 0x6e57, + 0x6e58, 0x6e59, 0x6e5a, 0x6e5b, 0x6e5c, 0x6e5d, 0x6e5e, 0x6e5f, + 0x6e60, 0x6e61, 0x6e62, 0x6e63, 0x6e64, 0x6e65, 0x6e66, 0x6e67, + 0x6e68, 0x6e69, 0x6e6a, 0x6e6b, 0x6e6c, 0x6e6d, 0x6e6e, 0x6e6f, + 0x6e70, 0x6e71, 0x6e72, 0x6e73, 0x6e74, 0x6e75, 0x6e76, 0x6e77, + 0x6e78, 0x6e79, 0x6e7a, 0x6e7b, 0x6e7c, 0x6e7d, 0x6e7e, 0x6e7f, + 0x6e80, 0x6e81, 0x6e82, 0x6e83, 0x6e84, 0x6e85, 0x6e86, 0x6e87, + 0x6e88, 0x6e89, 0x6e8a, 0x6e8b, 0x6e8c, 0x6e8d, 0x6e8e, 0x6e8f, + 0x6e90, 0x6e91, 0x6e92, 0x6e93, 0x6e94, 0x6e95, 0x6e96, 0x6e97, + 0x6e98, 0x6e99, 0x6e9a, 0x6e9b, 0x6e9c, 0x6e9d, 0x6e9e, 0x6e9f, + 0x6ea0, 0x6ea1, 0x6ea2, 0x6ea3, 0x6ea4, 0x6ea5, 0x6ea6, 0x6ea7, + 0x6ea8, 0x6ea9, 0x6eaa, 0x6eab, 0x6eac, 0x6ead, 0x6eae, 0x6eaf, + 0x6eb0, 0x6eb1, 0x6eb2, 0x6eb3, 0x6eb4, 0x6eb5, 0x6eb6, 0x6eb7, + 0x6eb8, 0x6eb9, 0x6eba, 0x6ebb, 0x6ebc, 0x6ebd, 0x6ebe, 0x6ebf, + 0x6ec0, 0x6ec1, 0x6ec2, 0x6ec3, 0x6ec4, 0x6ec5, 0x6ec6, 0x6ec7, + 0x6ec8, 0x6ec9, 0x6eca, 0x6ecb, 0x6ecc, 0x6ecd, 0x6ece, 0x6ecf, + 0x6ed0, 0x6ed1, 0x6ed2, 0x6ed3, 0x6ed4, 0x6ed5, 0x6ed6, 0x6ed7, + 0x6ed8, 0x6ed9, 0x6eda, 0x6edb, 0x6edc, 0x6edd, 0x6ede, 0x6edf, + 0x6ee0, 0x6ee1, 0x6ee2, 0x6ee3, 0x6ee4, 0x6ee5, 0x6ee6, 0x6ee7, + 0x6ee8, 0x6ee9, 0x6eea, 0x6eeb, 0x6eec, 0x6eed, 0x6eee, 0x6eef, + 0x6ef0, 0x6ef1, 0x6ef2, 0x6ef3, 0x6ef4, 0x6ef5, 0x6ef6, 0x6ef7, + 0x6ef8, 0x6ef9, 0x6efa, 0x6efb, 0x6efc, 0x6efd, 0x6efe, 0x6eff, + 0x6f00, 0x6f01, 0x6f02, 0x6f03, 0x6f04, 0x6f05, 0x6f06, 0x6f07, + 0x6f08, 0x6f09, 0x6f0a, 0x6f0b, 0x6f0c, 0x6f0d, 0x6f0e, 0x6f0f, + 0x6f10, 0x6f11, 0x6f12, 0x6f13, 0x6f14, 0x6f15, 0x6f16, 0x6f17, + 0x6f18, 0x6f19, 0x6f1a, 0x6f1b, 0x6f1c, 0x6f1d, 0x6f1e, 0x6f1f, + 0x6f20, 0x6f21, 0x6f22, 0x6f23, 0x6f24, 0x6f25, 0x6f26, 0x6f27, + 0x6f28, 0x6f29, 0x6f2a, 0x6f2b, 0x6f2c, 0x6f2d, 0x6f2e, 0x6f2f, + 0x6f30, 0x6f31, 0x6f32, 0x6f33, 0x6f34, 0x6f35, 0x6f36, 0x6f37, + 0x6f38, 0x6f39, 0x6f3a, 0x6f3b, 0x6f3c, 0x6f3d, 0x6f3e, 0x6f3f, + 0x6f40, 0x6f41, 0x6f42, 0x6f43, 0x6f44, 0x6f45, 0x6f46, 0x6f47, + 0x6f48, 0x6f49, 0x6f4a, 0x6f4b, 0x6f4c, 0x6f4d, 0x6f4e, 0x6f4f, + 0x6f50, 0x6f51, 0x6f52, 0x6f53, 0x6f54, 0x6f55, 0x6f56, 0x6f57, + 0x6f58, 0x6f59, 0x6f5a, 0x6f5b, 0x6f5c, 0x6f5d, 0x6f5e, 0x6f5f, + 0x6f60, 0x6f61, 0x6f62, 0x6f63, 0x6f64, 0x6f65, 0x6f66, 0x6f67, + 0x6f68, 0x6f69, 0x6f6a, 0x6f6b, 0x6f6c, 0x6f6d, 0x6f6e, 0x6f6f, + 0x6f70, 0x6f71, 0x6f72, 0x6f73, 0x6f74, 0x6f75, 0x6f76, 0x6f77, + 0x6f78, 0x6f79, 0x6f7a, 0x6f7b, 0x6f7c, 0x6f7d, 0x6f7e, 0x6f7f, + 0x6f80, 0x6f81, 0x6f82, 0x6f83, 0x6f84, 0x6f85, 0x6f86, 0x6f87, + 0x6f88, 0x6f89, 0x6f8a, 0x6f8b, 0x6f8c, 0x6f8d, 0x6f8e, 0x6f8f, + 0x6f90, 0x6f91, 0x6f92, 0x6f93, 0x6f94, 0x6f95, 0x6f96, 0x6f97, + 0x6f98, 0x6f99, 0x6f9a, 0x6f9b, 0x6f9c, 0x6f9d, 0x6f9e, 0x6f9f, + 0x6fa0, 0x6fa1, 0x6fa2, 0x6fa3, 0x6fa4, 0x6fa5, 0x6fa6, 0x6fa7, + 0x6fa8, 0x6fa9, 0x6faa, 0x6fab, 0x6fac, 0x6fad, 0x6fae, 0x6faf, + 0x6fb0, 0x6fb1, 0x6fb2, 0x6fb3, 0x6fb4, 0x6fb5, 0x6fb6, 0x6fb7, + 0x6fb8, 0x6fb9, 0x6fba, 0x6fbb, 0x6fbc, 0x6fbd, 0x6fbe, 0x6fbf, + 0x6fc0, 0x6fc1, 0x6fc2, 0x6fc3, 0x6fc4, 0x6fc5, 0x6fc6, 0x6fc7, + 0x6fc8, 0x6fc9, 0x6fca, 0x6fcb, 0x6fcc, 0x6fcd, 0x6fce, 0x6fcf, + 0x6fd0, 0x6fd1, 0x6fd2, 0x6fd3, 0x6fd4, 0x6fd5, 0x6fd6, 0x6fd7, + 0x6fd8, 0x6fd9, 0x6fda, 0x6fdb, 0x6fdc, 0x6fdd, 0x6fde, 0x6fdf, + 0x6fe0, 0x6fe1, 0x6fe2, 0x6fe3, 0x6fe4, 0x6fe5, 0x6fe6, 0x6fe7, + 0x6fe8, 0x6fe9, 0x6fea, 0x6feb, 0x6fec, 0x6fed, 0x6fee, 0x6fef, + 0x6ff0, 0x6ff1, 0x6ff2, 0x6ff3, 0x6ff4, 0x6ff5, 0x6ff6, 0x6ff7, + 0x6ff8, 0x6ff9, 0x6ffa, 0x6ffb, 0x6ffc, 0x6ffd, 0x6ffe, 0x6fff, + 0x7000, 0x7001, 0x7002, 0x7003, 0x7004, 0x7005, 0x7006, 0x7007, + 0x7008, 0x7009, 0x700a, 0x700b, 0x700c, 0x700d, 0x700e, 0x700f, + 0x7010, 0x7011, 0x7012, 0x7013, 0x7014, 0x7015, 0x7016, 0x7017, + 0x7018, 0x7019, 0x701a, 0x701b, 0x701c, 0x701d, 0x701e, 0x701f, + 0x7020, 0x7021, 0x7022, 0x7023, 0x7024, 0x7025, 0x7026, 0x7027, + 0x7028, 0x7029, 0x702a, 0x702b, 0x702c, 0x702d, 0x702e, 0x702f, + 0x7030, 0x7031, 0x7032, 0x7033, 0x7034, 0x7035, 0x7036, 0x7037, + 0x7038, 0x7039, 0x703a, 0x703b, 0x703c, 0x703d, 0x703e, 0x703f, + 0x7040, 0x7041, 0x7042, 0x7043, 0x7044, 0x7045, 0x7046, 0x7047, + 0x7048, 0x7049, 0x704a, 0x704b, 0x704c, 0x704d, 0x704e, 0x704f, + 0x7050, 0x7051, 0x7052, 0x7053, 0x7054, 0x7055, 0x7056, 0x7057, + 0x7058, 0x7059, 0x705a, 0x705b, 0x705c, 0x705d, 0x705e, 0x705f, + 0x7060, 0x7061, 0x7062, 0x7063, 0x7064, 0x7065, 0x7066, 0x7067, + 0x7068, 0x7069, 0x706a, 0x706b, 0x706c, 0x706d, 0x706e, 0x706f, + 0x7070, 0x7071, 0x7072, 0x7073, 0x7074, 0x7075, 0x7076, 0x7077, + 0x7078, 0x7079, 0x707a, 0x707b, 0x707c, 0x707d, 0x707e, 0x707f, + 0x7080, 0x7081, 0x7082, 0x7083, 0x7084, 0x7085, 0x7086, 0x7087, + 0x7088, 0x7089, 0x708a, 0x708b, 0x708c, 0x708d, 0x708e, 0x708f, + 0x7090, 0x7091, 0x7092, 0x7093, 0x7094, 0x7095, 0x7096, 0x7097, + 0x7098, 0x7099, 0x709a, 0x709b, 0x709c, 0x709d, 0x709e, 0x709f, + 0x70a0, 0x70a1, 0x70a2, 0x70a3, 0x70a4, 0x70a5, 0x70a6, 0x70a7, + 0x70a8, 0x70a9, 0x70aa, 0x70ab, 0x70ac, 0x70ad, 0x70ae, 0x70af, + 0x70b0, 0x70b1, 0x70b2, 0x70b3, 0x70b4, 0x70b5, 0x70b6, 0x70b7, + 0x70b8, 0x70b9, 0x70ba, 0x70bb, 0x70bc, 0x70bd, 0x70be, 0x70bf, + 0x70c0, 0x70c1, 0x70c2, 0x70c3, 0x70c4, 0x70c5, 0x70c6, 0x70c7, + 0x70c8, 0x70c9, 0x70ca, 0x70cb, 0x70cc, 0x70cd, 0x70ce, 0x70cf, + 0x70d0, 0x70d1, 0x70d2, 0x70d3, 0x70d4, 0x70d5, 0x70d6, 0x70d7, + 0x70d8, 0x70d9, 0x70da, 0x70db, 0x70dc, 0x70dd, 0x70de, 0x70df, + 0x70e0, 0x70e1, 0x70e2, 0x70e3, 0x70e4, 0x70e5, 0x70e6, 0x70e7, + 0x70e8, 0x70e9, 0x70ea, 0x70eb, 0x70ec, 0x70ed, 0x70ee, 0x70ef, + 0x70f0, 0x70f1, 0x70f2, 0x70f3, 0x70f4, 0x70f5, 0x70f6, 0x70f7, + 0x70f8, 0x70f9, 0x70fa, 0x70fb, 0x70fc, 0x70fd, 0x70fe, 0x70ff, + 0x7100, 0x7101, 0x7102, 0x7103, 0x7104, 0x7105, 0x7106, 0x7107, + 0x7108, 0x7109, 0x710a, 0x710b, 0x710c, 0x710d, 0x710e, 0x710f, + 0x7110, 0x7111, 0x7112, 0x7113, 0x7114, 0x7115, 0x7116, 0x7117, + 0x7118, 0x7119, 0x711a, 0x711b, 0x711c, 0x711d, 0x711e, 0x711f, + 0x7120, 0x7121, 0x7122, 0x7123, 0x7124, 0x7125, 0x7126, 0x7127, + 0x7128, 0x7129, 0x712a, 0x712b, 0x712c, 0x712d, 0x712e, 0x712f, + 0x7130, 0x7131, 0x7132, 0x7133, 0x7134, 0x7135, 0x7136, 0x7137, + 0x7138, 0x7139, 0x713a, 0x713b, 0x713c, 0x713d, 0x713e, 0x713f, + 0x7140, 0x7141, 0x7142, 0x7143, 0x7144, 0x7145, 0x7146, 0x7147, + 0x7148, 0x7149, 0x714a, 0x714b, 0x714c, 0x714d, 0x714e, 0x714f, + 0x7150, 0x7151, 0x7152, 0x7153, 0x7154, 0x7155, 0x7156, 0x7157, + 0x7158, 0x7159, 0x715a, 0x715b, 0x715c, 0x715d, 0x715e, 0x715f, + 0x7160, 0x7161, 0x7162, 0x7163, 0x7164, 0x7165, 0x7166, 0x7167, + 0x7168, 0x7169, 0x716a, 0x716b, 0x716c, 0x716d, 0x716e, 0x716f, + 0x7170, 0x7171, 0x7172, 0x7173, 0x7174, 0x7175, 0x7176, 0x7177, + 0x7178, 0x7179, 0x717a, 0x717b, 0x717c, 0x717d, 0x717e, 0x717f, + 0x7180, 0x7181, 0x7182, 0x7183, 0x7184, 0x7185, 0x7186, 0x7187, + 0x7188, 0x7189, 0x718a, 0x718b, 0x718c, 0x718d, 0x718e, 0x718f, + 0x7190, 0x7191, 0x7192, 0x7193, 0x7194, 0x7195, 0x7196, 0x7197, + 0x7198, 0x7199, 0x719a, 0x719b, 0x719c, 0x719d, 0x719e, 0x719f, + 0x71a0, 0x71a1, 0x71a2, 0x71a3, 0x71a4, 0x71a5, 0x71a6, 0x71a7, + 0x71a8, 0x71a9, 0x71aa, 0x71ab, 0x71ac, 0x71ad, 0x71ae, 0x71af, + 0x71b0, 0x71b1, 0x71b2, 0x71b3, 0x71b4, 0x71b5, 0x71b6, 0x71b7, + 0x71b8, 0x71b9, 0x71ba, 0x71bb, 0x71bc, 0x71bd, 0x71be, 0x71bf, + 0x71c0, 0x71c1, 0x71c2, 0x71c3, 0x71c4, 0x71c5, 0x71c6, 0x71c7, + 0x71c8, 0x71c9, 0x71ca, 0x71cb, 0x71cc, 0x71cd, 0x71ce, 0x71cf, + 0x71d0, 0x71d1, 0x71d2, 0x71d3, 0x71d4, 0x71d5, 0x71d6, 0x71d7, + 0x71d8, 0x71d9, 0x71da, 0x71db, 0x71dc, 0x71dd, 0x71de, 0x71df, + 0x71e0, 0x71e1, 0x71e2, 0x71e3, 0x71e4, 0x71e5, 0x71e6, 0x71e7, + 0x71e8, 0x71e9, 0x71ea, 0x71eb, 0x71ec, 0x71ed, 0x71ee, 0x71ef, + 0x71f0, 0x71f1, 0x71f2, 0x71f3, 0x71f4, 0x71f5, 0x71f6, 0x71f7, + 0x71f8, 0x71f9, 0x71fa, 0x71fb, 0x71fc, 0x71fd, 0x71fe, 0x71ff, + 0x7200, 0x7201, 0x7202, 0x7203, 0x7204, 0x7205, 0x7206, 0x7207, + 0x7208, 0x7209, 0x720a, 0x720b, 0x720c, 0x720d, 0x720e, 0x720f, + 0x7210, 0x7211, 0x7212, 0x7213, 0x7214, 0x7215, 0x7216, 0x7217, + 0x7218, 0x7219, 0x721a, 0x721b, 0x721c, 0x721d, 0x721e, 0x721f, + 0x7220, 0x7221, 0x7222, 0x7223, 0x7224, 0x7225, 0x7226, 0x7227, + 0x7228, 0x7229, 0x722a, 0x722b, 0x722c, 0x722d, 0x722e, 0x722f, + 0x7230, 0x7231, 0x7232, 0x7233, 0x7234, 0x7235, 0x7236, 0x7237, + 0x7238, 0x7239, 0x723a, 0x723b, 0x723c, 0x723d, 0x723e, 0x723f, + 0x7240, 0x7241, 0x7242, 0x7243, 0x7244, 0x7245, 0x7246, 0x7247, + 0x7248, 0x7249, 0x724a, 0x724b, 0x724c, 0x724d, 0x724e, 0x724f, + 0x7250, 0x7251, 0x7252, 0x7253, 0x7254, 0x7255, 0x7256, 0x7257, + 0x7258, 0x7259, 0x725a, 0x725b, 0x725c, 0x725d, 0x725e, 0x725f, + 0x7260, 0x7261, 0x7262, 0x7263, 0x7264, 0x7265, 0x7266, 0x7267, + 0x7268, 0x7269, 0x726a, 0x726b, 0x726c, 0x726d, 0x726e, 0x726f, + 0x7270, 0x7271, 0x7272, 0x7273, 0x7274, 0x7275, 0x7276, 0x7277, + 0x7278, 0x7279, 0x727a, 0x727b, 0x727c, 0x727d, 0x727e, 0x727f, + 0x7280, 0x7281, 0x7282, 0x7283, 0x7284, 0x7285, 0x7286, 0x7287, + 0x7288, 0x7289, 0x728a, 0x728b, 0x728c, 0x728d, 0x728e, 0x728f, + 0x7290, 0x7291, 0x7292, 0x7293, 0x7294, 0x7295, 0x7296, 0x7297, + 0x7298, 0x7299, 0x729a, 0x729b, 0x729c, 0x729d, 0x729e, 0x729f, + 0x72a0, 0x72a1, 0x72a2, 0x72a3, 0x72a4, 0x72a5, 0x72a6, 0x72a7, + 0x72a8, 0x72a9, 0x72aa, 0x72ab, 0x72ac, 0x72ad, 0x72ae, 0x72af, + 0x72b0, 0x72b1, 0x72b2, 0x72b3, 0x72b4, 0x72b5, 0x72b6, 0x72b7, + 0x72b8, 0x72b9, 0x72ba, 0x72bb, 0x72bc, 0x72bd, 0x72be, 0x72bf, + 0x72c0, 0x72c1, 0x72c2, 0x72c3, 0x72c4, 0x72c5, 0x72c6, 0x72c7, + 0x72c8, 0x72c9, 0x72ca, 0x72cb, 0x72cc, 0x72cd, 0x72ce, 0x72cf, + 0x72d0, 0x72d1, 0x72d2, 0x72d3, 0x72d4, 0x72d5, 0x72d6, 0x72d7, + 0x72d8, 0x72d9, 0x72da, 0x72db, 0x72dc, 0x72dd, 0x72de, 0x72df, + 0x72e0, 0x72e1, 0x72e2, 0x72e3, 0x72e4, 0x72e5, 0x72e6, 0x72e7, + 0x72e8, 0x72e9, 0x72ea, 0x72eb, 0x72ec, 0x72ed, 0x72ee, 0x72ef, + 0x72f0, 0x72f1, 0x72f2, 0x72f3, 0x72f4, 0x72f5, 0x72f6, 0x72f7, + 0x72f8, 0x72f9, 0x72fa, 0x72fb, 0x72fc, 0x72fd, 0x72fe, 0x72ff, + 0x7300, 0x7301, 0x7302, 0x7303, 0x7304, 0x7305, 0x7306, 0x7307, + 0x7308, 0x7309, 0x730a, 0x730b, 0x730c, 0x730d, 0x730e, 0x730f, + 0x7310, 0x7311, 0x7312, 0x7313, 0x7314, 0x7315, 0x7316, 0x7317, + 0x7318, 0x7319, 0x731a, 0x731b, 0x731c, 0x731d, 0x731e, 0x731f, + 0x7320, 0x7321, 0x7322, 0x7323, 0x7324, 0x7325, 0x7326, 0x7327, + 0x7328, 0x7329, 0x732a, 0x732b, 0x732c, 0x732d, 0x732e, 0x732f, + 0x7330, 0x7331, 0x7332, 0x7333, 0x7334, 0x7335, 0x7336, 0x7337, + 0x7338, 0x7339, 0x733a, 0x733b, 0x733c, 0x733d, 0x733e, 0x733f, + 0x7340, 0x7341, 0x7342, 0x7343, 0x7344, 0x7345, 0x7346, 0x7347, + 0x7348, 0x7349, 0x734a, 0x734b, 0x734c, 0x734d, 0x734e, 0x734f, + 0x7350, 0x7351, 0x7352, 0x7353, 0x7354, 0x7355, 0x7356, 0x7357, + 0x7358, 0x7359, 0x735a, 0x735b, 0x735c, 0x735d, 0x735e, 0x735f, + 0x7360, 0x7361, 0x7362, 0x7363, 0x7364, 0x7365, 0x7366, 0x7367, + 0x7368, 0x7369, 0x736a, 0x736b, 0x736c, 0x736d, 0x736e, 0x736f, + 0x7370, 0x7371, 0x7372, 0x7373, 0x7374, 0x7375, 0x7376, 0x7377, + 0x7378, 0x7379, 0x737a, 0x737b, 0x737c, 0x737d, 0x737e, 0x737f, + 0x7380, 0x7381, 0x7382, 0x7383, 0x7384, 0x7385, 0x7386, 0x7387, + 0x7388, 0x7389, 0x738a, 0x738b, 0x738c, 0x738d, 0x738e, 0x738f, + 0x7390, 0x7391, 0x7392, 0x7393, 0x7394, 0x7395, 0x7396, 0x7397, + 0x7398, 0x7399, 0x739a, 0x739b, 0x739c, 0x739d, 0x739e, 0x739f, + 0x73a0, 0x73a1, 0x73a2, 0x73a3, 0x73a4, 0x73a5, 0x73a6, 0x73a7, + 0x73a8, 0x73a9, 0x73aa, 0x73ab, 0x73ac, 0x73ad, 0x73ae, 0x73af, + 0x73b0, 0x73b1, 0x73b2, 0x73b3, 0x73b4, 0x73b5, 0x73b6, 0x73b7, + 0x73b8, 0x73b9, 0x73ba, 0x73bb, 0x73bc, 0x73bd, 0x73be, 0x73bf, + 0x73c0, 0x73c1, 0x73c2, 0x73c3, 0x73c4, 0x73c5, 0x73c6, 0x73c7, + 0x73c8, 0x73c9, 0x73ca, 0x73cb, 0x73cc, 0x73cd, 0x73ce, 0x73cf, + 0x73d0, 0x73d1, 0x73d2, 0x73d3, 0x73d4, 0x73d5, 0x73d6, 0x73d7, + 0x73d8, 0x73d9, 0x73da, 0x73db, 0x73dc, 0x73dd, 0x73de, 0x73df, + 0x73e0, 0x73e1, 0x73e2, 0x73e3, 0x73e4, 0x73e5, 0x73e6, 0x73e7, + 0x73e8, 0x73e9, 0x73ea, 0x73eb, 0x73ec, 0x73ed, 0x73ee, 0x73ef, + 0x73f0, 0x73f1, 0x73f2, 0x73f3, 0x73f4, 0x73f5, 0x73f6, 0x73f7, + 0x73f8, 0x73f9, 0x73fa, 0x73fb, 0x73fc, 0x73fd, 0x73fe, 0x73ff, + 0x7400, 0x7401, 0x7402, 0x7403, 0x7404, 0x7405, 0x7406, 0x7407, + 0x7408, 0x7409, 0x740a, 0x740b, 0x740c, 0x740d, 0x740e, 0x740f, + 0x7410, 0x7411, 0x7412, 0x7413, 0x7414, 0x7415, 0x7416, 0x7417, + 0x7418, 0x7419, 0x741a, 0x741b, 0x741c, 0x741d, 0x741e, 0x741f, + 0x7420, 0x7421, 0x7422, 0x7423, 0x7424, 0x7425, 0x7426, 0x7427, + 0x7428, 0x7429, 0x742a, 0x742b, 0x742c, 0x742d, 0x742e, 0x742f, + 0x7430, 0x7431, 0x7432, 0x7433, 0x7434, 0x7435, 0x7436, 0x7437, + 0x7438, 0x7439, 0x743a, 0x743b, 0x743c, 0x743d, 0x743e, 0x743f, + 0x7440, 0x7441, 0x7442, 0x7443, 0x7444, 0x7445, 0x7446, 0x7447, + 0x7448, 0x7449, 0x744a, 0x744b, 0x744c, 0x744d, 0x744e, 0x744f, + 0x7450, 0x7451, 0x7452, 0x7453, 0x7454, 0x7455, 0x7456, 0x7457, + 0x7458, 0x7459, 0x745a, 0x745b, 0x745c, 0x745d, 0x745e, 0x745f, + 0x7460, 0x7461, 0x7462, 0x7463, 0x7464, 0x7465, 0x7466, 0x7467, + 0x7468, 0x7469, 0x746a, 0x746b, 0x746c, 0x746d, 0x746e, 0x746f, + 0x7470, 0x7471, 0x7472, 0x7473, 0x7474, 0x7475, 0x7476, 0x7477, + 0x7478, 0x7479, 0x747a, 0x747b, 0x747c, 0x747d, 0x747e, 0x747f, + 0x7480, 0x7481, 0x7482, 0x7483, 0x7484, 0x7485, 0x7486, 0x7487, + 0x7488, 0x7489, 0x748a, 0x748b, 0x748c, 0x748d, 0x748e, 0x748f, + 0x7490, 0x7491, 0x7492, 0x7493, 0x7494, 0x7495, 0x7496, 0x7497, + 0x7498, 0x7499, 0x749a, 0x749b, 0x749c, 0x749d, 0x749e, 0x749f, + 0x74a0, 0x74a1, 0x74a2, 0x74a3, 0x74a4, 0x74a5, 0x74a6, 0x74a7, + 0x74a8, 0x74a9, 0x74aa, 0x74ab, 0x74ac, 0x74ad, 0x74ae, 0x74af, + 0x74b0, 0x74b1, 0x74b2, 0x74b3, 0x74b4, 0x74b5, 0x74b6, 0x74b7, + 0x74b8, 0x74b9, 0x74ba, 0x74bb, 0x74bc, 0x74bd, 0x74be, 0x74bf, + 0x74c0, 0x74c1, 0x74c2, 0x74c3, 0x74c4, 0x74c5, 0x74c6, 0x74c7, + 0x74c8, 0x74c9, 0x74ca, 0x74cb, 0x74cc, 0x74cd, 0x74ce, 0x74cf, + 0x74d0, 0x74d1, 0x74d2, 0x74d3, 0x74d4, 0x74d5, 0x74d6, 0x74d7, + 0x74d8, 0x74d9, 0x74da, 0x74db, 0x74dc, 0x74dd, 0x74de, 0x74df, + 0x74e0, 0x74e1, 0x74e2, 0x74e3, 0x74e4, 0x74e5, 0x74e6, 0x74e7, + 0x74e8, 0x74e9, 0x74ea, 0x74eb, 0x74ec, 0x74ed, 0x74ee, 0x74ef, + 0x74f0, 0x74f1, 0x74f2, 0x74f3, 0x74f4, 0x74f5, 0x74f6, 0x74f7, + 0x74f8, 0x74f9, 0x74fa, 0x74fb, 0x74fc, 0x74fd, 0x74fe, 0x74ff, + 0x7500, 0x7501, 0x7502, 0x7503, 0x7504, 0x7505, 0x7506, 0x7507, + 0x7508, 0x7509, 0x750a, 0x750b, 0x750c, 0x750d, 0x750e, 0x750f, + 0x7510, 0x7511, 0x7512, 0x7513, 0x7514, 0x7515, 0x7516, 0x7517, + 0x7518, 0x7519, 0x751a, 0x751b, 0x751c, 0x751d, 0x751e, 0x751f, + 0x7520, 0x7521, 0x7522, 0x7523, 0x7524, 0x7525, 0x7526, 0x7527, + 0x7528, 0x7529, 0x752a, 0x752b, 0x752c, 0x752d, 0x752e, 0x752f, + 0x7530, 0x7531, 0x7532, 0x7533, 0x7534, 0x7535, 0x7536, 0x7537, + 0x7538, 0x7539, 0x753a, 0x753b, 0x753c, 0x753d, 0x753e, 0x753f, + 0x7540, 0x7541, 0x7542, 0x7543, 0x7544, 0x7545, 0x7546, 0x7547, + 0x7548, 0x7549, 0x754a, 0x754b, 0x754c, 0x754d, 0x754e, 0x754f, + 0x7550, 0x7551, 0x7552, 0x7553, 0x7554, 0x7555, 0x7556, 0x7557, + 0x7558, 0x7559, 0x755a, 0x755b, 0x755c, 0x755d, 0x755e, 0x755f, + 0x7560, 0x7561, 0x7562, 0x7563, 0x7564, 0x7565, 0x7566, 0x7567, + 0x7568, 0x7569, 0x756a, 0x756b, 0x756c, 0x756d, 0x756e, 0x756f, + 0x7570, 0x7571, 0x7572, 0x7573, 0x7574, 0x7575, 0x7576, 0x7577, + 0x7578, 0x7579, 0x757a, 0x757b, 0x757c, 0x757d, 0x757e, 0x757f, + 0x7580, 0x7581, 0x7582, 0x7583, 0x7584, 0x7585, 0x7586, 0x7587, + 0x7588, 0x7589, 0x758a, 0x758b, 0x758c, 0x758d, 0x758e, 0x758f, + 0x7590, 0x7591, 0x7592, 0x7593, 0x7594, 0x7595, 0x7596, 0x7597, + 0x7598, 0x7599, 0x759a, 0x759b, 0x759c, 0x759d, 0x759e, 0x759f, + 0x75a0, 0x75a1, 0x75a2, 0x75a3, 0x75a4, 0x75a5, 0x75a6, 0x75a7, + 0x75a8, 0x75a9, 0x75aa, 0x75ab, 0x75ac, 0x75ad, 0x75ae, 0x75af, + 0x75b0, 0x75b1, 0x75b2, 0x75b3, 0x75b4, 0x75b5, 0x75b6, 0x75b7, + 0x75b8, 0x75b9, 0x75ba, 0x75bb, 0x75bc, 0x75bd, 0x75be, 0x75bf, + 0x75c0, 0x75c1, 0x75c2, 0x75c3, 0x75c4, 0x75c5, 0x75c6, 0x75c7, + 0x75c8, 0x75c9, 0x75ca, 0x75cb, 0x75cc, 0x75cd, 0x75ce, 0x75cf, + 0x75d0, 0x75d1, 0x75d2, 0x75d3, 0x75d4, 0x75d5, 0x75d6, 0x75d7, + 0x75d8, 0x75d9, 0x75da, 0x75db, 0x75dc, 0x75dd, 0x75de, 0x75df, + 0x75e0, 0x75e1, 0x75e2, 0x75e3, 0x75e4, 0x75e5, 0x75e6, 0x75e7, + 0x75e8, 0x75e9, 0x75ea, 0x75eb, 0x75ec, 0x75ed, 0x75ee, 0x75ef, + 0x75f0, 0x75f1, 0x75f2, 0x75f3, 0x75f4, 0x75f5, 0x75f6, 0x75f7, + 0x75f8, 0x75f9, 0x75fa, 0x75fb, 0x75fc, 0x75fd, 0x75fe, 0x75ff, + 0x7600, 0x7601, 0x7602, 0x7603, 0x7604, 0x7605, 0x7606, 0x7607, + 0x7608, 0x7609, 0x760a, 0x760b, 0x760c, 0x760d, 0x760e, 0x760f, + 0x7610, 0x7611, 0x7612, 0x7613, 0x7614, 0x7615, 0x7616, 0x7617, + 0x7618, 0x7619, 0x761a, 0x761b, 0x761c, 0x761d, 0x761e, 0x761f, + 0x7620, 0x7621, 0x7622, 0x7623, 0x7624, 0x7625, 0x7626, 0x7627, + 0x7628, 0x7629, 0x762a, 0x762b, 0x762c, 0x762d, 0x762e, 0x762f, + 0x7630, 0x7631, 0x7632, 0x7633, 0x7634, 0x7635, 0x7636, 0x7637, + 0x7638, 0x7639, 0x763a, 0x763b, 0x763c, 0x763d, 0x763e, 0x763f, + 0x7640, 0x7641, 0x7642, 0x7643, 0x7644, 0x7645, 0x7646, 0x7647, + 0x7648, 0x7649, 0x764a, 0x764b, 0x764c, 0x764d, 0x764e, 0x764f, + 0x7650, 0x7651, 0x7652, 0x7653, 0x7654, 0x7655, 0x7656, 0x7657, + 0x7658, 0x7659, 0x765a, 0x765b, 0x765c, 0x765d, 0x765e, 0x765f, + 0x7660, 0x7661, 0x7662, 0x7663, 0x7664, 0x7665, 0x7666, 0x7667, + 0x7668, 0x7669, 0x766a, 0x766b, 0x766c, 0x766d, 0x766e, 0x766f, + 0x7670, 0x7671, 0x7672, 0x7673, 0x7674, 0x7675, 0x7676, 0x7677, + 0x7678, 0x7679, 0x767a, 0x767b, 0x767c, 0x767d, 0x767e, 0x767f, + 0x7680, 0x7681, 0x7682, 0x7683, 0x7684, 0x7685, 0x7686, 0x7687, + 0x7688, 0x7689, 0x768a, 0x768b, 0x768c, 0x768d, 0x768e, 0x768f, + 0x7690, 0x7691, 0x7692, 0x7693, 0x7694, 0x7695, 0x7696, 0x7697, + 0x7698, 0x7699, 0x769a, 0x769b, 0x769c, 0x769d, 0x769e, 0x769f, + 0x76a0, 0x76a1, 0x76a2, 0x76a3, 0x76a4, 0x76a5, 0x76a6, 0x76a7, + 0x76a8, 0x76a9, 0x76aa, 0x76ab, 0x76ac, 0x76ad, 0x76ae, 0x76af, + 0x76b0, 0x76b1, 0x76b2, 0x76b3, 0x76b4, 0x76b5, 0x76b6, 0x76b7, + 0x76b8, 0x76b9, 0x76ba, 0x76bb, 0x76bc, 0x76bd, 0x76be, 0x76bf, + 0x76c0, 0x76c1, 0x76c2, 0x76c3, 0x76c4, 0x76c5, 0x76c6, 0x76c7, + 0x76c8, 0x76c9, 0x76ca, 0x76cb, 0x76cc, 0x76cd, 0x76ce, 0x76cf, + 0x76d0, 0x76d1, 0x76d2, 0x76d3, 0x76d4, 0x76d5, 0x76d6, 0x76d7, + 0x76d8, 0x76d9, 0x76da, 0x76db, 0x76dc, 0x76dd, 0x76de, 0x76df, + 0x76e0, 0x76e1, 0x76e2, 0x76e3, 0x76e4, 0x76e5, 0x76e6, 0x76e7, + 0x76e8, 0x76e9, 0x76ea, 0x76eb, 0x76ec, 0x76ed, 0x76ee, 0x76ef, + 0x76f0, 0x76f1, 0x76f2, 0x76f3, 0x76f4, 0x76f5, 0x76f6, 0x76f7, + 0x76f8, 0x76f9, 0x76fa, 0x76fb, 0x76fc, 0x76fd, 0x76fe, 0x76ff, + 0x7700, 0x7701, 0x7702, 0x7703, 0x7704, 0x7705, 0x7706, 0x7707, + 0x7708, 0x7709, 0x770a, 0x770b, 0x770c, 0x770d, 0x770e, 0x770f, + 0x7710, 0x7711, 0x7712, 0x7713, 0x7714, 0x7715, 0x7716, 0x7717, + 0x7718, 0x7719, 0x771a, 0x771b, 0x771c, 0x771d, 0x771e, 0x771f, + 0x7720, 0x7721, 0x7722, 0x7723, 0x7724, 0x7725, 0x7726, 0x7727, + 0x7728, 0x7729, 0x772a, 0x772b, 0x772c, 0x772d, 0x772e, 0x772f, + 0x7730, 0x7731, 0x7732, 0x7733, 0x7734, 0x7735, 0x7736, 0x7737, + 0x7738, 0x7739, 0x773a, 0x773b, 0x773c, 0x773d, 0x773e, 0x773f, + 0x7740, 0x7741, 0x7742, 0x7743, 0x7744, 0x7745, 0x7746, 0x7747, + 0x7748, 0x7749, 0x774a, 0x774b, 0x774c, 0x774d, 0x774e, 0x774f, + 0x7750, 0x7751, 0x7752, 0x7753, 0x7754, 0x7755, 0x7756, 0x7757, + 0x7758, 0x7759, 0x775a, 0x775b, 0x775c, 0x775d, 0x775e, 0x775f, + 0x7760, 0x7761, 0x7762, 0x7763, 0x7764, 0x7765, 0x7766, 0x7767, + 0x7768, 0x7769, 0x776a, 0x776b, 0x776c, 0x776d, 0x776e, 0x776f, + 0x7770, 0x7771, 0x7772, 0x7773, 0x7774, 0x7775, 0x7776, 0x7777, + 0x7778, 0x7779, 0x777a, 0x777b, 0x777c, 0x777d, 0x777e, 0x777f, + 0x7780, 0x7781, 0x7782, 0x7783, 0x7784, 0x7785, 0x7786, 0x7787, + 0x7788, 0x7789, 0x778a, 0x778b, 0x778c, 0x778d, 0x778e, 0x778f, + 0x7790, 0x7791, 0x7792, 0x7793, 0x7794, 0x7795, 0x7796, 0x7797, + 0x7798, 0x7799, 0x779a, 0x779b, 0x779c, 0x779d, 0x779e, 0x779f, + 0x77a0, 0x77a1, 0x77a2, 0x77a3, 0x77a4, 0x77a5, 0x77a6, 0x77a7, + 0x77a8, 0x77a9, 0x77aa, 0x77ab, 0x77ac, 0x77ad, 0x77ae, 0x77af, + 0x77b0, 0x77b1, 0x77b2, 0x77b3, 0x77b4, 0x77b5, 0x77b6, 0x77b7, + 0x77b8, 0x77b9, 0x77ba, 0x77bb, 0x77bc, 0x77bd, 0x77be, 0x77bf, + 0x77c0, 0x77c1, 0x77c2, 0x77c3, 0x77c4, 0x77c5, 0x77c6, 0x77c7, + 0x77c8, 0x77c9, 0x77ca, 0x77cb, 0x77cc, 0x77cd, 0x77ce, 0x77cf, + 0x77d0, 0x77d1, 0x77d2, 0x77d3, 0x77d4, 0x77d5, 0x77d6, 0x77d7, + 0x77d8, 0x77d9, 0x77da, 0x77db, 0x77dc, 0x77dd, 0x77de, 0x77df, + 0x77e0, 0x77e1, 0x77e2, 0x77e3, 0x77e4, 0x77e5, 0x77e6, 0x77e7, + 0x77e8, 0x77e9, 0x77ea, 0x77eb, 0x77ec, 0x77ed, 0x77ee, 0x77ef, + 0x77f0, 0x77f1, 0x77f2, 0x77f3, 0x77f4, 0x77f5, 0x77f6, 0x77f7, + 0x77f8, 0x77f9, 0x77fa, 0x77fb, 0x77fc, 0x77fd, 0x77fe, 0x77ff, + 0x7800, 0x7801, 0x7802, 0x7803, 0x7804, 0x7805, 0x7806, 0x7807, + 0x7808, 0x7809, 0x780a, 0x780b, 0x780c, 0x780d, 0x780e, 0x780f, + 0x7810, 0x7811, 0x7812, 0x7813, 0x7814, 0x7815, 0x7816, 0x7817, + 0x7818, 0x7819, 0x781a, 0x781b, 0x781c, 0x781d, 0x781e, 0x781f, + 0x7820, 0x7821, 0x7822, 0x7823, 0x7824, 0x7825, 0x7826, 0x7827, + 0x7828, 0x7829, 0x782a, 0x782b, 0x782c, 0x782d, 0x782e, 0x782f, + 0x7830, 0x7831, 0x7832, 0x7833, 0x7834, 0x7835, 0x7836, 0x7837, + 0x7838, 0x7839, 0x783a, 0x783b, 0x783c, 0x783d, 0x783e, 0x783f, + 0x7840, 0x7841, 0x7842, 0x7843, 0x7844, 0x7845, 0x7846, 0x7847, + 0x7848, 0x7849, 0x784a, 0x784b, 0x784c, 0x784d, 0x784e, 0x784f, + 0x7850, 0x7851, 0x7852, 0x7853, 0x7854, 0x7855, 0x7856, 0x7857, + 0x7858, 0x7859, 0x785a, 0x785b, 0x785c, 0x785d, 0x785e, 0x785f, + 0x7860, 0x7861, 0x7862, 0x7863, 0x7864, 0x7865, 0x7866, 0x7867, + 0x7868, 0x7869, 0x786a, 0x786b, 0x786c, 0x786d, 0x786e, 0x786f, + 0x7870, 0x7871, 0x7872, 0x7873, 0x7874, 0x7875, 0x7876, 0x7877, + 0x7878, 0x7879, 0x787a, 0x787b, 0x787c, 0x787d, 0x787e, 0x787f, + 0x7880, 0x7881, 0x7882, 0x7883, 0x7884, 0x7885, 0x7886, 0x7887, + 0x7888, 0x7889, 0x788a, 0x788b, 0x788c, 0x788d, 0x788e, 0x788f, + 0x7890, 0x7891, 0x7892, 0x7893, 0x7894, 0x7895, 0x7896, 0x7897, + 0x7898, 0x7899, 0x789a, 0x789b, 0x789c, 0x789d, 0x789e, 0x789f, + 0x78a0, 0x78a1, 0x78a2, 0x78a3, 0x78a4, 0x78a5, 0x78a6, 0x78a7, + 0x78a8, 0x78a9, 0x78aa, 0x78ab, 0x78ac, 0x78ad, 0x78ae, 0x78af, + 0x78b0, 0x78b1, 0x78b2, 0x78b3, 0x78b4, 0x78b5, 0x78b6, 0x78b7, + 0x78b8, 0x78b9, 0x78ba, 0x78bb, 0x78bc, 0x78bd, 0x78be, 0x78bf, + 0x78c0, 0x78c1, 0x78c2, 0x78c3, 0x78c4, 0x78c5, 0x78c6, 0x78c7, + 0x78c8, 0x78c9, 0x78ca, 0x78cb, 0x78cc, 0x78cd, 0x78ce, 0x78cf, + 0x78d0, 0x78d1, 0x78d2, 0x78d3, 0x78d4, 0x78d5, 0x78d6, 0x78d7, + 0x78d8, 0x78d9, 0x78da, 0x78db, 0x78dc, 0x78dd, 0x78de, 0x78df, + 0x78e0, 0x78e1, 0x78e2, 0x78e3, 0x78e4, 0x78e5, 0x78e6, 0x78e7, + 0x78e8, 0x78e9, 0x78ea, 0x78eb, 0x78ec, 0x78ed, 0x78ee, 0x78ef, + 0x78f0, 0x78f1, 0x78f2, 0x78f3, 0x78f4, 0x78f5, 0x78f6, 0x78f7, + 0x78f8, 0x78f9, 0x78fa, 0x78fb, 0x78fc, 0x78fd, 0x78fe, 0x78ff, + 0x7900, 0x7901, 0x7902, 0x7903, 0x7904, 0x7905, 0x7906, 0x7907, + 0x7908, 0x7909, 0x790a, 0x790b, 0x790c, 0x790d, 0x790e, 0x790f, + 0x7910, 0x7911, 0x7912, 0x7913, 0x7914, 0x7915, 0x7916, 0x7917, + 0x7918, 0x7919, 0x791a, 0x791b, 0x791c, 0x791d, 0x791e, 0x791f, + 0x7920, 0x7921, 0x7922, 0x7923, 0x7924, 0x7925, 0x7926, 0x7927, + 0x7928, 0x7929, 0x792a, 0x792b, 0x792c, 0x792d, 0x792e, 0x792f, + 0x7930, 0x7931, 0x7932, 0x7933, 0x7934, 0x7935, 0x7936, 0x7937, + 0x7938, 0x7939, 0x793a, 0x793b, 0x793c, 0x793d, 0x793e, 0x793f, + 0x7940, 0x7941, 0x7942, 0x7943, 0x7944, 0x7945, 0x7946, 0x7947, + 0x7948, 0x7949, 0x794a, 0x794b, 0x794c, 0x794d, 0x794e, 0x794f, + 0x7950, 0x7951, 0x7952, 0x7953, 0x7954, 0x7955, 0x7956, 0x7957, + 0x7958, 0x7959, 0x795a, 0x795b, 0x795c, 0x795d, 0x795e, 0x795f, + 0x7960, 0x7961, 0x7962, 0x7963, 0x7964, 0x7965, 0x7966, 0x7967, + 0x7968, 0x7969, 0x796a, 0x796b, 0x796c, 0x796d, 0x796e, 0x796f, + 0x7970, 0x7971, 0x7972, 0x7973, 0x7974, 0x7975, 0x7976, 0x7977, + 0x7978, 0x7979, 0x797a, 0x797b, 0x797c, 0x797d, 0x797e, 0x797f, + 0x7980, 0x7981, 0x7982, 0x7983, 0x7984, 0x7985, 0x7986, 0x7987, + 0x7988, 0x7989, 0x798a, 0x798b, 0x798c, 0x798d, 0x798e, 0x798f, + 0x7990, 0x7991, 0x7992, 0x7993, 0x7994, 0x7995, 0x7996, 0x7997, + 0x7998, 0x7999, 0x799a, 0x799b, 0x799c, 0x799d, 0x799e, 0x799f, + 0x79a0, 0x79a1, 0x79a2, 0x79a3, 0x79a4, 0x79a5, 0x79a6, 0x79a7, + 0x79a8, 0x79a9, 0x79aa, 0x79ab, 0x79ac, 0x79ad, 0x79ae, 0x79af, + 0x79b0, 0x79b1, 0x79b2, 0x79b3, 0x79b4, 0x79b5, 0x79b6, 0x79b7, + 0x79b8, 0x79b9, 0x79ba, 0x79bb, 0x79bc, 0x79bd, 0x79be, 0x79bf, + 0x79c0, 0x79c1, 0x79c2, 0x79c3, 0x79c4, 0x79c5, 0x79c6, 0x79c7, + 0x79c8, 0x79c9, 0x79ca, 0x79cb, 0x79cc, 0x79cd, 0x79ce, 0x79cf, + 0x79d0, 0x79d1, 0x79d2, 0x79d3, 0x79d4, 0x79d5, 0x79d6, 0x79d7, + 0x79d8, 0x79d9, 0x79da, 0x79db, 0x79dc, 0x79dd, 0x79de, 0x79df, + 0x79e0, 0x79e1, 0x79e2, 0x79e3, 0x79e4, 0x79e5, 0x79e6, 0x79e7, + 0x79e8, 0x79e9, 0x79ea, 0x79eb, 0x79ec, 0x79ed, 0x79ee, 0x79ef, + 0x79f0, 0x79f1, 0x79f2, 0x79f3, 0x79f4, 0x79f5, 0x79f6, 0x79f7, + 0x79f8, 0x79f9, 0x79fa, 0x79fb, 0x79fc, 0x79fd, 0x79fe, 0x79ff, + 0x7a00, 0x7a01, 0x7a02, 0x7a03, 0x7a04, 0x7a05, 0x7a06, 0x7a07, + 0x7a08, 0x7a09, 0x7a0a, 0x7a0b, 0x7a0c, 0x7a0d, 0x7a0e, 0x7a0f, + 0x7a10, 0x7a11, 0x7a12, 0x7a13, 0x7a14, 0x7a15, 0x7a16, 0x7a17, + 0x7a18, 0x7a19, 0x7a1a, 0x7a1b, 0x7a1c, 0x7a1d, 0x7a1e, 0x7a1f, + 0x7a20, 0x7a21, 0x7a22, 0x7a23, 0x7a24, 0x7a25, 0x7a26, 0x7a27, + 0x7a28, 0x7a29, 0x7a2a, 0x7a2b, 0x7a2c, 0x7a2d, 0x7a2e, 0x7a2f, + 0x7a30, 0x7a31, 0x7a32, 0x7a33, 0x7a34, 0x7a35, 0x7a36, 0x7a37, + 0x7a38, 0x7a39, 0x7a3a, 0x7a3b, 0x7a3c, 0x7a3d, 0x7a3e, 0x7a3f, + 0x7a40, 0x7a41, 0x7a42, 0x7a43, 0x7a44, 0x7a45, 0x7a46, 0x7a47, + 0x7a48, 0x7a49, 0x7a4a, 0x7a4b, 0x7a4c, 0x7a4d, 0x7a4e, 0x7a4f, + 0x7a50, 0x7a51, 0x7a52, 0x7a53, 0x7a54, 0x7a55, 0x7a56, 0x7a57, + 0x7a58, 0x7a59, 0x7a5a, 0x7a5b, 0x7a5c, 0x7a5d, 0x7a5e, 0x7a5f, + 0x7a60, 0x7a61, 0x7a62, 0x7a63, 0x7a64, 0x7a65, 0x7a66, 0x7a67, + 0x7a68, 0x7a69, 0x7a6a, 0x7a6b, 0x7a6c, 0x7a6d, 0x7a6e, 0x7a6f, + 0x7a70, 0x7a71, 0x7a72, 0x7a73, 0x7a74, 0x7a75, 0x7a76, 0x7a77, + 0x7a78, 0x7a79, 0x7a7a, 0x7a7b, 0x7a7c, 0x7a7d, 0x7a7e, 0x7a7f, + 0x7a80, 0x7a81, 0x7a82, 0x7a83, 0x7a84, 0x7a85, 0x7a86, 0x7a87, + 0x7a88, 0x7a89, 0x7a8a, 0x7a8b, 0x7a8c, 0x7a8d, 0x7a8e, 0x7a8f, + 0x7a90, 0x7a91, 0x7a92, 0x7a93, 0x7a94, 0x7a95, 0x7a96, 0x7a97, + 0x7a98, 0x7a99, 0x7a9a, 0x7a9b, 0x7a9c, 0x7a9d, 0x7a9e, 0x7a9f, + 0x7aa0, 0x7aa1, 0x7aa2, 0x7aa3, 0x7aa4, 0x7aa5, 0x7aa6, 0x7aa7, + 0x7aa8, 0x7aa9, 0x7aaa, 0x7aab, 0x7aac, 0x7aad, 0x7aae, 0x7aaf, + 0x7ab0, 0x7ab1, 0x7ab2, 0x7ab3, 0x7ab4, 0x7ab5, 0x7ab6, 0x7ab7, + 0x7ab8, 0x7ab9, 0x7aba, 0x7abb, 0x7abc, 0x7abd, 0x7abe, 0x7abf, + 0x7ac0, 0x7ac1, 0x7ac2, 0x7ac3, 0x7ac4, 0x7ac5, 0x7ac6, 0x7ac7, + 0x7ac8, 0x7ac9, 0x7aca, 0x7acb, 0x7acc, 0x7acd, 0x7ace, 0x7acf, + 0x7ad0, 0x7ad1, 0x7ad2, 0x7ad3, 0x7ad4, 0x7ad5, 0x7ad6, 0x7ad7, + 0x7ad8, 0x7ad9, 0x7ada, 0x7adb, 0x7adc, 0x7add, 0x7ade, 0x7adf, + 0x7ae0, 0x7ae1, 0x7ae2, 0x7ae3, 0x7ae4, 0x7ae5, 0x7ae6, 0x7ae7, + 0x7ae8, 0x7ae9, 0x7aea, 0x7aeb, 0x7aec, 0x7aed, 0x7aee, 0x7aef, + 0x7af0, 0x7af1, 0x7af2, 0x7af3, 0x7af4, 0x7af5, 0x7af6, 0x7af7, + 0x7af8, 0x7af9, 0x7afa, 0x7afb, 0x7afc, 0x7afd, 0x7afe, 0x7aff, + 0x7b00, 0x7b01, 0x7b02, 0x7b03, 0x7b04, 0x7b05, 0x7b06, 0x7b07, + 0x7b08, 0x7b09, 0x7b0a, 0x7b0b, 0x7b0c, 0x7b0d, 0x7b0e, 0x7b0f, + 0x7b10, 0x7b11, 0x7b12, 0x7b13, 0x7b14, 0x7b15, 0x7b16, 0x7b17, + 0x7b18, 0x7b19, 0x7b1a, 0x7b1b, 0x7b1c, 0x7b1d, 0x7b1e, 0x7b1f, + 0x7b20, 0x7b21, 0x7b22, 0x7b23, 0x7b24, 0x7b25, 0x7b26, 0x7b27, + 0x7b28, 0x7b29, 0x7b2a, 0x7b2b, 0x7b2c, 0x7b2d, 0x7b2e, 0x7b2f, + 0x7b30, 0x7b31, 0x7b32, 0x7b33, 0x7b34, 0x7b35, 0x7b36, 0x7b37, + 0x7b38, 0x7b39, 0x7b3a, 0x7b3b, 0x7b3c, 0x7b3d, 0x7b3e, 0x7b3f, + 0x7b40, 0x7b41, 0x7b42, 0x7b43, 0x7b44, 0x7b45, 0x7b46, 0x7b47, + 0x7b48, 0x7b49, 0x7b4a, 0x7b4b, 0x7b4c, 0x7b4d, 0x7b4e, 0x7b4f, + 0x7b50, 0x7b51, 0x7b52, 0x7b53, 0x7b54, 0x7b55, 0x7b56, 0x7b57, + 0x7b58, 0x7b59, 0x7b5a, 0x7b5b, 0x7b5c, 0x7b5d, 0x7b5e, 0x7b5f, + 0x7b60, 0x7b61, 0x7b62, 0x7b63, 0x7b64, 0x7b65, 0x7b66, 0x7b67, + 0x7b68, 0x7b69, 0x7b6a, 0x7b6b, 0x7b6c, 0x7b6d, 0x7b6e, 0x7b6f, + 0x7b70, 0x7b71, 0x7b72, 0x7b73, 0x7b74, 0x7b75, 0x7b76, 0x7b77, + 0x7b78, 0x7b79, 0x7b7a, 0x7b7b, 0x7b7c, 0x7b7d, 0x7b7e, 0x7b7f, + 0x7b80, 0x7b81, 0x7b82, 0x7b83, 0x7b84, 0x7b85, 0x7b86, 0x7b87, + 0x7b88, 0x7b89, 0x7b8a, 0x7b8b, 0x7b8c, 0x7b8d, 0x7b8e, 0x7b8f, + 0x7b90, 0x7b91, 0x7b92, 0x7b93, 0x7b94, 0x7b95, 0x7b96, 0x7b97, + 0x7b98, 0x7b99, 0x7b9a, 0x7b9b, 0x7b9c, 0x7b9d, 0x7b9e, 0x7b9f, + 0x7ba0, 0x7ba1, 0x7ba2, 0x7ba3, 0x7ba4, 0x7ba5, 0x7ba6, 0x7ba7, + 0x7ba8, 0x7ba9, 0x7baa, 0x7bab, 0x7bac, 0x7bad, 0x7bae, 0x7baf, + 0x7bb0, 0x7bb1, 0x7bb2, 0x7bb3, 0x7bb4, 0x7bb5, 0x7bb6, 0x7bb7, + 0x7bb8, 0x7bb9, 0x7bba, 0x7bbb, 0x7bbc, 0x7bbd, 0x7bbe, 0x7bbf, + 0x7bc0, 0x7bc1, 0x7bc2, 0x7bc3, 0x7bc4, 0x7bc5, 0x7bc6, 0x7bc7, + 0x7bc8, 0x7bc9, 0x7bca, 0x7bcb, 0x7bcc, 0x7bcd, 0x7bce, 0x7bcf, + 0x7bd0, 0x7bd1, 0x7bd2, 0x7bd3, 0x7bd4, 0x7bd5, 0x7bd6, 0x7bd7, + 0x7bd8, 0x7bd9, 0x7bda, 0x7bdb, 0x7bdc, 0x7bdd, 0x7bde, 0x7bdf, + 0x7be0, 0x7be1, 0x7be2, 0x7be3, 0x7be4, 0x7be5, 0x7be6, 0x7be7, + 0x7be8, 0x7be9, 0x7bea, 0x7beb, 0x7bec, 0x7bed, 0x7bee, 0x7bef, + 0x7bf0, 0x7bf1, 0x7bf2, 0x7bf3, 0x7bf4, 0x7bf5, 0x7bf6, 0x7bf7, + 0x7bf8, 0x7bf9, 0x7bfa, 0x7bfb, 0x7bfc, 0x7bfd, 0x7bfe, 0x7bff, + 0x7c00, 0x7c01, 0x7c02, 0x7c03, 0x7c04, 0x7c05, 0x7c06, 0x7c07, + 0x7c08, 0x7c09, 0x7c0a, 0x7c0b, 0x7c0c, 0x7c0d, 0x7c0e, 0x7c0f, + 0x7c10, 0x7c11, 0x7c12, 0x7c13, 0x7c14, 0x7c15, 0x7c16, 0x7c17, + 0x7c18, 0x7c19, 0x7c1a, 0x7c1b, 0x7c1c, 0x7c1d, 0x7c1e, 0x7c1f, + 0x7c20, 0x7c21, 0x7c22, 0x7c23, 0x7c24, 0x7c25, 0x7c26, 0x7c27, + 0x7c28, 0x7c29, 0x7c2a, 0x7c2b, 0x7c2c, 0x7c2d, 0x7c2e, 0x7c2f, + 0x7c30, 0x7c31, 0x7c32, 0x7c33, 0x7c34, 0x7c35, 0x7c36, 0x7c37, + 0x7c38, 0x7c39, 0x7c3a, 0x7c3b, 0x7c3c, 0x7c3d, 0x7c3e, 0x7c3f, + 0x7c40, 0x7c41, 0x7c42, 0x7c43, 0x7c44, 0x7c45, 0x7c46, 0x7c47, + 0x7c48, 0x7c49, 0x7c4a, 0x7c4b, 0x7c4c, 0x7c4d, 0x7c4e, 0x7c4f, + 0x7c50, 0x7c51, 0x7c52, 0x7c53, 0x7c54, 0x7c55, 0x7c56, 0x7c57, + 0x7c58, 0x7c59, 0x7c5a, 0x7c5b, 0x7c5c, 0x7c5d, 0x7c5e, 0x7c5f, + 0x7c60, 0x7c61, 0x7c62, 0x7c63, 0x7c64, 0x7c65, 0x7c66, 0x7c67, + 0x7c68, 0x7c69, 0x7c6a, 0x7c6b, 0x7c6c, 0x7c6d, 0x7c6e, 0x7c6f, + 0x7c70, 0x7c71, 0x7c72, 0x7c73, 0x7c74, 0x7c75, 0x7c76, 0x7c77, + 0x7c78, 0x7c79, 0x7c7a, 0x7c7b, 0x7c7c, 0x7c7d, 0x7c7e, 0x7c7f, + 0x7c80, 0x7c81, 0x7c82, 0x7c83, 0x7c84, 0x7c85, 0x7c86, 0x7c87, + 0x7c88, 0x7c89, 0x7c8a, 0x7c8b, 0x7c8c, 0x7c8d, 0x7c8e, 0x7c8f, + 0x7c90, 0x7c91, 0x7c92, 0x7c93, 0x7c94, 0x7c95, 0x7c96, 0x7c97, + 0x7c98, 0x7c99, 0x7c9a, 0x7c9b, 0x7c9c, 0x7c9d, 0x7c9e, 0x7c9f, + 0x7ca0, 0x7ca1, 0x7ca2, 0x7ca3, 0x7ca4, 0x7ca5, 0x7ca6, 0x7ca7, + 0x7ca8, 0x7ca9, 0x7caa, 0x7cab, 0x7cac, 0x7cad, 0x7cae, 0x7caf, + 0x7cb0, 0x7cb1, 0x7cb2, 0x7cb3, 0x7cb4, 0x7cb5, 0x7cb6, 0x7cb7, + 0x7cb8, 0x7cb9, 0x7cba, 0x7cbb, 0x7cbc, 0x7cbd, 0x7cbe, 0x7cbf, + 0x7cc0, 0x7cc1, 0x7cc2, 0x7cc3, 0x7cc4, 0x7cc5, 0x7cc6, 0x7cc7, + 0x7cc8, 0x7cc9, 0x7cca, 0x7ccb, 0x7ccc, 0x7ccd, 0x7cce, 0x7ccf, + 0x7cd0, 0x7cd1, 0x7cd2, 0x7cd3, 0x7cd4, 0x7cd5, 0x7cd6, 0x7cd7, + 0x7cd8, 0x7cd9, 0x7cda, 0x7cdb, 0x7cdc, 0x7cdd, 0x7cde, 0x7cdf, + 0x7ce0, 0x7ce1, 0x7ce2, 0x7ce3, 0x7ce4, 0x7ce5, 0x7ce6, 0x7ce7, + 0x7ce8, 0x7ce9, 0x7cea, 0x7ceb, 0x7cec, 0x7ced, 0x7cee, 0x7cef, + 0x7cf0, 0x7cf1, 0x7cf2, 0x7cf3, 0x7cf4, 0x7cf5, 0x7cf6, 0x7cf7, + 0x7cf8, 0x7cf9, 0x7cfa, 0x7cfb, 0x7cfc, 0x7cfd, 0x7cfe, 0x7cff, + 0x7d00, 0x7d01, 0x7d02, 0x7d03, 0x7d04, 0x7d05, 0x7d06, 0x7d07, + 0x7d08, 0x7d09, 0x7d0a, 0x7d0b, 0x7d0c, 0x7d0d, 0x7d0e, 0x7d0f, + 0x7d10, 0x7d11, 0x7d12, 0x7d13, 0x7d14, 0x7d15, 0x7d16, 0x7d17, + 0x7d18, 0x7d19, 0x7d1a, 0x7d1b, 0x7d1c, 0x7d1d, 0x7d1e, 0x7d1f, + 0x7d20, 0x7d21, 0x7d22, 0x7d23, 0x7d24, 0x7d25, 0x7d26, 0x7d27, + 0x7d28, 0x7d29, 0x7d2a, 0x7d2b, 0x7d2c, 0x7d2d, 0x7d2e, 0x7d2f, + 0x7d30, 0x7d31, 0x7d32, 0x7d33, 0x7d34, 0x7d35, 0x7d36, 0x7d37, + 0x7d38, 0x7d39, 0x7d3a, 0x7d3b, 0x7d3c, 0x7d3d, 0x7d3e, 0x7d3f, + 0x7d40, 0x7d41, 0x7d42, 0x7d43, 0x7d44, 0x7d45, 0x7d46, 0x7d47, + 0x7d48, 0x7d49, 0x7d4a, 0x7d4b, 0x7d4c, 0x7d4d, 0x7d4e, 0x7d4f, + 0x7d50, 0x7d51, 0x7d52, 0x7d53, 0x7d54, 0x7d55, 0x7d56, 0x7d57, + 0x7d58, 0x7d59, 0x7d5a, 0x7d5b, 0x7d5c, 0x7d5d, 0x7d5e, 0x7d5f, + 0x7d60, 0x7d61, 0x7d62, 0x7d63, 0x7d64, 0x7d65, 0x7d66, 0x7d67, + 0x7d68, 0x7d69, 0x7d6a, 0x7d6b, 0x7d6c, 0x7d6d, 0x7d6e, 0x7d6f, + 0x7d70, 0x7d71, 0x7d72, 0x7d73, 0x7d74, 0x7d75, 0x7d76, 0x7d77, + 0x7d78, 0x7d79, 0x7d7a, 0x7d7b, 0x7d7c, 0x7d7d, 0x7d7e, 0x7d7f, + 0x7d80, 0x7d81, 0x7d82, 0x7d83, 0x7d84, 0x7d85, 0x7d86, 0x7d87, + 0x7d88, 0x7d89, 0x7d8a, 0x7d8b, 0x7d8c, 0x7d8d, 0x7d8e, 0x7d8f, + 0x7d90, 0x7d91, 0x7d92, 0x7d93, 0x7d94, 0x7d95, 0x7d96, 0x7d97, + 0x7d98, 0x7d99, 0x7d9a, 0x7d9b, 0x7d9c, 0x7d9d, 0x7d9e, 0x7d9f, + 0x7da0, 0x7da1, 0x7da2, 0x7da3, 0x7da4, 0x7da5, 0x7da6, 0x7da7, + 0x7da8, 0x7da9, 0x7daa, 0x7dab, 0x7dac, 0x7dad, 0x7dae, 0x7daf, + 0x7db0, 0x7db1, 0x7db2, 0x7db3, 0x7db4, 0x7db5, 0x7db6, 0x7db7, + 0x7db8, 0x7db9, 0x7dba, 0x7dbb, 0x7dbc, 0x7dbd, 0x7dbe, 0x7dbf, + 0x7dc0, 0x7dc1, 0x7dc2, 0x7dc3, 0x7dc4, 0x7dc5, 0x7dc6, 0x7dc7, + 0x7dc8, 0x7dc9, 0x7dca, 0x7dcb, 0x7dcc, 0x7dcd, 0x7dce, 0x7dcf, + 0x7dd0, 0x7dd1, 0x7dd2, 0x7dd3, 0x7dd4, 0x7dd5, 0x7dd6, 0x7dd7, + 0x7dd8, 0x7dd9, 0x7dda, 0x7ddb, 0x7ddc, 0x7ddd, 0x7dde, 0x7ddf, + 0x7de0, 0x7de1, 0x7de2, 0x7de3, 0x7de4, 0x7de5, 0x7de6, 0x7de7, + 0x7de8, 0x7de9, 0x7dea, 0x7deb, 0x7dec, 0x7ded, 0x7dee, 0x7def, + 0x7df0, 0x7df1, 0x7df2, 0x7df3, 0x7df4, 0x7df5, 0x7df6, 0x7df7, + 0x7df8, 0x7df9, 0x7dfa, 0x7dfb, 0x7dfc, 0x7dfd, 0x7dfe, 0x7dff, + 0x7e00, 0x7e01, 0x7e02, 0x7e03, 0x7e04, 0x7e05, 0x7e06, 0x7e07, + 0x7e08, 0x7e09, 0x7e0a, 0x7e0b, 0x7e0c, 0x7e0d, 0x7e0e, 0x7e0f, + 0x7e10, 0x7e11, 0x7e12, 0x7e13, 0x7e14, 0x7e15, 0x7e16, 0x7e17, + 0x7e18, 0x7e19, 0x7e1a, 0x7e1b, 0x7e1c, 0x7e1d, 0x7e1e, 0x7e1f, + 0x7e20, 0x7e21, 0x7e22, 0x7e23, 0x7e24, 0x7e25, 0x7e26, 0x7e27, + 0x7e28, 0x7e29, 0x7e2a, 0x7e2b, 0x7e2c, 0x7e2d, 0x7e2e, 0x7e2f, + 0x7e30, 0x7e31, 0x7e32, 0x7e33, 0x7e34, 0x7e35, 0x7e36, 0x7e37, + 0x7e38, 0x7e39, 0x7e3a, 0x7e3b, 0x7e3c, 0x7e3d, 0x7e3e, 0x7e3f, + 0x7e40, 0x7e41, 0x7e42, 0x7e43, 0x7e44, 0x7e45, 0x7e46, 0x7e47, + 0x7e48, 0x7e49, 0x7e4a, 0x7e4b, 0x7e4c, 0x7e4d, 0x7e4e, 0x7e4f, + 0x7e50, 0x7e51, 0x7e52, 0x7e53, 0x7e54, 0x7e55, 0x7e56, 0x7e57, + 0x7e58, 0x7e59, 0x7e5a, 0x7e5b, 0x7e5c, 0x7e5d, 0x7e5e, 0x7e5f, + 0x7e60, 0x7e61, 0x7e62, 0x7e63, 0x7e64, 0x7e65, 0x7e66, 0x7e67, + 0x7e68, 0x7e69, 0x7e6a, 0x7e6b, 0x7e6c, 0x7e6d, 0x7e6e, 0x7e6f, + 0x7e70, 0x7e71, 0x7e72, 0x7e73, 0x7e74, 0x7e75, 0x7e76, 0x7e77, + 0x7e78, 0x7e79, 0x7e7a, 0x7e7b, 0x7e7c, 0x7e7d, 0x7e7e, 0x7e7f, + 0x7e80, 0x7e81, 0x7e82, 0x7e83, 0x7e84, 0x7e85, 0x7e86, 0x7e87, + 0x7e88, 0x7e89, 0x7e8a, 0x7e8b, 0x7e8c, 0x7e8d, 0x7e8e, 0x7e8f, + 0x7e90, 0x7e91, 0x7e92, 0x7e93, 0x7e94, 0x7e95, 0x7e96, 0x7e97, + 0x7e98, 0x7e99, 0x7e9a, 0x7e9b, 0x7e9c, 0x7e9d, 0x7e9e, 0x7e9f, + 0x7ea0, 0x7ea1, 0x7ea2, 0x7ea3, 0x7ea4, 0x7ea5, 0x7ea6, 0x7ea7, + 0x7ea8, 0x7ea9, 0x7eaa, 0x7eab, 0x7eac, 0x7ead, 0x7eae, 0x7eaf, + 0x7eb0, 0x7eb1, 0x7eb2, 0x7eb3, 0x7eb4, 0x7eb5, 0x7eb6, 0x7eb7, + 0x7eb8, 0x7eb9, 0x7eba, 0x7ebb, 0x7ebc, 0x7ebd, 0x7ebe, 0x7ebf, + 0x7ec0, 0x7ec1, 0x7ec2, 0x7ec3, 0x7ec4, 0x7ec5, 0x7ec6, 0x7ec7, + 0x7ec8, 0x7ec9, 0x7eca, 0x7ecb, 0x7ecc, 0x7ecd, 0x7ece, 0x7ecf, + 0x7ed0, 0x7ed1, 0x7ed2, 0x7ed3, 0x7ed4, 0x7ed5, 0x7ed6, 0x7ed7, + 0x7ed8, 0x7ed9, 0x7eda, 0x7edb, 0x7edc, 0x7edd, 0x7ede, 0x7edf, + 0x7ee0, 0x7ee1, 0x7ee2, 0x7ee3, 0x7ee4, 0x7ee5, 0x7ee6, 0x7ee7, + 0x7ee8, 0x7ee9, 0x7eea, 0x7eeb, 0x7eec, 0x7eed, 0x7eee, 0x7eef, + 0x7ef0, 0x7ef1, 0x7ef2, 0x7ef3, 0x7ef4, 0x7ef5, 0x7ef6, 0x7ef7, + 0x7ef8, 0x7ef9, 0x7efa, 0x7efb, 0x7efc, 0x7efd, 0x7efe, 0x7eff, + 0x7f00, 0x7f01, 0x7f02, 0x7f03, 0x7f04, 0x7f05, 0x7f06, 0x7f07, + 0x7f08, 0x7f09, 0x7f0a, 0x7f0b, 0x7f0c, 0x7f0d, 0x7f0e, 0x7f0f, + 0x7f10, 0x7f11, 0x7f12, 0x7f13, 0x7f14, 0x7f15, 0x7f16, 0x7f17, + 0x7f18, 0x7f19, 0x7f1a, 0x7f1b, 0x7f1c, 0x7f1d, 0x7f1e, 0x7f1f, + 0x7f20, 0x7f21, 0x7f22, 0x7f23, 0x7f24, 0x7f25, 0x7f26, 0x7f27, + 0x7f28, 0x7f29, 0x7f2a, 0x7f2b, 0x7f2c, 0x7f2d, 0x7f2e, 0x7f2f, + 0x7f30, 0x7f31, 0x7f32, 0x7f33, 0x7f34, 0x7f35, 0x7f36, 0x7f37, + 0x7f38, 0x7f39, 0x7f3a, 0x7f3b, 0x7f3c, 0x7f3d, 0x7f3e, 0x7f3f, + 0x7f40, 0x7f41, 0x7f42, 0x7f43, 0x7f44, 0x7f45, 0x7f46, 0x7f47, + 0x7f48, 0x7f49, 0x7f4a, 0x7f4b, 0x7f4c, 0x7f4d, 0x7f4e, 0x7f4f, + 0x7f50, 0x7f51, 0x7f52, 0x7f53, 0x7f54, 0x7f55, 0x7f56, 0x7f57, + 0x7f58, 0x7f59, 0x7f5a, 0x7f5b, 0x7f5c, 0x7f5d, 0x7f5e, 0x7f5f, + 0x7f60, 0x7f61, 0x7f62, 0x7f63, 0x7f64, 0x7f65, 0x7f66, 0x7f67, + 0x7f68, 0x7f69, 0x7f6a, 0x7f6b, 0x7f6c, 0x7f6d, 0x7f6e, 0x7f6f, + 0x7f70, 0x7f71, 0x7f72, 0x7f73, 0x7f74, 0x7f75, 0x7f76, 0x7f77, + 0x7f78, 0x7f79, 0x7f7a, 0x7f7b, 0x7f7c, 0x7f7d, 0x7f7e, 0x7f7f, + 0x7f80, 0x7f81, 0x7f82, 0x7f83, 0x7f84, 0x7f85, 0x7f86, 0x7f87, + 0x7f88, 0x7f89, 0x7f8a, 0x7f8b, 0x7f8c, 0x7f8d, 0x7f8e, 0x7f8f, + 0x7f90, 0x7f91, 0x7f92, 0x7f93, 0x7f94, 0x7f95, 0x7f96, 0x7f97, + 0x7f98, 0x7f99, 0x7f9a, 0x7f9b, 0x7f9c, 0x7f9d, 0x7f9e, 0x7f9f, + 0x7fa0, 0x7fa1, 0x7fa2, 0x7fa3, 0x7fa4, 0x7fa5, 0x7fa6, 0x7fa7, + 0x7fa8, 0x7fa9, 0x7faa, 0x7fab, 0x7fac, 0x7fad, 0x7fae, 0x7faf, + 0x7fb0, 0x7fb1, 0x7fb2, 0x7fb3, 0x7fb4, 0x7fb5, 0x7fb6, 0x7fb7, + 0x7fb8, 0x7fb9, 0x7fba, 0x7fbb, 0x7fbc, 0x7fbd, 0x7fbe, 0x7fbf, + 0x7fc0, 0x7fc1, 0x7fc2, 0x7fc3, 0x7fc4, 0x7fc5, 0x7fc6, 0x7fc7, + 0x7fc8, 0x7fc9, 0x7fca, 0x7fcb, 0x7fcc, 0x7fcd, 0x7fce, 0x7fcf, + 0x7fd0, 0x7fd1, 0x7fd2, 0x7fd3, 0x7fd4, 0x7fd5, 0x7fd6, 0x7fd7, + 0x7fd8, 0x7fd9, 0x7fda, 0x7fdb, 0x7fdc, 0x7fdd, 0x7fde, 0x7fdf, + 0x7fe0, 0x7fe1, 0x7fe2, 0x7fe3, 0x7fe4, 0x7fe5, 0x7fe6, 0x7fe7, + 0x7fe8, 0x7fe9, 0x7fea, 0x7feb, 0x7fec, 0x7fed, 0x7fee, 0x7fef, + 0x7ff0, 0x7ff1, 0x7ff2, 0x7ff3, 0x7ff4, 0x7ff5, 0x7ff6, 0x7ff7, + 0x7ff8, 0x7ff9, 0x7ffa, 0x7ffb, 0x7ffc, 0x7ffd, 0x7ffe, 0x7fff, + 0x8000, 0x8001, 0x8002, 0x8003, 0x8004, 0x8005, 0x8006, 0x8007, + 0x8008, 0x8009, 0x800a, 0x800b, 0x800c, 0x800d, 0x800e, 0x800f, + 0x8010, 0x8011, 0x8012, 0x8013, 0x8014, 0x8015, 0x8016, 0x8017, + 0x8018, 0x8019, 0x801a, 0x801b, 0x801c, 0x801d, 0x801e, 0x801f, + 0x8020, 0x8021, 0x8022, 0x8023, 0x8024, 0x8025, 0x8026, 0x8027, + 0x8028, 0x8029, 0x802a, 0x802b, 0x802c, 0x802d, 0x802e, 0x802f, + 0x8030, 0x8031, 0x8032, 0x8033, 0x8034, 0x8035, 0x8036, 0x8037, + 0x8038, 0x8039, 0x803a, 0x803b, 0x803c, 0x803d, 0x803e, 0x803f, + 0x8040, 0x8041, 0x8042, 0x8043, 0x8044, 0x8045, 0x8046, 0x8047, + 0x8048, 0x8049, 0x804a, 0x804b, 0x804c, 0x804d, 0x804e, 0x804f, + 0x8050, 0x8051, 0x8052, 0x8053, 0x8054, 0x8055, 0x8056, 0x8057, + 0x8058, 0x8059, 0x805a, 0x805b, 0x805c, 0x805d, 0x805e, 0x805f, + 0x8060, 0x8061, 0x8062, 0x8063, 0x8064, 0x8065, 0x8066, 0x8067, + 0x8068, 0x8069, 0x806a, 0x806b, 0x806c, 0x806d, 0x806e, 0x806f, + 0x8070, 0x8071, 0x8072, 0x8073, 0x8074, 0x8075, 0x8076, 0x8077, + 0x8078, 0x8079, 0x807a, 0x807b, 0x807c, 0x807d, 0x807e, 0x807f, + 0x8080, 0x8081, 0x8082, 0x8083, 0x8084, 0x8085, 0x8086, 0x8087, + 0x8088, 0x8089, 0x808a, 0x808b, 0x808c, 0x808d, 0x808e, 0x808f, + 0x8090, 0x8091, 0x8092, 0x8093, 0x8094, 0x8095, 0x8096, 0x8097, + 0x8098, 0x8099, 0x809a, 0x809b, 0x809c, 0x809d, 0x809e, 0x809f, + 0x80a0, 0x80a1, 0x80a2, 0x80a3, 0x80a4, 0x80a5, 0x80a6, 0x80a7, + 0x80a8, 0x80a9, 0x80aa, 0x80ab, 0x80ac, 0x80ad, 0x80ae, 0x80af, + 0x80b0, 0x80b1, 0x80b2, 0x80b3, 0x80b4, 0x80b5, 0x80b6, 0x80b7, + 0x80b8, 0x80b9, 0x80ba, 0x80bb, 0x80bc, 0x80bd, 0x80be, 0x80bf, + 0x80c0, 0x80c1, 0x80c2, 0x80c3, 0x80c4, 0x80c5, 0x80c6, 0x80c7, + 0x80c8, 0x80c9, 0x80ca, 0x80cb, 0x80cc, 0x80cd, 0x80ce, 0x80cf, + 0x80d0, 0x80d1, 0x80d2, 0x80d3, 0x80d4, 0x80d5, 0x80d6, 0x80d7, + 0x80d8, 0x80d9, 0x80da, 0x80db, 0x80dc, 0x80dd, 0x80de, 0x80df, + 0x80e0, 0x80e1, 0x80e2, 0x80e3, 0x80e4, 0x80e5, 0x80e6, 0x80e7, + 0x80e8, 0x80e9, 0x80ea, 0x80eb, 0x80ec, 0x80ed, 0x80ee, 0x80ef, + 0x80f0, 0x80f1, 0x80f2, 0x80f3, 0x80f4, 0x80f5, 0x80f6, 0x80f7, + 0x80f8, 0x80f9, 0x80fa, 0x80fb, 0x80fc, 0x80fd, 0x80fe, 0x80ff, + 0x8100, 0x8101, 0x8102, 0x8103, 0x8104, 0x8105, 0x8106, 0x8107, + 0x8108, 0x8109, 0x810a, 0x810b, 0x810c, 0x810d, 0x810e, 0x810f, + 0x8110, 0x8111, 0x8112, 0x8113, 0x8114, 0x8115, 0x8116, 0x8117, + 0x8118, 0x8119, 0x811a, 0x811b, 0x811c, 0x811d, 0x811e, 0x811f, + 0x8120, 0x8121, 0x8122, 0x8123, 0x8124, 0x8125, 0x8126, 0x8127, + 0x8128, 0x8129, 0x812a, 0x812b, 0x812c, 0x812d, 0x812e, 0x812f, + 0x8130, 0x8131, 0x8132, 0x8133, 0x8134, 0x8135, 0x8136, 0x8137, + 0x8138, 0x8139, 0x813a, 0x813b, 0x813c, 0x813d, 0x813e, 0x813f, + 0x8140, 0x8141, 0x8142, 0x8143, 0x8144, 0x8145, 0x8146, 0x8147, + 0x8148, 0x8149, 0x814a, 0x814b, 0x814c, 0x814d, 0x814e, 0x814f, + 0x8150, 0x8151, 0x8152, 0x8153, 0x8154, 0x8155, 0x8156, 0x8157, + 0x8158, 0x8159, 0x815a, 0x815b, 0x815c, 0x815d, 0x815e, 0x815f, + 0x8160, 0x8161, 0x8162, 0x8163, 0x8164, 0x8165, 0x8166, 0x8167, + 0x8168, 0x8169, 0x816a, 0x816b, 0x816c, 0x816d, 0x816e, 0x816f, + 0x8170, 0x8171, 0x8172, 0x8173, 0x8174, 0x8175, 0x8176, 0x8177, + 0x8178, 0x8179, 0x817a, 0x817b, 0x817c, 0x817d, 0x817e, 0x817f, + 0x8180, 0x8181, 0x8182, 0x8183, 0x8184, 0x8185, 0x8186, 0x8187, + 0x8188, 0x8189, 0x818a, 0x818b, 0x818c, 0x818d, 0x818e, 0x818f, + 0x8190, 0x8191, 0x8192, 0x8193, 0x8194, 0x8195, 0x8196, 0x8197, + 0x8198, 0x8199, 0x819a, 0x819b, 0x819c, 0x819d, 0x819e, 0x819f, + 0x81a0, 0x81a1, 0x81a2, 0x81a3, 0x81a4, 0x81a5, 0x81a6, 0x81a7, + 0x81a8, 0x81a9, 0x81aa, 0x81ab, 0x81ac, 0x81ad, 0x81ae, 0x81af, + 0x81b0, 0x81b1, 0x81b2, 0x81b3, 0x81b4, 0x81b5, 0x81b6, 0x81b7, + 0x81b8, 0x81b9, 0x81ba, 0x81bb, 0x81bc, 0x81bd, 0x81be, 0x81bf, + 0x81c0, 0x81c1, 0x81c2, 0x81c3, 0x81c4, 0x81c5, 0x81c6, 0x81c7, + 0x81c8, 0x81c9, 0x81ca, 0x81cb, 0x81cc, 0x81cd, 0x81ce, 0x81cf, + 0x81d0, 0x81d1, 0x81d2, 0x81d3, 0x81d4, 0x81d5, 0x81d6, 0x81d7, + 0x81d8, 0x81d9, 0x81da, 0x81db, 0x81dc, 0x81dd, 0x81de, 0x81df, + 0x81e0, 0x81e1, 0x81e2, 0x81e3, 0x81e4, 0x81e5, 0x81e6, 0x81e7, + 0x81e8, 0x81e9, 0x81ea, 0x81eb, 0x81ec, 0x81ed, 0x81ee, 0x81ef, + 0x81f0, 0x81f1, 0x81f2, 0x81f3, 0x81f4, 0x81f5, 0x81f6, 0x81f7, + 0x81f8, 0x81f9, 0x81fa, 0x81fb, 0x81fc, 0x81fd, 0x81fe, 0x81ff, + 0x8200, 0x8201, 0x8202, 0x8203, 0x8204, 0x8205, 0x8206, 0x8207, + 0x8208, 0x8209, 0x820a, 0x820b, 0x820c, 0x820d, 0x820e, 0x820f, + 0x8210, 0x8211, 0x8212, 0x8213, 0x8214, 0x8215, 0x8216, 0x8217, + 0x8218, 0x8219, 0x821a, 0x821b, 0x821c, 0x821d, 0x821e, 0x821f, + 0x8220, 0x8221, 0x8222, 0x8223, 0x8224, 0x8225, 0x8226, 0x8227, + 0x8228, 0x8229, 0x822a, 0x822b, 0x822c, 0x822d, 0x822e, 0x822f, + 0x8230, 0x8231, 0x8232, 0x8233, 0x8234, 0x8235, 0x8236, 0x8237, + 0x8238, 0x8239, 0x823a, 0x823b, 0x823c, 0x823d, 0x823e, 0x823f, + 0x8240, 0x8241, 0x8242, 0x8243, 0x8244, 0x8245, 0x8246, 0x8247, + 0x8248, 0x8249, 0x824a, 0x824b, 0x824c, 0x824d, 0x824e, 0x824f, + 0x8250, 0x8251, 0x8252, 0x8253, 0x8254, 0x8255, 0x8256, 0x8257, + 0x8258, 0x8259, 0x825a, 0x825b, 0x825c, 0x825d, 0x825e, 0x825f, + 0x8260, 0x8261, 0x8262, 0x8263, 0x8264, 0x8265, 0x8266, 0x8267, + 0x8268, 0x8269, 0x826a, 0x826b, 0x826c, 0x826d, 0x826e, 0x826f, + 0x8270, 0x8271, 0x8272, 0x8273, 0x8274, 0x8275, 0x8276, 0x8277, + 0x8278, 0x8279, 0x827a, 0x827b, 0x827c, 0x827d, 0x827e, 0x827f, + 0x8280, 0x8281, 0x8282, 0x8283, 0x8284, 0x8285, 0x8286, 0x8287, + 0x8288, 0x8289, 0x828a, 0x828b, 0x828c, 0x828d, 0x828e, 0x828f, + 0x8290, 0x8291, 0x8292, 0x8293, 0x8294, 0x8295, 0x8296, 0x8297, + 0x8298, 0x8299, 0x829a, 0x829b, 0x829c, 0x829d, 0x829e, 0x829f, + 0x82a0, 0x82a1, 0x82a2, 0x82a3, 0x82a4, 0x82a5, 0x82a6, 0x82a7, + 0x82a8, 0x82a9, 0x82aa, 0x82ab, 0x82ac, 0x82ad, 0x82ae, 0x82af, + 0x82b0, 0x82b1, 0x82b2, 0x82b3, 0x82b4, 0x82b5, 0x82b6, 0x82b7, + 0x82b8, 0x82b9, 0x82ba, 0x82bb, 0x82bc, 0x82bd, 0x82be, 0x82bf, + 0x82c0, 0x82c1, 0x82c2, 0x82c3, 0x82c4, 0x82c5, 0x82c6, 0x82c7, + 0x82c8, 0x82c9, 0x82ca, 0x82cb, 0x82cc, 0x82cd, 0x82ce, 0x82cf, + 0x82d0, 0x82d1, 0x82d2, 0x82d3, 0x82d4, 0x82d5, 0x82d6, 0x82d7, + 0x82d8, 0x82d9, 0x82da, 0x82db, 0x82dc, 0x82dd, 0x82de, 0x82df, + 0x82e0, 0x82e1, 0x82e2, 0x82e3, 0x82e4, 0x82e5, 0x82e6, 0x82e7, + 0x82e8, 0x82e9, 0x82ea, 0x82eb, 0x82ec, 0x82ed, 0x82ee, 0x82ef, + 0x82f0, 0x82f1, 0x82f2, 0x82f3, 0x82f4, 0x82f5, 0x82f6, 0x82f7, + 0x82f8, 0x82f9, 0x82fa, 0x82fb, 0x82fc, 0x82fd, 0x82fe, 0x82ff, + 0x8300, 0x8301, 0x8302, 0x8303, 0x8304, 0x8305, 0x8306, 0x8307, + 0x8308, 0x8309, 0x830a, 0x830b, 0x830c, 0x830d, 0x830e, 0x830f, + 0x8310, 0x8311, 0x8312, 0x8313, 0x8314, 0x8315, 0x8316, 0x8317, + 0x8318, 0x8319, 0x831a, 0x831b, 0x831c, 0x831d, 0x831e, 0x831f, + 0x8320, 0x8321, 0x8322, 0x8323, 0x8324, 0x8325, 0x8326, 0x8327, + 0x8328, 0x8329, 0x832a, 0x832b, 0x832c, 0x832d, 0x832e, 0x832f, + 0x8330, 0x8331, 0x8332, 0x8333, 0x8334, 0x8335, 0x8336, 0x8337, + 0x8338, 0x8339, 0x833a, 0x833b, 0x833c, 0x833d, 0x833e, 0x833f, + 0x8340, 0x8341, 0x8342, 0x8343, 0x8344, 0x8345, 0x8346, 0x8347, + 0x8348, 0x8349, 0x834a, 0x834b, 0x834c, 0x834d, 0x834e, 0x834f, + 0x8350, 0x8351, 0x8352, 0x8353, 0x8354, 0x8355, 0x8356, 0x8357, + 0x8358, 0x8359, 0x835a, 0x835b, 0x835c, 0x835d, 0x835e, 0x835f, + 0x8360, 0x8361, 0x8362, 0x8363, 0x8364, 0x8365, 0x8366, 0x8367, + 0x8368, 0x8369, 0x836a, 0x836b, 0x836c, 0x836d, 0x836e, 0x836f, + 0x8370, 0x8371, 0x8372, 0x8373, 0x8374, 0x8375, 0x8376, 0x8377, + 0x8378, 0x8379, 0x837a, 0x837b, 0x837c, 0x837d, 0x837e, 0x837f, + 0x8380, 0x8381, 0x8382, 0x8383, 0x8384, 0x8385, 0x8386, 0x8387, + 0x8388, 0x8389, 0x838a, 0x838b, 0x838c, 0x838d, 0x838e, 0x838f, + 0x8390, 0x8391, 0x8392, 0x8393, 0x8394, 0x8395, 0x8396, 0x8397, + 0x8398, 0x8399, 0x839a, 0x839b, 0x839c, 0x839d, 0x839e, 0x839f, + 0x83a0, 0x83a1, 0x83a2, 0x83a3, 0x83a4, 0x83a5, 0x83a6, 0x83a7, + 0x83a8, 0x83a9, 0x83aa, 0x83ab, 0x83ac, 0x83ad, 0x83ae, 0x83af, + 0x83b0, 0x83b1, 0x83b2, 0x83b3, 0x83b4, 0x83b5, 0x83b6, 0x83b7, + 0x83b8, 0x83b9, 0x83ba, 0x83bb, 0x83bc, 0x83bd, 0x83be, 0x83bf, + 0x83c0, 0x83c1, 0x83c2, 0x83c3, 0x83c4, 0x83c5, 0x83c6, 0x83c7, + 0x83c8, 0x83c9, 0x83ca, 0x83cb, 0x83cc, 0x83cd, 0x83ce, 0x83cf, + 0x83d0, 0x83d1, 0x83d2, 0x83d3, 0x83d4, 0x83d5, 0x83d6, 0x83d7, + 0x83d8, 0x83d9, 0x83da, 0x83db, 0x83dc, 0x83dd, 0x83de, 0x83df, + 0x83e0, 0x83e1, 0x83e2, 0x83e3, 0x83e4, 0x83e5, 0x83e6, 0x83e7, + 0x83e8, 0x83e9, 0x83ea, 0x83eb, 0x83ec, 0x83ed, 0x83ee, 0x83ef, + 0x83f0, 0x83f1, 0x83f2, 0x83f3, 0x83f4, 0x83f5, 0x83f6, 0x83f7, + 0x83f8, 0x83f9, 0x83fa, 0x83fb, 0x83fc, 0x83fd, 0x83fe, 0x83ff, + 0x8400, 0x8401, 0x8402, 0x8403, 0x8404, 0x8405, 0x8406, 0x8407, + 0x8408, 0x8409, 0x840a, 0x840b, 0x840c, 0x840d, 0x840e, 0x840f, + 0x8410, 0x8411, 0x8412, 0x8413, 0x8414, 0x8415, 0x8416, 0x8417, + 0x8418, 0x8419, 0x841a, 0x841b, 0x841c, 0x841d, 0x841e, 0x841f, + 0x8420, 0x8421, 0x8422, 0x8423, 0x8424, 0x8425, 0x8426, 0x8427, + 0x8428, 0x8429, 0x842a, 0x842b, 0x842c, 0x842d, 0x842e, 0x842f, + 0x8430, 0x8431, 0x8432, 0x8433, 0x8434, 0x8435, 0x8436, 0x8437, + 0x8438, 0x8439, 0x843a, 0x843b, 0x843c, 0x843d, 0x843e, 0x843f, + 0x8440, 0x8441, 0x8442, 0x8443, 0x8444, 0x8445, 0x8446, 0x8447, + 0x8448, 0x8449, 0x844a, 0x844b, 0x844c, 0x844d, 0x844e, 0x844f, + 0x8450, 0x8451, 0x8452, 0x8453, 0x8454, 0x8455, 0x8456, 0x8457, + 0x8458, 0x8459, 0x845a, 0x845b, 0x845c, 0x845d, 0x845e, 0x845f, + 0x8460, 0x8461, 0x8462, 0x8463, 0x8464, 0x8465, 0x8466, 0x8467, + 0x8468, 0x8469, 0x846a, 0x846b, 0x846c, 0x846d, 0x846e, 0x846f, + 0x8470, 0x8471, 0x8472, 0x8473, 0x8474, 0x8475, 0x8476, 0x8477, + 0x8478, 0x8479, 0x847a, 0x847b, 0x847c, 0x847d, 0x847e, 0x847f, + 0x8480, 0x8481, 0x8482, 0x8483, 0x8484, 0x8485, 0x8486, 0x8487, + 0x8488, 0x8489, 0x848a, 0x848b, 0x848c, 0x848d, 0x848e, 0x848f, + 0x8490, 0x8491, 0x8492, 0x8493, 0x8494, 0x8495, 0x8496, 0x8497, + 0x8498, 0x8499, 0x849a, 0x849b, 0x849c, 0x849d, 0x849e, 0x849f, + 0x84a0, 0x84a1, 0x84a2, 0x84a3, 0x84a4, 0x84a5, 0x84a6, 0x84a7, + 0x84a8, 0x84a9, 0x84aa, 0x84ab, 0x84ac, 0x84ad, 0x84ae, 0x84af, + 0x84b0, 0x84b1, 0x84b2, 0x84b3, 0x84b4, 0x84b5, 0x84b6, 0x84b7, + 0x84b8, 0x84b9, 0x84ba, 0x84bb, 0x84bc, 0x84bd, 0x84be, 0x84bf, + 0x84c0, 0x84c1, 0x84c2, 0x84c3, 0x84c4, 0x84c5, 0x84c6, 0x84c7, + 0x84c8, 0x84c9, 0x84ca, 0x84cb, 0x84cc, 0x84cd, 0x84ce, 0x84cf, + 0x84d0, 0x84d1, 0x84d2, 0x84d3, 0x84d4, 0x84d5, 0x84d6, 0x84d7, + 0x84d8, 0x84d9, 0x84da, 0x84db, 0x84dc, 0x84dd, 0x84de, 0x84df, + 0x84e0, 0x84e1, 0x84e2, 0x84e3, 0x84e4, 0x84e5, 0x84e6, 0x84e7, + 0x84e8, 0x84e9, 0x84ea, 0x84eb, 0x84ec, 0x84ed, 0x84ee, 0x84ef, + 0x84f0, 0x84f1, 0x84f2, 0x84f3, 0x84f4, 0x84f5, 0x84f6, 0x84f7, + 0x84f8, 0x84f9, 0x84fa, 0x84fb, 0x84fc, 0x84fd, 0x84fe, 0x84ff, + 0x8500, 0x8501, 0x8502, 0x8503, 0x8504, 0x8505, 0x8506, 0x8507, + 0x8508, 0x8509, 0x850a, 0x850b, 0x850c, 0x850d, 0x850e, 0x850f, + 0x8510, 0x8511, 0x8512, 0x8513, 0x8514, 0x8515, 0x8516, 0x8517, + 0x8518, 0x8519, 0x851a, 0x851b, 0x851c, 0x851d, 0x851e, 0x851f, + 0x8520, 0x8521, 0x8522, 0x8523, 0x8524, 0x8525, 0x8526, 0x8527, + 0x8528, 0x8529, 0x852a, 0x852b, 0x852c, 0x852d, 0x852e, 0x852f, + 0x8530, 0x8531, 0x8532, 0x8533, 0x8534, 0x8535, 0x8536, 0x8537, + 0x8538, 0x8539, 0x853a, 0x853b, 0x853c, 0x853d, 0x853e, 0x853f, + 0x8540, 0x8541, 0x8542, 0x8543, 0x8544, 0x8545, 0x8546, 0x8547, + 0x8548, 0x8549, 0x854a, 0x854b, 0x854c, 0x854d, 0x854e, 0x854f, + 0x8550, 0x8551, 0x8552, 0x8553, 0x8554, 0x8555, 0x8556, 0x8557, + 0x8558, 0x8559, 0x855a, 0x855b, 0x855c, 0x855d, 0x855e, 0x855f, + 0x8560, 0x8561, 0x8562, 0x8563, 0x8564, 0x8565, 0x8566, 0x8567, + 0x8568, 0x8569, 0x856a, 0x856b, 0x856c, 0x856d, 0x856e, 0x856f, + 0x8570, 0x8571, 0x8572, 0x8573, 0x8574, 0x8575, 0x8576, 0x8577, + 0x8578, 0x8579, 0x857a, 0x857b, 0x857c, 0x857d, 0x857e, 0x857f, + 0x8580, 0x8581, 0x8582, 0x8583, 0x8584, 0x8585, 0x8586, 0x8587, + 0x8588, 0x8589, 0x858a, 0x858b, 0x858c, 0x858d, 0x858e, 0x858f, + 0x8590, 0x8591, 0x8592, 0x8593, 0x8594, 0x8595, 0x8596, 0x8597, + 0x8598, 0x8599, 0x859a, 0x859b, 0x859c, 0x859d, 0x859e, 0x859f, + 0x85a0, 0x85a1, 0x85a2, 0x85a3, 0x85a4, 0x85a5, 0x85a6, 0x85a7, + 0x85a8, 0x85a9, 0x85aa, 0x85ab, 0x85ac, 0x85ad, 0x85ae, 0x85af, + 0x85b0, 0x85b1, 0x85b2, 0x85b3, 0x85b4, 0x85b5, 0x85b6, 0x85b7, + 0x85b8, 0x85b9, 0x85ba, 0x85bb, 0x85bc, 0x85bd, 0x85be, 0x85bf, + 0x85c0, 0x85c1, 0x85c2, 0x85c3, 0x85c4, 0x85c5, 0x85c6, 0x85c7, + 0x85c8, 0x85c9, 0x85ca, 0x85cb, 0x85cc, 0x85cd, 0x85ce, 0x85cf, + 0x85d0, 0x85d1, 0x85d2, 0x85d3, 0x85d4, 0x85d5, 0x85d6, 0x85d7, + 0x85d8, 0x85d9, 0x85da, 0x85db, 0x85dc, 0x85dd, 0x85de, 0x85df, + 0x85e0, 0x85e1, 0x85e2, 0x85e3, 0x85e4, 0x85e5, 0x85e6, 0x85e7, + 0x85e8, 0x85e9, 0x85ea, 0x85eb, 0x85ec, 0x85ed, 0x85ee, 0x85ef, + 0x85f0, 0x85f1, 0x85f2, 0x85f3, 0x85f4, 0x85f5, 0x85f6, 0x85f7, + 0x85f8, 0x85f9, 0x85fa, 0x85fb, 0x85fc, 0x85fd, 0x85fe, 0x85ff, + 0x8600, 0x8601, 0x8602, 0x8603, 0x8604, 0x8605, 0x8606, 0x8607, + 0x8608, 0x8609, 0x860a, 0x860b, 0x860c, 0x860d, 0x860e, 0x860f, + 0x8610, 0x8611, 0x8612, 0x8613, 0x8614, 0x8615, 0x8616, 0x8617, + 0x8618, 0x8619, 0x861a, 0x861b, 0x861c, 0x861d, 0x861e, 0x861f, + 0x8620, 0x8621, 0x8622, 0x8623, 0x8624, 0x8625, 0x8626, 0x8627, + 0x8628, 0x8629, 0x862a, 0x862b, 0x862c, 0x862d, 0x862e, 0x862f, + 0x8630, 0x8631, 0x8632, 0x8633, 0x8634, 0x8635, 0x8636, 0x8637, + 0x8638, 0x8639, 0x863a, 0x863b, 0x863c, 0x863d, 0x863e, 0x863f, + 0x8640, 0x8641, 0x8642, 0x8643, 0x8644, 0x8645, 0x8646, 0x8647, + 0x8648, 0x8649, 0x864a, 0x864b, 0x864c, 0x864d, 0x864e, 0x864f, + 0x8650, 0x8651, 0x8652, 0x8653, 0x8654, 0x8655, 0x8656, 0x8657, + 0x8658, 0x8659, 0x865a, 0x865b, 0x865c, 0x865d, 0x865e, 0x865f, + 0x8660, 0x8661, 0x8662, 0x8663, 0x8664, 0x8665, 0x8666, 0x8667, + 0x8668, 0x8669, 0x866a, 0x866b, 0x866c, 0x866d, 0x866e, 0x866f, + 0x8670, 0x8671, 0x8672, 0x8673, 0x8674, 0x8675, 0x8676, 0x8677, + 0x8678, 0x8679, 0x867a, 0x867b, 0x867c, 0x867d, 0x867e, 0x867f, + 0x8680, 0x8681, 0x8682, 0x8683, 0x8684, 0x8685, 0x8686, 0x8687, + 0x8688, 0x8689, 0x868a, 0x868b, 0x868c, 0x868d, 0x868e, 0x868f, + 0x8690, 0x8691, 0x8692, 0x8693, 0x8694, 0x8695, 0x8696, 0x8697, + 0x8698, 0x8699, 0x869a, 0x869b, 0x869c, 0x869d, 0x869e, 0x869f, + 0x86a0, 0x86a1, 0x86a2, 0x86a3, 0x86a4, 0x86a5, 0x86a6, 0x86a7, + 0x86a8, 0x86a9, 0x86aa, 0x86ab, 0x86ac, 0x86ad, 0x86ae, 0x86af, + 0x86b0, 0x86b1, 0x86b2, 0x86b3, 0x86b4, 0x86b5, 0x86b6, 0x86b7, + 0x86b8, 0x86b9, 0x86ba, 0x86bb, 0x86bc, 0x86bd, 0x86be, 0x86bf, + 0x86c0, 0x86c1, 0x86c2, 0x86c3, 0x86c4, 0x86c5, 0x86c6, 0x86c7, + 0x86c8, 0x86c9, 0x86ca, 0x86cb, 0x86cc, 0x86cd, 0x86ce, 0x86cf, + 0x86d0, 0x86d1, 0x86d2, 0x86d3, 0x86d4, 0x86d5, 0x86d6, 0x86d7, + 0x86d8, 0x86d9, 0x86da, 0x86db, 0x86dc, 0x86dd, 0x86de, 0x86df, + 0x86e0, 0x86e1, 0x86e2, 0x86e3, 0x86e4, 0x86e5, 0x86e6, 0x86e7, + 0x86e8, 0x86e9, 0x86ea, 0x86eb, 0x86ec, 0x86ed, 0x86ee, 0x86ef, + 0x86f0, 0x86f1, 0x86f2, 0x86f3, 0x86f4, 0x86f5, 0x86f6, 0x86f7, + 0x86f8, 0x86f9, 0x86fa, 0x86fb, 0x86fc, 0x86fd, 0x86fe, 0x86ff, + 0x8700, 0x8701, 0x8702, 0x8703, 0x8704, 0x8705, 0x8706, 0x8707, + 0x8708, 0x8709, 0x870a, 0x870b, 0x870c, 0x870d, 0x870e, 0x870f, + 0x8710, 0x8711, 0x8712, 0x8713, 0x8714, 0x8715, 0x8716, 0x8717, + 0x8718, 0x8719, 0x871a, 0x871b, 0x871c, 0x871d, 0x871e, 0x871f, + 0x8720, 0x8721, 0x8722, 0x8723, 0x8724, 0x8725, 0x8726, 0x8727, + 0x8728, 0x8729, 0x872a, 0x872b, 0x872c, 0x872d, 0x872e, 0x872f, + 0x8730, 0x8731, 0x8732, 0x8733, 0x8734, 0x8735, 0x8736, 0x8737, + 0x8738, 0x8739, 0x873a, 0x873b, 0x873c, 0x873d, 0x873e, 0x873f, + 0x8740, 0x8741, 0x8742, 0x8743, 0x8744, 0x8745, 0x8746, 0x8747, + 0x8748, 0x8749, 0x874a, 0x874b, 0x874c, 0x874d, 0x874e, 0x874f, + 0x8750, 0x8751, 0x8752, 0x8753, 0x8754, 0x8755, 0x8756, 0x8757, + 0x8758, 0x8759, 0x875a, 0x875b, 0x875c, 0x875d, 0x875e, 0x875f, + 0x8760, 0x8761, 0x8762, 0x8763, 0x8764, 0x8765, 0x8766, 0x8767, + 0x8768, 0x8769, 0x876a, 0x876b, 0x876c, 0x876d, 0x876e, 0x876f, + 0x8770, 0x8771, 0x8772, 0x8773, 0x8774, 0x8775, 0x8776, 0x8777, + 0x8778, 0x8779, 0x877a, 0x877b, 0x877c, 0x877d, 0x877e, 0x877f, + 0x8780, 0x8781, 0x8782, 0x8783, 0x8784, 0x8785, 0x8786, 0x8787, + 0x8788, 0x8789, 0x878a, 0x878b, 0x878c, 0x878d, 0x878e, 0x878f, + 0x8790, 0x8791, 0x8792, 0x8793, 0x8794, 0x8795, 0x8796, 0x8797, + 0x8798, 0x8799, 0x879a, 0x879b, 0x879c, 0x879d, 0x879e, 0x879f, + 0x87a0, 0x87a1, 0x87a2, 0x87a3, 0x87a4, 0x87a5, 0x87a6, 0x87a7, + 0x87a8, 0x87a9, 0x87aa, 0x87ab, 0x87ac, 0x87ad, 0x87ae, 0x87af, + 0x87b0, 0x87b1, 0x87b2, 0x87b3, 0x87b4, 0x87b5, 0x87b6, 0x87b7, + 0x87b8, 0x87b9, 0x87ba, 0x87bb, 0x87bc, 0x87bd, 0x87be, 0x87bf, + 0x87c0, 0x87c1, 0x87c2, 0x87c3, 0x87c4, 0x87c5, 0x87c6, 0x87c7, + 0x87c8, 0x87c9, 0x87ca, 0x87cb, 0x87cc, 0x87cd, 0x87ce, 0x87cf, + 0x87d0, 0x87d1, 0x87d2, 0x87d3, 0x87d4, 0x87d5, 0x87d6, 0x87d7, + 0x87d8, 0x87d9, 0x87da, 0x87db, 0x87dc, 0x87dd, 0x87de, 0x87df, + 0x87e0, 0x87e1, 0x87e2, 0x87e3, 0x87e4, 0x87e5, 0x87e6, 0x87e7, + 0x87e8, 0x87e9, 0x87ea, 0x87eb, 0x87ec, 0x87ed, 0x87ee, 0x87ef, + 0x87f0, 0x87f1, 0x87f2, 0x87f3, 0x87f4, 0x87f5, 0x87f6, 0x87f7, + 0x87f8, 0x87f9, 0x87fa, 0x87fb, 0x87fc, 0x87fd, 0x87fe, 0x87ff, + 0x8800, 0x8801, 0x8802, 0x8803, 0x8804, 0x8805, 0x8806, 0x8807, + 0x8808, 0x8809, 0x880a, 0x880b, 0x880c, 0x880d, 0x880e, 0x880f, + 0x8810, 0x8811, 0x8812, 0x8813, 0x8814, 0x8815, 0x8816, 0x8817, + 0x8818, 0x8819, 0x881a, 0x881b, 0x881c, 0x881d, 0x881e, 0x881f, + 0x8820, 0x8821, 0x8822, 0x8823, 0x8824, 0x8825, 0x8826, 0x8827, + 0x8828, 0x8829, 0x882a, 0x882b, 0x882c, 0x882d, 0x882e, 0x882f, + 0x8830, 0x8831, 0x8832, 0x8833, 0x8834, 0x8835, 0x8836, 0x8837, + 0x8838, 0x8839, 0x883a, 0x883b, 0x883c, 0x883d, 0x883e, 0x883f, + 0x8840, 0x8841, 0x8842, 0x8843, 0x8844, 0x8845, 0x8846, 0x8847, + 0x8848, 0x8849, 0x884a, 0x884b, 0x884c, 0x884d, 0x884e, 0x884f, + 0x8850, 0x8851, 0x8852, 0x8853, 0x8854, 0x8855, 0x8856, 0x8857, + 0x8858, 0x8859, 0x885a, 0x885b, 0x885c, 0x885d, 0x885e, 0x885f, + 0x8860, 0x8861, 0x8862, 0x8863, 0x8864, 0x8865, 0x8866, 0x8867, + 0x8868, 0x8869, 0x886a, 0x886b, 0x886c, 0x886d, 0x886e, 0x886f, + 0x8870, 0x8871, 0x8872, 0x8873, 0x8874, 0x8875, 0x8876, 0x8877, + 0x8878, 0x8879, 0x887a, 0x887b, 0x887c, 0x887d, 0x887e, 0x887f, + 0x8880, 0x8881, 0x8882, 0x8883, 0x8884, 0x8885, 0x8886, 0x8887, + 0x8888, 0x8889, 0x888a, 0x888b, 0x888c, 0x888d, 0x888e, 0x888f, + 0x8890, 0x8891, 0x8892, 0x8893, 0x8894, 0x8895, 0x8896, 0x8897, + 0x8898, 0x8899, 0x889a, 0x889b, 0x889c, 0x889d, 0x889e, 0x889f, + 0x88a0, 0x88a1, 0x88a2, 0x88a3, 0x88a4, 0x88a5, 0x88a6, 0x88a7, + 0x88a8, 0x88a9, 0x88aa, 0x88ab, 0x88ac, 0x88ad, 0x88ae, 0x88af, + 0x88b0, 0x88b1, 0x88b2, 0x88b3, 0x88b4, 0x88b5, 0x88b6, 0x88b7, + 0x88b8, 0x88b9, 0x88ba, 0x88bb, 0x88bc, 0x88bd, 0x88be, 0x88bf, + 0x88c0, 0x88c1, 0x88c2, 0x88c3, 0x88c4, 0x88c5, 0x88c6, 0x88c7, + 0x88c8, 0x88c9, 0x88ca, 0x88cb, 0x88cc, 0x88cd, 0x88ce, 0x88cf, + 0x88d0, 0x88d1, 0x88d2, 0x88d3, 0x88d4, 0x88d5, 0x88d6, 0x88d7, + 0x88d8, 0x88d9, 0x88da, 0x88db, 0x88dc, 0x88dd, 0x88de, 0x88df, + 0x88e0, 0x88e1, 0x88e2, 0x88e3, 0x88e4, 0x88e5, 0x88e6, 0x88e7, + 0x88e8, 0x88e9, 0x88ea, 0x88eb, 0x88ec, 0x88ed, 0x88ee, 0x88ef, + 0x88f0, 0x88f1, 0x88f2, 0x88f3, 0x88f4, 0x88f5, 0x88f6, 0x88f7, + 0x88f8, 0x88f9, 0x88fa, 0x88fb, 0x88fc, 0x88fd, 0x88fe, 0x88ff, + 0x8900, 0x8901, 0x8902, 0x8903, 0x8904, 0x8905, 0x8906, 0x8907, + 0x8908, 0x8909, 0x890a, 0x890b, 0x890c, 0x890d, 0x890e, 0x890f, + 0x8910, 0x8911, 0x8912, 0x8913, 0x8914, 0x8915, 0x8916, 0x8917, + 0x8918, 0x8919, 0x891a, 0x891b, 0x891c, 0x891d, 0x891e, 0x891f, + 0x8920, 0x8921, 0x8922, 0x8923, 0x8924, 0x8925, 0x8926, 0x8927, + 0x8928, 0x8929, 0x892a, 0x892b, 0x892c, 0x892d, 0x892e, 0x892f, + 0x8930, 0x8931, 0x8932, 0x8933, 0x8934, 0x8935, 0x8936, 0x8937, + 0x8938, 0x8939, 0x893a, 0x893b, 0x893c, 0x893d, 0x893e, 0x893f, + 0x8940, 0x8941, 0x8942, 0x8943, 0x8944, 0x8945, 0x8946, 0x8947, + 0x8948, 0x8949, 0x894a, 0x894b, 0x894c, 0x894d, 0x894e, 0x894f, + 0x8950, 0x8951, 0x8952, 0x8953, 0x8954, 0x8955, 0x8956, 0x8957, + 0x8958, 0x8959, 0x895a, 0x895b, 0x895c, 0x895d, 0x895e, 0x895f, + 0x8960, 0x8961, 0x8962, 0x8963, 0x8964, 0x8965, 0x8966, 0x8967, + 0x8968, 0x8969, 0x896a, 0x896b, 0x896c, 0x896d, 0x896e, 0x896f, + 0x8970, 0x8971, 0x8972, 0x8973, 0x8974, 0x8975, 0x8976, 0x8977, + 0x8978, 0x8979, 0x897a, 0x897b, 0x897c, 0x897d, 0x897e, 0x897f, + 0x8980, 0x8981, 0x8982, 0x8983, 0x8984, 0x8985, 0x8986, 0x8987, + 0x8988, 0x8989, 0x898a, 0x898b, 0x898c, 0x898d, 0x898e, 0x898f, + 0x8990, 0x8991, 0x8992, 0x8993, 0x8994, 0x8995, 0x8996, 0x8997, + 0x8998, 0x8999, 0x899a, 0x899b, 0x899c, 0x899d, 0x899e, 0x899f, + 0x89a0, 0x89a1, 0x89a2, 0x89a3, 0x89a4, 0x89a5, 0x89a6, 0x89a7, + 0x89a8, 0x89a9, 0x89aa, 0x89ab, 0x89ac, 0x89ad, 0x89ae, 0x89af, + 0x89b0, 0x89b1, 0x89b2, 0x89b3, 0x89b4, 0x89b5, 0x89b6, 0x89b7, + 0x89b8, 0x89b9, 0x89ba, 0x89bb, 0x89bc, 0x89bd, 0x89be, 0x89bf, + 0x89c0, 0x89c1, 0x89c2, 0x89c3, 0x89c4, 0x89c5, 0x89c6, 0x89c7, + 0x89c8, 0x89c9, 0x89ca, 0x89cb, 0x89cc, 0x89cd, 0x89ce, 0x89cf, + 0x89d0, 0x89d1, 0x89d2, 0x89d3, 0x89d4, 0x89d5, 0x89d6, 0x89d7, + 0x89d8, 0x89d9, 0x89da, 0x89db, 0x89dc, 0x89dd, 0x89de, 0x89df, + 0x89e0, 0x89e1, 0x89e2, 0x89e3, 0x89e4, 0x89e5, 0x89e6, 0x89e7, + 0x89e8, 0x89e9, 0x89ea, 0x89eb, 0x89ec, 0x89ed, 0x89ee, 0x89ef, + 0x89f0, 0x89f1, 0x89f2, 0x89f3, 0x89f4, 0x89f5, 0x89f6, 0x89f7, + 0x89f8, 0x89f9, 0x89fa, 0x89fb, 0x89fc, 0x89fd, 0x89fe, 0x89ff, + 0x8a00, 0x8a01, 0x8a02, 0x8a03, 0x8a04, 0x8a05, 0x8a06, 0x8a07, + 0x8a08, 0x8a09, 0x8a0a, 0x8a0b, 0x8a0c, 0x8a0d, 0x8a0e, 0x8a0f, + 0x8a10, 0x8a11, 0x8a12, 0x8a13, 0x8a14, 0x8a15, 0x8a16, 0x8a17, + 0x8a18, 0x8a19, 0x8a1a, 0x8a1b, 0x8a1c, 0x8a1d, 0x8a1e, 0x8a1f, + 0x8a20, 0x8a21, 0x8a22, 0x8a23, 0x8a24, 0x8a25, 0x8a26, 0x8a27, + 0x8a28, 0x8a29, 0x8a2a, 0x8a2b, 0x8a2c, 0x8a2d, 0x8a2e, 0x8a2f, + 0x8a30, 0x8a31, 0x8a32, 0x8a33, 0x8a34, 0x8a35, 0x8a36, 0x8a37, + 0x8a38, 0x8a39, 0x8a3a, 0x8a3b, 0x8a3c, 0x8a3d, 0x8a3e, 0x8a3f, + 0x8a40, 0x8a41, 0x8a42, 0x8a43, 0x8a44, 0x8a45, 0x8a46, 0x8a47, + 0x8a48, 0x8a49, 0x8a4a, 0x8a4b, 0x8a4c, 0x8a4d, 0x8a4e, 0x8a4f, + 0x8a50, 0x8a51, 0x8a52, 0x8a53, 0x8a54, 0x8a55, 0x8a56, 0x8a57, + 0x8a58, 0x8a59, 0x8a5a, 0x8a5b, 0x8a5c, 0x8a5d, 0x8a5e, 0x8a5f, + 0x8a60, 0x8a61, 0x8a62, 0x8a63, 0x8a64, 0x8a65, 0x8a66, 0x8a67, + 0x8a68, 0x8a69, 0x8a6a, 0x8a6b, 0x8a6c, 0x8a6d, 0x8a6e, 0x8a6f, + 0x8a70, 0x8a71, 0x8a72, 0x8a73, 0x8a74, 0x8a75, 0x8a76, 0x8a77, + 0x8a78, 0x8a79, 0x8a7a, 0x8a7b, 0x8a7c, 0x8a7d, 0x8a7e, 0x8a7f, + 0x8a80, 0x8a81, 0x8a82, 0x8a83, 0x8a84, 0x8a85, 0x8a86, 0x8a87, + 0x8a88, 0x8a89, 0x8a8a, 0x8a8b, 0x8a8c, 0x8a8d, 0x8a8e, 0x8a8f, + 0x8a90, 0x8a91, 0x8a92, 0x8a93, 0x8a94, 0x8a95, 0x8a96, 0x8a97, + 0x8a98, 0x8a99, 0x8a9a, 0x8a9b, 0x8a9c, 0x8a9d, 0x8a9e, 0x8a9f, + 0x8aa0, 0x8aa1, 0x8aa2, 0x8aa3, 0x8aa4, 0x8aa5, 0x8aa6, 0x8aa7, + 0x8aa8, 0x8aa9, 0x8aaa, 0x8aab, 0x8aac, 0x8aad, 0x8aae, 0x8aaf, + 0x8ab0, 0x8ab1, 0x8ab2, 0x8ab3, 0x8ab4, 0x8ab5, 0x8ab6, 0x8ab7, + 0x8ab8, 0x8ab9, 0x8aba, 0x8abb, 0x8abc, 0x8abd, 0x8abe, 0x8abf, + 0x8ac0, 0x8ac1, 0x8ac2, 0x8ac3, 0x8ac4, 0x8ac5, 0x8ac6, 0x8ac7, + 0x8ac8, 0x8ac9, 0x8aca, 0x8acb, 0x8acc, 0x8acd, 0x8ace, 0x8acf, + 0x8ad0, 0x8ad1, 0x8ad2, 0x8ad3, 0x8ad4, 0x8ad5, 0x8ad6, 0x8ad7, + 0x8ad8, 0x8ad9, 0x8ada, 0x8adb, 0x8adc, 0x8add, 0x8ade, 0x8adf, + 0x8ae0, 0x8ae1, 0x8ae2, 0x8ae3, 0x8ae4, 0x8ae5, 0x8ae6, 0x8ae7, + 0x8ae8, 0x8ae9, 0x8aea, 0x8aeb, 0x8aec, 0x8aed, 0x8aee, 0x8aef, + 0x8af0, 0x8af1, 0x8af2, 0x8af3, 0x8af4, 0x8af5, 0x8af6, 0x8af7, + 0x8af8, 0x8af9, 0x8afa, 0x8afb, 0x8afc, 0x8afd, 0x8afe, 0x8aff, + 0x8b00, 0x8b01, 0x8b02, 0x8b03, 0x8b04, 0x8b05, 0x8b06, 0x8b07, + 0x8b08, 0x8b09, 0x8b0a, 0x8b0b, 0x8b0c, 0x8b0d, 0x8b0e, 0x8b0f, + 0x8b10, 0x8b11, 0x8b12, 0x8b13, 0x8b14, 0x8b15, 0x8b16, 0x8b17, + 0x8b18, 0x8b19, 0x8b1a, 0x8b1b, 0x8b1c, 0x8b1d, 0x8b1e, 0x8b1f, + 0x8b20, 0x8b21, 0x8b22, 0x8b23, 0x8b24, 0x8b25, 0x8b26, 0x8b27, + 0x8b28, 0x8b29, 0x8b2a, 0x8b2b, 0x8b2c, 0x8b2d, 0x8b2e, 0x8b2f, + 0x8b30, 0x8b31, 0x8b32, 0x8b33, 0x8b34, 0x8b35, 0x8b36, 0x8b37, + 0x8b38, 0x8b39, 0x8b3a, 0x8b3b, 0x8b3c, 0x8b3d, 0x8b3e, 0x8b3f, + 0x8b40, 0x8b41, 0x8b42, 0x8b43, 0x8b44, 0x8b45, 0x8b46, 0x8b47, + 0x8b48, 0x8b49, 0x8b4a, 0x8b4b, 0x8b4c, 0x8b4d, 0x8b4e, 0x8b4f, + 0x8b50, 0x8b51, 0x8b52, 0x8b53, 0x8b54, 0x8b55, 0x8b56, 0x8b57, + 0x8b58, 0x8b59, 0x8b5a, 0x8b5b, 0x8b5c, 0x8b5d, 0x8b5e, 0x8b5f, + 0x8b60, 0x8b61, 0x8b62, 0x8b63, 0x8b64, 0x8b65, 0x8b66, 0x8b67, + 0x8b68, 0x8b69, 0x8b6a, 0x8b6b, 0x8b6c, 0x8b6d, 0x8b6e, 0x8b6f, + 0x8b70, 0x8b71, 0x8b72, 0x8b73, 0x8b74, 0x8b75, 0x8b76, 0x8b77, + 0x8b78, 0x8b79, 0x8b7a, 0x8b7b, 0x8b7c, 0x8b7d, 0x8b7e, 0x8b7f, + 0x8b80, 0x8b81, 0x8b82, 0x8b83, 0x8b84, 0x8b85, 0x8b86, 0x8b87, + 0x8b88, 0x8b89, 0x8b8a, 0x8b8b, 0x8b8c, 0x8b8d, 0x8b8e, 0x8b8f, + 0x8b90, 0x8b91, 0x8b92, 0x8b93, 0x8b94, 0x8b95, 0x8b96, 0x8b97, + 0x8b98, 0x8b99, 0x8b9a, 0x8b9b, 0x8b9c, 0x8b9d, 0x8b9e, 0x8b9f, + 0x8ba0, 0x8ba1, 0x8ba2, 0x8ba3, 0x8ba4, 0x8ba5, 0x8ba6, 0x8ba7, + 0x8ba8, 0x8ba9, 0x8baa, 0x8bab, 0x8bac, 0x8bad, 0x8bae, 0x8baf, + 0x8bb0, 0x8bb1, 0x8bb2, 0x8bb3, 0x8bb4, 0x8bb5, 0x8bb6, 0x8bb7, + 0x8bb8, 0x8bb9, 0x8bba, 0x8bbb, 0x8bbc, 0x8bbd, 0x8bbe, 0x8bbf, + 0x8bc0, 0x8bc1, 0x8bc2, 0x8bc3, 0x8bc4, 0x8bc5, 0x8bc6, 0x8bc7, + 0x8bc8, 0x8bc9, 0x8bca, 0x8bcb, 0x8bcc, 0x8bcd, 0x8bce, 0x8bcf, + 0x8bd0, 0x8bd1, 0x8bd2, 0x8bd3, 0x8bd4, 0x8bd5, 0x8bd6, 0x8bd7, + 0x8bd8, 0x8bd9, 0x8bda, 0x8bdb, 0x8bdc, 0x8bdd, 0x8bde, 0x8bdf, + 0x8be0, 0x8be1, 0x8be2, 0x8be3, 0x8be4, 0x8be5, 0x8be6, 0x8be7, + 0x8be8, 0x8be9, 0x8bea, 0x8beb, 0x8bec, 0x8bed, 0x8bee, 0x8bef, + 0x8bf0, 0x8bf1, 0x8bf2, 0x8bf3, 0x8bf4, 0x8bf5, 0x8bf6, 0x8bf7, + 0x8bf8, 0x8bf9, 0x8bfa, 0x8bfb, 0x8bfc, 0x8bfd, 0x8bfe, 0x8bff, + 0x8c00, 0x8c01, 0x8c02, 0x8c03, 0x8c04, 0x8c05, 0x8c06, 0x8c07, + 0x8c08, 0x8c09, 0x8c0a, 0x8c0b, 0x8c0c, 0x8c0d, 0x8c0e, 0x8c0f, + 0x8c10, 0x8c11, 0x8c12, 0x8c13, 0x8c14, 0x8c15, 0x8c16, 0x8c17, + 0x8c18, 0x8c19, 0x8c1a, 0x8c1b, 0x8c1c, 0x8c1d, 0x8c1e, 0x8c1f, + 0x8c20, 0x8c21, 0x8c22, 0x8c23, 0x8c24, 0x8c25, 0x8c26, 0x8c27, + 0x8c28, 0x8c29, 0x8c2a, 0x8c2b, 0x8c2c, 0x8c2d, 0x8c2e, 0x8c2f, + 0x8c30, 0x8c31, 0x8c32, 0x8c33, 0x8c34, 0x8c35, 0x8c36, 0x8c37, + 0x8c38, 0x8c39, 0x8c3a, 0x8c3b, 0x8c3c, 0x8c3d, 0x8c3e, 0x8c3f, + 0x8c40, 0x8c41, 0x8c42, 0x8c43, 0x8c44, 0x8c45, 0x8c46, 0x8c47, + 0x8c48, 0x8c49, 0x8c4a, 0x8c4b, 0x8c4c, 0x8c4d, 0x8c4e, 0x8c4f, + 0x8c50, 0x8c51, 0x8c52, 0x8c53, 0x8c54, 0x8c55, 0x8c56, 0x8c57, + 0x8c58, 0x8c59, 0x8c5a, 0x8c5b, 0x8c5c, 0x8c5d, 0x8c5e, 0x8c5f, + 0x8c60, 0x8c61, 0x8c62, 0x8c63, 0x8c64, 0x8c65, 0x8c66, 0x8c67, + 0x8c68, 0x8c69, 0x8c6a, 0x8c6b, 0x8c6c, 0x8c6d, 0x8c6e, 0x8c6f, + 0x8c70, 0x8c71, 0x8c72, 0x8c73, 0x8c74, 0x8c75, 0x8c76, 0x8c77, + 0x8c78, 0x8c79, 0x8c7a, 0x8c7b, 0x8c7c, 0x8c7d, 0x8c7e, 0x8c7f, + 0x8c80, 0x8c81, 0x8c82, 0x8c83, 0x8c84, 0x8c85, 0x8c86, 0x8c87, + 0x8c88, 0x8c89, 0x8c8a, 0x8c8b, 0x8c8c, 0x8c8d, 0x8c8e, 0x8c8f, + 0x8c90, 0x8c91, 0x8c92, 0x8c93, 0x8c94, 0x8c95, 0x8c96, 0x8c97, + 0x8c98, 0x8c99, 0x8c9a, 0x8c9b, 0x8c9c, 0x8c9d, 0x8c9e, 0x8c9f, + 0x8ca0, 0x8ca1, 0x8ca2, 0x8ca3, 0x8ca4, 0x8ca5, 0x8ca6, 0x8ca7, + 0x8ca8, 0x8ca9, 0x8caa, 0x8cab, 0x8cac, 0x8cad, 0x8cae, 0x8caf, + 0x8cb0, 0x8cb1, 0x8cb2, 0x8cb3, 0x8cb4, 0x8cb5, 0x8cb6, 0x8cb7, + 0x8cb8, 0x8cb9, 0x8cba, 0x8cbb, 0x8cbc, 0x8cbd, 0x8cbe, 0x8cbf, + 0x8cc0, 0x8cc1, 0x8cc2, 0x8cc3, 0x8cc4, 0x8cc5, 0x8cc6, 0x8cc7, + 0x8cc8, 0x8cc9, 0x8cca, 0x8ccb, 0x8ccc, 0x8ccd, 0x8cce, 0x8ccf, + 0x8cd0, 0x8cd1, 0x8cd2, 0x8cd3, 0x8cd4, 0x8cd5, 0x8cd6, 0x8cd7, + 0x8cd8, 0x8cd9, 0x8cda, 0x8cdb, 0x8cdc, 0x8cdd, 0x8cde, 0x8cdf, + 0x8ce0, 0x8ce1, 0x8ce2, 0x8ce3, 0x8ce4, 0x8ce5, 0x8ce6, 0x8ce7, + 0x8ce8, 0x8ce9, 0x8cea, 0x8ceb, 0x8cec, 0x8ced, 0x8cee, 0x8cef, + 0x8cf0, 0x8cf1, 0x8cf2, 0x8cf3, 0x8cf4, 0x8cf5, 0x8cf6, 0x8cf7, + 0x8cf8, 0x8cf9, 0x8cfa, 0x8cfb, 0x8cfc, 0x8cfd, 0x8cfe, 0x8cff, + 0x8d00, 0x8d01, 0x8d02, 0x8d03, 0x8d04, 0x8d05, 0x8d06, 0x8d07, + 0x8d08, 0x8d09, 0x8d0a, 0x8d0b, 0x8d0c, 0x8d0d, 0x8d0e, 0x8d0f, + 0x8d10, 0x8d11, 0x8d12, 0x8d13, 0x8d14, 0x8d15, 0x8d16, 0x8d17, + 0x8d18, 0x8d19, 0x8d1a, 0x8d1b, 0x8d1c, 0x8d1d, 0x8d1e, 0x8d1f, + 0x8d20, 0x8d21, 0x8d22, 0x8d23, 0x8d24, 0x8d25, 0x8d26, 0x8d27, + 0x8d28, 0x8d29, 0x8d2a, 0x8d2b, 0x8d2c, 0x8d2d, 0x8d2e, 0x8d2f, + 0x8d30, 0x8d31, 0x8d32, 0x8d33, 0x8d34, 0x8d35, 0x8d36, 0x8d37, + 0x8d38, 0x8d39, 0x8d3a, 0x8d3b, 0x8d3c, 0x8d3d, 0x8d3e, 0x8d3f, + 0x8d40, 0x8d41, 0x8d42, 0x8d43, 0x8d44, 0x8d45, 0x8d46, 0x8d47, + 0x8d48, 0x8d49, 0x8d4a, 0x8d4b, 0x8d4c, 0x8d4d, 0x8d4e, 0x8d4f, + 0x8d50, 0x8d51, 0x8d52, 0x8d53, 0x8d54, 0x8d55, 0x8d56, 0x8d57, + 0x8d58, 0x8d59, 0x8d5a, 0x8d5b, 0x8d5c, 0x8d5d, 0x8d5e, 0x8d5f, + 0x8d60, 0x8d61, 0x8d62, 0x8d63, 0x8d64, 0x8d65, 0x8d66, 0x8d67, + 0x8d68, 0x8d69, 0x8d6a, 0x8d6b, 0x8d6c, 0x8d6d, 0x8d6e, 0x8d6f, + 0x8d70, 0x8d71, 0x8d72, 0x8d73, 0x8d74, 0x8d75, 0x8d76, 0x8d77, + 0x8d78, 0x8d79, 0x8d7a, 0x8d7b, 0x8d7c, 0x8d7d, 0x8d7e, 0x8d7f, + 0x8d80, 0x8d81, 0x8d82, 0x8d83, 0x8d84, 0x8d85, 0x8d86, 0x8d87, + 0x8d88, 0x8d89, 0x8d8a, 0x8d8b, 0x8d8c, 0x8d8d, 0x8d8e, 0x8d8f, + 0x8d90, 0x8d91, 0x8d92, 0x8d93, 0x8d94, 0x8d95, 0x8d96, 0x8d97, + 0x8d98, 0x8d99, 0x8d9a, 0x8d9b, 0x8d9c, 0x8d9d, 0x8d9e, 0x8d9f, + 0x8da0, 0x8da1, 0x8da2, 0x8da3, 0x8da4, 0x8da5, 0x8da6, 0x8da7, + 0x8da8, 0x8da9, 0x8daa, 0x8dab, 0x8dac, 0x8dad, 0x8dae, 0x8daf, + 0x8db0, 0x8db1, 0x8db2, 0x8db3, 0x8db4, 0x8db5, 0x8db6, 0x8db7, + 0x8db8, 0x8db9, 0x8dba, 0x8dbb, 0x8dbc, 0x8dbd, 0x8dbe, 0x8dbf, + 0x8dc0, 0x8dc1, 0x8dc2, 0x8dc3, 0x8dc4, 0x8dc5, 0x8dc6, 0x8dc7, + 0x8dc8, 0x8dc9, 0x8dca, 0x8dcb, 0x8dcc, 0x8dcd, 0x8dce, 0x8dcf, + 0x8dd0, 0x8dd1, 0x8dd2, 0x8dd3, 0x8dd4, 0x8dd5, 0x8dd6, 0x8dd7, + 0x8dd8, 0x8dd9, 0x8dda, 0x8ddb, 0x8ddc, 0x8ddd, 0x8dde, 0x8ddf, + 0x8de0, 0x8de1, 0x8de2, 0x8de3, 0x8de4, 0x8de5, 0x8de6, 0x8de7, + 0x8de8, 0x8de9, 0x8dea, 0x8deb, 0x8dec, 0x8ded, 0x8dee, 0x8def, + 0x8df0, 0x8df1, 0x8df2, 0x8df3, 0x8df4, 0x8df5, 0x8df6, 0x8df7, + 0x8df8, 0x8df9, 0x8dfa, 0x8dfb, 0x8dfc, 0x8dfd, 0x8dfe, 0x8dff, + 0x8e00, 0x8e01, 0x8e02, 0x8e03, 0x8e04, 0x8e05, 0x8e06, 0x8e07, + 0x8e08, 0x8e09, 0x8e0a, 0x8e0b, 0x8e0c, 0x8e0d, 0x8e0e, 0x8e0f, + 0x8e10, 0x8e11, 0x8e12, 0x8e13, 0x8e14, 0x8e15, 0x8e16, 0x8e17, + 0x8e18, 0x8e19, 0x8e1a, 0x8e1b, 0x8e1c, 0x8e1d, 0x8e1e, 0x8e1f, + 0x8e20, 0x8e21, 0x8e22, 0x8e23, 0x8e24, 0x8e25, 0x8e26, 0x8e27, + 0x8e28, 0x8e29, 0x8e2a, 0x8e2b, 0x8e2c, 0x8e2d, 0x8e2e, 0x8e2f, + 0x8e30, 0x8e31, 0x8e32, 0x8e33, 0x8e34, 0x8e35, 0x8e36, 0x8e37, + 0x8e38, 0x8e39, 0x8e3a, 0x8e3b, 0x8e3c, 0x8e3d, 0x8e3e, 0x8e3f, + 0x8e40, 0x8e41, 0x8e42, 0x8e43, 0x8e44, 0x8e45, 0x8e46, 0x8e47, + 0x8e48, 0x8e49, 0x8e4a, 0x8e4b, 0x8e4c, 0x8e4d, 0x8e4e, 0x8e4f, + 0x8e50, 0x8e51, 0x8e52, 0x8e53, 0x8e54, 0x8e55, 0x8e56, 0x8e57, + 0x8e58, 0x8e59, 0x8e5a, 0x8e5b, 0x8e5c, 0x8e5d, 0x8e5e, 0x8e5f, + 0x8e60, 0x8e61, 0x8e62, 0x8e63, 0x8e64, 0x8e65, 0x8e66, 0x8e67, + 0x8e68, 0x8e69, 0x8e6a, 0x8e6b, 0x8e6c, 0x8e6d, 0x8e6e, 0x8e6f, + 0x8e70, 0x8e71, 0x8e72, 0x8e73, 0x8e74, 0x8e75, 0x8e76, 0x8e77, + 0x8e78, 0x8e79, 0x8e7a, 0x8e7b, 0x8e7c, 0x8e7d, 0x8e7e, 0x8e7f, + 0x8e80, 0x8e81, 0x8e82, 0x8e83, 0x8e84, 0x8e85, 0x8e86, 0x8e87, + 0x8e88, 0x8e89, 0x8e8a, 0x8e8b, 0x8e8c, 0x8e8d, 0x8e8e, 0x8e8f, + 0x8e90, 0x8e91, 0x8e92, 0x8e93, 0x8e94, 0x8e95, 0x8e96, 0x8e97, + 0x8e98, 0x8e99, 0x8e9a, 0x8e9b, 0x8e9c, 0x8e9d, 0x8e9e, 0x8e9f, + 0x8ea0, 0x8ea1, 0x8ea2, 0x8ea3, 0x8ea4, 0x8ea5, 0x8ea6, 0x8ea7, + 0x8ea8, 0x8ea9, 0x8eaa, 0x8eab, 0x8eac, 0x8ead, 0x8eae, 0x8eaf, + 0x8eb0, 0x8eb1, 0x8eb2, 0x8eb3, 0x8eb4, 0x8eb5, 0x8eb6, 0x8eb7, + 0x8eb8, 0x8eb9, 0x8eba, 0x8ebb, 0x8ebc, 0x8ebd, 0x8ebe, 0x8ebf, + 0x8ec0, 0x8ec1, 0x8ec2, 0x8ec3, 0x8ec4, 0x8ec5, 0x8ec6, 0x8ec7, + 0x8ec8, 0x8ec9, 0x8eca, 0x8ecb, 0x8ecc, 0x8ecd, 0x8ece, 0x8ecf, + 0x8ed0, 0x8ed1, 0x8ed2, 0x8ed3, 0x8ed4, 0x8ed5, 0x8ed6, 0x8ed7, + 0x8ed8, 0x8ed9, 0x8eda, 0x8edb, 0x8edc, 0x8edd, 0x8ede, 0x8edf, + 0x8ee0, 0x8ee1, 0x8ee2, 0x8ee3, 0x8ee4, 0x8ee5, 0x8ee6, 0x8ee7, + 0x8ee8, 0x8ee9, 0x8eea, 0x8eeb, 0x8eec, 0x8eed, 0x8eee, 0x8eef, + 0x8ef0, 0x8ef1, 0x8ef2, 0x8ef3, 0x8ef4, 0x8ef5, 0x8ef6, 0x8ef7, + 0x8ef8, 0x8ef9, 0x8efa, 0x8efb, 0x8efc, 0x8efd, 0x8efe, 0x8eff, + 0x8f00, 0x8f01, 0x8f02, 0x8f03, 0x8f04, 0x8f05, 0x8f06, 0x8f07, + 0x8f08, 0x8f09, 0x8f0a, 0x8f0b, 0x8f0c, 0x8f0d, 0x8f0e, 0x8f0f, + 0x8f10, 0x8f11, 0x8f12, 0x8f13, 0x8f14, 0x8f15, 0x8f16, 0x8f17, + 0x8f18, 0x8f19, 0x8f1a, 0x8f1b, 0x8f1c, 0x8f1d, 0x8f1e, 0x8f1f, + 0x8f20, 0x8f21, 0x8f22, 0x8f23, 0x8f24, 0x8f25, 0x8f26, 0x8f27, + 0x8f28, 0x8f29, 0x8f2a, 0x8f2b, 0x8f2c, 0x8f2d, 0x8f2e, 0x8f2f, + 0x8f30, 0x8f31, 0x8f32, 0x8f33, 0x8f34, 0x8f35, 0x8f36, 0x8f37, + 0x8f38, 0x8f39, 0x8f3a, 0x8f3b, 0x8f3c, 0x8f3d, 0x8f3e, 0x8f3f, + 0x8f40, 0x8f41, 0x8f42, 0x8f43, 0x8f44, 0x8f45, 0x8f46, 0x8f47, + 0x8f48, 0x8f49, 0x8f4a, 0x8f4b, 0x8f4c, 0x8f4d, 0x8f4e, 0x8f4f, + 0x8f50, 0x8f51, 0x8f52, 0x8f53, 0x8f54, 0x8f55, 0x8f56, 0x8f57, + 0x8f58, 0x8f59, 0x8f5a, 0x8f5b, 0x8f5c, 0x8f5d, 0x8f5e, 0x8f5f, + 0x8f60, 0x8f61, 0x8f62, 0x8f63, 0x8f64, 0x8f65, 0x8f66, 0x8f67, + 0x8f68, 0x8f69, 0x8f6a, 0x8f6b, 0x8f6c, 0x8f6d, 0x8f6e, 0x8f6f, + 0x8f70, 0x8f71, 0x8f72, 0x8f73, 0x8f74, 0x8f75, 0x8f76, 0x8f77, + 0x8f78, 0x8f79, 0x8f7a, 0x8f7b, 0x8f7c, 0x8f7d, 0x8f7e, 0x8f7f, + 0x8f80, 0x8f81, 0x8f82, 0x8f83, 0x8f84, 0x8f85, 0x8f86, 0x8f87, + 0x8f88, 0x8f89, 0x8f8a, 0x8f8b, 0x8f8c, 0x8f8d, 0x8f8e, 0x8f8f, + 0x8f90, 0x8f91, 0x8f92, 0x8f93, 0x8f94, 0x8f95, 0x8f96, 0x8f97, + 0x8f98, 0x8f99, 0x8f9a, 0x8f9b, 0x8f9c, 0x8f9d, 0x8f9e, 0x8f9f, + 0x8fa0, 0x8fa1, 0x8fa2, 0x8fa3, 0x8fa4, 0x8fa5, 0x8fa6, 0x8fa7, + 0x8fa8, 0x8fa9, 0x8faa, 0x8fab, 0x8fac, 0x8fad, 0x8fae, 0x8faf, + 0x8fb0, 0x8fb1, 0x8fb2, 0x8fb3, 0x8fb4, 0x8fb5, 0x8fb6, 0x8fb7, + 0x8fb8, 0x8fb9, 0x8fba, 0x8fbb, 0x8fbc, 0x8fbd, 0x8fbe, 0x8fbf, + 0x8fc0, 0x8fc1, 0x8fc2, 0x8fc3, 0x8fc4, 0x8fc5, 0x8fc6, 0x8fc7, + 0x8fc8, 0x8fc9, 0x8fca, 0x8fcb, 0x8fcc, 0x8fcd, 0x8fce, 0x8fcf, + 0x8fd0, 0x8fd1, 0x8fd2, 0x8fd3, 0x8fd4, 0x8fd5, 0x8fd6, 0x8fd7, + 0x8fd8, 0x8fd9, 0x8fda, 0x8fdb, 0x8fdc, 0x8fdd, 0x8fde, 0x8fdf, + 0x8fe0, 0x8fe1, 0x8fe2, 0x8fe3, 0x8fe4, 0x8fe5, 0x8fe6, 0x8fe7, + 0x8fe8, 0x8fe9, 0x8fea, 0x8feb, 0x8fec, 0x8fed, 0x8fee, 0x8fef, + 0x8ff0, 0x8ff1, 0x8ff2, 0x8ff3, 0x8ff4, 0x8ff5, 0x8ff6, 0x8ff7, + 0x8ff8, 0x8ff9, 0x8ffa, 0x8ffb, 0x8ffc, 0x8ffd, 0x8ffe, 0x8fff, + 0x9000, 0x9001, 0x9002, 0x9003, 0x9004, 0x9005, 0x9006, 0x9007, + 0x9008, 0x9009, 0x900a, 0x900b, 0x900c, 0x900d, 0x900e, 0x900f, + 0x9010, 0x9011, 0x9012, 0x9013, 0x9014, 0x9015, 0x9016, 0x9017, + 0x9018, 0x9019, 0x901a, 0x901b, 0x901c, 0x901d, 0x901e, 0x901f, + 0x9020, 0x9021, 0x9022, 0x9023, 0x9024, 0x9025, 0x9026, 0x9027, + 0x9028, 0x9029, 0x902a, 0x902b, 0x902c, 0x902d, 0x902e, 0x902f, + 0x9030, 0x9031, 0x9032, 0x9033, 0x9034, 0x9035, 0x9036, 0x9037, + 0x9038, 0x9039, 0x903a, 0x903b, 0x903c, 0x903d, 0x903e, 0x903f, + 0x9040, 0x9041, 0x9042, 0x9043, 0x9044, 0x9045, 0x9046, 0x9047, + 0x9048, 0x9049, 0x904a, 0x904b, 0x904c, 0x904d, 0x904e, 0x904f, + 0x9050, 0x9051, 0x9052, 0x9053, 0x9054, 0x9055, 0x9056, 0x9057, + 0x9058, 0x9059, 0x905a, 0x905b, 0x905c, 0x905d, 0x905e, 0x905f, + 0x9060, 0x9061, 0x9062, 0x9063, 0x9064, 0x9065, 0x9066, 0x9067, + 0x9068, 0x9069, 0x906a, 0x906b, 0x906c, 0x906d, 0x906e, 0x906f, + 0x9070, 0x9071, 0x9072, 0x9073, 0x9074, 0x9075, 0x9076, 0x9077, + 0x9078, 0x9079, 0x907a, 0x907b, 0x907c, 0x907d, 0x907e, 0x907f, + 0x9080, 0x9081, 0x9082, 0x9083, 0x9084, 0x9085, 0x9086, 0x9087, + 0x9088, 0x9089, 0x908a, 0x908b, 0x908c, 0x908d, 0x908e, 0x908f, + 0x9090, 0x9091, 0x9092, 0x9093, 0x9094, 0x9095, 0x9096, 0x9097, + 0x9098, 0x9099, 0x909a, 0x909b, 0x909c, 0x909d, 0x909e, 0x909f, + 0x90a0, 0x90a1, 0x90a2, 0x90a3, 0x90a4, 0x90a5, 0x90a6, 0x90a7, + 0x90a8, 0x90a9, 0x90aa, 0x90ab, 0x90ac, 0x90ad, 0x90ae, 0x90af, + 0x90b0, 0x90b1, 0x90b2, 0x90b3, 0x90b4, 0x90b5, 0x90b6, 0x90b7, + 0x90b8, 0x90b9, 0x90ba, 0x90bb, 0x90bc, 0x90bd, 0x90be, 0x90bf, + 0x90c0, 0x90c1, 0x90c2, 0x90c3, 0x90c4, 0x90c5, 0x90c6, 0x90c7, + 0x90c8, 0x90c9, 0x90ca, 0x90cb, 0x90cc, 0x90cd, 0x90ce, 0x90cf, + 0x90d0, 0x90d1, 0x90d2, 0x90d3, 0x90d4, 0x90d5, 0x90d6, 0x90d7, + 0x90d8, 0x90d9, 0x90da, 0x90db, 0x90dc, 0x90dd, 0x90de, 0x90df, + 0x90e0, 0x90e1, 0x90e2, 0x90e3, 0x90e4, 0x90e5, 0x90e6, 0x90e7, + 0x90e8, 0x90e9, 0x90ea, 0x90eb, 0x90ec, 0x90ed, 0x90ee, 0x90ef, + 0x90f0, 0x90f1, 0x90f2, 0x90f3, 0x90f4, 0x90f5, 0x90f6, 0x90f7, + 0x90f8, 0x90f9, 0x90fa, 0x90fb, 0x90fc, 0x90fd, 0x90fe, 0x90ff, + 0x9100, 0x9101, 0x9102, 0x9103, 0x9104, 0x9105, 0x9106, 0x9107, + 0x9108, 0x9109, 0x910a, 0x910b, 0x910c, 0x910d, 0x910e, 0x910f, + 0x9110, 0x9111, 0x9112, 0x9113, 0x9114, 0x9115, 0x9116, 0x9117, + 0x9118, 0x9119, 0x911a, 0x911b, 0x911c, 0x911d, 0x911e, 0x911f, + 0x9120, 0x9121, 0x9122, 0x9123, 0x9124, 0x9125, 0x9126, 0x9127, + 0x9128, 0x9129, 0x912a, 0x912b, 0x912c, 0x912d, 0x912e, 0x912f, + 0x9130, 0x9131, 0x9132, 0x9133, 0x9134, 0x9135, 0x9136, 0x9137, + 0x9138, 0x9139, 0x913a, 0x913b, 0x913c, 0x913d, 0x913e, 0x913f, + 0x9140, 0x9141, 0x9142, 0x9143, 0x9144, 0x9145, 0x9146, 0x9147, + 0x9148, 0x9149, 0x914a, 0x914b, 0x914c, 0x914d, 0x914e, 0x914f, + 0x9150, 0x9151, 0x9152, 0x9153, 0x9154, 0x9155, 0x9156, 0x9157, + 0x9158, 0x9159, 0x915a, 0x915b, 0x915c, 0x915d, 0x915e, 0x915f, + 0x9160, 0x9161, 0x9162, 0x9163, 0x9164, 0x9165, 0x9166, 0x9167, + 0x9168, 0x9169, 0x916a, 0x916b, 0x916c, 0x916d, 0x916e, 0x916f, + 0x9170, 0x9171, 0x9172, 0x9173, 0x9174, 0x9175, 0x9176, 0x9177, + 0x9178, 0x9179, 0x917a, 0x917b, 0x917c, 0x917d, 0x917e, 0x917f, + 0x9180, 0x9181, 0x9182, 0x9183, 0x9184, 0x9185, 0x9186, 0x9187, + 0x9188, 0x9189, 0x918a, 0x918b, 0x918c, 0x918d, 0x918e, 0x918f, + 0x9190, 0x9191, 0x9192, 0x9193, 0x9194, 0x9195, 0x9196, 0x9197, + 0x9198, 0x9199, 0x919a, 0x919b, 0x919c, 0x919d, 0x919e, 0x919f, + 0x91a0, 0x91a1, 0x91a2, 0x91a3, 0x91a4, 0x91a5, 0x91a6, 0x91a7, + 0x91a8, 0x91a9, 0x91aa, 0x91ab, 0x91ac, 0x91ad, 0x91ae, 0x91af, + 0x91b0, 0x91b1, 0x91b2, 0x91b3, 0x91b4, 0x91b5, 0x91b6, 0x91b7, + 0x91b8, 0x91b9, 0x91ba, 0x91bb, 0x91bc, 0x91bd, 0x91be, 0x91bf, + 0x91c0, 0x91c1, 0x91c2, 0x91c3, 0x91c4, 0x91c5, 0x91c6, 0x91c7, + 0x91c8, 0x91c9, 0x91ca, 0x91cb, 0x91cc, 0x91cd, 0x91ce, 0x91cf, + 0x91d0, 0x91d1, 0x91d2, 0x91d3, 0x91d4, 0x91d5, 0x91d6, 0x91d7, + 0x91d8, 0x91d9, 0x91da, 0x91db, 0x91dc, 0x91dd, 0x91de, 0x91df, + 0x91e0, 0x91e1, 0x91e2, 0x91e3, 0x91e4, 0x91e5, 0x91e6, 0x91e7, + 0x91e8, 0x91e9, 0x91ea, 0x91eb, 0x91ec, 0x91ed, 0x91ee, 0x91ef, + 0x91f0, 0x91f1, 0x91f2, 0x91f3, 0x91f4, 0x91f5, 0x91f6, 0x91f7, + 0x91f8, 0x91f9, 0x91fa, 0x91fb, 0x91fc, 0x91fd, 0x91fe, 0x91ff, + 0x9200, 0x9201, 0x9202, 0x9203, 0x9204, 0x9205, 0x9206, 0x9207, + 0x9208, 0x9209, 0x920a, 0x920b, 0x920c, 0x920d, 0x920e, 0x920f, + 0x9210, 0x9211, 0x9212, 0x9213, 0x9214, 0x9215, 0x9216, 0x9217, + 0x9218, 0x9219, 0x921a, 0x921b, 0x921c, 0x921d, 0x921e, 0x921f, + 0x9220, 0x9221, 0x9222, 0x9223, 0x9224, 0x9225, 0x9226, 0x9227, + 0x9228, 0x9229, 0x922a, 0x922b, 0x922c, 0x922d, 0x922e, 0x922f, + 0x9230, 0x9231, 0x9232, 0x9233, 0x9234, 0x9235, 0x9236, 0x9237, + 0x9238, 0x9239, 0x923a, 0x923b, 0x923c, 0x923d, 0x923e, 0x923f, + 0x9240, 0x9241, 0x9242, 0x9243, 0x9244, 0x9245, 0x9246, 0x9247, + 0x9248, 0x9249, 0x924a, 0x924b, 0x924c, 0x924d, 0x924e, 0x924f, + 0x9250, 0x9251, 0x9252, 0x9253, 0x9254, 0x9255, 0x9256, 0x9257, + 0x9258, 0x9259, 0x925a, 0x925b, 0x925c, 0x925d, 0x925e, 0x925f, + 0x9260, 0x9261, 0x9262, 0x9263, 0x9264, 0x9265, 0x9266, 0x9267, + 0x9268, 0x9269, 0x926a, 0x926b, 0x926c, 0x926d, 0x926e, 0x926f, + 0x9270, 0x9271, 0x9272, 0x9273, 0x9274, 0x9275, 0x9276, 0x9277, + 0x9278, 0x9279, 0x927a, 0x927b, 0x927c, 0x927d, 0x927e, 0x927f, + 0x9280, 0x9281, 0x9282, 0x9283, 0x9284, 0x9285, 0x9286, 0x9287, + 0x9288, 0x9289, 0x928a, 0x928b, 0x928c, 0x928d, 0x928e, 0x928f, + 0x9290, 0x9291, 0x9292, 0x9293, 0x9294, 0x9295, 0x9296, 0x9297, + 0x9298, 0x9299, 0x929a, 0x929b, 0x929c, 0x929d, 0x929e, 0x929f, + 0x92a0, 0x92a1, 0x92a2, 0x92a3, 0x92a4, 0x92a5, 0x92a6, 0x92a7, + 0x92a8, 0x92a9, 0x92aa, 0x92ab, 0x92ac, 0x92ad, 0x92ae, 0x92af, + 0x92b0, 0x92b1, 0x92b2, 0x92b3, 0x92b4, 0x92b5, 0x92b6, 0x92b7, + 0x92b8, 0x92b9, 0x92ba, 0x92bb, 0x92bc, 0x92bd, 0x92be, 0x92bf, + 0x92c0, 0x92c1, 0x92c2, 0x92c3, 0x92c4, 0x92c5, 0x92c6, 0x92c7, + 0x92c8, 0x92c9, 0x92ca, 0x92cb, 0x92cc, 0x92cd, 0x92ce, 0x92cf, + 0x92d0, 0x92d1, 0x92d2, 0x92d3, 0x92d4, 0x92d5, 0x92d6, 0x92d7, + 0x92d8, 0x92d9, 0x92da, 0x92db, 0x92dc, 0x92dd, 0x92de, 0x92df, + 0x92e0, 0x92e1, 0x92e2, 0x92e3, 0x92e4, 0x92e5, 0x92e6, 0x92e7, + 0x92e8, 0x92e9, 0x92ea, 0x92eb, 0x92ec, 0x92ed, 0x92ee, 0x92ef, + 0x92f0, 0x92f1, 0x92f2, 0x92f3, 0x92f4, 0x92f5, 0x92f6, 0x92f7, + 0x92f8, 0x92f9, 0x92fa, 0x92fb, 0x92fc, 0x92fd, 0x92fe, 0x92ff, + 0x9300, 0x9301, 0x9302, 0x9303, 0x9304, 0x9305, 0x9306, 0x9307, + 0x9308, 0x9309, 0x930a, 0x930b, 0x930c, 0x930d, 0x930e, 0x930f, + 0x9310, 0x9311, 0x9312, 0x9313, 0x9314, 0x9315, 0x9316, 0x9317, + 0x9318, 0x9319, 0x931a, 0x931b, 0x931c, 0x931d, 0x931e, 0x931f, + 0x9320, 0x9321, 0x9322, 0x9323, 0x9324, 0x9325, 0x9326, 0x9327, + 0x9328, 0x9329, 0x932a, 0x932b, 0x932c, 0x932d, 0x932e, 0x932f, + 0x9330, 0x9331, 0x9332, 0x9333, 0x9334, 0x9335, 0x9336, 0x9337, + 0x9338, 0x9339, 0x933a, 0x933b, 0x933c, 0x933d, 0x933e, 0x933f, + 0x9340, 0x9341, 0x9342, 0x9343, 0x9344, 0x9345, 0x9346, 0x9347, + 0x9348, 0x9349, 0x934a, 0x934b, 0x934c, 0x934d, 0x934e, 0x934f, + 0x9350, 0x9351, 0x9352, 0x9353, 0x9354, 0x9355, 0x9356, 0x9357, + 0x9358, 0x9359, 0x935a, 0x935b, 0x935c, 0x935d, 0x935e, 0x935f, + 0x9360, 0x9361, 0x9362, 0x9363, 0x9364, 0x9365, 0x9366, 0x9367, + 0x9368, 0x9369, 0x936a, 0x936b, 0x936c, 0x936d, 0x936e, 0x936f, + 0x9370, 0x9371, 0x9372, 0x9373, 0x9374, 0x9375, 0x9376, 0x9377, + 0x9378, 0x9379, 0x937a, 0x937b, 0x937c, 0x937d, 0x937e, 0x937f, + 0x9380, 0x9381, 0x9382, 0x9383, 0x9384, 0x9385, 0x9386, 0x9387, + 0x9388, 0x9389, 0x938a, 0x938b, 0x938c, 0x938d, 0x938e, 0x938f, + 0x9390, 0x9391, 0x9392, 0x9393, 0x9394, 0x9395, 0x9396, 0x9397, + 0x9398, 0x9399, 0x939a, 0x939b, 0x939c, 0x939d, 0x939e, 0x939f, + 0x93a0, 0x93a1, 0x93a2, 0x93a3, 0x93a4, 0x93a5, 0x93a6, 0x93a7, + 0x93a8, 0x93a9, 0x93aa, 0x93ab, 0x93ac, 0x93ad, 0x93ae, 0x93af, + 0x93b0, 0x93b1, 0x93b2, 0x93b3, 0x93b4, 0x93b5, 0x93b6, 0x93b7, + 0x93b8, 0x93b9, 0x93ba, 0x93bb, 0x93bc, 0x93bd, 0x93be, 0x93bf, + 0x93c0, 0x93c1, 0x93c2, 0x93c3, 0x93c4, 0x93c5, 0x93c6, 0x93c7, + 0x93c8, 0x93c9, 0x93ca, 0x93cb, 0x93cc, 0x93cd, 0x93ce, 0x93cf, + 0x93d0, 0x93d1, 0x93d2, 0x93d3, 0x93d4, 0x93d5, 0x93d6, 0x93d7, + 0x93d8, 0x93d9, 0x93da, 0x93db, 0x93dc, 0x93dd, 0x93de, 0x93df, + 0x93e0, 0x93e1, 0x93e2, 0x93e3, 0x93e4, 0x93e5, 0x93e6, 0x93e7, + 0x93e8, 0x93e9, 0x93ea, 0x93eb, 0x93ec, 0x93ed, 0x93ee, 0x93ef, + 0x93f0, 0x93f1, 0x93f2, 0x93f3, 0x93f4, 0x93f5, 0x93f6, 0x93f7, + 0x93f8, 0x93f9, 0x93fa, 0x93fb, 0x93fc, 0x93fd, 0x93fe, 0x93ff, + 0x9400, 0x9401, 0x9402, 0x9403, 0x9404, 0x9405, 0x9406, 0x9407, + 0x9408, 0x9409, 0x940a, 0x940b, 0x940c, 0x940d, 0x940e, 0x940f, + 0x9410, 0x9411, 0x9412, 0x9413, 0x9414, 0x9415, 0x9416, 0x9417, + 0x9418, 0x9419, 0x941a, 0x941b, 0x941c, 0x941d, 0x941e, 0x941f, + 0x9420, 0x9421, 0x9422, 0x9423, 0x9424, 0x9425, 0x9426, 0x9427, + 0x9428, 0x9429, 0x942a, 0x942b, 0x942c, 0x942d, 0x942e, 0x942f, + 0x9430, 0x9431, 0x9432, 0x9433, 0x9434, 0x9435, 0x9436, 0x9437, + 0x9438, 0x9439, 0x943a, 0x943b, 0x943c, 0x943d, 0x943e, 0x943f, + 0x9440, 0x9441, 0x9442, 0x9443, 0x9444, 0x9445, 0x9446, 0x9447, + 0x9448, 0x9449, 0x944a, 0x944b, 0x944c, 0x944d, 0x944e, 0x944f, + 0x9450, 0x9451, 0x9452, 0x9453, 0x9454, 0x9455, 0x9456, 0x9457, + 0x9458, 0x9459, 0x945a, 0x945b, 0x945c, 0x945d, 0x945e, 0x945f, + 0x9460, 0x9461, 0x9462, 0x9463, 0x9464, 0x9465, 0x9466, 0x9467, + 0x9468, 0x9469, 0x946a, 0x946b, 0x946c, 0x946d, 0x946e, 0x946f, + 0x9470, 0x9471, 0x9472, 0x9473, 0x9474, 0x9475, 0x9476, 0x9477, + 0x9478, 0x9479, 0x947a, 0x947b, 0x947c, 0x947d, 0x947e, 0x947f, + 0x9480, 0x9481, 0x9482, 0x9483, 0x9484, 0x9485, 0x9486, 0x9487, + 0x9488, 0x9489, 0x948a, 0x948b, 0x948c, 0x948d, 0x948e, 0x948f, + 0x9490, 0x9491, 0x9492, 0x9493, 0x9494, 0x9495, 0x9496, 0x9497, + 0x9498, 0x9499, 0x949a, 0x949b, 0x949c, 0x949d, 0x949e, 0x949f, + 0x94a0, 0x94a1, 0x94a2, 0x94a3, 0x94a4, 0x94a5, 0x94a6, 0x94a7, + 0x94a8, 0x94a9, 0x94aa, 0x94ab, 0x94ac, 0x94ad, 0x94ae, 0x94af, + 0x94b0, 0x94b1, 0x94b2, 0x94b3, 0x94b4, 0x94b5, 0x94b6, 0x94b7, + 0x94b8, 0x94b9, 0x94ba, 0x94bb, 0x94bc, 0x94bd, 0x94be, 0x94bf, + 0x94c0, 0x94c1, 0x94c2, 0x94c3, 0x94c4, 0x94c5, 0x94c6, 0x94c7, + 0x94c8, 0x94c9, 0x94ca, 0x94cb, 0x94cc, 0x94cd, 0x94ce, 0x94cf, + 0x94d0, 0x94d1, 0x94d2, 0x94d3, 0x94d4, 0x94d5, 0x94d6, 0x94d7, + 0x94d8, 0x94d9, 0x94da, 0x94db, 0x94dc, 0x94dd, 0x94de, 0x94df, + 0x94e0, 0x94e1, 0x94e2, 0x94e3, 0x94e4, 0x94e5, 0x94e6, 0x94e7, + 0x94e8, 0x94e9, 0x94ea, 0x94eb, 0x94ec, 0x94ed, 0x94ee, 0x94ef, + 0x94f0, 0x94f1, 0x94f2, 0x94f3, 0x94f4, 0x94f5, 0x94f6, 0x94f7, + 0x94f8, 0x94f9, 0x94fa, 0x94fb, 0x94fc, 0x94fd, 0x94fe, 0x94ff, + 0x9500, 0x9501, 0x9502, 0x9503, 0x9504, 0x9505, 0x9506, 0x9507, + 0x9508, 0x9509, 0x950a, 0x950b, 0x950c, 0x950d, 0x950e, 0x950f, + 0x9510, 0x9511, 0x9512, 0x9513, 0x9514, 0x9515, 0x9516, 0x9517, + 0x9518, 0x9519, 0x951a, 0x951b, 0x951c, 0x951d, 0x951e, 0x951f, + 0x9520, 0x9521, 0x9522, 0x9523, 0x9524, 0x9525, 0x9526, 0x9527, + 0x9528, 0x9529, 0x952a, 0x952b, 0x952c, 0x952d, 0x952e, 0x952f, + 0x9530, 0x9531, 0x9532, 0x9533, 0x9534, 0x9535, 0x9536, 0x9537, + 0x9538, 0x9539, 0x953a, 0x953b, 0x953c, 0x953d, 0x953e, 0x953f, + 0x9540, 0x9541, 0x9542, 0x9543, 0x9544, 0x9545, 0x9546, 0x9547, + 0x9548, 0x9549, 0x954a, 0x954b, 0x954c, 0x954d, 0x954e, 0x954f, + 0x9550, 0x9551, 0x9552, 0x9553, 0x9554, 0x9555, 0x9556, 0x9557, + 0x9558, 0x9559, 0x955a, 0x955b, 0x955c, 0x955d, 0x955e, 0x955f, + 0x9560, 0x9561, 0x9562, 0x9563, 0x9564, 0x9565, 0x9566, 0x9567, + 0x9568, 0x9569, 0x956a, 0x956b, 0x956c, 0x956d, 0x956e, 0x956f, + 0x9570, 0x9571, 0x9572, 0x9573, 0x9574, 0x9575, 0x9576, 0x9577, + 0x9578, 0x9579, 0x957a, 0x957b, 0x957c, 0x957d, 0x957e, 0x957f, + 0x9580, 0x9581, 0x9582, 0x9583, 0x9584, 0x9585, 0x9586, 0x9587, + 0x9588, 0x9589, 0x958a, 0x958b, 0x958c, 0x958d, 0x958e, 0x958f, + 0x9590, 0x9591, 0x9592, 0x9593, 0x9594, 0x9595, 0x9596, 0x9597, + 0x9598, 0x9599, 0x959a, 0x959b, 0x959c, 0x959d, 0x959e, 0x959f, + 0x95a0, 0x95a1, 0x95a2, 0x95a3, 0x95a4, 0x95a5, 0x95a6, 0x95a7, + 0x95a8, 0x95a9, 0x95aa, 0x95ab, 0x95ac, 0x95ad, 0x95ae, 0x95af, + 0x95b0, 0x95b1, 0x95b2, 0x95b3, 0x95b4, 0x95b5, 0x95b6, 0x95b7, + 0x95b8, 0x95b9, 0x95ba, 0x95bb, 0x95bc, 0x95bd, 0x95be, 0x95bf, + 0x95c0, 0x95c1, 0x95c2, 0x95c3, 0x95c4, 0x95c5, 0x95c6, 0x95c7, + 0x95c8, 0x95c9, 0x95ca, 0x95cb, 0x95cc, 0x95cd, 0x95ce, 0x95cf, + 0x95d0, 0x95d1, 0x95d2, 0x95d3, 0x95d4, 0x95d5, 0x95d6, 0x95d7, + 0x95d8, 0x95d9, 0x95da, 0x95db, 0x95dc, 0x95dd, 0x95de, 0x95df, + 0x95e0, 0x95e1, 0x95e2, 0x95e3, 0x95e4, 0x95e5, 0x95e6, 0x95e7, + 0x95e8, 0x95e9, 0x95ea, 0x95eb, 0x95ec, 0x95ed, 0x95ee, 0x95ef, + 0x95f0, 0x95f1, 0x95f2, 0x95f3, 0x95f4, 0x95f5, 0x95f6, 0x95f7, + 0x95f8, 0x95f9, 0x95fa, 0x95fb, 0x95fc, 0x95fd, 0x95fe, 0x95ff, + 0x9600, 0x9601, 0x9602, 0x9603, 0x9604, 0x9605, 0x9606, 0x9607, + 0x9608, 0x9609, 0x960a, 0x960b, 0x960c, 0x960d, 0x960e, 0x960f, + 0x9610, 0x9611, 0x9612, 0x9613, 0x9614, 0x9615, 0x9616, 0x9617, + 0x9618, 0x9619, 0x961a, 0x961b, 0x961c, 0x961d, 0x961e, 0x961f, + 0x9620, 0x9621, 0x9622, 0x9623, 0x9624, 0x9625, 0x9626, 0x9627, + 0x9628, 0x9629, 0x962a, 0x962b, 0x962c, 0x962d, 0x962e, 0x962f, + 0x9630, 0x9631, 0x9632, 0x9633, 0x9634, 0x9635, 0x9636, 0x9637, + 0x9638, 0x9639, 0x963a, 0x963b, 0x963c, 0x963d, 0x963e, 0x963f, + 0x9640, 0x9641, 0x9642, 0x9643, 0x9644, 0x9645, 0x9646, 0x9647, + 0x9648, 0x9649, 0x964a, 0x964b, 0x964c, 0x964d, 0x964e, 0x964f, + 0x9650, 0x9651, 0x9652, 0x9653, 0x9654, 0x9655, 0x9656, 0x9657, + 0x9658, 0x9659, 0x965a, 0x965b, 0x965c, 0x965d, 0x965e, 0x965f, + 0x9660, 0x9661, 0x9662, 0x9663, 0x9664, 0x9665, 0x9666, 0x9667, + 0x9668, 0x9669, 0x966a, 0x966b, 0x966c, 0x966d, 0x966e, 0x966f, + 0x9670, 0x9671, 0x9672, 0x9673, 0x9674, 0x9675, 0x9676, 0x9677, + 0x9678, 0x9679, 0x967a, 0x967b, 0x967c, 0x967d, 0x967e, 0x967f, + 0x9680, 0x9681, 0x9682, 0x9683, 0x9684, 0x9685, 0x9686, 0x9687, + 0x9688, 0x9689, 0x968a, 0x968b, 0x968c, 0x968d, 0x968e, 0x968f, + 0x9690, 0x9691, 0x9692, 0x9693, 0x9694, 0x9695, 0x9696, 0x9697, + 0x9698, 0x9699, 0x969a, 0x969b, 0x969c, 0x969d, 0x969e, 0x969f, + 0x96a0, 0x96a1, 0x96a2, 0x96a3, 0x96a4, 0x96a5, 0x96a6, 0x96a7, + 0x96a8, 0x96a9, 0x96aa, 0x96ab, 0x96ac, 0x96ad, 0x96ae, 0x96af, + 0x96b0, 0x96b1, 0x96b2, 0x96b3, 0x96b4, 0x96b5, 0x96b6, 0x96b7, + 0x96b8, 0x96b9, 0x96ba, 0x96bb, 0x96bc, 0x96bd, 0x96be, 0x96bf, + 0x96c0, 0x96c1, 0x96c2, 0x96c3, 0x96c4, 0x96c5, 0x96c6, 0x96c7, + 0x96c8, 0x96c9, 0x96ca, 0x96cb, 0x96cc, 0x96cd, 0x96ce, 0x96cf, + 0x96d0, 0x96d1, 0x96d2, 0x96d3, 0x96d4, 0x96d5, 0x96d6, 0x96d7, + 0x96d8, 0x96d9, 0x96da, 0x96db, 0x96dc, 0x96dd, 0x96de, 0x96df, + 0x96e0, 0x96e1, 0x96e2, 0x96e3, 0x96e4, 0x96e5, 0x96e6, 0x96e7, + 0x96e8, 0x96e9, 0x96ea, 0x96eb, 0x96ec, 0x96ed, 0x96ee, 0x96ef, + 0x96f0, 0x96f1, 0x96f2, 0x96f3, 0x96f4, 0x96f5, 0x96f6, 0x96f7, + 0x96f8, 0x96f9, 0x96fa, 0x96fb, 0x96fc, 0x96fd, 0x96fe, 0x96ff, + 0x9700, 0x9701, 0x9702, 0x9703, 0x9704, 0x9705, 0x9706, 0x9707, + 0x9708, 0x9709, 0x970a, 0x970b, 0x970c, 0x970d, 0x970e, 0x970f, + 0x9710, 0x9711, 0x9712, 0x9713, 0x9714, 0x9715, 0x9716, 0x9717, + 0x9718, 0x9719, 0x971a, 0x971b, 0x971c, 0x971d, 0x971e, 0x971f, + 0x9720, 0x9721, 0x9722, 0x9723, 0x9724, 0x9725, 0x9726, 0x9727, + 0x9728, 0x9729, 0x972a, 0x972b, 0x972c, 0x972d, 0x972e, 0x972f, + 0x9730, 0x9731, 0x9732, 0x9733, 0x9734, 0x9735, 0x9736, 0x9737, + 0x9738, 0x9739, 0x973a, 0x973b, 0x973c, 0x973d, 0x973e, 0x973f, + 0x9740, 0x9741, 0x9742, 0x9743, 0x9744, 0x9745, 0x9746, 0x9747, + 0x9748, 0x9749, 0x974a, 0x974b, 0x974c, 0x974d, 0x974e, 0x974f, + 0x9750, 0x9751, 0x9752, 0x9753, 0x9754, 0x9755, 0x9756, 0x9757, + 0x9758, 0x9759, 0x975a, 0x975b, 0x975c, 0x975d, 0x975e, 0x975f, + 0x9760, 0x9761, 0x9762, 0x9763, 0x9764, 0x9765, 0x9766, 0x9767, + 0x9768, 0x9769, 0x976a, 0x976b, 0x976c, 0x976d, 0x976e, 0x976f, + 0x9770, 0x9771, 0x9772, 0x9773, 0x9774, 0x9775, 0x9776, 0x9777, + 0x9778, 0x9779, 0x977a, 0x977b, 0x977c, 0x977d, 0x977e, 0x977f, + 0x9780, 0x9781, 0x9782, 0x9783, 0x9784, 0x9785, 0x9786, 0x9787, + 0x9788, 0x9789, 0x978a, 0x978b, 0x978c, 0x978d, 0x978e, 0x978f, + 0x9790, 0x9791, 0x9792, 0x9793, 0x9794, 0x9795, 0x9796, 0x9797, + 0x9798, 0x9799, 0x979a, 0x979b, 0x979c, 0x979d, 0x979e, 0x979f, + 0x97a0, 0x97a1, 0x97a2, 0x97a3, 0x97a4, 0x97a5, 0x97a6, 0x97a7, + 0x97a8, 0x97a9, 0x97aa, 0x97ab, 0x97ac, 0x97ad, 0x97ae, 0x97af, + 0x97b0, 0x97b1, 0x97b2, 0x97b3, 0x97b4, 0x97b5, 0x97b6, 0x97b7, + 0x97b8, 0x97b9, 0x97ba, 0x97bb, 0x97bc, 0x97bd, 0x97be, 0x97bf, + 0x97c0, 0x97c1, 0x97c2, 0x97c3, 0x97c4, 0x97c5, 0x97c6, 0x97c7, + 0x97c8, 0x97c9, 0x97ca, 0x97cb, 0x97cc, 0x97cd, 0x97ce, 0x97cf, + 0x97d0, 0x97d1, 0x97d2, 0x97d3, 0x97d4, 0x97d5, 0x97d6, 0x97d7, + 0x97d8, 0x97d9, 0x97da, 0x97db, 0x97dc, 0x97dd, 0x97de, 0x97df, + 0x97e0, 0x97e1, 0x97e2, 0x97e3, 0x97e4, 0x97e5, 0x97e6, 0x97e7, + 0x97e8, 0x97e9, 0x97ea, 0x97eb, 0x97ec, 0x97ed, 0x97ee, 0x97ef, + 0x97f0, 0x97f1, 0x97f2, 0x97f3, 0x97f4, 0x97f5, 0x97f6, 0x97f7, + 0x97f8, 0x97f9, 0x97fa, 0x97fb, 0x97fc, 0x97fd, 0x97fe, 0x97ff, + 0x9800, 0x9801, 0x9802, 0x9803, 0x9804, 0x9805, 0x9806, 0x9807, + 0x9808, 0x9809, 0x980a, 0x980b, 0x980c, 0x980d, 0x980e, 0x980f, + 0x9810, 0x9811, 0x9812, 0x9813, 0x9814, 0x9815, 0x9816, 0x9817, + 0x9818, 0x9819, 0x981a, 0x981b, 0x981c, 0x981d, 0x981e, 0x981f, + 0x9820, 0x9821, 0x9822, 0x9823, 0x9824, 0x9825, 0x9826, 0x9827, + 0x9828, 0x9829, 0x982a, 0x982b, 0x982c, 0x982d, 0x982e, 0x982f, + 0x9830, 0x9831, 0x9832, 0x9833, 0x9834, 0x9835, 0x9836, 0x9837, + 0x9838, 0x9839, 0x983a, 0x983b, 0x983c, 0x983d, 0x983e, 0x983f, + 0x9840, 0x9841, 0x9842, 0x9843, 0x9844, 0x9845, 0x9846, 0x9847, + 0x9848, 0x9849, 0x984a, 0x984b, 0x984c, 0x984d, 0x984e, 0x984f, + 0x9850, 0x9851, 0x9852, 0x9853, 0x9854, 0x9855, 0x9856, 0x9857, + 0x9858, 0x9859, 0x985a, 0x985b, 0x985c, 0x985d, 0x985e, 0x985f, + 0x9860, 0x9861, 0x9862, 0x9863, 0x9864, 0x9865, 0x9866, 0x9867, + 0x9868, 0x9869, 0x986a, 0x986b, 0x986c, 0x986d, 0x986e, 0x986f, + 0x9870, 0x9871, 0x9872, 0x9873, 0x9874, 0x9875, 0x9876, 0x9877, + 0x9878, 0x9879, 0x987a, 0x987b, 0x987c, 0x987d, 0x987e, 0x987f, + 0x9880, 0x9881, 0x9882, 0x9883, 0x9884, 0x9885, 0x9886, 0x9887, + 0x9888, 0x9889, 0x988a, 0x988b, 0x988c, 0x988d, 0x988e, 0x988f, + 0x9890, 0x9891, 0x9892, 0x9893, 0x9894, 0x9895, 0x9896, 0x9897, + 0x9898, 0x9899, 0x989a, 0x989b, 0x989c, 0x989d, 0x989e, 0x989f, + 0x98a0, 0x98a1, 0x98a2, 0x98a3, 0x98a4, 0x98a5, 0x98a6, 0x98a7, + 0x98a8, 0x98a9, 0x98aa, 0x98ab, 0x98ac, 0x98ad, 0x98ae, 0x98af, + 0x98b0, 0x98b1, 0x98b2, 0x98b3, 0x98b4, 0x98b5, 0x98b6, 0x98b7, + 0x98b8, 0x98b9, 0x98ba, 0x98bb, 0x98bc, 0x98bd, 0x98be, 0x98bf, + 0x98c0, 0x98c1, 0x98c2, 0x98c3, 0x98c4, 0x98c5, 0x98c6, 0x98c7, + 0x98c8, 0x98c9, 0x98ca, 0x98cb, 0x98cc, 0x98cd, 0x98ce, 0x98cf, + 0x98d0, 0x98d1, 0x98d2, 0x98d3, 0x98d4, 0x98d5, 0x98d6, 0x98d7, + 0x98d8, 0x98d9, 0x98da, 0x98db, 0x98dc, 0x98dd, 0x98de, 0x98df, + 0x98e0, 0x98e1, 0x98e2, 0x98e3, 0x98e4, 0x98e5, 0x98e6, 0x98e7, + 0x98e8, 0x98e9, 0x98ea, 0x98eb, 0x98ec, 0x98ed, 0x98ee, 0x98ef, + 0x98f0, 0x98f1, 0x98f2, 0x98f3, 0x98f4, 0x98f5, 0x98f6, 0x98f7, + 0x98f8, 0x98f9, 0x98fa, 0x98fb, 0x98fc, 0x98fd, 0x98fe, 0x98ff, + 0x9900, 0x9901, 0x9902, 0x9903, 0x9904, 0x9905, 0x9906, 0x9907, + 0x9908, 0x9909, 0x990a, 0x990b, 0x990c, 0x990d, 0x990e, 0x990f, + 0x9910, 0x9911, 0x9912, 0x9913, 0x9914, 0x9915, 0x9916, 0x9917, + 0x9918, 0x9919, 0x991a, 0x991b, 0x991c, 0x991d, 0x991e, 0x991f, + 0x9920, 0x9921, 0x9922, 0x9923, 0x9924, 0x9925, 0x9926, 0x9927, + 0x9928, 0x9929, 0x992a, 0x992b, 0x992c, 0x992d, 0x992e, 0x992f, + 0x9930, 0x9931, 0x9932, 0x9933, 0x9934, 0x9935, 0x9936, 0x9937, + 0x9938, 0x9939, 0x993a, 0x993b, 0x993c, 0x993d, 0x993e, 0x993f, + 0x9940, 0x9941, 0x9942, 0x9943, 0x9944, 0x9945, 0x9946, 0x9947, + 0x9948, 0x9949, 0x994a, 0x994b, 0x994c, 0x994d, 0x994e, 0x994f, + 0x9950, 0x9951, 0x9952, 0x9953, 0x9954, 0x9955, 0x9956, 0x9957, + 0x9958, 0x9959, 0x995a, 0x995b, 0x995c, 0x995d, 0x995e, 0x995f, + 0x9960, 0x9961, 0x9962, 0x9963, 0x9964, 0x9965, 0x9966, 0x9967, + 0x9968, 0x9969, 0x996a, 0x996b, 0x996c, 0x996d, 0x996e, 0x996f, + 0x9970, 0x9971, 0x9972, 0x9973, 0x9974, 0x9975, 0x9976, 0x9977, + 0x9978, 0x9979, 0x997a, 0x997b, 0x997c, 0x997d, 0x997e, 0x997f, + 0x9980, 0x9981, 0x9982, 0x9983, 0x9984, 0x9985, 0x9986, 0x9987, + 0x9988, 0x9989, 0x998a, 0x998b, 0x998c, 0x998d, 0x998e, 0x998f, + 0x9990, 0x9991, 0x9992, 0x9993, 0x9994, 0x9995, 0x9996, 0x9997, + 0x9998, 0x9999, 0x999a, 0x999b, 0x999c, 0x999d, 0x999e, 0x999f, + 0x99a0, 0x99a1, 0x99a2, 0x99a3, 0x99a4, 0x99a5, 0x99a6, 0x99a7, + 0x99a8, 0x99a9, 0x99aa, 0x99ab, 0x99ac, 0x99ad, 0x99ae, 0x99af, + 0x99b0, 0x99b1, 0x99b2, 0x99b3, 0x99b4, 0x99b5, 0x99b6, 0x99b7, + 0x99b8, 0x99b9, 0x99ba, 0x99bb, 0x99bc, 0x99bd, 0x99be, 0x99bf, + 0x99c0, 0x99c1, 0x99c2, 0x99c3, 0x99c4, 0x99c5, 0x99c6, 0x99c7, + 0x99c8, 0x99c9, 0x99ca, 0x99cb, 0x99cc, 0x99cd, 0x99ce, 0x99cf, + 0x99d0, 0x99d1, 0x99d2, 0x99d3, 0x99d4, 0x99d5, 0x99d6, 0x99d7, + 0x99d8, 0x99d9, 0x99da, 0x99db, 0x99dc, 0x99dd, 0x99de, 0x99df, + 0x99e0, 0x99e1, 0x99e2, 0x99e3, 0x99e4, 0x99e5, 0x99e6, 0x99e7, + 0x99e8, 0x99e9, 0x99ea, 0x99eb, 0x99ec, 0x99ed, 0x99ee, 0x99ef, + 0x99f0, 0x99f1, 0x99f2, 0x99f3, 0x99f4, 0x99f5, 0x99f6, 0x99f7, + 0x99f8, 0x99f9, 0x99fa, 0x99fb, 0x99fc, 0x99fd, 0x99fe, 0x99ff, + 0x9a00, 0x9a01, 0x9a02, 0x9a03, 0x9a04, 0x9a05, 0x9a06, 0x9a07, + 0x9a08, 0x9a09, 0x9a0a, 0x9a0b, 0x9a0c, 0x9a0d, 0x9a0e, 0x9a0f, + 0x9a10, 0x9a11, 0x9a12, 0x9a13, 0x9a14, 0x9a15, 0x9a16, 0x9a17, + 0x9a18, 0x9a19, 0x9a1a, 0x9a1b, 0x9a1c, 0x9a1d, 0x9a1e, 0x9a1f, + 0x9a20, 0x9a21, 0x9a22, 0x9a23, 0x9a24, 0x9a25, 0x9a26, 0x9a27, + 0x9a28, 0x9a29, 0x9a2a, 0x9a2b, 0x9a2c, 0x9a2d, 0x9a2e, 0x9a2f, + 0x9a30, 0x9a31, 0x9a32, 0x9a33, 0x9a34, 0x9a35, 0x9a36, 0x9a37, + 0x9a38, 0x9a39, 0x9a3a, 0x9a3b, 0x9a3c, 0x9a3d, 0x9a3e, 0x9a3f, + 0x9a40, 0x9a41, 0x9a42, 0x9a43, 0x9a44, 0x9a45, 0x9a46, 0x9a47, + 0x9a48, 0x9a49, 0x9a4a, 0x9a4b, 0x9a4c, 0x9a4d, 0x9a4e, 0x9a4f, + 0x9a50, 0x9a51, 0x9a52, 0x9a53, 0x9a54, 0x9a55, 0x9a56, 0x9a57, + 0x9a58, 0x9a59, 0x9a5a, 0x9a5b, 0x9a5c, 0x9a5d, 0x9a5e, 0x9a5f, + 0x9a60, 0x9a61, 0x9a62, 0x9a63, 0x9a64, 0x9a65, 0x9a66, 0x9a67, + 0x9a68, 0x9a69, 0x9a6a, 0x9a6b, 0x9a6c, 0x9a6d, 0x9a6e, 0x9a6f, + 0x9a70, 0x9a71, 0x9a72, 0x9a73, 0x9a74, 0x9a75, 0x9a76, 0x9a77, + 0x9a78, 0x9a79, 0x9a7a, 0x9a7b, 0x9a7c, 0x9a7d, 0x9a7e, 0x9a7f, + 0x9a80, 0x9a81, 0x9a82, 0x9a83, 0x9a84, 0x9a85, 0x9a86, 0x9a87, + 0x9a88, 0x9a89, 0x9a8a, 0x9a8b, 0x9a8c, 0x9a8d, 0x9a8e, 0x9a8f, + 0x9a90, 0x9a91, 0x9a92, 0x9a93, 0x9a94, 0x9a95, 0x9a96, 0x9a97, + 0x9a98, 0x9a99, 0x9a9a, 0x9a9b, 0x9a9c, 0x9a9d, 0x9a9e, 0x9a9f, + 0x9aa0, 0x9aa1, 0x9aa2, 0x9aa3, 0x9aa4, 0x9aa5, 0x9aa6, 0x9aa7, + 0x9aa8, 0x9aa9, 0x9aaa, 0x9aab, 0x9aac, 0x9aad, 0x9aae, 0x9aaf, + 0x9ab0, 0x9ab1, 0x9ab2, 0x9ab3, 0x9ab4, 0x9ab5, 0x9ab6, 0x9ab7, + 0x9ab8, 0x9ab9, 0x9aba, 0x9abb, 0x9abc, 0x9abd, 0x9abe, 0x9abf, + 0x9ac0, 0x9ac1, 0x9ac2, 0x9ac3, 0x9ac4, 0x9ac5, 0x9ac6, 0x9ac7, + 0x9ac8, 0x9ac9, 0x9aca, 0x9acb, 0x9acc, 0x9acd, 0x9ace, 0x9acf, + 0x9ad0, 0x9ad1, 0x9ad2, 0x9ad3, 0x9ad4, 0x9ad5, 0x9ad6, 0x9ad7, + 0x9ad8, 0x9ad9, 0x9ada, 0x9adb, 0x9adc, 0x9add, 0x9ade, 0x9adf, + 0x9ae0, 0x9ae1, 0x9ae2, 0x9ae3, 0x9ae4, 0x9ae5, 0x9ae6, 0x9ae7, + 0x9ae8, 0x9ae9, 0x9aea, 0x9aeb, 0x9aec, 0x9aed, 0x9aee, 0x9aef, + 0x9af0, 0x9af1, 0x9af2, 0x9af3, 0x9af4, 0x9af5, 0x9af6, 0x9af7, + 0x9af8, 0x9af9, 0x9afa, 0x9afb, 0x9afc, 0x9afd, 0x9afe, 0x9aff, + 0x9b00, 0x9b01, 0x9b02, 0x9b03, 0x9b04, 0x9b05, 0x9b06, 0x9b07, + 0x9b08, 0x9b09, 0x9b0a, 0x9b0b, 0x9b0c, 0x9b0d, 0x9b0e, 0x9b0f, + 0x9b10, 0x9b11, 0x9b12, 0x9b13, 0x9b14, 0x9b15, 0x9b16, 0x9b17, + 0x9b18, 0x9b19, 0x9b1a, 0x9b1b, 0x9b1c, 0x9b1d, 0x9b1e, 0x9b1f, + 0x9b20, 0x9b21, 0x9b22, 0x9b23, 0x9b24, 0x9b25, 0x9b26, 0x9b27, + 0x9b28, 0x9b29, 0x9b2a, 0x9b2b, 0x9b2c, 0x9b2d, 0x9b2e, 0x9b2f, + 0x9b30, 0x9b31, 0x9b32, 0x9b33, 0x9b34, 0x9b35, 0x9b36, 0x9b37, + 0x9b38, 0x9b39, 0x9b3a, 0x9b3b, 0x9b3c, 0x9b3d, 0x9b3e, 0x9b3f, + 0x9b40, 0x9b41, 0x9b42, 0x9b43, 0x9b44, 0x9b45, 0x9b46, 0x9b47, + 0x9b48, 0x9b49, 0x9b4a, 0x9b4b, 0x9b4c, 0x9b4d, 0x9b4e, 0x9b4f, + 0x9b50, 0x9b51, 0x9b52, 0x9b53, 0x9b54, 0x9b55, 0x9b56, 0x9b57, + 0x9b58, 0x9b59, 0x9b5a, 0x9b5b, 0x9b5c, 0x9b5d, 0x9b5e, 0x9b5f, + 0x9b60, 0x9b61, 0x9b62, 0x9b63, 0x9b64, 0x9b65, 0x9b66, 0x9b67, + 0x9b68, 0x9b69, 0x9b6a, 0x9b6b, 0x9b6c, 0x9b6d, 0x9b6e, 0x9b6f, + 0x9b70, 0x9b71, 0x9b72, 0x9b73, 0x9b74, 0x9b75, 0x9b76, 0x9b77, + 0x9b78, 0x9b79, 0x9b7a, 0x9b7b, 0x9b7c, 0x9b7d, 0x9b7e, 0x9b7f, + 0x9b80, 0x9b81, 0x9b82, 0x9b83, 0x9b84, 0x9b85, 0x9b86, 0x9b87, + 0x9b88, 0x9b89, 0x9b8a, 0x9b8b, 0x9b8c, 0x9b8d, 0x9b8e, 0x9b8f, + 0x9b90, 0x9b91, 0x9b92, 0x9b93, 0x9b94, 0x9b95, 0x9b96, 0x9b97, + 0x9b98, 0x9b99, 0x9b9a, 0x9b9b, 0x9b9c, 0x9b9d, 0x9b9e, 0x9b9f, + 0x9ba0, 0x9ba1, 0x9ba2, 0x9ba3, 0x9ba4, 0x9ba5, 0x9ba6, 0x9ba7, + 0x9ba8, 0x9ba9, 0x9baa, 0x9bab, 0x9bac, 0x9bad, 0x9bae, 0x9baf, + 0x9bb0, 0x9bb1, 0x9bb2, 0x9bb3, 0x9bb4, 0x9bb5, 0x9bb6, 0x9bb7, + 0x9bb8, 0x9bb9, 0x9bba, 0x9bbb, 0x9bbc, 0x9bbd, 0x9bbe, 0x9bbf, + 0x9bc0, 0x9bc1, 0x9bc2, 0x9bc3, 0x9bc4, 0x9bc5, 0x9bc6, 0x9bc7, + 0x9bc8, 0x9bc9, 0x9bca, 0x9bcb, 0x9bcc, 0x9bcd, 0x9bce, 0x9bcf, + 0x9bd0, 0x9bd1, 0x9bd2, 0x9bd3, 0x9bd4, 0x9bd5, 0x9bd6, 0x9bd7, + 0x9bd8, 0x9bd9, 0x9bda, 0x9bdb, 0x9bdc, 0x9bdd, 0x9bde, 0x9bdf, + 0x9be0, 0x9be1, 0x9be2, 0x9be3, 0x9be4, 0x9be5, 0x9be6, 0x9be7, + 0x9be8, 0x9be9, 0x9bea, 0x9beb, 0x9bec, 0x9bed, 0x9bee, 0x9bef, + 0x9bf0, 0x9bf1, 0x9bf2, 0x9bf3, 0x9bf4, 0x9bf5, 0x9bf6, 0x9bf7, + 0x9bf8, 0x9bf9, 0x9bfa, 0x9bfb, 0x9bfc, 0x9bfd, 0x9bfe, 0x9bff, + 0x9c00, 0x9c01, 0x9c02, 0x9c03, 0x9c04, 0x9c05, 0x9c06, 0x9c07, + 0x9c08, 0x9c09, 0x9c0a, 0x9c0b, 0x9c0c, 0x9c0d, 0x9c0e, 0x9c0f, + 0x9c10, 0x9c11, 0x9c12, 0x9c13, 0x9c14, 0x9c15, 0x9c16, 0x9c17, + 0x9c18, 0x9c19, 0x9c1a, 0x9c1b, 0x9c1c, 0x9c1d, 0x9c1e, 0x9c1f, + 0x9c20, 0x9c21, 0x9c22, 0x9c23, 0x9c24, 0x9c25, 0x9c26, 0x9c27, + 0x9c28, 0x9c29, 0x9c2a, 0x9c2b, 0x9c2c, 0x9c2d, 0x9c2e, 0x9c2f, + 0x9c30, 0x9c31, 0x9c32, 0x9c33, 0x9c34, 0x9c35, 0x9c36, 0x9c37, + 0x9c38, 0x9c39, 0x9c3a, 0x9c3b, 0x9c3c, 0x9c3d, 0x9c3e, 0x9c3f, + 0x9c40, 0x9c41, 0x9c42, 0x9c43, 0x9c44, 0x9c45, 0x9c46, 0x9c47, + 0x9c48, 0x9c49, 0x9c4a, 0x9c4b, 0x9c4c, 0x9c4d, 0x9c4e, 0x9c4f, + 0x9c50, 0x9c51, 0x9c52, 0x9c53, 0x9c54, 0x9c55, 0x9c56, 0x9c57, + 0x9c58, 0x9c59, 0x9c5a, 0x9c5b, 0x9c5c, 0x9c5d, 0x9c5e, 0x9c5f, + 0x9c60, 0x9c61, 0x9c62, 0x9c63, 0x9c64, 0x9c65, 0x9c66, 0x9c67, + 0x9c68, 0x9c69, 0x9c6a, 0x9c6b, 0x9c6c, 0x9c6d, 0x9c6e, 0x9c6f, + 0x9c70, 0x9c71, 0x9c72, 0x9c73, 0x9c74, 0x9c75, 0x9c76, 0x9c77, + 0x9c78, 0x9c79, 0x9c7a, 0x9c7b, 0x9c7c, 0x9c7d, 0x9c7e, 0x9c7f, + 0x9c80, 0x9c81, 0x9c82, 0x9c83, 0x9c84, 0x9c85, 0x9c86, 0x9c87, + 0x9c88, 0x9c89, 0x9c8a, 0x9c8b, 0x9c8c, 0x9c8d, 0x9c8e, 0x9c8f, + 0x9c90, 0x9c91, 0x9c92, 0x9c93, 0x9c94, 0x9c95, 0x9c96, 0x9c97, + 0x9c98, 0x9c99, 0x9c9a, 0x9c9b, 0x9c9c, 0x9c9d, 0x9c9e, 0x9c9f, + 0x9ca0, 0x9ca1, 0x9ca2, 0x9ca3, 0x9ca4, 0x9ca5, 0x9ca6, 0x9ca7, + 0x9ca8, 0x9ca9, 0x9caa, 0x9cab, 0x9cac, 0x9cad, 0x9cae, 0x9caf, + 0x9cb0, 0x9cb1, 0x9cb2, 0x9cb3, 0x9cb4, 0x9cb5, 0x9cb6, 0x9cb7, + 0x9cb8, 0x9cb9, 0x9cba, 0x9cbb, 0x9cbc, 0x9cbd, 0x9cbe, 0x9cbf, + 0x9cc0, 0x9cc1, 0x9cc2, 0x9cc3, 0x9cc4, 0x9cc5, 0x9cc6, 0x9cc7, + 0x9cc8, 0x9cc9, 0x9cca, 0x9ccb, 0x9ccc, 0x9ccd, 0x9cce, 0x9ccf, + 0x9cd0, 0x9cd1, 0x9cd2, 0x9cd3, 0x9cd4, 0x9cd5, 0x9cd6, 0x9cd7, + 0x9cd8, 0x9cd9, 0x9cda, 0x9cdb, 0x9cdc, 0x9cdd, 0x9cde, 0x9cdf, + 0x9ce0, 0x9ce1, 0x9ce2, 0x9ce3, 0x9ce4, 0x9ce5, 0x9ce6, 0x9ce7, + 0x9ce8, 0x9ce9, 0x9cea, 0x9ceb, 0x9cec, 0x9ced, 0x9cee, 0x9cef, + 0x9cf0, 0x9cf1, 0x9cf2, 0x9cf3, 0x9cf4, 0x9cf5, 0x9cf6, 0x9cf7, + 0x9cf8, 0x9cf9, 0x9cfa, 0x9cfb, 0x9cfc, 0x9cfd, 0x9cfe, 0x9cff, + 0x9d00, 0x9d01, 0x9d02, 0x9d03, 0x9d04, 0x9d05, 0x9d06, 0x9d07, + 0x9d08, 0x9d09, 0x9d0a, 0x9d0b, 0x9d0c, 0x9d0d, 0x9d0e, 0x9d0f, + 0x9d10, 0x9d11, 0x9d12, 0x9d13, 0x9d14, 0x9d15, 0x9d16, 0x9d17, + 0x9d18, 0x9d19, 0x9d1a, 0x9d1b, 0x9d1c, 0x9d1d, 0x9d1e, 0x9d1f, + 0x9d20, 0x9d21, 0x9d22, 0x9d23, 0x9d24, 0x9d25, 0x9d26, 0x9d27, + 0x9d28, 0x9d29, 0x9d2a, 0x9d2b, 0x9d2c, 0x9d2d, 0x9d2e, 0x9d2f, + 0x9d30, 0x9d31, 0x9d32, 0x9d33, 0x9d34, 0x9d35, 0x9d36, 0x9d37, + 0x9d38, 0x9d39, 0x9d3a, 0x9d3b, 0x9d3c, 0x9d3d, 0x9d3e, 0x9d3f, + 0x9d40, 0x9d41, 0x9d42, 0x9d43, 0x9d44, 0x9d45, 0x9d46, 0x9d47, + 0x9d48, 0x9d49, 0x9d4a, 0x9d4b, 0x9d4c, 0x9d4d, 0x9d4e, 0x9d4f, + 0x9d50, 0x9d51, 0x9d52, 0x9d53, 0x9d54, 0x9d55, 0x9d56, 0x9d57, + 0x9d58, 0x9d59, 0x9d5a, 0x9d5b, 0x9d5c, 0x9d5d, 0x9d5e, 0x9d5f, + 0x9d60, 0x9d61, 0x9d62, 0x9d63, 0x9d64, 0x9d65, 0x9d66, 0x9d67, + 0x9d68, 0x9d69, 0x9d6a, 0x9d6b, 0x9d6c, 0x9d6d, 0x9d6e, 0x9d6f, + 0x9d70, 0x9d71, 0x9d72, 0x9d73, 0x9d74, 0x9d75, 0x9d76, 0x9d77, + 0x9d78, 0x9d79, 0x9d7a, 0x9d7b, 0x9d7c, 0x9d7d, 0x9d7e, 0x9d7f, + 0x9d80, 0x9d81, 0x9d82, 0x9d83, 0x9d84, 0x9d85, 0x9d86, 0x9d87, + 0x9d88, 0x9d89, 0x9d8a, 0x9d8b, 0x9d8c, 0x9d8d, 0x9d8e, 0x9d8f, + 0x9d90, 0x9d91, 0x9d92, 0x9d93, 0x9d94, 0x9d95, 0x9d96, 0x9d97, + 0x9d98, 0x9d99, 0x9d9a, 0x9d9b, 0x9d9c, 0x9d9d, 0x9d9e, 0x9d9f, + 0x9da0, 0x9da1, 0x9da2, 0x9da3, 0x9da4, 0x9da5, 0x9da6, 0x9da7, + 0x9da8, 0x9da9, 0x9daa, 0x9dab, 0x9dac, 0x9dad, 0x9dae, 0x9daf, + 0x9db0, 0x9db1, 0x9db2, 0x9db3, 0x9db4, 0x9db5, 0x9db6, 0x9db7, + 0x9db8, 0x9db9, 0x9dba, 0x9dbb, 0x9dbc, 0x9dbd, 0x9dbe, 0x9dbf, + 0x9dc0, 0x9dc1, 0x9dc2, 0x9dc3, 0x9dc4, 0x9dc5, 0x9dc6, 0x9dc7, + 0x9dc8, 0x9dc9, 0x9dca, 0x9dcb, 0x9dcc, 0x9dcd, 0x9dce, 0x9dcf, + 0x9dd0, 0x9dd1, 0x9dd2, 0x9dd3, 0x9dd4, 0x9dd5, 0x9dd6, 0x9dd7, + 0x9dd8, 0x9dd9, 0x9dda, 0x9ddb, 0x9ddc, 0x9ddd, 0x9dde, 0x9ddf, + 0x9de0, 0x9de1, 0x9de2, 0x9de3, 0x9de4, 0x9de5, 0x9de6, 0x9de7, + 0x9de8, 0x9de9, 0x9dea, 0x9deb, 0x9dec, 0x9ded, 0x9dee, 0x9def, + 0x9df0, 0x9df1, 0x9df2, 0x9df3, 0x9df4, 0x9df5, 0x9df6, 0x9df7, + 0x9df8, 0x9df9, 0x9dfa, 0x9dfb, 0x9dfc, 0x9dfd, 0x9dfe, 0x9dff, + 0x9e00, 0x9e01, 0x9e02, 0x9e03, 0x9e04, 0x9e05, 0x9e06, 0x9e07, + 0x9e08, 0x9e09, 0x9e0a, 0x9e0b, 0x9e0c, 0x9e0d, 0x9e0e, 0x9e0f, + 0x9e10, 0x9e11, 0x9e12, 0x9e13, 0x9e14, 0x9e15, 0x9e16, 0x9e17, + 0x9e18, 0x9e19, 0x9e1a, 0x9e1b, 0x9e1c, 0x9e1d, 0x9e1e, 0x9e1f, + 0x9e20, 0x9e21, 0x9e22, 0x9e23, 0x9e24, 0x9e25, 0x9e26, 0x9e27, + 0x9e28, 0x9e29, 0x9e2a, 0x9e2b, 0x9e2c, 0x9e2d, 0x9e2e, 0x9e2f, + 0x9e30, 0x9e31, 0x9e32, 0x9e33, 0x9e34, 0x9e35, 0x9e36, 0x9e37, + 0x9e38, 0x9e39, 0x9e3a, 0x9e3b, 0x9e3c, 0x9e3d, 0x9e3e, 0x9e3f, + 0x9e40, 0x9e41, 0x9e42, 0x9e43, 0x9e44, 0x9e45, 0x9e46, 0x9e47, + 0x9e48, 0x9e49, 0x9e4a, 0x9e4b, 0x9e4c, 0x9e4d, 0x9e4e, 0x9e4f, + 0x9e50, 0x9e51, 0x9e52, 0x9e53, 0x9e54, 0x9e55, 0x9e56, 0x9e57, + 0x9e58, 0x9e59, 0x9e5a, 0x9e5b, 0x9e5c, 0x9e5d, 0x9e5e, 0x9e5f, + 0x9e60, 0x9e61, 0x9e62, 0x9e63, 0x9e64, 0x9e65, 0x9e66, 0x9e67, + 0x9e68, 0x9e69, 0x9e6a, 0x9e6b, 0x9e6c, 0x9e6d, 0x9e6e, 0x9e6f, + 0x9e70, 0x9e71, 0x9e72, 0x9e73, 0x9e74, 0x9e75, 0x9e76, 0x9e77, + 0x9e78, 0x9e79, 0x9e7a, 0x9e7b, 0x9e7c, 0x9e7d, 0x9e7e, 0x9e7f, + 0x9e80, 0x9e81, 0x9e82, 0x9e83, 0x9e84, 0x9e85, 0x9e86, 0x9e87, + 0x9e88, 0x9e89, 0x9e8a, 0x9e8b, 0x9e8c, 0x9e8d, 0x9e8e, 0x9e8f, + 0x9e90, 0x9e91, 0x9e92, 0x9e93, 0x9e94, 0x9e95, 0x9e96, 0x9e97, + 0x9e98, 0x9e99, 0x9e9a, 0x9e9b, 0x9e9c, 0x9e9d, 0x9e9e, 0x9e9f, + 0x9ea0, 0x9ea1, 0x9ea2, 0x9ea3, 0x9ea4, 0x9ea5, 0x9ea6, 0x9ea7, + 0x9ea8, 0x9ea9, 0x9eaa, 0x9eab, 0x9eac, 0x9ead, 0x9eae, 0x9eaf, + 0x9eb0, 0x9eb1, 0x9eb2, 0x9eb3, 0x9eb4, 0x9eb5, 0x9eb6, 0x9eb7, + 0x9eb8, 0x9eb9, 0x9eba, 0x9ebb, 0x9ebc, 0x9ebd, 0x9ebe, 0x9ebf, + 0x9ec0, 0x9ec1, 0x9ec2, 0x9ec3, 0x9ec4, 0x9ec5, 0x9ec6, 0x9ec7, + 0x9ec8, 0x9ec9, 0x9eca, 0x9ecb, 0x9ecc, 0x9ecd, 0x9ece, 0x9ecf, + 0x9ed0, 0x9ed1, 0x9ed2, 0x9ed3, 0x9ed4, 0x9ed5, 0x9ed6, 0x9ed7, + 0x9ed8, 0x9ed9, 0x9eda, 0x9edb, 0x9edc, 0x9edd, 0x9ede, 0x9edf, + 0x9ee0, 0x9ee1, 0x9ee2, 0x9ee3, 0x9ee4, 0x9ee5, 0x9ee6, 0x9ee7, + 0x9ee8, 0x9ee9, 0x9eea, 0x9eeb, 0x9eec, 0x9eed, 0x9eee, 0x9eef, + 0x9ef0, 0x9ef1, 0x9ef2, 0x9ef3, 0x9ef4, 0x9ef5, 0x9ef6, 0x9ef7, + 0x9ef8, 0x9ef9, 0x9efa, 0x9efb, 0x9efc, 0x9efd, 0x9efe, 0x9eff, + 0x9f00, 0x9f01, 0x9f02, 0x9f03, 0x9f04, 0x9f05, 0x9f06, 0x9f07, + 0x9f08, 0x9f09, 0x9f0a, 0x9f0b, 0x9f0c, 0x9f0d, 0x9f0e, 0x9f0f, + 0x9f10, 0x9f11, 0x9f12, 0x9f13, 0x9f14, 0x9f15, 0x9f16, 0x9f17, + 0x9f18, 0x9f19, 0x9f1a, 0x9f1b, 0x9f1c, 0x9f1d, 0x9f1e, 0x9f1f, + 0x9f20, 0x9f21, 0x9f22, 0x9f23, 0x9f24, 0x9f25, 0x9f26, 0x9f27, + 0x9f28, 0x9f29, 0x9f2a, 0x9f2b, 0x9f2c, 0x9f2d, 0x9f2e, 0x9f2f, + 0x9f30, 0x9f31, 0x9f32, 0x9f33, 0x9f34, 0x9f35, 0x9f36, 0x9f37, + 0x9f38, 0x9f39, 0x9f3a, 0x9f3b, 0x9f3c, 0x9f3d, 0x9f3e, 0x9f3f, + 0x9f40, 0x9f41, 0x9f42, 0x9f43, 0x9f44, 0x9f45, 0x9f46, 0x9f47, + 0x9f48, 0x9f49, 0x9f4a, 0x9f4b, 0x9f4c, 0x9f4d, 0x9f4e, 0x9f4f, + 0x9f50, 0x9f51, 0x9f52, 0x9f53, 0x9f54, 0x9f55, 0x9f56, 0x9f57, + 0x9f58, 0x9f59, 0x9f5a, 0x9f5b, 0x9f5c, 0x9f5d, 0x9f5e, 0x9f5f, + 0x9f60, 0x9f61, 0x9f62, 0x9f63, 0x9f64, 0x9f65, 0x9f66, 0x9f67, + 0x9f68, 0x9f69, 0x9f6a, 0x9f6b, 0x9f6c, 0x9f6d, 0x9f6e, 0x9f6f, + 0x9f70, 0x9f71, 0x9f72, 0x9f73, 0x9f74, 0x9f75, 0x9f76, 0x9f77, + 0x9f78, 0x9f79, 0x9f7a, 0x9f7b, 0x9f7c, 0x9f7d, 0x9f7e, 0x9f7f, + 0x9f80, 0x9f81, 0x9f82, 0x9f83, 0x9f84, 0x9f85, 0x9f86, 0x9f87, + 0x9f88, 0x9f89, 0x9f8a, 0x9f8b, 0x9f8c, 0x9f8d, 0x9f8e, 0x9f8f, + 0x9f90, 0x9f91, 0x9f92, 0x9f93, 0x9f94, 0x9f95, 0x9f96, 0x9f97, + 0x9f98, 0x9f99, 0x9f9a, 0x9f9b, 0x9f9c, 0x9f9d, 0x9f9e, 0x9f9f, + 0x9fa0, 0x9fa1, 0x9fa2, 0x9fa3, 0x9fa4, 0x9fa5, 0x9fa6, 0x9fa7, + 0x9fa8, 0x9fa9, 0x9faa, 0x9fab, 0x9fac, 0x9fad, 0x9fae, 0x9faf, + 0x9fb0, 0x9fb1, 0x9fb2, 0x9fb3, 0x9fb4, 0x9fb5, 0x9fb6, 0x9fb7, + 0x9fb8, 0x9fb9, 0x9fba, 0x9fbb, 0x9fbc, 0x9fbd, 0x9fbe, 0x9fbf, + 0x9fc0, 0x9fc1, 0x9fc2, 0x9fc3, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xa000, 0xa001, 0xa002, 0xa003, 0xa004, 0xa005, 0xa006, 0xa007, + 0xa008, 0xa009, 0xa00a, 0xa00b, 0xa00c, 0xa00d, 0xa00e, 0xa00f, + 0xa010, 0xa011, 0xa012, 0xa013, 0xa014, 0xa015, 0xa016, 0xa017, + 0xa018, 0xa019, 0xa01a, 0xa01b, 0xa01c, 0xa01d, 0xa01e, 0xa01f, + 0xa020, 0xa021, 0xa022, 0xa023, 0xa024, 0xa025, 0xa026, 0xa027, + 0xa028, 0xa029, 0xa02a, 0xa02b, 0xa02c, 0xa02d, 0xa02e, 0xa02f, + 0xa030, 0xa031, 0xa032, 0xa033, 0xa034, 0xa035, 0xa036, 0xa037, + 0xa038, 0xa039, 0xa03a, 0xa03b, 0xa03c, 0xa03d, 0xa03e, 0xa03f, + 0xa040, 0xa041, 0xa042, 0xa043, 0xa044, 0xa045, 0xa046, 0xa047, + 0xa048, 0xa049, 0xa04a, 0xa04b, 0xa04c, 0xa04d, 0xa04e, 0xa04f, + 0xa050, 0xa051, 0xa052, 0xa053, 0xa054, 0xa055, 0xa056, 0xa057, + 0xa058, 0xa059, 0xa05a, 0xa05b, 0xa05c, 0xa05d, 0xa05e, 0xa05f, + 0xa060, 0xa061, 0xa062, 0xa063, 0xa064, 0xa065, 0xa066, 0xa067, + 0xa068, 0xa069, 0xa06a, 0xa06b, 0xa06c, 0xa06d, 0xa06e, 0xa06f, + 0xa070, 0xa071, 0xa072, 0xa073, 0xa074, 0xa075, 0xa076, 0xa077, + 0xa078, 0xa079, 0xa07a, 0xa07b, 0xa07c, 0xa07d, 0xa07e, 0xa07f, + 0xa080, 0xa081, 0xa082, 0xa083, 0xa084, 0xa085, 0xa086, 0xa087, + 0xa088, 0xa089, 0xa08a, 0xa08b, 0xa08c, 0xa08d, 0xa08e, 0xa08f, + 0xa090, 0xa091, 0xa092, 0xa093, 0xa094, 0xa095, 0xa096, 0xa097, + 0xa098, 0xa099, 0xa09a, 0xa09b, 0xa09c, 0xa09d, 0xa09e, 0xa09f, + 0xa0a0, 0xa0a1, 0xa0a2, 0xa0a3, 0xa0a4, 0xa0a5, 0xa0a6, 0xa0a7, + 0xa0a8, 0xa0a9, 0xa0aa, 0xa0ab, 0xa0ac, 0xa0ad, 0xa0ae, 0xa0af, + 0xa0b0, 0xa0b1, 0xa0b2, 0xa0b3, 0xa0b4, 0xa0b5, 0xa0b6, 0xa0b7, + 0xa0b8, 0xa0b9, 0xa0ba, 0xa0bb, 0xa0bc, 0xa0bd, 0xa0be, 0xa0bf, + 0xa0c0, 0xa0c1, 0xa0c2, 0xa0c3, 0xa0c4, 0xa0c5, 0xa0c6, 0xa0c7, + 0xa0c8, 0xa0c9, 0xa0ca, 0xa0cb, 0xa0cc, 0xa0cd, 0xa0ce, 0xa0cf, + 0xa0d0, 0xa0d1, 0xa0d2, 0xa0d3, 0xa0d4, 0xa0d5, 0xa0d6, 0xa0d7, + 0xa0d8, 0xa0d9, 0xa0da, 0xa0db, 0xa0dc, 0xa0dd, 0xa0de, 0xa0df, + 0xa0e0, 0xa0e1, 0xa0e2, 0xa0e3, 0xa0e4, 0xa0e5, 0xa0e6, 0xa0e7, + 0xa0e8, 0xa0e9, 0xa0ea, 0xa0eb, 0xa0ec, 0xa0ed, 0xa0ee, 0xa0ef, + 0xa0f0, 0xa0f1, 0xa0f2, 0xa0f3, 0xa0f4, 0xa0f5, 0xa0f6, 0xa0f7, + 0xa0f8, 0xa0f9, 0xa0fa, 0xa0fb, 0xa0fc, 0xa0fd, 0xa0fe, 0xa0ff, + 0xa100, 0xa101, 0xa102, 0xa103, 0xa104, 0xa105, 0xa106, 0xa107, + 0xa108, 0xa109, 0xa10a, 0xa10b, 0xa10c, 0xa10d, 0xa10e, 0xa10f, + 0xa110, 0xa111, 0xa112, 0xa113, 0xa114, 0xa115, 0xa116, 0xa117, + 0xa118, 0xa119, 0xa11a, 0xa11b, 0xa11c, 0xa11d, 0xa11e, 0xa11f, + 0xa120, 0xa121, 0xa122, 0xa123, 0xa124, 0xa125, 0xa126, 0xa127, + 0xa128, 0xa129, 0xa12a, 0xa12b, 0xa12c, 0xa12d, 0xa12e, 0xa12f, + 0xa130, 0xa131, 0xa132, 0xa133, 0xa134, 0xa135, 0xa136, 0xa137, + 0xa138, 0xa139, 0xa13a, 0xa13b, 0xa13c, 0xa13d, 0xa13e, 0xa13f, + 0xa140, 0xa141, 0xa142, 0xa143, 0xa144, 0xa145, 0xa146, 0xa147, + 0xa148, 0xa149, 0xa14a, 0xa14b, 0xa14c, 0xa14d, 0xa14e, 0xa14f, + 0xa150, 0xa151, 0xa152, 0xa153, 0xa154, 0xa155, 0xa156, 0xa157, + 0xa158, 0xa159, 0xa15a, 0xa15b, 0xa15c, 0xa15d, 0xa15e, 0xa15f, + 0xa160, 0xa161, 0xa162, 0xa163, 0xa164, 0xa165, 0xa166, 0xa167, + 0xa168, 0xa169, 0xa16a, 0xa16b, 0xa16c, 0xa16d, 0xa16e, 0xa16f, + 0xa170, 0xa171, 0xa172, 0xa173, 0xa174, 0xa175, 0xa176, 0xa177, + 0xa178, 0xa179, 0xa17a, 0xa17b, 0xa17c, 0xa17d, 0xa17e, 0xa17f, + 0xa180, 0xa181, 0xa182, 0xa183, 0xa184, 0xa185, 0xa186, 0xa187, + 0xa188, 0xa189, 0xa18a, 0xa18b, 0xa18c, 0xa18d, 0xa18e, 0xa18f, + 0xa190, 0xa191, 0xa192, 0xa193, 0xa194, 0xa195, 0xa196, 0xa197, + 0xa198, 0xa199, 0xa19a, 0xa19b, 0xa19c, 0xa19d, 0xa19e, 0xa19f, + 0xa1a0, 0xa1a1, 0xa1a2, 0xa1a3, 0xa1a4, 0xa1a5, 0xa1a6, 0xa1a7, + 0xa1a8, 0xa1a9, 0xa1aa, 0xa1ab, 0xa1ac, 0xa1ad, 0xa1ae, 0xa1af, + 0xa1b0, 0xa1b1, 0xa1b2, 0xa1b3, 0xa1b4, 0xa1b5, 0xa1b6, 0xa1b7, + 0xa1b8, 0xa1b9, 0xa1ba, 0xa1bb, 0xa1bc, 0xa1bd, 0xa1be, 0xa1bf, + 0xa1c0, 0xa1c1, 0xa1c2, 0xa1c3, 0xa1c4, 0xa1c5, 0xa1c6, 0xa1c7, + 0xa1c8, 0xa1c9, 0xa1ca, 0xa1cb, 0xa1cc, 0xa1cd, 0xa1ce, 0xa1cf, + 0xa1d0, 0xa1d1, 0xa1d2, 0xa1d3, 0xa1d4, 0xa1d5, 0xa1d6, 0xa1d7, + 0xa1d8, 0xa1d9, 0xa1da, 0xa1db, 0xa1dc, 0xa1dd, 0xa1de, 0xa1df, + 0xa1e0, 0xa1e1, 0xa1e2, 0xa1e3, 0xa1e4, 0xa1e5, 0xa1e6, 0xa1e7, + 0xa1e8, 0xa1e9, 0xa1ea, 0xa1eb, 0xa1ec, 0xa1ed, 0xa1ee, 0xa1ef, + 0xa1f0, 0xa1f1, 0xa1f2, 0xa1f3, 0xa1f4, 0xa1f5, 0xa1f6, 0xa1f7, + 0xa1f8, 0xa1f9, 0xa1fa, 0xa1fb, 0xa1fc, 0xa1fd, 0xa1fe, 0xa1ff, + 0xa200, 0xa201, 0xa202, 0xa203, 0xa204, 0xa205, 0xa206, 0xa207, + 0xa208, 0xa209, 0xa20a, 0xa20b, 0xa20c, 0xa20d, 0xa20e, 0xa20f, + 0xa210, 0xa211, 0xa212, 0xa213, 0xa214, 0xa215, 0xa216, 0xa217, + 0xa218, 0xa219, 0xa21a, 0xa21b, 0xa21c, 0xa21d, 0xa21e, 0xa21f, + 0xa220, 0xa221, 0xa222, 0xa223, 0xa224, 0xa225, 0xa226, 0xa227, + 0xa228, 0xa229, 0xa22a, 0xa22b, 0xa22c, 0xa22d, 0xa22e, 0xa22f, + 0xa230, 0xa231, 0xa232, 0xa233, 0xa234, 0xa235, 0xa236, 0xa237, + 0xa238, 0xa239, 0xa23a, 0xa23b, 0xa23c, 0xa23d, 0xa23e, 0xa23f, + 0xa240, 0xa241, 0xa242, 0xa243, 0xa244, 0xa245, 0xa246, 0xa247, + 0xa248, 0xa249, 0xa24a, 0xa24b, 0xa24c, 0xa24d, 0xa24e, 0xa24f, + 0xa250, 0xa251, 0xa252, 0xa253, 0xa254, 0xa255, 0xa256, 0xa257, + 0xa258, 0xa259, 0xa25a, 0xa25b, 0xa25c, 0xa25d, 0xa25e, 0xa25f, + 0xa260, 0xa261, 0xa262, 0xa263, 0xa264, 0xa265, 0xa266, 0xa267, + 0xa268, 0xa269, 0xa26a, 0xa26b, 0xa26c, 0xa26d, 0xa26e, 0xa26f, + 0xa270, 0xa271, 0xa272, 0xa273, 0xa274, 0xa275, 0xa276, 0xa277, + 0xa278, 0xa279, 0xa27a, 0xa27b, 0xa27c, 0xa27d, 0xa27e, 0xa27f, + 0xa280, 0xa281, 0xa282, 0xa283, 0xa284, 0xa285, 0xa286, 0xa287, + 0xa288, 0xa289, 0xa28a, 0xa28b, 0xa28c, 0xa28d, 0xa28e, 0xa28f, + 0xa290, 0xa291, 0xa292, 0xa293, 0xa294, 0xa295, 0xa296, 0xa297, + 0xa298, 0xa299, 0xa29a, 0xa29b, 0xa29c, 0xa29d, 0xa29e, 0xa29f, + 0xa2a0, 0xa2a1, 0xa2a2, 0xa2a3, 0xa2a4, 0xa2a5, 0xa2a6, 0xa2a7, + 0xa2a8, 0xa2a9, 0xa2aa, 0xa2ab, 0xa2ac, 0xa2ad, 0xa2ae, 0xa2af, + 0xa2b0, 0xa2b1, 0xa2b2, 0xa2b3, 0xa2b4, 0xa2b5, 0xa2b6, 0xa2b7, + 0xa2b8, 0xa2b9, 0xa2ba, 0xa2bb, 0xa2bc, 0xa2bd, 0xa2be, 0xa2bf, + 0xa2c0, 0xa2c1, 0xa2c2, 0xa2c3, 0xa2c4, 0xa2c5, 0xa2c6, 0xa2c7, + 0xa2c8, 0xa2c9, 0xa2ca, 0xa2cb, 0xa2cc, 0xa2cd, 0xa2ce, 0xa2cf, + 0xa2d0, 0xa2d1, 0xa2d2, 0xa2d3, 0xa2d4, 0xa2d5, 0xa2d6, 0xa2d7, + 0xa2d8, 0xa2d9, 0xa2da, 0xa2db, 0xa2dc, 0xa2dd, 0xa2de, 0xa2df, + 0xa2e0, 0xa2e1, 0xa2e2, 0xa2e3, 0xa2e4, 0xa2e5, 0xa2e6, 0xa2e7, + 0xa2e8, 0xa2e9, 0xa2ea, 0xa2eb, 0xa2ec, 0xa2ed, 0xa2ee, 0xa2ef, + 0xa2f0, 0xa2f1, 0xa2f2, 0xa2f3, 0xa2f4, 0xa2f5, 0xa2f6, 0xa2f7, + 0xa2f8, 0xa2f9, 0xa2fa, 0xa2fb, 0xa2fc, 0xa2fd, 0xa2fe, 0xa2ff, + 0xa300, 0xa301, 0xa302, 0xa303, 0xa304, 0xa305, 0xa306, 0xa307, + 0xa308, 0xa309, 0xa30a, 0xa30b, 0xa30c, 0xa30d, 0xa30e, 0xa30f, + 0xa310, 0xa311, 0xa312, 0xa313, 0xa314, 0xa315, 0xa316, 0xa317, + 0xa318, 0xa319, 0xa31a, 0xa31b, 0xa31c, 0xa31d, 0xa31e, 0xa31f, + 0xa320, 0xa321, 0xa322, 0xa323, 0xa324, 0xa325, 0xa326, 0xa327, + 0xa328, 0xa329, 0xa32a, 0xa32b, 0xa32c, 0xa32d, 0xa32e, 0xa32f, + 0xa330, 0xa331, 0xa332, 0xa333, 0xa334, 0xa335, 0xa336, 0xa337, + 0xa338, 0xa339, 0xa33a, 0xa33b, 0xa33c, 0xa33d, 0xa33e, 0xa33f, + 0xa340, 0xa341, 0xa342, 0xa343, 0xa344, 0xa345, 0xa346, 0xa347, + 0xa348, 0xa349, 0xa34a, 0xa34b, 0xa34c, 0xa34d, 0xa34e, 0xa34f, + 0xa350, 0xa351, 0xa352, 0xa353, 0xa354, 0xa355, 0xa356, 0xa357, + 0xa358, 0xa359, 0xa35a, 0xa35b, 0xa35c, 0xa35d, 0xa35e, 0xa35f, + 0xa360, 0xa361, 0xa362, 0xa363, 0xa364, 0xa365, 0xa366, 0xa367, + 0xa368, 0xa369, 0xa36a, 0xa36b, 0xa36c, 0xa36d, 0xa36e, 0xa36f, + 0xa370, 0xa371, 0xa372, 0xa373, 0xa374, 0xa375, 0xa376, 0xa377, + 0xa378, 0xa379, 0xa37a, 0xa37b, 0xa37c, 0xa37d, 0xa37e, 0xa37f, + 0xa380, 0xa381, 0xa382, 0xa383, 0xa384, 0xa385, 0xa386, 0xa387, + 0xa388, 0xa389, 0xa38a, 0xa38b, 0xa38c, 0xa38d, 0xa38e, 0xa38f, + 0xa390, 0xa391, 0xa392, 0xa393, 0xa394, 0xa395, 0xa396, 0xa397, + 0xa398, 0xa399, 0xa39a, 0xa39b, 0xa39c, 0xa39d, 0xa39e, 0xa39f, + 0xa3a0, 0xa3a1, 0xa3a2, 0xa3a3, 0xa3a4, 0xa3a5, 0xa3a6, 0xa3a7, + 0xa3a8, 0xa3a9, 0xa3aa, 0xa3ab, 0xa3ac, 0xa3ad, 0xa3ae, 0xa3af, + 0xa3b0, 0xa3b1, 0xa3b2, 0xa3b3, 0xa3b4, 0xa3b5, 0xa3b6, 0xa3b7, + 0xa3b8, 0xa3b9, 0xa3ba, 0xa3bb, 0xa3bc, 0xa3bd, 0xa3be, 0xa3bf, + 0xa3c0, 0xa3c1, 0xa3c2, 0xa3c3, 0xa3c4, 0xa3c5, 0xa3c6, 0xa3c7, + 0xa3c8, 0xa3c9, 0xa3ca, 0xa3cb, 0xa3cc, 0xa3cd, 0xa3ce, 0xa3cf, + 0xa3d0, 0xa3d1, 0xa3d2, 0xa3d3, 0xa3d4, 0xa3d5, 0xa3d6, 0xa3d7, + 0xa3d8, 0xa3d9, 0xa3da, 0xa3db, 0xa3dc, 0xa3dd, 0xa3de, 0xa3df, + 0xa3e0, 0xa3e1, 0xa3e2, 0xa3e3, 0xa3e4, 0xa3e5, 0xa3e6, 0xa3e7, + 0xa3e8, 0xa3e9, 0xa3ea, 0xa3eb, 0xa3ec, 0xa3ed, 0xa3ee, 0xa3ef, + 0xa3f0, 0xa3f1, 0xa3f2, 0xa3f3, 0xa3f4, 0xa3f5, 0xa3f6, 0xa3f7, + 0xa3f8, 0xa3f9, 0xa3fa, 0xa3fb, 0xa3fc, 0xa3fd, 0xa3fe, 0xa3ff, + 0xa400, 0xa401, 0xa402, 0xa403, 0xa404, 0xa405, 0xa406, 0xa407, + 0xa408, 0xa409, 0xa40a, 0xa40b, 0xa40c, 0xa40d, 0xa40e, 0xa40f, + 0xa410, 0xa411, 0xa412, 0xa413, 0xa414, 0xa415, 0xa416, 0xa417, + 0xa418, 0xa419, 0xa41a, 0xa41b, 0xa41c, 0xa41d, 0xa41e, 0xa41f, + 0xa420, 0xa421, 0xa422, 0xa423, 0xa424, 0xa425, 0xa426, 0xa427, + 0xa428, 0xa429, 0xa42a, 0xa42b, 0xa42c, 0xa42d, 0xa42e, 0xa42f, + 0xa430, 0xa431, 0xa432, 0xa433, 0xa434, 0xa435, 0xa436, 0xa437, + 0xa438, 0xa439, 0xa43a, 0xa43b, 0xa43c, 0xa43d, 0xa43e, 0xa43f, + 0xa440, 0xa441, 0xa442, 0xa443, 0xa444, 0xa445, 0xa446, 0xa447, + 0xa448, 0xa449, 0xa44a, 0xa44b, 0xa44c, 0xa44d, 0xa44e, 0xa44f, + 0xa450, 0xa451, 0xa452, 0xa453, 0xa454, 0xa455, 0xa456, 0xa457, + 0xa458, 0xa459, 0xa45a, 0xa45b, 0xa45c, 0xa45d, 0xa45e, 0xa45f, + 0xa460, 0xa461, 0xa462, 0xa463, 0xa464, 0xa465, 0xa466, 0xa467, + 0xa468, 0xa469, 0xa46a, 0xa46b, 0xa46c, 0xa46d, 0xa46e, 0xa46f, + 0xa470, 0xa471, 0xa472, 0xa473, 0xa474, 0xa475, 0xa476, 0xa477, + 0xa478, 0xa479, 0xa47a, 0xa47b, 0xa47c, 0xa47d, 0xa47e, 0xa47f, + 0xa480, 0xa481, 0xa482, 0xa483, 0xa484, 0xa485, 0xa486, 0xa487, + 0xa488, 0xa489, 0xa48a, 0xa48b, 0xa48c, 0x0000, 0x0000, 0x0000, + 0xa490, 0xa491, 0xa492, 0xa493, 0xa494, 0xa495, 0xa496, 0xa497, + 0xa498, 0xa499, 0xa49a, 0xa49b, 0xa49c, 0xa49d, 0xa49e, 0xa49f, + 0xa4a0, 0xa4a1, 0xa4a2, 0xa4a3, 0xa4a4, 0xa4a5, 0xa4a6, 0xa4a7, + 0xa4a8, 0xa4a9, 0xa4aa, 0xa4ab, 0xa4ac, 0xa4ad, 0xa4ae, 0xa4af, + 0xa4b0, 0xa4b1, 0xa4b2, 0xa4b3, 0xa4b4, 0xa4b5, 0xa4b6, 0xa4b7, + 0xa4b8, 0xa4b9, 0xa4ba, 0xa4bb, 0xa4bc, 0xa4bd, 0xa4be, 0xa4bf, + 0xa4c0, 0xa4c1, 0xa4c2, 0xa4c3, 0xa4c4, 0xa4c5, 0xa4c6, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xa500, 0xa501, 0xa502, 0xa503, 0xa504, 0xa505, 0xa506, 0xa507, + 0xa508, 0xa509, 0xa50a, 0xa50b, 0xa50c, 0xa50d, 0xa50e, 0xa50f, + 0xa510, 0xa511, 0xa512, 0xa513, 0xa514, 0xa515, 0xa516, 0xa517, + 0xa518, 0xa519, 0xa51a, 0xa51b, 0xa51c, 0xa51d, 0xa51e, 0xa51f, + 0xa520, 0xa521, 0xa522, 0xa523, 0xa524, 0xa525, 0xa526, 0xa527, + 0xa528, 0xa529, 0xa52a, 0xa52b, 0xa52c, 0xa52d, 0xa52e, 0xa52f, + 0xa530, 0xa531, 0xa532, 0xa533, 0xa534, 0xa535, 0xa536, 0xa537, + 0xa538, 0xa539, 0xa53a, 0xa53b, 0xa53c, 0xa53d, 0xa53e, 0xa53f, + 0xa540, 0xa541, 0xa542, 0xa543, 0xa544, 0xa545, 0xa546, 0xa547, + 0xa548, 0xa549, 0xa54a, 0xa54b, 0xa54c, 0xa54d, 0xa54e, 0xa54f, + 0xa550, 0xa551, 0xa552, 0xa553, 0xa554, 0xa555, 0xa556, 0xa557, + 0xa558, 0xa559, 0xa55a, 0xa55b, 0xa55c, 0xa55d, 0xa55e, 0xa55f, + 0xa560, 0xa561, 0xa562, 0xa563, 0xa564, 0xa565, 0xa566, 0xa567, + 0xa568, 0xa569, 0xa56a, 0xa56b, 0xa56c, 0xa56d, 0xa56e, 0xa56f, + 0xa570, 0xa571, 0xa572, 0xa573, 0xa574, 0xa575, 0xa576, 0xa577, + 0xa578, 0xa579, 0xa57a, 0xa57b, 0xa57c, 0xa57d, 0xa57e, 0xa57f, + 0xa580, 0xa581, 0xa582, 0xa583, 0xa584, 0xa585, 0xa586, 0xa587, + 0xa588, 0xa589, 0xa58a, 0xa58b, 0xa58c, 0xa58d, 0xa58e, 0xa58f, + 0xa590, 0xa591, 0xa592, 0xa593, 0xa594, 0xa595, 0xa596, 0xa597, + 0xa598, 0xa599, 0xa59a, 0xa59b, 0xa59c, 0xa59d, 0xa59e, 0xa59f, + 0xa5a0, 0xa5a1, 0xa5a2, 0xa5a3, 0xa5a4, 0xa5a5, 0xa5a6, 0xa5a7, + 0xa5a8, 0xa5a9, 0xa5aa, 0xa5ab, 0xa5ac, 0xa5ad, 0xa5ae, 0xa5af, + 0xa5b0, 0xa5b1, 0xa5b2, 0xa5b3, 0xa5b4, 0xa5b5, 0xa5b6, 0xa5b7, + 0xa5b8, 0xa5b9, 0xa5ba, 0xa5bb, 0xa5bc, 0xa5bd, 0xa5be, 0xa5bf, + 0xa5c0, 0xa5c1, 0xa5c2, 0xa5c3, 0xa5c4, 0xa5c5, 0xa5c6, 0xa5c7, + 0xa5c8, 0xa5c9, 0xa5ca, 0xa5cb, 0xa5cc, 0xa5cd, 0xa5ce, 0xa5cf, + 0xa5d0, 0xa5d1, 0xa5d2, 0xa5d3, 0xa5d4, 0xa5d5, 0xa5d6, 0xa5d7, + 0xa5d8, 0xa5d9, 0xa5da, 0xa5db, 0xa5dc, 0xa5dd, 0xa5de, 0xa5df, + 0xa5e0, 0xa5e1, 0xa5e2, 0xa5e3, 0xa5e4, 0xa5e5, 0xa5e6, 0xa5e7, + 0xa5e8, 0xa5e9, 0xa5ea, 0xa5eb, 0xa5ec, 0xa5ed, 0xa5ee, 0xa5ef, + 0xa5f0, 0xa5f1, 0xa5f2, 0xa5f3, 0xa5f4, 0xa5f5, 0xa5f6, 0xa5f7, + 0xa5f8, 0xa5f9, 0xa5fa, 0xa5fb, 0xa5fc, 0xa5fd, 0xa5fe, 0xa5ff, + 0xa600, 0xa601, 0xa602, 0xa603, 0xa604, 0xa605, 0xa606, 0xa607, + 0xa608, 0xa609, 0xa60a, 0xa60b, 0xa60c, 0xa60d, 0xa60e, 0xa60f, + 0xa610, 0xa611, 0xa612, 0xa613, 0xa614, 0xa615, 0xa616, 0xa617, + 0xa618, 0xa619, 0xa61a, 0xa61b, 0xa61c, 0xa61d, 0xa61e, 0xa61f, + 0xa620, 0xa621, 0xa622, 0xa623, 0xa624, 0xa625, 0xa626, 0xa627, + 0xa628, 0xa629, 0xa62a, 0xa62b, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xa641, 0xa641, 0xa643, 0xa643, 0xa645, 0xa645, 0xa647, 0xa647, + 0xa649, 0xa649, 0xa64b, 0xa64b, 0xa64d, 0xa64d, 0xa64f, 0xa64f, + 0xa651, 0xa651, 0xa653, 0xa653, 0xa655, 0xa655, 0xa657, 0xa657, + 0xa659, 0xa659, 0xa65b, 0xa65b, 0xa65d, 0xa65d, 0xa65f, 0xa65f, + 0x0000, 0x0000, 0xa663, 0xa663, 0xa665, 0xa665, 0xa667, 0xa667, + 0xa669, 0xa669, 0xa66b, 0xa66b, 0xa66d, 0xa66d, 0xa66e, 0xa66f, + 0xa670, 0xa671, 0xa672, 0xa673, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xa67c, 0xa67d, 0xa67e, 0xa67f, + 0xa681, 0xa681, 0xa683, 0xa683, 0xa685, 0xa685, 0xa687, 0xa687, + 0xa689, 0xa689, 0xa68b, 0xa68b, 0xa68d, 0xa68d, 0xa68f, 0xa68f, + 0xa691, 0xa691, 0xa693, 0xa693, 0xa695, 0xa695, 0xa697, 0xa697, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xa700, 0xa701, 0xa702, 0xa703, 0xa704, 0xa705, 0xa706, 0xa707, + 0xa708, 0xa709, 0xa70a, 0xa70b, 0xa70c, 0xa70d, 0xa70e, 0xa70f, + 0xa710, 0xa711, 0xa712, 0xa713, 0xa714, 0xa715, 0xa716, 0xa717, + 0xa718, 0xa719, 0xa71a, 0xa71b, 0xa71c, 0xa71d, 0xa71e, 0xa71f, + 0xa720, 0xa721, 0xa723, 0xa723, 0xa725, 0xa725, 0xa727, 0xa727, + 0xa729, 0xa729, 0xa72b, 0xa72b, 0xa72d, 0xa72d, 0xa72f, 0xa72f, + 0xa730, 0xa731, 0xa733, 0xa733, 0xa735, 0xa735, 0xa737, 0xa737, + 0xa739, 0xa739, 0xa73b, 0xa73b, 0xa73d, 0xa73d, 0xa73f, 0xa73f, + 0xa741, 0xa741, 0xa743, 0xa743, 0xa745, 0xa745, 0xa747, 0xa747, + 0xa749, 0xa749, 0xa74b, 0xa74b, 0xa74d, 0xa74d, 0xa74f, 0xa74f, + 0xa751, 0xa751, 0xa753, 0xa753, 0xa755, 0xa755, 0xa757, 0xa757, + 0xa759, 0xa759, 0xa75b, 0xa75b, 0xa75d, 0xa75d, 0xa75f, 0xa75f, + 0xa761, 0xa761, 0xa763, 0xa763, 0xa765, 0xa765, 0xa767, 0xa767, + 0xa769, 0xa769, 0xa76b, 0xa76b, 0xa76d, 0xa76d, 0xa76f, 0xa76f, + 0xa770, 0xa771, 0xa772, 0xa773, 0xa774, 0xa775, 0xa776, 0xa777, + 0xa778, 0xa77a, 0xa77a, 0xa77c, 0xa77c, 0x1d79, 0xa77f, 0xa77f, + 0xa781, 0xa781, 0xa783, 0xa783, 0xa785, 0xa785, 0xa787, 0xa787, + 0xa788, 0xa789, 0xa78a, 0xa78c, 0xa78c, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xa7fb, 0xa7fc, 0xa7fd, 0xa7fe, 0xa7ff, + 0xa800, 0xa801, 0xa802, 0xa803, 0xa804, 0xa805, 0xa806, 0xa807, + 0xa808, 0xa809, 0xa80a, 0xa80b, 0xa80c, 0xa80d, 0xa80e, 0xa80f, + 0xa810, 0xa811, 0xa812, 0xa813, 0xa814, 0xa815, 0xa816, 0xa817, + 0xa818, 0xa819, 0xa81a, 0xa81b, 0xa81c, 0xa81d, 0xa81e, 0xa81f, + 0xa820, 0xa821, 0xa822, 0xa823, 0xa824, 0xa825, 0xa826, 0xa827, + 0xa828, 0xa829, 0xa82a, 0xa82b, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xa840, 0xa841, 0xa842, 0xa843, 0xa844, 0xa845, 0xa846, 0xa847, + 0xa848, 0xa849, 0xa84a, 0xa84b, 0xa84c, 0xa84d, 0xa84e, 0xa84f, + 0xa850, 0xa851, 0xa852, 0xa853, 0xa854, 0xa855, 0xa856, 0xa857, + 0xa858, 0xa859, 0xa85a, 0xa85b, 0xa85c, 0xa85d, 0xa85e, 0xa85f, + 0xa860, 0xa861, 0xa862, 0xa863, 0xa864, 0xa865, 0xa866, 0xa867, + 0xa868, 0xa869, 0xa86a, 0xa86b, 0xa86c, 0xa86d, 0xa86e, 0xa86f, + 0xa870, 0xa871, 0xa872, 0xa873, 0xa874, 0xa875, 0xa876, 0xa877, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xa880, 0xa881, 0xa882, 0xa883, 0xa884, 0xa885, 0xa886, 0xa887, + 0xa888, 0xa889, 0xa88a, 0xa88b, 0xa88c, 0xa88d, 0xa88e, 0xa88f, + 0xa890, 0xa891, 0xa892, 0xa893, 0xa894, 0xa895, 0xa896, 0xa897, + 0xa898, 0xa899, 0xa89a, 0xa89b, 0xa89c, 0xa89d, 0xa89e, 0xa89f, + 0xa8a0, 0xa8a1, 0xa8a2, 0xa8a3, 0xa8a4, 0xa8a5, 0xa8a6, 0xa8a7, + 0xa8a8, 0xa8a9, 0xa8aa, 0xa8ab, 0xa8ac, 0xa8ad, 0xa8ae, 0xa8af, + 0xa8b0, 0xa8b1, 0xa8b2, 0xa8b3, 0xa8b4, 0xa8b5, 0xa8b6, 0xa8b7, + 0xa8b8, 0xa8b9, 0xa8ba, 0xa8bb, 0xa8bc, 0xa8bd, 0xa8be, 0xa8bf, + 0xa8c0, 0xa8c1, 0xa8c2, 0xa8c3, 0xa8c4, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa8ce, 0xa8cf, + 0xa8d0, 0xa8d1, 0xa8d2, 0xa8d3, 0xa8d4, 0xa8d5, 0xa8d6, 0xa8d7, + 0xa8d8, 0xa8d9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xa900, 0xa901, 0xa902, 0xa903, 0xa904, 0xa905, 0xa906, 0xa907, + 0xa908, 0xa909, 0xa90a, 0xa90b, 0xa90c, 0xa90d, 0xa90e, 0xa90f, + 0xa910, 0xa911, 0xa912, 0xa913, 0xa914, 0xa915, 0xa916, 0xa917, + 0xa918, 0xa919, 0xa91a, 0xa91b, 0xa91c, 0xa91d, 0xa91e, 0xa91f, + 0xa920, 0xa921, 0xa922, 0xa923, 0xa924, 0xa925, 0xa926, 0xa927, + 0xa928, 0xa929, 0xa92a, 0xa92b, 0xa92c, 0xa92d, 0xa92e, 0xa92f, + 0xa930, 0xa931, 0xa932, 0xa933, 0xa934, 0xa935, 0xa936, 0xa937, + 0xa938, 0xa939, 0xa93a, 0xa93b, 0xa93c, 0xa93d, 0xa93e, 0xa93f, + 0xa940, 0xa941, 0xa942, 0xa943, 0xa944, 0xa945, 0xa946, 0xa947, + 0xa948, 0xa949, 0xa94a, 0xa94b, 0xa94c, 0xa94d, 0xa94e, 0xa94f, + 0xa950, 0xa951, 0xa952, 0xa953, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa95f, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xaa00, 0xaa01, 0xaa02, 0xaa03, 0xaa04, 0xaa05, 0xaa06, 0xaa07, + 0xaa08, 0xaa09, 0xaa0a, 0xaa0b, 0xaa0c, 0xaa0d, 0xaa0e, 0xaa0f, + 0xaa10, 0xaa11, 0xaa12, 0xaa13, 0xaa14, 0xaa15, 0xaa16, 0xaa17, + 0xaa18, 0xaa19, 0xaa1a, 0xaa1b, 0xaa1c, 0xaa1d, 0xaa1e, 0xaa1f, + 0xaa20, 0xaa21, 0xaa22, 0xaa23, 0xaa24, 0xaa25, 0xaa26, 0xaa27, + 0xaa28, 0xaa29, 0xaa2a, 0xaa2b, 0xaa2c, 0xaa2d, 0xaa2e, 0xaa2f, + 0xaa30, 0xaa31, 0xaa32, 0xaa33, 0xaa34, 0xaa35, 0xaa36, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xaa40, 0xaa41, 0xaa42, 0xaa43, 0xaa44, 0xaa45, 0xaa46, 0xaa47, + 0xaa48, 0xaa49, 0xaa4a, 0xaa4b, 0xaa4c, 0xaa4d, 0x0000, 0x0000, + 0xaa50, 0xaa51, 0xaa52, 0xaa53, 0xaa54, 0xaa55, 0xaa56, 0xaa57, + 0xaa58, 0xaa59, 0x0000, 0x0000, 0xaa5c, 0xaa5d, 0xaa5e, 0xaa5f, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xac00, 0xac01, 0xac02, 0xac03, 0xac04, 0xac05, 0xac06, 0xac07, + 0xac08, 0xac09, 0xac0a, 0xac0b, 0xac0c, 0xac0d, 0xac0e, 0xac0f, + 0xac10, 0xac11, 0xac12, 0xac13, 0xac14, 0xac15, 0xac16, 0xac17, + 0xac18, 0xac19, 0xac1a, 0xac1b, 0xac1c, 0xac1d, 0xac1e, 0xac1f, + 0xac20, 0xac21, 0xac22, 0xac23, 0xac24, 0xac25, 0xac26, 0xac27, + 0xac28, 0xac29, 0xac2a, 0xac2b, 0xac2c, 0xac2d, 0xac2e, 0xac2f, + 0xac30, 0xac31, 0xac32, 0xac33, 0xac34, 0xac35, 0xac36, 0xac37, + 0xac38, 0xac39, 0xac3a, 0xac3b, 0xac3c, 0xac3d, 0xac3e, 0xac3f, + 0xac40, 0xac41, 0xac42, 0xac43, 0xac44, 0xac45, 0xac46, 0xac47, + 0xac48, 0xac49, 0xac4a, 0xac4b, 0xac4c, 0xac4d, 0xac4e, 0xac4f, + 0xac50, 0xac51, 0xac52, 0xac53, 0xac54, 0xac55, 0xac56, 0xac57, + 0xac58, 0xac59, 0xac5a, 0xac5b, 0xac5c, 0xac5d, 0xac5e, 0xac5f, + 0xac60, 0xac61, 0xac62, 0xac63, 0xac64, 0xac65, 0xac66, 0xac67, + 0xac68, 0xac69, 0xac6a, 0xac6b, 0xac6c, 0xac6d, 0xac6e, 0xac6f, + 0xac70, 0xac71, 0xac72, 0xac73, 0xac74, 0xac75, 0xac76, 0xac77, + 0xac78, 0xac79, 0xac7a, 0xac7b, 0xac7c, 0xac7d, 0xac7e, 0xac7f, + 0xac80, 0xac81, 0xac82, 0xac83, 0xac84, 0xac85, 0xac86, 0xac87, + 0xac88, 0xac89, 0xac8a, 0xac8b, 0xac8c, 0xac8d, 0xac8e, 0xac8f, + 0xac90, 0xac91, 0xac92, 0xac93, 0xac94, 0xac95, 0xac96, 0xac97, + 0xac98, 0xac99, 0xac9a, 0xac9b, 0xac9c, 0xac9d, 0xac9e, 0xac9f, + 0xaca0, 0xaca1, 0xaca2, 0xaca3, 0xaca4, 0xaca5, 0xaca6, 0xaca7, + 0xaca8, 0xaca9, 0xacaa, 0xacab, 0xacac, 0xacad, 0xacae, 0xacaf, + 0xacb0, 0xacb1, 0xacb2, 0xacb3, 0xacb4, 0xacb5, 0xacb6, 0xacb7, + 0xacb8, 0xacb9, 0xacba, 0xacbb, 0xacbc, 0xacbd, 0xacbe, 0xacbf, + 0xacc0, 0xacc1, 0xacc2, 0xacc3, 0xacc4, 0xacc5, 0xacc6, 0xacc7, + 0xacc8, 0xacc9, 0xacca, 0xaccb, 0xaccc, 0xaccd, 0xacce, 0xaccf, + 0xacd0, 0xacd1, 0xacd2, 0xacd3, 0xacd4, 0xacd5, 0xacd6, 0xacd7, + 0xacd8, 0xacd9, 0xacda, 0xacdb, 0xacdc, 0xacdd, 0xacde, 0xacdf, + 0xace0, 0xace1, 0xace2, 0xace3, 0xace4, 0xace5, 0xace6, 0xace7, + 0xace8, 0xace9, 0xacea, 0xaceb, 0xacec, 0xaced, 0xacee, 0xacef, + 0xacf0, 0xacf1, 0xacf2, 0xacf3, 0xacf4, 0xacf5, 0xacf6, 0xacf7, + 0xacf8, 0xacf9, 0xacfa, 0xacfb, 0xacfc, 0xacfd, 0xacfe, 0xacff, + 0xad00, 0xad01, 0xad02, 0xad03, 0xad04, 0xad05, 0xad06, 0xad07, + 0xad08, 0xad09, 0xad0a, 0xad0b, 0xad0c, 0xad0d, 0xad0e, 0xad0f, + 0xad10, 0xad11, 0xad12, 0xad13, 0xad14, 0xad15, 0xad16, 0xad17, + 0xad18, 0xad19, 0xad1a, 0xad1b, 0xad1c, 0xad1d, 0xad1e, 0xad1f, + 0xad20, 0xad21, 0xad22, 0xad23, 0xad24, 0xad25, 0xad26, 0xad27, + 0xad28, 0xad29, 0xad2a, 0xad2b, 0xad2c, 0xad2d, 0xad2e, 0xad2f, + 0xad30, 0xad31, 0xad32, 0xad33, 0xad34, 0xad35, 0xad36, 0xad37, + 0xad38, 0xad39, 0xad3a, 0xad3b, 0xad3c, 0xad3d, 0xad3e, 0xad3f, + 0xad40, 0xad41, 0xad42, 0xad43, 0xad44, 0xad45, 0xad46, 0xad47, + 0xad48, 0xad49, 0xad4a, 0xad4b, 0xad4c, 0xad4d, 0xad4e, 0xad4f, + 0xad50, 0xad51, 0xad52, 0xad53, 0xad54, 0xad55, 0xad56, 0xad57, + 0xad58, 0xad59, 0xad5a, 0xad5b, 0xad5c, 0xad5d, 0xad5e, 0xad5f, + 0xad60, 0xad61, 0xad62, 0xad63, 0xad64, 0xad65, 0xad66, 0xad67, + 0xad68, 0xad69, 0xad6a, 0xad6b, 0xad6c, 0xad6d, 0xad6e, 0xad6f, + 0xad70, 0xad71, 0xad72, 0xad73, 0xad74, 0xad75, 0xad76, 0xad77, + 0xad78, 0xad79, 0xad7a, 0xad7b, 0xad7c, 0xad7d, 0xad7e, 0xad7f, + 0xad80, 0xad81, 0xad82, 0xad83, 0xad84, 0xad85, 0xad86, 0xad87, + 0xad88, 0xad89, 0xad8a, 0xad8b, 0xad8c, 0xad8d, 0xad8e, 0xad8f, + 0xad90, 0xad91, 0xad92, 0xad93, 0xad94, 0xad95, 0xad96, 0xad97, + 0xad98, 0xad99, 0xad9a, 0xad9b, 0xad9c, 0xad9d, 0xad9e, 0xad9f, + 0xada0, 0xada1, 0xada2, 0xada3, 0xada4, 0xada5, 0xada6, 0xada7, + 0xada8, 0xada9, 0xadaa, 0xadab, 0xadac, 0xadad, 0xadae, 0xadaf, + 0xadb0, 0xadb1, 0xadb2, 0xadb3, 0xadb4, 0xadb5, 0xadb6, 0xadb7, + 0xadb8, 0xadb9, 0xadba, 0xadbb, 0xadbc, 0xadbd, 0xadbe, 0xadbf, + 0xadc0, 0xadc1, 0xadc2, 0xadc3, 0xadc4, 0xadc5, 0xadc6, 0xadc7, + 0xadc8, 0xadc9, 0xadca, 0xadcb, 0xadcc, 0xadcd, 0xadce, 0xadcf, + 0xadd0, 0xadd1, 0xadd2, 0xadd3, 0xadd4, 0xadd5, 0xadd6, 0xadd7, + 0xadd8, 0xadd9, 0xadda, 0xaddb, 0xaddc, 0xaddd, 0xadde, 0xaddf, + 0xade0, 0xade1, 0xade2, 0xade3, 0xade4, 0xade5, 0xade6, 0xade7, + 0xade8, 0xade9, 0xadea, 0xadeb, 0xadec, 0xaded, 0xadee, 0xadef, + 0xadf0, 0xadf1, 0xadf2, 0xadf3, 0xadf4, 0xadf5, 0xadf6, 0xadf7, + 0xadf8, 0xadf9, 0xadfa, 0xadfb, 0xadfc, 0xadfd, 0xadfe, 0xadff, + 0xae00, 0xae01, 0xae02, 0xae03, 0xae04, 0xae05, 0xae06, 0xae07, + 0xae08, 0xae09, 0xae0a, 0xae0b, 0xae0c, 0xae0d, 0xae0e, 0xae0f, + 0xae10, 0xae11, 0xae12, 0xae13, 0xae14, 0xae15, 0xae16, 0xae17, + 0xae18, 0xae19, 0xae1a, 0xae1b, 0xae1c, 0xae1d, 0xae1e, 0xae1f, + 0xae20, 0xae21, 0xae22, 0xae23, 0xae24, 0xae25, 0xae26, 0xae27, + 0xae28, 0xae29, 0xae2a, 0xae2b, 0xae2c, 0xae2d, 0xae2e, 0xae2f, + 0xae30, 0xae31, 0xae32, 0xae33, 0xae34, 0xae35, 0xae36, 0xae37, + 0xae38, 0xae39, 0xae3a, 0xae3b, 0xae3c, 0xae3d, 0xae3e, 0xae3f, + 0xae40, 0xae41, 0xae42, 0xae43, 0xae44, 0xae45, 0xae46, 0xae47, + 0xae48, 0xae49, 0xae4a, 0xae4b, 0xae4c, 0xae4d, 0xae4e, 0xae4f, + 0xae50, 0xae51, 0xae52, 0xae53, 0xae54, 0xae55, 0xae56, 0xae57, + 0xae58, 0xae59, 0xae5a, 0xae5b, 0xae5c, 0xae5d, 0xae5e, 0xae5f, + 0xae60, 0xae61, 0xae62, 0xae63, 0xae64, 0xae65, 0xae66, 0xae67, + 0xae68, 0xae69, 0xae6a, 0xae6b, 0xae6c, 0xae6d, 0xae6e, 0xae6f, + 0xae70, 0xae71, 0xae72, 0xae73, 0xae74, 0xae75, 0xae76, 0xae77, + 0xae78, 0xae79, 0xae7a, 0xae7b, 0xae7c, 0xae7d, 0xae7e, 0xae7f, + 0xae80, 0xae81, 0xae82, 0xae83, 0xae84, 0xae85, 0xae86, 0xae87, + 0xae88, 0xae89, 0xae8a, 0xae8b, 0xae8c, 0xae8d, 0xae8e, 0xae8f, + 0xae90, 0xae91, 0xae92, 0xae93, 0xae94, 0xae95, 0xae96, 0xae97, + 0xae98, 0xae99, 0xae9a, 0xae9b, 0xae9c, 0xae9d, 0xae9e, 0xae9f, + 0xaea0, 0xaea1, 0xaea2, 0xaea3, 0xaea4, 0xaea5, 0xaea6, 0xaea7, + 0xaea8, 0xaea9, 0xaeaa, 0xaeab, 0xaeac, 0xaead, 0xaeae, 0xaeaf, + 0xaeb0, 0xaeb1, 0xaeb2, 0xaeb3, 0xaeb4, 0xaeb5, 0xaeb6, 0xaeb7, + 0xaeb8, 0xaeb9, 0xaeba, 0xaebb, 0xaebc, 0xaebd, 0xaebe, 0xaebf, + 0xaec0, 0xaec1, 0xaec2, 0xaec3, 0xaec4, 0xaec5, 0xaec6, 0xaec7, + 0xaec8, 0xaec9, 0xaeca, 0xaecb, 0xaecc, 0xaecd, 0xaece, 0xaecf, + 0xaed0, 0xaed1, 0xaed2, 0xaed3, 0xaed4, 0xaed5, 0xaed6, 0xaed7, + 0xaed8, 0xaed9, 0xaeda, 0xaedb, 0xaedc, 0xaedd, 0xaede, 0xaedf, + 0xaee0, 0xaee1, 0xaee2, 0xaee3, 0xaee4, 0xaee5, 0xaee6, 0xaee7, + 0xaee8, 0xaee9, 0xaeea, 0xaeeb, 0xaeec, 0xaeed, 0xaeee, 0xaeef, + 0xaef0, 0xaef1, 0xaef2, 0xaef3, 0xaef4, 0xaef5, 0xaef6, 0xaef7, + 0xaef8, 0xaef9, 0xaefa, 0xaefb, 0xaefc, 0xaefd, 0xaefe, 0xaeff, + 0xaf00, 0xaf01, 0xaf02, 0xaf03, 0xaf04, 0xaf05, 0xaf06, 0xaf07, + 0xaf08, 0xaf09, 0xaf0a, 0xaf0b, 0xaf0c, 0xaf0d, 0xaf0e, 0xaf0f, + 0xaf10, 0xaf11, 0xaf12, 0xaf13, 0xaf14, 0xaf15, 0xaf16, 0xaf17, + 0xaf18, 0xaf19, 0xaf1a, 0xaf1b, 0xaf1c, 0xaf1d, 0xaf1e, 0xaf1f, + 0xaf20, 0xaf21, 0xaf22, 0xaf23, 0xaf24, 0xaf25, 0xaf26, 0xaf27, + 0xaf28, 0xaf29, 0xaf2a, 0xaf2b, 0xaf2c, 0xaf2d, 0xaf2e, 0xaf2f, + 0xaf30, 0xaf31, 0xaf32, 0xaf33, 0xaf34, 0xaf35, 0xaf36, 0xaf37, + 0xaf38, 0xaf39, 0xaf3a, 0xaf3b, 0xaf3c, 0xaf3d, 0xaf3e, 0xaf3f, + 0xaf40, 0xaf41, 0xaf42, 0xaf43, 0xaf44, 0xaf45, 0xaf46, 0xaf47, + 0xaf48, 0xaf49, 0xaf4a, 0xaf4b, 0xaf4c, 0xaf4d, 0xaf4e, 0xaf4f, + 0xaf50, 0xaf51, 0xaf52, 0xaf53, 0xaf54, 0xaf55, 0xaf56, 0xaf57, + 0xaf58, 0xaf59, 0xaf5a, 0xaf5b, 0xaf5c, 0xaf5d, 0xaf5e, 0xaf5f, + 0xaf60, 0xaf61, 0xaf62, 0xaf63, 0xaf64, 0xaf65, 0xaf66, 0xaf67, + 0xaf68, 0xaf69, 0xaf6a, 0xaf6b, 0xaf6c, 0xaf6d, 0xaf6e, 0xaf6f, + 0xaf70, 0xaf71, 0xaf72, 0xaf73, 0xaf74, 0xaf75, 0xaf76, 0xaf77, + 0xaf78, 0xaf79, 0xaf7a, 0xaf7b, 0xaf7c, 0xaf7d, 0xaf7e, 0xaf7f, + 0xaf80, 0xaf81, 0xaf82, 0xaf83, 0xaf84, 0xaf85, 0xaf86, 0xaf87, + 0xaf88, 0xaf89, 0xaf8a, 0xaf8b, 0xaf8c, 0xaf8d, 0xaf8e, 0xaf8f, + 0xaf90, 0xaf91, 0xaf92, 0xaf93, 0xaf94, 0xaf95, 0xaf96, 0xaf97, + 0xaf98, 0xaf99, 0xaf9a, 0xaf9b, 0xaf9c, 0xaf9d, 0xaf9e, 0xaf9f, + 0xafa0, 0xafa1, 0xafa2, 0xafa3, 0xafa4, 0xafa5, 0xafa6, 0xafa7, + 0xafa8, 0xafa9, 0xafaa, 0xafab, 0xafac, 0xafad, 0xafae, 0xafaf, + 0xafb0, 0xafb1, 0xafb2, 0xafb3, 0xafb4, 0xafb5, 0xafb6, 0xafb7, + 0xafb8, 0xafb9, 0xafba, 0xafbb, 0xafbc, 0xafbd, 0xafbe, 0xafbf, + 0xafc0, 0xafc1, 0xafc2, 0xafc3, 0xafc4, 0xafc5, 0xafc6, 0xafc7, + 0xafc8, 0xafc9, 0xafca, 0xafcb, 0xafcc, 0xafcd, 0xafce, 0xafcf, + 0xafd0, 0xafd1, 0xafd2, 0xafd3, 0xafd4, 0xafd5, 0xafd6, 0xafd7, + 0xafd8, 0xafd9, 0xafda, 0xafdb, 0xafdc, 0xafdd, 0xafde, 0xafdf, + 0xafe0, 0xafe1, 0xafe2, 0xafe3, 0xafe4, 0xafe5, 0xafe6, 0xafe7, + 0xafe8, 0xafe9, 0xafea, 0xafeb, 0xafec, 0xafed, 0xafee, 0xafef, + 0xaff0, 0xaff1, 0xaff2, 0xaff3, 0xaff4, 0xaff5, 0xaff6, 0xaff7, + 0xaff8, 0xaff9, 0xaffa, 0xaffb, 0xaffc, 0xaffd, 0xaffe, 0xafff, + 0xb000, 0xb001, 0xb002, 0xb003, 0xb004, 0xb005, 0xb006, 0xb007, + 0xb008, 0xb009, 0xb00a, 0xb00b, 0xb00c, 0xb00d, 0xb00e, 0xb00f, + 0xb010, 0xb011, 0xb012, 0xb013, 0xb014, 0xb015, 0xb016, 0xb017, + 0xb018, 0xb019, 0xb01a, 0xb01b, 0xb01c, 0xb01d, 0xb01e, 0xb01f, + 0xb020, 0xb021, 0xb022, 0xb023, 0xb024, 0xb025, 0xb026, 0xb027, + 0xb028, 0xb029, 0xb02a, 0xb02b, 0xb02c, 0xb02d, 0xb02e, 0xb02f, + 0xb030, 0xb031, 0xb032, 0xb033, 0xb034, 0xb035, 0xb036, 0xb037, + 0xb038, 0xb039, 0xb03a, 0xb03b, 0xb03c, 0xb03d, 0xb03e, 0xb03f, + 0xb040, 0xb041, 0xb042, 0xb043, 0xb044, 0xb045, 0xb046, 0xb047, + 0xb048, 0xb049, 0xb04a, 0xb04b, 0xb04c, 0xb04d, 0xb04e, 0xb04f, + 0xb050, 0xb051, 0xb052, 0xb053, 0xb054, 0xb055, 0xb056, 0xb057, + 0xb058, 0xb059, 0xb05a, 0xb05b, 0xb05c, 0xb05d, 0xb05e, 0xb05f, + 0xb060, 0xb061, 0xb062, 0xb063, 0xb064, 0xb065, 0xb066, 0xb067, + 0xb068, 0xb069, 0xb06a, 0xb06b, 0xb06c, 0xb06d, 0xb06e, 0xb06f, + 0xb070, 0xb071, 0xb072, 0xb073, 0xb074, 0xb075, 0xb076, 0xb077, + 0xb078, 0xb079, 0xb07a, 0xb07b, 0xb07c, 0xb07d, 0xb07e, 0xb07f, + 0xb080, 0xb081, 0xb082, 0xb083, 0xb084, 0xb085, 0xb086, 0xb087, + 0xb088, 0xb089, 0xb08a, 0xb08b, 0xb08c, 0xb08d, 0xb08e, 0xb08f, + 0xb090, 0xb091, 0xb092, 0xb093, 0xb094, 0xb095, 0xb096, 0xb097, + 0xb098, 0xb099, 0xb09a, 0xb09b, 0xb09c, 0xb09d, 0xb09e, 0xb09f, + 0xb0a0, 0xb0a1, 0xb0a2, 0xb0a3, 0xb0a4, 0xb0a5, 0xb0a6, 0xb0a7, + 0xb0a8, 0xb0a9, 0xb0aa, 0xb0ab, 0xb0ac, 0xb0ad, 0xb0ae, 0xb0af, + 0xb0b0, 0xb0b1, 0xb0b2, 0xb0b3, 0xb0b4, 0xb0b5, 0xb0b6, 0xb0b7, + 0xb0b8, 0xb0b9, 0xb0ba, 0xb0bb, 0xb0bc, 0xb0bd, 0xb0be, 0xb0bf, + 0xb0c0, 0xb0c1, 0xb0c2, 0xb0c3, 0xb0c4, 0xb0c5, 0xb0c6, 0xb0c7, + 0xb0c8, 0xb0c9, 0xb0ca, 0xb0cb, 0xb0cc, 0xb0cd, 0xb0ce, 0xb0cf, + 0xb0d0, 0xb0d1, 0xb0d2, 0xb0d3, 0xb0d4, 0xb0d5, 0xb0d6, 0xb0d7, + 0xb0d8, 0xb0d9, 0xb0da, 0xb0db, 0xb0dc, 0xb0dd, 0xb0de, 0xb0df, + 0xb0e0, 0xb0e1, 0xb0e2, 0xb0e3, 0xb0e4, 0xb0e5, 0xb0e6, 0xb0e7, + 0xb0e8, 0xb0e9, 0xb0ea, 0xb0eb, 0xb0ec, 0xb0ed, 0xb0ee, 0xb0ef, + 0xb0f0, 0xb0f1, 0xb0f2, 0xb0f3, 0xb0f4, 0xb0f5, 0xb0f6, 0xb0f7, + 0xb0f8, 0xb0f9, 0xb0fa, 0xb0fb, 0xb0fc, 0xb0fd, 0xb0fe, 0xb0ff, + 0xb100, 0xb101, 0xb102, 0xb103, 0xb104, 0xb105, 0xb106, 0xb107, + 0xb108, 0xb109, 0xb10a, 0xb10b, 0xb10c, 0xb10d, 0xb10e, 0xb10f, + 0xb110, 0xb111, 0xb112, 0xb113, 0xb114, 0xb115, 0xb116, 0xb117, + 0xb118, 0xb119, 0xb11a, 0xb11b, 0xb11c, 0xb11d, 0xb11e, 0xb11f, + 0xb120, 0xb121, 0xb122, 0xb123, 0xb124, 0xb125, 0xb126, 0xb127, + 0xb128, 0xb129, 0xb12a, 0xb12b, 0xb12c, 0xb12d, 0xb12e, 0xb12f, + 0xb130, 0xb131, 0xb132, 0xb133, 0xb134, 0xb135, 0xb136, 0xb137, + 0xb138, 0xb139, 0xb13a, 0xb13b, 0xb13c, 0xb13d, 0xb13e, 0xb13f, + 0xb140, 0xb141, 0xb142, 0xb143, 0xb144, 0xb145, 0xb146, 0xb147, + 0xb148, 0xb149, 0xb14a, 0xb14b, 0xb14c, 0xb14d, 0xb14e, 0xb14f, + 0xb150, 0xb151, 0xb152, 0xb153, 0xb154, 0xb155, 0xb156, 0xb157, + 0xb158, 0xb159, 0xb15a, 0xb15b, 0xb15c, 0xb15d, 0xb15e, 0xb15f, + 0xb160, 0xb161, 0xb162, 0xb163, 0xb164, 0xb165, 0xb166, 0xb167, + 0xb168, 0xb169, 0xb16a, 0xb16b, 0xb16c, 0xb16d, 0xb16e, 0xb16f, + 0xb170, 0xb171, 0xb172, 0xb173, 0xb174, 0xb175, 0xb176, 0xb177, + 0xb178, 0xb179, 0xb17a, 0xb17b, 0xb17c, 0xb17d, 0xb17e, 0xb17f, + 0xb180, 0xb181, 0xb182, 0xb183, 0xb184, 0xb185, 0xb186, 0xb187, + 0xb188, 0xb189, 0xb18a, 0xb18b, 0xb18c, 0xb18d, 0xb18e, 0xb18f, + 0xb190, 0xb191, 0xb192, 0xb193, 0xb194, 0xb195, 0xb196, 0xb197, + 0xb198, 0xb199, 0xb19a, 0xb19b, 0xb19c, 0xb19d, 0xb19e, 0xb19f, + 0xb1a0, 0xb1a1, 0xb1a2, 0xb1a3, 0xb1a4, 0xb1a5, 0xb1a6, 0xb1a7, + 0xb1a8, 0xb1a9, 0xb1aa, 0xb1ab, 0xb1ac, 0xb1ad, 0xb1ae, 0xb1af, + 0xb1b0, 0xb1b1, 0xb1b2, 0xb1b3, 0xb1b4, 0xb1b5, 0xb1b6, 0xb1b7, + 0xb1b8, 0xb1b9, 0xb1ba, 0xb1bb, 0xb1bc, 0xb1bd, 0xb1be, 0xb1bf, + 0xb1c0, 0xb1c1, 0xb1c2, 0xb1c3, 0xb1c4, 0xb1c5, 0xb1c6, 0xb1c7, + 0xb1c8, 0xb1c9, 0xb1ca, 0xb1cb, 0xb1cc, 0xb1cd, 0xb1ce, 0xb1cf, + 0xb1d0, 0xb1d1, 0xb1d2, 0xb1d3, 0xb1d4, 0xb1d5, 0xb1d6, 0xb1d7, + 0xb1d8, 0xb1d9, 0xb1da, 0xb1db, 0xb1dc, 0xb1dd, 0xb1de, 0xb1df, + 0xb1e0, 0xb1e1, 0xb1e2, 0xb1e3, 0xb1e4, 0xb1e5, 0xb1e6, 0xb1e7, + 0xb1e8, 0xb1e9, 0xb1ea, 0xb1eb, 0xb1ec, 0xb1ed, 0xb1ee, 0xb1ef, + 0xb1f0, 0xb1f1, 0xb1f2, 0xb1f3, 0xb1f4, 0xb1f5, 0xb1f6, 0xb1f7, + 0xb1f8, 0xb1f9, 0xb1fa, 0xb1fb, 0xb1fc, 0xb1fd, 0xb1fe, 0xb1ff, + 0xb200, 0xb201, 0xb202, 0xb203, 0xb204, 0xb205, 0xb206, 0xb207, + 0xb208, 0xb209, 0xb20a, 0xb20b, 0xb20c, 0xb20d, 0xb20e, 0xb20f, + 0xb210, 0xb211, 0xb212, 0xb213, 0xb214, 0xb215, 0xb216, 0xb217, + 0xb218, 0xb219, 0xb21a, 0xb21b, 0xb21c, 0xb21d, 0xb21e, 0xb21f, + 0xb220, 0xb221, 0xb222, 0xb223, 0xb224, 0xb225, 0xb226, 0xb227, + 0xb228, 0xb229, 0xb22a, 0xb22b, 0xb22c, 0xb22d, 0xb22e, 0xb22f, + 0xb230, 0xb231, 0xb232, 0xb233, 0xb234, 0xb235, 0xb236, 0xb237, + 0xb238, 0xb239, 0xb23a, 0xb23b, 0xb23c, 0xb23d, 0xb23e, 0xb23f, + 0xb240, 0xb241, 0xb242, 0xb243, 0xb244, 0xb245, 0xb246, 0xb247, + 0xb248, 0xb249, 0xb24a, 0xb24b, 0xb24c, 0xb24d, 0xb24e, 0xb24f, + 0xb250, 0xb251, 0xb252, 0xb253, 0xb254, 0xb255, 0xb256, 0xb257, + 0xb258, 0xb259, 0xb25a, 0xb25b, 0xb25c, 0xb25d, 0xb25e, 0xb25f, + 0xb260, 0xb261, 0xb262, 0xb263, 0xb264, 0xb265, 0xb266, 0xb267, + 0xb268, 0xb269, 0xb26a, 0xb26b, 0xb26c, 0xb26d, 0xb26e, 0xb26f, + 0xb270, 0xb271, 0xb272, 0xb273, 0xb274, 0xb275, 0xb276, 0xb277, + 0xb278, 0xb279, 0xb27a, 0xb27b, 0xb27c, 0xb27d, 0xb27e, 0xb27f, + 0xb280, 0xb281, 0xb282, 0xb283, 0xb284, 0xb285, 0xb286, 0xb287, + 0xb288, 0xb289, 0xb28a, 0xb28b, 0xb28c, 0xb28d, 0xb28e, 0xb28f, + 0xb290, 0xb291, 0xb292, 0xb293, 0xb294, 0xb295, 0xb296, 0xb297, + 0xb298, 0xb299, 0xb29a, 0xb29b, 0xb29c, 0xb29d, 0xb29e, 0xb29f, + 0xb2a0, 0xb2a1, 0xb2a2, 0xb2a3, 0xb2a4, 0xb2a5, 0xb2a6, 0xb2a7, + 0xb2a8, 0xb2a9, 0xb2aa, 0xb2ab, 0xb2ac, 0xb2ad, 0xb2ae, 0xb2af, + 0xb2b0, 0xb2b1, 0xb2b2, 0xb2b3, 0xb2b4, 0xb2b5, 0xb2b6, 0xb2b7, + 0xb2b8, 0xb2b9, 0xb2ba, 0xb2bb, 0xb2bc, 0xb2bd, 0xb2be, 0xb2bf, + 0xb2c0, 0xb2c1, 0xb2c2, 0xb2c3, 0xb2c4, 0xb2c5, 0xb2c6, 0xb2c7, + 0xb2c8, 0xb2c9, 0xb2ca, 0xb2cb, 0xb2cc, 0xb2cd, 0xb2ce, 0xb2cf, + 0xb2d0, 0xb2d1, 0xb2d2, 0xb2d3, 0xb2d4, 0xb2d5, 0xb2d6, 0xb2d7, + 0xb2d8, 0xb2d9, 0xb2da, 0xb2db, 0xb2dc, 0xb2dd, 0xb2de, 0xb2df, + 0xb2e0, 0xb2e1, 0xb2e2, 0xb2e3, 0xb2e4, 0xb2e5, 0xb2e6, 0xb2e7, + 0xb2e8, 0xb2e9, 0xb2ea, 0xb2eb, 0xb2ec, 0xb2ed, 0xb2ee, 0xb2ef, + 0xb2f0, 0xb2f1, 0xb2f2, 0xb2f3, 0xb2f4, 0xb2f5, 0xb2f6, 0xb2f7, + 0xb2f8, 0xb2f9, 0xb2fa, 0xb2fb, 0xb2fc, 0xb2fd, 0xb2fe, 0xb2ff, + 0xb300, 0xb301, 0xb302, 0xb303, 0xb304, 0xb305, 0xb306, 0xb307, + 0xb308, 0xb309, 0xb30a, 0xb30b, 0xb30c, 0xb30d, 0xb30e, 0xb30f, + 0xb310, 0xb311, 0xb312, 0xb313, 0xb314, 0xb315, 0xb316, 0xb317, + 0xb318, 0xb319, 0xb31a, 0xb31b, 0xb31c, 0xb31d, 0xb31e, 0xb31f, + 0xb320, 0xb321, 0xb322, 0xb323, 0xb324, 0xb325, 0xb326, 0xb327, + 0xb328, 0xb329, 0xb32a, 0xb32b, 0xb32c, 0xb32d, 0xb32e, 0xb32f, + 0xb330, 0xb331, 0xb332, 0xb333, 0xb334, 0xb335, 0xb336, 0xb337, + 0xb338, 0xb339, 0xb33a, 0xb33b, 0xb33c, 0xb33d, 0xb33e, 0xb33f, + 0xb340, 0xb341, 0xb342, 0xb343, 0xb344, 0xb345, 0xb346, 0xb347, + 0xb348, 0xb349, 0xb34a, 0xb34b, 0xb34c, 0xb34d, 0xb34e, 0xb34f, + 0xb350, 0xb351, 0xb352, 0xb353, 0xb354, 0xb355, 0xb356, 0xb357, + 0xb358, 0xb359, 0xb35a, 0xb35b, 0xb35c, 0xb35d, 0xb35e, 0xb35f, + 0xb360, 0xb361, 0xb362, 0xb363, 0xb364, 0xb365, 0xb366, 0xb367, + 0xb368, 0xb369, 0xb36a, 0xb36b, 0xb36c, 0xb36d, 0xb36e, 0xb36f, + 0xb370, 0xb371, 0xb372, 0xb373, 0xb374, 0xb375, 0xb376, 0xb377, + 0xb378, 0xb379, 0xb37a, 0xb37b, 0xb37c, 0xb37d, 0xb37e, 0xb37f, + 0xb380, 0xb381, 0xb382, 0xb383, 0xb384, 0xb385, 0xb386, 0xb387, + 0xb388, 0xb389, 0xb38a, 0xb38b, 0xb38c, 0xb38d, 0xb38e, 0xb38f, + 0xb390, 0xb391, 0xb392, 0xb393, 0xb394, 0xb395, 0xb396, 0xb397, + 0xb398, 0xb399, 0xb39a, 0xb39b, 0xb39c, 0xb39d, 0xb39e, 0xb39f, + 0xb3a0, 0xb3a1, 0xb3a2, 0xb3a3, 0xb3a4, 0xb3a5, 0xb3a6, 0xb3a7, + 0xb3a8, 0xb3a9, 0xb3aa, 0xb3ab, 0xb3ac, 0xb3ad, 0xb3ae, 0xb3af, + 0xb3b0, 0xb3b1, 0xb3b2, 0xb3b3, 0xb3b4, 0xb3b5, 0xb3b6, 0xb3b7, + 0xb3b8, 0xb3b9, 0xb3ba, 0xb3bb, 0xb3bc, 0xb3bd, 0xb3be, 0xb3bf, + 0xb3c0, 0xb3c1, 0xb3c2, 0xb3c3, 0xb3c4, 0xb3c5, 0xb3c6, 0xb3c7, + 0xb3c8, 0xb3c9, 0xb3ca, 0xb3cb, 0xb3cc, 0xb3cd, 0xb3ce, 0xb3cf, + 0xb3d0, 0xb3d1, 0xb3d2, 0xb3d3, 0xb3d4, 0xb3d5, 0xb3d6, 0xb3d7, + 0xb3d8, 0xb3d9, 0xb3da, 0xb3db, 0xb3dc, 0xb3dd, 0xb3de, 0xb3df, + 0xb3e0, 0xb3e1, 0xb3e2, 0xb3e3, 0xb3e4, 0xb3e5, 0xb3e6, 0xb3e7, + 0xb3e8, 0xb3e9, 0xb3ea, 0xb3eb, 0xb3ec, 0xb3ed, 0xb3ee, 0xb3ef, + 0xb3f0, 0xb3f1, 0xb3f2, 0xb3f3, 0xb3f4, 0xb3f5, 0xb3f6, 0xb3f7, + 0xb3f8, 0xb3f9, 0xb3fa, 0xb3fb, 0xb3fc, 0xb3fd, 0xb3fe, 0xb3ff, + 0xb400, 0xb401, 0xb402, 0xb403, 0xb404, 0xb405, 0xb406, 0xb407, + 0xb408, 0xb409, 0xb40a, 0xb40b, 0xb40c, 0xb40d, 0xb40e, 0xb40f, + 0xb410, 0xb411, 0xb412, 0xb413, 0xb414, 0xb415, 0xb416, 0xb417, + 0xb418, 0xb419, 0xb41a, 0xb41b, 0xb41c, 0xb41d, 0xb41e, 0xb41f, + 0xb420, 0xb421, 0xb422, 0xb423, 0xb424, 0xb425, 0xb426, 0xb427, + 0xb428, 0xb429, 0xb42a, 0xb42b, 0xb42c, 0xb42d, 0xb42e, 0xb42f, + 0xb430, 0xb431, 0xb432, 0xb433, 0xb434, 0xb435, 0xb436, 0xb437, + 0xb438, 0xb439, 0xb43a, 0xb43b, 0xb43c, 0xb43d, 0xb43e, 0xb43f, + 0xb440, 0xb441, 0xb442, 0xb443, 0xb444, 0xb445, 0xb446, 0xb447, + 0xb448, 0xb449, 0xb44a, 0xb44b, 0xb44c, 0xb44d, 0xb44e, 0xb44f, + 0xb450, 0xb451, 0xb452, 0xb453, 0xb454, 0xb455, 0xb456, 0xb457, + 0xb458, 0xb459, 0xb45a, 0xb45b, 0xb45c, 0xb45d, 0xb45e, 0xb45f, + 0xb460, 0xb461, 0xb462, 0xb463, 0xb464, 0xb465, 0xb466, 0xb467, + 0xb468, 0xb469, 0xb46a, 0xb46b, 0xb46c, 0xb46d, 0xb46e, 0xb46f, + 0xb470, 0xb471, 0xb472, 0xb473, 0xb474, 0xb475, 0xb476, 0xb477, + 0xb478, 0xb479, 0xb47a, 0xb47b, 0xb47c, 0xb47d, 0xb47e, 0xb47f, + 0xb480, 0xb481, 0xb482, 0xb483, 0xb484, 0xb485, 0xb486, 0xb487, + 0xb488, 0xb489, 0xb48a, 0xb48b, 0xb48c, 0xb48d, 0xb48e, 0xb48f, + 0xb490, 0xb491, 0xb492, 0xb493, 0xb494, 0xb495, 0xb496, 0xb497, + 0xb498, 0xb499, 0xb49a, 0xb49b, 0xb49c, 0xb49d, 0xb49e, 0xb49f, + 0xb4a0, 0xb4a1, 0xb4a2, 0xb4a3, 0xb4a4, 0xb4a5, 0xb4a6, 0xb4a7, + 0xb4a8, 0xb4a9, 0xb4aa, 0xb4ab, 0xb4ac, 0xb4ad, 0xb4ae, 0xb4af, + 0xb4b0, 0xb4b1, 0xb4b2, 0xb4b3, 0xb4b4, 0xb4b5, 0xb4b6, 0xb4b7, + 0xb4b8, 0xb4b9, 0xb4ba, 0xb4bb, 0xb4bc, 0xb4bd, 0xb4be, 0xb4bf, + 0xb4c0, 0xb4c1, 0xb4c2, 0xb4c3, 0xb4c4, 0xb4c5, 0xb4c6, 0xb4c7, + 0xb4c8, 0xb4c9, 0xb4ca, 0xb4cb, 0xb4cc, 0xb4cd, 0xb4ce, 0xb4cf, + 0xb4d0, 0xb4d1, 0xb4d2, 0xb4d3, 0xb4d4, 0xb4d5, 0xb4d6, 0xb4d7, + 0xb4d8, 0xb4d9, 0xb4da, 0xb4db, 0xb4dc, 0xb4dd, 0xb4de, 0xb4df, + 0xb4e0, 0xb4e1, 0xb4e2, 0xb4e3, 0xb4e4, 0xb4e5, 0xb4e6, 0xb4e7, + 0xb4e8, 0xb4e9, 0xb4ea, 0xb4eb, 0xb4ec, 0xb4ed, 0xb4ee, 0xb4ef, + 0xb4f0, 0xb4f1, 0xb4f2, 0xb4f3, 0xb4f4, 0xb4f5, 0xb4f6, 0xb4f7, + 0xb4f8, 0xb4f9, 0xb4fa, 0xb4fb, 0xb4fc, 0xb4fd, 0xb4fe, 0xb4ff, + 0xb500, 0xb501, 0xb502, 0xb503, 0xb504, 0xb505, 0xb506, 0xb507, + 0xb508, 0xb509, 0xb50a, 0xb50b, 0xb50c, 0xb50d, 0xb50e, 0xb50f, + 0xb510, 0xb511, 0xb512, 0xb513, 0xb514, 0xb515, 0xb516, 0xb517, + 0xb518, 0xb519, 0xb51a, 0xb51b, 0xb51c, 0xb51d, 0xb51e, 0xb51f, + 0xb520, 0xb521, 0xb522, 0xb523, 0xb524, 0xb525, 0xb526, 0xb527, + 0xb528, 0xb529, 0xb52a, 0xb52b, 0xb52c, 0xb52d, 0xb52e, 0xb52f, + 0xb530, 0xb531, 0xb532, 0xb533, 0xb534, 0xb535, 0xb536, 0xb537, + 0xb538, 0xb539, 0xb53a, 0xb53b, 0xb53c, 0xb53d, 0xb53e, 0xb53f, + 0xb540, 0xb541, 0xb542, 0xb543, 0xb544, 0xb545, 0xb546, 0xb547, + 0xb548, 0xb549, 0xb54a, 0xb54b, 0xb54c, 0xb54d, 0xb54e, 0xb54f, + 0xb550, 0xb551, 0xb552, 0xb553, 0xb554, 0xb555, 0xb556, 0xb557, + 0xb558, 0xb559, 0xb55a, 0xb55b, 0xb55c, 0xb55d, 0xb55e, 0xb55f, + 0xb560, 0xb561, 0xb562, 0xb563, 0xb564, 0xb565, 0xb566, 0xb567, + 0xb568, 0xb569, 0xb56a, 0xb56b, 0xb56c, 0xb56d, 0xb56e, 0xb56f, + 0xb570, 0xb571, 0xb572, 0xb573, 0xb574, 0xb575, 0xb576, 0xb577, + 0xb578, 0xb579, 0xb57a, 0xb57b, 0xb57c, 0xb57d, 0xb57e, 0xb57f, + 0xb580, 0xb581, 0xb582, 0xb583, 0xb584, 0xb585, 0xb586, 0xb587, + 0xb588, 0xb589, 0xb58a, 0xb58b, 0xb58c, 0xb58d, 0xb58e, 0xb58f, + 0xb590, 0xb591, 0xb592, 0xb593, 0xb594, 0xb595, 0xb596, 0xb597, + 0xb598, 0xb599, 0xb59a, 0xb59b, 0xb59c, 0xb59d, 0xb59e, 0xb59f, + 0xb5a0, 0xb5a1, 0xb5a2, 0xb5a3, 0xb5a4, 0xb5a5, 0xb5a6, 0xb5a7, + 0xb5a8, 0xb5a9, 0xb5aa, 0xb5ab, 0xb5ac, 0xb5ad, 0xb5ae, 0xb5af, + 0xb5b0, 0xb5b1, 0xb5b2, 0xb5b3, 0xb5b4, 0xb5b5, 0xb5b6, 0xb5b7, + 0xb5b8, 0xb5b9, 0xb5ba, 0xb5bb, 0xb5bc, 0xb5bd, 0xb5be, 0xb5bf, + 0xb5c0, 0xb5c1, 0xb5c2, 0xb5c3, 0xb5c4, 0xb5c5, 0xb5c6, 0xb5c7, + 0xb5c8, 0xb5c9, 0xb5ca, 0xb5cb, 0xb5cc, 0xb5cd, 0xb5ce, 0xb5cf, + 0xb5d0, 0xb5d1, 0xb5d2, 0xb5d3, 0xb5d4, 0xb5d5, 0xb5d6, 0xb5d7, + 0xb5d8, 0xb5d9, 0xb5da, 0xb5db, 0xb5dc, 0xb5dd, 0xb5de, 0xb5df, + 0xb5e0, 0xb5e1, 0xb5e2, 0xb5e3, 0xb5e4, 0xb5e5, 0xb5e6, 0xb5e7, + 0xb5e8, 0xb5e9, 0xb5ea, 0xb5eb, 0xb5ec, 0xb5ed, 0xb5ee, 0xb5ef, + 0xb5f0, 0xb5f1, 0xb5f2, 0xb5f3, 0xb5f4, 0xb5f5, 0xb5f6, 0xb5f7, + 0xb5f8, 0xb5f9, 0xb5fa, 0xb5fb, 0xb5fc, 0xb5fd, 0xb5fe, 0xb5ff, + 0xb600, 0xb601, 0xb602, 0xb603, 0xb604, 0xb605, 0xb606, 0xb607, + 0xb608, 0xb609, 0xb60a, 0xb60b, 0xb60c, 0xb60d, 0xb60e, 0xb60f, + 0xb610, 0xb611, 0xb612, 0xb613, 0xb614, 0xb615, 0xb616, 0xb617, + 0xb618, 0xb619, 0xb61a, 0xb61b, 0xb61c, 0xb61d, 0xb61e, 0xb61f, + 0xb620, 0xb621, 0xb622, 0xb623, 0xb624, 0xb625, 0xb626, 0xb627, + 0xb628, 0xb629, 0xb62a, 0xb62b, 0xb62c, 0xb62d, 0xb62e, 0xb62f, + 0xb630, 0xb631, 0xb632, 0xb633, 0xb634, 0xb635, 0xb636, 0xb637, + 0xb638, 0xb639, 0xb63a, 0xb63b, 0xb63c, 0xb63d, 0xb63e, 0xb63f, + 0xb640, 0xb641, 0xb642, 0xb643, 0xb644, 0xb645, 0xb646, 0xb647, + 0xb648, 0xb649, 0xb64a, 0xb64b, 0xb64c, 0xb64d, 0xb64e, 0xb64f, + 0xb650, 0xb651, 0xb652, 0xb653, 0xb654, 0xb655, 0xb656, 0xb657, + 0xb658, 0xb659, 0xb65a, 0xb65b, 0xb65c, 0xb65d, 0xb65e, 0xb65f, + 0xb660, 0xb661, 0xb662, 0xb663, 0xb664, 0xb665, 0xb666, 0xb667, + 0xb668, 0xb669, 0xb66a, 0xb66b, 0xb66c, 0xb66d, 0xb66e, 0xb66f, + 0xb670, 0xb671, 0xb672, 0xb673, 0xb674, 0xb675, 0xb676, 0xb677, + 0xb678, 0xb679, 0xb67a, 0xb67b, 0xb67c, 0xb67d, 0xb67e, 0xb67f, + 0xb680, 0xb681, 0xb682, 0xb683, 0xb684, 0xb685, 0xb686, 0xb687, + 0xb688, 0xb689, 0xb68a, 0xb68b, 0xb68c, 0xb68d, 0xb68e, 0xb68f, + 0xb690, 0xb691, 0xb692, 0xb693, 0xb694, 0xb695, 0xb696, 0xb697, + 0xb698, 0xb699, 0xb69a, 0xb69b, 0xb69c, 0xb69d, 0xb69e, 0xb69f, + 0xb6a0, 0xb6a1, 0xb6a2, 0xb6a3, 0xb6a4, 0xb6a5, 0xb6a6, 0xb6a7, + 0xb6a8, 0xb6a9, 0xb6aa, 0xb6ab, 0xb6ac, 0xb6ad, 0xb6ae, 0xb6af, + 0xb6b0, 0xb6b1, 0xb6b2, 0xb6b3, 0xb6b4, 0xb6b5, 0xb6b6, 0xb6b7, + 0xb6b8, 0xb6b9, 0xb6ba, 0xb6bb, 0xb6bc, 0xb6bd, 0xb6be, 0xb6bf, + 0xb6c0, 0xb6c1, 0xb6c2, 0xb6c3, 0xb6c4, 0xb6c5, 0xb6c6, 0xb6c7, + 0xb6c8, 0xb6c9, 0xb6ca, 0xb6cb, 0xb6cc, 0xb6cd, 0xb6ce, 0xb6cf, + 0xb6d0, 0xb6d1, 0xb6d2, 0xb6d3, 0xb6d4, 0xb6d5, 0xb6d6, 0xb6d7, + 0xb6d8, 0xb6d9, 0xb6da, 0xb6db, 0xb6dc, 0xb6dd, 0xb6de, 0xb6df, + 0xb6e0, 0xb6e1, 0xb6e2, 0xb6e3, 0xb6e4, 0xb6e5, 0xb6e6, 0xb6e7, + 0xb6e8, 0xb6e9, 0xb6ea, 0xb6eb, 0xb6ec, 0xb6ed, 0xb6ee, 0xb6ef, + 0xb6f0, 0xb6f1, 0xb6f2, 0xb6f3, 0xb6f4, 0xb6f5, 0xb6f6, 0xb6f7, + 0xb6f8, 0xb6f9, 0xb6fa, 0xb6fb, 0xb6fc, 0xb6fd, 0xb6fe, 0xb6ff, + 0xb700, 0xb701, 0xb702, 0xb703, 0xb704, 0xb705, 0xb706, 0xb707, + 0xb708, 0xb709, 0xb70a, 0xb70b, 0xb70c, 0xb70d, 0xb70e, 0xb70f, + 0xb710, 0xb711, 0xb712, 0xb713, 0xb714, 0xb715, 0xb716, 0xb717, + 0xb718, 0xb719, 0xb71a, 0xb71b, 0xb71c, 0xb71d, 0xb71e, 0xb71f, + 0xb720, 0xb721, 0xb722, 0xb723, 0xb724, 0xb725, 0xb726, 0xb727, + 0xb728, 0xb729, 0xb72a, 0xb72b, 0xb72c, 0xb72d, 0xb72e, 0xb72f, + 0xb730, 0xb731, 0xb732, 0xb733, 0xb734, 0xb735, 0xb736, 0xb737, + 0xb738, 0xb739, 0xb73a, 0xb73b, 0xb73c, 0xb73d, 0xb73e, 0xb73f, + 0xb740, 0xb741, 0xb742, 0xb743, 0xb744, 0xb745, 0xb746, 0xb747, + 0xb748, 0xb749, 0xb74a, 0xb74b, 0xb74c, 0xb74d, 0xb74e, 0xb74f, + 0xb750, 0xb751, 0xb752, 0xb753, 0xb754, 0xb755, 0xb756, 0xb757, + 0xb758, 0xb759, 0xb75a, 0xb75b, 0xb75c, 0xb75d, 0xb75e, 0xb75f, + 0xb760, 0xb761, 0xb762, 0xb763, 0xb764, 0xb765, 0xb766, 0xb767, + 0xb768, 0xb769, 0xb76a, 0xb76b, 0xb76c, 0xb76d, 0xb76e, 0xb76f, + 0xb770, 0xb771, 0xb772, 0xb773, 0xb774, 0xb775, 0xb776, 0xb777, + 0xb778, 0xb779, 0xb77a, 0xb77b, 0xb77c, 0xb77d, 0xb77e, 0xb77f, + 0xb780, 0xb781, 0xb782, 0xb783, 0xb784, 0xb785, 0xb786, 0xb787, + 0xb788, 0xb789, 0xb78a, 0xb78b, 0xb78c, 0xb78d, 0xb78e, 0xb78f, + 0xb790, 0xb791, 0xb792, 0xb793, 0xb794, 0xb795, 0xb796, 0xb797, + 0xb798, 0xb799, 0xb79a, 0xb79b, 0xb79c, 0xb79d, 0xb79e, 0xb79f, + 0xb7a0, 0xb7a1, 0xb7a2, 0xb7a3, 0xb7a4, 0xb7a5, 0xb7a6, 0xb7a7, + 0xb7a8, 0xb7a9, 0xb7aa, 0xb7ab, 0xb7ac, 0xb7ad, 0xb7ae, 0xb7af, + 0xb7b0, 0xb7b1, 0xb7b2, 0xb7b3, 0xb7b4, 0xb7b5, 0xb7b6, 0xb7b7, + 0xb7b8, 0xb7b9, 0xb7ba, 0xb7bb, 0xb7bc, 0xb7bd, 0xb7be, 0xb7bf, + 0xb7c0, 0xb7c1, 0xb7c2, 0xb7c3, 0xb7c4, 0xb7c5, 0xb7c6, 0xb7c7, + 0xb7c8, 0xb7c9, 0xb7ca, 0xb7cb, 0xb7cc, 0xb7cd, 0xb7ce, 0xb7cf, + 0xb7d0, 0xb7d1, 0xb7d2, 0xb7d3, 0xb7d4, 0xb7d5, 0xb7d6, 0xb7d7, + 0xb7d8, 0xb7d9, 0xb7da, 0xb7db, 0xb7dc, 0xb7dd, 0xb7de, 0xb7df, + 0xb7e0, 0xb7e1, 0xb7e2, 0xb7e3, 0xb7e4, 0xb7e5, 0xb7e6, 0xb7e7, + 0xb7e8, 0xb7e9, 0xb7ea, 0xb7eb, 0xb7ec, 0xb7ed, 0xb7ee, 0xb7ef, + 0xb7f0, 0xb7f1, 0xb7f2, 0xb7f3, 0xb7f4, 0xb7f5, 0xb7f6, 0xb7f7, + 0xb7f8, 0xb7f9, 0xb7fa, 0xb7fb, 0xb7fc, 0xb7fd, 0xb7fe, 0xb7ff, + 0xb800, 0xb801, 0xb802, 0xb803, 0xb804, 0xb805, 0xb806, 0xb807, + 0xb808, 0xb809, 0xb80a, 0xb80b, 0xb80c, 0xb80d, 0xb80e, 0xb80f, + 0xb810, 0xb811, 0xb812, 0xb813, 0xb814, 0xb815, 0xb816, 0xb817, + 0xb818, 0xb819, 0xb81a, 0xb81b, 0xb81c, 0xb81d, 0xb81e, 0xb81f, + 0xb820, 0xb821, 0xb822, 0xb823, 0xb824, 0xb825, 0xb826, 0xb827, + 0xb828, 0xb829, 0xb82a, 0xb82b, 0xb82c, 0xb82d, 0xb82e, 0xb82f, + 0xb830, 0xb831, 0xb832, 0xb833, 0xb834, 0xb835, 0xb836, 0xb837, + 0xb838, 0xb839, 0xb83a, 0xb83b, 0xb83c, 0xb83d, 0xb83e, 0xb83f, + 0xb840, 0xb841, 0xb842, 0xb843, 0xb844, 0xb845, 0xb846, 0xb847, + 0xb848, 0xb849, 0xb84a, 0xb84b, 0xb84c, 0xb84d, 0xb84e, 0xb84f, + 0xb850, 0xb851, 0xb852, 0xb853, 0xb854, 0xb855, 0xb856, 0xb857, + 0xb858, 0xb859, 0xb85a, 0xb85b, 0xb85c, 0xb85d, 0xb85e, 0xb85f, + 0xb860, 0xb861, 0xb862, 0xb863, 0xb864, 0xb865, 0xb866, 0xb867, + 0xb868, 0xb869, 0xb86a, 0xb86b, 0xb86c, 0xb86d, 0xb86e, 0xb86f, + 0xb870, 0xb871, 0xb872, 0xb873, 0xb874, 0xb875, 0xb876, 0xb877, + 0xb878, 0xb879, 0xb87a, 0xb87b, 0xb87c, 0xb87d, 0xb87e, 0xb87f, + 0xb880, 0xb881, 0xb882, 0xb883, 0xb884, 0xb885, 0xb886, 0xb887, + 0xb888, 0xb889, 0xb88a, 0xb88b, 0xb88c, 0xb88d, 0xb88e, 0xb88f, + 0xb890, 0xb891, 0xb892, 0xb893, 0xb894, 0xb895, 0xb896, 0xb897, + 0xb898, 0xb899, 0xb89a, 0xb89b, 0xb89c, 0xb89d, 0xb89e, 0xb89f, + 0xb8a0, 0xb8a1, 0xb8a2, 0xb8a3, 0xb8a4, 0xb8a5, 0xb8a6, 0xb8a7, + 0xb8a8, 0xb8a9, 0xb8aa, 0xb8ab, 0xb8ac, 0xb8ad, 0xb8ae, 0xb8af, + 0xb8b0, 0xb8b1, 0xb8b2, 0xb8b3, 0xb8b4, 0xb8b5, 0xb8b6, 0xb8b7, + 0xb8b8, 0xb8b9, 0xb8ba, 0xb8bb, 0xb8bc, 0xb8bd, 0xb8be, 0xb8bf, + 0xb8c0, 0xb8c1, 0xb8c2, 0xb8c3, 0xb8c4, 0xb8c5, 0xb8c6, 0xb8c7, + 0xb8c8, 0xb8c9, 0xb8ca, 0xb8cb, 0xb8cc, 0xb8cd, 0xb8ce, 0xb8cf, + 0xb8d0, 0xb8d1, 0xb8d2, 0xb8d3, 0xb8d4, 0xb8d5, 0xb8d6, 0xb8d7, + 0xb8d8, 0xb8d9, 0xb8da, 0xb8db, 0xb8dc, 0xb8dd, 0xb8de, 0xb8df, + 0xb8e0, 0xb8e1, 0xb8e2, 0xb8e3, 0xb8e4, 0xb8e5, 0xb8e6, 0xb8e7, + 0xb8e8, 0xb8e9, 0xb8ea, 0xb8eb, 0xb8ec, 0xb8ed, 0xb8ee, 0xb8ef, + 0xb8f0, 0xb8f1, 0xb8f2, 0xb8f3, 0xb8f4, 0xb8f5, 0xb8f6, 0xb8f7, + 0xb8f8, 0xb8f9, 0xb8fa, 0xb8fb, 0xb8fc, 0xb8fd, 0xb8fe, 0xb8ff, + 0xb900, 0xb901, 0xb902, 0xb903, 0xb904, 0xb905, 0xb906, 0xb907, + 0xb908, 0xb909, 0xb90a, 0xb90b, 0xb90c, 0xb90d, 0xb90e, 0xb90f, + 0xb910, 0xb911, 0xb912, 0xb913, 0xb914, 0xb915, 0xb916, 0xb917, + 0xb918, 0xb919, 0xb91a, 0xb91b, 0xb91c, 0xb91d, 0xb91e, 0xb91f, + 0xb920, 0xb921, 0xb922, 0xb923, 0xb924, 0xb925, 0xb926, 0xb927, + 0xb928, 0xb929, 0xb92a, 0xb92b, 0xb92c, 0xb92d, 0xb92e, 0xb92f, + 0xb930, 0xb931, 0xb932, 0xb933, 0xb934, 0xb935, 0xb936, 0xb937, + 0xb938, 0xb939, 0xb93a, 0xb93b, 0xb93c, 0xb93d, 0xb93e, 0xb93f, + 0xb940, 0xb941, 0xb942, 0xb943, 0xb944, 0xb945, 0xb946, 0xb947, + 0xb948, 0xb949, 0xb94a, 0xb94b, 0xb94c, 0xb94d, 0xb94e, 0xb94f, + 0xb950, 0xb951, 0xb952, 0xb953, 0xb954, 0xb955, 0xb956, 0xb957, + 0xb958, 0xb959, 0xb95a, 0xb95b, 0xb95c, 0xb95d, 0xb95e, 0xb95f, + 0xb960, 0xb961, 0xb962, 0xb963, 0xb964, 0xb965, 0xb966, 0xb967, + 0xb968, 0xb969, 0xb96a, 0xb96b, 0xb96c, 0xb96d, 0xb96e, 0xb96f, + 0xb970, 0xb971, 0xb972, 0xb973, 0xb974, 0xb975, 0xb976, 0xb977, + 0xb978, 0xb979, 0xb97a, 0xb97b, 0xb97c, 0xb97d, 0xb97e, 0xb97f, + 0xb980, 0xb981, 0xb982, 0xb983, 0xb984, 0xb985, 0xb986, 0xb987, + 0xb988, 0xb989, 0xb98a, 0xb98b, 0xb98c, 0xb98d, 0xb98e, 0xb98f, + 0xb990, 0xb991, 0xb992, 0xb993, 0xb994, 0xb995, 0xb996, 0xb997, + 0xb998, 0xb999, 0xb99a, 0xb99b, 0xb99c, 0xb99d, 0xb99e, 0xb99f, + 0xb9a0, 0xb9a1, 0xb9a2, 0xb9a3, 0xb9a4, 0xb9a5, 0xb9a6, 0xb9a7, + 0xb9a8, 0xb9a9, 0xb9aa, 0xb9ab, 0xb9ac, 0xb9ad, 0xb9ae, 0xb9af, + 0xb9b0, 0xb9b1, 0xb9b2, 0xb9b3, 0xb9b4, 0xb9b5, 0xb9b6, 0xb9b7, + 0xb9b8, 0xb9b9, 0xb9ba, 0xb9bb, 0xb9bc, 0xb9bd, 0xb9be, 0xb9bf, + 0xb9c0, 0xb9c1, 0xb9c2, 0xb9c3, 0xb9c4, 0xb9c5, 0xb9c6, 0xb9c7, + 0xb9c8, 0xb9c9, 0xb9ca, 0xb9cb, 0xb9cc, 0xb9cd, 0xb9ce, 0xb9cf, + 0xb9d0, 0xb9d1, 0xb9d2, 0xb9d3, 0xb9d4, 0xb9d5, 0xb9d6, 0xb9d7, + 0xb9d8, 0xb9d9, 0xb9da, 0xb9db, 0xb9dc, 0xb9dd, 0xb9de, 0xb9df, + 0xb9e0, 0xb9e1, 0xb9e2, 0xb9e3, 0xb9e4, 0xb9e5, 0xb9e6, 0xb9e7, + 0xb9e8, 0xb9e9, 0xb9ea, 0xb9eb, 0xb9ec, 0xb9ed, 0xb9ee, 0xb9ef, + 0xb9f0, 0xb9f1, 0xb9f2, 0xb9f3, 0xb9f4, 0xb9f5, 0xb9f6, 0xb9f7, + 0xb9f8, 0xb9f9, 0xb9fa, 0xb9fb, 0xb9fc, 0xb9fd, 0xb9fe, 0xb9ff, + 0xba00, 0xba01, 0xba02, 0xba03, 0xba04, 0xba05, 0xba06, 0xba07, + 0xba08, 0xba09, 0xba0a, 0xba0b, 0xba0c, 0xba0d, 0xba0e, 0xba0f, + 0xba10, 0xba11, 0xba12, 0xba13, 0xba14, 0xba15, 0xba16, 0xba17, + 0xba18, 0xba19, 0xba1a, 0xba1b, 0xba1c, 0xba1d, 0xba1e, 0xba1f, + 0xba20, 0xba21, 0xba22, 0xba23, 0xba24, 0xba25, 0xba26, 0xba27, + 0xba28, 0xba29, 0xba2a, 0xba2b, 0xba2c, 0xba2d, 0xba2e, 0xba2f, + 0xba30, 0xba31, 0xba32, 0xba33, 0xba34, 0xba35, 0xba36, 0xba37, + 0xba38, 0xba39, 0xba3a, 0xba3b, 0xba3c, 0xba3d, 0xba3e, 0xba3f, + 0xba40, 0xba41, 0xba42, 0xba43, 0xba44, 0xba45, 0xba46, 0xba47, + 0xba48, 0xba49, 0xba4a, 0xba4b, 0xba4c, 0xba4d, 0xba4e, 0xba4f, + 0xba50, 0xba51, 0xba52, 0xba53, 0xba54, 0xba55, 0xba56, 0xba57, + 0xba58, 0xba59, 0xba5a, 0xba5b, 0xba5c, 0xba5d, 0xba5e, 0xba5f, + 0xba60, 0xba61, 0xba62, 0xba63, 0xba64, 0xba65, 0xba66, 0xba67, + 0xba68, 0xba69, 0xba6a, 0xba6b, 0xba6c, 0xba6d, 0xba6e, 0xba6f, + 0xba70, 0xba71, 0xba72, 0xba73, 0xba74, 0xba75, 0xba76, 0xba77, + 0xba78, 0xba79, 0xba7a, 0xba7b, 0xba7c, 0xba7d, 0xba7e, 0xba7f, + 0xba80, 0xba81, 0xba82, 0xba83, 0xba84, 0xba85, 0xba86, 0xba87, + 0xba88, 0xba89, 0xba8a, 0xba8b, 0xba8c, 0xba8d, 0xba8e, 0xba8f, + 0xba90, 0xba91, 0xba92, 0xba93, 0xba94, 0xba95, 0xba96, 0xba97, + 0xba98, 0xba99, 0xba9a, 0xba9b, 0xba9c, 0xba9d, 0xba9e, 0xba9f, + 0xbaa0, 0xbaa1, 0xbaa2, 0xbaa3, 0xbaa4, 0xbaa5, 0xbaa6, 0xbaa7, + 0xbaa8, 0xbaa9, 0xbaaa, 0xbaab, 0xbaac, 0xbaad, 0xbaae, 0xbaaf, + 0xbab0, 0xbab1, 0xbab2, 0xbab3, 0xbab4, 0xbab5, 0xbab6, 0xbab7, + 0xbab8, 0xbab9, 0xbaba, 0xbabb, 0xbabc, 0xbabd, 0xbabe, 0xbabf, + 0xbac0, 0xbac1, 0xbac2, 0xbac3, 0xbac4, 0xbac5, 0xbac6, 0xbac7, + 0xbac8, 0xbac9, 0xbaca, 0xbacb, 0xbacc, 0xbacd, 0xbace, 0xbacf, + 0xbad0, 0xbad1, 0xbad2, 0xbad3, 0xbad4, 0xbad5, 0xbad6, 0xbad7, + 0xbad8, 0xbad9, 0xbada, 0xbadb, 0xbadc, 0xbadd, 0xbade, 0xbadf, + 0xbae0, 0xbae1, 0xbae2, 0xbae3, 0xbae4, 0xbae5, 0xbae6, 0xbae7, + 0xbae8, 0xbae9, 0xbaea, 0xbaeb, 0xbaec, 0xbaed, 0xbaee, 0xbaef, + 0xbaf0, 0xbaf1, 0xbaf2, 0xbaf3, 0xbaf4, 0xbaf5, 0xbaf6, 0xbaf7, + 0xbaf8, 0xbaf9, 0xbafa, 0xbafb, 0xbafc, 0xbafd, 0xbafe, 0xbaff, + 0xbb00, 0xbb01, 0xbb02, 0xbb03, 0xbb04, 0xbb05, 0xbb06, 0xbb07, + 0xbb08, 0xbb09, 0xbb0a, 0xbb0b, 0xbb0c, 0xbb0d, 0xbb0e, 0xbb0f, + 0xbb10, 0xbb11, 0xbb12, 0xbb13, 0xbb14, 0xbb15, 0xbb16, 0xbb17, + 0xbb18, 0xbb19, 0xbb1a, 0xbb1b, 0xbb1c, 0xbb1d, 0xbb1e, 0xbb1f, + 0xbb20, 0xbb21, 0xbb22, 0xbb23, 0xbb24, 0xbb25, 0xbb26, 0xbb27, + 0xbb28, 0xbb29, 0xbb2a, 0xbb2b, 0xbb2c, 0xbb2d, 0xbb2e, 0xbb2f, + 0xbb30, 0xbb31, 0xbb32, 0xbb33, 0xbb34, 0xbb35, 0xbb36, 0xbb37, + 0xbb38, 0xbb39, 0xbb3a, 0xbb3b, 0xbb3c, 0xbb3d, 0xbb3e, 0xbb3f, + 0xbb40, 0xbb41, 0xbb42, 0xbb43, 0xbb44, 0xbb45, 0xbb46, 0xbb47, + 0xbb48, 0xbb49, 0xbb4a, 0xbb4b, 0xbb4c, 0xbb4d, 0xbb4e, 0xbb4f, + 0xbb50, 0xbb51, 0xbb52, 0xbb53, 0xbb54, 0xbb55, 0xbb56, 0xbb57, + 0xbb58, 0xbb59, 0xbb5a, 0xbb5b, 0xbb5c, 0xbb5d, 0xbb5e, 0xbb5f, + 0xbb60, 0xbb61, 0xbb62, 0xbb63, 0xbb64, 0xbb65, 0xbb66, 0xbb67, + 0xbb68, 0xbb69, 0xbb6a, 0xbb6b, 0xbb6c, 0xbb6d, 0xbb6e, 0xbb6f, + 0xbb70, 0xbb71, 0xbb72, 0xbb73, 0xbb74, 0xbb75, 0xbb76, 0xbb77, + 0xbb78, 0xbb79, 0xbb7a, 0xbb7b, 0xbb7c, 0xbb7d, 0xbb7e, 0xbb7f, + 0xbb80, 0xbb81, 0xbb82, 0xbb83, 0xbb84, 0xbb85, 0xbb86, 0xbb87, + 0xbb88, 0xbb89, 0xbb8a, 0xbb8b, 0xbb8c, 0xbb8d, 0xbb8e, 0xbb8f, + 0xbb90, 0xbb91, 0xbb92, 0xbb93, 0xbb94, 0xbb95, 0xbb96, 0xbb97, + 0xbb98, 0xbb99, 0xbb9a, 0xbb9b, 0xbb9c, 0xbb9d, 0xbb9e, 0xbb9f, + 0xbba0, 0xbba1, 0xbba2, 0xbba3, 0xbba4, 0xbba5, 0xbba6, 0xbba7, + 0xbba8, 0xbba9, 0xbbaa, 0xbbab, 0xbbac, 0xbbad, 0xbbae, 0xbbaf, + 0xbbb0, 0xbbb1, 0xbbb2, 0xbbb3, 0xbbb4, 0xbbb5, 0xbbb6, 0xbbb7, + 0xbbb8, 0xbbb9, 0xbbba, 0xbbbb, 0xbbbc, 0xbbbd, 0xbbbe, 0xbbbf, + 0xbbc0, 0xbbc1, 0xbbc2, 0xbbc3, 0xbbc4, 0xbbc5, 0xbbc6, 0xbbc7, + 0xbbc8, 0xbbc9, 0xbbca, 0xbbcb, 0xbbcc, 0xbbcd, 0xbbce, 0xbbcf, + 0xbbd0, 0xbbd1, 0xbbd2, 0xbbd3, 0xbbd4, 0xbbd5, 0xbbd6, 0xbbd7, + 0xbbd8, 0xbbd9, 0xbbda, 0xbbdb, 0xbbdc, 0xbbdd, 0xbbde, 0xbbdf, + 0xbbe0, 0xbbe1, 0xbbe2, 0xbbe3, 0xbbe4, 0xbbe5, 0xbbe6, 0xbbe7, + 0xbbe8, 0xbbe9, 0xbbea, 0xbbeb, 0xbbec, 0xbbed, 0xbbee, 0xbbef, + 0xbbf0, 0xbbf1, 0xbbf2, 0xbbf3, 0xbbf4, 0xbbf5, 0xbbf6, 0xbbf7, + 0xbbf8, 0xbbf9, 0xbbfa, 0xbbfb, 0xbbfc, 0xbbfd, 0xbbfe, 0xbbff, + 0xbc00, 0xbc01, 0xbc02, 0xbc03, 0xbc04, 0xbc05, 0xbc06, 0xbc07, + 0xbc08, 0xbc09, 0xbc0a, 0xbc0b, 0xbc0c, 0xbc0d, 0xbc0e, 0xbc0f, + 0xbc10, 0xbc11, 0xbc12, 0xbc13, 0xbc14, 0xbc15, 0xbc16, 0xbc17, + 0xbc18, 0xbc19, 0xbc1a, 0xbc1b, 0xbc1c, 0xbc1d, 0xbc1e, 0xbc1f, + 0xbc20, 0xbc21, 0xbc22, 0xbc23, 0xbc24, 0xbc25, 0xbc26, 0xbc27, + 0xbc28, 0xbc29, 0xbc2a, 0xbc2b, 0xbc2c, 0xbc2d, 0xbc2e, 0xbc2f, + 0xbc30, 0xbc31, 0xbc32, 0xbc33, 0xbc34, 0xbc35, 0xbc36, 0xbc37, + 0xbc38, 0xbc39, 0xbc3a, 0xbc3b, 0xbc3c, 0xbc3d, 0xbc3e, 0xbc3f, + 0xbc40, 0xbc41, 0xbc42, 0xbc43, 0xbc44, 0xbc45, 0xbc46, 0xbc47, + 0xbc48, 0xbc49, 0xbc4a, 0xbc4b, 0xbc4c, 0xbc4d, 0xbc4e, 0xbc4f, + 0xbc50, 0xbc51, 0xbc52, 0xbc53, 0xbc54, 0xbc55, 0xbc56, 0xbc57, + 0xbc58, 0xbc59, 0xbc5a, 0xbc5b, 0xbc5c, 0xbc5d, 0xbc5e, 0xbc5f, + 0xbc60, 0xbc61, 0xbc62, 0xbc63, 0xbc64, 0xbc65, 0xbc66, 0xbc67, + 0xbc68, 0xbc69, 0xbc6a, 0xbc6b, 0xbc6c, 0xbc6d, 0xbc6e, 0xbc6f, + 0xbc70, 0xbc71, 0xbc72, 0xbc73, 0xbc74, 0xbc75, 0xbc76, 0xbc77, + 0xbc78, 0xbc79, 0xbc7a, 0xbc7b, 0xbc7c, 0xbc7d, 0xbc7e, 0xbc7f, + 0xbc80, 0xbc81, 0xbc82, 0xbc83, 0xbc84, 0xbc85, 0xbc86, 0xbc87, + 0xbc88, 0xbc89, 0xbc8a, 0xbc8b, 0xbc8c, 0xbc8d, 0xbc8e, 0xbc8f, + 0xbc90, 0xbc91, 0xbc92, 0xbc93, 0xbc94, 0xbc95, 0xbc96, 0xbc97, + 0xbc98, 0xbc99, 0xbc9a, 0xbc9b, 0xbc9c, 0xbc9d, 0xbc9e, 0xbc9f, + 0xbca0, 0xbca1, 0xbca2, 0xbca3, 0xbca4, 0xbca5, 0xbca6, 0xbca7, + 0xbca8, 0xbca9, 0xbcaa, 0xbcab, 0xbcac, 0xbcad, 0xbcae, 0xbcaf, + 0xbcb0, 0xbcb1, 0xbcb2, 0xbcb3, 0xbcb4, 0xbcb5, 0xbcb6, 0xbcb7, + 0xbcb8, 0xbcb9, 0xbcba, 0xbcbb, 0xbcbc, 0xbcbd, 0xbcbe, 0xbcbf, + 0xbcc0, 0xbcc1, 0xbcc2, 0xbcc3, 0xbcc4, 0xbcc5, 0xbcc6, 0xbcc7, + 0xbcc8, 0xbcc9, 0xbcca, 0xbccb, 0xbccc, 0xbccd, 0xbcce, 0xbccf, + 0xbcd0, 0xbcd1, 0xbcd2, 0xbcd3, 0xbcd4, 0xbcd5, 0xbcd6, 0xbcd7, + 0xbcd8, 0xbcd9, 0xbcda, 0xbcdb, 0xbcdc, 0xbcdd, 0xbcde, 0xbcdf, + 0xbce0, 0xbce1, 0xbce2, 0xbce3, 0xbce4, 0xbce5, 0xbce6, 0xbce7, + 0xbce8, 0xbce9, 0xbcea, 0xbceb, 0xbcec, 0xbced, 0xbcee, 0xbcef, + 0xbcf0, 0xbcf1, 0xbcf2, 0xbcf3, 0xbcf4, 0xbcf5, 0xbcf6, 0xbcf7, + 0xbcf8, 0xbcf9, 0xbcfa, 0xbcfb, 0xbcfc, 0xbcfd, 0xbcfe, 0xbcff, + 0xbd00, 0xbd01, 0xbd02, 0xbd03, 0xbd04, 0xbd05, 0xbd06, 0xbd07, + 0xbd08, 0xbd09, 0xbd0a, 0xbd0b, 0xbd0c, 0xbd0d, 0xbd0e, 0xbd0f, + 0xbd10, 0xbd11, 0xbd12, 0xbd13, 0xbd14, 0xbd15, 0xbd16, 0xbd17, + 0xbd18, 0xbd19, 0xbd1a, 0xbd1b, 0xbd1c, 0xbd1d, 0xbd1e, 0xbd1f, + 0xbd20, 0xbd21, 0xbd22, 0xbd23, 0xbd24, 0xbd25, 0xbd26, 0xbd27, + 0xbd28, 0xbd29, 0xbd2a, 0xbd2b, 0xbd2c, 0xbd2d, 0xbd2e, 0xbd2f, + 0xbd30, 0xbd31, 0xbd32, 0xbd33, 0xbd34, 0xbd35, 0xbd36, 0xbd37, + 0xbd38, 0xbd39, 0xbd3a, 0xbd3b, 0xbd3c, 0xbd3d, 0xbd3e, 0xbd3f, + 0xbd40, 0xbd41, 0xbd42, 0xbd43, 0xbd44, 0xbd45, 0xbd46, 0xbd47, + 0xbd48, 0xbd49, 0xbd4a, 0xbd4b, 0xbd4c, 0xbd4d, 0xbd4e, 0xbd4f, + 0xbd50, 0xbd51, 0xbd52, 0xbd53, 0xbd54, 0xbd55, 0xbd56, 0xbd57, + 0xbd58, 0xbd59, 0xbd5a, 0xbd5b, 0xbd5c, 0xbd5d, 0xbd5e, 0xbd5f, + 0xbd60, 0xbd61, 0xbd62, 0xbd63, 0xbd64, 0xbd65, 0xbd66, 0xbd67, + 0xbd68, 0xbd69, 0xbd6a, 0xbd6b, 0xbd6c, 0xbd6d, 0xbd6e, 0xbd6f, + 0xbd70, 0xbd71, 0xbd72, 0xbd73, 0xbd74, 0xbd75, 0xbd76, 0xbd77, + 0xbd78, 0xbd79, 0xbd7a, 0xbd7b, 0xbd7c, 0xbd7d, 0xbd7e, 0xbd7f, + 0xbd80, 0xbd81, 0xbd82, 0xbd83, 0xbd84, 0xbd85, 0xbd86, 0xbd87, + 0xbd88, 0xbd89, 0xbd8a, 0xbd8b, 0xbd8c, 0xbd8d, 0xbd8e, 0xbd8f, + 0xbd90, 0xbd91, 0xbd92, 0xbd93, 0xbd94, 0xbd95, 0xbd96, 0xbd97, + 0xbd98, 0xbd99, 0xbd9a, 0xbd9b, 0xbd9c, 0xbd9d, 0xbd9e, 0xbd9f, + 0xbda0, 0xbda1, 0xbda2, 0xbda3, 0xbda4, 0xbda5, 0xbda6, 0xbda7, + 0xbda8, 0xbda9, 0xbdaa, 0xbdab, 0xbdac, 0xbdad, 0xbdae, 0xbdaf, + 0xbdb0, 0xbdb1, 0xbdb2, 0xbdb3, 0xbdb4, 0xbdb5, 0xbdb6, 0xbdb7, + 0xbdb8, 0xbdb9, 0xbdba, 0xbdbb, 0xbdbc, 0xbdbd, 0xbdbe, 0xbdbf, + 0xbdc0, 0xbdc1, 0xbdc2, 0xbdc3, 0xbdc4, 0xbdc5, 0xbdc6, 0xbdc7, + 0xbdc8, 0xbdc9, 0xbdca, 0xbdcb, 0xbdcc, 0xbdcd, 0xbdce, 0xbdcf, + 0xbdd0, 0xbdd1, 0xbdd2, 0xbdd3, 0xbdd4, 0xbdd5, 0xbdd6, 0xbdd7, + 0xbdd8, 0xbdd9, 0xbdda, 0xbddb, 0xbddc, 0xbddd, 0xbdde, 0xbddf, + 0xbde0, 0xbde1, 0xbde2, 0xbde3, 0xbde4, 0xbde5, 0xbde6, 0xbde7, + 0xbde8, 0xbde9, 0xbdea, 0xbdeb, 0xbdec, 0xbded, 0xbdee, 0xbdef, + 0xbdf0, 0xbdf1, 0xbdf2, 0xbdf3, 0xbdf4, 0xbdf5, 0xbdf6, 0xbdf7, + 0xbdf8, 0xbdf9, 0xbdfa, 0xbdfb, 0xbdfc, 0xbdfd, 0xbdfe, 0xbdff, + 0xbe00, 0xbe01, 0xbe02, 0xbe03, 0xbe04, 0xbe05, 0xbe06, 0xbe07, + 0xbe08, 0xbe09, 0xbe0a, 0xbe0b, 0xbe0c, 0xbe0d, 0xbe0e, 0xbe0f, + 0xbe10, 0xbe11, 0xbe12, 0xbe13, 0xbe14, 0xbe15, 0xbe16, 0xbe17, + 0xbe18, 0xbe19, 0xbe1a, 0xbe1b, 0xbe1c, 0xbe1d, 0xbe1e, 0xbe1f, + 0xbe20, 0xbe21, 0xbe22, 0xbe23, 0xbe24, 0xbe25, 0xbe26, 0xbe27, + 0xbe28, 0xbe29, 0xbe2a, 0xbe2b, 0xbe2c, 0xbe2d, 0xbe2e, 0xbe2f, + 0xbe30, 0xbe31, 0xbe32, 0xbe33, 0xbe34, 0xbe35, 0xbe36, 0xbe37, + 0xbe38, 0xbe39, 0xbe3a, 0xbe3b, 0xbe3c, 0xbe3d, 0xbe3e, 0xbe3f, + 0xbe40, 0xbe41, 0xbe42, 0xbe43, 0xbe44, 0xbe45, 0xbe46, 0xbe47, + 0xbe48, 0xbe49, 0xbe4a, 0xbe4b, 0xbe4c, 0xbe4d, 0xbe4e, 0xbe4f, + 0xbe50, 0xbe51, 0xbe52, 0xbe53, 0xbe54, 0xbe55, 0xbe56, 0xbe57, + 0xbe58, 0xbe59, 0xbe5a, 0xbe5b, 0xbe5c, 0xbe5d, 0xbe5e, 0xbe5f, + 0xbe60, 0xbe61, 0xbe62, 0xbe63, 0xbe64, 0xbe65, 0xbe66, 0xbe67, + 0xbe68, 0xbe69, 0xbe6a, 0xbe6b, 0xbe6c, 0xbe6d, 0xbe6e, 0xbe6f, + 0xbe70, 0xbe71, 0xbe72, 0xbe73, 0xbe74, 0xbe75, 0xbe76, 0xbe77, + 0xbe78, 0xbe79, 0xbe7a, 0xbe7b, 0xbe7c, 0xbe7d, 0xbe7e, 0xbe7f, + 0xbe80, 0xbe81, 0xbe82, 0xbe83, 0xbe84, 0xbe85, 0xbe86, 0xbe87, + 0xbe88, 0xbe89, 0xbe8a, 0xbe8b, 0xbe8c, 0xbe8d, 0xbe8e, 0xbe8f, + 0xbe90, 0xbe91, 0xbe92, 0xbe93, 0xbe94, 0xbe95, 0xbe96, 0xbe97, + 0xbe98, 0xbe99, 0xbe9a, 0xbe9b, 0xbe9c, 0xbe9d, 0xbe9e, 0xbe9f, + 0xbea0, 0xbea1, 0xbea2, 0xbea3, 0xbea4, 0xbea5, 0xbea6, 0xbea7, + 0xbea8, 0xbea9, 0xbeaa, 0xbeab, 0xbeac, 0xbead, 0xbeae, 0xbeaf, + 0xbeb0, 0xbeb1, 0xbeb2, 0xbeb3, 0xbeb4, 0xbeb5, 0xbeb6, 0xbeb7, + 0xbeb8, 0xbeb9, 0xbeba, 0xbebb, 0xbebc, 0xbebd, 0xbebe, 0xbebf, + 0xbec0, 0xbec1, 0xbec2, 0xbec3, 0xbec4, 0xbec5, 0xbec6, 0xbec7, + 0xbec8, 0xbec9, 0xbeca, 0xbecb, 0xbecc, 0xbecd, 0xbece, 0xbecf, + 0xbed0, 0xbed1, 0xbed2, 0xbed3, 0xbed4, 0xbed5, 0xbed6, 0xbed7, + 0xbed8, 0xbed9, 0xbeda, 0xbedb, 0xbedc, 0xbedd, 0xbede, 0xbedf, + 0xbee0, 0xbee1, 0xbee2, 0xbee3, 0xbee4, 0xbee5, 0xbee6, 0xbee7, + 0xbee8, 0xbee9, 0xbeea, 0xbeeb, 0xbeec, 0xbeed, 0xbeee, 0xbeef, + 0xbef0, 0xbef1, 0xbef2, 0xbef3, 0xbef4, 0xbef5, 0xbef6, 0xbef7, + 0xbef8, 0xbef9, 0xbefa, 0xbefb, 0xbefc, 0xbefd, 0xbefe, 0xbeff, + 0xbf00, 0xbf01, 0xbf02, 0xbf03, 0xbf04, 0xbf05, 0xbf06, 0xbf07, + 0xbf08, 0xbf09, 0xbf0a, 0xbf0b, 0xbf0c, 0xbf0d, 0xbf0e, 0xbf0f, + 0xbf10, 0xbf11, 0xbf12, 0xbf13, 0xbf14, 0xbf15, 0xbf16, 0xbf17, + 0xbf18, 0xbf19, 0xbf1a, 0xbf1b, 0xbf1c, 0xbf1d, 0xbf1e, 0xbf1f, + 0xbf20, 0xbf21, 0xbf22, 0xbf23, 0xbf24, 0xbf25, 0xbf26, 0xbf27, + 0xbf28, 0xbf29, 0xbf2a, 0xbf2b, 0xbf2c, 0xbf2d, 0xbf2e, 0xbf2f, + 0xbf30, 0xbf31, 0xbf32, 0xbf33, 0xbf34, 0xbf35, 0xbf36, 0xbf37, + 0xbf38, 0xbf39, 0xbf3a, 0xbf3b, 0xbf3c, 0xbf3d, 0xbf3e, 0xbf3f, + 0xbf40, 0xbf41, 0xbf42, 0xbf43, 0xbf44, 0xbf45, 0xbf46, 0xbf47, + 0xbf48, 0xbf49, 0xbf4a, 0xbf4b, 0xbf4c, 0xbf4d, 0xbf4e, 0xbf4f, + 0xbf50, 0xbf51, 0xbf52, 0xbf53, 0xbf54, 0xbf55, 0xbf56, 0xbf57, + 0xbf58, 0xbf59, 0xbf5a, 0xbf5b, 0xbf5c, 0xbf5d, 0xbf5e, 0xbf5f, + 0xbf60, 0xbf61, 0xbf62, 0xbf63, 0xbf64, 0xbf65, 0xbf66, 0xbf67, + 0xbf68, 0xbf69, 0xbf6a, 0xbf6b, 0xbf6c, 0xbf6d, 0xbf6e, 0xbf6f, + 0xbf70, 0xbf71, 0xbf72, 0xbf73, 0xbf74, 0xbf75, 0xbf76, 0xbf77, + 0xbf78, 0xbf79, 0xbf7a, 0xbf7b, 0xbf7c, 0xbf7d, 0xbf7e, 0xbf7f, + 0xbf80, 0xbf81, 0xbf82, 0xbf83, 0xbf84, 0xbf85, 0xbf86, 0xbf87, + 0xbf88, 0xbf89, 0xbf8a, 0xbf8b, 0xbf8c, 0xbf8d, 0xbf8e, 0xbf8f, + 0xbf90, 0xbf91, 0xbf92, 0xbf93, 0xbf94, 0xbf95, 0xbf96, 0xbf97, + 0xbf98, 0xbf99, 0xbf9a, 0xbf9b, 0xbf9c, 0xbf9d, 0xbf9e, 0xbf9f, + 0xbfa0, 0xbfa1, 0xbfa2, 0xbfa3, 0xbfa4, 0xbfa5, 0xbfa6, 0xbfa7, + 0xbfa8, 0xbfa9, 0xbfaa, 0xbfab, 0xbfac, 0xbfad, 0xbfae, 0xbfaf, + 0xbfb0, 0xbfb1, 0xbfb2, 0xbfb3, 0xbfb4, 0xbfb5, 0xbfb6, 0xbfb7, + 0xbfb8, 0xbfb9, 0xbfba, 0xbfbb, 0xbfbc, 0xbfbd, 0xbfbe, 0xbfbf, + 0xbfc0, 0xbfc1, 0xbfc2, 0xbfc3, 0xbfc4, 0xbfc5, 0xbfc6, 0xbfc7, + 0xbfc8, 0xbfc9, 0xbfca, 0xbfcb, 0xbfcc, 0xbfcd, 0xbfce, 0xbfcf, + 0xbfd0, 0xbfd1, 0xbfd2, 0xbfd3, 0xbfd4, 0xbfd5, 0xbfd6, 0xbfd7, + 0xbfd8, 0xbfd9, 0xbfda, 0xbfdb, 0xbfdc, 0xbfdd, 0xbfde, 0xbfdf, + 0xbfe0, 0xbfe1, 0xbfe2, 0xbfe3, 0xbfe4, 0xbfe5, 0xbfe6, 0xbfe7, + 0xbfe8, 0xbfe9, 0xbfea, 0xbfeb, 0xbfec, 0xbfed, 0xbfee, 0xbfef, + 0xbff0, 0xbff1, 0xbff2, 0xbff3, 0xbff4, 0xbff5, 0xbff6, 0xbff7, + 0xbff8, 0xbff9, 0xbffa, 0xbffb, 0xbffc, 0xbffd, 0xbffe, 0xbfff, + 0xc000, 0xc001, 0xc002, 0xc003, 0xc004, 0xc005, 0xc006, 0xc007, + 0xc008, 0xc009, 0xc00a, 0xc00b, 0xc00c, 0xc00d, 0xc00e, 0xc00f, + 0xc010, 0xc011, 0xc012, 0xc013, 0xc014, 0xc015, 0xc016, 0xc017, + 0xc018, 0xc019, 0xc01a, 0xc01b, 0xc01c, 0xc01d, 0xc01e, 0xc01f, + 0xc020, 0xc021, 0xc022, 0xc023, 0xc024, 0xc025, 0xc026, 0xc027, + 0xc028, 0xc029, 0xc02a, 0xc02b, 0xc02c, 0xc02d, 0xc02e, 0xc02f, + 0xc030, 0xc031, 0xc032, 0xc033, 0xc034, 0xc035, 0xc036, 0xc037, + 0xc038, 0xc039, 0xc03a, 0xc03b, 0xc03c, 0xc03d, 0xc03e, 0xc03f, + 0xc040, 0xc041, 0xc042, 0xc043, 0xc044, 0xc045, 0xc046, 0xc047, + 0xc048, 0xc049, 0xc04a, 0xc04b, 0xc04c, 0xc04d, 0xc04e, 0xc04f, + 0xc050, 0xc051, 0xc052, 0xc053, 0xc054, 0xc055, 0xc056, 0xc057, + 0xc058, 0xc059, 0xc05a, 0xc05b, 0xc05c, 0xc05d, 0xc05e, 0xc05f, + 0xc060, 0xc061, 0xc062, 0xc063, 0xc064, 0xc065, 0xc066, 0xc067, + 0xc068, 0xc069, 0xc06a, 0xc06b, 0xc06c, 0xc06d, 0xc06e, 0xc06f, + 0xc070, 0xc071, 0xc072, 0xc073, 0xc074, 0xc075, 0xc076, 0xc077, + 0xc078, 0xc079, 0xc07a, 0xc07b, 0xc07c, 0xc07d, 0xc07e, 0xc07f, + 0xc080, 0xc081, 0xc082, 0xc083, 0xc084, 0xc085, 0xc086, 0xc087, + 0xc088, 0xc089, 0xc08a, 0xc08b, 0xc08c, 0xc08d, 0xc08e, 0xc08f, + 0xc090, 0xc091, 0xc092, 0xc093, 0xc094, 0xc095, 0xc096, 0xc097, + 0xc098, 0xc099, 0xc09a, 0xc09b, 0xc09c, 0xc09d, 0xc09e, 0xc09f, + 0xc0a0, 0xc0a1, 0xc0a2, 0xc0a3, 0xc0a4, 0xc0a5, 0xc0a6, 0xc0a7, + 0xc0a8, 0xc0a9, 0xc0aa, 0xc0ab, 0xc0ac, 0xc0ad, 0xc0ae, 0xc0af, + 0xc0b0, 0xc0b1, 0xc0b2, 0xc0b3, 0xc0b4, 0xc0b5, 0xc0b6, 0xc0b7, + 0xc0b8, 0xc0b9, 0xc0ba, 0xc0bb, 0xc0bc, 0xc0bd, 0xc0be, 0xc0bf, + 0xc0c0, 0xc0c1, 0xc0c2, 0xc0c3, 0xc0c4, 0xc0c5, 0xc0c6, 0xc0c7, + 0xc0c8, 0xc0c9, 0xc0ca, 0xc0cb, 0xc0cc, 0xc0cd, 0xc0ce, 0xc0cf, + 0xc0d0, 0xc0d1, 0xc0d2, 0xc0d3, 0xc0d4, 0xc0d5, 0xc0d6, 0xc0d7, + 0xc0d8, 0xc0d9, 0xc0da, 0xc0db, 0xc0dc, 0xc0dd, 0xc0de, 0xc0df, + 0xc0e0, 0xc0e1, 0xc0e2, 0xc0e3, 0xc0e4, 0xc0e5, 0xc0e6, 0xc0e7, + 0xc0e8, 0xc0e9, 0xc0ea, 0xc0eb, 0xc0ec, 0xc0ed, 0xc0ee, 0xc0ef, + 0xc0f0, 0xc0f1, 0xc0f2, 0xc0f3, 0xc0f4, 0xc0f5, 0xc0f6, 0xc0f7, + 0xc0f8, 0xc0f9, 0xc0fa, 0xc0fb, 0xc0fc, 0xc0fd, 0xc0fe, 0xc0ff, + 0xc100, 0xc101, 0xc102, 0xc103, 0xc104, 0xc105, 0xc106, 0xc107, + 0xc108, 0xc109, 0xc10a, 0xc10b, 0xc10c, 0xc10d, 0xc10e, 0xc10f, + 0xc110, 0xc111, 0xc112, 0xc113, 0xc114, 0xc115, 0xc116, 0xc117, + 0xc118, 0xc119, 0xc11a, 0xc11b, 0xc11c, 0xc11d, 0xc11e, 0xc11f, + 0xc120, 0xc121, 0xc122, 0xc123, 0xc124, 0xc125, 0xc126, 0xc127, + 0xc128, 0xc129, 0xc12a, 0xc12b, 0xc12c, 0xc12d, 0xc12e, 0xc12f, + 0xc130, 0xc131, 0xc132, 0xc133, 0xc134, 0xc135, 0xc136, 0xc137, + 0xc138, 0xc139, 0xc13a, 0xc13b, 0xc13c, 0xc13d, 0xc13e, 0xc13f, + 0xc140, 0xc141, 0xc142, 0xc143, 0xc144, 0xc145, 0xc146, 0xc147, + 0xc148, 0xc149, 0xc14a, 0xc14b, 0xc14c, 0xc14d, 0xc14e, 0xc14f, + 0xc150, 0xc151, 0xc152, 0xc153, 0xc154, 0xc155, 0xc156, 0xc157, + 0xc158, 0xc159, 0xc15a, 0xc15b, 0xc15c, 0xc15d, 0xc15e, 0xc15f, + 0xc160, 0xc161, 0xc162, 0xc163, 0xc164, 0xc165, 0xc166, 0xc167, + 0xc168, 0xc169, 0xc16a, 0xc16b, 0xc16c, 0xc16d, 0xc16e, 0xc16f, + 0xc170, 0xc171, 0xc172, 0xc173, 0xc174, 0xc175, 0xc176, 0xc177, + 0xc178, 0xc179, 0xc17a, 0xc17b, 0xc17c, 0xc17d, 0xc17e, 0xc17f, + 0xc180, 0xc181, 0xc182, 0xc183, 0xc184, 0xc185, 0xc186, 0xc187, + 0xc188, 0xc189, 0xc18a, 0xc18b, 0xc18c, 0xc18d, 0xc18e, 0xc18f, + 0xc190, 0xc191, 0xc192, 0xc193, 0xc194, 0xc195, 0xc196, 0xc197, + 0xc198, 0xc199, 0xc19a, 0xc19b, 0xc19c, 0xc19d, 0xc19e, 0xc19f, + 0xc1a0, 0xc1a1, 0xc1a2, 0xc1a3, 0xc1a4, 0xc1a5, 0xc1a6, 0xc1a7, + 0xc1a8, 0xc1a9, 0xc1aa, 0xc1ab, 0xc1ac, 0xc1ad, 0xc1ae, 0xc1af, + 0xc1b0, 0xc1b1, 0xc1b2, 0xc1b3, 0xc1b4, 0xc1b5, 0xc1b6, 0xc1b7, + 0xc1b8, 0xc1b9, 0xc1ba, 0xc1bb, 0xc1bc, 0xc1bd, 0xc1be, 0xc1bf, + 0xc1c0, 0xc1c1, 0xc1c2, 0xc1c3, 0xc1c4, 0xc1c5, 0xc1c6, 0xc1c7, + 0xc1c8, 0xc1c9, 0xc1ca, 0xc1cb, 0xc1cc, 0xc1cd, 0xc1ce, 0xc1cf, + 0xc1d0, 0xc1d1, 0xc1d2, 0xc1d3, 0xc1d4, 0xc1d5, 0xc1d6, 0xc1d7, + 0xc1d8, 0xc1d9, 0xc1da, 0xc1db, 0xc1dc, 0xc1dd, 0xc1de, 0xc1df, + 0xc1e0, 0xc1e1, 0xc1e2, 0xc1e3, 0xc1e4, 0xc1e5, 0xc1e6, 0xc1e7, + 0xc1e8, 0xc1e9, 0xc1ea, 0xc1eb, 0xc1ec, 0xc1ed, 0xc1ee, 0xc1ef, + 0xc1f0, 0xc1f1, 0xc1f2, 0xc1f3, 0xc1f4, 0xc1f5, 0xc1f6, 0xc1f7, + 0xc1f8, 0xc1f9, 0xc1fa, 0xc1fb, 0xc1fc, 0xc1fd, 0xc1fe, 0xc1ff, + 0xc200, 0xc201, 0xc202, 0xc203, 0xc204, 0xc205, 0xc206, 0xc207, + 0xc208, 0xc209, 0xc20a, 0xc20b, 0xc20c, 0xc20d, 0xc20e, 0xc20f, + 0xc210, 0xc211, 0xc212, 0xc213, 0xc214, 0xc215, 0xc216, 0xc217, + 0xc218, 0xc219, 0xc21a, 0xc21b, 0xc21c, 0xc21d, 0xc21e, 0xc21f, + 0xc220, 0xc221, 0xc222, 0xc223, 0xc224, 0xc225, 0xc226, 0xc227, + 0xc228, 0xc229, 0xc22a, 0xc22b, 0xc22c, 0xc22d, 0xc22e, 0xc22f, + 0xc230, 0xc231, 0xc232, 0xc233, 0xc234, 0xc235, 0xc236, 0xc237, + 0xc238, 0xc239, 0xc23a, 0xc23b, 0xc23c, 0xc23d, 0xc23e, 0xc23f, + 0xc240, 0xc241, 0xc242, 0xc243, 0xc244, 0xc245, 0xc246, 0xc247, + 0xc248, 0xc249, 0xc24a, 0xc24b, 0xc24c, 0xc24d, 0xc24e, 0xc24f, + 0xc250, 0xc251, 0xc252, 0xc253, 0xc254, 0xc255, 0xc256, 0xc257, + 0xc258, 0xc259, 0xc25a, 0xc25b, 0xc25c, 0xc25d, 0xc25e, 0xc25f, + 0xc260, 0xc261, 0xc262, 0xc263, 0xc264, 0xc265, 0xc266, 0xc267, + 0xc268, 0xc269, 0xc26a, 0xc26b, 0xc26c, 0xc26d, 0xc26e, 0xc26f, + 0xc270, 0xc271, 0xc272, 0xc273, 0xc274, 0xc275, 0xc276, 0xc277, + 0xc278, 0xc279, 0xc27a, 0xc27b, 0xc27c, 0xc27d, 0xc27e, 0xc27f, + 0xc280, 0xc281, 0xc282, 0xc283, 0xc284, 0xc285, 0xc286, 0xc287, + 0xc288, 0xc289, 0xc28a, 0xc28b, 0xc28c, 0xc28d, 0xc28e, 0xc28f, + 0xc290, 0xc291, 0xc292, 0xc293, 0xc294, 0xc295, 0xc296, 0xc297, + 0xc298, 0xc299, 0xc29a, 0xc29b, 0xc29c, 0xc29d, 0xc29e, 0xc29f, + 0xc2a0, 0xc2a1, 0xc2a2, 0xc2a3, 0xc2a4, 0xc2a5, 0xc2a6, 0xc2a7, + 0xc2a8, 0xc2a9, 0xc2aa, 0xc2ab, 0xc2ac, 0xc2ad, 0xc2ae, 0xc2af, + 0xc2b0, 0xc2b1, 0xc2b2, 0xc2b3, 0xc2b4, 0xc2b5, 0xc2b6, 0xc2b7, + 0xc2b8, 0xc2b9, 0xc2ba, 0xc2bb, 0xc2bc, 0xc2bd, 0xc2be, 0xc2bf, + 0xc2c0, 0xc2c1, 0xc2c2, 0xc2c3, 0xc2c4, 0xc2c5, 0xc2c6, 0xc2c7, + 0xc2c8, 0xc2c9, 0xc2ca, 0xc2cb, 0xc2cc, 0xc2cd, 0xc2ce, 0xc2cf, + 0xc2d0, 0xc2d1, 0xc2d2, 0xc2d3, 0xc2d4, 0xc2d5, 0xc2d6, 0xc2d7, + 0xc2d8, 0xc2d9, 0xc2da, 0xc2db, 0xc2dc, 0xc2dd, 0xc2de, 0xc2df, + 0xc2e0, 0xc2e1, 0xc2e2, 0xc2e3, 0xc2e4, 0xc2e5, 0xc2e6, 0xc2e7, + 0xc2e8, 0xc2e9, 0xc2ea, 0xc2eb, 0xc2ec, 0xc2ed, 0xc2ee, 0xc2ef, + 0xc2f0, 0xc2f1, 0xc2f2, 0xc2f3, 0xc2f4, 0xc2f5, 0xc2f6, 0xc2f7, + 0xc2f8, 0xc2f9, 0xc2fa, 0xc2fb, 0xc2fc, 0xc2fd, 0xc2fe, 0xc2ff, + 0xc300, 0xc301, 0xc302, 0xc303, 0xc304, 0xc305, 0xc306, 0xc307, + 0xc308, 0xc309, 0xc30a, 0xc30b, 0xc30c, 0xc30d, 0xc30e, 0xc30f, + 0xc310, 0xc311, 0xc312, 0xc313, 0xc314, 0xc315, 0xc316, 0xc317, + 0xc318, 0xc319, 0xc31a, 0xc31b, 0xc31c, 0xc31d, 0xc31e, 0xc31f, + 0xc320, 0xc321, 0xc322, 0xc323, 0xc324, 0xc325, 0xc326, 0xc327, + 0xc328, 0xc329, 0xc32a, 0xc32b, 0xc32c, 0xc32d, 0xc32e, 0xc32f, + 0xc330, 0xc331, 0xc332, 0xc333, 0xc334, 0xc335, 0xc336, 0xc337, + 0xc338, 0xc339, 0xc33a, 0xc33b, 0xc33c, 0xc33d, 0xc33e, 0xc33f, + 0xc340, 0xc341, 0xc342, 0xc343, 0xc344, 0xc345, 0xc346, 0xc347, + 0xc348, 0xc349, 0xc34a, 0xc34b, 0xc34c, 0xc34d, 0xc34e, 0xc34f, + 0xc350, 0xc351, 0xc352, 0xc353, 0xc354, 0xc355, 0xc356, 0xc357, + 0xc358, 0xc359, 0xc35a, 0xc35b, 0xc35c, 0xc35d, 0xc35e, 0xc35f, + 0xc360, 0xc361, 0xc362, 0xc363, 0xc364, 0xc365, 0xc366, 0xc367, + 0xc368, 0xc369, 0xc36a, 0xc36b, 0xc36c, 0xc36d, 0xc36e, 0xc36f, + 0xc370, 0xc371, 0xc372, 0xc373, 0xc374, 0xc375, 0xc376, 0xc377, + 0xc378, 0xc379, 0xc37a, 0xc37b, 0xc37c, 0xc37d, 0xc37e, 0xc37f, + 0xc380, 0xc381, 0xc382, 0xc383, 0xc384, 0xc385, 0xc386, 0xc387, + 0xc388, 0xc389, 0xc38a, 0xc38b, 0xc38c, 0xc38d, 0xc38e, 0xc38f, + 0xc390, 0xc391, 0xc392, 0xc393, 0xc394, 0xc395, 0xc396, 0xc397, + 0xc398, 0xc399, 0xc39a, 0xc39b, 0xc39c, 0xc39d, 0xc39e, 0xc39f, + 0xc3a0, 0xc3a1, 0xc3a2, 0xc3a3, 0xc3a4, 0xc3a5, 0xc3a6, 0xc3a7, + 0xc3a8, 0xc3a9, 0xc3aa, 0xc3ab, 0xc3ac, 0xc3ad, 0xc3ae, 0xc3af, + 0xc3b0, 0xc3b1, 0xc3b2, 0xc3b3, 0xc3b4, 0xc3b5, 0xc3b6, 0xc3b7, + 0xc3b8, 0xc3b9, 0xc3ba, 0xc3bb, 0xc3bc, 0xc3bd, 0xc3be, 0xc3bf, + 0xc3c0, 0xc3c1, 0xc3c2, 0xc3c3, 0xc3c4, 0xc3c5, 0xc3c6, 0xc3c7, + 0xc3c8, 0xc3c9, 0xc3ca, 0xc3cb, 0xc3cc, 0xc3cd, 0xc3ce, 0xc3cf, + 0xc3d0, 0xc3d1, 0xc3d2, 0xc3d3, 0xc3d4, 0xc3d5, 0xc3d6, 0xc3d7, + 0xc3d8, 0xc3d9, 0xc3da, 0xc3db, 0xc3dc, 0xc3dd, 0xc3de, 0xc3df, + 0xc3e0, 0xc3e1, 0xc3e2, 0xc3e3, 0xc3e4, 0xc3e5, 0xc3e6, 0xc3e7, + 0xc3e8, 0xc3e9, 0xc3ea, 0xc3eb, 0xc3ec, 0xc3ed, 0xc3ee, 0xc3ef, + 0xc3f0, 0xc3f1, 0xc3f2, 0xc3f3, 0xc3f4, 0xc3f5, 0xc3f6, 0xc3f7, + 0xc3f8, 0xc3f9, 0xc3fa, 0xc3fb, 0xc3fc, 0xc3fd, 0xc3fe, 0xc3ff, + 0xc400, 0xc401, 0xc402, 0xc403, 0xc404, 0xc405, 0xc406, 0xc407, + 0xc408, 0xc409, 0xc40a, 0xc40b, 0xc40c, 0xc40d, 0xc40e, 0xc40f, + 0xc410, 0xc411, 0xc412, 0xc413, 0xc414, 0xc415, 0xc416, 0xc417, + 0xc418, 0xc419, 0xc41a, 0xc41b, 0xc41c, 0xc41d, 0xc41e, 0xc41f, + 0xc420, 0xc421, 0xc422, 0xc423, 0xc424, 0xc425, 0xc426, 0xc427, + 0xc428, 0xc429, 0xc42a, 0xc42b, 0xc42c, 0xc42d, 0xc42e, 0xc42f, + 0xc430, 0xc431, 0xc432, 0xc433, 0xc434, 0xc435, 0xc436, 0xc437, + 0xc438, 0xc439, 0xc43a, 0xc43b, 0xc43c, 0xc43d, 0xc43e, 0xc43f, + 0xc440, 0xc441, 0xc442, 0xc443, 0xc444, 0xc445, 0xc446, 0xc447, + 0xc448, 0xc449, 0xc44a, 0xc44b, 0xc44c, 0xc44d, 0xc44e, 0xc44f, + 0xc450, 0xc451, 0xc452, 0xc453, 0xc454, 0xc455, 0xc456, 0xc457, + 0xc458, 0xc459, 0xc45a, 0xc45b, 0xc45c, 0xc45d, 0xc45e, 0xc45f, + 0xc460, 0xc461, 0xc462, 0xc463, 0xc464, 0xc465, 0xc466, 0xc467, + 0xc468, 0xc469, 0xc46a, 0xc46b, 0xc46c, 0xc46d, 0xc46e, 0xc46f, + 0xc470, 0xc471, 0xc472, 0xc473, 0xc474, 0xc475, 0xc476, 0xc477, + 0xc478, 0xc479, 0xc47a, 0xc47b, 0xc47c, 0xc47d, 0xc47e, 0xc47f, + 0xc480, 0xc481, 0xc482, 0xc483, 0xc484, 0xc485, 0xc486, 0xc487, + 0xc488, 0xc489, 0xc48a, 0xc48b, 0xc48c, 0xc48d, 0xc48e, 0xc48f, + 0xc490, 0xc491, 0xc492, 0xc493, 0xc494, 0xc495, 0xc496, 0xc497, + 0xc498, 0xc499, 0xc49a, 0xc49b, 0xc49c, 0xc49d, 0xc49e, 0xc49f, + 0xc4a0, 0xc4a1, 0xc4a2, 0xc4a3, 0xc4a4, 0xc4a5, 0xc4a6, 0xc4a7, + 0xc4a8, 0xc4a9, 0xc4aa, 0xc4ab, 0xc4ac, 0xc4ad, 0xc4ae, 0xc4af, + 0xc4b0, 0xc4b1, 0xc4b2, 0xc4b3, 0xc4b4, 0xc4b5, 0xc4b6, 0xc4b7, + 0xc4b8, 0xc4b9, 0xc4ba, 0xc4bb, 0xc4bc, 0xc4bd, 0xc4be, 0xc4bf, + 0xc4c0, 0xc4c1, 0xc4c2, 0xc4c3, 0xc4c4, 0xc4c5, 0xc4c6, 0xc4c7, + 0xc4c8, 0xc4c9, 0xc4ca, 0xc4cb, 0xc4cc, 0xc4cd, 0xc4ce, 0xc4cf, + 0xc4d0, 0xc4d1, 0xc4d2, 0xc4d3, 0xc4d4, 0xc4d5, 0xc4d6, 0xc4d7, + 0xc4d8, 0xc4d9, 0xc4da, 0xc4db, 0xc4dc, 0xc4dd, 0xc4de, 0xc4df, + 0xc4e0, 0xc4e1, 0xc4e2, 0xc4e3, 0xc4e4, 0xc4e5, 0xc4e6, 0xc4e7, + 0xc4e8, 0xc4e9, 0xc4ea, 0xc4eb, 0xc4ec, 0xc4ed, 0xc4ee, 0xc4ef, + 0xc4f0, 0xc4f1, 0xc4f2, 0xc4f3, 0xc4f4, 0xc4f5, 0xc4f6, 0xc4f7, + 0xc4f8, 0xc4f9, 0xc4fa, 0xc4fb, 0xc4fc, 0xc4fd, 0xc4fe, 0xc4ff, + 0xc500, 0xc501, 0xc502, 0xc503, 0xc504, 0xc505, 0xc506, 0xc507, + 0xc508, 0xc509, 0xc50a, 0xc50b, 0xc50c, 0xc50d, 0xc50e, 0xc50f, + 0xc510, 0xc511, 0xc512, 0xc513, 0xc514, 0xc515, 0xc516, 0xc517, + 0xc518, 0xc519, 0xc51a, 0xc51b, 0xc51c, 0xc51d, 0xc51e, 0xc51f, + 0xc520, 0xc521, 0xc522, 0xc523, 0xc524, 0xc525, 0xc526, 0xc527, + 0xc528, 0xc529, 0xc52a, 0xc52b, 0xc52c, 0xc52d, 0xc52e, 0xc52f, + 0xc530, 0xc531, 0xc532, 0xc533, 0xc534, 0xc535, 0xc536, 0xc537, + 0xc538, 0xc539, 0xc53a, 0xc53b, 0xc53c, 0xc53d, 0xc53e, 0xc53f, + 0xc540, 0xc541, 0xc542, 0xc543, 0xc544, 0xc545, 0xc546, 0xc547, + 0xc548, 0xc549, 0xc54a, 0xc54b, 0xc54c, 0xc54d, 0xc54e, 0xc54f, + 0xc550, 0xc551, 0xc552, 0xc553, 0xc554, 0xc555, 0xc556, 0xc557, + 0xc558, 0xc559, 0xc55a, 0xc55b, 0xc55c, 0xc55d, 0xc55e, 0xc55f, + 0xc560, 0xc561, 0xc562, 0xc563, 0xc564, 0xc565, 0xc566, 0xc567, + 0xc568, 0xc569, 0xc56a, 0xc56b, 0xc56c, 0xc56d, 0xc56e, 0xc56f, + 0xc570, 0xc571, 0xc572, 0xc573, 0xc574, 0xc575, 0xc576, 0xc577, + 0xc578, 0xc579, 0xc57a, 0xc57b, 0xc57c, 0xc57d, 0xc57e, 0xc57f, + 0xc580, 0xc581, 0xc582, 0xc583, 0xc584, 0xc585, 0xc586, 0xc587, + 0xc588, 0xc589, 0xc58a, 0xc58b, 0xc58c, 0xc58d, 0xc58e, 0xc58f, + 0xc590, 0xc591, 0xc592, 0xc593, 0xc594, 0xc595, 0xc596, 0xc597, + 0xc598, 0xc599, 0xc59a, 0xc59b, 0xc59c, 0xc59d, 0xc59e, 0xc59f, + 0xc5a0, 0xc5a1, 0xc5a2, 0xc5a3, 0xc5a4, 0xc5a5, 0xc5a6, 0xc5a7, + 0xc5a8, 0xc5a9, 0xc5aa, 0xc5ab, 0xc5ac, 0xc5ad, 0xc5ae, 0xc5af, + 0xc5b0, 0xc5b1, 0xc5b2, 0xc5b3, 0xc5b4, 0xc5b5, 0xc5b6, 0xc5b7, + 0xc5b8, 0xc5b9, 0xc5ba, 0xc5bb, 0xc5bc, 0xc5bd, 0xc5be, 0xc5bf, + 0xc5c0, 0xc5c1, 0xc5c2, 0xc5c3, 0xc5c4, 0xc5c5, 0xc5c6, 0xc5c7, + 0xc5c8, 0xc5c9, 0xc5ca, 0xc5cb, 0xc5cc, 0xc5cd, 0xc5ce, 0xc5cf, + 0xc5d0, 0xc5d1, 0xc5d2, 0xc5d3, 0xc5d4, 0xc5d5, 0xc5d6, 0xc5d7, + 0xc5d8, 0xc5d9, 0xc5da, 0xc5db, 0xc5dc, 0xc5dd, 0xc5de, 0xc5df, + 0xc5e0, 0xc5e1, 0xc5e2, 0xc5e3, 0xc5e4, 0xc5e5, 0xc5e6, 0xc5e7, + 0xc5e8, 0xc5e9, 0xc5ea, 0xc5eb, 0xc5ec, 0xc5ed, 0xc5ee, 0xc5ef, + 0xc5f0, 0xc5f1, 0xc5f2, 0xc5f3, 0xc5f4, 0xc5f5, 0xc5f6, 0xc5f7, + 0xc5f8, 0xc5f9, 0xc5fa, 0xc5fb, 0xc5fc, 0xc5fd, 0xc5fe, 0xc5ff, + 0xc600, 0xc601, 0xc602, 0xc603, 0xc604, 0xc605, 0xc606, 0xc607, + 0xc608, 0xc609, 0xc60a, 0xc60b, 0xc60c, 0xc60d, 0xc60e, 0xc60f, + 0xc610, 0xc611, 0xc612, 0xc613, 0xc614, 0xc615, 0xc616, 0xc617, + 0xc618, 0xc619, 0xc61a, 0xc61b, 0xc61c, 0xc61d, 0xc61e, 0xc61f, + 0xc620, 0xc621, 0xc622, 0xc623, 0xc624, 0xc625, 0xc626, 0xc627, + 0xc628, 0xc629, 0xc62a, 0xc62b, 0xc62c, 0xc62d, 0xc62e, 0xc62f, + 0xc630, 0xc631, 0xc632, 0xc633, 0xc634, 0xc635, 0xc636, 0xc637, + 0xc638, 0xc639, 0xc63a, 0xc63b, 0xc63c, 0xc63d, 0xc63e, 0xc63f, + 0xc640, 0xc641, 0xc642, 0xc643, 0xc644, 0xc645, 0xc646, 0xc647, + 0xc648, 0xc649, 0xc64a, 0xc64b, 0xc64c, 0xc64d, 0xc64e, 0xc64f, + 0xc650, 0xc651, 0xc652, 0xc653, 0xc654, 0xc655, 0xc656, 0xc657, + 0xc658, 0xc659, 0xc65a, 0xc65b, 0xc65c, 0xc65d, 0xc65e, 0xc65f, + 0xc660, 0xc661, 0xc662, 0xc663, 0xc664, 0xc665, 0xc666, 0xc667, + 0xc668, 0xc669, 0xc66a, 0xc66b, 0xc66c, 0xc66d, 0xc66e, 0xc66f, + 0xc670, 0xc671, 0xc672, 0xc673, 0xc674, 0xc675, 0xc676, 0xc677, + 0xc678, 0xc679, 0xc67a, 0xc67b, 0xc67c, 0xc67d, 0xc67e, 0xc67f, + 0xc680, 0xc681, 0xc682, 0xc683, 0xc684, 0xc685, 0xc686, 0xc687, + 0xc688, 0xc689, 0xc68a, 0xc68b, 0xc68c, 0xc68d, 0xc68e, 0xc68f, + 0xc690, 0xc691, 0xc692, 0xc693, 0xc694, 0xc695, 0xc696, 0xc697, + 0xc698, 0xc699, 0xc69a, 0xc69b, 0xc69c, 0xc69d, 0xc69e, 0xc69f, + 0xc6a0, 0xc6a1, 0xc6a2, 0xc6a3, 0xc6a4, 0xc6a5, 0xc6a6, 0xc6a7, + 0xc6a8, 0xc6a9, 0xc6aa, 0xc6ab, 0xc6ac, 0xc6ad, 0xc6ae, 0xc6af, + 0xc6b0, 0xc6b1, 0xc6b2, 0xc6b3, 0xc6b4, 0xc6b5, 0xc6b6, 0xc6b7, + 0xc6b8, 0xc6b9, 0xc6ba, 0xc6bb, 0xc6bc, 0xc6bd, 0xc6be, 0xc6bf, + 0xc6c0, 0xc6c1, 0xc6c2, 0xc6c3, 0xc6c4, 0xc6c5, 0xc6c6, 0xc6c7, + 0xc6c8, 0xc6c9, 0xc6ca, 0xc6cb, 0xc6cc, 0xc6cd, 0xc6ce, 0xc6cf, + 0xc6d0, 0xc6d1, 0xc6d2, 0xc6d3, 0xc6d4, 0xc6d5, 0xc6d6, 0xc6d7, + 0xc6d8, 0xc6d9, 0xc6da, 0xc6db, 0xc6dc, 0xc6dd, 0xc6de, 0xc6df, + 0xc6e0, 0xc6e1, 0xc6e2, 0xc6e3, 0xc6e4, 0xc6e5, 0xc6e6, 0xc6e7, + 0xc6e8, 0xc6e9, 0xc6ea, 0xc6eb, 0xc6ec, 0xc6ed, 0xc6ee, 0xc6ef, + 0xc6f0, 0xc6f1, 0xc6f2, 0xc6f3, 0xc6f4, 0xc6f5, 0xc6f6, 0xc6f7, + 0xc6f8, 0xc6f9, 0xc6fa, 0xc6fb, 0xc6fc, 0xc6fd, 0xc6fe, 0xc6ff, + 0xc700, 0xc701, 0xc702, 0xc703, 0xc704, 0xc705, 0xc706, 0xc707, + 0xc708, 0xc709, 0xc70a, 0xc70b, 0xc70c, 0xc70d, 0xc70e, 0xc70f, + 0xc710, 0xc711, 0xc712, 0xc713, 0xc714, 0xc715, 0xc716, 0xc717, + 0xc718, 0xc719, 0xc71a, 0xc71b, 0xc71c, 0xc71d, 0xc71e, 0xc71f, + 0xc720, 0xc721, 0xc722, 0xc723, 0xc724, 0xc725, 0xc726, 0xc727, + 0xc728, 0xc729, 0xc72a, 0xc72b, 0xc72c, 0xc72d, 0xc72e, 0xc72f, + 0xc730, 0xc731, 0xc732, 0xc733, 0xc734, 0xc735, 0xc736, 0xc737, + 0xc738, 0xc739, 0xc73a, 0xc73b, 0xc73c, 0xc73d, 0xc73e, 0xc73f, + 0xc740, 0xc741, 0xc742, 0xc743, 0xc744, 0xc745, 0xc746, 0xc747, + 0xc748, 0xc749, 0xc74a, 0xc74b, 0xc74c, 0xc74d, 0xc74e, 0xc74f, + 0xc750, 0xc751, 0xc752, 0xc753, 0xc754, 0xc755, 0xc756, 0xc757, + 0xc758, 0xc759, 0xc75a, 0xc75b, 0xc75c, 0xc75d, 0xc75e, 0xc75f, + 0xc760, 0xc761, 0xc762, 0xc763, 0xc764, 0xc765, 0xc766, 0xc767, + 0xc768, 0xc769, 0xc76a, 0xc76b, 0xc76c, 0xc76d, 0xc76e, 0xc76f, + 0xc770, 0xc771, 0xc772, 0xc773, 0xc774, 0xc775, 0xc776, 0xc777, + 0xc778, 0xc779, 0xc77a, 0xc77b, 0xc77c, 0xc77d, 0xc77e, 0xc77f, + 0xc780, 0xc781, 0xc782, 0xc783, 0xc784, 0xc785, 0xc786, 0xc787, + 0xc788, 0xc789, 0xc78a, 0xc78b, 0xc78c, 0xc78d, 0xc78e, 0xc78f, + 0xc790, 0xc791, 0xc792, 0xc793, 0xc794, 0xc795, 0xc796, 0xc797, + 0xc798, 0xc799, 0xc79a, 0xc79b, 0xc79c, 0xc79d, 0xc79e, 0xc79f, + 0xc7a0, 0xc7a1, 0xc7a2, 0xc7a3, 0xc7a4, 0xc7a5, 0xc7a6, 0xc7a7, + 0xc7a8, 0xc7a9, 0xc7aa, 0xc7ab, 0xc7ac, 0xc7ad, 0xc7ae, 0xc7af, + 0xc7b0, 0xc7b1, 0xc7b2, 0xc7b3, 0xc7b4, 0xc7b5, 0xc7b6, 0xc7b7, + 0xc7b8, 0xc7b9, 0xc7ba, 0xc7bb, 0xc7bc, 0xc7bd, 0xc7be, 0xc7bf, + 0xc7c0, 0xc7c1, 0xc7c2, 0xc7c3, 0xc7c4, 0xc7c5, 0xc7c6, 0xc7c7, + 0xc7c8, 0xc7c9, 0xc7ca, 0xc7cb, 0xc7cc, 0xc7cd, 0xc7ce, 0xc7cf, + 0xc7d0, 0xc7d1, 0xc7d2, 0xc7d3, 0xc7d4, 0xc7d5, 0xc7d6, 0xc7d7, + 0xc7d8, 0xc7d9, 0xc7da, 0xc7db, 0xc7dc, 0xc7dd, 0xc7de, 0xc7df, + 0xc7e0, 0xc7e1, 0xc7e2, 0xc7e3, 0xc7e4, 0xc7e5, 0xc7e6, 0xc7e7, + 0xc7e8, 0xc7e9, 0xc7ea, 0xc7eb, 0xc7ec, 0xc7ed, 0xc7ee, 0xc7ef, + 0xc7f0, 0xc7f1, 0xc7f2, 0xc7f3, 0xc7f4, 0xc7f5, 0xc7f6, 0xc7f7, + 0xc7f8, 0xc7f9, 0xc7fa, 0xc7fb, 0xc7fc, 0xc7fd, 0xc7fe, 0xc7ff, + 0xc800, 0xc801, 0xc802, 0xc803, 0xc804, 0xc805, 0xc806, 0xc807, + 0xc808, 0xc809, 0xc80a, 0xc80b, 0xc80c, 0xc80d, 0xc80e, 0xc80f, + 0xc810, 0xc811, 0xc812, 0xc813, 0xc814, 0xc815, 0xc816, 0xc817, + 0xc818, 0xc819, 0xc81a, 0xc81b, 0xc81c, 0xc81d, 0xc81e, 0xc81f, + 0xc820, 0xc821, 0xc822, 0xc823, 0xc824, 0xc825, 0xc826, 0xc827, + 0xc828, 0xc829, 0xc82a, 0xc82b, 0xc82c, 0xc82d, 0xc82e, 0xc82f, + 0xc830, 0xc831, 0xc832, 0xc833, 0xc834, 0xc835, 0xc836, 0xc837, + 0xc838, 0xc839, 0xc83a, 0xc83b, 0xc83c, 0xc83d, 0xc83e, 0xc83f, + 0xc840, 0xc841, 0xc842, 0xc843, 0xc844, 0xc845, 0xc846, 0xc847, + 0xc848, 0xc849, 0xc84a, 0xc84b, 0xc84c, 0xc84d, 0xc84e, 0xc84f, + 0xc850, 0xc851, 0xc852, 0xc853, 0xc854, 0xc855, 0xc856, 0xc857, + 0xc858, 0xc859, 0xc85a, 0xc85b, 0xc85c, 0xc85d, 0xc85e, 0xc85f, + 0xc860, 0xc861, 0xc862, 0xc863, 0xc864, 0xc865, 0xc866, 0xc867, + 0xc868, 0xc869, 0xc86a, 0xc86b, 0xc86c, 0xc86d, 0xc86e, 0xc86f, + 0xc870, 0xc871, 0xc872, 0xc873, 0xc874, 0xc875, 0xc876, 0xc877, + 0xc878, 0xc879, 0xc87a, 0xc87b, 0xc87c, 0xc87d, 0xc87e, 0xc87f, + 0xc880, 0xc881, 0xc882, 0xc883, 0xc884, 0xc885, 0xc886, 0xc887, + 0xc888, 0xc889, 0xc88a, 0xc88b, 0xc88c, 0xc88d, 0xc88e, 0xc88f, + 0xc890, 0xc891, 0xc892, 0xc893, 0xc894, 0xc895, 0xc896, 0xc897, + 0xc898, 0xc899, 0xc89a, 0xc89b, 0xc89c, 0xc89d, 0xc89e, 0xc89f, + 0xc8a0, 0xc8a1, 0xc8a2, 0xc8a3, 0xc8a4, 0xc8a5, 0xc8a6, 0xc8a7, + 0xc8a8, 0xc8a9, 0xc8aa, 0xc8ab, 0xc8ac, 0xc8ad, 0xc8ae, 0xc8af, + 0xc8b0, 0xc8b1, 0xc8b2, 0xc8b3, 0xc8b4, 0xc8b5, 0xc8b6, 0xc8b7, + 0xc8b8, 0xc8b9, 0xc8ba, 0xc8bb, 0xc8bc, 0xc8bd, 0xc8be, 0xc8bf, + 0xc8c0, 0xc8c1, 0xc8c2, 0xc8c3, 0xc8c4, 0xc8c5, 0xc8c6, 0xc8c7, + 0xc8c8, 0xc8c9, 0xc8ca, 0xc8cb, 0xc8cc, 0xc8cd, 0xc8ce, 0xc8cf, + 0xc8d0, 0xc8d1, 0xc8d2, 0xc8d3, 0xc8d4, 0xc8d5, 0xc8d6, 0xc8d7, + 0xc8d8, 0xc8d9, 0xc8da, 0xc8db, 0xc8dc, 0xc8dd, 0xc8de, 0xc8df, + 0xc8e0, 0xc8e1, 0xc8e2, 0xc8e3, 0xc8e4, 0xc8e5, 0xc8e6, 0xc8e7, + 0xc8e8, 0xc8e9, 0xc8ea, 0xc8eb, 0xc8ec, 0xc8ed, 0xc8ee, 0xc8ef, + 0xc8f0, 0xc8f1, 0xc8f2, 0xc8f3, 0xc8f4, 0xc8f5, 0xc8f6, 0xc8f7, + 0xc8f8, 0xc8f9, 0xc8fa, 0xc8fb, 0xc8fc, 0xc8fd, 0xc8fe, 0xc8ff, + 0xc900, 0xc901, 0xc902, 0xc903, 0xc904, 0xc905, 0xc906, 0xc907, + 0xc908, 0xc909, 0xc90a, 0xc90b, 0xc90c, 0xc90d, 0xc90e, 0xc90f, + 0xc910, 0xc911, 0xc912, 0xc913, 0xc914, 0xc915, 0xc916, 0xc917, + 0xc918, 0xc919, 0xc91a, 0xc91b, 0xc91c, 0xc91d, 0xc91e, 0xc91f, + 0xc920, 0xc921, 0xc922, 0xc923, 0xc924, 0xc925, 0xc926, 0xc927, + 0xc928, 0xc929, 0xc92a, 0xc92b, 0xc92c, 0xc92d, 0xc92e, 0xc92f, + 0xc930, 0xc931, 0xc932, 0xc933, 0xc934, 0xc935, 0xc936, 0xc937, + 0xc938, 0xc939, 0xc93a, 0xc93b, 0xc93c, 0xc93d, 0xc93e, 0xc93f, + 0xc940, 0xc941, 0xc942, 0xc943, 0xc944, 0xc945, 0xc946, 0xc947, + 0xc948, 0xc949, 0xc94a, 0xc94b, 0xc94c, 0xc94d, 0xc94e, 0xc94f, + 0xc950, 0xc951, 0xc952, 0xc953, 0xc954, 0xc955, 0xc956, 0xc957, + 0xc958, 0xc959, 0xc95a, 0xc95b, 0xc95c, 0xc95d, 0xc95e, 0xc95f, + 0xc960, 0xc961, 0xc962, 0xc963, 0xc964, 0xc965, 0xc966, 0xc967, + 0xc968, 0xc969, 0xc96a, 0xc96b, 0xc96c, 0xc96d, 0xc96e, 0xc96f, + 0xc970, 0xc971, 0xc972, 0xc973, 0xc974, 0xc975, 0xc976, 0xc977, + 0xc978, 0xc979, 0xc97a, 0xc97b, 0xc97c, 0xc97d, 0xc97e, 0xc97f, + 0xc980, 0xc981, 0xc982, 0xc983, 0xc984, 0xc985, 0xc986, 0xc987, + 0xc988, 0xc989, 0xc98a, 0xc98b, 0xc98c, 0xc98d, 0xc98e, 0xc98f, + 0xc990, 0xc991, 0xc992, 0xc993, 0xc994, 0xc995, 0xc996, 0xc997, + 0xc998, 0xc999, 0xc99a, 0xc99b, 0xc99c, 0xc99d, 0xc99e, 0xc99f, + 0xc9a0, 0xc9a1, 0xc9a2, 0xc9a3, 0xc9a4, 0xc9a5, 0xc9a6, 0xc9a7, + 0xc9a8, 0xc9a9, 0xc9aa, 0xc9ab, 0xc9ac, 0xc9ad, 0xc9ae, 0xc9af, + 0xc9b0, 0xc9b1, 0xc9b2, 0xc9b3, 0xc9b4, 0xc9b5, 0xc9b6, 0xc9b7, + 0xc9b8, 0xc9b9, 0xc9ba, 0xc9bb, 0xc9bc, 0xc9bd, 0xc9be, 0xc9bf, + 0xc9c0, 0xc9c1, 0xc9c2, 0xc9c3, 0xc9c4, 0xc9c5, 0xc9c6, 0xc9c7, + 0xc9c8, 0xc9c9, 0xc9ca, 0xc9cb, 0xc9cc, 0xc9cd, 0xc9ce, 0xc9cf, + 0xc9d0, 0xc9d1, 0xc9d2, 0xc9d3, 0xc9d4, 0xc9d5, 0xc9d6, 0xc9d7, + 0xc9d8, 0xc9d9, 0xc9da, 0xc9db, 0xc9dc, 0xc9dd, 0xc9de, 0xc9df, + 0xc9e0, 0xc9e1, 0xc9e2, 0xc9e3, 0xc9e4, 0xc9e5, 0xc9e6, 0xc9e7, + 0xc9e8, 0xc9e9, 0xc9ea, 0xc9eb, 0xc9ec, 0xc9ed, 0xc9ee, 0xc9ef, + 0xc9f0, 0xc9f1, 0xc9f2, 0xc9f3, 0xc9f4, 0xc9f5, 0xc9f6, 0xc9f7, + 0xc9f8, 0xc9f9, 0xc9fa, 0xc9fb, 0xc9fc, 0xc9fd, 0xc9fe, 0xc9ff, + 0xca00, 0xca01, 0xca02, 0xca03, 0xca04, 0xca05, 0xca06, 0xca07, + 0xca08, 0xca09, 0xca0a, 0xca0b, 0xca0c, 0xca0d, 0xca0e, 0xca0f, + 0xca10, 0xca11, 0xca12, 0xca13, 0xca14, 0xca15, 0xca16, 0xca17, + 0xca18, 0xca19, 0xca1a, 0xca1b, 0xca1c, 0xca1d, 0xca1e, 0xca1f, + 0xca20, 0xca21, 0xca22, 0xca23, 0xca24, 0xca25, 0xca26, 0xca27, + 0xca28, 0xca29, 0xca2a, 0xca2b, 0xca2c, 0xca2d, 0xca2e, 0xca2f, + 0xca30, 0xca31, 0xca32, 0xca33, 0xca34, 0xca35, 0xca36, 0xca37, + 0xca38, 0xca39, 0xca3a, 0xca3b, 0xca3c, 0xca3d, 0xca3e, 0xca3f, + 0xca40, 0xca41, 0xca42, 0xca43, 0xca44, 0xca45, 0xca46, 0xca47, + 0xca48, 0xca49, 0xca4a, 0xca4b, 0xca4c, 0xca4d, 0xca4e, 0xca4f, + 0xca50, 0xca51, 0xca52, 0xca53, 0xca54, 0xca55, 0xca56, 0xca57, + 0xca58, 0xca59, 0xca5a, 0xca5b, 0xca5c, 0xca5d, 0xca5e, 0xca5f, + 0xca60, 0xca61, 0xca62, 0xca63, 0xca64, 0xca65, 0xca66, 0xca67, + 0xca68, 0xca69, 0xca6a, 0xca6b, 0xca6c, 0xca6d, 0xca6e, 0xca6f, + 0xca70, 0xca71, 0xca72, 0xca73, 0xca74, 0xca75, 0xca76, 0xca77, + 0xca78, 0xca79, 0xca7a, 0xca7b, 0xca7c, 0xca7d, 0xca7e, 0xca7f, + 0xca80, 0xca81, 0xca82, 0xca83, 0xca84, 0xca85, 0xca86, 0xca87, + 0xca88, 0xca89, 0xca8a, 0xca8b, 0xca8c, 0xca8d, 0xca8e, 0xca8f, + 0xca90, 0xca91, 0xca92, 0xca93, 0xca94, 0xca95, 0xca96, 0xca97, + 0xca98, 0xca99, 0xca9a, 0xca9b, 0xca9c, 0xca9d, 0xca9e, 0xca9f, + 0xcaa0, 0xcaa1, 0xcaa2, 0xcaa3, 0xcaa4, 0xcaa5, 0xcaa6, 0xcaa7, + 0xcaa8, 0xcaa9, 0xcaaa, 0xcaab, 0xcaac, 0xcaad, 0xcaae, 0xcaaf, + 0xcab0, 0xcab1, 0xcab2, 0xcab3, 0xcab4, 0xcab5, 0xcab6, 0xcab7, + 0xcab8, 0xcab9, 0xcaba, 0xcabb, 0xcabc, 0xcabd, 0xcabe, 0xcabf, + 0xcac0, 0xcac1, 0xcac2, 0xcac3, 0xcac4, 0xcac5, 0xcac6, 0xcac7, + 0xcac8, 0xcac9, 0xcaca, 0xcacb, 0xcacc, 0xcacd, 0xcace, 0xcacf, + 0xcad0, 0xcad1, 0xcad2, 0xcad3, 0xcad4, 0xcad5, 0xcad6, 0xcad7, + 0xcad8, 0xcad9, 0xcada, 0xcadb, 0xcadc, 0xcadd, 0xcade, 0xcadf, + 0xcae0, 0xcae1, 0xcae2, 0xcae3, 0xcae4, 0xcae5, 0xcae6, 0xcae7, + 0xcae8, 0xcae9, 0xcaea, 0xcaeb, 0xcaec, 0xcaed, 0xcaee, 0xcaef, + 0xcaf0, 0xcaf1, 0xcaf2, 0xcaf3, 0xcaf4, 0xcaf5, 0xcaf6, 0xcaf7, + 0xcaf8, 0xcaf9, 0xcafa, 0xcafb, 0xcafc, 0xcafd, 0xcafe, 0xcaff, + 0xcb00, 0xcb01, 0xcb02, 0xcb03, 0xcb04, 0xcb05, 0xcb06, 0xcb07, + 0xcb08, 0xcb09, 0xcb0a, 0xcb0b, 0xcb0c, 0xcb0d, 0xcb0e, 0xcb0f, + 0xcb10, 0xcb11, 0xcb12, 0xcb13, 0xcb14, 0xcb15, 0xcb16, 0xcb17, + 0xcb18, 0xcb19, 0xcb1a, 0xcb1b, 0xcb1c, 0xcb1d, 0xcb1e, 0xcb1f, + 0xcb20, 0xcb21, 0xcb22, 0xcb23, 0xcb24, 0xcb25, 0xcb26, 0xcb27, + 0xcb28, 0xcb29, 0xcb2a, 0xcb2b, 0xcb2c, 0xcb2d, 0xcb2e, 0xcb2f, + 0xcb30, 0xcb31, 0xcb32, 0xcb33, 0xcb34, 0xcb35, 0xcb36, 0xcb37, + 0xcb38, 0xcb39, 0xcb3a, 0xcb3b, 0xcb3c, 0xcb3d, 0xcb3e, 0xcb3f, + 0xcb40, 0xcb41, 0xcb42, 0xcb43, 0xcb44, 0xcb45, 0xcb46, 0xcb47, + 0xcb48, 0xcb49, 0xcb4a, 0xcb4b, 0xcb4c, 0xcb4d, 0xcb4e, 0xcb4f, + 0xcb50, 0xcb51, 0xcb52, 0xcb53, 0xcb54, 0xcb55, 0xcb56, 0xcb57, + 0xcb58, 0xcb59, 0xcb5a, 0xcb5b, 0xcb5c, 0xcb5d, 0xcb5e, 0xcb5f, + 0xcb60, 0xcb61, 0xcb62, 0xcb63, 0xcb64, 0xcb65, 0xcb66, 0xcb67, + 0xcb68, 0xcb69, 0xcb6a, 0xcb6b, 0xcb6c, 0xcb6d, 0xcb6e, 0xcb6f, + 0xcb70, 0xcb71, 0xcb72, 0xcb73, 0xcb74, 0xcb75, 0xcb76, 0xcb77, + 0xcb78, 0xcb79, 0xcb7a, 0xcb7b, 0xcb7c, 0xcb7d, 0xcb7e, 0xcb7f, + 0xcb80, 0xcb81, 0xcb82, 0xcb83, 0xcb84, 0xcb85, 0xcb86, 0xcb87, + 0xcb88, 0xcb89, 0xcb8a, 0xcb8b, 0xcb8c, 0xcb8d, 0xcb8e, 0xcb8f, + 0xcb90, 0xcb91, 0xcb92, 0xcb93, 0xcb94, 0xcb95, 0xcb96, 0xcb97, + 0xcb98, 0xcb99, 0xcb9a, 0xcb9b, 0xcb9c, 0xcb9d, 0xcb9e, 0xcb9f, + 0xcba0, 0xcba1, 0xcba2, 0xcba3, 0xcba4, 0xcba5, 0xcba6, 0xcba7, + 0xcba8, 0xcba9, 0xcbaa, 0xcbab, 0xcbac, 0xcbad, 0xcbae, 0xcbaf, + 0xcbb0, 0xcbb1, 0xcbb2, 0xcbb3, 0xcbb4, 0xcbb5, 0xcbb6, 0xcbb7, + 0xcbb8, 0xcbb9, 0xcbba, 0xcbbb, 0xcbbc, 0xcbbd, 0xcbbe, 0xcbbf, + 0xcbc0, 0xcbc1, 0xcbc2, 0xcbc3, 0xcbc4, 0xcbc5, 0xcbc6, 0xcbc7, + 0xcbc8, 0xcbc9, 0xcbca, 0xcbcb, 0xcbcc, 0xcbcd, 0xcbce, 0xcbcf, + 0xcbd0, 0xcbd1, 0xcbd2, 0xcbd3, 0xcbd4, 0xcbd5, 0xcbd6, 0xcbd7, + 0xcbd8, 0xcbd9, 0xcbda, 0xcbdb, 0xcbdc, 0xcbdd, 0xcbde, 0xcbdf, + 0xcbe0, 0xcbe1, 0xcbe2, 0xcbe3, 0xcbe4, 0xcbe5, 0xcbe6, 0xcbe7, + 0xcbe8, 0xcbe9, 0xcbea, 0xcbeb, 0xcbec, 0xcbed, 0xcbee, 0xcbef, + 0xcbf0, 0xcbf1, 0xcbf2, 0xcbf3, 0xcbf4, 0xcbf5, 0xcbf6, 0xcbf7, + 0xcbf8, 0xcbf9, 0xcbfa, 0xcbfb, 0xcbfc, 0xcbfd, 0xcbfe, 0xcbff, + 0xcc00, 0xcc01, 0xcc02, 0xcc03, 0xcc04, 0xcc05, 0xcc06, 0xcc07, + 0xcc08, 0xcc09, 0xcc0a, 0xcc0b, 0xcc0c, 0xcc0d, 0xcc0e, 0xcc0f, + 0xcc10, 0xcc11, 0xcc12, 0xcc13, 0xcc14, 0xcc15, 0xcc16, 0xcc17, + 0xcc18, 0xcc19, 0xcc1a, 0xcc1b, 0xcc1c, 0xcc1d, 0xcc1e, 0xcc1f, + 0xcc20, 0xcc21, 0xcc22, 0xcc23, 0xcc24, 0xcc25, 0xcc26, 0xcc27, + 0xcc28, 0xcc29, 0xcc2a, 0xcc2b, 0xcc2c, 0xcc2d, 0xcc2e, 0xcc2f, + 0xcc30, 0xcc31, 0xcc32, 0xcc33, 0xcc34, 0xcc35, 0xcc36, 0xcc37, + 0xcc38, 0xcc39, 0xcc3a, 0xcc3b, 0xcc3c, 0xcc3d, 0xcc3e, 0xcc3f, + 0xcc40, 0xcc41, 0xcc42, 0xcc43, 0xcc44, 0xcc45, 0xcc46, 0xcc47, + 0xcc48, 0xcc49, 0xcc4a, 0xcc4b, 0xcc4c, 0xcc4d, 0xcc4e, 0xcc4f, + 0xcc50, 0xcc51, 0xcc52, 0xcc53, 0xcc54, 0xcc55, 0xcc56, 0xcc57, + 0xcc58, 0xcc59, 0xcc5a, 0xcc5b, 0xcc5c, 0xcc5d, 0xcc5e, 0xcc5f, + 0xcc60, 0xcc61, 0xcc62, 0xcc63, 0xcc64, 0xcc65, 0xcc66, 0xcc67, + 0xcc68, 0xcc69, 0xcc6a, 0xcc6b, 0xcc6c, 0xcc6d, 0xcc6e, 0xcc6f, + 0xcc70, 0xcc71, 0xcc72, 0xcc73, 0xcc74, 0xcc75, 0xcc76, 0xcc77, + 0xcc78, 0xcc79, 0xcc7a, 0xcc7b, 0xcc7c, 0xcc7d, 0xcc7e, 0xcc7f, + 0xcc80, 0xcc81, 0xcc82, 0xcc83, 0xcc84, 0xcc85, 0xcc86, 0xcc87, + 0xcc88, 0xcc89, 0xcc8a, 0xcc8b, 0xcc8c, 0xcc8d, 0xcc8e, 0xcc8f, + 0xcc90, 0xcc91, 0xcc92, 0xcc93, 0xcc94, 0xcc95, 0xcc96, 0xcc97, + 0xcc98, 0xcc99, 0xcc9a, 0xcc9b, 0xcc9c, 0xcc9d, 0xcc9e, 0xcc9f, + 0xcca0, 0xcca1, 0xcca2, 0xcca3, 0xcca4, 0xcca5, 0xcca6, 0xcca7, + 0xcca8, 0xcca9, 0xccaa, 0xccab, 0xccac, 0xccad, 0xccae, 0xccaf, + 0xccb0, 0xccb1, 0xccb2, 0xccb3, 0xccb4, 0xccb5, 0xccb6, 0xccb7, + 0xccb8, 0xccb9, 0xccba, 0xccbb, 0xccbc, 0xccbd, 0xccbe, 0xccbf, + 0xccc0, 0xccc1, 0xccc2, 0xccc3, 0xccc4, 0xccc5, 0xccc6, 0xccc7, + 0xccc8, 0xccc9, 0xccca, 0xcccb, 0xcccc, 0xcccd, 0xccce, 0xcccf, + 0xccd0, 0xccd1, 0xccd2, 0xccd3, 0xccd4, 0xccd5, 0xccd6, 0xccd7, + 0xccd8, 0xccd9, 0xccda, 0xccdb, 0xccdc, 0xccdd, 0xccde, 0xccdf, + 0xcce0, 0xcce1, 0xcce2, 0xcce3, 0xcce4, 0xcce5, 0xcce6, 0xcce7, + 0xcce8, 0xcce9, 0xccea, 0xcceb, 0xccec, 0xcced, 0xccee, 0xccef, + 0xccf0, 0xccf1, 0xccf2, 0xccf3, 0xccf4, 0xccf5, 0xccf6, 0xccf7, + 0xccf8, 0xccf9, 0xccfa, 0xccfb, 0xccfc, 0xccfd, 0xccfe, 0xccff, + 0xcd00, 0xcd01, 0xcd02, 0xcd03, 0xcd04, 0xcd05, 0xcd06, 0xcd07, + 0xcd08, 0xcd09, 0xcd0a, 0xcd0b, 0xcd0c, 0xcd0d, 0xcd0e, 0xcd0f, + 0xcd10, 0xcd11, 0xcd12, 0xcd13, 0xcd14, 0xcd15, 0xcd16, 0xcd17, + 0xcd18, 0xcd19, 0xcd1a, 0xcd1b, 0xcd1c, 0xcd1d, 0xcd1e, 0xcd1f, + 0xcd20, 0xcd21, 0xcd22, 0xcd23, 0xcd24, 0xcd25, 0xcd26, 0xcd27, + 0xcd28, 0xcd29, 0xcd2a, 0xcd2b, 0xcd2c, 0xcd2d, 0xcd2e, 0xcd2f, + 0xcd30, 0xcd31, 0xcd32, 0xcd33, 0xcd34, 0xcd35, 0xcd36, 0xcd37, + 0xcd38, 0xcd39, 0xcd3a, 0xcd3b, 0xcd3c, 0xcd3d, 0xcd3e, 0xcd3f, + 0xcd40, 0xcd41, 0xcd42, 0xcd43, 0xcd44, 0xcd45, 0xcd46, 0xcd47, + 0xcd48, 0xcd49, 0xcd4a, 0xcd4b, 0xcd4c, 0xcd4d, 0xcd4e, 0xcd4f, + 0xcd50, 0xcd51, 0xcd52, 0xcd53, 0xcd54, 0xcd55, 0xcd56, 0xcd57, + 0xcd58, 0xcd59, 0xcd5a, 0xcd5b, 0xcd5c, 0xcd5d, 0xcd5e, 0xcd5f, + 0xcd60, 0xcd61, 0xcd62, 0xcd63, 0xcd64, 0xcd65, 0xcd66, 0xcd67, + 0xcd68, 0xcd69, 0xcd6a, 0xcd6b, 0xcd6c, 0xcd6d, 0xcd6e, 0xcd6f, + 0xcd70, 0xcd71, 0xcd72, 0xcd73, 0xcd74, 0xcd75, 0xcd76, 0xcd77, + 0xcd78, 0xcd79, 0xcd7a, 0xcd7b, 0xcd7c, 0xcd7d, 0xcd7e, 0xcd7f, + 0xcd80, 0xcd81, 0xcd82, 0xcd83, 0xcd84, 0xcd85, 0xcd86, 0xcd87, + 0xcd88, 0xcd89, 0xcd8a, 0xcd8b, 0xcd8c, 0xcd8d, 0xcd8e, 0xcd8f, + 0xcd90, 0xcd91, 0xcd92, 0xcd93, 0xcd94, 0xcd95, 0xcd96, 0xcd97, + 0xcd98, 0xcd99, 0xcd9a, 0xcd9b, 0xcd9c, 0xcd9d, 0xcd9e, 0xcd9f, + 0xcda0, 0xcda1, 0xcda2, 0xcda3, 0xcda4, 0xcda5, 0xcda6, 0xcda7, + 0xcda8, 0xcda9, 0xcdaa, 0xcdab, 0xcdac, 0xcdad, 0xcdae, 0xcdaf, + 0xcdb0, 0xcdb1, 0xcdb2, 0xcdb3, 0xcdb4, 0xcdb5, 0xcdb6, 0xcdb7, + 0xcdb8, 0xcdb9, 0xcdba, 0xcdbb, 0xcdbc, 0xcdbd, 0xcdbe, 0xcdbf, + 0xcdc0, 0xcdc1, 0xcdc2, 0xcdc3, 0xcdc4, 0xcdc5, 0xcdc6, 0xcdc7, + 0xcdc8, 0xcdc9, 0xcdca, 0xcdcb, 0xcdcc, 0xcdcd, 0xcdce, 0xcdcf, + 0xcdd0, 0xcdd1, 0xcdd2, 0xcdd3, 0xcdd4, 0xcdd5, 0xcdd6, 0xcdd7, + 0xcdd8, 0xcdd9, 0xcdda, 0xcddb, 0xcddc, 0xcddd, 0xcdde, 0xcddf, + 0xcde0, 0xcde1, 0xcde2, 0xcde3, 0xcde4, 0xcde5, 0xcde6, 0xcde7, + 0xcde8, 0xcde9, 0xcdea, 0xcdeb, 0xcdec, 0xcded, 0xcdee, 0xcdef, + 0xcdf0, 0xcdf1, 0xcdf2, 0xcdf3, 0xcdf4, 0xcdf5, 0xcdf6, 0xcdf7, + 0xcdf8, 0xcdf9, 0xcdfa, 0xcdfb, 0xcdfc, 0xcdfd, 0xcdfe, 0xcdff, + 0xce00, 0xce01, 0xce02, 0xce03, 0xce04, 0xce05, 0xce06, 0xce07, + 0xce08, 0xce09, 0xce0a, 0xce0b, 0xce0c, 0xce0d, 0xce0e, 0xce0f, + 0xce10, 0xce11, 0xce12, 0xce13, 0xce14, 0xce15, 0xce16, 0xce17, + 0xce18, 0xce19, 0xce1a, 0xce1b, 0xce1c, 0xce1d, 0xce1e, 0xce1f, + 0xce20, 0xce21, 0xce22, 0xce23, 0xce24, 0xce25, 0xce26, 0xce27, + 0xce28, 0xce29, 0xce2a, 0xce2b, 0xce2c, 0xce2d, 0xce2e, 0xce2f, + 0xce30, 0xce31, 0xce32, 0xce33, 0xce34, 0xce35, 0xce36, 0xce37, + 0xce38, 0xce39, 0xce3a, 0xce3b, 0xce3c, 0xce3d, 0xce3e, 0xce3f, + 0xce40, 0xce41, 0xce42, 0xce43, 0xce44, 0xce45, 0xce46, 0xce47, + 0xce48, 0xce49, 0xce4a, 0xce4b, 0xce4c, 0xce4d, 0xce4e, 0xce4f, + 0xce50, 0xce51, 0xce52, 0xce53, 0xce54, 0xce55, 0xce56, 0xce57, + 0xce58, 0xce59, 0xce5a, 0xce5b, 0xce5c, 0xce5d, 0xce5e, 0xce5f, + 0xce60, 0xce61, 0xce62, 0xce63, 0xce64, 0xce65, 0xce66, 0xce67, + 0xce68, 0xce69, 0xce6a, 0xce6b, 0xce6c, 0xce6d, 0xce6e, 0xce6f, + 0xce70, 0xce71, 0xce72, 0xce73, 0xce74, 0xce75, 0xce76, 0xce77, + 0xce78, 0xce79, 0xce7a, 0xce7b, 0xce7c, 0xce7d, 0xce7e, 0xce7f, + 0xce80, 0xce81, 0xce82, 0xce83, 0xce84, 0xce85, 0xce86, 0xce87, + 0xce88, 0xce89, 0xce8a, 0xce8b, 0xce8c, 0xce8d, 0xce8e, 0xce8f, + 0xce90, 0xce91, 0xce92, 0xce93, 0xce94, 0xce95, 0xce96, 0xce97, + 0xce98, 0xce99, 0xce9a, 0xce9b, 0xce9c, 0xce9d, 0xce9e, 0xce9f, + 0xcea0, 0xcea1, 0xcea2, 0xcea3, 0xcea4, 0xcea5, 0xcea6, 0xcea7, + 0xcea8, 0xcea9, 0xceaa, 0xceab, 0xceac, 0xcead, 0xceae, 0xceaf, + 0xceb0, 0xceb1, 0xceb2, 0xceb3, 0xceb4, 0xceb5, 0xceb6, 0xceb7, + 0xceb8, 0xceb9, 0xceba, 0xcebb, 0xcebc, 0xcebd, 0xcebe, 0xcebf, + 0xcec0, 0xcec1, 0xcec2, 0xcec3, 0xcec4, 0xcec5, 0xcec6, 0xcec7, + 0xcec8, 0xcec9, 0xceca, 0xcecb, 0xcecc, 0xcecd, 0xcece, 0xcecf, + 0xced0, 0xced1, 0xced2, 0xced3, 0xced4, 0xced5, 0xced6, 0xced7, + 0xced8, 0xced9, 0xceda, 0xcedb, 0xcedc, 0xcedd, 0xcede, 0xcedf, + 0xcee0, 0xcee1, 0xcee2, 0xcee3, 0xcee4, 0xcee5, 0xcee6, 0xcee7, + 0xcee8, 0xcee9, 0xceea, 0xceeb, 0xceec, 0xceed, 0xceee, 0xceef, + 0xcef0, 0xcef1, 0xcef2, 0xcef3, 0xcef4, 0xcef5, 0xcef6, 0xcef7, + 0xcef8, 0xcef9, 0xcefa, 0xcefb, 0xcefc, 0xcefd, 0xcefe, 0xceff, + 0xcf00, 0xcf01, 0xcf02, 0xcf03, 0xcf04, 0xcf05, 0xcf06, 0xcf07, + 0xcf08, 0xcf09, 0xcf0a, 0xcf0b, 0xcf0c, 0xcf0d, 0xcf0e, 0xcf0f, + 0xcf10, 0xcf11, 0xcf12, 0xcf13, 0xcf14, 0xcf15, 0xcf16, 0xcf17, + 0xcf18, 0xcf19, 0xcf1a, 0xcf1b, 0xcf1c, 0xcf1d, 0xcf1e, 0xcf1f, + 0xcf20, 0xcf21, 0xcf22, 0xcf23, 0xcf24, 0xcf25, 0xcf26, 0xcf27, + 0xcf28, 0xcf29, 0xcf2a, 0xcf2b, 0xcf2c, 0xcf2d, 0xcf2e, 0xcf2f, + 0xcf30, 0xcf31, 0xcf32, 0xcf33, 0xcf34, 0xcf35, 0xcf36, 0xcf37, + 0xcf38, 0xcf39, 0xcf3a, 0xcf3b, 0xcf3c, 0xcf3d, 0xcf3e, 0xcf3f, + 0xcf40, 0xcf41, 0xcf42, 0xcf43, 0xcf44, 0xcf45, 0xcf46, 0xcf47, + 0xcf48, 0xcf49, 0xcf4a, 0xcf4b, 0xcf4c, 0xcf4d, 0xcf4e, 0xcf4f, + 0xcf50, 0xcf51, 0xcf52, 0xcf53, 0xcf54, 0xcf55, 0xcf56, 0xcf57, + 0xcf58, 0xcf59, 0xcf5a, 0xcf5b, 0xcf5c, 0xcf5d, 0xcf5e, 0xcf5f, + 0xcf60, 0xcf61, 0xcf62, 0xcf63, 0xcf64, 0xcf65, 0xcf66, 0xcf67, + 0xcf68, 0xcf69, 0xcf6a, 0xcf6b, 0xcf6c, 0xcf6d, 0xcf6e, 0xcf6f, + 0xcf70, 0xcf71, 0xcf72, 0xcf73, 0xcf74, 0xcf75, 0xcf76, 0xcf77, + 0xcf78, 0xcf79, 0xcf7a, 0xcf7b, 0xcf7c, 0xcf7d, 0xcf7e, 0xcf7f, + 0xcf80, 0xcf81, 0xcf82, 0xcf83, 0xcf84, 0xcf85, 0xcf86, 0xcf87, + 0xcf88, 0xcf89, 0xcf8a, 0xcf8b, 0xcf8c, 0xcf8d, 0xcf8e, 0xcf8f, + 0xcf90, 0xcf91, 0xcf92, 0xcf93, 0xcf94, 0xcf95, 0xcf96, 0xcf97, + 0xcf98, 0xcf99, 0xcf9a, 0xcf9b, 0xcf9c, 0xcf9d, 0xcf9e, 0xcf9f, + 0xcfa0, 0xcfa1, 0xcfa2, 0xcfa3, 0xcfa4, 0xcfa5, 0xcfa6, 0xcfa7, + 0xcfa8, 0xcfa9, 0xcfaa, 0xcfab, 0xcfac, 0xcfad, 0xcfae, 0xcfaf, + 0xcfb0, 0xcfb1, 0xcfb2, 0xcfb3, 0xcfb4, 0xcfb5, 0xcfb6, 0xcfb7, + 0xcfb8, 0xcfb9, 0xcfba, 0xcfbb, 0xcfbc, 0xcfbd, 0xcfbe, 0xcfbf, + 0xcfc0, 0xcfc1, 0xcfc2, 0xcfc3, 0xcfc4, 0xcfc5, 0xcfc6, 0xcfc7, + 0xcfc8, 0xcfc9, 0xcfca, 0xcfcb, 0xcfcc, 0xcfcd, 0xcfce, 0xcfcf, + 0xcfd0, 0xcfd1, 0xcfd2, 0xcfd3, 0xcfd4, 0xcfd5, 0xcfd6, 0xcfd7, + 0xcfd8, 0xcfd9, 0xcfda, 0xcfdb, 0xcfdc, 0xcfdd, 0xcfde, 0xcfdf, + 0xcfe0, 0xcfe1, 0xcfe2, 0xcfe3, 0xcfe4, 0xcfe5, 0xcfe6, 0xcfe7, + 0xcfe8, 0xcfe9, 0xcfea, 0xcfeb, 0xcfec, 0xcfed, 0xcfee, 0xcfef, + 0xcff0, 0xcff1, 0xcff2, 0xcff3, 0xcff4, 0xcff5, 0xcff6, 0xcff7, + 0xcff8, 0xcff9, 0xcffa, 0xcffb, 0xcffc, 0xcffd, 0xcffe, 0xcfff, + 0xd000, 0xd001, 0xd002, 0xd003, 0xd004, 0xd005, 0xd006, 0xd007, + 0xd008, 0xd009, 0xd00a, 0xd00b, 0xd00c, 0xd00d, 0xd00e, 0xd00f, + 0xd010, 0xd011, 0xd012, 0xd013, 0xd014, 0xd015, 0xd016, 0xd017, + 0xd018, 0xd019, 0xd01a, 0xd01b, 0xd01c, 0xd01d, 0xd01e, 0xd01f, + 0xd020, 0xd021, 0xd022, 0xd023, 0xd024, 0xd025, 0xd026, 0xd027, + 0xd028, 0xd029, 0xd02a, 0xd02b, 0xd02c, 0xd02d, 0xd02e, 0xd02f, + 0xd030, 0xd031, 0xd032, 0xd033, 0xd034, 0xd035, 0xd036, 0xd037, + 0xd038, 0xd039, 0xd03a, 0xd03b, 0xd03c, 0xd03d, 0xd03e, 0xd03f, + 0xd040, 0xd041, 0xd042, 0xd043, 0xd044, 0xd045, 0xd046, 0xd047, + 0xd048, 0xd049, 0xd04a, 0xd04b, 0xd04c, 0xd04d, 0xd04e, 0xd04f, + 0xd050, 0xd051, 0xd052, 0xd053, 0xd054, 0xd055, 0xd056, 0xd057, + 0xd058, 0xd059, 0xd05a, 0xd05b, 0xd05c, 0xd05d, 0xd05e, 0xd05f, + 0xd060, 0xd061, 0xd062, 0xd063, 0xd064, 0xd065, 0xd066, 0xd067, + 0xd068, 0xd069, 0xd06a, 0xd06b, 0xd06c, 0xd06d, 0xd06e, 0xd06f, + 0xd070, 0xd071, 0xd072, 0xd073, 0xd074, 0xd075, 0xd076, 0xd077, + 0xd078, 0xd079, 0xd07a, 0xd07b, 0xd07c, 0xd07d, 0xd07e, 0xd07f, + 0xd080, 0xd081, 0xd082, 0xd083, 0xd084, 0xd085, 0xd086, 0xd087, + 0xd088, 0xd089, 0xd08a, 0xd08b, 0xd08c, 0xd08d, 0xd08e, 0xd08f, + 0xd090, 0xd091, 0xd092, 0xd093, 0xd094, 0xd095, 0xd096, 0xd097, + 0xd098, 0xd099, 0xd09a, 0xd09b, 0xd09c, 0xd09d, 0xd09e, 0xd09f, + 0xd0a0, 0xd0a1, 0xd0a2, 0xd0a3, 0xd0a4, 0xd0a5, 0xd0a6, 0xd0a7, + 0xd0a8, 0xd0a9, 0xd0aa, 0xd0ab, 0xd0ac, 0xd0ad, 0xd0ae, 0xd0af, + 0xd0b0, 0xd0b1, 0xd0b2, 0xd0b3, 0xd0b4, 0xd0b5, 0xd0b6, 0xd0b7, + 0xd0b8, 0xd0b9, 0xd0ba, 0xd0bb, 0xd0bc, 0xd0bd, 0xd0be, 0xd0bf, + 0xd0c0, 0xd0c1, 0xd0c2, 0xd0c3, 0xd0c4, 0xd0c5, 0xd0c6, 0xd0c7, + 0xd0c8, 0xd0c9, 0xd0ca, 0xd0cb, 0xd0cc, 0xd0cd, 0xd0ce, 0xd0cf, + 0xd0d0, 0xd0d1, 0xd0d2, 0xd0d3, 0xd0d4, 0xd0d5, 0xd0d6, 0xd0d7, + 0xd0d8, 0xd0d9, 0xd0da, 0xd0db, 0xd0dc, 0xd0dd, 0xd0de, 0xd0df, + 0xd0e0, 0xd0e1, 0xd0e2, 0xd0e3, 0xd0e4, 0xd0e5, 0xd0e6, 0xd0e7, + 0xd0e8, 0xd0e9, 0xd0ea, 0xd0eb, 0xd0ec, 0xd0ed, 0xd0ee, 0xd0ef, + 0xd0f0, 0xd0f1, 0xd0f2, 0xd0f3, 0xd0f4, 0xd0f5, 0xd0f6, 0xd0f7, + 0xd0f8, 0xd0f9, 0xd0fa, 0xd0fb, 0xd0fc, 0xd0fd, 0xd0fe, 0xd0ff, + 0xd100, 0xd101, 0xd102, 0xd103, 0xd104, 0xd105, 0xd106, 0xd107, + 0xd108, 0xd109, 0xd10a, 0xd10b, 0xd10c, 0xd10d, 0xd10e, 0xd10f, + 0xd110, 0xd111, 0xd112, 0xd113, 0xd114, 0xd115, 0xd116, 0xd117, + 0xd118, 0xd119, 0xd11a, 0xd11b, 0xd11c, 0xd11d, 0xd11e, 0xd11f, + 0xd120, 0xd121, 0xd122, 0xd123, 0xd124, 0xd125, 0xd126, 0xd127, + 0xd128, 0xd129, 0xd12a, 0xd12b, 0xd12c, 0xd12d, 0xd12e, 0xd12f, + 0xd130, 0xd131, 0xd132, 0xd133, 0xd134, 0xd135, 0xd136, 0xd137, + 0xd138, 0xd139, 0xd13a, 0xd13b, 0xd13c, 0xd13d, 0xd13e, 0xd13f, + 0xd140, 0xd141, 0xd142, 0xd143, 0xd144, 0xd145, 0xd146, 0xd147, + 0xd148, 0xd149, 0xd14a, 0xd14b, 0xd14c, 0xd14d, 0xd14e, 0xd14f, + 0xd150, 0xd151, 0xd152, 0xd153, 0xd154, 0xd155, 0xd156, 0xd157, + 0xd158, 0xd159, 0xd15a, 0xd15b, 0xd15c, 0xd15d, 0xd15e, 0xd15f, + 0xd160, 0xd161, 0xd162, 0xd163, 0xd164, 0xd165, 0xd166, 0xd167, + 0xd168, 0xd169, 0xd16a, 0xd16b, 0xd16c, 0xd16d, 0xd16e, 0xd16f, + 0xd170, 0xd171, 0xd172, 0xd173, 0xd174, 0xd175, 0xd176, 0xd177, + 0xd178, 0xd179, 0xd17a, 0xd17b, 0xd17c, 0xd17d, 0xd17e, 0xd17f, + 0xd180, 0xd181, 0xd182, 0xd183, 0xd184, 0xd185, 0xd186, 0xd187, + 0xd188, 0xd189, 0xd18a, 0xd18b, 0xd18c, 0xd18d, 0xd18e, 0xd18f, + 0xd190, 0xd191, 0xd192, 0xd193, 0xd194, 0xd195, 0xd196, 0xd197, + 0xd198, 0xd199, 0xd19a, 0xd19b, 0xd19c, 0xd19d, 0xd19e, 0xd19f, + 0xd1a0, 0xd1a1, 0xd1a2, 0xd1a3, 0xd1a4, 0xd1a5, 0xd1a6, 0xd1a7, + 0xd1a8, 0xd1a9, 0xd1aa, 0xd1ab, 0xd1ac, 0xd1ad, 0xd1ae, 0xd1af, + 0xd1b0, 0xd1b1, 0xd1b2, 0xd1b3, 0xd1b4, 0xd1b5, 0xd1b6, 0xd1b7, + 0xd1b8, 0xd1b9, 0xd1ba, 0xd1bb, 0xd1bc, 0xd1bd, 0xd1be, 0xd1bf, + 0xd1c0, 0xd1c1, 0xd1c2, 0xd1c3, 0xd1c4, 0xd1c5, 0xd1c6, 0xd1c7, + 0xd1c8, 0xd1c9, 0xd1ca, 0xd1cb, 0xd1cc, 0xd1cd, 0xd1ce, 0xd1cf, + 0xd1d0, 0xd1d1, 0xd1d2, 0xd1d3, 0xd1d4, 0xd1d5, 0xd1d6, 0xd1d7, + 0xd1d8, 0xd1d9, 0xd1da, 0xd1db, 0xd1dc, 0xd1dd, 0xd1de, 0xd1df, + 0xd1e0, 0xd1e1, 0xd1e2, 0xd1e3, 0xd1e4, 0xd1e5, 0xd1e6, 0xd1e7, + 0xd1e8, 0xd1e9, 0xd1ea, 0xd1eb, 0xd1ec, 0xd1ed, 0xd1ee, 0xd1ef, + 0xd1f0, 0xd1f1, 0xd1f2, 0xd1f3, 0xd1f4, 0xd1f5, 0xd1f6, 0xd1f7, + 0xd1f8, 0xd1f9, 0xd1fa, 0xd1fb, 0xd1fc, 0xd1fd, 0xd1fe, 0xd1ff, + 0xd200, 0xd201, 0xd202, 0xd203, 0xd204, 0xd205, 0xd206, 0xd207, + 0xd208, 0xd209, 0xd20a, 0xd20b, 0xd20c, 0xd20d, 0xd20e, 0xd20f, + 0xd210, 0xd211, 0xd212, 0xd213, 0xd214, 0xd215, 0xd216, 0xd217, + 0xd218, 0xd219, 0xd21a, 0xd21b, 0xd21c, 0xd21d, 0xd21e, 0xd21f, + 0xd220, 0xd221, 0xd222, 0xd223, 0xd224, 0xd225, 0xd226, 0xd227, + 0xd228, 0xd229, 0xd22a, 0xd22b, 0xd22c, 0xd22d, 0xd22e, 0xd22f, + 0xd230, 0xd231, 0xd232, 0xd233, 0xd234, 0xd235, 0xd236, 0xd237, + 0xd238, 0xd239, 0xd23a, 0xd23b, 0xd23c, 0xd23d, 0xd23e, 0xd23f, + 0xd240, 0xd241, 0xd242, 0xd243, 0xd244, 0xd245, 0xd246, 0xd247, + 0xd248, 0xd249, 0xd24a, 0xd24b, 0xd24c, 0xd24d, 0xd24e, 0xd24f, + 0xd250, 0xd251, 0xd252, 0xd253, 0xd254, 0xd255, 0xd256, 0xd257, + 0xd258, 0xd259, 0xd25a, 0xd25b, 0xd25c, 0xd25d, 0xd25e, 0xd25f, + 0xd260, 0xd261, 0xd262, 0xd263, 0xd264, 0xd265, 0xd266, 0xd267, + 0xd268, 0xd269, 0xd26a, 0xd26b, 0xd26c, 0xd26d, 0xd26e, 0xd26f, + 0xd270, 0xd271, 0xd272, 0xd273, 0xd274, 0xd275, 0xd276, 0xd277, + 0xd278, 0xd279, 0xd27a, 0xd27b, 0xd27c, 0xd27d, 0xd27e, 0xd27f, + 0xd280, 0xd281, 0xd282, 0xd283, 0xd284, 0xd285, 0xd286, 0xd287, + 0xd288, 0xd289, 0xd28a, 0xd28b, 0xd28c, 0xd28d, 0xd28e, 0xd28f, + 0xd290, 0xd291, 0xd292, 0xd293, 0xd294, 0xd295, 0xd296, 0xd297, + 0xd298, 0xd299, 0xd29a, 0xd29b, 0xd29c, 0xd29d, 0xd29e, 0xd29f, + 0xd2a0, 0xd2a1, 0xd2a2, 0xd2a3, 0xd2a4, 0xd2a5, 0xd2a6, 0xd2a7, + 0xd2a8, 0xd2a9, 0xd2aa, 0xd2ab, 0xd2ac, 0xd2ad, 0xd2ae, 0xd2af, + 0xd2b0, 0xd2b1, 0xd2b2, 0xd2b3, 0xd2b4, 0xd2b5, 0xd2b6, 0xd2b7, + 0xd2b8, 0xd2b9, 0xd2ba, 0xd2bb, 0xd2bc, 0xd2bd, 0xd2be, 0xd2bf, + 0xd2c0, 0xd2c1, 0xd2c2, 0xd2c3, 0xd2c4, 0xd2c5, 0xd2c6, 0xd2c7, + 0xd2c8, 0xd2c9, 0xd2ca, 0xd2cb, 0xd2cc, 0xd2cd, 0xd2ce, 0xd2cf, + 0xd2d0, 0xd2d1, 0xd2d2, 0xd2d3, 0xd2d4, 0xd2d5, 0xd2d6, 0xd2d7, + 0xd2d8, 0xd2d9, 0xd2da, 0xd2db, 0xd2dc, 0xd2dd, 0xd2de, 0xd2df, + 0xd2e0, 0xd2e1, 0xd2e2, 0xd2e3, 0xd2e4, 0xd2e5, 0xd2e6, 0xd2e7, + 0xd2e8, 0xd2e9, 0xd2ea, 0xd2eb, 0xd2ec, 0xd2ed, 0xd2ee, 0xd2ef, + 0xd2f0, 0xd2f1, 0xd2f2, 0xd2f3, 0xd2f4, 0xd2f5, 0xd2f6, 0xd2f7, + 0xd2f8, 0xd2f9, 0xd2fa, 0xd2fb, 0xd2fc, 0xd2fd, 0xd2fe, 0xd2ff, + 0xd300, 0xd301, 0xd302, 0xd303, 0xd304, 0xd305, 0xd306, 0xd307, + 0xd308, 0xd309, 0xd30a, 0xd30b, 0xd30c, 0xd30d, 0xd30e, 0xd30f, + 0xd310, 0xd311, 0xd312, 0xd313, 0xd314, 0xd315, 0xd316, 0xd317, + 0xd318, 0xd319, 0xd31a, 0xd31b, 0xd31c, 0xd31d, 0xd31e, 0xd31f, + 0xd320, 0xd321, 0xd322, 0xd323, 0xd324, 0xd325, 0xd326, 0xd327, + 0xd328, 0xd329, 0xd32a, 0xd32b, 0xd32c, 0xd32d, 0xd32e, 0xd32f, + 0xd330, 0xd331, 0xd332, 0xd333, 0xd334, 0xd335, 0xd336, 0xd337, + 0xd338, 0xd339, 0xd33a, 0xd33b, 0xd33c, 0xd33d, 0xd33e, 0xd33f, + 0xd340, 0xd341, 0xd342, 0xd343, 0xd344, 0xd345, 0xd346, 0xd347, + 0xd348, 0xd349, 0xd34a, 0xd34b, 0xd34c, 0xd34d, 0xd34e, 0xd34f, + 0xd350, 0xd351, 0xd352, 0xd353, 0xd354, 0xd355, 0xd356, 0xd357, + 0xd358, 0xd359, 0xd35a, 0xd35b, 0xd35c, 0xd35d, 0xd35e, 0xd35f, + 0xd360, 0xd361, 0xd362, 0xd363, 0xd364, 0xd365, 0xd366, 0xd367, + 0xd368, 0xd369, 0xd36a, 0xd36b, 0xd36c, 0xd36d, 0xd36e, 0xd36f, + 0xd370, 0xd371, 0xd372, 0xd373, 0xd374, 0xd375, 0xd376, 0xd377, + 0xd378, 0xd379, 0xd37a, 0xd37b, 0xd37c, 0xd37d, 0xd37e, 0xd37f, + 0xd380, 0xd381, 0xd382, 0xd383, 0xd384, 0xd385, 0xd386, 0xd387, + 0xd388, 0xd389, 0xd38a, 0xd38b, 0xd38c, 0xd38d, 0xd38e, 0xd38f, + 0xd390, 0xd391, 0xd392, 0xd393, 0xd394, 0xd395, 0xd396, 0xd397, + 0xd398, 0xd399, 0xd39a, 0xd39b, 0xd39c, 0xd39d, 0xd39e, 0xd39f, + 0xd3a0, 0xd3a1, 0xd3a2, 0xd3a3, 0xd3a4, 0xd3a5, 0xd3a6, 0xd3a7, + 0xd3a8, 0xd3a9, 0xd3aa, 0xd3ab, 0xd3ac, 0xd3ad, 0xd3ae, 0xd3af, + 0xd3b0, 0xd3b1, 0xd3b2, 0xd3b3, 0xd3b4, 0xd3b5, 0xd3b6, 0xd3b7, + 0xd3b8, 0xd3b9, 0xd3ba, 0xd3bb, 0xd3bc, 0xd3bd, 0xd3be, 0xd3bf, + 0xd3c0, 0xd3c1, 0xd3c2, 0xd3c3, 0xd3c4, 0xd3c5, 0xd3c6, 0xd3c7, + 0xd3c8, 0xd3c9, 0xd3ca, 0xd3cb, 0xd3cc, 0xd3cd, 0xd3ce, 0xd3cf, + 0xd3d0, 0xd3d1, 0xd3d2, 0xd3d3, 0xd3d4, 0xd3d5, 0xd3d6, 0xd3d7, + 0xd3d8, 0xd3d9, 0xd3da, 0xd3db, 0xd3dc, 0xd3dd, 0xd3de, 0xd3df, + 0xd3e0, 0xd3e1, 0xd3e2, 0xd3e3, 0xd3e4, 0xd3e5, 0xd3e6, 0xd3e7, + 0xd3e8, 0xd3e9, 0xd3ea, 0xd3eb, 0xd3ec, 0xd3ed, 0xd3ee, 0xd3ef, + 0xd3f0, 0xd3f1, 0xd3f2, 0xd3f3, 0xd3f4, 0xd3f5, 0xd3f6, 0xd3f7, + 0xd3f8, 0xd3f9, 0xd3fa, 0xd3fb, 0xd3fc, 0xd3fd, 0xd3fe, 0xd3ff, + 0xd400, 0xd401, 0xd402, 0xd403, 0xd404, 0xd405, 0xd406, 0xd407, + 0xd408, 0xd409, 0xd40a, 0xd40b, 0xd40c, 0xd40d, 0xd40e, 0xd40f, + 0xd410, 0xd411, 0xd412, 0xd413, 0xd414, 0xd415, 0xd416, 0xd417, + 0xd418, 0xd419, 0xd41a, 0xd41b, 0xd41c, 0xd41d, 0xd41e, 0xd41f, + 0xd420, 0xd421, 0xd422, 0xd423, 0xd424, 0xd425, 0xd426, 0xd427, + 0xd428, 0xd429, 0xd42a, 0xd42b, 0xd42c, 0xd42d, 0xd42e, 0xd42f, + 0xd430, 0xd431, 0xd432, 0xd433, 0xd434, 0xd435, 0xd436, 0xd437, + 0xd438, 0xd439, 0xd43a, 0xd43b, 0xd43c, 0xd43d, 0xd43e, 0xd43f, + 0xd440, 0xd441, 0xd442, 0xd443, 0xd444, 0xd445, 0xd446, 0xd447, + 0xd448, 0xd449, 0xd44a, 0xd44b, 0xd44c, 0xd44d, 0xd44e, 0xd44f, + 0xd450, 0xd451, 0xd452, 0xd453, 0xd454, 0xd455, 0xd456, 0xd457, + 0xd458, 0xd459, 0xd45a, 0xd45b, 0xd45c, 0xd45d, 0xd45e, 0xd45f, + 0xd460, 0xd461, 0xd462, 0xd463, 0xd464, 0xd465, 0xd466, 0xd467, + 0xd468, 0xd469, 0xd46a, 0xd46b, 0xd46c, 0xd46d, 0xd46e, 0xd46f, + 0xd470, 0xd471, 0xd472, 0xd473, 0xd474, 0xd475, 0xd476, 0xd477, + 0xd478, 0xd479, 0xd47a, 0xd47b, 0xd47c, 0xd47d, 0xd47e, 0xd47f, + 0xd480, 0xd481, 0xd482, 0xd483, 0xd484, 0xd485, 0xd486, 0xd487, + 0xd488, 0xd489, 0xd48a, 0xd48b, 0xd48c, 0xd48d, 0xd48e, 0xd48f, + 0xd490, 0xd491, 0xd492, 0xd493, 0xd494, 0xd495, 0xd496, 0xd497, + 0xd498, 0xd499, 0xd49a, 0xd49b, 0xd49c, 0xd49d, 0xd49e, 0xd49f, + 0xd4a0, 0xd4a1, 0xd4a2, 0xd4a3, 0xd4a4, 0xd4a5, 0xd4a6, 0xd4a7, + 0xd4a8, 0xd4a9, 0xd4aa, 0xd4ab, 0xd4ac, 0xd4ad, 0xd4ae, 0xd4af, + 0xd4b0, 0xd4b1, 0xd4b2, 0xd4b3, 0xd4b4, 0xd4b5, 0xd4b6, 0xd4b7, + 0xd4b8, 0xd4b9, 0xd4ba, 0xd4bb, 0xd4bc, 0xd4bd, 0xd4be, 0xd4bf, + 0xd4c0, 0xd4c1, 0xd4c2, 0xd4c3, 0xd4c4, 0xd4c5, 0xd4c6, 0xd4c7, + 0xd4c8, 0xd4c9, 0xd4ca, 0xd4cb, 0xd4cc, 0xd4cd, 0xd4ce, 0xd4cf, + 0xd4d0, 0xd4d1, 0xd4d2, 0xd4d3, 0xd4d4, 0xd4d5, 0xd4d6, 0xd4d7, + 0xd4d8, 0xd4d9, 0xd4da, 0xd4db, 0xd4dc, 0xd4dd, 0xd4de, 0xd4df, + 0xd4e0, 0xd4e1, 0xd4e2, 0xd4e3, 0xd4e4, 0xd4e5, 0xd4e6, 0xd4e7, + 0xd4e8, 0xd4e9, 0xd4ea, 0xd4eb, 0xd4ec, 0xd4ed, 0xd4ee, 0xd4ef, + 0xd4f0, 0xd4f1, 0xd4f2, 0xd4f3, 0xd4f4, 0xd4f5, 0xd4f6, 0xd4f7, + 0xd4f8, 0xd4f9, 0xd4fa, 0xd4fb, 0xd4fc, 0xd4fd, 0xd4fe, 0xd4ff, + 0xd500, 0xd501, 0xd502, 0xd503, 0xd504, 0xd505, 0xd506, 0xd507, + 0xd508, 0xd509, 0xd50a, 0xd50b, 0xd50c, 0xd50d, 0xd50e, 0xd50f, + 0xd510, 0xd511, 0xd512, 0xd513, 0xd514, 0xd515, 0xd516, 0xd517, + 0xd518, 0xd519, 0xd51a, 0xd51b, 0xd51c, 0xd51d, 0xd51e, 0xd51f, + 0xd520, 0xd521, 0xd522, 0xd523, 0xd524, 0xd525, 0xd526, 0xd527, + 0xd528, 0xd529, 0xd52a, 0xd52b, 0xd52c, 0xd52d, 0xd52e, 0xd52f, + 0xd530, 0xd531, 0xd532, 0xd533, 0xd534, 0xd535, 0xd536, 0xd537, + 0xd538, 0xd539, 0xd53a, 0xd53b, 0xd53c, 0xd53d, 0xd53e, 0xd53f, + 0xd540, 0xd541, 0xd542, 0xd543, 0xd544, 0xd545, 0xd546, 0xd547, + 0xd548, 0xd549, 0xd54a, 0xd54b, 0xd54c, 0xd54d, 0xd54e, 0xd54f, + 0xd550, 0xd551, 0xd552, 0xd553, 0xd554, 0xd555, 0xd556, 0xd557, + 0xd558, 0xd559, 0xd55a, 0xd55b, 0xd55c, 0xd55d, 0xd55e, 0xd55f, + 0xd560, 0xd561, 0xd562, 0xd563, 0xd564, 0xd565, 0xd566, 0xd567, + 0xd568, 0xd569, 0xd56a, 0xd56b, 0xd56c, 0xd56d, 0xd56e, 0xd56f, + 0xd570, 0xd571, 0xd572, 0xd573, 0xd574, 0xd575, 0xd576, 0xd577, + 0xd578, 0xd579, 0xd57a, 0xd57b, 0xd57c, 0xd57d, 0xd57e, 0xd57f, + 0xd580, 0xd581, 0xd582, 0xd583, 0xd584, 0xd585, 0xd586, 0xd587, + 0xd588, 0xd589, 0xd58a, 0xd58b, 0xd58c, 0xd58d, 0xd58e, 0xd58f, + 0xd590, 0xd591, 0xd592, 0xd593, 0xd594, 0xd595, 0xd596, 0xd597, + 0xd598, 0xd599, 0xd59a, 0xd59b, 0xd59c, 0xd59d, 0xd59e, 0xd59f, + 0xd5a0, 0xd5a1, 0xd5a2, 0xd5a3, 0xd5a4, 0xd5a5, 0xd5a6, 0xd5a7, + 0xd5a8, 0xd5a9, 0xd5aa, 0xd5ab, 0xd5ac, 0xd5ad, 0xd5ae, 0xd5af, + 0xd5b0, 0xd5b1, 0xd5b2, 0xd5b3, 0xd5b4, 0xd5b5, 0xd5b6, 0xd5b7, + 0xd5b8, 0xd5b9, 0xd5ba, 0xd5bb, 0xd5bc, 0xd5bd, 0xd5be, 0xd5bf, + 0xd5c0, 0xd5c1, 0xd5c2, 0xd5c3, 0xd5c4, 0xd5c5, 0xd5c6, 0xd5c7, + 0xd5c8, 0xd5c9, 0xd5ca, 0xd5cb, 0xd5cc, 0xd5cd, 0xd5ce, 0xd5cf, + 0xd5d0, 0xd5d1, 0xd5d2, 0xd5d3, 0xd5d4, 0xd5d5, 0xd5d6, 0xd5d7, + 0xd5d8, 0xd5d9, 0xd5da, 0xd5db, 0xd5dc, 0xd5dd, 0xd5de, 0xd5df, + 0xd5e0, 0xd5e1, 0xd5e2, 0xd5e3, 0xd5e4, 0xd5e5, 0xd5e6, 0xd5e7, + 0xd5e8, 0xd5e9, 0xd5ea, 0xd5eb, 0xd5ec, 0xd5ed, 0xd5ee, 0xd5ef, + 0xd5f0, 0xd5f1, 0xd5f2, 0xd5f3, 0xd5f4, 0xd5f5, 0xd5f6, 0xd5f7, + 0xd5f8, 0xd5f9, 0xd5fa, 0xd5fb, 0xd5fc, 0xd5fd, 0xd5fe, 0xd5ff, + 0xd600, 0xd601, 0xd602, 0xd603, 0xd604, 0xd605, 0xd606, 0xd607, + 0xd608, 0xd609, 0xd60a, 0xd60b, 0xd60c, 0xd60d, 0xd60e, 0xd60f, + 0xd610, 0xd611, 0xd612, 0xd613, 0xd614, 0xd615, 0xd616, 0xd617, + 0xd618, 0xd619, 0xd61a, 0xd61b, 0xd61c, 0xd61d, 0xd61e, 0xd61f, + 0xd620, 0xd621, 0xd622, 0xd623, 0xd624, 0xd625, 0xd626, 0xd627, + 0xd628, 0xd629, 0xd62a, 0xd62b, 0xd62c, 0xd62d, 0xd62e, 0xd62f, + 0xd630, 0xd631, 0xd632, 0xd633, 0xd634, 0xd635, 0xd636, 0xd637, + 0xd638, 0xd639, 0xd63a, 0xd63b, 0xd63c, 0xd63d, 0xd63e, 0xd63f, + 0xd640, 0xd641, 0xd642, 0xd643, 0xd644, 0xd645, 0xd646, 0xd647, + 0xd648, 0xd649, 0xd64a, 0xd64b, 0xd64c, 0xd64d, 0xd64e, 0xd64f, + 0xd650, 0xd651, 0xd652, 0xd653, 0xd654, 0xd655, 0xd656, 0xd657, + 0xd658, 0xd659, 0xd65a, 0xd65b, 0xd65c, 0xd65d, 0xd65e, 0xd65f, + 0xd660, 0xd661, 0xd662, 0xd663, 0xd664, 0xd665, 0xd666, 0xd667, + 0xd668, 0xd669, 0xd66a, 0xd66b, 0xd66c, 0xd66d, 0xd66e, 0xd66f, + 0xd670, 0xd671, 0xd672, 0xd673, 0xd674, 0xd675, 0xd676, 0xd677, + 0xd678, 0xd679, 0xd67a, 0xd67b, 0xd67c, 0xd67d, 0xd67e, 0xd67f, + 0xd680, 0xd681, 0xd682, 0xd683, 0xd684, 0xd685, 0xd686, 0xd687, + 0xd688, 0xd689, 0xd68a, 0xd68b, 0xd68c, 0xd68d, 0xd68e, 0xd68f, + 0xd690, 0xd691, 0xd692, 0xd693, 0xd694, 0xd695, 0xd696, 0xd697, + 0xd698, 0xd699, 0xd69a, 0xd69b, 0xd69c, 0xd69d, 0xd69e, 0xd69f, + 0xd6a0, 0xd6a1, 0xd6a2, 0xd6a3, 0xd6a4, 0xd6a5, 0xd6a6, 0xd6a7, + 0xd6a8, 0xd6a9, 0xd6aa, 0xd6ab, 0xd6ac, 0xd6ad, 0xd6ae, 0xd6af, + 0xd6b0, 0xd6b1, 0xd6b2, 0xd6b3, 0xd6b4, 0xd6b5, 0xd6b6, 0xd6b7, + 0xd6b8, 0xd6b9, 0xd6ba, 0xd6bb, 0xd6bc, 0xd6bd, 0xd6be, 0xd6bf, + 0xd6c0, 0xd6c1, 0xd6c2, 0xd6c3, 0xd6c4, 0xd6c5, 0xd6c6, 0xd6c7, + 0xd6c8, 0xd6c9, 0xd6ca, 0xd6cb, 0xd6cc, 0xd6cd, 0xd6ce, 0xd6cf, + 0xd6d0, 0xd6d1, 0xd6d2, 0xd6d3, 0xd6d4, 0xd6d5, 0xd6d6, 0xd6d7, + 0xd6d8, 0xd6d9, 0xd6da, 0xd6db, 0xd6dc, 0xd6dd, 0xd6de, 0xd6df, + 0xd6e0, 0xd6e1, 0xd6e2, 0xd6e3, 0xd6e4, 0xd6e5, 0xd6e6, 0xd6e7, + 0xd6e8, 0xd6e9, 0xd6ea, 0xd6eb, 0xd6ec, 0xd6ed, 0xd6ee, 0xd6ef, + 0xd6f0, 0xd6f1, 0xd6f2, 0xd6f3, 0xd6f4, 0xd6f5, 0xd6f6, 0xd6f7, + 0xd6f8, 0xd6f9, 0xd6fa, 0xd6fb, 0xd6fc, 0xd6fd, 0xd6fe, 0xd6ff, + 0xd700, 0xd701, 0xd702, 0xd703, 0xd704, 0xd705, 0xd706, 0xd707, + 0xd708, 0xd709, 0xd70a, 0xd70b, 0xd70c, 0xd70d, 0xd70e, 0xd70f, + 0xd710, 0xd711, 0xd712, 0xd713, 0xd714, 0xd715, 0xd716, 0xd717, + 0xd718, 0xd719, 0xd71a, 0xd71b, 0xd71c, 0xd71d, 0xd71e, 0xd71f, + 0xd720, 0xd721, 0xd722, 0xd723, 0xd724, 0xd725, 0xd726, 0xd727, + 0xd728, 0xd729, 0xd72a, 0xd72b, 0xd72c, 0xd72d, 0xd72e, 0xd72f, + 0xd730, 0xd731, 0xd732, 0xd733, 0xd734, 0xd735, 0xd736, 0xd737, + 0xd738, 0xd739, 0xd73a, 0xd73b, 0xd73c, 0xd73d, 0xd73e, 0xd73f, + 0xd740, 0xd741, 0xd742, 0xd743, 0xd744, 0xd745, 0xd746, 0xd747, + 0xd748, 0xd749, 0xd74a, 0xd74b, 0xd74c, 0xd74d, 0xd74e, 0xd74f, + 0xd750, 0xd751, 0xd752, 0xd753, 0xd754, 0xd755, 0xd756, 0xd757, + 0xd758, 0xd759, 0xd75a, 0xd75b, 0xd75c, 0xd75d, 0xd75e, 0xd75f, + 0xd760, 0xd761, 0xd762, 0xd763, 0xd764, 0xd765, 0xd766, 0xd767, + 0xd768, 0xd769, 0xd76a, 0xd76b, 0xd76c, 0xd76d, 0xd76e, 0xd76f, + 0xd770, 0xd771, 0xd772, 0xd773, 0xd774, 0xd775, 0xd776, 0xd777, + 0xd778, 0xd779, 0xd77a, 0xd77b, 0xd77c, 0xd77d, 0xd77e, 0xd77f, + 0xd780, 0xd781, 0xd782, 0xd783, 0xd784, 0xd785, 0xd786, 0xd787, + 0xd788, 0xd789, 0xd78a, 0xd78b, 0xd78c, 0xd78d, 0xd78e, 0xd78f, + 0xd790, 0xd791, 0xd792, 0xd793, 0xd794, 0xd795, 0xd796, 0xd797, + 0xd798, 0xd799, 0xd79a, 0xd79b, 0xd79c, 0xd79d, 0xd79e, 0xd79f, + 0xd7a0, 0xd7a1, 0xd7a2, 0xd7a3, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xd800, 0xd801, 0xd802, 0xd803, 0xd804, 0xd805, 0xd806, 0xd807, + 0xd808, 0xd809, 0xd80a, 0xd80b, 0xd80c, 0xd80d, 0xd80e, 0xd80f, + 0xd810, 0xd811, 0xd812, 0xd813, 0xd814, 0xd815, 0xd816, 0xd817, + 0xd818, 0xd819, 0xd81a, 0xd81b, 0xd81c, 0xd81d, 0xd81e, 0xd81f, + 0xd820, 0xd821, 0xd822, 0xd823, 0xd824, 0xd825, 0xd826, 0xd827, + 0xd828, 0xd829, 0xd82a, 0xd82b, 0xd82c, 0xd82d, 0xd82e, 0xd82f, + 0xd830, 0xd831, 0xd832, 0xd833, 0xd834, 0xd835, 0xd836, 0xd837, + 0xd838, 0xd839, 0xd83a, 0xd83b, 0xd83c, 0xd83d, 0xd83e, 0xd83f, + 0xd840, 0xd841, 0xd842, 0xd843, 0xd844, 0xd845, 0xd846, 0xd847, + 0xd848, 0xd849, 0xd84a, 0xd84b, 0xd84c, 0xd84d, 0xd84e, 0xd84f, + 0xd850, 0xd851, 0xd852, 0xd853, 0xd854, 0xd855, 0xd856, 0xd857, + 0xd858, 0xd859, 0xd85a, 0xd85b, 0xd85c, 0xd85d, 0xd85e, 0xd85f, + 0xd860, 0xd861, 0xd862, 0xd863, 0xd864, 0xd865, 0xd866, 0xd867, + 0xd868, 0xd869, 0xd86a, 0xd86b, 0xd86c, 0xd86d, 0xd86e, 0xd86f, + 0xd870, 0xd871, 0xd872, 0xd873, 0xd874, 0xd875, 0xd876, 0xd877, + 0xd878, 0xd879, 0xd87a, 0xd87b, 0xd87c, 0xd87d, 0xd87e, 0xd87f, + 0xd880, 0xd881, 0xd882, 0xd883, 0xd884, 0xd885, 0xd886, 0xd887, + 0xd888, 0xd889, 0xd88a, 0xd88b, 0xd88c, 0xd88d, 0xd88e, 0xd88f, + 0xd890, 0xd891, 0xd892, 0xd893, 0xd894, 0xd895, 0xd896, 0xd897, + 0xd898, 0xd899, 0xd89a, 0xd89b, 0xd89c, 0xd89d, 0xd89e, 0xd89f, + 0xd8a0, 0xd8a1, 0xd8a2, 0xd8a3, 0xd8a4, 0xd8a5, 0xd8a6, 0xd8a7, + 0xd8a8, 0xd8a9, 0xd8aa, 0xd8ab, 0xd8ac, 0xd8ad, 0xd8ae, 0xd8af, + 0xd8b0, 0xd8b1, 0xd8b2, 0xd8b3, 0xd8b4, 0xd8b5, 0xd8b6, 0xd8b7, + 0xd8b8, 0xd8b9, 0xd8ba, 0xd8bb, 0xd8bc, 0xd8bd, 0xd8be, 0xd8bf, + 0xd8c0, 0xd8c1, 0xd8c2, 0xd8c3, 0xd8c4, 0xd8c5, 0xd8c6, 0xd8c7, + 0xd8c8, 0xd8c9, 0xd8ca, 0xd8cb, 0xd8cc, 0xd8cd, 0xd8ce, 0xd8cf, + 0xd8d0, 0xd8d1, 0xd8d2, 0xd8d3, 0xd8d4, 0xd8d5, 0xd8d6, 0xd8d7, + 0xd8d8, 0xd8d9, 0xd8da, 0xd8db, 0xd8dc, 0xd8dd, 0xd8de, 0xd8df, + 0xd8e0, 0xd8e1, 0xd8e2, 0xd8e3, 0xd8e4, 0xd8e5, 0xd8e6, 0xd8e7, + 0xd8e8, 0xd8e9, 0xd8ea, 0xd8eb, 0xd8ec, 0xd8ed, 0xd8ee, 0xd8ef, + 0xd8f0, 0xd8f1, 0xd8f2, 0xd8f3, 0xd8f4, 0xd8f5, 0xd8f6, 0xd8f7, + 0xd8f8, 0xd8f9, 0xd8fa, 0xd8fb, 0xd8fc, 0xd8fd, 0xd8fe, 0xd8ff, + 0xd900, 0xd901, 0xd902, 0xd903, 0xd904, 0xd905, 0xd906, 0xd907, + 0xd908, 0xd909, 0xd90a, 0xd90b, 0xd90c, 0xd90d, 0xd90e, 0xd90f, + 0xd910, 0xd911, 0xd912, 0xd913, 0xd914, 0xd915, 0xd916, 0xd917, + 0xd918, 0xd919, 0xd91a, 0xd91b, 0xd91c, 0xd91d, 0xd91e, 0xd91f, + 0xd920, 0xd921, 0xd922, 0xd923, 0xd924, 0xd925, 0xd926, 0xd927, + 0xd928, 0xd929, 0xd92a, 0xd92b, 0xd92c, 0xd92d, 0xd92e, 0xd92f, + 0xd930, 0xd931, 0xd932, 0xd933, 0xd934, 0xd935, 0xd936, 0xd937, + 0xd938, 0xd939, 0xd93a, 0xd93b, 0xd93c, 0xd93d, 0xd93e, 0xd93f, + 0xd940, 0xd941, 0xd942, 0xd943, 0xd944, 0xd945, 0xd946, 0xd947, + 0xd948, 0xd949, 0xd94a, 0xd94b, 0xd94c, 0xd94d, 0xd94e, 0xd94f, + 0xd950, 0xd951, 0xd952, 0xd953, 0xd954, 0xd955, 0xd956, 0xd957, + 0xd958, 0xd959, 0xd95a, 0xd95b, 0xd95c, 0xd95d, 0xd95e, 0xd95f, + 0xd960, 0xd961, 0xd962, 0xd963, 0xd964, 0xd965, 0xd966, 0xd967, + 0xd968, 0xd969, 0xd96a, 0xd96b, 0xd96c, 0xd96d, 0xd96e, 0xd96f, + 0xd970, 0xd971, 0xd972, 0xd973, 0xd974, 0xd975, 0xd976, 0xd977, + 0xd978, 0xd979, 0xd97a, 0xd97b, 0xd97c, 0xd97d, 0xd97e, 0xd97f, + 0xd980, 0xd981, 0xd982, 0xd983, 0xd984, 0xd985, 0xd986, 0xd987, + 0xd988, 0xd989, 0xd98a, 0xd98b, 0xd98c, 0xd98d, 0xd98e, 0xd98f, + 0xd990, 0xd991, 0xd992, 0xd993, 0xd994, 0xd995, 0xd996, 0xd997, + 0xd998, 0xd999, 0xd99a, 0xd99b, 0xd99c, 0xd99d, 0xd99e, 0xd99f, + 0xd9a0, 0xd9a1, 0xd9a2, 0xd9a3, 0xd9a4, 0xd9a5, 0xd9a6, 0xd9a7, + 0xd9a8, 0xd9a9, 0xd9aa, 0xd9ab, 0xd9ac, 0xd9ad, 0xd9ae, 0xd9af, + 0xd9b0, 0xd9b1, 0xd9b2, 0xd9b3, 0xd9b4, 0xd9b5, 0xd9b6, 0xd9b7, + 0xd9b8, 0xd9b9, 0xd9ba, 0xd9bb, 0xd9bc, 0xd9bd, 0xd9be, 0xd9bf, + 0xd9c0, 0xd9c1, 0xd9c2, 0xd9c3, 0xd9c4, 0xd9c5, 0xd9c6, 0xd9c7, + 0xd9c8, 0xd9c9, 0xd9ca, 0xd9cb, 0xd9cc, 0xd9cd, 0xd9ce, 0xd9cf, + 0xd9d0, 0xd9d1, 0xd9d2, 0xd9d3, 0xd9d4, 0xd9d5, 0xd9d6, 0xd9d7, + 0xd9d8, 0xd9d9, 0xd9da, 0xd9db, 0xd9dc, 0xd9dd, 0xd9de, 0xd9df, + 0xd9e0, 0xd9e1, 0xd9e2, 0xd9e3, 0xd9e4, 0xd9e5, 0xd9e6, 0xd9e7, + 0xd9e8, 0xd9e9, 0xd9ea, 0xd9eb, 0xd9ec, 0xd9ed, 0xd9ee, 0xd9ef, + 0xd9f0, 0xd9f1, 0xd9f2, 0xd9f3, 0xd9f4, 0xd9f5, 0xd9f6, 0xd9f7, + 0xd9f8, 0xd9f9, 0xd9fa, 0xd9fb, 0xd9fc, 0xd9fd, 0xd9fe, 0xd9ff, + 0xda00, 0xda01, 0xda02, 0xda03, 0xda04, 0xda05, 0xda06, 0xda07, + 0xda08, 0xda09, 0xda0a, 0xda0b, 0xda0c, 0xda0d, 0xda0e, 0xda0f, + 0xda10, 0xda11, 0xda12, 0xda13, 0xda14, 0xda15, 0xda16, 0xda17, + 0xda18, 0xda19, 0xda1a, 0xda1b, 0xda1c, 0xda1d, 0xda1e, 0xda1f, + 0xda20, 0xda21, 0xda22, 0xda23, 0xda24, 0xda25, 0xda26, 0xda27, + 0xda28, 0xda29, 0xda2a, 0xda2b, 0xda2c, 0xda2d, 0xda2e, 0xda2f, + 0xda30, 0xda31, 0xda32, 0xda33, 0xda34, 0xda35, 0xda36, 0xda37, + 0xda38, 0xda39, 0xda3a, 0xda3b, 0xda3c, 0xda3d, 0xda3e, 0xda3f, + 0xda40, 0xda41, 0xda42, 0xda43, 0xda44, 0xda45, 0xda46, 0xda47, + 0xda48, 0xda49, 0xda4a, 0xda4b, 0xda4c, 0xda4d, 0xda4e, 0xda4f, + 0xda50, 0xda51, 0xda52, 0xda53, 0xda54, 0xda55, 0xda56, 0xda57, + 0xda58, 0xda59, 0xda5a, 0xda5b, 0xda5c, 0xda5d, 0xda5e, 0xda5f, + 0xda60, 0xda61, 0xda62, 0xda63, 0xda64, 0xda65, 0xda66, 0xda67, + 0xda68, 0xda69, 0xda6a, 0xda6b, 0xda6c, 0xda6d, 0xda6e, 0xda6f, + 0xda70, 0xda71, 0xda72, 0xda73, 0xda74, 0xda75, 0xda76, 0xda77, + 0xda78, 0xda79, 0xda7a, 0xda7b, 0xda7c, 0xda7d, 0xda7e, 0xda7f, + 0xda80, 0xda81, 0xda82, 0xda83, 0xda84, 0xda85, 0xda86, 0xda87, + 0xda88, 0xda89, 0xda8a, 0xda8b, 0xda8c, 0xda8d, 0xda8e, 0xda8f, + 0xda90, 0xda91, 0xda92, 0xda93, 0xda94, 0xda95, 0xda96, 0xda97, + 0xda98, 0xda99, 0xda9a, 0xda9b, 0xda9c, 0xda9d, 0xda9e, 0xda9f, + 0xdaa0, 0xdaa1, 0xdaa2, 0xdaa3, 0xdaa4, 0xdaa5, 0xdaa6, 0xdaa7, + 0xdaa8, 0xdaa9, 0xdaaa, 0xdaab, 0xdaac, 0xdaad, 0xdaae, 0xdaaf, + 0xdab0, 0xdab1, 0xdab2, 0xdab3, 0xdab4, 0xdab5, 0xdab6, 0xdab7, + 0xdab8, 0xdab9, 0xdaba, 0xdabb, 0xdabc, 0xdabd, 0xdabe, 0xdabf, + 0xdac0, 0xdac1, 0xdac2, 0xdac3, 0xdac4, 0xdac5, 0xdac6, 0xdac7, + 0xdac8, 0xdac9, 0xdaca, 0xdacb, 0xdacc, 0xdacd, 0xdace, 0xdacf, + 0xdad0, 0xdad1, 0xdad2, 0xdad3, 0xdad4, 0xdad5, 0xdad6, 0xdad7, + 0xdad8, 0xdad9, 0xdada, 0xdadb, 0xdadc, 0xdadd, 0xdade, 0xdadf, + 0xdae0, 0xdae1, 0xdae2, 0xdae3, 0xdae4, 0xdae5, 0xdae6, 0xdae7, + 0xdae8, 0xdae9, 0xdaea, 0xdaeb, 0xdaec, 0xdaed, 0xdaee, 0xdaef, + 0xdaf0, 0xdaf1, 0xdaf2, 0xdaf3, 0xdaf4, 0xdaf5, 0xdaf6, 0xdaf7, + 0xdaf8, 0xdaf9, 0xdafa, 0xdafb, 0xdafc, 0xdafd, 0xdafe, 0xdaff, + 0xdb00, 0xdb01, 0xdb02, 0xdb03, 0xdb04, 0xdb05, 0xdb06, 0xdb07, + 0xdb08, 0xdb09, 0xdb0a, 0xdb0b, 0xdb0c, 0xdb0d, 0xdb0e, 0xdb0f, + 0xdb10, 0xdb11, 0xdb12, 0xdb13, 0xdb14, 0xdb15, 0xdb16, 0xdb17, + 0xdb18, 0xdb19, 0xdb1a, 0xdb1b, 0xdb1c, 0xdb1d, 0xdb1e, 0xdb1f, + 0xdb20, 0xdb21, 0xdb22, 0xdb23, 0xdb24, 0xdb25, 0xdb26, 0xdb27, + 0xdb28, 0xdb29, 0xdb2a, 0xdb2b, 0xdb2c, 0xdb2d, 0xdb2e, 0xdb2f, + 0xdb30, 0xdb31, 0xdb32, 0xdb33, 0xdb34, 0xdb35, 0xdb36, 0xdb37, + 0xdb38, 0xdb39, 0xdb3a, 0xdb3b, 0xdb3c, 0xdb3d, 0xdb3e, 0xdb3f, + 0xdb40, 0xdb41, 0xdb42, 0xdb43, 0xdb44, 0xdb45, 0xdb46, 0xdb47, + 0xdb48, 0xdb49, 0xdb4a, 0xdb4b, 0xdb4c, 0xdb4d, 0xdb4e, 0xdb4f, + 0xdb50, 0xdb51, 0xdb52, 0xdb53, 0xdb54, 0xdb55, 0xdb56, 0xdb57, + 0xdb58, 0xdb59, 0xdb5a, 0xdb5b, 0xdb5c, 0xdb5d, 0xdb5e, 0xdb5f, + 0xdb60, 0xdb61, 0xdb62, 0xdb63, 0xdb64, 0xdb65, 0xdb66, 0xdb67, + 0xdb68, 0xdb69, 0xdb6a, 0xdb6b, 0xdb6c, 0xdb6d, 0xdb6e, 0xdb6f, + 0xdb70, 0xdb71, 0xdb72, 0xdb73, 0xdb74, 0xdb75, 0xdb76, 0xdb77, + 0xdb78, 0xdb79, 0xdb7a, 0xdb7b, 0xdb7c, 0xdb7d, 0xdb7e, 0xdb7f, + 0xdb80, 0xdb81, 0xdb82, 0xdb83, 0xdb84, 0xdb85, 0xdb86, 0xdb87, + 0xdb88, 0xdb89, 0xdb8a, 0xdb8b, 0xdb8c, 0xdb8d, 0xdb8e, 0xdb8f, + 0xdb90, 0xdb91, 0xdb92, 0xdb93, 0xdb94, 0xdb95, 0xdb96, 0xdb97, + 0xdb98, 0xdb99, 0xdb9a, 0xdb9b, 0xdb9c, 0xdb9d, 0xdb9e, 0xdb9f, + 0xdba0, 0xdba1, 0xdba2, 0xdba3, 0xdba4, 0xdba5, 0xdba6, 0xdba7, + 0xdba8, 0xdba9, 0xdbaa, 0xdbab, 0xdbac, 0xdbad, 0xdbae, 0xdbaf, + 0xdbb0, 0xdbb1, 0xdbb2, 0xdbb3, 0xdbb4, 0xdbb5, 0xdbb6, 0xdbb7, + 0xdbb8, 0xdbb9, 0xdbba, 0xdbbb, 0xdbbc, 0xdbbd, 0xdbbe, 0xdbbf, + 0xdbc0, 0xdbc1, 0xdbc2, 0xdbc3, 0xdbc4, 0xdbc5, 0xdbc6, 0xdbc7, + 0xdbc8, 0xdbc9, 0xdbca, 0xdbcb, 0xdbcc, 0xdbcd, 0xdbce, 0xdbcf, + 0xdbd0, 0xdbd1, 0xdbd2, 0xdbd3, 0xdbd4, 0xdbd5, 0xdbd6, 0xdbd7, + 0xdbd8, 0xdbd9, 0xdbda, 0xdbdb, 0xdbdc, 0xdbdd, 0xdbde, 0xdbdf, + 0xdbe0, 0xdbe1, 0xdbe2, 0xdbe3, 0xdbe4, 0xdbe5, 0xdbe6, 0xdbe7, + 0xdbe8, 0xdbe9, 0xdbea, 0xdbeb, 0xdbec, 0xdbed, 0xdbee, 0xdbef, + 0xdbf0, 0xdbf1, 0xdbf2, 0xdbf3, 0xdbf4, 0xdbf5, 0xdbf6, 0xdbf7, + 0xdbf8, 0xdbf9, 0xdbfa, 0xdbfb, 0xdbfc, 0xdbfd, 0xdbfe, 0xdbff, + 0xdc00, 0xdc01, 0xdc02, 0xdc03, 0xdc04, 0xdc05, 0xdc06, 0xdc07, + 0xdc08, 0xdc09, 0xdc0a, 0xdc0b, 0xdc0c, 0xdc0d, 0xdc0e, 0xdc0f, + 0xdc10, 0xdc11, 0xdc12, 0xdc13, 0xdc14, 0xdc15, 0xdc16, 0xdc17, + 0xdc18, 0xdc19, 0xdc1a, 0xdc1b, 0xdc1c, 0xdc1d, 0xdc1e, 0xdc1f, + 0xdc20, 0xdc21, 0xdc22, 0xdc23, 0xdc24, 0xdc25, 0xdc26, 0xdc27, + 0xdc28, 0xdc29, 0xdc2a, 0xdc2b, 0xdc2c, 0xdc2d, 0xdc2e, 0xdc2f, + 0xdc30, 0xdc31, 0xdc32, 0xdc33, 0xdc34, 0xdc35, 0xdc36, 0xdc37, + 0xdc38, 0xdc39, 0xdc3a, 0xdc3b, 0xdc3c, 0xdc3d, 0xdc3e, 0xdc3f, + 0xdc40, 0xdc41, 0xdc42, 0xdc43, 0xdc44, 0xdc45, 0xdc46, 0xdc47, + 0xdc48, 0xdc49, 0xdc4a, 0xdc4b, 0xdc4c, 0xdc4d, 0xdc4e, 0xdc4f, + 0xdc50, 0xdc51, 0xdc52, 0xdc53, 0xdc54, 0xdc55, 0xdc56, 0xdc57, + 0xdc58, 0xdc59, 0xdc5a, 0xdc5b, 0xdc5c, 0xdc5d, 0xdc5e, 0xdc5f, + 0xdc60, 0xdc61, 0xdc62, 0xdc63, 0xdc64, 0xdc65, 0xdc66, 0xdc67, + 0xdc68, 0xdc69, 0xdc6a, 0xdc6b, 0xdc6c, 0xdc6d, 0xdc6e, 0xdc6f, + 0xdc70, 0xdc71, 0xdc72, 0xdc73, 0xdc74, 0xdc75, 0xdc76, 0xdc77, + 0xdc78, 0xdc79, 0xdc7a, 0xdc7b, 0xdc7c, 0xdc7d, 0xdc7e, 0xdc7f, + 0xdc80, 0xdc81, 0xdc82, 0xdc83, 0xdc84, 0xdc85, 0xdc86, 0xdc87, + 0xdc88, 0xdc89, 0xdc8a, 0xdc8b, 0xdc8c, 0xdc8d, 0xdc8e, 0xdc8f, + 0xdc90, 0xdc91, 0xdc92, 0xdc93, 0xdc94, 0xdc95, 0xdc96, 0xdc97, + 0xdc98, 0xdc99, 0xdc9a, 0xdc9b, 0xdc9c, 0xdc9d, 0xdc9e, 0xdc9f, + 0xdca0, 0xdca1, 0xdca2, 0xdca3, 0xdca4, 0xdca5, 0xdca6, 0xdca7, + 0xdca8, 0xdca9, 0xdcaa, 0xdcab, 0xdcac, 0xdcad, 0xdcae, 0xdcaf, + 0xdcb0, 0xdcb1, 0xdcb2, 0xdcb3, 0xdcb4, 0xdcb5, 0xdcb6, 0xdcb7, + 0xdcb8, 0xdcb9, 0xdcba, 0xdcbb, 0xdcbc, 0xdcbd, 0xdcbe, 0xdcbf, + 0xdcc0, 0xdcc1, 0xdcc2, 0xdcc3, 0xdcc4, 0xdcc5, 0xdcc6, 0xdcc7, + 0xdcc8, 0xdcc9, 0xdcca, 0xdccb, 0xdccc, 0xdccd, 0xdcce, 0xdccf, + 0xdcd0, 0xdcd1, 0xdcd2, 0xdcd3, 0xdcd4, 0xdcd5, 0xdcd6, 0xdcd7, + 0xdcd8, 0xdcd9, 0xdcda, 0xdcdb, 0xdcdc, 0xdcdd, 0xdcde, 0xdcdf, + 0xdce0, 0xdce1, 0xdce2, 0xdce3, 0xdce4, 0xdce5, 0xdce6, 0xdce7, + 0xdce8, 0xdce9, 0xdcea, 0xdceb, 0xdcec, 0xdced, 0xdcee, 0xdcef, + 0xdcf0, 0xdcf1, 0xdcf2, 0xdcf3, 0xdcf4, 0xdcf5, 0xdcf6, 0xdcf7, + 0xdcf8, 0xdcf9, 0xdcfa, 0xdcfb, 0xdcfc, 0xdcfd, 0xdcfe, 0xdcff, + 0xdd00, 0xdd01, 0xdd02, 0xdd03, 0xdd04, 0xdd05, 0xdd06, 0xdd07, + 0xdd08, 0xdd09, 0xdd0a, 0xdd0b, 0xdd0c, 0xdd0d, 0xdd0e, 0xdd0f, + 0xdd10, 0xdd11, 0xdd12, 0xdd13, 0xdd14, 0xdd15, 0xdd16, 0xdd17, + 0xdd18, 0xdd19, 0xdd1a, 0xdd1b, 0xdd1c, 0xdd1d, 0xdd1e, 0xdd1f, + 0xdd20, 0xdd21, 0xdd22, 0xdd23, 0xdd24, 0xdd25, 0xdd26, 0xdd27, + 0xdd28, 0xdd29, 0xdd2a, 0xdd2b, 0xdd2c, 0xdd2d, 0xdd2e, 0xdd2f, + 0xdd30, 0xdd31, 0xdd32, 0xdd33, 0xdd34, 0xdd35, 0xdd36, 0xdd37, + 0xdd38, 0xdd39, 0xdd3a, 0xdd3b, 0xdd3c, 0xdd3d, 0xdd3e, 0xdd3f, + 0xdd40, 0xdd41, 0xdd42, 0xdd43, 0xdd44, 0xdd45, 0xdd46, 0xdd47, + 0xdd48, 0xdd49, 0xdd4a, 0xdd4b, 0xdd4c, 0xdd4d, 0xdd4e, 0xdd4f, + 0xdd50, 0xdd51, 0xdd52, 0xdd53, 0xdd54, 0xdd55, 0xdd56, 0xdd57, + 0xdd58, 0xdd59, 0xdd5a, 0xdd5b, 0xdd5c, 0xdd5d, 0xdd5e, 0xdd5f, + 0xdd60, 0xdd61, 0xdd62, 0xdd63, 0xdd64, 0xdd65, 0xdd66, 0xdd67, + 0xdd68, 0xdd69, 0xdd6a, 0xdd6b, 0xdd6c, 0xdd6d, 0xdd6e, 0xdd6f, + 0xdd70, 0xdd71, 0xdd72, 0xdd73, 0xdd74, 0xdd75, 0xdd76, 0xdd77, + 0xdd78, 0xdd79, 0xdd7a, 0xdd7b, 0xdd7c, 0xdd7d, 0xdd7e, 0xdd7f, + 0xdd80, 0xdd81, 0xdd82, 0xdd83, 0xdd84, 0xdd85, 0xdd86, 0xdd87, + 0xdd88, 0xdd89, 0xdd8a, 0xdd8b, 0xdd8c, 0xdd8d, 0xdd8e, 0xdd8f, + 0xdd90, 0xdd91, 0xdd92, 0xdd93, 0xdd94, 0xdd95, 0xdd96, 0xdd97, + 0xdd98, 0xdd99, 0xdd9a, 0xdd9b, 0xdd9c, 0xdd9d, 0xdd9e, 0xdd9f, + 0xdda0, 0xdda1, 0xdda2, 0xdda3, 0xdda4, 0xdda5, 0xdda6, 0xdda7, + 0xdda8, 0xdda9, 0xddaa, 0xddab, 0xddac, 0xddad, 0xddae, 0xddaf, + 0xddb0, 0xddb1, 0xddb2, 0xddb3, 0xddb4, 0xddb5, 0xddb6, 0xddb7, + 0xddb8, 0xddb9, 0xddba, 0xddbb, 0xddbc, 0xddbd, 0xddbe, 0xddbf, + 0xddc0, 0xddc1, 0xddc2, 0xddc3, 0xddc4, 0xddc5, 0xddc6, 0xddc7, + 0xddc8, 0xddc9, 0xddca, 0xddcb, 0xddcc, 0xddcd, 0xddce, 0xddcf, + 0xddd0, 0xddd1, 0xddd2, 0xddd3, 0xddd4, 0xddd5, 0xddd6, 0xddd7, + 0xddd8, 0xddd9, 0xddda, 0xdddb, 0xdddc, 0xdddd, 0xddde, 0xdddf, + 0xdde0, 0xdde1, 0xdde2, 0xdde3, 0xdde4, 0xdde5, 0xdde6, 0xdde7, + 0xdde8, 0xdde9, 0xddea, 0xddeb, 0xddec, 0xdded, 0xddee, 0xddef, + 0xddf0, 0xddf1, 0xddf2, 0xddf3, 0xddf4, 0xddf5, 0xddf6, 0xddf7, + 0xddf8, 0xddf9, 0xddfa, 0xddfb, 0xddfc, 0xddfd, 0xddfe, 0xddff, + 0xde00, 0xde01, 0xde02, 0xde03, 0xde04, 0xde05, 0xde06, 0xde07, + 0xde08, 0xde09, 0xde0a, 0xde0b, 0xde0c, 0xde0d, 0xde0e, 0xde0f, + 0xde10, 0xde11, 0xde12, 0xde13, 0xde14, 0xde15, 0xde16, 0xde17, + 0xde18, 0xde19, 0xde1a, 0xde1b, 0xde1c, 0xde1d, 0xde1e, 0xde1f, + 0xde20, 0xde21, 0xde22, 0xde23, 0xde24, 0xde25, 0xde26, 0xde27, + 0xde28, 0xde29, 0xde2a, 0xde2b, 0xde2c, 0xde2d, 0xde2e, 0xde2f, + 0xde30, 0xde31, 0xde32, 0xde33, 0xde34, 0xde35, 0xde36, 0xde37, + 0xde38, 0xde39, 0xde3a, 0xde3b, 0xde3c, 0xde3d, 0xde3e, 0xde3f, + 0xde40, 0xde41, 0xde42, 0xde43, 0xde44, 0xde45, 0xde46, 0xde47, + 0xde48, 0xde49, 0xde4a, 0xde4b, 0xde4c, 0xde4d, 0xde4e, 0xde4f, + 0xde50, 0xde51, 0xde52, 0xde53, 0xde54, 0xde55, 0xde56, 0xde57, + 0xde58, 0xde59, 0xde5a, 0xde5b, 0xde5c, 0xde5d, 0xde5e, 0xde5f, + 0xde60, 0xde61, 0xde62, 0xde63, 0xde64, 0xde65, 0xde66, 0xde67, + 0xde68, 0xde69, 0xde6a, 0xde6b, 0xde6c, 0xde6d, 0xde6e, 0xde6f, + 0xde70, 0xde71, 0xde72, 0xde73, 0xde74, 0xde75, 0xde76, 0xde77, + 0xde78, 0xde79, 0xde7a, 0xde7b, 0xde7c, 0xde7d, 0xde7e, 0xde7f, + 0xde80, 0xde81, 0xde82, 0xde83, 0xde84, 0xde85, 0xde86, 0xde87, + 0xde88, 0xde89, 0xde8a, 0xde8b, 0xde8c, 0xde8d, 0xde8e, 0xde8f, + 0xde90, 0xde91, 0xde92, 0xde93, 0xde94, 0xde95, 0xde96, 0xde97, + 0xde98, 0xde99, 0xde9a, 0xde9b, 0xde9c, 0xde9d, 0xde9e, 0xde9f, + 0xdea0, 0xdea1, 0xdea2, 0xdea3, 0xdea4, 0xdea5, 0xdea6, 0xdea7, + 0xdea8, 0xdea9, 0xdeaa, 0xdeab, 0xdeac, 0xdead, 0xdeae, 0xdeaf, + 0xdeb0, 0xdeb1, 0xdeb2, 0xdeb3, 0xdeb4, 0xdeb5, 0xdeb6, 0xdeb7, + 0xdeb8, 0xdeb9, 0xdeba, 0xdebb, 0xdebc, 0xdebd, 0xdebe, 0xdebf, + 0xdec0, 0xdec1, 0xdec2, 0xdec3, 0xdec4, 0xdec5, 0xdec6, 0xdec7, + 0xdec8, 0xdec9, 0xdeca, 0xdecb, 0xdecc, 0xdecd, 0xdece, 0xdecf, + 0xded0, 0xded1, 0xded2, 0xded3, 0xded4, 0xded5, 0xded6, 0xded7, + 0xded8, 0xded9, 0xdeda, 0xdedb, 0xdedc, 0xdedd, 0xdede, 0xdedf, + 0xdee0, 0xdee1, 0xdee2, 0xdee3, 0xdee4, 0xdee5, 0xdee6, 0xdee7, + 0xdee8, 0xdee9, 0xdeea, 0xdeeb, 0xdeec, 0xdeed, 0xdeee, 0xdeef, + 0xdef0, 0xdef1, 0xdef2, 0xdef3, 0xdef4, 0xdef5, 0xdef6, 0xdef7, + 0xdef8, 0xdef9, 0xdefa, 0xdefb, 0xdefc, 0xdefd, 0xdefe, 0xdeff, + 0xdf00, 0xdf01, 0xdf02, 0xdf03, 0xdf04, 0xdf05, 0xdf06, 0xdf07, + 0xdf08, 0xdf09, 0xdf0a, 0xdf0b, 0xdf0c, 0xdf0d, 0xdf0e, 0xdf0f, + 0xdf10, 0xdf11, 0xdf12, 0xdf13, 0xdf14, 0xdf15, 0xdf16, 0xdf17, + 0xdf18, 0xdf19, 0xdf1a, 0xdf1b, 0xdf1c, 0xdf1d, 0xdf1e, 0xdf1f, + 0xdf20, 0xdf21, 0xdf22, 0xdf23, 0xdf24, 0xdf25, 0xdf26, 0xdf27, + 0xdf28, 0xdf29, 0xdf2a, 0xdf2b, 0xdf2c, 0xdf2d, 0xdf2e, 0xdf2f, + 0xdf30, 0xdf31, 0xdf32, 0xdf33, 0xdf34, 0xdf35, 0xdf36, 0xdf37, + 0xdf38, 0xdf39, 0xdf3a, 0xdf3b, 0xdf3c, 0xdf3d, 0xdf3e, 0xdf3f, + 0xdf40, 0xdf41, 0xdf42, 0xdf43, 0xdf44, 0xdf45, 0xdf46, 0xdf47, + 0xdf48, 0xdf49, 0xdf4a, 0xdf4b, 0xdf4c, 0xdf4d, 0xdf4e, 0xdf4f, + 0xdf50, 0xdf51, 0xdf52, 0xdf53, 0xdf54, 0xdf55, 0xdf56, 0xdf57, + 0xdf58, 0xdf59, 0xdf5a, 0xdf5b, 0xdf5c, 0xdf5d, 0xdf5e, 0xdf5f, + 0xdf60, 0xdf61, 0xdf62, 0xdf63, 0xdf64, 0xdf65, 0xdf66, 0xdf67, + 0xdf68, 0xdf69, 0xdf6a, 0xdf6b, 0xdf6c, 0xdf6d, 0xdf6e, 0xdf6f, + 0xdf70, 0xdf71, 0xdf72, 0xdf73, 0xdf74, 0xdf75, 0xdf76, 0xdf77, + 0xdf78, 0xdf79, 0xdf7a, 0xdf7b, 0xdf7c, 0xdf7d, 0xdf7e, 0xdf7f, + 0xdf80, 0xdf81, 0xdf82, 0xdf83, 0xdf84, 0xdf85, 0xdf86, 0xdf87, + 0xdf88, 0xdf89, 0xdf8a, 0xdf8b, 0xdf8c, 0xdf8d, 0xdf8e, 0xdf8f, + 0xdf90, 0xdf91, 0xdf92, 0xdf93, 0xdf94, 0xdf95, 0xdf96, 0xdf97, + 0xdf98, 0xdf99, 0xdf9a, 0xdf9b, 0xdf9c, 0xdf9d, 0xdf9e, 0xdf9f, + 0xdfa0, 0xdfa1, 0xdfa2, 0xdfa3, 0xdfa4, 0xdfa5, 0xdfa6, 0xdfa7, + 0xdfa8, 0xdfa9, 0xdfaa, 0xdfab, 0xdfac, 0xdfad, 0xdfae, 0xdfaf, + 0xdfb0, 0xdfb1, 0xdfb2, 0xdfb3, 0xdfb4, 0xdfb5, 0xdfb6, 0xdfb7, + 0xdfb8, 0xdfb9, 0xdfba, 0xdfbb, 0xdfbc, 0xdfbd, 0xdfbe, 0xdfbf, + 0xdfc0, 0xdfc1, 0xdfc2, 0xdfc3, 0xdfc4, 0xdfc5, 0xdfc6, 0xdfc7, + 0xdfc8, 0xdfc9, 0xdfca, 0xdfcb, 0xdfcc, 0xdfcd, 0xdfce, 0xdfcf, + 0xdfd0, 0xdfd1, 0xdfd2, 0xdfd3, 0xdfd4, 0xdfd5, 0xdfd6, 0xdfd7, + 0xdfd8, 0xdfd9, 0xdfda, 0xdfdb, 0xdfdc, 0xdfdd, 0xdfde, 0xdfdf, + 0xdfe0, 0xdfe1, 0xdfe2, 0xdfe3, 0xdfe4, 0xdfe5, 0xdfe6, 0xdfe7, + 0xdfe8, 0xdfe9, 0xdfea, 0xdfeb, 0xdfec, 0xdfed, 0xdfee, 0xdfef, + 0xdff0, 0xdff1, 0xdff2, 0xdff3, 0xdff4, 0xdff5, 0xdff6, 0xdff7, + 0xdff8, 0xdff9, 0xdffa, 0xdffb, 0xdffc, 0xdffd, 0xdffe, 0xdfff, + 0xe000, 0xe001, 0xe002, 0xe003, 0xe004, 0xe005, 0xe006, 0xe007, + 0xe008, 0xe009, 0xe00a, 0xe00b, 0xe00c, 0xe00d, 0xe00e, 0xe00f, + 0xe010, 0xe011, 0xe012, 0xe013, 0xe014, 0xe015, 0xe016, 0xe017, + 0xe018, 0xe019, 0xe01a, 0xe01b, 0xe01c, 0xe01d, 0xe01e, 0xe01f, + 0xe020, 0xe021, 0xe022, 0xe023, 0xe024, 0xe025, 0xe026, 0xe027, + 0xe028, 0xe029, 0xe02a, 0xe02b, 0xe02c, 0xe02d, 0xe02e, 0xe02f, + 0xe030, 0xe031, 0xe032, 0xe033, 0xe034, 0xe035, 0xe036, 0xe037, + 0xe038, 0xe039, 0xe03a, 0xe03b, 0xe03c, 0xe03d, 0xe03e, 0xe03f, + 0xe040, 0xe041, 0xe042, 0xe043, 0xe044, 0xe045, 0xe046, 0xe047, + 0xe048, 0xe049, 0xe04a, 0xe04b, 0xe04c, 0xe04d, 0xe04e, 0xe04f, + 0xe050, 0xe051, 0xe052, 0xe053, 0xe054, 0xe055, 0xe056, 0xe057, + 0xe058, 0xe059, 0xe05a, 0xe05b, 0xe05c, 0xe05d, 0xe05e, 0xe05f, + 0xe060, 0xe061, 0xe062, 0xe063, 0xe064, 0xe065, 0xe066, 0xe067, + 0xe068, 0xe069, 0xe06a, 0xe06b, 0xe06c, 0xe06d, 0xe06e, 0xe06f, + 0xe070, 0xe071, 0xe072, 0xe073, 0xe074, 0xe075, 0xe076, 0xe077, + 0xe078, 0xe079, 0xe07a, 0xe07b, 0xe07c, 0xe07d, 0xe07e, 0xe07f, + 0xe080, 0xe081, 0xe082, 0xe083, 0xe084, 0xe085, 0xe086, 0xe087, + 0xe088, 0xe089, 0xe08a, 0xe08b, 0xe08c, 0xe08d, 0xe08e, 0xe08f, + 0xe090, 0xe091, 0xe092, 0xe093, 0xe094, 0xe095, 0xe096, 0xe097, + 0xe098, 0xe099, 0xe09a, 0xe09b, 0xe09c, 0xe09d, 0xe09e, 0xe09f, + 0xe0a0, 0xe0a1, 0xe0a2, 0xe0a3, 0xe0a4, 0xe0a5, 0xe0a6, 0xe0a7, + 0xe0a8, 0xe0a9, 0xe0aa, 0xe0ab, 0xe0ac, 0xe0ad, 0xe0ae, 0xe0af, + 0xe0b0, 0xe0b1, 0xe0b2, 0xe0b3, 0xe0b4, 0xe0b5, 0xe0b6, 0xe0b7, + 0xe0b8, 0xe0b9, 0xe0ba, 0xe0bb, 0xe0bc, 0xe0bd, 0xe0be, 0xe0bf, + 0xe0c0, 0xe0c1, 0xe0c2, 0xe0c3, 0xe0c4, 0xe0c5, 0xe0c6, 0xe0c7, + 0xe0c8, 0xe0c9, 0xe0ca, 0xe0cb, 0xe0cc, 0xe0cd, 0xe0ce, 0xe0cf, + 0xe0d0, 0xe0d1, 0xe0d2, 0xe0d3, 0xe0d4, 0xe0d5, 0xe0d6, 0xe0d7, + 0xe0d8, 0xe0d9, 0xe0da, 0xe0db, 0xe0dc, 0xe0dd, 0xe0de, 0xe0df, + 0xe0e0, 0xe0e1, 0xe0e2, 0xe0e3, 0xe0e4, 0xe0e5, 0xe0e6, 0xe0e7, + 0xe0e8, 0xe0e9, 0xe0ea, 0xe0eb, 0xe0ec, 0xe0ed, 0xe0ee, 0xe0ef, + 0xe0f0, 0xe0f1, 0xe0f2, 0xe0f3, 0xe0f4, 0xe0f5, 0xe0f6, 0xe0f7, + 0xe0f8, 0xe0f9, 0xe0fa, 0xe0fb, 0xe0fc, 0xe0fd, 0xe0fe, 0xe0ff, + 0xe100, 0xe101, 0xe102, 0xe103, 0xe104, 0xe105, 0xe106, 0xe107, + 0xe108, 0xe109, 0xe10a, 0xe10b, 0xe10c, 0xe10d, 0xe10e, 0xe10f, + 0xe110, 0xe111, 0xe112, 0xe113, 0xe114, 0xe115, 0xe116, 0xe117, + 0xe118, 0xe119, 0xe11a, 0xe11b, 0xe11c, 0xe11d, 0xe11e, 0xe11f, + 0xe120, 0xe121, 0xe122, 0xe123, 0xe124, 0xe125, 0xe126, 0xe127, + 0xe128, 0xe129, 0xe12a, 0xe12b, 0xe12c, 0xe12d, 0xe12e, 0xe12f, + 0xe130, 0xe131, 0xe132, 0xe133, 0xe134, 0xe135, 0xe136, 0xe137, + 0xe138, 0xe139, 0xe13a, 0xe13b, 0xe13c, 0xe13d, 0xe13e, 0xe13f, + 0xe140, 0xe141, 0xe142, 0xe143, 0xe144, 0xe145, 0xe146, 0xe147, + 0xe148, 0xe149, 0xe14a, 0xe14b, 0xe14c, 0xe14d, 0xe14e, 0xe14f, + 0xe150, 0xe151, 0xe152, 0xe153, 0xe154, 0xe155, 0xe156, 0xe157, + 0xe158, 0xe159, 0xe15a, 0xe15b, 0xe15c, 0xe15d, 0xe15e, 0xe15f, + 0xe160, 0xe161, 0xe162, 0xe163, 0xe164, 0xe165, 0xe166, 0xe167, + 0xe168, 0xe169, 0xe16a, 0xe16b, 0xe16c, 0xe16d, 0xe16e, 0xe16f, + 0xe170, 0xe171, 0xe172, 0xe173, 0xe174, 0xe175, 0xe176, 0xe177, + 0xe178, 0xe179, 0xe17a, 0xe17b, 0xe17c, 0xe17d, 0xe17e, 0xe17f, + 0xe180, 0xe181, 0xe182, 0xe183, 0xe184, 0xe185, 0xe186, 0xe187, + 0xe188, 0xe189, 0xe18a, 0xe18b, 0xe18c, 0xe18d, 0xe18e, 0xe18f, + 0xe190, 0xe191, 0xe192, 0xe193, 0xe194, 0xe195, 0xe196, 0xe197, + 0xe198, 0xe199, 0xe19a, 0xe19b, 0xe19c, 0xe19d, 0xe19e, 0xe19f, + 0xe1a0, 0xe1a1, 0xe1a2, 0xe1a3, 0xe1a4, 0xe1a5, 0xe1a6, 0xe1a7, + 0xe1a8, 0xe1a9, 0xe1aa, 0xe1ab, 0xe1ac, 0xe1ad, 0xe1ae, 0xe1af, + 0xe1b0, 0xe1b1, 0xe1b2, 0xe1b3, 0xe1b4, 0xe1b5, 0xe1b6, 0xe1b7, + 0xe1b8, 0xe1b9, 0xe1ba, 0xe1bb, 0xe1bc, 0xe1bd, 0xe1be, 0xe1bf, + 0xe1c0, 0xe1c1, 0xe1c2, 0xe1c3, 0xe1c4, 0xe1c5, 0xe1c6, 0xe1c7, + 0xe1c8, 0xe1c9, 0xe1ca, 0xe1cb, 0xe1cc, 0xe1cd, 0xe1ce, 0xe1cf, + 0xe1d0, 0xe1d1, 0xe1d2, 0xe1d3, 0xe1d4, 0xe1d5, 0xe1d6, 0xe1d7, + 0xe1d8, 0xe1d9, 0xe1da, 0xe1db, 0xe1dc, 0xe1dd, 0xe1de, 0xe1df, + 0xe1e0, 0xe1e1, 0xe1e2, 0xe1e3, 0xe1e4, 0xe1e5, 0xe1e6, 0xe1e7, + 0xe1e8, 0xe1e9, 0xe1ea, 0xe1eb, 0xe1ec, 0xe1ed, 0xe1ee, 0xe1ef, + 0xe1f0, 0xe1f1, 0xe1f2, 0xe1f3, 0xe1f4, 0xe1f5, 0xe1f6, 0xe1f7, + 0xe1f8, 0xe1f9, 0xe1fa, 0xe1fb, 0xe1fc, 0xe1fd, 0xe1fe, 0xe1ff, + 0xe200, 0xe201, 0xe202, 0xe203, 0xe204, 0xe205, 0xe206, 0xe207, + 0xe208, 0xe209, 0xe20a, 0xe20b, 0xe20c, 0xe20d, 0xe20e, 0xe20f, + 0xe210, 0xe211, 0xe212, 0xe213, 0xe214, 0xe215, 0xe216, 0xe217, + 0xe218, 0xe219, 0xe21a, 0xe21b, 0xe21c, 0xe21d, 0xe21e, 0xe21f, + 0xe220, 0xe221, 0xe222, 0xe223, 0xe224, 0xe225, 0xe226, 0xe227, + 0xe228, 0xe229, 0xe22a, 0xe22b, 0xe22c, 0xe22d, 0xe22e, 0xe22f, + 0xe230, 0xe231, 0xe232, 0xe233, 0xe234, 0xe235, 0xe236, 0xe237, + 0xe238, 0xe239, 0xe23a, 0xe23b, 0xe23c, 0xe23d, 0xe23e, 0xe23f, + 0xe240, 0xe241, 0xe242, 0xe243, 0xe244, 0xe245, 0xe246, 0xe247, + 0xe248, 0xe249, 0xe24a, 0xe24b, 0xe24c, 0xe24d, 0xe24e, 0xe24f, + 0xe250, 0xe251, 0xe252, 0xe253, 0xe254, 0xe255, 0xe256, 0xe257, + 0xe258, 0xe259, 0xe25a, 0xe25b, 0xe25c, 0xe25d, 0xe25e, 0xe25f, + 0xe260, 0xe261, 0xe262, 0xe263, 0xe264, 0xe265, 0xe266, 0xe267, + 0xe268, 0xe269, 0xe26a, 0xe26b, 0xe26c, 0xe26d, 0xe26e, 0xe26f, + 0xe270, 0xe271, 0xe272, 0xe273, 0xe274, 0xe275, 0xe276, 0xe277, + 0xe278, 0xe279, 0xe27a, 0xe27b, 0xe27c, 0xe27d, 0xe27e, 0xe27f, + 0xe280, 0xe281, 0xe282, 0xe283, 0xe284, 0xe285, 0xe286, 0xe287, + 0xe288, 0xe289, 0xe28a, 0xe28b, 0xe28c, 0xe28d, 0xe28e, 0xe28f, + 0xe290, 0xe291, 0xe292, 0xe293, 0xe294, 0xe295, 0xe296, 0xe297, + 0xe298, 0xe299, 0xe29a, 0xe29b, 0xe29c, 0xe29d, 0xe29e, 0xe29f, + 0xe2a0, 0xe2a1, 0xe2a2, 0xe2a3, 0xe2a4, 0xe2a5, 0xe2a6, 0xe2a7, + 0xe2a8, 0xe2a9, 0xe2aa, 0xe2ab, 0xe2ac, 0xe2ad, 0xe2ae, 0xe2af, + 0xe2b0, 0xe2b1, 0xe2b2, 0xe2b3, 0xe2b4, 0xe2b5, 0xe2b6, 0xe2b7, + 0xe2b8, 0xe2b9, 0xe2ba, 0xe2bb, 0xe2bc, 0xe2bd, 0xe2be, 0xe2bf, + 0xe2c0, 0xe2c1, 0xe2c2, 0xe2c3, 0xe2c4, 0xe2c5, 0xe2c6, 0xe2c7, + 0xe2c8, 0xe2c9, 0xe2ca, 0xe2cb, 0xe2cc, 0xe2cd, 0xe2ce, 0xe2cf, + 0xe2d0, 0xe2d1, 0xe2d2, 0xe2d3, 0xe2d4, 0xe2d5, 0xe2d6, 0xe2d7, + 0xe2d8, 0xe2d9, 0xe2da, 0xe2db, 0xe2dc, 0xe2dd, 0xe2de, 0xe2df, + 0xe2e0, 0xe2e1, 0xe2e2, 0xe2e3, 0xe2e4, 0xe2e5, 0xe2e6, 0xe2e7, + 0xe2e8, 0xe2e9, 0xe2ea, 0xe2eb, 0xe2ec, 0xe2ed, 0xe2ee, 0xe2ef, + 0xe2f0, 0xe2f1, 0xe2f2, 0xe2f3, 0xe2f4, 0xe2f5, 0xe2f6, 0xe2f7, + 0xe2f8, 0xe2f9, 0xe2fa, 0xe2fb, 0xe2fc, 0xe2fd, 0xe2fe, 0xe2ff, + 0xe300, 0xe301, 0xe302, 0xe303, 0xe304, 0xe305, 0xe306, 0xe307, + 0xe308, 0xe309, 0xe30a, 0xe30b, 0xe30c, 0xe30d, 0xe30e, 0xe30f, + 0xe310, 0xe311, 0xe312, 0xe313, 0xe314, 0xe315, 0xe316, 0xe317, + 0xe318, 0xe319, 0xe31a, 0xe31b, 0xe31c, 0xe31d, 0xe31e, 0xe31f, + 0xe320, 0xe321, 0xe322, 0xe323, 0xe324, 0xe325, 0xe326, 0xe327, + 0xe328, 0xe329, 0xe32a, 0xe32b, 0xe32c, 0xe32d, 0xe32e, 0xe32f, + 0xe330, 0xe331, 0xe332, 0xe333, 0xe334, 0xe335, 0xe336, 0xe337, + 0xe338, 0xe339, 0xe33a, 0xe33b, 0xe33c, 0xe33d, 0xe33e, 0xe33f, + 0xe340, 0xe341, 0xe342, 0xe343, 0xe344, 0xe345, 0xe346, 0xe347, + 0xe348, 0xe349, 0xe34a, 0xe34b, 0xe34c, 0xe34d, 0xe34e, 0xe34f, + 0xe350, 0xe351, 0xe352, 0xe353, 0xe354, 0xe355, 0xe356, 0xe357, + 0xe358, 0xe359, 0xe35a, 0xe35b, 0xe35c, 0xe35d, 0xe35e, 0xe35f, + 0xe360, 0xe361, 0xe362, 0xe363, 0xe364, 0xe365, 0xe366, 0xe367, + 0xe368, 0xe369, 0xe36a, 0xe36b, 0xe36c, 0xe36d, 0xe36e, 0xe36f, + 0xe370, 0xe371, 0xe372, 0xe373, 0xe374, 0xe375, 0xe376, 0xe377, + 0xe378, 0xe379, 0xe37a, 0xe37b, 0xe37c, 0xe37d, 0xe37e, 0xe37f, + 0xe380, 0xe381, 0xe382, 0xe383, 0xe384, 0xe385, 0xe386, 0xe387, + 0xe388, 0xe389, 0xe38a, 0xe38b, 0xe38c, 0xe38d, 0xe38e, 0xe38f, + 0xe390, 0xe391, 0xe392, 0xe393, 0xe394, 0xe395, 0xe396, 0xe397, + 0xe398, 0xe399, 0xe39a, 0xe39b, 0xe39c, 0xe39d, 0xe39e, 0xe39f, + 0xe3a0, 0xe3a1, 0xe3a2, 0xe3a3, 0xe3a4, 0xe3a5, 0xe3a6, 0xe3a7, + 0xe3a8, 0xe3a9, 0xe3aa, 0xe3ab, 0xe3ac, 0xe3ad, 0xe3ae, 0xe3af, + 0xe3b0, 0xe3b1, 0xe3b2, 0xe3b3, 0xe3b4, 0xe3b5, 0xe3b6, 0xe3b7, + 0xe3b8, 0xe3b9, 0xe3ba, 0xe3bb, 0xe3bc, 0xe3bd, 0xe3be, 0xe3bf, + 0xe3c0, 0xe3c1, 0xe3c2, 0xe3c3, 0xe3c4, 0xe3c5, 0xe3c6, 0xe3c7, + 0xe3c8, 0xe3c9, 0xe3ca, 0xe3cb, 0xe3cc, 0xe3cd, 0xe3ce, 0xe3cf, + 0xe3d0, 0xe3d1, 0xe3d2, 0xe3d3, 0xe3d4, 0xe3d5, 0xe3d6, 0xe3d7, + 0xe3d8, 0xe3d9, 0xe3da, 0xe3db, 0xe3dc, 0xe3dd, 0xe3de, 0xe3df, + 0xe3e0, 0xe3e1, 0xe3e2, 0xe3e3, 0xe3e4, 0xe3e5, 0xe3e6, 0xe3e7, + 0xe3e8, 0xe3e9, 0xe3ea, 0xe3eb, 0xe3ec, 0xe3ed, 0xe3ee, 0xe3ef, + 0xe3f0, 0xe3f1, 0xe3f2, 0xe3f3, 0xe3f4, 0xe3f5, 0xe3f6, 0xe3f7, + 0xe3f8, 0xe3f9, 0xe3fa, 0xe3fb, 0xe3fc, 0xe3fd, 0xe3fe, 0xe3ff, + 0xe400, 0xe401, 0xe402, 0xe403, 0xe404, 0xe405, 0xe406, 0xe407, + 0xe408, 0xe409, 0xe40a, 0xe40b, 0xe40c, 0xe40d, 0xe40e, 0xe40f, + 0xe410, 0xe411, 0xe412, 0xe413, 0xe414, 0xe415, 0xe416, 0xe417, + 0xe418, 0xe419, 0xe41a, 0xe41b, 0xe41c, 0xe41d, 0xe41e, 0xe41f, + 0xe420, 0xe421, 0xe422, 0xe423, 0xe424, 0xe425, 0xe426, 0xe427, + 0xe428, 0xe429, 0xe42a, 0xe42b, 0xe42c, 0xe42d, 0xe42e, 0xe42f, + 0xe430, 0xe431, 0xe432, 0xe433, 0xe434, 0xe435, 0xe436, 0xe437, + 0xe438, 0xe439, 0xe43a, 0xe43b, 0xe43c, 0xe43d, 0xe43e, 0xe43f, + 0xe440, 0xe441, 0xe442, 0xe443, 0xe444, 0xe445, 0xe446, 0xe447, + 0xe448, 0xe449, 0xe44a, 0xe44b, 0xe44c, 0xe44d, 0xe44e, 0xe44f, + 0xe450, 0xe451, 0xe452, 0xe453, 0xe454, 0xe455, 0xe456, 0xe457, + 0xe458, 0xe459, 0xe45a, 0xe45b, 0xe45c, 0xe45d, 0xe45e, 0xe45f, + 0xe460, 0xe461, 0xe462, 0xe463, 0xe464, 0xe465, 0xe466, 0xe467, + 0xe468, 0xe469, 0xe46a, 0xe46b, 0xe46c, 0xe46d, 0xe46e, 0xe46f, + 0xe470, 0xe471, 0xe472, 0xe473, 0xe474, 0xe475, 0xe476, 0xe477, + 0xe478, 0xe479, 0xe47a, 0xe47b, 0xe47c, 0xe47d, 0xe47e, 0xe47f, + 0xe480, 0xe481, 0xe482, 0xe483, 0xe484, 0xe485, 0xe486, 0xe487, + 0xe488, 0xe489, 0xe48a, 0xe48b, 0xe48c, 0xe48d, 0xe48e, 0xe48f, + 0xe490, 0xe491, 0xe492, 0xe493, 0xe494, 0xe495, 0xe496, 0xe497, + 0xe498, 0xe499, 0xe49a, 0xe49b, 0xe49c, 0xe49d, 0xe49e, 0xe49f, + 0xe4a0, 0xe4a1, 0xe4a2, 0xe4a3, 0xe4a4, 0xe4a5, 0xe4a6, 0xe4a7, + 0xe4a8, 0xe4a9, 0xe4aa, 0xe4ab, 0xe4ac, 0xe4ad, 0xe4ae, 0xe4af, + 0xe4b0, 0xe4b1, 0xe4b2, 0xe4b3, 0xe4b4, 0xe4b5, 0xe4b6, 0xe4b7, + 0xe4b8, 0xe4b9, 0xe4ba, 0xe4bb, 0xe4bc, 0xe4bd, 0xe4be, 0xe4bf, + 0xe4c0, 0xe4c1, 0xe4c2, 0xe4c3, 0xe4c4, 0xe4c5, 0xe4c6, 0xe4c7, + 0xe4c8, 0xe4c9, 0xe4ca, 0xe4cb, 0xe4cc, 0xe4cd, 0xe4ce, 0xe4cf, + 0xe4d0, 0xe4d1, 0xe4d2, 0xe4d3, 0xe4d4, 0xe4d5, 0xe4d6, 0xe4d7, + 0xe4d8, 0xe4d9, 0xe4da, 0xe4db, 0xe4dc, 0xe4dd, 0xe4de, 0xe4df, + 0xe4e0, 0xe4e1, 0xe4e2, 0xe4e3, 0xe4e4, 0xe4e5, 0xe4e6, 0xe4e7, + 0xe4e8, 0xe4e9, 0xe4ea, 0xe4eb, 0xe4ec, 0xe4ed, 0xe4ee, 0xe4ef, + 0xe4f0, 0xe4f1, 0xe4f2, 0xe4f3, 0xe4f4, 0xe4f5, 0xe4f6, 0xe4f7, + 0xe4f8, 0xe4f9, 0xe4fa, 0xe4fb, 0xe4fc, 0xe4fd, 0xe4fe, 0xe4ff, + 0xe500, 0xe501, 0xe502, 0xe503, 0xe504, 0xe505, 0xe506, 0xe507, + 0xe508, 0xe509, 0xe50a, 0xe50b, 0xe50c, 0xe50d, 0xe50e, 0xe50f, + 0xe510, 0xe511, 0xe512, 0xe513, 0xe514, 0xe515, 0xe516, 0xe517, + 0xe518, 0xe519, 0xe51a, 0xe51b, 0xe51c, 0xe51d, 0xe51e, 0xe51f, + 0xe520, 0xe521, 0xe522, 0xe523, 0xe524, 0xe525, 0xe526, 0xe527, + 0xe528, 0xe529, 0xe52a, 0xe52b, 0xe52c, 0xe52d, 0xe52e, 0xe52f, + 0xe530, 0xe531, 0xe532, 0xe533, 0xe534, 0xe535, 0xe536, 0xe537, + 0xe538, 0xe539, 0xe53a, 0xe53b, 0xe53c, 0xe53d, 0xe53e, 0xe53f, + 0xe540, 0xe541, 0xe542, 0xe543, 0xe544, 0xe545, 0xe546, 0xe547, + 0xe548, 0xe549, 0xe54a, 0xe54b, 0xe54c, 0xe54d, 0xe54e, 0xe54f, + 0xe550, 0xe551, 0xe552, 0xe553, 0xe554, 0xe555, 0xe556, 0xe557, + 0xe558, 0xe559, 0xe55a, 0xe55b, 0xe55c, 0xe55d, 0xe55e, 0xe55f, + 0xe560, 0xe561, 0xe562, 0xe563, 0xe564, 0xe565, 0xe566, 0xe567, + 0xe568, 0xe569, 0xe56a, 0xe56b, 0xe56c, 0xe56d, 0xe56e, 0xe56f, + 0xe570, 0xe571, 0xe572, 0xe573, 0xe574, 0xe575, 0xe576, 0xe577, + 0xe578, 0xe579, 0xe57a, 0xe57b, 0xe57c, 0xe57d, 0xe57e, 0xe57f, + 0xe580, 0xe581, 0xe582, 0xe583, 0xe584, 0xe585, 0xe586, 0xe587, + 0xe588, 0xe589, 0xe58a, 0xe58b, 0xe58c, 0xe58d, 0xe58e, 0xe58f, + 0xe590, 0xe591, 0xe592, 0xe593, 0xe594, 0xe595, 0xe596, 0xe597, + 0xe598, 0xe599, 0xe59a, 0xe59b, 0xe59c, 0xe59d, 0xe59e, 0xe59f, + 0xe5a0, 0xe5a1, 0xe5a2, 0xe5a3, 0xe5a4, 0xe5a5, 0xe5a6, 0xe5a7, + 0xe5a8, 0xe5a9, 0xe5aa, 0xe5ab, 0xe5ac, 0xe5ad, 0xe5ae, 0xe5af, + 0xe5b0, 0xe5b1, 0xe5b2, 0xe5b3, 0xe5b4, 0xe5b5, 0xe5b6, 0xe5b7, + 0xe5b8, 0xe5b9, 0xe5ba, 0xe5bb, 0xe5bc, 0xe5bd, 0xe5be, 0xe5bf, + 0xe5c0, 0xe5c1, 0xe5c2, 0xe5c3, 0xe5c4, 0xe5c5, 0xe5c6, 0xe5c7, + 0xe5c8, 0xe5c9, 0xe5ca, 0xe5cb, 0xe5cc, 0xe5cd, 0xe5ce, 0xe5cf, + 0xe5d0, 0xe5d1, 0xe5d2, 0xe5d3, 0xe5d4, 0xe5d5, 0xe5d6, 0xe5d7, + 0xe5d8, 0xe5d9, 0xe5da, 0xe5db, 0xe5dc, 0xe5dd, 0xe5de, 0xe5df, + 0xe5e0, 0xe5e1, 0xe5e2, 0xe5e3, 0xe5e4, 0xe5e5, 0xe5e6, 0xe5e7, + 0xe5e8, 0xe5e9, 0xe5ea, 0xe5eb, 0xe5ec, 0xe5ed, 0xe5ee, 0xe5ef, + 0xe5f0, 0xe5f1, 0xe5f2, 0xe5f3, 0xe5f4, 0xe5f5, 0xe5f6, 0xe5f7, + 0xe5f8, 0xe5f9, 0xe5fa, 0xe5fb, 0xe5fc, 0xe5fd, 0xe5fe, 0xe5ff, + 0xe600, 0xe601, 0xe602, 0xe603, 0xe604, 0xe605, 0xe606, 0xe607, + 0xe608, 0xe609, 0xe60a, 0xe60b, 0xe60c, 0xe60d, 0xe60e, 0xe60f, + 0xe610, 0xe611, 0xe612, 0xe613, 0xe614, 0xe615, 0xe616, 0xe617, + 0xe618, 0xe619, 0xe61a, 0xe61b, 0xe61c, 0xe61d, 0xe61e, 0xe61f, + 0xe620, 0xe621, 0xe622, 0xe623, 0xe624, 0xe625, 0xe626, 0xe627, + 0xe628, 0xe629, 0xe62a, 0xe62b, 0xe62c, 0xe62d, 0xe62e, 0xe62f, + 0xe630, 0xe631, 0xe632, 0xe633, 0xe634, 0xe635, 0xe636, 0xe637, + 0xe638, 0xe639, 0xe63a, 0xe63b, 0xe63c, 0xe63d, 0xe63e, 0xe63f, + 0xe640, 0xe641, 0xe642, 0xe643, 0xe644, 0xe645, 0xe646, 0xe647, + 0xe648, 0xe649, 0xe64a, 0xe64b, 0xe64c, 0xe64d, 0xe64e, 0xe64f, + 0xe650, 0xe651, 0xe652, 0xe653, 0xe654, 0xe655, 0xe656, 0xe657, + 0xe658, 0xe659, 0xe65a, 0xe65b, 0xe65c, 0xe65d, 0xe65e, 0xe65f, + 0xe660, 0xe661, 0xe662, 0xe663, 0xe664, 0xe665, 0xe666, 0xe667, + 0xe668, 0xe669, 0xe66a, 0xe66b, 0xe66c, 0xe66d, 0xe66e, 0xe66f, + 0xe670, 0xe671, 0xe672, 0xe673, 0xe674, 0xe675, 0xe676, 0xe677, + 0xe678, 0xe679, 0xe67a, 0xe67b, 0xe67c, 0xe67d, 0xe67e, 0xe67f, + 0xe680, 0xe681, 0xe682, 0xe683, 0xe684, 0xe685, 0xe686, 0xe687, + 0xe688, 0xe689, 0xe68a, 0xe68b, 0xe68c, 0xe68d, 0xe68e, 0xe68f, + 0xe690, 0xe691, 0xe692, 0xe693, 0xe694, 0xe695, 0xe696, 0xe697, + 0xe698, 0xe699, 0xe69a, 0xe69b, 0xe69c, 0xe69d, 0xe69e, 0xe69f, + 0xe6a0, 0xe6a1, 0xe6a2, 0xe6a3, 0xe6a4, 0xe6a5, 0xe6a6, 0xe6a7, + 0xe6a8, 0xe6a9, 0xe6aa, 0xe6ab, 0xe6ac, 0xe6ad, 0xe6ae, 0xe6af, + 0xe6b0, 0xe6b1, 0xe6b2, 0xe6b3, 0xe6b4, 0xe6b5, 0xe6b6, 0xe6b7, + 0xe6b8, 0xe6b9, 0xe6ba, 0xe6bb, 0xe6bc, 0xe6bd, 0xe6be, 0xe6bf, + 0xe6c0, 0xe6c1, 0xe6c2, 0xe6c3, 0xe6c4, 0xe6c5, 0xe6c6, 0xe6c7, + 0xe6c8, 0xe6c9, 0xe6ca, 0xe6cb, 0xe6cc, 0xe6cd, 0xe6ce, 0xe6cf, + 0xe6d0, 0xe6d1, 0xe6d2, 0xe6d3, 0xe6d4, 0xe6d5, 0xe6d6, 0xe6d7, + 0xe6d8, 0xe6d9, 0xe6da, 0xe6db, 0xe6dc, 0xe6dd, 0xe6de, 0xe6df, + 0xe6e0, 0xe6e1, 0xe6e2, 0xe6e3, 0xe6e4, 0xe6e5, 0xe6e6, 0xe6e7, + 0xe6e8, 0xe6e9, 0xe6ea, 0xe6eb, 0xe6ec, 0xe6ed, 0xe6ee, 0xe6ef, + 0xe6f0, 0xe6f1, 0xe6f2, 0xe6f3, 0xe6f4, 0xe6f5, 0xe6f6, 0xe6f7, + 0xe6f8, 0xe6f9, 0xe6fa, 0xe6fb, 0xe6fc, 0xe6fd, 0xe6fe, 0xe6ff, + 0xe700, 0xe701, 0xe702, 0xe703, 0xe704, 0xe705, 0xe706, 0xe707, + 0xe708, 0xe709, 0xe70a, 0xe70b, 0xe70c, 0xe70d, 0xe70e, 0xe70f, + 0xe710, 0xe711, 0xe712, 0xe713, 0xe714, 0xe715, 0xe716, 0xe717, + 0xe718, 0xe719, 0xe71a, 0xe71b, 0xe71c, 0xe71d, 0xe71e, 0xe71f, + 0xe720, 0xe721, 0xe722, 0xe723, 0xe724, 0xe725, 0xe726, 0xe727, + 0xe728, 0xe729, 0xe72a, 0xe72b, 0xe72c, 0xe72d, 0xe72e, 0xe72f, + 0xe730, 0xe731, 0xe732, 0xe733, 0xe734, 0xe735, 0xe736, 0xe737, + 0xe738, 0xe739, 0xe73a, 0xe73b, 0xe73c, 0xe73d, 0xe73e, 0xe73f, + 0xe740, 0xe741, 0xe742, 0xe743, 0xe744, 0xe745, 0xe746, 0xe747, + 0xe748, 0xe749, 0xe74a, 0xe74b, 0xe74c, 0xe74d, 0xe74e, 0xe74f, + 0xe750, 0xe751, 0xe752, 0xe753, 0xe754, 0xe755, 0xe756, 0xe757, + 0xe758, 0xe759, 0xe75a, 0xe75b, 0xe75c, 0xe75d, 0xe75e, 0xe75f, + 0xe760, 0xe761, 0xe762, 0xe763, 0xe764, 0xe765, 0xe766, 0xe767, + 0xe768, 0xe769, 0xe76a, 0xe76b, 0xe76c, 0xe76d, 0xe76e, 0xe76f, + 0xe770, 0xe771, 0xe772, 0xe773, 0xe774, 0xe775, 0xe776, 0xe777, + 0xe778, 0xe779, 0xe77a, 0xe77b, 0xe77c, 0xe77d, 0xe77e, 0xe77f, + 0xe780, 0xe781, 0xe782, 0xe783, 0xe784, 0xe785, 0xe786, 0xe787, + 0xe788, 0xe789, 0xe78a, 0xe78b, 0xe78c, 0xe78d, 0xe78e, 0xe78f, + 0xe790, 0xe791, 0xe792, 0xe793, 0xe794, 0xe795, 0xe796, 0xe797, + 0xe798, 0xe799, 0xe79a, 0xe79b, 0xe79c, 0xe79d, 0xe79e, 0xe79f, + 0xe7a0, 0xe7a1, 0xe7a2, 0xe7a3, 0xe7a4, 0xe7a5, 0xe7a6, 0xe7a7, + 0xe7a8, 0xe7a9, 0xe7aa, 0xe7ab, 0xe7ac, 0xe7ad, 0xe7ae, 0xe7af, + 0xe7b0, 0xe7b1, 0xe7b2, 0xe7b3, 0xe7b4, 0xe7b5, 0xe7b6, 0xe7b7, + 0xe7b8, 0xe7b9, 0xe7ba, 0xe7bb, 0xe7bc, 0xe7bd, 0xe7be, 0xe7bf, + 0xe7c0, 0xe7c1, 0xe7c2, 0xe7c3, 0xe7c4, 0xe7c5, 0xe7c6, 0xe7c7, + 0xe7c8, 0xe7c9, 0xe7ca, 0xe7cb, 0xe7cc, 0xe7cd, 0xe7ce, 0xe7cf, + 0xe7d0, 0xe7d1, 0xe7d2, 0xe7d3, 0xe7d4, 0xe7d5, 0xe7d6, 0xe7d7, + 0xe7d8, 0xe7d9, 0xe7da, 0xe7db, 0xe7dc, 0xe7dd, 0xe7de, 0xe7df, + 0xe7e0, 0xe7e1, 0xe7e2, 0xe7e3, 0xe7e4, 0xe7e5, 0xe7e6, 0xe7e7, + 0xe7e8, 0xe7e9, 0xe7ea, 0xe7eb, 0xe7ec, 0xe7ed, 0xe7ee, 0xe7ef, + 0xe7f0, 0xe7f1, 0xe7f2, 0xe7f3, 0xe7f4, 0xe7f5, 0xe7f6, 0xe7f7, + 0xe7f8, 0xe7f9, 0xe7fa, 0xe7fb, 0xe7fc, 0xe7fd, 0xe7fe, 0xe7ff, + 0xe800, 0xe801, 0xe802, 0xe803, 0xe804, 0xe805, 0xe806, 0xe807, + 0xe808, 0xe809, 0xe80a, 0xe80b, 0xe80c, 0xe80d, 0xe80e, 0xe80f, + 0xe810, 0xe811, 0xe812, 0xe813, 0xe814, 0xe815, 0xe816, 0xe817, + 0xe818, 0xe819, 0xe81a, 0xe81b, 0xe81c, 0xe81d, 0xe81e, 0xe81f, + 0xe820, 0xe821, 0xe822, 0xe823, 0xe824, 0xe825, 0xe826, 0xe827, + 0xe828, 0xe829, 0xe82a, 0xe82b, 0xe82c, 0xe82d, 0xe82e, 0xe82f, + 0xe830, 0xe831, 0xe832, 0xe833, 0xe834, 0xe835, 0xe836, 0xe837, + 0xe838, 0xe839, 0xe83a, 0xe83b, 0xe83c, 0xe83d, 0xe83e, 0xe83f, + 0xe840, 0xe841, 0xe842, 0xe843, 0xe844, 0xe845, 0xe846, 0xe847, + 0xe848, 0xe849, 0xe84a, 0xe84b, 0xe84c, 0xe84d, 0xe84e, 0xe84f, + 0xe850, 0xe851, 0xe852, 0xe853, 0xe854, 0xe855, 0xe856, 0xe857, + 0xe858, 0xe859, 0xe85a, 0xe85b, 0xe85c, 0xe85d, 0xe85e, 0xe85f, + 0xe860, 0xe861, 0xe862, 0xe863, 0xe864, 0xe865, 0xe866, 0xe867, + 0xe868, 0xe869, 0xe86a, 0xe86b, 0xe86c, 0xe86d, 0xe86e, 0xe86f, + 0xe870, 0xe871, 0xe872, 0xe873, 0xe874, 0xe875, 0xe876, 0xe877, + 0xe878, 0xe879, 0xe87a, 0xe87b, 0xe87c, 0xe87d, 0xe87e, 0xe87f, + 0xe880, 0xe881, 0xe882, 0xe883, 0xe884, 0xe885, 0xe886, 0xe887, + 0xe888, 0xe889, 0xe88a, 0xe88b, 0xe88c, 0xe88d, 0xe88e, 0xe88f, + 0xe890, 0xe891, 0xe892, 0xe893, 0xe894, 0xe895, 0xe896, 0xe897, + 0xe898, 0xe899, 0xe89a, 0xe89b, 0xe89c, 0xe89d, 0xe89e, 0xe89f, + 0xe8a0, 0xe8a1, 0xe8a2, 0xe8a3, 0xe8a4, 0xe8a5, 0xe8a6, 0xe8a7, + 0xe8a8, 0xe8a9, 0xe8aa, 0xe8ab, 0xe8ac, 0xe8ad, 0xe8ae, 0xe8af, + 0xe8b0, 0xe8b1, 0xe8b2, 0xe8b3, 0xe8b4, 0xe8b5, 0xe8b6, 0xe8b7, + 0xe8b8, 0xe8b9, 0xe8ba, 0xe8bb, 0xe8bc, 0xe8bd, 0xe8be, 0xe8bf, + 0xe8c0, 0xe8c1, 0xe8c2, 0xe8c3, 0xe8c4, 0xe8c5, 0xe8c6, 0xe8c7, + 0xe8c8, 0xe8c9, 0xe8ca, 0xe8cb, 0xe8cc, 0xe8cd, 0xe8ce, 0xe8cf, + 0xe8d0, 0xe8d1, 0xe8d2, 0xe8d3, 0xe8d4, 0xe8d5, 0xe8d6, 0xe8d7, + 0xe8d8, 0xe8d9, 0xe8da, 0xe8db, 0xe8dc, 0xe8dd, 0xe8de, 0xe8df, + 0xe8e0, 0xe8e1, 0xe8e2, 0xe8e3, 0xe8e4, 0xe8e5, 0xe8e6, 0xe8e7, + 0xe8e8, 0xe8e9, 0xe8ea, 0xe8eb, 0xe8ec, 0xe8ed, 0xe8ee, 0xe8ef, + 0xe8f0, 0xe8f1, 0xe8f2, 0xe8f3, 0xe8f4, 0xe8f5, 0xe8f6, 0xe8f7, + 0xe8f8, 0xe8f9, 0xe8fa, 0xe8fb, 0xe8fc, 0xe8fd, 0xe8fe, 0xe8ff, + 0xe900, 0xe901, 0xe902, 0xe903, 0xe904, 0xe905, 0xe906, 0xe907, + 0xe908, 0xe909, 0xe90a, 0xe90b, 0xe90c, 0xe90d, 0xe90e, 0xe90f, + 0xe910, 0xe911, 0xe912, 0xe913, 0xe914, 0xe915, 0xe916, 0xe917, + 0xe918, 0xe919, 0xe91a, 0xe91b, 0xe91c, 0xe91d, 0xe91e, 0xe91f, + 0xe920, 0xe921, 0xe922, 0xe923, 0xe924, 0xe925, 0xe926, 0xe927, + 0xe928, 0xe929, 0xe92a, 0xe92b, 0xe92c, 0xe92d, 0xe92e, 0xe92f, + 0xe930, 0xe931, 0xe932, 0xe933, 0xe934, 0xe935, 0xe936, 0xe937, + 0xe938, 0xe939, 0xe93a, 0xe93b, 0xe93c, 0xe93d, 0xe93e, 0xe93f, + 0xe940, 0xe941, 0xe942, 0xe943, 0xe944, 0xe945, 0xe946, 0xe947, + 0xe948, 0xe949, 0xe94a, 0xe94b, 0xe94c, 0xe94d, 0xe94e, 0xe94f, + 0xe950, 0xe951, 0xe952, 0xe953, 0xe954, 0xe955, 0xe956, 0xe957, + 0xe958, 0xe959, 0xe95a, 0xe95b, 0xe95c, 0xe95d, 0xe95e, 0xe95f, + 0xe960, 0xe961, 0xe962, 0xe963, 0xe964, 0xe965, 0xe966, 0xe967, + 0xe968, 0xe969, 0xe96a, 0xe96b, 0xe96c, 0xe96d, 0xe96e, 0xe96f, + 0xe970, 0xe971, 0xe972, 0xe973, 0xe974, 0xe975, 0xe976, 0xe977, + 0xe978, 0xe979, 0xe97a, 0xe97b, 0xe97c, 0xe97d, 0xe97e, 0xe97f, + 0xe980, 0xe981, 0xe982, 0xe983, 0xe984, 0xe985, 0xe986, 0xe987, + 0xe988, 0xe989, 0xe98a, 0xe98b, 0xe98c, 0xe98d, 0xe98e, 0xe98f, + 0xe990, 0xe991, 0xe992, 0xe993, 0xe994, 0xe995, 0xe996, 0xe997, + 0xe998, 0xe999, 0xe99a, 0xe99b, 0xe99c, 0xe99d, 0xe99e, 0xe99f, + 0xe9a0, 0xe9a1, 0xe9a2, 0xe9a3, 0xe9a4, 0xe9a5, 0xe9a6, 0xe9a7, + 0xe9a8, 0xe9a9, 0xe9aa, 0xe9ab, 0xe9ac, 0xe9ad, 0xe9ae, 0xe9af, + 0xe9b0, 0xe9b1, 0xe9b2, 0xe9b3, 0xe9b4, 0xe9b5, 0xe9b6, 0xe9b7, + 0xe9b8, 0xe9b9, 0xe9ba, 0xe9bb, 0xe9bc, 0xe9bd, 0xe9be, 0xe9bf, + 0xe9c0, 0xe9c1, 0xe9c2, 0xe9c3, 0xe9c4, 0xe9c5, 0xe9c6, 0xe9c7, + 0xe9c8, 0xe9c9, 0xe9ca, 0xe9cb, 0xe9cc, 0xe9cd, 0xe9ce, 0xe9cf, + 0xe9d0, 0xe9d1, 0xe9d2, 0xe9d3, 0xe9d4, 0xe9d5, 0xe9d6, 0xe9d7, + 0xe9d8, 0xe9d9, 0xe9da, 0xe9db, 0xe9dc, 0xe9dd, 0xe9de, 0xe9df, + 0xe9e0, 0xe9e1, 0xe9e2, 0xe9e3, 0xe9e4, 0xe9e5, 0xe9e6, 0xe9e7, + 0xe9e8, 0xe9e9, 0xe9ea, 0xe9eb, 0xe9ec, 0xe9ed, 0xe9ee, 0xe9ef, + 0xe9f0, 0xe9f1, 0xe9f2, 0xe9f3, 0xe9f4, 0xe9f5, 0xe9f6, 0xe9f7, + 0xe9f8, 0xe9f9, 0xe9fa, 0xe9fb, 0xe9fc, 0xe9fd, 0xe9fe, 0xe9ff, + 0xea00, 0xea01, 0xea02, 0xea03, 0xea04, 0xea05, 0xea06, 0xea07, + 0xea08, 0xea09, 0xea0a, 0xea0b, 0xea0c, 0xea0d, 0xea0e, 0xea0f, + 0xea10, 0xea11, 0xea12, 0xea13, 0xea14, 0xea15, 0xea16, 0xea17, + 0xea18, 0xea19, 0xea1a, 0xea1b, 0xea1c, 0xea1d, 0xea1e, 0xea1f, + 0xea20, 0xea21, 0xea22, 0xea23, 0xea24, 0xea25, 0xea26, 0xea27, + 0xea28, 0xea29, 0xea2a, 0xea2b, 0xea2c, 0xea2d, 0xea2e, 0xea2f, + 0xea30, 0xea31, 0xea32, 0xea33, 0xea34, 0xea35, 0xea36, 0xea37, + 0xea38, 0xea39, 0xea3a, 0xea3b, 0xea3c, 0xea3d, 0xea3e, 0xea3f, + 0xea40, 0xea41, 0xea42, 0xea43, 0xea44, 0xea45, 0xea46, 0xea47, + 0xea48, 0xea49, 0xea4a, 0xea4b, 0xea4c, 0xea4d, 0xea4e, 0xea4f, + 0xea50, 0xea51, 0xea52, 0xea53, 0xea54, 0xea55, 0xea56, 0xea57, + 0xea58, 0xea59, 0xea5a, 0xea5b, 0xea5c, 0xea5d, 0xea5e, 0xea5f, + 0xea60, 0xea61, 0xea62, 0xea63, 0xea64, 0xea65, 0xea66, 0xea67, + 0xea68, 0xea69, 0xea6a, 0xea6b, 0xea6c, 0xea6d, 0xea6e, 0xea6f, + 0xea70, 0xea71, 0xea72, 0xea73, 0xea74, 0xea75, 0xea76, 0xea77, + 0xea78, 0xea79, 0xea7a, 0xea7b, 0xea7c, 0xea7d, 0xea7e, 0xea7f, + 0xea80, 0xea81, 0xea82, 0xea83, 0xea84, 0xea85, 0xea86, 0xea87, + 0xea88, 0xea89, 0xea8a, 0xea8b, 0xea8c, 0xea8d, 0xea8e, 0xea8f, + 0xea90, 0xea91, 0xea92, 0xea93, 0xea94, 0xea95, 0xea96, 0xea97, + 0xea98, 0xea99, 0xea9a, 0xea9b, 0xea9c, 0xea9d, 0xea9e, 0xea9f, + 0xeaa0, 0xeaa1, 0xeaa2, 0xeaa3, 0xeaa4, 0xeaa5, 0xeaa6, 0xeaa7, + 0xeaa8, 0xeaa9, 0xeaaa, 0xeaab, 0xeaac, 0xeaad, 0xeaae, 0xeaaf, + 0xeab0, 0xeab1, 0xeab2, 0xeab3, 0xeab4, 0xeab5, 0xeab6, 0xeab7, + 0xeab8, 0xeab9, 0xeaba, 0xeabb, 0xeabc, 0xeabd, 0xeabe, 0xeabf, + 0xeac0, 0xeac1, 0xeac2, 0xeac3, 0xeac4, 0xeac5, 0xeac6, 0xeac7, + 0xeac8, 0xeac9, 0xeaca, 0xeacb, 0xeacc, 0xeacd, 0xeace, 0xeacf, + 0xead0, 0xead1, 0xead2, 0xead3, 0xead4, 0xead5, 0xead6, 0xead7, + 0xead8, 0xead9, 0xeada, 0xeadb, 0xeadc, 0xeadd, 0xeade, 0xeadf, + 0xeae0, 0xeae1, 0xeae2, 0xeae3, 0xeae4, 0xeae5, 0xeae6, 0xeae7, + 0xeae8, 0xeae9, 0xeaea, 0xeaeb, 0xeaec, 0xeaed, 0xeaee, 0xeaef, + 0xeaf0, 0xeaf1, 0xeaf2, 0xeaf3, 0xeaf4, 0xeaf5, 0xeaf6, 0xeaf7, + 0xeaf8, 0xeaf9, 0xeafa, 0xeafb, 0xeafc, 0xeafd, 0xeafe, 0xeaff, + 0xeb00, 0xeb01, 0xeb02, 0xeb03, 0xeb04, 0xeb05, 0xeb06, 0xeb07, + 0xeb08, 0xeb09, 0xeb0a, 0xeb0b, 0xeb0c, 0xeb0d, 0xeb0e, 0xeb0f, + 0xeb10, 0xeb11, 0xeb12, 0xeb13, 0xeb14, 0xeb15, 0xeb16, 0xeb17, + 0xeb18, 0xeb19, 0xeb1a, 0xeb1b, 0xeb1c, 0xeb1d, 0xeb1e, 0xeb1f, + 0xeb20, 0xeb21, 0xeb22, 0xeb23, 0xeb24, 0xeb25, 0xeb26, 0xeb27, + 0xeb28, 0xeb29, 0xeb2a, 0xeb2b, 0xeb2c, 0xeb2d, 0xeb2e, 0xeb2f, + 0xeb30, 0xeb31, 0xeb32, 0xeb33, 0xeb34, 0xeb35, 0xeb36, 0xeb37, + 0xeb38, 0xeb39, 0xeb3a, 0xeb3b, 0xeb3c, 0xeb3d, 0xeb3e, 0xeb3f, + 0xeb40, 0xeb41, 0xeb42, 0xeb43, 0xeb44, 0xeb45, 0xeb46, 0xeb47, + 0xeb48, 0xeb49, 0xeb4a, 0xeb4b, 0xeb4c, 0xeb4d, 0xeb4e, 0xeb4f, + 0xeb50, 0xeb51, 0xeb52, 0xeb53, 0xeb54, 0xeb55, 0xeb56, 0xeb57, + 0xeb58, 0xeb59, 0xeb5a, 0xeb5b, 0xeb5c, 0xeb5d, 0xeb5e, 0xeb5f, + 0xeb60, 0xeb61, 0xeb62, 0xeb63, 0xeb64, 0xeb65, 0xeb66, 0xeb67, + 0xeb68, 0xeb69, 0xeb6a, 0xeb6b, 0xeb6c, 0xeb6d, 0xeb6e, 0xeb6f, + 0xeb70, 0xeb71, 0xeb72, 0xeb73, 0xeb74, 0xeb75, 0xeb76, 0xeb77, + 0xeb78, 0xeb79, 0xeb7a, 0xeb7b, 0xeb7c, 0xeb7d, 0xeb7e, 0xeb7f, + 0xeb80, 0xeb81, 0xeb82, 0xeb83, 0xeb84, 0xeb85, 0xeb86, 0xeb87, + 0xeb88, 0xeb89, 0xeb8a, 0xeb8b, 0xeb8c, 0xeb8d, 0xeb8e, 0xeb8f, + 0xeb90, 0xeb91, 0xeb92, 0xeb93, 0xeb94, 0xeb95, 0xeb96, 0xeb97, + 0xeb98, 0xeb99, 0xeb9a, 0xeb9b, 0xeb9c, 0xeb9d, 0xeb9e, 0xeb9f, + 0xeba0, 0xeba1, 0xeba2, 0xeba3, 0xeba4, 0xeba5, 0xeba6, 0xeba7, + 0xeba8, 0xeba9, 0xebaa, 0xebab, 0xebac, 0xebad, 0xebae, 0xebaf, + 0xebb0, 0xebb1, 0xebb2, 0xebb3, 0xebb4, 0xebb5, 0xebb6, 0xebb7, + 0xebb8, 0xebb9, 0xebba, 0xebbb, 0xebbc, 0xebbd, 0xebbe, 0xebbf, + 0xebc0, 0xebc1, 0xebc2, 0xebc3, 0xebc4, 0xebc5, 0xebc6, 0xebc7, + 0xebc8, 0xebc9, 0xebca, 0xebcb, 0xebcc, 0xebcd, 0xebce, 0xebcf, + 0xebd0, 0xebd1, 0xebd2, 0xebd3, 0xebd4, 0xebd5, 0xebd6, 0xebd7, + 0xebd8, 0xebd9, 0xebda, 0xebdb, 0xebdc, 0xebdd, 0xebde, 0xebdf, + 0xebe0, 0xebe1, 0xebe2, 0xebe3, 0xebe4, 0xebe5, 0xebe6, 0xebe7, + 0xebe8, 0xebe9, 0xebea, 0xebeb, 0xebec, 0xebed, 0xebee, 0xebef, + 0xebf0, 0xebf1, 0xebf2, 0xebf3, 0xebf4, 0xebf5, 0xebf6, 0xebf7, + 0xebf8, 0xebf9, 0xebfa, 0xebfb, 0xebfc, 0xebfd, 0xebfe, 0xebff, + 0xec00, 0xec01, 0xec02, 0xec03, 0xec04, 0xec05, 0xec06, 0xec07, + 0xec08, 0xec09, 0xec0a, 0xec0b, 0xec0c, 0xec0d, 0xec0e, 0xec0f, + 0xec10, 0xec11, 0xec12, 0xec13, 0xec14, 0xec15, 0xec16, 0xec17, + 0xec18, 0xec19, 0xec1a, 0xec1b, 0xec1c, 0xec1d, 0xec1e, 0xec1f, + 0xec20, 0xec21, 0xec22, 0xec23, 0xec24, 0xec25, 0xec26, 0xec27, + 0xec28, 0xec29, 0xec2a, 0xec2b, 0xec2c, 0xec2d, 0xec2e, 0xec2f, + 0xec30, 0xec31, 0xec32, 0xec33, 0xec34, 0xec35, 0xec36, 0xec37, + 0xec38, 0xec39, 0xec3a, 0xec3b, 0xec3c, 0xec3d, 0xec3e, 0xec3f, + 0xec40, 0xec41, 0xec42, 0xec43, 0xec44, 0xec45, 0xec46, 0xec47, + 0xec48, 0xec49, 0xec4a, 0xec4b, 0xec4c, 0xec4d, 0xec4e, 0xec4f, + 0xec50, 0xec51, 0xec52, 0xec53, 0xec54, 0xec55, 0xec56, 0xec57, + 0xec58, 0xec59, 0xec5a, 0xec5b, 0xec5c, 0xec5d, 0xec5e, 0xec5f, + 0xec60, 0xec61, 0xec62, 0xec63, 0xec64, 0xec65, 0xec66, 0xec67, + 0xec68, 0xec69, 0xec6a, 0xec6b, 0xec6c, 0xec6d, 0xec6e, 0xec6f, + 0xec70, 0xec71, 0xec72, 0xec73, 0xec74, 0xec75, 0xec76, 0xec77, + 0xec78, 0xec79, 0xec7a, 0xec7b, 0xec7c, 0xec7d, 0xec7e, 0xec7f, + 0xec80, 0xec81, 0xec82, 0xec83, 0xec84, 0xec85, 0xec86, 0xec87, + 0xec88, 0xec89, 0xec8a, 0xec8b, 0xec8c, 0xec8d, 0xec8e, 0xec8f, + 0xec90, 0xec91, 0xec92, 0xec93, 0xec94, 0xec95, 0xec96, 0xec97, + 0xec98, 0xec99, 0xec9a, 0xec9b, 0xec9c, 0xec9d, 0xec9e, 0xec9f, + 0xeca0, 0xeca1, 0xeca2, 0xeca3, 0xeca4, 0xeca5, 0xeca6, 0xeca7, + 0xeca8, 0xeca9, 0xecaa, 0xecab, 0xecac, 0xecad, 0xecae, 0xecaf, + 0xecb0, 0xecb1, 0xecb2, 0xecb3, 0xecb4, 0xecb5, 0xecb6, 0xecb7, + 0xecb8, 0xecb9, 0xecba, 0xecbb, 0xecbc, 0xecbd, 0xecbe, 0xecbf, + 0xecc0, 0xecc1, 0xecc2, 0xecc3, 0xecc4, 0xecc5, 0xecc6, 0xecc7, + 0xecc8, 0xecc9, 0xecca, 0xeccb, 0xeccc, 0xeccd, 0xecce, 0xeccf, + 0xecd0, 0xecd1, 0xecd2, 0xecd3, 0xecd4, 0xecd5, 0xecd6, 0xecd7, + 0xecd8, 0xecd9, 0xecda, 0xecdb, 0xecdc, 0xecdd, 0xecde, 0xecdf, + 0xece0, 0xece1, 0xece2, 0xece3, 0xece4, 0xece5, 0xece6, 0xece7, + 0xece8, 0xece9, 0xecea, 0xeceb, 0xecec, 0xeced, 0xecee, 0xecef, + 0xecf0, 0xecf1, 0xecf2, 0xecf3, 0xecf4, 0xecf5, 0xecf6, 0xecf7, + 0xecf8, 0xecf9, 0xecfa, 0xecfb, 0xecfc, 0xecfd, 0xecfe, 0xecff, + 0xed00, 0xed01, 0xed02, 0xed03, 0xed04, 0xed05, 0xed06, 0xed07, + 0xed08, 0xed09, 0xed0a, 0xed0b, 0xed0c, 0xed0d, 0xed0e, 0xed0f, + 0xed10, 0xed11, 0xed12, 0xed13, 0xed14, 0xed15, 0xed16, 0xed17, + 0xed18, 0xed19, 0xed1a, 0xed1b, 0xed1c, 0xed1d, 0xed1e, 0xed1f, + 0xed20, 0xed21, 0xed22, 0xed23, 0xed24, 0xed25, 0xed26, 0xed27, + 0xed28, 0xed29, 0xed2a, 0xed2b, 0xed2c, 0xed2d, 0xed2e, 0xed2f, + 0xed30, 0xed31, 0xed32, 0xed33, 0xed34, 0xed35, 0xed36, 0xed37, + 0xed38, 0xed39, 0xed3a, 0xed3b, 0xed3c, 0xed3d, 0xed3e, 0xed3f, + 0xed40, 0xed41, 0xed42, 0xed43, 0xed44, 0xed45, 0xed46, 0xed47, + 0xed48, 0xed49, 0xed4a, 0xed4b, 0xed4c, 0xed4d, 0xed4e, 0xed4f, + 0xed50, 0xed51, 0xed52, 0xed53, 0xed54, 0xed55, 0xed56, 0xed57, + 0xed58, 0xed59, 0xed5a, 0xed5b, 0xed5c, 0xed5d, 0xed5e, 0xed5f, + 0xed60, 0xed61, 0xed62, 0xed63, 0xed64, 0xed65, 0xed66, 0xed67, + 0xed68, 0xed69, 0xed6a, 0xed6b, 0xed6c, 0xed6d, 0xed6e, 0xed6f, + 0xed70, 0xed71, 0xed72, 0xed73, 0xed74, 0xed75, 0xed76, 0xed77, + 0xed78, 0xed79, 0xed7a, 0xed7b, 0xed7c, 0xed7d, 0xed7e, 0xed7f, + 0xed80, 0xed81, 0xed82, 0xed83, 0xed84, 0xed85, 0xed86, 0xed87, + 0xed88, 0xed89, 0xed8a, 0xed8b, 0xed8c, 0xed8d, 0xed8e, 0xed8f, + 0xed90, 0xed91, 0xed92, 0xed93, 0xed94, 0xed95, 0xed96, 0xed97, + 0xed98, 0xed99, 0xed9a, 0xed9b, 0xed9c, 0xed9d, 0xed9e, 0xed9f, + 0xeda0, 0xeda1, 0xeda2, 0xeda3, 0xeda4, 0xeda5, 0xeda6, 0xeda7, + 0xeda8, 0xeda9, 0xedaa, 0xedab, 0xedac, 0xedad, 0xedae, 0xedaf, + 0xedb0, 0xedb1, 0xedb2, 0xedb3, 0xedb4, 0xedb5, 0xedb6, 0xedb7, + 0xedb8, 0xedb9, 0xedba, 0xedbb, 0xedbc, 0xedbd, 0xedbe, 0xedbf, + 0xedc0, 0xedc1, 0xedc2, 0xedc3, 0xedc4, 0xedc5, 0xedc6, 0xedc7, + 0xedc8, 0xedc9, 0xedca, 0xedcb, 0xedcc, 0xedcd, 0xedce, 0xedcf, + 0xedd0, 0xedd1, 0xedd2, 0xedd3, 0xedd4, 0xedd5, 0xedd6, 0xedd7, + 0xedd8, 0xedd9, 0xedda, 0xeddb, 0xeddc, 0xeddd, 0xedde, 0xeddf, + 0xede0, 0xede1, 0xede2, 0xede3, 0xede4, 0xede5, 0xede6, 0xede7, + 0xede8, 0xede9, 0xedea, 0xedeb, 0xedec, 0xeded, 0xedee, 0xedef, + 0xedf0, 0xedf1, 0xedf2, 0xedf3, 0xedf4, 0xedf5, 0xedf6, 0xedf7, + 0xedf8, 0xedf9, 0xedfa, 0xedfb, 0xedfc, 0xedfd, 0xedfe, 0xedff, + 0xee00, 0xee01, 0xee02, 0xee03, 0xee04, 0xee05, 0xee06, 0xee07, + 0xee08, 0xee09, 0xee0a, 0xee0b, 0xee0c, 0xee0d, 0xee0e, 0xee0f, + 0xee10, 0xee11, 0xee12, 0xee13, 0xee14, 0xee15, 0xee16, 0xee17, + 0xee18, 0xee19, 0xee1a, 0xee1b, 0xee1c, 0xee1d, 0xee1e, 0xee1f, + 0xee20, 0xee21, 0xee22, 0xee23, 0xee24, 0xee25, 0xee26, 0xee27, + 0xee28, 0xee29, 0xee2a, 0xee2b, 0xee2c, 0xee2d, 0xee2e, 0xee2f, + 0xee30, 0xee31, 0xee32, 0xee33, 0xee34, 0xee35, 0xee36, 0xee37, + 0xee38, 0xee39, 0xee3a, 0xee3b, 0xee3c, 0xee3d, 0xee3e, 0xee3f, + 0xee40, 0xee41, 0xee42, 0xee43, 0xee44, 0xee45, 0xee46, 0xee47, + 0xee48, 0xee49, 0xee4a, 0xee4b, 0xee4c, 0xee4d, 0xee4e, 0xee4f, + 0xee50, 0xee51, 0xee52, 0xee53, 0xee54, 0xee55, 0xee56, 0xee57, + 0xee58, 0xee59, 0xee5a, 0xee5b, 0xee5c, 0xee5d, 0xee5e, 0xee5f, + 0xee60, 0xee61, 0xee62, 0xee63, 0xee64, 0xee65, 0xee66, 0xee67, + 0xee68, 0xee69, 0xee6a, 0xee6b, 0xee6c, 0xee6d, 0xee6e, 0xee6f, + 0xee70, 0xee71, 0xee72, 0xee73, 0xee74, 0xee75, 0xee76, 0xee77, + 0xee78, 0xee79, 0xee7a, 0xee7b, 0xee7c, 0xee7d, 0xee7e, 0xee7f, + 0xee80, 0xee81, 0xee82, 0xee83, 0xee84, 0xee85, 0xee86, 0xee87, + 0xee88, 0xee89, 0xee8a, 0xee8b, 0xee8c, 0xee8d, 0xee8e, 0xee8f, + 0xee90, 0xee91, 0xee92, 0xee93, 0xee94, 0xee95, 0xee96, 0xee97, + 0xee98, 0xee99, 0xee9a, 0xee9b, 0xee9c, 0xee9d, 0xee9e, 0xee9f, + 0xeea0, 0xeea1, 0xeea2, 0xeea3, 0xeea4, 0xeea5, 0xeea6, 0xeea7, + 0xeea8, 0xeea9, 0xeeaa, 0xeeab, 0xeeac, 0xeead, 0xeeae, 0xeeaf, + 0xeeb0, 0xeeb1, 0xeeb2, 0xeeb3, 0xeeb4, 0xeeb5, 0xeeb6, 0xeeb7, + 0xeeb8, 0xeeb9, 0xeeba, 0xeebb, 0xeebc, 0xeebd, 0xeebe, 0xeebf, + 0xeec0, 0xeec1, 0xeec2, 0xeec3, 0xeec4, 0xeec5, 0xeec6, 0xeec7, + 0xeec8, 0xeec9, 0xeeca, 0xeecb, 0xeecc, 0xeecd, 0xeece, 0xeecf, + 0xeed0, 0xeed1, 0xeed2, 0xeed3, 0xeed4, 0xeed5, 0xeed6, 0xeed7, + 0xeed8, 0xeed9, 0xeeda, 0xeedb, 0xeedc, 0xeedd, 0xeede, 0xeedf, + 0xeee0, 0xeee1, 0xeee2, 0xeee3, 0xeee4, 0xeee5, 0xeee6, 0xeee7, + 0xeee8, 0xeee9, 0xeeea, 0xeeeb, 0xeeec, 0xeeed, 0xeeee, 0xeeef, + 0xeef0, 0xeef1, 0xeef2, 0xeef3, 0xeef4, 0xeef5, 0xeef6, 0xeef7, + 0xeef8, 0xeef9, 0xeefa, 0xeefb, 0xeefc, 0xeefd, 0xeefe, 0xeeff, + 0xef00, 0xef01, 0xef02, 0xef03, 0xef04, 0xef05, 0xef06, 0xef07, + 0xef08, 0xef09, 0xef0a, 0xef0b, 0xef0c, 0xef0d, 0xef0e, 0xef0f, + 0xef10, 0xef11, 0xef12, 0xef13, 0xef14, 0xef15, 0xef16, 0xef17, + 0xef18, 0xef19, 0xef1a, 0xef1b, 0xef1c, 0xef1d, 0xef1e, 0xef1f, + 0xef20, 0xef21, 0xef22, 0xef23, 0xef24, 0xef25, 0xef26, 0xef27, + 0xef28, 0xef29, 0xef2a, 0xef2b, 0xef2c, 0xef2d, 0xef2e, 0xef2f, + 0xef30, 0xef31, 0xef32, 0xef33, 0xef34, 0xef35, 0xef36, 0xef37, + 0xef38, 0xef39, 0xef3a, 0xef3b, 0xef3c, 0xef3d, 0xef3e, 0xef3f, + 0xef40, 0xef41, 0xef42, 0xef43, 0xef44, 0xef45, 0xef46, 0xef47, + 0xef48, 0xef49, 0xef4a, 0xef4b, 0xef4c, 0xef4d, 0xef4e, 0xef4f, + 0xef50, 0xef51, 0xef52, 0xef53, 0xef54, 0xef55, 0xef56, 0xef57, + 0xef58, 0xef59, 0xef5a, 0xef5b, 0xef5c, 0xef5d, 0xef5e, 0xef5f, + 0xef60, 0xef61, 0xef62, 0xef63, 0xef64, 0xef65, 0xef66, 0xef67, + 0xef68, 0xef69, 0xef6a, 0xef6b, 0xef6c, 0xef6d, 0xef6e, 0xef6f, + 0xef70, 0xef71, 0xef72, 0xef73, 0xef74, 0xef75, 0xef76, 0xef77, + 0xef78, 0xef79, 0xef7a, 0xef7b, 0xef7c, 0xef7d, 0xef7e, 0xef7f, + 0xef80, 0xef81, 0xef82, 0xef83, 0xef84, 0xef85, 0xef86, 0xef87, + 0xef88, 0xef89, 0xef8a, 0xef8b, 0xef8c, 0xef8d, 0xef8e, 0xef8f, + 0xef90, 0xef91, 0xef92, 0xef93, 0xef94, 0xef95, 0xef96, 0xef97, + 0xef98, 0xef99, 0xef9a, 0xef9b, 0xef9c, 0xef9d, 0xef9e, 0xef9f, + 0xefa0, 0xefa1, 0xefa2, 0xefa3, 0xefa4, 0xefa5, 0xefa6, 0xefa7, + 0xefa8, 0xefa9, 0xefaa, 0xefab, 0xefac, 0xefad, 0xefae, 0xefaf, + 0xefb0, 0xefb1, 0xefb2, 0xefb3, 0xefb4, 0xefb5, 0xefb6, 0xefb7, + 0xefb8, 0xefb9, 0xefba, 0xefbb, 0xefbc, 0xefbd, 0xefbe, 0xefbf, + 0xefc0, 0xefc1, 0xefc2, 0xefc3, 0xefc4, 0xefc5, 0xefc6, 0xefc7, + 0xefc8, 0xefc9, 0xefca, 0xefcb, 0xefcc, 0xefcd, 0xefce, 0xefcf, + 0xefd0, 0xefd1, 0xefd2, 0xefd3, 0xefd4, 0xefd5, 0xefd6, 0xefd7, + 0xefd8, 0xefd9, 0xefda, 0xefdb, 0xefdc, 0xefdd, 0xefde, 0xefdf, + 0xefe0, 0xefe1, 0xefe2, 0xefe3, 0xefe4, 0xefe5, 0xefe6, 0xefe7, + 0xefe8, 0xefe9, 0xefea, 0xefeb, 0xefec, 0xefed, 0xefee, 0xefef, + 0xeff0, 0xeff1, 0xeff2, 0xeff3, 0xeff4, 0xeff5, 0xeff6, 0xeff7, + 0xeff8, 0xeff9, 0xeffa, 0xeffb, 0xeffc, 0xeffd, 0xeffe, 0xefff, + 0xf000, 0xf001, 0xf002, 0xf003, 0xf004, 0xf005, 0xf006, 0xf007, + 0xf008, 0xf009, 0xf00a, 0xf00b, 0xf00c, 0xf00d, 0xf00e, 0xf00f, + 0xf010, 0xf011, 0xf012, 0xf013, 0xf014, 0xf015, 0xf016, 0xf017, + 0xf018, 0xf019, 0xf01a, 0xf01b, 0xf01c, 0xf01d, 0xf01e, 0xf01f, + 0xf020, 0xf021, 0xf022, 0xf023, 0xf024, 0xf025, 0xf026, 0xf027, + 0xf028, 0xf029, 0xf02a, 0xf02b, 0xf02c, 0xf02d, 0xf02e, 0xf02f, + 0xf030, 0xf031, 0xf032, 0xf033, 0xf034, 0xf035, 0xf036, 0xf037, + 0xf038, 0xf039, 0xf03a, 0xf03b, 0xf03c, 0xf03d, 0xf03e, 0xf03f, + 0xf040, 0xf041, 0xf042, 0xf043, 0xf044, 0xf045, 0xf046, 0xf047, + 0xf048, 0xf049, 0xf04a, 0xf04b, 0xf04c, 0xf04d, 0xf04e, 0xf04f, + 0xf050, 0xf051, 0xf052, 0xf053, 0xf054, 0xf055, 0xf056, 0xf057, + 0xf058, 0xf059, 0xf05a, 0xf05b, 0xf05c, 0xf05d, 0xf05e, 0xf05f, + 0xf060, 0xf061, 0xf062, 0xf063, 0xf064, 0xf065, 0xf066, 0xf067, + 0xf068, 0xf069, 0xf06a, 0xf06b, 0xf06c, 0xf06d, 0xf06e, 0xf06f, + 0xf070, 0xf071, 0xf072, 0xf073, 0xf074, 0xf075, 0xf076, 0xf077, + 0xf078, 0xf079, 0xf07a, 0xf07b, 0xf07c, 0xf07d, 0xf07e, 0xf07f, + 0xf080, 0xf081, 0xf082, 0xf083, 0xf084, 0xf085, 0xf086, 0xf087, + 0xf088, 0xf089, 0xf08a, 0xf08b, 0xf08c, 0xf08d, 0xf08e, 0xf08f, + 0xf090, 0xf091, 0xf092, 0xf093, 0xf094, 0xf095, 0xf096, 0xf097, + 0xf098, 0xf099, 0xf09a, 0xf09b, 0xf09c, 0xf09d, 0xf09e, 0xf09f, + 0xf0a0, 0xf0a1, 0xf0a2, 0xf0a3, 0xf0a4, 0xf0a5, 0xf0a6, 0xf0a7, + 0xf0a8, 0xf0a9, 0xf0aa, 0xf0ab, 0xf0ac, 0xf0ad, 0xf0ae, 0xf0af, + 0xf0b0, 0xf0b1, 0xf0b2, 0xf0b3, 0xf0b4, 0xf0b5, 0xf0b6, 0xf0b7, + 0xf0b8, 0xf0b9, 0xf0ba, 0xf0bb, 0xf0bc, 0xf0bd, 0xf0be, 0xf0bf, + 0xf0c0, 0xf0c1, 0xf0c2, 0xf0c3, 0xf0c4, 0xf0c5, 0xf0c6, 0xf0c7, + 0xf0c8, 0xf0c9, 0xf0ca, 0xf0cb, 0xf0cc, 0xf0cd, 0xf0ce, 0xf0cf, + 0xf0d0, 0xf0d1, 0xf0d2, 0xf0d3, 0xf0d4, 0xf0d5, 0xf0d6, 0xf0d7, + 0xf0d8, 0xf0d9, 0xf0da, 0xf0db, 0xf0dc, 0xf0dd, 0xf0de, 0xf0df, + 0xf0e0, 0xf0e1, 0xf0e2, 0xf0e3, 0xf0e4, 0xf0e5, 0xf0e6, 0xf0e7, + 0xf0e8, 0xf0e9, 0xf0ea, 0xf0eb, 0xf0ec, 0xf0ed, 0xf0ee, 0xf0ef, + 0xf0f0, 0xf0f1, 0xf0f2, 0xf0f3, 0xf0f4, 0xf0f5, 0xf0f6, 0xf0f7, + 0xf0f8, 0xf0f9, 0xf0fa, 0xf0fb, 0xf0fc, 0xf0fd, 0xf0fe, 0xf0ff, + 0xf100, 0xf101, 0xf102, 0xf103, 0xf104, 0xf105, 0xf106, 0xf107, + 0xf108, 0xf109, 0xf10a, 0xf10b, 0xf10c, 0xf10d, 0xf10e, 0xf10f, + 0xf110, 0xf111, 0xf112, 0xf113, 0xf114, 0xf115, 0xf116, 0xf117, + 0xf118, 0xf119, 0xf11a, 0xf11b, 0xf11c, 0xf11d, 0xf11e, 0xf11f, + 0xf120, 0xf121, 0xf122, 0xf123, 0xf124, 0xf125, 0xf126, 0xf127, + 0xf128, 0xf129, 0xf12a, 0xf12b, 0xf12c, 0xf12d, 0xf12e, 0xf12f, + 0xf130, 0xf131, 0xf132, 0xf133, 0xf134, 0xf135, 0xf136, 0xf137, + 0xf138, 0xf139, 0xf13a, 0xf13b, 0xf13c, 0xf13d, 0xf13e, 0xf13f, + 0xf140, 0xf141, 0xf142, 0xf143, 0xf144, 0xf145, 0xf146, 0xf147, + 0xf148, 0xf149, 0xf14a, 0xf14b, 0xf14c, 0xf14d, 0xf14e, 0xf14f, + 0xf150, 0xf151, 0xf152, 0xf153, 0xf154, 0xf155, 0xf156, 0xf157, + 0xf158, 0xf159, 0xf15a, 0xf15b, 0xf15c, 0xf15d, 0xf15e, 0xf15f, + 0xf160, 0xf161, 0xf162, 0xf163, 0xf164, 0xf165, 0xf166, 0xf167, + 0xf168, 0xf169, 0xf16a, 0xf16b, 0xf16c, 0xf16d, 0xf16e, 0xf16f, + 0xf170, 0xf171, 0xf172, 0xf173, 0xf174, 0xf175, 0xf176, 0xf177, + 0xf178, 0xf179, 0xf17a, 0xf17b, 0xf17c, 0xf17d, 0xf17e, 0xf17f, + 0xf180, 0xf181, 0xf182, 0xf183, 0xf184, 0xf185, 0xf186, 0xf187, + 0xf188, 0xf189, 0xf18a, 0xf18b, 0xf18c, 0xf18d, 0xf18e, 0xf18f, + 0xf190, 0xf191, 0xf192, 0xf193, 0xf194, 0xf195, 0xf196, 0xf197, + 0xf198, 0xf199, 0xf19a, 0xf19b, 0xf19c, 0xf19d, 0xf19e, 0xf19f, + 0xf1a0, 0xf1a1, 0xf1a2, 0xf1a3, 0xf1a4, 0xf1a5, 0xf1a6, 0xf1a7, + 0xf1a8, 0xf1a9, 0xf1aa, 0xf1ab, 0xf1ac, 0xf1ad, 0xf1ae, 0xf1af, + 0xf1b0, 0xf1b1, 0xf1b2, 0xf1b3, 0xf1b4, 0xf1b5, 0xf1b6, 0xf1b7, + 0xf1b8, 0xf1b9, 0xf1ba, 0xf1bb, 0xf1bc, 0xf1bd, 0xf1be, 0xf1bf, + 0xf1c0, 0xf1c1, 0xf1c2, 0xf1c3, 0xf1c4, 0xf1c5, 0xf1c6, 0xf1c7, + 0xf1c8, 0xf1c9, 0xf1ca, 0xf1cb, 0xf1cc, 0xf1cd, 0xf1ce, 0xf1cf, + 0xf1d0, 0xf1d1, 0xf1d2, 0xf1d3, 0xf1d4, 0xf1d5, 0xf1d6, 0xf1d7, + 0xf1d8, 0xf1d9, 0xf1da, 0xf1db, 0xf1dc, 0xf1dd, 0xf1de, 0xf1df, + 0xf1e0, 0xf1e1, 0xf1e2, 0xf1e3, 0xf1e4, 0xf1e5, 0xf1e6, 0xf1e7, + 0xf1e8, 0xf1e9, 0xf1ea, 0xf1eb, 0xf1ec, 0xf1ed, 0xf1ee, 0xf1ef, + 0xf1f0, 0xf1f1, 0xf1f2, 0xf1f3, 0xf1f4, 0xf1f5, 0xf1f6, 0xf1f7, + 0xf1f8, 0xf1f9, 0xf1fa, 0xf1fb, 0xf1fc, 0xf1fd, 0xf1fe, 0xf1ff, + 0xf200, 0xf201, 0xf202, 0xf203, 0xf204, 0xf205, 0xf206, 0xf207, + 0xf208, 0xf209, 0xf20a, 0xf20b, 0xf20c, 0xf20d, 0xf20e, 0xf20f, + 0xf210, 0xf211, 0xf212, 0xf213, 0xf214, 0xf215, 0xf216, 0xf217, + 0xf218, 0xf219, 0xf21a, 0xf21b, 0xf21c, 0xf21d, 0xf21e, 0xf21f, + 0xf220, 0xf221, 0xf222, 0xf223, 0xf224, 0xf225, 0xf226, 0xf227, + 0xf228, 0xf229, 0xf22a, 0xf22b, 0xf22c, 0xf22d, 0xf22e, 0xf22f, + 0xf230, 0xf231, 0xf232, 0xf233, 0xf234, 0xf235, 0xf236, 0xf237, + 0xf238, 0xf239, 0xf23a, 0xf23b, 0xf23c, 0xf23d, 0xf23e, 0xf23f, + 0xf240, 0xf241, 0xf242, 0xf243, 0xf244, 0xf245, 0xf246, 0xf247, + 0xf248, 0xf249, 0xf24a, 0xf24b, 0xf24c, 0xf24d, 0xf24e, 0xf24f, + 0xf250, 0xf251, 0xf252, 0xf253, 0xf254, 0xf255, 0xf256, 0xf257, + 0xf258, 0xf259, 0xf25a, 0xf25b, 0xf25c, 0xf25d, 0xf25e, 0xf25f, + 0xf260, 0xf261, 0xf262, 0xf263, 0xf264, 0xf265, 0xf266, 0xf267, + 0xf268, 0xf269, 0xf26a, 0xf26b, 0xf26c, 0xf26d, 0xf26e, 0xf26f, + 0xf270, 0xf271, 0xf272, 0xf273, 0xf274, 0xf275, 0xf276, 0xf277, + 0xf278, 0xf279, 0xf27a, 0xf27b, 0xf27c, 0xf27d, 0xf27e, 0xf27f, + 0xf280, 0xf281, 0xf282, 0xf283, 0xf284, 0xf285, 0xf286, 0xf287, + 0xf288, 0xf289, 0xf28a, 0xf28b, 0xf28c, 0xf28d, 0xf28e, 0xf28f, + 0xf290, 0xf291, 0xf292, 0xf293, 0xf294, 0xf295, 0xf296, 0xf297, + 0xf298, 0xf299, 0xf29a, 0xf29b, 0xf29c, 0xf29d, 0xf29e, 0xf29f, + 0xf2a0, 0xf2a1, 0xf2a2, 0xf2a3, 0xf2a4, 0xf2a5, 0xf2a6, 0xf2a7, + 0xf2a8, 0xf2a9, 0xf2aa, 0xf2ab, 0xf2ac, 0xf2ad, 0xf2ae, 0xf2af, + 0xf2b0, 0xf2b1, 0xf2b2, 0xf2b3, 0xf2b4, 0xf2b5, 0xf2b6, 0xf2b7, + 0xf2b8, 0xf2b9, 0xf2ba, 0xf2bb, 0xf2bc, 0xf2bd, 0xf2be, 0xf2bf, + 0xf2c0, 0xf2c1, 0xf2c2, 0xf2c3, 0xf2c4, 0xf2c5, 0xf2c6, 0xf2c7, + 0xf2c8, 0xf2c9, 0xf2ca, 0xf2cb, 0xf2cc, 0xf2cd, 0xf2ce, 0xf2cf, + 0xf2d0, 0xf2d1, 0xf2d2, 0xf2d3, 0xf2d4, 0xf2d5, 0xf2d6, 0xf2d7, + 0xf2d8, 0xf2d9, 0xf2da, 0xf2db, 0xf2dc, 0xf2dd, 0xf2de, 0xf2df, + 0xf2e0, 0xf2e1, 0xf2e2, 0xf2e3, 0xf2e4, 0xf2e5, 0xf2e6, 0xf2e7, + 0xf2e8, 0xf2e9, 0xf2ea, 0xf2eb, 0xf2ec, 0xf2ed, 0xf2ee, 0xf2ef, + 0xf2f0, 0xf2f1, 0xf2f2, 0xf2f3, 0xf2f4, 0xf2f5, 0xf2f6, 0xf2f7, + 0xf2f8, 0xf2f9, 0xf2fa, 0xf2fb, 0xf2fc, 0xf2fd, 0xf2fe, 0xf2ff, + 0xf300, 0xf301, 0xf302, 0xf303, 0xf304, 0xf305, 0xf306, 0xf307, + 0xf308, 0xf309, 0xf30a, 0xf30b, 0xf30c, 0xf30d, 0xf30e, 0xf30f, + 0xf310, 0xf311, 0xf312, 0xf313, 0xf314, 0xf315, 0xf316, 0xf317, + 0xf318, 0xf319, 0xf31a, 0xf31b, 0xf31c, 0xf31d, 0xf31e, 0xf31f, + 0xf320, 0xf321, 0xf322, 0xf323, 0xf324, 0xf325, 0xf326, 0xf327, + 0xf328, 0xf329, 0xf32a, 0xf32b, 0xf32c, 0xf32d, 0xf32e, 0xf32f, + 0xf330, 0xf331, 0xf332, 0xf333, 0xf334, 0xf335, 0xf336, 0xf337, + 0xf338, 0xf339, 0xf33a, 0xf33b, 0xf33c, 0xf33d, 0xf33e, 0xf33f, + 0xf340, 0xf341, 0xf342, 0xf343, 0xf344, 0xf345, 0xf346, 0xf347, + 0xf348, 0xf349, 0xf34a, 0xf34b, 0xf34c, 0xf34d, 0xf34e, 0xf34f, + 0xf350, 0xf351, 0xf352, 0xf353, 0xf354, 0xf355, 0xf356, 0xf357, + 0xf358, 0xf359, 0xf35a, 0xf35b, 0xf35c, 0xf35d, 0xf35e, 0xf35f, + 0xf360, 0xf361, 0xf362, 0xf363, 0xf364, 0xf365, 0xf366, 0xf367, + 0xf368, 0xf369, 0xf36a, 0xf36b, 0xf36c, 0xf36d, 0xf36e, 0xf36f, + 0xf370, 0xf371, 0xf372, 0xf373, 0xf374, 0xf375, 0xf376, 0xf377, + 0xf378, 0xf379, 0xf37a, 0xf37b, 0xf37c, 0xf37d, 0xf37e, 0xf37f, + 0xf380, 0xf381, 0xf382, 0xf383, 0xf384, 0xf385, 0xf386, 0xf387, + 0xf388, 0xf389, 0xf38a, 0xf38b, 0xf38c, 0xf38d, 0xf38e, 0xf38f, + 0xf390, 0xf391, 0xf392, 0xf393, 0xf394, 0xf395, 0xf396, 0xf397, + 0xf398, 0xf399, 0xf39a, 0xf39b, 0xf39c, 0xf39d, 0xf39e, 0xf39f, + 0xf3a0, 0xf3a1, 0xf3a2, 0xf3a3, 0xf3a4, 0xf3a5, 0xf3a6, 0xf3a7, + 0xf3a8, 0xf3a9, 0xf3aa, 0xf3ab, 0xf3ac, 0xf3ad, 0xf3ae, 0xf3af, + 0xf3b0, 0xf3b1, 0xf3b2, 0xf3b3, 0xf3b4, 0xf3b5, 0xf3b6, 0xf3b7, + 0xf3b8, 0xf3b9, 0xf3ba, 0xf3bb, 0xf3bc, 0xf3bd, 0xf3be, 0xf3bf, + 0xf3c0, 0xf3c1, 0xf3c2, 0xf3c3, 0xf3c4, 0xf3c5, 0xf3c6, 0xf3c7, + 0xf3c8, 0xf3c9, 0xf3ca, 0xf3cb, 0xf3cc, 0xf3cd, 0xf3ce, 0xf3cf, + 0xf3d0, 0xf3d1, 0xf3d2, 0xf3d3, 0xf3d4, 0xf3d5, 0xf3d6, 0xf3d7, + 0xf3d8, 0xf3d9, 0xf3da, 0xf3db, 0xf3dc, 0xf3dd, 0xf3de, 0xf3df, + 0xf3e0, 0xf3e1, 0xf3e2, 0xf3e3, 0xf3e4, 0xf3e5, 0xf3e6, 0xf3e7, + 0xf3e8, 0xf3e9, 0xf3ea, 0xf3eb, 0xf3ec, 0xf3ed, 0xf3ee, 0xf3ef, + 0xf3f0, 0xf3f1, 0xf3f2, 0xf3f3, 0xf3f4, 0xf3f5, 0xf3f6, 0xf3f7, + 0xf3f8, 0xf3f9, 0xf3fa, 0xf3fb, 0xf3fc, 0xf3fd, 0xf3fe, 0xf3ff, + 0xf400, 0xf401, 0xf402, 0xf403, 0xf404, 0xf405, 0xf406, 0xf407, + 0xf408, 0xf409, 0xf40a, 0xf40b, 0xf40c, 0xf40d, 0xf40e, 0xf40f, + 0xf410, 0xf411, 0xf412, 0xf413, 0xf414, 0xf415, 0xf416, 0xf417, + 0xf418, 0xf419, 0xf41a, 0xf41b, 0xf41c, 0xf41d, 0xf41e, 0xf41f, + 0xf420, 0xf421, 0xf422, 0xf423, 0xf424, 0xf425, 0xf426, 0xf427, + 0xf428, 0xf429, 0xf42a, 0xf42b, 0xf42c, 0xf42d, 0xf42e, 0xf42f, + 0xf430, 0xf431, 0xf432, 0xf433, 0xf434, 0xf435, 0xf436, 0xf437, + 0xf438, 0xf439, 0xf43a, 0xf43b, 0xf43c, 0xf43d, 0xf43e, 0xf43f, + 0xf440, 0xf441, 0xf442, 0xf443, 0xf444, 0xf445, 0xf446, 0xf447, + 0xf448, 0xf449, 0xf44a, 0xf44b, 0xf44c, 0xf44d, 0xf44e, 0xf44f, + 0xf450, 0xf451, 0xf452, 0xf453, 0xf454, 0xf455, 0xf456, 0xf457, + 0xf458, 0xf459, 0xf45a, 0xf45b, 0xf45c, 0xf45d, 0xf45e, 0xf45f, + 0xf460, 0xf461, 0xf462, 0xf463, 0xf464, 0xf465, 0xf466, 0xf467, + 0xf468, 0xf469, 0xf46a, 0xf46b, 0xf46c, 0xf46d, 0xf46e, 0xf46f, + 0xf470, 0xf471, 0xf472, 0xf473, 0xf474, 0xf475, 0xf476, 0xf477, + 0xf478, 0xf479, 0xf47a, 0xf47b, 0xf47c, 0xf47d, 0xf47e, 0xf47f, + 0xf480, 0xf481, 0xf482, 0xf483, 0xf484, 0xf485, 0xf486, 0xf487, + 0xf488, 0xf489, 0xf48a, 0xf48b, 0xf48c, 0xf48d, 0xf48e, 0xf48f, + 0xf490, 0xf491, 0xf492, 0xf493, 0xf494, 0xf495, 0xf496, 0xf497, + 0xf498, 0xf499, 0xf49a, 0xf49b, 0xf49c, 0xf49d, 0xf49e, 0xf49f, + 0xf4a0, 0xf4a1, 0xf4a2, 0xf4a3, 0xf4a4, 0xf4a5, 0xf4a6, 0xf4a7, + 0xf4a8, 0xf4a9, 0xf4aa, 0xf4ab, 0xf4ac, 0xf4ad, 0xf4ae, 0xf4af, + 0xf4b0, 0xf4b1, 0xf4b2, 0xf4b3, 0xf4b4, 0xf4b5, 0xf4b6, 0xf4b7, + 0xf4b8, 0xf4b9, 0xf4ba, 0xf4bb, 0xf4bc, 0xf4bd, 0xf4be, 0xf4bf, + 0xf4c0, 0xf4c1, 0xf4c2, 0xf4c3, 0xf4c4, 0xf4c5, 0xf4c6, 0xf4c7, + 0xf4c8, 0xf4c9, 0xf4ca, 0xf4cb, 0xf4cc, 0xf4cd, 0xf4ce, 0xf4cf, + 0xf4d0, 0xf4d1, 0xf4d2, 0xf4d3, 0xf4d4, 0xf4d5, 0xf4d6, 0xf4d7, + 0xf4d8, 0xf4d9, 0xf4da, 0xf4db, 0xf4dc, 0xf4dd, 0xf4de, 0xf4df, + 0xf4e0, 0xf4e1, 0xf4e2, 0xf4e3, 0xf4e4, 0xf4e5, 0xf4e6, 0xf4e7, + 0xf4e8, 0xf4e9, 0xf4ea, 0xf4eb, 0xf4ec, 0xf4ed, 0xf4ee, 0xf4ef, + 0xf4f0, 0xf4f1, 0xf4f2, 0xf4f3, 0xf4f4, 0xf4f5, 0xf4f6, 0xf4f7, + 0xf4f8, 0xf4f9, 0xf4fa, 0xf4fb, 0xf4fc, 0xf4fd, 0xf4fe, 0xf4ff, + 0xf500, 0xf501, 0xf502, 0xf503, 0xf504, 0xf505, 0xf506, 0xf507, + 0xf508, 0xf509, 0xf50a, 0xf50b, 0xf50c, 0xf50d, 0xf50e, 0xf50f, + 0xf510, 0xf511, 0xf512, 0xf513, 0xf514, 0xf515, 0xf516, 0xf517, + 0xf518, 0xf519, 0xf51a, 0xf51b, 0xf51c, 0xf51d, 0xf51e, 0xf51f, + 0xf520, 0xf521, 0xf522, 0xf523, 0xf524, 0xf525, 0xf526, 0xf527, + 0xf528, 0xf529, 0xf52a, 0xf52b, 0xf52c, 0xf52d, 0xf52e, 0xf52f, + 0xf530, 0xf531, 0xf532, 0xf533, 0xf534, 0xf535, 0xf536, 0xf537, + 0xf538, 0xf539, 0xf53a, 0xf53b, 0xf53c, 0xf53d, 0xf53e, 0xf53f, + 0xf540, 0xf541, 0xf542, 0xf543, 0xf544, 0xf545, 0xf546, 0xf547, + 0xf548, 0xf549, 0xf54a, 0xf54b, 0xf54c, 0xf54d, 0xf54e, 0xf54f, + 0xf550, 0xf551, 0xf552, 0xf553, 0xf554, 0xf555, 0xf556, 0xf557, + 0xf558, 0xf559, 0xf55a, 0xf55b, 0xf55c, 0xf55d, 0xf55e, 0xf55f, + 0xf560, 0xf561, 0xf562, 0xf563, 0xf564, 0xf565, 0xf566, 0xf567, + 0xf568, 0xf569, 0xf56a, 0xf56b, 0xf56c, 0xf56d, 0xf56e, 0xf56f, + 0xf570, 0xf571, 0xf572, 0xf573, 0xf574, 0xf575, 0xf576, 0xf577, + 0xf578, 0xf579, 0xf57a, 0xf57b, 0xf57c, 0xf57d, 0xf57e, 0xf57f, + 0xf580, 0xf581, 0xf582, 0xf583, 0xf584, 0xf585, 0xf586, 0xf587, + 0xf588, 0xf589, 0xf58a, 0xf58b, 0xf58c, 0xf58d, 0xf58e, 0xf58f, + 0xf590, 0xf591, 0xf592, 0xf593, 0xf594, 0xf595, 0xf596, 0xf597, + 0xf598, 0xf599, 0xf59a, 0xf59b, 0xf59c, 0xf59d, 0xf59e, 0xf59f, + 0xf5a0, 0xf5a1, 0xf5a2, 0xf5a3, 0xf5a4, 0xf5a5, 0xf5a6, 0xf5a7, + 0xf5a8, 0xf5a9, 0xf5aa, 0xf5ab, 0xf5ac, 0xf5ad, 0xf5ae, 0xf5af, + 0xf5b0, 0xf5b1, 0xf5b2, 0xf5b3, 0xf5b4, 0xf5b5, 0xf5b6, 0xf5b7, + 0xf5b8, 0xf5b9, 0xf5ba, 0xf5bb, 0xf5bc, 0xf5bd, 0xf5be, 0xf5bf, + 0xf5c0, 0xf5c1, 0xf5c2, 0xf5c3, 0xf5c4, 0xf5c5, 0xf5c6, 0xf5c7, + 0xf5c8, 0xf5c9, 0xf5ca, 0xf5cb, 0xf5cc, 0xf5cd, 0xf5ce, 0xf5cf, + 0xf5d0, 0xf5d1, 0xf5d2, 0xf5d3, 0xf5d4, 0xf5d5, 0xf5d6, 0xf5d7, + 0xf5d8, 0xf5d9, 0xf5da, 0xf5db, 0xf5dc, 0xf5dd, 0xf5de, 0xf5df, + 0xf5e0, 0xf5e1, 0xf5e2, 0xf5e3, 0xf5e4, 0xf5e5, 0xf5e6, 0xf5e7, + 0xf5e8, 0xf5e9, 0xf5ea, 0xf5eb, 0xf5ec, 0xf5ed, 0xf5ee, 0xf5ef, + 0xf5f0, 0xf5f1, 0xf5f2, 0xf5f3, 0xf5f4, 0xf5f5, 0xf5f6, 0xf5f7, + 0xf5f8, 0xf5f9, 0xf5fa, 0xf5fb, 0xf5fc, 0xf5fd, 0xf5fe, 0xf5ff, + 0xf600, 0xf601, 0xf602, 0xf603, 0xf604, 0xf605, 0xf606, 0xf607, + 0xf608, 0xf609, 0xf60a, 0xf60b, 0xf60c, 0xf60d, 0xf60e, 0xf60f, + 0xf610, 0xf611, 0xf612, 0xf613, 0xf614, 0xf615, 0xf616, 0xf617, + 0xf618, 0xf619, 0xf61a, 0xf61b, 0xf61c, 0xf61d, 0xf61e, 0xf61f, + 0xf620, 0xf621, 0xf622, 0xf623, 0xf624, 0xf625, 0xf626, 0xf627, + 0xf628, 0xf629, 0xf62a, 0xf62b, 0xf62c, 0xf62d, 0xf62e, 0xf62f, + 0xf630, 0xf631, 0xf632, 0xf633, 0xf634, 0xf635, 0xf636, 0xf637, + 0xf638, 0xf639, 0xf63a, 0xf63b, 0xf63c, 0xf63d, 0xf63e, 0xf63f, + 0xf640, 0xf641, 0xf642, 0xf643, 0xf644, 0xf645, 0xf646, 0xf647, + 0xf648, 0xf649, 0xf64a, 0xf64b, 0xf64c, 0xf64d, 0xf64e, 0xf64f, + 0xf650, 0xf651, 0xf652, 0xf653, 0xf654, 0xf655, 0xf656, 0xf657, + 0xf658, 0xf659, 0xf65a, 0xf65b, 0xf65c, 0xf65d, 0xf65e, 0xf65f, + 0xf660, 0xf661, 0xf662, 0xf663, 0xf664, 0xf665, 0xf666, 0xf667, + 0xf668, 0xf669, 0xf66a, 0xf66b, 0xf66c, 0xf66d, 0xf66e, 0xf66f, + 0xf670, 0xf671, 0xf672, 0xf673, 0xf674, 0xf675, 0xf676, 0xf677, + 0xf678, 0xf679, 0xf67a, 0xf67b, 0xf67c, 0xf67d, 0xf67e, 0xf67f, + 0xf680, 0xf681, 0xf682, 0xf683, 0xf684, 0xf685, 0xf686, 0xf687, + 0xf688, 0xf689, 0xf68a, 0xf68b, 0xf68c, 0xf68d, 0xf68e, 0xf68f, + 0xf690, 0xf691, 0xf692, 0xf693, 0xf694, 0xf695, 0xf696, 0xf697, + 0xf698, 0xf699, 0xf69a, 0xf69b, 0xf69c, 0xf69d, 0xf69e, 0xf69f, + 0xf6a0, 0xf6a1, 0xf6a2, 0xf6a3, 0xf6a4, 0xf6a5, 0xf6a6, 0xf6a7, + 0xf6a8, 0xf6a9, 0xf6aa, 0xf6ab, 0xf6ac, 0xf6ad, 0xf6ae, 0xf6af, + 0xf6b0, 0xf6b1, 0xf6b2, 0xf6b3, 0xf6b4, 0xf6b5, 0xf6b6, 0xf6b7, + 0xf6b8, 0xf6b9, 0xf6ba, 0xf6bb, 0xf6bc, 0xf6bd, 0xf6be, 0xf6bf, + 0xf6c0, 0xf6c1, 0xf6c2, 0xf6c3, 0xf6c4, 0xf6c5, 0xf6c6, 0xf6c7, + 0xf6c8, 0xf6c9, 0xf6ca, 0xf6cb, 0xf6cc, 0xf6cd, 0xf6ce, 0xf6cf, + 0xf6d0, 0xf6d1, 0xf6d2, 0xf6d3, 0xf6d4, 0xf6d5, 0xf6d6, 0xf6d7, + 0xf6d8, 0xf6d9, 0xf6da, 0xf6db, 0xf6dc, 0xf6dd, 0xf6de, 0xf6df, + 0xf6e0, 0xf6e1, 0xf6e2, 0xf6e3, 0xf6e4, 0xf6e5, 0xf6e6, 0xf6e7, + 0xf6e8, 0xf6e9, 0xf6ea, 0xf6eb, 0xf6ec, 0xf6ed, 0xf6ee, 0xf6ef, + 0xf6f0, 0xf6f1, 0xf6f2, 0xf6f3, 0xf6f4, 0xf6f5, 0xf6f6, 0xf6f7, + 0xf6f8, 0xf6f9, 0xf6fa, 0xf6fb, 0xf6fc, 0xf6fd, 0xf6fe, 0xf6ff, + 0xf700, 0xf701, 0xf702, 0xf703, 0xf704, 0xf705, 0xf706, 0xf707, + 0xf708, 0xf709, 0xf70a, 0xf70b, 0xf70c, 0xf70d, 0xf70e, 0xf70f, + 0xf710, 0xf711, 0xf712, 0xf713, 0xf714, 0xf715, 0xf716, 0xf717, + 0xf718, 0xf719, 0xf71a, 0xf71b, 0xf71c, 0xf71d, 0xf71e, 0xf71f, + 0xf720, 0xf721, 0xf722, 0xf723, 0xf724, 0xf725, 0xf726, 0xf727, + 0xf728, 0xf729, 0xf72a, 0xf72b, 0xf72c, 0xf72d, 0xf72e, 0xf72f, + 0xf730, 0xf731, 0xf732, 0xf733, 0xf734, 0xf735, 0xf736, 0xf737, + 0xf738, 0xf739, 0xf73a, 0xf73b, 0xf73c, 0xf73d, 0xf73e, 0xf73f, + 0xf740, 0xf741, 0xf742, 0xf743, 0xf744, 0xf745, 0xf746, 0xf747, + 0xf748, 0xf749, 0xf74a, 0xf74b, 0xf74c, 0xf74d, 0xf74e, 0xf74f, + 0xf750, 0xf751, 0xf752, 0xf753, 0xf754, 0xf755, 0xf756, 0xf757, + 0xf758, 0xf759, 0xf75a, 0xf75b, 0xf75c, 0xf75d, 0xf75e, 0xf75f, + 0xf760, 0xf761, 0xf762, 0xf763, 0xf764, 0xf765, 0xf766, 0xf767, + 0xf768, 0xf769, 0xf76a, 0xf76b, 0xf76c, 0xf76d, 0xf76e, 0xf76f, + 0xf770, 0xf771, 0xf772, 0xf773, 0xf774, 0xf775, 0xf776, 0xf777, + 0xf778, 0xf779, 0xf77a, 0xf77b, 0xf77c, 0xf77d, 0xf77e, 0xf77f, + 0xf780, 0xf781, 0xf782, 0xf783, 0xf784, 0xf785, 0xf786, 0xf787, + 0xf788, 0xf789, 0xf78a, 0xf78b, 0xf78c, 0xf78d, 0xf78e, 0xf78f, + 0xf790, 0xf791, 0xf792, 0xf793, 0xf794, 0xf795, 0xf796, 0xf797, + 0xf798, 0xf799, 0xf79a, 0xf79b, 0xf79c, 0xf79d, 0xf79e, 0xf79f, + 0xf7a0, 0xf7a1, 0xf7a2, 0xf7a3, 0xf7a4, 0xf7a5, 0xf7a6, 0xf7a7, + 0xf7a8, 0xf7a9, 0xf7aa, 0xf7ab, 0xf7ac, 0xf7ad, 0xf7ae, 0xf7af, + 0xf7b0, 0xf7b1, 0xf7b2, 0xf7b3, 0xf7b4, 0xf7b5, 0xf7b6, 0xf7b7, + 0xf7b8, 0xf7b9, 0xf7ba, 0xf7bb, 0xf7bc, 0xf7bd, 0xf7be, 0xf7bf, + 0xf7c0, 0xf7c1, 0xf7c2, 0xf7c3, 0xf7c4, 0xf7c5, 0xf7c6, 0xf7c7, + 0xf7c8, 0xf7c9, 0xf7ca, 0xf7cb, 0xf7cc, 0xf7cd, 0xf7ce, 0xf7cf, + 0xf7d0, 0xf7d1, 0xf7d2, 0xf7d3, 0xf7d4, 0xf7d5, 0xf7d6, 0xf7d7, + 0xf7d8, 0xf7d9, 0xf7da, 0xf7db, 0xf7dc, 0xf7dd, 0xf7de, 0xf7df, + 0xf7e0, 0xf7e1, 0xf7e2, 0xf7e3, 0xf7e4, 0xf7e5, 0xf7e6, 0xf7e7, + 0xf7e8, 0xf7e9, 0xf7ea, 0xf7eb, 0xf7ec, 0xf7ed, 0xf7ee, 0xf7ef, + 0xf7f0, 0xf7f1, 0xf7f2, 0xf7f3, 0xf7f4, 0xf7f5, 0xf7f6, 0xf7f7, + 0xf7f8, 0xf7f9, 0xf7fa, 0xf7fb, 0xf7fc, 0xf7fd, 0xf7fe, 0xf7ff, + 0xf800, 0xf801, 0xf802, 0xf803, 0xf804, 0xf805, 0xf806, 0xf807, + 0xf808, 0xf809, 0xf80a, 0xf80b, 0xf80c, 0xf80d, 0xf80e, 0xf80f, + 0xf810, 0xf811, 0xf812, 0xf813, 0xf814, 0xf815, 0xf816, 0xf817, + 0xf818, 0xf819, 0xf81a, 0xf81b, 0xf81c, 0xf81d, 0xf81e, 0xf81f, + 0xf820, 0xf821, 0xf822, 0xf823, 0xf824, 0xf825, 0xf826, 0xf827, + 0xf828, 0xf829, 0xf82a, 0xf82b, 0xf82c, 0xf82d, 0xf82e, 0xf82f, + 0xf830, 0xf831, 0xf832, 0xf833, 0xf834, 0xf835, 0xf836, 0xf837, + 0xf838, 0xf839, 0xf83a, 0xf83b, 0xf83c, 0xf83d, 0xf83e, 0xf83f, + 0xf840, 0xf841, 0xf842, 0xf843, 0xf844, 0xf845, 0xf846, 0xf847, + 0xf848, 0xf849, 0xf84a, 0xf84b, 0xf84c, 0xf84d, 0xf84e, 0xf84f, + 0xf850, 0xf851, 0xf852, 0xf853, 0xf854, 0xf855, 0xf856, 0xf857, + 0xf858, 0xf859, 0xf85a, 0xf85b, 0xf85c, 0xf85d, 0xf85e, 0xf85f, + 0xf860, 0xf861, 0xf862, 0xf863, 0xf864, 0xf865, 0xf866, 0xf867, + 0xf868, 0xf869, 0xf86a, 0xf86b, 0xf86c, 0xf86d, 0xf86e, 0xf86f, + 0xf870, 0xf871, 0xf872, 0xf873, 0xf874, 0xf875, 0xf876, 0xf877, + 0xf878, 0xf879, 0xf87a, 0xf87b, 0xf87c, 0xf87d, 0xf87e, 0xf87f, + 0xf880, 0xf881, 0xf882, 0xf883, 0xf884, 0xf885, 0xf886, 0xf887, + 0xf888, 0xf889, 0xf88a, 0xf88b, 0xf88c, 0xf88d, 0xf88e, 0xf88f, + 0xf890, 0xf891, 0xf892, 0xf893, 0xf894, 0xf895, 0xf896, 0xf897, + 0xf898, 0xf899, 0xf89a, 0xf89b, 0xf89c, 0xf89d, 0xf89e, 0xf89f, + 0xf8a0, 0xf8a1, 0xf8a2, 0xf8a3, 0xf8a4, 0xf8a5, 0xf8a6, 0xf8a7, + 0xf8a8, 0xf8a9, 0xf8aa, 0xf8ab, 0xf8ac, 0xf8ad, 0xf8ae, 0xf8af, + 0xf8b0, 0xf8b1, 0xf8b2, 0xf8b3, 0xf8b4, 0xf8b5, 0xf8b6, 0xf8b7, + 0xf8b8, 0xf8b9, 0xf8ba, 0xf8bb, 0xf8bc, 0xf8bd, 0xf8be, 0xf8bf, + 0xf8c0, 0xf8c1, 0xf8c2, 0xf8c3, 0xf8c4, 0xf8c5, 0xf8c6, 0xf8c7, + 0xf8c8, 0xf8c9, 0xf8ca, 0xf8cb, 0xf8cc, 0xf8cd, 0xf8ce, 0xf8cf, + 0xf8d0, 0xf8d1, 0xf8d2, 0xf8d3, 0xf8d4, 0xf8d5, 0xf8d6, 0xf8d7, + 0xf8d8, 0xf8d9, 0xf8da, 0xf8db, 0xf8dc, 0xf8dd, 0xf8de, 0xf8df, + 0xf8e0, 0xf8e1, 0xf8e2, 0xf8e3, 0xf8e4, 0xf8e5, 0xf8e6, 0xf8e7, + 0xf8e8, 0xf8e9, 0xf8ea, 0xf8eb, 0xf8ec, 0xf8ed, 0xf8ee, 0xf8ef, + 0xf8f0, 0xf8f1, 0xf8f2, 0xf8f3, 0xf8f4, 0xf8f5, 0xf8f6, 0xf8f7, + 0xf8f8, 0xf8f9, 0xf8fa, 0xf8fb, 0xf8fc, 0xf8fd, 0xf8fe, 0xf8ff, + 0xf900, 0xf901, 0xf902, 0xf903, 0xf904, 0xf905, 0xf906, 0xf907, + 0xf908, 0xf909, 0xf90a, 0xf90b, 0xf90c, 0xf90d, 0xf90e, 0xf90f, + 0xf910, 0xf911, 0xf912, 0xf913, 0xf914, 0xf915, 0xf916, 0xf917, + 0xf918, 0xf919, 0xf91a, 0xf91b, 0xf91c, 0xf91d, 0xf91e, 0xf91f, + 0xf920, 0xf921, 0xf922, 0xf923, 0xf924, 0xf925, 0xf926, 0xf927, + 0xf928, 0xf929, 0xf92a, 0xf92b, 0xf92c, 0xf92d, 0xf92e, 0xf92f, + 0xf930, 0xf931, 0xf932, 0xf933, 0xf934, 0xf935, 0xf936, 0xf937, + 0xf938, 0xf939, 0xf93a, 0xf93b, 0xf93c, 0xf93d, 0xf93e, 0xf93f, + 0xf940, 0xf941, 0xf942, 0xf943, 0xf944, 0xf945, 0xf946, 0xf947, + 0xf948, 0xf949, 0xf94a, 0xf94b, 0xf94c, 0xf94d, 0xf94e, 0xf94f, + 0xf950, 0xf951, 0xf952, 0xf953, 0xf954, 0xf955, 0xf956, 0xf957, + 0xf958, 0xf959, 0xf95a, 0xf95b, 0xf95c, 0xf95d, 0xf95e, 0xf95f, + 0xf960, 0xf961, 0xf962, 0xf963, 0xf964, 0xf965, 0xf966, 0xf967, + 0xf968, 0xf969, 0xf96a, 0xf96b, 0xf96c, 0xf96d, 0xf96e, 0xf96f, + 0xf970, 0xf971, 0xf972, 0xf973, 0xf974, 0xf975, 0xf976, 0xf977, + 0xf978, 0xf979, 0xf97a, 0xf97b, 0xf97c, 0xf97d, 0xf97e, 0xf97f, + 0xf980, 0xf981, 0xf982, 0xf983, 0xf984, 0xf985, 0xf986, 0xf987, + 0xf988, 0xf989, 0xf98a, 0xf98b, 0xf98c, 0xf98d, 0xf98e, 0xf98f, + 0xf990, 0xf991, 0xf992, 0xf993, 0xf994, 0xf995, 0xf996, 0xf997, + 0xf998, 0xf999, 0xf99a, 0xf99b, 0xf99c, 0xf99d, 0xf99e, 0xf99f, + 0xf9a0, 0xf9a1, 0xf9a2, 0xf9a3, 0xf9a4, 0xf9a5, 0xf9a6, 0xf9a7, + 0xf9a8, 0xf9a9, 0xf9aa, 0xf9ab, 0xf9ac, 0xf9ad, 0xf9ae, 0xf9af, + 0xf9b0, 0xf9b1, 0xf9b2, 0xf9b3, 0xf9b4, 0xf9b5, 0xf9b6, 0xf9b7, + 0xf9b8, 0xf9b9, 0xf9ba, 0xf9bb, 0xf9bc, 0xf9bd, 0xf9be, 0xf9bf, + 0xf9c0, 0xf9c1, 0xf9c2, 0xf9c3, 0xf9c4, 0xf9c5, 0xf9c6, 0xf9c7, + 0xf9c8, 0xf9c9, 0xf9ca, 0xf9cb, 0xf9cc, 0xf9cd, 0xf9ce, 0xf9cf, + 0xf9d0, 0xf9d1, 0xf9d2, 0xf9d3, 0xf9d4, 0xf9d5, 0xf9d6, 0xf9d7, + 0xf9d8, 0xf9d9, 0xf9da, 0xf9db, 0xf9dc, 0xf9dd, 0xf9de, 0xf9df, + 0xf9e0, 0xf9e1, 0xf9e2, 0xf9e3, 0xf9e4, 0xf9e5, 0xf9e6, 0xf9e7, + 0xf9e8, 0xf9e9, 0xf9ea, 0xf9eb, 0xf9ec, 0xf9ed, 0xf9ee, 0xf9ef, + 0xf9f0, 0xf9f1, 0xf9f2, 0xf9f3, 0xf9f4, 0xf9f5, 0xf9f6, 0xf9f7, + 0xf9f8, 0xf9f9, 0xf9fa, 0xf9fb, 0xf9fc, 0xf9fd, 0xf9fe, 0xf9ff, + 0xfa00, 0xfa01, 0xfa02, 0xfa03, 0xfa04, 0xfa05, 0xfa06, 0xfa07, + 0xfa08, 0xfa09, 0xfa0a, 0xfa0b, 0xfa0c, 0xfa0d, 0xfa0e, 0xfa0f, + 0xfa10, 0xfa11, 0xfa12, 0xfa13, 0xfa14, 0xfa15, 0xfa16, 0xfa17, + 0xfa18, 0xfa19, 0xfa1a, 0xfa1b, 0xfa1c, 0xfa1d, 0xfa1e, 0xfa1f, + 0xfa20, 0xfa21, 0xfa22, 0xfa23, 0xfa24, 0xfa25, 0xfa26, 0xfa27, + 0xfa28, 0xfa29, 0xfa2a, 0xfa2b, 0xfa2c, 0xfa2d, 0x0000, 0x0000, + 0xfa30, 0xfa31, 0xfa32, 0xfa33, 0xfa34, 0xfa35, 0xfa36, 0xfa37, + 0xfa38, 0xfa39, 0xfa3a, 0xfa3b, 0xfa3c, 0xfa3d, 0xfa3e, 0xfa3f, + 0xfa40, 0xfa41, 0xfa42, 0xfa43, 0xfa44, 0xfa45, 0xfa46, 0xfa47, + 0xfa48, 0xfa49, 0xfa4a, 0xfa4b, 0xfa4c, 0xfa4d, 0xfa4e, 0xfa4f, + 0xfa50, 0xfa51, 0xfa52, 0xfa53, 0xfa54, 0xfa55, 0xfa56, 0xfa57, + 0xfa58, 0xfa59, 0xfa5a, 0xfa5b, 0xfa5c, 0xfa5d, 0xfa5e, 0xfa5f, + 0xfa60, 0xfa61, 0xfa62, 0xfa63, 0xfa64, 0xfa65, 0xfa66, 0xfa67, + 0xfa68, 0xfa69, 0xfa6a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xfa70, 0xfa71, 0xfa72, 0xfa73, 0xfa74, 0xfa75, 0xfa76, 0xfa77, + 0xfa78, 0xfa79, 0xfa7a, 0xfa7b, 0xfa7c, 0xfa7d, 0xfa7e, 0xfa7f, + 0xfa80, 0xfa81, 0xfa82, 0xfa83, 0xfa84, 0xfa85, 0xfa86, 0xfa87, + 0xfa88, 0xfa89, 0xfa8a, 0xfa8b, 0xfa8c, 0xfa8d, 0xfa8e, 0xfa8f, + 0xfa90, 0xfa91, 0xfa92, 0xfa93, 0xfa94, 0xfa95, 0xfa96, 0xfa97, + 0xfa98, 0xfa99, 0xfa9a, 0xfa9b, 0xfa9c, 0xfa9d, 0xfa9e, 0xfa9f, + 0xfaa0, 0xfaa1, 0xfaa2, 0xfaa3, 0xfaa4, 0xfaa5, 0xfaa6, 0xfaa7, + 0xfaa8, 0xfaa9, 0xfaaa, 0xfaab, 0xfaac, 0xfaad, 0xfaae, 0xfaaf, + 0xfab0, 0xfab1, 0xfab2, 0xfab3, 0xfab4, 0xfab5, 0xfab6, 0xfab7, + 0xfab8, 0xfab9, 0xfaba, 0xfabb, 0xfabc, 0xfabd, 0xfabe, 0xfabf, + 0xfac0, 0xfac1, 0xfac2, 0xfac3, 0xfac4, 0xfac5, 0xfac6, 0xfac7, + 0xfac8, 0xfac9, 0xfaca, 0xfacb, 0xfacc, 0xfacd, 0xface, 0xfacf, + 0xfad0, 0xfad1, 0xfad2, 0xfad3, 0xfad4, 0xfad5, 0xfad6, 0xfad7, + 0xfad8, 0xfad9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xfb00, 0xfb01, 0xfb02, 0xfb03, 0xfb04, 0xfb05, 0xfb06, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xfb13, 0xfb14, 0xfb15, 0xfb16, 0xfb17, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfb1d, 0xfb1e, 0xfb1f, + 0xfb20, 0xfb21, 0xfb22, 0xfb23, 0xfb24, 0xfb25, 0xfb26, 0xfb27, + 0xfb28, 0xfb29, 0xfb2a, 0xfb2b, 0xfb2c, 0xfb2d, 0xfb2e, 0xfb2f, + 0xfb30, 0xfb31, 0xfb32, 0xfb33, 0xfb34, 0xfb35, 0xfb36, 0x0000, + 0xfb38, 0xfb39, 0xfb3a, 0xfb3b, 0xfb3c, 0x0000, 0xfb3e, 0x0000, + 0xfb40, 0xfb41, 0x0000, 0xfb43, 0xfb44, 0x0000, 0xfb46, 0xfb47, + 0xfb48, 0xfb49, 0xfb4a, 0xfb4b, 0xfb4c, 0xfb4d, 0xfb4e, 0xfb4f, + 0xfb50, 0xfb51, 0xfb52, 0xfb53, 0xfb54, 0xfb55, 0xfb56, 0xfb57, + 0xfb58, 0xfb59, 0xfb5a, 0xfb5b, 0xfb5c, 0xfb5d, 0xfb5e, 0xfb5f, + 0xfb60, 0xfb61, 0xfb62, 0xfb63, 0xfb64, 0xfb65, 0xfb66, 0xfb67, + 0xfb68, 0xfb69, 0xfb6a, 0xfb6b, 0xfb6c, 0xfb6d, 0xfb6e, 0xfb6f, + 0xfb70, 0xfb71, 0xfb72, 0xfb73, 0xfb74, 0xfb75, 0xfb76, 0xfb77, + 0xfb78, 0xfb79, 0xfb7a, 0xfb7b, 0xfb7c, 0xfb7d, 0xfb7e, 0xfb7f, + 0xfb80, 0xfb81, 0xfb82, 0xfb83, 0xfb84, 0xfb85, 0xfb86, 0xfb87, + 0xfb88, 0xfb89, 0xfb8a, 0xfb8b, 0xfb8c, 0xfb8d, 0xfb8e, 0xfb8f, + 0xfb90, 0xfb91, 0xfb92, 0xfb93, 0xfb94, 0xfb95, 0xfb96, 0xfb97, + 0xfb98, 0xfb99, 0xfb9a, 0xfb9b, 0xfb9c, 0xfb9d, 0xfb9e, 0xfb9f, + 0xfba0, 0xfba1, 0xfba2, 0xfba3, 0xfba4, 0xfba5, 0xfba6, 0xfba7, + 0xfba8, 0xfba9, 0xfbaa, 0xfbab, 0xfbac, 0xfbad, 0xfbae, 0xfbaf, + 0xfbb0, 0xfbb1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xfbd3, 0xfbd4, 0xfbd5, 0xfbd6, 0xfbd7, + 0xfbd8, 0xfbd9, 0xfbda, 0xfbdb, 0xfbdc, 0xfbdd, 0xfbde, 0xfbdf, + 0xfbe0, 0xfbe1, 0xfbe2, 0xfbe3, 0xfbe4, 0xfbe5, 0xfbe6, 0xfbe7, + 0xfbe8, 0xfbe9, 0xfbea, 0xfbeb, 0xfbec, 0xfbed, 0xfbee, 0xfbef, + 0xfbf0, 0xfbf1, 0xfbf2, 0xfbf3, 0xfbf4, 0xfbf5, 0xfbf6, 0xfbf7, + 0xfbf8, 0xfbf9, 0xfbfa, 0xfbfb, 0xfbfc, 0xfbfd, 0xfbfe, 0xfbff, + 0xfc00, 0xfc01, 0xfc02, 0xfc03, 0xfc04, 0xfc05, 0xfc06, 0xfc07, + 0xfc08, 0xfc09, 0xfc0a, 0xfc0b, 0xfc0c, 0xfc0d, 0xfc0e, 0xfc0f, + 0xfc10, 0xfc11, 0xfc12, 0xfc13, 0xfc14, 0xfc15, 0xfc16, 0xfc17, + 0xfc18, 0xfc19, 0xfc1a, 0xfc1b, 0xfc1c, 0xfc1d, 0xfc1e, 0xfc1f, + 0xfc20, 0xfc21, 0xfc22, 0xfc23, 0xfc24, 0xfc25, 0xfc26, 0xfc27, + 0xfc28, 0xfc29, 0xfc2a, 0xfc2b, 0xfc2c, 0xfc2d, 0xfc2e, 0xfc2f, + 0xfc30, 0xfc31, 0xfc32, 0xfc33, 0xfc34, 0xfc35, 0xfc36, 0xfc37, + 0xfc38, 0xfc39, 0xfc3a, 0xfc3b, 0xfc3c, 0xfc3d, 0xfc3e, 0xfc3f, + 0xfc40, 0xfc41, 0xfc42, 0xfc43, 0xfc44, 0xfc45, 0xfc46, 0xfc47, + 0xfc48, 0xfc49, 0xfc4a, 0xfc4b, 0xfc4c, 0xfc4d, 0xfc4e, 0xfc4f, + 0xfc50, 0xfc51, 0xfc52, 0xfc53, 0xfc54, 0xfc55, 0xfc56, 0xfc57, + 0xfc58, 0xfc59, 0xfc5a, 0xfc5b, 0xfc5c, 0xfc5d, 0xfc5e, 0xfc5f, + 0xfc60, 0xfc61, 0xfc62, 0xfc63, 0xfc64, 0xfc65, 0xfc66, 0xfc67, + 0xfc68, 0xfc69, 0xfc6a, 0xfc6b, 0xfc6c, 0xfc6d, 0xfc6e, 0xfc6f, + 0xfc70, 0xfc71, 0xfc72, 0xfc73, 0xfc74, 0xfc75, 0xfc76, 0xfc77, + 0xfc78, 0xfc79, 0xfc7a, 0xfc7b, 0xfc7c, 0xfc7d, 0xfc7e, 0xfc7f, + 0xfc80, 0xfc81, 0xfc82, 0xfc83, 0xfc84, 0xfc85, 0xfc86, 0xfc87, + 0xfc88, 0xfc89, 0xfc8a, 0xfc8b, 0xfc8c, 0xfc8d, 0xfc8e, 0xfc8f, + 0xfc90, 0xfc91, 0xfc92, 0xfc93, 0xfc94, 0xfc95, 0xfc96, 0xfc97, + 0xfc98, 0xfc99, 0xfc9a, 0xfc9b, 0xfc9c, 0xfc9d, 0xfc9e, 0xfc9f, + 0xfca0, 0xfca1, 0xfca2, 0xfca3, 0xfca4, 0xfca5, 0xfca6, 0xfca7, + 0xfca8, 0xfca9, 0xfcaa, 0xfcab, 0xfcac, 0xfcad, 0xfcae, 0xfcaf, + 0xfcb0, 0xfcb1, 0xfcb2, 0xfcb3, 0xfcb4, 0xfcb5, 0xfcb6, 0xfcb7, + 0xfcb8, 0xfcb9, 0xfcba, 0xfcbb, 0xfcbc, 0xfcbd, 0xfcbe, 0xfcbf, + 0xfcc0, 0xfcc1, 0xfcc2, 0xfcc3, 0xfcc4, 0xfcc5, 0xfcc6, 0xfcc7, + 0xfcc8, 0xfcc9, 0xfcca, 0xfccb, 0xfccc, 0xfccd, 0xfcce, 0xfccf, + 0xfcd0, 0xfcd1, 0xfcd2, 0xfcd3, 0xfcd4, 0xfcd5, 0xfcd6, 0xfcd7, + 0xfcd8, 0xfcd9, 0xfcda, 0xfcdb, 0xfcdc, 0xfcdd, 0xfcde, 0xfcdf, + 0xfce0, 0xfce1, 0xfce2, 0xfce3, 0xfce4, 0xfce5, 0xfce6, 0xfce7, + 0xfce8, 0xfce9, 0xfcea, 0xfceb, 0xfcec, 0xfced, 0xfcee, 0xfcef, + 0xfcf0, 0xfcf1, 0xfcf2, 0xfcf3, 0xfcf4, 0xfcf5, 0xfcf6, 0xfcf7, + 0xfcf8, 0xfcf9, 0xfcfa, 0xfcfb, 0xfcfc, 0xfcfd, 0xfcfe, 0xfcff, + 0xfd00, 0xfd01, 0xfd02, 0xfd03, 0xfd04, 0xfd05, 0xfd06, 0xfd07, + 0xfd08, 0xfd09, 0xfd0a, 0xfd0b, 0xfd0c, 0xfd0d, 0xfd0e, 0xfd0f, + 0xfd10, 0xfd11, 0xfd12, 0xfd13, 0xfd14, 0xfd15, 0xfd16, 0xfd17, + 0xfd18, 0xfd19, 0xfd1a, 0xfd1b, 0xfd1c, 0xfd1d, 0xfd1e, 0xfd1f, + 0xfd20, 0xfd21, 0xfd22, 0xfd23, 0xfd24, 0xfd25, 0xfd26, 0xfd27, + 0xfd28, 0xfd29, 0xfd2a, 0xfd2b, 0xfd2c, 0xfd2d, 0xfd2e, 0xfd2f, + 0xfd30, 0xfd31, 0xfd32, 0xfd33, 0xfd34, 0xfd35, 0xfd36, 0xfd37, + 0xfd38, 0xfd39, 0xfd3a, 0xfd3b, 0xfd3c, 0xfd3d, 0xfd3e, 0xfd3f, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xfd50, 0xfd51, 0xfd52, 0xfd53, 0xfd54, 0xfd55, 0xfd56, 0xfd57, + 0xfd58, 0xfd59, 0xfd5a, 0xfd5b, 0xfd5c, 0xfd5d, 0xfd5e, 0xfd5f, + 0xfd60, 0xfd61, 0xfd62, 0xfd63, 0xfd64, 0xfd65, 0xfd66, 0xfd67, + 0xfd68, 0xfd69, 0xfd6a, 0xfd6b, 0xfd6c, 0xfd6d, 0xfd6e, 0xfd6f, + 0xfd70, 0xfd71, 0xfd72, 0xfd73, 0xfd74, 0xfd75, 0xfd76, 0xfd77, + 0xfd78, 0xfd79, 0xfd7a, 0xfd7b, 0xfd7c, 0xfd7d, 0xfd7e, 0xfd7f, + 0xfd80, 0xfd81, 0xfd82, 0xfd83, 0xfd84, 0xfd85, 0xfd86, 0xfd87, + 0xfd88, 0xfd89, 0xfd8a, 0xfd8b, 0xfd8c, 0xfd8d, 0xfd8e, 0xfd8f, + 0x0000, 0x0000, 0xfd92, 0xfd93, 0xfd94, 0xfd95, 0xfd96, 0xfd97, + 0xfd98, 0xfd99, 0xfd9a, 0xfd9b, 0xfd9c, 0xfd9d, 0xfd9e, 0xfd9f, + 0xfda0, 0xfda1, 0xfda2, 0xfda3, 0xfda4, 0xfda5, 0xfda6, 0xfda7, + 0xfda8, 0xfda9, 0xfdaa, 0xfdab, 0xfdac, 0xfdad, 0xfdae, 0xfdaf, + 0xfdb0, 0xfdb1, 0xfdb2, 0xfdb3, 0xfdb4, 0xfdb5, 0xfdb6, 0xfdb7, + 0xfdb8, 0xfdb9, 0xfdba, 0xfdbb, 0xfdbc, 0xfdbd, 0xfdbe, 0xfdbf, + 0xfdc0, 0xfdc1, 0xfdc2, 0xfdc3, 0xfdc4, 0xfdc5, 0xfdc6, 0xfdc7, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xfdf0, 0xfdf1, 0xfdf2, 0xfdf3, 0xfdf4, 0xfdf5, 0xfdf6, 0xfdf7, + 0xfdf8, 0xfdf9, 0xfdfa, 0xfdfb, 0xfdfc, 0xfdfd, 0x0000, 0x0000, + 0xfe00, 0xfe01, 0xfe02, 0xfe03, 0xfe04, 0xfe05, 0xfe06, 0xfe07, + 0xfe08, 0xfe09, 0xfe0a, 0xfe0b, 0xfe0c, 0xfe0d, 0xfe0e, 0xfe0f, + 0xfe10, 0xfe11, 0xfe12, 0xfe13, 0xfe14, 0xfe15, 0xfe16, 0xfe17, + 0xfe18, 0xfe19, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xfe20, 0xfe21, 0xfe22, 0xfe23, 0xfe24, 0xfe25, 0xfe26, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xfe30, 0xfe31, 0xfe32, 0xfe33, 0xfe34, 0xfe35, 0xfe36, 0xfe37, + 0xfe38, 0xfe39, 0xfe3a, 0xfe3b, 0xfe3c, 0xfe3d, 0xfe3e, 0xfe3f, + 0xfe40, 0xfe41, 0xfe42, 0xfe43, 0xfe44, 0xfe45, 0xfe46, 0xfe47, + 0xfe48, 0xfe49, 0xfe4a, 0xfe4b, 0xfe4c, 0xfe4d, 0xfe4e, 0xfe4f, + 0xfe50, 0xfe51, 0xfe52, 0x0000, 0xfe54, 0xfe55, 0xfe56, 0xfe57, + 0xfe58, 0xfe59, 0xfe5a, 0xfe5b, 0xfe5c, 0xfe5d, 0xfe5e, 0xfe5f, + 0xfe60, 0xfe61, 0xfe62, 0xfe63, 0xfe64, 0xfe65, 0xfe66, 0x0000, + 0xfe68, 0xfe69, 0xfe6a, 0xfe6b, 0x0000, 0x0000, 0x0000, 0x0000, + 0xfe70, 0xfe71, 0xfe72, 0xfe73, 0xfe74, 0x0000, 0xfe76, 0xfe77, + 0xfe78, 0xfe79, 0xfe7a, 0xfe7b, 0xfe7c, 0xfe7d, 0xfe7e, 0xfe7f, + 0xfe80, 0xfe81, 0xfe82, 0xfe83, 0xfe84, 0xfe85, 0xfe86, 0xfe87, + 0xfe88, 0xfe89, 0xfe8a, 0xfe8b, 0xfe8c, 0xfe8d, 0xfe8e, 0xfe8f, + 0xfe90, 0xfe91, 0xfe92, 0xfe93, 0xfe94, 0xfe95, 0xfe96, 0xfe97, + 0xfe98, 0xfe99, 0xfe9a, 0xfe9b, 0xfe9c, 0xfe9d, 0xfe9e, 0xfe9f, + 0xfea0, 0xfea1, 0xfea2, 0xfea3, 0xfea4, 0xfea5, 0xfea6, 0xfea7, + 0xfea8, 0xfea9, 0xfeaa, 0xfeab, 0xfeac, 0xfead, 0xfeae, 0xfeaf, + 0xfeb0, 0xfeb1, 0xfeb2, 0xfeb3, 0xfeb4, 0xfeb5, 0xfeb6, 0xfeb7, + 0xfeb8, 0xfeb9, 0xfeba, 0xfebb, 0xfebc, 0xfebd, 0xfebe, 0xfebf, + 0xfec0, 0xfec1, 0xfec2, 0xfec3, 0xfec4, 0xfec5, 0xfec6, 0xfec7, + 0xfec8, 0xfec9, 0xfeca, 0xfecb, 0xfecc, 0xfecd, 0xfece, 0xfecf, + 0xfed0, 0xfed1, 0xfed2, 0xfed3, 0xfed4, 0xfed5, 0xfed6, 0xfed7, + 0xfed8, 0xfed9, 0xfeda, 0xfedb, 0xfedc, 0xfedd, 0xfede, 0xfedf, + 0xfee0, 0xfee1, 0xfee2, 0xfee3, 0xfee4, 0xfee5, 0xfee6, 0xfee7, + 0xfee8, 0xfee9, 0xfeea, 0xfeeb, 0xfeec, 0xfeed, 0xfeee, 0xfeef, + 0xfef0, 0xfef1, 0xfef2, 0xfef3, 0xfef4, 0xfef5, 0xfef6, 0xfef7, + 0xfef8, 0xfef9, 0xfefa, 0xfefb, 0xfefc, 0x0000, 0x0000, 0xfeff, + 0x0000, 0xff01, 0xff02, 0xff03, 0xff04, 0xff05, 0xff06, 0xff07, + 0xff08, 0xff09, 0xff0a, 0xff0b, 0xff0c, 0xff0d, 0xff0e, 0xff0f, + 0xff10, 0xff11, 0xff12, 0xff13, 0xff14, 0xff15, 0xff16, 0xff17, + 0xff18, 0xff19, 0xff1a, 0xff1b, 0xff1c, 0xff1d, 0xff1e, 0xff1f, + 0xff20, 0xff41, 0xff42, 0xff43, 0xff44, 0xff45, 0xff46, 0xff47, + 0xff48, 0xff49, 0xff4a, 0xff4b, 0xff4c, 0xff4d, 0xff4e, 0xff4f, + 0xff50, 0xff51, 0xff52, 0xff53, 0xff54, 0xff55, 0xff56, 0xff57, + 0xff58, 0xff59, 0xff5a, 0xff3b, 0xff3c, 0xff3d, 0xff3e, 0xff3f, + 0xff40, 0xff41, 0xff42, 0xff43, 0xff44, 0xff45, 0xff46, 0xff47, + 0xff48, 0xff49, 0xff4a, 0xff4b, 0xff4c, 0xff4d, 0xff4e, 0xff4f, + 0xff50, 0xff51, 0xff52, 0xff53, 0xff54, 0xff55, 0xff56, 0xff57, + 0xff58, 0xff59, 0xff5a, 0xff5b, 0xff5c, 0xff5d, 0xff5e, 0xff5f, + 0xff60, 0xff61, 0xff62, 0xff63, 0xff64, 0xff65, 0xff66, 0xff67, + 0xff68, 0xff69, 0xff6a, 0xff6b, 0xff6c, 0xff6d, 0xff6e, 0xff6f, + 0xff70, 0xff71, 0xff72, 0xff73, 0xff74, 0xff75, 0xff76, 0xff77, + 0xff78, 0xff79, 0xff7a, 0xff7b, 0xff7c, 0xff7d, 0xff7e, 0xff7f, + 0xff80, 0xff81, 0xff82, 0xff83, 0xff84, 0xff85, 0xff86, 0xff87, + 0xff88, 0xff89, 0xff8a, 0xff8b, 0xff8c, 0xff8d, 0xff8e, 0xff8f, + 0xff90, 0xff91, 0xff92, 0xff93, 0xff94, 0xff95, 0xff96, 0xff97, + 0xff98, 0xff99, 0xff9a, 0xff9b, 0xff9c, 0xff9d, 0xff9e, 0xff9f, + 0xffa0, 0xffa1, 0xffa2, 0xffa3, 0xffa4, 0xffa5, 0xffa6, 0xffa7, + 0xffa8, 0xffa9, 0xffaa, 0xffab, 0xffac, 0xffad, 0xffae, 0xffaf, + 0xffb0, 0xffb1, 0xffb2, 0xffb3, 0xffb4, 0xffb5, 0xffb6, 0xffb7, + 0xffb8, 0xffb9, 0xffba, 0xffbb, 0xffbc, 0xffbd, 0xffbe, 0x0000, + 0x0000, 0x0000, 0xffc2, 0xffc3, 0xffc4, 0xffc5, 0xffc6, 0xffc7, + 0x0000, 0x0000, 0xffca, 0xffcb, 0xffcc, 0xffcd, 0xffce, 0xffcf, + 0x0000, 0x0000, 0xffd2, 0xffd3, 0xffd4, 0xffd5, 0xffd6, 0xffd7, + 0x0000, 0x0000, 0xffda, 0xffdb, 0xffdc, 0x0000, 0x0000, 0x0000, + 0xffe0, 0xffe1, 0xffe2, 0xffe3, 0xffe4, 0xffe5, 0xffe6, 0x0000, + 0xffe8, 0xffe9, 0xffea, 0xffeb, 0xffec, 0xffed, 0xffee, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xfff9, 0xfffa, 0xfffb, 0xfffc, 0xfffd, 0x0000, 0x0000 +}; + +#if 0 +const unsigned short ____toupper[] = { 0, + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, + 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, + 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, + 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, + 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, + 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, + 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, + 0x0060, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, + 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, + 0x0058, 0x0059, 0x005a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, + 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, + 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, + 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, + 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, + 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, + 0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, + 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x039c, 0x00b6, 0x00b7, + 0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf, + 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, + 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, + 0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7, + 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df, + 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, + 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, + 0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00f7, + 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x0178, + 0x0100, 0x0100, 0x0102, 0x0102, 0x0104, 0x0104, 0x0106, 0x0106, + 0x0108, 0x0108, 0x010a, 0x010a, 0x010c, 0x010c, 0x010e, 0x010e, + 0x0110, 0x0110, 0x0112, 0x0112, 0x0114, 0x0114, 0x0116, 0x0116, + 0x0118, 0x0118, 0x011a, 0x011a, 0x011c, 0x011c, 0x011e, 0x011e, + 0x0120, 0x0120, 0x0122, 0x0122, 0x0124, 0x0124, 0x0126, 0x0126, + 0x0128, 0x0128, 0x012a, 0x012a, 0x012c, 0x012c, 0x012e, 0x012e, + 0x0130, 0x0049, 0x0132, 0x0132, 0x0134, 0x0134, 0x0136, 0x0136, + 0x0138, 0x0139, 0x0139, 0x013b, 0x013b, 0x013d, 0x013d, 0x013f, + 0x013f, 0x0141, 0x0141, 0x0143, 0x0143, 0x0145, 0x0145, 0x0147, + 0x0147, 0x0149, 0x014a, 0x014a, 0x014c, 0x014c, 0x014e, 0x014e, + 0x0150, 0x0150, 0x0152, 0x0152, 0x0154, 0x0154, 0x0156, 0x0156, + 0x0158, 0x0158, 0x015a, 0x015a, 0x015c, 0x015c, 0x015e, 0x015e, + 0x0160, 0x0160, 0x0162, 0x0162, 0x0164, 0x0164, 0x0166, 0x0166, + 0x0168, 0x0168, 0x016a, 0x016a, 0x016c, 0x016c, 0x016e, 0x016e, + 0x0170, 0x0170, 0x0172, 0x0172, 0x0174, 0x0174, 0x0176, 0x0176, + 0x0178, 0x0179, 0x0179, 0x017b, 0x017b, 0x017d, 0x017d, 0x0053, + 0x0243, 0x0181, 0x0182, 0x0182, 0x0184, 0x0184, 0x0186, 0x0187, + 0x0187, 0x0189, 0x018a, 0x018b, 0x018b, 0x018d, 0x018e, 0x018f, + 0x0190, 0x0191, 0x0191, 0x0193, 0x0194, 0x01f6, 0x0196, 0x0197, + 0x0198, 0x0198, 0x023d, 0x019b, 0x019c, 0x019d, 0x0220, 0x019f, + 0x01a0, 0x01a0, 0x01a2, 0x01a2, 0x01a4, 0x01a4, 0x01a6, 0x01a7, + 0x01a7, 0x01a9, 0x01aa, 0x01ab, 0x01ac, 0x01ac, 0x01ae, 0x01af, + 0x01af, 0x01b1, 0x01b2, 0x01b3, 0x01b3, 0x01b5, 0x01b5, 0x01b7, + 0x01b8, 0x01b8, 0x01ba, 0x01bb, 0x01bc, 0x01bc, 0x01be, 0x01f7, + 0x01c0, 0x01c1, 0x01c2, 0x01c3, 0x01c4, 0x01c4, 0x01c4, 0x01c7, + 0x01c7, 0x01c7, 0x01ca, 0x01ca, 0x01ca, 0x01cd, 0x01cd, 0x01cf, + 0x01cf, 0x01d1, 0x01d1, 0x01d3, 0x01d3, 0x01d5, 0x01d5, 0x01d7, + 0x01d7, 0x01d9, 0x01d9, 0x01db, 0x01db, 0x018e, 0x01de, 0x01de, + 0x01e0, 0x01e0, 0x01e2, 0x01e2, 0x01e4, 0x01e4, 0x01e6, 0x01e6, + 0x01e8, 0x01e8, 0x01ea, 0x01ea, 0x01ec, 0x01ec, 0x01ee, 0x01ee, + 0x01f0, 0x01f1, 0x01f1, 0x01f1, 0x01f4, 0x01f4, 0x01f6, 0x01f7, + 0x01f8, 0x01f8, 0x01fa, 0x01fa, 0x01fc, 0x01fc, 0x01fe, 0x01fe, + 0x0200, 0x0200, 0x0202, 0x0202, 0x0204, 0x0204, 0x0206, 0x0206, + 0x0208, 0x0208, 0x020a, 0x020a, 0x020c, 0x020c, 0x020e, 0x020e, + 0x0210, 0x0210, 0x0212, 0x0212, 0x0214, 0x0214, 0x0216, 0x0216, + 0x0218, 0x0218, 0x021a, 0x021a, 0x021c, 0x021c, 0x021e, 0x021e, + 0x0220, 0x0221, 0x0222, 0x0222, 0x0224, 0x0224, 0x0226, 0x0226, + 0x0228, 0x0228, 0x022a, 0x022a, 0x022c, 0x022c, 0x022e, 0x022e, + 0x0230, 0x0230, 0x0232, 0x0232, 0x0234, 0x0235, 0x0236, 0x0237, + 0x0238, 0x0239, 0x023a, 0x023b, 0x023b, 0x023d, 0x023e, 0x023f, + 0x0240, 0x0241, 0x0241, 0x0243, 0x0244, 0x0245, 0x0246, 0x0246, + 0x0248, 0x0248, 0x024a, 0x024a, 0x024c, 0x024c, 0x024e, 0x024e, + 0x2c6f, 0x2c6d, 0x0252, 0x0181, 0x0186, 0x0255, 0x0189, 0x018a, + 0x0258, 0x018f, 0x025a, 0x0190, 0x025c, 0x025d, 0x025e, 0x025f, + 0x0193, 0x0261, 0x0262, 0x0194, 0x0264, 0x0265, 0x0266, 0x0267, + 0x0197, 0x0196, 0x026a, 0x2c62, 0x026c, 0x026d, 0x026e, 0x019c, + 0x0270, 0x2c6e, 0x019d, 0x0273, 0x0274, 0x019f, 0x0276, 0x0277, + 0x0278, 0x0279, 0x027a, 0x027b, 0x027c, 0x2c64, 0x027e, 0x027f, + 0x01a6, 0x0281, 0x0282, 0x01a9, 0x0284, 0x0285, 0x0286, 0x0287, + 0x01ae, 0x0244, 0x01b1, 0x01b2, 0x0245, 0x028d, 0x028e, 0x028f, + 0x0290, 0x0291, 0x01b7, 0x0293, 0x0294, 0x0295, 0x0296, 0x0297, + 0x0298, 0x0299, 0x029a, 0x029b, 0x029c, 0x029d, 0x029e, 0x029f, + 0x02a0, 0x02a1, 0x02a2, 0x02a3, 0x02a4, 0x02a5, 0x02a6, 0x02a7, + 0x02a8, 0x02a9, 0x02aa, 0x02ab, 0x02ac, 0x02ad, 0x02ae, 0x02af, + 0x02b0, 0x02b1, 0x02b2, 0x02b3, 0x02b4, 0x02b5, 0x02b6, 0x02b7, + 0x02b8, 0x02b9, 0x02ba, 0x02bb, 0x02bc, 0x02bd, 0x02be, 0x02bf, + 0x02c0, 0x02c1, 0x02c2, 0x02c3, 0x02c4, 0x02c5, 0x02c6, 0x02c7, + 0x02c8, 0x02c9, 0x02ca, 0x02cb, 0x02cc, 0x02cd, 0x02ce, 0x02cf, + 0x02d0, 0x02d1, 0x02d2, 0x02d3, 0x02d4, 0x02d5, 0x02d6, 0x02d7, + 0x02d8, 0x02d9, 0x02da, 0x02db, 0x02dc, 0x02dd, 0x02de, 0x02df, + 0x02e0, 0x02e1, 0x02e2, 0x02e3, 0x02e4, 0x02e5, 0x02e6, 0x02e7, + 0x02e8, 0x02e9, 0x02ea, 0x02eb, 0x02ec, 0x02ed, 0x02ee, 0x02ef, + 0x02f0, 0x02f1, 0x02f2, 0x02f3, 0x02f4, 0x02f5, 0x02f6, 0x02f7, + 0x02f8, 0x02f9, 0x02fa, 0x02fb, 0x02fc, 0x02fd, 0x02fe, 0x02ff, + 0x0300, 0x0301, 0x0302, 0x0303, 0x0304, 0x0305, 0x0306, 0x0307, + 0x0308, 0x0309, 0x030a, 0x030b, 0x030c, 0x030d, 0x030e, 0x030f, + 0x0310, 0x0311, 0x0312, 0x0313, 0x0314, 0x0315, 0x0316, 0x0317, + 0x0318, 0x0319, 0x031a, 0x031b, 0x031c, 0x031d, 0x031e, 0x031f, + 0x0320, 0x0321, 0x0322, 0x0323, 0x0324, 0x0325, 0x0326, 0x0327, + 0x0328, 0x0329, 0x032a, 0x032b, 0x032c, 0x032d, 0x032e, 0x032f, + 0x0330, 0x0331, 0x0332, 0x0333, 0x0334, 0x0335, 0x0336, 0x0337, + 0x0338, 0x0339, 0x033a, 0x033b, 0x033c, 0x033d, 0x033e, 0x033f, + 0x0340, 0x0341, 0x0342, 0x0343, 0x0344, 0x0399, 0x0346, 0x0347, + 0x0348, 0x0349, 0x034a, 0x034b, 0x034c, 0x034d, 0x034e, 0x034f, + 0x0350, 0x0351, 0x0352, 0x0353, 0x0354, 0x0355, 0x0356, 0x0357, + 0x0358, 0x0359, 0x035a, 0x035b, 0x035c, 0x035d, 0x035e, 0x035f, + 0x0360, 0x0361, 0x0362, 0x0363, 0x0364, 0x0365, 0x0366, 0x0367, + 0x0368, 0x0369, 0x036a, 0x036b, 0x036c, 0x036d, 0x036e, 0x036f, + 0x0370, 0x0370, 0x0372, 0x0372, 0x0374, 0x0375, 0x0376, 0x0376, + 0x0000, 0x0000, 0x037a, 0x03fd, 0x03fe, 0x03ff, 0x037e, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0384, 0x0385, 0x0386, 0x0387, + 0x0388, 0x0389, 0x038a, 0x0000, 0x038c, 0x0000, 0x038e, 0x038f, + 0x0390, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, + 0x0398, 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, + 0x03a0, 0x03a1, 0x0000, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, + 0x03a8, 0x03a9, 0x03aa, 0x03ab, 0x0386, 0x0388, 0x0389, 0x038a, + 0x03b0, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, + 0x0398, 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, + 0x03a0, 0x03a1, 0x03a3, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, + 0x03a8, 0x03a9, 0x03aa, 0x03ab, 0x038c, 0x038e, 0x038f, 0x03cf, + 0x0392, 0x0398, 0x03d2, 0x03d3, 0x03d4, 0x03a6, 0x03a0, 0x03cf, + 0x03d8, 0x03d8, 0x03da, 0x03da, 0x03dc, 0x03dc, 0x03de, 0x03de, + 0x03e0, 0x03e0, 0x03e2, 0x03e2, 0x03e4, 0x03e4, 0x03e6, 0x03e6, + 0x03e8, 0x03e8, 0x03ea, 0x03ea, 0x03ec, 0x03ec, 0x03ee, 0x03ee, + 0x039a, 0x03a1, 0x03f9, 0x03f3, 0x03f4, 0x0395, 0x03f6, 0x03f7, + 0x03f7, 0x03f9, 0x03fa, 0x03fa, 0x03fc, 0x03fd, 0x03fe, 0x03ff, + 0x0400, 0x0401, 0x0402, 0x0403, 0x0404, 0x0405, 0x0406, 0x0407, + 0x0408, 0x0409, 0x040a, 0x040b, 0x040c, 0x040d, 0x040e, 0x040f, + 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, + 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f, + 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, + 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f, + 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, + 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f, + 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, + 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f, + 0x0400, 0x0401, 0x0402, 0x0403, 0x0404, 0x0405, 0x0406, 0x0407, + 0x0408, 0x0409, 0x040a, 0x040b, 0x040c, 0x040d, 0x040e, 0x040f, + 0x0460, 0x0460, 0x0462, 0x0462, 0x0464, 0x0464, 0x0466, 0x0466, + 0x0468, 0x0468, 0x046a, 0x046a, 0x046c, 0x046c, 0x046e, 0x046e, + 0x0470, 0x0470, 0x0472, 0x0472, 0x0474, 0x0474, 0x0476, 0x0476, + 0x0478, 0x0478, 0x047a, 0x047a, 0x047c, 0x047c, 0x047e, 0x047e, + 0x0480, 0x0480, 0x0482, 0x0483, 0x0484, 0x0485, 0x0486, 0x0487, + 0x0488, 0x0489, 0x048a, 0x048a, 0x048c, 0x048c, 0x048e, 0x048e, + 0x0490, 0x0490, 0x0492, 0x0492, 0x0494, 0x0494, 0x0496, 0x0496, + 0x0498, 0x0498, 0x049a, 0x049a, 0x049c, 0x049c, 0x049e, 0x049e, + 0x04a0, 0x04a0, 0x04a2, 0x04a2, 0x04a4, 0x04a4, 0x04a6, 0x04a6, + 0x04a8, 0x04a8, 0x04aa, 0x04aa, 0x04ac, 0x04ac, 0x04ae, 0x04ae, + 0x04b0, 0x04b0, 0x04b2, 0x04b2, 0x04b4, 0x04b4, 0x04b6, 0x04b6, + 0x04b8, 0x04b8, 0x04ba, 0x04ba, 0x04bc, 0x04bc, 0x04be, 0x04be, + 0x04c0, 0x04c1, 0x04c1, 0x04c3, 0x04c3, 0x04c5, 0x04c5, 0x04c7, + 0x04c7, 0x04c9, 0x04c9, 0x04cb, 0x04cb, 0x04cd, 0x04cd, 0x04c0, + 0x04d0, 0x04d0, 0x04d2, 0x04d2, 0x04d4, 0x04d4, 0x04d6, 0x04d6, + 0x04d8, 0x04d8, 0x04da, 0x04da, 0x04dc, 0x04dc, 0x04de, 0x04de, + 0x04e0, 0x04e0, 0x04e2, 0x04e2, 0x04e4, 0x04e4, 0x04e6, 0x04e6, + 0x04e8, 0x04e8, 0x04ea, 0x04ea, 0x04ec, 0x04ec, 0x04ee, 0x04ee, + 0x04f0, 0x04f0, 0x04f2, 0x04f2, 0x04f4, 0x04f4, 0x04f6, 0x04f6, + 0x04f8, 0x04f8, 0x04fa, 0x04fa, 0x04fc, 0x04fc, 0x04fe, 0x04fe, + 0x0500, 0x0500, 0x0502, 0x0502, 0x0504, 0x0504, 0x0506, 0x0506, + 0x0508, 0x0508, 0x050a, 0x050a, 0x050c, 0x050c, 0x050e, 0x050e, + 0x0510, 0x0510, 0x0512, 0x0512, 0x0514, 0x0514, 0x0516, 0x0516, + 0x0518, 0x0518, 0x051a, 0x051a, 0x051c, 0x051c, 0x051e, 0x051e, + 0x0520, 0x0520, 0x0522, 0x0522, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0531, 0x0532, 0x0533, 0x0534, 0x0535, 0x0536, 0x0537, + 0x0538, 0x0539, 0x053a, 0x053b, 0x053c, 0x053d, 0x053e, 0x053f, + 0x0540, 0x0541, 0x0542, 0x0543, 0x0544, 0x0545, 0x0546, 0x0547, + 0x0548, 0x0549, 0x054a, 0x054b, 0x054c, 0x054d, 0x054e, 0x054f, + 0x0550, 0x0551, 0x0552, 0x0553, 0x0554, 0x0555, 0x0556, 0x0000, + 0x0000, 0x0559, 0x055a, 0x055b, 0x055c, 0x055d, 0x055e, 0x055f, + 0x0000, 0x0531, 0x0532, 0x0533, 0x0534, 0x0535, 0x0536, 0x0537, + 0x0538, 0x0539, 0x053a, 0x053b, 0x053c, 0x053d, 0x053e, 0x053f, + 0x0540, 0x0541, 0x0542, 0x0543, 0x0544, 0x0545, 0x0546, 0x0547, + 0x0548, 0x0549, 0x054a, 0x054b, 0x054c, 0x054d, 0x054e, 0x054f, + 0x0550, 0x0551, 0x0552, 0x0553, 0x0554, 0x0555, 0x0556, 0x0587, + 0x0000, 0x0589, 0x058a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0591, 0x0592, 0x0593, 0x0594, 0x0595, 0x0596, 0x0597, + 0x0598, 0x0599, 0x059a, 0x059b, 0x059c, 0x059d, 0x059e, 0x059f, + 0x05a0, 0x05a1, 0x05a2, 0x05a3, 0x05a4, 0x05a5, 0x05a6, 0x05a7, + 0x05a8, 0x05a9, 0x05aa, 0x05ab, 0x05ac, 0x05ad, 0x05ae, 0x05af, + 0x05b0, 0x05b1, 0x05b2, 0x05b3, 0x05b4, 0x05b5, 0x05b6, 0x05b7, + 0x05b8, 0x05b9, 0x05ba, 0x05bb, 0x05bc, 0x05bd, 0x05be, 0x05bf, + 0x05c0, 0x05c1, 0x05c2, 0x05c3, 0x05c4, 0x05c5, 0x05c6, 0x05c7, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x05d0, 0x05d1, 0x05d2, 0x05d3, 0x05d4, 0x05d5, 0x05d6, 0x05d7, + 0x05d8, 0x05d9, 0x05da, 0x05db, 0x05dc, 0x05dd, 0x05de, 0x05df, + 0x05e0, 0x05e1, 0x05e2, 0x05e3, 0x05e4, 0x05e5, 0x05e6, 0x05e7, + 0x05e8, 0x05e9, 0x05ea, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x05f0, 0x05f1, 0x05f2, 0x05f3, 0x05f4, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0600, 0x0601, 0x0602, 0x0603, 0x0000, 0x0000, 0x0606, 0x0607, + 0x0608, 0x0609, 0x060a, 0x060b, 0x060c, 0x060d, 0x060e, 0x060f, + 0x0610, 0x0611, 0x0612, 0x0613, 0x0614, 0x0615, 0x0616, 0x0617, + 0x0618, 0x0619, 0x061a, 0x061b, 0x0000, 0x0000, 0x061e, 0x061f, + 0x0000, 0x0621, 0x0622, 0x0623, 0x0624, 0x0625, 0x0626, 0x0627, + 0x0628, 0x0629, 0x062a, 0x062b, 0x062c, 0x062d, 0x062e, 0x062f, + 0x0630, 0x0631, 0x0632, 0x0633, 0x0634, 0x0635, 0x0636, 0x0637, + 0x0638, 0x0639, 0x063a, 0x063b, 0x063c, 0x063d, 0x063e, 0x063f, + 0x0640, 0x0641, 0x0642, 0x0643, 0x0644, 0x0645, 0x0646, 0x0647, + 0x0648, 0x0649, 0x064a, 0x064b, 0x064c, 0x064d, 0x064e, 0x064f, + 0x0650, 0x0651, 0x0652, 0x0653, 0x0654, 0x0655, 0x0656, 0x0657, + 0x0658, 0x0659, 0x065a, 0x065b, 0x065c, 0x065d, 0x065e, 0x0000, + 0x0660, 0x0661, 0x0662, 0x0663, 0x0664, 0x0665, 0x0666, 0x0667, + 0x0668, 0x0669, 0x066a, 0x066b, 0x066c, 0x066d, 0x066e, 0x066f, + 0x0670, 0x0671, 0x0672, 0x0673, 0x0674, 0x0675, 0x0676, 0x0677, + 0x0678, 0x0679, 0x067a, 0x067b, 0x067c, 0x067d, 0x067e, 0x067f, + 0x0680, 0x0681, 0x0682, 0x0683, 0x0684, 0x0685, 0x0686, 0x0687, + 0x0688, 0x0689, 0x068a, 0x068b, 0x068c, 0x068d, 0x068e, 0x068f, + 0x0690, 0x0691, 0x0692, 0x0693, 0x0694, 0x0695, 0x0696, 0x0697, + 0x0698, 0x0699, 0x069a, 0x069b, 0x069c, 0x069d, 0x069e, 0x069f, + 0x06a0, 0x06a1, 0x06a2, 0x06a3, 0x06a4, 0x06a5, 0x06a6, 0x06a7, + 0x06a8, 0x06a9, 0x06aa, 0x06ab, 0x06ac, 0x06ad, 0x06ae, 0x06af, + 0x06b0, 0x06b1, 0x06b2, 0x06b3, 0x06b4, 0x06b5, 0x06b6, 0x06b7, + 0x06b8, 0x06b9, 0x06ba, 0x06bb, 0x06bc, 0x06bd, 0x06be, 0x06bf, + 0x06c0, 0x06c1, 0x06c2, 0x06c3, 0x06c4, 0x06c5, 0x06c6, 0x06c7, + 0x06c8, 0x06c9, 0x06ca, 0x06cb, 0x06cc, 0x06cd, 0x06ce, 0x06cf, + 0x06d0, 0x06d1, 0x06d2, 0x06d3, 0x06d4, 0x06d5, 0x06d6, 0x06d7, + 0x06d8, 0x06d9, 0x06da, 0x06db, 0x06dc, 0x06dd, 0x06de, 0x06df, + 0x06e0, 0x06e1, 0x06e2, 0x06e3, 0x06e4, 0x06e5, 0x06e6, 0x06e7, + 0x06e8, 0x06e9, 0x06ea, 0x06eb, 0x06ec, 0x06ed, 0x06ee, 0x06ef, + 0x06f0, 0x06f1, 0x06f2, 0x06f3, 0x06f4, 0x06f5, 0x06f6, 0x06f7, + 0x06f8, 0x06f9, 0x06fa, 0x06fb, 0x06fc, 0x06fd, 0x06fe, 0x06ff, + 0x0700, 0x0701, 0x0702, 0x0703, 0x0704, 0x0705, 0x0706, 0x0707, + 0x0708, 0x0709, 0x070a, 0x070b, 0x070c, 0x070d, 0x0000, 0x070f, + 0x0710, 0x0711, 0x0712, 0x0713, 0x0714, 0x0715, 0x0716, 0x0717, + 0x0718, 0x0719, 0x071a, 0x071b, 0x071c, 0x071d, 0x071e, 0x071f, + 0x0720, 0x0721, 0x0722, 0x0723, 0x0724, 0x0725, 0x0726, 0x0727, + 0x0728, 0x0729, 0x072a, 0x072b, 0x072c, 0x072d, 0x072e, 0x072f, + 0x0730, 0x0731, 0x0732, 0x0733, 0x0734, 0x0735, 0x0736, 0x0737, + 0x0738, 0x0739, 0x073a, 0x073b, 0x073c, 0x073d, 0x073e, 0x073f, + 0x0740, 0x0741, 0x0742, 0x0743, 0x0744, 0x0745, 0x0746, 0x0747, + 0x0748, 0x0749, 0x074a, 0x0000, 0x0000, 0x074d, 0x074e, 0x074f, + 0x0750, 0x0751, 0x0752, 0x0753, 0x0754, 0x0755, 0x0756, 0x0757, + 0x0758, 0x0759, 0x075a, 0x075b, 0x075c, 0x075d, 0x075e, 0x075f, + 0x0760, 0x0761, 0x0762, 0x0763, 0x0764, 0x0765, 0x0766, 0x0767, + 0x0768, 0x0769, 0x076a, 0x076b, 0x076c, 0x076d, 0x076e, 0x076f, + 0x0770, 0x0771, 0x0772, 0x0773, 0x0774, 0x0775, 0x0776, 0x0777, + 0x0778, 0x0779, 0x077a, 0x077b, 0x077c, 0x077d, 0x077e, 0x077f, + 0x0780, 0x0781, 0x0782, 0x0783, 0x0784, 0x0785, 0x0786, 0x0787, + 0x0788, 0x0789, 0x078a, 0x078b, 0x078c, 0x078d, 0x078e, 0x078f, + 0x0790, 0x0791, 0x0792, 0x0793, 0x0794, 0x0795, 0x0796, 0x0797, + 0x0798, 0x0799, 0x079a, 0x079b, 0x079c, 0x079d, 0x079e, 0x079f, + 0x07a0, 0x07a1, 0x07a2, 0x07a3, 0x07a4, 0x07a5, 0x07a6, 0x07a7, + 0x07a8, 0x07a9, 0x07aa, 0x07ab, 0x07ac, 0x07ad, 0x07ae, 0x07af, + 0x07b0, 0x07b1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x07c0, 0x07c1, 0x07c2, 0x07c3, 0x07c4, 0x07c5, 0x07c6, 0x07c7, + 0x07c8, 0x07c9, 0x07ca, 0x07cb, 0x07cc, 0x07cd, 0x07ce, 0x07cf, + 0x07d0, 0x07d1, 0x07d2, 0x07d3, 0x07d4, 0x07d5, 0x07d6, 0x07d7, + 0x07d8, 0x07d9, 0x07da, 0x07db, 0x07dc, 0x07dd, 0x07de, 0x07df, + 0x07e0, 0x07e1, 0x07e2, 0x07e3, 0x07e4, 0x07e5, 0x07e6, 0x07e7, + 0x07e8, 0x07e9, 0x07ea, 0x07eb, 0x07ec, 0x07ed, 0x07ee, 0x07ef, + 0x07f0, 0x07f1, 0x07f2, 0x07f3, 0x07f4, 0x07f5, 0x07f6, 0x07f7, + 0x07f8, 0x07f9, 0x07fa, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0901, 0x0902, 0x0903, 0x0904, 0x0905, 0x0906, 0x0907, + 0x0908, 0x0909, 0x090a, 0x090b, 0x090c, 0x090d, 0x090e, 0x090f, + 0x0910, 0x0911, 0x0912, 0x0913, 0x0914, 0x0915, 0x0916, 0x0917, + 0x0918, 0x0919, 0x091a, 0x091b, 0x091c, 0x091d, 0x091e, 0x091f, + 0x0920, 0x0921, 0x0922, 0x0923, 0x0924, 0x0925, 0x0926, 0x0927, + 0x0928, 0x0929, 0x092a, 0x092b, 0x092c, 0x092d, 0x092e, 0x092f, + 0x0930, 0x0931, 0x0932, 0x0933, 0x0934, 0x0935, 0x0936, 0x0937, + 0x0938, 0x0939, 0x0000, 0x0000, 0x093c, 0x093d, 0x093e, 0x093f, + 0x0940, 0x0941, 0x0942, 0x0943, 0x0944, 0x0945, 0x0946, 0x0947, + 0x0948, 0x0949, 0x094a, 0x094b, 0x094c, 0x094d, 0x0000, 0x0000, + 0x0950, 0x0951, 0x0952, 0x0953, 0x0954, 0x0000, 0x0000, 0x0000, + 0x0958, 0x0959, 0x095a, 0x095b, 0x095c, 0x095d, 0x095e, 0x095f, + 0x0960, 0x0961, 0x0962, 0x0963, 0x0964, 0x0965, 0x0966, 0x0967, + 0x0968, 0x0969, 0x096a, 0x096b, 0x096c, 0x096d, 0x096e, 0x096f, + 0x0970, 0x0971, 0x0972, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x097b, 0x097c, 0x097d, 0x097e, 0x097f, + 0x0000, 0x0981, 0x0982, 0x0983, 0x0000, 0x0985, 0x0986, 0x0987, + 0x0988, 0x0989, 0x098a, 0x098b, 0x098c, 0x0000, 0x0000, 0x098f, + 0x0990, 0x0000, 0x0000, 0x0993, 0x0994, 0x0995, 0x0996, 0x0997, + 0x0998, 0x0999, 0x099a, 0x099b, 0x099c, 0x099d, 0x099e, 0x099f, + 0x09a0, 0x09a1, 0x09a2, 0x09a3, 0x09a4, 0x09a5, 0x09a6, 0x09a7, + 0x09a8, 0x0000, 0x09aa, 0x09ab, 0x09ac, 0x09ad, 0x09ae, 0x09af, + 0x09b0, 0x0000, 0x09b2, 0x0000, 0x0000, 0x0000, 0x09b6, 0x09b7, + 0x09b8, 0x09b9, 0x0000, 0x0000, 0x09bc, 0x09bd, 0x09be, 0x09bf, + 0x09c0, 0x09c1, 0x09c2, 0x09c3, 0x09c4, 0x0000, 0x0000, 0x09c7, + 0x09c8, 0x0000, 0x0000, 0x09cb, 0x09cc, 0x09cd, 0x09ce, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x09d7, + 0x0000, 0x0000, 0x0000, 0x0000, 0x09dc, 0x09dd, 0x0000, 0x09df, + 0x09e0, 0x09e1, 0x09e2, 0x09e3, 0x0000, 0x0000, 0x09e6, 0x09e7, + 0x09e8, 0x09e9, 0x09ea, 0x09eb, 0x09ec, 0x09ed, 0x09ee, 0x09ef, + 0x09f0, 0x09f1, 0x09f2, 0x09f3, 0x09f4, 0x09f5, 0x09f6, 0x09f7, + 0x09f8, 0x09f9, 0x09fa, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0a01, 0x0a02, 0x0a03, 0x0000, 0x0a05, 0x0a06, 0x0a07, + 0x0a08, 0x0a09, 0x0a0a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0a0f, + 0x0a10, 0x0000, 0x0000, 0x0a13, 0x0a14, 0x0a15, 0x0a16, 0x0a17, + 0x0a18, 0x0a19, 0x0a1a, 0x0a1b, 0x0a1c, 0x0a1d, 0x0a1e, 0x0a1f, + 0x0a20, 0x0a21, 0x0a22, 0x0a23, 0x0a24, 0x0a25, 0x0a26, 0x0a27, + 0x0a28, 0x0000, 0x0a2a, 0x0a2b, 0x0a2c, 0x0a2d, 0x0a2e, 0x0a2f, + 0x0a30, 0x0000, 0x0a32, 0x0a33, 0x0000, 0x0a35, 0x0a36, 0x0000, + 0x0a38, 0x0a39, 0x0000, 0x0000, 0x0a3c, 0x0000, 0x0a3e, 0x0a3f, + 0x0a40, 0x0a41, 0x0a42, 0x0000, 0x0000, 0x0000, 0x0000, 0x0a47, + 0x0a48, 0x0000, 0x0000, 0x0a4b, 0x0a4c, 0x0a4d, 0x0000, 0x0000, + 0x0000, 0x0a51, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0a59, 0x0a5a, 0x0a5b, 0x0a5c, 0x0000, 0x0a5e, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0a66, 0x0a67, + 0x0a68, 0x0a69, 0x0a6a, 0x0a6b, 0x0a6c, 0x0a6d, 0x0a6e, 0x0a6f, + 0x0a70, 0x0a71, 0x0a72, 0x0a73, 0x0a74, 0x0a75, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0a81, 0x0a82, 0x0a83, 0x0000, 0x0a85, 0x0a86, 0x0a87, + 0x0a88, 0x0a89, 0x0a8a, 0x0a8b, 0x0a8c, 0x0a8d, 0x0000, 0x0a8f, + 0x0a90, 0x0a91, 0x0000, 0x0a93, 0x0a94, 0x0a95, 0x0a96, 0x0a97, + 0x0a98, 0x0a99, 0x0a9a, 0x0a9b, 0x0a9c, 0x0a9d, 0x0a9e, 0x0a9f, + 0x0aa0, 0x0aa1, 0x0aa2, 0x0aa3, 0x0aa4, 0x0aa5, 0x0aa6, 0x0aa7, + 0x0aa8, 0x0000, 0x0aaa, 0x0aab, 0x0aac, 0x0aad, 0x0aae, 0x0aaf, + 0x0ab0, 0x0000, 0x0ab2, 0x0ab3, 0x0000, 0x0ab5, 0x0ab6, 0x0ab7, + 0x0ab8, 0x0ab9, 0x0000, 0x0000, 0x0abc, 0x0abd, 0x0abe, 0x0abf, + 0x0ac0, 0x0ac1, 0x0ac2, 0x0ac3, 0x0ac4, 0x0ac5, 0x0000, 0x0ac7, + 0x0ac8, 0x0ac9, 0x0000, 0x0acb, 0x0acc, 0x0acd, 0x0000, 0x0000, + 0x0ad0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0ae0, 0x0ae1, 0x0ae2, 0x0ae3, 0x0000, 0x0000, 0x0ae6, 0x0ae7, + 0x0ae8, 0x0ae9, 0x0aea, 0x0aeb, 0x0aec, 0x0aed, 0x0aee, 0x0aef, + 0x0000, 0x0af1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0b01, 0x0b02, 0x0b03, 0x0000, 0x0b05, 0x0b06, 0x0b07, + 0x0b08, 0x0b09, 0x0b0a, 0x0b0b, 0x0b0c, 0x0000, 0x0000, 0x0b0f, + 0x0b10, 0x0000, 0x0000, 0x0b13, 0x0b14, 0x0b15, 0x0b16, 0x0b17, + 0x0b18, 0x0b19, 0x0b1a, 0x0b1b, 0x0b1c, 0x0b1d, 0x0b1e, 0x0b1f, + 0x0b20, 0x0b21, 0x0b22, 0x0b23, 0x0b24, 0x0b25, 0x0b26, 0x0b27, + 0x0b28, 0x0000, 0x0b2a, 0x0b2b, 0x0b2c, 0x0b2d, 0x0b2e, 0x0b2f, + 0x0b30, 0x0000, 0x0b32, 0x0b33, 0x0000, 0x0b35, 0x0b36, 0x0b37, + 0x0b38, 0x0b39, 0x0000, 0x0000, 0x0b3c, 0x0b3d, 0x0b3e, 0x0b3f, + 0x0b40, 0x0b41, 0x0b42, 0x0b43, 0x0b44, 0x0000, 0x0000, 0x0b47, + 0x0b48, 0x0000, 0x0000, 0x0b4b, 0x0b4c, 0x0b4d, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0b56, 0x0b57, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0b5c, 0x0b5d, 0x0000, 0x0b5f, + 0x0b60, 0x0b61, 0x0b62, 0x0b63, 0x0000, 0x0000, 0x0b66, 0x0b67, + 0x0b68, 0x0b69, 0x0b6a, 0x0b6b, 0x0b6c, 0x0b6d, 0x0b6e, 0x0b6f, + 0x0b70, 0x0b71, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0b82, 0x0b83, 0x0000, 0x0b85, 0x0b86, 0x0b87, + 0x0b88, 0x0b89, 0x0b8a, 0x0000, 0x0000, 0x0000, 0x0b8e, 0x0b8f, + 0x0b90, 0x0000, 0x0b92, 0x0b93, 0x0b94, 0x0b95, 0x0000, 0x0000, + 0x0000, 0x0b99, 0x0b9a, 0x0000, 0x0b9c, 0x0000, 0x0b9e, 0x0b9f, + 0x0000, 0x0000, 0x0000, 0x0ba3, 0x0ba4, 0x0000, 0x0000, 0x0000, + 0x0ba8, 0x0ba9, 0x0baa, 0x0000, 0x0000, 0x0000, 0x0bae, 0x0baf, + 0x0bb0, 0x0bb1, 0x0bb2, 0x0bb3, 0x0bb4, 0x0bb5, 0x0bb6, 0x0bb7, + 0x0bb8, 0x0bb9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0bbe, 0x0bbf, + 0x0bc0, 0x0bc1, 0x0bc2, 0x0000, 0x0000, 0x0000, 0x0bc6, 0x0bc7, + 0x0bc8, 0x0000, 0x0bca, 0x0bcb, 0x0bcc, 0x0bcd, 0x0000, 0x0000, + 0x0bd0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0bd7, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0be6, 0x0be7, + 0x0be8, 0x0be9, 0x0bea, 0x0beb, 0x0bec, 0x0bed, 0x0bee, 0x0bef, + 0x0bf0, 0x0bf1, 0x0bf2, 0x0bf3, 0x0bf4, 0x0bf5, 0x0bf6, 0x0bf7, + 0x0bf8, 0x0bf9, 0x0bfa, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0c01, 0x0c02, 0x0c03, 0x0000, 0x0c05, 0x0c06, 0x0c07, + 0x0c08, 0x0c09, 0x0c0a, 0x0c0b, 0x0c0c, 0x0000, 0x0c0e, 0x0c0f, + 0x0c10, 0x0000, 0x0c12, 0x0c13, 0x0c14, 0x0c15, 0x0c16, 0x0c17, + 0x0c18, 0x0c19, 0x0c1a, 0x0c1b, 0x0c1c, 0x0c1d, 0x0c1e, 0x0c1f, + 0x0c20, 0x0c21, 0x0c22, 0x0c23, 0x0c24, 0x0c25, 0x0c26, 0x0c27, + 0x0c28, 0x0000, 0x0c2a, 0x0c2b, 0x0c2c, 0x0c2d, 0x0c2e, 0x0c2f, + 0x0c30, 0x0c31, 0x0c32, 0x0c33, 0x0000, 0x0c35, 0x0c36, 0x0c37, + 0x0c38, 0x0c39, 0x0000, 0x0000, 0x0000, 0x0c3d, 0x0c3e, 0x0c3f, + 0x0c40, 0x0c41, 0x0c42, 0x0c43, 0x0c44, 0x0000, 0x0c46, 0x0c47, + 0x0c48, 0x0000, 0x0c4a, 0x0c4b, 0x0c4c, 0x0c4d, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0c55, 0x0c56, 0x0000, + 0x0c58, 0x0c59, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0c60, 0x0c61, 0x0c62, 0x0c63, 0x0000, 0x0000, 0x0c66, 0x0c67, + 0x0c68, 0x0c69, 0x0c6a, 0x0c6b, 0x0c6c, 0x0c6d, 0x0c6e, 0x0c6f, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0c78, 0x0c79, 0x0c7a, 0x0c7b, 0x0c7c, 0x0c7d, 0x0c7e, 0x0c7f, + 0x0000, 0x0000, 0x0c82, 0x0c83, 0x0000, 0x0c85, 0x0c86, 0x0c87, + 0x0c88, 0x0c89, 0x0c8a, 0x0c8b, 0x0c8c, 0x0000, 0x0c8e, 0x0c8f, + 0x0c90, 0x0000, 0x0c92, 0x0c93, 0x0c94, 0x0c95, 0x0c96, 0x0c97, + 0x0c98, 0x0c99, 0x0c9a, 0x0c9b, 0x0c9c, 0x0c9d, 0x0c9e, 0x0c9f, + 0x0ca0, 0x0ca1, 0x0ca2, 0x0ca3, 0x0ca4, 0x0ca5, 0x0ca6, 0x0ca7, + 0x0ca8, 0x0000, 0x0caa, 0x0cab, 0x0cac, 0x0cad, 0x0cae, 0x0caf, + 0x0cb0, 0x0cb1, 0x0cb2, 0x0cb3, 0x0000, 0x0cb5, 0x0cb6, 0x0cb7, + 0x0cb8, 0x0cb9, 0x0000, 0x0000, 0x0cbc, 0x0cbd, 0x0cbe, 0x0cbf, + 0x0cc0, 0x0cc1, 0x0cc2, 0x0cc3, 0x0cc4, 0x0000, 0x0cc6, 0x0cc7, + 0x0cc8, 0x0000, 0x0cca, 0x0ccb, 0x0ccc, 0x0ccd, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0cd5, 0x0cd6, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0cde, 0x0000, + 0x0ce0, 0x0ce1, 0x0ce2, 0x0ce3, 0x0000, 0x0000, 0x0ce6, 0x0ce7, + 0x0ce8, 0x0ce9, 0x0cea, 0x0ceb, 0x0cec, 0x0ced, 0x0cee, 0x0cef, + 0x0000, 0x0cf1, 0x0cf2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0d02, 0x0d03, 0x0000, 0x0d05, 0x0d06, 0x0d07, + 0x0d08, 0x0d09, 0x0d0a, 0x0d0b, 0x0d0c, 0x0000, 0x0d0e, 0x0d0f, + 0x0d10, 0x0000, 0x0d12, 0x0d13, 0x0d14, 0x0d15, 0x0d16, 0x0d17, + 0x0d18, 0x0d19, 0x0d1a, 0x0d1b, 0x0d1c, 0x0d1d, 0x0d1e, 0x0d1f, + 0x0d20, 0x0d21, 0x0d22, 0x0d23, 0x0d24, 0x0d25, 0x0d26, 0x0d27, + 0x0d28, 0x0000, 0x0d2a, 0x0d2b, 0x0d2c, 0x0d2d, 0x0d2e, 0x0d2f, + 0x0d30, 0x0d31, 0x0d32, 0x0d33, 0x0d34, 0x0d35, 0x0d36, 0x0d37, + 0x0d38, 0x0d39, 0x0000, 0x0000, 0x0000, 0x0d3d, 0x0d3e, 0x0d3f, + 0x0d40, 0x0d41, 0x0d42, 0x0d43, 0x0d44, 0x0000, 0x0d46, 0x0d47, + 0x0d48, 0x0000, 0x0d4a, 0x0d4b, 0x0d4c, 0x0d4d, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0d57, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0d60, 0x0d61, 0x0d62, 0x0d63, 0x0000, 0x0000, 0x0d66, 0x0d67, + 0x0d68, 0x0d69, 0x0d6a, 0x0d6b, 0x0d6c, 0x0d6d, 0x0d6e, 0x0d6f, + 0x0d70, 0x0d71, 0x0d72, 0x0d73, 0x0d74, 0x0d75, 0x0000, 0x0000, + 0x0000, 0x0d79, 0x0d7a, 0x0d7b, 0x0d7c, 0x0d7d, 0x0d7e, 0x0d7f, + 0x0000, 0x0000, 0x0d82, 0x0d83, 0x0000, 0x0d85, 0x0d86, 0x0d87, + 0x0d88, 0x0d89, 0x0d8a, 0x0d8b, 0x0d8c, 0x0d8d, 0x0d8e, 0x0d8f, + 0x0d90, 0x0d91, 0x0d92, 0x0d93, 0x0d94, 0x0d95, 0x0d96, 0x0000, + 0x0000, 0x0000, 0x0d9a, 0x0d9b, 0x0d9c, 0x0d9d, 0x0d9e, 0x0d9f, + 0x0da0, 0x0da1, 0x0da2, 0x0da3, 0x0da4, 0x0da5, 0x0da6, 0x0da7, + 0x0da8, 0x0da9, 0x0daa, 0x0dab, 0x0dac, 0x0dad, 0x0dae, 0x0daf, + 0x0db0, 0x0db1, 0x0000, 0x0db3, 0x0db4, 0x0db5, 0x0db6, 0x0db7, + 0x0db8, 0x0db9, 0x0dba, 0x0dbb, 0x0000, 0x0dbd, 0x0000, 0x0000, + 0x0dc0, 0x0dc1, 0x0dc2, 0x0dc3, 0x0dc4, 0x0dc5, 0x0dc6, 0x0000, + 0x0000, 0x0000, 0x0dca, 0x0000, 0x0000, 0x0000, 0x0000, 0x0dcf, + 0x0dd0, 0x0dd1, 0x0dd2, 0x0dd3, 0x0dd4, 0x0000, 0x0dd6, 0x0000, + 0x0dd8, 0x0dd9, 0x0dda, 0x0ddb, 0x0ddc, 0x0ddd, 0x0dde, 0x0ddf, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0df2, 0x0df3, 0x0df4, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0e01, 0x0e02, 0x0e03, 0x0e04, 0x0e05, 0x0e06, 0x0e07, + 0x0e08, 0x0e09, 0x0e0a, 0x0e0b, 0x0e0c, 0x0e0d, 0x0e0e, 0x0e0f, + 0x0e10, 0x0e11, 0x0e12, 0x0e13, 0x0e14, 0x0e15, 0x0e16, 0x0e17, + 0x0e18, 0x0e19, 0x0e1a, 0x0e1b, 0x0e1c, 0x0e1d, 0x0e1e, 0x0e1f, + 0x0e20, 0x0e21, 0x0e22, 0x0e23, 0x0e24, 0x0e25, 0x0e26, 0x0e27, + 0x0e28, 0x0e29, 0x0e2a, 0x0e2b, 0x0e2c, 0x0e2d, 0x0e2e, 0x0e2f, + 0x0e30, 0x0e31, 0x0e32, 0x0e33, 0x0e34, 0x0e35, 0x0e36, 0x0e37, + 0x0e38, 0x0e39, 0x0e3a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0e3f, + 0x0e40, 0x0e41, 0x0e42, 0x0e43, 0x0e44, 0x0e45, 0x0e46, 0x0e47, + 0x0e48, 0x0e49, 0x0e4a, 0x0e4b, 0x0e4c, 0x0e4d, 0x0e4e, 0x0e4f, + 0x0e50, 0x0e51, 0x0e52, 0x0e53, 0x0e54, 0x0e55, 0x0e56, 0x0e57, + 0x0e58, 0x0e59, 0x0e5a, 0x0e5b, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0e81, 0x0e82, 0x0000, 0x0e84, 0x0000, 0x0000, 0x0e87, + 0x0e88, 0x0000, 0x0e8a, 0x0000, 0x0000, 0x0e8d, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0e94, 0x0e95, 0x0e96, 0x0e97, + 0x0000, 0x0e99, 0x0e9a, 0x0e9b, 0x0e9c, 0x0e9d, 0x0e9e, 0x0e9f, + 0x0000, 0x0ea1, 0x0ea2, 0x0ea3, 0x0000, 0x0ea5, 0x0000, 0x0ea7, + 0x0000, 0x0000, 0x0eaa, 0x0eab, 0x0000, 0x0ead, 0x0eae, 0x0eaf, + 0x0eb0, 0x0eb1, 0x0eb2, 0x0eb3, 0x0eb4, 0x0eb5, 0x0eb6, 0x0eb7, + 0x0eb8, 0x0eb9, 0x0000, 0x0ebb, 0x0ebc, 0x0ebd, 0x0000, 0x0000, + 0x0ec0, 0x0ec1, 0x0ec2, 0x0ec3, 0x0ec4, 0x0000, 0x0ec6, 0x0000, + 0x0ec8, 0x0ec9, 0x0eca, 0x0ecb, 0x0ecc, 0x0ecd, 0x0000, 0x0000, + 0x0ed0, 0x0ed1, 0x0ed2, 0x0ed3, 0x0ed4, 0x0ed5, 0x0ed6, 0x0ed7, + 0x0ed8, 0x0ed9, 0x0000, 0x0000, 0x0edc, 0x0edd, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0f00, 0x0f01, 0x0f02, 0x0f03, 0x0f04, 0x0f05, 0x0f06, 0x0f07, + 0x0f08, 0x0f09, 0x0f0a, 0x0f0b, 0x0f0c, 0x0f0d, 0x0f0e, 0x0f0f, + 0x0f10, 0x0f11, 0x0f12, 0x0f13, 0x0f14, 0x0f15, 0x0f16, 0x0f17, + 0x0f18, 0x0f19, 0x0f1a, 0x0f1b, 0x0f1c, 0x0f1d, 0x0f1e, 0x0f1f, + 0x0f20, 0x0f21, 0x0f22, 0x0f23, 0x0f24, 0x0f25, 0x0f26, 0x0f27, + 0x0f28, 0x0f29, 0x0f2a, 0x0f2b, 0x0f2c, 0x0f2d, 0x0f2e, 0x0f2f, + 0x0f30, 0x0f31, 0x0f32, 0x0f33, 0x0f34, 0x0f35, 0x0f36, 0x0f37, + 0x0f38, 0x0f39, 0x0f3a, 0x0f3b, 0x0f3c, 0x0f3d, 0x0f3e, 0x0f3f, + 0x0f40, 0x0f41, 0x0f42, 0x0f43, 0x0f44, 0x0f45, 0x0f46, 0x0f47, + 0x0000, 0x0f49, 0x0f4a, 0x0f4b, 0x0f4c, 0x0f4d, 0x0f4e, 0x0f4f, + 0x0f50, 0x0f51, 0x0f52, 0x0f53, 0x0f54, 0x0f55, 0x0f56, 0x0f57, + 0x0f58, 0x0f59, 0x0f5a, 0x0f5b, 0x0f5c, 0x0f5d, 0x0f5e, 0x0f5f, + 0x0f60, 0x0f61, 0x0f62, 0x0f63, 0x0f64, 0x0f65, 0x0f66, 0x0f67, + 0x0f68, 0x0f69, 0x0f6a, 0x0f6b, 0x0f6c, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0f71, 0x0f72, 0x0f73, 0x0f74, 0x0f75, 0x0f76, 0x0f77, + 0x0f78, 0x0f79, 0x0f7a, 0x0f7b, 0x0f7c, 0x0f7d, 0x0f7e, 0x0f7f, + 0x0f80, 0x0f81, 0x0f82, 0x0f83, 0x0f84, 0x0f85, 0x0f86, 0x0f87, + 0x0f88, 0x0f89, 0x0f8a, 0x0f8b, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0f90, 0x0f91, 0x0f92, 0x0f93, 0x0f94, 0x0f95, 0x0f96, 0x0f97, + 0x0000, 0x0f99, 0x0f9a, 0x0f9b, 0x0f9c, 0x0f9d, 0x0f9e, 0x0f9f, + 0x0fa0, 0x0fa1, 0x0fa2, 0x0fa3, 0x0fa4, 0x0fa5, 0x0fa6, 0x0fa7, + 0x0fa8, 0x0fa9, 0x0faa, 0x0fab, 0x0fac, 0x0fad, 0x0fae, 0x0faf, + 0x0fb0, 0x0fb1, 0x0fb2, 0x0fb3, 0x0fb4, 0x0fb5, 0x0fb6, 0x0fb7, + 0x0fb8, 0x0fb9, 0x0fba, 0x0fbb, 0x0fbc, 0x0000, 0x0fbe, 0x0fbf, + 0x0fc0, 0x0fc1, 0x0fc2, 0x0fc3, 0x0fc4, 0x0fc5, 0x0fc6, 0x0fc7, + 0x0fc8, 0x0fc9, 0x0fca, 0x0fcb, 0x0fcc, 0x0000, 0x0fce, 0x0fcf, + 0x0fd0, 0x0fd1, 0x0fd2, 0x0fd3, 0x0fd4, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x1000, 0x1001, 0x1002, 0x1003, 0x1004, 0x1005, 0x1006, 0x1007, + 0x1008, 0x1009, 0x100a, 0x100b, 0x100c, 0x100d, 0x100e, 0x100f, + 0x1010, 0x1011, 0x1012, 0x1013, 0x1014, 0x1015, 0x1016, 0x1017, + 0x1018, 0x1019, 0x101a, 0x101b, 0x101c, 0x101d, 0x101e, 0x101f, + 0x1020, 0x1021, 0x1022, 0x1023, 0x1024, 0x1025, 0x1026, 0x1027, + 0x1028, 0x1029, 0x102a, 0x102b, 0x102c, 0x102d, 0x102e, 0x102f, + 0x1030, 0x1031, 0x1032, 0x1033, 0x1034, 0x1035, 0x1036, 0x1037, + 0x1038, 0x1039, 0x103a, 0x103b, 0x103c, 0x103d, 0x103e, 0x103f, + 0x1040, 0x1041, 0x1042, 0x1043, 0x1044, 0x1045, 0x1046, 0x1047, + 0x1048, 0x1049, 0x104a, 0x104b, 0x104c, 0x104d, 0x104e, 0x104f, + 0x1050, 0x1051, 0x1052, 0x1053, 0x1054, 0x1055, 0x1056, 0x1057, + 0x1058, 0x1059, 0x105a, 0x105b, 0x105c, 0x105d, 0x105e, 0x105f, + 0x1060, 0x1061, 0x1062, 0x1063, 0x1064, 0x1065, 0x1066, 0x1067, + 0x1068, 0x1069, 0x106a, 0x106b, 0x106c, 0x106d, 0x106e, 0x106f, + 0x1070, 0x1071, 0x1072, 0x1073, 0x1074, 0x1075, 0x1076, 0x1077, + 0x1078, 0x1079, 0x107a, 0x107b, 0x107c, 0x107d, 0x107e, 0x107f, + 0x1080, 0x1081, 0x1082, 0x1083, 0x1084, 0x1085, 0x1086, 0x1087, + 0x1088, 0x1089, 0x108a, 0x108b, 0x108c, 0x108d, 0x108e, 0x108f, + 0x1090, 0x1091, 0x1092, 0x1093, 0x1094, 0x1095, 0x1096, 0x1097, + 0x1098, 0x1099, 0x0000, 0x0000, 0x0000, 0x0000, 0x109e, 0x109f, + 0x10a0, 0x10a1, 0x10a2, 0x10a3, 0x10a4, 0x10a5, 0x10a6, 0x10a7, + 0x10a8, 0x10a9, 0x10aa, 0x10ab, 0x10ac, 0x10ad, 0x10ae, 0x10af, + 0x10b0, 0x10b1, 0x10b2, 0x10b3, 0x10b4, 0x10b5, 0x10b6, 0x10b7, + 0x10b8, 0x10b9, 0x10ba, 0x10bb, 0x10bc, 0x10bd, 0x10be, 0x10bf, + 0x10c0, 0x10c1, 0x10c2, 0x10c3, 0x10c4, 0x10c5, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x10d0, 0x10d1, 0x10d2, 0x10d3, 0x10d4, 0x10d5, 0x10d6, 0x10d7, + 0x10d8, 0x10d9, 0x10da, 0x10db, 0x10dc, 0x10dd, 0x10de, 0x10df, + 0x10e0, 0x10e1, 0x10e2, 0x10e3, 0x10e4, 0x10e5, 0x10e6, 0x10e7, + 0x10e8, 0x10e9, 0x10ea, 0x10eb, 0x10ec, 0x10ed, 0x10ee, 0x10ef, + 0x10f0, 0x10f1, 0x10f2, 0x10f3, 0x10f4, 0x10f5, 0x10f6, 0x10f7, + 0x10f8, 0x10f9, 0x10fa, 0x10fb, 0x10fc, 0x0000, 0x0000, 0x0000, + 0x1100, 0x1101, 0x1102, 0x1103, 0x1104, 0x1105, 0x1106, 0x1107, + 0x1108, 0x1109, 0x110a, 0x110b, 0x110c, 0x110d, 0x110e, 0x110f, + 0x1110, 0x1111, 0x1112, 0x1113, 0x1114, 0x1115, 0x1116, 0x1117, + 0x1118, 0x1119, 0x111a, 0x111b, 0x111c, 0x111d, 0x111e, 0x111f, + 0x1120, 0x1121, 0x1122, 0x1123, 0x1124, 0x1125, 0x1126, 0x1127, + 0x1128, 0x1129, 0x112a, 0x112b, 0x112c, 0x112d, 0x112e, 0x112f, + 0x1130, 0x1131, 0x1132, 0x1133, 0x1134, 0x1135, 0x1136, 0x1137, + 0x1138, 0x1139, 0x113a, 0x113b, 0x113c, 0x113d, 0x113e, 0x113f, + 0x1140, 0x1141, 0x1142, 0x1143, 0x1144, 0x1145, 0x1146, 0x1147, + 0x1148, 0x1149, 0x114a, 0x114b, 0x114c, 0x114d, 0x114e, 0x114f, + 0x1150, 0x1151, 0x1152, 0x1153, 0x1154, 0x1155, 0x1156, 0x1157, + 0x1158, 0x1159, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x115f, + 0x1160, 0x1161, 0x1162, 0x1163, 0x1164, 0x1165, 0x1166, 0x1167, + 0x1168, 0x1169, 0x116a, 0x116b, 0x116c, 0x116d, 0x116e, 0x116f, + 0x1170, 0x1171, 0x1172, 0x1173, 0x1174, 0x1175, 0x1176, 0x1177, + 0x1178, 0x1179, 0x117a, 0x117b, 0x117c, 0x117d, 0x117e, 0x117f, + 0x1180, 0x1181, 0x1182, 0x1183, 0x1184, 0x1185, 0x1186, 0x1187, + 0x1188, 0x1189, 0x118a, 0x118b, 0x118c, 0x118d, 0x118e, 0x118f, + 0x1190, 0x1191, 0x1192, 0x1193, 0x1194, 0x1195, 0x1196, 0x1197, + 0x1198, 0x1199, 0x119a, 0x119b, 0x119c, 0x119d, 0x119e, 0x119f, + 0x11a0, 0x11a1, 0x11a2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x11a8, 0x11a9, 0x11aa, 0x11ab, 0x11ac, 0x11ad, 0x11ae, 0x11af, + 0x11b0, 0x11b1, 0x11b2, 0x11b3, 0x11b4, 0x11b5, 0x11b6, 0x11b7, + 0x11b8, 0x11b9, 0x11ba, 0x11bb, 0x11bc, 0x11bd, 0x11be, 0x11bf, + 0x11c0, 0x11c1, 0x11c2, 0x11c3, 0x11c4, 0x11c5, 0x11c6, 0x11c7, + 0x11c8, 0x11c9, 0x11ca, 0x11cb, 0x11cc, 0x11cd, 0x11ce, 0x11cf, + 0x11d0, 0x11d1, 0x11d2, 0x11d3, 0x11d4, 0x11d5, 0x11d6, 0x11d7, + 0x11d8, 0x11d9, 0x11da, 0x11db, 0x11dc, 0x11dd, 0x11de, 0x11df, + 0x11e0, 0x11e1, 0x11e2, 0x11e3, 0x11e4, 0x11e5, 0x11e6, 0x11e7, + 0x11e8, 0x11e9, 0x11ea, 0x11eb, 0x11ec, 0x11ed, 0x11ee, 0x11ef, + 0x11f0, 0x11f1, 0x11f2, 0x11f3, 0x11f4, 0x11f5, 0x11f6, 0x11f7, + 0x11f8, 0x11f9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x1200, 0x1201, 0x1202, 0x1203, 0x1204, 0x1205, 0x1206, 0x1207, + 0x1208, 0x1209, 0x120a, 0x120b, 0x120c, 0x120d, 0x120e, 0x120f, + 0x1210, 0x1211, 0x1212, 0x1213, 0x1214, 0x1215, 0x1216, 0x1217, + 0x1218, 0x1219, 0x121a, 0x121b, 0x121c, 0x121d, 0x121e, 0x121f, + 0x1220, 0x1221, 0x1222, 0x1223, 0x1224, 0x1225, 0x1226, 0x1227, + 0x1228, 0x1229, 0x122a, 0x122b, 0x122c, 0x122d, 0x122e, 0x122f, + 0x1230, 0x1231, 0x1232, 0x1233, 0x1234, 0x1235, 0x1236, 0x1237, + 0x1238, 0x1239, 0x123a, 0x123b, 0x123c, 0x123d, 0x123e, 0x123f, + 0x1240, 0x1241, 0x1242, 0x1243, 0x1244, 0x1245, 0x1246, 0x1247, + 0x1248, 0x0000, 0x124a, 0x124b, 0x124c, 0x124d, 0x0000, 0x0000, + 0x1250, 0x1251, 0x1252, 0x1253, 0x1254, 0x1255, 0x1256, 0x0000, + 0x1258, 0x0000, 0x125a, 0x125b, 0x125c, 0x125d, 0x0000, 0x0000, + 0x1260, 0x1261, 0x1262, 0x1263, 0x1264, 0x1265, 0x1266, 0x1267, + 0x1268, 0x1269, 0x126a, 0x126b, 0x126c, 0x126d, 0x126e, 0x126f, + 0x1270, 0x1271, 0x1272, 0x1273, 0x1274, 0x1275, 0x1276, 0x1277, + 0x1278, 0x1279, 0x127a, 0x127b, 0x127c, 0x127d, 0x127e, 0x127f, + 0x1280, 0x1281, 0x1282, 0x1283, 0x1284, 0x1285, 0x1286, 0x1287, + 0x1288, 0x0000, 0x128a, 0x128b, 0x128c, 0x128d, 0x0000, 0x0000, + 0x1290, 0x1291, 0x1292, 0x1293, 0x1294, 0x1295, 0x1296, 0x1297, + 0x1298, 0x1299, 0x129a, 0x129b, 0x129c, 0x129d, 0x129e, 0x129f, + 0x12a0, 0x12a1, 0x12a2, 0x12a3, 0x12a4, 0x12a5, 0x12a6, 0x12a7, + 0x12a8, 0x12a9, 0x12aa, 0x12ab, 0x12ac, 0x12ad, 0x12ae, 0x12af, + 0x12b0, 0x0000, 0x12b2, 0x12b3, 0x12b4, 0x12b5, 0x0000, 0x0000, + 0x12b8, 0x12b9, 0x12ba, 0x12bb, 0x12bc, 0x12bd, 0x12be, 0x0000, + 0x12c0, 0x0000, 0x12c2, 0x12c3, 0x12c4, 0x12c5, 0x0000, 0x0000, + 0x12c8, 0x12c9, 0x12ca, 0x12cb, 0x12cc, 0x12cd, 0x12ce, 0x12cf, + 0x12d0, 0x12d1, 0x12d2, 0x12d3, 0x12d4, 0x12d5, 0x12d6, 0x0000, + 0x12d8, 0x12d9, 0x12da, 0x12db, 0x12dc, 0x12dd, 0x12de, 0x12df, + 0x12e0, 0x12e1, 0x12e2, 0x12e3, 0x12e4, 0x12e5, 0x12e6, 0x12e7, + 0x12e8, 0x12e9, 0x12ea, 0x12eb, 0x12ec, 0x12ed, 0x12ee, 0x12ef, + 0x12f0, 0x12f1, 0x12f2, 0x12f3, 0x12f4, 0x12f5, 0x12f6, 0x12f7, + 0x12f8, 0x12f9, 0x12fa, 0x12fb, 0x12fc, 0x12fd, 0x12fe, 0x12ff, + 0x1300, 0x1301, 0x1302, 0x1303, 0x1304, 0x1305, 0x1306, 0x1307, + 0x1308, 0x1309, 0x130a, 0x130b, 0x130c, 0x130d, 0x130e, 0x130f, + 0x1310, 0x0000, 0x1312, 0x1313, 0x1314, 0x1315, 0x0000, 0x0000, + 0x1318, 0x1319, 0x131a, 0x131b, 0x131c, 0x131d, 0x131e, 0x131f, + 0x1320, 0x1321, 0x1322, 0x1323, 0x1324, 0x1325, 0x1326, 0x1327, + 0x1328, 0x1329, 0x132a, 0x132b, 0x132c, 0x132d, 0x132e, 0x132f, + 0x1330, 0x1331, 0x1332, 0x1333, 0x1334, 0x1335, 0x1336, 0x1337, + 0x1338, 0x1339, 0x133a, 0x133b, 0x133c, 0x133d, 0x133e, 0x133f, + 0x1340, 0x1341, 0x1342, 0x1343, 0x1344, 0x1345, 0x1346, 0x1347, + 0x1348, 0x1349, 0x134a, 0x134b, 0x134c, 0x134d, 0x134e, 0x134f, + 0x1350, 0x1351, 0x1352, 0x1353, 0x1354, 0x1355, 0x1356, 0x1357, + 0x1358, 0x1359, 0x135a, 0x0000, 0x0000, 0x0000, 0x0000, 0x135f, + 0x1360, 0x1361, 0x1362, 0x1363, 0x1364, 0x1365, 0x1366, 0x1367, + 0x1368, 0x1369, 0x136a, 0x136b, 0x136c, 0x136d, 0x136e, 0x136f, + 0x1370, 0x1371, 0x1372, 0x1373, 0x1374, 0x1375, 0x1376, 0x1377, + 0x1378, 0x1379, 0x137a, 0x137b, 0x137c, 0x0000, 0x0000, 0x0000, + 0x1380, 0x1381, 0x1382, 0x1383, 0x1384, 0x1385, 0x1386, 0x1387, + 0x1388, 0x1389, 0x138a, 0x138b, 0x138c, 0x138d, 0x138e, 0x138f, + 0x1390, 0x1391, 0x1392, 0x1393, 0x1394, 0x1395, 0x1396, 0x1397, + 0x1398, 0x1399, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x13a0, 0x13a1, 0x13a2, 0x13a3, 0x13a4, 0x13a5, 0x13a6, 0x13a7, + 0x13a8, 0x13a9, 0x13aa, 0x13ab, 0x13ac, 0x13ad, 0x13ae, 0x13af, + 0x13b0, 0x13b1, 0x13b2, 0x13b3, 0x13b4, 0x13b5, 0x13b6, 0x13b7, + 0x13b8, 0x13b9, 0x13ba, 0x13bb, 0x13bc, 0x13bd, 0x13be, 0x13bf, + 0x13c0, 0x13c1, 0x13c2, 0x13c3, 0x13c4, 0x13c5, 0x13c6, 0x13c7, + 0x13c8, 0x13c9, 0x13ca, 0x13cb, 0x13cc, 0x13cd, 0x13ce, 0x13cf, + 0x13d0, 0x13d1, 0x13d2, 0x13d3, 0x13d4, 0x13d5, 0x13d6, 0x13d7, + 0x13d8, 0x13d9, 0x13da, 0x13db, 0x13dc, 0x13dd, 0x13de, 0x13df, + 0x13e0, 0x13e1, 0x13e2, 0x13e3, 0x13e4, 0x13e5, 0x13e6, 0x13e7, + 0x13e8, 0x13e9, 0x13ea, 0x13eb, 0x13ec, 0x13ed, 0x13ee, 0x13ef, + 0x13f0, 0x13f1, 0x13f2, 0x13f3, 0x13f4, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x1401, 0x1402, 0x1403, 0x1404, 0x1405, 0x1406, 0x1407, + 0x1408, 0x1409, 0x140a, 0x140b, 0x140c, 0x140d, 0x140e, 0x140f, + 0x1410, 0x1411, 0x1412, 0x1413, 0x1414, 0x1415, 0x1416, 0x1417, + 0x1418, 0x1419, 0x141a, 0x141b, 0x141c, 0x141d, 0x141e, 0x141f, + 0x1420, 0x1421, 0x1422, 0x1423, 0x1424, 0x1425, 0x1426, 0x1427, + 0x1428, 0x1429, 0x142a, 0x142b, 0x142c, 0x142d, 0x142e, 0x142f, + 0x1430, 0x1431, 0x1432, 0x1433, 0x1434, 0x1435, 0x1436, 0x1437, + 0x1438, 0x1439, 0x143a, 0x143b, 0x143c, 0x143d, 0x143e, 0x143f, + 0x1440, 0x1441, 0x1442, 0x1443, 0x1444, 0x1445, 0x1446, 0x1447, + 0x1448, 0x1449, 0x144a, 0x144b, 0x144c, 0x144d, 0x144e, 0x144f, + 0x1450, 0x1451, 0x1452, 0x1453, 0x1454, 0x1455, 0x1456, 0x1457, + 0x1458, 0x1459, 0x145a, 0x145b, 0x145c, 0x145d, 0x145e, 0x145f, + 0x1460, 0x1461, 0x1462, 0x1463, 0x1464, 0x1465, 0x1466, 0x1467, + 0x1468, 0x1469, 0x146a, 0x146b, 0x146c, 0x146d, 0x146e, 0x146f, + 0x1470, 0x1471, 0x1472, 0x1473, 0x1474, 0x1475, 0x1476, 0x1477, + 0x1478, 0x1479, 0x147a, 0x147b, 0x147c, 0x147d, 0x147e, 0x147f, + 0x1480, 0x1481, 0x1482, 0x1483, 0x1484, 0x1485, 0x1486, 0x1487, + 0x1488, 0x1489, 0x148a, 0x148b, 0x148c, 0x148d, 0x148e, 0x148f, + 0x1490, 0x1491, 0x1492, 0x1493, 0x1494, 0x1495, 0x1496, 0x1497, + 0x1498, 0x1499, 0x149a, 0x149b, 0x149c, 0x149d, 0x149e, 0x149f, + 0x14a0, 0x14a1, 0x14a2, 0x14a3, 0x14a4, 0x14a5, 0x14a6, 0x14a7, + 0x14a8, 0x14a9, 0x14aa, 0x14ab, 0x14ac, 0x14ad, 0x14ae, 0x14af, + 0x14b0, 0x14b1, 0x14b2, 0x14b3, 0x14b4, 0x14b5, 0x14b6, 0x14b7, + 0x14b8, 0x14b9, 0x14ba, 0x14bb, 0x14bc, 0x14bd, 0x14be, 0x14bf, + 0x14c0, 0x14c1, 0x14c2, 0x14c3, 0x14c4, 0x14c5, 0x14c6, 0x14c7, + 0x14c8, 0x14c9, 0x14ca, 0x14cb, 0x14cc, 0x14cd, 0x14ce, 0x14cf, + 0x14d0, 0x14d1, 0x14d2, 0x14d3, 0x14d4, 0x14d5, 0x14d6, 0x14d7, + 0x14d8, 0x14d9, 0x14da, 0x14db, 0x14dc, 0x14dd, 0x14de, 0x14df, + 0x14e0, 0x14e1, 0x14e2, 0x14e3, 0x14e4, 0x14e5, 0x14e6, 0x14e7, + 0x14e8, 0x14e9, 0x14ea, 0x14eb, 0x14ec, 0x14ed, 0x14ee, 0x14ef, + 0x14f0, 0x14f1, 0x14f2, 0x14f3, 0x14f4, 0x14f5, 0x14f6, 0x14f7, + 0x14f8, 0x14f9, 0x14fa, 0x14fb, 0x14fc, 0x14fd, 0x14fe, 0x14ff, + 0x1500, 0x1501, 0x1502, 0x1503, 0x1504, 0x1505, 0x1506, 0x1507, + 0x1508, 0x1509, 0x150a, 0x150b, 0x150c, 0x150d, 0x150e, 0x150f, + 0x1510, 0x1511, 0x1512, 0x1513, 0x1514, 0x1515, 0x1516, 0x1517, + 0x1518, 0x1519, 0x151a, 0x151b, 0x151c, 0x151d, 0x151e, 0x151f, + 0x1520, 0x1521, 0x1522, 0x1523, 0x1524, 0x1525, 0x1526, 0x1527, + 0x1528, 0x1529, 0x152a, 0x152b, 0x152c, 0x152d, 0x152e, 0x152f, + 0x1530, 0x1531, 0x1532, 0x1533, 0x1534, 0x1535, 0x1536, 0x1537, + 0x1538, 0x1539, 0x153a, 0x153b, 0x153c, 0x153d, 0x153e, 0x153f, + 0x1540, 0x1541, 0x1542, 0x1543, 0x1544, 0x1545, 0x1546, 0x1547, + 0x1548, 0x1549, 0x154a, 0x154b, 0x154c, 0x154d, 0x154e, 0x154f, + 0x1550, 0x1551, 0x1552, 0x1553, 0x1554, 0x1555, 0x1556, 0x1557, + 0x1558, 0x1559, 0x155a, 0x155b, 0x155c, 0x155d, 0x155e, 0x155f, + 0x1560, 0x1561, 0x1562, 0x1563, 0x1564, 0x1565, 0x1566, 0x1567, + 0x1568, 0x1569, 0x156a, 0x156b, 0x156c, 0x156d, 0x156e, 0x156f, + 0x1570, 0x1571, 0x1572, 0x1573, 0x1574, 0x1575, 0x1576, 0x1577, + 0x1578, 0x1579, 0x157a, 0x157b, 0x157c, 0x157d, 0x157e, 0x157f, + 0x1580, 0x1581, 0x1582, 0x1583, 0x1584, 0x1585, 0x1586, 0x1587, + 0x1588, 0x1589, 0x158a, 0x158b, 0x158c, 0x158d, 0x158e, 0x158f, + 0x1590, 0x1591, 0x1592, 0x1593, 0x1594, 0x1595, 0x1596, 0x1597, + 0x1598, 0x1599, 0x159a, 0x159b, 0x159c, 0x159d, 0x159e, 0x159f, + 0x15a0, 0x15a1, 0x15a2, 0x15a3, 0x15a4, 0x15a5, 0x15a6, 0x15a7, + 0x15a8, 0x15a9, 0x15aa, 0x15ab, 0x15ac, 0x15ad, 0x15ae, 0x15af, + 0x15b0, 0x15b1, 0x15b2, 0x15b3, 0x15b4, 0x15b5, 0x15b6, 0x15b7, + 0x15b8, 0x15b9, 0x15ba, 0x15bb, 0x15bc, 0x15bd, 0x15be, 0x15bf, + 0x15c0, 0x15c1, 0x15c2, 0x15c3, 0x15c4, 0x15c5, 0x15c6, 0x15c7, + 0x15c8, 0x15c9, 0x15ca, 0x15cb, 0x15cc, 0x15cd, 0x15ce, 0x15cf, + 0x15d0, 0x15d1, 0x15d2, 0x15d3, 0x15d4, 0x15d5, 0x15d6, 0x15d7, + 0x15d8, 0x15d9, 0x15da, 0x15db, 0x15dc, 0x15dd, 0x15de, 0x15df, + 0x15e0, 0x15e1, 0x15e2, 0x15e3, 0x15e4, 0x15e5, 0x15e6, 0x15e7, + 0x15e8, 0x15e9, 0x15ea, 0x15eb, 0x15ec, 0x15ed, 0x15ee, 0x15ef, + 0x15f0, 0x15f1, 0x15f2, 0x15f3, 0x15f4, 0x15f5, 0x15f6, 0x15f7, + 0x15f8, 0x15f9, 0x15fa, 0x15fb, 0x15fc, 0x15fd, 0x15fe, 0x15ff, + 0x1600, 0x1601, 0x1602, 0x1603, 0x1604, 0x1605, 0x1606, 0x1607, + 0x1608, 0x1609, 0x160a, 0x160b, 0x160c, 0x160d, 0x160e, 0x160f, + 0x1610, 0x1611, 0x1612, 0x1613, 0x1614, 0x1615, 0x1616, 0x1617, + 0x1618, 0x1619, 0x161a, 0x161b, 0x161c, 0x161d, 0x161e, 0x161f, + 0x1620, 0x1621, 0x1622, 0x1623, 0x1624, 0x1625, 0x1626, 0x1627, + 0x1628, 0x1629, 0x162a, 0x162b, 0x162c, 0x162d, 0x162e, 0x162f, + 0x1630, 0x1631, 0x1632, 0x1633, 0x1634, 0x1635, 0x1636, 0x1637, + 0x1638, 0x1639, 0x163a, 0x163b, 0x163c, 0x163d, 0x163e, 0x163f, + 0x1640, 0x1641, 0x1642, 0x1643, 0x1644, 0x1645, 0x1646, 0x1647, + 0x1648, 0x1649, 0x164a, 0x164b, 0x164c, 0x164d, 0x164e, 0x164f, + 0x1650, 0x1651, 0x1652, 0x1653, 0x1654, 0x1655, 0x1656, 0x1657, + 0x1658, 0x1659, 0x165a, 0x165b, 0x165c, 0x165d, 0x165e, 0x165f, + 0x1660, 0x1661, 0x1662, 0x1663, 0x1664, 0x1665, 0x1666, 0x1667, + 0x1668, 0x1669, 0x166a, 0x166b, 0x166c, 0x166d, 0x166e, 0x166f, + 0x1670, 0x1671, 0x1672, 0x1673, 0x1674, 0x1675, 0x1676, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x1680, 0x1681, 0x1682, 0x1683, 0x1684, 0x1685, 0x1686, 0x1687, + 0x1688, 0x1689, 0x168a, 0x168b, 0x168c, 0x168d, 0x168e, 0x168f, + 0x1690, 0x1691, 0x1692, 0x1693, 0x1694, 0x1695, 0x1696, 0x1697, + 0x1698, 0x1699, 0x169a, 0x169b, 0x169c, 0x0000, 0x0000, 0x0000, + 0x16a0, 0x16a1, 0x16a2, 0x16a3, 0x16a4, 0x16a5, 0x16a6, 0x16a7, + 0x16a8, 0x16a9, 0x16aa, 0x16ab, 0x16ac, 0x16ad, 0x16ae, 0x16af, + 0x16b0, 0x16b1, 0x16b2, 0x16b3, 0x16b4, 0x16b5, 0x16b6, 0x16b7, + 0x16b8, 0x16b9, 0x16ba, 0x16bb, 0x16bc, 0x16bd, 0x16be, 0x16bf, + 0x16c0, 0x16c1, 0x16c2, 0x16c3, 0x16c4, 0x16c5, 0x16c6, 0x16c7, + 0x16c8, 0x16c9, 0x16ca, 0x16cb, 0x16cc, 0x16cd, 0x16ce, 0x16cf, + 0x16d0, 0x16d1, 0x16d2, 0x16d3, 0x16d4, 0x16d5, 0x16d6, 0x16d7, + 0x16d8, 0x16d9, 0x16da, 0x16db, 0x16dc, 0x16dd, 0x16de, 0x16df, + 0x16e0, 0x16e1, 0x16e2, 0x16e3, 0x16e4, 0x16e5, 0x16e6, 0x16e7, + 0x16e8, 0x16e9, 0x16ea, 0x16eb, 0x16ec, 0x16ed, 0x16ee, 0x16ef, + 0x16f0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x1700, 0x1701, 0x1702, 0x1703, 0x1704, 0x1705, 0x1706, 0x1707, + 0x1708, 0x1709, 0x170a, 0x170b, 0x170c, 0x0000, 0x170e, 0x170f, + 0x1710, 0x1711, 0x1712, 0x1713, 0x1714, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x1720, 0x1721, 0x1722, 0x1723, 0x1724, 0x1725, 0x1726, 0x1727, + 0x1728, 0x1729, 0x172a, 0x172b, 0x172c, 0x172d, 0x172e, 0x172f, + 0x1730, 0x1731, 0x1732, 0x1733, 0x1734, 0x1735, 0x1736, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x1740, 0x1741, 0x1742, 0x1743, 0x1744, 0x1745, 0x1746, 0x1747, + 0x1748, 0x1749, 0x174a, 0x174b, 0x174c, 0x174d, 0x174e, 0x174f, + 0x1750, 0x1751, 0x1752, 0x1753, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x1760, 0x1761, 0x1762, 0x1763, 0x1764, 0x1765, 0x1766, 0x1767, + 0x1768, 0x1769, 0x176a, 0x176b, 0x176c, 0x0000, 0x176e, 0x176f, + 0x1770, 0x0000, 0x1772, 0x1773, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x1780, 0x1781, 0x1782, 0x1783, 0x1784, 0x1785, 0x1786, 0x1787, + 0x1788, 0x1789, 0x178a, 0x178b, 0x178c, 0x178d, 0x178e, 0x178f, + 0x1790, 0x1791, 0x1792, 0x1793, 0x1794, 0x1795, 0x1796, 0x1797, + 0x1798, 0x1799, 0x179a, 0x179b, 0x179c, 0x179d, 0x179e, 0x179f, + 0x17a0, 0x17a1, 0x17a2, 0x17a3, 0x17a4, 0x17a5, 0x17a6, 0x17a7, + 0x17a8, 0x17a9, 0x17aa, 0x17ab, 0x17ac, 0x17ad, 0x17ae, 0x17af, + 0x17b0, 0x17b1, 0x17b2, 0x17b3, 0x17b4, 0x17b5, 0x17b6, 0x17b7, + 0x17b8, 0x17b9, 0x17ba, 0x17bb, 0x17bc, 0x17bd, 0x17be, 0x17bf, + 0x17c0, 0x17c1, 0x17c2, 0x17c3, 0x17c4, 0x17c5, 0x17c6, 0x17c7, + 0x17c8, 0x17c9, 0x17ca, 0x17cb, 0x17cc, 0x17cd, 0x17ce, 0x17cf, + 0x17d0, 0x17d1, 0x17d2, 0x17d3, 0x17d4, 0x17d5, 0x17d6, 0x17d7, + 0x17d8, 0x17d9, 0x17da, 0x17db, 0x17dc, 0x17dd, 0x0000, 0x0000, + 0x17e0, 0x17e1, 0x17e2, 0x17e3, 0x17e4, 0x17e5, 0x17e6, 0x17e7, + 0x17e8, 0x17e9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x17f0, 0x17f1, 0x17f2, 0x17f3, 0x17f4, 0x17f5, 0x17f6, 0x17f7, + 0x17f8, 0x17f9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x1800, 0x1801, 0x1802, 0x1803, 0x1804, 0x1805, 0x1806, 0x1807, + 0x1808, 0x1809, 0x180a, 0x180b, 0x180c, 0x180d, 0x180e, 0x0000, + 0x1810, 0x1811, 0x1812, 0x1813, 0x1814, 0x1815, 0x1816, 0x1817, + 0x1818, 0x1819, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x1820, 0x1821, 0x1822, 0x1823, 0x1824, 0x1825, 0x1826, 0x1827, + 0x1828, 0x1829, 0x182a, 0x182b, 0x182c, 0x182d, 0x182e, 0x182f, + 0x1830, 0x1831, 0x1832, 0x1833, 0x1834, 0x1835, 0x1836, 0x1837, + 0x1838, 0x1839, 0x183a, 0x183b, 0x183c, 0x183d, 0x183e, 0x183f, + 0x1840, 0x1841, 0x1842, 0x1843, 0x1844, 0x1845, 0x1846, 0x1847, + 0x1848, 0x1849, 0x184a, 0x184b, 0x184c, 0x184d, 0x184e, 0x184f, + 0x1850, 0x1851, 0x1852, 0x1853, 0x1854, 0x1855, 0x1856, 0x1857, + 0x1858, 0x1859, 0x185a, 0x185b, 0x185c, 0x185d, 0x185e, 0x185f, + 0x1860, 0x1861, 0x1862, 0x1863, 0x1864, 0x1865, 0x1866, 0x1867, + 0x1868, 0x1869, 0x186a, 0x186b, 0x186c, 0x186d, 0x186e, 0x186f, + 0x1870, 0x1871, 0x1872, 0x1873, 0x1874, 0x1875, 0x1876, 0x1877, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x1880, 0x1881, 0x1882, 0x1883, 0x1884, 0x1885, 0x1886, 0x1887, + 0x1888, 0x1889, 0x188a, 0x188b, 0x188c, 0x188d, 0x188e, 0x188f, + 0x1890, 0x1891, 0x1892, 0x1893, 0x1894, 0x1895, 0x1896, 0x1897, + 0x1898, 0x1899, 0x189a, 0x189b, 0x189c, 0x189d, 0x189e, 0x189f, + 0x18a0, 0x18a1, 0x18a2, 0x18a3, 0x18a4, 0x18a5, 0x18a6, 0x18a7, + 0x18a8, 0x18a9, 0x18aa, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x1900, 0x1901, 0x1902, 0x1903, 0x1904, 0x1905, 0x1906, 0x1907, + 0x1908, 0x1909, 0x190a, 0x190b, 0x190c, 0x190d, 0x190e, 0x190f, + 0x1910, 0x1911, 0x1912, 0x1913, 0x1914, 0x1915, 0x1916, 0x1917, + 0x1918, 0x1919, 0x191a, 0x191b, 0x191c, 0x0000, 0x0000, 0x0000, + 0x1920, 0x1921, 0x1922, 0x1923, 0x1924, 0x1925, 0x1926, 0x1927, + 0x1928, 0x1929, 0x192a, 0x192b, 0x0000, 0x0000, 0x0000, 0x0000, + 0x1930, 0x1931, 0x1932, 0x1933, 0x1934, 0x1935, 0x1936, 0x1937, + 0x1938, 0x1939, 0x193a, 0x193b, 0x0000, 0x0000, 0x0000, 0x0000, + 0x1940, 0x0000, 0x0000, 0x0000, 0x1944, 0x1945, 0x1946, 0x1947, + 0x1948, 0x1949, 0x194a, 0x194b, 0x194c, 0x194d, 0x194e, 0x194f, + 0x1950, 0x1951, 0x1952, 0x1953, 0x1954, 0x1955, 0x1956, 0x1957, + 0x1958, 0x1959, 0x195a, 0x195b, 0x195c, 0x195d, 0x195e, 0x195f, + 0x1960, 0x1961, 0x1962, 0x1963, 0x1964, 0x1965, 0x1966, 0x1967, + 0x1968, 0x1969, 0x196a, 0x196b, 0x196c, 0x196d, 0x0000, 0x0000, + 0x1970, 0x1971, 0x1972, 0x1973, 0x1974, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x1980, 0x1981, 0x1982, 0x1983, 0x1984, 0x1985, 0x1986, 0x1987, + 0x1988, 0x1989, 0x198a, 0x198b, 0x198c, 0x198d, 0x198e, 0x198f, + 0x1990, 0x1991, 0x1992, 0x1993, 0x1994, 0x1995, 0x1996, 0x1997, + 0x1998, 0x1999, 0x199a, 0x199b, 0x199c, 0x199d, 0x199e, 0x199f, + 0x19a0, 0x19a1, 0x19a2, 0x19a3, 0x19a4, 0x19a5, 0x19a6, 0x19a7, + 0x19a8, 0x19a9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x19b0, 0x19b1, 0x19b2, 0x19b3, 0x19b4, 0x19b5, 0x19b6, 0x19b7, + 0x19b8, 0x19b9, 0x19ba, 0x19bb, 0x19bc, 0x19bd, 0x19be, 0x19bf, + 0x19c0, 0x19c1, 0x19c2, 0x19c3, 0x19c4, 0x19c5, 0x19c6, 0x19c7, + 0x19c8, 0x19c9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x19d0, 0x19d1, 0x19d2, 0x19d3, 0x19d4, 0x19d5, 0x19d6, 0x19d7, + 0x19d8, 0x19d9, 0x0000, 0x0000, 0x0000, 0x0000, 0x19de, 0x19df, + 0x19e0, 0x19e1, 0x19e2, 0x19e3, 0x19e4, 0x19e5, 0x19e6, 0x19e7, + 0x19e8, 0x19e9, 0x19ea, 0x19eb, 0x19ec, 0x19ed, 0x19ee, 0x19ef, + 0x19f0, 0x19f1, 0x19f2, 0x19f3, 0x19f4, 0x19f5, 0x19f6, 0x19f7, + 0x19f8, 0x19f9, 0x19fa, 0x19fb, 0x19fc, 0x19fd, 0x19fe, 0x19ff, + 0x1a00, 0x1a01, 0x1a02, 0x1a03, 0x1a04, 0x1a05, 0x1a06, 0x1a07, + 0x1a08, 0x1a09, 0x1a0a, 0x1a0b, 0x1a0c, 0x1a0d, 0x1a0e, 0x1a0f, + 0x1a10, 0x1a11, 0x1a12, 0x1a13, 0x1a14, 0x1a15, 0x1a16, 0x1a17, + 0x1a18, 0x1a19, 0x1a1a, 0x1a1b, 0x0000, 0x0000, 0x1a1e, 0x1a1f, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x1b00, 0x1b01, 0x1b02, 0x1b03, 0x1b04, 0x1b05, 0x1b06, 0x1b07, + 0x1b08, 0x1b09, 0x1b0a, 0x1b0b, 0x1b0c, 0x1b0d, 0x1b0e, 0x1b0f, + 0x1b10, 0x1b11, 0x1b12, 0x1b13, 0x1b14, 0x1b15, 0x1b16, 0x1b17, + 0x1b18, 0x1b19, 0x1b1a, 0x1b1b, 0x1b1c, 0x1b1d, 0x1b1e, 0x1b1f, + 0x1b20, 0x1b21, 0x1b22, 0x1b23, 0x1b24, 0x1b25, 0x1b26, 0x1b27, + 0x1b28, 0x1b29, 0x1b2a, 0x1b2b, 0x1b2c, 0x1b2d, 0x1b2e, 0x1b2f, + 0x1b30, 0x1b31, 0x1b32, 0x1b33, 0x1b34, 0x1b35, 0x1b36, 0x1b37, + 0x1b38, 0x1b39, 0x1b3a, 0x1b3b, 0x1b3c, 0x1b3d, 0x1b3e, 0x1b3f, + 0x1b40, 0x1b41, 0x1b42, 0x1b43, 0x1b44, 0x1b45, 0x1b46, 0x1b47, + 0x1b48, 0x1b49, 0x1b4a, 0x1b4b, 0x0000, 0x0000, 0x0000, 0x0000, + 0x1b50, 0x1b51, 0x1b52, 0x1b53, 0x1b54, 0x1b55, 0x1b56, 0x1b57, + 0x1b58, 0x1b59, 0x1b5a, 0x1b5b, 0x1b5c, 0x1b5d, 0x1b5e, 0x1b5f, + 0x1b60, 0x1b61, 0x1b62, 0x1b63, 0x1b64, 0x1b65, 0x1b66, 0x1b67, + 0x1b68, 0x1b69, 0x1b6a, 0x1b6b, 0x1b6c, 0x1b6d, 0x1b6e, 0x1b6f, + 0x1b70, 0x1b71, 0x1b72, 0x1b73, 0x1b74, 0x1b75, 0x1b76, 0x1b77, + 0x1b78, 0x1b79, 0x1b7a, 0x1b7b, 0x1b7c, 0x0000, 0x0000, 0x0000, + 0x1b80, 0x1b81, 0x1b82, 0x1b83, 0x1b84, 0x1b85, 0x1b86, 0x1b87, + 0x1b88, 0x1b89, 0x1b8a, 0x1b8b, 0x1b8c, 0x1b8d, 0x1b8e, 0x1b8f, + 0x1b90, 0x1b91, 0x1b92, 0x1b93, 0x1b94, 0x1b95, 0x1b96, 0x1b97, + 0x1b98, 0x1b99, 0x1b9a, 0x1b9b, 0x1b9c, 0x1b9d, 0x1b9e, 0x1b9f, + 0x1ba0, 0x1ba1, 0x1ba2, 0x1ba3, 0x1ba4, 0x1ba5, 0x1ba6, 0x1ba7, + 0x1ba8, 0x1ba9, 0x1baa, 0x0000, 0x0000, 0x0000, 0x1bae, 0x1baf, + 0x1bb0, 0x1bb1, 0x1bb2, 0x1bb3, 0x1bb4, 0x1bb5, 0x1bb6, 0x1bb7, + 0x1bb8, 0x1bb9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x1c00, 0x1c01, 0x1c02, 0x1c03, 0x1c04, 0x1c05, 0x1c06, 0x1c07, + 0x1c08, 0x1c09, 0x1c0a, 0x1c0b, 0x1c0c, 0x1c0d, 0x1c0e, 0x1c0f, + 0x1c10, 0x1c11, 0x1c12, 0x1c13, 0x1c14, 0x1c15, 0x1c16, 0x1c17, + 0x1c18, 0x1c19, 0x1c1a, 0x1c1b, 0x1c1c, 0x1c1d, 0x1c1e, 0x1c1f, + 0x1c20, 0x1c21, 0x1c22, 0x1c23, 0x1c24, 0x1c25, 0x1c26, 0x1c27, + 0x1c28, 0x1c29, 0x1c2a, 0x1c2b, 0x1c2c, 0x1c2d, 0x1c2e, 0x1c2f, + 0x1c30, 0x1c31, 0x1c32, 0x1c33, 0x1c34, 0x1c35, 0x1c36, 0x1c37, + 0x0000, 0x0000, 0x0000, 0x1c3b, 0x1c3c, 0x1c3d, 0x1c3e, 0x1c3f, + 0x1c40, 0x1c41, 0x1c42, 0x1c43, 0x1c44, 0x1c45, 0x1c46, 0x1c47, + 0x1c48, 0x1c49, 0x0000, 0x0000, 0x0000, 0x1c4d, 0x1c4e, 0x1c4f, + 0x1c50, 0x1c51, 0x1c52, 0x1c53, 0x1c54, 0x1c55, 0x1c56, 0x1c57, + 0x1c58, 0x1c59, 0x1c5a, 0x1c5b, 0x1c5c, 0x1c5d, 0x1c5e, 0x1c5f, + 0x1c60, 0x1c61, 0x1c62, 0x1c63, 0x1c64, 0x1c65, 0x1c66, 0x1c67, + 0x1c68, 0x1c69, 0x1c6a, 0x1c6b, 0x1c6c, 0x1c6d, 0x1c6e, 0x1c6f, + 0x1c70, 0x1c71, 0x1c72, 0x1c73, 0x1c74, 0x1c75, 0x1c76, 0x1c77, + 0x1c78, 0x1c79, 0x1c7a, 0x1c7b, 0x1c7c, 0x1c7d, 0x1c7e, 0x1c7f, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x1d00, 0x1d01, 0x1d02, 0x1d03, 0x1d04, 0x1d05, 0x1d06, 0x1d07, + 0x1d08, 0x1d09, 0x1d0a, 0x1d0b, 0x1d0c, 0x1d0d, 0x1d0e, 0x1d0f, + 0x1d10, 0x1d11, 0x1d12, 0x1d13, 0x1d14, 0x1d15, 0x1d16, 0x1d17, + 0x1d18, 0x1d19, 0x1d1a, 0x1d1b, 0x1d1c, 0x1d1d, 0x1d1e, 0x1d1f, + 0x1d20, 0x1d21, 0x1d22, 0x1d23, 0x1d24, 0x1d25, 0x1d26, 0x1d27, + 0x1d28, 0x1d29, 0x1d2a, 0x1d2b, 0x1d2c, 0x1d2d, 0x1d2e, 0x1d2f, + 0x1d30, 0x1d31, 0x1d32, 0x1d33, 0x1d34, 0x1d35, 0x1d36, 0x1d37, + 0x1d38, 0x1d39, 0x1d3a, 0x1d3b, 0x1d3c, 0x1d3d, 0x1d3e, 0x1d3f, + 0x1d40, 0x1d41, 0x1d42, 0x1d43, 0x1d44, 0x1d45, 0x1d46, 0x1d47, + 0x1d48, 0x1d49, 0x1d4a, 0x1d4b, 0x1d4c, 0x1d4d, 0x1d4e, 0x1d4f, + 0x1d50, 0x1d51, 0x1d52, 0x1d53, 0x1d54, 0x1d55, 0x1d56, 0x1d57, + 0x1d58, 0x1d59, 0x1d5a, 0x1d5b, 0x1d5c, 0x1d5d, 0x1d5e, 0x1d5f, + 0x1d60, 0x1d61, 0x1d62, 0x1d63, 0x1d64, 0x1d65, 0x1d66, 0x1d67, + 0x1d68, 0x1d69, 0x1d6a, 0x1d6b, 0x1d6c, 0x1d6d, 0x1d6e, 0x1d6f, + 0x1d70, 0x1d71, 0x1d72, 0x1d73, 0x1d74, 0x1d75, 0x1d76, 0x1d77, + 0x1d78, 0xa77d, 0x1d7a, 0x1d7b, 0x1d7c, 0x2c63, 0x1d7e, 0x1d7f, + 0x1d80, 0x1d81, 0x1d82, 0x1d83, 0x1d84, 0x1d85, 0x1d86, 0x1d87, + 0x1d88, 0x1d89, 0x1d8a, 0x1d8b, 0x1d8c, 0x1d8d, 0x1d8e, 0x1d8f, + 0x1d90, 0x1d91, 0x1d92, 0x1d93, 0x1d94, 0x1d95, 0x1d96, 0x1d97, + 0x1d98, 0x1d99, 0x1d9a, 0x1d9b, 0x1d9c, 0x1d9d, 0x1d9e, 0x1d9f, + 0x1da0, 0x1da1, 0x1da2, 0x1da3, 0x1da4, 0x1da5, 0x1da6, 0x1da7, + 0x1da8, 0x1da9, 0x1daa, 0x1dab, 0x1dac, 0x1dad, 0x1dae, 0x1daf, + 0x1db0, 0x1db1, 0x1db2, 0x1db3, 0x1db4, 0x1db5, 0x1db6, 0x1db7, + 0x1db8, 0x1db9, 0x1dba, 0x1dbb, 0x1dbc, 0x1dbd, 0x1dbe, 0x1dbf, + 0x1dc0, 0x1dc1, 0x1dc2, 0x1dc3, 0x1dc4, 0x1dc5, 0x1dc6, 0x1dc7, + 0x1dc8, 0x1dc9, 0x1dca, 0x1dcb, 0x1dcc, 0x1dcd, 0x1dce, 0x1dcf, + 0x1dd0, 0x1dd1, 0x1dd2, 0x1dd3, 0x1dd4, 0x1dd5, 0x1dd6, 0x1dd7, + 0x1dd8, 0x1dd9, 0x1dda, 0x1ddb, 0x1ddc, 0x1ddd, 0x1dde, 0x1ddf, + 0x1de0, 0x1de1, 0x1de2, 0x1de3, 0x1de4, 0x1de5, 0x1de6, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1dfe, 0x1dff, + 0x1e00, 0x1e00, 0x1e02, 0x1e02, 0x1e04, 0x1e04, 0x1e06, 0x1e06, + 0x1e08, 0x1e08, 0x1e0a, 0x1e0a, 0x1e0c, 0x1e0c, 0x1e0e, 0x1e0e, + 0x1e10, 0x1e10, 0x1e12, 0x1e12, 0x1e14, 0x1e14, 0x1e16, 0x1e16, + 0x1e18, 0x1e18, 0x1e1a, 0x1e1a, 0x1e1c, 0x1e1c, 0x1e1e, 0x1e1e, + 0x1e20, 0x1e20, 0x1e22, 0x1e22, 0x1e24, 0x1e24, 0x1e26, 0x1e26, + 0x1e28, 0x1e28, 0x1e2a, 0x1e2a, 0x1e2c, 0x1e2c, 0x1e2e, 0x1e2e, + 0x1e30, 0x1e30, 0x1e32, 0x1e32, 0x1e34, 0x1e34, 0x1e36, 0x1e36, + 0x1e38, 0x1e38, 0x1e3a, 0x1e3a, 0x1e3c, 0x1e3c, 0x1e3e, 0x1e3e, + 0x1e40, 0x1e40, 0x1e42, 0x1e42, 0x1e44, 0x1e44, 0x1e46, 0x1e46, + 0x1e48, 0x1e48, 0x1e4a, 0x1e4a, 0x1e4c, 0x1e4c, 0x1e4e, 0x1e4e, + 0x1e50, 0x1e50, 0x1e52, 0x1e52, 0x1e54, 0x1e54, 0x1e56, 0x1e56, + 0x1e58, 0x1e58, 0x1e5a, 0x1e5a, 0x1e5c, 0x1e5c, 0x1e5e, 0x1e5e, + 0x1e60, 0x1e60, 0x1e62, 0x1e62, 0x1e64, 0x1e64, 0x1e66, 0x1e66, + 0x1e68, 0x1e68, 0x1e6a, 0x1e6a, 0x1e6c, 0x1e6c, 0x1e6e, 0x1e6e, + 0x1e70, 0x1e70, 0x1e72, 0x1e72, 0x1e74, 0x1e74, 0x1e76, 0x1e76, + 0x1e78, 0x1e78, 0x1e7a, 0x1e7a, 0x1e7c, 0x1e7c, 0x1e7e, 0x1e7e, + 0x1e80, 0x1e80, 0x1e82, 0x1e82, 0x1e84, 0x1e84, 0x1e86, 0x1e86, + 0x1e88, 0x1e88, 0x1e8a, 0x1e8a, 0x1e8c, 0x1e8c, 0x1e8e, 0x1e8e, + 0x1e90, 0x1e90, 0x1e92, 0x1e92, 0x1e94, 0x1e94, 0x1e96, 0x1e97, + 0x1e98, 0x1e99, 0x1e9a, 0x1e60, 0x1e9c, 0x1e9d, 0x1e9e, 0x1e9f, + 0x1ea0, 0x1ea0, 0x1ea2, 0x1ea2, 0x1ea4, 0x1ea4, 0x1ea6, 0x1ea6, + 0x1ea8, 0x1ea8, 0x1eaa, 0x1eaa, 0x1eac, 0x1eac, 0x1eae, 0x1eae, + 0x1eb0, 0x1eb0, 0x1eb2, 0x1eb2, 0x1eb4, 0x1eb4, 0x1eb6, 0x1eb6, + 0x1eb8, 0x1eb8, 0x1eba, 0x1eba, 0x1ebc, 0x1ebc, 0x1ebe, 0x1ebe, + 0x1ec0, 0x1ec0, 0x1ec2, 0x1ec2, 0x1ec4, 0x1ec4, 0x1ec6, 0x1ec6, + 0x1ec8, 0x1ec8, 0x1eca, 0x1eca, 0x1ecc, 0x1ecc, 0x1ece, 0x1ece, + 0x1ed0, 0x1ed0, 0x1ed2, 0x1ed2, 0x1ed4, 0x1ed4, 0x1ed6, 0x1ed6, + 0x1ed8, 0x1ed8, 0x1eda, 0x1eda, 0x1edc, 0x1edc, 0x1ede, 0x1ede, + 0x1ee0, 0x1ee0, 0x1ee2, 0x1ee2, 0x1ee4, 0x1ee4, 0x1ee6, 0x1ee6, + 0x1ee8, 0x1ee8, 0x1eea, 0x1eea, 0x1eec, 0x1eec, 0x1eee, 0x1eee, + 0x1ef0, 0x1ef0, 0x1ef2, 0x1ef2, 0x1ef4, 0x1ef4, 0x1ef6, 0x1ef6, + 0x1ef8, 0x1ef8, 0x1efa, 0x1efa, 0x1efc, 0x1efc, 0x1efe, 0x1efe, + 0x1f08, 0x1f09, 0x1f0a, 0x1f0b, 0x1f0c, 0x1f0d, 0x1f0e, 0x1f0f, + 0x1f08, 0x1f09, 0x1f0a, 0x1f0b, 0x1f0c, 0x1f0d, 0x1f0e, 0x1f0f, + 0x1f18, 0x1f19, 0x1f1a, 0x1f1b, 0x1f1c, 0x1f1d, 0x0000, 0x0000, + 0x1f18, 0x1f19, 0x1f1a, 0x1f1b, 0x1f1c, 0x1f1d, 0x0000, 0x0000, + 0x1f28, 0x1f29, 0x1f2a, 0x1f2b, 0x1f2c, 0x1f2d, 0x1f2e, 0x1f2f, + 0x1f28, 0x1f29, 0x1f2a, 0x1f2b, 0x1f2c, 0x1f2d, 0x1f2e, 0x1f2f, + 0x1f38, 0x1f39, 0x1f3a, 0x1f3b, 0x1f3c, 0x1f3d, 0x1f3e, 0x1f3f, + 0x1f38, 0x1f39, 0x1f3a, 0x1f3b, 0x1f3c, 0x1f3d, 0x1f3e, 0x1f3f, + 0x1f48, 0x1f49, 0x1f4a, 0x1f4b, 0x1f4c, 0x1f4d, 0x0000, 0x0000, + 0x1f48, 0x1f49, 0x1f4a, 0x1f4b, 0x1f4c, 0x1f4d, 0x0000, 0x0000, + 0x1f50, 0x1f59, 0x1f52, 0x1f5b, 0x1f54, 0x1f5d, 0x1f56, 0x1f5f, + 0x0000, 0x1f59, 0x0000, 0x1f5b, 0x0000, 0x1f5d, 0x0000, 0x1f5f, + 0x1f68, 0x1f69, 0x1f6a, 0x1f6b, 0x1f6c, 0x1f6d, 0x1f6e, 0x1f6f, + 0x1f68, 0x1f69, 0x1f6a, 0x1f6b, 0x1f6c, 0x1f6d, 0x1f6e, 0x1f6f, + 0x1fba, 0x1fbb, 0x1fc8, 0x1fc9, 0x1fca, 0x1fcb, 0x1fda, 0x1fdb, + 0x1ff8, 0x1ff9, 0x1fea, 0x1feb, 0x1ffa, 0x1ffb, 0x0000, 0x0000, + 0x1f88, 0x1f89, 0x1f8a, 0x1f8b, 0x1f8c, 0x1f8d, 0x1f8e, 0x1f8f, + 0x1f88, 0x1f89, 0x1f8a, 0x1f8b, 0x1f8c, 0x1f8d, 0x1f8e, 0x1f8f, + 0x1f98, 0x1f99, 0x1f9a, 0x1f9b, 0x1f9c, 0x1f9d, 0x1f9e, 0x1f9f, + 0x1f98, 0x1f99, 0x1f9a, 0x1f9b, 0x1f9c, 0x1f9d, 0x1f9e, 0x1f9f, + 0x1fa8, 0x1fa9, 0x1faa, 0x1fab, 0x1fac, 0x1fad, 0x1fae, 0x1faf, + 0x1fa8, 0x1fa9, 0x1faa, 0x1fab, 0x1fac, 0x1fad, 0x1fae, 0x1faf, + 0x1fb8, 0x1fb9, 0x1fb2, 0x1fbc, 0x1fb4, 0x0000, 0x1fb6, 0x1fb7, + 0x1fb8, 0x1fb9, 0x1fba, 0x1fbb, 0x1fbc, 0x1fbd, 0x0399, 0x1fbf, + 0x1fc0, 0x1fc1, 0x1fc2, 0x1fcc, 0x1fc4, 0x0000, 0x1fc6, 0x1fc7, + 0x1fc8, 0x1fc9, 0x1fca, 0x1fcb, 0x1fcc, 0x1fcd, 0x1fce, 0x1fcf, + 0x1fd8, 0x1fd9, 0x1fd2, 0x1fd3, 0x0000, 0x0000, 0x1fd6, 0x1fd7, + 0x1fd8, 0x1fd9, 0x1fda, 0x1fdb, 0x0000, 0x1fdd, 0x1fde, 0x1fdf, + 0x1fe8, 0x1fe9, 0x1fe2, 0x1fe3, 0x1fe4, 0x1fec, 0x1fe6, 0x1fe7, + 0x1fe8, 0x1fe9, 0x1fea, 0x1feb, 0x1fec, 0x1fed, 0x1fee, 0x1fef, + 0x0000, 0x0000, 0x1ff2, 0x1ffc, 0x1ff4, 0x0000, 0x1ff6, 0x1ff7, + 0x1ff8, 0x1ff9, 0x1ffa, 0x1ffb, 0x1ffc, 0x1ffd, 0x1ffe, 0x0000, + 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, + 0x2008, 0x2009, 0x200a, 0x200b, 0x200c, 0x200d, 0x200e, 0x200f, + 0x2010, 0x2011, 0x2012, 0x2013, 0x2014, 0x2015, 0x2016, 0x2017, + 0x2018, 0x2019, 0x201a, 0x201b, 0x201c, 0x201d, 0x201e, 0x201f, + 0x2020, 0x2021, 0x2022, 0x2023, 0x2024, 0x2025, 0x2026, 0x2027, + 0x2028, 0x2029, 0x202a, 0x202b, 0x202c, 0x202d, 0x202e, 0x202f, + 0x2030, 0x2031, 0x2032, 0x2033, 0x2034, 0x2035, 0x2036, 0x2037, + 0x2038, 0x2039, 0x203a, 0x203b, 0x203c, 0x203d, 0x203e, 0x203f, + 0x2040, 0x2041, 0x2042, 0x2043, 0x2044, 0x2045, 0x2046, 0x2047, + 0x2048, 0x2049, 0x204a, 0x204b, 0x204c, 0x204d, 0x204e, 0x204f, + 0x2050, 0x2051, 0x2052, 0x2053, 0x2054, 0x2055, 0x2056, 0x2057, + 0x2058, 0x2059, 0x205a, 0x205b, 0x205c, 0x205d, 0x205e, 0x205f, + 0x2060, 0x2061, 0x2062, 0x2063, 0x2064, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x206a, 0x206b, 0x206c, 0x206d, 0x206e, 0x206f, + 0x2070, 0x2071, 0x0000, 0x0000, 0x2074, 0x2075, 0x2076, 0x2077, + 0x2078, 0x2079, 0x207a, 0x207b, 0x207c, 0x207d, 0x207e, 0x207f, + 0x2080, 0x2081, 0x2082, 0x2083, 0x2084, 0x2085, 0x2086, 0x2087, + 0x2088, 0x2089, 0x208a, 0x208b, 0x208c, 0x208d, 0x208e, 0x0000, + 0x2090, 0x2091, 0x2092, 0x2093, 0x2094, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x20a0, 0x20a1, 0x20a2, 0x20a3, 0x20a4, 0x20a5, 0x20a6, 0x20a7, + 0x20a8, 0x20a9, 0x20aa, 0x20ab, 0x20ac, 0x20ad, 0x20ae, 0x20af, + 0x20b0, 0x20b1, 0x20b2, 0x20b3, 0x20b4, 0x20b5, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x20d0, 0x20d1, 0x20d2, 0x20d3, 0x20d4, 0x20d5, 0x20d6, 0x20d7, + 0x20d8, 0x20d9, 0x20da, 0x20db, 0x20dc, 0x20dd, 0x20de, 0x20df, + 0x20e0, 0x20e1, 0x20e2, 0x20e3, 0x20e4, 0x20e5, 0x20e6, 0x20e7, + 0x20e8, 0x20e9, 0x20ea, 0x20eb, 0x20ec, 0x20ed, 0x20ee, 0x20ef, + 0x20f0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x2100, 0x2101, 0x2102, 0x2103, 0x2104, 0x2105, 0x2106, 0x2107, + 0x2108, 0x2109, 0x210a, 0x210b, 0x210c, 0x210d, 0x210e, 0x210f, + 0x2110, 0x2111, 0x2112, 0x2113, 0x2114, 0x2115, 0x2116, 0x2117, + 0x2118, 0x2119, 0x211a, 0x211b, 0x211c, 0x211d, 0x211e, 0x211f, + 0x2120, 0x2121, 0x2122, 0x2123, 0x2124, 0x2125, 0x2126, 0x2127, + 0x2128, 0x2129, 0x212a, 0x212b, 0x212c, 0x212d, 0x212e, 0x212f, + 0x2130, 0x2131, 0x2132, 0x2133, 0x2134, 0x2135, 0x2136, 0x2137, + 0x2138, 0x2139, 0x213a, 0x213b, 0x213c, 0x213d, 0x213e, 0x213f, + 0x2140, 0x2141, 0x2142, 0x2143, 0x2144, 0x2145, 0x2146, 0x2147, + 0x2148, 0x2149, 0x214a, 0x214b, 0x214c, 0x214d, 0x2132, 0x214f, + 0x0000, 0x0000, 0x0000, 0x2153, 0x2154, 0x2155, 0x2156, 0x2157, + 0x2158, 0x2159, 0x215a, 0x215b, 0x215c, 0x215d, 0x215e, 0x215f, + 0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, + 0x2168, 0x2169, 0x216a, 0x216b, 0x216c, 0x216d, 0x216e, 0x216f, + 0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, + 0x2168, 0x2169, 0x216a, 0x216b, 0x216c, 0x216d, 0x216e, 0x216f, + 0x2180, 0x2181, 0x2182, 0x2183, 0x2183, 0x2185, 0x2186, 0x2187, + 0x2188, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x2190, 0x2191, 0x2192, 0x2193, 0x2194, 0x2195, 0x2196, 0x2197, + 0x2198, 0x2199, 0x219a, 0x219b, 0x219c, 0x219d, 0x219e, 0x219f, + 0x21a0, 0x21a1, 0x21a2, 0x21a3, 0x21a4, 0x21a5, 0x21a6, 0x21a7, + 0x21a8, 0x21a9, 0x21aa, 0x21ab, 0x21ac, 0x21ad, 0x21ae, 0x21af, + 0x21b0, 0x21b1, 0x21b2, 0x21b3, 0x21b4, 0x21b5, 0x21b6, 0x21b7, + 0x21b8, 0x21b9, 0x21ba, 0x21bb, 0x21bc, 0x21bd, 0x21be, 0x21bf, + 0x21c0, 0x21c1, 0x21c2, 0x21c3, 0x21c4, 0x21c5, 0x21c6, 0x21c7, + 0x21c8, 0x21c9, 0x21ca, 0x21cb, 0x21cc, 0x21cd, 0x21ce, 0x21cf, + 0x21d0, 0x21d1, 0x21d2, 0x21d3, 0x21d4, 0x21d5, 0x21d6, 0x21d7, + 0x21d8, 0x21d9, 0x21da, 0x21db, 0x21dc, 0x21dd, 0x21de, 0x21df, + 0x21e0, 0x21e1, 0x21e2, 0x21e3, 0x21e4, 0x21e5, 0x21e6, 0x21e7, + 0x21e8, 0x21e9, 0x21ea, 0x21eb, 0x21ec, 0x21ed, 0x21ee, 0x21ef, + 0x21f0, 0x21f1, 0x21f2, 0x21f3, 0x21f4, 0x21f5, 0x21f6, 0x21f7, + 0x21f8, 0x21f9, 0x21fa, 0x21fb, 0x21fc, 0x21fd, 0x21fe, 0x21ff, + 0x2200, 0x2201, 0x2202, 0x2203, 0x2204, 0x2205, 0x2206, 0x2207, + 0x2208, 0x2209, 0x220a, 0x220b, 0x220c, 0x220d, 0x220e, 0x220f, + 0x2210, 0x2211, 0x2212, 0x2213, 0x2214, 0x2215, 0x2216, 0x2217, + 0x2218, 0x2219, 0x221a, 0x221b, 0x221c, 0x221d, 0x221e, 0x221f, + 0x2220, 0x2221, 0x2222, 0x2223, 0x2224, 0x2225, 0x2226, 0x2227, + 0x2228, 0x2229, 0x222a, 0x222b, 0x222c, 0x222d, 0x222e, 0x222f, + 0x2230, 0x2231, 0x2232, 0x2233, 0x2234, 0x2235, 0x2236, 0x2237, + 0x2238, 0x2239, 0x223a, 0x223b, 0x223c, 0x223d, 0x223e, 0x223f, + 0x2240, 0x2241, 0x2242, 0x2243, 0x2244, 0x2245, 0x2246, 0x2247, + 0x2248, 0x2249, 0x224a, 0x224b, 0x224c, 0x224d, 0x224e, 0x224f, + 0x2250, 0x2251, 0x2252, 0x2253, 0x2254, 0x2255, 0x2256, 0x2257, + 0x2258, 0x2259, 0x225a, 0x225b, 0x225c, 0x225d, 0x225e, 0x225f, + 0x2260, 0x2261, 0x2262, 0x2263, 0x2264, 0x2265, 0x2266, 0x2267, + 0x2268, 0x2269, 0x226a, 0x226b, 0x226c, 0x226d, 0x226e, 0x226f, + 0x2270, 0x2271, 0x2272, 0x2273, 0x2274, 0x2275, 0x2276, 0x2277, + 0x2278, 0x2279, 0x227a, 0x227b, 0x227c, 0x227d, 0x227e, 0x227f, + 0x2280, 0x2281, 0x2282, 0x2283, 0x2284, 0x2285, 0x2286, 0x2287, + 0x2288, 0x2289, 0x228a, 0x228b, 0x228c, 0x228d, 0x228e, 0x228f, + 0x2290, 0x2291, 0x2292, 0x2293, 0x2294, 0x2295, 0x2296, 0x2297, + 0x2298, 0x2299, 0x229a, 0x229b, 0x229c, 0x229d, 0x229e, 0x229f, + 0x22a0, 0x22a1, 0x22a2, 0x22a3, 0x22a4, 0x22a5, 0x22a6, 0x22a7, + 0x22a8, 0x22a9, 0x22aa, 0x22ab, 0x22ac, 0x22ad, 0x22ae, 0x22af, + 0x22b0, 0x22b1, 0x22b2, 0x22b3, 0x22b4, 0x22b5, 0x22b6, 0x22b7, + 0x22b8, 0x22b9, 0x22ba, 0x22bb, 0x22bc, 0x22bd, 0x22be, 0x22bf, + 0x22c0, 0x22c1, 0x22c2, 0x22c3, 0x22c4, 0x22c5, 0x22c6, 0x22c7, + 0x22c8, 0x22c9, 0x22ca, 0x22cb, 0x22cc, 0x22cd, 0x22ce, 0x22cf, + 0x22d0, 0x22d1, 0x22d2, 0x22d3, 0x22d4, 0x22d5, 0x22d6, 0x22d7, + 0x22d8, 0x22d9, 0x22da, 0x22db, 0x22dc, 0x22dd, 0x22de, 0x22df, + 0x22e0, 0x22e1, 0x22e2, 0x22e3, 0x22e4, 0x22e5, 0x22e6, 0x22e7, + 0x22e8, 0x22e9, 0x22ea, 0x22eb, 0x22ec, 0x22ed, 0x22ee, 0x22ef, + 0x22f0, 0x22f1, 0x22f2, 0x22f3, 0x22f4, 0x22f5, 0x22f6, 0x22f7, + 0x22f8, 0x22f9, 0x22fa, 0x22fb, 0x22fc, 0x22fd, 0x22fe, 0x22ff, + 0x2300, 0x2301, 0x2302, 0x2303, 0x2304, 0x2305, 0x2306, 0x2307, + 0x2308, 0x2309, 0x230a, 0x230b, 0x230c, 0x230d, 0x230e, 0x230f, + 0x2310, 0x2311, 0x2312, 0x2313, 0x2314, 0x2315, 0x2316, 0x2317, + 0x2318, 0x2319, 0x231a, 0x231b, 0x231c, 0x231d, 0x231e, 0x231f, + 0x2320, 0x2321, 0x2322, 0x2323, 0x2324, 0x2325, 0x2326, 0x2327, + 0x2328, 0x2329, 0x232a, 0x232b, 0x232c, 0x232d, 0x232e, 0x232f, + 0x2330, 0x2331, 0x2332, 0x2333, 0x2334, 0x2335, 0x2336, 0x2337, + 0x2338, 0x2339, 0x233a, 0x233b, 0x233c, 0x233d, 0x233e, 0x233f, + 0x2340, 0x2341, 0x2342, 0x2343, 0x2344, 0x2345, 0x2346, 0x2347, + 0x2348, 0x2349, 0x234a, 0x234b, 0x234c, 0x234d, 0x234e, 0x234f, + 0x2350, 0x2351, 0x2352, 0x2353, 0x2354, 0x2355, 0x2356, 0x2357, + 0x2358, 0x2359, 0x235a, 0x235b, 0x235c, 0x235d, 0x235e, 0x235f, + 0x2360, 0x2361, 0x2362, 0x2363, 0x2364, 0x2365, 0x2366, 0x2367, + 0x2368, 0x2369, 0x236a, 0x236b, 0x236c, 0x236d, 0x236e, 0x236f, + 0x2370, 0x2371, 0x2372, 0x2373, 0x2374, 0x2375, 0x2376, 0x2377, + 0x2378, 0x2379, 0x237a, 0x237b, 0x237c, 0x237d, 0x237e, 0x237f, + 0x2380, 0x2381, 0x2382, 0x2383, 0x2384, 0x2385, 0x2386, 0x2387, + 0x2388, 0x2389, 0x238a, 0x238b, 0x238c, 0x238d, 0x238e, 0x238f, + 0x2390, 0x2391, 0x2392, 0x2393, 0x2394, 0x2395, 0x2396, 0x2397, + 0x2398, 0x2399, 0x239a, 0x239b, 0x239c, 0x239d, 0x239e, 0x239f, + 0x23a0, 0x23a1, 0x23a2, 0x23a3, 0x23a4, 0x23a5, 0x23a6, 0x23a7, + 0x23a8, 0x23a9, 0x23aa, 0x23ab, 0x23ac, 0x23ad, 0x23ae, 0x23af, + 0x23b0, 0x23b1, 0x23b2, 0x23b3, 0x23b4, 0x23b5, 0x23b6, 0x23b7, + 0x23b8, 0x23b9, 0x23ba, 0x23bb, 0x23bc, 0x23bd, 0x23be, 0x23bf, + 0x23c0, 0x23c1, 0x23c2, 0x23c3, 0x23c4, 0x23c5, 0x23c6, 0x23c7, + 0x23c8, 0x23c9, 0x23ca, 0x23cb, 0x23cc, 0x23cd, 0x23ce, 0x23cf, + 0x23d0, 0x23d1, 0x23d2, 0x23d3, 0x23d4, 0x23d5, 0x23d6, 0x23d7, + 0x23d8, 0x23d9, 0x23da, 0x23db, 0x23dc, 0x23dd, 0x23de, 0x23df, + 0x23e0, 0x23e1, 0x23e2, 0x23e3, 0x23e4, 0x23e5, 0x23e6, 0x23e7, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x2400, 0x2401, 0x2402, 0x2403, 0x2404, 0x2405, 0x2406, 0x2407, + 0x2408, 0x2409, 0x240a, 0x240b, 0x240c, 0x240d, 0x240e, 0x240f, + 0x2410, 0x2411, 0x2412, 0x2413, 0x2414, 0x2415, 0x2416, 0x2417, + 0x2418, 0x2419, 0x241a, 0x241b, 0x241c, 0x241d, 0x241e, 0x241f, + 0x2420, 0x2421, 0x2422, 0x2423, 0x2424, 0x2425, 0x2426, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x2440, 0x2441, 0x2442, 0x2443, 0x2444, 0x2445, 0x2446, 0x2447, + 0x2448, 0x2449, 0x244a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, + 0x2468, 0x2469, 0x246a, 0x246b, 0x246c, 0x246d, 0x246e, 0x246f, + 0x2470, 0x2471, 0x2472, 0x2473, 0x2474, 0x2475, 0x2476, 0x2477, + 0x2478, 0x2479, 0x247a, 0x247b, 0x247c, 0x247d, 0x247e, 0x247f, + 0x2480, 0x2481, 0x2482, 0x2483, 0x2484, 0x2485, 0x2486, 0x2487, + 0x2488, 0x2489, 0x248a, 0x248b, 0x248c, 0x248d, 0x248e, 0x248f, + 0x2490, 0x2491, 0x2492, 0x2493, 0x2494, 0x2495, 0x2496, 0x2497, + 0x2498, 0x2499, 0x249a, 0x249b, 0x249c, 0x249d, 0x249e, 0x249f, + 0x24a0, 0x24a1, 0x24a2, 0x24a3, 0x24a4, 0x24a5, 0x24a6, 0x24a7, + 0x24a8, 0x24a9, 0x24aa, 0x24ab, 0x24ac, 0x24ad, 0x24ae, 0x24af, + 0x24b0, 0x24b1, 0x24b2, 0x24b3, 0x24b4, 0x24b5, 0x24b6, 0x24b7, + 0x24b8, 0x24b9, 0x24ba, 0x24bb, 0x24bc, 0x24bd, 0x24be, 0x24bf, + 0x24c0, 0x24c1, 0x24c2, 0x24c3, 0x24c4, 0x24c5, 0x24c6, 0x24c7, + 0x24c8, 0x24c9, 0x24ca, 0x24cb, 0x24cc, 0x24cd, 0x24ce, 0x24cf, + 0x24b6, 0x24b7, 0x24b8, 0x24b9, 0x24ba, 0x24bb, 0x24bc, 0x24bd, + 0x24be, 0x24bf, 0x24c0, 0x24c1, 0x24c2, 0x24c3, 0x24c4, 0x24c5, + 0x24c6, 0x24c7, 0x24c8, 0x24c9, 0x24ca, 0x24cb, 0x24cc, 0x24cd, + 0x24ce, 0x24cf, 0x24ea, 0x24eb, 0x24ec, 0x24ed, 0x24ee, 0x24ef, + 0x24f0, 0x24f1, 0x24f2, 0x24f3, 0x24f4, 0x24f5, 0x24f6, 0x24f7, + 0x24f8, 0x24f9, 0x24fa, 0x24fb, 0x24fc, 0x24fd, 0x24fe, 0x24ff, + 0x2500, 0x2501, 0x2502, 0x2503, 0x2504, 0x2505, 0x2506, 0x2507, + 0x2508, 0x2509, 0x250a, 0x250b, 0x250c, 0x250d, 0x250e, 0x250f, + 0x2510, 0x2511, 0x2512, 0x2513, 0x2514, 0x2515, 0x2516, 0x2517, + 0x2518, 0x2519, 0x251a, 0x251b, 0x251c, 0x251d, 0x251e, 0x251f, + 0x2520, 0x2521, 0x2522, 0x2523, 0x2524, 0x2525, 0x2526, 0x2527, + 0x2528, 0x2529, 0x252a, 0x252b, 0x252c, 0x252d, 0x252e, 0x252f, + 0x2530, 0x2531, 0x2532, 0x2533, 0x2534, 0x2535, 0x2536, 0x2537, + 0x2538, 0x2539, 0x253a, 0x253b, 0x253c, 0x253d, 0x253e, 0x253f, + 0x2540, 0x2541, 0x2542, 0x2543, 0x2544, 0x2545, 0x2546, 0x2547, + 0x2548, 0x2549, 0x254a, 0x254b, 0x254c, 0x254d, 0x254e, 0x254f, + 0x2550, 0x2551, 0x2552, 0x2553, 0x2554, 0x2555, 0x2556, 0x2557, + 0x2558, 0x2559, 0x255a, 0x255b, 0x255c, 0x255d, 0x255e, 0x255f, + 0x2560, 0x2561, 0x2562, 0x2563, 0x2564, 0x2565, 0x2566, 0x2567, + 0x2568, 0x2569, 0x256a, 0x256b, 0x256c, 0x256d, 0x256e, 0x256f, + 0x2570, 0x2571, 0x2572, 0x2573, 0x2574, 0x2575, 0x2576, 0x2577, + 0x2578, 0x2579, 0x257a, 0x257b, 0x257c, 0x257d, 0x257e, 0x257f, + 0x2580, 0x2581, 0x2582, 0x2583, 0x2584, 0x2585, 0x2586, 0x2587, + 0x2588, 0x2589, 0x258a, 0x258b, 0x258c, 0x258d, 0x258e, 0x258f, + 0x2590, 0x2591, 0x2592, 0x2593, 0x2594, 0x2595, 0x2596, 0x2597, + 0x2598, 0x2599, 0x259a, 0x259b, 0x259c, 0x259d, 0x259e, 0x259f, + 0x25a0, 0x25a1, 0x25a2, 0x25a3, 0x25a4, 0x25a5, 0x25a6, 0x25a7, + 0x25a8, 0x25a9, 0x25aa, 0x25ab, 0x25ac, 0x25ad, 0x25ae, 0x25af, + 0x25b0, 0x25b1, 0x25b2, 0x25b3, 0x25b4, 0x25b5, 0x25b6, 0x25b7, + 0x25b8, 0x25b9, 0x25ba, 0x25bb, 0x25bc, 0x25bd, 0x25be, 0x25bf, + 0x25c0, 0x25c1, 0x25c2, 0x25c3, 0x25c4, 0x25c5, 0x25c6, 0x25c7, + 0x25c8, 0x25c9, 0x25ca, 0x25cb, 0x25cc, 0x25cd, 0x25ce, 0x25cf, + 0x25d0, 0x25d1, 0x25d2, 0x25d3, 0x25d4, 0x25d5, 0x25d6, 0x25d7, + 0x25d8, 0x25d9, 0x25da, 0x25db, 0x25dc, 0x25dd, 0x25de, 0x25df, + 0x25e0, 0x25e1, 0x25e2, 0x25e3, 0x25e4, 0x25e5, 0x25e6, 0x25e7, + 0x25e8, 0x25e9, 0x25ea, 0x25eb, 0x25ec, 0x25ed, 0x25ee, 0x25ef, + 0x25f0, 0x25f1, 0x25f2, 0x25f3, 0x25f4, 0x25f5, 0x25f6, 0x25f7, + 0x25f8, 0x25f9, 0x25fa, 0x25fb, 0x25fc, 0x25fd, 0x25fe, 0x25ff, + 0x2600, 0x2601, 0x2602, 0x2603, 0x2604, 0x2605, 0x2606, 0x2607, + 0x2608, 0x2609, 0x260a, 0x260b, 0x260c, 0x260d, 0x260e, 0x260f, + 0x2610, 0x2611, 0x2612, 0x2613, 0x2614, 0x2615, 0x2616, 0x2617, + 0x2618, 0x2619, 0x261a, 0x261b, 0x261c, 0x261d, 0x261e, 0x261f, + 0x2620, 0x2621, 0x2622, 0x2623, 0x2624, 0x2625, 0x2626, 0x2627, + 0x2628, 0x2629, 0x262a, 0x262b, 0x262c, 0x262d, 0x262e, 0x262f, + 0x2630, 0x2631, 0x2632, 0x2633, 0x2634, 0x2635, 0x2636, 0x2637, + 0x2638, 0x2639, 0x263a, 0x263b, 0x263c, 0x263d, 0x263e, 0x263f, + 0x2640, 0x2641, 0x2642, 0x2643, 0x2644, 0x2645, 0x2646, 0x2647, + 0x2648, 0x2649, 0x264a, 0x264b, 0x264c, 0x264d, 0x264e, 0x264f, + 0x2650, 0x2651, 0x2652, 0x2653, 0x2654, 0x2655, 0x2656, 0x2657, + 0x2658, 0x2659, 0x265a, 0x265b, 0x265c, 0x265d, 0x265e, 0x265f, + 0x2660, 0x2661, 0x2662, 0x2663, 0x2664, 0x2665, 0x2666, 0x2667, + 0x2668, 0x2669, 0x266a, 0x266b, 0x266c, 0x266d, 0x266e, 0x266f, + 0x2670, 0x2671, 0x2672, 0x2673, 0x2674, 0x2675, 0x2676, 0x2677, + 0x2678, 0x2679, 0x267a, 0x267b, 0x267c, 0x267d, 0x267e, 0x267f, + 0x2680, 0x2681, 0x2682, 0x2683, 0x2684, 0x2685, 0x2686, 0x2687, + 0x2688, 0x2689, 0x268a, 0x268b, 0x268c, 0x268d, 0x268e, 0x268f, + 0x2690, 0x2691, 0x2692, 0x2693, 0x2694, 0x2695, 0x2696, 0x2697, + 0x2698, 0x2699, 0x269a, 0x269b, 0x269c, 0x269d, 0x0000, 0x0000, + 0x26a0, 0x26a1, 0x26a2, 0x26a3, 0x26a4, 0x26a5, 0x26a6, 0x26a7, + 0x26a8, 0x26a9, 0x26aa, 0x26ab, 0x26ac, 0x26ad, 0x26ae, 0x26af, + 0x26b0, 0x26b1, 0x26b2, 0x26b3, 0x26b4, 0x26b5, 0x26b6, 0x26b7, + 0x26b8, 0x26b9, 0x26ba, 0x26bb, 0x26bc, 0x0000, 0x0000, 0x0000, + 0x26c0, 0x26c1, 0x26c2, 0x26c3, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x2701, 0x2702, 0x2703, 0x2704, 0x0000, 0x2706, 0x2707, + 0x2708, 0x2709, 0x0000, 0x0000, 0x270c, 0x270d, 0x270e, 0x270f, + 0x2710, 0x2711, 0x2712, 0x2713, 0x2714, 0x2715, 0x2716, 0x2717, + 0x2718, 0x2719, 0x271a, 0x271b, 0x271c, 0x271d, 0x271e, 0x271f, + 0x2720, 0x2721, 0x2722, 0x2723, 0x2724, 0x2725, 0x2726, 0x2727, + 0x0000, 0x2729, 0x272a, 0x272b, 0x272c, 0x272d, 0x272e, 0x272f, + 0x2730, 0x2731, 0x2732, 0x2733, 0x2734, 0x2735, 0x2736, 0x2737, + 0x2738, 0x2739, 0x273a, 0x273b, 0x273c, 0x273d, 0x273e, 0x273f, + 0x2740, 0x2741, 0x2742, 0x2743, 0x2744, 0x2745, 0x2746, 0x2747, + 0x2748, 0x2749, 0x274a, 0x274b, 0x0000, 0x274d, 0x0000, 0x274f, + 0x2750, 0x2751, 0x2752, 0x0000, 0x0000, 0x0000, 0x2756, 0x0000, + 0x2758, 0x2759, 0x275a, 0x275b, 0x275c, 0x275d, 0x275e, 0x0000, + 0x0000, 0x2761, 0x2762, 0x2763, 0x2764, 0x2765, 0x2766, 0x2767, + 0x2768, 0x2769, 0x276a, 0x276b, 0x276c, 0x276d, 0x276e, 0x276f, + 0x2770, 0x2771, 0x2772, 0x2773, 0x2774, 0x2775, 0x2776, 0x2777, + 0x2778, 0x2779, 0x277a, 0x277b, 0x277c, 0x277d, 0x277e, 0x277f, + 0x2780, 0x2781, 0x2782, 0x2783, 0x2784, 0x2785, 0x2786, 0x2787, + 0x2788, 0x2789, 0x278a, 0x278b, 0x278c, 0x278d, 0x278e, 0x278f, + 0x2790, 0x2791, 0x2792, 0x2793, 0x2794, 0x0000, 0x0000, 0x0000, + 0x2798, 0x2799, 0x279a, 0x279b, 0x279c, 0x279d, 0x279e, 0x279f, + 0x27a0, 0x27a1, 0x27a2, 0x27a3, 0x27a4, 0x27a5, 0x27a6, 0x27a7, + 0x27a8, 0x27a9, 0x27aa, 0x27ab, 0x27ac, 0x27ad, 0x27ae, 0x27af, + 0x0000, 0x27b1, 0x27b2, 0x27b3, 0x27b4, 0x27b5, 0x27b6, 0x27b7, + 0x27b8, 0x27b9, 0x27ba, 0x27bb, 0x27bc, 0x27bd, 0x27be, 0x0000, + 0x27c0, 0x27c1, 0x27c2, 0x27c3, 0x27c4, 0x27c5, 0x27c6, 0x27c7, + 0x27c8, 0x27c9, 0x27ca, 0x0000, 0x27cc, 0x0000, 0x0000, 0x0000, + 0x27d0, 0x27d1, 0x27d2, 0x27d3, 0x27d4, 0x27d5, 0x27d6, 0x27d7, + 0x27d8, 0x27d9, 0x27da, 0x27db, 0x27dc, 0x27dd, 0x27de, 0x27df, + 0x27e0, 0x27e1, 0x27e2, 0x27e3, 0x27e4, 0x27e5, 0x27e6, 0x27e7, + 0x27e8, 0x27e9, 0x27ea, 0x27eb, 0x27ec, 0x27ed, 0x27ee, 0x27ef, + 0x27f0, 0x27f1, 0x27f2, 0x27f3, 0x27f4, 0x27f5, 0x27f6, 0x27f7, + 0x27f8, 0x27f9, 0x27fa, 0x27fb, 0x27fc, 0x27fd, 0x27fe, 0x27ff, + 0x2800, 0x2801, 0x2802, 0x2803, 0x2804, 0x2805, 0x2806, 0x2807, + 0x2808, 0x2809, 0x280a, 0x280b, 0x280c, 0x280d, 0x280e, 0x280f, + 0x2810, 0x2811, 0x2812, 0x2813, 0x2814, 0x2815, 0x2816, 0x2817, + 0x2818, 0x2819, 0x281a, 0x281b, 0x281c, 0x281d, 0x281e, 0x281f, + 0x2820, 0x2821, 0x2822, 0x2823, 0x2824, 0x2825, 0x2826, 0x2827, + 0x2828, 0x2829, 0x282a, 0x282b, 0x282c, 0x282d, 0x282e, 0x282f, + 0x2830, 0x2831, 0x2832, 0x2833, 0x2834, 0x2835, 0x2836, 0x2837, + 0x2838, 0x2839, 0x283a, 0x283b, 0x283c, 0x283d, 0x283e, 0x283f, + 0x2840, 0x2841, 0x2842, 0x2843, 0x2844, 0x2845, 0x2846, 0x2847, + 0x2848, 0x2849, 0x284a, 0x284b, 0x284c, 0x284d, 0x284e, 0x284f, + 0x2850, 0x2851, 0x2852, 0x2853, 0x2854, 0x2855, 0x2856, 0x2857, + 0x2858, 0x2859, 0x285a, 0x285b, 0x285c, 0x285d, 0x285e, 0x285f, + 0x2860, 0x2861, 0x2862, 0x2863, 0x2864, 0x2865, 0x2866, 0x2867, + 0x2868, 0x2869, 0x286a, 0x286b, 0x286c, 0x286d, 0x286e, 0x286f, + 0x2870, 0x2871, 0x2872, 0x2873, 0x2874, 0x2875, 0x2876, 0x2877, + 0x2878, 0x2879, 0x287a, 0x287b, 0x287c, 0x287d, 0x287e, 0x287f, + 0x2880, 0x2881, 0x2882, 0x2883, 0x2884, 0x2885, 0x2886, 0x2887, + 0x2888, 0x2889, 0x288a, 0x288b, 0x288c, 0x288d, 0x288e, 0x288f, + 0x2890, 0x2891, 0x2892, 0x2893, 0x2894, 0x2895, 0x2896, 0x2897, + 0x2898, 0x2899, 0x289a, 0x289b, 0x289c, 0x289d, 0x289e, 0x289f, + 0x28a0, 0x28a1, 0x28a2, 0x28a3, 0x28a4, 0x28a5, 0x28a6, 0x28a7, + 0x28a8, 0x28a9, 0x28aa, 0x28ab, 0x28ac, 0x28ad, 0x28ae, 0x28af, + 0x28b0, 0x28b1, 0x28b2, 0x28b3, 0x28b4, 0x28b5, 0x28b6, 0x28b7, + 0x28b8, 0x28b9, 0x28ba, 0x28bb, 0x28bc, 0x28bd, 0x28be, 0x28bf, + 0x28c0, 0x28c1, 0x28c2, 0x28c3, 0x28c4, 0x28c5, 0x28c6, 0x28c7, + 0x28c8, 0x28c9, 0x28ca, 0x28cb, 0x28cc, 0x28cd, 0x28ce, 0x28cf, + 0x28d0, 0x28d1, 0x28d2, 0x28d3, 0x28d4, 0x28d5, 0x28d6, 0x28d7, + 0x28d8, 0x28d9, 0x28da, 0x28db, 0x28dc, 0x28dd, 0x28de, 0x28df, + 0x28e0, 0x28e1, 0x28e2, 0x28e3, 0x28e4, 0x28e5, 0x28e6, 0x28e7, + 0x28e8, 0x28e9, 0x28ea, 0x28eb, 0x28ec, 0x28ed, 0x28ee, 0x28ef, + 0x28f0, 0x28f1, 0x28f2, 0x28f3, 0x28f4, 0x28f5, 0x28f6, 0x28f7, + 0x28f8, 0x28f9, 0x28fa, 0x28fb, 0x28fc, 0x28fd, 0x28fe, 0x28ff, + 0x2900, 0x2901, 0x2902, 0x2903, 0x2904, 0x2905, 0x2906, 0x2907, + 0x2908, 0x2909, 0x290a, 0x290b, 0x290c, 0x290d, 0x290e, 0x290f, + 0x2910, 0x2911, 0x2912, 0x2913, 0x2914, 0x2915, 0x2916, 0x2917, + 0x2918, 0x2919, 0x291a, 0x291b, 0x291c, 0x291d, 0x291e, 0x291f, + 0x2920, 0x2921, 0x2922, 0x2923, 0x2924, 0x2925, 0x2926, 0x2927, + 0x2928, 0x2929, 0x292a, 0x292b, 0x292c, 0x292d, 0x292e, 0x292f, + 0x2930, 0x2931, 0x2932, 0x2933, 0x2934, 0x2935, 0x2936, 0x2937, + 0x2938, 0x2939, 0x293a, 0x293b, 0x293c, 0x293d, 0x293e, 0x293f, + 0x2940, 0x2941, 0x2942, 0x2943, 0x2944, 0x2945, 0x2946, 0x2947, + 0x2948, 0x2949, 0x294a, 0x294b, 0x294c, 0x294d, 0x294e, 0x294f, + 0x2950, 0x2951, 0x2952, 0x2953, 0x2954, 0x2955, 0x2956, 0x2957, + 0x2958, 0x2959, 0x295a, 0x295b, 0x295c, 0x295d, 0x295e, 0x295f, + 0x2960, 0x2961, 0x2962, 0x2963, 0x2964, 0x2965, 0x2966, 0x2967, + 0x2968, 0x2969, 0x296a, 0x296b, 0x296c, 0x296d, 0x296e, 0x296f, + 0x2970, 0x2971, 0x2972, 0x2973, 0x2974, 0x2975, 0x2976, 0x2977, + 0x2978, 0x2979, 0x297a, 0x297b, 0x297c, 0x297d, 0x297e, 0x297f, + 0x2980, 0x2981, 0x2982, 0x2983, 0x2984, 0x2985, 0x2986, 0x2987, + 0x2988, 0x2989, 0x298a, 0x298b, 0x298c, 0x298d, 0x298e, 0x298f, + 0x2990, 0x2991, 0x2992, 0x2993, 0x2994, 0x2995, 0x2996, 0x2997, + 0x2998, 0x2999, 0x299a, 0x299b, 0x299c, 0x299d, 0x299e, 0x299f, + 0x29a0, 0x29a1, 0x29a2, 0x29a3, 0x29a4, 0x29a5, 0x29a6, 0x29a7, + 0x29a8, 0x29a9, 0x29aa, 0x29ab, 0x29ac, 0x29ad, 0x29ae, 0x29af, + 0x29b0, 0x29b1, 0x29b2, 0x29b3, 0x29b4, 0x29b5, 0x29b6, 0x29b7, + 0x29b8, 0x29b9, 0x29ba, 0x29bb, 0x29bc, 0x29bd, 0x29be, 0x29bf, + 0x29c0, 0x29c1, 0x29c2, 0x29c3, 0x29c4, 0x29c5, 0x29c6, 0x29c7, + 0x29c8, 0x29c9, 0x29ca, 0x29cb, 0x29cc, 0x29cd, 0x29ce, 0x29cf, + 0x29d0, 0x29d1, 0x29d2, 0x29d3, 0x29d4, 0x29d5, 0x29d6, 0x29d7, + 0x29d8, 0x29d9, 0x29da, 0x29db, 0x29dc, 0x29dd, 0x29de, 0x29df, + 0x29e0, 0x29e1, 0x29e2, 0x29e3, 0x29e4, 0x29e5, 0x29e6, 0x29e7, + 0x29e8, 0x29e9, 0x29ea, 0x29eb, 0x29ec, 0x29ed, 0x29ee, 0x29ef, + 0x29f0, 0x29f1, 0x29f2, 0x29f3, 0x29f4, 0x29f5, 0x29f6, 0x29f7, + 0x29f8, 0x29f9, 0x29fa, 0x29fb, 0x29fc, 0x29fd, 0x29fe, 0x29ff, + 0x2a00, 0x2a01, 0x2a02, 0x2a03, 0x2a04, 0x2a05, 0x2a06, 0x2a07, + 0x2a08, 0x2a09, 0x2a0a, 0x2a0b, 0x2a0c, 0x2a0d, 0x2a0e, 0x2a0f, + 0x2a10, 0x2a11, 0x2a12, 0x2a13, 0x2a14, 0x2a15, 0x2a16, 0x2a17, + 0x2a18, 0x2a19, 0x2a1a, 0x2a1b, 0x2a1c, 0x2a1d, 0x2a1e, 0x2a1f, + 0x2a20, 0x2a21, 0x2a22, 0x2a23, 0x2a24, 0x2a25, 0x2a26, 0x2a27, + 0x2a28, 0x2a29, 0x2a2a, 0x2a2b, 0x2a2c, 0x2a2d, 0x2a2e, 0x2a2f, + 0x2a30, 0x2a31, 0x2a32, 0x2a33, 0x2a34, 0x2a35, 0x2a36, 0x2a37, + 0x2a38, 0x2a39, 0x2a3a, 0x2a3b, 0x2a3c, 0x2a3d, 0x2a3e, 0x2a3f, + 0x2a40, 0x2a41, 0x2a42, 0x2a43, 0x2a44, 0x2a45, 0x2a46, 0x2a47, + 0x2a48, 0x2a49, 0x2a4a, 0x2a4b, 0x2a4c, 0x2a4d, 0x2a4e, 0x2a4f, + 0x2a50, 0x2a51, 0x2a52, 0x2a53, 0x2a54, 0x2a55, 0x2a56, 0x2a57, + 0x2a58, 0x2a59, 0x2a5a, 0x2a5b, 0x2a5c, 0x2a5d, 0x2a5e, 0x2a5f, + 0x2a60, 0x2a61, 0x2a62, 0x2a63, 0x2a64, 0x2a65, 0x2a66, 0x2a67, + 0x2a68, 0x2a69, 0x2a6a, 0x2a6b, 0x2a6c, 0x2a6d, 0x2a6e, 0x2a6f, + 0x2a70, 0x2a71, 0x2a72, 0x2a73, 0x2a74, 0x2a75, 0x2a76, 0x2a77, + 0x2a78, 0x2a79, 0x2a7a, 0x2a7b, 0x2a7c, 0x2a7d, 0x2a7e, 0x2a7f, + 0x2a80, 0x2a81, 0x2a82, 0x2a83, 0x2a84, 0x2a85, 0x2a86, 0x2a87, + 0x2a88, 0x2a89, 0x2a8a, 0x2a8b, 0x2a8c, 0x2a8d, 0x2a8e, 0x2a8f, + 0x2a90, 0x2a91, 0x2a92, 0x2a93, 0x2a94, 0x2a95, 0x2a96, 0x2a97, + 0x2a98, 0x2a99, 0x2a9a, 0x2a9b, 0x2a9c, 0x2a9d, 0x2a9e, 0x2a9f, + 0x2aa0, 0x2aa1, 0x2aa2, 0x2aa3, 0x2aa4, 0x2aa5, 0x2aa6, 0x2aa7, + 0x2aa8, 0x2aa9, 0x2aaa, 0x2aab, 0x2aac, 0x2aad, 0x2aae, 0x2aaf, + 0x2ab0, 0x2ab1, 0x2ab2, 0x2ab3, 0x2ab4, 0x2ab5, 0x2ab6, 0x2ab7, + 0x2ab8, 0x2ab9, 0x2aba, 0x2abb, 0x2abc, 0x2abd, 0x2abe, 0x2abf, + 0x2ac0, 0x2ac1, 0x2ac2, 0x2ac3, 0x2ac4, 0x2ac5, 0x2ac6, 0x2ac7, + 0x2ac8, 0x2ac9, 0x2aca, 0x2acb, 0x2acc, 0x2acd, 0x2ace, 0x2acf, + 0x2ad0, 0x2ad1, 0x2ad2, 0x2ad3, 0x2ad4, 0x2ad5, 0x2ad6, 0x2ad7, + 0x2ad8, 0x2ad9, 0x2ada, 0x2adb, 0x2adc, 0x2add, 0x2ade, 0x2adf, + 0x2ae0, 0x2ae1, 0x2ae2, 0x2ae3, 0x2ae4, 0x2ae5, 0x2ae6, 0x2ae7, + 0x2ae8, 0x2ae9, 0x2aea, 0x2aeb, 0x2aec, 0x2aed, 0x2aee, 0x2aef, + 0x2af0, 0x2af1, 0x2af2, 0x2af3, 0x2af4, 0x2af5, 0x2af6, 0x2af7, + 0x2af8, 0x2af9, 0x2afa, 0x2afb, 0x2afc, 0x2afd, 0x2afe, 0x2aff, + 0x2b00, 0x2b01, 0x2b02, 0x2b03, 0x2b04, 0x2b05, 0x2b06, 0x2b07, + 0x2b08, 0x2b09, 0x2b0a, 0x2b0b, 0x2b0c, 0x2b0d, 0x2b0e, 0x2b0f, + 0x2b10, 0x2b11, 0x2b12, 0x2b13, 0x2b14, 0x2b15, 0x2b16, 0x2b17, + 0x2b18, 0x2b19, 0x2b1a, 0x2b1b, 0x2b1c, 0x2b1d, 0x2b1e, 0x2b1f, + 0x2b20, 0x2b21, 0x2b22, 0x2b23, 0x2b24, 0x2b25, 0x2b26, 0x2b27, + 0x2b28, 0x2b29, 0x2b2a, 0x2b2b, 0x2b2c, 0x2b2d, 0x2b2e, 0x2b2f, + 0x2b30, 0x2b31, 0x2b32, 0x2b33, 0x2b34, 0x2b35, 0x2b36, 0x2b37, + 0x2b38, 0x2b39, 0x2b3a, 0x2b3b, 0x2b3c, 0x2b3d, 0x2b3e, 0x2b3f, + 0x2b40, 0x2b41, 0x2b42, 0x2b43, 0x2b44, 0x2b45, 0x2b46, 0x2b47, + 0x2b48, 0x2b49, 0x2b4a, 0x2b4b, 0x2b4c, 0x0000, 0x0000, 0x0000, + 0x2b50, 0x2b51, 0x2b52, 0x2b53, 0x2b54, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x2c00, 0x2c01, 0x2c02, 0x2c03, 0x2c04, 0x2c05, 0x2c06, 0x2c07, + 0x2c08, 0x2c09, 0x2c0a, 0x2c0b, 0x2c0c, 0x2c0d, 0x2c0e, 0x2c0f, + 0x2c10, 0x2c11, 0x2c12, 0x2c13, 0x2c14, 0x2c15, 0x2c16, 0x2c17, + 0x2c18, 0x2c19, 0x2c1a, 0x2c1b, 0x2c1c, 0x2c1d, 0x2c1e, 0x2c1f, + 0x2c20, 0x2c21, 0x2c22, 0x2c23, 0x2c24, 0x2c25, 0x2c26, 0x2c27, + 0x2c28, 0x2c29, 0x2c2a, 0x2c2b, 0x2c2c, 0x2c2d, 0x2c2e, 0x0000, + 0x2c00, 0x2c01, 0x2c02, 0x2c03, 0x2c04, 0x2c05, 0x2c06, 0x2c07, + 0x2c08, 0x2c09, 0x2c0a, 0x2c0b, 0x2c0c, 0x2c0d, 0x2c0e, 0x2c0f, + 0x2c10, 0x2c11, 0x2c12, 0x2c13, 0x2c14, 0x2c15, 0x2c16, 0x2c17, + 0x2c18, 0x2c19, 0x2c1a, 0x2c1b, 0x2c1c, 0x2c1d, 0x2c1e, 0x2c1f, + 0x2c20, 0x2c21, 0x2c22, 0x2c23, 0x2c24, 0x2c25, 0x2c26, 0x2c27, + 0x2c28, 0x2c29, 0x2c2a, 0x2c2b, 0x2c2c, 0x2c2d, 0x2c2e, 0x0000, + 0x2c60, 0x2c60, 0x2c62, 0x2c63, 0x2c64, 0x023a, 0x023e, 0x2c67, + 0x2c67, 0x2c69, 0x2c69, 0x2c6b, 0x2c6b, 0x2c6d, 0x2c6e, 0x2c6f, + 0x0000, 0x2c71, 0x2c72, 0x2c72, 0x2c74, 0x2c75, 0x2c75, 0x2c77, + 0x2c78, 0x2c79, 0x2c7a, 0x2c7b, 0x2c7c, 0x2c7d, 0x0000, 0x0000, + 0x2c80, 0x2c80, 0x2c82, 0x2c82, 0x2c84, 0x2c84, 0x2c86, 0x2c86, + 0x2c88, 0x2c88, 0x2c8a, 0x2c8a, 0x2c8c, 0x2c8c, 0x2c8e, 0x2c8e, + 0x2c90, 0x2c90, 0x2c92, 0x2c92, 0x2c94, 0x2c94, 0x2c96, 0x2c96, + 0x2c98, 0x2c98, 0x2c9a, 0x2c9a, 0x2c9c, 0x2c9c, 0x2c9e, 0x2c9e, + 0x2ca0, 0x2ca0, 0x2ca2, 0x2ca2, 0x2ca4, 0x2ca4, 0x2ca6, 0x2ca6, + 0x2ca8, 0x2ca8, 0x2caa, 0x2caa, 0x2cac, 0x2cac, 0x2cae, 0x2cae, + 0x2cb0, 0x2cb0, 0x2cb2, 0x2cb2, 0x2cb4, 0x2cb4, 0x2cb6, 0x2cb6, + 0x2cb8, 0x2cb8, 0x2cba, 0x2cba, 0x2cbc, 0x2cbc, 0x2cbe, 0x2cbe, + 0x2cc0, 0x2cc0, 0x2cc2, 0x2cc2, 0x2cc4, 0x2cc4, 0x2cc6, 0x2cc6, + 0x2cc8, 0x2cc8, 0x2cca, 0x2cca, 0x2ccc, 0x2ccc, 0x2cce, 0x2cce, + 0x2cd0, 0x2cd0, 0x2cd2, 0x2cd2, 0x2cd4, 0x2cd4, 0x2cd6, 0x2cd6, + 0x2cd8, 0x2cd8, 0x2cda, 0x2cda, 0x2cdc, 0x2cdc, 0x2cde, 0x2cde, + 0x2ce0, 0x2ce0, 0x2ce2, 0x2ce2, 0x2ce4, 0x2ce5, 0x2ce6, 0x2ce7, + 0x2ce8, 0x2ce9, 0x2cea, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x2cf9, 0x2cfa, 0x2cfb, 0x2cfc, 0x2cfd, 0x2cfe, 0x2cff, + 0x10a0, 0x10a1, 0x10a2, 0x10a3, 0x10a4, 0x10a5, 0x10a6, 0x10a7, + 0x10a8, 0x10a9, 0x10aa, 0x10ab, 0x10ac, 0x10ad, 0x10ae, 0x10af, + 0x10b0, 0x10b1, 0x10b2, 0x10b3, 0x10b4, 0x10b5, 0x10b6, 0x10b7, + 0x10b8, 0x10b9, 0x10ba, 0x10bb, 0x10bc, 0x10bd, 0x10be, 0x10bf, + 0x10c0, 0x10c1, 0x10c2, 0x10c3, 0x10c4, 0x10c5, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x2d30, 0x2d31, 0x2d32, 0x2d33, 0x2d34, 0x2d35, 0x2d36, 0x2d37, + 0x2d38, 0x2d39, 0x2d3a, 0x2d3b, 0x2d3c, 0x2d3d, 0x2d3e, 0x2d3f, + 0x2d40, 0x2d41, 0x2d42, 0x2d43, 0x2d44, 0x2d45, 0x2d46, 0x2d47, + 0x2d48, 0x2d49, 0x2d4a, 0x2d4b, 0x2d4c, 0x2d4d, 0x2d4e, 0x2d4f, + 0x2d50, 0x2d51, 0x2d52, 0x2d53, 0x2d54, 0x2d55, 0x2d56, 0x2d57, + 0x2d58, 0x2d59, 0x2d5a, 0x2d5b, 0x2d5c, 0x2d5d, 0x2d5e, 0x2d5f, + 0x2d60, 0x2d61, 0x2d62, 0x2d63, 0x2d64, 0x2d65, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2d6f, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x2d80, 0x2d81, 0x2d82, 0x2d83, 0x2d84, 0x2d85, 0x2d86, 0x2d87, + 0x2d88, 0x2d89, 0x2d8a, 0x2d8b, 0x2d8c, 0x2d8d, 0x2d8e, 0x2d8f, + 0x2d90, 0x2d91, 0x2d92, 0x2d93, 0x2d94, 0x2d95, 0x2d96, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x2da0, 0x2da1, 0x2da2, 0x2da3, 0x2da4, 0x2da5, 0x2da6, 0x0000, + 0x2da8, 0x2da9, 0x2daa, 0x2dab, 0x2dac, 0x2dad, 0x2dae, 0x0000, + 0x2db0, 0x2db1, 0x2db2, 0x2db3, 0x2db4, 0x2db5, 0x2db6, 0x0000, + 0x2db8, 0x2db9, 0x2dba, 0x2dbb, 0x2dbc, 0x2dbd, 0x2dbe, 0x0000, + 0x2dc0, 0x2dc1, 0x2dc2, 0x2dc3, 0x2dc4, 0x2dc5, 0x2dc6, 0x0000, + 0x2dc8, 0x2dc9, 0x2dca, 0x2dcb, 0x2dcc, 0x2dcd, 0x2dce, 0x0000, + 0x2dd0, 0x2dd1, 0x2dd2, 0x2dd3, 0x2dd4, 0x2dd5, 0x2dd6, 0x0000, + 0x2dd8, 0x2dd9, 0x2dda, 0x2ddb, 0x2ddc, 0x2ddd, 0x2dde, 0x0000, + 0x2de0, 0x2de1, 0x2de2, 0x2de3, 0x2de4, 0x2de5, 0x2de6, 0x2de7, + 0x2de8, 0x2de9, 0x2dea, 0x2deb, 0x2dec, 0x2ded, 0x2dee, 0x2def, + 0x2df0, 0x2df1, 0x2df2, 0x2df3, 0x2df4, 0x2df5, 0x2df6, 0x2df7, + 0x2df8, 0x2df9, 0x2dfa, 0x2dfb, 0x2dfc, 0x2dfd, 0x2dfe, 0x2dff, + 0x2e00, 0x2e01, 0x2e02, 0x2e03, 0x2e04, 0x2e05, 0x2e06, 0x2e07, + 0x2e08, 0x2e09, 0x2e0a, 0x2e0b, 0x2e0c, 0x2e0d, 0x2e0e, 0x2e0f, + 0x2e10, 0x2e11, 0x2e12, 0x2e13, 0x2e14, 0x2e15, 0x2e16, 0x2e17, + 0x2e18, 0x2e19, 0x2e1a, 0x2e1b, 0x2e1c, 0x2e1d, 0x2e1e, 0x2e1f, + 0x2e20, 0x2e21, 0x2e22, 0x2e23, 0x2e24, 0x2e25, 0x2e26, 0x2e27, + 0x2e28, 0x2e29, 0x2e2a, 0x2e2b, 0x2e2c, 0x2e2d, 0x2e2e, 0x2e2f, + 0x2e30, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x2e80, 0x2e81, 0x2e82, 0x2e83, 0x2e84, 0x2e85, 0x2e86, 0x2e87, + 0x2e88, 0x2e89, 0x2e8a, 0x2e8b, 0x2e8c, 0x2e8d, 0x2e8e, 0x2e8f, + 0x2e90, 0x2e91, 0x2e92, 0x2e93, 0x2e94, 0x2e95, 0x2e96, 0x2e97, + 0x2e98, 0x2e99, 0x0000, 0x2e9b, 0x2e9c, 0x2e9d, 0x2e9e, 0x2e9f, + 0x2ea0, 0x2ea1, 0x2ea2, 0x2ea3, 0x2ea4, 0x2ea5, 0x2ea6, 0x2ea7, + 0x2ea8, 0x2ea9, 0x2eaa, 0x2eab, 0x2eac, 0x2ead, 0x2eae, 0x2eaf, + 0x2eb0, 0x2eb1, 0x2eb2, 0x2eb3, 0x2eb4, 0x2eb5, 0x2eb6, 0x2eb7, + 0x2eb8, 0x2eb9, 0x2eba, 0x2ebb, 0x2ebc, 0x2ebd, 0x2ebe, 0x2ebf, + 0x2ec0, 0x2ec1, 0x2ec2, 0x2ec3, 0x2ec4, 0x2ec5, 0x2ec6, 0x2ec7, + 0x2ec8, 0x2ec9, 0x2eca, 0x2ecb, 0x2ecc, 0x2ecd, 0x2ece, 0x2ecf, + 0x2ed0, 0x2ed1, 0x2ed2, 0x2ed3, 0x2ed4, 0x2ed5, 0x2ed6, 0x2ed7, + 0x2ed8, 0x2ed9, 0x2eda, 0x2edb, 0x2edc, 0x2edd, 0x2ede, 0x2edf, + 0x2ee0, 0x2ee1, 0x2ee2, 0x2ee3, 0x2ee4, 0x2ee5, 0x2ee6, 0x2ee7, + 0x2ee8, 0x2ee9, 0x2eea, 0x2eeb, 0x2eec, 0x2eed, 0x2eee, 0x2eef, + 0x2ef0, 0x2ef1, 0x2ef2, 0x2ef3, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x2f00, 0x2f01, 0x2f02, 0x2f03, 0x2f04, 0x2f05, 0x2f06, 0x2f07, + 0x2f08, 0x2f09, 0x2f0a, 0x2f0b, 0x2f0c, 0x2f0d, 0x2f0e, 0x2f0f, + 0x2f10, 0x2f11, 0x2f12, 0x2f13, 0x2f14, 0x2f15, 0x2f16, 0x2f17, + 0x2f18, 0x2f19, 0x2f1a, 0x2f1b, 0x2f1c, 0x2f1d, 0x2f1e, 0x2f1f, + 0x2f20, 0x2f21, 0x2f22, 0x2f23, 0x2f24, 0x2f25, 0x2f26, 0x2f27, + 0x2f28, 0x2f29, 0x2f2a, 0x2f2b, 0x2f2c, 0x2f2d, 0x2f2e, 0x2f2f, + 0x2f30, 0x2f31, 0x2f32, 0x2f33, 0x2f34, 0x2f35, 0x2f36, 0x2f37, + 0x2f38, 0x2f39, 0x2f3a, 0x2f3b, 0x2f3c, 0x2f3d, 0x2f3e, 0x2f3f, + 0x2f40, 0x2f41, 0x2f42, 0x2f43, 0x2f44, 0x2f45, 0x2f46, 0x2f47, + 0x2f48, 0x2f49, 0x2f4a, 0x2f4b, 0x2f4c, 0x2f4d, 0x2f4e, 0x2f4f, + 0x2f50, 0x2f51, 0x2f52, 0x2f53, 0x2f54, 0x2f55, 0x2f56, 0x2f57, + 0x2f58, 0x2f59, 0x2f5a, 0x2f5b, 0x2f5c, 0x2f5d, 0x2f5e, 0x2f5f, + 0x2f60, 0x2f61, 0x2f62, 0x2f63, 0x2f64, 0x2f65, 0x2f66, 0x2f67, + 0x2f68, 0x2f69, 0x2f6a, 0x2f6b, 0x2f6c, 0x2f6d, 0x2f6e, 0x2f6f, + 0x2f70, 0x2f71, 0x2f72, 0x2f73, 0x2f74, 0x2f75, 0x2f76, 0x2f77, + 0x2f78, 0x2f79, 0x2f7a, 0x2f7b, 0x2f7c, 0x2f7d, 0x2f7e, 0x2f7f, + 0x2f80, 0x2f81, 0x2f82, 0x2f83, 0x2f84, 0x2f85, 0x2f86, 0x2f87, + 0x2f88, 0x2f89, 0x2f8a, 0x2f8b, 0x2f8c, 0x2f8d, 0x2f8e, 0x2f8f, + 0x2f90, 0x2f91, 0x2f92, 0x2f93, 0x2f94, 0x2f95, 0x2f96, 0x2f97, + 0x2f98, 0x2f99, 0x2f9a, 0x2f9b, 0x2f9c, 0x2f9d, 0x2f9e, 0x2f9f, + 0x2fa0, 0x2fa1, 0x2fa2, 0x2fa3, 0x2fa4, 0x2fa5, 0x2fa6, 0x2fa7, + 0x2fa8, 0x2fa9, 0x2faa, 0x2fab, 0x2fac, 0x2fad, 0x2fae, 0x2faf, + 0x2fb0, 0x2fb1, 0x2fb2, 0x2fb3, 0x2fb4, 0x2fb5, 0x2fb6, 0x2fb7, + 0x2fb8, 0x2fb9, 0x2fba, 0x2fbb, 0x2fbc, 0x2fbd, 0x2fbe, 0x2fbf, + 0x2fc0, 0x2fc1, 0x2fc2, 0x2fc3, 0x2fc4, 0x2fc5, 0x2fc6, 0x2fc7, + 0x2fc8, 0x2fc9, 0x2fca, 0x2fcb, 0x2fcc, 0x2fcd, 0x2fce, 0x2fcf, + 0x2fd0, 0x2fd1, 0x2fd2, 0x2fd3, 0x2fd4, 0x2fd5, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x2ff0, 0x2ff1, 0x2ff2, 0x2ff3, 0x2ff4, 0x2ff5, 0x2ff6, 0x2ff7, + 0x2ff8, 0x2ff9, 0x2ffa, 0x2ffb, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3000, 0x3001, 0x3002, 0x3003, 0x3004, 0x3005, 0x3006, 0x3007, + 0x3008, 0x3009, 0x300a, 0x300b, 0x300c, 0x300d, 0x300e, 0x300f, + 0x3010, 0x3011, 0x3012, 0x3013, 0x3014, 0x3015, 0x3016, 0x3017, + 0x3018, 0x3019, 0x301a, 0x301b, 0x301c, 0x301d, 0x301e, 0x301f, + 0x3020, 0x3021, 0x3022, 0x3023, 0x3024, 0x3025, 0x3026, 0x3027, + 0x3028, 0x3029, 0x302a, 0x302b, 0x302c, 0x302d, 0x302e, 0x302f, + 0x3030, 0x3031, 0x3032, 0x3033, 0x3034, 0x3035, 0x3036, 0x3037, + 0x3038, 0x3039, 0x303a, 0x303b, 0x303c, 0x303d, 0x303e, 0x303f, + 0x0000, 0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046, 0x3047, + 0x3048, 0x3049, 0x304a, 0x304b, 0x304c, 0x304d, 0x304e, 0x304f, + 0x3050, 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056, 0x3057, + 0x3058, 0x3059, 0x305a, 0x305b, 0x305c, 0x305d, 0x305e, 0x305f, + 0x3060, 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067, + 0x3068, 0x3069, 0x306a, 0x306b, 0x306c, 0x306d, 0x306e, 0x306f, + 0x3070, 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, 0x3077, + 0x3078, 0x3079, 0x307a, 0x307b, 0x307c, 0x307d, 0x307e, 0x307f, + 0x3080, 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086, 0x3087, + 0x3088, 0x3089, 0x308a, 0x308b, 0x308c, 0x308d, 0x308e, 0x308f, + 0x3090, 0x3091, 0x3092, 0x3093, 0x3094, 0x3095, 0x3096, 0x0000, + 0x0000, 0x3099, 0x309a, 0x309b, 0x309c, 0x309d, 0x309e, 0x309f, + 0x30a0, 0x30a1, 0x30a2, 0x30a3, 0x30a4, 0x30a5, 0x30a6, 0x30a7, + 0x30a8, 0x30a9, 0x30aa, 0x30ab, 0x30ac, 0x30ad, 0x30ae, 0x30af, + 0x30b0, 0x30b1, 0x30b2, 0x30b3, 0x30b4, 0x30b5, 0x30b6, 0x30b7, + 0x30b8, 0x30b9, 0x30ba, 0x30bb, 0x30bc, 0x30bd, 0x30be, 0x30bf, + 0x30c0, 0x30c1, 0x30c2, 0x30c3, 0x30c4, 0x30c5, 0x30c6, 0x30c7, + 0x30c8, 0x30c9, 0x30ca, 0x30cb, 0x30cc, 0x30cd, 0x30ce, 0x30cf, + 0x30d0, 0x30d1, 0x30d2, 0x30d3, 0x30d4, 0x30d5, 0x30d6, 0x30d7, + 0x30d8, 0x30d9, 0x30da, 0x30db, 0x30dc, 0x30dd, 0x30de, 0x30df, + 0x30e0, 0x30e1, 0x30e2, 0x30e3, 0x30e4, 0x30e5, 0x30e6, 0x30e7, + 0x30e8, 0x30e9, 0x30ea, 0x30eb, 0x30ec, 0x30ed, 0x30ee, 0x30ef, + 0x30f0, 0x30f1, 0x30f2, 0x30f3, 0x30f4, 0x30f5, 0x30f6, 0x30f7, + 0x30f8, 0x30f9, 0x30fa, 0x30fb, 0x30fc, 0x30fd, 0x30fe, 0x30ff, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3105, 0x3106, 0x3107, + 0x3108, 0x3109, 0x310a, 0x310b, 0x310c, 0x310d, 0x310e, 0x310f, + 0x3110, 0x3111, 0x3112, 0x3113, 0x3114, 0x3115, 0x3116, 0x3117, + 0x3118, 0x3119, 0x311a, 0x311b, 0x311c, 0x311d, 0x311e, 0x311f, + 0x3120, 0x3121, 0x3122, 0x3123, 0x3124, 0x3125, 0x3126, 0x3127, + 0x3128, 0x3129, 0x312a, 0x312b, 0x312c, 0x312d, 0x0000, 0x0000, + 0x0000, 0x3131, 0x3132, 0x3133, 0x3134, 0x3135, 0x3136, 0x3137, + 0x3138, 0x3139, 0x313a, 0x313b, 0x313c, 0x313d, 0x313e, 0x313f, + 0x3140, 0x3141, 0x3142, 0x3143, 0x3144, 0x3145, 0x3146, 0x3147, + 0x3148, 0x3149, 0x314a, 0x314b, 0x314c, 0x314d, 0x314e, 0x314f, + 0x3150, 0x3151, 0x3152, 0x3153, 0x3154, 0x3155, 0x3156, 0x3157, + 0x3158, 0x3159, 0x315a, 0x315b, 0x315c, 0x315d, 0x315e, 0x315f, + 0x3160, 0x3161, 0x3162, 0x3163, 0x3164, 0x3165, 0x3166, 0x3167, + 0x3168, 0x3169, 0x316a, 0x316b, 0x316c, 0x316d, 0x316e, 0x316f, + 0x3170, 0x3171, 0x3172, 0x3173, 0x3174, 0x3175, 0x3176, 0x3177, + 0x3178, 0x3179, 0x317a, 0x317b, 0x317c, 0x317d, 0x317e, 0x317f, + 0x3180, 0x3181, 0x3182, 0x3183, 0x3184, 0x3185, 0x3186, 0x3187, + 0x3188, 0x3189, 0x318a, 0x318b, 0x318c, 0x318d, 0x318e, 0x0000, + 0x3190, 0x3191, 0x3192, 0x3193, 0x3194, 0x3195, 0x3196, 0x3197, + 0x3198, 0x3199, 0x319a, 0x319b, 0x319c, 0x319d, 0x319e, 0x319f, + 0x31a0, 0x31a1, 0x31a2, 0x31a3, 0x31a4, 0x31a5, 0x31a6, 0x31a7, + 0x31a8, 0x31a9, 0x31aa, 0x31ab, 0x31ac, 0x31ad, 0x31ae, 0x31af, + 0x31b0, 0x31b1, 0x31b2, 0x31b3, 0x31b4, 0x31b5, 0x31b6, 0x31b7, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x31c0, 0x31c1, 0x31c2, 0x31c3, 0x31c4, 0x31c5, 0x31c6, 0x31c7, + 0x31c8, 0x31c9, 0x31ca, 0x31cb, 0x31cc, 0x31cd, 0x31ce, 0x31cf, + 0x31d0, 0x31d1, 0x31d2, 0x31d3, 0x31d4, 0x31d5, 0x31d6, 0x31d7, + 0x31d8, 0x31d9, 0x31da, 0x31db, 0x31dc, 0x31dd, 0x31de, 0x31df, + 0x31e0, 0x31e1, 0x31e2, 0x31e3, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x31f0, 0x31f1, 0x31f2, 0x31f3, 0x31f4, 0x31f5, 0x31f6, 0x31f7, + 0x31f8, 0x31f9, 0x31fa, 0x31fb, 0x31fc, 0x31fd, 0x31fe, 0x31ff, + 0x3200, 0x3201, 0x3202, 0x3203, 0x3204, 0x3205, 0x3206, 0x3207, + 0x3208, 0x3209, 0x320a, 0x320b, 0x320c, 0x320d, 0x320e, 0x320f, + 0x3210, 0x3211, 0x3212, 0x3213, 0x3214, 0x3215, 0x3216, 0x3217, + 0x3218, 0x3219, 0x321a, 0x321b, 0x321c, 0x321d, 0x321e, 0x0000, + 0x3220, 0x3221, 0x3222, 0x3223, 0x3224, 0x3225, 0x3226, 0x3227, + 0x3228, 0x3229, 0x322a, 0x322b, 0x322c, 0x322d, 0x322e, 0x322f, + 0x3230, 0x3231, 0x3232, 0x3233, 0x3234, 0x3235, 0x3236, 0x3237, + 0x3238, 0x3239, 0x323a, 0x323b, 0x323c, 0x323d, 0x323e, 0x323f, + 0x3240, 0x3241, 0x3242, 0x3243, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x3250, 0x3251, 0x3252, 0x3253, 0x3254, 0x3255, 0x3256, 0x3257, + 0x3258, 0x3259, 0x325a, 0x325b, 0x325c, 0x325d, 0x325e, 0x325f, + 0x3260, 0x3261, 0x3262, 0x3263, 0x3264, 0x3265, 0x3266, 0x3267, + 0x3268, 0x3269, 0x326a, 0x326b, 0x326c, 0x326d, 0x326e, 0x326f, + 0x3270, 0x3271, 0x3272, 0x3273, 0x3274, 0x3275, 0x3276, 0x3277, + 0x3278, 0x3279, 0x327a, 0x327b, 0x327c, 0x327d, 0x327e, 0x327f, + 0x3280, 0x3281, 0x3282, 0x3283, 0x3284, 0x3285, 0x3286, 0x3287, + 0x3288, 0x3289, 0x328a, 0x328b, 0x328c, 0x328d, 0x328e, 0x328f, + 0x3290, 0x3291, 0x3292, 0x3293, 0x3294, 0x3295, 0x3296, 0x3297, + 0x3298, 0x3299, 0x329a, 0x329b, 0x329c, 0x329d, 0x329e, 0x329f, + 0x32a0, 0x32a1, 0x32a2, 0x32a3, 0x32a4, 0x32a5, 0x32a6, 0x32a7, + 0x32a8, 0x32a9, 0x32aa, 0x32ab, 0x32ac, 0x32ad, 0x32ae, 0x32af, + 0x32b0, 0x32b1, 0x32b2, 0x32b3, 0x32b4, 0x32b5, 0x32b6, 0x32b7, + 0x32b8, 0x32b9, 0x32ba, 0x32bb, 0x32bc, 0x32bd, 0x32be, 0x32bf, + 0x32c0, 0x32c1, 0x32c2, 0x32c3, 0x32c4, 0x32c5, 0x32c6, 0x32c7, + 0x32c8, 0x32c9, 0x32ca, 0x32cb, 0x32cc, 0x32cd, 0x32ce, 0x32cf, + 0x32d0, 0x32d1, 0x32d2, 0x32d3, 0x32d4, 0x32d5, 0x32d6, 0x32d7, + 0x32d8, 0x32d9, 0x32da, 0x32db, 0x32dc, 0x32dd, 0x32de, 0x32df, + 0x32e0, 0x32e1, 0x32e2, 0x32e3, 0x32e4, 0x32e5, 0x32e6, 0x32e7, + 0x32e8, 0x32e9, 0x32ea, 0x32eb, 0x32ec, 0x32ed, 0x32ee, 0x32ef, + 0x32f0, 0x32f1, 0x32f2, 0x32f3, 0x32f4, 0x32f5, 0x32f6, 0x32f7, + 0x32f8, 0x32f9, 0x32fa, 0x32fb, 0x32fc, 0x32fd, 0x32fe, 0x0000, + 0x3300, 0x3301, 0x3302, 0x3303, 0x3304, 0x3305, 0x3306, 0x3307, + 0x3308, 0x3309, 0x330a, 0x330b, 0x330c, 0x330d, 0x330e, 0x330f, + 0x3310, 0x3311, 0x3312, 0x3313, 0x3314, 0x3315, 0x3316, 0x3317, + 0x3318, 0x3319, 0x331a, 0x331b, 0x331c, 0x331d, 0x331e, 0x331f, + 0x3320, 0x3321, 0x3322, 0x3323, 0x3324, 0x3325, 0x3326, 0x3327, + 0x3328, 0x3329, 0x332a, 0x332b, 0x332c, 0x332d, 0x332e, 0x332f, + 0x3330, 0x3331, 0x3332, 0x3333, 0x3334, 0x3335, 0x3336, 0x3337, + 0x3338, 0x3339, 0x333a, 0x333b, 0x333c, 0x333d, 0x333e, 0x333f, + 0x3340, 0x3341, 0x3342, 0x3343, 0x3344, 0x3345, 0x3346, 0x3347, + 0x3348, 0x3349, 0x334a, 0x334b, 0x334c, 0x334d, 0x334e, 0x334f, + 0x3350, 0x3351, 0x3352, 0x3353, 0x3354, 0x3355, 0x3356, 0x3357, + 0x3358, 0x3359, 0x335a, 0x335b, 0x335c, 0x335d, 0x335e, 0x335f, + 0x3360, 0x3361, 0x3362, 0x3363, 0x3364, 0x3365, 0x3366, 0x3367, + 0x3368, 0x3369, 0x336a, 0x336b, 0x336c, 0x336d, 0x336e, 0x336f, + 0x3370, 0x3371, 0x3372, 0x3373, 0x3374, 0x3375, 0x3376, 0x3377, + 0x3378, 0x3379, 0x337a, 0x337b, 0x337c, 0x337d, 0x337e, 0x337f, + 0x3380, 0x3381, 0x3382, 0x3383, 0x3384, 0x3385, 0x3386, 0x3387, + 0x3388, 0x3389, 0x338a, 0x338b, 0x338c, 0x338d, 0x338e, 0x338f, + 0x3390, 0x3391, 0x3392, 0x3393, 0x3394, 0x3395, 0x3396, 0x3397, + 0x3398, 0x3399, 0x339a, 0x339b, 0x339c, 0x339d, 0x339e, 0x339f, + 0x33a0, 0x33a1, 0x33a2, 0x33a3, 0x33a4, 0x33a5, 0x33a6, 0x33a7, + 0x33a8, 0x33a9, 0x33aa, 0x33ab, 0x33ac, 0x33ad, 0x33ae, 0x33af, + 0x33b0, 0x33b1, 0x33b2, 0x33b3, 0x33b4, 0x33b5, 0x33b6, 0x33b7, + 0x33b8, 0x33b9, 0x33ba, 0x33bb, 0x33bc, 0x33bd, 0x33be, 0x33bf, + 0x33c0, 0x33c1, 0x33c2, 0x33c3, 0x33c4, 0x33c5, 0x33c6, 0x33c7, + 0x33c8, 0x33c9, 0x33ca, 0x33cb, 0x33cc, 0x33cd, 0x33ce, 0x33cf, + 0x33d0, 0x33d1, 0x33d2, 0x33d3, 0x33d4, 0x33d5, 0x33d6, 0x33d7, + 0x33d8, 0x33d9, 0x33da, 0x33db, 0x33dc, 0x33dd, 0x33de, 0x33df, + 0x33e0, 0x33e1, 0x33e2, 0x33e3, 0x33e4, 0x33e5, 0x33e6, 0x33e7, + 0x33e8, 0x33e9, 0x33ea, 0x33eb, 0x33ec, 0x33ed, 0x33ee, 0x33ef, + 0x33f0, 0x33f1, 0x33f2, 0x33f3, 0x33f4, 0x33f5, 0x33f6, 0x33f7, + 0x33f8, 0x33f9, 0x33fa, 0x33fb, 0x33fc, 0x33fd, 0x33fe, 0x33ff, + 0x3400, 0x3401, 0x3402, 0x3403, 0x3404, 0x3405, 0x3406, 0x3407, + 0x3408, 0x3409, 0x340a, 0x340b, 0x340c, 0x340d, 0x340e, 0x340f, + 0x3410, 0x3411, 0x3412, 0x3413, 0x3414, 0x3415, 0x3416, 0x3417, + 0x3418, 0x3419, 0x341a, 0x341b, 0x341c, 0x341d, 0x341e, 0x341f, + 0x3420, 0x3421, 0x3422, 0x3423, 0x3424, 0x3425, 0x3426, 0x3427, + 0x3428, 0x3429, 0x342a, 0x342b, 0x342c, 0x342d, 0x342e, 0x342f, + 0x3430, 0x3431, 0x3432, 0x3433, 0x3434, 0x3435, 0x3436, 0x3437, + 0x3438, 0x3439, 0x343a, 0x343b, 0x343c, 0x343d, 0x343e, 0x343f, + 0x3440, 0x3441, 0x3442, 0x3443, 0x3444, 0x3445, 0x3446, 0x3447, + 0x3448, 0x3449, 0x344a, 0x344b, 0x344c, 0x344d, 0x344e, 0x344f, + 0x3450, 0x3451, 0x3452, 0x3453, 0x3454, 0x3455, 0x3456, 0x3457, + 0x3458, 0x3459, 0x345a, 0x345b, 0x345c, 0x345d, 0x345e, 0x345f, + 0x3460, 0x3461, 0x3462, 0x3463, 0x3464, 0x3465, 0x3466, 0x3467, + 0x3468, 0x3469, 0x346a, 0x346b, 0x346c, 0x346d, 0x346e, 0x346f, + 0x3470, 0x3471, 0x3472, 0x3473, 0x3474, 0x3475, 0x3476, 0x3477, + 0x3478, 0x3479, 0x347a, 0x347b, 0x347c, 0x347d, 0x347e, 0x347f, + 0x3480, 0x3481, 0x3482, 0x3483, 0x3484, 0x3485, 0x3486, 0x3487, + 0x3488, 0x3489, 0x348a, 0x348b, 0x348c, 0x348d, 0x348e, 0x348f, + 0x3490, 0x3491, 0x3492, 0x3493, 0x3494, 0x3495, 0x3496, 0x3497, + 0x3498, 0x3499, 0x349a, 0x349b, 0x349c, 0x349d, 0x349e, 0x349f, + 0x34a0, 0x34a1, 0x34a2, 0x34a3, 0x34a4, 0x34a5, 0x34a6, 0x34a7, + 0x34a8, 0x34a9, 0x34aa, 0x34ab, 0x34ac, 0x34ad, 0x34ae, 0x34af, + 0x34b0, 0x34b1, 0x34b2, 0x34b3, 0x34b4, 0x34b5, 0x34b6, 0x34b7, + 0x34b8, 0x34b9, 0x34ba, 0x34bb, 0x34bc, 0x34bd, 0x34be, 0x34bf, + 0x34c0, 0x34c1, 0x34c2, 0x34c3, 0x34c4, 0x34c5, 0x34c6, 0x34c7, + 0x34c8, 0x34c9, 0x34ca, 0x34cb, 0x34cc, 0x34cd, 0x34ce, 0x34cf, + 0x34d0, 0x34d1, 0x34d2, 0x34d3, 0x34d4, 0x34d5, 0x34d6, 0x34d7, + 0x34d8, 0x34d9, 0x34da, 0x34db, 0x34dc, 0x34dd, 0x34de, 0x34df, + 0x34e0, 0x34e1, 0x34e2, 0x34e3, 0x34e4, 0x34e5, 0x34e6, 0x34e7, + 0x34e8, 0x34e9, 0x34ea, 0x34eb, 0x34ec, 0x34ed, 0x34ee, 0x34ef, + 0x34f0, 0x34f1, 0x34f2, 0x34f3, 0x34f4, 0x34f5, 0x34f6, 0x34f7, + 0x34f8, 0x34f9, 0x34fa, 0x34fb, 0x34fc, 0x34fd, 0x34fe, 0x34ff, + 0x3500, 0x3501, 0x3502, 0x3503, 0x3504, 0x3505, 0x3506, 0x3507, + 0x3508, 0x3509, 0x350a, 0x350b, 0x350c, 0x350d, 0x350e, 0x350f, + 0x3510, 0x3511, 0x3512, 0x3513, 0x3514, 0x3515, 0x3516, 0x3517, + 0x3518, 0x3519, 0x351a, 0x351b, 0x351c, 0x351d, 0x351e, 0x351f, + 0x3520, 0x3521, 0x3522, 0x3523, 0x3524, 0x3525, 0x3526, 0x3527, + 0x3528, 0x3529, 0x352a, 0x352b, 0x352c, 0x352d, 0x352e, 0x352f, + 0x3530, 0x3531, 0x3532, 0x3533, 0x3534, 0x3535, 0x3536, 0x3537, + 0x3538, 0x3539, 0x353a, 0x353b, 0x353c, 0x353d, 0x353e, 0x353f, + 0x3540, 0x3541, 0x3542, 0x3543, 0x3544, 0x3545, 0x3546, 0x3547, + 0x3548, 0x3549, 0x354a, 0x354b, 0x354c, 0x354d, 0x354e, 0x354f, + 0x3550, 0x3551, 0x3552, 0x3553, 0x3554, 0x3555, 0x3556, 0x3557, + 0x3558, 0x3559, 0x355a, 0x355b, 0x355c, 0x355d, 0x355e, 0x355f, + 0x3560, 0x3561, 0x3562, 0x3563, 0x3564, 0x3565, 0x3566, 0x3567, + 0x3568, 0x3569, 0x356a, 0x356b, 0x356c, 0x356d, 0x356e, 0x356f, + 0x3570, 0x3571, 0x3572, 0x3573, 0x3574, 0x3575, 0x3576, 0x3577, + 0x3578, 0x3579, 0x357a, 0x357b, 0x357c, 0x357d, 0x357e, 0x357f, + 0x3580, 0x3581, 0x3582, 0x3583, 0x3584, 0x3585, 0x3586, 0x3587, + 0x3588, 0x3589, 0x358a, 0x358b, 0x358c, 0x358d, 0x358e, 0x358f, + 0x3590, 0x3591, 0x3592, 0x3593, 0x3594, 0x3595, 0x3596, 0x3597, + 0x3598, 0x3599, 0x359a, 0x359b, 0x359c, 0x359d, 0x359e, 0x359f, + 0x35a0, 0x35a1, 0x35a2, 0x35a3, 0x35a4, 0x35a5, 0x35a6, 0x35a7, + 0x35a8, 0x35a9, 0x35aa, 0x35ab, 0x35ac, 0x35ad, 0x35ae, 0x35af, + 0x35b0, 0x35b1, 0x35b2, 0x35b3, 0x35b4, 0x35b5, 0x35b6, 0x35b7, + 0x35b8, 0x35b9, 0x35ba, 0x35bb, 0x35bc, 0x35bd, 0x35be, 0x35bf, + 0x35c0, 0x35c1, 0x35c2, 0x35c3, 0x35c4, 0x35c5, 0x35c6, 0x35c7, + 0x35c8, 0x35c9, 0x35ca, 0x35cb, 0x35cc, 0x35cd, 0x35ce, 0x35cf, + 0x35d0, 0x35d1, 0x35d2, 0x35d3, 0x35d4, 0x35d5, 0x35d6, 0x35d7, + 0x35d8, 0x35d9, 0x35da, 0x35db, 0x35dc, 0x35dd, 0x35de, 0x35df, + 0x35e0, 0x35e1, 0x35e2, 0x35e3, 0x35e4, 0x35e5, 0x35e6, 0x35e7, + 0x35e8, 0x35e9, 0x35ea, 0x35eb, 0x35ec, 0x35ed, 0x35ee, 0x35ef, + 0x35f0, 0x35f1, 0x35f2, 0x35f3, 0x35f4, 0x35f5, 0x35f6, 0x35f7, + 0x35f8, 0x35f9, 0x35fa, 0x35fb, 0x35fc, 0x35fd, 0x35fe, 0x35ff, + 0x3600, 0x3601, 0x3602, 0x3603, 0x3604, 0x3605, 0x3606, 0x3607, + 0x3608, 0x3609, 0x360a, 0x360b, 0x360c, 0x360d, 0x360e, 0x360f, + 0x3610, 0x3611, 0x3612, 0x3613, 0x3614, 0x3615, 0x3616, 0x3617, + 0x3618, 0x3619, 0x361a, 0x361b, 0x361c, 0x361d, 0x361e, 0x361f, + 0x3620, 0x3621, 0x3622, 0x3623, 0x3624, 0x3625, 0x3626, 0x3627, + 0x3628, 0x3629, 0x362a, 0x362b, 0x362c, 0x362d, 0x362e, 0x362f, + 0x3630, 0x3631, 0x3632, 0x3633, 0x3634, 0x3635, 0x3636, 0x3637, + 0x3638, 0x3639, 0x363a, 0x363b, 0x363c, 0x363d, 0x363e, 0x363f, + 0x3640, 0x3641, 0x3642, 0x3643, 0x3644, 0x3645, 0x3646, 0x3647, + 0x3648, 0x3649, 0x364a, 0x364b, 0x364c, 0x364d, 0x364e, 0x364f, + 0x3650, 0x3651, 0x3652, 0x3653, 0x3654, 0x3655, 0x3656, 0x3657, + 0x3658, 0x3659, 0x365a, 0x365b, 0x365c, 0x365d, 0x365e, 0x365f, + 0x3660, 0x3661, 0x3662, 0x3663, 0x3664, 0x3665, 0x3666, 0x3667, + 0x3668, 0x3669, 0x366a, 0x366b, 0x366c, 0x366d, 0x366e, 0x366f, + 0x3670, 0x3671, 0x3672, 0x3673, 0x3674, 0x3675, 0x3676, 0x3677, + 0x3678, 0x3679, 0x367a, 0x367b, 0x367c, 0x367d, 0x367e, 0x367f, + 0x3680, 0x3681, 0x3682, 0x3683, 0x3684, 0x3685, 0x3686, 0x3687, + 0x3688, 0x3689, 0x368a, 0x368b, 0x368c, 0x368d, 0x368e, 0x368f, + 0x3690, 0x3691, 0x3692, 0x3693, 0x3694, 0x3695, 0x3696, 0x3697, + 0x3698, 0x3699, 0x369a, 0x369b, 0x369c, 0x369d, 0x369e, 0x369f, + 0x36a0, 0x36a1, 0x36a2, 0x36a3, 0x36a4, 0x36a5, 0x36a6, 0x36a7, + 0x36a8, 0x36a9, 0x36aa, 0x36ab, 0x36ac, 0x36ad, 0x36ae, 0x36af, + 0x36b0, 0x36b1, 0x36b2, 0x36b3, 0x36b4, 0x36b5, 0x36b6, 0x36b7, + 0x36b8, 0x36b9, 0x36ba, 0x36bb, 0x36bc, 0x36bd, 0x36be, 0x36bf, + 0x36c0, 0x36c1, 0x36c2, 0x36c3, 0x36c4, 0x36c5, 0x36c6, 0x36c7, + 0x36c8, 0x36c9, 0x36ca, 0x36cb, 0x36cc, 0x36cd, 0x36ce, 0x36cf, + 0x36d0, 0x36d1, 0x36d2, 0x36d3, 0x36d4, 0x36d5, 0x36d6, 0x36d7, + 0x36d8, 0x36d9, 0x36da, 0x36db, 0x36dc, 0x36dd, 0x36de, 0x36df, + 0x36e0, 0x36e1, 0x36e2, 0x36e3, 0x36e4, 0x36e5, 0x36e6, 0x36e7, + 0x36e8, 0x36e9, 0x36ea, 0x36eb, 0x36ec, 0x36ed, 0x36ee, 0x36ef, + 0x36f0, 0x36f1, 0x36f2, 0x36f3, 0x36f4, 0x36f5, 0x36f6, 0x36f7, + 0x36f8, 0x36f9, 0x36fa, 0x36fb, 0x36fc, 0x36fd, 0x36fe, 0x36ff, + 0x3700, 0x3701, 0x3702, 0x3703, 0x3704, 0x3705, 0x3706, 0x3707, + 0x3708, 0x3709, 0x370a, 0x370b, 0x370c, 0x370d, 0x370e, 0x370f, + 0x3710, 0x3711, 0x3712, 0x3713, 0x3714, 0x3715, 0x3716, 0x3717, + 0x3718, 0x3719, 0x371a, 0x371b, 0x371c, 0x371d, 0x371e, 0x371f, + 0x3720, 0x3721, 0x3722, 0x3723, 0x3724, 0x3725, 0x3726, 0x3727, + 0x3728, 0x3729, 0x372a, 0x372b, 0x372c, 0x372d, 0x372e, 0x372f, + 0x3730, 0x3731, 0x3732, 0x3733, 0x3734, 0x3735, 0x3736, 0x3737, + 0x3738, 0x3739, 0x373a, 0x373b, 0x373c, 0x373d, 0x373e, 0x373f, + 0x3740, 0x3741, 0x3742, 0x3743, 0x3744, 0x3745, 0x3746, 0x3747, + 0x3748, 0x3749, 0x374a, 0x374b, 0x374c, 0x374d, 0x374e, 0x374f, + 0x3750, 0x3751, 0x3752, 0x3753, 0x3754, 0x3755, 0x3756, 0x3757, + 0x3758, 0x3759, 0x375a, 0x375b, 0x375c, 0x375d, 0x375e, 0x375f, + 0x3760, 0x3761, 0x3762, 0x3763, 0x3764, 0x3765, 0x3766, 0x3767, + 0x3768, 0x3769, 0x376a, 0x376b, 0x376c, 0x376d, 0x376e, 0x376f, + 0x3770, 0x3771, 0x3772, 0x3773, 0x3774, 0x3775, 0x3776, 0x3777, + 0x3778, 0x3779, 0x377a, 0x377b, 0x377c, 0x377d, 0x377e, 0x377f, + 0x3780, 0x3781, 0x3782, 0x3783, 0x3784, 0x3785, 0x3786, 0x3787, + 0x3788, 0x3789, 0x378a, 0x378b, 0x378c, 0x378d, 0x378e, 0x378f, + 0x3790, 0x3791, 0x3792, 0x3793, 0x3794, 0x3795, 0x3796, 0x3797, + 0x3798, 0x3799, 0x379a, 0x379b, 0x379c, 0x379d, 0x379e, 0x379f, + 0x37a0, 0x37a1, 0x37a2, 0x37a3, 0x37a4, 0x37a5, 0x37a6, 0x37a7, + 0x37a8, 0x37a9, 0x37aa, 0x37ab, 0x37ac, 0x37ad, 0x37ae, 0x37af, + 0x37b0, 0x37b1, 0x37b2, 0x37b3, 0x37b4, 0x37b5, 0x37b6, 0x37b7, + 0x37b8, 0x37b9, 0x37ba, 0x37bb, 0x37bc, 0x37bd, 0x37be, 0x37bf, + 0x37c0, 0x37c1, 0x37c2, 0x37c3, 0x37c4, 0x37c5, 0x37c6, 0x37c7, + 0x37c8, 0x37c9, 0x37ca, 0x37cb, 0x37cc, 0x37cd, 0x37ce, 0x37cf, + 0x37d0, 0x37d1, 0x37d2, 0x37d3, 0x37d4, 0x37d5, 0x37d6, 0x37d7, + 0x37d8, 0x37d9, 0x37da, 0x37db, 0x37dc, 0x37dd, 0x37de, 0x37df, + 0x37e0, 0x37e1, 0x37e2, 0x37e3, 0x37e4, 0x37e5, 0x37e6, 0x37e7, + 0x37e8, 0x37e9, 0x37ea, 0x37eb, 0x37ec, 0x37ed, 0x37ee, 0x37ef, + 0x37f0, 0x37f1, 0x37f2, 0x37f3, 0x37f4, 0x37f5, 0x37f6, 0x37f7, + 0x37f8, 0x37f9, 0x37fa, 0x37fb, 0x37fc, 0x37fd, 0x37fe, 0x37ff, + 0x3800, 0x3801, 0x3802, 0x3803, 0x3804, 0x3805, 0x3806, 0x3807, + 0x3808, 0x3809, 0x380a, 0x380b, 0x380c, 0x380d, 0x380e, 0x380f, + 0x3810, 0x3811, 0x3812, 0x3813, 0x3814, 0x3815, 0x3816, 0x3817, + 0x3818, 0x3819, 0x381a, 0x381b, 0x381c, 0x381d, 0x381e, 0x381f, + 0x3820, 0x3821, 0x3822, 0x3823, 0x3824, 0x3825, 0x3826, 0x3827, + 0x3828, 0x3829, 0x382a, 0x382b, 0x382c, 0x382d, 0x382e, 0x382f, + 0x3830, 0x3831, 0x3832, 0x3833, 0x3834, 0x3835, 0x3836, 0x3837, + 0x3838, 0x3839, 0x383a, 0x383b, 0x383c, 0x383d, 0x383e, 0x383f, + 0x3840, 0x3841, 0x3842, 0x3843, 0x3844, 0x3845, 0x3846, 0x3847, + 0x3848, 0x3849, 0x384a, 0x384b, 0x384c, 0x384d, 0x384e, 0x384f, + 0x3850, 0x3851, 0x3852, 0x3853, 0x3854, 0x3855, 0x3856, 0x3857, + 0x3858, 0x3859, 0x385a, 0x385b, 0x385c, 0x385d, 0x385e, 0x385f, + 0x3860, 0x3861, 0x3862, 0x3863, 0x3864, 0x3865, 0x3866, 0x3867, + 0x3868, 0x3869, 0x386a, 0x386b, 0x386c, 0x386d, 0x386e, 0x386f, + 0x3870, 0x3871, 0x3872, 0x3873, 0x3874, 0x3875, 0x3876, 0x3877, + 0x3878, 0x3879, 0x387a, 0x387b, 0x387c, 0x387d, 0x387e, 0x387f, + 0x3880, 0x3881, 0x3882, 0x3883, 0x3884, 0x3885, 0x3886, 0x3887, + 0x3888, 0x3889, 0x388a, 0x388b, 0x388c, 0x388d, 0x388e, 0x388f, + 0x3890, 0x3891, 0x3892, 0x3893, 0x3894, 0x3895, 0x3896, 0x3897, + 0x3898, 0x3899, 0x389a, 0x389b, 0x389c, 0x389d, 0x389e, 0x389f, + 0x38a0, 0x38a1, 0x38a2, 0x38a3, 0x38a4, 0x38a5, 0x38a6, 0x38a7, + 0x38a8, 0x38a9, 0x38aa, 0x38ab, 0x38ac, 0x38ad, 0x38ae, 0x38af, + 0x38b0, 0x38b1, 0x38b2, 0x38b3, 0x38b4, 0x38b5, 0x38b6, 0x38b7, + 0x38b8, 0x38b9, 0x38ba, 0x38bb, 0x38bc, 0x38bd, 0x38be, 0x38bf, + 0x38c0, 0x38c1, 0x38c2, 0x38c3, 0x38c4, 0x38c5, 0x38c6, 0x38c7, + 0x38c8, 0x38c9, 0x38ca, 0x38cb, 0x38cc, 0x38cd, 0x38ce, 0x38cf, + 0x38d0, 0x38d1, 0x38d2, 0x38d3, 0x38d4, 0x38d5, 0x38d6, 0x38d7, + 0x38d8, 0x38d9, 0x38da, 0x38db, 0x38dc, 0x38dd, 0x38de, 0x38df, + 0x38e0, 0x38e1, 0x38e2, 0x38e3, 0x38e4, 0x38e5, 0x38e6, 0x38e7, + 0x38e8, 0x38e9, 0x38ea, 0x38eb, 0x38ec, 0x38ed, 0x38ee, 0x38ef, + 0x38f0, 0x38f1, 0x38f2, 0x38f3, 0x38f4, 0x38f5, 0x38f6, 0x38f7, + 0x38f8, 0x38f9, 0x38fa, 0x38fb, 0x38fc, 0x38fd, 0x38fe, 0x38ff, + 0x3900, 0x3901, 0x3902, 0x3903, 0x3904, 0x3905, 0x3906, 0x3907, + 0x3908, 0x3909, 0x390a, 0x390b, 0x390c, 0x390d, 0x390e, 0x390f, + 0x3910, 0x3911, 0x3912, 0x3913, 0x3914, 0x3915, 0x3916, 0x3917, + 0x3918, 0x3919, 0x391a, 0x391b, 0x391c, 0x391d, 0x391e, 0x391f, + 0x3920, 0x3921, 0x3922, 0x3923, 0x3924, 0x3925, 0x3926, 0x3927, + 0x3928, 0x3929, 0x392a, 0x392b, 0x392c, 0x392d, 0x392e, 0x392f, + 0x3930, 0x3931, 0x3932, 0x3933, 0x3934, 0x3935, 0x3936, 0x3937, + 0x3938, 0x3939, 0x393a, 0x393b, 0x393c, 0x393d, 0x393e, 0x393f, + 0x3940, 0x3941, 0x3942, 0x3943, 0x3944, 0x3945, 0x3946, 0x3947, + 0x3948, 0x3949, 0x394a, 0x394b, 0x394c, 0x394d, 0x394e, 0x394f, + 0x3950, 0x3951, 0x3952, 0x3953, 0x3954, 0x3955, 0x3956, 0x3957, + 0x3958, 0x3959, 0x395a, 0x395b, 0x395c, 0x395d, 0x395e, 0x395f, + 0x3960, 0x3961, 0x3962, 0x3963, 0x3964, 0x3965, 0x3966, 0x3967, + 0x3968, 0x3969, 0x396a, 0x396b, 0x396c, 0x396d, 0x396e, 0x396f, + 0x3970, 0x3971, 0x3972, 0x3973, 0x3974, 0x3975, 0x3976, 0x3977, + 0x3978, 0x3979, 0x397a, 0x397b, 0x397c, 0x397d, 0x397e, 0x397f, + 0x3980, 0x3981, 0x3982, 0x3983, 0x3984, 0x3985, 0x3986, 0x3987, + 0x3988, 0x3989, 0x398a, 0x398b, 0x398c, 0x398d, 0x398e, 0x398f, + 0x3990, 0x3991, 0x3992, 0x3993, 0x3994, 0x3995, 0x3996, 0x3997, + 0x3998, 0x3999, 0x399a, 0x399b, 0x399c, 0x399d, 0x399e, 0x399f, + 0x39a0, 0x39a1, 0x39a2, 0x39a3, 0x39a4, 0x39a5, 0x39a6, 0x39a7, + 0x39a8, 0x39a9, 0x39aa, 0x39ab, 0x39ac, 0x39ad, 0x39ae, 0x39af, + 0x39b0, 0x39b1, 0x39b2, 0x39b3, 0x39b4, 0x39b5, 0x39b6, 0x39b7, + 0x39b8, 0x39b9, 0x39ba, 0x39bb, 0x39bc, 0x39bd, 0x39be, 0x39bf, + 0x39c0, 0x39c1, 0x39c2, 0x39c3, 0x39c4, 0x39c5, 0x39c6, 0x39c7, + 0x39c8, 0x39c9, 0x39ca, 0x39cb, 0x39cc, 0x39cd, 0x39ce, 0x39cf, + 0x39d0, 0x39d1, 0x39d2, 0x39d3, 0x39d4, 0x39d5, 0x39d6, 0x39d7, + 0x39d8, 0x39d9, 0x39da, 0x39db, 0x39dc, 0x39dd, 0x39de, 0x39df, + 0x39e0, 0x39e1, 0x39e2, 0x39e3, 0x39e4, 0x39e5, 0x39e6, 0x39e7, + 0x39e8, 0x39e9, 0x39ea, 0x39eb, 0x39ec, 0x39ed, 0x39ee, 0x39ef, + 0x39f0, 0x39f1, 0x39f2, 0x39f3, 0x39f4, 0x39f5, 0x39f6, 0x39f7, + 0x39f8, 0x39f9, 0x39fa, 0x39fb, 0x39fc, 0x39fd, 0x39fe, 0x39ff, + 0x3a00, 0x3a01, 0x3a02, 0x3a03, 0x3a04, 0x3a05, 0x3a06, 0x3a07, + 0x3a08, 0x3a09, 0x3a0a, 0x3a0b, 0x3a0c, 0x3a0d, 0x3a0e, 0x3a0f, + 0x3a10, 0x3a11, 0x3a12, 0x3a13, 0x3a14, 0x3a15, 0x3a16, 0x3a17, + 0x3a18, 0x3a19, 0x3a1a, 0x3a1b, 0x3a1c, 0x3a1d, 0x3a1e, 0x3a1f, + 0x3a20, 0x3a21, 0x3a22, 0x3a23, 0x3a24, 0x3a25, 0x3a26, 0x3a27, + 0x3a28, 0x3a29, 0x3a2a, 0x3a2b, 0x3a2c, 0x3a2d, 0x3a2e, 0x3a2f, + 0x3a30, 0x3a31, 0x3a32, 0x3a33, 0x3a34, 0x3a35, 0x3a36, 0x3a37, + 0x3a38, 0x3a39, 0x3a3a, 0x3a3b, 0x3a3c, 0x3a3d, 0x3a3e, 0x3a3f, + 0x3a40, 0x3a41, 0x3a42, 0x3a43, 0x3a44, 0x3a45, 0x3a46, 0x3a47, + 0x3a48, 0x3a49, 0x3a4a, 0x3a4b, 0x3a4c, 0x3a4d, 0x3a4e, 0x3a4f, + 0x3a50, 0x3a51, 0x3a52, 0x3a53, 0x3a54, 0x3a55, 0x3a56, 0x3a57, + 0x3a58, 0x3a59, 0x3a5a, 0x3a5b, 0x3a5c, 0x3a5d, 0x3a5e, 0x3a5f, + 0x3a60, 0x3a61, 0x3a62, 0x3a63, 0x3a64, 0x3a65, 0x3a66, 0x3a67, + 0x3a68, 0x3a69, 0x3a6a, 0x3a6b, 0x3a6c, 0x3a6d, 0x3a6e, 0x3a6f, + 0x3a70, 0x3a71, 0x3a72, 0x3a73, 0x3a74, 0x3a75, 0x3a76, 0x3a77, + 0x3a78, 0x3a79, 0x3a7a, 0x3a7b, 0x3a7c, 0x3a7d, 0x3a7e, 0x3a7f, + 0x3a80, 0x3a81, 0x3a82, 0x3a83, 0x3a84, 0x3a85, 0x3a86, 0x3a87, + 0x3a88, 0x3a89, 0x3a8a, 0x3a8b, 0x3a8c, 0x3a8d, 0x3a8e, 0x3a8f, + 0x3a90, 0x3a91, 0x3a92, 0x3a93, 0x3a94, 0x3a95, 0x3a96, 0x3a97, + 0x3a98, 0x3a99, 0x3a9a, 0x3a9b, 0x3a9c, 0x3a9d, 0x3a9e, 0x3a9f, + 0x3aa0, 0x3aa1, 0x3aa2, 0x3aa3, 0x3aa4, 0x3aa5, 0x3aa6, 0x3aa7, + 0x3aa8, 0x3aa9, 0x3aaa, 0x3aab, 0x3aac, 0x3aad, 0x3aae, 0x3aaf, + 0x3ab0, 0x3ab1, 0x3ab2, 0x3ab3, 0x3ab4, 0x3ab5, 0x3ab6, 0x3ab7, + 0x3ab8, 0x3ab9, 0x3aba, 0x3abb, 0x3abc, 0x3abd, 0x3abe, 0x3abf, + 0x3ac0, 0x3ac1, 0x3ac2, 0x3ac3, 0x3ac4, 0x3ac5, 0x3ac6, 0x3ac7, + 0x3ac8, 0x3ac9, 0x3aca, 0x3acb, 0x3acc, 0x3acd, 0x3ace, 0x3acf, + 0x3ad0, 0x3ad1, 0x3ad2, 0x3ad3, 0x3ad4, 0x3ad5, 0x3ad6, 0x3ad7, + 0x3ad8, 0x3ad9, 0x3ada, 0x3adb, 0x3adc, 0x3add, 0x3ade, 0x3adf, + 0x3ae0, 0x3ae1, 0x3ae2, 0x3ae3, 0x3ae4, 0x3ae5, 0x3ae6, 0x3ae7, + 0x3ae8, 0x3ae9, 0x3aea, 0x3aeb, 0x3aec, 0x3aed, 0x3aee, 0x3aef, + 0x3af0, 0x3af1, 0x3af2, 0x3af3, 0x3af4, 0x3af5, 0x3af6, 0x3af7, + 0x3af8, 0x3af9, 0x3afa, 0x3afb, 0x3afc, 0x3afd, 0x3afe, 0x3aff, + 0x3b00, 0x3b01, 0x3b02, 0x3b03, 0x3b04, 0x3b05, 0x3b06, 0x3b07, + 0x3b08, 0x3b09, 0x3b0a, 0x3b0b, 0x3b0c, 0x3b0d, 0x3b0e, 0x3b0f, + 0x3b10, 0x3b11, 0x3b12, 0x3b13, 0x3b14, 0x3b15, 0x3b16, 0x3b17, + 0x3b18, 0x3b19, 0x3b1a, 0x3b1b, 0x3b1c, 0x3b1d, 0x3b1e, 0x3b1f, + 0x3b20, 0x3b21, 0x3b22, 0x3b23, 0x3b24, 0x3b25, 0x3b26, 0x3b27, + 0x3b28, 0x3b29, 0x3b2a, 0x3b2b, 0x3b2c, 0x3b2d, 0x3b2e, 0x3b2f, + 0x3b30, 0x3b31, 0x3b32, 0x3b33, 0x3b34, 0x3b35, 0x3b36, 0x3b37, + 0x3b38, 0x3b39, 0x3b3a, 0x3b3b, 0x3b3c, 0x3b3d, 0x3b3e, 0x3b3f, + 0x3b40, 0x3b41, 0x3b42, 0x3b43, 0x3b44, 0x3b45, 0x3b46, 0x3b47, + 0x3b48, 0x3b49, 0x3b4a, 0x3b4b, 0x3b4c, 0x3b4d, 0x3b4e, 0x3b4f, + 0x3b50, 0x3b51, 0x3b52, 0x3b53, 0x3b54, 0x3b55, 0x3b56, 0x3b57, + 0x3b58, 0x3b59, 0x3b5a, 0x3b5b, 0x3b5c, 0x3b5d, 0x3b5e, 0x3b5f, + 0x3b60, 0x3b61, 0x3b62, 0x3b63, 0x3b64, 0x3b65, 0x3b66, 0x3b67, + 0x3b68, 0x3b69, 0x3b6a, 0x3b6b, 0x3b6c, 0x3b6d, 0x3b6e, 0x3b6f, + 0x3b70, 0x3b71, 0x3b72, 0x3b73, 0x3b74, 0x3b75, 0x3b76, 0x3b77, + 0x3b78, 0x3b79, 0x3b7a, 0x3b7b, 0x3b7c, 0x3b7d, 0x3b7e, 0x3b7f, + 0x3b80, 0x3b81, 0x3b82, 0x3b83, 0x3b84, 0x3b85, 0x3b86, 0x3b87, + 0x3b88, 0x3b89, 0x3b8a, 0x3b8b, 0x3b8c, 0x3b8d, 0x3b8e, 0x3b8f, + 0x3b90, 0x3b91, 0x3b92, 0x3b93, 0x3b94, 0x3b95, 0x3b96, 0x3b97, + 0x3b98, 0x3b99, 0x3b9a, 0x3b9b, 0x3b9c, 0x3b9d, 0x3b9e, 0x3b9f, + 0x3ba0, 0x3ba1, 0x3ba2, 0x3ba3, 0x3ba4, 0x3ba5, 0x3ba6, 0x3ba7, + 0x3ba8, 0x3ba9, 0x3baa, 0x3bab, 0x3bac, 0x3bad, 0x3bae, 0x3baf, + 0x3bb0, 0x3bb1, 0x3bb2, 0x3bb3, 0x3bb4, 0x3bb5, 0x3bb6, 0x3bb7, + 0x3bb8, 0x3bb9, 0x3bba, 0x3bbb, 0x3bbc, 0x3bbd, 0x3bbe, 0x3bbf, + 0x3bc0, 0x3bc1, 0x3bc2, 0x3bc3, 0x3bc4, 0x3bc5, 0x3bc6, 0x3bc7, + 0x3bc8, 0x3bc9, 0x3bca, 0x3bcb, 0x3bcc, 0x3bcd, 0x3bce, 0x3bcf, + 0x3bd0, 0x3bd1, 0x3bd2, 0x3bd3, 0x3bd4, 0x3bd5, 0x3bd6, 0x3bd7, + 0x3bd8, 0x3bd9, 0x3bda, 0x3bdb, 0x3bdc, 0x3bdd, 0x3bde, 0x3bdf, + 0x3be0, 0x3be1, 0x3be2, 0x3be3, 0x3be4, 0x3be5, 0x3be6, 0x3be7, + 0x3be8, 0x3be9, 0x3bea, 0x3beb, 0x3bec, 0x3bed, 0x3bee, 0x3bef, + 0x3bf0, 0x3bf1, 0x3bf2, 0x3bf3, 0x3bf4, 0x3bf5, 0x3bf6, 0x3bf7, + 0x3bf8, 0x3bf9, 0x3bfa, 0x3bfb, 0x3bfc, 0x3bfd, 0x3bfe, 0x3bff, + 0x3c00, 0x3c01, 0x3c02, 0x3c03, 0x3c04, 0x3c05, 0x3c06, 0x3c07, + 0x3c08, 0x3c09, 0x3c0a, 0x3c0b, 0x3c0c, 0x3c0d, 0x3c0e, 0x3c0f, + 0x3c10, 0x3c11, 0x3c12, 0x3c13, 0x3c14, 0x3c15, 0x3c16, 0x3c17, + 0x3c18, 0x3c19, 0x3c1a, 0x3c1b, 0x3c1c, 0x3c1d, 0x3c1e, 0x3c1f, + 0x3c20, 0x3c21, 0x3c22, 0x3c23, 0x3c24, 0x3c25, 0x3c26, 0x3c27, + 0x3c28, 0x3c29, 0x3c2a, 0x3c2b, 0x3c2c, 0x3c2d, 0x3c2e, 0x3c2f, + 0x3c30, 0x3c31, 0x3c32, 0x3c33, 0x3c34, 0x3c35, 0x3c36, 0x3c37, + 0x3c38, 0x3c39, 0x3c3a, 0x3c3b, 0x3c3c, 0x3c3d, 0x3c3e, 0x3c3f, + 0x3c40, 0x3c41, 0x3c42, 0x3c43, 0x3c44, 0x3c45, 0x3c46, 0x3c47, + 0x3c48, 0x3c49, 0x3c4a, 0x3c4b, 0x3c4c, 0x3c4d, 0x3c4e, 0x3c4f, + 0x3c50, 0x3c51, 0x3c52, 0x3c53, 0x3c54, 0x3c55, 0x3c56, 0x3c57, + 0x3c58, 0x3c59, 0x3c5a, 0x3c5b, 0x3c5c, 0x3c5d, 0x3c5e, 0x3c5f, + 0x3c60, 0x3c61, 0x3c62, 0x3c63, 0x3c64, 0x3c65, 0x3c66, 0x3c67, + 0x3c68, 0x3c69, 0x3c6a, 0x3c6b, 0x3c6c, 0x3c6d, 0x3c6e, 0x3c6f, + 0x3c70, 0x3c71, 0x3c72, 0x3c73, 0x3c74, 0x3c75, 0x3c76, 0x3c77, + 0x3c78, 0x3c79, 0x3c7a, 0x3c7b, 0x3c7c, 0x3c7d, 0x3c7e, 0x3c7f, + 0x3c80, 0x3c81, 0x3c82, 0x3c83, 0x3c84, 0x3c85, 0x3c86, 0x3c87, + 0x3c88, 0x3c89, 0x3c8a, 0x3c8b, 0x3c8c, 0x3c8d, 0x3c8e, 0x3c8f, + 0x3c90, 0x3c91, 0x3c92, 0x3c93, 0x3c94, 0x3c95, 0x3c96, 0x3c97, + 0x3c98, 0x3c99, 0x3c9a, 0x3c9b, 0x3c9c, 0x3c9d, 0x3c9e, 0x3c9f, + 0x3ca0, 0x3ca1, 0x3ca2, 0x3ca3, 0x3ca4, 0x3ca5, 0x3ca6, 0x3ca7, + 0x3ca8, 0x3ca9, 0x3caa, 0x3cab, 0x3cac, 0x3cad, 0x3cae, 0x3caf, + 0x3cb0, 0x3cb1, 0x3cb2, 0x3cb3, 0x3cb4, 0x3cb5, 0x3cb6, 0x3cb7, + 0x3cb8, 0x3cb9, 0x3cba, 0x3cbb, 0x3cbc, 0x3cbd, 0x3cbe, 0x3cbf, + 0x3cc0, 0x3cc1, 0x3cc2, 0x3cc3, 0x3cc4, 0x3cc5, 0x3cc6, 0x3cc7, + 0x3cc8, 0x3cc9, 0x3cca, 0x3ccb, 0x3ccc, 0x3ccd, 0x3cce, 0x3ccf, + 0x3cd0, 0x3cd1, 0x3cd2, 0x3cd3, 0x3cd4, 0x3cd5, 0x3cd6, 0x3cd7, + 0x3cd8, 0x3cd9, 0x3cda, 0x3cdb, 0x3cdc, 0x3cdd, 0x3cde, 0x3cdf, + 0x3ce0, 0x3ce1, 0x3ce2, 0x3ce3, 0x3ce4, 0x3ce5, 0x3ce6, 0x3ce7, + 0x3ce8, 0x3ce9, 0x3cea, 0x3ceb, 0x3cec, 0x3ced, 0x3cee, 0x3cef, + 0x3cf0, 0x3cf1, 0x3cf2, 0x3cf3, 0x3cf4, 0x3cf5, 0x3cf6, 0x3cf7, + 0x3cf8, 0x3cf9, 0x3cfa, 0x3cfb, 0x3cfc, 0x3cfd, 0x3cfe, 0x3cff, + 0x3d00, 0x3d01, 0x3d02, 0x3d03, 0x3d04, 0x3d05, 0x3d06, 0x3d07, + 0x3d08, 0x3d09, 0x3d0a, 0x3d0b, 0x3d0c, 0x3d0d, 0x3d0e, 0x3d0f, + 0x3d10, 0x3d11, 0x3d12, 0x3d13, 0x3d14, 0x3d15, 0x3d16, 0x3d17, + 0x3d18, 0x3d19, 0x3d1a, 0x3d1b, 0x3d1c, 0x3d1d, 0x3d1e, 0x3d1f, + 0x3d20, 0x3d21, 0x3d22, 0x3d23, 0x3d24, 0x3d25, 0x3d26, 0x3d27, + 0x3d28, 0x3d29, 0x3d2a, 0x3d2b, 0x3d2c, 0x3d2d, 0x3d2e, 0x3d2f, + 0x3d30, 0x3d31, 0x3d32, 0x3d33, 0x3d34, 0x3d35, 0x3d36, 0x3d37, + 0x3d38, 0x3d39, 0x3d3a, 0x3d3b, 0x3d3c, 0x3d3d, 0x3d3e, 0x3d3f, + 0x3d40, 0x3d41, 0x3d42, 0x3d43, 0x3d44, 0x3d45, 0x3d46, 0x3d47, + 0x3d48, 0x3d49, 0x3d4a, 0x3d4b, 0x3d4c, 0x3d4d, 0x3d4e, 0x3d4f, + 0x3d50, 0x3d51, 0x3d52, 0x3d53, 0x3d54, 0x3d55, 0x3d56, 0x3d57, + 0x3d58, 0x3d59, 0x3d5a, 0x3d5b, 0x3d5c, 0x3d5d, 0x3d5e, 0x3d5f, + 0x3d60, 0x3d61, 0x3d62, 0x3d63, 0x3d64, 0x3d65, 0x3d66, 0x3d67, + 0x3d68, 0x3d69, 0x3d6a, 0x3d6b, 0x3d6c, 0x3d6d, 0x3d6e, 0x3d6f, + 0x3d70, 0x3d71, 0x3d72, 0x3d73, 0x3d74, 0x3d75, 0x3d76, 0x3d77, + 0x3d78, 0x3d79, 0x3d7a, 0x3d7b, 0x3d7c, 0x3d7d, 0x3d7e, 0x3d7f, + 0x3d80, 0x3d81, 0x3d82, 0x3d83, 0x3d84, 0x3d85, 0x3d86, 0x3d87, + 0x3d88, 0x3d89, 0x3d8a, 0x3d8b, 0x3d8c, 0x3d8d, 0x3d8e, 0x3d8f, + 0x3d90, 0x3d91, 0x3d92, 0x3d93, 0x3d94, 0x3d95, 0x3d96, 0x3d97, + 0x3d98, 0x3d99, 0x3d9a, 0x3d9b, 0x3d9c, 0x3d9d, 0x3d9e, 0x3d9f, + 0x3da0, 0x3da1, 0x3da2, 0x3da3, 0x3da4, 0x3da5, 0x3da6, 0x3da7, + 0x3da8, 0x3da9, 0x3daa, 0x3dab, 0x3dac, 0x3dad, 0x3dae, 0x3daf, + 0x3db0, 0x3db1, 0x3db2, 0x3db3, 0x3db4, 0x3db5, 0x3db6, 0x3db7, + 0x3db8, 0x3db9, 0x3dba, 0x3dbb, 0x3dbc, 0x3dbd, 0x3dbe, 0x3dbf, + 0x3dc0, 0x3dc1, 0x3dc2, 0x3dc3, 0x3dc4, 0x3dc5, 0x3dc6, 0x3dc7, + 0x3dc8, 0x3dc9, 0x3dca, 0x3dcb, 0x3dcc, 0x3dcd, 0x3dce, 0x3dcf, + 0x3dd0, 0x3dd1, 0x3dd2, 0x3dd3, 0x3dd4, 0x3dd5, 0x3dd6, 0x3dd7, + 0x3dd8, 0x3dd9, 0x3dda, 0x3ddb, 0x3ddc, 0x3ddd, 0x3dde, 0x3ddf, + 0x3de0, 0x3de1, 0x3de2, 0x3de3, 0x3de4, 0x3de5, 0x3de6, 0x3de7, + 0x3de8, 0x3de9, 0x3dea, 0x3deb, 0x3dec, 0x3ded, 0x3dee, 0x3def, + 0x3df0, 0x3df1, 0x3df2, 0x3df3, 0x3df4, 0x3df5, 0x3df6, 0x3df7, + 0x3df8, 0x3df9, 0x3dfa, 0x3dfb, 0x3dfc, 0x3dfd, 0x3dfe, 0x3dff, + 0x3e00, 0x3e01, 0x3e02, 0x3e03, 0x3e04, 0x3e05, 0x3e06, 0x3e07, + 0x3e08, 0x3e09, 0x3e0a, 0x3e0b, 0x3e0c, 0x3e0d, 0x3e0e, 0x3e0f, + 0x3e10, 0x3e11, 0x3e12, 0x3e13, 0x3e14, 0x3e15, 0x3e16, 0x3e17, + 0x3e18, 0x3e19, 0x3e1a, 0x3e1b, 0x3e1c, 0x3e1d, 0x3e1e, 0x3e1f, + 0x3e20, 0x3e21, 0x3e22, 0x3e23, 0x3e24, 0x3e25, 0x3e26, 0x3e27, + 0x3e28, 0x3e29, 0x3e2a, 0x3e2b, 0x3e2c, 0x3e2d, 0x3e2e, 0x3e2f, + 0x3e30, 0x3e31, 0x3e32, 0x3e33, 0x3e34, 0x3e35, 0x3e36, 0x3e37, + 0x3e38, 0x3e39, 0x3e3a, 0x3e3b, 0x3e3c, 0x3e3d, 0x3e3e, 0x3e3f, + 0x3e40, 0x3e41, 0x3e42, 0x3e43, 0x3e44, 0x3e45, 0x3e46, 0x3e47, + 0x3e48, 0x3e49, 0x3e4a, 0x3e4b, 0x3e4c, 0x3e4d, 0x3e4e, 0x3e4f, + 0x3e50, 0x3e51, 0x3e52, 0x3e53, 0x3e54, 0x3e55, 0x3e56, 0x3e57, + 0x3e58, 0x3e59, 0x3e5a, 0x3e5b, 0x3e5c, 0x3e5d, 0x3e5e, 0x3e5f, + 0x3e60, 0x3e61, 0x3e62, 0x3e63, 0x3e64, 0x3e65, 0x3e66, 0x3e67, + 0x3e68, 0x3e69, 0x3e6a, 0x3e6b, 0x3e6c, 0x3e6d, 0x3e6e, 0x3e6f, + 0x3e70, 0x3e71, 0x3e72, 0x3e73, 0x3e74, 0x3e75, 0x3e76, 0x3e77, + 0x3e78, 0x3e79, 0x3e7a, 0x3e7b, 0x3e7c, 0x3e7d, 0x3e7e, 0x3e7f, + 0x3e80, 0x3e81, 0x3e82, 0x3e83, 0x3e84, 0x3e85, 0x3e86, 0x3e87, + 0x3e88, 0x3e89, 0x3e8a, 0x3e8b, 0x3e8c, 0x3e8d, 0x3e8e, 0x3e8f, + 0x3e90, 0x3e91, 0x3e92, 0x3e93, 0x3e94, 0x3e95, 0x3e96, 0x3e97, + 0x3e98, 0x3e99, 0x3e9a, 0x3e9b, 0x3e9c, 0x3e9d, 0x3e9e, 0x3e9f, + 0x3ea0, 0x3ea1, 0x3ea2, 0x3ea3, 0x3ea4, 0x3ea5, 0x3ea6, 0x3ea7, + 0x3ea8, 0x3ea9, 0x3eaa, 0x3eab, 0x3eac, 0x3ead, 0x3eae, 0x3eaf, + 0x3eb0, 0x3eb1, 0x3eb2, 0x3eb3, 0x3eb4, 0x3eb5, 0x3eb6, 0x3eb7, + 0x3eb8, 0x3eb9, 0x3eba, 0x3ebb, 0x3ebc, 0x3ebd, 0x3ebe, 0x3ebf, + 0x3ec0, 0x3ec1, 0x3ec2, 0x3ec3, 0x3ec4, 0x3ec5, 0x3ec6, 0x3ec7, + 0x3ec8, 0x3ec9, 0x3eca, 0x3ecb, 0x3ecc, 0x3ecd, 0x3ece, 0x3ecf, + 0x3ed0, 0x3ed1, 0x3ed2, 0x3ed3, 0x3ed4, 0x3ed5, 0x3ed6, 0x3ed7, + 0x3ed8, 0x3ed9, 0x3eda, 0x3edb, 0x3edc, 0x3edd, 0x3ede, 0x3edf, + 0x3ee0, 0x3ee1, 0x3ee2, 0x3ee3, 0x3ee4, 0x3ee5, 0x3ee6, 0x3ee7, + 0x3ee8, 0x3ee9, 0x3eea, 0x3eeb, 0x3eec, 0x3eed, 0x3eee, 0x3eef, + 0x3ef0, 0x3ef1, 0x3ef2, 0x3ef3, 0x3ef4, 0x3ef5, 0x3ef6, 0x3ef7, + 0x3ef8, 0x3ef9, 0x3efa, 0x3efb, 0x3efc, 0x3efd, 0x3efe, 0x3eff, + 0x3f00, 0x3f01, 0x3f02, 0x3f03, 0x3f04, 0x3f05, 0x3f06, 0x3f07, + 0x3f08, 0x3f09, 0x3f0a, 0x3f0b, 0x3f0c, 0x3f0d, 0x3f0e, 0x3f0f, + 0x3f10, 0x3f11, 0x3f12, 0x3f13, 0x3f14, 0x3f15, 0x3f16, 0x3f17, + 0x3f18, 0x3f19, 0x3f1a, 0x3f1b, 0x3f1c, 0x3f1d, 0x3f1e, 0x3f1f, + 0x3f20, 0x3f21, 0x3f22, 0x3f23, 0x3f24, 0x3f25, 0x3f26, 0x3f27, + 0x3f28, 0x3f29, 0x3f2a, 0x3f2b, 0x3f2c, 0x3f2d, 0x3f2e, 0x3f2f, + 0x3f30, 0x3f31, 0x3f32, 0x3f33, 0x3f34, 0x3f35, 0x3f36, 0x3f37, + 0x3f38, 0x3f39, 0x3f3a, 0x3f3b, 0x3f3c, 0x3f3d, 0x3f3e, 0x3f3f, + 0x3f40, 0x3f41, 0x3f42, 0x3f43, 0x3f44, 0x3f45, 0x3f46, 0x3f47, + 0x3f48, 0x3f49, 0x3f4a, 0x3f4b, 0x3f4c, 0x3f4d, 0x3f4e, 0x3f4f, + 0x3f50, 0x3f51, 0x3f52, 0x3f53, 0x3f54, 0x3f55, 0x3f56, 0x3f57, + 0x3f58, 0x3f59, 0x3f5a, 0x3f5b, 0x3f5c, 0x3f5d, 0x3f5e, 0x3f5f, + 0x3f60, 0x3f61, 0x3f62, 0x3f63, 0x3f64, 0x3f65, 0x3f66, 0x3f67, + 0x3f68, 0x3f69, 0x3f6a, 0x3f6b, 0x3f6c, 0x3f6d, 0x3f6e, 0x3f6f, + 0x3f70, 0x3f71, 0x3f72, 0x3f73, 0x3f74, 0x3f75, 0x3f76, 0x3f77, + 0x3f78, 0x3f79, 0x3f7a, 0x3f7b, 0x3f7c, 0x3f7d, 0x3f7e, 0x3f7f, + 0x3f80, 0x3f81, 0x3f82, 0x3f83, 0x3f84, 0x3f85, 0x3f86, 0x3f87, + 0x3f88, 0x3f89, 0x3f8a, 0x3f8b, 0x3f8c, 0x3f8d, 0x3f8e, 0x3f8f, + 0x3f90, 0x3f91, 0x3f92, 0x3f93, 0x3f94, 0x3f95, 0x3f96, 0x3f97, + 0x3f98, 0x3f99, 0x3f9a, 0x3f9b, 0x3f9c, 0x3f9d, 0x3f9e, 0x3f9f, + 0x3fa0, 0x3fa1, 0x3fa2, 0x3fa3, 0x3fa4, 0x3fa5, 0x3fa6, 0x3fa7, + 0x3fa8, 0x3fa9, 0x3faa, 0x3fab, 0x3fac, 0x3fad, 0x3fae, 0x3faf, + 0x3fb0, 0x3fb1, 0x3fb2, 0x3fb3, 0x3fb4, 0x3fb5, 0x3fb6, 0x3fb7, + 0x3fb8, 0x3fb9, 0x3fba, 0x3fbb, 0x3fbc, 0x3fbd, 0x3fbe, 0x3fbf, + 0x3fc0, 0x3fc1, 0x3fc2, 0x3fc3, 0x3fc4, 0x3fc5, 0x3fc6, 0x3fc7, + 0x3fc8, 0x3fc9, 0x3fca, 0x3fcb, 0x3fcc, 0x3fcd, 0x3fce, 0x3fcf, + 0x3fd0, 0x3fd1, 0x3fd2, 0x3fd3, 0x3fd4, 0x3fd5, 0x3fd6, 0x3fd7, + 0x3fd8, 0x3fd9, 0x3fda, 0x3fdb, 0x3fdc, 0x3fdd, 0x3fde, 0x3fdf, + 0x3fe0, 0x3fe1, 0x3fe2, 0x3fe3, 0x3fe4, 0x3fe5, 0x3fe6, 0x3fe7, + 0x3fe8, 0x3fe9, 0x3fea, 0x3feb, 0x3fec, 0x3fed, 0x3fee, 0x3fef, + 0x3ff0, 0x3ff1, 0x3ff2, 0x3ff3, 0x3ff4, 0x3ff5, 0x3ff6, 0x3ff7, + 0x3ff8, 0x3ff9, 0x3ffa, 0x3ffb, 0x3ffc, 0x3ffd, 0x3ffe, 0x3fff, + 0x4000, 0x4001, 0x4002, 0x4003, 0x4004, 0x4005, 0x4006, 0x4007, + 0x4008, 0x4009, 0x400a, 0x400b, 0x400c, 0x400d, 0x400e, 0x400f, + 0x4010, 0x4011, 0x4012, 0x4013, 0x4014, 0x4015, 0x4016, 0x4017, + 0x4018, 0x4019, 0x401a, 0x401b, 0x401c, 0x401d, 0x401e, 0x401f, + 0x4020, 0x4021, 0x4022, 0x4023, 0x4024, 0x4025, 0x4026, 0x4027, + 0x4028, 0x4029, 0x402a, 0x402b, 0x402c, 0x402d, 0x402e, 0x402f, + 0x4030, 0x4031, 0x4032, 0x4033, 0x4034, 0x4035, 0x4036, 0x4037, + 0x4038, 0x4039, 0x403a, 0x403b, 0x403c, 0x403d, 0x403e, 0x403f, + 0x4040, 0x4041, 0x4042, 0x4043, 0x4044, 0x4045, 0x4046, 0x4047, + 0x4048, 0x4049, 0x404a, 0x404b, 0x404c, 0x404d, 0x404e, 0x404f, + 0x4050, 0x4051, 0x4052, 0x4053, 0x4054, 0x4055, 0x4056, 0x4057, + 0x4058, 0x4059, 0x405a, 0x405b, 0x405c, 0x405d, 0x405e, 0x405f, + 0x4060, 0x4061, 0x4062, 0x4063, 0x4064, 0x4065, 0x4066, 0x4067, + 0x4068, 0x4069, 0x406a, 0x406b, 0x406c, 0x406d, 0x406e, 0x406f, + 0x4070, 0x4071, 0x4072, 0x4073, 0x4074, 0x4075, 0x4076, 0x4077, + 0x4078, 0x4079, 0x407a, 0x407b, 0x407c, 0x407d, 0x407e, 0x407f, + 0x4080, 0x4081, 0x4082, 0x4083, 0x4084, 0x4085, 0x4086, 0x4087, + 0x4088, 0x4089, 0x408a, 0x408b, 0x408c, 0x408d, 0x408e, 0x408f, + 0x4090, 0x4091, 0x4092, 0x4093, 0x4094, 0x4095, 0x4096, 0x4097, + 0x4098, 0x4099, 0x409a, 0x409b, 0x409c, 0x409d, 0x409e, 0x409f, + 0x40a0, 0x40a1, 0x40a2, 0x40a3, 0x40a4, 0x40a5, 0x40a6, 0x40a7, + 0x40a8, 0x40a9, 0x40aa, 0x40ab, 0x40ac, 0x40ad, 0x40ae, 0x40af, + 0x40b0, 0x40b1, 0x40b2, 0x40b3, 0x40b4, 0x40b5, 0x40b6, 0x40b7, + 0x40b8, 0x40b9, 0x40ba, 0x40bb, 0x40bc, 0x40bd, 0x40be, 0x40bf, + 0x40c0, 0x40c1, 0x40c2, 0x40c3, 0x40c4, 0x40c5, 0x40c6, 0x40c7, + 0x40c8, 0x40c9, 0x40ca, 0x40cb, 0x40cc, 0x40cd, 0x40ce, 0x40cf, + 0x40d0, 0x40d1, 0x40d2, 0x40d3, 0x40d4, 0x40d5, 0x40d6, 0x40d7, + 0x40d8, 0x40d9, 0x40da, 0x40db, 0x40dc, 0x40dd, 0x40de, 0x40df, + 0x40e0, 0x40e1, 0x40e2, 0x40e3, 0x40e4, 0x40e5, 0x40e6, 0x40e7, + 0x40e8, 0x40e9, 0x40ea, 0x40eb, 0x40ec, 0x40ed, 0x40ee, 0x40ef, + 0x40f0, 0x40f1, 0x40f2, 0x40f3, 0x40f4, 0x40f5, 0x40f6, 0x40f7, + 0x40f8, 0x40f9, 0x40fa, 0x40fb, 0x40fc, 0x40fd, 0x40fe, 0x40ff, + 0x4100, 0x4101, 0x4102, 0x4103, 0x4104, 0x4105, 0x4106, 0x4107, + 0x4108, 0x4109, 0x410a, 0x410b, 0x410c, 0x410d, 0x410e, 0x410f, + 0x4110, 0x4111, 0x4112, 0x4113, 0x4114, 0x4115, 0x4116, 0x4117, + 0x4118, 0x4119, 0x411a, 0x411b, 0x411c, 0x411d, 0x411e, 0x411f, + 0x4120, 0x4121, 0x4122, 0x4123, 0x4124, 0x4125, 0x4126, 0x4127, + 0x4128, 0x4129, 0x412a, 0x412b, 0x412c, 0x412d, 0x412e, 0x412f, + 0x4130, 0x4131, 0x4132, 0x4133, 0x4134, 0x4135, 0x4136, 0x4137, + 0x4138, 0x4139, 0x413a, 0x413b, 0x413c, 0x413d, 0x413e, 0x413f, + 0x4140, 0x4141, 0x4142, 0x4143, 0x4144, 0x4145, 0x4146, 0x4147, + 0x4148, 0x4149, 0x414a, 0x414b, 0x414c, 0x414d, 0x414e, 0x414f, + 0x4150, 0x4151, 0x4152, 0x4153, 0x4154, 0x4155, 0x4156, 0x4157, + 0x4158, 0x4159, 0x415a, 0x415b, 0x415c, 0x415d, 0x415e, 0x415f, + 0x4160, 0x4161, 0x4162, 0x4163, 0x4164, 0x4165, 0x4166, 0x4167, + 0x4168, 0x4169, 0x416a, 0x416b, 0x416c, 0x416d, 0x416e, 0x416f, + 0x4170, 0x4171, 0x4172, 0x4173, 0x4174, 0x4175, 0x4176, 0x4177, + 0x4178, 0x4179, 0x417a, 0x417b, 0x417c, 0x417d, 0x417e, 0x417f, + 0x4180, 0x4181, 0x4182, 0x4183, 0x4184, 0x4185, 0x4186, 0x4187, + 0x4188, 0x4189, 0x418a, 0x418b, 0x418c, 0x418d, 0x418e, 0x418f, + 0x4190, 0x4191, 0x4192, 0x4193, 0x4194, 0x4195, 0x4196, 0x4197, + 0x4198, 0x4199, 0x419a, 0x419b, 0x419c, 0x419d, 0x419e, 0x419f, + 0x41a0, 0x41a1, 0x41a2, 0x41a3, 0x41a4, 0x41a5, 0x41a6, 0x41a7, + 0x41a8, 0x41a9, 0x41aa, 0x41ab, 0x41ac, 0x41ad, 0x41ae, 0x41af, + 0x41b0, 0x41b1, 0x41b2, 0x41b3, 0x41b4, 0x41b5, 0x41b6, 0x41b7, + 0x41b8, 0x41b9, 0x41ba, 0x41bb, 0x41bc, 0x41bd, 0x41be, 0x41bf, + 0x41c0, 0x41c1, 0x41c2, 0x41c3, 0x41c4, 0x41c5, 0x41c6, 0x41c7, + 0x41c8, 0x41c9, 0x41ca, 0x41cb, 0x41cc, 0x41cd, 0x41ce, 0x41cf, + 0x41d0, 0x41d1, 0x41d2, 0x41d3, 0x41d4, 0x41d5, 0x41d6, 0x41d7, + 0x41d8, 0x41d9, 0x41da, 0x41db, 0x41dc, 0x41dd, 0x41de, 0x41df, + 0x41e0, 0x41e1, 0x41e2, 0x41e3, 0x41e4, 0x41e5, 0x41e6, 0x41e7, + 0x41e8, 0x41e9, 0x41ea, 0x41eb, 0x41ec, 0x41ed, 0x41ee, 0x41ef, + 0x41f0, 0x41f1, 0x41f2, 0x41f3, 0x41f4, 0x41f5, 0x41f6, 0x41f7, + 0x41f8, 0x41f9, 0x41fa, 0x41fb, 0x41fc, 0x41fd, 0x41fe, 0x41ff, + 0x4200, 0x4201, 0x4202, 0x4203, 0x4204, 0x4205, 0x4206, 0x4207, + 0x4208, 0x4209, 0x420a, 0x420b, 0x420c, 0x420d, 0x420e, 0x420f, + 0x4210, 0x4211, 0x4212, 0x4213, 0x4214, 0x4215, 0x4216, 0x4217, + 0x4218, 0x4219, 0x421a, 0x421b, 0x421c, 0x421d, 0x421e, 0x421f, + 0x4220, 0x4221, 0x4222, 0x4223, 0x4224, 0x4225, 0x4226, 0x4227, + 0x4228, 0x4229, 0x422a, 0x422b, 0x422c, 0x422d, 0x422e, 0x422f, + 0x4230, 0x4231, 0x4232, 0x4233, 0x4234, 0x4235, 0x4236, 0x4237, + 0x4238, 0x4239, 0x423a, 0x423b, 0x423c, 0x423d, 0x423e, 0x423f, + 0x4240, 0x4241, 0x4242, 0x4243, 0x4244, 0x4245, 0x4246, 0x4247, + 0x4248, 0x4249, 0x424a, 0x424b, 0x424c, 0x424d, 0x424e, 0x424f, + 0x4250, 0x4251, 0x4252, 0x4253, 0x4254, 0x4255, 0x4256, 0x4257, + 0x4258, 0x4259, 0x425a, 0x425b, 0x425c, 0x425d, 0x425e, 0x425f, + 0x4260, 0x4261, 0x4262, 0x4263, 0x4264, 0x4265, 0x4266, 0x4267, + 0x4268, 0x4269, 0x426a, 0x426b, 0x426c, 0x426d, 0x426e, 0x426f, + 0x4270, 0x4271, 0x4272, 0x4273, 0x4274, 0x4275, 0x4276, 0x4277, + 0x4278, 0x4279, 0x427a, 0x427b, 0x427c, 0x427d, 0x427e, 0x427f, + 0x4280, 0x4281, 0x4282, 0x4283, 0x4284, 0x4285, 0x4286, 0x4287, + 0x4288, 0x4289, 0x428a, 0x428b, 0x428c, 0x428d, 0x428e, 0x428f, + 0x4290, 0x4291, 0x4292, 0x4293, 0x4294, 0x4295, 0x4296, 0x4297, + 0x4298, 0x4299, 0x429a, 0x429b, 0x429c, 0x429d, 0x429e, 0x429f, + 0x42a0, 0x42a1, 0x42a2, 0x42a3, 0x42a4, 0x42a5, 0x42a6, 0x42a7, + 0x42a8, 0x42a9, 0x42aa, 0x42ab, 0x42ac, 0x42ad, 0x42ae, 0x42af, + 0x42b0, 0x42b1, 0x42b2, 0x42b3, 0x42b4, 0x42b5, 0x42b6, 0x42b7, + 0x42b8, 0x42b9, 0x42ba, 0x42bb, 0x42bc, 0x42bd, 0x42be, 0x42bf, + 0x42c0, 0x42c1, 0x42c2, 0x42c3, 0x42c4, 0x42c5, 0x42c6, 0x42c7, + 0x42c8, 0x42c9, 0x42ca, 0x42cb, 0x42cc, 0x42cd, 0x42ce, 0x42cf, + 0x42d0, 0x42d1, 0x42d2, 0x42d3, 0x42d4, 0x42d5, 0x42d6, 0x42d7, + 0x42d8, 0x42d9, 0x42da, 0x42db, 0x42dc, 0x42dd, 0x42de, 0x42df, + 0x42e0, 0x42e1, 0x42e2, 0x42e3, 0x42e4, 0x42e5, 0x42e6, 0x42e7, + 0x42e8, 0x42e9, 0x42ea, 0x42eb, 0x42ec, 0x42ed, 0x42ee, 0x42ef, + 0x42f0, 0x42f1, 0x42f2, 0x42f3, 0x42f4, 0x42f5, 0x42f6, 0x42f7, + 0x42f8, 0x42f9, 0x42fa, 0x42fb, 0x42fc, 0x42fd, 0x42fe, 0x42ff, + 0x4300, 0x4301, 0x4302, 0x4303, 0x4304, 0x4305, 0x4306, 0x4307, + 0x4308, 0x4309, 0x430a, 0x430b, 0x430c, 0x430d, 0x430e, 0x430f, + 0x4310, 0x4311, 0x4312, 0x4313, 0x4314, 0x4315, 0x4316, 0x4317, + 0x4318, 0x4319, 0x431a, 0x431b, 0x431c, 0x431d, 0x431e, 0x431f, + 0x4320, 0x4321, 0x4322, 0x4323, 0x4324, 0x4325, 0x4326, 0x4327, + 0x4328, 0x4329, 0x432a, 0x432b, 0x432c, 0x432d, 0x432e, 0x432f, + 0x4330, 0x4331, 0x4332, 0x4333, 0x4334, 0x4335, 0x4336, 0x4337, + 0x4338, 0x4339, 0x433a, 0x433b, 0x433c, 0x433d, 0x433e, 0x433f, + 0x4340, 0x4341, 0x4342, 0x4343, 0x4344, 0x4345, 0x4346, 0x4347, + 0x4348, 0x4349, 0x434a, 0x434b, 0x434c, 0x434d, 0x434e, 0x434f, + 0x4350, 0x4351, 0x4352, 0x4353, 0x4354, 0x4355, 0x4356, 0x4357, + 0x4358, 0x4359, 0x435a, 0x435b, 0x435c, 0x435d, 0x435e, 0x435f, + 0x4360, 0x4361, 0x4362, 0x4363, 0x4364, 0x4365, 0x4366, 0x4367, + 0x4368, 0x4369, 0x436a, 0x436b, 0x436c, 0x436d, 0x436e, 0x436f, + 0x4370, 0x4371, 0x4372, 0x4373, 0x4374, 0x4375, 0x4376, 0x4377, + 0x4378, 0x4379, 0x437a, 0x437b, 0x437c, 0x437d, 0x437e, 0x437f, + 0x4380, 0x4381, 0x4382, 0x4383, 0x4384, 0x4385, 0x4386, 0x4387, + 0x4388, 0x4389, 0x438a, 0x438b, 0x438c, 0x438d, 0x438e, 0x438f, + 0x4390, 0x4391, 0x4392, 0x4393, 0x4394, 0x4395, 0x4396, 0x4397, + 0x4398, 0x4399, 0x439a, 0x439b, 0x439c, 0x439d, 0x439e, 0x439f, + 0x43a0, 0x43a1, 0x43a2, 0x43a3, 0x43a4, 0x43a5, 0x43a6, 0x43a7, + 0x43a8, 0x43a9, 0x43aa, 0x43ab, 0x43ac, 0x43ad, 0x43ae, 0x43af, + 0x43b0, 0x43b1, 0x43b2, 0x43b3, 0x43b4, 0x43b5, 0x43b6, 0x43b7, + 0x43b8, 0x43b9, 0x43ba, 0x43bb, 0x43bc, 0x43bd, 0x43be, 0x43bf, + 0x43c0, 0x43c1, 0x43c2, 0x43c3, 0x43c4, 0x43c5, 0x43c6, 0x43c7, + 0x43c8, 0x43c9, 0x43ca, 0x43cb, 0x43cc, 0x43cd, 0x43ce, 0x43cf, + 0x43d0, 0x43d1, 0x43d2, 0x43d3, 0x43d4, 0x43d5, 0x43d6, 0x43d7, + 0x43d8, 0x43d9, 0x43da, 0x43db, 0x43dc, 0x43dd, 0x43de, 0x43df, + 0x43e0, 0x43e1, 0x43e2, 0x43e3, 0x43e4, 0x43e5, 0x43e6, 0x43e7, + 0x43e8, 0x43e9, 0x43ea, 0x43eb, 0x43ec, 0x43ed, 0x43ee, 0x43ef, + 0x43f0, 0x43f1, 0x43f2, 0x43f3, 0x43f4, 0x43f5, 0x43f6, 0x43f7, + 0x43f8, 0x43f9, 0x43fa, 0x43fb, 0x43fc, 0x43fd, 0x43fe, 0x43ff, + 0x4400, 0x4401, 0x4402, 0x4403, 0x4404, 0x4405, 0x4406, 0x4407, + 0x4408, 0x4409, 0x440a, 0x440b, 0x440c, 0x440d, 0x440e, 0x440f, + 0x4410, 0x4411, 0x4412, 0x4413, 0x4414, 0x4415, 0x4416, 0x4417, + 0x4418, 0x4419, 0x441a, 0x441b, 0x441c, 0x441d, 0x441e, 0x441f, + 0x4420, 0x4421, 0x4422, 0x4423, 0x4424, 0x4425, 0x4426, 0x4427, + 0x4428, 0x4429, 0x442a, 0x442b, 0x442c, 0x442d, 0x442e, 0x442f, + 0x4430, 0x4431, 0x4432, 0x4433, 0x4434, 0x4435, 0x4436, 0x4437, + 0x4438, 0x4439, 0x443a, 0x443b, 0x443c, 0x443d, 0x443e, 0x443f, + 0x4440, 0x4441, 0x4442, 0x4443, 0x4444, 0x4445, 0x4446, 0x4447, + 0x4448, 0x4449, 0x444a, 0x444b, 0x444c, 0x444d, 0x444e, 0x444f, + 0x4450, 0x4451, 0x4452, 0x4453, 0x4454, 0x4455, 0x4456, 0x4457, + 0x4458, 0x4459, 0x445a, 0x445b, 0x445c, 0x445d, 0x445e, 0x445f, + 0x4460, 0x4461, 0x4462, 0x4463, 0x4464, 0x4465, 0x4466, 0x4467, + 0x4468, 0x4469, 0x446a, 0x446b, 0x446c, 0x446d, 0x446e, 0x446f, + 0x4470, 0x4471, 0x4472, 0x4473, 0x4474, 0x4475, 0x4476, 0x4477, + 0x4478, 0x4479, 0x447a, 0x447b, 0x447c, 0x447d, 0x447e, 0x447f, + 0x4480, 0x4481, 0x4482, 0x4483, 0x4484, 0x4485, 0x4486, 0x4487, + 0x4488, 0x4489, 0x448a, 0x448b, 0x448c, 0x448d, 0x448e, 0x448f, + 0x4490, 0x4491, 0x4492, 0x4493, 0x4494, 0x4495, 0x4496, 0x4497, + 0x4498, 0x4499, 0x449a, 0x449b, 0x449c, 0x449d, 0x449e, 0x449f, + 0x44a0, 0x44a1, 0x44a2, 0x44a3, 0x44a4, 0x44a5, 0x44a6, 0x44a7, + 0x44a8, 0x44a9, 0x44aa, 0x44ab, 0x44ac, 0x44ad, 0x44ae, 0x44af, + 0x44b0, 0x44b1, 0x44b2, 0x44b3, 0x44b4, 0x44b5, 0x44b6, 0x44b7, + 0x44b8, 0x44b9, 0x44ba, 0x44bb, 0x44bc, 0x44bd, 0x44be, 0x44bf, + 0x44c0, 0x44c1, 0x44c2, 0x44c3, 0x44c4, 0x44c5, 0x44c6, 0x44c7, + 0x44c8, 0x44c9, 0x44ca, 0x44cb, 0x44cc, 0x44cd, 0x44ce, 0x44cf, + 0x44d0, 0x44d1, 0x44d2, 0x44d3, 0x44d4, 0x44d5, 0x44d6, 0x44d7, + 0x44d8, 0x44d9, 0x44da, 0x44db, 0x44dc, 0x44dd, 0x44de, 0x44df, + 0x44e0, 0x44e1, 0x44e2, 0x44e3, 0x44e4, 0x44e5, 0x44e6, 0x44e7, + 0x44e8, 0x44e9, 0x44ea, 0x44eb, 0x44ec, 0x44ed, 0x44ee, 0x44ef, + 0x44f0, 0x44f1, 0x44f2, 0x44f3, 0x44f4, 0x44f5, 0x44f6, 0x44f7, + 0x44f8, 0x44f9, 0x44fa, 0x44fb, 0x44fc, 0x44fd, 0x44fe, 0x44ff, + 0x4500, 0x4501, 0x4502, 0x4503, 0x4504, 0x4505, 0x4506, 0x4507, + 0x4508, 0x4509, 0x450a, 0x450b, 0x450c, 0x450d, 0x450e, 0x450f, + 0x4510, 0x4511, 0x4512, 0x4513, 0x4514, 0x4515, 0x4516, 0x4517, + 0x4518, 0x4519, 0x451a, 0x451b, 0x451c, 0x451d, 0x451e, 0x451f, + 0x4520, 0x4521, 0x4522, 0x4523, 0x4524, 0x4525, 0x4526, 0x4527, + 0x4528, 0x4529, 0x452a, 0x452b, 0x452c, 0x452d, 0x452e, 0x452f, + 0x4530, 0x4531, 0x4532, 0x4533, 0x4534, 0x4535, 0x4536, 0x4537, + 0x4538, 0x4539, 0x453a, 0x453b, 0x453c, 0x453d, 0x453e, 0x453f, + 0x4540, 0x4541, 0x4542, 0x4543, 0x4544, 0x4545, 0x4546, 0x4547, + 0x4548, 0x4549, 0x454a, 0x454b, 0x454c, 0x454d, 0x454e, 0x454f, + 0x4550, 0x4551, 0x4552, 0x4553, 0x4554, 0x4555, 0x4556, 0x4557, + 0x4558, 0x4559, 0x455a, 0x455b, 0x455c, 0x455d, 0x455e, 0x455f, + 0x4560, 0x4561, 0x4562, 0x4563, 0x4564, 0x4565, 0x4566, 0x4567, + 0x4568, 0x4569, 0x456a, 0x456b, 0x456c, 0x456d, 0x456e, 0x456f, + 0x4570, 0x4571, 0x4572, 0x4573, 0x4574, 0x4575, 0x4576, 0x4577, + 0x4578, 0x4579, 0x457a, 0x457b, 0x457c, 0x457d, 0x457e, 0x457f, + 0x4580, 0x4581, 0x4582, 0x4583, 0x4584, 0x4585, 0x4586, 0x4587, + 0x4588, 0x4589, 0x458a, 0x458b, 0x458c, 0x458d, 0x458e, 0x458f, + 0x4590, 0x4591, 0x4592, 0x4593, 0x4594, 0x4595, 0x4596, 0x4597, + 0x4598, 0x4599, 0x459a, 0x459b, 0x459c, 0x459d, 0x459e, 0x459f, + 0x45a0, 0x45a1, 0x45a2, 0x45a3, 0x45a4, 0x45a5, 0x45a6, 0x45a7, + 0x45a8, 0x45a9, 0x45aa, 0x45ab, 0x45ac, 0x45ad, 0x45ae, 0x45af, + 0x45b0, 0x45b1, 0x45b2, 0x45b3, 0x45b4, 0x45b5, 0x45b6, 0x45b7, + 0x45b8, 0x45b9, 0x45ba, 0x45bb, 0x45bc, 0x45bd, 0x45be, 0x45bf, + 0x45c0, 0x45c1, 0x45c2, 0x45c3, 0x45c4, 0x45c5, 0x45c6, 0x45c7, + 0x45c8, 0x45c9, 0x45ca, 0x45cb, 0x45cc, 0x45cd, 0x45ce, 0x45cf, + 0x45d0, 0x45d1, 0x45d2, 0x45d3, 0x45d4, 0x45d5, 0x45d6, 0x45d7, + 0x45d8, 0x45d9, 0x45da, 0x45db, 0x45dc, 0x45dd, 0x45de, 0x45df, + 0x45e0, 0x45e1, 0x45e2, 0x45e3, 0x45e4, 0x45e5, 0x45e6, 0x45e7, + 0x45e8, 0x45e9, 0x45ea, 0x45eb, 0x45ec, 0x45ed, 0x45ee, 0x45ef, + 0x45f0, 0x45f1, 0x45f2, 0x45f3, 0x45f4, 0x45f5, 0x45f6, 0x45f7, + 0x45f8, 0x45f9, 0x45fa, 0x45fb, 0x45fc, 0x45fd, 0x45fe, 0x45ff, + 0x4600, 0x4601, 0x4602, 0x4603, 0x4604, 0x4605, 0x4606, 0x4607, + 0x4608, 0x4609, 0x460a, 0x460b, 0x460c, 0x460d, 0x460e, 0x460f, + 0x4610, 0x4611, 0x4612, 0x4613, 0x4614, 0x4615, 0x4616, 0x4617, + 0x4618, 0x4619, 0x461a, 0x461b, 0x461c, 0x461d, 0x461e, 0x461f, + 0x4620, 0x4621, 0x4622, 0x4623, 0x4624, 0x4625, 0x4626, 0x4627, + 0x4628, 0x4629, 0x462a, 0x462b, 0x462c, 0x462d, 0x462e, 0x462f, + 0x4630, 0x4631, 0x4632, 0x4633, 0x4634, 0x4635, 0x4636, 0x4637, + 0x4638, 0x4639, 0x463a, 0x463b, 0x463c, 0x463d, 0x463e, 0x463f, + 0x4640, 0x4641, 0x4642, 0x4643, 0x4644, 0x4645, 0x4646, 0x4647, + 0x4648, 0x4649, 0x464a, 0x464b, 0x464c, 0x464d, 0x464e, 0x464f, + 0x4650, 0x4651, 0x4652, 0x4653, 0x4654, 0x4655, 0x4656, 0x4657, + 0x4658, 0x4659, 0x465a, 0x465b, 0x465c, 0x465d, 0x465e, 0x465f, + 0x4660, 0x4661, 0x4662, 0x4663, 0x4664, 0x4665, 0x4666, 0x4667, + 0x4668, 0x4669, 0x466a, 0x466b, 0x466c, 0x466d, 0x466e, 0x466f, + 0x4670, 0x4671, 0x4672, 0x4673, 0x4674, 0x4675, 0x4676, 0x4677, + 0x4678, 0x4679, 0x467a, 0x467b, 0x467c, 0x467d, 0x467e, 0x467f, + 0x4680, 0x4681, 0x4682, 0x4683, 0x4684, 0x4685, 0x4686, 0x4687, + 0x4688, 0x4689, 0x468a, 0x468b, 0x468c, 0x468d, 0x468e, 0x468f, + 0x4690, 0x4691, 0x4692, 0x4693, 0x4694, 0x4695, 0x4696, 0x4697, + 0x4698, 0x4699, 0x469a, 0x469b, 0x469c, 0x469d, 0x469e, 0x469f, + 0x46a0, 0x46a1, 0x46a2, 0x46a3, 0x46a4, 0x46a5, 0x46a6, 0x46a7, + 0x46a8, 0x46a9, 0x46aa, 0x46ab, 0x46ac, 0x46ad, 0x46ae, 0x46af, + 0x46b0, 0x46b1, 0x46b2, 0x46b3, 0x46b4, 0x46b5, 0x46b6, 0x46b7, + 0x46b8, 0x46b9, 0x46ba, 0x46bb, 0x46bc, 0x46bd, 0x46be, 0x46bf, + 0x46c0, 0x46c1, 0x46c2, 0x46c3, 0x46c4, 0x46c5, 0x46c6, 0x46c7, + 0x46c8, 0x46c9, 0x46ca, 0x46cb, 0x46cc, 0x46cd, 0x46ce, 0x46cf, + 0x46d0, 0x46d1, 0x46d2, 0x46d3, 0x46d4, 0x46d5, 0x46d6, 0x46d7, + 0x46d8, 0x46d9, 0x46da, 0x46db, 0x46dc, 0x46dd, 0x46de, 0x46df, + 0x46e0, 0x46e1, 0x46e2, 0x46e3, 0x46e4, 0x46e5, 0x46e6, 0x46e7, + 0x46e8, 0x46e9, 0x46ea, 0x46eb, 0x46ec, 0x46ed, 0x46ee, 0x46ef, + 0x46f0, 0x46f1, 0x46f2, 0x46f3, 0x46f4, 0x46f5, 0x46f6, 0x46f7, + 0x46f8, 0x46f9, 0x46fa, 0x46fb, 0x46fc, 0x46fd, 0x46fe, 0x46ff, + 0x4700, 0x4701, 0x4702, 0x4703, 0x4704, 0x4705, 0x4706, 0x4707, + 0x4708, 0x4709, 0x470a, 0x470b, 0x470c, 0x470d, 0x470e, 0x470f, + 0x4710, 0x4711, 0x4712, 0x4713, 0x4714, 0x4715, 0x4716, 0x4717, + 0x4718, 0x4719, 0x471a, 0x471b, 0x471c, 0x471d, 0x471e, 0x471f, + 0x4720, 0x4721, 0x4722, 0x4723, 0x4724, 0x4725, 0x4726, 0x4727, + 0x4728, 0x4729, 0x472a, 0x472b, 0x472c, 0x472d, 0x472e, 0x472f, + 0x4730, 0x4731, 0x4732, 0x4733, 0x4734, 0x4735, 0x4736, 0x4737, + 0x4738, 0x4739, 0x473a, 0x473b, 0x473c, 0x473d, 0x473e, 0x473f, + 0x4740, 0x4741, 0x4742, 0x4743, 0x4744, 0x4745, 0x4746, 0x4747, + 0x4748, 0x4749, 0x474a, 0x474b, 0x474c, 0x474d, 0x474e, 0x474f, + 0x4750, 0x4751, 0x4752, 0x4753, 0x4754, 0x4755, 0x4756, 0x4757, + 0x4758, 0x4759, 0x475a, 0x475b, 0x475c, 0x475d, 0x475e, 0x475f, + 0x4760, 0x4761, 0x4762, 0x4763, 0x4764, 0x4765, 0x4766, 0x4767, + 0x4768, 0x4769, 0x476a, 0x476b, 0x476c, 0x476d, 0x476e, 0x476f, + 0x4770, 0x4771, 0x4772, 0x4773, 0x4774, 0x4775, 0x4776, 0x4777, + 0x4778, 0x4779, 0x477a, 0x477b, 0x477c, 0x477d, 0x477e, 0x477f, + 0x4780, 0x4781, 0x4782, 0x4783, 0x4784, 0x4785, 0x4786, 0x4787, + 0x4788, 0x4789, 0x478a, 0x478b, 0x478c, 0x478d, 0x478e, 0x478f, + 0x4790, 0x4791, 0x4792, 0x4793, 0x4794, 0x4795, 0x4796, 0x4797, + 0x4798, 0x4799, 0x479a, 0x479b, 0x479c, 0x479d, 0x479e, 0x479f, + 0x47a0, 0x47a1, 0x47a2, 0x47a3, 0x47a4, 0x47a5, 0x47a6, 0x47a7, + 0x47a8, 0x47a9, 0x47aa, 0x47ab, 0x47ac, 0x47ad, 0x47ae, 0x47af, + 0x47b0, 0x47b1, 0x47b2, 0x47b3, 0x47b4, 0x47b5, 0x47b6, 0x47b7, + 0x47b8, 0x47b9, 0x47ba, 0x47bb, 0x47bc, 0x47bd, 0x47be, 0x47bf, + 0x47c0, 0x47c1, 0x47c2, 0x47c3, 0x47c4, 0x47c5, 0x47c6, 0x47c7, + 0x47c8, 0x47c9, 0x47ca, 0x47cb, 0x47cc, 0x47cd, 0x47ce, 0x47cf, + 0x47d0, 0x47d1, 0x47d2, 0x47d3, 0x47d4, 0x47d5, 0x47d6, 0x47d7, + 0x47d8, 0x47d9, 0x47da, 0x47db, 0x47dc, 0x47dd, 0x47de, 0x47df, + 0x47e0, 0x47e1, 0x47e2, 0x47e3, 0x47e4, 0x47e5, 0x47e6, 0x47e7, + 0x47e8, 0x47e9, 0x47ea, 0x47eb, 0x47ec, 0x47ed, 0x47ee, 0x47ef, + 0x47f0, 0x47f1, 0x47f2, 0x47f3, 0x47f4, 0x47f5, 0x47f6, 0x47f7, + 0x47f8, 0x47f9, 0x47fa, 0x47fb, 0x47fc, 0x47fd, 0x47fe, 0x47ff, + 0x4800, 0x4801, 0x4802, 0x4803, 0x4804, 0x4805, 0x4806, 0x4807, + 0x4808, 0x4809, 0x480a, 0x480b, 0x480c, 0x480d, 0x480e, 0x480f, + 0x4810, 0x4811, 0x4812, 0x4813, 0x4814, 0x4815, 0x4816, 0x4817, + 0x4818, 0x4819, 0x481a, 0x481b, 0x481c, 0x481d, 0x481e, 0x481f, + 0x4820, 0x4821, 0x4822, 0x4823, 0x4824, 0x4825, 0x4826, 0x4827, + 0x4828, 0x4829, 0x482a, 0x482b, 0x482c, 0x482d, 0x482e, 0x482f, + 0x4830, 0x4831, 0x4832, 0x4833, 0x4834, 0x4835, 0x4836, 0x4837, + 0x4838, 0x4839, 0x483a, 0x483b, 0x483c, 0x483d, 0x483e, 0x483f, + 0x4840, 0x4841, 0x4842, 0x4843, 0x4844, 0x4845, 0x4846, 0x4847, + 0x4848, 0x4849, 0x484a, 0x484b, 0x484c, 0x484d, 0x484e, 0x484f, + 0x4850, 0x4851, 0x4852, 0x4853, 0x4854, 0x4855, 0x4856, 0x4857, + 0x4858, 0x4859, 0x485a, 0x485b, 0x485c, 0x485d, 0x485e, 0x485f, + 0x4860, 0x4861, 0x4862, 0x4863, 0x4864, 0x4865, 0x4866, 0x4867, + 0x4868, 0x4869, 0x486a, 0x486b, 0x486c, 0x486d, 0x486e, 0x486f, + 0x4870, 0x4871, 0x4872, 0x4873, 0x4874, 0x4875, 0x4876, 0x4877, + 0x4878, 0x4879, 0x487a, 0x487b, 0x487c, 0x487d, 0x487e, 0x487f, + 0x4880, 0x4881, 0x4882, 0x4883, 0x4884, 0x4885, 0x4886, 0x4887, + 0x4888, 0x4889, 0x488a, 0x488b, 0x488c, 0x488d, 0x488e, 0x488f, + 0x4890, 0x4891, 0x4892, 0x4893, 0x4894, 0x4895, 0x4896, 0x4897, + 0x4898, 0x4899, 0x489a, 0x489b, 0x489c, 0x489d, 0x489e, 0x489f, + 0x48a0, 0x48a1, 0x48a2, 0x48a3, 0x48a4, 0x48a5, 0x48a6, 0x48a7, + 0x48a8, 0x48a9, 0x48aa, 0x48ab, 0x48ac, 0x48ad, 0x48ae, 0x48af, + 0x48b0, 0x48b1, 0x48b2, 0x48b3, 0x48b4, 0x48b5, 0x48b6, 0x48b7, + 0x48b8, 0x48b9, 0x48ba, 0x48bb, 0x48bc, 0x48bd, 0x48be, 0x48bf, + 0x48c0, 0x48c1, 0x48c2, 0x48c3, 0x48c4, 0x48c5, 0x48c6, 0x48c7, + 0x48c8, 0x48c9, 0x48ca, 0x48cb, 0x48cc, 0x48cd, 0x48ce, 0x48cf, + 0x48d0, 0x48d1, 0x48d2, 0x48d3, 0x48d4, 0x48d5, 0x48d6, 0x48d7, + 0x48d8, 0x48d9, 0x48da, 0x48db, 0x48dc, 0x48dd, 0x48de, 0x48df, + 0x48e0, 0x48e1, 0x48e2, 0x48e3, 0x48e4, 0x48e5, 0x48e6, 0x48e7, + 0x48e8, 0x48e9, 0x48ea, 0x48eb, 0x48ec, 0x48ed, 0x48ee, 0x48ef, + 0x48f0, 0x48f1, 0x48f2, 0x48f3, 0x48f4, 0x48f5, 0x48f6, 0x48f7, + 0x48f8, 0x48f9, 0x48fa, 0x48fb, 0x48fc, 0x48fd, 0x48fe, 0x48ff, + 0x4900, 0x4901, 0x4902, 0x4903, 0x4904, 0x4905, 0x4906, 0x4907, + 0x4908, 0x4909, 0x490a, 0x490b, 0x490c, 0x490d, 0x490e, 0x490f, + 0x4910, 0x4911, 0x4912, 0x4913, 0x4914, 0x4915, 0x4916, 0x4917, + 0x4918, 0x4919, 0x491a, 0x491b, 0x491c, 0x491d, 0x491e, 0x491f, + 0x4920, 0x4921, 0x4922, 0x4923, 0x4924, 0x4925, 0x4926, 0x4927, + 0x4928, 0x4929, 0x492a, 0x492b, 0x492c, 0x492d, 0x492e, 0x492f, + 0x4930, 0x4931, 0x4932, 0x4933, 0x4934, 0x4935, 0x4936, 0x4937, + 0x4938, 0x4939, 0x493a, 0x493b, 0x493c, 0x493d, 0x493e, 0x493f, + 0x4940, 0x4941, 0x4942, 0x4943, 0x4944, 0x4945, 0x4946, 0x4947, + 0x4948, 0x4949, 0x494a, 0x494b, 0x494c, 0x494d, 0x494e, 0x494f, + 0x4950, 0x4951, 0x4952, 0x4953, 0x4954, 0x4955, 0x4956, 0x4957, + 0x4958, 0x4959, 0x495a, 0x495b, 0x495c, 0x495d, 0x495e, 0x495f, + 0x4960, 0x4961, 0x4962, 0x4963, 0x4964, 0x4965, 0x4966, 0x4967, + 0x4968, 0x4969, 0x496a, 0x496b, 0x496c, 0x496d, 0x496e, 0x496f, + 0x4970, 0x4971, 0x4972, 0x4973, 0x4974, 0x4975, 0x4976, 0x4977, + 0x4978, 0x4979, 0x497a, 0x497b, 0x497c, 0x497d, 0x497e, 0x497f, + 0x4980, 0x4981, 0x4982, 0x4983, 0x4984, 0x4985, 0x4986, 0x4987, + 0x4988, 0x4989, 0x498a, 0x498b, 0x498c, 0x498d, 0x498e, 0x498f, + 0x4990, 0x4991, 0x4992, 0x4993, 0x4994, 0x4995, 0x4996, 0x4997, + 0x4998, 0x4999, 0x499a, 0x499b, 0x499c, 0x499d, 0x499e, 0x499f, + 0x49a0, 0x49a1, 0x49a2, 0x49a3, 0x49a4, 0x49a5, 0x49a6, 0x49a7, + 0x49a8, 0x49a9, 0x49aa, 0x49ab, 0x49ac, 0x49ad, 0x49ae, 0x49af, + 0x49b0, 0x49b1, 0x49b2, 0x49b3, 0x49b4, 0x49b5, 0x49b6, 0x49b7, + 0x49b8, 0x49b9, 0x49ba, 0x49bb, 0x49bc, 0x49bd, 0x49be, 0x49bf, + 0x49c0, 0x49c1, 0x49c2, 0x49c3, 0x49c4, 0x49c5, 0x49c6, 0x49c7, + 0x49c8, 0x49c9, 0x49ca, 0x49cb, 0x49cc, 0x49cd, 0x49ce, 0x49cf, + 0x49d0, 0x49d1, 0x49d2, 0x49d3, 0x49d4, 0x49d5, 0x49d6, 0x49d7, + 0x49d8, 0x49d9, 0x49da, 0x49db, 0x49dc, 0x49dd, 0x49de, 0x49df, + 0x49e0, 0x49e1, 0x49e2, 0x49e3, 0x49e4, 0x49e5, 0x49e6, 0x49e7, + 0x49e8, 0x49e9, 0x49ea, 0x49eb, 0x49ec, 0x49ed, 0x49ee, 0x49ef, + 0x49f0, 0x49f1, 0x49f2, 0x49f3, 0x49f4, 0x49f5, 0x49f6, 0x49f7, + 0x49f8, 0x49f9, 0x49fa, 0x49fb, 0x49fc, 0x49fd, 0x49fe, 0x49ff, + 0x4a00, 0x4a01, 0x4a02, 0x4a03, 0x4a04, 0x4a05, 0x4a06, 0x4a07, + 0x4a08, 0x4a09, 0x4a0a, 0x4a0b, 0x4a0c, 0x4a0d, 0x4a0e, 0x4a0f, + 0x4a10, 0x4a11, 0x4a12, 0x4a13, 0x4a14, 0x4a15, 0x4a16, 0x4a17, + 0x4a18, 0x4a19, 0x4a1a, 0x4a1b, 0x4a1c, 0x4a1d, 0x4a1e, 0x4a1f, + 0x4a20, 0x4a21, 0x4a22, 0x4a23, 0x4a24, 0x4a25, 0x4a26, 0x4a27, + 0x4a28, 0x4a29, 0x4a2a, 0x4a2b, 0x4a2c, 0x4a2d, 0x4a2e, 0x4a2f, + 0x4a30, 0x4a31, 0x4a32, 0x4a33, 0x4a34, 0x4a35, 0x4a36, 0x4a37, + 0x4a38, 0x4a39, 0x4a3a, 0x4a3b, 0x4a3c, 0x4a3d, 0x4a3e, 0x4a3f, + 0x4a40, 0x4a41, 0x4a42, 0x4a43, 0x4a44, 0x4a45, 0x4a46, 0x4a47, + 0x4a48, 0x4a49, 0x4a4a, 0x4a4b, 0x4a4c, 0x4a4d, 0x4a4e, 0x4a4f, + 0x4a50, 0x4a51, 0x4a52, 0x4a53, 0x4a54, 0x4a55, 0x4a56, 0x4a57, + 0x4a58, 0x4a59, 0x4a5a, 0x4a5b, 0x4a5c, 0x4a5d, 0x4a5e, 0x4a5f, + 0x4a60, 0x4a61, 0x4a62, 0x4a63, 0x4a64, 0x4a65, 0x4a66, 0x4a67, + 0x4a68, 0x4a69, 0x4a6a, 0x4a6b, 0x4a6c, 0x4a6d, 0x4a6e, 0x4a6f, + 0x4a70, 0x4a71, 0x4a72, 0x4a73, 0x4a74, 0x4a75, 0x4a76, 0x4a77, + 0x4a78, 0x4a79, 0x4a7a, 0x4a7b, 0x4a7c, 0x4a7d, 0x4a7e, 0x4a7f, + 0x4a80, 0x4a81, 0x4a82, 0x4a83, 0x4a84, 0x4a85, 0x4a86, 0x4a87, + 0x4a88, 0x4a89, 0x4a8a, 0x4a8b, 0x4a8c, 0x4a8d, 0x4a8e, 0x4a8f, + 0x4a90, 0x4a91, 0x4a92, 0x4a93, 0x4a94, 0x4a95, 0x4a96, 0x4a97, + 0x4a98, 0x4a99, 0x4a9a, 0x4a9b, 0x4a9c, 0x4a9d, 0x4a9e, 0x4a9f, + 0x4aa0, 0x4aa1, 0x4aa2, 0x4aa3, 0x4aa4, 0x4aa5, 0x4aa6, 0x4aa7, + 0x4aa8, 0x4aa9, 0x4aaa, 0x4aab, 0x4aac, 0x4aad, 0x4aae, 0x4aaf, + 0x4ab0, 0x4ab1, 0x4ab2, 0x4ab3, 0x4ab4, 0x4ab5, 0x4ab6, 0x4ab7, + 0x4ab8, 0x4ab9, 0x4aba, 0x4abb, 0x4abc, 0x4abd, 0x4abe, 0x4abf, + 0x4ac0, 0x4ac1, 0x4ac2, 0x4ac3, 0x4ac4, 0x4ac5, 0x4ac6, 0x4ac7, + 0x4ac8, 0x4ac9, 0x4aca, 0x4acb, 0x4acc, 0x4acd, 0x4ace, 0x4acf, + 0x4ad0, 0x4ad1, 0x4ad2, 0x4ad3, 0x4ad4, 0x4ad5, 0x4ad6, 0x4ad7, + 0x4ad8, 0x4ad9, 0x4ada, 0x4adb, 0x4adc, 0x4add, 0x4ade, 0x4adf, + 0x4ae0, 0x4ae1, 0x4ae2, 0x4ae3, 0x4ae4, 0x4ae5, 0x4ae6, 0x4ae7, + 0x4ae8, 0x4ae9, 0x4aea, 0x4aeb, 0x4aec, 0x4aed, 0x4aee, 0x4aef, + 0x4af0, 0x4af1, 0x4af2, 0x4af3, 0x4af4, 0x4af5, 0x4af6, 0x4af7, + 0x4af8, 0x4af9, 0x4afa, 0x4afb, 0x4afc, 0x4afd, 0x4afe, 0x4aff, + 0x4b00, 0x4b01, 0x4b02, 0x4b03, 0x4b04, 0x4b05, 0x4b06, 0x4b07, + 0x4b08, 0x4b09, 0x4b0a, 0x4b0b, 0x4b0c, 0x4b0d, 0x4b0e, 0x4b0f, + 0x4b10, 0x4b11, 0x4b12, 0x4b13, 0x4b14, 0x4b15, 0x4b16, 0x4b17, + 0x4b18, 0x4b19, 0x4b1a, 0x4b1b, 0x4b1c, 0x4b1d, 0x4b1e, 0x4b1f, + 0x4b20, 0x4b21, 0x4b22, 0x4b23, 0x4b24, 0x4b25, 0x4b26, 0x4b27, + 0x4b28, 0x4b29, 0x4b2a, 0x4b2b, 0x4b2c, 0x4b2d, 0x4b2e, 0x4b2f, + 0x4b30, 0x4b31, 0x4b32, 0x4b33, 0x4b34, 0x4b35, 0x4b36, 0x4b37, + 0x4b38, 0x4b39, 0x4b3a, 0x4b3b, 0x4b3c, 0x4b3d, 0x4b3e, 0x4b3f, + 0x4b40, 0x4b41, 0x4b42, 0x4b43, 0x4b44, 0x4b45, 0x4b46, 0x4b47, + 0x4b48, 0x4b49, 0x4b4a, 0x4b4b, 0x4b4c, 0x4b4d, 0x4b4e, 0x4b4f, + 0x4b50, 0x4b51, 0x4b52, 0x4b53, 0x4b54, 0x4b55, 0x4b56, 0x4b57, + 0x4b58, 0x4b59, 0x4b5a, 0x4b5b, 0x4b5c, 0x4b5d, 0x4b5e, 0x4b5f, + 0x4b60, 0x4b61, 0x4b62, 0x4b63, 0x4b64, 0x4b65, 0x4b66, 0x4b67, + 0x4b68, 0x4b69, 0x4b6a, 0x4b6b, 0x4b6c, 0x4b6d, 0x4b6e, 0x4b6f, + 0x4b70, 0x4b71, 0x4b72, 0x4b73, 0x4b74, 0x4b75, 0x4b76, 0x4b77, + 0x4b78, 0x4b79, 0x4b7a, 0x4b7b, 0x4b7c, 0x4b7d, 0x4b7e, 0x4b7f, + 0x4b80, 0x4b81, 0x4b82, 0x4b83, 0x4b84, 0x4b85, 0x4b86, 0x4b87, + 0x4b88, 0x4b89, 0x4b8a, 0x4b8b, 0x4b8c, 0x4b8d, 0x4b8e, 0x4b8f, + 0x4b90, 0x4b91, 0x4b92, 0x4b93, 0x4b94, 0x4b95, 0x4b96, 0x4b97, + 0x4b98, 0x4b99, 0x4b9a, 0x4b9b, 0x4b9c, 0x4b9d, 0x4b9e, 0x4b9f, + 0x4ba0, 0x4ba1, 0x4ba2, 0x4ba3, 0x4ba4, 0x4ba5, 0x4ba6, 0x4ba7, + 0x4ba8, 0x4ba9, 0x4baa, 0x4bab, 0x4bac, 0x4bad, 0x4bae, 0x4baf, + 0x4bb0, 0x4bb1, 0x4bb2, 0x4bb3, 0x4bb4, 0x4bb5, 0x4bb6, 0x4bb7, + 0x4bb8, 0x4bb9, 0x4bba, 0x4bbb, 0x4bbc, 0x4bbd, 0x4bbe, 0x4bbf, + 0x4bc0, 0x4bc1, 0x4bc2, 0x4bc3, 0x4bc4, 0x4bc5, 0x4bc6, 0x4bc7, + 0x4bc8, 0x4bc9, 0x4bca, 0x4bcb, 0x4bcc, 0x4bcd, 0x4bce, 0x4bcf, + 0x4bd0, 0x4bd1, 0x4bd2, 0x4bd3, 0x4bd4, 0x4bd5, 0x4bd6, 0x4bd7, + 0x4bd8, 0x4bd9, 0x4bda, 0x4bdb, 0x4bdc, 0x4bdd, 0x4bde, 0x4bdf, + 0x4be0, 0x4be1, 0x4be2, 0x4be3, 0x4be4, 0x4be5, 0x4be6, 0x4be7, + 0x4be8, 0x4be9, 0x4bea, 0x4beb, 0x4bec, 0x4bed, 0x4bee, 0x4bef, + 0x4bf0, 0x4bf1, 0x4bf2, 0x4bf3, 0x4bf4, 0x4bf5, 0x4bf6, 0x4bf7, + 0x4bf8, 0x4bf9, 0x4bfa, 0x4bfb, 0x4bfc, 0x4bfd, 0x4bfe, 0x4bff, + 0x4c00, 0x4c01, 0x4c02, 0x4c03, 0x4c04, 0x4c05, 0x4c06, 0x4c07, + 0x4c08, 0x4c09, 0x4c0a, 0x4c0b, 0x4c0c, 0x4c0d, 0x4c0e, 0x4c0f, + 0x4c10, 0x4c11, 0x4c12, 0x4c13, 0x4c14, 0x4c15, 0x4c16, 0x4c17, + 0x4c18, 0x4c19, 0x4c1a, 0x4c1b, 0x4c1c, 0x4c1d, 0x4c1e, 0x4c1f, + 0x4c20, 0x4c21, 0x4c22, 0x4c23, 0x4c24, 0x4c25, 0x4c26, 0x4c27, + 0x4c28, 0x4c29, 0x4c2a, 0x4c2b, 0x4c2c, 0x4c2d, 0x4c2e, 0x4c2f, + 0x4c30, 0x4c31, 0x4c32, 0x4c33, 0x4c34, 0x4c35, 0x4c36, 0x4c37, + 0x4c38, 0x4c39, 0x4c3a, 0x4c3b, 0x4c3c, 0x4c3d, 0x4c3e, 0x4c3f, + 0x4c40, 0x4c41, 0x4c42, 0x4c43, 0x4c44, 0x4c45, 0x4c46, 0x4c47, + 0x4c48, 0x4c49, 0x4c4a, 0x4c4b, 0x4c4c, 0x4c4d, 0x4c4e, 0x4c4f, + 0x4c50, 0x4c51, 0x4c52, 0x4c53, 0x4c54, 0x4c55, 0x4c56, 0x4c57, + 0x4c58, 0x4c59, 0x4c5a, 0x4c5b, 0x4c5c, 0x4c5d, 0x4c5e, 0x4c5f, + 0x4c60, 0x4c61, 0x4c62, 0x4c63, 0x4c64, 0x4c65, 0x4c66, 0x4c67, + 0x4c68, 0x4c69, 0x4c6a, 0x4c6b, 0x4c6c, 0x4c6d, 0x4c6e, 0x4c6f, + 0x4c70, 0x4c71, 0x4c72, 0x4c73, 0x4c74, 0x4c75, 0x4c76, 0x4c77, + 0x4c78, 0x4c79, 0x4c7a, 0x4c7b, 0x4c7c, 0x4c7d, 0x4c7e, 0x4c7f, + 0x4c80, 0x4c81, 0x4c82, 0x4c83, 0x4c84, 0x4c85, 0x4c86, 0x4c87, + 0x4c88, 0x4c89, 0x4c8a, 0x4c8b, 0x4c8c, 0x4c8d, 0x4c8e, 0x4c8f, + 0x4c90, 0x4c91, 0x4c92, 0x4c93, 0x4c94, 0x4c95, 0x4c96, 0x4c97, + 0x4c98, 0x4c99, 0x4c9a, 0x4c9b, 0x4c9c, 0x4c9d, 0x4c9e, 0x4c9f, + 0x4ca0, 0x4ca1, 0x4ca2, 0x4ca3, 0x4ca4, 0x4ca5, 0x4ca6, 0x4ca7, + 0x4ca8, 0x4ca9, 0x4caa, 0x4cab, 0x4cac, 0x4cad, 0x4cae, 0x4caf, + 0x4cb0, 0x4cb1, 0x4cb2, 0x4cb3, 0x4cb4, 0x4cb5, 0x4cb6, 0x4cb7, + 0x4cb8, 0x4cb9, 0x4cba, 0x4cbb, 0x4cbc, 0x4cbd, 0x4cbe, 0x4cbf, + 0x4cc0, 0x4cc1, 0x4cc2, 0x4cc3, 0x4cc4, 0x4cc5, 0x4cc6, 0x4cc7, + 0x4cc8, 0x4cc9, 0x4cca, 0x4ccb, 0x4ccc, 0x4ccd, 0x4cce, 0x4ccf, + 0x4cd0, 0x4cd1, 0x4cd2, 0x4cd3, 0x4cd4, 0x4cd5, 0x4cd6, 0x4cd7, + 0x4cd8, 0x4cd9, 0x4cda, 0x4cdb, 0x4cdc, 0x4cdd, 0x4cde, 0x4cdf, + 0x4ce0, 0x4ce1, 0x4ce2, 0x4ce3, 0x4ce4, 0x4ce5, 0x4ce6, 0x4ce7, + 0x4ce8, 0x4ce9, 0x4cea, 0x4ceb, 0x4cec, 0x4ced, 0x4cee, 0x4cef, + 0x4cf0, 0x4cf1, 0x4cf2, 0x4cf3, 0x4cf4, 0x4cf5, 0x4cf6, 0x4cf7, + 0x4cf8, 0x4cf9, 0x4cfa, 0x4cfb, 0x4cfc, 0x4cfd, 0x4cfe, 0x4cff, + 0x4d00, 0x4d01, 0x4d02, 0x4d03, 0x4d04, 0x4d05, 0x4d06, 0x4d07, + 0x4d08, 0x4d09, 0x4d0a, 0x4d0b, 0x4d0c, 0x4d0d, 0x4d0e, 0x4d0f, + 0x4d10, 0x4d11, 0x4d12, 0x4d13, 0x4d14, 0x4d15, 0x4d16, 0x4d17, + 0x4d18, 0x4d19, 0x4d1a, 0x4d1b, 0x4d1c, 0x4d1d, 0x4d1e, 0x4d1f, + 0x4d20, 0x4d21, 0x4d22, 0x4d23, 0x4d24, 0x4d25, 0x4d26, 0x4d27, + 0x4d28, 0x4d29, 0x4d2a, 0x4d2b, 0x4d2c, 0x4d2d, 0x4d2e, 0x4d2f, + 0x4d30, 0x4d31, 0x4d32, 0x4d33, 0x4d34, 0x4d35, 0x4d36, 0x4d37, + 0x4d38, 0x4d39, 0x4d3a, 0x4d3b, 0x4d3c, 0x4d3d, 0x4d3e, 0x4d3f, + 0x4d40, 0x4d41, 0x4d42, 0x4d43, 0x4d44, 0x4d45, 0x4d46, 0x4d47, + 0x4d48, 0x4d49, 0x4d4a, 0x4d4b, 0x4d4c, 0x4d4d, 0x4d4e, 0x4d4f, + 0x4d50, 0x4d51, 0x4d52, 0x4d53, 0x4d54, 0x4d55, 0x4d56, 0x4d57, + 0x4d58, 0x4d59, 0x4d5a, 0x4d5b, 0x4d5c, 0x4d5d, 0x4d5e, 0x4d5f, + 0x4d60, 0x4d61, 0x4d62, 0x4d63, 0x4d64, 0x4d65, 0x4d66, 0x4d67, + 0x4d68, 0x4d69, 0x4d6a, 0x4d6b, 0x4d6c, 0x4d6d, 0x4d6e, 0x4d6f, + 0x4d70, 0x4d71, 0x4d72, 0x4d73, 0x4d74, 0x4d75, 0x4d76, 0x4d77, + 0x4d78, 0x4d79, 0x4d7a, 0x4d7b, 0x4d7c, 0x4d7d, 0x4d7e, 0x4d7f, + 0x4d80, 0x4d81, 0x4d82, 0x4d83, 0x4d84, 0x4d85, 0x4d86, 0x4d87, + 0x4d88, 0x4d89, 0x4d8a, 0x4d8b, 0x4d8c, 0x4d8d, 0x4d8e, 0x4d8f, + 0x4d90, 0x4d91, 0x4d92, 0x4d93, 0x4d94, 0x4d95, 0x4d96, 0x4d97, + 0x4d98, 0x4d99, 0x4d9a, 0x4d9b, 0x4d9c, 0x4d9d, 0x4d9e, 0x4d9f, + 0x4da0, 0x4da1, 0x4da2, 0x4da3, 0x4da4, 0x4da5, 0x4da6, 0x4da7, + 0x4da8, 0x4da9, 0x4daa, 0x4dab, 0x4dac, 0x4dad, 0x4dae, 0x4daf, + 0x4db0, 0x4db1, 0x4db2, 0x4db3, 0x4db4, 0x4db5, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x4dc0, 0x4dc1, 0x4dc2, 0x4dc3, 0x4dc4, 0x4dc5, 0x4dc6, 0x4dc7, + 0x4dc8, 0x4dc9, 0x4dca, 0x4dcb, 0x4dcc, 0x4dcd, 0x4dce, 0x4dcf, + 0x4dd0, 0x4dd1, 0x4dd2, 0x4dd3, 0x4dd4, 0x4dd5, 0x4dd6, 0x4dd7, + 0x4dd8, 0x4dd9, 0x4dda, 0x4ddb, 0x4ddc, 0x4ddd, 0x4dde, 0x4ddf, + 0x4de0, 0x4de1, 0x4de2, 0x4de3, 0x4de4, 0x4de5, 0x4de6, 0x4de7, + 0x4de8, 0x4de9, 0x4dea, 0x4deb, 0x4dec, 0x4ded, 0x4dee, 0x4def, + 0x4df0, 0x4df1, 0x4df2, 0x4df3, 0x4df4, 0x4df5, 0x4df6, 0x4df7, + 0x4df8, 0x4df9, 0x4dfa, 0x4dfb, 0x4dfc, 0x4dfd, 0x4dfe, 0x4dff, + 0x4e00, 0x4e01, 0x4e02, 0x4e03, 0x4e04, 0x4e05, 0x4e06, 0x4e07, + 0x4e08, 0x4e09, 0x4e0a, 0x4e0b, 0x4e0c, 0x4e0d, 0x4e0e, 0x4e0f, + 0x4e10, 0x4e11, 0x4e12, 0x4e13, 0x4e14, 0x4e15, 0x4e16, 0x4e17, + 0x4e18, 0x4e19, 0x4e1a, 0x4e1b, 0x4e1c, 0x4e1d, 0x4e1e, 0x4e1f, + 0x4e20, 0x4e21, 0x4e22, 0x4e23, 0x4e24, 0x4e25, 0x4e26, 0x4e27, + 0x4e28, 0x4e29, 0x4e2a, 0x4e2b, 0x4e2c, 0x4e2d, 0x4e2e, 0x4e2f, + 0x4e30, 0x4e31, 0x4e32, 0x4e33, 0x4e34, 0x4e35, 0x4e36, 0x4e37, + 0x4e38, 0x4e39, 0x4e3a, 0x4e3b, 0x4e3c, 0x4e3d, 0x4e3e, 0x4e3f, + 0x4e40, 0x4e41, 0x4e42, 0x4e43, 0x4e44, 0x4e45, 0x4e46, 0x4e47, + 0x4e48, 0x4e49, 0x4e4a, 0x4e4b, 0x4e4c, 0x4e4d, 0x4e4e, 0x4e4f, + 0x4e50, 0x4e51, 0x4e52, 0x4e53, 0x4e54, 0x4e55, 0x4e56, 0x4e57, + 0x4e58, 0x4e59, 0x4e5a, 0x4e5b, 0x4e5c, 0x4e5d, 0x4e5e, 0x4e5f, + 0x4e60, 0x4e61, 0x4e62, 0x4e63, 0x4e64, 0x4e65, 0x4e66, 0x4e67, + 0x4e68, 0x4e69, 0x4e6a, 0x4e6b, 0x4e6c, 0x4e6d, 0x4e6e, 0x4e6f, + 0x4e70, 0x4e71, 0x4e72, 0x4e73, 0x4e74, 0x4e75, 0x4e76, 0x4e77, + 0x4e78, 0x4e79, 0x4e7a, 0x4e7b, 0x4e7c, 0x4e7d, 0x4e7e, 0x4e7f, + 0x4e80, 0x4e81, 0x4e82, 0x4e83, 0x4e84, 0x4e85, 0x4e86, 0x4e87, + 0x4e88, 0x4e89, 0x4e8a, 0x4e8b, 0x4e8c, 0x4e8d, 0x4e8e, 0x4e8f, + 0x4e90, 0x4e91, 0x4e92, 0x4e93, 0x4e94, 0x4e95, 0x4e96, 0x4e97, + 0x4e98, 0x4e99, 0x4e9a, 0x4e9b, 0x4e9c, 0x4e9d, 0x4e9e, 0x4e9f, + 0x4ea0, 0x4ea1, 0x4ea2, 0x4ea3, 0x4ea4, 0x4ea5, 0x4ea6, 0x4ea7, + 0x4ea8, 0x4ea9, 0x4eaa, 0x4eab, 0x4eac, 0x4ead, 0x4eae, 0x4eaf, + 0x4eb0, 0x4eb1, 0x4eb2, 0x4eb3, 0x4eb4, 0x4eb5, 0x4eb6, 0x4eb7, + 0x4eb8, 0x4eb9, 0x4eba, 0x4ebb, 0x4ebc, 0x4ebd, 0x4ebe, 0x4ebf, + 0x4ec0, 0x4ec1, 0x4ec2, 0x4ec3, 0x4ec4, 0x4ec5, 0x4ec6, 0x4ec7, + 0x4ec8, 0x4ec9, 0x4eca, 0x4ecb, 0x4ecc, 0x4ecd, 0x4ece, 0x4ecf, + 0x4ed0, 0x4ed1, 0x4ed2, 0x4ed3, 0x4ed4, 0x4ed5, 0x4ed6, 0x4ed7, + 0x4ed8, 0x4ed9, 0x4eda, 0x4edb, 0x4edc, 0x4edd, 0x4ede, 0x4edf, + 0x4ee0, 0x4ee1, 0x4ee2, 0x4ee3, 0x4ee4, 0x4ee5, 0x4ee6, 0x4ee7, + 0x4ee8, 0x4ee9, 0x4eea, 0x4eeb, 0x4eec, 0x4eed, 0x4eee, 0x4eef, + 0x4ef0, 0x4ef1, 0x4ef2, 0x4ef3, 0x4ef4, 0x4ef5, 0x4ef6, 0x4ef7, + 0x4ef8, 0x4ef9, 0x4efa, 0x4efb, 0x4efc, 0x4efd, 0x4efe, 0x4eff, + 0x4f00, 0x4f01, 0x4f02, 0x4f03, 0x4f04, 0x4f05, 0x4f06, 0x4f07, + 0x4f08, 0x4f09, 0x4f0a, 0x4f0b, 0x4f0c, 0x4f0d, 0x4f0e, 0x4f0f, + 0x4f10, 0x4f11, 0x4f12, 0x4f13, 0x4f14, 0x4f15, 0x4f16, 0x4f17, + 0x4f18, 0x4f19, 0x4f1a, 0x4f1b, 0x4f1c, 0x4f1d, 0x4f1e, 0x4f1f, + 0x4f20, 0x4f21, 0x4f22, 0x4f23, 0x4f24, 0x4f25, 0x4f26, 0x4f27, + 0x4f28, 0x4f29, 0x4f2a, 0x4f2b, 0x4f2c, 0x4f2d, 0x4f2e, 0x4f2f, + 0x4f30, 0x4f31, 0x4f32, 0x4f33, 0x4f34, 0x4f35, 0x4f36, 0x4f37, + 0x4f38, 0x4f39, 0x4f3a, 0x4f3b, 0x4f3c, 0x4f3d, 0x4f3e, 0x4f3f, + 0x4f40, 0x4f41, 0x4f42, 0x4f43, 0x4f44, 0x4f45, 0x4f46, 0x4f47, + 0x4f48, 0x4f49, 0x4f4a, 0x4f4b, 0x4f4c, 0x4f4d, 0x4f4e, 0x4f4f, + 0x4f50, 0x4f51, 0x4f52, 0x4f53, 0x4f54, 0x4f55, 0x4f56, 0x4f57, + 0x4f58, 0x4f59, 0x4f5a, 0x4f5b, 0x4f5c, 0x4f5d, 0x4f5e, 0x4f5f, + 0x4f60, 0x4f61, 0x4f62, 0x4f63, 0x4f64, 0x4f65, 0x4f66, 0x4f67, + 0x4f68, 0x4f69, 0x4f6a, 0x4f6b, 0x4f6c, 0x4f6d, 0x4f6e, 0x4f6f, + 0x4f70, 0x4f71, 0x4f72, 0x4f73, 0x4f74, 0x4f75, 0x4f76, 0x4f77, + 0x4f78, 0x4f79, 0x4f7a, 0x4f7b, 0x4f7c, 0x4f7d, 0x4f7e, 0x4f7f, + 0x4f80, 0x4f81, 0x4f82, 0x4f83, 0x4f84, 0x4f85, 0x4f86, 0x4f87, + 0x4f88, 0x4f89, 0x4f8a, 0x4f8b, 0x4f8c, 0x4f8d, 0x4f8e, 0x4f8f, + 0x4f90, 0x4f91, 0x4f92, 0x4f93, 0x4f94, 0x4f95, 0x4f96, 0x4f97, + 0x4f98, 0x4f99, 0x4f9a, 0x4f9b, 0x4f9c, 0x4f9d, 0x4f9e, 0x4f9f, + 0x4fa0, 0x4fa1, 0x4fa2, 0x4fa3, 0x4fa4, 0x4fa5, 0x4fa6, 0x4fa7, + 0x4fa8, 0x4fa9, 0x4faa, 0x4fab, 0x4fac, 0x4fad, 0x4fae, 0x4faf, + 0x4fb0, 0x4fb1, 0x4fb2, 0x4fb3, 0x4fb4, 0x4fb5, 0x4fb6, 0x4fb7, + 0x4fb8, 0x4fb9, 0x4fba, 0x4fbb, 0x4fbc, 0x4fbd, 0x4fbe, 0x4fbf, + 0x4fc0, 0x4fc1, 0x4fc2, 0x4fc3, 0x4fc4, 0x4fc5, 0x4fc6, 0x4fc7, + 0x4fc8, 0x4fc9, 0x4fca, 0x4fcb, 0x4fcc, 0x4fcd, 0x4fce, 0x4fcf, + 0x4fd0, 0x4fd1, 0x4fd2, 0x4fd3, 0x4fd4, 0x4fd5, 0x4fd6, 0x4fd7, + 0x4fd8, 0x4fd9, 0x4fda, 0x4fdb, 0x4fdc, 0x4fdd, 0x4fde, 0x4fdf, + 0x4fe0, 0x4fe1, 0x4fe2, 0x4fe3, 0x4fe4, 0x4fe5, 0x4fe6, 0x4fe7, + 0x4fe8, 0x4fe9, 0x4fea, 0x4feb, 0x4fec, 0x4fed, 0x4fee, 0x4fef, + 0x4ff0, 0x4ff1, 0x4ff2, 0x4ff3, 0x4ff4, 0x4ff5, 0x4ff6, 0x4ff7, + 0x4ff8, 0x4ff9, 0x4ffa, 0x4ffb, 0x4ffc, 0x4ffd, 0x4ffe, 0x4fff, + 0x5000, 0x5001, 0x5002, 0x5003, 0x5004, 0x5005, 0x5006, 0x5007, + 0x5008, 0x5009, 0x500a, 0x500b, 0x500c, 0x500d, 0x500e, 0x500f, + 0x5010, 0x5011, 0x5012, 0x5013, 0x5014, 0x5015, 0x5016, 0x5017, + 0x5018, 0x5019, 0x501a, 0x501b, 0x501c, 0x501d, 0x501e, 0x501f, + 0x5020, 0x5021, 0x5022, 0x5023, 0x5024, 0x5025, 0x5026, 0x5027, + 0x5028, 0x5029, 0x502a, 0x502b, 0x502c, 0x502d, 0x502e, 0x502f, + 0x5030, 0x5031, 0x5032, 0x5033, 0x5034, 0x5035, 0x5036, 0x5037, + 0x5038, 0x5039, 0x503a, 0x503b, 0x503c, 0x503d, 0x503e, 0x503f, + 0x5040, 0x5041, 0x5042, 0x5043, 0x5044, 0x5045, 0x5046, 0x5047, + 0x5048, 0x5049, 0x504a, 0x504b, 0x504c, 0x504d, 0x504e, 0x504f, + 0x5050, 0x5051, 0x5052, 0x5053, 0x5054, 0x5055, 0x5056, 0x5057, + 0x5058, 0x5059, 0x505a, 0x505b, 0x505c, 0x505d, 0x505e, 0x505f, + 0x5060, 0x5061, 0x5062, 0x5063, 0x5064, 0x5065, 0x5066, 0x5067, + 0x5068, 0x5069, 0x506a, 0x506b, 0x506c, 0x506d, 0x506e, 0x506f, + 0x5070, 0x5071, 0x5072, 0x5073, 0x5074, 0x5075, 0x5076, 0x5077, + 0x5078, 0x5079, 0x507a, 0x507b, 0x507c, 0x507d, 0x507e, 0x507f, + 0x5080, 0x5081, 0x5082, 0x5083, 0x5084, 0x5085, 0x5086, 0x5087, + 0x5088, 0x5089, 0x508a, 0x508b, 0x508c, 0x508d, 0x508e, 0x508f, + 0x5090, 0x5091, 0x5092, 0x5093, 0x5094, 0x5095, 0x5096, 0x5097, + 0x5098, 0x5099, 0x509a, 0x509b, 0x509c, 0x509d, 0x509e, 0x509f, + 0x50a0, 0x50a1, 0x50a2, 0x50a3, 0x50a4, 0x50a5, 0x50a6, 0x50a7, + 0x50a8, 0x50a9, 0x50aa, 0x50ab, 0x50ac, 0x50ad, 0x50ae, 0x50af, + 0x50b0, 0x50b1, 0x50b2, 0x50b3, 0x50b4, 0x50b5, 0x50b6, 0x50b7, + 0x50b8, 0x50b9, 0x50ba, 0x50bb, 0x50bc, 0x50bd, 0x50be, 0x50bf, + 0x50c0, 0x50c1, 0x50c2, 0x50c3, 0x50c4, 0x50c5, 0x50c6, 0x50c7, + 0x50c8, 0x50c9, 0x50ca, 0x50cb, 0x50cc, 0x50cd, 0x50ce, 0x50cf, + 0x50d0, 0x50d1, 0x50d2, 0x50d3, 0x50d4, 0x50d5, 0x50d6, 0x50d7, + 0x50d8, 0x50d9, 0x50da, 0x50db, 0x50dc, 0x50dd, 0x50de, 0x50df, + 0x50e0, 0x50e1, 0x50e2, 0x50e3, 0x50e4, 0x50e5, 0x50e6, 0x50e7, + 0x50e8, 0x50e9, 0x50ea, 0x50eb, 0x50ec, 0x50ed, 0x50ee, 0x50ef, + 0x50f0, 0x50f1, 0x50f2, 0x50f3, 0x50f4, 0x50f5, 0x50f6, 0x50f7, + 0x50f8, 0x50f9, 0x50fa, 0x50fb, 0x50fc, 0x50fd, 0x50fe, 0x50ff, + 0x5100, 0x5101, 0x5102, 0x5103, 0x5104, 0x5105, 0x5106, 0x5107, + 0x5108, 0x5109, 0x510a, 0x510b, 0x510c, 0x510d, 0x510e, 0x510f, + 0x5110, 0x5111, 0x5112, 0x5113, 0x5114, 0x5115, 0x5116, 0x5117, + 0x5118, 0x5119, 0x511a, 0x511b, 0x511c, 0x511d, 0x511e, 0x511f, + 0x5120, 0x5121, 0x5122, 0x5123, 0x5124, 0x5125, 0x5126, 0x5127, + 0x5128, 0x5129, 0x512a, 0x512b, 0x512c, 0x512d, 0x512e, 0x512f, + 0x5130, 0x5131, 0x5132, 0x5133, 0x5134, 0x5135, 0x5136, 0x5137, + 0x5138, 0x5139, 0x513a, 0x513b, 0x513c, 0x513d, 0x513e, 0x513f, + 0x5140, 0x5141, 0x5142, 0x5143, 0x5144, 0x5145, 0x5146, 0x5147, + 0x5148, 0x5149, 0x514a, 0x514b, 0x514c, 0x514d, 0x514e, 0x514f, + 0x5150, 0x5151, 0x5152, 0x5153, 0x5154, 0x5155, 0x5156, 0x5157, + 0x5158, 0x5159, 0x515a, 0x515b, 0x515c, 0x515d, 0x515e, 0x515f, + 0x5160, 0x5161, 0x5162, 0x5163, 0x5164, 0x5165, 0x5166, 0x5167, + 0x5168, 0x5169, 0x516a, 0x516b, 0x516c, 0x516d, 0x516e, 0x516f, + 0x5170, 0x5171, 0x5172, 0x5173, 0x5174, 0x5175, 0x5176, 0x5177, + 0x5178, 0x5179, 0x517a, 0x517b, 0x517c, 0x517d, 0x517e, 0x517f, + 0x5180, 0x5181, 0x5182, 0x5183, 0x5184, 0x5185, 0x5186, 0x5187, + 0x5188, 0x5189, 0x518a, 0x518b, 0x518c, 0x518d, 0x518e, 0x518f, + 0x5190, 0x5191, 0x5192, 0x5193, 0x5194, 0x5195, 0x5196, 0x5197, + 0x5198, 0x5199, 0x519a, 0x519b, 0x519c, 0x519d, 0x519e, 0x519f, + 0x51a0, 0x51a1, 0x51a2, 0x51a3, 0x51a4, 0x51a5, 0x51a6, 0x51a7, + 0x51a8, 0x51a9, 0x51aa, 0x51ab, 0x51ac, 0x51ad, 0x51ae, 0x51af, + 0x51b0, 0x51b1, 0x51b2, 0x51b3, 0x51b4, 0x51b5, 0x51b6, 0x51b7, + 0x51b8, 0x51b9, 0x51ba, 0x51bb, 0x51bc, 0x51bd, 0x51be, 0x51bf, + 0x51c0, 0x51c1, 0x51c2, 0x51c3, 0x51c4, 0x51c5, 0x51c6, 0x51c7, + 0x51c8, 0x51c9, 0x51ca, 0x51cb, 0x51cc, 0x51cd, 0x51ce, 0x51cf, + 0x51d0, 0x51d1, 0x51d2, 0x51d3, 0x51d4, 0x51d5, 0x51d6, 0x51d7, + 0x51d8, 0x51d9, 0x51da, 0x51db, 0x51dc, 0x51dd, 0x51de, 0x51df, + 0x51e0, 0x51e1, 0x51e2, 0x51e3, 0x51e4, 0x51e5, 0x51e6, 0x51e7, + 0x51e8, 0x51e9, 0x51ea, 0x51eb, 0x51ec, 0x51ed, 0x51ee, 0x51ef, + 0x51f0, 0x51f1, 0x51f2, 0x51f3, 0x51f4, 0x51f5, 0x51f6, 0x51f7, + 0x51f8, 0x51f9, 0x51fa, 0x51fb, 0x51fc, 0x51fd, 0x51fe, 0x51ff, + 0x5200, 0x5201, 0x5202, 0x5203, 0x5204, 0x5205, 0x5206, 0x5207, + 0x5208, 0x5209, 0x520a, 0x520b, 0x520c, 0x520d, 0x520e, 0x520f, + 0x5210, 0x5211, 0x5212, 0x5213, 0x5214, 0x5215, 0x5216, 0x5217, + 0x5218, 0x5219, 0x521a, 0x521b, 0x521c, 0x521d, 0x521e, 0x521f, + 0x5220, 0x5221, 0x5222, 0x5223, 0x5224, 0x5225, 0x5226, 0x5227, + 0x5228, 0x5229, 0x522a, 0x522b, 0x522c, 0x522d, 0x522e, 0x522f, + 0x5230, 0x5231, 0x5232, 0x5233, 0x5234, 0x5235, 0x5236, 0x5237, + 0x5238, 0x5239, 0x523a, 0x523b, 0x523c, 0x523d, 0x523e, 0x523f, + 0x5240, 0x5241, 0x5242, 0x5243, 0x5244, 0x5245, 0x5246, 0x5247, + 0x5248, 0x5249, 0x524a, 0x524b, 0x524c, 0x524d, 0x524e, 0x524f, + 0x5250, 0x5251, 0x5252, 0x5253, 0x5254, 0x5255, 0x5256, 0x5257, + 0x5258, 0x5259, 0x525a, 0x525b, 0x525c, 0x525d, 0x525e, 0x525f, + 0x5260, 0x5261, 0x5262, 0x5263, 0x5264, 0x5265, 0x5266, 0x5267, + 0x5268, 0x5269, 0x526a, 0x526b, 0x526c, 0x526d, 0x526e, 0x526f, + 0x5270, 0x5271, 0x5272, 0x5273, 0x5274, 0x5275, 0x5276, 0x5277, + 0x5278, 0x5279, 0x527a, 0x527b, 0x527c, 0x527d, 0x527e, 0x527f, + 0x5280, 0x5281, 0x5282, 0x5283, 0x5284, 0x5285, 0x5286, 0x5287, + 0x5288, 0x5289, 0x528a, 0x528b, 0x528c, 0x528d, 0x528e, 0x528f, + 0x5290, 0x5291, 0x5292, 0x5293, 0x5294, 0x5295, 0x5296, 0x5297, + 0x5298, 0x5299, 0x529a, 0x529b, 0x529c, 0x529d, 0x529e, 0x529f, + 0x52a0, 0x52a1, 0x52a2, 0x52a3, 0x52a4, 0x52a5, 0x52a6, 0x52a7, + 0x52a8, 0x52a9, 0x52aa, 0x52ab, 0x52ac, 0x52ad, 0x52ae, 0x52af, + 0x52b0, 0x52b1, 0x52b2, 0x52b3, 0x52b4, 0x52b5, 0x52b6, 0x52b7, + 0x52b8, 0x52b9, 0x52ba, 0x52bb, 0x52bc, 0x52bd, 0x52be, 0x52bf, + 0x52c0, 0x52c1, 0x52c2, 0x52c3, 0x52c4, 0x52c5, 0x52c6, 0x52c7, + 0x52c8, 0x52c9, 0x52ca, 0x52cb, 0x52cc, 0x52cd, 0x52ce, 0x52cf, + 0x52d0, 0x52d1, 0x52d2, 0x52d3, 0x52d4, 0x52d5, 0x52d6, 0x52d7, + 0x52d8, 0x52d9, 0x52da, 0x52db, 0x52dc, 0x52dd, 0x52de, 0x52df, + 0x52e0, 0x52e1, 0x52e2, 0x52e3, 0x52e4, 0x52e5, 0x52e6, 0x52e7, + 0x52e8, 0x52e9, 0x52ea, 0x52eb, 0x52ec, 0x52ed, 0x52ee, 0x52ef, + 0x52f0, 0x52f1, 0x52f2, 0x52f3, 0x52f4, 0x52f5, 0x52f6, 0x52f7, + 0x52f8, 0x52f9, 0x52fa, 0x52fb, 0x52fc, 0x52fd, 0x52fe, 0x52ff, + 0x5300, 0x5301, 0x5302, 0x5303, 0x5304, 0x5305, 0x5306, 0x5307, + 0x5308, 0x5309, 0x530a, 0x530b, 0x530c, 0x530d, 0x530e, 0x530f, + 0x5310, 0x5311, 0x5312, 0x5313, 0x5314, 0x5315, 0x5316, 0x5317, + 0x5318, 0x5319, 0x531a, 0x531b, 0x531c, 0x531d, 0x531e, 0x531f, + 0x5320, 0x5321, 0x5322, 0x5323, 0x5324, 0x5325, 0x5326, 0x5327, + 0x5328, 0x5329, 0x532a, 0x532b, 0x532c, 0x532d, 0x532e, 0x532f, + 0x5330, 0x5331, 0x5332, 0x5333, 0x5334, 0x5335, 0x5336, 0x5337, + 0x5338, 0x5339, 0x533a, 0x533b, 0x533c, 0x533d, 0x533e, 0x533f, + 0x5340, 0x5341, 0x5342, 0x5343, 0x5344, 0x5345, 0x5346, 0x5347, + 0x5348, 0x5349, 0x534a, 0x534b, 0x534c, 0x534d, 0x534e, 0x534f, + 0x5350, 0x5351, 0x5352, 0x5353, 0x5354, 0x5355, 0x5356, 0x5357, + 0x5358, 0x5359, 0x535a, 0x535b, 0x535c, 0x535d, 0x535e, 0x535f, + 0x5360, 0x5361, 0x5362, 0x5363, 0x5364, 0x5365, 0x5366, 0x5367, + 0x5368, 0x5369, 0x536a, 0x536b, 0x536c, 0x536d, 0x536e, 0x536f, + 0x5370, 0x5371, 0x5372, 0x5373, 0x5374, 0x5375, 0x5376, 0x5377, + 0x5378, 0x5379, 0x537a, 0x537b, 0x537c, 0x537d, 0x537e, 0x537f, + 0x5380, 0x5381, 0x5382, 0x5383, 0x5384, 0x5385, 0x5386, 0x5387, + 0x5388, 0x5389, 0x538a, 0x538b, 0x538c, 0x538d, 0x538e, 0x538f, + 0x5390, 0x5391, 0x5392, 0x5393, 0x5394, 0x5395, 0x5396, 0x5397, + 0x5398, 0x5399, 0x539a, 0x539b, 0x539c, 0x539d, 0x539e, 0x539f, + 0x53a0, 0x53a1, 0x53a2, 0x53a3, 0x53a4, 0x53a5, 0x53a6, 0x53a7, + 0x53a8, 0x53a9, 0x53aa, 0x53ab, 0x53ac, 0x53ad, 0x53ae, 0x53af, + 0x53b0, 0x53b1, 0x53b2, 0x53b3, 0x53b4, 0x53b5, 0x53b6, 0x53b7, + 0x53b8, 0x53b9, 0x53ba, 0x53bb, 0x53bc, 0x53bd, 0x53be, 0x53bf, + 0x53c0, 0x53c1, 0x53c2, 0x53c3, 0x53c4, 0x53c5, 0x53c6, 0x53c7, + 0x53c8, 0x53c9, 0x53ca, 0x53cb, 0x53cc, 0x53cd, 0x53ce, 0x53cf, + 0x53d0, 0x53d1, 0x53d2, 0x53d3, 0x53d4, 0x53d5, 0x53d6, 0x53d7, + 0x53d8, 0x53d9, 0x53da, 0x53db, 0x53dc, 0x53dd, 0x53de, 0x53df, + 0x53e0, 0x53e1, 0x53e2, 0x53e3, 0x53e4, 0x53e5, 0x53e6, 0x53e7, + 0x53e8, 0x53e9, 0x53ea, 0x53eb, 0x53ec, 0x53ed, 0x53ee, 0x53ef, + 0x53f0, 0x53f1, 0x53f2, 0x53f3, 0x53f4, 0x53f5, 0x53f6, 0x53f7, + 0x53f8, 0x53f9, 0x53fa, 0x53fb, 0x53fc, 0x53fd, 0x53fe, 0x53ff, + 0x5400, 0x5401, 0x5402, 0x5403, 0x5404, 0x5405, 0x5406, 0x5407, + 0x5408, 0x5409, 0x540a, 0x540b, 0x540c, 0x540d, 0x540e, 0x540f, + 0x5410, 0x5411, 0x5412, 0x5413, 0x5414, 0x5415, 0x5416, 0x5417, + 0x5418, 0x5419, 0x541a, 0x541b, 0x541c, 0x541d, 0x541e, 0x541f, + 0x5420, 0x5421, 0x5422, 0x5423, 0x5424, 0x5425, 0x5426, 0x5427, + 0x5428, 0x5429, 0x542a, 0x542b, 0x542c, 0x542d, 0x542e, 0x542f, + 0x5430, 0x5431, 0x5432, 0x5433, 0x5434, 0x5435, 0x5436, 0x5437, + 0x5438, 0x5439, 0x543a, 0x543b, 0x543c, 0x543d, 0x543e, 0x543f, + 0x5440, 0x5441, 0x5442, 0x5443, 0x5444, 0x5445, 0x5446, 0x5447, + 0x5448, 0x5449, 0x544a, 0x544b, 0x544c, 0x544d, 0x544e, 0x544f, + 0x5450, 0x5451, 0x5452, 0x5453, 0x5454, 0x5455, 0x5456, 0x5457, + 0x5458, 0x5459, 0x545a, 0x545b, 0x545c, 0x545d, 0x545e, 0x545f, + 0x5460, 0x5461, 0x5462, 0x5463, 0x5464, 0x5465, 0x5466, 0x5467, + 0x5468, 0x5469, 0x546a, 0x546b, 0x546c, 0x546d, 0x546e, 0x546f, + 0x5470, 0x5471, 0x5472, 0x5473, 0x5474, 0x5475, 0x5476, 0x5477, + 0x5478, 0x5479, 0x547a, 0x547b, 0x547c, 0x547d, 0x547e, 0x547f, + 0x5480, 0x5481, 0x5482, 0x5483, 0x5484, 0x5485, 0x5486, 0x5487, + 0x5488, 0x5489, 0x548a, 0x548b, 0x548c, 0x548d, 0x548e, 0x548f, + 0x5490, 0x5491, 0x5492, 0x5493, 0x5494, 0x5495, 0x5496, 0x5497, + 0x5498, 0x5499, 0x549a, 0x549b, 0x549c, 0x549d, 0x549e, 0x549f, + 0x54a0, 0x54a1, 0x54a2, 0x54a3, 0x54a4, 0x54a5, 0x54a6, 0x54a7, + 0x54a8, 0x54a9, 0x54aa, 0x54ab, 0x54ac, 0x54ad, 0x54ae, 0x54af, + 0x54b0, 0x54b1, 0x54b2, 0x54b3, 0x54b4, 0x54b5, 0x54b6, 0x54b7, + 0x54b8, 0x54b9, 0x54ba, 0x54bb, 0x54bc, 0x54bd, 0x54be, 0x54bf, + 0x54c0, 0x54c1, 0x54c2, 0x54c3, 0x54c4, 0x54c5, 0x54c6, 0x54c7, + 0x54c8, 0x54c9, 0x54ca, 0x54cb, 0x54cc, 0x54cd, 0x54ce, 0x54cf, + 0x54d0, 0x54d1, 0x54d2, 0x54d3, 0x54d4, 0x54d5, 0x54d6, 0x54d7, + 0x54d8, 0x54d9, 0x54da, 0x54db, 0x54dc, 0x54dd, 0x54de, 0x54df, + 0x54e0, 0x54e1, 0x54e2, 0x54e3, 0x54e4, 0x54e5, 0x54e6, 0x54e7, + 0x54e8, 0x54e9, 0x54ea, 0x54eb, 0x54ec, 0x54ed, 0x54ee, 0x54ef, + 0x54f0, 0x54f1, 0x54f2, 0x54f3, 0x54f4, 0x54f5, 0x54f6, 0x54f7, + 0x54f8, 0x54f9, 0x54fa, 0x54fb, 0x54fc, 0x54fd, 0x54fe, 0x54ff, + 0x5500, 0x5501, 0x5502, 0x5503, 0x5504, 0x5505, 0x5506, 0x5507, + 0x5508, 0x5509, 0x550a, 0x550b, 0x550c, 0x550d, 0x550e, 0x550f, + 0x5510, 0x5511, 0x5512, 0x5513, 0x5514, 0x5515, 0x5516, 0x5517, + 0x5518, 0x5519, 0x551a, 0x551b, 0x551c, 0x551d, 0x551e, 0x551f, + 0x5520, 0x5521, 0x5522, 0x5523, 0x5524, 0x5525, 0x5526, 0x5527, + 0x5528, 0x5529, 0x552a, 0x552b, 0x552c, 0x552d, 0x552e, 0x552f, + 0x5530, 0x5531, 0x5532, 0x5533, 0x5534, 0x5535, 0x5536, 0x5537, + 0x5538, 0x5539, 0x553a, 0x553b, 0x553c, 0x553d, 0x553e, 0x553f, + 0x5540, 0x5541, 0x5542, 0x5543, 0x5544, 0x5545, 0x5546, 0x5547, + 0x5548, 0x5549, 0x554a, 0x554b, 0x554c, 0x554d, 0x554e, 0x554f, + 0x5550, 0x5551, 0x5552, 0x5553, 0x5554, 0x5555, 0x5556, 0x5557, + 0x5558, 0x5559, 0x555a, 0x555b, 0x555c, 0x555d, 0x555e, 0x555f, + 0x5560, 0x5561, 0x5562, 0x5563, 0x5564, 0x5565, 0x5566, 0x5567, + 0x5568, 0x5569, 0x556a, 0x556b, 0x556c, 0x556d, 0x556e, 0x556f, + 0x5570, 0x5571, 0x5572, 0x5573, 0x5574, 0x5575, 0x5576, 0x5577, + 0x5578, 0x5579, 0x557a, 0x557b, 0x557c, 0x557d, 0x557e, 0x557f, + 0x5580, 0x5581, 0x5582, 0x5583, 0x5584, 0x5585, 0x5586, 0x5587, + 0x5588, 0x5589, 0x558a, 0x558b, 0x558c, 0x558d, 0x558e, 0x558f, + 0x5590, 0x5591, 0x5592, 0x5593, 0x5594, 0x5595, 0x5596, 0x5597, + 0x5598, 0x5599, 0x559a, 0x559b, 0x559c, 0x559d, 0x559e, 0x559f, + 0x55a0, 0x55a1, 0x55a2, 0x55a3, 0x55a4, 0x55a5, 0x55a6, 0x55a7, + 0x55a8, 0x55a9, 0x55aa, 0x55ab, 0x55ac, 0x55ad, 0x55ae, 0x55af, + 0x55b0, 0x55b1, 0x55b2, 0x55b3, 0x55b4, 0x55b5, 0x55b6, 0x55b7, + 0x55b8, 0x55b9, 0x55ba, 0x55bb, 0x55bc, 0x55bd, 0x55be, 0x55bf, + 0x55c0, 0x55c1, 0x55c2, 0x55c3, 0x55c4, 0x55c5, 0x55c6, 0x55c7, + 0x55c8, 0x55c9, 0x55ca, 0x55cb, 0x55cc, 0x55cd, 0x55ce, 0x55cf, + 0x55d0, 0x55d1, 0x55d2, 0x55d3, 0x55d4, 0x55d5, 0x55d6, 0x55d7, + 0x55d8, 0x55d9, 0x55da, 0x55db, 0x55dc, 0x55dd, 0x55de, 0x55df, + 0x55e0, 0x55e1, 0x55e2, 0x55e3, 0x55e4, 0x55e5, 0x55e6, 0x55e7, + 0x55e8, 0x55e9, 0x55ea, 0x55eb, 0x55ec, 0x55ed, 0x55ee, 0x55ef, + 0x55f0, 0x55f1, 0x55f2, 0x55f3, 0x55f4, 0x55f5, 0x55f6, 0x55f7, + 0x55f8, 0x55f9, 0x55fa, 0x55fb, 0x55fc, 0x55fd, 0x55fe, 0x55ff, + 0x5600, 0x5601, 0x5602, 0x5603, 0x5604, 0x5605, 0x5606, 0x5607, + 0x5608, 0x5609, 0x560a, 0x560b, 0x560c, 0x560d, 0x560e, 0x560f, + 0x5610, 0x5611, 0x5612, 0x5613, 0x5614, 0x5615, 0x5616, 0x5617, + 0x5618, 0x5619, 0x561a, 0x561b, 0x561c, 0x561d, 0x561e, 0x561f, + 0x5620, 0x5621, 0x5622, 0x5623, 0x5624, 0x5625, 0x5626, 0x5627, + 0x5628, 0x5629, 0x562a, 0x562b, 0x562c, 0x562d, 0x562e, 0x562f, + 0x5630, 0x5631, 0x5632, 0x5633, 0x5634, 0x5635, 0x5636, 0x5637, + 0x5638, 0x5639, 0x563a, 0x563b, 0x563c, 0x563d, 0x563e, 0x563f, + 0x5640, 0x5641, 0x5642, 0x5643, 0x5644, 0x5645, 0x5646, 0x5647, + 0x5648, 0x5649, 0x564a, 0x564b, 0x564c, 0x564d, 0x564e, 0x564f, + 0x5650, 0x5651, 0x5652, 0x5653, 0x5654, 0x5655, 0x5656, 0x5657, + 0x5658, 0x5659, 0x565a, 0x565b, 0x565c, 0x565d, 0x565e, 0x565f, + 0x5660, 0x5661, 0x5662, 0x5663, 0x5664, 0x5665, 0x5666, 0x5667, + 0x5668, 0x5669, 0x566a, 0x566b, 0x566c, 0x566d, 0x566e, 0x566f, + 0x5670, 0x5671, 0x5672, 0x5673, 0x5674, 0x5675, 0x5676, 0x5677, + 0x5678, 0x5679, 0x567a, 0x567b, 0x567c, 0x567d, 0x567e, 0x567f, + 0x5680, 0x5681, 0x5682, 0x5683, 0x5684, 0x5685, 0x5686, 0x5687, + 0x5688, 0x5689, 0x568a, 0x568b, 0x568c, 0x568d, 0x568e, 0x568f, + 0x5690, 0x5691, 0x5692, 0x5693, 0x5694, 0x5695, 0x5696, 0x5697, + 0x5698, 0x5699, 0x569a, 0x569b, 0x569c, 0x569d, 0x569e, 0x569f, + 0x56a0, 0x56a1, 0x56a2, 0x56a3, 0x56a4, 0x56a5, 0x56a6, 0x56a7, + 0x56a8, 0x56a9, 0x56aa, 0x56ab, 0x56ac, 0x56ad, 0x56ae, 0x56af, + 0x56b0, 0x56b1, 0x56b2, 0x56b3, 0x56b4, 0x56b5, 0x56b6, 0x56b7, + 0x56b8, 0x56b9, 0x56ba, 0x56bb, 0x56bc, 0x56bd, 0x56be, 0x56bf, + 0x56c0, 0x56c1, 0x56c2, 0x56c3, 0x56c4, 0x56c5, 0x56c6, 0x56c7, + 0x56c8, 0x56c9, 0x56ca, 0x56cb, 0x56cc, 0x56cd, 0x56ce, 0x56cf, + 0x56d0, 0x56d1, 0x56d2, 0x56d3, 0x56d4, 0x56d5, 0x56d6, 0x56d7, + 0x56d8, 0x56d9, 0x56da, 0x56db, 0x56dc, 0x56dd, 0x56de, 0x56df, + 0x56e0, 0x56e1, 0x56e2, 0x56e3, 0x56e4, 0x56e5, 0x56e6, 0x56e7, + 0x56e8, 0x56e9, 0x56ea, 0x56eb, 0x56ec, 0x56ed, 0x56ee, 0x56ef, + 0x56f0, 0x56f1, 0x56f2, 0x56f3, 0x56f4, 0x56f5, 0x56f6, 0x56f7, + 0x56f8, 0x56f9, 0x56fa, 0x56fb, 0x56fc, 0x56fd, 0x56fe, 0x56ff, + 0x5700, 0x5701, 0x5702, 0x5703, 0x5704, 0x5705, 0x5706, 0x5707, + 0x5708, 0x5709, 0x570a, 0x570b, 0x570c, 0x570d, 0x570e, 0x570f, + 0x5710, 0x5711, 0x5712, 0x5713, 0x5714, 0x5715, 0x5716, 0x5717, + 0x5718, 0x5719, 0x571a, 0x571b, 0x571c, 0x571d, 0x571e, 0x571f, + 0x5720, 0x5721, 0x5722, 0x5723, 0x5724, 0x5725, 0x5726, 0x5727, + 0x5728, 0x5729, 0x572a, 0x572b, 0x572c, 0x572d, 0x572e, 0x572f, + 0x5730, 0x5731, 0x5732, 0x5733, 0x5734, 0x5735, 0x5736, 0x5737, + 0x5738, 0x5739, 0x573a, 0x573b, 0x573c, 0x573d, 0x573e, 0x573f, + 0x5740, 0x5741, 0x5742, 0x5743, 0x5744, 0x5745, 0x5746, 0x5747, + 0x5748, 0x5749, 0x574a, 0x574b, 0x574c, 0x574d, 0x574e, 0x574f, + 0x5750, 0x5751, 0x5752, 0x5753, 0x5754, 0x5755, 0x5756, 0x5757, + 0x5758, 0x5759, 0x575a, 0x575b, 0x575c, 0x575d, 0x575e, 0x575f, + 0x5760, 0x5761, 0x5762, 0x5763, 0x5764, 0x5765, 0x5766, 0x5767, + 0x5768, 0x5769, 0x576a, 0x576b, 0x576c, 0x576d, 0x576e, 0x576f, + 0x5770, 0x5771, 0x5772, 0x5773, 0x5774, 0x5775, 0x5776, 0x5777, + 0x5778, 0x5779, 0x577a, 0x577b, 0x577c, 0x577d, 0x577e, 0x577f, + 0x5780, 0x5781, 0x5782, 0x5783, 0x5784, 0x5785, 0x5786, 0x5787, + 0x5788, 0x5789, 0x578a, 0x578b, 0x578c, 0x578d, 0x578e, 0x578f, + 0x5790, 0x5791, 0x5792, 0x5793, 0x5794, 0x5795, 0x5796, 0x5797, + 0x5798, 0x5799, 0x579a, 0x579b, 0x579c, 0x579d, 0x579e, 0x579f, + 0x57a0, 0x57a1, 0x57a2, 0x57a3, 0x57a4, 0x57a5, 0x57a6, 0x57a7, + 0x57a8, 0x57a9, 0x57aa, 0x57ab, 0x57ac, 0x57ad, 0x57ae, 0x57af, + 0x57b0, 0x57b1, 0x57b2, 0x57b3, 0x57b4, 0x57b5, 0x57b6, 0x57b7, + 0x57b8, 0x57b9, 0x57ba, 0x57bb, 0x57bc, 0x57bd, 0x57be, 0x57bf, + 0x57c0, 0x57c1, 0x57c2, 0x57c3, 0x57c4, 0x57c5, 0x57c6, 0x57c7, + 0x57c8, 0x57c9, 0x57ca, 0x57cb, 0x57cc, 0x57cd, 0x57ce, 0x57cf, + 0x57d0, 0x57d1, 0x57d2, 0x57d3, 0x57d4, 0x57d5, 0x57d6, 0x57d7, + 0x57d8, 0x57d9, 0x57da, 0x57db, 0x57dc, 0x57dd, 0x57de, 0x57df, + 0x57e0, 0x57e1, 0x57e2, 0x57e3, 0x57e4, 0x57e5, 0x57e6, 0x57e7, + 0x57e8, 0x57e9, 0x57ea, 0x57eb, 0x57ec, 0x57ed, 0x57ee, 0x57ef, + 0x57f0, 0x57f1, 0x57f2, 0x57f3, 0x57f4, 0x57f5, 0x57f6, 0x57f7, + 0x57f8, 0x57f9, 0x57fa, 0x57fb, 0x57fc, 0x57fd, 0x57fe, 0x57ff, + 0x5800, 0x5801, 0x5802, 0x5803, 0x5804, 0x5805, 0x5806, 0x5807, + 0x5808, 0x5809, 0x580a, 0x580b, 0x580c, 0x580d, 0x580e, 0x580f, + 0x5810, 0x5811, 0x5812, 0x5813, 0x5814, 0x5815, 0x5816, 0x5817, + 0x5818, 0x5819, 0x581a, 0x581b, 0x581c, 0x581d, 0x581e, 0x581f, + 0x5820, 0x5821, 0x5822, 0x5823, 0x5824, 0x5825, 0x5826, 0x5827, + 0x5828, 0x5829, 0x582a, 0x582b, 0x582c, 0x582d, 0x582e, 0x582f, + 0x5830, 0x5831, 0x5832, 0x5833, 0x5834, 0x5835, 0x5836, 0x5837, + 0x5838, 0x5839, 0x583a, 0x583b, 0x583c, 0x583d, 0x583e, 0x583f, + 0x5840, 0x5841, 0x5842, 0x5843, 0x5844, 0x5845, 0x5846, 0x5847, + 0x5848, 0x5849, 0x584a, 0x584b, 0x584c, 0x584d, 0x584e, 0x584f, + 0x5850, 0x5851, 0x5852, 0x5853, 0x5854, 0x5855, 0x5856, 0x5857, + 0x5858, 0x5859, 0x585a, 0x585b, 0x585c, 0x585d, 0x585e, 0x585f, + 0x5860, 0x5861, 0x5862, 0x5863, 0x5864, 0x5865, 0x5866, 0x5867, + 0x5868, 0x5869, 0x586a, 0x586b, 0x586c, 0x586d, 0x586e, 0x586f, + 0x5870, 0x5871, 0x5872, 0x5873, 0x5874, 0x5875, 0x5876, 0x5877, + 0x5878, 0x5879, 0x587a, 0x587b, 0x587c, 0x587d, 0x587e, 0x587f, + 0x5880, 0x5881, 0x5882, 0x5883, 0x5884, 0x5885, 0x5886, 0x5887, + 0x5888, 0x5889, 0x588a, 0x588b, 0x588c, 0x588d, 0x588e, 0x588f, + 0x5890, 0x5891, 0x5892, 0x5893, 0x5894, 0x5895, 0x5896, 0x5897, + 0x5898, 0x5899, 0x589a, 0x589b, 0x589c, 0x589d, 0x589e, 0x589f, + 0x58a0, 0x58a1, 0x58a2, 0x58a3, 0x58a4, 0x58a5, 0x58a6, 0x58a7, + 0x58a8, 0x58a9, 0x58aa, 0x58ab, 0x58ac, 0x58ad, 0x58ae, 0x58af, + 0x58b0, 0x58b1, 0x58b2, 0x58b3, 0x58b4, 0x58b5, 0x58b6, 0x58b7, + 0x58b8, 0x58b9, 0x58ba, 0x58bb, 0x58bc, 0x58bd, 0x58be, 0x58bf, + 0x58c0, 0x58c1, 0x58c2, 0x58c3, 0x58c4, 0x58c5, 0x58c6, 0x58c7, + 0x58c8, 0x58c9, 0x58ca, 0x58cb, 0x58cc, 0x58cd, 0x58ce, 0x58cf, + 0x58d0, 0x58d1, 0x58d2, 0x58d3, 0x58d4, 0x58d5, 0x58d6, 0x58d7, + 0x58d8, 0x58d9, 0x58da, 0x58db, 0x58dc, 0x58dd, 0x58de, 0x58df, + 0x58e0, 0x58e1, 0x58e2, 0x58e3, 0x58e4, 0x58e5, 0x58e6, 0x58e7, + 0x58e8, 0x58e9, 0x58ea, 0x58eb, 0x58ec, 0x58ed, 0x58ee, 0x58ef, + 0x58f0, 0x58f1, 0x58f2, 0x58f3, 0x58f4, 0x58f5, 0x58f6, 0x58f7, + 0x58f8, 0x58f9, 0x58fa, 0x58fb, 0x58fc, 0x58fd, 0x58fe, 0x58ff, + 0x5900, 0x5901, 0x5902, 0x5903, 0x5904, 0x5905, 0x5906, 0x5907, + 0x5908, 0x5909, 0x590a, 0x590b, 0x590c, 0x590d, 0x590e, 0x590f, + 0x5910, 0x5911, 0x5912, 0x5913, 0x5914, 0x5915, 0x5916, 0x5917, + 0x5918, 0x5919, 0x591a, 0x591b, 0x591c, 0x591d, 0x591e, 0x591f, + 0x5920, 0x5921, 0x5922, 0x5923, 0x5924, 0x5925, 0x5926, 0x5927, + 0x5928, 0x5929, 0x592a, 0x592b, 0x592c, 0x592d, 0x592e, 0x592f, + 0x5930, 0x5931, 0x5932, 0x5933, 0x5934, 0x5935, 0x5936, 0x5937, + 0x5938, 0x5939, 0x593a, 0x593b, 0x593c, 0x593d, 0x593e, 0x593f, + 0x5940, 0x5941, 0x5942, 0x5943, 0x5944, 0x5945, 0x5946, 0x5947, + 0x5948, 0x5949, 0x594a, 0x594b, 0x594c, 0x594d, 0x594e, 0x594f, + 0x5950, 0x5951, 0x5952, 0x5953, 0x5954, 0x5955, 0x5956, 0x5957, + 0x5958, 0x5959, 0x595a, 0x595b, 0x595c, 0x595d, 0x595e, 0x595f, + 0x5960, 0x5961, 0x5962, 0x5963, 0x5964, 0x5965, 0x5966, 0x5967, + 0x5968, 0x5969, 0x596a, 0x596b, 0x596c, 0x596d, 0x596e, 0x596f, + 0x5970, 0x5971, 0x5972, 0x5973, 0x5974, 0x5975, 0x5976, 0x5977, + 0x5978, 0x5979, 0x597a, 0x597b, 0x597c, 0x597d, 0x597e, 0x597f, + 0x5980, 0x5981, 0x5982, 0x5983, 0x5984, 0x5985, 0x5986, 0x5987, + 0x5988, 0x5989, 0x598a, 0x598b, 0x598c, 0x598d, 0x598e, 0x598f, + 0x5990, 0x5991, 0x5992, 0x5993, 0x5994, 0x5995, 0x5996, 0x5997, + 0x5998, 0x5999, 0x599a, 0x599b, 0x599c, 0x599d, 0x599e, 0x599f, + 0x59a0, 0x59a1, 0x59a2, 0x59a3, 0x59a4, 0x59a5, 0x59a6, 0x59a7, + 0x59a8, 0x59a9, 0x59aa, 0x59ab, 0x59ac, 0x59ad, 0x59ae, 0x59af, + 0x59b0, 0x59b1, 0x59b2, 0x59b3, 0x59b4, 0x59b5, 0x59b6, 0x59b7, + 0x59b8, 0x59b9, 0x59ba, 0x59bb, 0x59bc, 0x59bd, 0x59be, 0x59bf, + 0x59c0, 0x59c1, 0x59c2, 0x59c3, 0x59c4, 0x59c5, 0x59c6, 0x59c7, + 0x59c8, 0x59c9, 0x59ca, 0x59cb, 0x59cc, 0x59cd, 0x59ce, 0x59cf, + 0x59d0, 0x59d1, 0x59d2, 0x59d3, 0x59d4, 0x59d5, 0x59d6, 0x59d7, + 0x59d8, 0x59d9, 0x59da, 0x59db, 0x59dc, 0x59dd, 0x59de, 0x59df, + 0x59e0, 0x59e1, 0x59e2, 0x59e3, 0x59e4, 0x59e5, 0x59e6, 0x59e7, + 0x59e8, 0x59e9, 0x59ea, 0x59eb, 0x59ec, 0x59ed, 0x59ee, 0x59ef, + 0x59f0, 0x59f1, 0x59f2, 0x59f3, 0x59f4, 0x59f5, 0x59f6, 0x59f7, + 0x59f8, 0x59f9, 0x59fa, 0x59fb, 0x59fc, 0x59fd, 0x59fe, 0x59ff, + 0x5a00, 0x5a01, 0x5a02, 0x5a03, 0x5a04, 0x5a05, 0x5a06, 0x5a07, + 0x5a08, 0x5a09, 0x5a0a, 0x5a0b, 0x5a0c, 0x5a0d, 0x5a0e, 0x5a0f, + 0x5a10, 0x5a11, 0x5a12, 0x5a13, 0x5a14, 0x5a15, 0x5a16, 0x5a17, + 0x5a18, 0x5a19, 0x5a1a, 0x5a1b, 0x5a1c, 0x5a1d, 0x5a1e, 0x5a1f, + 0x5a20, 0x5a21, 0x5a22, 0x5a23, 0x5a24, 0x5a25, 0x5a26, 0x5a27, + 0x5a28, 0x5a29, 0x5a2a, 0x5a2b, 0x5a2c, 0x5a2d, 0x5a2e, 0x5a2f, + 0x5a30, 0x5a31, 0x5a32, 0x5a33, 0x5a34, 0x5a35, 0x5a36, 0x5a37, + 0x5a38, 0x5a39, 0x5a3a, 0x5a3b, 0x5a3c, 0x5a3d, 0x5a3e, 0x5a3f, + 0x5a40, 0x5a41, 0x5a42, 0x5a43, 0x5a44, 0x5a45, 0x5a46, 0x5a47, + 0x5a48, 0x5a49, 0x5a4a, 0x5a4b, 0x5a4c, 0x5a4d, 0x5a4e, 0x5a4f, + 0x5a50, 0x5a51, 0x5a52, 0x5a53, 0x5a54, 0x5a55, 0x5a56, 0x5a57, + 0x5a58, 0x5a59, 0x5a5a, 0x5a5b, 0x5a5c, 0x5a5d, 0x5a5e, 0x5a5f, + 0x5a60, 0x5a61, 0x5a62, 0x5a63, 0x5a64, 0x5a65, 0x5a66, 0x5a67, + 0x5a68, 0x5a69, 0x5a6a, 0x5a6b, 0x5a6c, 0x5a6d, 0x5a6e, 0x5a6f, + 0x5a70, 0x5a71, 0x5a72, 0x5a73, 0x5a74, 0x5a75, 0x5a76, 0x5a77, + 0x5a78, 0x5a79, 0x5a7a, 0x5a7b, 0x5a7c, 0x5a7d, 0x5a7e, 0x5a7f, + 0x5a80, 0x5a81, 0x5a82, 0x5a83, 0x5a84, 0x5a85, 0x5a86, 0x5a87, + 0x5a88, 0x5a89, 0x5a8a, 0x5a8b, 0x5a8c, 0x5a8d, 0x5a8e, 0x5a8f, + 0x5a90, 0x5a91, 0x5a92, 0x5a93, 0x5a94, 0x5a95, 0x5a96, 0x5a97, + 0x5a98, 0x5a99, 0x5a9a, 0x5a9b, 0x5a9c, 0x5a9d, 0x5a9e, 0x5a9f, + 0x5aa0, 0x5aa1, 0x5aa2, 0x5aa3, 0x5aa4, 0x5aa5, 0x5aa6, 0x5aa7, + 0x5aa8, 0x5aa9, 0x5aaa, 0x5aab, 0x5aac, 0x5aad, 0x5aae, 0x5aaf, + 0x5ab0, 0x5ab1, 0x5ab2, 0x5ab3, 0x5ab4, 0x5ab5, 0x5ab6, 0x5ab7, + 0x5ab8, 0x5ab9, 0x5aba, 0x5abb, 0x5abc, 0x5abd, 0x5abe, 0x5abf, + 0x5ac0, 0x5ac1, 0x5ac2, 0x5ac3, 0x5ac4, 0x5ac5, 0x5ac6, 0x5ac7, + 0x5ac8, 0x5ac9, 0x5aca, 0x5acb, 0x5acc, 0x5acd, 0x5ace, 0x5acf, + 0x5ad0, 0x5ad1, 0x5ad2, 0x5ad3, 0x5ad4, 0x5ad5, 0x5ad6, 0x5ad7, + 0x5ad8, 0x5ad9, 0x5ada, 0x5adb, 0x5adc, 0x5add, 0x5ade, 0x5adf, + 0x5ae0, 0x5ae1, 0x5ae2, 0x5ae3, 0x5ae4, 0x5ae5, 0x5ae6, 0x5ae7, + 0x5ae8, 0x5ae9, 0x5aea, 0x5aeb, 0x5aec, 0x5aed, 0x5aee, 0x5aef, + 0x5af0, 0x5af1, 0x5af2, 0x5af3, 0x5af4, 0x5af5, 0x5af6, 0x5af7, + 0x5af8, 0x5af9, 0x5afa, 0x5afb, 0x5afc, 0x5afd, 0x5afe, 0x5aff, + 0x5b00, 0x5b01, 0x5b02, 0x5b03, 0x5b04, 0x5b05, 0x5b06, 0x5b07, + 0x5b08, 0x5b09, 0x5b0a, 0x5b0b, 0x5b0c, 0x5b0d, 0x5b0e, 0x5b0f, + 0x5b10, 0x5b11, 0x5b12, 0x5b13, 0x5b14, 0x5b15, 0x5b16, 0x5b17, + 0x5b18, 0x5b19, 0x5b1a, 0x5b1b, 0x5b1c, 0x5b1d, 0x5b1e, 0x5b1f, + 0x5b20, 0x5b21, 0x5b22, 0x5b23, 0x5b24, 0x5b25, 0x5b26, 0x5b27, + 0x5b28, 0x5b29, 0x5b2a, 0x5b2b, 0x5b2c, 0x5b2d, 0x5b2e, 0x5b2f, + 0x5b30, 0x5b31, 0x5b32, 0x5b33, 0x5b34, 0x5b35, 0x5b36, 0x5b37, + 0x5b38, 0x5b39, 0x5b3a, 0x5b3b, 0x5b3c, 0x5b3d, 0x5b3e, 0x5b3f, + 0x5b40, 0x5b41, 0x5b42, 0x5b43, 0x5b44, 0x5b45, 0x5b46, 0x5b47, + 0x5b48, 0x5b49, 0x5b4a, 0x5b4b, 0x5b4c, 0x5b4d, 0x5b4e, 0x5b4f, + 0x5b50, 0x5b51, 0x5b52, 0x5b53, 0x5b54, 0x5b55, 0x5b56, 0x5b57, + 0x5b58, 0x5b59, 0x5b5a, 0x5b5b, 0x5b5c, 0x5b5d, 0x5b5e, 0x5b5f, + 0x5b60, 0x5b61, 0x5b62, 0x5b63, 0x5b64, 0x5b65, 0x5b66, 0x5b67, + 0x5b68, 0x5b69, 0x5b6a, 0x5b6b, 0x5b6c, 0x5b6d, 0x5b6e, 0x5b6f, + 0x5b70, 0x5b71, 0x5b72, 0x5b73, 0x5b74, 0x5b75, 0x5b76, 0x5b77, + 0x5b78, 0x5b79, 0x5b7a, 0x5b7b, 0x5b7c, 0x5b7d, 0x5b7e, 0x5b7f, + 0x5b80, 0x5b81, 0x5b82, 0x5b83, 0x5b84, 0x5b85, 0x5b86, 0x5b87, + 0x5b88, 0x5b89, 0x5b8a, 0x5b8b, 0x5b8c, 0x5b8d, 0x5b8e, 0x5b8f, + 0x5b90, 0x5b91, 0x5b92, 0x5b93, 0x5b94, 0x5b95, 0x5b96, 0x5b97, + 0x5b98, 0x5b99, 0x5b9a, 0x5b9b, 0x5b9c, 0x5b9d, 0x5b9e, 0x5b9f, + 0x5ba0, 0x5ba1, 0x5ba2, 0x5ba3, 0x5ba4, 0x5ba5, 0x5ba6, 0x5ba7, + 0x5ba8, 0x5ba9, 0x5baa, 0x5bab, 0x5bac, 0x5bad, 0x5bae, 0x5baf, + 0x5bb0, 0x5bb1, 0x5bb2, 0x5bb3, 0x5bb4, 0x5bb5, 0x5bb6, 0x5bb7, + 0x5bb8, 0x5bb9, 0x5bba, 0x5bbb, 0x5bbc, 0x5bbd, 0x5bbe, 0x5bbf, + 0x5bc0, 0x5bc1, 0x5bc2, 0x5bc3, 0x5bc4, 0x5bc5, 0x5bc6, 0x5bc7, + 0x5bc8, 0x5bc9, 0x5bca, 0x5bcb, 0x5bcc, 0x5bcd, 0x5bce, 0x5bcf, + 0x5bd0, 0x5bd1, 0x5bd2, 0x5bd3, 0x5bd4, 0x5bd5, 0x5bd6, 0x5bd7, + 0x5bd8, 0x5bd9, 0x5bda, 0x5bdb, 0x5bdc, 0x5bdd, 0x5bde, 0x5bdf, + 0x5be0, 0x5be1, 0x5be2, 0x5be3, 0x5be4, 0x5be5, 0x5be6, 0x5be7, + 0x5be8, 0x5be9, 0x5bea, 0x5beb, 0x5bec, 0x5bed, 0x5bee, 0x5bef, + 0x5bf0, 0x5bf1, 0x5bf2, 0x5bf3, 0x5bf4, 0x5bf5, 0x5bf6, 0x5bf7, + 0x5bf8, 0x5bf9, 0x5bfa, 0x5bfb, 0x5bfc, 0x5bfd, 0x5bfe, 0x5bff, + 0x5c00, 0x5c01, 0x5c02, 0x5c03, 0x5c04, 0x5c05, 0x5c06, 0x5c07, + 0x5c08, 0x5c09, 0x5c0a, 0x5c0b, 0x5c0c, 0x5c0d, 0x5c0e, 0x5c0f, + 0x5c10, 0x5c11, 0x5c12, 0x5c13, 0x5c14, 0x5c15, 0x5c16, 0x5c17, + 0x5c18, 0x5c19, 0x5c1a, 0x5c1b, 0x5c1c, 0x5c1d, 0x5c1e, 0x5c1f, + 0x5c20, 0x5c21, 0x5c22, 0x5c23, 0x5c24, 0x5c25, 0x5c26, 0x5c27, + 0x5c28, 0x5c29, 0x5c2a, 0x5c2b, 0x5c2c, 0x5c2d, 0x5c2e, 0x5c2f, + 0x5c30, 0x5c31, 0x5c32, 0x5c33, 0x5c34, 0x5c35, 0x5c36, 0x5c37, + 0x5c38, 0x5c39, 0x5c3a, 0x5c3b, 0x5c3c, 0x5c3d, 0x5c3e, 0x5c3f, + 0x5c40, 0x5c41, 0x5c42, 0x5c43, 0x5c44, 0x5c45, 0x5c46, 0x5c47, + 0x5c48, 0x5c49, 0x5c4a, 0x5c4b, 0x5c4c, 0x5c4d, 0x5c4e, 0x5c4f, + 0x5c50, 0x5c51, 0x5c52, 0x5c53, 0x5c54, 0x5c55, 0x5c56, 0x5c57, + 0x5c58, 0x5c59, 0x5c5a, 0x5c5b, 0x5c5c, 0x5c5d, 0x5c5e, 0x5c5f, + 0x5c60, 0x5c61, 0x5c62, 0x5c63, 0x5c64, 0x5c65, 0x5c66, 0x5c67, + 0x5c68, 0x5c69, 0x5c6a, 0x5c6b, 0x5c6c, 0x5c6d, 0x5c6e, 0x5c6f, + 0x5c70, 0x5c71, 0x5c72, 0x5c73, 0x5c74, 0x5c75, 0x5c76, 0x5c77, + 0x5c78, 0x5c79, 0x5c7a, 0x5c7b, 0x5c7c, 0x5c7d, 0x5c7e, 0x5c7f, + 0x5c80, 0x5c81, 0x5c82, 0x5c83, 0x5c84, 0x5c85, 0x5c86, 0x5c87, + 0x5c88, 0x5c89, 0x5c8a, 0x5c8b, 0x5c8c, 0x5c8d, 0x5c8e, 0x5c8f, + 0x5c90, 0x5c91, 0x5c92, 0x5c93, 0x5c94, 0x5c95, 0x5c96, 0x5c97, + 0x5c98, 0x5c99, 0x5c9a, 0x5c9b, 0x5c9c, 0x5c9d, 0x5c9e, 0x5c9f, + 0x5ca0, 0x5ca1, 0x5ca2, 0x5ca3, 0x5ca4, 0x5ca5, 0x5ca6, 0x5ca7, + 0x5ca8, 0x5ca9, 0x5caa, 0x5cab, 0x5cac, 0x5cad, 0x5cae, 0x5caf, + 0x5cb0, 0x5cb1, 0x5cb2, 0x5cb3, 0x5cb4, 0x5cb5, 0x5cb6, 0x5cb7, + 0x5cb8, 0x5cb9, 0x5cba, 0x5cbb, 0x5cbc, 0x5cbd, 0x5cbe, 0x5cbf, + 0x5cc0, 0x5cc1, 0x5cc2, 0x5cc3, 0x5cc4, 0x5cc5, 0x5cc6, 0x5cc7, + 0x5cc8, 0x5cc9, 0x5cca, 0x5ccb, 0x5ccc, 0x5ccd, 0x5cce, 0x5ccf, + 0x5cd0, 0x5cd1, 0x5cd2, 0x5cd3, 0x5cd4, 0x5cd5, 0x5cd6, 0x5cd7, + 0x5cd8, 0x5cd9, 0x5cda, 0x5cdb, 0x5cdc, 0x5cdd, 0x5cde, 0x5cdf, + 0x5ce0, 0x5ce1, 0x5ce2, 0x5ce3, 0x5ce4, 0x5ce5, 0x5ce6, 0x5ce7, + 0x5ce8, 0x5ce9, 0x5cea, 0x5ceb, 0x5cec, 0x5ced, 0x5cee, 0x5cef, + 0x5cf0, 0x5cf1, 0x5cf2, 0x5cf3, 0x5cf4, 0x5cf5, 0x5cf6, 0x5cf7, + 0x5cf8, 0x5cf9, 0x5cfa, 0x5cfb, 0x5cfc, 0x5cfd, 0x5cfe, 0x5cff, + 0x5d00, 0x5d01, 0x5d02, 0x5d03, 0x5d04, 0x5d05, 0x5d06, 0x5d07, + 0x5d08, 0x5d09, 0x5d0a, 0x5d0b, 0x5d0c, 0x5d0d, 0x5d0e, 0x5d0f, + 0x5d10, 0x5d11, 0x5d12, 0x5d13, 0x5d14, 0x5d15, 0x5d16, 0x5d17, + 0x5d18, 0x5d19, 0x5d1a, 0x5d1b, 0x5d1c, 0x5d1d, 0x5d1e, 0x5d1f, + 0x5d20, 0x5d21, 0x5d22, 0x5d23, 0x5d24, 0x5d25, 0x5d26, 0x5d27, + 0x5d28, 0x5d29, 0x5d2a, 0x5d2b, 0x5d2c, 0x5d2d, 0x5d2e, 0x5d2f, + 0x5d30, 0x5d31, 0x5d32, 0x5d33, 0x5d34, 0x5d35, 0x5d36, 0x5d37, + 0x5d38, 0x5d39, 0x5d3a, 0x5d3b, 0x5d3c, 0x5d3d, 0x5d3e, 0x5d3f, + 0x5d40, 0x5d41, 0x5d42, 0x5d43, 0x5d44, 0x5d45, 0x5d46, 0x5d47, + 0x5d48, 0x5d49, 0x5d4a, 0x5d4b, 0x5d4c, 0x5d4d, 0x5d4e, 0x5d4f, + 0x5d50, 0x5d51, 0x5d52, 0x5d53, 0x5d54, 0x5d55, 0x5d56, 0x5d57, + 0x5d58, 0x5d59, 0x5d5a, 0x5d5b, 0x5d5c, 0x5d5d, 0x5d5e, 0x5d5f, + 0x5d60, 0x5d61, 0x5d62, 0x5d63, 0x5d64, 0x5d65, 0x5d66, 0x5d67, + 0x5d68, 0x5d69, 0x5d6a, 0x5d6b, 0x5d6c, 0x5d6d, 0x5d6e, 0x5d6f, + 0x5d70, 0x5d71, 0x5d72, 0x5d73, 0x5d74, 0x5d75, 0x5d76, 0x5d77, + 0x5d78, 0x5d79, 0x5d7a, 0x5d7b, 0x5d7c, 0x5d7d, 0x5d7e, 0x5d7f, + 0x5d80, 0x5d81, 0x5d82, 0x5d83, 0x5d84, 0x5d85, 0x5d86, 0x5d87, + 0x5d88, 0x5d89, 0x5d8a, 0x5d8b, 0x5d8c, 0x5d8d, 0x5d8e, 0x5d8f, + 0x5d90, 0x5d91, 0x5d92, 0x5d93, 0x5d94, 0x5d95, 0x5d96, 0x5d97, + 0x5d98, 0x5d99, 0x5d9a, 0x5d9b, 0x5d9c, 0x5d9d, 0x5d9e, 0x5d9f, + 0x5da0, 0x5da1, 0x5da2, 0x5da3, 0x5da4, 0x5da5, 0x5da6, 0x5da7, + 0x5da8, 0x5da9, 0x5daa, 0x5dab, 0x5dac, 0x5dad, 0x5dae, 0x5daf, + 0x5db0, 0x5db1, 0x5db2, 0x5db3, 0x5db4, 0x5db5, 0x5db6, 0x5db7, + 0x5db8, 0x5db9, 0x5dba, 0x5dbb, 0x5dbc, 0x5dbd, 0x5dbe, 0x5dbf, + 0x5dc0, 0x5dc1, 0x5dc2, 0x5dc3, 0x5dc4, 0x5dc5, 0x5dc6, 0x5dc7, + 0x5dc8, 0x5dc9, 0x5dca, 0x5dcb, 0x5dcc, 0x5dcd, 0x5dce, 0x5dcf, + 0x5dd0, 0x5dd1, 0x5dd2, 0x5dd3, 0x5dd4, 0x5dd5, 0x5dd6, 0x5dd7, + 0x5dd8, 0x5dd9, 0x5dda, 0x5ddb, 0x5ddc, 0x5ddd, 0x5dde, 0x5ddf, + 0x5de0, 0x5de1, 0x5de2, 0x5de3, 0x5de4, 0x5de5, 0x5de6, 0x5de7, + 0x5de8, 0x5de9, 0x5dea, 0x5deb, 0x5dec, 0x5ded, 0x5dee, 0x5def, + 0x5df0, 0x5df1, 0x5df2, 0x5df3, 0x5df4, 0x5df5, 0x5df6, 0x5df7, + 0x5df8, 0x5df9, 0x5dfa, 0x5dfb, 0x5dfc, 0x5dfd, 0x5dfe, 0x5dff, + 0x5e00, 0x5e01, 0x5e02, 0x5e03, 0x5e04, 0x5e05, 0x5e06, 0x5e07, + 0x5e08, 0x5e09, 0x5e0a, 0x5e0b, 0x5e0c, 0x5e0d, 0x5e0e, 0x5e0f, + 0x5e10, 0x5e11, 0x5e12, 0x5e13, 0x5e14, 0x5e15, 0x5e16, 0x5e17, + 0x5e18, 0x5e19, 0x5e1a, 0x5e1b, 0x5e1c, 0x5e1d, 0x5e1e, 0x5e1f, + 0x5e20, 0x5e21, 0x5e22, 0x5e23, 0x5e24, 0x5e25, 0x5e26, 0x5e27, + 0x5e28, 0x5e29, 0x5e2a, 0x5e2b, 0x5e2c, 0x5e2d, 0x5e2e, 0x5e2f, + 0x5e30, 0x5e31, 0x5e32, 0x5e33, 0x5e34, 0x5e35, 0x5e36, 0x5e37, + 0x5e38, 0x5e39, 0x5e3a, 0x5e3b, 0x5e3c, 0x5e3d, 0x5e3e, 0x5e3f, + 0x5e40, 0x5e41, 0x5e42, 0x5e43, 0x5e44, 0x5e45, 0x5e46, 0x5e47, + 0x5e48, 0x5e49, 0x5e4a, 0x5e4b, 0x5e4c, 0x5e4d, 0x5e4e, 0x5e4f, + 0x5e50, 0x5e51, 0x5e52, 0x5e53, 0x5e54, 0x5e55, 0x5e56, 0x5e57, + 0x5e58, 0x5e59, 0x5e5a, 0x5e5b, 0x5e5c, 0x5e5d, 0x5e5e, 0x5e5f, + 0x5e60, 0x5e61, 0x5e62, 0x5e63, 0x5e64, 0x5e65, 0x5e66, 0x5e67, + 0x5e68, 0x5e69, 0x5e6a, 0x5e6b, 0x5e6c, 0x5e6d, 0x5e6e, 0x5e6f, + 0x5e70, 0x5e71, 0x5e72, 0x5e73, 0x5e74, 0x5e75, 0x5e76, 0x5e77, + 0x5e78, 0x5e79, 0x5e7a, 0x5e7b, 0x5e7c, 0x5e7d, 0x5e7e, 0x5e7f, + 0x5e80, 0x5e81, 0x5e82, 0x5e83, 0x5e84, 0x5e85, 0x5e86, 0x5e87, + 0x5e88, 0x5e89, 0x5e8a, 0x5e8b, 0x5e8c, 0x5e8d, 0x5e8e, 0x5e8f, + 0x5e90, 0x5e91, 0x5e92, 0x5e93, 0x5e94, 0x5e95, 0x5e96, 0x5e97, + 0x5e98, 0x5e99, 0x5e9a, 0x5e9b, 0x5e9c, 0x5e9d, 0x5e9e, 0x5e9f, + 0x5ea0, 0x5ea1, 0x5ea2, 0x5ea3, 0x5ea4, 0x5ea5, 0x5ea6, 0x5ea7, + 0x5ea8, 0x5ea9, 0x5eaa, 0x5eab, 0x5eac, 0x5ead, 0x5eae, 0x5eaf, + 0x5eb0, 0x5eb1, 0x5eb2, 0x5eb3, 0x5eb4, 0x5eb5, 0x5eb6, 0x5eb7, + 0x5eb8, 0x5eb9, 0x5eba, 0x5ebb, 0x5ebc, 0x5ebd, 0x5ebe, 0x5ebf, + 0x5ec0, 0x5ec1, 0x5ec2, 0x5ec3, 0x5ec4, 0x5ec5, 0x5ec6, 0x5ec7, + 0x5ec8, 0x5ec9, 0x5eca, 0x5ecb, 0x5ecc, 0x5ecd, 0x5ece, 0x5ecf, + 0x5ed0, 0x5ed1, 0x5ed2, 0x5ed3, 0x5ed4, 0x5ed5, 0x5ed6, 0x5ed7, + 0x5ed8, 0x5ed9, 0x5eda, 0x5edb, 0x5edc, 0x5edd, 0x5ede, 0x5edf, + 0x5ee0, 0x5ee1, 0x5ee2, 0x5ee3, 0x5ee4, 0x5ee5, 0x5ee6, 0x5ee7, + 0x5ee8, 0x5ee9, 0x5eea, 0x5eeb, 0x5eec, 0x5eed, 0x5eee, 0x5eef, + 0x5ef0, 0x5ef1, 0x5ef2, 0x5ef3, 0x5ef4, 0x5ef5, 0x5ef6, 0x5ef7, + 0x5ef8, 0x5ef9, 0x5efa, 0x5efb, 0x5efc, 0x5efd, 0x5efe, 0x5eff, + 0x5f00, 0x5f01, 0x5f02, 0x5f03, 0x5f04, 0x5f05, 0x5f06, 0x5f07, + 0x5f08, 0x5f09, 0x5f0a, 0x5f0b, 0x5f0c, 0x5f0d, 0x5f0e, 0x5f0f, + 0x5f10, 0x5f11, 0x5f12, 0x5f13, 0x5f14, 0x5f15, 0x5f16, 0x5f17, + 0x5f18, 0x5f19, 0x5f1a, 0x5f1b, 0x5f1c, 0x5f1d, 0x5f1e, 0x5f1f, + 0x5f20, 0x5f21, 0x5f22, 0x5f23, 0x5f24, 0x5f25, 0x5f26, 0x5f27, + 0x5f28, 0x5f29, 0x5f2a, 0x5f2b, 0x5f2c, 0x5f2d, 0x5f2e, 0x5f2f, + 0x5f30, 0x5f31, 0x5f32, 0x5f33, 0x5f34, 0x5f35, 0x5f36, 0x5f37, + 0x5f38, 0x5f39, 0x5f3a, 0x5f3b, 0x5f3c, 0x5f3d, 0x5f3e, 0x5f3f, + 0x5f40, 0x5f41, 0x5f42, 0x5f43, 0x5f44, 0x5f45, 0x5f46, 0x5f47, + 0x5f48, 0x5f49, 0x5f4a, 0x5f4b, 0x5f4c, 0x5f4d, 0x5f4e, 0x5f4f, + 0x5f50, 0x5f51, 0x5f52, 0x5f53, 0x5f54, 0x5f55, 0x5f56, 0x5f57, + 0x5f58, 0x5f59, 0x5f5a, 0x5f5b, 0x5f5c, 0x5f5d, 0x5f5e, 0x5f5f, + 0x5f60, 0x5f61, 0x5f62, 0x5f63, 0x5f64, 0x5f65, 0x5f66, 0x5f67, + 0x5f68, 0x5f69, 0x5f6a, 0x5f6b, 0x5f6c, 0x5f6d, 0x5f6e, 0x5f6f, + 0x5f70, 0x5f71, 0x5f72, 0x5f73, 0x5f74, 0x5f75, 0x5f76, 0x5f77, + 0x5f78, 0x5f79, 0x5f7a, 0x5f7b, 0x5f7c, 0x5f7d, 0x5f7e, 0x5f7f, + 0x5f80, 0x5f81, 0x5f82, 0x5f83, 0x5f84, 0x5f85, 0x5f86, 0x5f87, + 0x5f88, 0x5f89, 0x5f8a, 0x5f8b, 0x5f8c, 0x5f8d, 0x5f8e, 0x5f8f, + 0x5f90, 0x5f91, 0x5f92, 0x5f93, 0x5f94, 0x5f95, 0x5f96, 0x5f97, + 0x5f98, 0x5f99, 0x5f9a, 0x5f9b, 0x5f9c, 0x5f9d, 0x5f9e, 0x5f9f, + 0x5fa0, 0x5fa1, 0x5fa2, 0x5fa3, 0x5fa4, 0x5fa5, 0x5fa6, 0x5fa7, + 0x5fa8, 0x5fa9, 0x5faa, 0x5fab, 0x5fac, 0x5fad, 0x5fae, 0x5faf, + 0x5fb0, 0x5fb1, 0x5fb2, 0x5fb3, 0x5fb4, 0x5fb5, 0x5fb6, 0x5fb7, + 0x5fb8, 0x5fb9, 0x5fba, 0x5fbb, 0x5fbc, 0x5fbd, 0x5fbe, 0x5fbf, + 0x5fc0, 0x5fc1, 0x5fc2, 0x5fc3, 0x5fc4, 0x5fc5, 0x5fc6, 0x5fc7, + 0x5fc8, 0x5fc9, 0x5fca, 0x5fcb, 0x5fcc, 0x5fcd, 0x5fce, 0x5fcf, + 0x5fd0, 0x5fd1, 0x5fd2, 0x5fd3, 0x5fd4, 0x5fd5, 0x5fd6, 0x5fd7, + 0x5fd8, 0x5fd9, 0x5fda, 0x5fdb, 0x5fdc, 0x5fdd, 0x5fde, 0x5fdf, + 0x5fe0, 0x5fe1, 0x5fe2, 0x5fe3, 0x5fe4, 0x5fe5, 0x5fe6, 0x5fe7, + 0x5fe8, 0x5fe9, 0x5fea, 0x5feb, 0x5fec, 0x5fed, 0x5fee, 0x5fef, + 0x5ff0, 0x5ff1, 0x5ff2, 0x5ff3, 0x5ff4, 0x5ff5, 0x5ff6, 0x5ff7, + 0x5ff8, 0x5ff9, 0x5ffa, 0x5ffb, 0x5ffc, 0x5ffd, 0x5ffe, 0x5fff, + 0x6000, 0x6001, 0x6002, 0x6003, 0x6004, 0x6005, 0x6006, 0x6007, + 0x6008, 0x6009, 0x600a, 0x600b, 0x600c, 0x600d, 0x600e, 0x600f, + 0x6010, 0x6011, 0x6012, 0x6013, 0x6014, 0x6015, 0x6016, 0x6017, + 0x6018, 0x6019, 0x601a, 0x601b, 0x601c, 0x601d, 0x601e, 0x601f, + 0x6020, 0x6021, 0x6022, 0x6023, 0x6024, 0x6025, 0x6026, 0x6027, + 0x6028, 0x6029, 0x602a, 0x602b, 0x602c, 0x602d, 0x602e, 0x602f, + 0x6030, 0x6031, 0x6032, 0x6033, 0x6034, 0x6035, 0x6036, 0x6037, + 0x6038, 0x6039, 0x603a, 0x603b, 0x603c, 0x603d, 0x603e, 0x603f, + 0x6040, 0x6041, 0x6042, 0x6043, 0x6044, 0x6045, 0x6046, 0x6047, + 0x6048, 0x6049, 0x604a, 0x604b, 0x604c, 0x604d, 0x604e, 0x604f, + 0x6050, 0x6051, 0x6052, 0x6053, 0x6054, 0x6055, 0x6056, 0x6057, + 0x6058, 0x6059, 0x605a, 0x605b, 0x605c, 0x605d, 0x605e, 0x605f, + 0x6060, 0x6061, 0x6062, 0x6063, 0x6064, 0x6065, 0x6066, 0x6067, + 0x6068, 0x6069, 0x606a, 0x606b, 0x606c, 0x606d, 0x606e, 0x606f, + 0x6070, 0x6071, 0x6072, 0x6073, 0x6074, 0x6075, 0x6076, 0x6077, + 0x6078, 0x6079, 0x607a, 0x607b, 0x607c, 0x607d, 0x607e, 0x607f, + 0x6080, 0x6081, 0x6082, 0x6083, 0x6084, 0x6085, 0x6086, 0x6087, + 0x6088, 0x6089, 0x608a, 0x608b, 0x608c, 0x608d, 0x608e, 0x608f, + 0x6090, 0x6091, 0x6092, 0x6093, 0x6094, 0x6095, 0x6096, 0x6097, + 0x6098, 0x6099, 0x609a, 0x609b, 0x609c, 0x609d, 0x609e, 0x609f, + 0x60a0, 0x60a1, 0x60a2, 0x60a3, 0x60a4, 0x60a5, 0x60a6, 0x60a7, + 0x60a8, 0x60a9, 0x60aa, 0x60ab, 0x60ac, 0x60ad, 0x60ae, 0x60af, + 0x60b0, 0x60b1, 0x60b2, 0x60b3, 0x60b4, 0x60b5, 0x60b6, 0x60b7, + 0x60b8, 0x60b9, 0x60ba, 0x60bb, 0x60bc, 0x60bd, 0x60be, 0x60bf, + 0x60c0, 0x60c1, 0x60c2, 0x60c3, 0x60c4, 0x60c5, 0x60c6, 0x60c7, + 0x60c8, 0x60c9, 0x60ca, 0x60cb, 0x60cc, 0x60cd, 0x60ce, 0x60cf, + 0x60d0, 0x60d1, 0x60d2, 0x60d3, 0x60d4, 0x60d5, 0x60d6, 0x60d7, + 0x60d8, 0x60d9, 0x60da, 0x60db, 0x60dc, 0x60dd, 0x60de, 0x60df, + 0x60e0, 0x60e1, 0x60e2, 0x60e3, 0x60e4, 0x60e5, 0x60e6, 0x60e7, + 0x60e8, 0x60e9, 0x60ea, 0x60eb, 0x60ec, 0x60ed, 0x60ee, 0x60ef, + 0x60f0, 0x60f1, 0x60f2, 0x60f3, 0x60f4, 0x60f5, 0x60f6, 0x60f7, + 0x60f8, 0x60f9, 0x60fa, 0x60fb, 0x60fc, 0x60fd, 0x60fe, 0x60ff, + 0x6100, 0x6101, 0x6102, 0x6103, 0x6104, 0x6105, 0x6106, 0x6107, + 0x6108, 0x6109, 0x610a, 0x610b, 0x610c, 0x610d, 0x610e, 0x610f, + 0x6110, 0x6111, 0x6112, 0x6113, 0x6114, 0x6115, 0x6116, 0x6117, + 0x6118, 0x6119, 0x611a, 0x611b, 0x611c, 0x611d, 0x611e, 0x611f, + 0x6120, 0x6121, 0x6122, 0x6123, 0x6124, 0x6125, 0x6126, 0x6127, + 0x6128, 0x6129, 0x612a, 0x612b, 0x612c, 0x612d, 0x612e, 0x612f, + 0x6130, 0x6131, 0x6132, 0x6133, 0x6134, 0x6135, 0x6136, 0x6137, + 0x6138, 0x6139, 0x613a, 0x613b, 0x613c, 0x613d, 0x613e, 0x613f, + 0x6140, 0x6141, 0x6142, 0x6143, 0x6144, 0x6145, 0x6146, 0x6147, + 0x6148, 0x6149, 0x614a, 0x614b, 0x614c, 0x614d, 0x614e, 0x614f, + 0x6150, 0x6151, 0x6152, 0x6153, 0x6154, 0x6155, 0x6156, 0x6157, + 0x6158, 0x6159, 0x615a, 0x615b, 0x615c, 0x615d, 0x615e, 0x615f, + 0x6160, 0x6161, 0x6162, 0x6163, 0x6164, 0x6165, 0x6166, 0x6167, + 0x6168, 0x6169, 0x616a, 0x616b, 0x616c, 0x616d, 0x616e, 0x616f, + 0x6170, 0x6171, 0x6172, 0x6173, 0x6174, 0x6175, 0x6176, 0x6177, + 0x6178, 0x6179, 0x617a, 0x617b, 0x617c, 0x617d, 0x617e, 0x617f, + 0x6180, 0x6181, 0x6182, 0x6183, 0x6184, 0x6185, 0x6186, 0x6187, + 0x6188, 0x6189, 0x618a, 0x618b, 0x618c, 0x618d, 0x618e, 0x618f, + 0x6190, 0x6191, 0x6192, 0x6193, 0x6194, 0x6195, 0x6196, 0x6197, + 0x6198, 0x6199, 0x619a, 0x619b, 0x619c, 0x619d, 0x619e, 0x619f, + 0x61a0, 0x61a1, 0x61a2, 0x61a3, 0x61a4, 0x61a5, 0x61a6, 0x61a7, + 0x61a8, 0x61a9, 0x61aa, 0x61ab, 0x61ac, 0x61ad, 0x61ae, 0x61af, + 0x61b0, 0x61b1, 0x61b2, 0x61b3, 0x61b4, 0x61b5, 0x61b6, 0x61b7, + 0x61b8, 0x61b9, 0x61ba, 0x61bb, 0x61bc, 0x61bd, 0x61be, 0x61bf, + 0x61c0, 0x61c1, 0x61c2, 0x61c3, 0x61c4, 0x61c5, 0x61c6, 0x61c7, + 0x61c8, 0x61c9, 0x61ca, 0x61cb, 0x61cc, 0x61cd, 0x61ce, 0x61cf, + 0x61d0, 0x61d1, 0x61d2, 0x61d3, 0x61d4, 0x61d5, 0x61d6, 0x61d7, + 0x61d8, 0x61d9, 0x61da, 0x61db, 0x61dc, 0x61dd, 0x61de, 0x61df, + 0x61e0, 0x61e1, 0x61e2, 0x61e3, 0x61e4, 0x61e5, 0x61e6, 0x61e7, + 0x61e8, 0x61e9, 0x61ea, 0x61eb, 0x61ec, 0x61ed, 0x61ee, 0x61ef, + 0x61f0, 0x61f1, 0x61f2, 0x61f3, 0x61f4, 0x61f5, 0x61f6, 0x61f7, + 0x61f8, 0x61f9, 0x61fa, 0x61fb, 0x61fc, 0x61fd, 0x61fe, 0x61ff, + 0x6200, 0x6201, 0x6202, 0x6203, 0x6204, 0x6205, 0x6206, 0x6207, + 0x6208, 0x6209, 0x620a, 0x620b, 0x620c, 0x620d, 0x620e, 0x620f, + 0x6210, 0x6211, 0x6212, 0x6213, 0x6214, 0x6215, 0x6216, 0x6217, + 0x6218, 0x6219, 0x621a, 0x621b, 0x621c, 0x621d, 0x621e, 0x621f, + 0x6220, 0x6221, 0x6222, 0x6223, 0x6224, 0x6225, 0x6226, 0x6227, + 0x6228, 0x6229, 0x622a, 0x622b, 0x622c, 0x622d, 0x622e, 0x622f, + 0x6230, 0x6231, 0x6232, 0x6233, 0x6234, 0x6235, 0x6236, 0x6237, + 0x6238, 0x6239, 0x623a, 0x623b, 0x623c, 0x623d, 0x623e, 0x623f, + 0x6240, 0x6241, 0x6242, 0x6243, 0x6244, 0x6245, 0x6246, 0x6247, + 0x6248, 0x6249, 0x624a, 0x624b, 0x624c, 0x624d, 0x624e, 0x624f, + 0x6250, 0x6251, 0x6252, 0x6253, 0x6254, 0x6255, 0x6256, 0x6257, + 0x6258, 0x6259, 0x625a, 0x625b, 0x625c, 0x625d, 0x625e, 0x625f, + 0x6260, 0x6261, 0x6262, 0x6263, 0x6264, 0x6265, 0x6266, 0x6267, + 0x6268, 0x6269, 0x626a, 0x626b, 0x626c, 0x626d, 0x626e, 0x626f, + 0x6270, 0x6271, 0x6272, 0x6273, 0x6274, 0x6275, 0x6276, 0x6277, + 0x6278, 0x6279, 0x627a, 0x627b, 0x627c, 0x627d, 0x627e, 0x627f, + 0x6280, 0x6281, 0x6282, 0x6283, 0x6284, 0x6285, 0x6286, 0x6287, + 0x6288, 0x6289, 0x628a, 0x628b, 0x628c, 0x628d, 0x628e, 0x628f, + 0x6290, 0x6291, 0x6292, 0x6293, 0x6294, 0x6295, 0x6296, 0x6297, + 0x6298, 0x6299, 0x629a, 0x629b, 0x629c, 0x629d, 0x629e, 0x629f, + 0x62a0, 0x62a1, 0x62a2, 0x62a3, 0x62a4, 0x62a5, 0x62a6, 0x62a7, + 0x62a8, 0x62a9, 0x62aa, 0x62ab, 0x62ac, 0x62ad, 0x62ae, 0x62af, + 0x62b0, 0x62b1, 0x62b2, 0x62b3, 0x62b4, 0x62b5, 0x62b6, 0x62b7, + 0x62b8, 0x62b9, 0x62ba, 0x62bb, 0x62bc, 0x62bd, 0x62be, 0x62bf, + 0x62c0, 0x62c1, 0x62c2, 0x62c3, 0x62c4, 0x62c5, 0x62c6, 0x62c7, + 0x62c8, 0x62c9, 0x62ca, 0x62cb, 0x62cc, 0x62cd, 0x62ce, 0x62cf, + 0x62d0, 0x62d1, 0x62d2, 0x62d3, 0x62d4, 0x62d5, 0x62d6, 0x62d7, + 0x62d8, 0x62d9, 0x62da, 0x62db, 0x62dc, 0x62dd, 0x62de, 0x62df, + 0x62e0, 0x62e1, 0x62e2, 0x62e3, 0x62e4, 0x62e5, 0x62e6, 0x62e7, + 0x62e8, 0x62e9, 0x62ea, 0x62eb, 0x62ec, 0x62ed, 0x62ee, 0x62ef, + 0x62f0, 0x62f1, 0x62f2, 0x62f3, 0x62f4, 0x62f5, 0x62f6, 0x62f7, + 0x62f8, 0x62f9, 0x62fa, 0x62fb, 0x62fc, 0x62fd, 0x62fe, 0x62ff, + 0x6300, 0x6301, 0x6302, 0x6303, 0x6304, 0x6305, 0x6306, 0x6307, + 0x6308, 0x6309, 0x630a, 0x630b, 0x630c, 0x630d, 0x630e, 0x630f, + 0x6310, 0x6311, 0x6312, 0x6313, 0x6314, 0x6315, 0x6316, 0x6317, + 0x6318, 0x6319, 0x631a, 0x631b, 0x631c, 0x631d, 0x631e, 0x631f, + 0x6320, 0x6321, 0x6322, 0x6323, 0x6324, 0x6325, 0x6326, 0x6327, + 0x6328, 0x6329, 0x632a, 0x632b, 0x632c, 0x632d, 0x632e, 0x632f, + 0x6330, 0x6331, 0x6332, 0x6333, 0x6334, 0x6335, 0x6336, 0x6337, + 0x6338, 0x6339, 0x633a, 0x633b, 0x633c, 0x633d, 0x633e, 0x633f, + 0x6340, 0x6341, 0x6342, 0x6343, 0x6344, 0x6345, 0x6346, 0x6347, + 0x6348, 0x6349, 0x634a, 0x634b, 0x634c, 0x634d, 0x634e, 0x634f, + 0x6350, 0x6351, 0x6352, 0x6353, 0x6354, 0x6355, 0x6356, 0x6357, + 0x6358, 0x6359, 0x635a, 0x635b, 0x635c, 0x635d, 0x635e, 0x635f, + 0x6360, 0x6361, 0x6362, 0x6363, 0x6364, 0x6365, 0x6366, 0x6367, + 0x6368, 0x6369, 0x636a, 0x636b, 0x636c, 0x636d, 0x636e, 0x636f, + 0x6370, 0x6371, 0x6372, 0x6373, 0x6374, 0x6375, 0x6376, 0x6377, + 0x6378, 0x6379, 0x637a, 0x637b, 0x637c, 0x637d, 0x637e, 0x637f, + 0x6380, 0x6381, 0x6382, 0x6383, 0x6384, 0x6385, 0x6386, 0x6387, + 0x6388, 0x6389, 0x638a, 0x638b, 0x638c, 0x638d, 0x638e, 0x638f, + 0x6390, 0x6391, 0x6392, 0x6393, 0x6394, 0x6395, 0x6396, 0x6397, + 0x6398, 0x6399, 0x639a, 0x639b, 0x639c, 0x639d, 0x639e, 0x639f, + 0x63a0, 0x63a1, 0x63a2, 0x63a3, 0x63a4, 0x63a5, 0x63a6, 0x63a7, + 0x63a8, 0x63a9, 0x63aa, 0x63ab, 0x63ac, 0x63ad, 0x63ae, 0x63af, + 0x63b0, 0x63b1, 0x63b2, 0x63b3, 0x63b4, 0x63b5, 0x63b6, 0x63b7, + 0x63b8, 0x63b9, 0x63ba, 0x63bb, 0x63bc, 0x63bd, 0x63be, 0x63bf, + 0x63c0, 0x63c1, 0x63c2, 0x63c3, 0x63c4, 0x63c5, 0x63c6, 0x63c7, + 0x63c8, 0x63c9, 0x63ca, 0x63cb, 0x63cc, 0x63cd, 0x63ce, 0x63cf, + 0x63d0, 0x63d1, 0x63d2, 0x63d3, 0x63d4, 0x63d5, 0x63d6, 0x63d7, + 0x63d8, 0x63d9, 0x63da, 0x63db, 0x63dc, 0x63dd, 0x63de, 0x63df, + 0x63e0, 0x63e1, 0x63e2, 0x63e3, 0x63e4, 0x63e5, 0x63e6, 0x63e7, + 0x63e8, 0x63e9, 0x63ea, 0x63eb, 0x63ec, 0x63ed, 0x63ee, 0x63ef, + 0x63f0, 0x63f1, 0x63f2, 0x63f3, 0x63f4, 0x63f5, 0x63f6, 0x63f7, + 0x63f8, 0x63f9, 0x63fa, 0x63fb, 0x63fc, 0x63fd, 0x63fe, 0x63ff, + 0x6400, 0x6401, 0x6402, 0x6403, 0x6404, 0x6405, 0x6406, 0x6407, + 0x6408, 0x6409, 0x640a, 0x640b, 0x640c, 0x640d, 0x640e, 0x640f, + 0x6410, 0x6411, 0x6412, 0x6413, 0x6414, 0x6415, 0x6416, 0x6417, + 0x6418, 0x6419, 0x641a, 0x641b, 0x641c, 0x641d, 0x641e, 0x641f, + 0x6420, 0x6421, 0x6422, 0x6423, 0x6424, 0x6425, 0x6426, 0x6427, + 0x6428, 0x6429, 0x642a, 0x642b, 0x642c, 0x642d, 0x642e, 0x642f, + 0x6430, 0x6431, 0x6432, 0x6433, 0x6434, 0x6435, 0x6436, 0x6437, + 0x6438, 0x6439, 0x643a, 0x643b, 0x643c, 0x643d, 0x643e, 0x643f, + 0x6440, 0x6441, 0x6442, 0x6443, 0x6444, 0x6445, 0x6446, 0x6447, + 0x6448, 0x6449, 0x644a, 0x644b, 0x644c, 0x644d, 0x644e, 0x644f, + 0x6450, 0x6451, 0x6452, 0x6453, 0x6454, 0x6455, 0x6456, 0x6457, + 0x6458, 0x6459, 0x645a, 0x645b, 0x645c, 0x645d, 0x645e, 0x645f, + 0x6460, 0x6461, 0x6462, 0x6463, 0x6464, 0x6465, 0x6466, 0x6467, + 0x6468, 0x6469, 0x646a, 0x646b, 0x646c, 0x646d, 0x646e, 0x646f, + 0x6470, 0x6471, 0x6472, 0x6473, 0x6474, 0x6475, 0x6476, 0x6477, + 0x6478, 0x6479, 0x647a, 0x647b, 0x647c, 0x647d, 0x647e, 0x647f, + 0x6480, 0x6481, 0x6482, 0x6483, 0x6484, 0x6485, 0x6486, 0x6487, + 0x6488, 0x6489, 0x648a, 0x648b, 0x648c, 0x648d, 0x648e, 0x648f, + 0x6490, 0x6491, 0x6492, 0x6493, 0x6494, 0x6495, 0x6496, 0x6497, + 0x6498, 0x6499, 0x649a, 0x649b, 0x649c, 0x649d, 0x649e, 0x649f, + 0x64a0, 0x64a1, 0x64a2, 0x64a3, 0x64a4, 0x64a5, 0x64a6, 0x64a7, + 0x64a8, 0x64a9, 0x64aa, 0x64ab, 0x64ac, 0x64ad, 0x64ae, 0x64af, + 0x64b0, 0x64b1, 0x64b2, 0x64b3, 0x64b4, 0x64b5, 0x64b6, 0x64b7, + 0x64b8, 0x64b9, 0x64ba, 0x64bb, 0x64bc, 0x64bd, 0x64be, 0x64bf, + 0x64c0, 0x64c1, 0x64c2, 0x64c3, 0x64c4, 0x64c5, 0x64c6, 0x64c7, + 0x64c8, 0x64c9, 0x64ca, 0x64cb, 0x64cc, 0x64cd, 0x64ce, 0x64cf, + 0x64d0, 0x64d1, 0x64d2, 0x64d3, 0x64d4, 0x64d5, 0x64d6, 0x64d7, + 0x64d8, 0x64d9, 0x64da, 0x64db, 0x64dc, 0x64dd, 0x64de, 0x64df, + 0x64e0, 0x64e1, 0x64e2, 0x64e3, 0x64e4, 0x64e5, 0x64e6, 0x64e7, + 0x64e8, 0x64e9, 0x64ea, 0x64eb, 0x64ec, 0x64ed, 0x64ee, 0x64ef, + 0x64f0, 0x64f1, 0x64f2, 0x64f3, 0x64f4, 0x64f5, 0x64f6, 0x64f7, + 0x64f8, 0x64f9, 0x64fa, 0x64fb, 0x64fc, 0x64fd, 0x64fe, 0x64ff, + 0x6500, 0x6501, 0x6502, 0x6503, 0x6504, 0x6505, 0x6506, 0x6507, + 0x6508, 0x6509, 0x650a, 0x650b, 0x650c, 0x650d, 0x650e, 0x650f, + 0x6510, 0x6511, 0x6512, 0x6513, 0x6514, 0x6515, 0x6516, 0x6517, + 0x6518, 0x6519, 0x651a, 0x651b, 0x651c, 0x651d, 0x651e, 0x651f, + 0x6520, 0x6521, 0x6522, 0x6523, 0x6524, 0x6525, 0x6526, 0x6527, + 0x6528, 0x6529, 0x652a, 0x652b, 0x652c, 0x652d, 0x652e, 0x652f, + 0x6530, 0x6531, 0x6532, 0x6533, 0x6534, 0x6535, 0x6536, 0x6537, + 0x6538, 0x6539, 0x653a, 0x653b, 0x653c, 0x653d, 0x653e, 0x653f, + 0x6540, 0x6541, 0x6542, 0x6543, 0x6544, 0x6545, 0x6546, 0x6547, + 0x6548, 0x6549, 0x654a, 0x654b, 0x654c, 0x654d, 0x654e, 0x654f, + 0x6550, 0x6551, 0x6552, 0x6553, 0x6554, 0x6555, 0x6556, 0x6557, + 0x6558, 0x6559, 0x655a, 0x655b, 0x655c, 0x655d, 0x655e, 0x655f, + 0x6560, 0x6561, 0x6562, 0x6563, 0x6564, 0x6565, 0x6566, 0x6567, + 0x6568, 0x6569, 0x656a, 0x656b, 0x656c, 0x656d, 0x656e, 0x656f, + 0x6570, 0x6571, 0x6572, 0x6573, 0x6574, 0x6575, 0x6576, 0x6577, + 0x6578, 0x6579, 0x657a, 0x657b, 0x657c, 0x657d, 0x657e, 0x657f, + 0x6580, 0x6581, 0x6582, 0x6583, 0x6584, 0x6585, 0x6586, 0x6587, + 0x6588, 0x6589, 0x658a, 0x658b, 0x658c, 0x658d, 0x658e, 0x658f, + 0x6590, 0x6591, 0x6592, 0x6593, 0x6594, 0x6595, 0x6596, 0x6597, + 0x6598, 0x6599, 0x659a, 0x659b, 0x659c, 0x659d, 0x659e, 0x659f, + 0x65a0, 0x65a1, 0x65a2, 0x65a3, 0x65a4, 0x65a5, 0x65a6, 0x65a7, + 0x65a8, 0x65a9, 0x65aa, 0x65ab, 0x65ac, 0x65ad, 0x65ae, 0x65af, + 0x65b0, 0x65b1, 0x65b2, 0x65b3, 0x65b4, 0x65b5, 0x65b6, 0x65b7, + 0x65b8, 0x65b9, 0x65ba, 0x65bb, 0x65bc, 0x65bd, 0x65be, 0x65bf, + 0x65c0, 0x65c1, 0x65c2, 0x65c3, 0x65c4, 0x65c5, 0x65c6, 0x65c7, + 0x65c8, 0x65c9, 0x65ca, 0x65cb, 0x65cc, 0x65cd, 0x65ce, 0x65cf, + 0x65d0, 0x65d1, 0x65d2, 0x65d3, 0x65d4, 0x65d5, 0x65d6, 0x65d7, + 0x65d8, 0x65d9, 0x65da, 0x65db, 0x65dc, 0x65dd, 0x65de, 0x65df, + 0x65e0, 0x65e1, 0x65e2, 0x65e3, 0x65e4, 0x65e5, 0x65e6, 0x65e7, + 0x65e8, 0x65e9, 0x65ea, 0x65eb, 0x65ec, 0x65ed, 0x65ee, 0x65ef, + 0x65f0, 0x65f1, 0x65f2, 0x65f3, 0x65f4, 0x65f5, 0x65f6, 0x65f7, + 0x65f8, 0x65f9, 0x65fa, 0x65fb, 0x65fc, 0x65fd, 0x65fe, 0x65ff, + 0x6600, 0x6601, 0x6602, 0x6603, 0x6604, 0x6605, 0x6606, 0x6607, + 0x6608, 0x6609, 0x660a, 0x660b, 0x660c, 0x660d, 0x660e, 0x660f, + 0x6610, 0x6611, 0x6612, 0x6613, 0x6614, 0x6615, 0x6616, 0x6617, + 0x6618, 0x6619, 0x661a, 0x661b, 0x661c, 0x661d, 0x661e, 0x661f, + 0x6620, 0x6621, 0x6622, 0x6623, 0x6624, 0x6625, 0x6626, 0x6627, + 0x6628, 0x6629, 0x662a, 0x662b, 0x662c, 0x662d, 0x662e, 0x662f, + 0x6630, 0x6631, 0x6632, 0x6633, 0x6634, 0x6635, 0x6636, 0x6637, + 0x6638, 0x6639, 0x663a, 0x663b, 0x663c, 0x663d, 0x663e, 0x663f, + 0x6640, 0x6641, 0x6642, 0x6643, 0x6644, 0x6645, 0x6646, 0x6647, + 0x6648, 0x6649, 0x664a, 0x664b, 0x664c, 0x664d, 0x664e, 0x664f, + 0x6650, 0x6651, 0x6652, 0x6653, 0x6654, 0x6655, 0x6656, 0x6657, + 0x6658, 0x6659, 0x665a, 0x665b, 0x665c, 0x665d, 0x665e, 0x665f, + 0x6660, 0x6661, 0x6662, 0x6663, 0x6664, 0x6665, 0x6666, 0x6667, + 0x6668, 0x6669, 0x666a, 0x666b, 0x666c, 0x666d, 0x666e, 0x666f, + 0x6670, 0x6671, 0x6672, 0x6673, 0x6674, 0x6675, 0x6676, 0x6677, + 0x6678, 0x6679, 0x667a, 0x667b, 0x667c, 0x667d, 0x667e, 0x667f, + 0x6680, 0x6681, 0x6682, 0x6683, 0x6684, 0x6685, 0x6686, 0x6687, + 0x6688, 0x6689, 0x668a, 0x668b, 0x668c, 0x668d, 0x668e, 0x668f, + 0x6690, 0x6691, 0x6692, 0x6693, 0x6694, 0x6695, 0x6696, 0x6697, + 0x6698, 0x6699, 0x669a, 0x669b, 0x669c, 0x669d, 0x669e, 0x669f, + 0x66a0, 0x66a1, 0x66a2, 0x66a3, 0x66a4, 0x66a5, 0x66a6, 0x66a7, + 0x66a8, 0x66a9, 0x66aa, 0x66ab, 0x66ac, 0x66ad, 0x66ae, 0x66af, + 0x66b0, 0x66b1, 0x66b2, 0x66b3, 0x66b4, 0x66b5, 0x66b6, 0x66b7, + 0x66b8, 0x66b9, 0x66ba, 0x66bb, 0x66bc, 0x66bd, 0x66be, 0x66bf, + 0x66c0, 0x66c1, 0x66c2, 0x66c3, 0x66c4, 0x66c5, 0x66c6, 0x66c7, + 0x66c8, 0x66c9, 0x66ca, 0x66cb, 0x66cc, 0x66cd, 0x66ce, 0x66cf, + 0x66d0, 0x66d1, 0x66d2, 0x66d3, 0x66d4, 0x66d5, 0x66d6, 0x66d7, + 0x66d8, 0x66d9, 0x66da, 0x66db, 0x66dc, 0x66dd, 0x66de, 0x66df, + 0x66e0, 0x66e1, 0x66e2, 0x66e3, 0x66e4, 0x66e5, 0x66e6, 0x66e7, + 0x66e8, 0x66e9, 0x66ea, 0x66eb, 0x66ec, 0x66ed, 0x66ee, 0x66ef, + 0x66f0, 0x66f1, 0x66f2, 0x66f3, 0x66f4, 0x66f5, 0x66f6, 0x66f7, + 0x66f8, 0x66f9, 0x66fa, 0x66fb, 0x66fc, 0x66fd, 0x66fe, 0x66ff, + 0x6700, 0x6701, 0x6702, 0x6703, 0x6704, 0x6705, 0x6706, 0x6707, + 0x6708, 0x6709, 0x670a, 0x670b, 0x670c, 0x670d, 0x670e, 0x670f, + 0x6710, 0x6711, 0x6712, 0x6713, 0x6714, 0x6715, 0x6716, 0x6717, + 0x6718, 0x6719, 0x671a, 0x671b, 0x671c, 0x671d, 0x671e, 0x671f, + 0x6720, 0x6721, 0x6722, 0x6723, 0x6724, 0x6725, 0x6726, 0x6727, + 0x6728, 0x6729, 0x672a, 0x672b, 0x672c, 0x672d, 0x672e, 0x672f, + 0x6730, 0x6731, 0x6732, 0x6733, 0x6734, 0x6735, 0x6736, 0x6737, + 0x6738, 0x6739, 0x673a, 0x673b, 0x673c, 0x673d, 0x673e, 0x673f, + 0x6740, 0x6741, 0x6742, 0x6743, 0x6744, 0x6745, 0x6746, 0x6747, + 0x6748, 0x6749, 0x674a, 0x674b, 0x674c, 0x674d, 0x674e, 0x674f, + 0x6750, 0x6751, 0x6752, 0x6753, 0x6754, 0x6755, 0x6756, 0x6757, + 0x6758, 0x6759, 0x675a, 0x675b, 0x675c, 0x675d, 0x675e, 0x675f, + 0x6760, 0x6761, 0x6762, 0x6763, 0x6764, 0x6765, 0x6766, 0x6767, + 0x6768, 0x6769, 0x676a, 0x676b, 0x676c, 0x676d, 0x676e, 0x676f, + 0x6770, 0x6771, 0x6772, 0x6773, 0x6774, 0x6775, 0x6776, 0x6777, + 0x6778, 0x6779, 0x677a, 0x677b, 0x677c, 0x677d, 0x677e, 0x677f, + 0x6780, 0x6781, 0x6782, 0x6783, 0x6784, 0x6785, 0x6786, 0x6787, + 0x6788, 0x6789, 0x678a, 0x678b, 0x678c, 0x678d, 0x678e, 0x678f, + 0x6790, 0x6791, 0x6792, 0x6793, 0x6794, 0x6795, 0x6796, 0x6797, + 0x6798, 0x6799, 0x679a, 0x679b, 0x679c, 0x679d, 0x679e, 0x679f, + 0x67a0, 0x67a1, 0x67a2, 0x67a3, 0x67a4, 0x67a5, 0x67a6, 0x67a7, + 0x67a8, 0x67a9, 0x67aa, 0x67ab, 0x67ac, 0x67ad, 0x67ae, 0x67af, + 0x67b0, 0x67b1, 0x67b2, 0x67b3, 0x67b4, 0x67b5, 0x67b6, 0x67b7, + 0x67b8, 0x67b9, 0x67ba, 0x67bb, 0x67bc, 0x67bd, 0x67be, 0x67bf, + 0x67c0, 0x67c1, 0x67c2, 0x67c3, 0x67c4, 0x67c5, 0x67c6, 0x67c7, + 0x67c8, 0x67c9, 0x67ca, 0x67cb, 0x67cc, 0x67cd, 0x67ce, 0x67cf, + 0x67d0, 0x67d1, 0x67d2, 0x67d3, 0x67d4, 0x67d5, 0x67d6, 0x67d7, + 0x67d8, 0x67d9, 0x67da, 0x67db, 0x67dc, 0x67dd, 0x67de, 0x67df, + 0x67e0, 0x67e1, 0x67e2, 0x67e3, 0x67e4, 0x67e5, 0x67e6, 0x67e7, + 0x67e8, 0x67e9, 0x67ea, 0x67eb, 0x67ec, 0x67ed, 0x67ee, 0x67ef, + 0x67f0, 0x67f1, 0x67f2, 0x67f3, 0x67f4, 0x67f5, 0x67f6, 0x67f7, + 0x67f8, 0x67f9, 0x67fa, 0x67fb, 0x67fc, 0x67fd, 0x67fe, 0x67ff, + 0x6800, 0x6801, 0x6802, 0x6803, 0x6804, 0x6805, 0x6806, 0x6807, + 0x6808, 0x6809, 0x680a, 0x680b, 0x680c, 0x680d, 0x680e, 0x680f, + 0x6810, 0x6811, 0x6812, 0x6813, 0x6814, 0x6815, 0x6816, 0x6817, + 0x6818, 0x6819, 0x681a, 0x681b, 0x681c, 0x681d, 0x681e, 0x681f, + 0x6820, 0x6821, 0x6822, 0x6823, 0x6824, 0x6825, 0x6826, 0x6827, + 0x6828, 0x6829, 0x682a, 0x682b, 0x682c, 0x682d, 0x682e, 0x682f, + 0x6830, 0x6831, 0x6832, 0x6833, 0x6834, 0x6835, 0x6836, 0x6837, + 0x6838, 0x6839, 0x683a, 0x683b, 0x683c, 0x683d, 0x683e, 0x683f, + 0x6840, 0x6841, 0x6842, 0x6843, 0x6844, 0x6845, 0x6846, 0x6847, + 0x6848, 0x6849, 0x684a, 0x684b, 0x684c, 0x684d, 0x684e, 0x684f, + 0x6850, 0x6851, 0x6852, 0x6853, 0x6854, 0x6855, 0x6856, 0x6857, + 0x6858, 0x6859, 0x685a, 0x685b, 0x685c, 0x685d, 0x685e, 0x685f, + 0x6860, 0x6861, 0x6862, 0x6863, 0x6864, 0x6865, 0x6866, 0x6867, + 0x6868, 0x6869, 0x686a, 0x686b, 0x686c, 0x686d, 0x686e, 0x686f, + 0x6870, 0x6871, 0x6872, 0x6873, 0x6874, 0x6875, 0x6876, 0x6877, + 0x6878, 0x6879, 0x687a, 0x687b, 0x687c, 0x687d, 0x687e, 0x687f, + 0x6880, 0x6881, 0x6882, 0x6883, 0x6884, 0x6885, 0x6886, 0x6887, + 0x6888, 0x6889, 0x688a, 0x688b, 0x688c, 0x688d, 0x688e, 0x688f, + 0x6890, 0x6891, 0x6892, 0x6893, 0x6894, 0x6895, 0x6896, 0x6897, + 0x6898, 0x6899, 0x689a, 0x689b, 0x689c, 0x689d, 0x689e, 0x689f, + 0x68a0, 0x68a1, 0x68a2, 0x68a3, 0x68a4, 0x68a5, 0x68a6, 0x68a7, + 0x68a8, 0x68a9, 0x68aa, 0x68ab, 0x68ac, 0x68ad, 0x68ae, 0x68af, + 0x68b0, 0x68b1, 0x68b2, 0x68b3, 0x68b4, 0x68b5, 0x68b6, 0x68b7, + 0x68b8, 0x68b9, 0x68ba, 0x68bb, 0x68bc, 0x68bd, 0x68be, 0x68bf, + 0x68c0, 0x68c1, 0x68c2, 0x68c3, 0x68c4, 0x68c5, 0x68c6, 0x68c7, + 0x68c8, 0x68c9, 0x68ca, 0x68cb, 0x68cc, 0x68cd, 0x68ce, 0x68cf, + 0x68d0, 0x68d1, 0x68d2, 0x68d3, 0x68d4, 0x68d5, 0x68d6, 0x68d7, + 0x68d8, 0x68d9, 0x68da, 0x68db, 0x68dc, 0x68dd, 0x68de, 0x68df, + 0x68e0, 0x68e1, 0x68e2, 0x68e3, 0x68e4, 0x68e5, 0x68e6, 0x68e7, + 0x68e8, 0x68e9, 0x68ea, 0x68eb, 0x68ec, 0x68ed, 0x68ee, 0x68ef, + 0x68f0, 0x68f1, 0x68f2, 0x68f3, 0x68f4, 0x68f5, 0x68f6, 0x68f7, + 0x68f8, 0x68f9, 0x68fa, 0x68fb, 0x68fc, 0x68fd, 0x68fe, 0x68ff, + 0x6900, 0x6901, 0x6902, 0x6903, 0x6904, 0x6905, 0x6906, 0x6907, + 0x6908, 0x6909, 0x690a, 0x690b, 0x690c, 0x690d, 0x690e, 0x690f, + 0x6910, 0x6911, 0x6912, 0x6913, 0x6914, 0x6915, 0x6916, 0x6917, + 0x6918, 0x6919, 0x691a, 0x691b, 0x691c, 0x691d, 0x691e, 0x691f, + 0x6920, 0x6921, 0x6922, 0x6923, 0x6924, 0x6925, 0x6926, 0x6927, + 0x6928, 0x6929, 0x692a, 0x692b, 0x692c, 0x692d, 0x692e, 0x692f, + 0x6930, 0x6931, 0x6932, 0x6933, 0x6934, 0x6935, 0x6936, 0x6937, + 0x6938, 0x6939, 0x693a, 0x693b, 0x693c, 0x693d, 0x693e, 0x693f, + 0x6940, 0x6941, 0x6942, 0x6943, 0x6944, 0x6945, 0x6946, 0x6947, + 0x6948, 0x6949, 0x694a, 0x694b, 0x694c, 0x694d, 0x694e, 0x694f, + 0x6950, 0x6951, 0x6952, 0x6953, 0x6954, 0x6955, 0x6956, 0x6957, + 0x6958, 0x6959, 0x695a, 0x695b, 0x695c, 0x695d, 0x695e, 0x695f, + 0x6960, 0x6961, 0x6962, 0x6963, 0x6964, 0x6965, 0x6966, 0x6967, + 0x6968, 0x6969, 0x696a, 0x696b, 0x696c, 0x696d, 0x696e, 0x696f, + 0x6970, 0x6971, 0x6972, 0x6973, 0x6974, 0x6975, 0x6976, 0x6977, + 0x6978, 0x6979, 0x697a, 0x697b, 0x697c, 0x697d, 0x697e, 0x697f, + 0x6980, 0x6981, 0x6982, 0x6983, 0x6984, 0x6985, 0x6986, 0x6987, + 0x6988, 0x6989, 0x698a, 0x698b, 0x698c, 0x698d, 0x698e, 0x698f, + 0x6990, 0x6991, 0x6992, 0x6993, 0x6994, 0x6995, 0x6996, 0x6997, + 0x6998, 0x6999, 0x699a, 0x699b, 0x699c, 0x699d, 0x699e, 0x699f, + 0x69a0, 0x69a1, 0x69a2, 0x69a3, 0x69a4, 0x69a5, 0x69a6, 0x69a7, + 0x69a8, 0x69a9, 0x69aa, 0x69ab, 0x69ac, 0x69ad, 0x69ae, 0x69af, + 0x69b0, 0x69b1, 0x69b2, 0x69b3, 0x69b4, 0x69b5, 0x69b6, 0x69b7, + 0x69b8, 0x69b9, 0x69ba, 0x69bb, 0x69bc, 0x69bd, 0x69be, 0x69bf, + 0x69c0, 0x69c1, 0x69c2, 0x69c3, 0x69c4, 0x69c5, 0x69c6, 0x69c7, + 0x69c8, 0x69c9, 0x69ca, 0x69cb, 0x69cc, 0x69cd, 0x69ce, 0x69cf, + 0x69d0, 0x69d1, 0x69d2, 0x69d3, 0x69d4, 0x69d5, 0x69d6, 0x69d7, + 0x69d8, 0x69d9, 0x69da, 0x69db, 0x69dc, 0x69dd, 0x69de, 0x69df, + 0x69e0, 0x69e1, 0x69e2, 0x69e3, 0x69e4, 0x69e5, 0x69e6, 0x69e7, + 0x69e8, 0x69e9, 0x69ea, 0x69eb, 0x69ec, 0x69ed, 0x69ee, 0x69ef, + 0x69f0, 0x69f1, 0x69f2, 0x69f3, 0x69f4, 0x69f5, 0x69f6, 0x69f7, + 0x69f8, 0x69f9, 0x69fa, 0x69fb, 0x69fc, 0x69fd, 0x69fe, 0x69ff, + 0x6a00, 0x6a01, 0x6a02, 0x6a03, 0x6a04, 0x6a05, 0x6a06, 0x6a07, + 0x6a08, 0x6a09, 0x6a0a, 0x6a0b, 0x6a0c, 0x6a0d, 0x6a0e, 0x6a0f, + 0x6a10, 0x6a11, 0x6a12, 0x6a13, 0x6a14, 0x6a15, 0x6a16, 0x6a17, + 0x6a18, 0x6a19, 0x6a1a, 0x6a1b, 0x6a1c, 0x6a1d, 0x6a1e, 0x6a1f, + 0x6a20, 0x6a21, 0x6a22, 0x6a23, 0x6a24, 0x6a25, 0x6a26, 0x6a27, + 0x6a28, 0x6a29, 0x6a2a, 0x6a2b, 0x6a2c, 0x6a2d, 0x6a2e, 0x6a2f, + 0x6a30, 0x6a31, 0x6a32, 0x6a33, 0x6a34, 0x6a35, 0x6a36, 0x6a37, + 0x6a38, 0x6a39, 0x6a3a, 0x6a3b, 0x6a3c, 0x6a3d, 0x6a3e, 0x6a3f, + 0x6a40, 0x6a41, 0x6a42, 0x6a43, 0x6a44, 0x6a45, 0x6a46, 0x6a47, + 0x6a48, 0x6a49, 0x6a4a, 0x6a4b, 0x6a4c, 0x6a4d, 0x6a4e, 0x6a4f, + 0x6a50, 0x6a51, 0x6a52, 0x6a53, 0x6a54, 0x6a55, 0x6a56, 0x6a57, + 0x6a58, 0x6a59, 0x6a5a, 0x6a5b, 0x6a5c, 0x6a5d, 0x6a5e, 0x6a5f, + 0x6a60, 0x6a61, 0x6a62, 0x6a63, 0x6a64, 0x6a65, 0x6a66, 0x6a67, + 0x6a68, 0x6a69, 0x6a6a, 0x6a6b, 0x6a6c, 0x6a6d, 0x6a6e, 0x6a6f, + 0x6a70, 0x6a71, 0x6a72, 0x6a73, 0x6a74, 0x6a75, 0x6a76, 0x6a77, + 0x6a78, 0x6a79, 0x6a7a, 0x6a7b, 0x6a7c, 0x6a7d, 0x6a7e, 0x6a7f, + 0x6a80, 0x6a81, 0x6a82, 0x6a83, 0x6a84, 0x6a85, 0x6a86, 0x6a87, + 0x6a88, 0x6a89, 0x6a8a, 0x6a8b, 0x6a8c, 0x6a8d, 0x6a8e, 0x6a8f, + 0x6a90, 0x6a91, 0x6a92, 0x6a93, 0x6a94, 0x6a95, 0x6a96, 0x6a97, + 0x6a98, 0x6a99, 0x6a9a, 0x6a9b, 0x6a9c, 0x6a9d, 0x6a9e, 0x6a9f, + 0x6aa0, 0x6aa1, 0x6aa2, 0x6aa3, 0x6aa4, 0x6aa5, 0x6aa6, 0x6aa7, + 0x6aa8, 0x6aa9, 0x6aaa, 0x6aab, 0x6aac, 0x6aad, 0x6aae, 0x6aaf, + 0x6ab0, 0x6ab1, 0x6ab2, 0x6ab3, 0x6ab4, 0x6ab5, 0x6ab6, 0x6ab7, + 0x6ab8, 0x6ab9, 0x6aba, 0x6abb, 0x6abc, 0x6abd, 0x6abe, 0x6abf, + 0x6ac0, 0x6ac1, 0x6ac2, 0x6ac3, 0x6ac4, 0x6ac5, 0x6ac6, 0x6ac7, + 0x6ac8, 0x6ac9, 0x6aca, 0x6acb, 0x6acc, 0x6acd, 0x6ace, 0x6acf, + 0x6ad0, 0x6ad1, 0x6ad2, 0x6ad3, 0x6ad4, 0x6ad5, 0x6ad6, 0x6ad7, + 0x6ad8, 0x6ad9, 0x6ada, 0x6adb, 0x6adc, 0x6add, 0x6ade, 0x6adf, + 0x6ae0, 0x6ae1, 0x6ae2, 0x6ae3, 0x6ae4, 0x6ae5, 0x6ae6, 0x6ae7, + 0x6ae8, 0x6ae9, 0x6aea, 0x6aeb, 0x6aec, 0x6aed, 0x6aee, 0x6aef, + 0x6af0, 0x6af1, 0x6af2, 0x6af3, 0x6af4, 0x6af5, 0x6af6, 0x6af7, + 0x6af8, 0x6af9, 0x6afa, 0x6afb, 0x6afc, 0x6afd, 0x6afe, 0x6aff, + 0x6b00, 0x6b01, 0x6b02, 0x6b03, 0x6b04, 0x6b05, 0x6b06, 0x6b07, + 0x6b08, 0x6b09, 0x6b0a, 0x6b0b, 0x6b0c, 0x6b0d, 0x6b0e, 0x6b0f, + 0x6b10, 0x6b11, 0x6b12, 0x6b13, 0x6b14, 0x6b15, 0x6b16, 0x6b17, + 0x6b18, 0x6b19, 0x6b1a, 0x6b1b, 0x6b1c, 0x6b1d, 0x6b1e, 0x6b1f, + 0x6b20, 0x6b21, 0x6b22, 0x6b23, 0x6b24, 0x6b25, 0x6b26, 0x6b27, + 0x6b28, 0x6b29, 0x6b2a, 0x6b2b, 0x6b2c, 0x6b2d, 0x6b2e, 0x6b2f, + 0x6b30, 0x6b31, 0x6b32, 0x6b33, 0x6b34, 0x6b35, 0x6b36, 0x6b37, + 0x6b38, 0x6b39, 0x6b3a, 0x6b3b, 0x6b3c, 0x6b3d, 0x6b3e, 0x6b3f, + 0x6b40, 0x6b41, 0x6b42, 0x6b43, 0x6b44, 0x6b45, 0x6b46, 0x6b47, + 0x6b48, 0x6b49, 0x6b4a, 0x6b4b, 0x6b4c, 0x6b4d, 0x6b4e, 0x6b4f, + 0x6b50, 0x6b51, 0x6b52, 0x6b53, 0x6b54, 0x6b55, 0x6b56, 0x6b57, + 0x6b58, 0x6b59, 0x6b5a, 0x6b5b, 0x6b5c, 0x6b5d, 0x6b5e, 0x6b5f, + 0x6b60, 0x6b61, 0x6b62, 0x6b63, 0x6b64, 0x6b65, 0x6b66, 0x6b67, + 0x6b68, 0x6b69, 0x6b6a, 0x6b6b, 0x6b6c, 0x6b6d, 0x6b6e, 0x6b6f, + 0x6b70, 0x6b71, 0x6b72, 0x6b73, 0x6b74, 0x6b75, 0x6b76, 0x6b77, + 0x6b78, 0x6b79, 0x6b7a, 0x6b7b, 0x6b7c, 0x6b7d, 0x6b7e, 0x6b7f, + 0x6b80, 0x6b81, 0x6b82, 0x6b83, 0x6b84, 0x6b85, 0x6b86, 0x6b87, + 0x6b88, 0x6b89, 0x6b8a, 0x6b8b, 0x6b8c, 0x6b8d, 0x6b8e, 0x6b8f, + 0x6b90, 0x6b91, 0x6b92, 0x6b93, 0x6b94, 0x6b95, 0x6b96, 0x6b97, + 0x6b98, 0x6b99, 0x6b9a, 0x6b9b, 0x6b9c, 0x6b9d, 0x6b9e, 0x6b9f, + 0x6ba0, 0x6ba1, 0x6ba2, 0x6ba3, 0x6ba4, 0x6ba5, 0x6ba6, 0x6ba7, + 0x6ba8, 0x6ba9, 0x6baa, 0x6bab, 0x6bac, 0x6bad, 0x6bae, 0x6baf, + 0x6bb0, 0x6bb1, 0x6bb2, 0x6bb3, 0x6bb4, 0x6bb5, 0x6bb6, 0x6bb7, + 0x6bb8, 0x6bb9, 0x6bba, 0x6bbb, 0x6bbc, 0x6bbd, 0x6bbe, 0x6bbf, + 0x6bc0, 0x6bc1, 0x6bc2, 0x6bc3, 0x6bc4, 0x6bc5, 0x6bc6, 0x6bc7, + 0x6bc8, 0x6bc9, 0x6bca, 0x6bcb, 0x6bcc, 0x6bcd, 0x6bce, 0x6bcf, + 0x6bd0, 0x6bd1, 0x6bd2, 0x6bd3, 0x6bd4, 0x6bd5, 0x6bd6, 0x6bd7, + 0x6bd8, 0x6bd9, 0x6bda, 0x6bdb, 0x6bdc, 0x6bdd, 0x6bde, 0x6bdf, + 0x6be0, 0x6be1, 0x6be2, 0x6be3, 0x6be4, 0x6be5, 0x6be6, 0x6be7, + 0x6be8, 0x6be9, 0x6bea, 0x6beb, 0x6bec, 0x6bed, 0x6bee, 0x6bef, + 0x6bf0, 0x6bf1, 0x6bf2, 0x6bf3, 0x6bf4, 0x6bf5, 0x6bf6, 0x6bf7, + 0x6bf8, 0x6bf9, 0x6bfa, 0x6bfb, 0x6bfc, 0x6bfd, 0x6bfe, 0x6bff, + 0x6c00, 0x6c01, 0x6c02, 0x6c03, 0x6c04, 0x6c05, 0x6c06, 0x6c07, + 0x6c08, 0x6c09, 0x6c0a, 0x6c0b, 0x6c0c, 0x6c0d, 0x6c0e, 0x6c0f, + 0x6c10, 0x6c11, 0x6c12, 0x6c13, 0x6c14, 0x6c15, 0x6c16, 0x6c17, + 0x6c18, 0x6c19, 0x6c1a, 0x6c1b, 0x6c1c, 0x6c1d, 0x6c1e, 0x6c1f, + 0x6c20, 0x6c21, 0x6c22, 0x6c23, 0x6c24, 0x6c25, 0x6c26, 0x6c27, + 0x6c28, 0x6c29, 0x6c2a, 0x6c2b, 0x6c2c, 0x6c2d, 0x6c2e, 0x6c2f, + 0x6c30, 0x6c31, 0x6c32, 0x6c33, 0x6c34, 0x6c35, 0x6c36, 0x6c37, + 0x6c38, 0x6c39, 0x6c3a, 0x6c3b, 0x6c3c, 0x6c3d, 0x6c3e, 0x6c3f, + 0x6c40, 0x6c41, 0x6c42, 0x6c43, 0x6c44, 0x6c45, 0x6c46, 0x6c47, + 0x6c48, 0x6c49, 0x6c4a, 0x6c4b, 0x6c4c, 0x6c4d, 0x6c4e, 0x6c4f, + 0x6c50, 0x6c51, 0x6c52, 0x6c53, 0x6c54, 0x6c55, 0x6c56, 0x6c57, + 0x6c58, 0x6c59, 0x6c5a, 0x6c5b, 0x6c5c, 0x6c5d, 0x6c5e, 0x6c5f, + 0x6c60, 0x6c61, 0x6c62, 0x6c63, 0x6c64, 0x6c65, 0x6c66, 0x6c67, + 0x6c68, 0x6c69, 0x6c6a, 0x6c6b, 0x6c6c, 0x6c6d, 0x6c6e, 0x6c6f, + 0x6c70, 0x6c71, 0x6c72, 0x6c73, 0x6c74, 0x6c75, 0x6c76, 0x6c77, + 0x6c78, 0x6c79, 0x6c7a, 0x6c7b, 0x6c7c, 0x6c7d, 0x6c7e, 0x6c7f, + 0x6c80, 0x6c81, 0x6c82, 0x6c83, 0x6c84, 0x6c85, 0x6c86, 0x6c87, + 0x6c88, 0x6c89, 0x6c8a, 0x6c8b, 0x6c8c, 0x6c8d, 0x6c8e, 0x6c8f, + 0x6c90, 0x6c91, 0x6c92, 0x6c93, 0x6c94, 0x6c95, 0x6c96, 0x6c97, + 0x6c98, 0x6c99, 0x6c9a, 0x6c9b, 0x6c9c, 0x6c9d, 0x6c9e, 0x6c9f, + 0x6ca0, 0x6ca1, 0x6ca2, 0x6ca3, 0x6ca4, 0x6ca5, 0x6ca6, 0x6ca7, + 0x6ca8, 0x6ca9, 0x6caa, 0x6cab, 0x6cac, 0x6cad, 0x6cae, 0x6caf, + 0x6cb0, 0x6cb1, 0x6cb2, 0x6cb3, 0x6cb4, 0x6cb5, 0x6cb6, 0x6cb7, + 0x6cb8, 0x6cb9, 0x6cba, 0x6cbb, 0x6cbc, 0x6cbd, 0x6cbe, 0x6cbf, + 0x6cc0, 0x6cc1, 0x6cc2, 0x6cc3, 0x6cc4, 0x6cc5, 0x6cc6, 0x6cc7, + 0x6cc8, 0x6cc9, 0x6cca, 0x6ccb, 0x6ccc, 0x6ccd, 0x6cce, 0x6ccf, + 0x6cd0, 0x6cd1, 0x6cd2, 0x6cd3, 0x6cd4, 0x6cd5, 0x6cd6, 0x6cd7, + 0x6cd8, 0x6cd9, 0x6cda, 0x6cdb, 0x6cdc, 0x6cdd, 0x6cde, 0x6cdf, + 0x6ce0, 0x6ce1, 0x6ce2, 0x6ce3, 0x6ce4, 0x6ce5, 0x6ce6, 0x6ce7, + 0x6ce8, 0x6ce9, 0x6cea, 0x6ceb, 0x6cec, 0x6ced, 0x6cee, 0x6cef, + 0x6cf0, 0x6cf1, 0x6cf2, 0x6cf3, 0x6cf4, 0x6cf5, 0x6cf6, 0x6cf7, + 0x6cf8, 0x6cf9, 0x6cfa, 0x6cfb, 0x6cfc, 0x6cfd, 0x6cfe, 0x6cff, + 0x6d00, 0x6d01, 0x6d02, 0x6d03, 0x6d04, 0x6d05, 0x6d06, 0x6d07, + 0x6d08, 0x6d09, 0x6d0a, 0x6d0b, 0x6d0c, 0x6d0d, 0x6d0e, 0x6d0f, + 0x6d10, 0x6d11, 0x6d12, 0x6d13, 0x6d14, 0x6d15, 0x6d16, 0x6d17, + 0x6d18, 0x6d19, 0x6d1a, 0x6d1b, 0x6d1c, 0x6d1d, 0x6d1e, 0x6d1f, + 0x6d20, 0x6d21, 0x6d22, 0x6d23, 0x6d24, 0x6d25, 0x6d26, 0x6d27, + 0x6d28, 0x6d29, 0x6d2a, 0x6d2b, 0x6d2c, 0x6d2d, 0x6d2e, 0x6d2f, + 0x6d30, 0x6d31, 0x6d32, 0x6d33, 0x6d34, 0x6d35, 0x6d36, 0x6d37, + 0x6d38, 0x6d39, 0x6d3a, 0x6d3b, 0x6d3c, 0x6d3d, 0x6d3e, 0x6d3f, + 0x6d40, 0x6d41, 0x6d42, 0x6d43, 0x6d44, 0x6d45, 0x6d46, 0x6d47, + 0x6d48, 0x6d49, 0x6d4a, 0x6d4b, 0x6d4c, 0x6d4d, 0x6d4e, 0x6d4f, + 0x6d50, 0x6d51, 0x6d52, 0x6d53, 0x6d54, 0x6d55, 0x6d56, 0x6d57, + 0x6d58, 0x6d59, 0x6d5a, 0x6d5b, 0x6d5c, 0x6d5d, 0x6d5e, 0x6d5f, + 0x6d60, 0x6d61, 0x6d62, 0x6d63, 0x6d64, 0x6d65, 0x6d66, 0x6d67, + 0x6d68, 0x6d69, 0x6d6a, 0x6d6b, 0x6d6c, 0x6d6d, 0x6d6e, 0x6d6f, + 0x6d70, 0x6d71, 0x6d72, 0x6d73, 0x6d74, 0x6d75, 0x6d76, 0x6d77, + 0x6d78, 0x6d79, 0x6d7a, 0x6d7b, 0x6d7c, 0x6d7d, 0x6d7e, 0x6d7f, + 0x6d80, 0x6d81, 0x6d82, 0x6d83, 0x6d84, 0x6d85, 0x6d86, 0x6d87, + 0x6d88, 0x6d89, 0x6d8a, 0x6d8b, 0x6d8c, 0x6d8d, 0x6d8e, 0x6d8f, + 0x6d90, 0x6d91, 0x6d92, 0x6d93, 0x6d94, 0x6d95, 0x6d96, 0x6d97, + 0x6d98, 0x6d99, 0x6d9a, 0x6d9b, 0x6d9c, 0x6d9d, 0x6d9e, 0x6d9f, + 0x6da0, 0x6da1, 0x6da2, 0x6da3, 0x6da4, 0x6da5, 0x6da6, 0x6da7, + 0x6da8, 0x6da9, 0x6daa, 0x6dab, 0x6dac, 0x6dad, 0x6dae, 0x6daf, + 0x6db0, 0x6db1, 0x6db2, 0x6db3, 0x6db4, 0x6db5, 0x6db6, 0x6db7, + 0x6db8, 0x6db9, 0x6dba, 0x6dbb, 0x6dbc, 0x6dbd, 0x6dbe, 0x6dbf, + 0x6dc0, 0x6dc1, 0x6dc2, 0x6dc3, 0x6dc4, 0x6dc5, 0x6dc6, 0x6dc7, + 0x6dc8, 0x6dc9, 0x6dca, 0x6dcb, 0x6dcc, 0x6dcd, 0x6dce, 0x6dcf, + 0x6dd0, 0x6dd1, 0x6dd2, 0x6dd3, 0x6dd4, 0x6dd5, 0x6dd6, 0x6dd7, + 0x6dd8, 0x6dd9, 0x6dda, 0x6ddb, 0x6ddc, 0x6ddd, 0x6dde, 0x6ddf, + 0x6de0, 0x6de1, 0x6de2, 0x6de3, 0x6de4, 0x6de5, 0x6de6, 0x6de7, + 0x6de8, 0x6de9, 0x6dea, 0x6deb, 0x6dec, 0x6ded, 0x6dee, 0x6def, + 0x6df0, 0x6df1, 0x6df2, 0x6df3, 0x6df4, 0x6df5, 0x6df6, 0x6df7, + 0x6df8, 0x6df9, 0x6dfa, 0x6dfb, 0x6dfc, 0x6dfd, 0x6dfe, 0x6dff, + 0x6e00, 0x6e01, 0x6e02, 0x6e03, 0x6e04, 0x6e05, 0x6e06, 0x6e07, + 0x6e08, 0x6e09, 0x6e0a, 0x6e0b, 0x6e0c, 0x6e0d, 0x6e0e, 0x6e0f, + 0x6e10, 0x6e11, 0x6e12, 0x6e13, 0x6e14, 0x6e15, 0x6e16, 0x6e17, + 0x6e18, 0x6e19, 0x6e1a, 0x6e1b, 0x6e1c, 0x6e1d, 0x6e1e, 0x6e1f, + 0x6e20, 0x6e21, 0x6e22, 0x6e23, 0x6e24, 0x6e25, 0x6e26, 0x6e27, + 0x6e28, 0x6e29, 0x6e2a, 0x6e2b, 0x6e2c, 0x6e2d, 0x6e2e, 0x6e2f, + 0x6e30, 0x6e31, 0x6e32, 0x6e33, 0x6e34, 0x6e35, 0x6e36, 0x6e37, + 0x6e38, 0x6e39, 0x6e3a, 0x6e3b, 0x6e3c, 0x6e3d, 0x6e3e, 0x6e3f, + 0x6e40, 0x6e41, 0x6e42, 0x6e43, 0x6e44, 0x6e45, 0x6e46, 0x6e47, + 0x6e48, 0x6e49, 0x6e4a, 0x6e4b, 0x6e4c, 0x6e4d, 0x6e4e, 0x6e4f, + 0x6e50, 0x6e51, 0x6e52, 0x6e53, 0x6e54, 0x6e55, 0x6e56, 0x6e57, + 0x6e58, 0x6e59, 0x6e5a, 0x6e5b, 0x6e5c, 0x6e5d, 0x6e5e, 0x6e5f, + 0x6e60, 0x6e61, 0x6e62, 0x6e63, 0x6e64, 0x6e65, 0x6e66, 0x6e67, + 0x6e68, 0x6e69, 0x6e6a, 0x6e6b, 0x6e6c, 0x6e6d, 0x6e6e, 0x6e6f, + 0x6e70, 0x6e71, 0x6e72, 0x6e73, 0x6e74, 0x6e75, 0x6e76, 0x6e77, + 0x6e78, 0x6e79, 0x6e7a, 0x6e7b, 0x6e7c, 0x6e7d, 0x6e7e, 0x6e7f, + 0x6e80, 0x6e81, 0x6e82, 0x6e83, 0x6e84, 0x6e85, 0x6e86, 0x6e87, + 0x6e88, 0x6e89, 0x6e8a, 0x6e8b, 0x6e8c, 0x6e8d, 0x6e8e, 0x6e8f, + 0x6e90, 0x6e91, 0x6e92, 0x6e93, 0x6e94, 0x6e95, 0x6e96, 0x6e97, + 0x6e98, 0x6e99, 0x6e9a, 0x6e9b, 0x6e9c, 0x6e9d, 0x6e9e, 0x6e9f, + 0x6ea0, 0x6ea1, 0x6ea2, 0x6ea3, 0x6ea4, 0x6ea5, 0x6ea6, 0x6ea7, + 0x6ea8, 0x6ea9, 0x6eaa, 0x6eab, 0x6eac, 0x6ead, 0x6eae, 0x6eaf, + 0x6eb0, 0x6eb1, 0x6eb2, 0x6eb3, 0x6eb4, 0x6eb5, 0x6eb6, 0x6eb7, + 0x6eb8, 0x6eb9, 0x6eba, 0x6ebb, 0x6ebc, 0x6ebd, 0x6ebe, 0x6ebf, + 0x6ec0, 0x6ec1, 0x6ec2, 0x6ec3, 0x6ec4, 0x6ec5, 0x6ec6, 0x6ec7, + 0x6ec8, 0x6ec9, 0x6eca, 0x6ecb, 0x6ecc, 0x6ecd, 0x6ece, 0x6ecf, + 0x6ed0, 0x6ed1, 0x6ed2, 0x6ed3, 0x6ed4, 0x6ed5, 0x6ed6, 0x6ed7, + 0x6ed8, 0x6ed9, 0x6eda, 0x6edb, 0x6edc, 0x6edd, 0x6ede, 0x6edf, + 0x6ee0, 0x6ee1, 0x6ee2, 0x6ee3, 0x6ee4, 0x6ee5, 0x6ee6, 0x6ee7, + 0x6ee8, 0x6ee9, 0x6eea, 0x6eeb, 0x6eec, 0x6eed, 0x6eee, 0x6eef, + 0x6ef0, 0x6ef1, 0x6ef2, 0x6ef3, 0x6ef4, 0x6ef5, 0x6ef6, 0x6ef7, + 0x6ef8, 0x6ef9, 0x6efa, 0x6efb, 0x6efc, 0x6efd, 0x6efe, 0x6eff, + 0x6f00, 0x6f01, 0x6f02, 0x6f03, 0x6f04, 0x6f05, 0x6f06, 0x6f07, + 0x6f08, 0x6f09, 0x6f0a, 0x6f0b, 0x6f0c, 0x6f0d, 0x6f0e, 0x6f0f, + 0x6f10, 0x6f11, 0x6f12, 0x6f13, 0x6f14, 0x6f15, 0x6f16, 0x6f17, + 0x6f18, 0x6f19, 0x6f1a, 0x6f1b, 0x6f1c, 0x6f1d, 0x6f1e, 0x6f1f, + 0x6f20, 0x6f21, 0x6f22, 0x6f23, 0x6f24, 0x6f25, 0x6f26, 0x6f27, + 0x6f28, 0x6f29, 0x6f2a, 0x6f2b, 0x6f2c, 0x6f2d, 0x6f2e, 0x6f2f, + 0x6f30, 0x6f31, 0x6f32, 0x6f33, 0x6f34, 0x6f35, 0x6f36, 0x6f37, + 0x6f38, 0x6f39, 0x6f3a, 0x6f3b, 0x6f3c, 0x6f3d, 0x6f3e, 0x6f3f, + 0x6f40, 0x6f41, 0x6f42, 0x6f43, 0x6f44, 0x6f45, 0x6f46, 0x6f47, + 0x6f48, 0x6f49, 0x6f4a, 0x6f4b, 0x6f4c, 0x6f4d, 0x6f4e, 0x6f4f, + 0x6f50, 0x6f51, 0x6f52, 0x6f53, 0x6f54, 0x6f55, 0x6f56, 0x6f57, + 0x6f58, 0x6f59, 0x6f5a, 0x6f5b, 0x6f5c, 0x6f5d, 0x6f5e, 0x6f5f, + 0x6f60, 0x6f61, 0x6f62, 0x6f63, 0x6f64, 0x6f65, 0x6f66, 0x6f67, + 0x6f68, 0x6f69, 0x6f6a, 0x6f6b, 0x6f6c, 0x6f6d, 0x6f6e, 0x6f6f, + 0x6f70, 0x6f71, 0x6f72, 0x6f73, 0x6f74, 0x6f75, 0x6f76, 0x6f77, + 0x6f78, 0x6f79, 0x6f7a, 0x6f7b, 0x6f7c, 0x6f7d, 0x6f7e, 0x6f7f, + 0x6f80, 0x6f81, 0x6f82, 0x6f83, 0x6f84, 0x6f85, 0x6f86, 0x6f87, + 0x6f88, 0x6f89, 0x6f8a, 0x6f8b, 0x6f8c, 0x6f8d, 0x6f8e, 0x6f8f, + 0x6f90, 0x6f91, 0x6f92, 0x6f93, 0x6f94, 0x6f95, 0x6f96, 0x6f97, + 0x6f98, 0x6f99, 0x6f9a, 0x6f9b, 0x6f9c, 0x6f9d, 0x6f9e, 0x6f9f, + 0x6fa0, 0x6fa1, 0x6fa2, 0x6fa3, 0x6fa4, 0x6fa5, 0x6fa6, 0x6fa7, + 0x6fa8, 0x6fa9, 0x6faa, 0x6fab, 0x6fac, 0x6fad, 0x6fae, 0x6faf, + 0x6fb0, 0x6fb1, 0x6fb2, 0x6fb3, 0x6fb4, 0x6fb5, 0x6fb6, 0x6fb7, + 0x6fb8, 0x6fb9, 0x6fba, 0x6fbb, 0x6fbc, 0x6fbd, 0x6fbe, 0x6fbf, + 0x6fc0, 0x6fc1, 0x6fc2, 0x6fc3, 0x6fc4, 0x6fc5, 0x6fc6, 0x6fc7, + 0x6fc8, 0x6fc9, 0x6fca, 0x6fcb, 0x6fcc, 0x6fcd, 0x6fce, 0x6fcf, + 0x6fd0, 0x6fd1, 0x6fd2, 0x6fd3, 0x6fd4, 0x6fd5, 0x6fd6, 0x6fd7, + 0x6fd8, 0x6fd9, 0x6fda, 0x6fdb, 0x6fdc, 0x6fdd, 0x6fde, 0x6fdf, + 0x6fe0, 0x6fe1, 0x6fe2, 0x6fe3, 0x6fe4, 0x6fe5, 0x6fe6, 0x6fe7, + 0x6fe8, 0x6fe9, 0x6fea, 0x6feb, 0x6fec, 0x6fed, 0x6fee, 0x6fef, + 0x6ff0, 0x6ff1, 0x6ff2, 0x6ff3, 0x6ff4, 0x6ff5, 0x6ff6, 0x6ff7, + 0x6ff8, 0x6ff9, 0x6ffa, 0x6ffb, 0x6ffc, 0x6ffd, 0x6ffe, 0x6fff, + 0x7000, 0x7001, 0x7002, 0x7003, 0x7004, 0x7005, 0x7006, 0x7007, + 0x7008, 0x7009, 0x700a, 0x700b, 0x700c, 0x700d, 0x700e, 0x700f, + 0x7010, 0x7011, 0x7012, 0x7013, 0x7014, 0x7015, 0x7016, 0x7017, + 0x7018, 0x7019, 0x701a, 0x701b, 0x701c, 0x701d, 0x701e, 0x701f, + 0x7020, 0x7021, 0x7022, 0x7023, 0x7024, 0x7025, 0x7026, 0x7027, + 0x7028, 0x7029, 0x702a, 0x702b, 0x702c, 0x702d, 0x702e, 0x702f, + 0x7030, 0x7031, 0x7032, 0x7033, 0x7034, 0x7035, 0x7036, 0x7037, + 0x7038, 0x7039, 0x703a, 0x703b, 0x703c, 0x703d, 0x703e, 0x703f, + 0x7040, 0x7041, 0x7042, 0x7043, 0x7044, 0x7045, 0x7046, 0x7047, + 0x7048, 0x7049, 0x704a, 0x704b, 0x704c, 0x704d, 0x704e, 0x704f, + 0x7050, 0x7051, 0x7052, 0x7053, 0x7054, 0x7055, 0x7056, 0x7057, + 0x7058, 0x7059, 0x705a, 0x705b, 0x705c, 0x705d, 0x705e, 0x705f, + 0x7060, 0x7061, 0x7062, 0x7063, 0x7064, 0x7065, 0x7066, 0x7067, + 0x7068, 0x7069, 0x706a, 0x706b, 0x706c, 0x706d, 0x706e, 0x706f, + 0x7070, 0x7071, 0x7072, 0x7073, 0x7074, 0x7075, 0x7076, 0x7077, + 0x7078, 0x7079, 0x707a, 0x707b, 0x707c, 0x707d, 0x707e, 0x707f, + 0x7080, 0x7081, 0x7082, 0x7083, 0x7084, 0x7085, 0x7086, 0x7087, + 0x7088, 0x7089, 0x708a, 0x708b, 0x708c, 0x708d, 0x708e, 0x708f, + 0x7090, 0x7091, 0x7092, 0x7093, 0x7094, 0x7095, 0x7096, 0x7097, + 0x7098, 0x7099, 0x709a, 0x709b, 0x709c, 0x709d, 0x709e, 0x709f, + 0x70a0, 0x70a1, 0x70a2, 0x70a3, 0x70a4, 0x70a5, 0x70a6, 0x70a7, + 0x70a8, 0x70a9, 0x70aa, 0x70ab, 0x70ac, 0x70ad, 0x70ae, 0x70af, + 0x70b0, 0x70b1, 0x70b2, 0x70b3, 0x70b4, 0x70b5, 0x70b6, 0x70b7, + 0x70b8, 0x70b9, 0x70ba, 0x70bb, 0x70bc, 0x70bd, 0x70be, 0x70bf, + 0x70c0, 0x70c1, 0x70c2, 0x70c3, 0x70c4, 0x70c5, 0x70c6, 0x70c7, + 0x70c8, 0x70c9, 0x70ca, 0x70cb, 0x70cc, 0x70cd, 0x70ce, 0x70cf, + 0x70d0, 0x70d1, 0x70d2, 0x70d3, 0x70d4, 0x70d5, 0x70d6, 0x70d7, + 0x70d8, 0x70d9, 0x70da, 0x70db, 0x70dc, 0x70dd, 0x70de, 0x70df, + 0x70e0, 0x70e1, 0x70e2, 0x70e3, 0x70e4, 0x70e5, 0x70e6, 0x70e7, + 0x70e8, 0x70e9, 0x70ea, 0x70eb, 0x70ec, 0x70ed, 0x70ee, 0x70ef, + 0x70f0, 0x70f1, 0x70f2, 0x70f3, 0x70f4, 0x70f5, 0x70f6, 0x70f7, + 0x70f8, 0x70f9, 0x70fa, 0x70fb, 0x70fc, 0x70fd, 0x70fe, 0x70ff, + 0x7100, 0x7101, 0x7102, 0x7103, 0x7104, 0x7105, 0x7106, 0x7107, + 0x7108, 0x7109, 0x710a, 0x710b, 0x710c, 0x710d, 0x710e, 0x710f, + 0x7110, 0x7111, 0x7112, 0x7113, 0x7114, 0x7115, 0x7116, 0x7117, + 0x7118, 0x7119, 0x711a, 0x711b, 0x711c, 0x711d, 0x711e, 0x711f, + 0x7120, 0x7121, 0x7122, 0x7123, 0x7124, 0x7125, 0x7126, 0x7127, + 0x7128, 0x7129, 0x712a, 0x712b, 0x712c, 0x712d, 0x712e, 0x712f, + 0x7130, 0x7131, 0x7132, 0x7133, 0x7134, 0x7135, 0x7136, 0x7137, + 0x7138, 0x7139, 0x713a, 0x713b, 0x713c, 0x713d, 0x713e, 0x713f, + 0x7140, 0x7141, 0x7142, 0x7143, 0x7144, 0x7145, 0x7146, 0x7147, + 0x7148, 0x7149, 0x714a, 0x714b, 0x714c, 0x714d, 0x714e, 0x714f, + 0x7150, 0x7151, 0x7152, 0x7153, 0x7154, 0x7155, 0x7156, 0x7157, + 0x7158, 0x7159, 0x715a, 0x715b, 0x715c, 0x715d, 0x715e, 0x715f, + 0x7160, 0x7161, 0x7162, 0x7163, 0x7164, 0x7165, 0x7166, 0x7167, + 0x7168, 0x7169, 0x716a, 0x716b, 0x716c, 0x716d, 0x716e, 0x716f, + 0x7170, 0x7171, 0x7172, 0x7173, 0x7174, 0x7175, 0x7176, 0x7177, + 0x7178, 0x7179, 0x717a, 0x717b, 0x717c, 0x717d, 0x717e, 0x717f, + 0x7180, 0x7181, 0x7182, 0x7183, 0x7184, 0x7185, 0x7186, 0x7187, + 0x7188, 0x7189, 0x718a, 0x718b, 0x718c, 0x718d, 0x718e, 0x718f, + 0x7190, 0x7191, 0x7192, 0x7193, 0x7194, 0x7195, 0x7196, 0x7197, + 0x7198, 0x7199, 0x719a, 0x719b, 0x719c, 0x719d, 0x719e, 0x719f, + 0x71a0, 0x71a1, 0x71a2, 0x71a3, 0x71a4, 0x71a5, 0x71a6, 0x71a7, + 0x71a8, 0x71a9, 0x71aa, 0x71ab, 0x71ac, 0x71ad, 0x71ae, 0x71af, + 0x71b0, 0x71b1, 0x71b2, 0x71b3, 0x71b4, 0x71b5, 0x71b6, 0x71b7, + 0x71b8, 0x71b9, 0x71ba, 0x71bb, 0x71bc, 0x71bd, 0x71be, 0x71bf, + 0x71c0, 0x71c1, 0x71c2, 0x71c3, 0x71c4, 0x71c5, 0x71c6, 0x71c7, + 0x71c8, 0x71c9, 0x71ca, 0x71cb, 0x71cc, 0x71cd, 0x71ce, 0x71cf, + 0x71d0, 0x71d1, 0x71d2, 0x71d3, 0x71d4, 0x71d5, 0x71d6, 0x71d7, + 0x71d8, 0x71d9, 0x71da, 0x71db, 0x71dc, 0x71dd, 0x71de, 0x71df, + 0x71e0, 0x71e1, 0x71e2, 0x71e3, 0x71e4, 0x71e5, 0x71e6, 0x71e7, + 0x71e8, 0x71e9, 0x71ea, 0x71eb, 0x71ec, 0x71ed, 0x71ee, 0x71ef, + 0x71f0, 0x71f1, 0x71f2, 0x71f3, 0x71f4, 0x71f5, 0x71f6, 0x71f7, + 0x71f8, 0x71f9, 0x71fa, 0x71fb, 0x71fc, 0x71fd, 0x71fe, 0x71ff, + 0x7200, 0x7201, 0x7202, 0x7203, 0x7204, 0x7205, 0x7206, 0x7207, + 0x7208, 0x7209, 0x720a, 0x720b, 0x720c, 0x720d, 0x720e, 0x720f, + 0x7210, 0x7211, 0x7212, 0x7213, 0x7214, 0x7215, 0x7216, 0x7217, + 0x7218, 0x7219, 0x721a, 0x721b, 0x721c, 0x721d, 0x721e, 0x721f, + 0x7220, 0x7221, 0x7222, 0x7223, 0x7224, 0x7225, 0x7226, 0x7227, + 0x7228, 0x7229, 0x722a, 0x722b, 0x722c, 0x722d, 0x722e, 0x722f, + 0x7230, 0x7231, 0x7232, 0x7233, 0x7234, 0x7235, 0x7236, 0x7237, + 0x7238, 0x7239, 0x723a, 0x723b, 0x723c, 0x723d, 0x723e, 0x723f, + 0x7240, 0x7241, 0x7242, 0x7243, 0x7244, 0x7245, 0x7246, 0x7247, + 0x7248, 0x7249, 0x724a, 0x724b, 0x724c, 0x724d, 0x724e, 0x724f, + 0x7250, 0x7251, 0x7252, 0x7253, 0x7254, 0x7255, 0x7256, 0x7257, + 0x7258, 0x7259, 0x725a, 0x725b, 0x725c, 0x725d, 0x725e, 0x725f, + 0x7260, 0x7261, 0x7262, 0x7263, 0x7264, 0x7265, 0x7266, 0x7267, + 0x7268, 0x7269, 0x726a, 0x726b, 0x726c, 0x726d, 0x726e, 0x726f, + 0x7270, 0x7271, 0x7272, 0x7273, 0x7274, 0x7275, 0x7276, 0x7277, + 0x7278, 0x7279, 0x727a, 0x727b, 0x727c, 0x727d, 0x727e, 0x727f, + 0x7280, 0x7281, 0x7282, 0x7283, 0x7284, 0x7285, 0x7286, 0x7287, + 0x7288, 0x7289, 0x728a, 0x728b, 0x728c, 0x728d, 0x728e, 0x728f, + 0x7290, 0x7291, 0x7292, 0x7293, 0x7294, 0x7295, 0x7296, 0x7297, + 0x7298, 0x7299, 0x729a, 0x729b, 0x729c, 0x729d, 0x729e, 0x729f, + 0x72a0, 0x72a1, 0x72a2, 0x72a3, 0x72a4, 0x72a5, 0x72a6, 0x72a7, + 0x72a8, 0x72a9, 0x72aa, 0x72ab, 0x72ac, 0x72ad, 0x72ae, 0x72af, + 0x72b0, 0x72b1, 0x72b2, 0x72b3, 0x72b4, 0x72b5, 0x72b6, 0x72b7, + 0x72b8, 0x72b9, 0x72ba, 0x72bb, 0x72bc, 0x72bd, 0x72be, 0x72bf, + 0x72c0, 0x72c1, 0x72c2, 0x72c3, 0x72c4, 0x72c5, 0x72c6, 0x72c7, + 0x72c8, 0x72c9, 0x72ca, 0x72cb, 0x72cc, 0x72cd, 0x72ce, 0x72cf, + 0x72d0, 0x72d1, 0x72d2, 0x72d3, 0x72d4, 0x72d5, 0x72d6, 0x72d7, + 0x72d8, 0x72d9, 0x72da, 0x72db, 0x72dc, 0x72dd, 0x72de, 0x72df, + 0x72e0, 0x72e1, 0x72e2, 0x72e3, 0x72e4, 0x72e5, 0x72e6, 0x72e7, + 0x72e8, 0x72e9, 0x72ea, 0x72eb, 0x72ec, 0x72ed, 0x72ee, 0x72ef, + 0x72f0, 0x72f1, 0x72f2, 0x72f3, 0x72f4, 0x72f5, 0x72f6, 0x72f7, + 0x72f8, 0x72f9, 0x72fa, 0x72fb, 0x72fc, 0x72fd, 0x72fe, 0x72ff, + 0x7300, 0x7301, 0x7302, 0x7303, 0x7304, 0x7305, 0x7306, 0x7307, + 0x7308, 0x7309, 0x730a, 0x730b, 0x730c, 0x730d, 0x730e, 0x730f, + 0x7310, 0x7311, 0x7312, 0x7313, 0x7314, 0x7315, 0x7316, 0x7317, + 0x7318, 0x7319, 0x731a, 0x731b, 0x731c, 0x731d, 0x731e, 0x731f, + 0x7320, 0x7321, 0x7322, 0x7323, 0x7324, 0x7325, 0x7326, 0x7327, + 0x7328, 0x7329, 0x732a, 0x732b, 0x732c, 0x732d, 0x732e, 0x732f, + 0x7330, 0x7331, 0x7332, 0x7333, 0x7334, 0x7335, 0x7336, 0x7337, + 0x7338, 0x7339, 0x733a, 0x733b, 0x733c, 0x733d, 0x733e, 0x733f, + 0x7340, 0x7341, 0x7342, 0x7343, 0x7344, 0x7345, 0x7346, 0x7347, + 0x7348, 0x7349, 0x734a, 0x734b, 0x734c, 0x734d, 0x734e, 0x734f, + 0x7350, 0x7351, 0x7352, 0x7353, 0x7354, 0x7355, 0x7356, 0x7357, + 0x7358, 0x7359, 0x735a, 0x735b, 0x735c, 0x735d, 0x735e, 0x735f, + 0x7360, 0x7361, 0x7362, 0x7363, 0x7364, 0x7365, 0x7366, 0x7367, + 0x7368, 0x7369, 0x736a, 0x736b, 0x736c, 0x736d, 0x736e, 0x736f, + 0x7370, 0x7371, 0x7372, 0x7373, 0x7374, 0x7375, 0x7376, 0x7377, + 0x7378, 0x7379, 0x737a, 0x737b, 0x737c, 0x737d, 0x737e, 0x737f, + 0x7380, 0x7381, 0x7382, 0x7383, 0x7384, 0x7385, 0x7386, 0x7387, + 0x7388, 0x7389, 0x738a, 0x738b, 0x738c, 0x738d, 0x738e, 0x738f, + 0x7390, 0x7391, 0x7392, 0x7393, 0x7394, 0x7395, 0x7396, 0x7397, + 0x7398, 0x7399, 0x739a, 0x739b, 0x739c, 0x739d, 0x739e, 0x739f, + 0x73a0, 0x73a1, 0x73a2, 0x73a3, 0x73a4, 0x73a5, 0x73a6, 0x73a7, + 0x73a8, 0x73a9, 0x73aa, 0x73ab, 0x73ac, 0x73ad, 0x73ae, 0x73af, + 0x73b0, 0x73b1, 0x73b2, 0x73b3, 0x73b4, 0x73b5, 0x73b6, 0x73b7, + 0x73b8, 0x73b9, 0x73ba, 0x73bb, 0x73bc, 0x73bd, 0x73be, 0x73bf, + 0x73c0, 0x73c1, 0x73c2, 0x73c3, 0x73c4, 0x73c5, 0x73c6, 0x73c7, + 0x73c8, 0x73c9, 0x73ca, 0x73cb, 0x73cc, 0x73cd, 0x73ce, 0x73cf, + 0x73d0, 0x73d1, 0x73d2, 0x73d3, 0x73d4, 0x73d5, 0x73d6, 0x73d7, + 0x73d8, 0x73d9, 0x73da, 0x73db, 0x73dc, 0x73dd, 0x73de, 0x73df, + 0x73e0, 0x73e1, 0x73e2, 0x73e3, 0x73e4, 0x73e5, 0x73e6, 0x73e7, + 0x73e8, 0x73e9, 0x73ea, 0x73eb, 0x73ec, 0x73ed, 0x73ee, 0x73ef, + 0x73f0, 0x73f1, 0x73f2, 0x73f3, 0x73f4, 0x73f5, 0x73f6, 0x73f7, + 0x73f8, 0x73f9, 0x73fa, 0x73fb, 0x73fc, 0x73fd, 0x73fe, 0x73ff, + 0x7400, 0x7401, 0x7402, 0x7403, 0x7404, 0x7405, 0x7406, 0x7407, + 0x7408, 0x7409, 0x740a, 0x740b, 0x740c, 0x740d, 0x740e, 0x740f, + 0x7410, 0x7411, 0x7412, 0x7413, 0x7414, 0x7415, 0x7416, 0x7417, + 0x7418, 0x7419, 0x741a, 0x741b, 0x741c, 0x741d, 0x741e, 0x741f, + 0x7420, 0x7421, 0x7422, 0x7423, 0x7424, 0x7425, 0x7426, 0x7427, + 0x7428, 0x7429, 0x742a, 0x742b, 0x742c, 0x742d, 0x742e, 0x742f, + 0x7430, 0x7431, 0x7432, 0x7433, 0x7434, 0x7435, 0x7436, 0x7437, + 0x7438, 0x7439, 0x743a, 0x743b, 0x743c, 0x743d, 0x743e, 0x743f, + 0x7440, 0x7441, 0x7442, 0x7443, 0x7444, 0x7445, 0x7446, 0x7447, + 0x7448, 0x7449, 0x744a, 0x744b, 0x744c, 0x744d, 0x744e, 0x744f, + 0x7450, 0x7451, 0x7452, 0x7453, 0x7454, 0x7455, 0x7456, 0x7457, + 0x7458, 0x7459, 0x745a, 0x745b, 0x745c, 0x745d, 0x745e, 0x745f, + 0x7460, 0x7461, 0x7462, 0x7463, 0x7464, 0x7465, 0x7466, 0x7467, + 0x7468, 0x7469, 0x746a, 0x746b, 0x746c, 0x746d, 0x746e, 0x746f, + 0x7470, 0x7471, 0x7472, 0x7473, 0x7474, 0x7475, 0x7476, 0x7477, + 0x7478, 0x7479, 0x747a, 0x747b, 0x747c, 0x747d, 0x747e, 0x747f, + 0x7480, 0x7481, 0x7482, 0x7483, 0x7484, 0x7485, 0x7486, 0x7487, + 0x7488, 0x7489, 0x748a, 0x748b, 0x748c, 0x748d, 0x748e, 0x748f, + 0x7490, 0x7491, 0x7492, 0x7493, 0x7494, 0x7495, 0x7496, 0x7497, + 0x7498, 0x7499, 0x749a, 0x749b, 0x749c, 0x749d, 0x749e, 0x749f, + 0x74a0, 0x74a1, 0x74a2, 0x74a3, 0x74a4, 0x74a5, 0x74a6, 0x74a7, + 0x74a8, 0x74a9, 0x74aa, 0x74ab, 0x74ac, 0x74ad, 0x74ae, 0x74af, + 0x74b0, 0x74b1, 0x74b2, 0x74b3, 0x74b4, 0x74b5, 0x74b6, 0x74b7, + 0x74b8, 0x74b9, 0x74ba, 0x74bb, 0x74bc, 0x74bd, 0x74be, 0x74bf, + 0x74c0, 0x74c1, 0x74c2, 0x74c3, 0x74c4, 0x74c5, 0x74c6, 0x74c7, + 0x74c8, 0x74c9, 0x74ca, 0x74cb, 0x74cc, 0x74cd, 0x74ce, 0x74cf, + 0x74d0, 0x74d1, 0x74d2, 0x74d3, 0x74d4, 0x74d5, 0x74d6, 0x74d7, + 0x74d8, 0x74d9, 0x74da, 0x74db, 0x74dc, 0x74dd, 0x74de, 0x74df, + 0x74e0, 0x74e1, 0x74e2, 0x74e3, 0x74e4, 0x74e5, 0x74e6, 0x74e7, + 0x74e8, 0x74e9, 0x74ea, 0x74eb, 0x74ec, 0x74ed, 0x74ee, 0x74ef, + 0x74f0, 0x74f1, 0x74f2, 0x74f3, 0x74f4, 0x74f5, 0x74f6, 0x74f7, + 0x74f8, 0x74f9, 0x74fa, 0x74fb, 0x74fc, 0x74fd, 0x74fe, 0x74ff, + 0x7500, 0x7501, 0x7502, 0x7503, 0x7504, 0x7505, 0x7506, 0x7507, + 0x7508, 0x7509, 0x750a, 0x750b, 0x750c, 0x750d, 0x750e, 0x750f, + 0x7510, 0x7511, 0x7512, 0x7513, 0x7514, 0x7515, 0x7516, 0x7517, + 0x7518, 0x7519, 0x751a, 0x751b, 0x751c, 0x751d, 0x751e, 0x751f, + 0x7520, 0x7521, 0x7522, 0x7523, 0x7524, 0x7525, 0x7526, 0x7527, + 0x7528, 0x7529, 0x752a, 0x752b, 0x752c, 0x752d, 0x752e, 0x752f, + 0x7530, 0x7531, 0x7532, 0x7533, 0x7534, 0x7535, 0x7536, 0x7537, + 0x7538, 0x7539, 0x753a, 0x753b, 0x753c, 0x753d, 0x753e, 0x753f, + 0x7540, 0x7541, 0x7542, 0x7543, 0x7544, 0x7545, 0x7546, 0x7547, + 0x7548, 0x7549, 0x754a, 0x754b, 0x754c, 0x754d, 0x754e, 0x754f, + 0x7550, 0x7551, 0x7552, 0x7553, 0x7554, 0x7555, 0x7556, 0x7557, + 0x7558, 0x7559, 0x755a, 0x755b, 0x755c, 0x755d, 0x755e, 0x755f, + 0x7560, 0x7561, 0x7562, 0x7563, 0x7564, 0x7565, 0x7566, 0x7567, + 0x7568, 0x7569, 0x756a, 0x756b, 0x756c, 0x756d, 0x756e, 0x756f, + 0x7570, 0x7571, 0x7572, 0x7573, 0x7574, 0x7575, 0x7576, 0x7577, + 0x7578, 0x7579, 0x757a, 0x757b, 0x757c, 0x757d, 0x757e, 0x757f, + 0x7580, 0x7581, 0x7582, 0x7583, 0x7584, 0x7585, 0x7586, 0x7587, + 0x7588, 0x7589, 0x758a, 0x758b, 0x758c, 0x758d, 0x758e, 0x758f, + 0x7590, 0x7591, 0x7592, 0x7593, 0x7594, 0x7595, 0x7596, 0x7597, + 0x7598, 0x7599, 0x759a, 0x759b, 0x759c, 0x759d, 0x759e, 0x759f, + 0x75a0, 0x75a1, 0x75a2, 0x75a3, 0x75a4, 0x75a5, 0x75a6, 0x75a7, + 0x75a8, 0x75a9, 0x75aa, 0x75ab, 0x75ac, 0x75ad, 0x75ae, 0x75af, + 0x75b0, 0x75b1, 0x75b2, 0x75b3, 0x75b4, 0x75b5, 0x75b6, 0x75b7, + 0x75b8, 0x75b9, 0x75ba, 0x75bb, 0x75bc, 0x75bd, 0x75be, 0x75bf, + 0x75c0, 0x75c1, 0x75c2, 0x75c3, 0x75c4, 0x75c5, 0x75c6, 0x75c7, + 0x75c8, 0x75c9, 0x75ca, 0x75cb, 0x75cc, 0x75cd, 0x75ce, 0x75cf, + 0x75d0, 0x75d1, 0x75d2, 0x75d3, 0x75d4, 0x75d5, 0x75d6, 0x75d7, + 0x75d8, 0x75d9, 0x75da, 0x75db, 0x75dc, 0x75dd, 0x75de, 0x75df, + 0x75e0, 0x75e1, 0x75e2, 0x75e3, 0x75e4, 0x75e5, 0x75e6, 0x75e7, + 0x75e8, 0x75e9, 0x75ea, 0x75eb, 0x75ec, 0x75ed, 0x75ee, 0x75ef, + 0x75f0, 0x75f1, 0x75f2, 0x75f3, 0x75f4, 0x75f5, 0x75f6, 0x75f7, + 0x75f8, 0x75f9, 0x75fa, 0x75fb, 0x75fc, 0x75fd, 0x75fe, 0x75ff, + 0x7600, 0x7601, 0x7602, 0x7603, 0x7604, 0x7605, 0x7606, 0x7607, + 0x7608, 0x7609, 0x760a, 0x760b, 0x760c, 0x760d, 0x760e, 0x760f, + 0x7610, 0x7611, 0x7612, 0x7613, 0x7614, 0x7615, 0x7616, 0x7617, + 0x7618, 0x7619, 0x761a, 0x761b, 0x761c, 0x761d, 0x761e, 0x761f, + 0x7620, 0x7621, 0x7622, 0x7623, 0x7624, 0x7625, 0x7626, 0x7627, + 0x7628, 0x7629, 0x762a, 0x762b, 0x762c, 0x762d, 0x762e, 0x762f, + 0x7630, 0x7631, 0x7632, 0x7633, 0x7634, 0x7635, 0x7636, 0x7637, + 0x7638, 0x7639, 0x763a, 0x763b, 0x763c, 0x763d, 0x763e, 0x763f, + 0x7640, 0x7641, 0x7642, 0x7643, 0x7644, 0x7645, 0x7646, 0x7647, + 0x7648, 0x7649, 0x764a, 0x764b, 0x764c, 0x764d, 0x764e, 0x764f, + 0x7650, 0x7651, 0x7652, 0x7653, 0x7654, 0x7655, 0x7656, 0x7657, + 0x7658, 0x7659, 0x765a, 0x765b, 0x765c, 0x765d, 0x765e, 0x765f, + 0x7660, 0x7661, 0x7662, 0x7663, 0x7664, 0x7665, 0x7666, 0x7667, + 0x7668, 0x7669, 0x766a, 0x766b, 0x766c, 0x766d, 0x766e, 0x766f, + 0x7670, 0x7671, 0x7672, 0x7673, 0x7674, 0x7675, 0x7676, 0x7677, + 0x7678, 0x7679, 0x767a, 0x767b, 0x767c, 0x767d, 0x767e, 0x767f, + 0x7680, 0x7681, 0x7682, 0x7683, 0x7684, 0x7685, 0x7686, 0x7687, + 0x7688, 0x7689, 0x768a, 0x768b, 0x768c, 0x768d, 0x768e, 0x768f, + 0x7690, 0x7691, 0x7692, 0x7693, 0x7694, 0x7695, 0x7696, 0x7697, + 0x7698, 0x7699, 0x769a, 0x769b, 0x769c, 0x769d, 0x769e, 0x769f, + 0x76a0, 0x76a1, 0x76a2, 0x76a3, 0x76a4, 0x76a5, 0x76a6, 0x76a7, + 0x76a8, 0x76a9, 0x76aa, 0x76ab, 0x76ac, 0x76ad, 0x76ae, 0x76af, + 0x76b0, 0x76b1, 0x76b2, 0x76b3, 0x76b4, 0x76b5, 0x76b6, 0x76b7, + 0x76b8, 0x76b9, 0x76ba, 0x76bb, 0x76bc, 0x76bd, 0x76be, 0x76bf, + 0x76c0, 0x76c1, 0x76c2, 0x76c3, 0x76c4, 0x76c5, 0x76c6, 0x76c7, + 0x76c8, 0x76c9, 0x76ca, 0x76cb, 0x76cc, 0x76cd, 0x76ce, 0x76cf, + 0x76d0, 0x76d1, 0x76d2, 0x76d3, 0x76d4, 0x76d5, 0x76d6, 0x76d7, + 0x76d8, 0x76d9, 0x76da, 0x76db, 0x76dc, 0x76dd, 0x76de, 0x76df, + 0x76e0, 0x76e1, 0x76e2, 0x76e3, 0x76e4, 0x76e5, 0x76e6, 0x76e7, + 0x76e8, 0x76e9, 0x76ea, 0x76eb, 0x76ec, 0x76ed, 0x76ee, 0x76ef, + 0x76f0, 0x76f1, 0x76f2, 0x76f3, 0x76f4, 0x76f5, 0x76f6, 0x76f7, + 0x76f8, 0x76f9, 0x76fa, 0x76fb, 0x76fc, 0x76fd, 0x76fe, 0x76ff, + 0x7700, 0x7701, 0x7702, 0x7703, 0x7704, 0x7705, 0x7706, 0x7707, + 0x7708, 0x7709, 0x770a, 0x770b, 0x770c, 0x770d, 0x770e, 0x770f, + 0x7710, 0x7711, 0x7712, 0x7713, 0x7714, 0x7715, 0x7716, 0x7717, + 0x7718, 0x7719, 0x771a, 0x771b, 0x771c, 0x771d, 0x771e, 0x771f, + 0x7720, 0x7721, 0x7722, 0x7723, 0x7724, 0x7725, 0x7726, 0x7727, + 0x7728, 0x7729, 0x772a, 0x772b, 0x772c, 0x772d, 0x772e, 0x772f, + 0x7730, 0x7731, 0x7732, 0x7733, 0x7734, 0x7735, 0x7736, 0x7737, + 0x7738, 0x7739, 0x773a, 0x773b, 0x773c, 0x773d, 0x773e, 0x773f, + 0x7740, 0x7741, 0x7742, 0x7743, 0x7744, 0x7745, 0x7746, 0x7747, + 0x7748, 0x7749, 0x774a, 0x774b, 0x774c, 0x774d, 0x774e, 0x774f, + 0x7750, 0x7751, 0x7752, 0x7753, 0x7754, 0x7755, 0x7756, 0x7757, + 0x7758, 0x7759, 0x775a, 0x775b, 0x775c, 0x775d, 0x775e, 0x775f, + 0x7760, 0x7761, 0x7762, 0x7763, 0x7764, 0x7765, 0x7766, 0x7767, + 0x7768, 0x7769, 0x776a, 0x776b, 0x776c, 0x776d, 0x776e, 0x776f, + 0x7770, 0x7771, 0x7772, 0x7773, 0x7774, 0x7775, 0x7776, 0x7777, + 0x7778, 0x7779, 0x777a, 0x777b, 0x777c, 0x777d, 0x777e, 0x777f, + 0x7780, 0x7781, 0x7782, 0x7783, 0x7784, 0x7785, 0x7786, 0x7787, + 0x7788, 0x7789, 0x778a, 0x778b, 0x778c, 0x778d, 0x778e, 0x778f, + 0x7790, 0x7791, 0x7792, 0x7793, 0x7794, 0x7795, 0x7796, 0x7797, + 0x7798, 0x7799, 0x779a, 0x779b, 0x779c, 0x779d, 0x779e, 0x779f, + 0x77a0, 0x77a1, 0x77a2, 0x77a3, 0x77a4, 0x77a5, 0x77a6, 0x77a7, + 0x77a8, 0x77a9, 0x77aa, 0x77ab, 0x77ac, 0x77ad, 0x77ae, 0x77af, + 0x77b0, 0x77b1, 0x77b2, 0x77b3, 0x77b4, 0x77b5, 0x77b6, 0x77b7, + 0x77b8, 0x77b9, 0x77ba, 0x77bb, 0x77bc, 0x77bd, 0x77be, 0x77bf, + 0x77c0, 0x77c1, 0x77c2, 0x77c3, 0x77c4, 0x77c5, 0x77c6, 0x77c7, + 0x77c8, 0x77c9, 0x77ca, 0x77cb, 0x77cc, 0x77cd, 0x77ce, 0x77cf, + 0x77d0, 0x77d1, 0x77d2, 0x77d3, 0x77d4, 0x77d5, 0x77d6, 0x77d7, + 0x77d8, 0x77d9, 0x77da, 0x77db, 0x77dc, 0x77dd, 0x77de, 0x77df, + 0x77e0, 0x77e1, 0x77e2, 0x77e3, 0x77e4, 0x77e5, 0x77e6, 0x77e7, + 0x77e8, 0x77e9, 0x77ea, 0x77eb, 0x77ec, 0x77ed, 0x77ee, 0x77ef, + 0x77f0, 0x77f1, 0x77f2, 0x77f3, 0x77f4, 0x77f5, 0x77f6, 0x77f7, + 0x77f8, 0x77f9, 0x77fa, 0x77fb, 0x77fc, 0x77fd, 0x77fe, 0x77ff, + 0x7800, 0x7801, 0x7802, 0x7803, 0x7804, 0x7805, 0x7806, 0x7807, + 0x7808, 0x7809, 0x780a, 0x780b, 0x780c, 0x780d, 0x780e, 0x780f, + 0x7810, 0x7811, 0x7812, 0x7813, 0x7814, 0x7815, 0x7816, 0x7817, + 0x7818, 0x7819, 0x781a, 0x781b, 0x781c, 0x781d, 0x781e, 0x781f, + 0x7820, 0x7821, 0x7822, 0x7823, 0x7824, 0x7825, 0x7826, 0x7827, + 0x7828, 0x7829, 0x782a, 0x782b, 0x782c, 0x782d, 0x782e, 0x782f, + 0x7830, 0x7831, 0x7832, 0x7833, 0x7834, 0x7835, 0x7836, 0x7837, + 0x7838, 0x7839, 0x783a, 0x783b, 0x783c, 0x783d, 0x783e, 0x783f, + 0x7840, 0x7841, 0x7842, 0x7843, 0x7844, 0x7845, 0x7846, 0x7847, + 0x7848, 0x7849, 0x784a, 0x784b, 0x784c, 0x784d, 0x784e, 0x784f, + 0x7850, 0x7851, 0x7852, 0x7853, 0x7854, 0x7855, 0x7856, 0x7857, + 0x7858, 0x7859, 0x785a, 0x785b, 0x785c, 0x785d, 0x785e, 0x785f, + 0x7860, 0x7861, 0x7862, 0x7863, 0x7864, 0x7865, 0x7866, 0x7867, + 0x7868, 0x7869, 0x786a, 0x786b, 0x786c, 0x786d, 0x786e, 0x786f, + 0x7870, 0x7871, 0x7872, 0x7873, 0x7874, 0x7875, 0x7876, 0x7877, + 0x7878, 0x7879, 0x787a, 0x787b, 0x787c, 0x787d, 0x787e, 0x787f, + 0x7880, 0x7881, 0x7882, 0x7883, 0x7884, 0x7885, 0x7886, 0x7887, + 0x7888, 0x7889, 0x788a, 0x788b, 0x788c, 0x788d, 0x788e, 0x788f, + 0x7890, 0x7891, 0x7892, 0x7893, 0x7894, 0x7895, 0x7896, 0x7897, + 0x7898, 0x7899, 0x789a, 0x789b, 0x789c, 0x789d, 0x789e, 0x789f, + 0x78a0, 0x78a1, 0x78a2, 0x78a3, 0x78a4, 0x78a5, 0x78a6, 0x78a7, + 0x78a8, 0x78a9, 0x78aa, 0x78ab, 0x78ac, 0x78ad, 0x78ae, 0x78af, + 0x78b0, 0x78b1, 0x78b2, 0x78b3, 0x78b4, 0x78b5, 0x78b6, 0x78b7, + 0x78b8, 0x78b9, 0x78ba, 0x78bb, 0x78bc, 0x78bd, 0x78be, 0x78bf, + 0x78c0, 0x78c1, 0x78c2, 0x78c3, 0x78c4, 0x78c5, 0x78c6, 0x78c7, + 0x78c8, 0x78c9, 0x78ca, 0x78cb, 0x78cc, 0x78cd, 0x78ce, 0x78cf, + 0x78d0, 0x78d1, 0x78d2, 0x78d3, 0x78d4, 0x78d5, 0x78d6, 0x78d7, + 0x78d8, 0x78d9, 0x78da, 0x78db, 0x78dc, 0x78dd, 0x78de, 0x78df, + 0x78e0, 0x78e1, 0x78e2, 0x78e3, 0x78e4, 0x78e5, 0x78e6, 0x78e7, + 0x78e8, 0x78e9, 0x78ea, 0x78eb, 0x78ec, 0x78ed, 0x78ee, 0x78ef, + 0x78f0, 0x78f1, 0x78f2, 0x78f3, 0x78f4, 0x78f5, 0x78f6, 0x78f7, + 0x78f8, 0x78f9, 0x78fa, 0x78fb, 0x78fc, 0x78fd, 0x78fe, 0x78ff, + 0x7900, 0x7901, 0x7902, 0x7903, 0x7904, 0x7905, 0x7906, 0x7907, + 0x7908, 0x7909, 0x790a, 0x790b, 0x790c, 0x790d, 0x790e, 0x790f, + 0x7910, 0x7911, 0x7912, 0x7913, 0x7914, 0x7915, 0x7916, 0x7917, + 0x7918, 0x7919, 0x791a, 0x791b, 0x791c, 0x791d, 0x791e, 0x791f, + 0x7920, 0x7921, 0x7922, 0x7923, 0x7924, 0x7925, 0x7926, 0x7927, + 0x7928, 0x7929, 0x792a, 0x792b, 0x792c, 0x792d, 0x792e, 0x792f, + 0x7930, 0x7931, 0x7932, 0x7933, 0x7934, 0x7935, 0x7936, 0x7937, + 0x7938, 0x7939, 0x793a, 0x793b, 0x793c, 0x793d, 0x793e, 0x793f, + 0x7940, 0x7941, 0x7942, 0x7943, 0x7944, 0x7945, 0x7946, 0x7947, + 0x7948, 0x7949, 0x794a, 0x794b, 0x794c, 0x794d, 0x794e, 0x794f, + 0x7950, 0x7951, 0x7952, 0x7953, 0x7954, 0x7955, 0x7956, 0x7957, + 0x7958, 0x7959, 0x795a, 0x795b, 0x795c, 0x795d, 0x795e, 0x795f, + 0x7960, 0x7961, 0x7962, 0x7963, 0x7964, 0x7965, 0x7966, 0x7967, + 0x7968, 0x7969, 0x796a, 0x796b, 0x796c, 0x796d, 0x796e, 0x796f, + 0x7970, 0x7971, 0x7972, 0x7973, 0x7974, 0x7975, 0x7976, 0x7977, + 0x7978, 0x7979, 0x797a, 0x797b, 0x797c, 0x797d, 0x797e, 0x797f, + 0x7980, 0x7981, 0x7982, 0x7983, 0x7984, 0x7985, 0x7986, 0x7987, + 0x7988, 0x7989, 0x798a, 0x798b, 0x798c, 0x798d, 0x798e, 0x798f, + 0x7990, 0x7991, 0x7992, 0x7993, 0x7994, 0x7995, 0x7996, 0x7997, + 0x7998, 0x7999, 0x799a, 0x799b, 0x799c, 0x799d, 0x799e, 0x799f, + 0x79a0, 0x79a1, 0x79a2, 0x79a3, 0x79a4, 0x79a5, 0x79a6, 0x79a7, + 0x79a8, 0x79a9, 0x79aa, 0x79ab, 0x79ac, 0x79ad, 0x79ae, 0x79af, + 0x79b0, 0x79b1, 0x79b2, 0x79b3, 0x79b4, 0x79b5, 0x79b6, 0x79b7, + 0x79b8, 0x79b9, 0x79ba, 0x79bb, 0x79bc, 0x79bd, 0x79be, 0x79bf, + 0x79c0, 0x79c1, 0x79c2, 0x79c3, 0x79c4, 0x79c5, 0x79c6, 0x79c7, + 0x79c8, 0x79c9, 0x79ca, 0x79cb, 0x79cc, 0x79cd, 0x79ce, 0x79cf, + 0x79d0, 0x79d1, 0x79d2, 0x79d3, 0x79d4, 0x79d5, 0x79d6, 0x79d7, + 0x79d8, 0x79d9, 0x79da, 0x79db, 0x79dc, 0x79dd, 0x79de, 0x79df, + 0x79e0, 0x79e1, 0x79e2, 0x79e3, 0x79e4, 0x79e5, 0x79e6, 0x79e7, + 0x79e8, 0x79e9, 0x79ea, 0x79eb, 0x79ec, 0x79ed, 0x79ee, 0x79ef, + 0x79f0, 0x79f1, 0x79f2, 0x79f3, 0x79f4, 0x79f5, 0x79f6, 0x79f7, + 0x79f8, 0x79f9, 0x79fa, 0x79fb, 0x79fc, 0x79fd, 0x79fe, 0x79ff, + 0x7a00, 0x7a01, 0x7a02, 0x7a03, 0x7a04, 0x7a05, 0x7a06, 0x7a07, + 0x7a08, 0x7a09, 0x7a0a, 0x7a0b, 0x7a0c, 0x7a0d, 0x7a0e, 0x7a0f, + 0x7a10, 0x7a11, 0x7a12, 0x7a13, 0x7a14, 0x7a15, 0x7a16, 0x7a17, + 0x7a18, 0x7a19, 0x7a1a, 0x7a1b, 0x7a1c, 0x7a1d, 0x7a1e, 0x7a1f, + 0x7a20, 0x7a21, 0x7a22, 0x7a23, 0x7a24, 0x7a25, 0x7a26, 0x7a27, + 0x7a28, 0x7a29, 0x7a2a, 0x7a2b, 0x7a2c, 0x7a2d, 0x7a2e, 0x7a2f, + 0x7a30, 0x7a31, 0x7a32, 0x7a33, 0x7a34, 0x7a35, 0x7a36, 0x7a37, + 0x7a38, 0x7a39, 0x7a3a, 0x7a3b, 0x7a3c, 0x7a3d, 0x7a3e, 0x7a3f, + 0x7a40, 0x7a41, 0x7a42, 0x7a43, 0x7a44, 0x7a45, 0x7a46, 0x7a47, + 0x7a48, 0x7a49, 0x7a4a, 0x7a4b, 0x7a4c, 0x7a4d, 0x7a4e, 0x7a4f, + 0x7a50, 0x7a51, 0x7a52, 0x7a53, 0x7a54, 0x7a55, 0x7a56, 0x7a57, + 0x7a58, 0x7a59, 0x7a5a, 0x7a5b, 0x7a5c, 0x7a5d, 0x7a5e, 0x7a5f, + 0x7a60, 0x7a61, 0x7a62, 0x7a63, 0x7a64, 0x7a65, 0x7a66, 0x7a67, + 0x7a68, 0x7a69, 0x7a6a, 0x7a6b, 0x7a6c, 0x7a6d, 0x7a6e, 0x7a6f, + 0x7a70, 0x7a71, 0x7a72, 0x7a73, 0x7a74, 0x7a75, 0x7a76, 0x7a77, + 0x7a78, 0x7a79, 0x7a7a, 0x7a7b, 0x7a7c, 0x7a7d, 0x7a7e, 0x7a7f, + 0x7a80, 0x7a81, 0x7a82, 0x7a83, 0x7a84, 0x7a85, 0x7a86, 0x7a87, + 0x7a88, 0x7a89, 0x7a8a, 0x7a8b, 0x7a8c, 0x7a8d, 0x7a8e, 0x7a8f, + 0x7a90, 0x7a91, 0x7a92, 0x7a93, 0x7a94, 0x7a95, 0x7a96, 0x7a97, + 0x7a98, 0x7a99, 0x7a9a, 0x7a9b, 0x7a9c, 0x7a9d, 0x7a9e, 0x7a9f, + 0x7aa0, 0x7aa1, 0x7aa2, 0x7aa3, 0x7aa4, 0x7aa5, 0x7aa6, 0x7aa7, + 0x7aa8, 0x7aa9, 0x7aaa, 0x7aab, 0x7aac, 0x7aad, 0x7aae, 0x7aaf, + 0x7ab0, 0x7ab1, 0x7ab2, 0x7ab3, 0x7ab4, 0x7ab5, 0x7ab6, 0x7ab7, + 0x7ab8, 0x7ab9, 0x7aba, 0x7abb, 0x7abc, 0x7abd, 0x7abe, 0x7abf, + 0x7ac0, 0x7ac1, 0x7ac2, 0x7ac3, 0x7ac4, 0x7ac5, 0x7ac6, 0x7ac7, + 0x7ac8, 0x7ac9, 0x7aca, 0x7acb, 0x7acc, 0x7acd, 0x7ace, 0x7acf, + 0x7ad0, 0x7ad1, 0x7ad2, 0x7ad3, 0x7ad4, 0x7ad5, 0x7ad6, 0x7ad7, + 0x7ad8, 0x7ad9, 0x7ada, 0x7adb, 0x7adc, 0x7add, 0x7ade, 0x7adf, + 0x7ae0, 0x7ae1, 0x7ae2, 0x7ae3, 0x7ae4, 0x7ae5, 0x7ae6, 0x7ae7, + 0x7ae8, 0x7ae9, 0x7aea, 0x7aeb, 0x7aec, 0x7aed, 0x7aee, 0x7aef, + 0x7af0, 0x7af1, 0x7af2, 0x7af3, 0x7af4, 0x7af5, 0x7af6, 0x7af7, + 0x7af8, 0x7af9, 0x7afa, 0x7afb, 0x7afc, 0x7afd, 0x7afe, 0x7aff, + 0x7b00, 0x7b01, 0x7b02, 0x7b03, 0x7b04, 0x7b05, 0x7b06, 0x7b07, + 0x7b08, 0x7b09, 0x7b0a, 0x7b0b, 0x7b0c, 0x7b0d, 0x7b0e, 0x7b0f, + 0x7b10, 0x7b11, 0x7b12, 0x7b13, 0x7b14, 0x7b15, 0x7b16, 0x7b17, + 0x7b18, 0x7b19, 0x7b1a, 0x7b1b, 0x7b1c, 0x7b1d, 0x7b1e, 0x7b1f, + 0x7b20, 0x7b21, 0x7b22, 0x7b23, 0x7b24, 0x7b25, 0x7b26, 0x7b27, + 0x7b28, 0x7b29, 0x7b2a, 0x7b2b, 0x7b2c, 0x7b2d, 0x7b2e, 0x7b2f, + 0x7b30, 0x7b31, 0x7b32, 0x7b33, 0x7b34, 0x7b35, 0x7b36, 0x7b37, + 0x7b38, 0x7b39, 0x7b3a, 0x7b3b, 0x7b3c, 0x7b3d, 0x7b3e, 0x7b3f, + 0x7b40, 0x7b41, 0x7b42, 0x7b43, 0x7b44, 0x7b45, 0x7b46, 0x7b47, + 0x7b48, 0x7b49, 0x7b4a, 0x7b4b, 0x7b4c, 0x7b4d, 0x7b4e, 0x7b4f, + 0x7b50, 0x7b51, 0x7b52, 0x7b53, 0x7b54, 0x7b55, 0x7b56, 0x7b57, + 0x7b58, 0x7b59, 0x7b5a, 0x7b5b, 0x7b5c, 0x7b5d, 0x7b5e, 0x7b5f, + 0x7b60, 0x7b61, 0x7b62, 0x7b63, 0x7b64, 0x7b65, 0x7b66, 0x7b67, + 0x7b68, 0x7b69, 0x7b6a, 0x7b6b, 0x7b6c, 0x7b6d, 0x7b6e, 0x7b6f, + 0x7b70, 0x7b71, 0x7b72, 0x7b73, 0x7b74, 0x7b75, 0x7b76, 0x7b77, + 0x7b78, 0x7b79, 0x7b7a, 0x7b7b, 0x7b7c, 0x7b7d, 0x7b7e, 0x7b7f, + 0x7b80, 0x7b81, 0x7b82, 0x7b83, 0x7b84, 0x7b85, 0x7b86, 0x7b87, + 0x7b88, 0x7b89, 0x7b8a, 0x7b8b, 0x7b8c, 0x7b8d, 0x7b8e, 0x7b8f, + 0x7b90, 0x7b91, 0x7b92, 0x7b93, 0x7b94, 0x7b95, 0x7b96, 0x7b97, + 0x7b98, 0x7b99, 0x7b9a, 0x7b9b, 0x7b9c, 0x7b9d, 0x7b9e, 0x7b9f, + 0x7ba0, 0x7ba1, 0x7ba2, 0x7ba3, 0x7ba4, 0x7ba5, 0x7ba6, 0x7ba7, + 0x7ba8, 0x7ba9, 0x7baa, 0x7bab, 0x7bac, 0x7bad, 0x7bae, 0x7baf, + 0x7bb0, 0x7bb1, 0x7bb2, 0x7bb3, 0x7bb4, 0x7bb5, 0x7bb6, 0x7bb7, + 0x7bb8, 0x7bb9, 0x7bba, 0x7bbb, 0x7bbc, 0x7bbd, 0x7bbe, 0x7bbf, + 0x7bc0, 0x7bc1, 0x7bc2, 0x7bc3, 0x7bc4, 0x7bc5, 0x7bc6, 0x7bc7, + 0x7bc8, 0x7bc9, 0x7bca, 0x7bcb, 0x7bcc, 0x7bcd, 0x7bce, 0x7bcf, + 0x7bd0, 0x7bd1, 0x7bd2, 0x7bd3, 0x7bd4, 0x7bd5, 0x7bd6, 0x7bd7, + 0x7bd8, 0x7bd9, 0x7bda, 0x7bdb, 0x7bdc, 0x7bdd, 0x7bde, 0x7bdf, + 0x7be0, 0x7be1, 0x7be2, 0x7be3, 0x7be4, 0x7be5, 0x7be6, 0x7be7, + 0x7be8, 0x7be9, 0x7bea, 0x7beb, 0x7bec, 0x7bed, 0x7bee, 0x7bef, + 0x7bf0, 0x7bf1, 0x7bf2, 0x7bf3, 0x7bf4, 0x7bf5, 0x7bf6, 0x7bf7, + 0x7bf8, 0x7bf9, 0x7bfa, 0x7bfb, 0x7bfc, 0x7bfd, 0x7bfe, 0x7bff, + 0x7c00, 0x7c01, 0x7c02, 0x7c03, 0x7c04, 0x7c05, 0x7c06, 0x7c07, + 0x7c08, 0x7c09, 0x7c0a, 0x7c0b, 0x7c0c, 0x7c0d, 0x7c0e, 0x7c0f, + 0x7c10, 0x7c11, 0x7c12, 0x7c13, 0x7c14, 0x7c15, 0x7c16, 0x7c17, + 0x7c18, 0x7c19, 0x7c1a, 0x7c1b, 0x7c1c, 0x7c1d, 0x7c1e, 0x7c1f, + 0x7c20, 0x7c21, 0x7c22, 0x7c23, 0x7c24, 0x7c25, 0x7c26, 0x7c27, + 0x7c28, 0x7c29, 0x7c2a, 0x7c2b, 0x7c2c, 0x7c2d, 0x7c2e, 0x7c2f, + 0x7c30, 0x7c31, 0x7c32, 0x7c33, 0x7c34, 0x7c35, 0x7c36, 0x7c37, + 0x7c38, 0x7c39, 0x7c3a, 0x7c3b, 0x7c3c, 0x7c3d, 0x7c3e, 0x7c3f, + 0x7c40, 0x7c41, 0x7c42, 0x7c43, 0x7c44, 0x7c45, 0x7c46, 0x7c47, + 0x7c48, 0x7c49, 0x7c4a, 0x7c4b, 0x7c4c, 0x7c4d, 0x7c4e, 0x7c4f, + 0x7c50, 0x7c51, 0x7c52, 0x7c53, 0x7c54, 0x7c55, 0x7c56, 0x7c57, + 0x7c58, 0x7c59, 0x7c5a, 0x7c5b, 0x7c5c, 0x7c5d, 0x7c5e, 0x7c5f, + 0x7c60, 0x7c61, 0x7c62, 0x7c63, 0x7c64, 0x7c65, 0x7c66, 0x7c67, + 0x7c68, 0x7c69, 0x7c6a, 0x7c6b, 0x7c6c, 0x7c6d, 0x7c6e, 0x7c6f, + 0x7c70, 0x7c71, 0x7c72, 0x7c73, 0x7c74, 0x7c75, 0x7c76, 0x7c77, + 0x7c78, 0x7c79, 0x7c7a, 0x7c7b, 0x7c7c, 0x7c7d, 0x7c7e, 0x7c7f, + 0x7c80, 0x7c81, 0x7c82, 0x7c83, 0x7c84, 0x7c85, 0x7c86, 0x7c87, + 0x7c88, 0x7c89, 0x7c8a, 0x7c8b, 0x7c8c, 0x7c8d, 0x7c8e, 0x7c8f, + 0x7c90, 0x7c91, 0x7c92, 0x7c93, 0x7c94, 0x7c95, 0x7c96, 0x7c97, + 0x7c98, 0x7c99, 0x7c9a, 0x7c9b, 0x7c9c, 0x7c9d, 0x7c9e, 0x7c9f, + 0x7ca0, 0x7ca1, 0x7ca2, 0x7ca3, 0x7ca4, 0x7ca5, 0x7ca6, 0x7ca7, + 0x7ca8, 0x7ca9, 0x7caa, 0x7cab, 0x7cac, 0x7cad, 0x7cae, 0x7caf, + 0x7cb0, 0x7cb1, 0x7cb2, 0x7cb3, 0x7cb4, 0x7cb5, 0x7cb6, 0x7cb7, + 0x7cb8, 0x7cb9, 0x7cba, 0x7cbb, 0x7cbc, 0x7cbd, 0x7cbe, 0x7cbf, + 0x7cc0, 0x7cc1, 0x7cc2, 0x7cc3, 0x7cc4, 0x7cc5, 0x7cc6, 0x7cc7, + 0x7cc8, 0x7cc9, 0x7cca, 0x7ccb, 0x7ccc, 0x7ccd, 0x7cce, 0x7ccf, + 0x7cd0, 0x7cd1, 0x7cd2, 0x7cd3, 0x7cd4, 0x7cd5, 0x7cd6, 0x7cd7, + 0x7cd8, 0x7cd9, 0x7cda, 0x7cdb, 0x7cdc, 0x7cdd, 0x7cde, 0x7cdf, + 0x7ce0, 0x7ce1, 0x7ce2, 0x7ce3, 0x7ce4, 0x7ce5, 0x7ce6, 0x7ce7, + 0x7ce8, 0x7ce9, 0x7cea, 0x7ceb, 0x7cec, 0x7ced, 0x7cee, 0x7cef, + 0x7cf0, 0x7cf1, 0x7cf2, 0x7cf3, 0x7cf4, 0x7cf5, 0x7cf6, 0x7cf7, + 0x7cf8, 0x7cf9, 0x7cfa, 0x7cfb, 0x7cfc, 0x7cfd, 0x7cfe, 0x7cff, + 0x7d00, 0x7d01, 0x7d02, 0x7d03, 0x7d04, 0x7d05, 0x7d06, 0x7d07, + 0x7d08, 0x7d09, 0x7d0a, 0x7d0b, 0x7d0c, 0x7d0d, 0x7d0e, 0x7d0f, + 0x7d10, 0x7d11, 0x7d12, 0x7d13, 0x7d14, 0x7d15, 0x7d16, 0x7d17, + 0x7d18, 0x7d19, 0x7d1a, 0x7d1b, 0x7d1c, 0x7d1d, 0x7d1e, 0x7d1f, + 0x7d20, 0x7d21, 0x7d22, 0x7d23, 0x7d24, 0x7d25, 0x7d26, 0x7d27, + 0x7d28, 0x7d29, 0x7d2a, 0x7d2b, 0x7d2c, 0x7d2d, 0x7d2e, 0x7d2f, + 0x7d30, 0x7d31, 0x7d32, 0x7d33, 0x7d34, 0x7d35, 0x7d36, 0x7d37, + 0x7d38, 0x7d39, 0x7d3a, 0x7d3b, 0x7d3c, 0x7d3d, 0x7d3e, 0x7d3f, + 0x7d40, 0x7d41, 0x7d42, 0x7d43, 0x7d44, 0x7d45, 0x7d46, 0x7d47, + 0x7d48, 0x7d49, 0x7d4a, 0x7d4b, 0x7d4c, 0x7d4d, 0x7d4e, 0x7d4f, + 0x7d50, 0x7d51, 0x7d52, 0x7d53, 0x7d54, 0x7d55, 0x7d56, 0x7d57, + 0x7d58, 0x7d59, 0x7d5a, 0x7d5b, 0x7d5c, 0x7d5d, 0x7d5e, 0x7d5f, + 0x7d60, 0x7d61, 0x7d62, 0x7d63, 0x7d64, 0x7d65, 0x7d66, 0x7d67, + 0x7d68, 0x7d69, 0x7d6a, 0x7d6b, 0x7d6c, 0x7d6d, 0x7d6e, 0x7d6f, + 0x7d70, 0x7d71, 0x7d72, 0x7d73, 0x7d74, 0x7d75, 0x7d76, 0x7d77, + 0x7d78, 0x7d79, 0x7d7a, 0x7d7b, 0x7d7c, 0x7d7d, 0x7d7e, 0x7d7f, + 0x7d80, 0x7d81, 0x7d82, 0x7d83, 0x7d84, 0x7d85, 0x7d86, 0x7d87, + 0x7d88, 0x7d89, 0x7d8a, 0x7d8b, 0x7d8c, 0x7d8d, 0x7d8e, 0x7d8f, + 0x7d90, 0x7d91, 0x7d92, 0x7d93, 0x7d94, 0x7d95, 0x7d96, 0x7d97, + 0x7d98, 0x7d99, 0x7d9a, 0x7d9b, 0x7d9c, 0x7d9d, 0x7d9e, 0x7d9f, + 0x7da0, 0x7da1, 0x7da2, 0x7da3, 0x7da4, 0x7da5, 0x7da6, 0x7da7, + 0x7da8, 0x7da9, 0x7daa, 0x7dab, 0x7dac, 0x7dad, 0x7dae, 0x7daf, + 0x7db0, 0x7db1, 0x7db2, 0x7db3, 0x7db4, 0x7db5, 0x7db6, 0x7db7, + 0x7db8, 0x7db9, 0x7dba, 0x7dbb, 0x7dbc, 0x7dbd, 0x7dbe, 0x7dbf, + 0x7dc0, 0x7dc1, 0x7dc2, 0x7dc3, 0x7dc4, 0x7dc5, 0x7dc6, 0x7dc7, + 0x7dc8, 0x7dc9, 0x7dca, 0x7dcb, 0x7dcc, 0x7dcd, 0x7dce, 0x7dcf, + 0x7dd0, 0x7dd1, 0x7dd2, 0x7dd3, 0x7dd4, 0x7dd5, 0x7dd6, 0x7dd7, + 0x7dd8, 0x7dd9, 0x7dda, 0x7ddb, 0x7ddc, 0x7ddd, 0x7dde, 0x7ddf, + 0x7de0, 0x7de1, 0x7de2, 0x7de3, 0x7de4, 0x7de5, 0x7de6, 0x7de7, + 0x7de8, 0x7de9, 0x7dea, 0x7deb, 0x7dec, 0x7ded, 0x7dee, 0x7def, + 0x7df0, 0x7df1, 0x7df2, 0x7df3, 0x7df4, 0x7df5, 0x7df6, 0x7df7, + 0x7df8, 0x7df9, 0x7dfa, 0x7dfb, 0x7dfc, 0x7dfd, 0x7dfe, 0x7dff, + 0x7e00, 0x7e01, 0x7e02, 0x7e03, 0x7e04, 0x7e05, 0x7e06, 0x7e07, + 0x7e08, 0x7e09, 0x7e0a, 0x7e0b, 0x7e0c, 0x7e0d, 0x7e0e, 0x7e0f, + 0x7e10, 0x7e11, 0x7e12, 0x7e13, 0x7e14, 0x7e15, 0x7e16, 0x7e17, + 0x7e18, 0x7e19, 0x7e1a, 0x7e1b, 0x7e1c, 0x7e1d, 0x7e1e, 0x7e1f, + 0x7e20, 0x7e21, 0x7e22, 0x7e23, 0x7e24, 0x7e25, 0x7e26, 0x7e27, + 0x7e28, 0x7e29, 0x7e2a, 0x7e2b, 0x7e2c, 0x7e2d, 0x7e2e, 0x7e2f, + 0x7e30, 0x7e31, 0x7e32, 0x7e33, 0x7e34, 0x7e35, 0x7e36, 0x7e37, + 0x7e38, 0x7e39, 0x7e3a, 0x7e3b, 0x7e3c, 0x7e3d, 0x7e3e, 0x7e3f, + 0x7e40, 0x7e41, 0x7e42, 0x7e43, 0x7e44, 0x7e45, 0x7e46, 0x7e47, + 0x7e48, 0x7e49, 0x7e4a, 0x7e4b, 0x7e4c, 0x7e4d, 0x7e4e, 0x7e4f, + 0x7e50, 0x7e51, 0x7e52, 0x7e53, 0x7e54, 0x7e55, 0x7e56, 0x7e57, + 0x7e58, 0x7e59, 0x7e5a, 0x7e5b, 0x7e5c, 0x7e5d, 0x7e5e, 0x7e5f, + 0x7e60, 0x7e61, 0x7e62, 0x7e63, 0x7e64, 0x7e65, 0x7e66, 0x7e67, + 0x7e68, 0x7e69, 0x7e6a, 0x7e6b, 0x7e6c, 0x7e6d, 0x7e6e, 0x7e6f, + 0x7e70, 0x7e71, 0x7e72, 0x7e73, 0x7e74, 0x7e75, 0x7e76, 0x7e77, + 0x7e78, 0x7e79, 0x7e7a, 0x7e7b, 0x7e7c, 0x7e7d, 0x7e7e, 0x7e7f, + 0x7e80, 0x7e81, 0x7e82, 0x7e83, 0x7e84, 0x7e85, 0x7e86, 0x7e87, + 0x7e88, 0x7e89, 0x7e8a, 0x7e8b, 0x7e8c, 0x7e8d, 0x7e8e, 0x7e8f, + 0x7e90, 0x7e91, 0x7e92, 0x7e93, 0x7e94, 0x7e95, 0x7e96, 0x7e97, + 0x7e98, 0x7e99, 0x7e9a, 0x7e9b, 0x7e9c, 0x7e9d, 0x7e9e, 0x7e9f, + 0x7ea0, 0x7ea1, 0x7ea2, 0x7ea3, 0x7ea4, 0x7ea5, 0x7ea6, 0x7ea7, + 0x7ea8, 0x7ea9, 0x7eaa, 0x7eab, 0x7eac, 0x7ead, 0x7eae, 0x7eaf, + 0x7eb0, 0x7eb1, 0x7eb2, 0x7eb3, 0x7eb4, 0x7eb5, 0x7eb6, 0x7eb7, + 0x7eb8, 0x7eb9, 0x7eba, 0x7ebb, 0x7ebc, 0x7ebd, 0x7ebe, 0x7ebf, + 0x7ec0, 0x7ec1, 0x7ec2, 0x7ec3, 0x7ec4, 0x7ec5, 0x7ec6, 0x7ec7, + 0x7ec8, 0x7ec9, 0x7eca, 0x7ecb, 0x7ecc, 0x7ecd, 0x7ece, 0x7ecf, + 0x7ed0, 0x7ed1, 0x7ed2, 0x7ed3, 0x7ed4, 0x7ed5, 0x7ed6, 0x7ed7, + 0x7ed8, 0x7ed9, 0x7eda, 0x7edb, 0x7edc, 0x7edd, 0x7ede, 0x7edf, + 0x7ee0, 0x7ee1, 0x7ee2, 0x7ee3, 0x7ee4, 0x7ee5, 0x7ee6, 0x7ee7, + 0x7ee8, 0x7ee9, 0x7eea, 0x7eeb, 0x7eec, 0x7eed, 0x7eee, 0x7eef, + 0x7ef0, 0x7ef1, 0x7ef2, 0x7ef3, 0x7ef4, 0x7ef5, 0x7ef6, 0x7ef7, + 0x7ef8, 0x7ef9, 0x7efa, 0x7efb, 0x7efc, 0x7efd, 0x7efe, 0x7eff, + 0x7f00, 0x7f01, 0x7f02, 0x7f03, 0x7f04, 0x7f05, 0x7f06, 0x7f07, + 0x7f08, 0x7f09, 0x7f0a, 0x7f0b, 0x7f0c, 0x7f0d, 0x7f0e, 0x7f0f, + 0x7f10, 0x7f11, 0x7f12, 0x7f13, 0x7f14, 0x7f15, 0x7f16, 0x7f17, + 0x7f18, 0x7f19, 0x7f1a, 0x7f1b, 0x7f1c, 0x7f1d, 0x7f1e, 0x7f1f, + 0x7f20, 0x7f21, 0x7f22, 0x7f23, 0x7f24, 0x7f25, 0x7f26, 0x7f27, + 0x7f28, 0x7f29, 0x7f2a, 0x7f2b, 0x7f2c, 0x7f2d, 0x7f2e, 0x7f2f, + 0x7f30, 0x7f31, 0x7f32, 0x7f33, 0x7f34, 0x7f35, 0x7f36, 0x7f37, + 0x7f38, 0x7f39, 0x7f3a, 0x7f3b, 0x7f3c, 0x7f3d, 0x7f3e, 0x7f3f, + 0x7f40, 0x7f41, 0x7f42, 0x7f43, 0x7f44, 0x7f45, 0x7f46, 0x7f47, + 0x7f48, 0x7f49, 0x7f4a, 0x7f4b, 0x7f4c, 0x7f4d, 0x7f4e, 0x7f4f, + 0x7f50, 0x7f51, 0x7f52, 0x7f53, 0x7f54, 0x7f55, 0x7f56, 0x7f57, + 0x7f58, 0x7f59, 0x7f5a, 0x7f5b, 0x7f5c, 0x7f5d, 0x7f5e, 0x7f5f, + 0x7f60, 0x7f61, 0x7f62, 0x7f63, 0x7f64, 0x7f65, 0x7f66, 0x7f67, + 0x7f68, 0x7f69, 0x7f6a, 0x7f6b, 0x7f6c, 0x7f6d, 0x7f6e, 0x7f6f, + 0x7f70, 0x7f71, 0x7f72, 0x7f73, 0x7f74, 0x7f75, 0x7f76, 0x7f77, + 0x7f78, 0x7f79, 0x7f7a, 0x7f7b, 0x7f7c, 0x7f7d, 0x7f7e, 0x7f7f, + 0x7f80, 0x7f81, 0x7f82, 0x7f83, 0x7f84, 0x7f85, 0x7f86, 0x7f87, + 0x7f88, 0x7f89, 0x7f8a, 0x7f8b, 0x7f8c, 0x7f8d, 0x7f8e, 0x7f8f, + 0x7f90, 0x7f91, 0x7f92, 0x7f93, 0x7f94, 0x7f95, 0x7f96, 0x7f97, + 0x7f98, 0x7f99, 0x7f9a, 0x7f9b, 0x7f9c, 0x7f9d, 0x7f9e, 0x7f9f, + 0x7fa0, 0x7fa1, 0x7fa2, 0x7fa3, 0x7fa4, 0x7fa5, 0x7fa6, 0x7fa7, + 0x7fa8, 0x7fa9, 0x7faa, 0x7fab, 0x7fac, 0x7fad, 0x7fae, 0x7faf, + 0x7fb0, 0x7fb1, 0x7fb2, 0x7fb3, 0x7fb4, 0x7fb5, 0x7fb6, 0x7fb7, + 0x7fb8, 0x7fb9, 0x7fba, 0x7fbb, 0x7fbc, 0x7fbd, 0x7fbe, 0x7fbf, + 0x7fc0, 0x7fc1, 0x7fc2, 0x7fc3, 0x7fc4, 0x7fc5, 0x7fc6, 0x7fc7, + 0x7fc8, 0x7fc9, 0x7fca, 0x7fcb, 0x7fcc, 0x7fcd, 0x7fce, 0x7fcf, + 0x7fd0, 0x7fd1, 0x7fd2, 0x7fd3, 0x7fd4, 0x7fd5, 0x7fd6, 0x7fd7, + 0x7fd8, 0x7fd9, 0x7fda, 0x7fdb, 0x7fdc, 0x7fdd, 0x7fde, 0x7fdf, + 0x7fe0, 0x7fe1, 0x7fe2, 0x7fe3, 0x7fe4, 0x7fe5, 0x7fe6, 0x7fe7, + 0x7fe8, 0x7fe9, 0x7fea, 0x7feb, 0x7fec, 0x7fed, 0x7fee, 0x7fef, + 0x7ff0, 0x7ff1, 0x7ff2, 0x7ff3, 0x7ff4, 0x7ff5, 0x7ff6, 0x7ff7, + 0x7ff8, 0x7ff9, 0x7ffa, 0x7ffb, 0x7ffc, 0x7ffd, 0x7ffe, 0x7fff, + 0x8000, 0x8001, 0x8002, 0x8003, 0x8004, 0x8005, 0x8006, 0x8007, + 0x8008, 0x8009, 0x800a, 0x800b, 0x800c, 0x800d, 0x800e, 0x800f, + 0x8010, 0x8011, 0x8012, 0x8013, 0x8014, 0x8015, 0x8016, 0x8017, + 0x8018, 0x8019, 0x801a, 0x801b, 0x801c, 0x801d, 0x801e, 0x801f, + 0x8020, 0x8021, 0x8022, 0x8023, 0x8024, 0x8025, 0x8026, 0x8027, + 0x8028, 0x8029, 0x802a, 0x802b, 0x802c, 0x802d, 0x802e, 0x802f, + 0x8030, 0x8031, 0x8032, 0x8033, 0x8034, 0x8035, 0x8036, 0x8037, + 0x8038, 0x8039, 0x803a, 0x803b, 0x803c, 0x803d, 0x803e, 0x803f, + 0x8040, 0x8041, 0x8042, 0x8043, 0x8044, 0x8045, 0x8046, 0x8047, + 0x8048, 0x8049, 0x804a, 0x804b, 0x804c, 0x804d, 0x804e, 0x804f, + 0x8050, 0x8051, 0x8052, 0x8053, 0x8054, 0x8055, 0x8056, 0x8057, + 0x8058, 0x8059, 0x805a, 0x805b, 0x805c, 0x805d, 0x805e, 0x805f, + 0x8060, 0x8061, 0x8062, 0x8063, 0x8064, 0x8065, 0x8066, 0x8067, + 0x8068, 0x8069, 0x806a, 0x806b, 0x806c, 0x806d, 0x806e, 0x806f, + 0x8070, 0x8071, 0x8072, 0x8073, 0x8074, 0x8075, 0x8076, 0x8077, + 0x8078, 0x8079, 0x807a, 0x807b, 0x807c, 0x807d, 0x807e, 0x807f, + 0x8080, 0x8081, 0x8082, 0x8083, 0x8084, 0x8085, 0x8086, 0x8087, + 0x8088, 0x8089, 0x808a, 0x808b, 0x808c, 0x808d, 0x808e, 0x808f, + 0x8090, 0x8091, 0x8092, 0x8093, 0x8094, 0x8095, 0x8096, 0x8097, + 0x8098, 0x8099, 0x809a, 0x809b, 0x809c, 0x809d, 0x809e, 0x809f, + 0x80a0, 0x80a1, 0x80a2, 0x80a3, 0x80a4, 0x80a5, 0x80a6, 0x80a7, + 0x80a8, 0x80a9, 0x80aa, 0x80ab, 0x80ac, 0x80ad, 0x80ae, 0x80af, + 0x80b0, 0x80b1, 0x80b2, 0x80b3, 0x80b4, 0x80b5, 0x80b6, 0x80b7, + 0x80b8, 0x80b9, 0x80ba, 0x80bb, 0x80bc, 0x80bd, 0x80be, 0x80bf, + 0x80c0, 0x80c1, 0x80c2, 0x80c3, 0x80c4, 0x80c5, 0x80c6, 0x80c7, + 0x80c8, 0x80c9, 0x80ca, 0x80cb, 0x80cc, 0x80cd, 0x80ce, 0x80cf, + 0x80d0, 0x80d1, 0x80d2, 0x80d3, 0x80d4, 0x80d5, 0x80d6, 0x80d7, + 0x80d8, 0x80d9, 0x80da, 0x80db, 0x80dc, 0x80dd, 0x80de, 0x80df, + 0x80e0, 0x80e1, 0x80e2, 0x80e3, 0x80e4, 0x80e5, 0x80e6, 0x80e7, + 0x80e8, 0x80e9, 0x80ea, 0x80eb, 0x80ec, 0x80ed, 0x80ee, 0x80ef, + 0x80f0, 0x80f1, 0x80f2, 0x80f3, 0x80f4, 0x80f5, 0x80f6, 0x80f7, + 0x80f8, 0x80f9, 0x80fa, 0x80fb, 0x80fc, 0x80fd, 0x80fe, 0x80ff, + 0x8100, 0x8101, 0x8102, 0x8103, 0x8104, 0x8105, 0x8106, 0x8107, + 0x8108, 0x8109, 0x810a, 0x810b, 0x810c, 0x810d, 0x810e, 0x810f, + 0x8110, 0x8111, 0x8112, 0x8113, 0x8114, 0x8115, 0x8116, 0x8117, + 0x8118, 0x8119, 0x811a, 0x811b, 0x811c, 0x811d, 0x811e, 0x811f, + 0x8120, 0x8121, 0x8122, 0x8123, 0x8124, 0x8125, 0x8126, 0x8127, + 0x8128, 0x8129, 0x812a, 0x812b, 0x812c, 0x812d, 0x812e, 0x812f, + 0x8130, 0x8131, 0x8132, 0x8133, 0x8134, 0x8135, 0x8136, 0x8137, + 0x8138, 0x8139, 0x813a, 0x813b, 0x813c, 0x813d, 0x813e, 0x813f, + 0x8140, 0x8141, 0x8142, 0x8143, 0x8144, 0x8145, 0x8146, 0x8147, + 0x8148, 0x8149, 0x814a, 0x814b, 0x814c, 0x814d, 0x814e, 0x814f, + 0x8150, 0x8151, 0x8152, 0x8153, 0x8154, 0x8155, 0x8156, 0x8157, + 0x8158, 0x8159, 0x815a, 0x815b, 0x815c, 0x815d, 0x815e, 0x815f, + 0x8160, 0x8161, 0x8162, 0x8163, 0x8164, 0x8165, 0x8166, 0x8167, + 0x8168, 0x8169, 0x816a, 0x816b, 0x816c, 0x816d, 0x816e, 0x816f, + 0x8170, 0x8171, 0x8172, 0x8173, 0x8174, 0x8175, 0x8176, 0x8177, + 0x8178, 0x8179, 0x817a, 0x817b, 0x817c, 0x817d, 0x817e, 0x817f, + 0x8180, 0x8181, 0x8182, 0x8183, 0x8184, 0x8185, 0x8186, 0x8187, + 0x8188, 0x8189, 0x818a, 0x818b, 0x818c, 0x818d, 0x818e, 0x818f, + 0x8190, 0x8191, 0x8192, 0x8193, 0x8194, 0x8195, 0x8196, 0x8197, + 0x8198, 0x8199, 0x819a, 0x819b, 0x819c, 0x819d, 0x819e, 0x819f, + 0x81a0, 0x81a1, 0x81a2, 0x81a3, 0x81a4, 0x81a5, 0x81a6, 0x81a7, + 0x81a8, 0x81a9, 0x81aa, 0x81ab, 0x81ac, 0x81ad, 0x81ae, 0x81af, + 0x81b0, 0x81b1, 0x81b2, 0x81b3, 0x81b4, 0x81b5, 0x81b6, 0x81b7, + 0x81b8, 0x81b9, 0x81ba, 0x81bb, 0x81bc, 0x81bd, 0x81be, 0x81bf, + 0x81c0, 0x81c1, 0x81c2, 0x81c3, 0x81c4, 0x81c5, 0x81c6, 0x81c7, + 0x81c8, 0x81c9, 0x81ca, 0x81cb, 0x81cc, 0x81cd, 0x81ce, 0x81cf, + 0x81d0, 0x81d1, 0x81d2, 0x81d3, 0x81d4, 0x81d5, 0x81d6, 0x81d7, + 0x81d8, 0x81d9, 0x81da, 0x81db, 0x81dc, 0x81dd, 0x81de, 0x81df, + 0x81e0, 0x81e1, 0x81e2, 0x81e3, 0x81e4, 0x81e5, 0x81e6, 0x81e7, + 0x81e8, 0x81e9, 0x81ea, 0x81eb, 0x81ec, 0x81ed, 0x81ee, 0x81ef, + 0x81f0, 0x81f1, 0x81f2, 0x81f3, 0x81f4, 0x81f5, 0x81f6, 0x81f7, + 0x81f8, 0x81f9, 0x81fa, 0x81fb, 0x81fc, 0x81fd, 0x81fe, 0x81ff, + 0x8200, 0x8201, 0x8202, 0x8203, 0x8204, 0x8205, 0x8206, 0x8207, + 0x8208, 0x8209, 0x820a, 0x820b, 0x820c, 0x820d, 0x820e, 0x820f, + 0x8210, 0x8211, 0x8212, 0x8213, 0x8214, 0x8215, 0x8216, 0x8217, + 0x8218, 0x8219, 0x821a, 0x821b, 0x821c, 0x821d, 0x821e, 0x821f, + 0x8220, 0x8221, 0x8222, 0x8223, 0x8224, 0x8225, 0x8226, 0x8227, + 0x8228, 0x8229, 0x822a, 0x822b, 0x822c, 0x822d, 0x822e, 0x822f, + 0x8230, 0x8231, 0x8232, 0x8233, 0x8234, 0x8235, 0x8236, 0x8237, + 0x8238, 0x8239, 0x823a, 0x823b, 0x823c, 0x823d, 0x823e, 0x823f, + 0x8240, 0x8241, 0x8242, 0x8243, 0x8244, 0x8245, 0x8246, 0x8247, + 0x8248, 0x8249, 0x824a, 0x824b, 0x824c, 0x824d, 0x824e, 0x824f, + 0x8250, 0x8251, 0x8252, 0x8253, 0x8254, 0x8255, 0x8256, 0x8257, + 0x8258, 0x8259, 0x825a, 0x825b, 0x825c, 0x825d, 0x825e, 0x825f, + 0x8260, 0x8261, 0x8262, 0x8263, 0x8264, 0x8265, 0x8266, 0x8267, + 0x8268, 0x8269, 0x826a, 0x826b, 0x826c, 0x826d, 0x826e, 0x826f, + 0x8270, 0x8271, 0x8272, 0x8273, 0x8274, 0x8275, 0x8276, 0x8277, + 0x8278, 0x8279, 0x827a, 0x827b, 0x827c, 0x827d, 0x827e, 0x827f, + 0x8280, 0x8281, 0x8282, 0x8283, 0x8284, 0x8285, 0x8286, 0x8287, + 0x8288, 0x8289, 0x828a, 0x828b, 0x828c, 0x828d, 0x828e, 0x828f, + 0x8290, 0x8291, 0x8292, 0x8293, 0x8294, 0x8295, 0x8296, 0x8297, + 0x8298, 0x8299, 0x829a, 0x829b, 0x829c, 0x829d, 0x829e, 0x829f, + 0x82a0, 0x82a1, 0x82a2, 0x82a3, 0x82a4, 0x82a5, 0x82a6, 0x82a7, + 0x82a8, 0x82a9, 0x82aa, 0x82ab, 0x82ac, 0x82ad, 0x82ae, 0x82af, + 0x82b0, 0x82b1, 0x82b2, 0x82b3, 0x82b4, 0x82b5, 0x82b6, 0x82b7, + 0x82b8, 0x82b9, 0x82ba, 0x82bb, 0x82bc, 0x82bd, 0x82be, 0x82bf, + 0x82c0, 0x82c1, 0x82c2, 0x82c3, 0x82c4, 0x82c5, 0x82c6, 0x82c7, + 0x82c8, 0x82c9, 0x82ca, 0x82cb, 0x82cc, 0x82cd, 0x82ce, 0x82cf, + 0x82d0, 0x82d1, 0x82d2, 0x82d3, 0x82d4, 0x82d5, 0x82d6, 0x82d7, + 0x82d8, 0x82d9, 0x82da, 0x82db, 0x82dc, 0x82dd, 0x82de, 0x82df, + 0x82e0, 0x82e1, 0x82e2, 0x82e3, 0x82e4, 0x82e5, 0x82e6, 0x82e7, + 0x82e8, 0x82e9, 0x82ea, 0x82eb, 0x82ec, 0x82ed, 0x82ee, 0x82ef, + 0x82f0, 0x82f1, 0x82f2, 0x82f3, 0x82f4, 0x82f5, 0x82f6, 0x82f7, + 0x82f8, 0x82f9, 0x82fa, 0x82fb, 0x82fc, 0x82fd, 0x82fe, 0x82ff, + 0x8300, 0x8301, 0x8302, 0x8303, 0x8304, 0x8305, 0x8306, 0x8307, + 0x8308, 0x8309, 0x830a, 0x830b, 0x830c, 0x830d, 0x830e, 0x830f, + 0x8310, 0x8311, 0x8312, 0x8313, 0x8314, 0x8315, 0x8316, 0x8317, + 0x8318, 0x8319, 0x831a, 0x831b, 0x831c, 0x831d, 0x831e, 0x831f, + 0x8320, 0x8321, 0x8322, 0x8323, 0x8324, 0x8325, 0x8326, 0x8327, + 0x8328, 0x8329, 0x832a, 0x832b, 0x832c, 0x832d, 0x832e, 0x832f, + 0x8330, 0x8331, 0x8332, 0x8333, 0x8334, 0x8335, 0x8336, 0x8337, + 0x8338, 0x8339, 0x833a, 0x833b, 0x833c, 0x833d, 0x833e, 0x833f, + 0x8340, 0x8341, 0x8342, 0x8343, 0x8344, 0x8345, 0x8346, 0x8347, + 0x8348, 0x8349, 0x834a, 0x834b, 0x834c, 0x834d, 0x834e, 0x834f, + 0x8350, 0x8351, 0x8352, 0x8353, 0x8354, 0x8355, 0x8356, 0x8357, + 0x8358, 0x8359, 0x835a, 0x835b, 0x835c, 0x835d, 0x835e, 0x835f, + 0x8360, 0x8361, 0x8362, 0x8363, 0x8364, 0x8365, 0x8366, 0x8367, + 0x8368, 0x8369, 0x836a, 0x836b, 0x836c, 0x836d, 0x836e, 0x836f, + 0x8370, 0x8371, 0x8372, 0x8373, 0x8374, 0x8375, 0x8376, 0x8377, + 0x8378, 0x8379, 0x837a, 0x837b, 0x837c, 0x837d, 0x837e, 0x837f, + 0x8380, 0x8381, 0x8382, 0x8383, 0x8384, 0x8385, 0x8386, 0x8387, + 0x8388, 0x8389, 0x838a, 0x838b, 0x838c, 0x838d, 0x838e, 0x838f, + 0x8390, 0x8391, 0x8392, 0x8393, 0x8394, 0x8395, 0x8396, 0x8397, + 0x8398, 0x8399, 0x839a, 0x839b, 0x839c, 0x839d, 0x839e, 0x839f, + 0x83a0, 0x83a1, 0x83a2, 0x83a3, 0x83a4, 0x83a5, 0x83a6, 0x83a7, + 0x83a8, 0x83a9, 0x83aa, 0x83ab, 0x83ac, 0x83ad, 0x83ae, 0x83af, + 0x83b0, 0x83b1, 0x83b2, 0x83b3, 0x83b4, 0x83b5, 0x83b6, 0x83b7, + 0x83b8, 0x83b9, 0x83ba, 0x83bb, 0x83bc, 0x83bd, 0x83be, 0x83bf, + 0x83c0, 0x83c1, 0x83c2, 0x83c3, 0x83c4, 0x83c5, 0x83c6, 0x83c7, + 0x83c8, 0x83c9, 0x83ca, 0x83cb, 0x83cc, 0x83cd, 0x83ce, 0x83cf, + 0x83d0, 0x83d1, 0x83d2, 0x83d3, 0x83d4, 0x83d5, 0x83d6, 0x83d7, + 0x83d8, 0x83d9, 0x83da, 0x83db, 0x83dc, 0x83dd, 0x83de, 0x83df, + 0x83e0, 0x83e1, 0x83e2, 0x83e3, 0x83e4, 0x83e5, 0x83e6, 0x83e7, + 0x83e8, 0x83e9, 0x83ea, 0x83eb, 0x83ec, 0x83ed, 0x83ee, 0x83ef, + 0x83f0, 0x83f1, 0x83f2, 0x83f3, 0x83f4, 0x83f5, 0x83f6, 0x83f7, + 0x83f8, 0x83f9, 0x83fa, 0x83fb, 0x83fc, 0x83fd, 0x83fe, 0x83ff, + 0x8400, 0x8401, 0x8402, 0x8403, 0x8404, 0x8405, 0x8406, 0x8407, + 0x8408, 0x8409, 0x840a, 0x840b, 0x840c, 0x840d, 0x840e, 0x840f, + 0x8410, 0x8411, 0x8412, 0x8413, 0x8414, 0x8415, 0x8416, 0x8417, + 0x8418, 0x8419, 0x841a, 0x841b, 0x841c, 0x841d, 0x841e, 0x841f, + 0x8420, 0x8421, 0x8422, 0x8423, 0x8424, 0x8425, 0x8426, 0x8427, + 0x8428, 0x8429, 0x842a, 0x842b, 0x842c, 0x842d, 0x842e, 0x842f, + 0x8430, 0x8431, 0x8432, 0x8433, 0x8434, 0x8435, 0x8436, 0x8437, + 0x8438, 0x8439, 0x843a, 0x843b, 0x843c, 0x843d, 0x843e, 0x843f, + 0x8440, 0x8441, 0x8442, 0x8443, 0x8444, 0x8445, 0x8446, 0x8447, + 0x8448, 0x8449, 0x844a, 0x844b, 0x844c, 0x844d, 0x844e, 0x844f, + 0x8450, 0x8451, 0x8452, 0x8453, 0x8454, 0x8455, 0x8456, 0x8457, + 0x8458, 0x8459, 0x845a, 0x845b, 0x845c, 0x845d, 0x845e, 0x845f, + 0x8460, 0x8461, 0x8462, 0x8463, 0x8464, 0x8465, 0x8466, 0x8467, + 0x8468, 0x8469, 0x846a, 0x846b, 0x846c, 0x846d, 0x846e, 0x846f, + 0x8470, 0x8471, 0x8472, 0x8473, 0x8474, 0x8475, 0x8476, 0x8477, + 0x8478, 0x8479, 0x847a, 0x847b, 0x847c, 0x847d, 0x847e, 0x847f, + 0x8480, 0x8481, 0x8482, 0x8483, 0x8484, 0x8485, 0x8486, 0x8487, + 0x8488, 0x8489, 0x848a, 0x848b, 0x848c, 0x848d, 0x848e, 0x848f, + 0x8490, 0x8491, 0x8492, 0x8493, 0x8494, 0x8495, 0x8496, 0x8497, + 0x8498, 0x8499, 0x849a, 0x849b, 0x849c, 0x849d, 0x849e, 0x849f, + 0x84a0, 0x84a1, 0x84a2, 0x84a3, 0x84a4, 0x84a5, 0x84a6, 0x84a7, + 0x84a8, 0x84a9, 0x84aa, 0x84ab, 0x84ac, 0x84ad, 0x84ae, 0x84af, + 0x84b0, 0x84b1, 0x84b2, 0x84b3, 0x84b4, 0x84b5, 0x84b6, 0x84b7, + 0x84b8, 0x84b9, 0x84ba, 0x84bb, 0x84bc, 0x84bd, 0x84be, 0x84bf, + 0x84c0, 0x84c1, 0x84c2, 0x84c3, 0x84c4, 0x84c5, 0x84c6, 0x84c7, + 0x84c8, 0x84c9, 0x84ca, 0x84cb, 0x84cc, 0x84cd, 0x84ce, 0x84cf, + 0x84d0, 0x84d1, 0x84d2, 0x84d3, 0x84d4, 0x84d5, 0x84d6, 0x84d7, + 0x84d8, 0x84d9, 0x84da, 0x84db, 0x84dc, 0x84dd, 0x84de, 0x84df, + 0x84e0, 0x84e1, 0x84e2, 0x84e3, 0x84e4, 0x84e5, 0x84e6, 0x84e7, + 0x84e8, 0x84e9, 0x84ea, 0x84eb, 0x84ec, 0x84ed, 0x84ee, 0x84ef, + 0x84f0, 0x84f1, 0x84f2, 0x84f3, 0x84f4, 0x84f5, 0x84f6, 0x84f7, + 0x84f8, 0x84f9, 0x84fa, 0x84fb, 0x84fc, 0x84fd, 0x84fe, 0x84ff, + 0x8500, 0x8501, 0x8502, 0x8503, 0x8504, 0x8505, 0x8506, 0x8507, + 0x8508, 0x8509, 0x850a, 0x850b, 0x850c, 0x850d, 0x850e, 0x850f, + 0x8510, 0x8511, 0x8512, 0x8513, 0x8514, 0x8515, 0x8516, 0x8517, + 0x8518, 0x8519, 0x851a, 0x851b, 0x851c, 0x851d, 0x851e, 0x851f, + 0x8520, 0x8521, 0x8522, 0x8523, 0x8524, 0x8525, 0x8526, 0x8527, + 0x8528, 0x8529, 0x852a, 0x852b, 0x852c, 0x852d, 0x852e, 0x852f, + 0x8530, 0x8531, 0x8532, 0x8533, 0x8534, 0x8535, 0x8536, 0x8537, + 0x8538, 0x8539, 0x853a, 0x853b, 0x853c, 0x853d, 0x853e, 0x853f, + 0x8540, 0x8541, 0x8542, 0x8543, 0x8544, 0x8545, 0x8546, 0x8547, + 0x8548, 0x8549, 0x854a, 0x854b, 0x854c, 0x854d, 0x854e, 0x854f, + 0x8550, 0x8551, 0x8552, 0x8553, 0x8554, 0x8555, 0x8556, 0x8557, + 0x8558, 0x8559, 0x855a, 0x855b, 0x855c, 0x855d, 0x855e, 0x855f, + 0x8560, 0x8561, 0x8562, 0x8563, 0x8564, 0x8565, 0x8566, 0x8567, + 0x8568, 0x8569, 0x856a, 0x856b, 0x856c, 0x856d, 0x856e, 0x856f, + 0x8570, 0x8571, 0x8572, 0x8573, 0x8574, 0x8575, 0x8576, 0x8577, + 0x8578, 0x8579, 0x857a, 0x857b, 0x857c, 0x857d, 0x857e, 0x857f, + 0x8580, 0x8581, 0x8582, 0x8583, 0x8584, 0x8585, 0x8586, 0x8587, + 0x8588, 0x8589, 0x858a, 0x858b, 0x858c, 0x858d, 0x858e, 0x858f, + 0x8590, 0x8591, 0x8592, 0x8593, 0x8594, 0x8595, 0x8596, 0x8597, + 0x8598, 0x8599, 0x859a, 0x859b, 0x859c, 0x859d, 0x859e, 0x859f, + 0x85a0, 0x85a1, 0x85a2, 0x85a3, 0x85a4, 0x85a5, 0x85a6, 0x85a7, + 0x85a8, 0x85a9, 0x85aa, 0x85ab, 0x85ac, 0x85ad, 0x85ae, 0x85af, + 0x85b0, 0x85b1, 0x85b2, 0x85b3, 0x85b4, 0x85b5, 0x85b6, 0x85b7, + 0x85b8, 0x85b9, 0x85ba, 0x85bb, 0x85bc, 0x85bd, 0x85be, 0x85bf, + 0x85c0, 0x85c1, 0x85c2, 0x85c3, 0x85c4, 0x85c5, 0x85c6, 0x85c7, + 0x85c8, 0x85c9, 0x85ca, 0x85cb, 0x85cc, 0x85cd, 0x85ce, 0x85cf, + 0x85d0, 0x85d1, 0x85d2, 0x85d3, 0x85d4, 0x85d5, 0x85d6, 0x85d7, + 0x85d8, 0x85d9, 0x85da, 0x85db, 0x85dc, 0x85dd, 0x85de, 0x85df, + 0x85e0, 0x85e1, 0x85e2, 0x85e3, 0x85e4, 0x85e5, 0x85e6, 0x85e7, + 0x85e8, 0x85e9, 0x85ea, 0x85eb, 0x85ec, 0x85ed, 0x85ee, 0x85ef, + 0x85f0, 0x85f1, 0x85f2, 0x85f3, 0x85f4, 0x85f5, 0x85f6, 0x85f7, + 0x85f8, 0x85f9, 0x85fa, 0x85fb, 0x85fc, 0x85fd, 0x85fe, 0x85ff, + 0x8600, 0x8601, 0x8602, 0x8603, 0x8604, 0x8605, 0x8606, 0x8607, + 0x8608, 0x8609, 0x860a, 0x860b, 0x860c, 0x860d, 0x860e, 0x860f, + 0x8610, 0x8611, 0x8612, 0x8613, 0x8614, 0x8615, 0x8616, 0x8617, + 0x8618, 0x8619, 0x861a, 0x861b, 0x861c, 0x861d, 0x861e, 0x861f, + 0x8620, 0x8621, 0x8622, 0x8623, 0x8624, 0x8625, 0x8626, 0x8627, + 0x8628, 0x8629, 0x862a, 0x862b, 0x862c, 0x862d, 0x862e, 0x862f, + 0x8630, 0x8631, 0x8632, 0x8633, 0x8634, 0x8635, 0x8636, 0x8637, + 0x8638, 0x8639, 0x863a, 0x863b, 0x863c, 0x863d, 0x863e, 0x863f, + 0x8640, 0x8641, 0x8642, 0x8643, 0x8644, 0x8645, 0x8646, 0x8647, + 0x8648, 0x8649, 0x864a, 0x864b, 0x864c, 0x864d, 0x864e, 0x864f, + 0x8650, 0x8651, 0x8652, 0x8653, 0x8654, 0x8655, 0x8656, 0x8657, + 0x8658, 0x8659, 0x865a, 0x865b, 0x865c, 0x865d, 0x865e, 0x865f, + 0x8660, 0x8661, 0x8662, 0x8663, 0x8664, 0x8665, 0x8666, 0x8667, + 0x8668, 0x8669, 0x866a, 0x866b, 0x866c, 0x866d, 0x866e, 0x866f, + 0x8670, 0x8671, 0x8672, 0x8673, 0x8674, 0x8675, 0x8676, 0x8677, + 0x8678, 0x8679, 0x867a, 0x867b, 0x867c, 0x867d, 0x867e, 0x867f, + 0x8680, 0x8681, 0x8682, 0x8683, 0x8684, 0x8685, 0x8686, 0x8687, + 0x8688, 0x8689, 0x868a, 0x868b, 0x868c, 0x868d, 0x868e, 0x868f, + 0x8690, 0x8691, 0x8692, 0x8693, 0x8694, 0x8695, 0x8696, 0x8697, + 0x8698, 0x8699, 0x869a, 0x869b, 0x869c, 0x869d, 0x869e, 0x869f, + 0x86a0, 0x86a1, 0x86a2, 0x86a3, 0x86a4, 0x86a5, 0x86a6, 0x86a7, + 0x86a8, 0x86a9, 0x86aa, 0x86ab, 0x86ac, 0x86ad, 0x86ae, 0x86af, + 0x86b0, 0x86b1, 0x86b2, 0x86b3, 0x86b4, 0x86b5, 0x86b6, 0x86b7, + 0x86b8, 0x86b9, 0x86ba, 0x86bb, 0x86bc, 0x86bd, 0x86be, 0x86bf, + 0x86c0, 0x86c1, 0x86c2, 0x86c3, 0x86c4, 0x86c5, 0x86c6, 0x86c7, + 0x86c8, 0x86c9, 0x86ca, 0x86cb, 0x86cc, 0x86cd, 0x86ce, 0x86cf, + 0x86d0, 0x86d1, 0x86d2, 0x86d3, 0x86d4, 0x86d5, 0x86d6, 0x86d7, + 0x86d8, 0x86d9, 0x86da, 0x86db, 0x86dc, 0x86dd, 0x86de, 0x86df, + 0x86e0, 0x86e1, 0x86e2, 0x86e3, 0x86e4, 0x86e5, 0x86e6, 0x86e7, + 0x86e8, 0x86e9, 0x86ea, 0x86eb, 0x86ec, 0x86ed, 0x86ee, 0x86ef, + 0x86f0, 0x86f1, 0x86f2, 0x86f3, 0x86f4, 0x86f5, 0x86f6, 0x86f7, + 0x86f8, 0x86f9, 0x86fa, 0x86fb, 0x86fc, 0x86fd, 0x86fe, 0x86ff, + 0x8700, 0x8701, 0x8702, 0x8703, 0x8704, 0x8705, 0x8706, 0x8707, + 0x8708, 0x8709, 0x870a, 0x870b, 0x870c, 0x870d, 0x870e, 0x870f, + 0x8710, 0x8711, 0x8712, 0x8713, 0x8714, 0x8715, 0x8716, 0x8717, + 0x8718, 0x8719, 0x871a, 0x871b, 0x871c, 0x871d, 0x871e, 0x871f, + 0x8720, 0x8721, 0x8722, 0x8723, 0x8724, 0x8725, 0x8726, 0x8727, + 0x8728, 0x8729, 0x872a, 0x872b, 0x872c, 0x872d, 0x872e, 0x872f, + 0x8730, 0x8731, 0x8732, 0x8733, 0x8734, 0x8735, 0x8736, 0x8737, + 0x8738, 0x8739, 0x873a, 0x873b, 0x873c, 0x873d, 0x873e, 0x873f, + 0x8740, 0x8741, 0x8742, 0x8743, 0x8744, 0x8745, 0x8746, 0x8747, + 0x8748, 0x8749, 0x874a, 0x874b, 0x874c, 0x874d, 0x874e, 0x874f, + 0x8750, 0x8751, 0x8752, 0x8753, 0x8754, 0x8755, 0x8756, 0x8757, + 0x8758, 0x8759, 0x875a, 0x875b, 0x875c, 0x875d, 0x875e, 0x875f, + 0x8760, 0x8761, 0x8762, 0x8763, 0x8764, 0x8765, 0x8766, 0x8767, + 0x8768, 0x8769, 0x876a, 0x876b, 0x876c, 0x876d, 0x876e, 0x876f, + 0x8770, 0x8771, 0x8772, 0x8773, 0x8774, 0x8775, 0x8776, 0x8777, + 0x8778, 0x8779, 0x877a, 0x877b, 0x877c, 0x877d, 0x877e, 0x877f, + 0x8780, 0x8781, 0x8782, 0x8783, 0x8784, 0x8785, 0x8786, 0x8787, + 0x8788, 0x8789, 0x878a, 0x878b, 0x878c, 0x878d, 0x878e, 0x878f, + 0x8790, 0x8791, 0x8792, 0x8793, 0x8794, 0x8795, 0x8796, 0x8797, + 0x8798, 0x8799, 0x879a, 0x879b, 0x879c, 0x879d, 0x879e, 0x879f, + 0x87a0, 0x87a1, 0x87a2, 0x87a3, 0x87a4, 0x87a5, 0x87a6, 0x87a7, + 0x87a8, 0x87a9, 0x87aa, 0x87ab, 0x87ac, 0x87ad, 0x87ae, 0x87af, + 0x87b0, 0x87b1, 0x87b2, 0x87b3, 0x87b4, 0x87b5, 0x87b6, 0x87b7, + 0x87b8, 0x87b9, 0x87ba, 0x87bb, 0x87bc, 0x87bd, 0x87be, 0x87bf, + 0x87c0, 0x87c1, 0x87c2, 0x87c3, 0x87c4, 0x87c5, 0x87c6, 0x87c7, + 0x87c8, 0x87c9, 0x87ca, 0x87cb, 0x87cc, 0x87cd, 0x87ce, 0x87cf, + 0x87d0, 0x87d1, 0x87d2, 0x87d3, 0x87d4, 0x87d5, 0x87d6, 0x87d7, + 0x87d8, 0x87d9, 0x87da, 0x87db, 0x87dc, 0x87dd, 0x87de, 0x87df, + 0x87e0, 0x87e1, 0x87e2, 0x87e3, 0x87e4, 0x87e5, 0x87e6, 0x87e7, + 0x87e8, 0x87e9, 0x87ea, 0x87eb, 0x87ec, 0x87ed, 0x87ee, 0x87ef, + 0x87f0, 0x87f1, 0x87f2, 0x87f3, 0x87f4, 0x87f5, 0x87f6, 0x87f7, + 0x87f8, 0x87f9, 0x87fa, 0x87fb, 0x87fc, 0x87fd, 0x87fe, 0x87ff, + 0x8800, 0x8801, 0x8802, 0x8803, 0x8804, 0x8805, 0x8806, 0x8807, + 0x8808, 0x8809, 0x880a, 0x880b, 0x880c, 0x880d, 0x880e, 0x880f, + 0x8810, 0x8811, 0x8812, 0x8813, 0x8814, 0x8815, 0x8816, 0x8817, + 0x8818, 0x8819, 0x881a, 0x881b, 0x881c, 0x881d, 0x881e, 0x881f, + 0x8820, 0x8821, 0x8822, 0x8823, 0x8824, 0x8825, 0x8826, 0x8827, + 0x8828, 0x8829, 0x882a, 0x882b, 0x882c, 0x882d, 0x882e, 0x882f, + 0x8830, 0x8831, 0x8832, 0x8833, 0x8834, 0x8835, 0x8836, 0x8837, + 0x8838, 0x8839, 0x883a, 0x883b, 0x883c, 0x883d, 0x883e, 0x883f, + 0x8840, 0x8841, 0x8842, 0x8843, 0x8844, 0x8845, 0x8846, 0x8847, + 0x8848, 0x8849, 0x884a, 0x884b, 0x884c, 0x884d, 0x884e, 0x884f, + 0x8850, 0x8851, 0x8852, 0x8853, 0x8854, 0x8855, 0x8856, 0x8857, + 0x8858, 0x8859, 0x885a, 0x885b, 0x885c, 0x885d, 0x885e, 0x885f, + 0x8860, 0x8861, 0x8862, 0x8863, 0x8864, 0x8865, 0x8866, 0x8867, + 0x8868, 0x8869, 0x886a, 0x886b, 0x886c, 0x886d, 0x886e, 0x886f, + 0x8870, 0x8871, 0x8872, 0x8873, 0x8874, 0x8875, 0x8876, 0x8877, + 0x8878, 0x8879, 0x887a, 0x887b, 0x887c, 0x887d, 0x887e, 0x887f, + 0x8880, 0x8881, 0x8882, 0x8883, 0x8884, 0x8885, 0x8886, 0x8887, + 0x8888, 0x8889, 0x888a, 0x888b, 0x888c, 0x888d, 0x888e, 0x888f, + 0x8890, 0x8891, 0x8892, 0x8893, 0x8894, 0x8895, 0x8896, 0x8897, + 0x8898, 0x8899, 0x889a, 0x889b, 0x889c, 0x889d, 0x889e, 0x889f, + 0x88a0, 0x88a1, 0x88a2, 0x88a3, 0x88a4, 0x88a5, 0x88a6, 0x88a7, + 0x88a8, 0x88a9, 0x88aa, 0x88ab, 0x88ac, 0x88ad, 0x88ae, 0x88af, + 0x88b0, 0x88b1, 0x88b2, 0x88b3, 0x88b4, 0x88b5, 0x88b6, 0x88b7, + 0x88b8, 0x88b9, 0x88ba, 0x88bb, 0x88bc, 0x88bd, 0x88be, 0x88bf, + 0x88c0, 0x88c1, 0x88c2, 0x88c3, 0x88c4, 0x88c5, 0x88c6, 0x88c7, + 0x88c8, 0x88c9, 0x88ca, 0x88cb, 0x88cc, 0x88cd, 0x88ce, 0x88cf, + 0x88d0, 0x88d1, 0x88d2, 0x88d3, 0x88d4, 0x88d5, 0x88d6, 0x88d7, + 0x88d8, 0x88d9, 0x88da, 0x88db, 0x88dc, 0x88dd, 0x88de, 0x88df, + 0x88e0, 0x88e1, 0x88e2, 0x88e3, 0x88e4, 0x88e5, 0x88e6, 0x88e7, + 0x88e8, 0x88e9, 0x88ea, 0x88eb, 0x88ec, 0x88ed, 0x88ee, 0x88ef, + 0x88f0, 0x88f1, 0x88f2, 0x88f3, 0x88f4, 0x88f5, 0x88f6, 0x88f7, + 0x88f8, 0x88f9, 0x88fa, 0x88fb, 0x88fc, 0x88fd, 0x88fe, 0x88ff, + 0x8900, 0x8901, 0x8902, 0x8903, 0x8904, 0x8905, 0x8906, 0x8907, + 0x8908, 0x8909, 0x890a, 0x890b, 0x890c, 0x890d, 0x890e, 0x890f, + 0x8910, 0x8911, 0x8912, 0x8913, 0x8914, 0x8915, 0x8916, 0x8917, + 0x8918, 0x8919, 0x891a, 0x891b, 0x891c, 0x891d, 0x891e, 0x891f, + 0x8920, 0x8921, 0x8922, 0x8923, 0x8924, 0x8925, 0x8926, 0x8927, + 0x8928, 0x8929, 0x892a, 0x892b, 0x892c, 0x892d, 0x892e, 0x892f, + 0x8930, 0x8931, 0x8932, 0x8933, 0x8934, 0x8935, 0x8936, 0x8937, + 0x8938, 0x8939, 0x893a, 0x893b, 0x893c, 0x893d, 0x893e, 0x893f, + 0x8940, 0x8941, 0x8942, 0x8943, 0x8944, 0x8945, 0x8946, 0x8947, + 0x8948, 0x8949, 0x894a, 0x894b, 0x894c, 0x894d, 0x894e, 0x894f, + 0x8950, 0x8951, 0x8952, 0x8953, 0x8954, 0x8955, 0x8956, 0x8957, + 0x8958, 0x8959, 0x895a, 0x895b, 0x895c, 0x895d, 0x895e, 0x895f, + 0x8960, 0x8961, 0x8962, 0x8963, 0x8964, 0x8965, 0x8966, 0x8967, + 0x8968, 0x8969, 0x896a, 0x896b, 0x896c, 0x896d, 0x896e, 0x896f, + 0x8970, 0x8971, 0x8972, 0x8973, 0x8974, 0x8975, 0x8976, 0x8977, + 0x8978, 0x8979, 0x897a, 0x897b, 0x897c, 0x897d, 0x897e, 0x897f, + 0x8980, 0x8981, 0x8982, 0x8983, 0x8984, 0x8985, 0x8986, 0x8987, + 0x8988, 0x8989, 0x898a, 0x898b, 0x898c, 0x898d, 0x898e, 0x898f, + 0x8990, 0x8991, 0x8992, 0x8993, 0x8994, 0x8995, 0x8996, 0x8997, + 0x8998, 0x8999, 0x899a, 0x899b, 0x899c, 0x899d, 0x899e, 0x899f, + 0x89a0, 0x89a1, 0x89a2, 0x89a3, 0x89a4, 0x89a5, 0x89a6, 0x89a7, + 0x89a8, 0x89a9, 0x89aa, 0x89ab, 0x89ac, 0x89ad, 0x89ae, 0x89af, + 0x89b0, 0x89b1, 0x89b2, 0x89b3, 0x89b4, 0x89b5, 0x89b6, 0x89b7, + 0x89b8, 0x89b9, 0x89ba, 0x89bb, 0x89bc, 0x89bd, 0x89be, 0x89bf, + 0x89c0, 0x89c1, 0x89c2, 0x89c3, 0x89c4, 0x89c5, 0x89c6, 0x89c7, + 0x89c8, 0x89c9, 0x89ca, 0x89cb, 0x89cc, 0x89cd, 0x89ce, 0x89cf, + 0x89d0, 0x89d1, 0x89d2, 0x89d3, 0x89d4, 0x89d5, 0x89d6, 0x89d7, + 0x89d8, 0x89d9, 0x89da, 0x89db, 0x89dc, 0x89dd, 0x89de, 0x89df, + 0x89e0, 0x89e1, 0x89e2, 0x89e3, 0x89e4, 0x89e5, 0x89e6, 0x89e7, + 0x89e8, 0x89e9, 0x89ea, 0x89eb, 0x89ec, 0x89ed, 0x89ee, 0x89ef, + 0x89f0, 0x89f1, 0x89f2, 0x89f3, 0x89f4, 0x89f5, 0x89f6, 0x89f7, + 0x89f8, 0x89f9, 0x89fa, 0x89fb, 0x89fc, 0x89fd, 0x89fe, 0x89ff, + 0x8a00, 0x8a01, 0x8a02, 0x8a03, 0x8a04, 0x8a05, 0x8a06, 0x8a07, + 0x8a08, 0x8a09, 0x8a0a, 0x8a0b, 0x8a0c, 0x8a0d, 0x8a0e, 0x8a0f, + 0x8a10, 0x8a11, 0x8a12, 0x8a13, 0x8a14, 0x8a15, 0x8a16, 0x8a17, + 0x8a18, 0x8a19, 0x8a1a, 0x8a1b, 0x8a1c, 0x8a1d, 0x8a1e, 0x8a1f, + 0x8a20, 0x8a21, 0x8a22, 0x8a23, 0x8a24, 0x8a25, 0x8a26, 0x8a27, + 0x8a28, 0x8a29, 0x8a2a, 0x8a2b, 0x8a2c, 0x8a2d, 0x8a2e, 0x8a2f, + 0x8a30, 0x8a31, 0x8a32, 0x8a33, 0x8a34, 0x8a35, 0x8a36, 0x8a37, + 0x8a38, 0x8a39, 0x8a3a, 0x8a3b, 0x8a3c, 0x8a3d, 0x8a3e, 0x8a3f, + 0x8a40, 0x8a41, 0x8a42, 0x8a43, 0x8a44, 0x8a45, 0x8a46, 0x8a47, + 0x8a48, 0x8a49, 0x8a4a, 0x8a4b, 0x8a4c, 0x8a4d, 0x8a4e, 0x8a4f, + 0x8a50, 0x8a51, 0x8a52, 0x8a53, 0x8a54, 0x8a55, 0x8a56, 0x8a57, + 0x8a58, 0x8a59, 0x8a5a, 0x8a5b, 0x8a5c, 0x8a5d, 0x8a5e, 0x8a5f, + 0x8a60, 0x8a61, 0x8a62, 0x8a63, 0x8a64, 0x8a65, 0x8a66, 0x8a67, + 0x8a68, 0x8a69, 0x8a6a, 0x8a6b, 0x8a6c, 0x8a6d, 0x8a6e, 0x8a6f, + 0x8a70, 0x8a71, 0x8a72, 0x8a73, 0x8a74, 0x8a75, 0x8a76, 0x8a77, + 0x8a78, 0x8a79, 0x8a7a, 0x8a7b, 0x8a7c, 0x8a7d, 0x8a7e, 0x8a7f, + 0x8a80, 0x8a81, 0x8a82, 0x8a83, 0x8a84, 0x8a85, 0x8a86, 0x8a87, + 0x8a88, 0x8a89, 0x8a8a, 0x8a8b, 0x8a8c, 0x8a8d, 0x8a8e, 0x8a8f, + 0x8a90, 0x8a91, 0x8a92, 0x8a93, 0x8a94, 0x8a95, 0x8a96, 0x8a97, + 0x8a98, 0x8a99, 0x8a9a, 0x8a9b, 0x8a9c, 0x8a9d, 0x8a9e, 0x8a9f, + 0x8aa0, 0x8aa1, 0x8aa2, 0x8aa3, 0x8aa4, 0x8aa5, 0x8aa6, 0x8aa7, + 0x8aa8, 0x8aa9, 0x8aaa, 0x8aab, 0x8aac, 0x8aad, 0x8aae, 0x8aaf, + 0x8ab0, 0x8ab1, 0x8ab2, 0x8ab3, 0x8ab4, 0x8ab5, 0x8ab6, 0x8ab7, + 0x8ab8, 0x8ab9, 0x8aba, 0x8abb, 0x8abc, 0x8abd, 0x8abe, 0x8abf, + 0x8ac0, 0x8ac1, 0x8ac2, 0x8ac3, 0x8ac4, 0x8ac5, 0x8ac6, 0x8ac7, + 0x8ac8, 0x8ac9, 0x8aca, 0x8acb, 0x8acc, 0x8acd, 0x8ace, 0x8acf, + 0x8ad0, 0x8ad1, 0x8ad2, 0x8ad3, 0x8ad4, 0x8ad5, 0x8ad6, 0x8ad7, + 0x8ad8, 0x8ad9, 0x8ada, 0x8adb, 0x8adc, 0x8add, 0x8ade, 0x8adf, + 0x8ae0, 0x8ae1, 0x8ae2, 0x8ae3, 0x8ae4, 0x8ae5, 0x8ae6, 0x8ae7, + 0x8ae8, 0x8ae9, 0x8aea, 0x8aeb, 0x8aec, 0x8aed, 0x8aee, 0x8aef, + 0x8af0, 0x8af1, 0x8af2, 0x8af3, 0x8af4, 0x8af5, 0x8af6, 0x8af7, + 0x8af8, 0x8af9, 0x8afa, 0x8afb, 0x8afc, 0x8afd, 0x8afe, 0x8aff, + 0x8b00, 0x8b01, 0x8b02, 0x8b03, 0x8b04, 0x8b05, 0x8b06, 0x8b07, + 0x8b08, 0x8b09, 0x8b0a, 0x8b0b, 0x8b0c, 0x8b0d, 0x8b0e, 0x8b0f, + 0x8b10, 0x8b11, 0x8b12, 0x8b13, 0x8b14, 0x8b15, 0x8b16, 0x8b17, + 0x8b18, 0x8b19, 0x8b1a, 0x8b1b, 0x8b1c, 0x8b1d, 0x8b1e, 0x8b1f, + 0x8b20, 0x8b21, 0x8b22, 0x8b23, 0x8b24, 0x8b25, 0x8b26, 0x8b27, + 0x8b28, 0x8b29, 0x8b2a, 0x8b2b, 0x8b2c, 0x8b2d, 0x8b2e, 0x8b2f, + 0x8b30, 0x8b31, 0x8b32, 0x8b33, 0x8b34, 0x8b35, 0x8b36, 0x8b37, + 0x8b38, 0x8b39, 0x8b3a, 0x8b3b, 0x8b3c, 0x8b3d, 0x8b3e, 0x8b3f, + 0x8b40, 0x8b41, 0x8b42, 0x8b43, 0x8b44, 0x8b45, 0x8b46, 0x8b47, + 0x8b48, 0x8b49, 0x8b4a, 0x8b4b, 0x8b4c, 0x8b4d, 0x8b4e, 0x8b4f, + 0x8b50, 0x8b51, 0x8b52, 0x8b53, 0x8b54, 0x8b55, 0x8b56, 0x8b57, + 0x8b58, 0x8b59, 0x8b5a, 0x8b5b, 0x8b5c, 0x8b5d, 0x8b5e, 0x8b5f, + 0x8b60, 0x8b61, 0x8b62, 0x8b63, 0x8b64, 0x8b65, 0x8b66, 0x8b67, + 0x8b68, 0x8b69, 0x8b6a, 0x8b6b, 0x8b6c, 0x8b6d, 0x8b6e, 0x8b6f, + 0x8b70, 0x8b71, 0x8b72, 0x8b73, 0x8b74, 0x8b75, 0x8b76, 0x8b77, + 0x8b78, 0x8b79, 0x8b7a, 0x8b7b, 0x8b7c, 0x8b7d, 0x8b7e, 0x8b7f, + 0x8b80, 0x8b81, 0x8b82, 0x8b83, 0x8b84, 0x8b85, 0x8b86, 0x8b87, + 0x8b88, 0x8b89, 0x8b8a, 0x8b8b, 0x8b8c, 0x8b8d, 0x8b8e, 0x8b8f, + 0x8b90, 0x8b91, 0x8b92, 0x8b93, 0x8b94, 0x8b95, 0x8b96, 0x8b97, + 0x8b98, 0x8b99, 0x8b9a, 0x8b9b, 0x8b9c, 0x8b9d, 0x8b9e, 0x8b9f, + 0x8ba0, 0x8ba1, 0x8ba2, 0x8ba3, 0x8ba4, 0x8ba5, 0x8ba6, 0x8ba7, + 0x8ba8, 0x8ba9, 0x8baa, 0x8bab, 0x8bac, 0x8bad, 0x8bae, 0x8baf, + 0x8bb0, 0x8bb1, 0x8bb2, 0x8bb3, 0x8bb4, 0x8bb5, 0x8bb6, 0x8bb7, + 0x8bb8, 0x8bb9, 0x8bba, 0x8bbb, 0x8bbc, 0x8bbd, 0x8bbe, 0x8bbf, + 0x8bc0, 0x8bc1, 0x8bc2, 0x8bc3, 0x8bc4, 0x8bc5, 0x8bc6, 0x8bc7, + 0x8bc8, 0x8bc9, 0x8bca, 0x8bcb, 0x8bcc, 0x8bcd, 0x8bce, 0x8bcf, + 0x8bd0, 0x8bd1, 0x8bd2, 0x8bd3, 0x8bd4, 0x8bd5, 0x8bd6, 0x8bd7, + 0x8bd8, 0x8bd9, 0x8bda, 0x8bdb, 0x8bdc, 0x8bdd, 0x8bde, 0x8bdf, + 0x8be0, 0x8be1, 0x8be2, 0x8be3, 0x8be4, 0x8be5, 0x8be6, 0x8be7, + 0x8be8, 0x8be9, 0x8bea, 0x8beb, 0x8bec, 0x8bed, 0x8bee, 0x8bef, + 0x8bf0, 0x8bf1, 0x8bf2, 0x8bf3, 0x8bf4, 0x8bf5, 0x8bf6, 0x8bf7, + 0x8bf8, 0x8bf9, 0x8bfa, 0x8bfb, 0x8bfc, 0x8bfd, 0x8bfe, 0x8bff, + 0x8c00, 0x8c01, 0x8c02, 0x8c03, 0x8c04, 0x8c05, 0x8c06, 0x8c07, + 0x8c08, 0x8c09, 0x8c0a, 0x8c0b, 0x8c0c, 0x8c0d, 0x8c0e, 0x8c0f, + 0x8c10, 0x8c11, 0x8c12, 0x8c13, 0x8c14, 0x8c15, 0x8c16, 0x8c17, + 0x8c18, 0x8c19, 0x8c1a, 0x8c1b, 0x8c1c, 0x8c1d, 0x8c1e, 0x8c1f, + 0x8c20, 0x8c21, 0x8c22, 0x8c23, 0x8c24, 0x8c25, 0x8c26, 0x8c27, + 0x8c28, 0x8c29, 0x8c2a, 0x8c2b, 0x8c2c, 0x8c2d, 0x8c2e, 0x8c2f, + 0x8c30, 0x8c31, 0x8c32, 0x8c33, 0x8c34, 0x8c35, 0x8c36, 0x8c37, + 0x8c38, 0x8c39, 0x8c3a, 0x8c3b, 0x8c3c, 0x8c3d, 0x8c3e, 0x8c3f, + 0x8c40, 0x8c41, 0x8c42, 0x8c43, 0x8c44, 0x8c45, 0x8c46, 0x8c47, + 0x8c48, 0x8c49, 0x8c4a, 0x8c4b, 0x8c4c, 0x8c4d, 0x8c4e, 0x8c4f, + 0x8c50, 0x8c51, 0x8c52, 0x8c53, 0x8c54, 0x8c55, 0x8c56, 0x8c57, + 0x8c58, 0x8c59, 0x8c5a, 0x8c5b, 0x8c5c, 0x8c5d, 0x8c5e, 0x8c5f, + 0x8c60, 0x8c61, 0x8c62, 0x8c63, 0x8c64, 0x8c65, 0x8c66, 0x8c67, + 0x8c68, 0x8c69, 0x8c6a, 0x8c6b, 0x8c6c, 0x8c6d, 0x8c6e, 0x8c6f, + 0x8c70, 0x8c71, 0x8c72, 0x8c73, 0x8c74, 0x8c75, 0x8c76, 0x8c77, + 0x8c78, 0x8c79, 0x8c7a, 0x8c7b, 0x8c7c, 0x8c7d, 0x8c7e, 0x8c7f, + 0x8c80, 0x8c81, 0x8c82, 0x8c83, 0x8c84, 0x8c85, 0x8c86, 0x8c87, + 0x8c88, 0x8c89, 0x8c8a, 0x8c8b, 0x8c8c, 0x8c8d, 0x8c8e, 0x8c8f, + 0x8c90, 0x8c91, 0x8c92, 0x8c93, 0x8c94, 0x8c95, 0x8c96, 0x8c97, + 0x8c98, 0x8c99, 0x8c9a, 0x8c9b, 0x8c9c, 0x8c9d, 0x8c9e, 0x8c9f, + 0x8ca0, 0x8ca1, 0x8ca2, 0x8ca3, 0x8ca4, 0x8ca5, 0x8ca6, 0x8ca7, + 0x8ca8, 0x8ca9, 0x8caa, 0x8cab, 0x8cac, 0x8cad, 0x8cae, 0x8caf, + 0x8cb0, 0x8cb1, 0x8cb2, 0x8cb3, 0x8cb4, 0x8cb5, 0x8cb6, 0x8cb7, + 0x8cb8, 0x8cb9, 0x8cba, 0x8cbb, 0x8cbc, 0x8cbd, 0x8cbe, 0x8cbf, + 0x8cc0, 0x8cc1, 0x8cc2, 0x8cc3, 0x8cc4, 0x8cc5, 0x8cc6, 0x8cc7, + 0x8cc8, 0x8cc9, 0x8cca, 0x8ccb, 0x8ccc, 0x8ccd, 0x8cce, 0x8ccf, + 0x8cd0, 0x8cd1, 0x8cd2, 0x8cd3, 0x8cd4, 0x8cd5, 0x8cd6, 0x8cd7, + 0x8cd8, 0x8cd9, 0x8cda, 0x8cdb, 0x8cdc, 0x8cdd, 0x8cde, 0x8cdf, + 0x8ce0, 0x8ce1, 0x8ce2, 0x8ce3, 0x8ce4, 0x8ce5, 0x8ce6, 0x8ce7, + 0x8ce8, 0x8ce9, 0x8cea, 0x8ceb, 0x8cec, 0x8ced, 0x8cee, 0x8cef, + 0x8cf0, 0x8cf1, 0x8cf2, 0x8cf3, 0x8cf4, 0x8cf5, 0x8cf6, 0x8cf7, + 0x8cf8, 0x8cf9, 0x8cfa, 0x8cfb, 0x8cfc, 0x8cfd, 0x8cfe, 0x8cff, + 0x8d00, 0x8d01, 0x8d02, 0x8d03, 0x8d04, 0x8d05, 0x8d06, 0x8d07, + 0x8d08, 0x8d09, 0x8d0a, 0x8d0b, 0x8d0c, 0x8d0d, 0x8d0e, 0x8d0f, + 0x8d10, 0x8d11, 0x8d12, 0x8d13, 0x8d14, 0x8d15, 0x8d16, 0x8d17, + 0x8d18, 0x8d19, 0x8d1a, 0x8d1b, 0x8d1c, 0x8d1d, 0x8d1e, 0x8d1f, + 0x8d20, 0x8d21, 0x8d22, 0x8d23, 0x8d24, 0x8d25, 0x8d26, 0x8d27, + 0x8d28, 0x8d29, 0x8d2a, 0x8d2b, 0x8d2c, 0x8d2d, 0x8d2e, 0x8d2f, + 0x8d30, 0x8d31, 0x8d32, 0x8d33, 0x8d34, 0x8d35, 0x8d36, 0x8d37, + 0x8d38, 0x8d39, 0x8d3a, 0x8d3b, 0x8d3c, 0x8d3d, 0x8d3e, 0x8d3f, + 0x8d40, 0x8d41, 0x8d42, 0x8d43, 0x8d44, 0x8d45, 0x8d46, 0x8d47, + 0x8d48, 0x8d49, 0x8d4a, 0x8d4b, 0x8d4c, 0x8d4d, 0x8d4e, 0x8d4f, + 0x8d50, 0x8d51, 0x8d52, 0x8d53, 0x8d54, 0x8d55, 0x8d56, 0x8d57, + 0x8d58, 0x8d59, 0x8d5a, 0x8d5b, 0x8d5c, 0x8d5d, 0x8d5e, 0x8d5f, + 0x8d60, 0x8d61, 0x8d62, 0x8d63, 0x8d64, 0x8d65, 0x8d66, 0x8d67, + 0x8d68, 0x8d69, 0x8d6a, 0x8d6b, 0x8d6c, 0x8d6d, 0x8d6e, 0x8d6f, + 0x8d70, 0x8d71, 0x8d72, 0x8d73, 0x8d74, 0x8d75, 0x8d76, 0x8d77, + 0x8d78, 0x8d79, 0x8d7a, 0x8d7b, 0x8d7c, 0x8d7d, 0x8d7e, 0x8d7f, + 0x8d80, 0x8d81, 0x8d82, 0x8d83, 0x8d84, 0x8d85, 0x8d86, 0x8d87, + 0x8d88, 0x8d89, 0x8d8a, 0x8d8b, 0x8d8c, 0x8d8d, 0x8d8e, 0x8d8f, + 0x8d90, 0x8d91, 0x8d92, 0x8d93, 0x8d94, 0x8d95, 0x8d96, 0x8d97, + 0x8d98, 0x8d99, 0x8d9a, 0x8d9b, 0x8d9c, 0x8d9d, 0x8d9e, 0x8d9f, + 0x8da0, 0x8da1, 0x8da2, 0x8da3, 0x8da4, 0x8da5, 0x8da6, 0x8da7, + 0x8da8, 0x8da9, 0x8daa, 0x8dab, 0x8dac, 0x8dad, 0x8dae, 0x8daf, + 0x8db0, 0x8db1, 0x8db2, 0x8db3, 0x8db4, 0x8db5, 0x8db6, 0x8db7, + 0x8db8, 0x8db9, 0x8dba, 0x8dbb, 0x8dbc, 0x8dbd, 0x8dbe, 0x8dbf, + 0x8dc0, 0x8dc1, 0x8dc2, 0x8dc3, 0x8dc4, 0x8dc5, 0x8dc6, 0x8dc7, + 0x8dc8, 0x8dc9, 0x8dca, 0x8dcb, 0x8dcc, 0x8dcd, 0x8dce, 0x8dcf, + 0x8dd0, 0x8dd1, 0x8dd2, 0x8dd3, 0x8dd4, 0x8dd5, 0x8dd6, 0x8dd7, + 0x8dd8, 0x8dd9, 0x8dda, 0x8ddb, 0x8ddc, 0x8ddd, 0x8dde, 0x8ddf, + 0x8de0, 0x8de1, 0x8de2, 0x8de3, 0x8de4, 0x8de5, 0x8de6, 0x8de7, + 0x8de8, 0x8de9, 0x8dea, 0x8deb, 0x8dec, 0x8ded, 0x8dee, 0x8def, + 0x8df0, 0x8df1, 0x8df2, 0x8df3, 0x8df4, 0x8df5, 0x8df6, 0x8df7, + 0x8df8, 0x8df9, 0x8dfa, 0x8dfb, 0x8dfc, 0x8dfd, 0x8dfe, 0x8dff, + 0x8e00, 0x8e01, 0x8e02, 0x8e03, 0x8e04, 0x8e05, 0x8e06, 0x8e07, + 0x8e08, 0x8e09, 0x8e0a, 0x8e0b, 0x8e0c, 0x8e0d, 0x8e0e, 0x8e0f, + 0x8e10, 0x8e11, 0x8e12, 0x8e13, 0x8e14, 0x8e15, 0x8e16, 0x8e17, + 0x8e18, 0x8e19, 0x8e1a, 0x8e1b, 0x8e1c, 0x8e1d, 0x8e1e, 0x8e1f, + 0x8e20, 0x8e21, 0x8e22, 0x8e23, 0x8e24, 0x8e25, 0x8e26, 0x8e27, + 0x8e28, 0x8e29, 0x8e2a, 0x8e2b, 0x8e2c, 0x8e2d, 0x8e2e, 0x8e2f, + 0x8e30, 0x8e31, 0x8e32, 0x8e33, 0x8e34, 0x8e35, 0x8e36, 0x8e37, + 0x8e38, 0x8e39, 0x8e3a, 0x8e3b, 0x8e3c, 0x8e3d, 0x8e3e, 0x8e3f, + 0x8e40, 0x8e41, 0x8e42, 0x8e43, 0x8e44, 0x8e45, 0x8e46, 0x8e47, + 0x8e48, 0x8e49, 0x8e4a, 0x8e4b, 0x8e4c, 0x8e4d, 0x8e4e, 0x8e4f, + 0x8e50, 0x8e51, 0x8e52, 0x8e53, 0x8e54, 0x8e55, 0x8e56, 0x8e57, + 0x8e58, 0x8e59, 0x8e5a, 0x8e5b, 0x8e5c, 0x8e5d, 0x8e5e, 0x8e5f, + 0x8e60, 0x8e61, 0x8e62, 0x8e63, 0x8e64, 0x8e65, 0x8e66, 0x8e67, + 0x8e68, 0x8e69, 0x8e6a, 0x8e6b, 0x8e6c, 0x8e6d, 0x8e6e, 0x8e6f, + 0x8e70, 0x8e71, 0x8e72, 0x8e73, 0x8e74, 0x8e75, 0x8e76, 0x8e77, + 0x8e78, 0x8e79, 0x8e7a, 0x8e7b, 0x8e7c, 0x8e7d, 0x8e7e, 0x8e7f, + 0x8e80, 0x8e81, 0x8e82, 0x8e83, 0x8e84, 0x8e85, 0x8e86, 0x8e87, + 0x8e88, 0x8e89, 0x8e8a, 0x8e8b, 0x8e8c, 0x8e8d, 0x8e8e, 0x8e8f, + 0x8e90, 0x8e91, 0x8e92, 0x8e93, 0x8e94, 0x8e95, 0x8e96, 0x8e97, + 0x8e98, 0x8e99, 0x8e9a, 0x8e9b, 0x8e9c, 0x8e9d, 0x8e9e, 0x8e9f, + 0x8ea0, 0x8ea1, 0x8ea2, 0x8ea3, 0x8ea4, 0x8ea5, 0x8ea6, 0x8ea7, + 0x8ea8, 0x8ea9, 0x8eaa, 0x8eab, 0x8eac, 0x8ead, 0x8eae, 0x8eaf, + 0x8eb0, 0x8eb1, 0x8eb2, 0x8eb3, 0x8eb4, 0x8eb5, 0x8eb6, 0x8eb7, + 0x8eb8, 0x8eb9, 0x8eba, 0x8ebb, 0x8ebc, 0x8ebd, 0x8ebe, 0x8ebf, + 0x8ec0, 0x8ec1, 0x8ec2, 0x8ec3, 0x8ec4, 0x8ec5, 0x8ec6, 0x8ec7, + 0x8ec8, 0x8ec9, 0x8eca, 0x8ecb, 0x8ecc, 0x8ecd, 0x8ece, 0x8ecf, + 0x8ed0, 0x8ed1, 0x8ed2, 0x8ed3, 0x8ed4, 0x8ed5, 0x8ed6, 0x8ed7, + 0x8ed8, 0x8ed9, 0x8eda, 0x8edb, 0x8edc, 0x8edd, 0x8ede, 0x8edf, + 0x8ee0, 0x8ee1, 0x8ee2, 0x8ee3, 0x8ee4, 0x8ee5, 0x8ee6, 0x8ee7, + 0x8ee8, 0x8ee9, 0x8eea, 0x8eeb, 0x8eec, 0x8eed, 0x8eee, 0x8eef, + 0x8ef0, 0x8ef1, 0x8ef2, 0x8ef3, 0x8ef4, 0x8ef5, 0x8ef6, 0x8ef7, + 0x8ef8, 0x8ef9, 0x8efa, 0x8efb, 0x8efc, 0x8efd, 0x8efe, 0x8eff, + 0x8f00, 0x8f01, 0x8f02, 0x8f03, 0x8f04, 0x8f05, 0x8f06, 0x8f07, + 0x8f08, 0x8f09, 0x8f0a, 0x8f0b, 0x8f0c, 0x8f0d, 0x8f0e, 0x8f0f, + 0x8f10, 0x8f11, 0x8f12, 0x8f13, 0x8f14, 0x8f15, 0x8f16, 0x8f17, + 0x8f18, 0x8f19, 0x8f1a, 0x8f1b, 0x8f1c, 0x8f1d, 0x8f1e, 0x8f1f, + 0x8f20, 0x8f21, 0x8f22, 0x8f23, 0x8f24, 0x8f25, 0x8f26, 0x8f27, + 0x8f28, 0x8f29, 0x8f2a, 0x8f2b, 0x8f2c, 0x8f2d, 0x8f2e, 0x8f2f, + 0x8f30, 0x8f31, 0x8f32, 0x8f33, 0x8f34, 0x8f35, 0x8f36, 0x8f37, + 0x8f38, 0x8f39, 0x8f3a, 0x8f3b, 0x8f3c, 0x8f3d, 0x8f3e, 0x8f3f, + 0x8f40, 0x8f41, 0x8f42, 0x8f43, 0x8f44, 0x8f45, 0x8f46, 0x8f47, + 0x8f48, 0x8f49, 0x8f4a, 0x8f4b, 0x8f4c, 0x8f4d, 0x8f4e, 0x8f4f, + 0x8f50, 0x8f51, 0x8f52, 0x8f53, 0x8f54, 0x8f55, 0x8f56, 0x8f57, + 0x8f58, 0x8f59, 0x8f5a, 0x8f5b, 0x8f5c, 0x8f5d, 0x8f5e, 0x8f5f, + 0x8f60, 0x8f61, 0x8f62, 0x8f63, 0x8f64, 0x8f65, 0x8f66, 0x8f67, + 0x8f68, 0x8f69, 0x8f6a, 0x8f6b, 0x8f6c, 0x8f6d, 0x8f6e, 0x8f6f, + 0x8f70, 0x8f71, 0x8f72, 0x8f73, 0x8f74, 0x8f75, 0x8f76, 0x8f77, + 0x8f78, 0x8f79, 0x8f7a, 0x8f7b, 0x8f7c, 0x8f7d, 0x8f7e, 0x8f7f, + 0x8f80, 0x8f81, 0x8f82, 0x8f83, 0x8f84, 0x8f85, 0x8f86, 0x8f87, + 0x8f88, 0x8f89, 0x8f8a, 0x8f8b, 0x8f8c, 0x8f8d, 0x8f8e, 0x8f8f, + 0x8f90, 0x8f91, 0x8f92, 0x8f93, 0x8f94, 0x8f95, 0x8f96, 0x8f97, + 0x8f98, 0x8f99, 0x8f9a, 0x8f9b, 0x8f9c, 0x8f9d, 0x8f9e, 0x8f9f, + 0x8fa0, 0x8fa1, 0x8fa2, 0x8fa3, 0x8fa4, 0x8fa5, 0x8fa6, 0x8fa7, + 0x8fa8, 0x8fa9, 0x8faa, 0x8fab, 0x8fac, 0x8fad, 0x8fae, 0x8faf, + 0x8fb0, 0x8fb1, 0x8fb2, 0x8fb3, 0x8fb4, 0x8fb5, 0x8fb6, 0x8fb7, + 0x8fb8, 0x8fb9, 0x8fba, 0x8fbb, 0x8fbc, 0x8fbd, 0x8fbe, 0x8fbf, + 0x8fc0, 0x8fc1, 0x8fc2, 0x8fc3, 0x8fc4, 0x8fc5, 0x8fc6, 0x8fc7, + 0x8fc8, 0x8fc9, 0x8fca, 0x8fcb, 0x8fcc, 0x8fcd, 0x8fce, 0x8fcf, + 0x8fd0, 0x8fd1, 0x8fd2, 0x8fd3, 0x8fd4, 0x8fd5, 0x8fd6, 0x8fd7, + 0x8fd8, 0x8fd9, 0x8fda, 0x8fdb, 0x8fdc, 0x8fdd, 0x8fde, 0x8fdf, + 0x8fe0, 0x8fe1, 0x8fe2, 0x8fe3, 0x8fe4, 0x8fe5, 0x8fe6, 0x8fe7, + 0x8fe8, 0x8fe9, 0x8fea, 0x8feb, 0x8fec, 0x8fed, 0x8fee, 0x8fef, + 0x8ff0, 0x8ff1, 0x8ff2, 0x8ff3, 0x8ff4, 0x8ff5, 0x8ff6, 0x8ff7, + 0x8ff8, 0x8ff9, 0x8ffa, 0x8ffb, 0x8ffc, 0x8ffd, 0x8ffe, 0x8fff, + 0x9000, 0x9001, 0x9002, 0x9003, 0x9004, 0x9005, 0x9006, 0x9007, + 0x9008, 0x9009, 0x900a, 0x900b, 0x900c, 0x900d, 0x900e, 0x900f, + 0x9010, 0x9011, 0x9012, 0x9013, 0x9014, 0x9015, 0x9016, 0x9017, + 0x9018, 0x9019, 0x901a, 0x901b, 0x901c, 0x901d, 0x901e, 0x901f, + 0x9020, 0x9021, 0x9022, 0x9023, 0x9024, 0x9025, 0x9026, 0x9027, + 0x9028, 0x9029, 0x902a, 0x902b, 0x902c, 0x902d, 0x902e, 0x902f, + 0x9030, 0x9031, 0x9032, 0x9033, 0x9034, 0x9035, 0x9036, 0x9037, + 0x9038, 0x9039, 0x903a, 0x903b, 0x903c, 0x903d, 0x903e, 0x903f, + 0x9040, 0x9041, 0x9042, 0x9043, 0x9044, 0x9045, 0x9046, 0x9047, + 0x9048, 0x9049, 0x904a, 0x904b, 0x904c, 0x904d, 0x904e, 0x904f, + 0x9050, 0x9051, 0x9052, 0x9053, 0x9054, 0x9055, 0x9056, 0x9057, + 0x9058, 0x9059, 0x905a, 0x905b, 0x905c, 0x905d, 0x905e, 0x905f, + 0x9060, 0x9061, 0x9062, 0x9063, 0x9064, 0x9065, 0x9066, 0x9067, + 0x9068, 0x9069, 0x906a, 0x906b, 0x906c, 0x906d, 0x906e, 0x906f, + 0x9070, 0x9071, 0x9072, 0x9073, 0x9074, 0x9075, 0x9076, 0x9077, + 0x9078, 0x9079, 0x907a, 0x907b, 0x907c, 0x907d, 0x907e, 0x907f, + 0x9080, 0x9081, 0x9082, 0x9083, 0x9084, 0x9085, 0x9086, 0x9087, + 0x9088, 0x9089, 0x908a, 0x908b, 0x908c, 0x908d, 0x908e, 0x908f, + 0x9090, 0x9091, 0x9092, 0x9093, 0x9094, 0x9095, 0x9096, 0x9097, + 0x9098, 0x9099, 0x909a, 0x909b, 0x909c, 0x909d, 0x909e, 0x909f, + 0x90a0, 0x90a1, 0x90a2, 0x90a3, 0x90a4, 0x90a5, 0x90a6, 0x90a7, + 0x90a8, 0x90a9, 0x90aa, 0x90ab, 0x90ac, 0x90ad, 0x90ae, 0x90af, + 0x90b0, 0x90b1, 0x90b2, 0x90b3, 0x90b4, 0x90b5, 0x90b6, 0x90b7, + 0x90b8, 0x90b9, 0x90ba, 0x90bb, 0x90bc, 0x90bd, 0x90be, 0x90bf, + 0x90c0, 0x90c1, 0x90c2, 0x90c3, 0x90c4, 0x90c5, 0x90c6, 0x90c7, + 0x90c8, 0x90c9, 0x90ca, 0x90cb, 0x90cc, 0x90cd, 0x90ce, 0x90cf, + 0x90d0, 0x90d1, 0x90d2, 0x90d3, 0x90d4, 0x90d5, 0x90d6, 0x90d7, + 0x90d8, 0x90d9, 0x90da, 0x90db, 0x90dc, 0x90dd, 0x90de, 0x90df, + 0x90e0, 0x90e1, 0x90e2, 0x90e3, 0x90e4, 0x90e5, 0x90e6, 0x90e7, + 0x90e8, 0x90e9, 0x90ea, 0x90eb, 0x90ec, 0x90ed, 0x90ee, 0x90ef, + 0x90f0, 0x90f1, 0x90f2, 0x90f3, 0x90f4, 0x90f5, 0x90f6, 0x90f7, + 0x90f8, 0x90f9, 0x90fa, 0x90fb, 0x90fc, 0x90fd, 0x90fe, 0x90ff, + 0x9100, 0x9101, 0x9102, 0x9103, 0x9104, 0x9105, 0x9106, 0x9107, + 0x9108, 0x9109, 0x910a, 0x910b, 0x910c, 0x910d, 0x910e, 0x910f, + 0x9110, 0x9111, 0x9112, 0x9113, 0x9114, 0x9115, 0x9116, 0x9117, + 0x9118, 0x9119, 0x911a, 0x911b, 0x911c, 0x911d, 0x911e, 0x911f, + 0x9120, 0x9121, 0x9122, 0x9123, 0x9124, 0x9125, 0x9126, 0x9127, + 0x9128, 0x9129, 0x912a, 0x912b, 0x912c, 0x912d, 0x912e, 0x912f, + 0x9130, 0x9131, 0x9132, 0x9133, 0x9134, 0x9135, 0x9136, 0x9137, + 0x9138, 0x9139, 0x913a, 0x913b, 0x913c, 0x913d, 0x913e, 0x913f, + 0x9140, 0x9141, 0x9142, 0x9143, 0x9144, 0x9145, 0x9146, 0x9147, + 0x9148, 0x9149, 0x914a, 0x914b, 0x914c, 0x914d, 0x914e, 0x914f, + 0x9150, 0x9151, 0x9152, 0x9153, 0x9154, 0x9155, 0x9156, 0x9157, + 0x9158, 0x9159, 0x915a, 0x915b, 0x915c, 0x915d, 0x915e, 0x915f, + 0x9160, 0x9161, 0x9162, 0x9163, 0x9164, 0x9165, 0x9166, 0x9167, + 0x9168, 0x9169, 0x916a, 0x916b, 0x916c, 0x916d, 0x916e, 0x916f, + 0x9170, 0x9171, 0x9172, 0x9173, 0x9174, 0x9175, 0x9176, 0x9177, + 0x9178, 0x9179, 0x917a, 0x917b, 0x917c, 0x917d, 0x917e, 0x917f, + 0x9180, 0x9181, 0x9182, 0x9183, 0x9184, 0x9185, 0x9186, 0x9187, + 0x9188, 0x9189, 0x918a, 0x918b, 0x918c, 0x918d, 0x918e, 0x918f, + 0x9190, 0x9191, 0x9192, 0x9193, 0x9194, 0x9195, 0x9196, 0x9197, + 0x9198, 0x9199, 0x919a, 0x919b, 0x919c, 0x919d, 0x919e, 0x919f, + 0x91a0, 0x91a1, 0x91a2, 0x91a3, 0x91a4, 0x91a5, 0x91a6, 0x91a7, + 0x91a8, 0x91a9, 0x91aa, 0x91ab, 0x91ac, 0x91ad, 0x91ae, 0x91af, + 0x91b0, 0x91b1, 0x91b2, 0x91b3, 0x91b4, 0x91b5, 0x91b6, 0x91b7, + 0x91b8, 0x91b9, 0x91ba, 0x91bb, 0x91bc, 0x91bd, 0x91be, 0x91bf, + 0x91c0, 0x91c1, 0x91c2, 0x91c3, 0x91c4, 0x91c5, 0x91c6, 0x91c7, + 0x91c8, 0x91c9, 0x91ca, 0x91cb, 0x91cc, 0x91cd, 0x91ce, 0x91cf, + 0x91d0, 0x91d1, 0x91d2, 0x91d3, 0x91d4, 0x91d5, 0x91d6, 0x91d7, + 0x91d8, 0x91d9, 0x91da, 0x91db, 0x91dc, 0x91dd, 0x91de, 0x91df, + 0x91e0, 0x91e1, 0x91e2, 0x91e3, 0x91e4, 0x91e5, 0x91e6, 0x91e7, + 0x91e8, 0x91e9, 0x91ea, 0x91eb, 0x91ec, 0x91ed, 0x91ee, 0x91ef, + 0x91f0, 0x91f1, 0x91f2, 0x91f3, 0x91f4, 0x91f5, 0x91f6, 0x91f7, + 0x91f8, 0x91f9, 0x91fa, 0x91fb, 0x91fc, 0x91fd, 0x91fe, 0x91ff, + 0x9200, 0x9201, 0x9202, 0x9203, 0x9204, 0x9205, 0x9206, 0x9207, + 0x9208, 0x9209, 0x920a, 0x920b, 0x920c, 0x920d, 0x920e, 0x920f, + 0x9210, 0x9211, 0x9212, 0x9213, 0x9214, 0x9215, 0x9216, 0x9217, + 0x9218, 0x9219, 0x921a, 0x921b, 0x921c, 0x921d, 0x921e, 0x921f, + 0x9220, 0x9221, 0x9222, 0x9223, 0x9224, 0x9225, 0x9226, 0x9227, + 0x9228, 0x9229, 0x922a, 0x922b, 0x922c, 0x922d, 0x922e, 0x922f, + 0x9230, 0x9231, 0x9232, 0x9233, 0x9234, 0x9235, 0x9236, 0x9237, + 0x9238, 0x9239, 0x923a, 0x923b, 0x923c, 0x923d, 0x923e, 0x923f, + 0x9240, 0x9241, 0x9242, 0x9243, 0x9244, 0x9245, 0x9246, 0x9247, + 0x9248, 0x9249, 0x924a, 0x924b, 0x924c, 0x924d, 0x924e, 0x924f, + 0x9250, 0x9251, 0x9252, 0x9253, 0x9254, 0x9255, 0x9256, 0x9257, + 0x9258, 0x9259, 0x925a, 0x925b, 0x925c, 0x925d, 0x925e, 0x925f, + 0x9260, 0x9261, 0x9262, 0x9263, 0x9264, 0x9265, 0x9266, 0x9267, + 0x9268, 0x9269, 0x926a, 0x926b, 0x926c, 0x926d, 0x926e, 0x926f, + 0x9270, 0x9271, 0x9272, 0x9273, 0x9274, 0x9275, 0x9276, 0x9277, + 0x9278, 0x9279, 0x927a, 0x927b, 0x927c, 0x927d, 0x927e, 0x927f, + 0x9280, 0x9281, 0x9282, 0x9283, 0x9284, 0x9285, 0x9286, 0x9287, + 0x9288, 0x9289, 0x928a, 0x928b, 0x928c, 0x928d, 0x928e, 0x928f, + 0x9290, 0x9291, 0x9292, 0x9293, 0x9294, 0x9295, 0x9296, 0x9297, + 0x9298, 0x9299, 0x929a, 0x929b, 0x929c, 0x929d, 0x929e, 0x929f, + 0x92a0, 0x92a1, 0x92a2, 0x92a3, 0x92a4, 0x92a5, 0x92a6, 0x92a7, + 0x92a8, 0x92a9, 0x92aa, 0x92ab, 0x92ac, 0x92ad, 0x92ae, 0x92af, + 0x92b0, 0x92b1, 0x92b2, 0x92b3, 0x92b4, 0x92b5, 0x92b6, 0x92b7, + 0x92b8, 0x92b9, 0x92ba, 0x92bb, 0x92bc, 0x92bd, 0x92be, 0x92bf, + 0x92c0, 0x92c1, 0x92c2, 0x92c3, 0x92c4, 0x92c5, 0x92c6, 0x92c7, + 0x92c8, 0x92c9, 0x92ca, 0x92cb, 0x92cc, 0x92cd, 0x92ce, 0x92cf, + 0x92d0, 0x92d1, 0x92d2, 0x92d3, 0x92d4, 0x92d5, 0x92d6, 0x92d7, + 0x92d8, 0x92d9, 0x92da, 0x92db, 0x92dc, 0x92dd, 0x92de, 0x92df, + 0x92e0, 0x92e1, 0x92e2, 0x92e3, 0x92e4, 0x92e5, 0x92e6, 0x92e7, + 0x92e8, 0x92e9, 0x92ea, 0x92eb, 0x92ec, 0x92ed, 0x92ee, 0x92ef, + 0x92f0, 0x92f1, 0x92f2, 0x92f3, 0x92f4, 0x92f5, 0x92f6, 0x92f7, + 0x92f8, 0x92f9, 0x92fa, 0x92fb, 0x92fc, 0x92fd, 0x92fe, 0x92ff, + 0x9300, 0x9301, 0x9302, 0x9303, 0x9304, 0x9305, 0x9306, 0x9307, + 0x9308, 0x9309, 0x930a, 0x930b, 0x930c, 0x930d, 0x930e, 0x930f, + 0x9310, 0x9311, 0x9312, 0x9313, 0x9314, 0x9315, 0x9316, 0x9317, + 0x9318, 0x9319, 0x931a, 0x931b, 0x931c, 0x931d, 0x931e, 0x931f, + 0x9320, 0x9321, 0x9322, 0x9323, 0x9324, 0x9325, 0x9326, 0x9327, + 0x9328, 0x9329, 0x932a, 0x932b, 0x932c, 0x932d, 0x932e, 0x932f, + 0x9330, 0x9331, 0x9332, 0x9333, 0x9334, 0x9335, 0x9336, 0x9337, + 0x9338, 0x9339, 0x933a, 0x933b, 0x933c, 0x933d, 0x933e, 0x933f, + 0x9340, 0x9341, 0x9342, 0x9343, 0x9344, 0x9345, 0x9346, 0x9347, + 0x9348, 0x9349, 0x934a, 0x934b, 0x934c, 0x934d, 0x934e, 0x934f, + 0x9350, 0x9351, 0x9352, 0x9353, 0x9354, 0x9355, 0x9356, 0x9357, + 0x9358, 0x9359, 0x935a, 0x935b, 0x935c, 0x935d, 0x935e, 0x935f, + 0x9360, 0x9361, 0x9362, 0x9363, 0x9364, 0x9365, 0x9366, 0x9367, + 0x9368, 0x9369, 0x936a, 0x936b, 0x936c, 0x936d, 0x936e, 0x936f, + 0x9370, 0x9371, 0x9372, 0x9373, 0x9374, 0x9375, 0x9376, 0x9377, + 0x9378, 0x9379, 0x937a, 0x937b, 0x937c, 0x937d, 0x937e, 0x937f, + 0x9380, 0x9381, 0x9382, 0x9383, 0x9384, 0x9385, 0x9386, 0x9387, + 0x9388, 0x9389, 0x938a, 0x938b, 0x938c, 0x938d, 0x938e, 0x938f, + 0x9390, 0x9391, 0x9392, 0x9393, 0x9394, 0x9395, 0x9396, 0x9397, + 0x9398, 0x9399, 0x939a, 0x939b, 0x939c, 0x939d, 0x939e, 0x939f, + 0x93a0, 0x93a1, 0x93a2, 0x93a3, 0x93a4, 0x93a5, 0x93a6, 0x93a7, + 0x93a8, 0x93a9, 0x93aa, 0x93ab, 0x93ac, 0x93ad, 0x93ae, 0x93af, + 0x93b0, 0x93b1, 0x93b2, 0x93b3, 0x93b4, 0x93b5, 0x93b6, 0x93b7, + 0x93b8, 0x93b9, 0x93ba, 0x93bb, 0x93bc, 0x93bd, 0x93be, 0x93bf, + 0x93c0, 0x93c1, 0x93c2, 0x93c3, 0x93c4, 0x93c5, 0x93c6, 0x93c7, + 0x93c8, 0x93c9, 0x93ca, 0x93cb, 0x93cc, 0x93cd, 0x93ce, 0x93cf, + 0x93d0, 0x93d1, 0x93d2, 0x93d3, 0x93d4, 0x93d5, 0x93d6, 0x93d7, + 0x93d8, 0x93d9, 0x93da, 0x93db, 0x93dc, 0x93dd, 0x93de, 0x93df, + 0x93e0, 0x93e1, 0x93e2, 0x93e3, 0x93e4, 0x93e5, 0x93e6, 0x93e7, + 0x93e8, 0x93e9, 0x93ea, 0x93eb, 0x93ec, 0x93ed, 0x93ee, 0x93ef, + 0x93f0, 0x93f1, 0x93f2, 0x93f3, 0x93f4, 0x93f5, 0x93f6, 0x93f7, + 0x93f8, 0x93f9, 0x93fa, 0x93fb, 0x93fc, 0x93fd, 0x93fe, 0x93ff, + 0x9400, 0x9401, 0x9402, 0x9403, 0x9404, 0x9405, 0x9406, 0x9407, + 0x9408, 0x9409, 0x940a, 0x940b, 0x940c, 0x940d, 0x940e, 0x940f, + 0x9410, 0x9411, 0x9412, 0x9413, 0x9414, 0x9415, 0x9416, 0x9417, + 0x9418, 0x9419, 0x941a, 0x941b, 0x941c, 0x941d, 0x941e, 0x941f, + 0x9420, 0x9421, 0x9422, 0x9423, 0x9424, 0x9425, 0x9426, 0x9427, + 0x9428, 0x9429, 0x942a, 0x942b, 0x942c, 0x942d, 0x942e, 0x942f, + 0x9430, 0x9431, 0x9432, 0x9433, 0x9434, 0x9435, 0x9436, 0x9437, + 0x9438, 0x9439, 0x943a, 0x943b, 0x943c, 0x943d, 0x943e, 0x943f, + 0x9440, 0x9441, 0x9442, 0x9443, 0x9444, 0x9445, 0x9446, 0x9447, + 0x9448, 0x9449, 0x944a, 0x944b, 0x944c, 0x944d, 0x944e, 0x944f, + 0x9450, 0x9451, 0x9452, 0x9453, 0x9454, 0x9455, 0x9456, 0x9457, + 0x9458, 0x9459, 0x945a, 0x945b, 0x945c, 0x945d, 0x945e, 0x945f, + 0x9460, 0x9461, 0x9462, 0x9463, 0x9464, 0x9465, 0x9466, 0x9467, + 0x9468, 0x9469, 0x946a, 0x946b, 0x946c, 0x946d, 0x946e, 0x946f, + 0x9470, 0x9471, 0x9472, 0x9473, 0x9474, 0x9475, 0x9476, 0x9477, + 0x9478, 0x9479, 0x947a, 0x947b, 0x947c, 0x947d, 0x947e, 0x947f, + 0x9480, 0x9481, 0x9482, 0x9483, 0x9484, 0x9485, 0x9486, 0x9487, + 0x9488, 0x9489, 0x948a, 0x948b, 0x948c, 0x948d, 0x948e, 0x948f, + 0x9490, 0x9491, 0x9492, 0x9493, 0x9494, 0x9495, 0x9496, 0x9497, + 0x9498, 0x9499, 0x949a, 0x949b, 0x949c, 0x949d, 0x949e, 0x949f, + 0x94a0, 0x94a1, 0x94a2, 0x94a3, 0x94a4, 0x94a5, 0x94a6, 0x94a7, + 0x94a8, 0x94a9, 0x94aa, 0x94ab, 0x94ac, 0x94ad, 0x94ae, 0x94af, + 0x94b0, 0x94b1, 0x94b2, 0x94b3, 0x94b4, 0x94b5, 0x94b6, 0x94b7, + 0x94b8, 0x94b9, 0x94ba, 0x94bb, 0x94bc, 0x94bd, 0x94be, 0x94bf, + 0x94c0, 0x94c1, 0x94c2, 0x94c3, 0x94c4, 0x94c5, 0x94c6, 0x94c7, + 0x94c8, 0x94c9, 0x94ca, 0x94cb, 0x94cc, 0x94cd, 0x94ce, 0x94cf, + 0x94d0, 0x94d1, 0x94d2, 0x94d3, 0x94d4, 0x94d5, 0x94d6, 0x94d7, + 0x94d8, 0x94d9, 0x94da, 0x94db, 0x94dc, 0x94dd, 0x94de, 0x94df, + 0x94e0, 0x94e1, 0x94e2, 0x94e3, 0x94e4, 0x94e5, 0x94e6, 0x94e7, + 0x94e8, 0x94e9, 0x94ea, 0x94eb, 0x94ec, 0x94ed, 0x94ee, 0x94ef, + 0x94f0, 0x94f1, 0x94f2, 0x94f3, 0x94f4, 0x94f5, 0x94f6, 0x94f7, + 0x94f8, 0x94f9, 0x94fa, 0x94fb, 0x94fc, 0x94fd, 0x94fe, 0x94ff, + 0x9500, 0x9501, 0x9502, 0x9503, 0x9504, 0x9505, 0x9506, 0x9507, + 0x9508, 0x9509, 0x950a, 0x950b, 0x950c, 0x950d, 0x950e, 0x950f, + 0x9510, 0x9511, 0x9512, 0x9513, 0x9514, 0x9515, 0x9516, 0x9517, + 0x9518, 0x9519, 0x951a, 0x951b, 0x951c, 0x951d, 0x951e, 0x951f, + 0x9520, 0x9521, 0x9522, 0x9523, 0x9524, 0x9525, 0x9526, 0x9527, + 0x9528, 0x9529, 0x952a, 0x952b, 0x952c, 0x952d, 0x952e, 0x952f, + 0x9530, 0x9531, 0x9532, 0x9533, 0x9534, 0x9535, 0x9536, 0x9537, + 0x9538, 0x9539, 0x953a, 0x953b, 0x953c, 0x953d, 0x953e, 0x953f, + 0x9540, 0x9541, 0x9542, 0x9543, 0x9544, 0x9545, 0x9546, 0x9547, + 0x9548, 0x9549, 0x954a, 0x954b, 0x954c, 0x954d, 0x954e, 0x954f, + 0x9550, 0x9551, 0x9552, 0x9553, 0x9554, 0x9555, 0x9556, 0x9557, + 0x9558, 0x9559, 0x955a, 0x955b, 0x955c, 0x955d, 0x955e, 0x955f, + 0x9560, 0x9561, 0x9562, 0x9563, 0x9564, 0x9565, 0x9566, 0x9567, + 0x9568, 0x9569, 0x956a, 0x956b, 0x956c, 0x956d, 0x956e, 0x956f, + 0x9570, 0x9571, 0x9572, 0x9573, 0x9574, 0x9575, 0x9576, 0x9577, + 0x9578, 0x9579, 0x957a, 0x957b, 0x957c, 0x957d, 0x957e, 0x957f, + 0x9580, 0x9581, 0x9582, 0x9583, 0x9584, 0x9585, 0x9586, 0x9587, + 0x9588, 0x9589, 0x958a, 0x958b, 0x958c, 0x958d, 0x958e, 0x958f, + 0x9590, 0x9591, 0x9592, 0x9593, 0x9594, 0x9595, 0x9596, 0x9597, + 0x9598, 0x9599, 0x959a, 0x959b, 0x959c, 0x959d, 0x959e, 0x959f, + 0x95a0, 0x95a1, 0x95a2, 0x95a3, 0x95a4, 0x95a5, 0x95a6, 0x95a7, + 0x95a8, 0x95a9, 0x95aa, 0x95ab, 0x95ac, 0x95ad, 0x95ae, 0x95af, + 0x95b0, 0x95b1, 0x95b2, 0x95b3, 0x95b4, 0x95b5, 0x95b6, 0x95b7, + 0x95b8, 0x95b9, 0x95ba, 0x95bb, 0x95bc, 0x95bd, 0x95be, 0x95bf, + 0x95c0, 0x95c1, 0x95c2, 0x95c3, 0x95c4, 0x95c5, 0x95c6, 0x95c7, + 0x95c8, 0x95c9, 0x95ca, 0x95cb, 0x95cc, 0x95cd, 0x95ce, 0x95cf, + 0x95d0, 0x95d1, 0x95d2, 0x95d3, 0x95d4, 0x95d5, 0x95d6, 0x95d7, + 0x95d8, 0x95d9, 0x95da, 0x95db, 0x95dc, 0x95dd, 0x95de, 0x95df, + 0x95e0, 0x95e1, 0x95e2, 0x95e3, 0x95e4, 0x95e5, 0x95e6, 0x95e7, + 0x95e8, 0x95e9, 0x95ea, 0x95eb, 0x95ec, 0x95ed, 0x95ee, 0x95ef, + 0x95f0, 0x95f1, 0x95f2, 0x95f3, 0x95f4, 0x95f5, 0x95f6, 0x95f7, + 0x95f8, 0x95f9, 0x95fa, 0x95fb, 0x95fc, 0x95fd, 0x95fe, 0x95ff, + 0x9600, 0x9601, 0x9602, 0x9603, 0x9604, 0x9605, 0x9606, 0x9607, + 0x9608, 0x9609, 0x960a, 0x960b, 0x960c, 0x960d, 0x960e, 0x960f, + 0x9610, 0x9611, 0x9612, 0x9613, 0x9614, 0x9615, 0x9616, 0x9617, + 0x9618, 0x9619, 0x961a, 0x961b, 0x961c, 0x961d, 0x961e, 0x961f, + 0x9620, 0x9621, 0x9622, 0x9623, 0x9624, 0x9625, 0x9626, 0x9627, + 0x9628, 0x9629, 0x962a, 0x962b, 0x962c, 0x962d, 0x962e, 0x962f, + 0x9630, 0x9631, 0x9632, 0x9633, 0x9634, 0x9635, 0x9636, 0x9637, + 0x9638, 0x9639, 0x963a, 0x963b, 0x963c, 0x963d, 0x963e, 0x963f, + 0x9640, 0x9641, 0x9642, 0x9643, 0x9644, 0x9645, 0x9646, 0x9647, + 0x9648, 0x9649, 0x964a, 0x964b, 0x964c, 0x964d, 0x964e, 0x964f, + 0x9650, 0x9651, 0x9652, 0x9653, 0x9654, 0x9655, 0x9656, 0x9657, + 0x9658, 0x9659, 0x965a, 0x965b, 0x965c, 0x965d, 0x965e, 0x965f, + 0x9660, 0x9661, 0x9662, 0x9663, 0x9664, 0x9665, 0x9666, 0x9667, + 0x9668, 0x9669, 0x966a, 0x966b, 0x966c, 0x966d, 0x966e, 0x966f, + 0x9670, 0x9671, 0x9672, 0x9673, 0x9674, 0x9675, 0x9676, 0x9677, + 0x9678, 0x9679, 0x967a, 0x967b, 0x967c, 0x967d, 0x967e, 0x967f, + 0x9680, 0x9681, 0x9682, 0x9683, 0x9684, 0x9685, 0x9686, 0x9687, + 0x9688, 0x9689, 0x968a, 0x968b, 0x968c, 0x968d, 0x968e, 0x968f, + 0x9690, 0x9691, 0x9692, 0x9693, 0x9694, 0x9695, 0x9696, 0x9697, + 0x9698, 0x9699, 0x969a, 0x969b, 0x969c, 0x969d, 0x969e, 0x969f, + 0x96a0, 0x96a1, 0x96a2, 0x96a3, 0x96a4, 0x96a5, 0x96a6, 0x96a7, + 0x96a8, 0x96a9, 0x96aa, 0x96ab, 0x96ac, 0x96ad, 0x96ae, 0x96af, + 0x96b0, 0x96b1, 0x96b2, 0x96b3, 0x96b4, 0x96b5, 0x96b6, 0x96b7, + 0x96b8, 0x96b9, 0x96ba, 0x96bb, 0x96bc, 0x96bd, 0x96be, 0x96bf, + 0x96c0, 0x96c1, 0x96c2, 0x96c3, 0x96c4, 0x96c5, 0x96c6, 0x96c7, + 0x96c8, 0x96c9, 0x96ca, 0x96cb, 0x96cc, 0x96cd, 0x96ce, 0x96cf, + 0x96d0, 0x96d1, 0x96d2, 0x96d3, 0x96d4, 0x96d5, 0x96d6, 0x96d7, + 0x96d8, 0x96d9, 0x96da, 0x96db, 0x96dc, 0x96dd, 0x96de, 0x96df, + 0x96e0, 0x96e1, 0x96e2, 0x96e3, 0x96e4, 0x96e5, 0x96e6, 0x96e7, + 0x96e8, 0x96e9, 0x96ea, 0x96eb, 0x96ec, 0x96ed, 0x96ee, 0x96ef, + 0x96f0, 0x96f1, 0x96f2, 0x96f3, 0x96f4, 0x96f5, 0x96f6, 0x96f7, + 0x96f8, 0x96f9, 0x96fa, 0x96fb, 0x96fc, 0x96fd, 0x96fe, 0x96ff, + 0x9700, 0x9701, 0x9702, 0x9703, 0x9704, 0x9705, 0x9706, 0x9707, + 0x9708, 0x9709, 0x970a, 0x970b, 0x970c, 0x970d, 0x970e, 0x970f, + 0x9710, 0x9711, 0x9712, 0x9713, 0x9714, 0x9715, 0x9716, 0x9717, + 0x9718, 0x9719, 0x971a, 0x971b, 0x971c, 0x971d, 0x971e, 0x971f, + 0x9720, 0x9721, 0x9722, 0x9723, 0x9724, 0x9725, 0x9726, 0x9727, + 0x9728, 0x9729, 0x972a, 0x972b, 0x972c, 0x972d, 0x972e, 0x972f, + 0x9730, 0x9731, 0x9732, 0x9733, 0x9734, 0x9735, 0x9736, 0x9737, + 0x9738, 0x9739, 0x973a, 0x973b, 0x973c, 0x973d, 0x973e, 0x973f, + 0x9740, 0x9741, 0x9742, 0x9743, 0x9744, 0x9745, 0x9746, 0x9747, + 0x9748, 0x9749, 0x974a, 0x974b, 0x974c, 0x974d, 0x974e, 0x974f, + 0x9750, 0x9751, 0x9752, 0x9753, 0x9754, 0x9755, 0x9756, 0x9757, + 0x9758, 0x9759, 0x975a, 0x975b, 0x975c, 0x975d, 0x975e, 0x975f, + 0x9760, 0x9761, 0x9762, 0x9763, 0x9764, 0x9765, 0x9766, 0x9767, + 0x9768, 0x9769, 0x976a, 0x976b, 0x976c, 0x976d, 0x976e, 0x976f, + 0x9770, 0x9771, 0x9772, 0x9773, 0x9774, 0x9775, 0x9776, 0x9777, + 0x9778, 0x9779, 0x977a, 0x977b, 0x977c, 0x977d, 0x977e, 0x977f, + 0x9780, 0x9781, 0x9782, 0x9783, 0x9784, 0x9785, 0x9786, 0x9787, + 0x9788, 0x9789, 0x978a, 0x978b, 0x978c, 0x978d, 0x978e, 0x978f, + 0x9790, 0x9791, 0x9792, 0x9793, 0x9794, 0x9795, 0x9796, 0x9797, + 0x9798, 0x9799, 0x979a, 0x979b, 0x979c, 0x979d, 0x979e, 0x979f, + 0x97a0, 0x97a1, 0x97a2, 0x97a3, 0x97a4, 0x97a5, 0x97a6, 0x97a7, + 0x97a8, 0x97a9, 0x97aa, 0x97ab, 0x97ac, 0x97ad, 0x97ae, 0x97af, + 0x97b0, 0x97b1, 0x97b2, 0x97b3, 0x97b4, 0x97b5, 0x97b6, 0x97b7, + 0x97b8, 0x97b9, 0x97ba, 0x97bb, 0x97bc, 0x97bd, 0x97be, 0x97bf, + 0x97c0, 0x97c1, 0x97c2, 0x97c3, 0x97c4, 0x97c5, 0x97c6, 0x97c7, + 0x97c8, 0x97c9, 0x97ca, 0x97cb, 0x97cc, 0x97cd, 0x97ce, 0x97cf, + 0x97d0, 0x97d1, 0x97d2, 0x97d3, 0x97d4, 0x97d5, 0x97d6, 0x97d7, + 0x97d8, 0x97d9, 0x97da, 0x97db, 0x97dc, 0x97dd, 0x97de, 0x97df, + 0x97e0, 0x97e1, 0x97e2, 0x97e3, 0x97e4, 0x97e5, 0x97e6, 0x97e7, + 0x97e8, 0x97e9, 0x97ea, 0x97eb, 0x97ec, 0x97ed, 0x97ee, 0x97ef, + 0x97f0, 0x97f1, 0x97f2, 0x97f3, 0x97f4, 0x97f5, 0x97f6, 0x97f7, + 0x97f8, 0x97f9, 0x97fa, 0x97fb, 0x97fc, 0x97fd, 0x97fe, 0x97ff, + 0x9800, 0x9801, 0x9802, 0x9803, 0x9804, 0x9805, 0x9806, 0x9807, + 0x9808, 0x9809, 0x980a, 0x980b, 0x980c, 0x980d, 0x980e, 0x980f, + 0x9810, 0x9811, 0x9812, 0x9813, 0x9814, 0x9815, 0x9816, 0x9817, + 0x9818, 0x9819, 0x981a, 0x981b, 0x981c, 0x981d, 0x981e, 0x981f, + 0x9820, 0x9821, 0x9822, 0x9823, 0x9824, 0x9825, 0x9826, 0x9827, + 0x9828, 0x9829, 0x982a, 0x982b, 0x982c, 0x982d, 0x982e, 0x982f, + 0x9830, 0x9831, 0x9832, 0x9833, 0x9834, 0x9835, 0x9836, 0x9837, + 0x9838, 0x9839, 0x983a, 0x983b, 0x983c, 0x983d, 0x983e, 0x983f, + 0x9840, 0x9841, 0x9842, 0x9843, 0x9844, 0x9845, 0x9846, 0x9847, + 0x9848, 0x9849, 0x984a, 0x984b, 0x984c, 0x984d, 0x984e, 0x984f, + 0x9850, 0x9851, 0x9852, 0x9853, 0x9854, 0x9855, 0x9856, 0x9857, + 0x9858, 0x9859, 0x985a, 0x985b, 0x985c, 0x985d, 0x985e, 0x985f, + 0x9860, 0x9861, 0x9862, 0x9863, 0x9864, 0x9865, 0x9866, 0x9867, + 0x9868, 0x9869, 0x986a, 0x986b, 0x986c, 0x986d, 0x986e, 0x986f, + 0x9870, 0x9871, 0x9872, 0x9873, 0x9874, 0x9875, 0x9876, 0x9877, + 0x9878, 0x9879, 0x987a, 0x987b, 0x987c, 0x987d, 0x987e, 0x987f, + 0x9880, 0x9881, 0x9882, 0x9883, 0x9884, 0x9885, 0x9886, 0x9887, + 0x9888, 0x9889, 0x988a, 0x988b, 0x988c, 0x988d, 0x988e, 0x988f, + 0x9890, 0x9891, 0x9892, 0x9893, 0x9894, 0x9895, 0x9896, 0x9897, + 0x9898, 0x9899, 0x989a, 0x989b, 0x989c, 0x989d, 0x989e, 0x989f, + 0x98a0, 0x98a1, 0x98a2, 0x98a3, 0x98a4, 0x98a5, 0x98a6, 0x98a7, + 0x98a8, 0x98a9, 0x98aa, 0x98ab, 0x98ac, 0x98ad, 0x98ae, 0x98af, + 0x98b0, 0x98b1, 0x98b2, 0x98b3, 0x98b4, 0x98b5, 0x98b6, 0x98b7, + 0x98b8, 0x98b9, 0x98ba, 0x98bb, 0x98bc, 0x98bd, 0x98be, 0x98bf, + 0x98c0, 0x98c1, 0x98c2, 0x98c3, 0x98c4, 0x98c5, 0x98c6, 0x98c7, + 0x98c8, 0x98c9, 0x98ca, 0x98cb, 0x98cc, 0x98cd, 0x98ce, 0x98cf, + 0x98d0, 0x98d1, 0x98d2, 0x98d3, 0x98d4, 0x98d5, 0x98d6, 0x98d7, + 0x98d8, 0x98d9, 0x98da, 0x98db, 0x98dc, 0x98dd, 0x98de, 0x98df, + 0x98e0, 0x98e1, 0x98e2, 0x98e3, 0x98e4, 0x98e5, 0x98e6, 0x98e7, + 0x98e8, 0x98e9, 0x98ea, 0x98eb, 0x98ec, 0x98ed, 0x98ee, 0x98ef, + 0x98f0, 0x98f1, 0x98f2, 0x98f3, 0x98f4, 0x98f5, 0x98f6, 0x98f7, + 0x98f8, 0x98f9, 0x98fa, 0x98fb, 0x98fc, 0x98fd, 0x98fe, 0x98ff, + 0x9900, 0x9901, 0x9902, 0x9903, 0x9904, 0x9905, 0x9906, 0x9907, + 0x9908, 0x9909, 0x990a, 0x990b, 0x990c, 0x990d, 0x990e, 0x990f, + 0x9910, 0x9911, 0x9912, 0x9913, 0x9914, 0x9915, 0x9916, 0x9917, + 0x9918, 0x9919, 0x991a, 0x991b, 0x991c, 0x991d, 0x991e, 0x991f, + 0x9920, 0x9921, 0x9922, 0x9923, 0x9924, 0x9925, 0x9926, 0x9927, + 0x9928, 0x9929, 0x992a, 0x992b, 0x992c, 0x992d, 0x992e, 0x992f, + 0x9930, 0x9931, 0x9932, 0x9933, 0x9934, 0x9935, 0x9936, 0x9937, + 0x9938, 0x9939, 0x993a, 0x993b, 0x993c, 0x993d, 0x993e, 0x993f, + 0x9940, 0x9941, 0x9942, 0x9943, 0x9944, 0x9945, 0x9946, 0x9947, + 0x9948, 0x9949, 0x994a, 0x994b, 0x994c, 0x994d, 0x994e, 0x994f, + 0x9950, 0x9951, 0x9952, 0x9953, 0x9954, 0x9955, 0x9956, 0x9957, + 0x9958, 0x9959, 0x995a, 0x995b, 0x995c, 0x995d, 0x995e, 0x995f, + 0x9960, 0x9961, 0x9962, 0x9963, 0x9964, 0x9965, 0x9966, 0x9967, + 0x9968, 0x9969, 0x996a, 0x996b, 0x996c, 0x996d, 0x996e, 0x996f, + 0x9970, 0x9971, 0x9972, 0x9973, 0x9974, 0x9975, 0x9976, 0x9977, + 0x9978, 0x9979, 0x997a, 0x997b, 0x997c, 0x997d, 0x997e, 0x997f, + 0x9980, 0x9981, 0x9982, 0x9983, 0x9984, 0x9985, 0x9986, 0x9987, + 0x9988, 0x9989, 0x998a, 0x998b, 0x998c, 0x998d, 0x998e, 0x998f, + 0x9990, 0x9991, 0x9992, 0x9993, 0x9994, 0x9995, 0x9996, 0x9997, + 0x9998, 0x9999, 0x999a, 0x999b, 0x999c, 0x999d, 0x999e, 0x999f, + 0x99a0, 0x99a1, 0x99a2, 0x99a3, 0x99a4, 0x99a5, 0x99a6, 0x99a7, + 0x99a8, 0x99a9, 0x99aa, 0x99ab, 0x99ac, 0x99ad, 0x99ae, 0x99af, + 0x99b0, 0x99b1, 0x99b2, 0x99b3, 0x99b4, 0x99b5, 0x99b6, 0x99b7, + 0x99b8, 0x99b9, 0x99ba, 0x99bb, 0x99bc, 0x99bd, 0x99be, 0x99bf, + 0x99c0, 0x99c1, 0x99c2, 0x99c3, 0x99c4, 0x99c5, 0x99c6, 0x99c7, + 0x99c8, 0x99c9, 0x99ca, 0x99cb, 0x99cc, 0x99cd, 0x99ce, 0x99cf, + 0x99d0, 0x99d1, 0x99d2, 0x99d3, 0x99d4, 0x99d5, 0x99d6, 0x99d7, + 0x99d8, 0x99d9, 0x99da, 0x99db, 0x99dc, 0x99dd, 0x99de, 0x99df, + 0x99e0, 0x99e1, 0x99e2, 0x99e3, 0x99e4, 0x99e5, 0x99e6, 0x99e7, + 0x99e8, 0x99e9, 0x99ea, 0x99eb, 0x99ec, 0x99ed, 0x99ee, 0x99ef, + 0x99f0, 0x99f1, 0x99f2, 0x99f3, 0x99f4, 0x99f5, 0x99f6, 0x99f7, + 0x99f8, 0x99f9, 0x99fa, 0x99fb, 0x99fc, 0x99fd, 0x99fe, 0x99ff, + 0x9a00, 0x9a01, 0x9a02, 0x9a03, 0x9a04, 0x9a05, 0x9a06, 0x9a07, + 0x9a08, 0x9a09, 0x9a0a, 0x9a0b, 0x9a0c, 0x9a0d, 0x9a0e, 0x9a0f, + 0x9a10, 0x9a11, 0x9a12, 0x9a13, 0x9a14, 0x9a15, 0x9a16, 0x9a17, + 0x9a18, 0x9a19, 0x9a1a, 0x9a1b, 0x9a1c, 0x9a1d, 0x9a1e, 0x9a1f, + 0x9a20, 0x9a21, 0x9a22, 0x9a23, 0x9a24, 0x9a25, 0x9a26, 0x9a27, + 0x9a28, 0x9a29, 0x9a2a, 0x9a2b, 0x9a2c, 0x9a2d, 0x9a2e, 0x9a2f, + 0x9a30, 0x9a31, 0x9a32, 0x9a33, 0x9a34, 0x9a35, 0x9a36, 0x9a37, + 0x9a38, 0x9a39, 0x9a3a, 0x9a3b, 0x9a3c, 0x9a3d, 0x9a3e, 0x9a3f, + 0x9a40, 0x9a41, 0x9a42, 0x9a43, 0x9a44, 0x9a45, 0x9a46, 0x9a47, + 0x9a48, 0x9a49, 0x9a4a, 0x9a4b, 0x9a4c, 0x9a4d, 0x9a4e, 0x9a4f, + 0x9a50, 0x9a51, 0x9a52, 0x9a53, 0x9a54, 0x9a55, 0x9a56, 0x9a57, + 0x9a58, 0x9a59, 0x9a5a, 0x9a5b, 0x9a5c, 0x9a5d, 0x9a5e, 0x9a5f, + 0x9a60, 0x9a61, 0x9a62, 0x9a63, 0x9a64, 0x9a65, 0x9a66, 0x9a67, + 0x9a68, 0x9a69, 0x9a6a, 0x9a6b, 0x9a6c, 0x9a6d, 0x9a6e, 0x9a6f, + 0x9a70, 0x9a71, 0x9a72, 0x9a73, 0x9a74, 0x9a75, 0x9a76, 0x9a77, + 0x9a78, 0x9a79, 0x9a7a, 0x9a7b, 0x9a7c, 0x9a7d, 0x9a7e, 0x9a7f, + 0x9a80, 0x9a81, 0x9a82, 0x9a83, 0x9a84, 0x9a85, 0x9a86, 0x9a87, + 0x9a88, 0x9a89, 0x9a8a, 0x9a8b, 0x9a8c, 0x9a8d, 0x9a8e, 0x9a8f, + 0x9a90, 0x9a91, 0x9a92, 0x9a93, 0x9a94, 0x9a95, 0x9a96, 0x9a97, + 0x9a98, 0x9a99, 0x9a9a, 0x9a9b, 0x9a9c, 0x9a9d, 0x9a9e, 0x9a9f, + 0x9aa0, 0x9aa1, 0x9aa2, 0x9aa3, 0x9aa4, 0x9aa5, 0x9aa6, 0x9aa7, + 0x9aa8, 0x9aa9, 0x9aaa, 0x9aab, 0x9aac, 0x9aad, 0x9aae, 0x9aaf, + 0x9ab0, 0x9ab1, 0x9ab2, 0x9ab3, 0x9ab4, 0x9ab5, 0x9ab6, 0x9ab7, + 0x9ab8, 0x9ab9, 0x9aba, 0x9abb, 0x9abc, 0x9abd, 0x9abe, 0x9abf, + 0x9ac0, 0x9ac1, 0x9ac2, 0x9ac3, 0x9ac4, 0x9ac5, 0x9ac6, 0x9ac7, + 0x9ac8, 0x9ac9, 0x9aca, 0x9acb, 0x9acc, 0x9acd, 0x9ace, 0x9acf, + 0x9ad0, 0x9ad1, 0x9ad2, 0x9ad3, 0x9ad4, 0x9ad5, 0x9ad6, 0x9ad7, + 0x9ad8, 0x9ad9, 0x9ada, 0x9adb, 0x9adc, 0x9add, 0x9ade, 0x9adf, + 0x9ae0, 0x9ae1, 0x9ae2, 0x9ae3, 0x9ae4, 0x9ae5, 0x9ae6, 0x9ae7, + 0x9ae8, 0x9ae9, 0x9aea, 0x9aeb, 0x9aec, 0x9aed, 0x9aee, 0x9aef, + 0x9af0, 0x9af1, 0x9af2, 0x9af3, 0x9af4, 0x9af5, 0x9af6, 0x9af7, + 0x9af8, 0x9af9, 0x9afa, 0x9afb, 0x9afc, 0x9afd, 0x9afe, 0x9aff, + 0x9b00, 0x9b01, 0x9b02, 0x9b03, 0x9b04, 0x9b05, 0x9b06, 0x9b07, + 0x9b08, 0x9b09, 0x9b0a, 0x9b0b, 0x9b0c, 0x9b0d, 0x9b0e, 0x9b0f, + 0x9b10, 0x9b11, 0x9b12, 0x9b13, 0x9b14, 0x9b15, 0x9b16, 0x9b17, + 0x9b18, 0x9b19, 0x9b1a, 0x9b1b, 0x9b1c, 0x9b1d, 0x9b1e, 0x9b1f, + 0x9b20, 0x9b21, 0x9b22, 0x9b23, 0x9b24, 0x9b25, 0x9b26, 0x9b27, + 0x9b28, 0x9b29, 0x9b2a, 0x9b2b, 0x9b2c, 0x9b2d, 0x9b2e, 0x9b2f, + 0x9b30, 0x9b31, 0x9b32, 0x9b33, 0x9b34, 0x9b35, 0x9b36, 0x9b37, + 0x9b38, 0x9b39, 0x9b3a, 0x9b3b, 0x9b3c, 0x9b3d, 0x9b3e, 0x9b3f, + 0x9b40, 0x9b41, 0x9b42, 0x9b43, 0x9b44, 0x9b45, 0x9b46, 0x9b47, + 0x9b48, 0x9b49, 0x9b4a, 0x9b4b, 0x9b4c, 0x9b4d, 0x9b4e, 0x9b4f, + 0x9b50, 0x9b51, 0x9b52, 0x9b53, 0x9b54, 0x9b55, 0x9b56, 0x9b57, + 0x9b58, 0x9b59, 0x9b5a, 0x9b5b, 0x9b5c, 0x9b5d, 0x9b5e, 0x9b5f, + 0x9b60, 0x9b61, 0x9b62, 0x9b63, 0x9b64, 0x9b65, 0x9b66, 0x9b67, + 0x9b68, 0x9b69, 0x9b6a, 0x9b6b, 0x9b6c, 0x9b6d, 0x9b6e, 0x9b6f, + 0x9b70, 0x9b71, 0x9b72, 0x9b73, 0x9b74, 0x9b75, 0x9b76, 0x9b77, + 0x9b78, 0x9b79, 0x9b7a, 0x9b7b, 0x9b7c, 0x9b7d, 0x9b7e, 0x9b7f, + 0x9b80, 0x9b81, 0x9b82, 0x9b83, 0x9b84, 0x9b85, 0x9b86, 0x9b87, + 0x9b88, 0x9b89, 0x9b8a, 0x9b8b, 0x9b8c, 0x9b8d, 0x9b8e, 0x9b8f, + 0x9b90, 0x9b91, 0x9b92, 0x9b93, 0x9b94, 0x9b95, 0x9b96, 0x9b97, + 0x9b98, 0x9b99, 0x9b9a, 0x9b9b, 0x9b9c, 0x9b9d, 0x9b9e, 0x9b9f, + 0x9ba0, 0x9ba1, 0x9ba2, 0x9ba3, 0x9ba4, 0x9ba5, 0x9ba6, 0x9ba7, + 0x9ba8, 0x9ba9, 0x9baa, 0x9bab, 0x9bac, 0x9bad, 0x9bae, 0x9baf, + 0x9bb0, 0x9bb1, 0x9bb2, 0x9bb3, 0x9bb4, 0x9bb5, 0x9bb6, 0x9bb7, + 0x9bb8, 0x9bb9, 0x9bba, 0x9bbb, 0x9bbc, 0x9bbd, 0x9bbe, 0x9bbf, + 0x9bc0, 0x9bc1, 0x9bc2, 0x9bc3, 0x9bc4, 0x9bc5, 0x9bc6, 0x9bc7, + 0x9bc8, 0x9bc9, 0x9bca, 0x9bcb, 0x9bcc, 0x9bcd, 0x9bce, 0x9bcf, + 0x9bd0, 0x9bd1, 0x9bd2, 0x9bd3, 0x9bd4, 0x9bd5, 0x9bd6, 0x9bd7, + 0x9bd8, 0x9bd9, 0x9bda, 0x9bdb, 0x9bdc, 0x9bdd, 0x9bde, 0x9bdf, + 0x9be0, 0x9be1, 0x9be2, 0x9be3, 0x9be4, 0x9be5, 0x9be6, 0x9be7, + 0x9be8, 0x9be9, 0x9bea, 0x9beb, 0x9bec, 0x9bed, 0x9bee, 0x9bef, + 0x9bf0, 0x9bf1, 0x9bf2, 0x9bf3, 0x9bf4, 0x9bf5, 0x9bf6, 0x9bf7, + 0x9bf8, 0x9bf9, 0x9bfa, 0x9bfb, 0x9bfc, 0x9bfd, 0x9bfe, 0x9bff, + 0x9c00, 0x9c01, 0x9c02, 0x9c03, 0x9c04, 0x9c05, 0x9c06, 0x9c07, + 0x9c08, 0x9c09, 0x9c0a, 0x9c0b, 0x9c0c, 0x9c0d, 0x9c0e, 0x9c0f, + 0x9c10, 0x9c11, 0x9c12, 0x9c13, 0x9c14, 0x9c15, 0x9c16, 0x9c17, + 0x9c18, 0x9c19, 0x9c1a, 0x9c1b, 0x9c1c, 0x9c1d, 0x9c1e, 0x9c1f, + 0x9c20, 0x9c21, 0x9c22, 0x9c23, 0x9c24, 0x9c25, 0x9c26, 0x9c27, + 0x9c28, 0x9c29, 0x9c2a, 0x9c2b, 0x9c2c, 0x9c2d, 0x9c2e, 0x9c2f, + 0x9c30, 0x9c31, 0x9c32, 0x9c33, 0x9c34, 0x9c35, 0x9c36, 0x9c37, + 0x9c38, 0x9c39, 0x9c3a, 0x9c3b, 0x9c3c, 0x9c3d, 0x9c3e, 0x9c3f, + 0x9c40, 0x9c41, 0x9c42, 0x9c43, 0x9c44, 0x9c45, 0x9c46, 0x9c47, + 0x9c48, 0x9c49, 0x9c4a, 0x9c4b, 0x9c4c, 0x9c4d, 0x9c4e, 0x9c4f, + 0x9c50, 0x9c51, 0x9c52, 0x9c53, 0x9c54, 0x9c55, 0x9c56, 0x9c57, + 0x9c58, 0x9c59, 0x9c5a, 0x9c5b, 0x9c5c, 0x9c5d, 0x9c5e, 0x9c5f, + 0x9c60, 0x9c61, 0x9c62, 0x9c63, 0x9c64, 0x9c65, 0x9c66, 0x9c67, + 0x9c68, 0x9c69, 0x9c6a, 0x9c6b, 0x9c6c, 0x9c6d, 0x9c6e, 0x9c6f, + 0x9c70, 0x9c71, 0x9c72, 0x9c73, 0x9c74, 0x9c75, 0x9c76, 0x9c77, + 0x9c78, 0x9c79, 0x9c7a, 0x9c7b, 0x9c7c, 0x9c7d, 0x9c7e, 0x9c7f, + 0x9c80, 0x9c81, 0x9c82, 0x9c83, 0x9c84, 0x9c85, 0x9c86, 0x9c87, + 0x9c88, 0x9c89, 0x9c8a, 0x9c8b, 0x9c8c, 0x9c8d, 0x9c8e, 0x9c8f, + 0x9c90, 0x9c91, 0x9c92, 0x9c93, 0x9c94, 0x9c95, 0x9c96, 0x9c97, + 0x9c98, 0x9c99, 0x9c9a, 0x9c9b, 0x9c9c, 0x9c9d, 0x9c9e, 0x9c9f, + 0x9ca0, 0x9ca1, 0x9ca2, 0x9ca3, 0x9ca4, 0x9ca5, 0x9ca6, 0x9ca7, + 0x9ca8, 0x9ca9, 0x9caa, 0x9cab, 0x9cac, 0x9cad, 0x9cae, 0x9caf, + 0x9cb0, 0x9cb1, 0x9cb2, 0x9cb3, 0x9cb4, 0x9cb5, 0x9cb6, 0x9cb7, + 0x9cb8, 0x9cb9, 0x9cba, 0x9cbb, 0x9cbc, 0x9cbd, 0x9cbe, 0x9cbf, + 0x9cc0, 0x9cc1, 0x9cc2, 0x9cc3, 0x9cc4, 0x9cc5, 0x9cc6, 0x9cc7, + 0x9cc8, 0x9cc9, 0x9cca, 0x9ccb, 0x9ccc, 0x9ccd, 0x9cce, 0x9ccf, + 0x9cd0, 0x9cd1, 0x9cd2, 0x9cd3, 0x9cd4, 0x9cd5, 0x9cd6, 0x9cd7, + 0x9cd8, 0x9cd9, 0x9cda, 0x9cdb, 0x9cdc, 0x9cdd, 0x9cde, 0x9cdf, + 0x9ce0, 0x9ce1, 0x9ce2, 0x9ce3, 0x9ce4, 0x9ce5, 0x9ce6, 0x9ce7, + 0x9ce8, 0x9ce9, 0x9cea, 0x9ceb, 0x9cec, 0x9ced, 0x9cee, 0x9cef, + 0x9cf0, 0x9cf1, 0x9cf2, 0x9cf3, 0x9cf4, 0x9cf5, 0x9cf6, 0x9cf7, + 0x9cf8, 0x9cf9, 0x9cfa, 0x9cfb, 0x9cfc, 0x9cfd, 0x9cfe, 0x9cff, + 0x9d00, 0x9d01, 0x9d02, 0x9d03, 0x9d04, 0x9d05, 0x9d06, 0x9d07, + 0x9d08, 0x9d09, 0x9d0a, 0x9d0b, 0x9d0c, 0x9d0d, 0x9d0e, 0x9d0f, + 0x9d10, 0x9d11, 0x9d12, 0x9d13, 0x9d14, 0x9d15, 0x9d16, 0x9d17, + 0x9d18, 0x9d19, 0x9d1a, 0x9d1b, 0x9d1c, 0x9d1d, 0x9d1e, 0x9d1f, + 0x9d20, 0x9d21, 0x9d22, 0x9d23, 0x9d24, 0x9d25, 0x9d26, 0x9d27, + 0x9d28, 0x9d29, 0x9d2a, 0x9d2b, 0x9d2c, 0x9d2d, 0x9d2e, 0x9d2f, + 0x9d30, 0x9d31, 0x9d32, 0x9d33, 0x9d34, 0x9d35, 0x9d36, 0x9d37, + 0x9d38, 0x9d39, 0x9d3a, 0x9d3b, 0x9d3c, 0x9d3d, 0x9d3e, 0x9d3f, + 0x9d40, 0x9d41, 0x9d42, 0x9d43, 0x9d44, 0x9d45, 0x9d46, 0x9d47, + 0x9d48, 0x9d49, 0x9d4a, 0x9d4b, 0x9d4c, 0x9d4d, 0x9d4e, 0x9d4f, + 0x9d50, 0x9d51, 0x9d52, 0x9d53, 0x9d54, 0x9d55, 0x9d56, 0x9d57, + 0x9d58, 0x9d59, 0x9d5a, 0x9d5b, 0x9d5c, 0x9d5d, 0x9d5e, 0x9d5f, + 0x9d60, 0x9d61, 0x9d62, 0x9d63, 0x9d64, 0x9d65, 0x9d66, 0x9d67, + 0x9d68, 0x9d69, 0x9d6a, 0x9d6b, 0x9d6c, 0x9d6d, 0x9d6e, 0x9d6f, + 0x9d70, 0x9d71, 0x9d72, 0x9d73, 0x9d74, 0x9d75, 0x9d76, 0x9d77, + 0x9d78, 0x9d79, 0x9d7a, 0x9d7b, 0x9d7c, 0x9d7d, 0x9d7e, 0x9d7f, + 0x9d80, 0x9d81, 0x9d82, 0x9d83, 0x9d84, 0x9d85, 0x9d86, 0x9d87, + 0x9d88, 0x9d89, 0x9d8a, 0x9d8b, 0x9d8c, 0x9d8d, 0x9d8e, 0x9d8f, + 0x9d90, 0x9d91, 0x9d92, 0x9d93, 0x9d94, 0x9d95, 0x9d96, 0x9d97, + 0x9d98, 0x9d99, 0x9d9a, 0x9d9b, 0x9d9c, 0x9d9d, 0x9d9e, 0x9d9f, + 0x9da0, 0x9da1, 0x9da2, 0x9da3, 0x9da4, 0x9da5, 0x9da6, 0x9da7, + 0x9da8, 0x9da9, 0x9daa, 0x9dab, 0x9dac, 0x9dad, 0x9dae, 0x9daf, + 0x9db0, 0x9db1, 0x9db2, 0x9db3, 0x9db4, 0x9db5, 0x9db6, 0x9db7, + 0x9db8, 0x9db9, 0x9dba, 0x9dbb, 0x9dbc, 0x9dbd, 0x9dbe, 0x9dbf, + 0x9dc0, 0x9dc1, 0x9dc2, 0x9dc3, 0x9dc4, 0x9dc5, 0x9dc6, 0x9dc7, + 0x9dc8, 0x9dc9, 0x9dca, 0x9dcb, 0x9dcc, 0x9dcd, 0x9dce, 0x9dcf, + 0x9dd0, 0x9dd1, 0x9dd2, 0x9dd3, 0x9dd4, 0x9dd5, 0x9dd6, 0x9dd7, + 0x9dd8, 0x9dd9, 0x9dda, 0x9ddb, 0x9ddc, 0x9ddd, 0x9dde, 0x9ddf, + 0x9de0, 0x9de1, 0x9de2, 0x9de3, 0x9de4, 0x9de5, 0x9de6, 0x9de7, + 0x9de8, 0x9de9, 0x9dea, 0x9deb, 0x9dec, 0x9ded, 0x9dee, 0x9def, + 0x9df0, 0x9df1, 0x9df2, 0x9df3, 0x9df4, 0x9df5, 0x9df6, 0x9df7, + 0x9df8, 0x9df9, 0x9dfa, 0x9dfb, 0x9dfc, 0x9dfd, 0x9dfe, 0x9dff, + 0x9e00, 0x9e01, 0x9e02, 0x9e03, 0x9e04, 0x9e05, 0x9e06, 0x9e07, + 0x9e08, 0x9e09, 0x9e0a, 0x9e0b, 0x9e0c, 0x9e0d, 0x9e0e, 0x9e0f, + 0x9e10, 0x9e11, 0x9e12, 0x9e13, 0x9e14, 0x9e15, 0x9e16, 0x9e17, + 0x9e18, 0x9e19, 0x9e1a, 0x9e1b, 0x9e1c, 0x9e1d, 0x9e1e, 0x9e1f, + 0x9e20, 0x9e21, 0x9e22, 0x9e23, 0x9e24, 0x9e25, 0x9e26, 0x9e27, + 0x9e28, 0x9e29, 0x9e2a, 0x9e2b, 0x9e2c, 0x9e2d, 0x9e2e, 0x9e2f, + 0x9e30, 0x9e31, 0x9e32, 0x9e33, 0x9e34, 0x9e35, 0x9e36, 0x9e37, + 0x9e38, 0x9e39, 0x9e3a, 0x9e3b, 0x9e3c, 0x9e3d, 0x9e3e, 0x9e3f, + 0x9e40, 0x9e41, 0x9e42, 0x9e43, 0x9e44, 0x9e45, 0x9e46, 0x9e47, + 0x9e48, 0x9e49, 0x9e4a, 0x9e4b, 0x9e4c, 0x9e4d, 0x9e4e, 0x9e4f, + 0x9e50, 0x9e51, 0x9e52, 0x9e53, 0x9e54, 0x9e55, 0x9e56, 0x9e57, + 0x9e58, 0x9e59, 0x9e5a, 0x9e5b, 0x9e5c, 0x9e5d, 0x9e5e, 0x9e5f, + 0x9e60, 0x9e61, 0x9e62, 0x9e63, 0x9e64, 0x9e65, 0x9e66, 0x9e67, + 0x9e68, 0x9e69, 0x9e6a, 0x9e6b, 0x9e6c, 0x9e6d, 0x9e6e, 0x9e6f, + 0x9e70, 0x9e71, 0x9e72, 0x9e73, 0x9e74, 0x9e75, 0x9e76, 0x9e77, + 0x9e78, 0x9e79, 0x9e7a, 0x9e7b, 0x9e7c, 0x9e7d, 0x9e7e, 0x9e7f, + 0x9e80, 0x9e81, 0x9e82, 0x9e83, 0x9e84, 0x9e85, 0x9e86, 0x9e87, + 0x9e88, 0x9e89, 0x9e8a, 0x9e8b, 0x9e8c, 0x9e8d, 0x9e8e, 0x9e8f, + 0x9e90, 0x9e91, 0x9e92, 0x9e93, 0x9e94, 0x9e95, 0x9e96, 0x9e97, + 0x9e98, 0x9e99, 0x9e9a, 0x9e9b, 0x9e9c, 0x9e9d, 0x9e9e, 0x9e9f, + 0x9ea0, 0x9ea1, 0x9ea2, 0x9ea3, 0x9ea4, 0x9ea5, 0x9ea6, 0x9ea7, + 0x9ea8, 0x9ea9, 0x9eaa, 0x9eab, 0x9eac, 0x9ead, 0x9eae, 0x9eaf, + 0x9eb0, 0x9eb1, 0x9eb2, 0x9eb3, 0x9eb4, 0x9eb5, 0x9eb6, 0x9eb7, + 0x9eb8, 0x9eb9, 0x9eba, 0x9ebb, 0x9ebc, 0x9ebd, 0x9ebe, 0x9ebf, + 0x9ec0, 0x9ec1, 0x9ec2, 0x9ec3, 0x9ec4, 0x9ec5, 0x9ec6, 0x9ec7, + 0x9ec8, 0x9ec9, 0x9eca, 0x9ecb, 0x9ecc, 0x9ecd, 0x9ece, 0x9ecf, + 0x9ed0, 0x9ed1, 0x9ed2, 0x9ed3, 0x9ed4, 0x9ed5, 0x9ed6, 0x9ed7, + 0x9ed8, 0x9ed9, 0x9eda, 0x9edb, 0x9edc, 0x9edd, 0x9ede, 0x9edf, + 0x9ee0, 0x9ee1, 0x9ee2, 0x9ee3, 0x9ee4, 0x9ee5, 0x9ee6, 0x9ee7, + 0x9ee8, 0x9ee9, 0x9eea, 0x9eeb, 0x9eec, 0x9eed, 0x9eee, 0x9eef, + 0x9ef0, 0x9ef1, 0x9ef2, 0x9ef3, 0x9ef4, 0x9ef5, 0x9ef6, 0x9ef7, + 0x9ef8, 0x9ef9, 0x9efa, 0x9efb, 0x9efc, 0x9efd, 0x9efe, 0x9eff, + 0x9f00, 0x9f01, 0x9f02, 0x9f03, 0x9f04, 0x9f05, 0x9f06, 0x9f07, + 0x9f08, 0x9f09, 0x9f0a, 0x9f0b, 0x9f0c, 0x9f0d, 0x9f0e, 0x9f0f, + 0x9f10, 0x9f11, 0x9f12, 0x9f13, 0x9f14, 0x9f15, 0x9f16, 0x9f17, + 0x9f18, 0x9f19, 0x9f1a, 0x9f1b, 0x9f1c, 0x9f1d, 0x9f1e, 0x9f1f, + 0x9f20, 0x9f21, 0x9f22, 0x9f23, 0x9f24, 0x9f25, 0x9f26, 0x9f27, + 0x9f28, 0x9f29, 0x9f2a, 0x9f2b, 0x9f2c, 0x9f2d, 0x9f2e, 0x9f2f, + 0x9f30, 0x9f31, 0x9f32, 0x9f33, 0x9f34, 0x9f35, 0x9f36, 0x9f37, + 0x9f38, 0x9f39, 0x9f3a, 0x9f3b, 0x9f3c, 0x9f3d, 0x9f3e, 0x9f3f, + 0x9f40, 0x9f41, 0x9f42, 0x9f43, 0x9f44, 0x9f45, 0x9f46, 0x9f47, + 0x9f48, 0x9f49, 0x9f4a, 0x9f4b, 0x9f4c, 0x9f4d, 0x9f4e, 0x9f4f, + 0x9f50, 0x9f51, 0x9f52, 0x9f53, 0x9f54, 0x9f55, 0x9f56, 0x9f57, + 0x9f58, 0x9f59, 0x9f5a, 0x9f5b, 0x9f5c, 0x9f5d, 0x9f5e, 0x9f5f, + 0x9f60, 0x9f61, 0x9f62, 0x9f63, 0x9f64, 0x9f65, 0x9f66, 0x9f67, + 0x9f68, 0x9f69, 0x9f6a, 0x9f6b, 0x9f6c, 0x9f6d, 0x9f6e, 0x9f6f, + 0x9f70, 0x9f71, 0x9f72, 0x9f73, 0x9f74, 0x9f75, 0x9f76, 0x9f77, + 0x9f78, 0x9f79, 0x9f7a, 0x9f7b, 0x9f7c, 0x9f7d, 0x9f7e, 0x9f7f, + 0x9f80, 0x9f81, 0x9f82, 0x9f83, 0x9f84, 0x9f85, 0x9f86, 0x9f87, + 0x9f88, 0x9f89, 0x9f8a, 0x9f8b, 0x9f8c, 0x9f8d, 0x9f8e, 0x9f8f, + 0x9f90, 0x9f91, 0x9f92, 0x9f93, 0x9f94, 0x9f95, 0x9f96, 0x9f97, + 0x9f98, 0x9f99, 0x9f9a, 0x9f9b, 0x9f9c, 0x9f9d, 0x9f9e, 0x9f9f, + 0x9fa0, 0x9fa1, 0x9fa2, 0x9fa3, 0x9fa4, 0x9fa5, 0x9fa6, 0x9fa7, + 0x9fa8, 0x9fa9, 0x9faa, 0x9fab, 0x9fac, 0x9fad, 0x9fae, 0x9faf, + 0x9fb0, 0x9fb1, 0x9fb2, 0x9fb3, 0x9fb4, 0x9fb5, 0x9fb6, 0x9fb7, + 0x9fb8, 0x9fb9, 0x9fba, 0x9fbb, 0x9fbc, 0x9fbd, 0x9fbe, 0x9fbf, + 0x9fc0, 0x9fc1, 0x9fc2, 0x9fc3, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xa000, 0xa001, 0xa002, 0xa003, 0xa004, 0xa005, 0xa006, 0xa007, + 0xa008, 0xa009, 0xa00a, 0xa00b, 0xa00c, 0xa00d, 0xa00e, 0xa00f, + 0xa010, 0xa011, 0xa012, 0xa013, 0xa014, 0xa015, 0xa016, 0xa017, + 0xa018, 0xa019, 0xa01a, 0xa01b, 0xa01c, 0xa01d, 0xa01e, 0xa01f, + 0xa020, 0xa021, 0xa022, 0xa023, 0xa024, 0xa025, 0xa026, 0xa027, + 0xa028, 0xa029, 0xa02a, 0xa02b, 0xa02c, 0xa02d, 0xa02e, 0xa02f, + 0xa030, 0xa031, 0xa032, 0xa033, 0xa034, 0xa035, 0xa036, 0xa037, + 0xa038, 0xa039, 0xa03a, 0xa03b, 0xa03c, 0xa03d, 0xa03e, 0xa03f, + 0xa040, 0xa041, 0xa042, 0xa043, 0xa044, 0xa045, 0xa046, 0xa047, + 0xa048, 0xa049, 0xa04a, 0xa04b, 0xa04c, 0xa04d, 0xa04e, 0xa04f, + 0xa050, 0xa051, 0xa052, 0xa053, 0xa054, 0xa055, 0xa056, 0xa057, + 0xa058, 0xa059, 0xa05a, 0xa05b, 0xa05c, 0xa05d, 0xa05e, 0xa05f, + 0xa060, 0xa061, 0xa062, 0xa063, 0xa064, 0xa065, 0xa066, 0xa067, + 0xa068, 0xa069, 0xa06a, 0xa06b, 0xa06c, 0xa06d, 0xa06e, 0xa06f, + 0xa070, 0xa071, 0xa072, 0xa073, 0xa074, 0xa075, 0xa076, 0xa077, + 0xa078, 0xa079, 0xa07a, 0xa07b, 0xa07c, 0xa07d, 0xa07e, 0xa07f, + 0xa080, 0xa081, 0xa082, 0xa083, 0xa084, 0xa085, 0xa086, 0xa087, + 0xa088, 0xa089, 0xa08a, 0xa08b, 0xa08c, 0xa08d, 0xa08e, 0xa08f, + 0xa090, 0xa091, 0xa092, 0xa093, 0xa094, 0xa095, 0xa096, 0xa097, + 0xa098, 0xa099, 0xa09a, 0xa09b, 0xa09c, 0xa09d, 0xa09e, 0xa09f, + 0xa0a0, 0xa0a1, 0xa0a2, 0xa0a3, 0xa0a4, 0xa0a5, 0xa0a6, 0xa0a7, + 0xa0a8, 0xa0a9, 0xa0aa, 0xa0ab, 0xa0ac, 0xa0ad, 0xa0ae, 0xa0af, + 0xa0b0, 0xa0b1, 0xa0b2, 0xa0b3, 0xa0b4, 0xa0b5, 0xa0b6, 0xa0b7, + 0xa0b8, 0xa0b9, 0xa0ba, 0xa0bb, 0xa0bc, 0xa0bd, 0xa0be, 0xa0bf, + 0xa0c0, 0xa0c1, 0xa0c2, 0xa0c3, 0xa0c4, 0xa0c5, 0xa0c6, 0xa0c7, + 0xa0c8, 0xa0c9, 0xa0ca, 0xa0cb, 0xa0cc, 0xa0cd, 0xa0ce, 0xa0cf, + 0xa0d0, 0xa0d1, 0xa0d2, 0xa0d3, 0xa0d4, 0xa0d5, 0xa0d6, 0xa0d7, + 0xa0d8, 0xa0d9, 0xa0da, 0xa0db, 0xa0dc, 0xa0dd, 0xa0de, 0xa0df, + 0xa0e0, 0xa0e1, 0xa0e2, 0xa0e3, 0xa0e4, 0xa0e5, 0xa0e6, 0xa0e7, + 0xa0e8, 0xa0e9, 0xa0ea, 0xa0eb, 0xa0ec, 0xa0ed, 0xa0ee, 0xa0ef, + 0xa0f0, 0xa0f1, 0xa0f2, 0xa0f3, 0xa0f4, 0xa0f5, 0xa0f6, 0xa0f7, + 0xa0f8, 0xa0f9, 0xa0fa, 0xa0fb, 0xa0fc, 0xa0fd, 0xa0fe, 0xa0ff, + 0xa100, 0xa101, 0xa102, 0xa103, 0xa104, 0xa105, 0xa106, 0xa107, + 0xa108, 0xa109, 0xa10a, 0xa10b, 0xa10c, 0xa10d, 0xa10e, 0xa10f, + 0xa110, 0xa111, 0xa112, 0xa113, 0xa114, 0xa115, 0xa116, 0xa117, + 0xa118, 0xa119, 0xa11a, 0xa11b, 0xa11c, 0xa11d, 0xa11e, 0xa11f, + 0xa120, 0xa121, 0xa122, 0xa123, 0xa124, 0xa125, 0xa126, 0xa127, + 0xa128, 0xa129, 0xa12a, 0xa12b, 0xa12c, 0xa12d, 0xa12e, 0xa12f, + 0xa130, 0xa131, 0xa132, 0xa133, 0xa134, 0xa135, 0xa136, 0xa137, + 0xa138, 0xa139, 0xa13a, 0xa13b, 0xa13c, 0xa13d, 0xa13e, 0xa13f, + 0xa140, 0xa141, 0xa142, 0xa143, 0xa144, 0xa145, 0xa146, 0xa147, + 0xa148, 0xa149, 0xa14a, 0xa14b, 0xa14c, 0xa14d, 0xa14e, 0xa14f, + 0xa150, 0xa151, 0xa152, 0xa153, 0xa154, 0xa155, 0xa156, 0xa157, + 0xa158, 0xa159, 0xa15a, 0xa15b, 0xa15c, 0xa15d, 0xa15e, 0xa15f, + 0xa160, 0xa161, 0xa162, 0xa163, 0xa164, 0xa165, 0xa166, 0xa167, + 0xa168, 0xa169, 0xa16a, 0xa16b, 0xa16c, 0xa16d, 0xa16e, 0xa16f, + 0xa170, 0xa171, 0xa172, 0xa173, 0xa174, 0xa175, 0xa176, 0xa177, + 0xa178, 0xa179, 0xa17a, 0xa17b, 0xa17c, 0xa17d, 0xa17e, 0xa17f, + 0xa180, 0xa181, 0xa182, 0xa183, 0xa184, 0xa185, 0xa186, 0xa187, + 0xa188, 0xa189, 0xa18a, 0xa18b, 0xa18c, 0xa18d, 0xa18e, 0xa18f, + 0xa190, 0xa191, 0xa192, 0xa193, 0xa194, 0xa195, 0xa196, 0xa197, + 0xa198, 0xa199, 0xa19a, 0xa19b, 0xa19c, 0xa19d, 0xa19e, 0xa19f, + 0xa1a0, 0xa1a1, 0xa1a2, 0xa1a3, 0xa1a4, 0xa1a5, 0xa1a6, 0xa1a7, + 0xa1a8, 0xa1a9, 0xa1aa, 0xa1ab, 0xa1ac, 0xa1ad, 0xa1ae, 0xa1af, + 0xa1b0, 0xa1b1, 0xa1b2, 0xa1b3, 0xa1b4, 0xa1b5, 0xa1b6, 0xa1b7, + 0xa1b8, 0xa1b9, 0xa1ba, 0xa1bb, 0xa1bc, 0xa1bd, 0xa1be, 0xa1bf, + 0xa1c0, 0xa1c1, 0xa1c2, 0xa1c3, 0xa1c4, 0xa1c5, 0xa1c6, 0xa1c7, + 0xa1c8, 0xa1c9, 0xa1ca, 0xa1cb, 0xa1cc, 0xa1cd, 0xa1ce, 0xa1cf, + 0xa1d0, 0xa1d1, 0xa1d2, 0xa1d3, 0xa1d4, 0xa1d5, 0xa1d6, 0xa1d7, + 0xa1d8, 0xa1d9, 0xa1da, 0xa1db, 0xa1dc, 0xa1dd, 0xa1de, 0xa1df, + 0xa1e0, 0xa1e1, 0xa1e2, 0xa1e3, 0xa1e4, 0xa1e5, 0xa1e6, 0xa1e7, + 0xa1e8, 0xa1e9, 0xa1ea, 0xa1eb, 0xa1ec, 0xa1ed, 0xa1ee, 0xa1ef, + 0xa1f0, 0xa1f1, 0xa1f2, 0xa1f3, 0xa1f4, 0xa1f5, 0xa1f6, 0xa1f7, + 0xa1f8, 0xa1f9, 0xa1fa, 0xa1fb, 0xa1fc, 0xa1fd, 0xa1fe, 0xa1ff, + 0xa200, 0xa201, 0xa202, 0xa203, 0xa204, 0xa205, 0xa206, 0xa207, + 0xa208, 0xa209, 0xa20a, 0xa20b, 0xa20c, 0xa20d, 0xa20e, 0xa20f, + 0xa210, 0xa211, 0xa212, 0xa213, 0xa214, 0xa215, 0xa216, 0xa217, + 0xa218, 0xa219, 0xa21a, 0xa21b, 0xa21c, 0xa21d, 0xa21e, 0xa21f, + 0xa220, 0xa221, 0xa222, 0xa223, 0xa224, 0xa225, 0xa226, 0xa227, + 0xa228, 0xa229, 0xa22a, 0xa22b, 0xa22c, 0xa22d, 0xa22e, 0xa22f, + 0xa230, 0xa231, 0xa232, 0xa233, 0xa234, 0xa235, 0xa236, 0xa237, + 0xa238, 0xa239, 0xa23a, 0xa23b, 0xa23c, 0xa23d, 0xa23e, 0xa23f, + 0xa240, 0xa241, 0xa242, 0xa243, 0xa244, 0xa245, 0xa246, 0xa247, + 0xa248, 0xa249, 0xa24a, 0xa24b, 0xa24c, 0xa24d, 0xa24e, 0xa24f, + 0xa250, 0xa251, 0xa252, 0xa253, 0xa254, 0xa255, 0xa256, 0xa257, + 0xa258, 0xa259, 0xa25a, 0xa25b, 0xa25c, 0xa25d, 0xa25e, 0xa25f, + 0xa260, 0xa261, 0xa262, 0xa263, 0xa264, 0xa265, 0xa266, 0xa267, + 0xa268, 0xa269, 0xa26a, 0xa26b, 0xa26c, 0xa26d, 0xa26e, 0xa26f, + 0xa270, 0xa271, 0xa272, 0xa273, 0xa274, 0xa275, 0xa276, 0xa277, + 0xa278, 0xa279, 0xa27a, 0xa27b, 0xa27c, 0xa27d, 0xa27e, 0xa27f, + 0xa280, 0xa281, 0xa282, 0xa283, 0xa284, 0xa285, 0xa286, 0xa287, + 0xa288, 0xa289, 0xa28a, 0xa28b, 0xa28c, 0xa28d, 0xa28e, 0xa28f, + 0xa290, 0xa291, 0xa292, 0xa293, 0xa294, 0xa295, 0xa296, 0xa297, + 0xa298, 0xa299, 0xa29a, 0xa29b, 0xa29c, 0xa29d, 0xa29e, 0xa29f, + 0xa2a0, 0xa2a1, 0xa2a2, 0xa2a3, 0xa2a4, 0xa2a5, 0xa2a6, 0xa2a7, + 0xa2a8, 0xa2a9, 0xa2aa, 0xa2ab, 0xa2ac, 0xa2ad, 0xa2ae, 0xa2af, + 0xa2b0, 0xa2b1, 0xa2b2, 0xa2b3, 0xa2b4, 0xa2b5, 0xa2b6, 0xa2b7, + 0xa2b8, 0xa2b9, 0xa2ba, 0xa2bb, 0xa2bc, 0xa2bd, 0xa2be, 0xa2bf, + 0xa2c0, 0xa2c1, 0xa2c2, 0xa2c3, 0xa2c4, 0xa2c5, 0xa2c6, 0xa2c7, + 0xa2c8, 0xa2c9, 0xa2ca, 0xa2cb, 0xa2cc, 0xa2cd, 0xa2ce, 0xa2cf, + 0xa2d0, 0xa2d1, 0xa2d2, 0xa2d3, 0xa2d4, 0xa2d5, 0xa2d6, 0xa2d7, + 0xa2d8, 0xa2d9, 0xa2da, 0xa2db, 0xa2dc, 0xa2dd, 0xa2de, 0xa2df, + 0xa2e0, 0xa2e1, 0xa2e2, 0xa2e3, 0xa2e4, 0xa2e5, 0xa2e6, 0xa2e7, + 0xa2e8, 0xa2e9, 0xa2ea, 0xa2eb, 0xa2ec, 0xa2ed, 0xa2ee, 0xa2ef, + 0xa2f0, 0xa2f1, 0xa2f2, 0xa2f3, 0xa2f4, 0xa2f5, 0xa2f6, 0xa2f7, + 0xa2f8, 0xa2f9, 0xa2fa, 0xa2fb, 0xa2fc, 0xa2fd, 0xa2fe, 0xa2ff, + 0xa300, 0xa301, 0xa302, 0xa303, 0xa304, 0xa305, 0xa306, 0xa307, + 0xa308, 0xa309, 0xa30a, 0xa30b, 0xa30c, 0xa30d, 0xa30e, 0xa30f, + 0xa310, 0xa311, 0xa312, 0xa313, 0xa314, 0xa315, 0xa316, 0xa317, + 0xa318, 0xa319, 0xa31a, 0xa31b, 0xa31c, 0xa31d, 0xa31e, 0xa31f, + 0xa320, 0xa321, 0xa322, 0xa323, 0xa324, 0xa325, 0xa326, 0xa327, + 0xa328, 0xa329, 0xa32a, 0xa32b, 0xa32c, 0xa32d, 0xa32e, 0xa32f, + 0xa330, 0xa331, 0xa332, 0xa333, 0xa334, 0xa335, 0xa336, 0xa337, + 0xa338, 0xa339, 0xa33a, 0xa33b, 0xa33c, 0xa33d, 0xa33e, 0xa33f, + 0xa340, 0xa341, 0xa342, 0xa343, 0xa344, 0xa345, 0xa346, 0xa347, + 0xa348, 0xa349, 0xa34a, 0xa34b, 0xa34c, 0xa34d, 0xa34e, 0xa34f, + 0xa350, 0xa351, 0xa352, 0xa353, 0xa354, 0xa355, 0xa356, 0xa357, + 0xa358, 0xa359, 0xa35a, 0xa35b, 0xa35c, 0xa35d, 0xa35e, 0xa35f, + 0xa360, 0xa361, 0xa362, 0xa363, 0xa364, 0xa365, 0xa366, 0xa367, + 0xa368, 0xa369, 0xa36a, 0xa36b, 0xa36c, 0xa36d, 0xa36e, 0xa36f, + 0xa370, 0xa371, 0xa372, 0xa373, 0xa374, 0xa375, 0xa376, 0xa377, + 0xa378, 0xa379, 0xa37a, 0xa37b, 0xa37c, 0xa37d, 0xa37e, 0xa37f, + 0xa380, 0xa381, 0xa382, 0xa383, 0xa384, 0xa385, 0xa386, 0xa387, + 0xa388, 0xa389, 0xa38a, 0xa38b, 0xa38c, 0xa38d, 0xa38e, 0xa38f, + 0xa390, 0xa391, 0xa392, 0xa393, 0xa394, 0xa395, 0xa396, 0xa397, + 0xa398, 0xa399, 0xa39a, 0xa39b, 0xa39c, 0xa39d, 0xa39e, 0xa39f, + 0xa3a0, 0xa3a1, 0xa3a2, 0xa3a3, 0xa3a4, 0xa3a5, 0xa3a6, 0xa3a7, + 0xa3a8, 0xa3a9, 0xa3aa, 0xa3ab, 0xa3ac, 0xa3ad, 0xa3ae, 0xa3af, + 0xa3b0, 0xa3b1, 0xa3b2, 0xa3b3, 0xa3b4, 0xa3b5, 0xa3b6, 0xa3b7, + 0xa3b8, 0xa3b9, 0xa3ba, 0xa3bb, 0xa3bc, 0xa3bd, 0xa3be, 0xa3bf, + 0xa3c0, 0xa3c1, 0xa3c2, 0xa3c3, 0xa3c4, 0xa3c5, 0xa3c6, 0xa3c7, + 0xa3c8, 0xa3c9, 0xa3ca, 0xa3cb, 0xa3cc, 0xa3cd, 0xa3ce, 0xa3cf, + 0xa3d0, 0xa3d1, 0xa3d2, 0xa3d3, 0xa3d4, 0xa3d5, 0xa3d6, 0xa3d7, + 0xa3d8, 0xa3d9, 0xa3da, 0xa3db, 0xa3dc, 0xa3dd, 0xa3de, 0xa3df, + 0xa3e0, 0xa3e1, 0xa3e2, 0xa3e3, 0xa3e4, 0xa3e5, 0xa3e6, 0xa3e7, + 0xa3e8, 0xa3e9, 0xa3ea, 0xa3eb, 0xa3ec, 0xa3ed, 0xa3ee, 0xa3ef, + 0xa3f0, 0xa3f1, 0xa3f2, 0xa3f3, 0xa3f4, 0xa3f5, 0xa3f6, 0xa3f7, + 0xa3f8, 0xa3f9, 0xa3fa, 0xa3fb, 0xa3fc, 0xa3fd, 0xa3fe, 0xa3ff, + 0xa400, 0xa401, 0xa402, 0xa403, 0xa404, 0xa405, 0xa406, 0xa407, + 0xa408, 0xa409, 0xa40a, 0xa40b, 0xa40c, 0xa40d, 0xa40e, 0xa40f, + 0xa410, 0xa411, 0xa412, 0xa413, 0xa414, 0xa415, 0xa416, 0xa417, + 0xa418, 0xa419, 0xa41a, 0xa41b, 0xa41c, 0xa41d, 0xa41e, 0xa41f, + 0xa420, 0xa421, 0xa422, 0xa423, 0xa424, 0xa425, 0xa426, 0xa427, + 0xa428, 0xa429, 0xa42a, 0xa42b, 0xa42c, 0xa42d, 0xa42e, 0xa42f, + 0xa430, 0xa431, 0xa432, 0xa433, 0xa434, 0xa435, 0xa436, 0xa437, + 0xa438, 0xa439, 0xa43a, 0xa43b, 0xa43c, 0xa43d, 0xa43e, 0xa43f, + 0xa440, 0xa441, 0xa442, 0xa443, 0xa444, 0xa445, 0xa446, 0xa447, + 0xa448, 0xa449, 0xa44a, 0xa44b, 0xa44c, 0xa44d, 0xa44e, 0xa44f, + 0xa450, 0xa451, 0xa452, 0xa453, 0xa454, 0xa455, 0xa456, 0xa457, + 0xa458, 0xa459, 0xa45a, 0xa45b, 0xa45c, 0xa45d, 0xa45e, 0xa45f, + 0xa460, 0xa461, 0xa462, 0xa463, 0xa464, 0xa465, 0xa466, 0xa467, + 0xa468, 0xa469, 0xa46a, 0xa46b, 0xa46c, 0xa46d, 0xa46e, 0xa46f, + 0xa470, 0xa471, 0xa472, 0xa473, 0xa474, 0xa475, 0xa476, 0xa477, + 0xa478, 0xa479, 0xa47a, 0xa47b, 0xa47c, 0xa47d, 0xa47e, 0xa47f, + 0xa480, 0xa481, 0xa482, 0xa483, 0xa484, 0xa485, 0xa486, 0xa487, + 0xa488, 0xa489, 0xa48a, 0xa48b, 0xa48c, 0x0000, 0x0000, 0x0000, + 0xa490, 0xa491, 0xa492, 0xa493, 0xa494, 0xa495, 0xa496, 0xa497, + 0xa498, 0xa499, 0xa49a, 0xa49b, 0xa49c, 0xa49d, 0xa49e, 0xa49f, + 0xa4a0, 0xa4a1, 0xa4a2, 0xa4a3, 0xa4a4, 0xa4a5, 0xa4a6, 0xa4a7, + 0xa4a8, 0xa4a9, 0xa4aa, 0xa4ab, 0xa4ac, 0xa4ad, 0xa4ae, 0xa4af, + 0xa4b0, 0xa4b1, 0xa4b2, 0xa4b3, 0xa4b4, 0xa4b5, 0xa4b6, 0xa4b7, + 0xa4b8, 0xa4b9, 0xa4ba, 0xa4bb, 0xa4bc, 0xa4bd, 0xa4be, 0xa4bf, + 0xa4c0, 0xa4c1, 0xa4c2, 0xa4c3, 0xa4c4, 0xa4c5, 0xa4c6, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xa500, 0xa501, 0xa502, 0xa503, 0xa504, 0xa505, 0xa506, 0xa507, + 0xa508, 0xa509, 0xa50a, 0xa50b, 0xa50c, 0xa50d, 0xa50e, 0xa50f, + 0xa510, 0xa511, 0xa512, 0xa513, 0xa514, 0xa515, 0xa516, 0xa517, + 0xa518, 0xa519, 0xa51a, 0xa51b, 0xa51c, 0xa51d, 0xa51e, 0xa51f, + 0xa520, 0xa521, 0xa522, 0xa523, 0xa524, 0xa525, 0xa526, 0xa527, + 0xa528, 0xa529, 0xa52a, 0xa52b, 0xa52c, 0xa52d, 0xa52e, 0xa52f, + 0xa530, 0xa531, 0xa532, 0xa533, 0xa534, 0xa535, 0xa536, 0xa537, + 0xa538, 0xa539, 0xa53a, 0xa53b, 0xa53c, 0xa53d, 0xa53e, 0xa53f, + 0xa540, 0xa541, 0xa542, 0xa543, 0xa544, 0xa545, 0xa546, 0xa547, + 0xa548, 0xa549, 0xa54a, 0xa54b, 0xa54c, 0xa54d, 0xa54e, 0xa54f, + 0xa550, 0xa551, 0xa552, 0xa553, 0xa554, 0xa555, 0xa556, 0xa557, + 0xa558, 0xa559, 0xa55a, 0xa55b, 0xa55c, 0xa55d, 0xa55e, 0xa55f, + 0xa560, 0xa561, 0xa562, 0xa563, 0xa564, 0xa565, 0xa566, 0xa567, + 0xa568, 0xa569, 0xa56a, 0xa56b, 0xa56c, 0xa56d, 0xa56e, 0xa56f, + 0xa570, 0xa571, 0xa572, 0xa573, 0xa574, 0xa575, 0xa576, 0xa577, + 0xa578, 0xa579, 0xa57a, 0xa57b, 0xa57c, 0xa57d, 0xa57e, 0xa57f, + 0xa580, 0xa581, 0xa582, 0xa583, 0xa584, 0xa585, 0xa586, 0xa587, + 0xa588, 0xa589, 0xa58a, 0xa58b, 0xa58c, 0xa58d, 0xa58e, 0xa58f, + 0xa590, 0xa591, 0xa592, 0xa593, 0xa594, 0xa595, 0xa596, 0xa597, + 0xa598, 0xa599, 0xa59a, 0xa59b, 0xa59c, 0xa59d, 0xa59e, 0xa59f, + 0xa5a0, 0xa5a1, 0xa5a2, 0xa5a3, 0xa5a4, 0xa5a5, 0xa5a6, 0xa5a7, + 0xa5a8, 0xa5a9, 0xa5aa, 0xa5ab, 0xa5ac, 0xa5ad, 0xa5ae, 0xa5af, + 0xa5b0, 0xa5b1, 0xa5b2, 0xa5b3, 0xa5b4, 0xa5b5, 0xa5b6, 0xa5b7, + 0xa5b8, 0xa5b9, 0xa5ba, 0xa5bb, 0xa5bc, 0xa5bd, 0xa5be, 0xa5bf, + 0xa5c0, 0xa5c1, 0xa5c2, 0xa5c3, 0xa5c4, 0xa5c5, 0xa5c6, 0xa5c7, + 0xa5c8, 0xa5c9, 0xa5ca, 0xa5cb, 0xa5cc, 0xa5cd, 0xa5ce, 0xa5cf, + 0xa5d0, 0xa5d1, 0xa5d2, 0xa5d3, 0xa5d4, 0xa5d5, 0xa5d6, 0xa5d7, + 0xa5d8, 0xa5d9, 0xa5da, 0xa5db, 0xa5dc, 0xa5dd, 0xa5de, 0xa5df, + 0xa5e0, 0xa5e1, 0xa5e2, 0xa5e3, 0xa5e4, 0xa5e5, 0xa5e6, 0xa5e7, + 0xa5e8, 0xa5e9, 0xa5ea, 0xa5eb, 0xa5ec, 0xa5ed, 0xa5ee, 0xa5ef, + 0xa5f0, 0xa5f1, 0xa5f2, 0xa5f3, 0xa5f4, 0xa5f5, 0xa5f6, 0xa5f7, + 0xa5f8, 0xa5f9, 0xa5fa, 0xa5fb, 0xa5fc, 0xa5fd, 0xa5fe, 0xa5ff, + 0xa600, 0xa601, 0xa602, 0xa603, 0xa604, 0xa605, 0xa606, 0xa607, + 0xa608, 0xa609, 0xa60a, 0xa60b, 0xa60c, 0xa60d, 0xa60e, 0xa60f, + 0xa610, 0xa611, 0xa612, 0xa613, 0xa614, 0xa615, 0xa616, 0xa617, + 0xa618, 0xa619, 0xa61a, 0xa61b, 0xa61c, 0xa61d, 0xa61e, 0xa61f, + 0xa620, 0xa621, 0xa622, 0xa623, 0xa624, 0xa625, 0xa626, 0xa627, + 0xa628, 0xa629, 0xa62a, 0xa62b, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xa640, 0xa640, 0xa642, 0xa642, 0xa644, 0xa644, 0xa646, 0xa646, + 0xa648, 0xa648, 0xa64a, 0xa64a, 0xa64c, 0xa64c, 0xa64e, 0xa64e, + 0xa650, 0xa650, 0xa652, 0xa652, 0xa654, 0xa654, 0xa656, 0xa656, + 0xa658, 0xa658, 0xa65a, 0xa65a, 0xa65c, 0xa65c, 0xa65e, 0xa65e, + 0x0000, 0x0000, 0xa662, 0xa662, 0xa664, 0xa664, 0xa666, 0xa666, + 0xa668, 0xa668, 0xa66a, 0xa66a, 0xa66c, 0xa66c, 0xa66e, 0xa66f, + 0xa670, 0xa671, 0xa672, 0xa673, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xa67c, 0xa67d, 0xa67e, 0xa67f, + 0xa680, 0xa680, 0xa682, 0xa682, 0xa684, 0xa684, 0xa686, 0xa686, + 0xa688, 0xa688, 0xa68a, 0xa68a, 0xa68c, 0xa68c, 0xa68e, 0xa68e, + 0xa690, 0xa690, 0xa692, 0xa692, 0xa694, 0xa694, 0xa696, 0xa696, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xa700, 0xa701, 0xa702, 0xa703, 0xa704, 0xa705, 0xa706, 0xa707, + 0xa708, 0xa709, 0xa70a, 0xa70b, 0xa70c, 0xa70d, 0xa70e, 0xa70f, + 0xa710, 0xa711, 0xa712, 0xa713, 0xa714, 0xa715, 0xa716, 0xa717, + 0xa718, 0xa719, 0xa71a, 0xa71b, 0xa71c, 0xa71d, 0xa71e, 0xa71f, + 0xa720, 0xa721, 0xa722, 0xa722, 0xa724, 0xa724, 0xa726, 0xa726, + 0xa728, 0xa728, 0xa72a, 0xa72a, 0xa72c, 0xa72c, 0xa72e, 0xa72e, + 0xa730, 0xa731, 0xa732, 0xa732, 0xa734, 0xa734, 0xa736, 0xa736, + 0xa738, 0xa738, 0xa73a, 0xa73a, 0xa73c, 0xa73c, 0xa73e, 0xa73e, + 0xa740, 0xa740, 0xa742, 0xa742, 0xa744, 0xa744, 0xa746, 0xa746, + 0xa748, 0xa748, 0xa74a, 0xa74a, 0xa74c, 0xa74c, 0xa74e, 0xa74e, + 0xa750, 0xa750, 0xa752, 0xa752, 0xa754, 0xa754, 0xa756, 0xa756, + 0xa758, 0xa758, 0xa75a, 0xa75a, 0xa75c, 0xa75c, 0xa75e, 0xa75e, + 0xa760, 0xa760, 0xa762, 0xa762, 0xa764, 0xa764, 0xa766, 0xa766, + 0xa768, 0xa768, 0xa76a, 0xa76a, 0xa76c, 0xa76c, 0xa76e, 0xa76e, + 0xa770, 0xa771, 0xa772, 0xa773, 0xa774, 0xa775, 0xa776, 0xa777, + 0xa778, 0xa779, 0xa779, 0xa77b, 0xa77b, 0xa77d, 0xa77e, 0xa77e, + 0xa780, 0xa780, 0xa782, 0xa782, 0xa784, 0xa784, 0xa786, 0xa786, + 0xa788, 0xa789, 0xa78a, 0xa78b, 0xa78b, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xa7fb, 0xa7fc, 0xa7fd, 0xa7fe, 0xa7ff, + 0xa800, 0xa801, 0xa802, 0xa803, 0xa804, 0xa805, 0xa806, 0xa807, + 0xa808, 0xa809, 0xa80a, 0xa80b, 0xa80c, 0xa80d, 0xa80e, 0xa80f, + 0xa810, 0xa811, 0xa812, 0xa813, 0xa814, 0xa815, 0xa816, 0xa817, + 0xa818, 0xa819, 0xa81a, 0xa81b, 0xa81c, 0xa81d, 0xa81e, 0xa81f, + 0xa820, 0xa821, 0xa822, 0xa823, 0xa824, 0xa825, 0xa826, 0xa827, + 0xa828, 0xa829, 0xa82a, 0xa82b, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xa840, 0xa841, 0xa842, 0xa843, 0xa844, 0xa845, 0xa846, 0xa847, + 0xa848, 0xa849, 0xa84a, 0xa84b, 0xa84c, 0xa84d, 0xa84e, 0xa84f, + 0xa850, 0xa851, 0xa852, 0xa853, 0xa854, 0xa855, 0xa856, 0xa857, + 0xa858, 0xa859, 0xa85a, 0xa85b, 0xa85c, 0xa85d, 0xa85e, 0xa85f, + 0xa860, 0xa861, 0xa862, 0xa863, 0xa864, 0xa865, 0xa866, 0xa867, + 0xa868, 0xa869, 0xa86a, 0xa86b, 0xa86c, 0xa86d, 0xa86e, 0xa86f, + 0xa870, 0xa871, 0xa872, 0xa873, 0xa874, 0xa875, 0xa876, 0xa877, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xa880, 0xa881, 0xa882, 0xa883, 0xa884, 0xa885, 0xa886, 0xa887, + 0xa888, 0xa889, 0xa88a, 0xa88b, 0xa88c, 0xa88d, 0xa88e, 0xa88f, + 0xa890, 0xa891, 0xa892, 0xa893, 0xa894, 0xa895, 0xa896, 0xa897, + 0xa898, 0xa899, 0xa89a, 0xa89b, 0xa89c, 0xa89d, 0xa89e, 0xa89f, + 0xa8a0, 0xa8a1, 0xa8a2, 0xa8a3, 0xa8a4, 0xa8a5, 0xa8a6, 0xa8a7, + 0xa8a8, 0xa8a9, 0xa8aa, 0xa8ab, 0xa8ac, 0xa8ad, 0xa8ae, 0xa8af, + 0xa8b0, 0xa8b1, 0xa8b2, 0xa8b3, 0xa8b4, 0xa8b5, 0xa8b6, 0xa8b7, + 0xa8b8, 0xa8b9, 0xa8ba, 0xa8bb, 0xa8bc, 0xa8bd, 0xa8be, 0xa8bf, + 0xa8c0, 0xa8c1, 0xa8c2, 0xa8c3, 0xa8c4, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa8ce, 0xa8cf, + 0xa8d0, 0xa8d1, 0xa8d2, 0xa8d3, 0xa8d4, 0xa8d5, 0xa8d6, 0xa8d7, + 0xa8d8, 0xa8d9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xa900, 0xa901, 0xa902, 0xa903, 0xa904, 0xa905, 0xa906, 0xa907, + 0xa908, 0xa909, 0xa90a, 0xa90b, 0xa90c, 0xa90d, 0xa90e, 0xa90f, + 0xa910, 0xa911, 0xa912, 0xa913, 0xa914, 0xa915, 0xa916, 0xa917, + 0xa918, 0xa919, 0xa91a, 0xa91b, 0xa91c, 0xa91d, 0xa91e, 0xa91f, + 0xa920, 0xa921, 0xa922, 0xa923, 0xa924, 0xa925, 0xa926, 0xa927, + 0xa928, 0xa929, 0xa92a, 0xa92b, 0xa92c, 0xa92d, 0xa92e, 0xa92f, + 0xa930, 0xa931, 0xa932, 0xa933, 0xa934, 0xa935, 0xa936, 0xa937, + 0xa938, 0xa939, 0xa93a, 0xa93b, 0xa93c, 0xa93d, 0xa93e, 0xa93f, + 0xa940, 0xa941, 0xa942, 0xa943, 0xa944, 0xa945, 0xa946, 0xa947, + 0xa948, 0xa949, 0xa94a, 0xa94b, 0xa94c, 0xa94d, 0xa94e, 0xa94f, + 0xa950, 0xa951, 0xa952, 0xa953, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa95f, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xaa00, 0xaa01, 0xaa02, 0xaa03, 0xaa04, 0xaa05, 0xaa06, 0xaa07, + 0xaa08, 0xaa09, 0xaa0a, 0xaa0b, 0xaa0c, 0xaa0d, 0xaa0e, 0xaa0f, + 0xaa10, 0xaa11, 0xaa12, 0xaa13, 0xaa14, 0xaa15, 0xaa16, 0xaa17, + 0xaa18, 0xaa19, 0xaa1a, 0xaa1b, 0xaa1c, 0xaa1d, 0xaa1e, 0xaa1f, + 0xaa20, 0xaa21, 0xaa22, 0xaa23, 0xaa24, 0xaa25, 0xaa26, 0xaa27, + 0xaa28, 0xaa29, 0xaa2a, 0xaa2b, 0xaa2c, 0xaa2d, 0xaa2e, 0xaa2f, + 0xaa30, 0xaa31, 0xaa32, 0xaa33, 0xaa34, 0xaa35, 0xaa36, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xaa40, 0xaa41, 0xaa42, 0xaa43, 0xaa44, 0xaa45, 0xaa46, 0xaa47, + 0xaa48, 0xaa49, 0xaa4a, 0xaa4b, 0xaa4c, 0xaa4d, 0x0000, 0x0000, + 0xaa50, 0xaa51, 0xaa52, 0xaa53, 0xaa54, 0xaa55, 0xaa56, 0xaa57, + 0xaa58, 0xaa59, 0x0000, 0x0000, 0xaa5c, 0xaa5d, 0xaa5e, 0xaa5f, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xac00, 0xac01, 0xac02, 0xac03, 0xac04, 0xac05, 0xac06, 0xac07, + 0xac08, 0xac09, 0xac0a, 0xac0b, 0xac0c, 0xac0d, 0xac0e, 0xac0f, + 0xac10, 0xac11, 0xac12, 0xac13, 0xac14, 0xac15, 0xac16, 0xac17, + 0xac18, 0xac19, 0xac1a, 0xac1b, 0xac1c, 0xac1d, 0xac1e, 0xac1f, + 0xac20, 0xac21, 0xac22, 0xac23, 0xac24, 0xac25, 0xac26, 0xac27, + 0xac28, 0xac29, 0xac2a, 0xac2b, 0xac2c, 0xac2d, 0xac2e, 0xac2f, + 0xac30, 0xac31, 0xac32, 0xac33, 0xac34, 0xac35, 0xac36, 0xac37, + 0xac38, 0xac39, 0xac3a, 0xac3b, 0xac3c, 0xac3d, 0xac3e, 0xac3f, + 0xac40, 0xac41, 0xac42, 0xac43, 0xac44, 0xac45, 0xac46, 0xac47, + 0xac48, 0xac49, 0xac4a, 0xac4b, 0xac4c, 0xac4d, 0xac4e, 0xac4f, + 0xac50, 0xac51, 0xac52, 0xac53, 0xac54, 0xac55, 0xac56, 0xac57, + 0xac58, 0xac59, 0xac5a, 0xac5b, 0xac5c, 0xac5d, 0xac5e, 0xac5f, + 0xac60, 0xac61, 0xac62, 0xac63, 0xac64, 0xac65, 0xac66, 0xac67, + 0xac68, 0xac69, 0xac6a, 0xac6b, 0xac6c, 0xac6d, 0xac6e, 0xac6f, + 0xac70, 0xac71, 0xac72, 0xac73, 0xac74, 0xac75, 0xac76, 0xac77, + 0xac78, 0xac79, 0xac7a, 0xac7b, 0xac7c, 0xac7d, 0xac7e, 0xac7f, + 0xac80, 0xac81, 0xac82, 0xac83, 0xac84, 0xac85, 0xac86, 0xac87, + 0xac88, 0xac89, 0xac8a, 0xac8b, 0xac8c, 0xac8d, 0xac8e, 0xac8f, + 0xac90, 0xac91, 0xac92, 0xac93, 0xac94, 0xac95, 0xac96, 0xac97, + 0xac98, 0xac99, 0xac9a, 0xac9b, 0xac9c, 0xac9d, 0xac9e, 0xac9f, + 0xaca0, 0xaca1, 0xaca2, 0xaca3, 0xaca4, 0xaca5, 0xaca6, 0xaca7, + 0xaca8, 0xaca9, 0xacaa, 0xacab, 0xacac, 0xacad, 0xacae, 0xacaf, + 0xacb0, 0xacb1, 0xacb2, 0xacb3, 0xacb4, 0xacb5, 0xacb6, 0xacb7, + 0xacb8, 0xacb9, 0xacba, 0xacbb, 0xacbc, 0xacbd, 0xacbe, 0xacbf, + 0xacc0, 0xacc1, 0xacc2, 0xacc3, 0xacc4, 0xacc5, 0xacc6, 0xacc7, + 0xacc8, 0xacc9, 0xacca, 0xaccb, 0xaccc, 0xaccd, 0xacce, 0xaccf, + 0xacd0, 0xacd1, 0xacd2, 0xacd3, 0xacd4, 0xacd5, 0xacd6, 0xacd7, + 0xacd8, 0xacd9, 0xacda, 0xacdb, 0xacdc, 0xacdd, 0xacde, 0xacdf, + 0xace0, 0xace1, 0xace2, 0xace3, 0xace4, 0xace5, 0xace6, 0xace7, + 0xace8, 0xace9, 0xacea, 0xaceb, 0xacec, 0xaced, 0xacee, 0xacef, + 0xacf0, 0xacf1, 0xacf2, 0xacf3, 0xacf4, 0xacf5, 0xacf6, 0xacf7, + 0xacf8, 0xacf9, 0xacfa, 0xacfb, 0xacfc, 0xacfd, 0xacfe, 0xacff, + 0xad00, 0xad01, 0xad02, 0xad03, 0xad04, 0xad05, 0xad06, 0xad07, + 0xad08, 0xad09, 0xad0a, 0xad0b, 0xad0c, 0xad0d, 0xad0e, 0xad0f, + 0xad10, 0xad11, 0xad12, 0xad13, 0xad14, 0xad15, 0xad16, 0xad17, + 0xad18, 0xad19, 0xad1a, 0xad1b, 0xad1c, 0xad1d, 0xad1e, 0xad1f, + 0xad20, 0xad21, 0xad22, 0xad23, 0xad24, 0xad25, 0xad26, 0xad27, + 0xad28, 0xad29, 0xad2a, 0xad2b, 0xad2c, 0xad2d, 0xad2e, 0xad2f, + 0xad30, 0xad31, 0xad32, 0xad33, 0xad34, 0xad35, 0xad36, 0xad37, + 0xad38, 0xad39, 0xad3a, 0xad3b, 0xad3c, 0xad3d, 0xad3e, 0xad3f, + 0xad40, 0xad41, 0xad42, 0xad43, 0xad44, 0xad45, 0xad46, 0xad47, + 0xad48, 0xad49, 0xad4a, 0xad4b, 0xad4c, 0xad4d, 0xad4e, 0xad4f, + 0xad50, 0xad51, 0xad52, 0xad53, 0xad54, 0xad55, 0xad56, 0xad57, + 0xad58, 0xad59, 0xad5a, 0xad5b, 0xad5c, 0xad5d, 0xad5e, 0xad5f, + 0xad60, 0xad61, 0xad62, 0xad63, 0xad64, 0xad65, 0xad66, 0xad67, + 0xad68, 0xad69, 0xad6a, 0xad6b, 0xad6c, 0xad6d, 0xad6e, 0xad6f, + 0xad70, 0xad71, 0xad72, 0xad73, 0xad74, 0xad75, 0xad76, 0xad77, + 0xad78, 0xad79, 0xad7a, 0xad7b, 0xad7c, 0xad7d, 0xad7e, 0xad7f, + 0xad80, 0xad81, 0xad82, 0xad83, 0xad84, 0xad85, 0xad86, 0xad87, + 0xad88, 0xad89, 0xad8a, 0xad8b, 0xad8c, 0xad8d, 0xad8e, 0xad8f, + 0xad90, 0xad91, 0xad92, 0xad93, 0xad94, 0xad95, 0xad96, 0xad97, + 0xad98, 0xad99, 0xad9a, 0xad9b, 0xad9c, 0xad9d, 0xad9e, 0xad9f, + 0xada0, 0xada1, 0xada2, 0xada3, 0xada4, 0xada5, 0xada6, 0xada7, + 0xada8, 0xada9, 0xadaa, 0xadab, 0xadac, 0xadad, 0xadae, 0xadaf, + 0xadb0, 0xadb1, 0xadb2, 0xadb3, 0xadb4, 0xadb5, 0xadb6, 0xadb7, + 0xadb8, 0xadb9, 0xadba, 0xadbb, 0xadbc, 0xadbd, 0xadbe, 0xadbf, + 0xadc0, 0xadc1, 0xadc2, 0xadc3, 0xadc4, 0xadc5, 0xadc6, 0xadc7, + 0xadc8, 0xadc9, 0xadca, 0xadcb, 0xadcc, 0xadcd, 0xadce, 0xadcf, + 0xadd0, 0xadd1, 0xadd2, 0xadd3, 0xadd4, 0xadd5, 0xadd6, 0xadd7, + 0xadd8, 0xadd9, 0xadda, 0xaddb, 0xaddc, 0xaddd, 0xadde, 0xaddf, + 0xade0, 0xade1, 0xade2, 0xade3, 0xade4, 0xade5, 0xade6, 0xade7, + 0xade8, 0xade9, 0xadea, 0xadeb, 0xadec, 0xaded, 0xadee, 0xadef, + 0xadf0, 0xadf1, 0xadf2, 0xadf3, 0xadf4, 0xadf5, 0xadf6, 0xadf7, + 0xadf8, 0xadf9, 0xadfa, 0xadfb, 0xadfc, 0xadfd, 0xadfe, 0xadff, + 0xae00, 0xae01, 0xae02, 0xae03, 0xae04, 0xae05, 0xae06, 0xae07, + 0xae08, 0xae09, 0xae0a, 0xae0b, 0xae0c, 0xae0d, 0xae0e, 0xae0f, + 0xae10, 0xae11, 0xae12, 0xae13, 0xae14, 0xae15, 0xae16, 0xae17, + 0xae18, 0xae19, 0xae1a, 0xae1b, 0xae1c, 0xae1d, 0xae1e, 0xae1f, + 0xae20, 0xae21, 0xae22, 0xae23, 0xae24, 0xae25, 0xae26, 0xae27, + 0xae28, 0xae29, 0xae2a, 0xae2b, 0xae2c, 0xae2d, 0xae2e, 0xae2f, + 0xae30, 0xae31, 0xae32, 0xae33, 0xae34, 0xae35, 0xae36, 0xae37, + 0xae38, 0xae39, 0xae3a, 0xae3b, 0xae3c, 0xae3d, 0xae3e, 0xae3f, + 0xae40, 0xae41, 0xae42, 0xae43, 0xae44, 0xae45, 0xae46, 0xae47, + 0xae48, 0xae49, 0xae4a, 0xae4b, 0xae4c, 0xae4d, 0xae4e, 0xae4f, + 0xae50, 0xae51, 0xae52, 0xae53, 0xae54, 0xae55, 0xae56, 0xae57, + 0xae58, 0xae59, 0xae5a, 0xae5b, 0xae5c, 0xae5d, 0xae5e, 0xae5f, + 0xae60, 0xae61, 0xae62, 0xae63, 0xae64, 0xae65, 0xae66, 0xae67, + 0xae68, 0xae69, 0xae6a, 0xae6b, 0xae6c, 0xae6d, 0xae6e, 0xae6f, + 0xae70, 0xae71, 0xae72, 0xae73, 0xae74, 0xae75, 0xae76, 0xae77, + 0xae78, 0xae79, 0xae7a, 0xae7b, 0xae7c, 0xae7d, 0xae7e, 0xae7f, + 0xae80, 0xae81, 0xae82, 0xae83, 0xae84, 0xae85, 0xae86, 0xae87, + 0xae88, 0xae89, 0xae8a, 0xae8b, 0xae8c, 0xae8d, 0xae8e, 0xae8f, + 0xae90, 0xae91, 0xae92, 0xae93, 0xae94, 0xae95, 0xae96, 0xae97, + 0xae98, 0xae99, 0xae9a, 0xae9b, 0xae9c, 0xae9d, 0xae9e, 0xae9f, + 0xaea0, 0xaea1, 0xaea2, 0xaea3, 0xaea4, 0xaea5, 0xaea6, 0xaea7, + 0xaea8, 0xaea9, 0xaeaa, 0xaeab, 0xaeac, 0xaead, 0xaeae, 0xaeaf, + 0xaeb0, 0xaeb1, 0xaeb2, 0xaeb3, 0xaeb4, 0xaeb5, 0xaeb6, 0xaeb7, + 0xaeb8, 0xaeb9, 0xaeba, 0xaebb, 0xaebc, 0xaebd, 0xaebe, 0xaebf, + 0xaec0, 0xaec1, 0xaec2, 0xaec3, 0xaec4, 0xaec5, 0xaec6, 0xaec7, + 0xaec8, 0xaec9, 0xaeca, 0xaecb, 0xaecc, 0xaecd, 0xaece, 0xaecf, + 0xaed0, 0xaed1, 0xaed2, 0xaed3, 0xaed4, 0xaed5, 0xaed6, 0xaed7, + 0xaed8, 0xaed9, 0xaeda, 0xaedb, 0xaedc, 0xaedd, 0xaede, 0xaedf, + 0xaee0, 0xaee1, 0xaee2, 0xaee3, 0xaee4, 0xaee5, 0xaee6, 0xaee7, + 0xaee8, 0xaee9, 0xaeea, 0xaeeb, 0xaeec, 0xaeed, 0xaeee, 0xaeef, + 0xaef0, 0xaef1, 0xaef2, 0xaef3, 0xaef4, 0xaef5, 0xaef6, 0xaef7, + 0xaef8, 0xaef9, 0xaefa, 0xaefb, 0xaefc, 0xaefd, 0xaefe, 0xaeff, + 0xaf00, 0xaf01, 0xaf02, 0xaf03, 0xaf04, 0xaf05, 0xaf06, 0xaf07, + 0xaf08, 0xaf09, 0xaf0a, 0xaf0b, 0xaf0c, 0xaf0d, 0xaf0e, 0xaf0f, + 0xaf10, 0xaf11, 0xaf12, 0xaf13, 0xaf14, 0xaf15, 0xaf16, 0xaf17, + 0xaf18, 0xaf19, 0xaf1a, 0xaf1b, 0xaf1c, 0xaf1d, 0xaf1e, 0xaf1f, + 0xaf20, 0xaf21, 0xaf22, 0xaf23, 0xaf24, 0xaf25, 0xaf26, 0xaf27, + 0xaf28, 0xaf29, 0xaf2a, 0xaf2b, 0xaf2c, 0xaf2d, 0xaf2e, 0xaf2f, + 0xaf30, 0xaf31, 0xaf32, 0xaf33, 0xaf34, 0xaf35, 0xaf36, 0xaf37, + 0xaf38, 0xaf39, 0xaf3a, 0xaf3b, 0xaf3c, 0xaf3d, 0xaf3e, 0xaf3f, + 0xaf40, 0xaf41, 0xaf42, 0xaf43, 0xaf44, 0xaf45, 0xaf46, 0xaf47, + 0xaf48, 0xaf49, 0xaf4a, 0xaf4b, 0xaf4c, 0xaf4d, 0xaf4e, 0xaf4f, + 0xaf50, 0xaf51, 0xaf52, 0xaf53, 0xaf54, 0xaf55, 0xaf56, 0xaf57, + 0xaf58, 0xaf59, 0xaf5a, 0xaf5b, 0xaf5c, 0xaf5d, 0xaf5e, 0xaf5f, + 0xaf60, 0xaf61, 0xaf62, 0xaf63, 0xaf64, 0xaf65, 0xaf66, 0xaf67, + 0xaf68, 0xaf69, 0xaf6a, 0xaf6b, 0xaf6c, 0xaf6d, 0xaf6e, 0xaf6f, + 0xaf70, 0xaf71, 0xaf72, 0xaf73, 0xaf74, 0xaf75, 0xaf76, 0xaf77, + 0xaf78, 0xaf79, 0xaf7a, 0xaf7b, 0xaf7c, 0xaf7d, 0xaf7e, 0xaf7f, + 0xaf80, 0xaf81, 0xaf82, 0xaf83, 0xaf84, 0xaf85, 0xaf86, 0xaf87, + 0xaf88, 0xaf89, 0xaf8a, 0xaf8b, 0xaf8c, 0xaf8d, 0xaf8e, 0xaf8f, + 0xaf90, 0xaf91, 0xaf92, 0xaf93, 0xaf94, 0xaf95, 0xaf96, 0xaf97, + 0xaf98, 0xaf99, 0xaf9a, 0xaf9b, 0xaf9c, 0xaf9d, 0xaf9e, 0xaf9f, + 0xafa0, 0xafa1, 0xafa2, 0xafa3, 0xafa4, 0xafa5, 0xafa6, 0xafa7, + 0xafa8, 0xafa9, 0xafaa, 0xafab, 0xafac, 0xafad, 0xafae, 0xafaf, + 0xafb0, 0xafb1, 0xafb2, 0xafb3, 0xafb4, 0xafb5, 0xafb6, 0xafb7, + 0xafb8, 0xafb9, 0xafba, 0xafbb, 0xafbc, 0xafbd, 0xafbe, 0xafbf, + 0xafc0, 0xafc1, 0xafc2, 0xafc3, 0xafc4, 0xafc5, 0xafc6, 0xafc7, + 0xafc8, 0xafc9, 0xafca, 0xafcb, 0xafcc, 0xafcd, 0xafce, 0xafcf, + 0xafd0, 0xafd1, 0xafd2, 0xafd3, 0xafd4, 0xafd5, 0xafd6, 0xafd7, + 0xafd8, 0xafd9, 0xafda, 0xafdb, 0xafdc, 0xafdd, 0xafde, 0xafdf, + 0xafe0, 0xafe1, 0xafe2, 0xafe3, 0xafe4, 0xafe5, 0xafe6, 0xafe7, + 0xafe8, 0xafe9, 0xafea, 0xafeb, 0xafec, 0xafed, 0xafee, 0xafef, + 0xaff0, 0xaff1, 0xaff2, 0xaff3, 0xaff4, 0xaff5, 0xaff6, 0xaff7, + 0xaff8, 0xaff9, 0xaffa, 0xaffb, 0xaffc, 0xaffd, 0xaffe, 0xafff, + 0xb000, 0xb001, 0xb002, 0xb003, 0xb004, 0xb005, 0xb006, 0xb007, + 0xb008, 0xb009, 0xb00a, 0xb00b, 0xb00c, 0xb00d, 0xb00e, 0xb00f, + 0xb010, 0xb011, 0xb012, 0xb013, 0xb014, 0xb015, 0xb016, 0xb017, + 0xb018, 0xb019, 0xb01a, 0xb01b, 0xb01c, 0xb01d, 0xb01e, 0xb01f, + 0xb020, 0xb021, 0xb022, 0xb023, 0xb024, 0xb025, 0xb026, 0xb027, + 0xb028, 0xb029, 0xb02a, 0xb02b, 0xb02c, 0xb02d, 0xb02e, 0xb02f, + 0xb030, 0xb031, 0xb032, 0xb033, 0xb034, 0xb035, 0xb036, 0xb037, + 0xb038, 0xb039, 0xb03a, 0xb03b, 0xb03c, 0xb03d, 0xb03e, 0xb03f, + 0xb040, 0xb041, 0xb042, 0xb043, 0xb044, 0xb045, 0xb046, 0xb047, + 0xb048, 0xb049, 0xb04a, 0xb04b, 0xb04c, 0xb04d, 0xb04e, 0xb04f, + 0xb050, 0xb051, 0xb052, 0xb053, 0xb054, 0xb055, 0xb056, 0xb057, + 0xb058, 0xb059, 0xb05a, 0xb05b, 0xb05c, 0xb05d, 0xb05e, 0xb05f, + 0xb060, 0xb061, 0xb062, 0xb063, 0xb064, 0xb065, 0xb066, 0xb067, + 0xb068, 0xb069, 0xb06a, 0xb06b, 0xb06c, 0xb06d, 0xb06e, 0xb06f, + 0xb070, 0xb071, 0xb072, 0xb073, 0xb074, 0xb075, 0xb076, 0xb077, + 0xb078, 0xb079, 0xb07a, 0xb07b, 0xb07c, 0xb07d, 0xb07e, 0xb07f, + 0xb080, 0xb081, 0xb082, 0xb083, 0xb084, 0xb085, 0xb086, 0xb087, + 0xb088, 0xb089, 0xb08a, 0xb08b, 0xb08c, 0xb08d, 0xb08e, 0xb08f, + 0xb090, 0xb091, 0xb092, 0xb093, 0xb094, 0xb095, 0xb096, 0xb097, + 0xb098, 0xb099, 0xb09a, 0xb09b, 0xb09c, 0xb09d, 0xb09e, 0xb09f, + 0xb0a0, 0xb0a1, 0xb0a2, 0xb0a3, 0xb0a4, 0xb0a5, 0xb0a6, 0xb0a7, + 0xb0a8, 0xb0a9, 0xb0aa, 0xb0ab, 0xb0ac, 0xb0ad, 0xb0ae, 0xb0af, + 0xb0b0, 0xb0b1, 0xb0b2, 0xb0b3, 0xb0b4, 0xb0b5, 0xb0b6, 0xb0b7, + 0xb0b8, 0xb0b9, 0xb0ba, 0xb0bb, 0xb0bc, 0xb0bd, 0xb0be, 0xb0bf, + 0xb0c0, 0xb0c1, 0xb0c2, 0xb0c3, 0xb0c4, 0xb0c5, 0xb0c6, 0xb0c7, + 0xb0c8, 0xb0c9, 0xb0ca, 0xb0cb, 0xb0cc, 0xb0cd, 0xb0ce, 0xb0cf, + 0xb0d0, 0xb0d1, 0xb0d2, 0xb0d3, 0xb0d4, 0xb0d5, 0xb0d6, 0xb0d7, + 0xb0d8, 0xb0d9, 0xb0da, 0xb0db, 0xb0dc, 0xb0dd, 0xb0de, 0xb0df, + 0xb0e0, 0xb0e1, 0xb0e2, 0xb0e3, 0xb0e4, 0xb0e5, 0xb0e6, 0xb0e7, + 0xb0e8, 0xb0e9, 0xb0ea, 0xb0eb, 0xb0ec, 0xb0ed, 0xb0ee, 0xb0ef, + 0xb0f0, 0xb0f1, 0xb0f2, 0xb0f3, 0xb0f4, 0xb0f5, 0xb0f6, 0xb0f7, + 0xb0f8, 0xb0f9, 0xb0fa, 0xb0fb, 0xb0fc, 0xb0fd, 0xb0fe, 0xb0ff, + 0xb100, 0xb101, 0xb102, 0xb103, 0xb104, 0xb105, 0xb106, 0xb107, + 0xb108, 0xb109, 0xb10a, 0xb10b, 0xb10c, 0xb10d, 0xb10e, 0xb10f, + 0xb110, 0xb111, 0xb112, 0xb113, 0xb114, 0xb115, 0xb116, 0xb117, + 0xb118, 0xb119, 0xb11a, 0xb11b, 0xb11c, 0xb11d, 0xb11e, 0xb11f, + 0xb120, 0xb121, 0xb122, 0xb123, 0xb124, 0xb125, 0xb126, 0xb127, + 0xb128, 0xb129, 0xb12a, 0xb12b, 0xb12c, 0xb12d, 0xb12e, 0xb12f, + 0xb130, 0xb131, 0xb132, 0xb133, 0xb134, 0xb135, 0xb136, 0xb137, + 0xb138, 0xb139, 0xb13a, 0xb13b, 0xb13c, 0xb13d, 0xb13e, 0xb13f, + 0xb140, 0xb141, 0xb142, 0xb143, 0xb144, 0xb145, 0xb146, 0xb147, + 0xb148, 0xb149, 0xb14a, 0xb14b, 0xb14c, 0xb14d, 0xb14e, 0xb14f, + 0xb150, 0xb151, 0xb152, 0xb153, 0xb154, 0xb155, 0xb156, 0xb157, + 0xb158, 0xb159, 0xb15a, 0xb15b, 0xb15c, 0xb15d, 0xb15e, 0xb15f, + 0xb160, 0xb161, 0xb162, 0xb163, 0xb164, 0xb165, 0xb166, 0xb167, + 0xb168, 0xb169, 0xb16a, 0xb16b, 0xb16c, 0xb16d, 0xb16e, 0xb16f, + 0xb170, 0xb171, 0xb172, 0xb173, 0xb174, 0xb175, 0xb176, 0xb177, + 0xb178, 0xb179, 0xb17a, 0xb17b, 0xb17c, 0xb17d, 0xb17e, 0xb17f, + 0xb180, 0xb181, 0xb182, 0xb183, 0xb184, 0xb185, 0xb186, 0xb187, + 0xb188, 0xb189, 0xb18a, 0xb18b, 0xb18c, 0xb18d, 0xb18e, 0xb18f, + 0xb190, 0xb191, 0xb192, 0xb193, 0xb194, 0xb195, 0xb196, 0xb197, + 0xb198, 0xb199, 0xb19a, 0xb19b, 0xb19c, 0xb19d, 0xb19e, 0xb19f, + 0xb1a0, 0xb1a1, 0xb1a2, 0xb1a3, 0xb1a4, 0xb1a5, 0xb1a6, 0xb1a7, + 0xb1a8, 0xb1a9, 0xb1aa, 0xb1ab, 0xb1ac, 0xb1ad, 0xb1ae, 0xb1af, + 0xb1b0, 0xb1b1, 0xb1b2, 0xb1b3, 0xb1b4, 0xb1b5, 0xb1b6, 0xb1b7, + 0xb1b8, 0xb1b9, 0xb1ba, 0xb1bb, 0xb1bc, 0xb1bd, 0xb1be, 0xb1bf, + 0xb1c0, 0xb1c1, 0xb1c2, 0xb1c3, 0xb1c4, 0xb1c5, 0xb1c6, 0xb1c7, + 0xb1c8, 0xb1c9, 0xb1ca, 0xb1cb, 0xb1cc, 0xb1cd, 0xb1ce, 0xb1cf, + 0xb1d0, 0xb1d1, 0xb1d2, 0xb1d3, 0xb1d4, 0xb1d5, 0xb1d6, 0xb1d7, + 0xb1d8, 0xb1d9, 0xb1da, 0xb1db, 0xb1dc, 0xb1dd, 0xb1de, 0xb1df, + 0xb1e0, 0xb1e1, 0xb1e2, 0xb1e3, 0xb1e4, 0xb1e5, 0xb1e6, 0xb1e7, + 0xb1e8, 0xb1e9, 0xb1ea, 0xb1eb, 0xb1ec, 0xb1ed, 0xb1ee, 0xb1ef, + 0xb1f0, 0xb1f1, 0xb1f2, 0xb1f3, 0xb1f4, 0xb1f5, 0xb1f6, 0xb1f7, + 0xb1f8, 0xb1f9, 0xb1fa, 0xb1fb, 0xb1fc, 0xb1fd, 0xb1fe, 0xb1ff, + 0xb200, 0xb201, 0xb202, 0xb203, 0xb204, 0xb205, 0xb206, 0xb207, + 0xb208, 0xb209, 0xb20a, 0xb20b, 0xb20c, 0xb20d, 0xb20e, 0xb20f, + 0xb210, 0xb211, 0xb212, 0xb213, 0xb214, 0xb215, 0xb216, 0xb217, + 0xb218, 0xb219, 0xb21a, 0xb21b, 0xb21c, 0xb21d, 0xb21e, 0xb21f, + 0xb220, 0xb221, 0xb222, 0xb223, 0xb224, 0xb225, 0xb226, 0xb227, + 0xb228, 0xb229, 0xb22a, 0xb22b, 0xb22c, 0xb22d, 0xb22e, 0xb22f, + 0xb230, 0xb231, 0xb232, 0xb233, 0xb234, 0xb235, 0xb236, 0xb237, + 0xb238, 0xb239, 0xb23a, 0xb23b, 0xb23c, 0xb23d, 0xb23e, 0xb23f, + 0xb240, 0xb241, 0xb242, 0xb243, 0xb244, 0xb245, 0xb246, 0xb247, + 0xb248, 0xb249, 0xb24a, 0xb24b, 0xb24c, 0xb24d, 0xb24e, 0xb24f, + 0xb250, 0xb251, 0xb252, 0xb253, 0xb254, 0xb255, 0xb256, 0xb257, + 0xb258, 0xb259, 0xb25a, 0xb25b, 0xb25c, 0xb25d, 0xb25e, 0xb25f, + 0xb260, 0xb261, 0xb262, 0xb263, 0xb264, 0xb265, 0xb266, 0xb267, + 0xb268, 0xb269, 0xb26a, 0xb26b, 0xb26c, 0xb26d, 0xb26e, 0xb26f, + 0xb270, 0xb271, 0xb272, 0xb273, 0xb274, 0xb275, 0xb276, 0xb277, + 0xb278, 0xb279, 0xb27a, 0xb27b, 0xb27c, 0xb27d, 0xb27e, 0xb27f, + 0xb280, 0xb281, 0xb282, 0xb283, 0xb284, 0xb285, 0xb286, 0xb287, + 0xb288, 0xb289, 0xb28a, 0xb28b, 0xb28c, 0xb28d, 0xb28e, 0xb28f, + 0xb290, 0xb291, 0xb292, 0xb293, 0xb294, 0xb295, 0xb296, 0xb297, + 0xb298, 0xb299, 0xb29a, 0xb29b, 0xb29c, 0xb29d, 0xb29e, 0xb29f, + 0xb2a0, 0xb2a1, 0xb2a2, 0xb2a3, 0xb2a4, 0xb2a5, 0xb2a6, 0xb2a7, + 0xb2a8, 0xb2a9, 0xb2aa, 0xb2ab, 0xb2ac, 0xb2ad, 0xb2ae, 0xb2af, + 0xb2b0, 0xb2b1, 0xb2b2, 0xb2b3, 0xb2b4, 0xb2b5, 0xb2b6, 0xb2b7, + 0xb2b8, 0xb2b9, 0xb2ba, 0xb2bb, 0xb2bc, 0xb2bd, 0xb2be, 0xb2bf, + 0xb2c0, 0xb2c1, 0xb2c2, 0xb2c3, 0xb2c4, 0xb2c5, 0xb2c6, 0xb2c7, + 0xb2c8, 0xb2c9, 0xb2ca, 0xb2cb, 0xb2cc, 0xb2cd, 0xb2ce, 0xb2cf, + 0xb2d0, 0xb2d1, 0xb2d2, 0xb2d3, 0xb2d4, 0xb2d5, 0xb2d6, 0xb2d7, + 0xb2d8, 0xb2d9, 0xb2da, 0xb2db, 0xb2dc, 0xb2dd, 0xb2de, 0xb2df, + 0xb2e0, 0xb2e1, 0xb2e2, 0xb2e3, 0xb2e4, 0xb2e5, 0xb2e6, 0xb2e7, + 0xb2e8, 0xb2e9, 0xb2ea, 0xb2eb, 0xb2ec, 0xb2ed, 0xb2ee, 0xb2ef, + 0xb2f0, 0xb2f1, 0xb2f2, 0xb2f3, 0xb2f4, 0xb2f5, 0xb2f6, 0xb2f7, + 0xb2f8, 0xb2f9, 0xb2fa, 0xb2fb, 0xb2fc, 0xb2fd, 0xb2fe, 0xb2ff, + 0xb300, 0xb301, 0xb302, 0xb303, 0xb304, 0xb305, 0xb306, 0xb307, + 0xb308, 0xb309, 0xb30a, 0xb30b, 0xb30c, 0xb30d, 0xb30e, 0xb30f, + 0xb310, 0xb311, 0xb312, 0xb313, 0xb314, 0xb315, 0xb316, 0xb317, + 0xb318, 0xb319, 0xb31a, 0xb31b, 0xb31c, 0xb31d, 0xb31e, 0xb31f, + 0xb320, 0xb321, 0xb322, 0xb323, 0xb324, 0xb325, 0xb326, 0xb327, + 0xb328, 0xb329, 0xb32a, 0xb32b, 0xb32c, 0xb32d, 0xb32e, 0xb32f, + 0xb330, 0xb331, 0xb332, 0xb333, 0xb334, 0xb335, 0xb336, 0xb337, + 0xb338, 0xb339, 0xb33a, 0xb33b, 0xb33c, 0xb33d, 0xb33e, 0xb33f, + 0xb340, 0xb341, 0xb342, 0xb343, 0xb344, 0xb345, 0xb346, 0xb347, + 0xb348, 0xb349, 0xb34a, 0xb34b, 0xb34c, 0xb34d, 0xb34e, 0xb34f, + 0xb350, 0xb351, 0xb352, 0xb353, 0xb354, 0xb355, 0xb356, 0xb357, + 0xb358, 0xb359, 0xb35a, 0xb35b, 0xb35c, 0xb35d, 0xb35e, 0xb35f, + 0xb360, 0xb361, 0xb362, 0xb363, 0xb364, 0xb365, 0xb366, 0xb367, + 0xb368, 0xb369, 0xb36a, 0xb36b, 0xb36c, 0xb36d, 0xb36e, 0xb36f, + 0xb370, 0xb371, 0xb372, 0xb373, 0xb374, 0xb375, 0xb376, 0xb377, + 0xb378, 0xb379, 0xb37a, 0xb37b, 0xb37c, 0xb37d, 0xb37e, 0xb37f, + 0xb380, 0xb381, 0xb382, 0xb383, 0xb384, 0xb385, 0xb386, 0xb387, + 0xb388, 0xb389, 0xb38a, 0xb38b, 0xb38c, 0xb38d, 0xb38e, 0xb38f, + 0xb390, 0xb391, 0xb392, 0xb393, 0xb394, 0xb395, 0xb396, 0xb397, + 0xb398, 0xb399, 0xb39a, 0xb39b, 0xb39c, 0xb39d, 0xb39e, 0xb39f, + 0xb3a0, 0xb3a1, 0xb3a2, 0xb3a3, 0xb3a4, 0xb3a5, 0xb3a6, 0xb3a7, + 0xb3a8, 0xb3a9, 0xb3aa, 0xb3ab, 0xb3ac, 0xb3ad, 0xb3ae, 0xb3af, + 0xb3b0, 0xb3b1, 0xb3b2, 0xb3b3, 0xb3b4, 0xb3b5, 0xb3b6, 0xb3b7, + 0xb3b8, 0xb3b9, 0xb3ba, 0xb3bb, 0xb3bc, 0xb3bd, 0xb3be, 0xb3bf, + 0xb3c0, 0xb3c1, 0xb3c2, 0xb3c3, 0xb3c4, 0xb3c5, 0xb3c6, 0xb3c7, + 0xb3c8, 0xb3c9, 0xb3ca, 0xb3cb, 0xb3cc, 0xb3cd, 0xb3ce, 0xb3cf, + 0xb3d0, 0xb3d1, 0xb3d2, 0xb3d3, 0xb3d4, 0xb3d5, 0xb3d6, 0xb3d7, + 0xb3d8, 0xb3d9, 0xb3da, 0xb3db, 0xb3dc, 0xb3dd, 0xb3de, 0xb3df, + 0xb3e0, 0xb3e1, 0xb3e2, 0xb3e3, 0xb3e4, 0xb3e5, 0xb3e6, 0xb3e7, + 0xb3e8, 0xb3e9, 0xb3ea, 0xb3eb, 0xb3ec, 0xb3ed, 0xb3ee, 0xb3ef, + 0xb3f0, 0xb3f1, 0xb3f2, 0xb3f3, 0xb3f4, 0xb3f5, 0xb3f6, 0xb3f7, + 0xb3f8, 0xb3f9, 0xb3fa, 0xb3fb, 0xb3fc, 0xb3fd, 0xb3fe, 0xb3ff, + 0xb400, 0xb401, 0xb402, 0xb403, 0xb404, 0xb405, 0xb406, 0xb407, + 0xb408, 0xb409, 0xb40a, 0xb40b, 0xb40c, 0xb40d, 0xb40e, 0xb40f, + 0xb410, 0xb411, 0xb412, 0xb413, 0xb414, 0xb415, 0xb416, 0xb417, + 0xb418, 0xb419, 0xb41a, 0xb41b, 0xb41c, 0xb41d, 0xb41e, 0xb41f, + 0xb420, 0xb421, 0xb422, 0xb423, 0xb424, 0xb425, 0xb426, 0xb427, + 0xb428, 0xb429, 0xb42a, 0xb42b, 0xb42c, 0xb42d, 0xb42e, 0xb42f, + 0xb430, 0xb431, 0xb432, 0xb433, 0xb434, 0xb435, 0xb436, 0xb437, + 0xb438, 0xb439, 0xb43a, 0xb43b, 0xb43c, 0xb43d, 0xb43e, 0xb43f, + 0xb440, 0xb441, 0xb442, 0xb443, 0xb444, 0xb445, 0xb446, 0xb447, + 0xb448, 0xb449, 0xb44a, 0xb44b, 0xb44c, 0xb44d, 0xb44e, 0xb44f, + 0xb450, 0xb451, 0xb452, 0xb453, 0xb454, 0xb455, 0xb456, 0xb457, + 0xb458, 0xb459, 0xb45a, 0xb45b, 0xb45c, 0xb45d, 0xb45e, 0xb45f, + 0xb460, 0xb461, 0xb462, 0xb463, 0xb464, 0xb465, 0xb466, 0xb467, + 0xb468, 0xb469, 0xb46a, 0xb46b, 0xb46c, 0xb46d, 0xb46e, 0xb46f, + 0xb470, 0xb471, 0xb472, 0xb473, 0xb474, 0xb475, 0xb476, 0xb477, + 0xb478, 0xb479, 0xb47a, 0xb47b, 0xb47c, 0xb47d, 0xb47e, 0xb47f, + 0xb480, 0xb481, 0xb482, 0xb483, 0xb484, 0xb485, 0xb486, 0xb487, + 0xb488, 0xb489, 0xb48a, 0xb48b, 0xb48c, 0xb48d, 0xb48e, 0xb48f, + 0xb490, 0xb491, 0xb492, 0xb493, 0xb494, 0xb495, 0xb496, 0xb497, + 0xb498, 0xb499, 0xb49a, 0xb49b, 0xb49c, 0xb49d, 0xb49e, 0xb49f, + 0xb4a0, 0xb4a1, 0xb4a2, 0xb4a3, 0xb4a4, 0xb4a5, 0xb4a6, 0xb4a7, + 0xb4a8, 0xb4a9, 0xb4aa, 0xb4ab, 0xb4ac, 0xb4ad, 0xb4ae, 0xb4af, + 0xb4b0, 0xb4b1, 0xb4b2, 0xb4b3, 0xb4b4, 0xb4b5, 0xb4b6, 0xb4b7, + 0xb4b8, 0xb4b9, 0xb4ba, 0xb4bb, 0xb4bc, 0xb4bd, 0xb4be, 0xb4bf, + 0xb4c0, 0xb4c1, 0xb4c2, 0xb4c3, 0xb4c4, 0xb4c5, 0xb4c6, 0xb4c7, + 0xb4c8, 0xb4c9, 0xb4ca, 0xb4cb, 0xb4cc, 0xb4cd, 0xb4ce, 0xb4cf, + 0xb4d0, 0xb4d1, 0xb4d2, 0xb4d3, 0xb4d4, 0xb4d5, 0xb4d6, 0xb4d7, + 0xb4d8, 0xb4d9, 0xb4da, 0xb4db, 0xb4dc, 0xb4dd, 0xb4de, 0xb4df, + 0xb4e0, 0xb4e1, 0xb4e2, 0xb4e3, 0xb4e4, 0xb4e5, 0xb4e6, 0xb4e7, + 0xb4e8, 0xb4e9, 0xb4ea, 0xb4eb, 0xb4ec, 0xb4ed, 0xb4ee, 0xb4ef, + 0xb4f0, 0xb4f1, 0xb4f2, 0xb4f3, 0xb4f4, 0xb4f5, 0xb4f6, 0xb4f7, + 0xb4f8, 0xb4f9, 0xb4fa, 0xb4fb, 0xb4fc, 0xb4fd, 0xb4fe, 0xb4ff, + 0xb500, 0xb501, 0xb502, 0xb503, 0xb504, 0xb505, 0xb506, 0xb507, + 0xb508, 0xb509, 0xb50a, 0xb50b, 0xb50c, 0xb50d, 0xb50e, 0xb50f, + 0xb510, 0xb511, 0xb512, 0xb513, 0xb514, 0xb515, 0xb516, 0xb517, + 0xb518, 0xb519, 0xb51a, 0xb51b, 0xb51c, 0xb51d, 0xb51e, 0xb51f, + 0xb520, 0xb521, 0xb522, 0xb523, 0xb524, 0xb525, 0xb526, 0xb527, + 0xb528, 0xb529, 0xb52a, 0xb52b, 0xb52c, 0xb52d, 0xb52e, 0xb52f, + 0xb530, 0xb531, 0xb532, 0xb533, 0xb534, 0xb535, 0xb536, 0xb537, + 0xb538, 0xb539, 0xb53a, 0xb53b, 0xb53c, 0xb53d, 0xb53e, 0xb53f, + 0xb540, 0xb541, 0xb542, 0xb543, 0xb544, 0xb545, 0xb546, 0xb547, + 0xb548, 0xb549, 0xb54a, 0xb54b, 0xb54c, 0xb54d, 0xb54e, 0xb54f, + 0xb550, 0xb551, 0xb552, 0xb553, 0xb554, 0xb555, 0xb556, 0xb557, + 0xb558, 0xb559, 0xb55a, 0xb55b, 0xb55c, 0xb55d, 0xb55e, 0xb55f, + 0xb560, 0xb561, 0xb562, 0xb563, 0xb564, 0xb565, 0xb566, 0xb567, + 0xb568, 0xb569, 0xb56a, 0xb56b, 0xb56c, 0xb56d, 0xb56e, 0xb56f, + 0xb570, 0xb571, 0xb572, 0xb573, 0xb574, 0xb575, 0xb576, 0xb577, + 0xb578, 0xb579, 0xb57a, 0xb57b, 0xb57c, 0xb57d, 0xb57e, 0xb57f, + 0xb580, 0xb581, 0xb582, 0xb583, 0xb584, 0xb585, 0xb586, 0xb587, + 0xb588, 0xb589, 0xb58a, 0xb58b, 0xb58c, 0xb58d, 0xb58e, 0xb58f, + 0xb590, 0xb591, 0xb592, 0xb593, 0xb594, 0xb595, 0xb596, 0xb597, + 0xb598, 0xb599, 0xb59a, 0xb59b, 0xb59c, 0xb59d, 0xb59e, 0xb59f, + 0xb5a0, 0xb5a1, 0xb5a2, 0xb5a3, 0xb5a4, 0xb5a5, 0xb5a6, 0xb5a7, + 0xb5a8, 0xb5a9, 0xb5aa, 0xb5ab, 0xb5ac, 0xb5ad, 0xb5ae, 0xb5af, + 0xb5b0, 0xb5b1, 0xb5b2, 0xb5b3, 0xb5b4, 0xb5b5, 0xb5b6, 0xb5b7, + 0xb5b8, 0xb5b9, 0xb5ba, 0xb5bb, 0xb5bc, 0xb5bd, 0xb5be, 0xb5bf, + 0xb5c0, 0xb5c1, 0xb5c2, 0xb5c3, 0xb5c4, 0xb5c5, 0xb5c6, 0xb5c7, + 0xb5c8, 0xb5c9, 0xb5ca, 0xb5cb, 0xb5cc, 0xb5cd, 0xb5ce, 0xb5cf, + 0xb5d0, 0xb5d1, 0xb5d2, 0xb5d3, 0xb5d4, 0xb5d5, 0xb5d6, 0xb5d7, + 0xb5d8, 0xb5d9, 0xb5da, 0xb5db, 0xb5dc, 0xb5dd, 0xb5de, 0xb5df, + 0xb5e0, 0xb5e1, 0xb5e2, 0xb5e3, 0xb5e4, 0xb5e5, 0xb5e6, 0xb5e7, + 0xb5e8, 0xb5e9, 0xb5ea, 0xb5eb, 0xb5ec, 0xb5ed, 0xb5ee, 0xb5ef, + 0xb5f0, 0xb5f1, 0xb5f2, 0xb5f3, 0xb5f4, 0xb5f5, 0xb5f6, 0xb5f7, + 0xb5f8, 0xb5f9, 0xb5fa, 0xb5fb, 0xb5fc, 0xb5fd, 0xb5fe, 0xb5ff, + 0xb600, 0xb601, 0xb602, 0xb603, 0xb604, 0xb605, 0xb606, 0xb607, + 0xb608, 0xb609, 0xb60a, 0xb60b, 0xb60c, 0xb60d, 0xb60e, 0xb60f, + 0xb610, 0xb611, 0xb612, 0xb613, 0xb614, 0xb615, 0xb616, 0xb617, + 0xb618, 0xb619, 0xb61a, 0xb61b, 0xb61c, 0xb61d, 0xb61e, 0xb61f, + 0xb620, 0xb621, 0xb622, 0xb623, 0xb624, 0xb625, 0xb626, 0xb627, + 0xb628, 0xb629, 0xb62a, 0xb62b, 0xb62c, 0xb62d, 0xb62e, 0xb62f, + 0xb630, 0xb631, 0xb632, 0xb633, 0xb634, 0xb635, 0xb636, 0xb637, + 0xb638, 0xb639, 0xb63a, 0xb63b, 0xb63c, 0xb63d, 0xb63e, 0xb63f, + 0xb640, 0xb641, 0xb642, 0xb643, 0xb644, 0xb645, 0xb646, 0xb647, + 0xb648, 0xb649, 0xb64a, 0xb64b, 0xb64c, 0xb64d, 0xb64e, 0xb64f, + 0xb650, 0xb651, 0xb652, 0xb653, 0xb654, 0xb655, 0xb656, 0xb657, + 0xb658, 0xb659, 0xb65a, 0xb65b, 0xb65c, 0xb65d, 0xb65e, 0xb65f, + 0xb660, 0xb661, 0xb662, 0xb663, 0xb664, 0xb665, 0xb666, 0xb667, + 0xb668, 0xb669, 0xb66a, 0xb66b, 0xb66c, 0xb66d, 0xb66e, 0xb66f, + 0xb670, 0xb671, 0xb672, 0xb673, 0xb674, 0xb675, 0xb676, 0xb677, + 0xb678, 0xb679, 0xb67a, 0xb67b, 0xb67c, 0xb67d, 0xb67e, 0xb67f, + 0xb680, 0xb681, 0xb682, 0xb683, 0xb684, 0xb685, 0xb686, 0xb687, + 0xb688, 0xb689, 0xb68a, 0xb68b, 0xb68c, 0xb68d, 0xb68e, 0xb68f, + 0xb690, 0xb691, 0xb692, 0xb693, 0xb694, 0xb695, 0xb696, 0xb697, + 0xb698, 0xb699, 0xb69a, 0xb69b, 0xb69c, 0xb69d, 0xb69e, 0xb69f, + 0xb6a0, 0xb6a1, 0xb6a2, 0xb6a3, 0xb6a4, 0xb6a5, 0xb6a6, 0xb6a7, + 0xb6a8, 0xb6a9, 0xb6aa, 0xb6ab, 0xb6ac, 0xb6ad, 0xb6ae, 0xb6af, + 0xb6b0, 0xb6b1, 0xb6b2, 0xb6b3, 0xb6b4, 0xb6b5, 0xb6b6, 0xb6b7, + 0xb6b8, 0xb6b9, 0xb6ba, 0xb6bb, 0xb6bc, 0xb6bd, 0xb6be, 0xb6bf, + 0xb6c0, 0xb6c1, 0xb6c2, 0xb6c3, 0xb6c4, 0xb6c5, 0xb6c6, 0xb6c7, + 0xb6c8, 0xb6c9, 0xb6ca, 0xb6cb, 0xb6cc, 0xb6cd, 0xb6ce, 0xb6cf, + 0xb6d0, 0xb6d1, 0xb6d2, 0xb6d3, 0xb6d4, 0xb6d5, 0xb6d6, 0xb6d7, + 0xb6d8, 0xb6d9, 0xb6da, 0xb6db, 0xb6dc, 0xb6dd, 0xb6de, 0xb6df, + 0xb6e0, 0xb6e1, 0xb6e2, 0xb6e3, 0xb6e4, 0xb6e5, 0xb6e6, 0xb6e7, + 0xb6e8, 0xb6e9, 0xb6ea, 0xb6eb, 0xb6ec, 0xb6ed, 0xb6ee, 0xb6ef, + 0xb6f0, 0xb6f1, 0xb6f2, 0xb6f3, 0xb6f4, 0xb6f5, 0xb6f6, 0xb6f7, + 0xb6f8, 0xb6f9, 0xb6fa, 0xb6fb, 0xb6fc, 0xb6fd, 0xb6fe, 0xb6ff, + 0xb700, 0xb701, 0xb702, 0xb703, 0xb704, 0xb705, 0xb706, 0xb707, + 0xb708, 0xb709, 0xb70a, 0xb70b, 0xb70c, 0xb70d, 0xb70e, 0xb70f, + 0xb710, 0xb711, 0xb712, 0xb713, 0xb714, 0xb715, 0xb716, 0xb717, + 0xb718, 0xb719, 0xb71a, 0xb71b, 0xb71c, 0xb71d, 0xb71e, 0xb71f, + 0xb720, 0xb721, 0xb722, 0xb723, 0xb724, 0xb725, 0xb726, 0xb727, + 0xb728, 0xb729, 0xb72a, 0xb72b, 0xb72c, 0xb72d, 0xb72e, 0xb72f, + 0xb730, 0xb731, 0xb732, 0xb733, 0xb734, 0xb735, 0xb736, 0xb737, + 0xb738, 0xb739, 0xb73a, 0xb73b, 0xb73c, 0xb73d, 0xb73e, 0xb73f, + 0xb740, 0xb741, 0xb742, 0xb743, 0xb744, 0xb745, 0xb746, 0xb747, + 0xb748, 0xb749, 0xb74a, 0xb74b, 0xb74c, 0xb74d, 0xb74e, 0xb74f, + 0xb750, 0xb751, 0xb752, 0xb753, 0xb754, 0xb755, 0xb756, 0xb757, + 0xb758, 0xb759, 0xb75a, 0xb75b, 0xb75c, 0xb75d, 0xb75e, 0xb75f, + 0xb760, 0xb761, 0xb762, 0xb763, 0xb764, 0xb765, 0xb766, 0xb767, + 0xb768, 0xb769, 0xb76a, 0xb76b, 0xb76c, 0xb76d, 0xb76e, 0xb76f, + 0xb770, 0xb771, 0xb772, 0xb773, 0xb774, 0xb775, 0xb776, 0xb777, + 0xb778, 0xb779, 0xb77a, 0xb77b, 0xb77c, 0xb77d, 0xb77e, 0xb77f, + 0xb780, 0xb781, 0xb782, 0xb783, 0xb784, 0xb785, 0xb786, 0xb787, + 0xb788, 0xb789, 0xb78a, 0xb78b, 0xb78c, 0xb78d, 0xb78e, 0xb78f, + 0xb790, 0xb791, 0xb792, 0xb793, 0xb794, 0xb795, 0xb796, 0xb797, + 0xb798, 0xb799, 0xb79a, 0xb79b, 0xb79c, 0xb79d, 0xb79e, 0xb79f, + 0xb7a0, 0xb7a1, 0xb7a2, 0xb7a3, 0xb7a4, 0xb7a5, 0xb7a6, 0xb7a7, + 0xb7a8, 0xb7a9, 0xb7aa, 0xb7ab, 0xb7ac, 0xb7ad, 0xb7ae, 0xb7af, + 0xb7b0, 0xb7b1, 0xb7b2, 0xb7b3, 0xb7b4, 0xb7b5, 0xb7b6, 0xb7b7, + 0xb7b8, 0xb7b9, 0xb7ba, 0xb7bb, 0xb7bc, 0xb7bd, 0xb7be, 0xb7bf, + 0xb7c0, 0xb7c1, 0xb7c2, 0xb7c3, 0xb7c4, 0xb7c5, 0xb7c6, 0xb7c7, + 0xb7c8, 0xb7c9, 0xb7ca, 0xb7cb, 0xb7cc, 0xb7cd, 0xb7ce, 0xb7cf, + 0xb7d0, 0xb7d1, 0xb7d2, 0xb7d3, 0xb7d4, 0xb7d5, 0xb7d6, 0xb7d7, + 0xb7d8, 0xb7d9, 0xb7da, 0xb7db, 0xb7dc, 0xb7dd, 0xb7de, 0xb7df, + 0xb7e0, 0xb7e1, 0xb7e2, 0xb7e3, 0xb7e4, 0xb7e5, 0xb7e6, 0xb7e7, + 0xb7e8, 0xb7e9, 0xb7ea, 0xb7eb, 0xb7ec, 0xb7ed, 0xb7ee, 0xb7ef, + 0xb7f0, 0xb7f1, 0xb7f2, 0xb7f3, 0xb7f4, 0xb7f5, 0xb7f6, 0xb7f7, + 0xb7f8, 0xb7f9, 0xb7fa, 0xb7fb, 0xb7fc, 0xb7fd, 0xb7fe, 0xb7ff, + 0xb800, 0xb801, 0xb802, 0xb803, 0xb804, 0xb805, 0xb806, 0xb807, + 0xb808, 0xb809, 0xb80a, 0xb80b, 0xb80c, 0xb80d, 0xb80e, 0xb80f, + 0xb810, 0xb811, 0xb812, 0xb813, 0xb814, 0xb815, 0xb816, 0xb817, + 0xb818, 0xb819, 0xb81a, 0xb81b, 0xb81c, 0xb81d, 0xb81e, 0xb81f, + 0xb820, 0xb821, 0xb822, 0xb823, 0xb824, 0xb825, 0xb826, 0xb827, + 0xb828, 0xb829, 0xb82a, 0xb82b, 0xb82c, 0xb82d, 0xb82e, 0xb82f, + 0xb830, 0xb831, 0xb832, 0xb833, 0xb834, 0xb835, 0xb836, 0xb837, + 0xb838, 0xb839, 0xb83a, 0xb83b, 0xb83c, 0xb83d, 0xb83e, 0xb83f, + 0xb840, 0xb841, 0xb842, 0xb843, 0xb844, 0xb845, 0xb846, 0xb847, + 0xb848, 0xb849, 0xb84a, 0xb84b, 0xb84c, 0xb84d, 0xb84e, 0xb84f, + 0xb850, 0xb851, 0xb852, 0xb853, 0xb854, 0xb855, 0xb856, 0xb857, + 0xb858, 0xb859, 0xb85a, 0xb85b, 0xb85c, 0xb85d, 0xb85e, 0xb85f, + 0xb860, 0xb861, 0xb862, 0xb863, 0xb864, 0xb865, 0xb866, 0xb867, + 0xb868, 0xb869, 0xb86a, 0xb86b, 0xb86c, 0xb86d, 0xb86e, 0xb86f, + 0xb870, 0xb871, 0xb872, 0xb873, 0xb874, 0xb875, 0xb876, 0xb877, + 0xb878, 0xb879, 0xb87a, 0xb87b, 0xb87c, 0xb87d, 0xb87e, 0xb87f, + 0xb880, 0xb881, 0xb882, 0xb883, 0xb884, 0xb885, 0xb886, 0xb887, + 0xb888, 0xb889, 0xb88a, 0xb88b, 0xb88c, 0xb88d, 0xb88e, 0xb88f, + 0xb890, 0xb891, 0xb892, 0xb893, 0xb894, 0xb895, 0xb896, 0xb897, + 0xb898, 0xb899, 0xb89a, 0xb89b, 0xb89c, 0xb89d, 0xb89e, 0xb89f, + 0xb8a0, 0xb8a1, 0xb8a2, 0xb8a3, 0xb8a4, 0xb8a5, 0xb8a6, 0xb8a7, + 0xb8a8, 0xb8a9, 0xb8aa, 0xb8ab, 0xb8ac, 0xb8ad, 0xb8ae, 0xb8af, + 0xb8b0, 0xb8b1, 0xb8b2, 0xb8b3, 0xb8b4, 0xb8b5, 0xb8b6, 0xb8b7, + 0xb8b8, 0xb8b9, 0xb8ba, 0xb8bb, 0xb8bc, 0xb8bd, 0xb8be, 0xb8bf, + 0xb8c0, 0xb8c1, 0xb8c2, 0xb8c3, 0xb8c4, 0xb8c5, 0xb8c6, 0xb8c7, + 0xb8c8, 0xb8c9, 0xb8ca, 0xb8cb, 0xb8cc, 0xb8cd, 0xb8ce, 0xb8cf, + 0xb8d0, 0xb8d1, 0xb8d2, 0xb8d3, 0xb8d4, 0xb8d5, 0xb8d6, 0xb8d7, + 0xb8d8, 0xb8d9, 0xb8da, 0xb8db, 0xb8dc, 0xb8dd, 0xb8de, 0xb8df, + 0xb8e0, 0xb8e1, 0xb8e2, 0xb8e3, 0xb8e4, 0xb8e5, 0xb8e6, 0xb8e7, + 0xb8e8, 0xb8e9, 0xb8ea, 0xb8eb, 0xb8ec, 0xb8ed, 0xb8ee, 0xb8ef, + 0xb8f0, 0xb8f1, 0xb8f2, 0xb8f3, 0xb8f4, 0xb8f5, 0xb8f6, 0xb8f7, + 0xb8f8, 0xb8f9, 0xb8fa, 0xb8fb, 0xb8fc, 0xb8fd, 0xb8fe, 0xb8ff, + 0xb900, 0xb901, 0xb902, 0xb903, 0xb904, 0xb905, 0xb906, 0xb907, + 0xb908, 0xb909, 0xb90a, 0xb90b, 0xb90c, 0xb90d, 0xb90e, 0xb90f, + 0xb910, 0xb911, 0xb912, 0xb913, 0xb914, 0xb915, 0xb916, 0xb917, + 0xb918, 0xb919, 0xb91a, 0xb91b, 0xb91c, 0xb91d, 0xb91e, 0xb91f, + 0xb920, 0xb921, 0xb922, 0xb923, 0xb924, 0xb925, 0xb926, 0xb927, + 0xb928, 0xb929, 0xb92a, 0xb92b, 0xb92c, 0xb92d, 0xb92e, 0xb92f, + 0xb930, 0xb931, 0xb932, 0xb933, 0xb934, 0xb935, 0xb936, 0xb937, + 0xb938, 0xb939, 0xb93a, 0xb93b, 0xb93c, 0xb93d, 0xb93e, 0xb93f, + 0xb940, 0xb941, 0xb942, 0xb943, 0xb944, 0xb945, 0xb946, 0xb947, + 0xb948, 0xb949, 0xb94a, 0xb94b, 0xb94c, 0xb94d, 0xb94e, 0xb94f, + 0xb950, 0xb951, 0xb952, 0xb953, 0xb954, 0xb955, 0xb956, 0xb957, + 0xb958, 0xb959, 0xb95a, 0xb95b, 0xb95c, 0xb95d, 0xb95e, 0xb95f, + 0xb960, 0xb961, 0xb962, 0xb963, 0xb964, 0xb965, 0xb966, 0xb967, + 0xb968, 0xb969, 0xb96a, 0xb96b, 0xb96c, 0xb96d, 0xb96e, 0xb96f, + 0xb970, 0xb971, 0xb972, 0xb973, 0xb974, 0xb975, 0xb976, 0xb977, + 0xb978, 0xb979, 0xb97a, 0xb97b, 0xb97c, 0xb97d, 0xb97e, 0xb97f, + 0xb980, 0xb981, 0xb982, 0xb983, 0xb984, 0xb985, 0xb986, 0xb987, + 0xb988, 0xb989, 0xb98a, 0xb98b, 0xb98c, 0xb98d, 0xb98e, 0xb98f, + 0xb990, 0xb991, 0xb992, 0xb993, 0xb994, 0xb995, 0xb996, 0xb997, + 0xb998, 0xb999, 0xb99a, 0xb99b, 0xb99c, 0xb99d, 0xb99e, 0xb99f, + 0xb9a0, 0xb9a1, 0xb9a2, 0xb9a3, 0xb9a4, 0xb9a5, 0xb9a6, 0xb9a7, + 0xb9a8, 0xb9a9, 0xb9aa, 0xb9ab, 0xb9ac, 0xb9ad, 0xb9ae, 0xb9af, + 0xb9b0, 0xb9b1, 0xb9b2, 0xb9b3, 0xb9b4, 0xb9b5, 0xb9b6, 0xb9b7, + 0xb9b8, 0xb9b9, 0xb9ba, 0xb9bb, 0xb9bc, 0xb9bd, 0xb9be, 0xb9bf, + 0xb9c0, 0xb9c1, 0xb9c2, 0xb9c3, 0xb9c4, 0xb9c5, 0xb9c6, 0xb9c7, + 0xb9c8, 0xb9c9, 0xb9ca, 0xb9cb, 0xb9cc, 0xb9cd, 0xb9ce, 0xb9cf, + 0xb9d0, 0xb9d1, 0xb9d2, 0xb9d3, 0xb9d4, 0xb9d5, 0xb9d6, 0xb9d7, + 0xb9d8, 0xb9d9, 0xb9da, 0xb9db, 0xb9dc, 0xb9dd, 0xb9de, 0xb9df, + 0xb9e0, 0xb9e1, 0xb9e2, 0xb9e3, 0xb9e4, 0xb9e5, 0xb9e6, 0xb9e7, + 0xb9e8, 0xb9e9, 0xb9ea, 0xb9eb, 0xb9ec, 0xb9ed, 0xb9ee, 0xb9ef, + 0xb9f0, 0xb9f1, 0xb9f2, 0xb9f3, 0xb9f4, 0xb9f5, 0xb9f6, 0xb9f7, + 0xb9f8, 0xb9f9, 0xb9fa, 0xb9fb, 0xb9fc, 0xb9fd, 0xb9fe, 0xb9ff, + 0xba00, 0xba01, 0xba02, 0xba03, 0xba04, 0xba05, 0xba06, 0xba07, + 0xba08, 0xba09, 0xba0a, 0xba0b, 0xba0c, 0xba0d, 0xba0e, 0xba0f, + 0xba10, 0xba11, 0xba12, 0xba13, 0xba14, 0xba15, 0xba16, 0xba17, + 0xba18, 0xba19, 0xba1a, 0xba1b, 0xba1c, 0xba1d, 0xba1e, 0xba1f, + 0xba20, 0xba21, 0xba22, 0xba23, 0xba24, 0xba25, 0xba26, 0xba27, + 0xba28, 0xba29, 0xba2a, 0xba2b, 0xba2c, 0xba2d, 0xba2e, 0xba2f, + 0xba30, 0xba31, 0xba32, 0xba33, 0xba34, 0xba35, 0xba36, 0xba37, + 0xba38, 0xba39, 0xba3a, 0xba3b, 0xba3c, 0xba3d, 0xba3e, 0xba3f, + 0xba40, 0xba41, 0xba42, 0xba43, 0xba44, 0xba45, 0xba46, 0xba47, + 0xba48, 0xba49, 0xba4a, 0xba4b, 0xba4c, 0xba4d, 0xba4e, 0xba4f, + 0xba50, 0xba51, 0xba52, 0xba53, 0xba54, 0xba55, 0xba56, 0xba57, + 0xba58, 0xba59, 0xba5a, 0xba5b, 0xba5c, 0xba5d, 0xba5e, 0xba5f, + 0xba60, 0xba61, 0xba62, 0xba63, 0xba64, 0xba65, 0xba66, 0xba67, + 0xba68, 0xba69, 0xba6a, 0xba6b, 0xba6c, 0xba6d, 0xba6e, 0xba6f, + 0xba70, 0xba71, 0xba72, 0xba73, 0xba74, 0xba75, 0xba76, 0xba77, + 0xba78, 0xba79, 0xba7a, 0xba7b, 0xba7c, 0xba7d, 0xba7e, 0xba7f, + 0xba80, 0xba81, 0xba82, 0xba83, 0xba84, 0xba85, 0xba86, 0xba87, + 0xba88, 0xba89, 0xba8a, 0xba8b, 0xba8c, 0xba8d, 0xba8e, 0xba8f, + 0xba90, 0xba91, 0xba92, 0xba93, 0xba94, 0xba95, 0xba96, 0xba97, + 0xba98, 0xba99, 0xba9a, 0xba9b, 0xba9c, 0xba9d, 0xba9e, 0xba9f, + 0xbaa0, 0xbaa1, 0xbaa2, 0xbaa3, 0xbaa4, 0xbaa5, 0xbaa6, 0xbaa7, + 0xbaa8, 0xbaa9, 0xbaaa, 0xbaab, 0xbaac, 0xbaad, 0xbaae, 0xbaaf, + 0xbab0, 0xbab1, 0xbab2, 0xbab3, 0xbab4, 0xbab5, 0xbab6, 0xbab7, + 0xbab8, 0xbab9, 0xbaba, 0xbabb, 0xbabc, 0xbabd, 0xbabe, 0xbabf, + 0xbac0, 0xbac1, 0xbac2, 0xbac3, 0xbac4, 0xbac5, 0xbac6, 0xbac7, + 0xbac8, 0xbac9, 0xbaca, 0xbacb, 0xbacc, 0xbacd, 0xbace, 0xbacf, + 0xbad0, 0xbad1, 0xbad2, 0xbad3, 0xbad4, 0xbad5, 0xbad6, 0xbad7, + 0xbad8, 0xbad9, 0xbada, 0xbadb, 0xbadc, 0xbadd, 0xbade, 0xbadf, + 0xbae0, 0xbae1, 0xbae2, 0xbae3, 0xbae4, 0xbae5, 0xbae6, 0xbae7, + 0xbae8, 0xbae9, 0xbaea, 0xbaeb, 0xbaec, 0xbaed, 0xbaee, 0xbaef, + 0xbaf0, 0xbaf1, 0xbaf2, 0xbaf3, 0xbaf4, 0xbaf5, 0xbaf6, 0xbaf7, + 0xbaf8, 0xbaf9, 0xbafa, 0xbafb, 0xbafc, 0xbafd, 0xbafe, 0xbaff, + 0xbb00, 0xbb01, 0xbb02, 0xbb03, 0xbb04, 0xbb05, 0xbb06, 0xbb07, + 0xbb08, 0xbb09, 0xbb0a, 0xbb0b, 0xbb0c, 0xbb0d, 0xbb0e, 0xbb0f, + 0xbb10, 0xbb11, 0xbb12, 0xbb13, 0xbb14, 0xbb15, 0xbb16, 0xbb17, + 0xbb18, 0xbb19, 0xbb1a, 0xbb1b, 0xbb1c, 0xbb1d, 0xbb1e, 0xbb1f, + 0xbb20, 0xbb21, 0xbb22, 0xbb23, 0xbb24, 0xbb25, 0xbb26, 0xbb27, + 0xbb28, 0xbb29, 0xbb2a, 0xbb2b, 0xbb2c, 0xbb2d, 0xbb2e, 0xbb2f, + 0xbb30, 0xbb31, 0xbb32, 0xbb33, 0xbb34, 0xbb35, 0xbb36, 0xbb37, + 0xbb38, 0xbb39, 0xbb3a, 0xbb3b, 0xbb3c, 0xbb3d, 0xbb3e, 0xbb3f, + 0xbb40, 0xbb41, 0xbb42, 0xbb43, 0xbb44, 0xbb45, 0xbb46, 0xbb47, + 0xbb48, 0xbb49, 0xbb4a, 0xbb4b, 0xbb4c, 0xbb4d, 0xbb4e, 0xbb4f, + 0xbb50, 0xbb51, 0xbb52, 0xbb53, 0xbb54, 0xbb55, 0xbb56, 0xbb57, + 0xbb58, 0xbb59, 0xbb5a, 0xbb5b, 0xbb5c, 0xbb5d, 0xbb5e, 0xbb5f, + 0xbb60, 0xbb61, 0xbb62, 0xbb63, 0xbb64, 0xbb65, 0xbb66, 0xbb67, + 0xbb68, 0xbb69, 0xbb6a, 0xbb6b, 0xbb6c, 0xbb6d, 0xbb6e, 0xbb6f, + 0xbb70, 0xbb71, 0xbb72, 0xbb73, 0xbb74, 0xbb75, 0xbb76, 0xbb77, + 0xbb78, 0xbb79, 0xbb7a, 0xbb7b, 0xbb7c, 0xbb7d, 0xbb7e, 0xbb7f, + 0xbb80, 0xbb81, 0xbb82, 0xbb83, 0xbb84, 0xbb85, 0xbb86, 0xbb87, + 0xbb88, 0xbb89, 0xbb8a, 0xbb8b, 0xbb8c, 0xbb8d, 0xbb8e, 0xbb8f, + 0xbb90, 0xbb91, 0xbb92, 0xbb93, 0xbb94, 0xbb95, 0xbb96, 0xbb97, + 0xbb98, 0xbb99, 0xbb9a, 0xbb9b, 0xbb9c, 0xbb9d, 0xbb9e, 0xbb9f, + 0xbba0, 0xbba1, 0xbba2, 0xbba3, 0xbba4, 0xbba5, 0xbba6, 0xbba7, + 0xbba8, 0xbba9, 0xbbaa, 0xbbab, 0xbbac, 0xbbad, 0xbbae, 0xbbaf, + 0xbbb0, 0xbbb1, 0xbbb2, 0xbbb3, 0xbbb4, 0xbbb5, 0xbbb6, 0xbbb7, + 0xbbb8, 0xbbb9, 0xbbba, 0xbbbb, 0xbbbc, 0xbbbd, 0xbbbe, 0xbbbf, + 0xbbc0, 0xbbc1, 0xbbc2, 0xbbc3, 0xbbc4, 0xbbc5, 0xbbc6, 0xbbc7, + 0xbbc8, 0xbbc9, 0xbbca, 0xbbcb, 0xbbcc, 0xbbcd, 0xbbce, 0xbbcf, + 0xbbd0, 0xbbd1, 0xbbd2, 0xbbd3, 0xbbd4, 0xbbd5, 0xbbd6, 0xbbd7, + 0xbbd8, 0xbbd9, 0xbbda, 0xbbdb, 0xbbdc, 0xbbdd, 0xbbde, 0xbbdf, + 0xbbe0, 0xbbe1, 0xbbe2, 0xbbe3, 0xbbe4, 0xbbe5, 0xbbe6, 0xbbe7, + 0xbbe8, 0xbbe9, 0xbbea, 0xbbeb, 0xbbec, 0xbbed, 0xbbee, 0xbbef, + 0xbbf0, 0xbbf1, 0xbbf2, 0xbbf3, 0xbbf4, 0xbbf5, 0xbbf6, 0xbbf7, + 0xbbf8, 0xbbf9, 0xbbfa, 0xbbfb, 0xbbfc, 0xbbfd, 0xbbfe, 0xbbff, + 0xbc00, 0xbc01, 0xbc02, 0xbc03, 0xbc04, 0xbc05, 0xbc06, 0xbc07, + 0xbc08, 0xbc09, 0xbc0a, 0xbc0b, 0xbc0c, 0xbc0d, 0xbc0e, 0xbc0f, + 0xbc10, 0xbc11, 0xbc12, 0xbc13, 0xbc14, 0xbc15, 0xbc16, 0xbc17, + 0xbc18, 0xbc19, 0xbc1a, 0xbc1b, 0xbc1c, 0xbc1d, 0xbc1e, 0xbc1f, + 0xbc20, 0xbc21, 0xbc22, 0xbc23, 0xbc24, 0xbc25, 0xbc26, 0xbc27, + 0xbc28, 0xbc29, 0xbc2a, 0xbc2b, 0xbc2c, 0xbc2d, 0xbc2e, 0xbc2f, + 0xbc30, 0xbc31, 0xbc32, 0xbc33, 0xbc34, 0xbc35, 0xbc36, 0xbc37, + 0xbc38, 0xbc39, 0xbc3a, 0xbc3b, 0xbc3c, 0xbc3d, 0xbc3e, 0xbc3f, + 0xbc40, 0xbc41, 0xbc42, 0xbc43, 0xbc44, 0xbc45, 0xbc46, 0xbc47, + 0xbc48, 0xbc49, 0xbc4a, 0xbc4b, 0xbc4c, 0xbc4d, 0xbc4e, 0xbc4f, + 0xbc50, 0xbc51, 0xbc52, 0xbc53, 0xbc54, 0xbc55, 0xbc56, 0xbc57, + 0xbc58, 0xbc59, 0xbc5a, 0xbc5b, 0xbc5c, 0xbc5d, 0xbc5e, 0xbc5f, + 0xbc60, 0xbc61, 0xbc62, 0xbc63, 0xbc64, 0xbc65, 0xbc66, 0xbc67, + 0xbc68, 0xbc69, 0xbc6a, 0xbc6b, 0xbc6c, 0xbc6d, 0xbc6e, 0xbc6f, + 0xbc70, 0xbc71, 0xbc72, 0xbc73, 0xbc74, 0xbc75, 0xbc76, 0xbc77, + 0xbc78, 0xbc79, 0xbc7a, 0xbc7b, 0xbc7c, 0xbc7d, 0xbc7e, 0xbc7f, + 0xbc80, 0xbc81, 0xbc82, 0xbc83, 0xbc84, 0xbc85, 0xbc86, 0xbc87, + 0xbc88, 0xbc89, 0xbc8a, 0xbc8b, 0xbc8c, 0xbc8d, 0xbc8e, 0xbc8f, + 0xbc90, 0xbc91, 0xbc92, 0xbc93, 0xbc94, 0xbc95, 0xbc96, 0xbc97, + 0xbc98, 0xbc99, 0xbc9a, 0xbc9b, 0xbc9c, 0xbc9d, 0xbc9e, 0xbc9f, + 0xbca0, 0xbca1, 0xbca2, 0xbca3, 0xbca4, 0xbca5, 0xbca6, 0xbca7, + 0xbca8, 0xbca9, 0xbcaa, 0xbcab, 0xbcac, 0xbcad, 0xbcae, 0xbcaf, + 0xbcb0, 0xbcb1, 0xbcb2, 0xbcb3, 0xbcb4, 0xbcb5, 0xbcb6, 0xbcb7, + 0xbcb8, 0xbcb9, 0xbcba, 0xbcbb, 0xbcbc, 0xbcbd, 0xbcbe, 0xbcbf, + 0xbcc0, 0xbcc1, 0xbcc2, 0xbcc3, 0xbcc4, 0xbcc5, 0xbcc6, 0xbcc7, + 0xbcc8, 0xbcc9, 0xbcca, 0xbccb, 0xbccc, 0xbccd, 0xbcce, 0xbccf, + 0xbcd0, 0xbcd1, 0xbcd2, 0xbcd3, 0xbcd4, 0xbcd5, 0xbcd6, 0xbcd7, + 0xbcd8, 0xbcd9, 0xbcda, 0xbcdb, 0xbcdc, 0xbcdd, 0xbcde, 0xbcdf, + 0xbce0, 0xbce1, 0xbce2, 0xbce3, 0xbce4, 0xbce5, 0xbce6, 0xbce7, + 0xbce8, 0xbce9, 0xbcea, 0xbceb, 0xbcec, 0xbced, 0xbcee, 0xbcef, + 0xbcf0, 0xbcf1, 0xbcf2, 0xbcf3, 0xbcf4, 0xbcf5, 0xbcf6, 0xbcf7, + 0xbcf8, 0xbcf9, 0xbcfa, 0xbcfb, 0xbcfc, 0xbcfd, 0xbcfe, 0xbcff, + 0xbd00, 0xbd01, 0xbd02, 0xbd03, 0xbd04, 0xbd05, 0xbd06, 0xbd07, + 0xbd08, 0xbd09, 0xbd0a, 0xbd0b, 0xbd0c, 0xbd0d, 0xbd0e, 0xbd0f, + 0xbd10, 0xbd11, 0xbd12, 0xbd13, 0xbd14, 0xbd15, 0xbd16, 0xbd17, + 0xbd18, 0xbd19, 0xbd1a, 0xbd1b, 0xbd1c, 0xbd1d, 0xbd1e, 0xbd1f, + 0xbd20, 0xbd21, 0xbd22, 0xbd23, 0xbd24, 0xbd25, 0xbd26, 0xbd27, + 0xbd28, 0xbd29, 0xbd2a, 0xbd2b, 0xbd2c, 0xbd2d, 0xbd2e, 0xbd2f, + 0xbd30, 0xbd31, 0xbd32, 0xbd33, 0xbd34, 0xbd35, 0xbd36, 0xbd37, + 0xbd38, 0xbd39, 0xbd3a, 0xbd3b, 0xbd3c, 0xbd3d, 0xbd3e, 0xbd3f, + 0xbd40, 0xbd41, 0xbd42, 0xbd43, 0xbd44, 0xbd45, 0xbd46, 0xbd47, + 0xbd48, 0xbd49, 0xbd4a, 0xbd4b, 0xbd4c, 0xbd4d, 0xbd4e, 0xbd4f, + 0xbd50, 0xbd51, 0xbd52, 0xbd53, 0xbd54, 0xbd55, 0xbd56, 0xbd57, + 0xbd58, 0xbd59, 0xbd5a, 0xbd5b, 0xbd5c, 0xbd5d, 0xbd5e, 0xbd5f, + 0xbd60, 0xbd61, 0xbd62, 0xbd63, 0xbd64, 0xbd65, 0xbd66, 0xbd67, + 0xbd68, 0xbd69, 0xbd6a, 0xbd6b, 0xbd6c, 0xbd6d, 0xbd6e, 0xbd6f, + 0xbd70, 0xbd71, 0xbd72, 0xbd73, 0xbd74, 0xbd75, 0xbd76, 0xbd77, + 0xbd78, 0xbd79, 0xbd7a, 0xbd7b, 0xbd7c, 0xbd7d, 0xbd7e, 0xbd7f, + 0xbd80, 0xbd81, 0xbd82, 0xbd83, 0xbd84, 0xbd85, 0xbd86, 0xbd87, + 0xbd88, 0xbd89, 0xbd8a, 0xbd8b, 0xbd8c, 0xbd8d, 0xbd8e, 0xbd8f, + 0xbd90, 0xbd91, 0xbd92, 0xbd93, 0xbd94, 0xbd95, 0xbd96, 0xbd97, + 0xbd98, 0xbd99, 0xbd9a, 0xbd9b, 0xbd9c, 0xbd9d, 0xbd9e, 0xbd9f, + 0xbda0, 0xbda1, 0xbda2, 0xbda3, 0xbda4, 0xbda5, 0xbda6, 0xbda7, + 0xbda8, 0xbda9, 0xbdaa, 0xbdab, 0xbdac, 0xbdad, 0xbdae, 0xbdaf, + 0xbdb0, 0xbdb1, 0xbdb2, 0xbdb3, 0xbdb4, 0xbdb5, 0xbdb6, 0xbdb7, + 0xbdb8, 0xbdb9, 0xbdba, 0xbdbb, 0xbdbc, 0xbdbd, 0xbdbe, 0xbdbf, + 0xbdc0, 0xbdc1, 0xbdc2, 0xbdc3, 0xbdc4, 0xbdc5, 0xbdc6, 0xbdc7, + 0xbdc8, 0xbdc9, 0xbdca, 0xbdcb, 0xbdcc, 0xbdcd, 0xbdce, 0xbdcf, + 0xbdd0, 0xbdd1, 0xbdd2, 0xbdd3, 0xbdd4, 0xbdd5, 0xbdd6, 0xbdd7, + 0xbdd8, 0xbdd9, 0xbdda, 0xbddb, 0xbddc, 0xbddd, 0xbdde, 0xbddf, + 0xbde0, 0xbde1, 0xbde2, 0xbde3, 0xbde4, 0xbde5, 0xbde6, 0xbde7, + 0xbde8, 0xbde9, 0xbdea, 0xbdeb, 0xbdec, 0xbded, 0xbdee, 0xbdef, + 0xbdf0, 0xbdf1, 0xbdf2, 0xbdf3, 0xbdf4, 0xbdf5, 0xbdf6, 0xbdf7, + 0xbdf8, 0xbdf9, 0xbdfa, 0xbdfb, 0xbdfc, 0xbdfd, 0xbdfe, 0xbdff, + 0xbe00, 0xbe01, 0xbe02, 0xbe03, 0xbe04, 0xbe05, 0xbe06, 0xbe07, + 0xbe08, 0xbe09, 0xbe0a, 0xbe0b, 0xbe0c, 0xbe0d, 0xbe0e, 0xbe0f, + 0xbe10, 0xbe11, 0xbe12, 0xbe13, 0xbe14, 0xbe15, 0xbe16, 0xbe17, + 0xbe18, 0xbe19, 0xbe1a, 0xbe1b, 0xbe1c, 0xbe1d, 0xbe1e, 0xbe1f, + 0xbe20, 0xbe21, 0xbe22, 0xbe23, 0xbe24, 0xbe25, 0xbe26, 0xbe27, + 0xbe28, 0xbe29, 0xbe2a, 0xbe2b, 0xbe2c, 0xbe2d, 0xbe2e, 0xbe2f, + 0xbe30, 0xbe31, 0xbe32, 0xbe33, 0xbe34, 0xbe35, 0xbe36, 0xbe37, + 0xbe38, 0xbe39, 0xbe3a, 0xbe3b, 0xbe3c, 0xbe3d, 0xbe3e, 0xbe3f, + 0xbe40, 0xbe41, 0xbe42, 0xbe43, 0xbe44, 0xbe45, 0xbe46, 0xbe47, + 0xbe48, 0xbe49, 0xbe4a, 0xbe4b, 0xbe4c, 0xbe4d, 0xbe4e, 0xbe4f, + 0xbe50, 0xbe51, 0xbe52, 0xbe53, 0xbe54, 0xbe55, 0xbe56, 0xbe57, + 0xbe58, 0xbe59, 0xbe5a, 0xbe5b, 0xbe5c, 0xbe5d, 0xbe5e, 0xbe5f, + 0xbe60, 0xbe61, 0xbe62, 0xbe63, 0xbe64, 0xbe65, 0xbe66, 0xbe67, + 0xbe68, 0xbe69, 0xbe6a, 0xbe6b, 0xbe6c, 0xbe6d, 0xbe6e, 0xbe6f, + 0xbe70, 0xbe71, 0xbe72, 0xbe73, 0xbe74, 0xbe75, 0xbe76, 0xbe77, + 0xbe78, 0xbe79, 0xbe7a, 0xbe7b, 0xbe7c, 0xbe7d, 0xbe7e, 0xbe7f, + 0xbe80, 0xbe81, 0xbe82, 0xbe83, 0xbe84, 0xbe85, 0xbe86, 0xbe87, + 0xbe88, 0xbe89, 0xbe8a, 0xbe8b, 0xbe8c, 0xbe8d, 0xbe8e, 0xbe8f, + 0xbe90, 0xbe91, 0xbe92, 0xbe93, 0xbe94, 0xbe95, 0xbe96, 0xbe97, + 0xbe98, 0xbe99, 0xbe9a, 0xbe9b, 0xbe9c, 0xbe9d, 0xbe9e, 0xbe9f, + 0xbea0, 0xbea1, 0xbea2, 0xbea3, 0xbea4, 0xbea5, 0xbea6, 0xbea7, + 0xbea8, 0xbea9, 0xbeaa, 0xbeab, 0xbeac, 0xbead, 0xbeae, 0xbeaf, + 0xbeb0, 0xbeb1, 0xbeb2, 0xbeb3, 0xbeb4, 0xbeb5, 0xbeb6, 0xbeb7, + 0xbeb8, 0xbeb9, 0xbeba, 0xbebb, 0xbebc, 0xbebd, 0xbebe, 0xbebf, + 0xbec0, 0xbec1, 0xbec2, 0xbec3, 0xbec4, 0xbec5, 0xbec6, 0xbec7, + 0xbec8, 0xbec9, 0xbeca, 0xbecb, 0xbecc, 0xbecd, 0xbece, 0xbecf, + 0xbed0, 0xbed1, 0xbed2, 0xbed3, 0xbed4, 0xbed5, 0xbed6, 0xbed7, + 0xbed8, 0xbed9, 0xbeda, 0xbedb, 0xbedc, 0xbedd, 0xbede, 0xbedf, + 0xbee0, 0xbee1, 0xbee2, 0xbee3, 0xbee4, 0xbee5, 0xbee6, 0xbee7, + 0xbee8, 0xbee9, 0xbeea, 0xbeeb, 0xbeec, 0xbeed, 0xbeee, 0xbeef, + 0xbef0, 0xbef1, 0xbef2, 0xbef3, 0xbef4, 0xbef5, 0xbef6, 0xbef7, + 0xbef8, 0xbef9, 0xbefa, 0xbefb, 0xbefc, 0xbefd, 0xbefe, 0xbeff, + 0xbf00, 0xbf01, 0xbf02, 0xbf03, 0xbf04, 0xbf05, 0xbf06, 0xbf07, + 0xbf08, 0xbf09, 0xbf0a, 0xbf0b, 0xbf0c, 0xbf0d, 0xbf0e, 0xbf0f, + 0xbf10, 0xbf11, 0xbf12, 0xbf13, 0xbf14, 0xbf15, 0xbf16, 0xbf17, + 0xbf18, 0xbf19, 0xbf1a, 0xbf1b, 0xbf1c, 0xbf1d, 0xbf1e, 0xbf1f, + 0xbf20, 0xbf21, 0xbf22, 0xbf23, 0xbf24, 0xbf25, 0xbf26, 0xbf27, + 0xbf28, 0xbf29, 0xbf2a, 0xbf2b, 0xbf2c, 0xbf2d, 0xbf2e, 0xbf2f, + 0xbf30, 0xbf31, 0xbf32, 0xbf33, 0xbf34, 0xbf35, 0xbf36, 0xbf37, + 0xbf38, 0xbf39, 0xbf3a, 0xbf3b, 0xbf3c, 0xbf3d, 0xbf3e, 0xbf3f, + 0xbf40, 0xbf41, 0xbf42, 0xbf43, 0xbf44, 0xbf45, 0xbf46, 0xbf47, + 0xbf48, 0xbf49, 0xbf4a, 0xbf4b, 0xbf4c, 0xbf4d, 0xbf4e, 0xbf4f, + 0xbf50, 0xbf51, 0xbf52, 0xbf53, 0xbf54, 0xbf55, 0xbf56, 0xbf57, + 0xbf58, 0xbf59, 0xbf5a, 0xbf5b, 0xbf5c, 0xbf5d, 0xbf5e, 0xbf5f, + 0xbf60, 0xbf61, 0xbf62, 0xbf63, 0xbf64, 0xbf65, 0xbf66, 0xbf67, + 0xbf68, 0xbf69, 0xbf6a, 0xbf6b, 0xbf6c, 0xbf6d, 0xbf6e, 0xbf6f, + 0xbf70, 0xbf71, 0xbf72, 0xbf73, 0xbf74, 0xbf75, 0xbf76, 0xbf77, + 0xbf78, 0xbf79, 0xbf7a, 0xbf7b, 0xbf7c, 0xbf7d, 0xbf7e, 0xbf7f, + 0xbf80, 0xbf81, 0xbf82, 0xbf83, 0xbf84, 0xbf85, 0xbf86, 0xbf87, + 0xbf88, 0xbf89, 0xbf8a, 0xbf8b, 0xbf8c, 0xbf8d, 0xbf8e, 0xbf8f, + 0xbf90, 0xbf91, 0xbf92, 0xbf93, 0xbf94, 0xbf95, 0xbf96, 0xbf97, + 0xbf98, 0xbf99, 0xbf9a, 0xbf9b, 0xbf9c, 0xbf9d, 0xbf9e, 0xbf9f, + 0xbfa0, 0xbfa1, 0xbfa2, 0xbfa3, 0xbfa4, 0xbfa5, 0xbfa6, 0xbfa7, + 0xbfa8, 0xbfa9, 0xbfaa, 0xbfab, 0xbfac, 0xbfad, 0xbfae, 0xbfaf, + 0xbfb0, 0xbfb1, 0xbfb2, 0xbfb3, 0xbfb4, 0xbfb5, 0xbfb6, 0xbfb7, + 0xbfb8, 0xbfb9, 0xbfba, 0xbfbb, 0xbfbc, 0xbfbd, 0xbfbe, 0xbfbf, + 0xbfc0, 0xbfc1, 0xbfc2, 0xbfc3, 0xbfc4, 0xbfc5, 0xbfc6, 0xbfc7, + 0xbfc8, 0xbfc9, 0xbfca, 0xbfcb, 0xbfcc, 0xbfcd, 0xbfce, 0xbfcf, + 0xbfd0, 0xbfd1, 0xbfd2, 0xbfd3, 0xbfd4, 0xbfd5, 0xbfd6, 0xbfd7, + 0xbfd8, 0xbfd9, 0xbfda, 0xbfdb, 0xbfdc, 0xbfdd, 0xbfde, 0xbfdf, + 0xbfe0, 0xbfe1, 0xbfe2, 0xbfe3, 0xbfe4, 0xbfe5, 0xbfe6, 0xbfe7, + 0xbfe8, 0xbfe9, 0xbfea, 0xbfeb, 0xbfec, 0xbfed, 0xbfee, 0xbfef, + 0xbff0, 0xbff1, 0xbff2, 0xbff3, 0xbff4, 0xbff5, 0xbff6, 0xbff7, + 0xbff8, 0xbff9, 0xbffa, 0xbffb, 0xbffc, 0xbffd, 0xbffe, 0xbfff, + 0xc000, 0xc001, 0xc002, 0xc003, 0xc004, 0xc005, 0xc006, 0xc007, + 0xc008, 0xc009, 0xc00a, 0xc00b, 0xc00c, 0xc00d, 0xc00e, 0xc00f, + 0xc010, 0xc011, 0xc012, 0xc013, 0xc014, 0xc015, 0xc016, 0xc017, + 0xc018, 0xc019, 0xc01a, 0xc01b, 0xc01c, 0xc01d, 0xc01e, 0xc01f, + 0xc020, 0xc021, 0xc022, 0xc023, 0xc024, 0xc025, 0xc026, 0xc027, + 0xc028, 0xc029, 0xc02a, 0xc02b, 0xc02c, 0xc02d, 0xc02e, 0xc02f, + 0xc030, 0xc031, 0xc032, 0xc033, 0xc034, 0xc035, 0xc036, 0xc037, + 0xc038, 0xc039, 0xc03a, 0xc03b, 0xc03c, 0xc03d, 0xc03e, 0xc03f, + 0xc040, 0xc041, 0xc042, 0xc043, 0xc044, 0xc045, 0xc046, 0xc047, + 0xc048, 0xc049, 0xc04a, 0xc04b, 0xc04c, 0xc04d, 0xc04e, 0xc04f, + 0xc050, 0xc051, 0xc052, 0xc053, 0xc054, 0xc055, 0xc056, 0xc057, + 0xc058, 0xc059, 0xc05a, 0xc05b, 0xc05c, 0xc05d, 0xc05e, 0xc05f, + 0xc060, 0xc061, 0xc062, 0xc063, 0xc064, 0xc065, 0xc066, 0xc067, + 0xc068, 0xc069, 0xc06a, 0xc06b, 0xc06c, 0xc06d, 0xc06e, 0xc06f, + 0xc070, 0xc071, 0xc072, 0xc073, 0xc074, 0xc075, 0xc076, 0xc077, + 0xc078, 0xc079, 0xc07a, 0xc07b, 0xc07c, 0xc07d, 0xc07e, 0xc07f, + 0xc080, 0xc081, 0xc082, 0xc083, 0xc084, 0xc085, 0xc086, 0xc087, + 0xc088, 0xc089, 0xc08a, 0xc08b, 0xc08c, 0xc08d, 0xc08e, 0xc08f, + 0xc090, 0xc091, 0xc092, 0xc093, 0xc094, 0xc095, 0xc096, 0xc097, + 0xc098, 0xc099, 0xc09a, 0xc09b, 0xc09c, 0xc09d, 0xc09e, 0xc09f, + 0xc0a0, 0xc0a1, 0xc0a2, 0xc0a3, 0xc0a4, 0xc0a5, 0xc0a6, 0xc0a7, + 0xc0a8, 0xc0a9, 0xc0aa, 0xc0ab, 0xc0ac, 0xc0ad, 0xc0ae, 0xc0af, + 0xc0b0, 0xc0b1, 0xc0b2, 0xc0b3, 0xc0b4, 0xc0b5, 0xc0b6, 0xc0b7, + 0xc0b8, 0xc0b9, 0xc0ba, 0xc0bb, 0xc0bc, 0xc0bd, 0xc0be, 0xc0bf, + 0xc0c0, 0xc0c1, 0xc0c2, 0xc0c3, 0xc0c4, 0xc0c5, 0xc0c6, 0xc0c7, + 0xc0c8, 0xc0c9, 0xc0ca, 0xc0cb, 0xc0cc, 0xc0cd, 0xc0ce, 0xc0cf, + 0xc0d0, 0xc0d1, 0xc0d2, 0xc0d3, 0xc0d4, 0xc0d5, 0xc0d6, 0xc0d7, + 0xc0d8, 0xc0d9, 0xc0da, 0xc0db, 0xc0dc, 0xc0dd, 0xc0de, 0xc0df, + 0xc0e0, 0xc0e1, 0xc0e2, 0xc0e3, 0xc0e4, 0xc0e5, 0xc0e6, 0xc0e7, + 0xc0e8, 0xc0e9, 0xc0ea, 0xc0eb, 0xc0ec, 0xc0ed, 0xc0ee, 0xc0ef, + 0xc0f0, 0xc0f1, 0xc0f2, 0xc0f3, 0xc0f4, 0xc0f5, 0xc0f6, 0xc0f7, + 0xc0f8, 0xc0f9, 0xc0fa, 0xc0fb, 0xc0fc, 0xc0fd, 0xc0fe, 0xc0ff, + 0xc100, 0xc101, 0xc102, 0xc103, 0xc104, 0xc105, 0xc106, 0xc107, + 0xc108, 0xc109, 0xc10a, 0xc10b, 0xc10c, 0xc10d, 0xc10e, 0xc10f, + 0xc110, 0xc111, 0xc112, 0xc113, 0xc114, 0xc115, 0xc116, 0xc117, + 0xc118, 0xc119, 0xc11a, 0xc11b, 0xc11c, 0xc11d, 0xc11e, 0xc11f, + 0xc120, 0xc121, 0xc122, 0xc123, 0xc124, 0xc125, 0xc126, 0xc127, + 0xc128, 0xc129, 0xc12a, 0xc12b, 0xc12c, 0xc12d, 0xc12e, 0xc12f, + 0xc130, 0xc131, 0xc132, 0xc133, 0xc134, 0xc135, 0xc136, 0xc137, + 0xc138, 0xc139, 0xc13a, 0xc13b, 0xc13c, 0xc13d, 0xc13e, 0xc13f, + 0xc140, 0xc141, 0xc142, 0xc143, 0xc144, 0xc145, 0xc146, 0xc147, + 0xc148, 0xc149, 0xc14a, 0xc14b, 0xc14c, 0xc14d, 0xc14e, 0xc14f, + 0xc150, 0xc151, 0xc152, 0xc153, 0xc154, 0xc155, 0xc156, 0xc157, + 0xc158, 0xc159, 0xc15a, 0xc15b, 0xc15c, 0xc15d, 0xc15e, 0xc15f, + 0xc160, 0xc161, 0xc162, 0xc163, 0xc164, 0xc165, 0xc166, 0xc167, + 0xc168, 0xc169, 0xc16a, 0xc16b, 0xc16c, 0xc16d, 0xc16e, 0xc16f, + 0xc170, 0xc171, 0xc172, 0xc173, 0xc174, 0xc175, 0xc176, 0xc177, + 0xc178, 0xc179, 0xc17a, 0xc17b, 0xc17c, 0xc17d, 0xc17e, 0xc17f, + 0xc180, 0xc181, 0xc182, 0xc183, 0xc184, 0xc185, 0xc186, 0xc187, + 0xc188, 0xc189, 0xc18a, 0xc18b, 0xc18c, 0xc18d, 0xc18e, 0xc18f, + 0xc190, 0xc191, 0xc192, 0xc193, 0xc194, 0xc195, 0xc196, 0xc197, + 0xc198, 0xc199, 0xc19a, 0xc19b, 0xc19c, 0xc19d, 0xc19e, 0xc19f, + 0xc1a0, 0xc1a1, 0xc1a2, 0xc1a3, 0xc1a4, 0xc1a5, 0xc1a6, 0xc1a7, + 0xc1a8, 0xc1a9, 0xc1aa, 0xc1ab, 0xc1ac, 0xc1ad, 0xc1ae, 0xc1af, + 0xc1b0, 0xc1b1, 0xc1b2, 0xc1b3, 0xc1b4, 0xc1b5, 0xc1b6, 0xc1b7, + 0xc1b8, 0xc1b9, 0xc1ba, 0xc1bb, 0xc1bc, 0xc1bd, 0xc1be, 0xc1bf, + 0xc1c0, 0xc1c1, 0xc1c2, 0xc1c3, 0xc1c4, 0xc1c5, 0xc1c6, 0xc1c7, + 0xc1c8, 0xc1c9, 0xc1ca, 0xc1cb, 0xc1cc, 0xc1cd, 0xc1ce, 0xc1cf, + 0xc1d0, 0xc1d1, 0xc1d2, 0xc1d3, 0xc1d4, 0xc1d5, 0xc1d6, 0xc1d7, + 0xc1d8, 0xc1d9, 0xc1da, 0xc1db, 0xc1dc, 0xc1dd, 0xc1de, 0xc1df, + 0xc1e0, 0xc1e1, 0xc1e2, 0xc1e3, 0xc1e4, 0xc1e5, 0xc1e6, 0xc1e7, + 0xc1e8, 0xc1e9, 0xc1ea, 0xc1eb, 0xc1ec, 0xc1ed, 0xc1ee, 0xc1ef, + 0xc1f0, 0xc1f1, 0xc1f2, 0xc1f3, 0xc1f4, 0xc1f5, 0xc1f6, 0xc1f7, + 0xc1f8, 0xc1f9, 0xc1fa, 0xc1fb, 0xc1fc, 0xc1fd, 0xc1fe, 0xc1ff, + 0xc200, 0xc201, 0xc202, 0xc203, 0xc204, 0xc205, 0xc206, 0xc207, + 0xc208, 0xc209, 0xc20a, 0xc20b, 0xc20c, 0xc20d, 0xc20e, 0xc20f, + 0xc210, 0xc211, 0xc212, 0xc213, 0xc214, 0xc215, 0xc216, 0xc217, + 0xc218, 0xc219, 0xc21a, 0xc21b, 0xc21c, 0xc21d, 0xc21e, 0xc21f, + 0xc220, 0xc221, 0xc222, 0xc223, 0xc224, 0xc225, 0xc226, 0xc227, + 0xc228, 0xc229, 0xc22a, 0xc22b, 0xc22c, 0xc22d, 0xc22e, 0xc22f, + 0xc230, 0xc231, 0xc232, 0xc233, 0xc234, 0xc235, 0xc236, 0xc237, + 0xc238, 0xc239, 0xc23a, 0xc23b, 0xc23c, 0xc23d, 0xc23e, 0xc23f, + 0xc240, 0xc241, 0xc242, 0xc243, 0xc244, 0xc245, 0xc246, 0xc247, + 0xc248, 0xc249, 0xc24a, 0xc24b, 0xc24c, 0xc24d, 0xc24e, 0xc24f, + 0xc250, 0xc251, 0xc252, 0xc253, 0xc254, 0xc255, 0xc256, 0xc257, + 0xc258, 0xc259, 0xc25a, 0xc25b, 0xc25c, 0xc25d, 0xc25e, 0xc25f, + 0xc260, 0xc261, 0xc262, 0xc263, 0xc264, 0xc265, 0xc266, 0xc267, + 0xc268, 0xc269, 0xc26a, 0xc26b, 0xc26c, 0xc26d, 0xc26e, 0xc26f, + 0xc270, 0xc271, 0xc272, 0xc273, 0xc274, 0xc275, 0xc276, 0xc277, + 0xc278, 0xc279, 0xc27a, 0xc27b, 0xc27c, 0xc27d, 0xc27e, 0xc27f, + 0xc280, 0xc281, 0xc282, 0xc283, 0xc284, 0xc285, 0xc286, 0xc287, + 0xc288, 0xc289, 0xc28a, 0xc28b, 0xc28c, 0xc28d, 0xc28e, 0xc28f, + 0xc290, 0xc291, 0xc292, 0xc293, 0xc294, 0xc295, 0xc296, 0xc297, + 0xc298, 0xc299, 0xc29a, 0xc29b, 0xc29c, 0xc29d, 0xc29e, 0xc29f, + 0xc2a0, 0xc2a1, 0xc2a2, 0xc2a3, 0xc2a4, 0xc2a5, 0xc2a6, 0xc2a7, + 0xc2a8, 0xc2a9, 0xc2aa, 0xc2ab, 0xc2ac, 0xc2ad, 0xc2ae, 0xc2af, + 0xc2b0, 0xc2b1, 0xc2b2, 0xc2b3, 0xc2b4, 0xc2b5, 0xc2b6, 0xc2b7, + 0xc2b8, 0xc2b9, 0xc2ba, 0xc2bb, 0xc2bc, 0xc2bd, 0xc2be, 0xc2bf, + 0xc2c0, 0xc2c1, 0xc2c2, 0xc2c3, 0xc2c4, 0xc2c5, 0xc2c6, 0xc2c7, + 0xc2c8, 0xc2c9, 0xc2ca, 0xc2cb, 0xc2cc, 0xc2cd, 0xc2ce, 0xc2cf, + 0xc2d0, 0xc2d1, 0xc2d2, 0xc2d3, 0xc2d4, 0xc2d5, 0xc2d6, 0xc2d7, + 0xc2d8, 0xc2d9, 0xc2da, 0xc2db, 0xc2dc, 0xc2dd, 0xc2de, 0xc2df, + 0xc2e0, 0xc2e1, 0xc2e2, 0xc2e3, 0xc2e4, 0xc2e5, 0xc2e6, 0xc2e7, + 0xc2e8, 0xc2e9, 0xc2ea, 0xc2eb, 0xc2ec, 0xc2ed, 0xc2ee, 0xc2ef, + 0xc2f0, 0xc2f1, 0xc2f2, 0xc2f3, 0xc2f4, 0xc2f5, 0xc2f6, 0xc2f7, + 0xc2f8, 0xc2f9, 0xc2fa, 0xc2fb, 0xc2fc, 0xc2fd, 0xc2fe, 0xc2ff, + 0xc300, 0xc301, 0xc302, 0xc303, 0xc304, 0xc305, 0xc306, 0xc307, + 0xc308, 0xc309, 0xc30a, 0xc30b, 0xc30c, 0xc30d, 0xc30e, 0xc30f, + 0xc310, 0xc311, 0xc312, 0xc313, 0xc314, 0xc315, 0xc316, 0xc317, + 0xc318, 0xc319, 0xc31a, 0xc31b, 0xc31c, 0xc31d, 0xc31e, 0xc31f, + 0xc320, 0xc321, 0xc322, 0xc323, 0xc324, 0xc325, 0xc326, 0xc327, + 0xc328, 0xc329, 0xc32a, 0xc32b, 0xc32c, 0xc32d, 0xc32e, 0xc32f, + 0xc330, 0xc331, 0xc332, 0xc333, 0xc334, 0xc335, 0xc336, 0xc337, + 0xc338, 0xc339, 0xc33a, 0xc33b, 0xc33c, 0xc33d, 0xc33e, 0xc33f, + 0xc340, 0xc341, 0xc342, 0xc343, 0xc344, 0xc345, 0xc346, 0xc347, + 0xc348, 0xc349, 0xc34a, 0xc34b, 0xc34c, 0xc34d, 0xc34e, 0xc34f, + 0xc350, 0xc351, 0xc352, 0xc353, 0xc354, 0xc355, 0xc356, 0xc357, + 0xc358, 0xc359, 0xc35a, 0xc35b, 0xc35c, 0xc35d, 0xc35e, 0xc35f, + 0xc360, 0xc361, 0xc362, 0xc363, 0xc364, 0xc365, 0xc366, 0xc367, + 0xc368, 0xc369, 0xc36a, 0xc36b, 0xc36c, 0xc36d, 0xc36e, 0xc36f, + 0xc370, 0xc371, 0xc372, 0xc373, 0xc374, 0xc375, 0xc376, 0xc377, + 0xc378, 0xc379, 0xc37a, 0xc37b, 0xc37c, 0xc37d, 0xc37e, 0xc37f, + 0xc380, 0xc381, 0xc382, 0xc383, 0xc384, 0xc385, 0xc386, 0xc387, + 0xc388, 0xc389, 0xc38a, 0xc38b, 0xc38c, 0xc38d, 0xc38e, 0xc38f, + 0xc390, 0xc391, 0xc392, 0xc393, 0xc394, 0xc395, 0xc396, 0xc397, + 0xc398, 0xc399, 0xc39a, 0xc39b, 0xc39c, 0xc39d, 0xc39e, 0xc39f, + 0xc3a0, 0xc3a1, 0xc3a2, 0xc3a3, 0xc3a4, 0xc3a5, 0xc3a6, 0xc3a7, + 0xc3a8, 0xc3a9, 0xc3aa, 0xc3ab, 0xc3ac, 0xc3ad, 0xc3ae, 0xc3af, + 0xc3b0, 0xc3b1, 0xc3b2, 0xc3b3, 0xc3b4, 0xc3b5, 0xc3b6, 0xc3b7, + 0xc3b8, 0xc3b9, 0xc3ba, 0xc3bb, 0xc3bc, 0xc3bd, 0xc3be, 0xc3bf, + 0xc3c0, 0xc3c1, 0xc3c2, 0xc3c3, 0xc3c4, 0xc3c5, 0xc3c6, 0xc3c7, + 0xc3c8, 0xc3c9, 0xc3ca, 0xc3cb, 0xc3cc, 0xc3cd, 0xc3ce, 0xc3cf, + 0xc3d0, 0xc3d1, 0xc3d2, 0xc3d3, 0xc3d4, 0xc3d5, 0xc3d6, 0xc3d7, + 0xc3d8, 0xc3d9, 0xc3da, 0xc3db, 0xc3dc, 0xc3dd, 0xc3de, 0xc3df, + 0xc3e0, 0xc3e1, 0xc3e2, 0xc3e3, 0xc3e4, 0xc3e5, 0xc3e6, 0xc3e7, + 0xc3e8, 0xc3e9, 0xc3ea, 0xc3eb, 0xc3ec, 0xc3ed, 0xc3ee, 0xc3ef, + 0xc3f0, 0xc3f1, 0xc3f2, 0xc3f3, 0xc3f4, 0xc3f5, 0xc3f6, 0xc3f7, + 0xc3f8, 0xc3f9, 0xc3fa, 0xc3fb, 0xc3fc, 0xc3fd, 0xc3fe, 0xc3ff, + 0xc400, 0xc401, 0xc402, 0xc403, 0xc404, 0xc405, 0xc406, 0xc407, + 0xc408, 0xc409, 0xc40a, 0xc40b, 0xc40c, 0xc40d, 0xc40e, 0xc40f, + 0xc410, 0xc411, 0xc412, 0xc413, 0xc414, 0xc415, 0xc416, 0xc417, + 0xc418, 0xc419, 0xc41a, 0xc41b, 0xc41c, 0xc41d, 0xc41e, 0xc41f, + 0xc420, 0xc421, 0xc422, 0xc423, 0xc424, 0xc425, 0xc426, 0xc427, + 0xc428, 0xc429, 0xc42a, 0xc42b, 0xc42c, 0xc42d, 0xc42e, 0xc42f, + 0xc430, 0xc431, 0xc432, 0xc433, 0xc434, 0xc435, 0xc436, 0xc437, + 0xc438, 0xc439, 0xc43a, 0xc43b, 0xc43c, 0xc43d, 0xc43e, 0xc43f, + 0xc440, 0xc441, 0xc442, 0xc443, 0xc444, 0xc445, 0xc446, 0xc447, + 0xc448, 0xc449, 0xc44a, 0xc44b, 0xc44c, 0xc44d, 0xc44e, 0xc44f, + 0xc450, 0xc451, 0xc452, 0xc453, 0xc454, 0xc455, 0xc456, 0xc457, + 0xc458, 0xc459, 0xc45a, 0xc45b, 0xc45c, 0xc45d, 0xc45e, 0xc45f, + 0xc460, 0xc461, 0xc462, 0xc463, 0xc464, 0xc465, 0xc466, 0xc467, + 0xc468, 0xc469, 0xc46a, 0xc46b, 0xc46c, 0xc46d, 0xc46e, 0xc46f, + 0xc470, 0xc471, 0xc472, 0xc473, 0xc474, 0xc475, 0xc476, 0xc477, + 0xc478, 0xc479, 0xc47a, 0xc47b, 0xc47c, 0xc47d, 0xc47e, 0xc47f, + 0xc480, 0xc481, 0xc482, 0xc483, 0xc484, 0xc485, 0xc486, 0xc487, + 0xc488, 0xc489, 0xc48a, 0xc48b, 0xc48c, 0xc48d, 0xc48e, 0xc48f, + 0xc490, 0xc491, 0xc492, 0xc493, 0xc494, 0xc495, 0xc496, 0xc497, + 0xc498, 0xc499, 0xc49a, 0xc49b, 0xc49c, 0xc49d, 0xc49e, 0xc49f, + 0xc4a0, 0xc4a1, 0xc4a2, 0xc4a3, 0xc4a4, 0xc4a5, 0xc4a6, 0xc4a7, + 0xc4a8, 0xc4a9, 0xc4aa, 0xc4ab, 0xc4ac, 0xc4ad, 0xc4ae, 0xc4af, + 0xc4b0, 0xc4b1, 0xc4b2, 0xc4b3, 0xc4b4, 0xc4b5, 0xc4b6, 0xc4b7, + 0xc4b8, 0xc4b9, 0xc4ba, 0xc4bb, 0xc4bc, 0xc4bd, 0xc4be, 0xc4bf, + 0xc4c0, 0xc4c1, 0xc4c2, 0xc4c3, 0xc4c4, 0xc4c5, 0xc4c6, 0xc4c7, + 0xc4c8, 0xc4c9, 0xc4ca, 0xc4cb, 0xc4cc, 0xc4cd, 0xc4ce, 0xc4cf, + 0xc4d0, 0xc4d1, 0xc4d2, 0xc4d3, 0xc4d4, 0xc4d5, 0xc4d6, 0xc4d7, + 0xc4d8, 0xc4d9, 0xc4da, 0xc4db, 0xc4dc, 0xc4dd, 0xc4de, 0xc4df, + 0xc4e0, 0xc4e1, 0xc4e2, 0xc4e3, 0xc4e4, 0xc4e5, 0xc4e6, 0xc4e7, + 0xc4e8, 0xc4e9, 0xc4ea, 0xc4eb, 0xc4ec, 0xc4ed, 0xc4ee, 0xc4ef, + 0xc4f0, 0xc4f1, 0xc4f2, 0xc4f3, 0xc4f4, 0xc4f5, 0xc4f6, 0xc4f7, + 0xc4f8, 0xc4f9, 0xc4fa, 0xc4fb, 0xc4fc, 0xc4fd, 0xc4fe, 0xc4ff, + 0xc500, 0xc501, 0xc502, 0xc503, 0xc504, 0xc505, 0xc506, 0xc507, + 0xc508, 0xc509, 0xc50a, 0xc50b, 0xc50c, 0xc50d, 0xc50e, 0xc50f, + 0xc510, 0xc511, 0xc512, 0xc513, 0xc514, 0xc515, 0xc516, 0xc517, + 0xc518, 0xc519, 0xc51a, 0xc51b, 0xc51c, 0xc51d, 0xc51e, 0xc51f, + 0xc520, 0xc521, 0xc522, 0xc523, 0xc524, 0xc525, 0xc526, 0xc527, + 0xc528, 0xc529, 0xc52a, 0xc52b, 0xc52c, 0xc52d, 0xc52e, 0xc52f, + 0xc530, 0xc531, 0xc532, 0xc533, 0xc534, 0xc535, 0xc536, 0xc537, + 0xc538, 0xc539, 0xc53a, 0xc53b, 0xc53c, 0xc53d, 0xc53e, 0xc53f, + 0xc540, 0xc541, 0xc542, 0xc543, 0xc544, 0xc545, 0xc546, 0xc547, + 0xc548, 0xc549, 0xc54a, 0xc54b, 0xc54c, 0xc54d, 0xc54e, 0xc54f, + 0xc550, 0xc551, 0xc552, 0xc553, 0xc554, 0xc555, 0xc556, 0xc557, + 0xc558, 0xc559, 0xc55a, 0xc55b, 0xc55c, 0xc55d, 0xc55e, 0xc55f, + 0xc560, 0xc561, 0xc562, 0xc563, 0xc564, 0xc565, 0xc566, 0xc567, + 0xc568, 0xc569, 0xc56a, 0xc56b, 0xc56c, 0xc56d, 0xc56e, 0xc56f, + 0xc570, 0xc571, 0xc572, 0xc573, 0xc574, 0xc575, 0xc576, 0xc577, + 0xc578, 0xc579, 0xc57a, 0xc57b, 0xc57c, 0xc57d, 0xc57e, 0xc57f, + 0xc580, 0xc581, 0xc582, 0xc583, 0xc584, 0xc585, 0xc586, 0xc587, + 0xc588, 0xc589, 0xc58a, 0xc58b, 0xc58c, 0xc58d, 0xc58e, 0xc58f, + 0xc590, 0xc591, 0xc592, 0xc593, 0xc594, 0xc595, 0xc596, 0xc597, + 0xc598, 0xc599, 0xc59a, 0xc59b, 0xc59c, 0xc59d, 0xc59e, 0xc59f, + 0xc5a0, 0xc5a1, 0xc5a2, 0xc5a3, 0xc5a4, 0xc5a5, 0xc5a6, 0xc5a7, + 0xc5a8, 0xc5a9, 0xc5aa, 0xc5ab, 0xc5ac, 0xc5ad, 0xc5ae, 0xc5af, + 0xc5b0, 0xc5b1, 0xc5b2, 0xc5b3, 0xc5b4, 0xc5b5, 0xc5b6, 0xc5b7, + 0xc5b8, 0xc5b9, 0xc5ba, 0xc5bb, 0xc5bc, 0xc5bd, 0xc5be, 0xc5bf, + 0xc5c0, 0xc5c1, 0xc5c2, 0xc5c3, 0xc5c4, 0xc5c5, 0xc5c6, 0xc5c7, + 0xc5c8, 0xc5c9, 0xc5ca, 0xc5cb, 0xc5cc, 0xc5cd, 0xc5ce, 0xc5cf, + 0xc5d0, 0xc5d1, 0xc5d2, 0xc5d3, 0xc5d4, 0xc5d5, 0xc5d6, 0xc5d7, + 0xc5d8, 0xc5d9, 0xc5da, 0xc5db, 0xc5dc, 0xc5dd, 0xc5de, 0xc5df, + 0xc5e0, 0xc5e1, 0xc5e2, 0xc5e3, 0xc5e4, 0xc5e5, 0xc5e6, 0xc5e7, + 0xc5e8, 0xc5e9, 0xc5ea, 0xc5eb, 0xc5ec, 0xc5ed, 0xc5ee, 0xc5ef, + 0xc5f0, 0xc5f1, 0xc5f2, 0xc5f3, 0xc5f4, 0xc5f5, 0xc5f6, 0xc5f7, + 0xc5f8, 0xc5f9, 0xc5fa, 0xc5fb, 0xc5fc, 0xc5fd, 0xc5fe, 0xc5ff, + 0xc600, 0xc601, 0xc602, 0xc603, 0xc604, 0xc605, 0xc606, 0xc607, + 0xc608, 0xc609, 0xc60a, 0xc60b, 0xc60c, 0xc60d, 0xc60e, 0xc60f, + 0xc610, 0xc611, 0xc612, 0xc613, 0xc614, 0xc615, 0xc616, 0xc617, + 0xc618, 0xc619, 0xc61a, 0xc61b, 0xc61c, 0xc61d, 0xc61e, 0xc61f, + 0xc620, 0xc621, 0xc622, 0xc623, 0xc624, 0xc625, 0xc626, 0xc627, + 0xc628, 0xc629, 0xc62a, 0xc62b, 0xc62c, 0xc62d, 0xc62e, 0xc62f, + 0xc630, 0xc631, 0xc632, 0xc633, 0xc634, 0xc635, 0xc636, 0xc637, + 0xc638, 0xc639, 0xc63a, 0xc63b, 0xc63c, 0xc63d, 0xc63e, 0xc63f, + 0xc640, 0xc641, 0xc642, 0xc643, 0xc644, 0xc645, 0xc646, 0xc647, + 0xc648, 0xc649, 0xc64a, 0xc64b, 0xc64c, 0xc64d, 0xc64e, 0xc64f, + 0xc650, 0xc651, 0xc652, 0xc653, 0xc654, 0xc655, 0xc656, 0xc657, + 0xc658, 0xc659, 0xc65a, 0xc65b, 0xc65c, 0xc65d, 0xc65e, 0xc65f, + 0xc660, 0xc661, 0xc662, 0xc663, 0xc664, 0xc665, 0xc666, 0xc667, + 0xc668, 0xc669, 0xc66a, 0xc66b, 0xc66c, 0xc66d, 0xc66e, 0xc66f, + 0xc670, 0xc671, 0xc672, 0xc673, 0xc674, 0xc675, 0xc676, 0xc677, + 0xc678, 0xc679, 0xc67a, 0xc67b, 0xc67c, 0xc67d, 0xc67e, 0xc67f, + 0xc680, 0xc681, 0xc682, 0xc683, 0xc684, 0xc685, 0xc686, 0xc687, + 0xc688, 0xc689, 0xc68a, 0xc68b, 0xc68c, 0xc68d, 0xc68e, 0xc68f, + 0xc690, 0xc691, 0xc692, 0xc693, 0xc694, 0xc695, 0xc696, 0xc697, + 0xc698, 0xc699, 0xc69a, 0xc69b, 0xc69c, 0xc69d, 0xc69e, 0xc69f, + 0xc6a0, 0xc6a1, 0xc6a2, 0xc6a3, 0xc6a4, 0xc6a5, 0xc6a6, 0xc6a7, + 0xc6a8, 0xc6a9, 0xc6aa, 0xc6ab, 0xc6ac, 0xc6ad, 0xc6ae, 0xc6af, + 0xc6b0, 0xc6b1, 0xc6b2, 0xc6b3, 0xc6b4, 0xc6b5, 0xc6b6, 0xc6b7, + 0xc6b8, 0xc6b9, 0xc6ba, 0xc6bb, 0xc6bc, 0xc6bd, 0xc6be, 0xc6bf, + 0xc6c0, 0xc6c1, 0xc6c2, 0xc6c3, 0xc6c4, 0xc6c5, 0xc6c6, 0xc6c7, + 0xc6c8, 0xc6c9, 0xc6ca, 0xc6cb, 0xc6cc, 0xc6cd, 0xc6ce, 0xc6cf, + 0xc6d0, 0xc6d1, 0xc6d2, 0xc6d3, 0xc6d4, 0xc6d5, 0xc6d6, 0xc6d7, + 0xc6d8, 0xc6d9, 0xc6da, 0xc6db, 0xc6dc, 0xc6dd, 0xc6de, 0xc6df, + 0xc6e0, 0xc6e1, 0xc6e2, 0xc6e3, 0xc6e4, 0xc6e5, 0xc6e6, 0xc6e7, + 0xc6e8, 0xc6e9, 0xc6ea, 0xc6eb, 0xc6ec, 0xc6ed, 0xc6ee, 0xc6ef, + 0xc6f0, 0xc6f1, 0xc6f2, 0xc6f3, 0xc6f4, 0xc6f5, 0xc6f6, 0xc6f7, + 0xc6f8, 0xc6f9, 0xc6fa, 0xc6fb, 0xc6fc, 0xc6fd, 0xc6fe, 0xc6ff, + 0xc700, 0xc701, 0xc702, 0xc703, 0xc704, 0xc705, 0xc706, 0xc707, + 0xc708, 0xc709, 0xc70a, 0xc70b, 0xc70c, 0xc70d, 0xc70e, 0xc70f, + 0xc710, 0xc711, 0xc712, 0xc713, 0xc714, 0xc715, 0xc716, 0xc717, + 0xc718, 0xc719, 0xc71a, 0xc71b, 0xc71c, 0xc71d, 0xc71e, 0xc71f, + 0xc720, 0xc721, 0xc722, 0xc723, 0xc724, 0xc725, 0xc726, 0xc727, + 0xc728, 0xc729, 0xc72a, 0xc72b, 0xc72c, 0xc72d, 0xc72e, 0xc72f, + 0xc730, 0xc731, 0xc732, 0xc733, 0xc734, 0xc735, 0xc736, 0xc737, + 0xc738, 0xc739, 0xc73a, 0xc73b, 0xc73c, 0xc73d, 0xc73e, 0xc73f, + 0xc740, 0xc741, 0xc742, 0xc743, 0xc744, 0xc745, 0xc746, 0xc747, + 0xc748, 0xc749, 0xc74a, 0xc74b, 0xc74c, 0xc74d, 0xc74e, 0xc74f, + 0xc750, 0xc751, 0xc752, 0xc753, 0xc754, 0xc755, 0xc756, 0xc757, + 0xc758, 0xc759, 0xc75a, 0xc75b, 0xc75c, 0xc75d, 0xc75e, 0xc75f, + 0xc760, 0xc761, 0xc762, 0xc763, 0xc764, 0xc765, 0xc766, 0xc767, + 0xc768, 0xc769, 0xc76a, 0xc76b, 0xc76c, 0xc76d, 0xc76e, 0xc76f, + 0xc770, 0xc771, 0xc772, 0xc773, 0xc774, 0xc775, 0xc776, 0xc777, + 0xc778, 0xc779, 0xc77a, 0xc77b, 0xc77c, 0xc77d, 0xc77e, 0xc77f, + 0xc780, 0xc781, 0xc782, 0xc783, 0xc784, 0xc785, 0xc786, 0xc787, + 0xc788, 0xc789, 0xc78a, 0xc78b, 0xc78c, 0xc78d, 0xc78e, 0xc78f, + 0xc790, 0xc791, 0xc792, 0xc793, 0xc794, 0xc795, 0xc796, 0xc797, + 0xc798, 0xc799, 0xc79a, 0xc79b, 0xc79c, 0xc79d, 0xc79e, 0xc79f, + 0xc7a0, 0xc7a1, 0xc7a2, 0xc7a3, 0xc7a4, 0xc7a5, 0xc7a6, 0xc7a7, + 0xc7a8, 0xc7a9, 0xc7aa, 0xc7ab, 0xc7ac, 0xc7ad, 0xc7ae, 0xc7af, + 0xc7b0, 0xc7b1, 0xc7b2, 0xc7b3, 0xc7b4, 0xc7b5, 0xc7b6, 0xc7b7, + 0xc7b8, 0xc7b9, 0xc7ba, 0xc7bb, 0xc7bc, 0xc7bd, 0xc7be, 0xc7bf, + 0xc7c0, 0xc7c1, 0xc7c2, 0xc7c3, 0xc7c4, 0xc7c5, 0xc7c6, 0xc7c7, + 0xc7c8, 0xc7c9, 0xc7ca, 0xc7cb, 0xc7cc, 0xc7cd, 0xc7ce, 0xc7cf, + 0xc7d0, 0xc7d1, 0xc7d2, 0xc7d3, 0xc7d4, 0xc7d5, 0xc7d6, 0xc7d7, + 0xc7d8, 0xc7d9, 0xc7da, 0xc7db, 0xc7dc, 0xc7dd, 0xc7de, 0xc7df, + 0xc7e0, 0xc7e1, 0xc7e2, 0xc7e3, 0xc7e4, 0xc7e5, 0xc7e6, 0xc7e7, + 0xc7e8, 0xc7e9, 0xc7ea, 0xc7eb, 0xc7ec, 0xc7ed, 0xc7ee, 0xc7ef, + 0xc7f0, 0xc7f1, 0xc7f2, 0xc7f3, 0xc7f4, 0xc7f5, 0xc7f6, 0xc7f7, + 0xc7f8, 0xc7f9, 0xc7fa, 0xc7fb, 0xc7fc, 0xc7fd, 0xc7fe, 0xc7ff, + 0xc800, 0xc801, 0xc802, 0xc803, 0xc804, 0xc805, 0xc806, 0xc807, + 0xc808, 0xc809, 0xc80a, 0xc80b, 0xc80c, 0xc80d, 0xc80e, 0xc80f, + 0xc810, 0xc811, 0xc812, 0xc813, 0xc814, 0xc815, 0xc816, 0xc817, + 0xc818, 0xc819, 0xc81a, 0xc81b, 0xc81c, 0xc81d, 0xc81e, 0xc81f, + 0xc820, 0xc821, 0xc822, 0xc823, 0xc824, 0xc825, 0xc826, 0xc827, + 0xc828, 0xc829, 0xc82a, 0xc82b, 0xc82c, 0xc82d, 0xc82e, 0xc82f, + 0xc830, 0xc831, 0xc832, 0xc833, 0xc834, 0xc835, 0xc836, 0xc837, + 0xc838, 0xc839, 0xc83a, 0xc83b, 0xc83c, 0xc83d, 0xc83e, 0xc83f, + 0xc840, 0xc841, 0xc842, 0xc843, 0xc844, 0xc845, 0xc846, 0xc847, + 0xc848, 0xc849, 0xc84a, 0xc84b, 0xc84c, 0xc84d, 0xc84e, 0xc84f, + 0xc850, 0xc851, 0xc852, 0xc853, 0xc854, 0xc855, 0xc856, 0xc857, + 0xc858, 0xc859, 0xc85a, 0xc85b, 0xc85c, 0xc85d, 0xc85e, 0xc85f, + 0xc860, 0xc861, 0xc862, 0xc863, 0xc864, 0xc865, 0xc866, 0xc867, + 0xc868, 0xc869, 0xc86a, 0xc86b, 0xc86c, 0xc86d, 0xc86e, 0xc86f, + 0xc870, 0xc871, 0xc872, 0xc873, 0xc874, 0xc875, 0xc876, 0xc877, + 0xc878, 0xc879, 0xc87a, 0xc87b, 0xc87c, 0xc87d, 0xc87e, 0xc87f, + 0xc880, 0xc881, 0xc882, 0xc883, 0xc884, 0xc885, 0xc886, 0xc887, + 0xc888, 0xc889, 0xc88a, 0xc88b, 0xc88c, 0xc88d, 0xc88e, 0xc88f, + 0xc890, 0xc891, 0xc892, 0xc893, 0xc894, 0xc895, 0xc896, 0xc897, + 0xc898, 0xc899, 0xc89a, 0xc89b, 0xc89c, 0xc89d, 0xc89e, 0xc89f, + 0xc8a0, 0xc8a1, 0xc8a2, 0xc8a3, 0xc8a4, 0xc8a5, 0xc8a6, 0xc8a7, + 0xc8a8, 0xc8a9, 0xc8aa, 0xc8ab, 0xc8ac, 0xc8ad, 0xc8ae, 0xc8af, + 0xc8b0, 0xc8b1, 0xc8b2, 0xc8b3, 0xc8b4, 0xc8b5, 0xc8b6, 0xc8b7, + 0xc8b8, 0xc8b9, 0xc8ba, 0xc8bb, 0xc8bc, 0xc8bd, 0xc8be, 0xc8bf, + 0xc8c0, 0xc8c1, 0xc8c2, 0xc8c3, 0xc8c4, 0xc8c5, 0xc8c6, 0xc8c7, + 0xc8c8, 0xc8c9, 0xc8ca, 0xc8cb, 0xc8cc, 0xc8cd, 0xc8ce, 0xc8cf, + 0xc8d0, 0xc8d1, 0xc8d2, 0xc8d3, 0xc8d4, 0xc8d5, 0xc8d6, 0xc8d7, + 0xc8d8, 0xc8d9, 0xc8da, 0xc8db, 0xc8dc, 0xc8dd, 0xc8de, 0xc8df, + 0xc8e0, 0xc8e1, 0xc8e2, 0xc8e3, 0xc8e4, 0xc8e5, 0xc8e6, 0xc8e7, + 0xc8e8, 0xc8e9, 0xc8ea, 0xc8eb, 0xc8ec, 0xc8ed, 0xc8ee, 0xc8ef, + 0xc8f0, 0xc8f1, 0xc8f2, 0xc8f3, 0xc8f4, 0xc8f5, 0xc8f6, 0xc8f7, + 0xc8f8, 0xc8f9, 0xc8fa, 0xc8fb, 0xc8fc, 0xc8fd, 0xc8fe, 0xc8ff, + 0xc900, 0xc901, 0xc902, 0xc903, 0xc904, 0xc905, 0xc906, 0xc907, + 0xc908, 0xc909, 0xc90a, 0xc90b, 0xc90c, 0xc90d, 0xc90e, 0xc90f, + 0xc910, 0xc911, 0xc912, 0xc913, 0xc914, 0xc915, 0xc916, 0xc917, + 0xc918, 0xc919, 0xc91a, 0xc91b, 0xc91c, 0xc91d, 0xc91e, 0xc91f, + 0xc920, 0xc921, 0xc922, 0xc923, 0xc924, 0xc925, 0xc926, 0xc927, + 0xc928, 0xc929, 0xc92a, 0xc92b, 0xc92c, 0xc92d, 0xc92e, 0xc92f, + 0xc930, 0xc931, 0xc932, 0xc933, 0xc934, 0xc935, 0xc936, 0xc937, + 0xc938, 0xc939, 0xc93a, 0xc93b, 0xc93c, 0xc93d, 0xc93e, 0xc93f, + 0xc940, 0xc941, 0xc942, 0xc943, 0xc944, 0xc945, 0xc946, 0xc947, + 0xc948, 0xc949, 0xc94a, 0xc94b, 0xc94c, 0xc94d, 0xc94e, 0xc94f, + 0xc950, 0xc951, 0xc952, 0xc953, 0xc954, 0xc955, 0xc956, 0xc957, + 0xc958, 0xc959, 0xc95a, 0xc95b, 0xc95c, 0xc95d, 0xc95e, 0xc95f, + 0xc960, 0xc961, 0xc962, 0xc963, 0xc964, 0xc965, 0xc966, 0xc967, + 0xc968, 0xc969, 0xc96a, 0xc96b, 0xc96c, 0xc96d, 0xc96e, 0xc96f, + 0xc970, 0xc971, 0xc972, 0xc973, 0xc974, 0xc975, 0xc976, 0xc977, + 0xc978, 0xc979, 0xc97a, 0xc97b, 0xc97c, 0xc97d, 0xc97e, 0xc97f, + 0xc980, 0xc981, 0xc982, 0xc983, 0xc984, 0xc985, 0xc986, 0xc987, + 0xc988, 0xc989, 0xc98a, 0xc98b, 0xc98c, 0xc98d, 0xc98e, 0xc98f, + 0xc990, 0xc991, 0xc992, 0xc993, 0xc994, 0xc995, 0xc996, 0xc997, + 0xc998, 0xc999, 0xc99a, 0xc99b, 0xc99c, 0xc99d, 0xc99e, 0xc99f, + 0xc9a0, 0xc9a1, 0xc9a2, 0xc9a3, 0xc9a4, 0xc9a5, 0xc9a6, 0xc9a7, + 0xc9a8, 0xc9a9, 0xc9aa, 0xc9ab, 0xc9ac, 0xc9ad, 0xc9ae, 0xc9af, + 0xc9b0, 0xc9b1, 0xc9b2, 0xc9b3, 0xc9b4, 0xc9b5, 0xc9b6, 0xc9b7, + 0xc9b8, 0xc9b9, 0xc9ba, 0xc9bb, 0xc9bc, 0xc9bd, 0xc9be, 0xc9bf, + 0xc9c0, 0xc9c1, 0xc9c2, 0xc9c3, 0xc9c4, 0xc9c5, 0xc9c6, 0xc9c7, + 0xc9c8, 0xc9c9, 0xc9ca, 0xc9cb, 0xc9cc, 0xc9cd, 0xc9ce, 0xc9cf, + 0xc9d0, 0xc9d1, 0xc9d2, 0xc9d3, 0xc9d4, 0xc9d5, 0xc9d6, 0xc9d7, + 0xc9d8, 0xc9d9, 0xc9da, 0xc9db, 0xc9dc, 0xc9dd, 0xc9de, 0xc9df, + 0xc9e0, 0xc9e1, 0xc9e2, 0xc9e3, 0xc9e4, 0xc9e5, 0xc9e6, 0xc9e7, + 0xc9e8, 0xc9e9, 0xc9ea, 0xc9eb, 0xc9ec, 0xc9ed, 0xc9ee, 0xc9ef, + 0xc9f0, 0xc9f1, 0xc9f2, 0xc9f3, 0xc9f4, 0xc9f5, 0xc9f6, 0xc9f7, + 0xc9f8, 0xc9f9, 0xc9fa, 0xc9fb, 0xc9fc, 0xc9fd, 0xc9fe, 0xc9ff, + 0xca00, 0xca01, 0xca02, 0xca03, 0xca04, 0xca05, 0xca06, 0xca07, + 0xca08, 0xca09, 0xca0a, 0xca0b, 0xca0c, 0xca0d, 0xca0e, 0xca0f, + 0xca10, 0xca11, 0xca12, 0xca13, 0xca14, 0xca15, 0xca16, 0xca17, + 0xca18, 0xca19, 0xca1a, 0xca1b, 0xca1c, 0xca1d, 0xca1e, 0xca1f, + 0xca20, 0xca21, 0xca22, 0xca23, 0xca24, 0xca25, 0xca26, 0xca27, + 0xca28, 0xca29, 0xca2a, 0xca2b, 0xca2c, 0xca2d, 0xca2e, 0xca2f, + 0xca30, 0xca31, 0xca32, 0xca33, 0xca34, 0xca35, 0xca36, 0xca37, + 0xca38, 0xca39, 0xca3a, 0xca3b, 0xca3c, 0xca3d, 0xca3e, 0xca3f, + 0xca40, 0xca41, 0xca42, 0xca43, 0xca44, 0xca45, 0xca46, 0xca47, + 0xca48, 0xca49, 0xca4a, 0xca4b, 0xca4c, 0xca4d, 0xca4e, 0xca4f, + 0xca50, 0xca51, 0xca52, 0xca53, 0xca54, 0xca55, 0xca56, 0xca57, + 0xca58, 0xca59, 0xca5a, 0xca5b, 0xca5c, 0xca5d, 0xca5e, 0xca5f, + 0xca60, 0xca61, 0xca62, 0xca63, 0xca64, 0xca65, 0xca66, 0xca67, + 0xca68, 0xca69, 0xca6a, 0xca6b, 0xca6c, 0xca6d, 0xca6e, 0xca6f, + 0xca70, 0xca71, 0xca72, 0xca73, 0xca74, 0xca75, 0xca76, 0xca77, + 0xca78, 0xca79, 0xca7a, 0xca7b, 0xca7c, 0xca7d, 0xca7e, 0xca7f, + 0xca80, 0xca81, 0xca82, 0xca83, 0xca84, 0xca85, 0xca86, 0xca87, + 0xca88, 0xca89, 0xca8a, 0xca8b, 0xca8c, 0xca8d, 0xca8e, 0xca8f, + 0xca90, 0xca91, 0xca92, 0xca93, 0xca94, 0xca95, 0xca96, 0xca97, + 0xca98, 0xca99, 0xca9a, 0xca9b, 0xca9c, 0xca9d, 0xca9e, 0xca9f, + 0xcaa0, 0xcaa1, 0xcaa2, 0xcaa3, 0xcaa4, 0xcaa5, 0xcaa6, 0xcaa7, + 0xcaa8, 0xcaa9, 0xcaaa, 0xcaab, 0xcaac, 0xcaad, 0xcaae, 0xcaaf, + 0xcab0, 0xcab1, 0xcab2, 0xcab3, 0xcab4, 0xcab5, 0xcab6, 0xcab7, + 0xcab8, 0xcab9, 0xcaba, 0xcabb, 0xcabc, 0xcabd, 0xcabe, 0xcabf, + 0xcac0, 0xcac1, 0xcac2, 0xcac3, 0xcac4, 0xcac5, 0xcac6, 0xcac7, + 0xcac8, 0xcac9, 0xcaca, 0xcacb, 0xcacc, 0xcacd, 0xcace, 0xcacf, + 0xcad0, 0xcad1, 0xcad2, 0xcad3, 0xcad4, 0xcad5, 0xcad6, 0xcad7, + 0xcad8, 0xcad9, 0xcada, 0xcadb, 0xcadc, 0xcadd, 0xcade, 0xcadf, + 0xcae0, 0xcae1, 0xcae2, 0xcae3, 0xcae4, 0xcae5, 0xcae6, 0xcae7, + 0xcae8, 0xcae9, 0xcaea, 0xcaeb, 0xcaec, 0xcaed, 0xcaee, 0xcaef, + 0xcaf0, 0xcaf1, 0xcaf2, 0xcaf3, 0xcaf4, 0xcaf5, 0xcaf6, 0xcaf7, + 0xcaf8, 0xcaf9, 0xcafa, 0xcafb, 0xcafc, 0xcafd, 0xcafe, 0xcaff, + 0xcb00, 0xcb01, 0xcb02, 0xcb03, 0xcb04, 0xcb05, 0xcb06, 0xcb07, + 0xcb08, 0xcb09, 0xcb0a, 0xcb0b, 0xcb0c, 0xcb0d, 0xcb0e, 0xcb0f, + 0xcb10, 0xcb11, 0xcb12, 0xcb13, 0xcb14, 0xcb15, 0xcb16, 0xcb17, + 0xcb18, 0xcb19, 0xcb1a, 0xcb1b, 0xcb1c, 0xcb1d, 0xcb1e, 0xcb1f, + 0xcb20, 0xcb21, 0xcb22, 0xcb23, 0xcb24, 0xcb25, 0xcb26, 0xcb27, + 0xcb28, 0xcb29, 0xcb2a, 0xcb2b, 0xcb2c, 0xcb2d, 0xcb2e, 0xcb2f, + 0xcb30, 0xcb31, 0xcb32, 0xcb33, 0xcb34, 0xcb35, 0xcb36, 0xcb37, + 0xcb38, 0xcb39, 0xcb3a, 0xcb3b, 0xcb3c, 0xcb3d, 0xcb3e, 0xcb3f, + 0xcb40, 0xcb41, 0xcb42, 0xcb43, 0xcb44, 0xcb45, 0xcb46, 0xcb47, + 0xcb48, 0xcb49, 0xcb4a, 0xcb4b, 0xcb4c, 0xcb4d, 0xcb4e, 0xcb4f, + 0xcb50, 0xcb51, 0xcb52, 0xcb53, 0xcb54, 0xcb55, 0xcb56, 0xcb57, + 0xcb58, 0xcb59, 0xcb5a, 0xcb5b, 0xcb5c, 0xcb5d, 0xcb5e, 0xcb5f, + 0xcb60, 0xcb61, 0xcb62, 0xcb63, 0xcb64, 0xcb65, 0xcb66, 0xcb67, + 0xcb68, 0xcb69, 0xcb6a, 0xcb6b, 0xcb6c, 0xcb6d, 0xcb6e, 0xcb6f, + 0xcb70, 0xcb71, 0xcb72, 0xcb73, 0xcb74, 0xcb75, 0xcb76, 0xcb77, + 0xcb78, 0xcb79, 0xcb7a, 0xcb7b, 0xcb7c, 0xcb7d, 0xcb7e, 0xcb7f, + 0xcb80, 0xcb81, 0xcb82, 0xcb83, 0xcb84, 0xcb85, 0xcb86, 0xcb87, + 0xcb88, 0xcb89, 0xcb8a, 0xcb8b, 0xcb8c, 0xcb8d, 0xcb8e, 0xcb8f, + 0xcb90, 0xcb91, 0xcb92, 0xcb93, 0xcb94, 0xcb95, 0xcb96, 0xcb97, + 0xcb98, 0xcb99, 0xcb9a, 0xcb9b, 0xcb9c, 0xcb9d, 0xcb9e, 0xcb9f, + 0xcba0, 0xcba1, 0xcba2, 0xcba3, 0xcba4, 0xcba5, 0xcba6, 0xcba7, + 0xcba8, 0xcba9, 0xcbaa, 0xcbab, 0xcbac, 0xcbad, 0xcbae, 0xcbaf, + 0xcbb0, 0xcbb1, 0xcbb2, 0xcbb3, 0xcbb4, 0xcbb5, 0xcbb6, 0xcbb7, + 0xcbb8, 0xcbb9, 0xcbba, 0xcbbb, 0xcbbc, 0xcbbd, 0xcbbe, 0xcbbf, + 0xcbc0, 0xcbc1, 0xcbc2, 0xcbc3, 0xcbc4, 0xcbc5, 0xcbc6, 0xcbc7, + 0xcbc8, 0xcbc9, 0xcbca, 0xcbcb, 0xcbcc, 0xcbcd, 0xcbce, 0xcbcf, + 0xcbd0, 0xcbd1, 0xcbd2, 0xcbd3, 0xcbd4, 0xcbd5, 0xcbd6, 0xcbd7, + 0xcbd8, 0xcbd9, 0xcbda, 0xcbdb, 0xcbdc, 0xcbdd, 0xcbde, 0xcbdf, + 0xcbe0, 0xcbe1, 0xcbe2, 0xcbe3, 0xcbe4, 0xcbe5, 0xcbe6, 0xcbe7, + 0xcbe8, 0xcbe9, 0xcbea, 0xcbeb, 0xcbec, 0xcbed, 0xcbee, 0xcbef, + 0xcbf0, 0xcbf1, 0xcbf2, 0xcbf3, 0xcbf4, 0xcbf5, 0xcbf6, 0xcbf7, + 0xcbf8, 0xcbf9, 0xcbfa, 0xcbfb, 0xcbfc, 0xcbfd, 0xcbfe, 0xcbff, + 0xcc00, 0xcc01, 0xcc02, 0xcc03, 0xcc04, 0xcc05, 0xcc06, 0xcc07, + 0xcc08, 0xcc09, 0xcc0a, 0xcc0b, 0xcc0c, 0xcc0d, 0xcc0e, 0xcc0f, + 0xcc10, 0xcc11, 0xcc12, 0xcc13, 0xcc14, 0xcc15, 0xcc16, 0xcc17, + 0xcc18, 0xcc19, 0xcc1a, 0xcc1b, 0xcc1c, 0xcc1d, 0xcc1e, 0xcc1f, + 0xcc20, 0xcc21, 0xcc22, 0xcc23, 0xcc24, 0xcc25, 0xcc26, 0xcc27, + 0xcc28, 0xcc29, 0xcc2a, 0xcc2b, 0xcc2c, 0xcc2d, 0xcc2e, 0xcc2f, + 0xcc30, 0xcc31, 0xcc32, 0xcc33, 0xcc34, 0xcc35, 0xcc36, 0xcc37, + 0xcc38, 0xcc39, 0xcc3a, 0xcc3b, 0xcc3c, 0xcc3d, 0xcc3e, 0xcc3f, + 0xcc40, 0xcc41, 0xcc42, 0xcc43, 0xcc44, 0xcc45, 0xcc46, 0xcc47, + 0xcc48, 0xcc49, 0xcc4a, 0xcc4b, 0xcc4c, 0xcc4d, 0xcc4e, 0xcc4f, + 0xcc50, 0xcc51, 0xcc52, 0xcc53, 0xcc54, 0xcc55, 0xcc56, 0xcc57, + 0xcc58, 0xcc59, 0xcc5a, 0xcc5b, 0xcc5c, 0xcc5d, 0xcc5e, 0xcc5f, + 0xcc60, 0xcc61, 0xcc62, 0xcc63, 0xcc64, 0xcc65, 0xcc66, 0xcc67, + 0xcc68, 0xcc69, 0xcc6a, 0xcc6b, 0xcc6c, 0xcc6d, 0xcc6e, 0xcc6f, + 0xcc70, 0xcc71, 0xcc72, 0xcc73, 0xcc74, 0xcc75, 0xcc76, 0xcc77, + 0xcc78, 0xcc79, 0xcc7a, 0xcc7b, 0xcc7c, 0xcc7d, 0xcc7e, 0xcc7f, + 0xcc80, 0xcc81, 0xcc82, 0xcc83, 0xcc84, 0xcc85, 0xcc86, 0xcc87, + 0xcc88, 0xcc89, 0xcc8a, 0xcc8b, 0xcc8c, 0xcc8d, 0xcc8e, 0xcc8f, + 0xcc90, 0xcc91, 0xcc92, 0xcc93, 0xcc94, 0xcc95, 0xcc96, 0xcc97, + 0xcc98, 0xcc99, 0xcc9a, 0xcc9b, 0xcc9c, 0xcc9d, 0xcc9e, 0xcc9f, + 0xcca0, 0xcca1, 0xcca2, 0xcca3, 0xcca4, 0xcca5, 0xcca6, 0xcca7, + 0xcca8, 0xcca9, 0xccaa, 0xccab, 0xccac, 0xccad, 0xccae, 0xccaf, + 0xccb0, 0xccb1, 0xccb2, 0xccb3, 0xccb4, 0xccb5, 0xccb6, 0xccb7, + 0xccb8, 0xccb9, 0xccba, 0xccbb, 0xccbc, 0xccbd, 0xccbe, 0xccbf, + 0xccc0, 0xccc1, 0xccc2, 0xccc3, 0xccc4, 0xccc5, 0xccc6, 0xccc7, + 0xccc8, 0xccc9, 0xccca, 0xcccb, 0xcccc, 0xcccd, 0xccce, 0xcccf, + 0xccd0, 0xccd1, 0xccd2, 0xccd3, 0xccd4, 0xccd5, 0xccd6, 0xccd7, + 0xccd8, 0xccd9, 0xccda, 0xccdb, 0xccdc, 0xccdd, 0xccde, 0xccdf, + 0xcce0, 0xcce1, 0xcce2, 0xcce3, 0xcce4, 0xcce5, 0xcce6, 0xcce7, + 0xcce8, 0xcce9, 0xccea, 0xcceb, 0xccec, 0xcced, 0xccee, 0xccef, + 0xccf0, 0xccf1, 0xccf2, 0xccf3, 0xccf4, 0xccf5, 0xccf6, 0xccf7, + 0xccf8, 0xccf9, 0xccfa, 0xccfb, 0xccfc, 0xccfd, 0xccfe, 0xccff, + 0xcd00, 0xcd01, 0xcd02, 0xcd03, 0xcd04, 0xcd05, 0xcd06, 0xcd07, + 0xcd08, 0xcd09, 0xcd0a, 0xcd0b, 0xcd0c, 0xcd0d, 0xcd0e, 0xcd0f, + 0xcd10, 0xcd11, 0xcd12, 0xcd13, 0xcd14, 0xcd15, 0xcd16, 0xcd17, + 0xcd18, 0xcd19, 0xcd1a, 0xcd1b, 0xcd1c, 0xcd1d, 0xcd1e, 0xcd1f, + 0xcd20, 0xcd21, 0xcd22, 0xcd23, 0xcd24, 0xcd25, 0xcd26, 0xcd27, + 0xcd28, 0xcd29, 0xcd2a, 0xcd2b, 0xcd2c, 0xcd2d, 0xcd2e, 0xcd2f, + 0xcd30, 0xcd31, 0xcd32, 0xcd33, 0xcd34, 0xcd35, 0xcd36, 0xcd37, + 0xcd38, 0xcd39, 0xcd3a, 0xcd3b, 0xcd3c, 0xcd3d, 0xcd3e, 0xcd3f, + 0xcd40, 0xcd41, 0xcd42, 0xcd43, 0xcd44, 0xcd45, 0xcd46, 0xcd47, + 0xcd48, 0xcd49, 0xcd4a, 0xcd4b, 0xcd4c, 0xcd4d, 0xcd4e, 0xcd4f, + 0xcd50, 0xcd51, 0xcd52, 0xcd53, 0xcd54, 0xcd55, 0xcd56, 0xcd57, + 0xcd58, 0xcd59, 0xcd5a, 0xcd5b, 0xcd5c, 0xcd5d, 0xcd5e, 0xcd5f, + 0xcd60, 0xcd61, 0xcd62, 0xcd63, 0xcd64, 0xcd65, 0xcd66, 0xcd67, + 0xcd68, 0xcd69, 0xcd6a, 0xcd6b, 0xcd6c, 0xcd6d, 0xcd6e, 0xcd6f, + 0xcd70, 0xcd71, 0xcd72, 0xcd73, 0xcd74, 0xcd75, 0xcd76, 0xcd77, + 0xcd78, 0xcd79, 0xcd7a, 0xcd7b, 0xcd7c, 0xcd7d, 0xcd7e, 0xcd7f, + 0xcd80, 0xcd81, 0xcd82, 0xcd83, 0xcd84, 0xcd85, 0xcd86, 0xcd87, + 0xcd88, 0xcd89, 0xcd8a, 0xcd8b, 0xcd8c, 0xcd8d, 0xcd8e, 0xcd8f, + 0xcd90, 0xcd91, 0xcd92, 0xcd93, 0xcd94, 0xcd95, 0xcd96, 0xcd97, + 0xcd98, 0xcd99, 0xcd9a, 0xcd9b, 0xcd9c, 0xcd9d, 0xcd9e, 0xcd9f, + 0xcda0, 0xcda1, 0xcda2, 0xcda3, 0xcda4, 0xcda5, 0xcda6, 0xcda7, + 0xcda8, 0xcda9, 0xcdaa, 0xcdab, 0xcdac, 0xcdad, 0xcdae, 0xcdaf, + 0xcdb0, 0xcdb1, 0xcdb2, 0xcdb3, 0xcdb4, 0xcdb5, 0xcdb6, 0xcdb7, + 0xcdb8, 0xcdb9, 0xcdba, 0xcdbb, 0xcdbc, 0xcdbd, 0xcdbe, 0xcdbf, + 0xcdc0, 0xcdc1, 0xcdc2, 0xcdc3, 0xcdc4, 0xcdc5, 0xcdc6, 0xcdc7, + 0xcdc8, 0xcdc9, 0xcdca, 0xcdcb, 0xcdcc, 0xcdcd, 0xcdce, 0xcdcf, + 0xcdd0, 0xcdd1, 0xcdd2, 0xcdd3, 0xcdd4, 0xcdd5, 0xcdd6, 0xcdd7, + 0xcdd8, 0xcdd9, 0xcdda, 0xcddb, 0xcddc, 0xcddd, 0xcdde, 0xcddf, + 0xcde0, 0xcde1, 0xcde2, 0xcde3, 0xcde4, 0xcde5, 0xcde6, 0xcde7, + 0xcde8, 0xcde9, 0xcdea, 0xcdeb, 0xcdec, 0xcded, 0xcdee, 0xcdef, + 0xcdf0, 0xcdf1, 0xcdf2, 0xcdf3, 0xcdf4, 0xcdf5, 0xcdf6, 0xcdf7, + 0xcdf8, 0xcdf9, 0xcdfa, 0xcdfb, 0xcdfc, 0xcdfd, 0xcdfe, 0xcdff, + 0xce00, 0xce01, 0xce02, 0xce03, 0xce04, 0xce05, 0xce06, 0xce07, + 0xce08, 0xce09, 0xce0a, 0xce0b, 0xce0c, 0xce0d, 0xce0e, 0xce0f, + 0xce10, 0xce11, 0xce12, 0xce13, 0xce14, 0xce15, 0xce16, 0xce17, + 0xce18, 0xce19, 0xce1a, 0xce1b, 0xce1c, 0xce1d, 0xce1e, 0xce1f, + 0xce20, 0xce21, 0xce22, 0xce23, 0xce24, 0xce25, 0xce26, 0xce27, + 0xce28, 0xce29, 0xce2a, 0xce2b, 0xce2c, 0xce2d, 0xce2e, 0xce2f, + 0xce30, 0xce31, 0xce32, 0xce33, 0xce34, 0xce35, 0xce36, 0xce37, + 0xce38, 0xce39, 0xce3a, 0xce3b, 0xce3c, 0xce3d, 0xce3e, 0xce3f, + 0xce40, 0xce41, 0xce42, 0xce43, 0xce44, 0xce45, 0xce46, 0xce47, + 0xce48, 0xce49, 0xce4a, 0xce4b, 0xce4c, 0xce4d, 0xce4e, 0xce4f, + 0xce50, 0xce51, 0xce52, 0xce53, 0xce54, 0xce55, 0xce56, 0xce57, + 0xce58, 0xce59, 0xce5a, 0xce5b, 0xce5c, 0xce5d, 0xce5e, 0xce5f, + 0xce60, 0xce61, 0xce62, 0xce63, 0xce64, 0xce65, 0xce66, 0xce67, + 0xce68, 0xce69, 0xce6a, 0xce6b, 0xce6c, 0xce6d, 0xce6e, 0xce6f, + 0xce70, 0xce71, 0xce72, 0xce73, 0xce74, 0xce75, 0xce76, 0xce77, + 0xce78, 0xce79, 0xce7a, 0xce7b, 0xce7c, 0xce7d, 0xce7e, 0xce7f, + 0xce80, 0xce81, 0xce82, 0xce83, 0xce84, 0xce85, 0xce86, 0xce87, + 0xce88, 0xce89, 0xce8a, 0xce8b, 0xce8c, 0xce8d, 0xce8e, 0xce8f, + 0xce90, 0xce91, 0xce92, 0xce93, 0xce94, 0xce95, 0xce96, 0xce97, + 0xce98, 0xce99, 0xce9a, 0xce9b, 0xce9c, 0xce9d, 0xce9e, 0xce9f, + 0xcea0, 0xcea1, 0xcea2, 0xcea3, 0xcea4, 0xcea5, 0xcea6, 0xcea7, + 0xcea8, 0xcea9, 0xceaa, 0xceab, 0xceac, 0xcead, 0xceae, 0xceaf, + 0xceb0, 0xceb1, 0xceb2, 0xceb3, 0xceb4, 0xceb5, 0xceb6, 0xceb7, + 0xceb8, 0xceb9, 0xceba, 0xcebb, 0xcebc, 0xcebd, 0xcebe, 0xcebf, + 0xcec0, 0xcec1, 0xcec2, 0xcec3, 0xcec4, 0xcec5, 0xcec6, 0xcec7, + 0xcec8, 0xcec9, 0xceca, 0xcecb, 0xcecc, 0xcecd, 0xcece, 0xcecf, + 0xced0, 0xced1, 0xced2, 0xced3, 0xced4, 0xced5, 0xced6, 0xced7, + 0xced8, 0xced9, 0xceda, 0xcedb, 0xcedc, 0xcedd, 0xcede, 0xcedf, + 0xcee0, 0xcee1, 0xcee2, 0xcee3, 0xcee4, 0xcee5, 0xcee6, 0xcee7, + 0xcee8, 0xcee9, 0xceea, 0xceeb, 0xceec, 0xceed, 0xceee, 0xceef, + 0xcef0, 0xcef1, 0xcef2, 0xcef3, 0xcef4, 0xcef5, 0xcef6, 0xcef7, + 0xcef8, 0xcef9, 0xcefa, 0xcefb, 0xcefc, 0xcefd, 0xcefe, 0xceff, + 0xcf00, 0xcf01, 0xcf02, 0xcf03, 0xcf04, 0xcf05, 0xcf06, 0xcf07, + 0xcf08, 0xcf09, 0xcf0a, 0xcf0b, 0xcf0c, 0xcf0d, 0xcf0e, 0xcf0f, + 0xcf10, 0xcf11, 0xcf12, 0xcf13, 0xcf14, 0xcf15, 0xcf16, 0xcf17, + 0xcf18, 0xcf19, 0xcf1a, 0xcf1b, 0xcf1c, 0xcf1d, 0xcf1e, 0xcf1f, + 0xcf20, 0xcf21, 0xcf22, 0xcf23, 0xcf24, 0xcf25, 0xcf26, 0xcf27, + 0xcf28, 0xcf29, 0xcf2a, 0xcf2b, 0xcf2c, 0xcf2d, 0xcf2e, 0xcf2f, + 0xcf30, 0xcf31, 0xcf32, 0xcf33, 0xcf34, 0xcf35, 0xcf36, 0xcf37, + 0xcf38, 0xcf39, 0xcf3a, 0xcf3b, 0xcf3c, 0xcf3d, 0xcf3e, 0xcf3f, + 0xcf40, 0xcf41, 0xcf42, 0xcf43, 0xcf44, 0xcf45, 0xcf46, 0xcf47, + 0xcf48, 0xcf49, 0xcf4a, 0xcf4b, 0xcf4c, 0xcf4d, 0xcf4e, 0xcf4f, + 0xcf50, 0xcf51, 0xcf52, 0xcf53, 0xcf54, 0xcf55, 0xcf56, 0xcf57, + 0xcf58, 0xcf59, 0xcf5a, 0xcf5b, 0xcf5c, 0xcf5d, 0xcf5e, 0xcf5f, + 0xcf60, 0xcf61, 0xcf62, 0xcf63, 0xcf64, 0xcf65, 0xcf66, 0xcf67, + 0xcf68, 0xcf69, 0xcf6a, 0xcf6b, 0xcf6c, 0xcf6d, 0xcf6e, 0xcf6f, + 0xcf70, 0xcf71, 0xcf72, 0xcf73, 0xcf74, 0xcf75, 0xcf76, 0xcf77, + 0xcf78, 0xcf79, 0xcf7a, 0xcf7b, 0xcf7c, 0xcf7d, 0xcf7e, 0xcf7f, + 0xcf80, 0xcf81, 0xcf82, 0xcf83, 0xcf84, 0xcf85, 0xcf86, 0xcf87, + 0xcf88, 0xcf89, 0xcf8a, 0xcf8b, 0xcf8c, 0xcf8d, 0xcf8e, 0xcf8f, + 0xcf90, 0xcf91, 0xcf92, 0xcf93, 0xcf94, 0xcf95, 0xcf96, 0xcf97, + 0xcf98, 0xcf99, 0xcf9a, 0xcf9b, 0xcf9c, 0xcf9d, 0xcf9e, 0xcf9f, + 0xcfa0, 0xcfa1, 0xcfa2, 0xcfa3, 0xcfa4, 0xcfa5, 0xcfa6, 0xcfa7, + 0xcfa8, 0xcfa9, 0xcfaa, 0xcfab, 0xcfac, 0xcfad, 0xcfae, 0xcfaf, + 0xcfb0, 0xcfb1, 0xcfb2, 0xcfb3, 0xcfb4, 0xcfb5, 0xcfb6, 0xcfb7, + 0xcfb8, 0xcfb9, 0xcfba, 0xcfbb, 0xcfbc, 0xcfbd, 0xcfbe, 0xcfbf, + 0xcfc0, 0xcfc1, 0xcfc2, 0xcfc3, 0xcfc4, 0xcfc5, 0xcfc6, 0xcfc7, + 0xcfc8, 0xcfc9, 0xcfca, 0xcfcb, 0xcfcc, 0xcfcd, 0xcfce, 0xcfcf, + 0xcfd0, 0xcfd1, 0xcfd2, 0xcfd3, 0xcfd4, 0xcfd5, 0xcfd6, 0xcfd7, + 0xcfd8, 0xcfd9, 0xcfda, 0xcfdb, 0xcfdc, 0xcfdd, 0xcfde, 0xcfdf, + 0xcfe0, 0xcfe1, 0xcfe2, 0xcfe3, 0xcfe4, 0xcfe5, 0xcfe6, 0xcfe7, + 0xcfe8, 0xcfe9, 0xcfea, 0xcfeb, 0xcfec, 0xcfed, 0xcfee, 0xcfef, + 0xcff0, 0xcff1, 0xcff2, 0xcff3, 0xcff4, 0xcff5, 0xcff6, 0xcff7, + 0xcff8, 0xcff9, 0xcffa, 0xcffb, 0xcffc, 0xcffd, 0xcffe, 0xcfff, + 0xd000, 0xd001, 0xd002, 0xd003, 0xd004, 0xd005, 0xd006, 0xd007, + 0xd008, 0xd009, 0xd00a, 0xd00b, 0xd00c, 0xd00d, 0xd00e, 0xd00f, + 0xd010, 0xd011, 0xd012, 0xd013, 0xd014, 0xd015, 0xd016, 0xd017, + 0xd018, 0xd019, 0xd01a, 0xd01b, 0xd01c, 0xd01d, 0xd01e, 0xd01f, + 0xd020, 0xd021, 0xd022, 0xd023, 0xd024, 0xd025, 0xd026, 0xd027, + 0xd028, 0xd029, 0xd02a, 0xd02b, 0xd02c, 0xd02d, 0xd02e, 0xd02f, + 0xd030, 0xd031, 0xd032, 0xd033, 0xd034, 0xd035, 0xd036, 0xd037, + 0xd038, 0xd039, 0xd03a, 0xd03b, 0xd03c, 0xd03d, 0xd03e, 0xd03f, + 0xd040, 0xd041, 0xd042, 0xd043, 0xd044, 0xd045, 0xd046, 0xd047, + 0xd048, 0xd049, 0xd04a, 0xd04b, 0xd04c, 0xd04d, 0xd04e, 0xd04f, + 0xd050, 0xd051, 0xd052, 0xd053, 0xd054, 0xd055, 0xd056, 0xd057, + 0xd058, 0xd059, 0xd05a, 0xd05b, 0xd05c, 0xd05d, 0xd05e, 0xd05f, + 0xd060, 0xd061, 0xd062, 0xd063, 0xd064, 0xd065, 0xd066, 0xd067, + 0xd068, 0xd069, 0xd06a, 0xd06b, 0xd06c, 0xd06d, 0xd06e, 0xd06f, + 0xd070, 0xd071, 0xd072, 0xd073, 0xd074, 0xd075, 0xd076, 0xd077, + 0xd078, 0xd079, 0xd07a, 0xd07b, 0xd07c, 0xd07d, 0xd07e, 0xd07f, + 0xd080, 0xd081, 0xd082, 0xd083, 0xd084, 0xd085, 0xd086, 0xd087, + 0xd088, 0xd089, 0xd08a, 0xd08b, 0xd08c, 0xd08d, 0xd08e, 0xd08f, + 0xd090, 0xd091, 0xd092, 0xd093, 0xd094, 0xd095, 0xd096, 0xd097, + 0xd098, 0xd099, 0xd09a, 0xd09b, 0xd09c, 0xd09d, 0xd09e, 0xd09f, + 0xd0a0, 0xd0a1, 0xd0a2, 0xd0a3, 0xd0a4, 0xd0a5, 0xd0a6, 0xd0a7, + 0xd0a8, 0xd0a9, 0xd0aa, 0xd0ab, 0xd0ac, 0xd0ad, 0xd0ae, 0xd0af, + 0xd0b0, 0xd0b1, 0xd0b2, 0xd0b3, 0xd0b4, 0xd0b5, 0xd0b6, 0xd0b7, + 0xd0b8, 0xd0b9, 0xd0ba, 0xd0bb, 0xd0bc, 0xd0bd, 0xd0be, 0xd0bf, + 0xd0c0, 0xd0c1, 0xd0c2, 0xd0c3, 0xd0c4, 0xd0c5, 0xd0c6, 0xd0c7, + 0xd0c8, 0xd0c9, 0xd0ca, 0xd0cb, 0xd0cc, 0xd0cd, 0xd0ce, 0xd0cf, + 0xd0d0, 0xd0d1, 0xd0d2, 0xd0d3, 0xd0d4, 0xd0d5, 0xd0d6, 0xd0d7, + 0xd0d8, 0xd0d9, 0xd0da, 0xd0db, 0xd0dc, 0xd0dd, 0xd0de, 0xd0df, + 0xd0e0, 0xd0e1, 0xd0e2, 0xd0e3, 0xd0e4, 0xd0e5, 0xd0e6, 0xd0e7, + 0xd0e8, 0xd0e9, 0xd0ea, 0xd0eb, 0xd0ec, 0xd0ed, 0xd0ee, 0xd0ef, + 0xd0f0, 0xd0f1, 0xd0f2, 0xd0f3, 0xd0f4, 0xd0f5, 0xd0f6, 0xd0f7, + 0xd0f8, 0xd0f9, 0xd0fa, 0xd0fb, 0xd0fc, 0xd0fd, 0xd0fe, 0xd0ff, + 0xd100, 0xd101, 0xd102, 0xd103, 0xd104, 0xd105, 0xd106, 0xd107, + 0xd108, 0xd109, 0xd10a, 0xd10b, 0xd10c, 0xd10d, 0xd10e, 0xd10f, + 0xd110, 0xd111, 0xd112, 0xd113, 0xd114, 0xd115, 0xd116, 0xd117, + 0xd118, 0xd119, 0xd11a, 0xd11b, 0xd11c, 0xd11d, 0xd11e, 0xd11f, + 0xd120, 0xd121, 0xd122, 0xd123, 0xd124, 0xd125, 0xd126, 0xd127, + 0xd128, 0xd129, 0xd12a, 0xd12b, 0xd12c, 0xd12d, 0xd12e, 0xd12f, + 0xd130, 0xd131, 0xd132, 0xd133, 0xd134, 0xd135, 0xd136, 0xd137, + 0xd138, 0xd139, 0xd13a, 0xd13b, 0xd13c, 0xd13d, 0xd13e, 0xd13f, + 0xd140, 0xd141, 0xd142, 0xd143, 0xd144, 0xd145, 0xd146, 0xd147, + 0xd148, 0xd149, 0xd14a, 0xd14b, 0xd14c, 0xd14d, 0xd14e, 0xd14f, + 0xd150, 0xd151, 0xd152, 0xd153, 0xd154, 0xd155, 0xd156, 0xd157, + 0xd158, 0xd159, 0xd15a, 0xd15b, 0xd15c, 0xd15d, 0xd15e, 0xd15f, + 0xd160, 0xd161, 0xd162, 0xd163, 0xd164, 0xd165, 0xd166, 0xd167, + 0xd168, 0xd169, 0xd16a, 0xd16b, 0xd16c, 0xd16d, 0xd16e, 0xd16f, + 0xd170, 0xd171, 0xd172, 0xd173, 0xd174, 0xd175, 0xd176, 0xd177, + 0xd178, 0xd179, 0xd17a, 0xd17b, 0xd17c, 0xd17d, 0xd17e, 0xd17f, + 0xd180, 0xd181, 0xd182, 0xd183, 0xd184, 0xd185, 0xd186, 0xd187, + 0xd188, 0xd189, 0xd18a, 0xd18b, 0xd18c, 0xd18d, 0xd18e, 0xd18f, + 0xd190, 0xd191, 0xd192, 0xd193, 0xd194, 0xd195, 0xd196, 0xd197, + 0xd198, 0xd199, 0xd19a, 0xd19b, 0xd19c, 0xd19d, 0xd19e, 0xd19f, + 0xd1a0, 0xd1a1, 0xd1a2, 0xd1a3, 0xd1a4, 0xd1a5, 0xd1a6, 0xd1a7, + 0xd1a8, 0xd1a9, 0xd1aa, 0xd1ab, 0xd1ac, 0xd1ad, 0xd1ae, 0xd1af, + 0xd1b0, 0xd1b1, 0xd1b2, 0xd1b3, 0xd1b4, 0xd1b5, 0xd1b6, 0xd1b7, + 0xd1b8, 0xd1b9, 0xd1ba, 0xd1bb, 0xd1bc, 0xd1bd, 0xd1be, 0xd1bf, + 0xd1c0, 0xd1c1, 0xd1c2, 0xd1c3, 0xd1c4, 0xd1c5, 0xd1c6, 0xd1c7, + 0xd1c8, 0xd1c9, 0xd1ca, 0xd1cb, 0xd1cc, 0xd1cd, 0xd1ce, 0xd1cf, + 0xd1d0, 0xd1d1, 0xd1d2, 0xd1d3, 0xd1d4, 0xd1d5, 0xd1d6, 0xd1d7, + 0xd1d8, 0xd1d9, 0xd1da, 0xd1db, 0xd1dc, 0xd1dd, 0xd1de, 0xd1df, + 0xd1e0, 0xd1e1, 0xd1e2, 0xd1e3, 0xd1e4, 0xd1e5, 0xd1e6, 0xd1e7, + 0xd1e8, 0xd1e9, 0xd1ea, 0xd1eb, 0xd1ec, 0xd1ed, 0xd1ee, 0xd1ef, + 0xd1f0, 0xd1f1, 0xd1f2, 0xd1f3, 0xd1f4, 0xd1f5, 0xd1f6, 0xd1f7, + 0xd1f8, 0xd1f9, 0xd1fa, 0xd1fb, 0xd1fc, 0xd1fd, 0xd1fe, 0xd1ff, + 0xd200, 0xd201, 0xd202, 0xd203, 0xd204, 0xd205, 0xd206, 0xd207, + 0xd208, 0xd209, 0xd20a, 0xd20b, 0xd20c, 0xd20d, 0xd20e, 0xd20f, + 0xd210, 0xd211, 0xd212, 0xd213, 0xd214, 0xd215, 0xd216, 0xd217, + 0xd218, 0xd219, 0xd21a, 0xd21b, 0xd21c, 0xd21d, 0xd21e, 0xd21f, + 0xd220, 0xd221, 0xd222, 0xd223, 0xd224, 0xd225, 0xd226, 0xd227, + 0xd228, 0xd229, 0xd22a, 0xd22b, 0xd22c, 0xd22d, 0xd22e, 0xd22f, + 0xd230, 0xd231, 0xd232, 0xd233, 0xd234, 0xd235, 0xd236, 0xd237, + 0xd238, 0xd239, 0xd23a, 0xd23b, 0xd23c, 0xd23d, 0xd23e, 0xd23f, + 0xd240, 0xd241, 0xd242, 0xd243, 0xd244, 0xd245, 0xd246, 0xd247, + 0xd248, 0xd249, 0xd24a, 0xd24b, 0xd24c, 0xd24d, 0xd24e, 0xd24f, + 0xd250, 0xd251, 0xd252, 0xd253, 0xd254, 0xd255, 0xd256, 0xd257, + 0xd258, 0xd259, 0xd25a, 0xd25b, 0xd25c, 0xd25d, 0xd25e, 0xd25f, + 0xd260, 0xd261, 0xd262, 0xd263, 0xd264, 0xd265, 0xd266, 0xd267, + 0xd268, 0xd269, 0xd26a, 0xd26b, 0xd26c, 0xd26d, 0xd26e, 0xd26f, + 0xd270, 0xd271, 0xd272, 0xd273, 0xd274, 0xd275, 0xd276, 0xd277, + 0xd278, 0xd279, 0xd27a, 0xd27b, 0xd27c, 0xd27d, 0xd27e, 0xd27f, + 0xd280, 0xd281, 0xd282, 0xd283, 0xd284, 0xd285, 0xd286, 0xd287, + 0xd288, 0xd289, 0xd28a, 0xd28b, 0xd28c, 0xd28d, 0xd28e, 0xd28f, + 0xd290, 0xd291, 0xd292, 0xd293, 0xd294, 0xd295, 0xd296, 0xd297, + 0xd298, 0xd299, 0xd29a, 0xd29b, 0xd29c, 0xd29d, 0xd29e, 0xd29f, + 0xd2a0, 0xd2a1, 0xd2a2, 0xd2a3, 0xd2a4, 0xd2a5, 0xd2a6, 0xd2a7, + 0xd2a8, 0xd2a9, 0xd2aa, 0xd2ab, 0xd2ac, 0xd2ad, 0xd2ae, 0xd2af, + 0xd2b0, 0xd2b1, 0xd2b2, 0xd2b3, 0xd2b4, 0xd2b5, 0xd2b6, 0xd2b7, + 0xd2b8, 0xd2b9, 0xd2ba, 0xd2bb, 0xd2bc, 0xd2bd, 0xd2be, 0xd2bf, + 0xd2c0, 0xd2c1, 0xd2c2, 0xd2c3, 0xd2c4, 0xd2c5, 0xd2c6, 0xd2c7, + 0xd2c8, 0xd2c9, 0xd2ca, 0xd2cb, 0xd2cc, 0xd2cd, 0xd2ce, 0xd2cf, + 0xd2d0, 0xd2d1, 0xd2d2, 0xd2d3, 0xd2d4, 0xd2d5, 0xd2d6, 0xd2d7, + 0xd2d8, 0xd2d9, 0xd2da, 0xd2db, 0xd2dc, 0xd2dd, 0xd2de, 0xd2df, + 0xd2e0, 0xd2e1, 0xd2e2, 0xd2e3, 0xd2e4, 0xd2e5, 0xd2e6, 0xd2e7, + 0xd2e8, 0xd2e9, 0xd2ea, 0xd2eb, 0xd2ec, 0xd2ed, 0xd2ee, 0xd2ef, + 0xd2f0, 0xd2f1, 0xd2f2, 0xd2f3, 0xd2f4, 0xd2f5, 0xd2f6, 0xd2f7, + 0xd2f8, 0xd2f9, 0xd2fa, 0xd2fb, 0xd2fc, 0xd2fd, 0xd2fe, 0xd2ff, + 0xd300, 0xd301, 0xd302, 0xd303, 0xd304, 0xd305, 0xd306, 0xd307, + 0xd308, 0xd309, 0xd30a, 0xd30b, 0xd30c, 0xd30d, 0xd30e, 0xd30f, + 0xd310, 0xd311, 0xd312, 0xd313, 0xd314, 0xd315, 0xd316, 0xd317, + 0xd318, 0xd319, 0xd31a, 0xd31b, 0xd31c, 0xd31d, 0xd31e, 0xd31f, + 0xd320, 0xd321, 0xd322, 0xd323, 0xd324, 0xd325, 0xd326, 0xd327, + 0xd328, 0xd329, 0xd32a, 0xd32b, 0xd32c, 0xd32d, 0xd32e, 0xd32f, + 0xd330, 0xd331, 0xd332, 0xd333, 0xd334, 0xd335, 0xd336, 0xd337, + 0xd338, 0xd339, 0xd33a, 0xd33b, 0xd33c, 0xd33d, 0xd33e, 0xd33f, + 0xd340, 0xd341, 0xd342, 0xd343, 0xd344, 0xd345, 0xd346, 0xd347, + 0xd348, 0xd349, 0xd34a, 0xd34b, 0xd34c, 0xd34d, 0xd34e, 0xd34f, + 0xd350, 0xd351, 0xd352, 0xd353, 0xd354, 0xd355, 0xd356, 0xd357, + 0xd358, 0xd359, 0xd35a, 0xd35b, 0xd35c, 0xd35d, 0xd35e, 0xd35f, + 0xd360, 0xd361, 0xd362, 0xd363, 0xd364, 0xd365, 0xd366, 0xd367, + 0xd368, 0xd369, 0xd36a, 0xd36b, 0xd36c, 0xd36d, 0xd36e, 0xd36f, + 0xd370, 0xd371, 0xd372, 0xd373, 0xd374, 0xd375, 0xd376, 0xd377, + 0xd378, 0xd379, 0xd37a, 0xd37b, 0xd37c, 0xd37d, 0xd37e, 0xd37f, + 0xd380, 0xd381, 0xd382, 0xd383, 0xd384, 0xd385, 0xd386, 0xd387, + 0xd388, 0xd389, 0xd38a, 0xd38b, 0xd38c, 0xd38d, 0xd38e, 0xd38f, + 0xd390, 0xd391, 0xd392, 0xd393, 0xd394, 0xd395, 0xd396, 0xd397, + 0xd398, 0xd399, 0xd39a, 0xd39b, 0xd39c, 0xd39d, 0xd39e, 0xd39f, + 0xd3a0, 0xd3a1, 0xd3a2, 0xd3a3, 0xd3a4, 0xd3a5, 0xd3a6, 0xd3a7, + 0xd3a8, 0xd3a9, 0xd3aa, 0xd3ab, 0xd3ac, 0xd3ad, 0xd3ae, 0xd3af, + 0xd3b0, 0xd3b1, 0xd3b2, 0xd3b3, 0xd3b4, 0xd3b5, 0xd3b6, 0xd3b7, + 0xd3b8, 0xd3b9, 0xd3ba, 0xd3bb, 0xd3bc, 0xd3bd, 0xd3be, 0xd3bf, + 0xd3c0, 0xd3c1, 0xd3c2, 0xd3c3, 0xd3c4, 0xd3c5, 0xd3c6, 0xd3c7, + 0xd3c8, 0xd3c9, 0xd3ca, 0xd3cb, 0xd3cc, 0xd3cd, 0xd3ce, 0xd3cf, + 0xd3d0, 0xd3d1, 0xd3d2, 0xd3d3, 0xd3d4, 0xd3d5, 0xd3d6, 0xd3d7, + 0xd3d8, 0xd3d9, 0xd3da, 0xd3db, 0xd3dc, 0xd3dd, 0xd3de, 0xd3df, + 0xd3e0, 0xd3e1, 0xd3e2, 0xd3e3, 0xd3e4, 0xd3e5, 0xd3e6, 0xd3e7, + 0xd3e8, 0xd3e9, 0xd3ea, 0xd3eb, 0xd3ec, 0xd3ed, 0xd3ee, 0xd3ef, + 0xd3f0, 0xd3f1, 0xd3f2, 0xd3f3, 0xd3f4, 0xd3f5, 0xd3f6, 0xd3f7, + 0xd3f8, 0xd3f9, 0xd3fa, 0xd3fb, 0xd3fc, 0xd3fd, 0xd3fe, 0xd3ff, + 0xd400, 0xd401, 0xd402, 0xd403, 0xd404, 0xd405, 0xd406, 0xd407, + 0xd408, 0xd409, 0xd40a, 0xd40b, 0xd40c, 0xd40d, 0xd40e, 0xd40f, + 0xd410, 0xd411, 0xd412, 0xd413, 0xd414, 0xd415, 0xd416, 0xd417, + 0xd418, 0xd419, 0xd41a, 0xd41b, 0xd41c, 0xd41d, 0xd41e, 0xd41f, + 0xd420, 0xd421, 0xd422, 0xd423, 0xd424, 0xd425, 0xd426, 0xd427, + 0xd428, 0xd429, 0xd42a, 0xd42b, 0xd42c, 0xd42d, 0xd42e, 0xd42f, + 0xd430, 0xd431, 0xd432, 0xd433, 0xd434, 0xd435, 0xd436, 0xd437, + 0xd438, 0xd439, 0xd43a, 0xd43b, 0xd43c, 0xd43d, 0xd43e, 0xd43f, + 0xd440, 0xd441, 0xd442, 0xd443, 0xd444, 0xd445, 0xd446, 0xd447, + 0xd448, 0xd449, 0xd44a, 0xd44b, 0xd44c, 0xd44d, 0xd44e, 0xd44f, + 0xd450, 0xd451, 0xd452, 0xd453, 0xd454, 0xd455, 0xd456, 0xd457, + 0xd458, 0xd459, 0xd45a, 0xd45b, 0xd45c, 0xd45d, 0xd45e, 0xd45f, + 0xd460, 0xd461, 0xd462, 0xd463, 0xd464, 0xd465, 0xd466, 0xd467, + 0xd468, 0xd469, 0xd46a, 0xd46b, 0xd46c, 0xd46d, 0xd46e, 0xd46f, + 0xd470, 0xd471, 0xd472, 0xd473, 0xd474, 0xd475, 0xd476, 0xd477, + 0xd478, 0xd479, 0xd47a, 0xd47b, 0xd47c, 0xd47d, 0xd47e, 0xd47f, + 0xd480, 0xd481, 0xd482, 0xd483, 0xd484, 0xd485, 0xd486, 0xd487, + 0xd488, 0xd489, 0xd48a, 0xd48b, 0xd48c, 0xd48d, 0xd48e, 0xd48f, + 0xd490, 0xd491, 0xd492, 0xd493, 0xd494, 0xd495, 0xd496, 0xd497, + 0xd498, 0xd499, 0xd49a, 0xd49b, 0xd49c, 0xd49d, 0xd49e, 0xd49f, + 0xd4a0, 0xd4a1, 0xd4a2, 0xd4a3, 0xd4a4, 0xd4a5, 0xd4a6, 0xd4a7, + 0xd4a8, 0xd4a9, 0xd4aa, 0xd4ab, 0xd4ac, 0xd4ad, 0xd4ae, 0xd4af, + 0xd4b0, 0xd4b1, 0xd4b2, 0xd4b3, 0xd4b4, 0xd4b5, 0xd4b6, 0xd4b7, + 0xd4b8, 0xd4b9, 0xd4ba, 0xd4bb, 0xd4bc, 0xd4bd, 0xd4be, 0xd4bf, + 0xd4c0, 0xd4c1, 0xd4c2, 0xd4c3, 0xd4c4, 0xd4c5, 0xd4c6, 0xd4c7, + 0xd4c8, 0xd4c9, 0xd4ca, 0xd4cb, 0xd4cc, 0xd4cd, 0xd4ce, 0xd4cf, + 0xd4d0, 0xd4d1, 0xd4d2, 0xd4d3, 0xd4d4, 0xd4d5, 0xd4d6, 0xd4d7, + 0xd4d8, 0xd4d9, 0xd4da, 0xd4db, 0xd4dc, 0xd4dd, 0xd4de, 0xd4df, + 0xd4e0, 0xd4e1, 0xd4e2, 0xd4e3, 0xd4e4, 0xd4e5, 0xd4e6, 0xd4e7, + 0xd4e8, 0xd4e9, 0xd4ea, 0xd4eb, 0xd4ec, 0xd4ed, 0xd4ee, 0xd4ef, + 0xd4f0, 0xd4f1, 0xd4f2, 0xd4f3, 0xd4f4, 0xd4f5, 0xd4f6, 0xd4f7, + 0xd4f8, 0xd4f9, 0xd4fa, 0xd4fb, 0xd4fc, 0xd4fd, 0xd4fe, 0xd4ff, + 0xd500, 0xd501, 0xd502, 0xd503, 0xd504, 0xd505, 0xd506, 0xd507, + 0xd508, 0xd509, 0xd50a, 0xd50b, 0xd50c, 0xd50d, 0xd50e, 0xd50f, + 0xd510, 0xd511, 0xd512, 0xd513, 0xd514, 0xd515, 0xd516, 0xd517, + 0xd518, 0xd519, 0xd51a, 0xd51b, 0xd51c, 0xd51d, 0xd51e, 0xd51f, + 0xd520, 0xd521, 0xd522, 0xd523, 0xd524, 0xd525, 0xd526, 0xd527, + 0xd528, 0xd529, 0xd52a, 0xd52b, 0xd52c, 0xd52d, 0xd52e, 0xd52f, + 0xd530, 0xd531, 0xd532, 0xd533, 0xd534, 0xd535, 0xd536, 0xd537, + 0xd538, 0xd539, 0xd53a, 0xd53b, 0xd53c, 0xd53d, 0xd53e, 0xd53f, + 0xd540, 0xd541, 0xd542, 0xd543, 0xd544, 0xd545, 0xd546, 0xd547, + 0xd548, 0xd549, 0xd54a, 0xd54b, 0xd54c, 0xd54d, 0xd54e, 0xd54f, + 0xd550, 0xd551, 0xd552, 0xd553, 0xd554, 0xd555, 0xd556, 0xd557, + 0xd558, 0xd559, 0xd55a, 0xd55b, 0xd55c, 0xd55d, 0xd55e, 0xd55f, + 0xd560, 0xd561, 0xd562, 0xd563, 0xd564, 0xd565, 0xd566, 0xd567, + 0xd568, 0xd569, 0xd56a, 0xd56b, 0xd56c, 0xd56d, 0xd56e, 0xd56f, + 0xd570, 0xd571, 0xd572, 0xd573, 0xd574, 0xd575, 0xd576, 0xd577, + 0xd578, 0xd579, 0xd57a, 0xd57b, 0xd57c, 0xd57d, 0xd57e, 0xd57f, + 0xd580, 0xd581, 0xd582, 0xd583, 0xd584, 0xd585, 0xd586, 0xd587, + 0xd588, 0xd589, 0xd58a, 0xd58b, 0xd58c, 0xd58d, 0xd58e, 0xd58f, + 0xd590, 0xd591, 0xd592, 0xd593, 0xd594, 0xd595, 0xd596, 0xd597, + 0xd598, 0xd599, 0xd59a, 0xd59b, 0xd59c, 0xd59d, 0xd59e, 0xd59f, + 0xd5a0, 0xd5a1, 0xd5a2, 0xd5a3, 0xd5a4, 0xd5a5, 0xd5a6, 0xd5a7, + 0xd5a8, 0xd5a9, 0xd5aa, 0xd5ab, 0xd5ac, 0xd5ad, 0xd5ae, 0xd5af, + 0xd5b0, 0xd5b1, 0xd5b2, 0xd5b3, 0xd5b4, 0xd5b5, 0xd5b6, 0xd5b7, + 0xd5b8, 0xd5b9, 0xd5ba, 0xd5bb, 0xd5bc, 0xd5bd, 0xd5be, 0xd5bf, + 0xd5c0, 0xd5c1, 0xd5c2, 0xd5c3, 0xd5c4, 0xd5c5, 0xd5c6, 0xd5c7, + 0xd5c8, 0xd5c9, 0xd5ca, 0xd5cb, 0xd5cc, 0xd5cd, 0xd5ce, 0xd5cf, + 0xd5d0, 0xd5d1, 0xd5d2, 0xd5d3, 0xd5d4, 0xd5d5, 0xd5d6, 0xd5d7, + 0xd5d8, 0xd5d9, 0xd5da, 0xd5db, 0xd5dc, 0xd5dd, 0xd5de, 0xd5df, + 0xd5e0, 0xd5e1, 0xd5e2, 0xd5e3, 0xd5e4, 0xd5e5, 0xd5e6, 0xd5e7, + 0xd5e8, 0xd5e9, 0xd5ea, 0xd5eb, 0xd5ec, 0xd5ed, 0xd5ee, 0xd5ef, + 0xd5f0, 0xd5f1, 0xd5f2, 0xd5f3, 0xd5f4, 0xd5f5, 0xd5f6, 0xd5f7, + 0xd5f8, 0xd5f9, 0xd5fa, 0xd5fb, 0xd5fc, 0xd5fd, 0xd5fe, 0xd5ff, + 0xd600, 0xd601, 0xd602, 0xd603, 0xd604, 0xd605, 0xd606, 0xd607, + 0xd608, 0xd609, 0xd60a, 0xd60b, 0xd60c, 0xd60d, 0xd60e, 0xd60f, + 0xd610, 0xd611, 0xd612, 0xd613, 0xd614, 0xd615, 0xd616, 0xd617, + 0xd618, 0xd619, 0xd61a, 0xd61b, 0xd61c, 0xd61d, 0xd61e, 0xd61f, + 0xd620, 0xd621, 0xd622, 0xd623, 0xd624, 0xd625, 0xd626, 0xd627, + 0xd628, 0xd629, 0xd62a, 0xd62b, 0xd62c, 0xd62d, 0xd62e, 0xd62f, + 0xd630, 0xd631, 0xd632, 0xd633, 0xd634, 0xd635, 0xd636, 0xd637, + 0xd638, 0xd639, 0xd63a, 0xd63b, 0xd63c, 0xd63d, 0xd63e, 0xd63f, + 0xd640, 0xd641, 0xd642, 0xd643, 0xd644, 0xd645, 0xd646, 0xd647, + 0xd648, 0xd649, 0xd64a, 0xd64b, 0xd64c, 0xd64d, 0xd64e, 0xd64f, + 0xd650, 0xd651, 0xd652, 0xd653, 0xd654, 0xd655, 0xd656, 0xd657, + 0xd658, 0xd659, 0xd65a, 0xd65b, 0xd65c, 0xd65d, 0xd65e, 0xd65f, + 0xd660, 0xd661, 0xd662, 0xd663, 0xd664, 0xd665, 0xd666, 0xd667, + 0xd668, 0xd669, 0xd66a, 0xd66b, 0xd66c, 0xd66d, 0xd66e, 0xd66f, + 0xd670, 0xd671, 0xd672, 0xd673, 0xd674, 0xd675, 0xd676, 0xd677, + 0xd678, 0xd679, 0xd67a, 0xd67b, 0xd67c, 0xd67d, 0xd67e, 0xd67f, + 0xd680, 0xd681, 0xd682, 0xd683, 0xd684, 0xd685, 0xd686, 0xd687, + 0xd688, 0xd689, 0xd68a, 0xd68b, 0xd68c, 0xd68d, 0xd68e, 0xd68f, + 0xd690, 0xd691, 0xd692, 0xd693, 0xd694, 0xd695, 0xd696, 0xd697, + 0xd698, 0xd699, 0xd69a, 0xd69b, 0xd69c, 0xd69d, 0xd69e, 0xd69f, + 0xd6a0, 0xd6a1, 0xd6a2, 0xd6a3, 0xd6a4, 0xd6a5, 0xd6a6, 0xd6a7, + 0xd6a8, 0xd6a9, 0xd6aa, 0xd6ab, 0xd6ac, 0xd6ad, 0xd6ae, 0xd6af, + 0xd6b0, 0xd6b1, 0xd6b2, 0xd6b3, 0xd6b4, 0xd6b5, 0xd6b6, 0xd6b7, + 0xd6b8, 0xd6b9, 0xd6ba, 0xd6bb, 0xd6bc, 0xd6bd, 0xd6be, 0xd6bf, + 0xd6c0, 0xd6c1, 0xd6c2, 0xd6c3, 0xd6c4, 0xd6c5, 0xd6c6, 0xd6c7, + 0xd6c8, 0xd6c9, 0xd6ca, 0xd6cb, 0xd6cc, 0xd6cd, 0xd6ce, 0xd6cf, + 0xd6d0, 0xd6d1, 0xd6d2, 0xd6d3, 0xd6d4, 0xd6d5, 0xd6d6, 0xd6d7, + 0xd6d8, 0xd6d9, 0xd6da, 0xd6db, 0xd6dc, 0xd6dd, 0xd6de, 0xd6df, + 0xd6e0, 0xd6e1, 0xd6e2, 0xd6e3, 0xd6e4, 0xd6e5, 0xd6e6, 0xd6e7, + 0xd6e8, 0xd6e9, 0xd6ea, 0xd6eb, 0xd6ec, 0xd6ed, 0xd6ee, 0xd6ef, + 0xd6f0, 0xd6f1, 0xd6f2, 0xd6f3, 0xd6f4, 0xd6f5, 0xd6f6, 0xd6f7, + 0xd6f8, 0xd6f9, 0xd6fa, 0xd6fb, 0xd6fc, 0xd6fd, 0xd6fe, 0xd6ff, + 0xd700, 0xd701, 0xd702, 0xd703, 0xd704, 0xd705, 0xd706, 0xd707, + 0xd708, 0xd709, 0xd70a, 0xd70b, 0xd70c, 0xd70d, 0xd70e, 0xd70f, + 0xd710, 0xd711, 0xd712, 0xd713, 0xd714, 0xd715, 0xd716, 0xd717, + 0xd718, 0xd719, 0xd71a, 0xd71b, 0xd71c, 0xd71d, 0xd71e, 0xd71f, + 0xd720, 0xd721, 0xd722, 0xd723, 0xd724, 0xd725, 0xd726, 0xd727, + 0xd728, 0xd729, 0xd72a, 0xd72b, 0xd72c, 0xd72d, 0xd72e, 0xd72f, + 0xd730, 0xd731, 0xd732, 0xd733, 0xd734, 0xd735, 0xd736, 0xd737, + 0xd738, 0xd739, 0xd73a, 0xd73b, 0xd73c, 0xd73d, 0xd73e, 0xd73f, + 0xd740, 0xd741, 0xd742, 0xd743, 0xd744, 0xd745, 0xd746, 0xd747, + 0xd748, 0xd749, 0xd74a, 0xd74b, 0xd74c, 0xd74d, 0xd74e, 0xd74f, + 0xd750, 0xd751, 0xd752, 0xd753, 0xd754, 0xd755, 0xd756, 0xd757, + 0xd758, 0xd759, 0xd75a, 0xd75b, 0xd75c, 0xd75d, 0xd75e, 0xd75f, + 0xd760, 0xd761, 0xd762, 0xd763, 0xd764, 0xd765, 0xd766, 0xd767, + 0xd768, 0xd769, 0xd76a, 0xd76b, 0xd76c, 0xd76d, 0xd76e, 0xd76f, + 0xd770, 0xd771, 0xd772, 0xd773, 0xd774, 0xd775, 0xd776, 0xd777, + 0xd778, 0xd779, 0xd77a, 0xd77b, 0xd77c, 0xd77d, 0xd77e, 0xd77f, + 0xd780, 0xd781, 0xd782, 0xd783, 0xd784, 0xd785, 0xd786, 0xd787, + 0xd788, 0xd789, 0xd78a, 0xd78b, 0xd78c, 0xd78d, 0xd78e, 0xd78f, + 0xd790, 0xd791, 0xd792, 0xd793, 0xd794, 0xd795, 0xd796, 0xd797, + 0xd798, 0xd799, 0xd79a, 0xd79b, 0xd79c, 0xd79d, 0xd79e, 0xd79f, + 0xd7a0, 0xd7a1, 0xd7a2, 0xd7a3, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xd800, 0xd801, 0xd802, 0xd803, 0xd804, 0xd805, 0xd806, 0xd807, + 0xd808, 0xd809, 0xd80a, 0xd80b, 0xd80c, 0xd80d, 0xd80e, 0xd80f, + 0xd810, 0xd811, 0xd812, 0xd813, 0xd814, 0xd815, 0xd816, 0xd817, + 0xd818, 0xd819, 0xd81a, 0xd81b, 0xd81c, 0xd81d, 0xd81e, 0xd81f, + 0xd820, 0xd821, 0xd822, 0xd823, 0xd824, 0xd825, 0xd826, 0xd827, + 0xd828, 0xd829, 0xd82a, 0xd82b, 0xd82c, 0xd82d, 0xd82e, 0xd82f, + 0xd830, 0xd831, 0xd832, 0xd833, 0xd834, 0xd835, 0xd836, 0xd837, + 0xd838, 0xd839, 0xd83a, 0xd83b, 0xd83c, 0xd83d, 0xd83e, 0xd83f, + 0xd840, 0xd841, 0xd842, 0xd843, 0xd844, 0xd845, 0xd846, 0xd847, + 0xd848, 0xd849, 0xd84a, 0xd84b, 0xd84c, 0xd84d, 0xd84e, 0xd84f, + 0xd850, 0xd851, 0xd852, 0xd853, 0xd854, 0xd855, 0xd856, 0xd857, + 0xd858, 0xd859, 0xd85a, 0xd85b, 0xd85c, 0xd85d, 0xd85e, 0xd85f, + 0xd860, 0xd861, 0xd862, 0xd863, 0xd864, 0xd865, 0xd866, 0xd867, + 0xd868, 0xd869, 0xd86a, 0xd86b, 0xd86c, 0xd86d, 0xd86e, 0xd86f, + 0xd870, 0xd871, 0xd872, 0xd873, 0xd874, 0xd875, 0xd876, 0xd877, + 0xd878, 0xd879, 0xd87a, 0xd87b, 0xd87c, 0xd87d, 0xd87e, 0xd87f, + 0xd880, 0xd881, 0xd882, 0xd883, 0xd884, 0xd885, 0xd886, 0xd887, + 0xd888, 0xd889, 0xd88a, 0xd88b, 0xd88c, 0xd88d, 0xd88e, 0xd88f, + 0xd890, 0xd891, 0xd892, 0xd893, 0xd894, 0xd895, 0xd896, 0xd897, + 0xd898, 0xd899, 0xd89a, 0xd89b, 0xd89c, 0xd89d, 0xd89e, 0xd89f, + 0xd8a0, 0xd8a1, 0xd8a2, 0xd8a3, 0xd8a4, 0xd8a5, 0xd8a6, 0xd8a7, + 0xd8a8, 0xd8a9, 0xd8aa, 0xd8ab, 0xd8ac, 0xd8ad, 0xd8ae, 0xd8af, + 0xd8b0, 0xd8b1, 0xd8b2, 0xd8b3, 0xd8b4, 0xd8b5, 0xd8b6, 0xd8b7, + 0xd8b8, 0xd8b9, 0xd8ba, 0xd8bb, 0xd8bc, 0xd8bd, 0xd8be, 0xd8bf, + 0xd8c0, 0xd8c1, 0xd8c2, 0xd8c3, 0xd8c4, 0xd8c5, 0xd8c6, 0xd8c7, + 0xd8c8, 0xd8c9, 0xd8ca, 0xd8cb, 0xd8cc, 0xd8cd, 0xd8ce, 0xd8cf, + 0xd8d0, 0xd8d1, 0xd8d2, 0xd8d3, 0xd8d4, 0xd8d5, 0xd8d6, 0xd8d7, + 0xd8d8, 0xd8d9, 0xd8da, 0xd8db, 0xd8dc, 0xd8dd, 0xd8de, 0xd8df, + 0xd8e0, 0xd8e1, 0xd8e2, 0xd8e3, 0xd8e4, 0xd8e5, 0xd8e6, 0xd8e7, + 0xd8e8, 0xd8e9, 0xd8ea, 0xd8eb, 0xd8ec, 0xd8ed, 0xd8ee, 0xd8ef, + 0xd8f0, 0xd8f1, 0xd8f2, 0xd8f3, 0xd8f4, 0xd8f5, 0xd8f6, 0xd8f7, + 0xd8f8, 0xd8f9, 0xd8fa, 0xd8fb, 0xd8fc, 0xd8fd, 0xd8fe, 0xd8ff, + 0xd900, 0xd901, 0xd902, 0xd903, 0xd904, 0xd905, 0xd906, 0xd907, + 0xd908, 0xd909, 0xd90a, 0xd90b, 0xd90c, 0xd90d, 0xd90e, 0xd90f, + 0xd910, 0xd911, 0xd912, 0xd913, 0xd914, 0xd915, 0xd916, 0xd917, + 0xd918, 0xd919, 0xd91a, 0xd91b, 0xd91c, 0xd91d, 0xd91e, 0xd91f, + 0xd920, 0xd921, 0xd922, 0xd923, 0xd924, 0xd925, 0xd926, 0xd927, + 0xd928, 0xd929, 0xd92a, 0xd92b, 0xd92c, 0xd92d, 0xd92e, 0xd92f, + 0xd930, 0xd931, 0xd932, 0xd933, 0xd934, 0xd935, 0xd936, 0xd937, + 0xd938, 0xd939, 0xd93a, 0xd93b, 0xd93c, 0xd93d, 0xd93e, 0xd93f, + 0xd940, 0xd941, 0xd942, 0xd943, 0xd944, 0xd945, 0xd946, 0xd947, + 0xd948, 0xd949, 0xd94a, 0xd94b, 0xd94c, 0xd94d, 0xd94e, 0xd94f, + 0xd950, 0xd951, 0xd952, 0xd953, 0xd954, 0xd955, 0xd956, 0xd957, + 0xd958, 0xd959, 0xd95a, 0xd95b, 0xd95c, 0xd95d, 0xd95e, 0xd95f, + 0xd960, 0xd961, 0xd962, 0xd963, 0xd964, 0xd965, 0xd966, 0xd967, + 0xd968, 0xd969, 0xd96a, 0xd96b, 0xd96c, 0xd96d, 0xd96e, 0xd96f, + 0xd970, 0xd971, 0xd972, 0xd973, 0xd974, 0xd975, 0xd976, 0xd977, + 0xd978, 0xd979, 0xd97a, 0xd97b, 0xd97c, 0xd97d, 0xd97e, 0xd97f, + 0xd980, 0xd981, 0xd982, 0xd983, 0xd984, 0xd985, 0xd986, 0xd987, + 0xd988, 0xd989, 0xd98a, 0xd98b, 0xd98c, 0xd98d, 0xd98e, 0xd98f, + 0xd990, 0xd991, 0xd992, 0xd993, 0xd994, 0xd995, 0xd996, 0xd997, + 0xd998, 0xd999, 0xd99a, 0xd99b, 0xd99c, 0xd99d, 0xd99e, 0xd99f, + 0xd9a0, 0xd9a1, 0xd9a2, 0xd9a3, 0xd9a4, 0xd9a5, 0xd9a6, 0xd9a7, + 0xd9a8, 0xd9a9, 0xd9aa, 0xd9ab, 0xd9ac, 0xd9ad, 0xd9ae, 0xd9af, + 0xd9b0, 0xd9b1, 0xd9b2, 0xd9b3, 0xd9b4, 0xd9b5, 0xd9b6, 0xd9b7, + 0xd9b8, 0xd9b9, 0xd9ba, 0xd9bb, 0xd9bc, 0xd9bd, 0xd9be, 0xd9bf, + 0xd9c0, 0xd9c1, 0xd9c2, 0xd9c3, 0xd9c4, 0xd9c5, 0xd9c6, 0xd9c7, + 0xd9c8, 0xd9c9, 0xd9ca, 0xd9cb, 0xd9cc, 0xd9cd, 0xd9ce, 0xd9cf, + 0xd9d0, 0xd9d1, 0xd9d2, 0xd9d3, 0xd9d4, 0xd9d5, 0xd9d6, 0xd9d7, + 0xd9d8, 0xd9d9, 0xd9da, 0xd9db, 0xd9dc, 0xd9dd, 0xd9de, 0xd9df, + 0xd9e0, 0xd9e1, 0xd9e2, 0xd9e3, 0xd9e4, 0xd9e5, 0xd9e6, 0xd9e7, + 0xd9e8, 0xd9e9, 0xd9ea, 0xd9eb, 0xd9ec, 0xd9ed, 0xd9ee, 0xd9ef, + 0xd9f0, 0xd9f1, 0xd9f2, 0xd9f3, 0xd9f4, 0xd9f5, 0xd9f6, 0xd9f7, + 0xd9f8, 0xd9f9, 0xd9fa, 0xd9fb, 0xd9fc, 0xd9fd, 0xd9fe, 0xd9ff, + 0xda00, 0xda01, 0xda02, 0xda03, 0xda04, 0xda05, 0xda06, 0xda07, + 0xda08, 0xda09, 0xda0a, 0xda0b, 0xda0c, 0xda0d, 0xda0e, 0xda0f, + 0xda10, 0xda11, 0xda12, 0xda13, 0xda14, 0xda15, 0xda16, 0xda17, + 0xda18, 0xda19, 0xda1a, 0xda1b, 0xda1c, 0xda1d, 0xda1e, 0xda1f, + 0xda20, 0xda21, 0xda22, 0xda23, 0xda24, 0xda25, 0xda26, 0xda27, + 0xda28, 0xda29, 0xda2a, 0xda2b, 0xda2c, 0xda2d, 0xda2e, 0xda2f, + 0xda30, 0xda31, 0xda32, 0xda33, 0xda34, 0xda35, 0xda36, 0xda37, + 0xda38, 0xda39, 0xda3a, 0xda3b, 0xda3c, 0xda3d, 0xda3e, 0xda3f, + 0xda40, 0xda41, 0xda42, 0xda43, 0xda44, 0xda45, 0xda46, 0xda47, + 0xda48, 0xda49, 0xda4a, 0xda4b, 0xda4c, 0xda4d, 0xda4e, 0xda4f, + 0xda50, 0xda51, 0xda52, 0xda53, 0xda54, 0xda55, 0xda56, 0xda57, + 0xda58, 0xda59, 0xda5a, 0xda5b, 0xda5c, 0xda5d, 0xda5e, 0xda5f, + 0xda60, 0xda61, 0xda62, 0xda63, 0xda64, 0xda65, 0xda66, 0xda67, + 0xda68, 0xda69, 0xda6a, 0xda6b, 0xda6c, 0xda6d, 0xda6e, 0xda6f, + 0xda70, 0xda71, 0xda72, 0xda73, 0xda74, 0xda75, 0xda76, 0xda77, + 0xda78, 0xda79, 0xda7a, 0xda7b, 0xda7c, 0xda7d, 0xda7e, 0xda7f, + 0xda80, 0xda81, 0xda82, 0xda83, 0xda84, 0xda85, 0xda86, 0xda87, + 0xda88, 0xda89, 0xda8a, 0xda8b, 0xda8c, 0xda8d, 0xda8e, 0xda8f, + 0xda90, 0xda91, 0xda92, 0xda93, 0xda94, 0xda95, 0xda96, 0xda97, + 0xda98, 0xda99, 0xda9a, 0xda9b, 0xda9c, 0xda9d, 0xda9e, 0xda9f, + 0xdaa0, 0xdaa1, 0xdaa2, 0xdaa3, 0xdaa4, 0xdaa5, 0xdaa6, 0xdaa7, + 0xdaa8, 0xdaa9, 0xdaaa, 0xdaab, 0xdaac, 0xdaad, 0xdaae, 0xdaaf, + 0xdab0, 0xdab1, 0xdab2, 0xdab3, 0xdab4, 0xdab5, 0xdab6, 0xdab7, + 0xdab8, 0xdab9, 0xdaba, 0xdabb, 0xdabc, 0xdabd, 0xdabe, 0xdabf, + 0xdac0, 0xdac1, 0xdac2, 0xdac3, 0xdac4, 0xdac5, 0xdac6, 0xdac7, + 0xdac8, 0xdac9, 0xdaca, 0xdacb, 0xdacc, 0xdacd, 0xdace, 0xdacf, + 0xdad0, 0xdad1, 0xdad2, 0xdad3, 0xdad4, 0xdad5, 0xdad6, 0xdad7, + 0xdad8, 0xdad9, 0xdada, 0xdadb, 0xdadc, 0xdadd, 0xdade, 0xdadf, + 0xdae0, 0xdae1, 0xdae2, 0xdae3, 0xdae4, 0xdae5, 0xdae6, 0xdae7, + 0xdae8, 0xdae9, 0xdaea, 0xdaeb, 0xdaec, 0xdaed, 0xdaee, 0xdaef, + 0xdaf0, 0xdaf1, 0xdaf2, 0xdaf3, 0xdaf4, 0xdaf5, 0xdaf6, 0xdaf7, + 0xdaf8, 0xdaf9, 0xdafa, 0xdafb, 0xdafc, 0xdafd, 0xdafe, 0xdaff, + 0xdb00, 0xdb01, 0xdb02, 0xdb03, 0xdb04, 0xdb05, 0xdb06, 0xdb07, + 0xdb08, 0xdb09, 0xdb0a, 0xdb0b, 0xdb0c, 0xdb0d, 0xdb0e, 0xdb0f, + 0xdb10, 0xdb11, 0xdb12, 0xdb13, 0xdb14, 0xdb15, 0xdb16, 0xdb17, + 0xdb18, 0xdb19, 0xdb1a, 0xdb1b, 0xdb1c, 0xdb1d, 0xdb1e, 0xdb1f, + 0xdb20, 0xdb21, 0xdb22, 0xdb23, 0xdb24, 0xdb25, 0xdb26, 0xdb27, + 0xdb28, 0xdb29, 0xdb2a, 0xdb2b, 0xdb2c, 0xdb2d, 0xdb2e, 0xdb2f, + 0xdb30, 0xdb31, 0xdb32, 0xdb33, 0xdb34, 0xdb35, 0xdb36, 0xdb37, + 0xdb38, 0xdb39, 0xdb3a, 0xdb3b, 0xdb3c, 0xdb3d, 0xdb3e, 0xdb3f, + 0xdb40, 0xdb41, 0xdb42, 0xdb43, 0xdb44, 0xdb45, 0xdb46, 0xdb47, + 0xdb48, 0xdb49, 0xdb4a, 0xdb4b, 0xdb4c, 0xdb4d, 0xdb4e, 0xdb4f, + 0xdb50, 0xdb51, 0xdb52, 0xdb53, 0xdb54, 0xdb55, 0xdb56, 0xdb57, + 0xdb58, 0xdb59, 0xdb5a, 0xdb5b, 0xdb5c, 0xdb5d, 0xdb5e, 0xdb5f, + 0xdb60, 0xdb61, 0xdb62, 0xdb63, 0xdb64, 0xdb65, 0xdb66, 0xdb67, + 0xdb68, 0xdb69, 0xdb6a, 0xdb6b, 0xdb6c, 0xdb6d, 0xdb6e, 0xdb6f, + 0xdb70, 0xdb71, 0xdb72, 0xdb73, 0xdb74, 0xdb75, 0xdb76, 0xdb77, + 0xdb78, 0xdb79, 0xdb7a, 0xdb7b, 0xdb7c, 0xdb7d, 0xdb7e, 0xdb7f, + 0xdb80, 0xdb81, 0xdb82, 0xdb83, 0xdb84, 0xdb85, 0xdb86, 0xdb87, + 0xdb88, 0xdb89, 0xdb8a, 0xdb8b, 0xdb8c, 0xdb8d, 0xdb8e, 0xdb8f, + 0xdb90, 0xdb91, 0xdb92, 0xdb93, 0xdb94, 0xdb95, 0xdb96, 0xdb97, + 0xdb98, 0xdb99, 0xdb9a, 0xdb9b, 0xdb9c, 0xdb9d, 0xdb9e, 0xdb9f, + 0xdba0, 0xdba1, 0xdba2, 0xdba3, 0xdba4, 0xdba5, 0xdba6, 0xdba7, + 0xdba8, 0xdba9, 0xdbaa, 0xdbab, 0xdbac, 0xdbad, 0xdbae, 0xdbaf, + 0xdbb0, 0xdbb1, 0xdbb2, 0xdbb3, 0xdbb4, 0xdbb5, 0xdbb6, 0xdbb7, + 0xdbb8, 0xdbb9, 0xdbba, 0xdbbb, 0xdbbc, 0xdbbd, 0xdbbe, 0xdbbf, + 0xdbc0, 0xdbc1, 0xdbc2, 0xdbc3, 0xdbc4, 0xdbc5, 0xdbc6, 0xdbc7, + 0xdbc8, 0xdbc9, 0xdbca, 0xdbcb, 0xdbcc, 0xdbcd, 0xdbce, 0xdbcf, + 0xdbd0, 0xdbd1, 0xdbd2, 0xdbd3, 0xdbd4, 0xdbd5, 0xdbd6, 0xdbd7, + 0xdbd8, 0xdbd9, 0xdbda, 0xdbdb, 0xdbdc, 0xdbdd, 0xdbde, 0xdbdf, + 0xdbe0, 0xdbe1, 0xdbe2, 0xdbe3, 0xdbe4, 0xdbe5, 0xdbe6, 0xdbe7, + 0xdbe8, 0xdbe9, 0xdbea, 0xdbeb, 0xdbec, 0xdbed, 0xdbee, 0xdbef, + 0xdbf0, 0xdbf1, 0xdbf2, 0xdbf3, 0xdbf4, 0xdbf5, 0xdbf6, 0xdbf7, + 0xdbf8, 0xdbf9, 0xdbfa, 0xdbfb, 0xdbfc, 0xdbfd, 0xdbfe, 0xdbff, + 0xdc00, 0xdc01, 0xdc02, 0xdc03, 0xdc04, 0xdc05, 0xdc06, 0xdc07, + 0xdc08, 0xdc09, 0xdc0a, 0xdc0b, 0xdc0c, 0xdc0d, 0xdc0e, 0xdc0f, + 0xdc10, 0xdc11, 0xdc12, 0xdc13, 0xdc14, 0xdc15, 0xdc16, 0xdc17, + 0xdc18, 0xdc19, 0xdc1a, 0xdc1b, 0xdc1c, 0xdc1d, 0xdc1e, 0xdc1f, + 0xdc20, 0xdc21, 0xdc22, 0xdc23, 0xdc24, 0xdc25, 0xdc26, 0xdc27, + 0xdc28, 0xdc29, 0xdc2a, 0xdc2b, 0xdc2c, 0xdc2d, 0xdc2e, 0xdc2f, + 0xdc30, 0xdc31, 0xdc32, 0xdc33, 0xdc34, 0xdc35, 0xdc36, 0xdc37, + 0xdc38, 0xdc39, 0xdc3a, 0xdc3b, 0xdc3c, 0xdc3d, 0xdc3e, 0xdc3f, + 0xdc40, 0xdc41, 0xdc42, 0xdc43, 0xdc44, 0xdc45, 0xdc46, 0xdc47, + 0xdc48, 0xdc49, 0xdc4a, 0xdc4b, 0xdc4c, 0xdc4d, 0xdc4e, 0xdc4f, + 0xdc50, 0xdc51, 0xdc52, 0xdc53, 0xdc54, 0xdc55, 0xdc56, 0xdc57, + 0xdc58, 0xdc59, 0xdc5a, 0xdc5b, 0xdc5c, 0xdc5d, 0xdc5e, 0xdc5f, + 0xdc60, 0xdc61, 0xdc62, 0xdc63, 0xdc64, 0xdc65, 0xdc66, 0xdc67, + 0xdc68, 0xdc69, 0xdc6a, 0xdc6b, 0xdc6c, 0xdc6d, 0xdc6e, 0xdc6f, + 0xdc70, 0xdc71, 0xdc72, 0xdc73, 0xdc74, 0xdc75, 0xdc76, 0xdc77, + 0xdc78, 0xdc79, 0xdc7a, 0xdc7b, 0xdc7c, 0xdc7d, 0xdc7e, 0xdc7f, + 0xdc80, 0xdc81, 0xdc82, 0xdc83, 0xdc84, 0xdc85, 0xdc86, 0xdc87, + 0xdc88, 0xdc89, 0xdc8a, 0xdc8b, 0xdc8c, 0xdc8d, 0xdc8e, 0xdc8f, + 0xdc90, 0xdc91, 0xdc92, 0xdc93, 0xdc94, 0xdc95, 0xdc96, 0xdc97, + 0xdc98, 0xdc99, 0xdc9a, 0xdc9b, 0xdc9c, 0xdc9d, 0xdc9e, 0xdc9f, + 0xdca0, 0xdca1, 0xdca2, 0xdca3, 0xdca4, 0xdca5, 0xdca6, 0xdca7, + 0xdca8, 0xdca9, 0xdcaa, 0xdcab, 0xdcac, 0xdcad, 0xdcae, 0xdcaf, + 0xdcb0, 0xdcb1, 0xdcb2, 0xdcb3, 0xdcb4, 0xdcb5, 0xdcb6, 0xdcb7, + 0xdcb8, 0xdcb9, 0xdcba, 0xdcbb, 0xdcbc, 0xdcbd, 0xdcbe, 0xdcbf, + 0xdcc0, 0xdcc1, 0xdcc2, 0xdcc3, 0xdcc4, 0xdcc5, 0xdcc6, 0xdcc7, + 0xdcc8, 0xdcc9, 0xdcca, 0xdccb, 0xdccc, 0xdccd, 0xdcce, 0xdccf, + 0xdcd0, 0xdcd1, 0xdcd2, 0xdcd3, 0xdcd4, 0xdcd5, 0xdcd6, 0xdcd7, + 0xdcd8, 0xdcd9, 0xdcda, 0xdcdb, 0xdcdc, 0xdcdd, 0xdcde, 0xdcdf, + 0xdce0, 0xdce1, 0xdce2, 0xdce3, 0xdce4, 0xdce5, 0xdce6, 0xdce7, + 0xdce8, 0xdce9, 0xdcea, 0xdceb, 0xdcec, 0xdced, 0xdcee, 0xdcef, + 0xdcf0, 0xdcf1, 0xdcf2, 0xdcf3, 0xdcf4, 0xdcf5, 0xdcf6, 0xdcf7, + 0xdcf8, 0xdcf9, 0xdcfa, 0xdcfb, 0xdcfc, 0xdcfd, 0xdcfe, 0xdcff, + 0xdd00, 0xdd01, 0xdd02, 0xdd03, 0xdd04, 0xdd05, 0xdd06, 0xdd07, + 0xdd08, 0xdd09, 0xdd0a, 0xdd0b, 0xdd0c, 0xdd0d, 0xdd0e, 0xdd0f, + 0xdd10, 0xdd11, 0xdd12, 0xdd13, 0xdd14, 0xdd15, 0xdd16, 0xdd17, + 0xdd18, 0xdd19, 0xdd1a, 0xdd1b, 0xdd1c, 0xdd1d, 0xdd1e, 0xdd1f, + 0xdd20, 0xdd21, 0xdd22, 0xdd23, 0xdd24, 0xdd25, 0xdd26, 0xdd27, + 0xdd28, 0xdd29, 0xdd2a, 0xdd2b, 0xdd2c, 0xdd2d, 0xdd2e, 0xdd2f, + 0xdd30, 0xdd31, 0xdd32, 0xdd33, 0xdd34, 0xdd35, 0xdd36, 0xdd37, + 0xdd38, 0xdd39, 0xdd3a, 0xdd3b, 0xdd3c, 0xdd3d, 0xdd3e, 0xdd3f, + 0xdd40, 0xdd41, 0xdd42, 0xdd43, 0xdd44, 0xdd45, 0xdd46, 0xdd47, + 0xdd48, 0xdd49, 0xdd4a, 0xdd4b, 0xdd4c, 0xdd4d, 0xdd4e, 0xdd4f, + 0xdd50, 0xdd51, 0xdd52, 0xdd53, 0xdd54, 0xdd55, 0xdd56, 0xdd57, + 0xdd58, 0xdd59, 0xdd5a, 0xdd5b, 0xdd5c, 0xdd5d, 0xdd5e, 0xdd5f, + 0xdd60, 0xdd61, 0xdd62, 0xdd63, 0xdd64, 0xdd65, 0xdd66, 0xdd67, + 0xdd68, 0xdd69, 0xdd6a, 0xdd6b, 0xdd6c, 0xdd6d, 0xdd6e, 0xdd6f, + 0xdd70, 0xdd71, 0xdd72, 0xdd73, 0xdd74, 0xdd75, 0xdd76, 0xdd77, + 0xdd78, 0xdd79, 0xdd7a, 0xdd7b, 0xdd7c, 0xdd7d, 0xdd7e, 0xdd7f, + 0xdd80, 0xdd81, 0xdd82, 0xdd83, 0xdd84, 0xdd85, 0xdd86, 0xdd87, + 0xdd88, 0xdd89, 0xdd8a, 0xdd8b, 0xdd8c, 0xdd8d, 0xdd8e, 0xdd8f, + 0xdd90, 0xdd91, 0xdd92, 0xdd93, 0xdd94, 0xdd95, 0xdd96, 0xdd97, + 0xdd98, 0xdd99, 0xdd9a, 0xdd9b, 0xdd9c, 0xdd9d, 0xdd9e, 0xdd9f, + 0xdda0, 0xdda1, 0xdda2, 0xdda3, 0xdda4, 0xdda5, 0xdda6, 0xdda7, + 0xdda8, 0xdda9, 0xddaa, 0xddab, 0xddac, 0xddad, 0xddae, 0xddaf, + 0xddb0, 0xddb1, 0xddb2, 0xddb3, 0xddb4, 0xddb5, 0xddb6, 0xddb7, + 0xddb8, 0xddb9, 0xddba, 0xddbb, 0xddbc, 0xddbd, 0xddbe, 0xddbf, + 0xddc0, 0xddc1, 0xddc2, 0xddc3, 0xddc4, 0xddc5, 0xddc6, 0xddc7, + 0xddc8, 0xddc9, 0xddca, 0xddcb, 0xddcc, 0xddcd, 0xddce, 0xddcf, + 0xddd0, 0xddd1, 0xddd2, 0xddd3, 0xddd4, 0xddd5, 0xddd6, 0xddd7, + 0xddd8, 0xddd9, 0xddda, 0xdddb, 0xdddc, 0xdddd, 0xddde, 0xdddf, + 0xdde0, 0xdde1, 0xdde2, 0xdde3, 0xdde4, 0xdde5, 0xdde6, 0xdde7, + 0xdde8, 0xdde9, 0xddea, 0xddeb, 0xddec, 0xdded, 0xddee, 0xddef, + 0xddf0, 0xddf1, 0xddf2, 0xddf3, 0xddf4, 0xddf5, 0xddf6, 0xddf7, + 0xddf8, 0xddf9, 0xddfa, 0xddfb, 0xddfc, 0xddfd, 0xddfe, 0xddff, + 0xde00, 0xde01, 0xde02, 0xde03, 0xde04, 0xde05, 0xde06, 0xde07, + 0xde08, 0xde09, 0xde0a, 0xde0b, 0xde0c, 0xde0d, 0xde0e, 0xde0f, + 0xde10, 0xde11, 0xde12, 0xde13, 0xde14, 0xde15, 0xde16, 0xde17, + 0xde18, 0xde19, 0xde1a, 0xde1b, 0xde1c, 0xde1d, 0xde1e, 0xde1f, + 0xde20, 0xde21, 0xde22, 0xde23, 0xde24, 0xde25, 0xde26, 0xde27, + 0xde28, 0xde29, 0xde2a, 0xde2b, 0xde2c, 0xde2d, 0xde2e, 0xde2f, + 0xde30, 0xde31, 0xde32, 0xde33, 0xde34, 0xde35, 0xde36, 0xde37, + 0xde38, 0xde39, 0xde3a, 0xde3b, 0xde3c, 0xde3d, 0xde3e, 0xde3f, + 0xde40, 0xde41, 0xde42, 0xde43, 0xde44, 0xde45, 0xde46, 0xde47, + 0xde48, 0xde49, 0xde4a, 0xde4b, 0xde4c, 0xde4d, 0xde4e, 0xde4f, + 0xde50, 0xde51, 0xde52, 0xde53, 0xde54, 0xde55, 0xde56, 0xde57, + 0xde58, 0xde59, 0xde5a, 0xde5b, 0xde5c, 0xde5d, 0xde5e, 0xde5f, + 0xde60, 0xde61, 0xde62, 0xde63, 0xde64, 0xde65, 0xde66, 0xde67, + 0xde68, 0xde69, 0xde6a, 0xde6b, 0xde6c, 0xde6d, 0xde6e, 0xde6f, + 0xde70, 0xde71, 0xde72, 0xde73, 0xde74, 0xde75, 0xde76, 0xde77, + 0xde78, 0xde79, 0xde7a, 0xde7b, 0xde7c, 0xde7d, 0xde7e, 0xde7f, + 0xde80, 0xde81, 0xde82, 0xde83, 0xde84, 0xde85, 0xde86, 0xde87, + 0xde88, 0xde89, 0xde8a, 0xde8b, 0xde8c, 0xde8d, 0xde8e, 0xde8f, + 0xde90, 0xde91, 0xde92, 0xde93, 0xde94, 0xde95, 0xde96, 0xde97, + 0xde98, 0xde99, 0xde9a, 0xde9b, 0xde9c, 0xde9d, 0xde9e, 0xde9f, + 0xdea0, 0xdea1, 0xdea2, 0xdea3, 0xdea4, 0xdea5, 0xdea6, 0xdea7, + 0xdea8, 0xdea9, 0xdeaa, 0xdeab, 0xdeac, 0xdead, 0xdeae, 0xdeaf, + 0xdeb0, 0xdeb1, 0xdeb2, 0xdeb3, 0xdeb4, 0xdeb5, 0xdeb6, 0xdeb7, + 0xdeb8, 0xdeb9, 0xdeba, 0xdebb, 0xdebc, 0xdebd, 0xdebe, 0xdebf, + 0xdec0, 0xdec1, 0xdec2, 0xdec3, 0xdec4, 0xdec5, 0xdec6, 0xdec7, + 0xdec8, 0xdec9, 0xdeca, 0xdecb, 0xdecc, 0xdecd, 0xdece, 0xdecf, + 0xded0, 0xded1, 0xded2, 0xded3, 0xded4, 0xded5, 0xded6, 0xded7, + 0xded8, 0xded9, 0xdeda, 0xdedb, 0xdedc, 0xdedd, 0xdede, 0xdedf, + 0xdee0, 0xdee1, 0xdee2, 0xdee3, 0xdee4, 0xdee5, 0xdee6, 0xdee7, + 0xdee8, 0xdee9, 0xdeea, 0xdeeb, 0xdeec, 0xdeed, 0xdeee, 0xdeef, + 0xdef0, 0xdef1, 0xdef2, 0xdef3, 0xdef4, 0xdef5, 0xdef6, 0xdef7, + 0xdef8, 0xdef9, 0xdefa, 0xdefb, 0xdefc, 0xdefd, 0xdefe, 0xdeff, + 0xdf00, 0xdf01, 0xdf02, 0xdf03, 0xdf04, 0xdf05, 0xdf06, 0xdf07, + 0xdf08, 0xdf09, 0xdf0a, 0xdf0b, 0xdf0c, 0xdf0d, 0xdf0e, 0xdf0f, + 0xdf10, 0xdf11, 0xdf12, 0xdf13, 0xdf14, 0xdf15, 0xdf16, 0xdf17, + 0xdf18, 0xdf19, 0xdf1a, 0xdf1b, 0xdf1c, 0xdf1d, 0xdf1e, 0xdf1f, + 0xdf20, 0xdf21, 0xdf22, 0xdf23, 0xdf24, 0xdf25, 0xdf26, 0xdf27, + 0xdf28, 0xdf29, 0xdf2a, 0xdf2b, 0xdf2c, 0xdf2d, 0xdf2e, 0xdf2f, + 0xdf30, 0xdf31, 0xdf32, 0xdf33, 0xdf34, 0xdf35, 0xdf36, 0xdf37, + 0xdf38, 0xdf39, 0xdf3a, 0xdf3b, 0xdf3c, 0xdf3d, 0xdf3e, 0xdf3f, + 0xdf40, 0xdf41, 0xdf42, 0xdf43, 0xdf44, 0xdf45, 0xdf46, 0xdf47, + 0xdf48, 0xdf49, 0xdf4a, 0xdf4b, 0xdf4c, 0xdf4d, 0xdf4e, 0xdf4f, + 0xdf50, 0xdf51, 0xdf52, 0xdf53, 0xdf54, 0xdf55, 0xdf56, 0xdf57, + 0xdf58, 0xdf59, 0xdf5a, 0xdf5b, 0xdf5c, 0xdf5d, 0xdf5e, 0xdf5f, + 0xdf60, 0xdf61, 0xdf62, 0xdf63, 0xdf64, 0xdf65, 0xdf66, 0xdf67, + 0xdf68, 0xdf69, 0xdf6a, 0xdf6b, 0xdf6c, 0xdf6d, 0xdf6e, 0xdf6f, + 0xdf70, 0xdf71, 0xdf72, 0xdf73, 0xdf74, 0xdf75, 0xdf76, 0xdf77, + 0xdf78, 0xdf79, 0xdf7a, 0xdf7b, 0xdf7c, 0xdf7d, 0xdf7e, 0xdf7f, + 0xdf80, 0xdf81, 0xdf82, 0xdf83, 0xdf84, 0xdf85, 0xdf86, 0xdf87, + 0xdf88, 0xdf89, 0xdf8a, 0xdf8b, 0xdf8c, 0xdf8d, 0xdf8e, 0xdf8f, + 0xdf90, 0xdf91, 0xdf92, 0xdf93, 0xdf94, 0xdf95, 0xdf96, 0xdf97, + 0xdf98, 0xdf99, 0xdf9a, 0xdf9b, 0xdf9c, 0xdf9d, 0xdf9e, 0xdf9f, + 0xdfa0, 0xdfa1, 0xdfa2, 0xdfa3, 0xdfa4, 0xdfa5, 0xdfa6, 0xdfa7, + 0xdfa8, 0xdfa9, 0xdfaa, 0xdfab, 0xdfac, 0xdfad, 0xdfae, 0xdfaf, + 0xdfb0, 0xdfb1, 0xdfb2, 0xdfb3, 0xdfb4, 0xdfb5, 0xdfb6, 0xdfb7, + 0xdfb8, 0xdfb9, 0xdfba, 0xdfbb, 0xdfbc, 0xdfbd, 0xdfbe, 0xdfbf, + 0xdfc0, 0xdfc1, 0xdfc2, 0xdfc3, 0xdfc4, 0xdfc5, 0xdfc6, 0xdfc7, + 0xdfc8, 0xdfc9, 0xdfca, 0xdfcb, 0xdfcc, 0xdfcd, 0xdfce, 0xdfcf, + 0xdfd0, 0xdfd1, 0xdfd2, 0xdfd3, 0xdfd4, 0xdfd5, 0xdfd6, 0xdfd7, + 0xdfd8, 0xdfd9, 0xdfda, 0xdfdb, 0xdfdc, 0xdfdd, 0xdfde, 0xdfdf, + 0xdfe0, 0xdfe1, 0xdfe2, 0xdfe3, 0xdfe4, 0xdfe5, 0xdfe6, 0xdfe7, + 0xdfe8, 0xdfe9, 0xdfea, 0xdfeb, 0xdfec, 0xdfed, 0xdfee, 0xdfef, + 0xdff0, 0xdff1, 0xdff2, 0xdff3, 0xdff4, 0xdff5, 0xdff6, 0xdff7, + 0xdff8, 0xdff9, 0xdffa, 0xdffb, 0xdffc, 0xdffd, 0xdffe, 0xdfff, + 0xe000, 0xe001, 0xe002, 0xe003, 0xe004, 0xe005, 0xe006, 0xe007, + 0xe008, 0xe009, 0xe00a, 0xe00b, 0xe00c, 0xe00d, 0xe00e, 0xe00f, + 0xe010, 0xe011, 0xe012, 0xe013, 0xe014, 0xe015, 0xe016, 0xe017, + 0xe018, 0xe019, 0xe01a, 0xe01b, 0xe01c, 0xe01d, 0xe01e, 0xe01f, + 0xe020, 0xe021, 0xe022, 0xe023, 0xe024, 0xe025, 0xe026, 0xe027, + 0xe028, 0xe029, 0xe02a, 0xe02b, 0xe02c, 0xe02d, 0xe02e, 0xe02f, + 0xe030, 0xe031, 0xe032, 0xe033, 0xe034, 0xe035, 0xe036, 0xe037, + 0xe038, 0xe039, 0xe03a, 0xe03b, 0xe03c, 0xe03d, 0xe03e, 0xe03f, + 0xe040, 0xe041, 0xe042, 0xe043, 0xe044, 0xe045, 0xe046, 0xe047, + 0xe048, 0xe049, 0xe04a, 0xe04b, 0xe04c, 0xe04d, 0xe04e, 0xe04f, + 0xe050, 0xe051, 0xe052, 0xe053, 0xe054, 0xe055, 0xe056, 0xe057, + 0xe058, 0xe059, 0xe05a, 0xe05b, 0xe05c, 0xe05d, 0xe05e, 0xe05f, + 0xe060, 0xe061, 0xe062, 0xe063, 0xe064, 0xe065, 0xe066, 0xe067, + 0xe068, 0xe069, 0xe06a, 0xe06b, 0xe06c, 0xe06d, 0xe06e, 0xe06f, + 0xe070, 0xe071, 0xe072, 0xe073, 0xe074, 0xe075, 0xe076, 0xe077, + 0xe078, 0xe079, 0xe07a, 0xe07b, 0xe07c, 0xe07d, 0xe07e, 0xe07f, + 0xe080, 0xe081, 0xe082, 0xe083, 0xe084, 0xe085, 0xe086, 0xe087, + 0xe088, 0xe089, 0xe08a, 0xe08b, 0xe08c, 0xe08d, 0xe08e, 0xe08f, + 0xe090, 0xe091, 0xe092, 0xe093, 0xe094, 0xe095, 0xe096, 0xe097, + 0xe098, 0xe099, 0xe09a, 0xe09b, 0xe09c, 0xe09d, 0xe09e, 0xe09f, + 0xe0a0, 0xe0a1, 0xe0a2, 0xe0a3, 0xe0a4, 0xe0a5, 0xe0a6, 0xe0a7, + 0xe0a8, 0xe0a9, 0xe0aa, 0xe0ab, 0xe0ac, 0xe0ad, 0xe0ae, 0xe0af, + 0xe0b0, 0xe0b1, 0xe0b2, 0xe0b3, 0xe0b4, 0xe0b5, 0xe0b6, 0xe0b7, + 0xe0b8, 0xe0b9, 0xe0ba, 0xe0bb, 0xe0bc, 0xe0bd, 0xe0be, 0xe0bf, + 0xe0c0, 0xe0c1, 0xe0c2, 0xe0c3, 0xe0c4, 0xe0c5, 0xe0c6, 0xe0c7, + 0xe0c8, 0xe0c9, 0xe0ca, 0xe0cb, 0xe0cc, 0xe0cd, 0xe0ce, 0xe0cf, + 0xe0d0, 0xe0d1, 0xe0d2, 0xe0d3, 0xe0d4, 0xe0d5, 0xe0d6, 0xe0d7, + 0xe0d8, 0xe0d9, 0xe0da, 0xe0db, 0xe0dc, 0xe0dd, 0xe0de, 0xe0df, + 0xe0e0, 0xe0e1, 0xe0e2, 0xe0e3, 0xe0e4, 0xe0e5, 0xe0e6, 0xe0e7, + 0xe0e8, 0xe0e9, 0xe0ea, 0xe0eb, 0xe0ec, 0xe0ed, 0xe0ee, 0xe0ef, + 0xe0f0, 0xe0f1, 0xe0f2, 0xe0f3, 0xe0f4, 0xe0f5, 0xe0f6, 0xe0f7, + 0xe0f8, 0xe0f9, 0xe0fa, 0xe0fb, 0xe0fc, 0xe0fd, 0xe0fe, 0xe0ff, + 0xe100, 0xe101, 0xe102, 0xe103, 0xe104, 0xe105, 0xe106, 0xe107, + 0xe108, 0xe109, 0xe10a, 0xe10b, 0xe10c, 0xe10d, 0xe10e, 0xe10f, + 0xe110, 0xe111, 0xe112, 0xe113, 0xe114, 0xe115, 0xe116, 0xe117, + 0xe118, 0xe119, 0xe11a, 0xe11b, 0xe11c, 0xe11d, 0xe11e, 0xe11f, + 0xe120, 0xe121, 0xe122, 0xe123, 0xe124, 0xe125, 0xe126, 0xe127, + 0xe128, 0xe129, 0xe12a, 0xe12b, 0xe12c, 0xe12d, 0xe12e, 0xe12f, + 0xe130, 0xe131, 0xe132, 0xe133, 0xe134, 0xe135, 0xe136, 0xe137, + 0xe138, 0xe139, 0xe13a, 0xe13b, 0xe13c, 0xe13d, 0xe13e, 0xe13f, + 0xe140, 0xe141, 0xe142, 0xe143, 0xe144, 0xe145, 0xe146, 0xe147, + 0xe148, 0xe149, 0xe14a, 0xe14b, 0xe14c, 0xe14d, 0xe14e, 0xe14f, + 0xe150, 0xe151, 0xe152, 0xe153, 0xe154, 0xe155, 0xe156, 0xe157, + 0xe158, 0xe159, 0xe15a, 0xe15b, 0xe15c, 0xe15d, 0xe15e, 0xe15f, + 0xe160, 0xe161, 0xe162, 0xe163, 0xe164, 0xe165, 0xe166, 0xe167, + 0xe168, 0xe169, 0xe16a, 0xe16b, 0xe16c, 0xe16d, 0xe16e, 0xe16f, + 0xe170, 0xe171, 0xe172, 0xe173, 0xe174, 0xe175, 0xe176, 0xe177, + 0xe178, 0xe179, 0xe17a, 0xe17b, 0xe17c, 0xe17d, 0xe17e, 0xe17f, + 0xe180, 0xe181, 0xe182, 0xe183, 0xe184, 0xe185, 0xe186, 0xe187, + 0xe188, 0xe189, 0xe18a, 0xe18b, 0xe18c, 0xe18d, 0xe18e, 0xe18f, + 0xe190, 0xe191, 0xe192, 0xe193, 0xe194, 0xe195, 0xe196, 0xe197, + 0xe198, 0xe199, 0xe19a, 0xe19b, 0xe19c, 0xe19d, 0xe19e, 0xe19f, + 0xe1a0, 0xe1a1, 0xe1a2, 0xe1a3, 0xe1a4, 0xe1a5, 0xe1a6, 0xe1a7, + 0xe1a8, 0xe1a9, 0xe1aa, 0xe1ab, 0xe1ac, 0xe1ad, 0xe1ae, 0xe1af, + 0xe1b0, 0xe1b1, 0xe1b2, 0xe1b3, 0xe1b4, 0xe1b5, 0xe1b6, 0xe1b7, + 0xe1b8, 0xe1b9, 0xe1ba, 0xe1bb, 0xe1bc, 0xe1bd, 0xe1be, 0xe1bf, + 0xe1c0, 0xe1c1, 0xe1c2, 0xe1c3, 0xe1c4, 0xe1c5, 0xe1c6, 0xe1c7, + 0xe1c8, 0xe1c9, 0xe1ca, 0xe1cb, 0xe1cc, 0xe1cd, 0xe1ce, 0xe1cf, + 0xe1d0, 0xe1d1, 0xe1d2, 0xe1d3, 0xe1d4, 0xe1d5, 0xe1d6, 0xe1d7, + 0xe1d8, 0xe1d9, 0xe1da, 0xe1db, 0xe1dc, 0xe1dd, 0xe1de, 0xe1df, + 0xe1e0, 0xe1e1, 0xe1e2, 0xe1e3, 0xe1e4, 0xe1e5, 0xe1e6, 0xe1e7, + 0xe1e8, 0xe1e9, 0xe1ea, 0xe1eb, 0xe1ec, 0xe1ed, 0xe1ee, 0xe1ef, + 0xe1f0, 0xe1f1, 0xe1f2, 0xe1f3, 0xe1f4, 0xe1f5, 0xe1f6, 0xe1f7, + 0xe1f8, 0xe1f9, 0xe1fa, 0xe1fb, 0xe1fc, 0xe1fd, 0xe1fe, 0xe1ff, + 0xe200, 0xe201, 0xe202, 0xe203, 0xe204, 0xe205, 0xe206, 0xe207, + 0xe208, 0xe209, 0xe20a, 0xe20b, 0xe20c, 0xe20d, 0xe20e, 0xe20f, + 0xe210, 0xe211, 0xe212, 0xe213, 0xe214, 0xe215, 0xe216, 0xe217, + 0xe218, 0xe219, 0xe21a, 0xe21b, 0xe21c, 0xe21d, 0xe21e, 0xe21f, + 0xe220, 0xe221, 0xe222, 0xe223, 0xe224, 0xe225, 0xe226, 0xe227, + 0xe228, 0xe229, 0xe22a, 0xe22b, 0xe22c, 0xe22d, 0xe22e, 0xe22f, + 0xe230, 0xe231, 0xe232, 0xe233, 0xe234, 0xe235, 0xe236, 0xe237, + 0xe238, 0xe239, 0xe23a, 0xe23b, 0xe23c, 0xe23d, 0xe23e, 0xe23f, + 0xe240, 0xe241, 0xe242, 0xe243, 0xe244, 0xe245, 0xe246, 0xe247, + 0xe248, 0xe249, 0xe24a, 0xe24b, 0xe24c, 0xe24d, 0xe24e, 0xe24f, + 0xe250, 0xe251, 0xe252, 0xe253, 0xe254, 0xe255, 0xe256, 0xe257, + 0xe258, 0xe259, 0xe25a, 0xe25b, 0xe25c, 0xe25d, 0xe25e, 0xe25f, + 0xe260, 0xe261, 0xe262, 0xe263, 0xe264, 0xe265, 0xe266, 0xe267, + 0xe268, 0xe269, 0xe26a, 0xe26b, 0xe26c, 0xe26d, 0xe26e, 0xe26f, + 0xe270, 0xe271, 0xe272, 0xe273, 0xe274, 0xe275, 0xe276, 0xe277, + 0xe278, 0xe279, 0xe27a, 0xe27b, 0xe27c, 0xe27d, 0xe27e, 0xe27f, + 0xe280, 0xe281, 0xe282, 0xe283, 0xe284, 0xe285, 0xe286, 0xe287, + 0xe288, 0xe289, 0xe28a, 0xe28b, 0xe28c, 0xe28d, 0xe28e, 0xe28f, + 0xe290, 0xe291, 0xe292, 0xe293, 0xe294, 0xe295, 0xe296, 0xe297, + 0xe298, 0xe299, 0xe29a, 0xe29b, 0xe29c, 0xe29d, 0xe29e, 0xe29f, + 0xe2a0, 0xe2a1, 0xe2a2, 0xe2a3, 0xe2a4, 0xe2a5, 0xe2a6, 0xe2a7, + 0xe2a8, 0xe2a9, 0xe2aa, 0xe2ab, 0xe2ac, 0xe2ad, 0xe2ae, 0xe2af, + 0xe2b0, 0xe2b1, 0xe2b2, 0xe2b3, 0xe2b4, 0xe2b5, 0xe2b6, 0xe2b7, + 0xe2b8, 0xe2b9, 0xe2ba, 0xe2bb, 0xe2bc, 0xe2bd, 0xe2be, 0xe2bf, + 0xe2c0, 0xe2c1, 0xe2c2, 0xe2c3, 0xe2c4, 0xe2c5, 0xe2c6, 0xe2c7, + 0xe2c8, 0xe2c9, 0xe2ca, 0xe2cb, 0xe2cc, 0xe2cd, 0xe2ce, 0xe2cf, + 0xe2d0, 0xe2d1, 0xe2d2, 0xe2d3, 0xe2d4, 0xe2d5, 0xe2d6, 0xe2d7, + 0xe2d8, 0xe2d9, 0xe2da, 0xe2db, 0xe2dc, 0xe2dd, 0xe2de, 0xe2df, + 0xe2e0, 0xe2e1, 0xe2e2, 0xe2e3, 0xe2e4, 0xe2e5, 0xe2e6, 0xe2e7, + 0xe2e8, 0xe2e9, 0xe2ea, 0xe2eb, 0xe2ec, 0xe2ed, 0xe2ee, 0xe2ef, + 0xe2f0, 0xe2f1, 0xe2f2, 0xe2f3, 0xe2f4, 0xe2f5, 0xe2f6, 0xe2f7, + 0xe2f8, 0xe2f9, 0xe2fa, 0xe2fb, 0xe2fc, 0xe2fd, 0xe2fe, 0xe2ff, + 0xe300, 0xe301, 0xe302, 0xe303, 0xe304, 0xe305, 0xe306, 0xe307, + 0xe308, 0xe309, 0xe30a, 0xe30b, 0xe30c, 0xe30d, 0xe30e, 0xe30f, + 0xe310, 0xe311, 0xe312, 0xe313, 0xe314, 0xe315, 0xe316, 0xe317, + 0xe318, 0xe319, 0xe31a, 0xe31b, 0xe31c, 0xe31d, 0xe31e, 0xe31f, + 0xe320, 0xe321, 0xe322, 0xe323, 0xe324, 0xe325, 0xe326, 0xe327, + 0xe328, 0xe329, 0xe32a, 0xe32b, 0xe32c, 0xe32d, 0xe32e, 0xe32f, + 0xe330, 0xe331, 0xe332, 0xe333, 0xe334, 0xe335, 0xe336, 0xe337, + 0xe338, 0xe339, 0xe33a, 0xe33b, 0xe33c, 0xe33d, 0xe33e, 0xe33f, + 0xe340, 0xe341, 0xe342, 0xe343, 0xe344, 0xe345, 0xe346, 0xe347, + 0xe348, 0xe349, 0xe34a, 0xe34b, 0xe34c, 0xe34d, 0xe34e, 0xe34f, + 0xe350, 0xe351, 0xe352, 0xe353, 0xe354, 0xe355, 0xe356, 0xe357, + 0xe358, 0xe359, 0xe35a, 0xe35b, 0xe35c, 0xe35d, 0xe35e, 0xe35f, + 0xe360, 0xe361, 0xe362, 0xe363, 0xe364, 0xe365, 0xe366, 0xe367, + 0xe368, 0xe369, 0xe36a, 0xe36b, 0xe36c, 0xe36d, 0xe36e, 0xe36f, + 0xe370, 0xe371, 0xe372, 0xe373, 0xe374, 0xe375, 0xe376, 0xe377, + 0xe378, 0xe379, 0xe37a, 0xe37b, 0xe37c, 0xe37d, 0xe37e, 0xe37f, + 0xe380, 0xe381, 0xe382, 0xe383, 0xe384, 0xe385, 0xe386, 0xe387, + 0xe388, 0xe389, 0xe38a, 0xe38b, 0xe38c, 0xe38d, 0xe38e, 0xe38f, + 0xe390, 0xe391, 0xe392, 0xe393, 0xe394, 0xe395, 0xe396, 0xe397, + 0xe398, 0xe399, 0xe39a, 0xe39b, 0xe39c, 0xe39d, 0xe39e, 0xe39f, + 0xe3a0, 0xe3a1, 0xe3a2, 0xe3a3, 0xe3a4, 0xe3a5, 0xe3a6, 0xe3a7, + 0xe3a8, 0xe3a9, 0xe3aa, 0xe3ab, 0xe3ac, 0xe3ad, 0xe3ae, 0xe3af, + 0xe3b0, 0xe3b1, 0xe3b2, 0xe3b3, 0xe3b4, 0xe3b5, 0xe3b6, 0xe3b7, + 0xe3b8, 0xe3b9, 0xe3ba, 0xe3bb, 0xe3bc, 0xe3bd, 0xe3be, 0xe3bf, + 0xe3c0, 0xe3c1, 0xe3c2, 0xe3c3, 0xe3c4, 0xe3c5, 0xe3c6, 0xe3c7, + 0xe3c8, 0xe3c9, 0xe3ca, 0xe3cb, 0xe3cc, 0xe3cd, 0xe3ce, 0xe3cf, + 0xe3d0, 0xe3d1, 0xe3d2, 0xe3d3, 0xe3d4, 0xe3d5, 0xe3d6, 0xe3d7, + 0xe3d8, 0xe3d9, 0xe3da, 0xe3db, 0xe3dc, 0xe3dd, 0xe3de, 0xe3df, + 0xe3e0, 0xe3e1, 0xe3e2, 0xe3e3, 0xe3e4, 0xe3e5, 0xe3e6, 0xe3e7, + 0xe3e8, 0xe3e9, 0xe3ea, 0xe3eb, 0xe3ec, 0xe3ed, 0xe3ee, 0xe3ef, + 0xe3f0, 0xe3f1, 0xe3f2, 0xe3f3, 0xe3f4, 0xe3f5, 0xe3f6, 0xe3f7, + 0xe3f8, 0xe3f9, 0xe3fa, 0xe3fb, 0xe3fc, 0xe3fd, 0xe3fe, 0xe3ff, + 0xe400, 0xe401, 0xe402, 0xe403, 0xe404, 0xe405, 0xe406, 0xe407, + 0xe408, 0xe409, 0xe40a, 0xe40b, 0xe40c, 0xe40d, 0xe40e, 0xe40f, + 0xe410, 0xe411, 0xe412, 0xe413, 0xe414, 0xe415, 0xe416, 0xe417, + 0xe418, 0xe419, 0xe41a, 0xe41b, 0xe41c, 0xe41d, 0xe41e, 0xe41f, + 0xe420, 0xe421, 0xe422, 0xe423, 0xe424, 0xe425, 0xe426, 0xe427, + 0xe428, 0xe429, 0xe42a, 0xe42b, 0xe42c, 0xe42d, 0xe42e, 0xe42f, + 0xe430, 0xe431, 0xe432, 0xe433, 0xe434, 0xe435, 0xe436, 0xe437, + 0xe438, 0xe439, 0xe43a, 0xe43b, 0xe43c, 0xe43d, 0xe43e, 0xe43f, + 0xe440, 0xe441, 0xe442, 0xe443, 0xe444, 0xe445, 0xe446, 0xe447, + 0xe448, 0xe449, 0xe44a, 0xe44b, 0xe44c, 0xe44d, 0xe44e, 0xe44f, + 0xe450, 0xe451, 0xe452, 0xe453, 0xe454, 0xe455, 0xe456, 0xe457, + 0xe458, 0xe459, 0xe45a, 0xe45b, 0xe45c, 0xe45d, 0xe45e, 0xe45f, + 0xe460, 0xe461, 0xe462, 0xe463, 0xe464, 0xe465, 0xe466, 0xe467, + 0xe468, 0xe469, 0xe46a, 0xe46b, 0xe46c, 0xe46d, 0xe46e, 0xe46f, + 0xe470, 0xe471, 0xe472, 0xe473, 0xe474, 0xe475, 0xe476, 0xe477, + 0xe478, 0xe479, 0xe47a, 0xe47b, 0xe47c, 0xe47d, 0xe47e, 0xe47f, + 0xe480, 0xe481, 0xe482, 0xe483, 0xe484, 0xe485, 0xe486, 0xe487, + 0xe488, 0xe489, 0xe48a, 0xe48b, 0xe48c, 0xe48d, 0xe48e, 0xe48f, + 0xe490, 0xe491, 0xe492, 0xe493, 0xe494, 0xe495, 0xe496, 0xe497, + 0xe498, 0xe499, 0xe49a, 0xe49b, 0xe49c, 0xe49d, 0xe49e, 0xe49f, + 0xe4a0, 0xe4a1, 0xe4a2, 0xe4a3, 0xe4a4, 0xe4a5, 0xe4a6, 0xe4a7, + 0xe4a8, 0xe4a9, 0xe4aa, 0xe4ab, 0xe4ac, 0xe4ad, 0xe4ae, 0xe4af, + 0xe4b0, 0xe4b1, 0xe4b2, 0xe4b3, 0xe4b4, 0xe4b5, 0xe4b6, 0xe4b7, + 0xe4b8, 0xe4b9, 0xe4ba, 0xe4bb, 0xe4bc, 0xe4bd, 0xe4be, 0xe4bf, + 0xe4c0, 0xe4c1, 0xe4c2, 0xe4c3, 0xe4c4, 0xe4c5, 0xe4c6, 0xe4c7, + 0xe4c8, 0xe4c9, 0xe4ca, 0xe4cb, 0xe4cc, 0xe4cd, 0xe4ce, 0xe4cf, + 0xe4d0, 0xe4d1, 0xe4d2, 0xe4d3, 0xe4d4, 0xe4d5, 0xe4d6, 0xe4d7, + 0xe4d8, 0xe4d9, 0xe4da, 0xe4db, 0xe4dc, 0xe4dd, 0xe4de, 0xe4df, + 0xe4e0, 0xe4e1, 0xe4e2, 0xe4e3, 0xe4e4, 0xe4e5, 0xe4e6, 0xe4e7, + 0xe4e8, 0xe4e9, 0xe4ea, 0xe4eb, 0xe4ec, 0xe4ed, 0xe4ee, 0xe4ef, + 0xe4f0, 0xe4f1, 0xe4f2, 0xe4f3, 0xe4f4, 0xe4f5, 0xe4f6, 0xe4f7, + 0xe4f8, 0xe4f9, 0xe4fa, 0xe4fb, 0xe4fc, 0xe4fd, 0xe4fe, 0xe4ff, + 0xe500, 0xe501, 0xe502, 0xe503, 0xe504, 0xe505, 0xe506, 0xe507, + 0xe508, 0xe509, 0xe50a, 0xe50b, 0xe50c, 0xe50d, 0xe50e, 0xe50f, + 0xe510, 0xe511, 0xe512, 0xe513, 0xe514, 0xe515, 0xe516, 0xe517, + 0xe518, 0xe519, 0xe51a, 0xe51b, 0xe51c, 0xe51d, 0xe51e, 0xe51f, + 0xe520, 0xe521, 0xe522, 0xe523, 0xe524, 0xe525, 0xe526, 0xe527, + 0xe528, 0xe529, 0xe52a, 0xe52b, 0xe52c, 0xe52d, 0xe52e, 0xe52f, + 0xe530, 0xe531, 0xe532, 0xe533, 0xe534, 0xe535, 0xe536, 0xe537, + 0xe538, 0xe539, 0xe53a, 0xe53b, 0xe53c, 0xe53d, 0xe53e, 0xe53f, + 0xe540, 0xe541, 0xe542, 0xe543, 0xe544, 0xe545, 0xe546, 0xe547, + 0xe548, 0xe549, 0xe54a, 0xe54b, 0xe54c, 0xe54d, 0xe54e, 0xe54f, + 0xe550, 0xe551, 0xe552, 0xe553, 0xe554, 0xe555, 0xe556, 0xe557, + 0xe558, 0xe559, 0xe55a, 0xe55b, 0xe55c, 0xe55d, 0xe55e, 0xe55f, + 0xe560, 0xe561, 0xe562, 0xe563, 0xe564, 0xe565, 0xe566, 0xe567, + 0xe568, 0xe569, 0xe56a, 0xe56b, 0xe56c, 0xe56d, 0xe56e, 0xe56f, + 0xe570, 0xe571, 0xe572, 0xe573, 0xe574, 0xe575, 0xe576, 0xe577, + 0xe578, 0xe579, 0xe57a, 0xe57b, 0xe57c, 0xe57d, 0xe57e, 0xe57f, + 0xe580, 0xe581, 0xe582, 0xe583, 0xe584, 0xe585, 0xe586, 0xe587, + 0xe588, 0xe589, 0xe58a, 0xe58b, 0xe58c, 0xe58d, 0xe58e, 0xe58f, + 0xe590, 0xe591, 0xe592, 0xe593, 0xe594, 0xe595, 0xe596, 0xe597, + 0xe598, 0xe599, 0xe59a, 0xe59b, 0xe59c, 0xe59d, 0xe59e, 0xe59f, + 0xe5a0, 0xe5a1, 0xe5a2, 0xe5a3, 0xe5a4, 0xe5a5, 0xe5a6, 0xe5a7, + 0xe5a8, 0xe5a9, 0xe5aa, 0xe5ab, 0xe5ac, 0xe5ad, 0xe5ae, 0xe5af, + 0xe5b0, 0xe5b1, 0xe5b2, 0xe5b3, 0xe5b4, 0xe5b5, 0xe5b6, 0xe5b7, + 0xe5b8, 0xe5b9, 0xe5ba, 0xe5bb, 0xe5bc, 0xe5bd, 0xe5be, 0xe5bf, + 0xe5c0, 0xe5c1, 0xe5c2, 0xe5c3, 0xe5c4, 0xe5c5, 0xe5c6, 0xe5c7, + 0xe5c8, 0xe5c9, 0xe5ca, 0xe5cb, 0xe5cc, 0xe5cd, 0xe5ce, 0xe5cf, + 0xe5d0, 0xe5d1, 0xe5d2, 0xe5d3, 0xe5d4, 0xe5d5, 0xe5d6, 0xe5d7, + 0xe5d8, 0xe5d9, 0xe5da, 0xe5db, 0xe5dc, 0xe5dd, 0xe5de, 0xe5df, + 0xe5e0, 0xe5e1, 0xe5e2, 0xe5e3, 0xe5e4, 0xe5e5, 0xe5e6, 0xe5e7, + 0xe5e8, 0xe5e9, 0xe5ea, 0xe5eb, 0xe5ec, 0xe5ed, 0xe5ee, 0xe5ef, + 0xe5f0, 0xe5f1, 0xe5f2, 0xe5f3, 0xe5f4, 0xe5f5, 0xe5f6, 0xe5f7, + 0xe5f8, 0xe5f9, 0xe5fa, 0xe5fb, 0xe5fc, 0xe5fd, 0xe5fe, 0xe5ff, + 0xe600, 0xe601, 0xe602, 0xe603, 0xe604, 0xe605, 0xe606, 0xe607, + 0xe608, 0xe609, 0xe60a, 0xe60b, 0xe60c, 0xe60d, 0xe60e, 0xe60f, + 0xe610, 0xe611, 0xe612, 0xe613, 0xe614, 0xe615, 0xe616, 0xe617, + 0xe618, 0xe619, 0xe61a, 0xe61b, 0xe61c, 0xe61d, 0xe61e, 0xe61f, + 0xe620, 0xe621, 0xe622, 0xe623, 0xe624, 0xe625, 0xe626, 0xe627, + 0xe628, 0xe629, 0xe62a, 0xe62b, 0xe62c, 0xe62d, 0xe62e, 0xe62f, + 0xe630, 0xe631, 0xe632, 0xe633, 0xe634, 0xe635, 0xe636, 0xe637, + 0xe638, 0xe639, 0xe63a, 0xe63b, 0xe63c, 0xe63d, 0xe63e, 0xe63f, + 0xe640, 0xe641, 0xe642, 0xe643, 0xe644, 0xe645, 0xe646, 0xe647, + 0xe648, 0xe649, 0xe64a, 0xe64b, 0xe64c, 0xe64d, 0xe64e, 0xe64f, + 0xe650, 0xe651, 0xe652, 0xe653, 0xe654, 0xe655, 0xe656, 0xe657, + 0xe658, 0xe659, 0xe65a, 0xe65b, 0xe65c, 0xe65d, 0xe65e, 0xe65f, + 0xe660, 0xe661, 0xe662, 0xe663, 0xe664, 0xe665, 0xe666, 0xe667, + 0xe668, 0xe669, 0xe66a, 0xe66b, 0xe66c, 0xe66d, 0xe66e, 0xe66f, + 0xe670, 0xe671, 0xe672, 0xe673, 0xe674, 0xe675, 0xe676, 0xe677, + 0xe678, 0xe679, 0xe67a, 0xe67b, 0xe67c, 0xe67d, 0xe67e, 0xe67f, + 0xe680, 0xe681, 0xe682, 0xe683, 0xe684, 0xe685, 0xe686, 0xe687, + 0xe688, 0xe689, 0xe68a, 0xe68b, 0xe68c, 0xe68d, 0xe68e, 0xe68f, + 0xe690, 0xe691, 0xe692, 0xe693, 0xe694, 0xe695, 0xe696, 0xe697, + 0xe698, 0xe699, 0xe69a, 0xe69b, 0xe69c, 0xe69d, 0xe69e, 0xe69f, + 0xe6a0, 0xe6a1, 0xe6a2, 0xe6a3, 0xe6a4, 0xe6a5, 0xe6a6, 0xe6a7, + 0xe6a8, 0xe6a9, 0xe6aa, 0xe6ab, 0xe6ac, 0xe6ad, 0xe6ae, 0xe6af, + 0xe6b0, 0xe6b1, 0xe6b2, 0xe6b3, 0xe6b4, 0xe6b5, 0xe6b6, 0xe6b7, + 0xe6b8, 0xe6b9, 0xe6ba, 0xe6bb, 0xe6bc, 0xe6bd, 0xe6be, 0xe6bf, + 0xe6c0, 0xe6c1, 0xe6c2, 0xe6c3, 0xe6c4, 0xe6c5, 0xe6c6, 0xe6c7, + 0xe6c8, 0xe6c9, 0xe6ca, 0xe6cb, 0xe6cc, 0xe6cd, 0xe6ce, 0xe6cf, + 0xe6d0, 0xe6d1, 0xe6d2, 0xe6d3, 0xe6d4, 0xe6d5, 0xe6d6, 0xe6d7, + 0xe6d8, 0xe6d9, 0xe6da, 0xe6db, 0xe6dc, 0xe6dd, 0xe6de, 0xe6df, + 0xe6e0, 0xe6e1, 0xe6e2, 0xe6e3, 0xe6e4, 0xe6e5, 0xe6e6, 0xe6e7, + 0xe6e8, 0xe6e9, 0xe6ea, 0xe6eb, 0xe6ec, 0xe6ed, 0xe6ee, 0xe6ef, + 0xe6f0, 0xe6f1, 0xe6f2, 0xe6f3, 0xe6f4, 0xe6f5, 0xe6f6, 0xe6f7, + 0xe6f8, 0xe6f9, 0xe6fa, 0xe6fb, 0xe6fc, 0xe6fd, 0xe6fe, 0xe6ff, + 0xe700, 0xe701, 0xe702, 0xe703, 0xe704, 0xe705, 0xe706, 0xe707, + 0xe708, 0xe709, 0xe70a, 0xe70b, 0xe70c, 0xe70d, 0xe70e, 0xe70f, + 0xe710, 0xe711, 0xe712, 0xe713, 0xe714, 0xe715, 0xe716, 0xe717, + 0xe718, 0xe719, 0xe71a, 0xe71b, 0xe71c, 0xe71d, 0xe71e, 0xe71f, + 0xe720, 0xe721, 0xe722, 0xe723, 0xe724, 0xe725, 0xe726, 0xe727, + 0xe728, 0xe729, 0xe72a, 0xe72b, 0xe72c, 0xe72d, 0xe72e, 0xe72f, + 0xe730, 0xe731, 0xe732, 0xe733, 0xe734, 0xe735, 0xe736, 0xe737, + 0xe738, 0xe739, 0xe73a, 0xe73b, 0xe73c, 0xe73d, 0xe73e, 0xe73f, + 0xe740, 0xe741, 0xe742, 0xe743, 0xe744, 0xe745, 0xe746, 0xe747, + 0xe748, 0xe749, 0xe74a, 0xe74b, 0xe74c, 0xe74d, 0xe74e, 0xe74f, + 0xe750, 0xe751, 0xe752, 0xe753, 0xe754, 0xe755, 0xe756, 0xe757, + 0xe758, 0xe759, 0xe75a, 0xe75b, 0xe75c, 0xe75d, 0xe75e, 0xe75f, + 0xe760, 0xe761, 0xe762, 0xe763, 0xe764, 0xe765, 0xe766, 0xe767, + 0xe768, 0xe769, 0xe76a, 0xe76b, 0xe76c, 0xe76d, 0xe76e, 0xe76f, + 0xe770, 0xe771, 0xe772, 0xe773, 0xe774, 0xe775, 0xe776, 0xe777, + 0xe778, 0xe779, 0xe77a, 0xe77b, 0xe77c, 0xe77d, 0xe77e, 0xe77f, + 0xe780, 0xe781, 0xe782, 0xe783, 0xe784, 0xe785, 0xe786, 0xe787, + 0xe788, 0xe789, 0xe78a, 0xe78b, 0xe78c, 0xe78d, 0xe78e, 0xe78f, + 0xe790, 0xe791, 0xe792, 0xe793, 0xe794, 0xe795, 0xe796, 0xe797, + 0xe798, 0xe799, 0xe79a, 0xe79b, 0xe79c, 0xe79d, 0xe79e, 0xe79f, + 0xe7a0, 0xe7a1, 0xe7a2, 0xe7a3, 0xe7a4, 0xe7a5, 0xe7a6, 0xe7a7, + 0xe7a8, 0xe7a9, 0xe7aa, 0xe7ab, 0xe7ac, 0xe7ad, 0xe7ae, 0xe7af, + 0xe7b0, 0xe7b1, 0xe7b2, 0xe7b3, 0xe7b4, 0xe7b5, 0xe7b6, 0xe7b7, + 0xe7b8, 0xe7b9, 0xe7ba, 0xe7bb, 0xe7bc, 0xe7bd, 0xe7be, 0xe7bf, + 0xe7c0, 0xe7c1, 0xe7c2, 0xe7c3, 0xe7c4, 0xe7c5, 0xe7c6, 0xe7c7, + 0xe7c8, 0xe7c9, 0xe7ca, 0xe7cb, 0xe7cc, 0xe7cd, 0xe7ce, 0xe7cf, + 0xe7d0, 0xe7d1, 0xe7d2, 0xe7d3, 0xe7d4, 0xe7d5, 0xe7d6, 0xe7d7, + 0xe7d8, 0xe7d9, 0xe7da, 0xe7db, 0xe7dc, 0xe7dd, 0xe7de, 0xe7df, + 0xe7e0, 0xe7e1, 0xe7e2, 0xe7e3, 0xe7e4, 0xe7e5, 0xe7e6, 0xe7e7, + 0xe7e8, 0xe7e9, 0xe7ea, 0xe7eb, 0xe7ec, 0xe7ed, 0xe7ee, 0xe7ef, + 0xe7f0, 0xe7f1, 0xe7f2, 0xe7f3, 0xe7f4, 0xe7f5, 0xe7f6, 0xe7f7, + 0xe7f8, 0xe7f9, 0xe7fa, 0xe7fb, 0xe7fc, 0xe7fd, 0xe7fe, 0xe7ff, + 0xe800, 0xe801, 0xe802, 0xe803, 0xe804, 0xe805, 0xe806, 0xe807, + 0xe808, 0xe809, 0xe80a, 0xe80b, 0xe80c, 0xe80d, 0xe80e, 0xe80f, + 0xe810, 0xe811, 0xe812, 0xe813, 0xe814, 0xe815, 0xe816, 0xe817, + 0xe818, 0xe819, 0xe81a, 0xe81b, 0xe81c, 0xe81d, 0xe81e, 0xe81f, + 0xe820, 0xe821, 0xe822, 0xe823, 0xe824, 0xe825, 0xe826, 0xe827, + 0xe828, 0xe829, 0xe82a, 0xe82b, 0xe82c, 0xe82d, 0xe82e, 0xe82f, + 0xe830, 0xe831, 0xe832, 0xe833, 0xe834, 0xe835, 0xe836, 0xe837, + 0xe838, 0xe839, 0xe83a, 0xe83b, 0xe83c, 0xe83d, 0xe83e, 0xe83f, + 0xe840, 0xe841, 0xe842, 0xe843, 0xe844, 0xe845, 0xe846, 0xe847, + 0xe848, 0xe849, 0xe84a, 0xe84b, 0xe84c, 0xe84d, 0xe84e, 0xe84f, + 0xe850, 0xe851, 0xe852, 0xe853, 0xe854, 0xe855, 0xe856, 0xe857, + 0xe858, 0xe859, 0xe85a, 0xe85b, 0xe85c, 0xe85d, 0xe85e, 0xe85f, + 0xe860, 0xe861, 0xe862, 0xe863, 0xe864, 0xe865, 0xe866, 0xe867, + 0xe868, 0xe869, 0xe86a, 0xe86b, 0xe86c, 0xe86d, 0xe86e, 0xe86f, + 0xe870, 0xe871, 0xe872, 0xe873, 0xe874, 0xe875, 0xe876, 0xe877, + 0xe878, 0xe879, 0xe87a, 0xe87b, 0xe87c, 0xe87d, 0xe87e, 0xe87f, + 0xe880, 0xe881, 0xe882, 0xe883, 0xe884, 0xe885, 0xe886, 0xe887, + 0xe888, 0xe889, 0xe88a, 0xe88b, 0xe88c, 0xe88d, 0xe88e, 0xe88f, + 0xe890, 0xe891, 0xe892, 0xe893, 0xe894, 0xe895, 0xe896, 0xe897, + 0xe898, 0xe899, 0xe89a, 0xe89b, 0xe89c, 0xe89d, 0xe89e, 0xe89f, + 0xe8a0, 0xe8a1, 0xe8a2, 0xe8a3, 0xe8a4, 0xe8a5, 0xe8a6, 0xe8a7, + 0xe8a8, 0xe8a9, 0xe8aa, 0xe8ab, 0xe8ac, 0xe8ad, 0xe8ae, 0xe8af, + 0xe8b0, 0xe8b1, 0xe8b2, 0xe8b3, 0xe8b4, 0xe8b5, 0xe8b6, 0xe8b7, + 0xe8b8, 0xe8b9, 0xe8ba, 0xe8bb, 0xe8bc, 0xe8bd, 0xe8be, 0xe8bf, + 0xe8c0, 0xe8c1, 0xe8c2, 0xe8c3, 0xe8c4, 0xe8c5, 0xe8c6, 0xe8c7, + 0xe8c8, 0xe8c9, 0xe8ca, 0xe8cb, 0xe8cc, 0xe8cd, 0xe8ce, 0xe8cf, + 0xe8d0, 0xe8d1, 0xe8d2, 0xe8d3, 0xe8d4, 0xe8d5, 0xe8d6, 0xe8d7, + 0xe8d8, 0xe8d9, 0xe8da, 0xe8db, 0xe8dc, 0xe8dd, 0xe8de, 0xe8df, + 0xe8e0, 0xe8e1, 0xe8e2, 0xe8e3, 0xe8e4, 0xe8e5, 0xe8e6, 0xe8e7, + 0xe8e8, 0xe8e9, 0xe8ea, 0xe8eb, 0xe8ec, 0xe8ed, 0xe8ee, 0xe8ef, + 0xe8f0, 0xe8f1, 0xe8f2, 0xe8f3, 0xe8f4, 0xe8f5, 0xe8f6, 0xe8f7, + 0xe8f8, 0xe8f9, 0xe8fa, 0xe8fb, 0xe8fc, 0xe8fd, 0xe8fe, 0xe8ff, + 0xe900, 0xe901, 0xe902, 0xe903, 0xe904, 0xe905, 0xe906, 0xe907, + 0xe908, 0xe909, 0xe90a, 0xe90b, 0xe90c, 0xe90d, 0xe90e, 0xe90f, + 0xe910, 0xe911, 0xe912, 0xe913, 0xe914, 0xe915, 0xe916, 0xe917, + 0xe918, 0xe919, 0xe91a, 0xe91b, 0xe91c, 0xe91d, 0xe91e, 0xe91f, + 0xe920, 0xe921, 0xe922, 0xe923, 0xe924, 0xe925, 0xe926, 0xe927, + 0xe928, 0xe929, 0xe92a, 0xe92b, 0xe92c, 0xe92d, 0xe92e, 0xe92f, + 0xe930, 0xe931, 0xe932, 0xe933, 0xe934, 0xe935, 0xe936, 0xe937, + 0xe938, 0xe939, 0xe93a, 0xe93b, 0xe93c, 0xe93d, 0xe93e, 0xe93f, + 0xe940, 0xe941, 0xe942, 0xe943, 0xe944, 0xe945, 0xe946, 0xe947, + 0xe948, 0xe949, 0xe94a, 0xe94b, 0xe94c, 0xe94d, 0xe94e, 0xe94f, + 0xe950, 0xe951, 0xe952, 0xe953, 0xe954, 0xe955, 0xe956, 0xe957, + 0xe958, 0xe959, 0xe95a, 0xe95b, 0xe95c, 0xe95d, 0xe95e, 0xe95f, + 0xe960, 0xe961, 0xe962, 0xe963, 0xe964, 0xe965, 0xe966, 0xe967, + 0xe968, 0xe969, 0xe96a, 0xe96b, 0xe96c, 0xe96d, 0xe96e, 0xe96f, + 0xe970, 0xe971, 0xe972, 0xe973, 0xe974, 0xe975, 0xe976, 0xe977, + 0xe978, 0xe979, 0xe97a, 0xe97b, 0xe97c, 0xe97d, 0xe97e, 0xe97f, + 0xe980, 0xe981, 0xe982, 0xe983, 0xe984, 0xe985, 0xe986, 0xe987, + 0xe988, 0xe989, 0xe98a, 0xe98b, 0xe98c, 0xe98d, 0xe98e, 0xe98f, + 0xe990, 0xe991, 0xe992, 0xe993, 0xe994, 0xe995, 0xe996, 0xe997, + 0xe998, 0xe999, 0xe99a, 0xe99b, 0xe99c, 0xe99d, 0xe99e, 0xe99f, + 0xe9a0, 0xe9a1, 0xe9a2, 0xe9a3, 0xe9a4, 0xe9a5, 0xe9a6, 0xe9a7, + 0xe9a8, 0xe9a9, 0xe9aa, 0xe9ab, 0xe9ac, 0xe9ad, 0xe9ae, 0xe9af, + 0xe9b0, 0xe9b1, 0xe9b2, 0xe9b3, 0xe9b4, 0xe9b5, 0xe9b6, 0xe9b7, + 0xe9b8, 0xe9b9, 0xe9ba, 0xe9bb, 0xe9bc, 0xe9bd, 0xe9be, 0xe9bf, + 0xe9c0, 0xe9c1, 0xe9c2, 0xe9c3, 0xe9c4, 0xe9c5, 0xe9c6, 0xe9c7, + 0xe9c8, 0xe9c9, 0xe9ca, 0xe9cb, 0xe9cc, 0xe9cd, 0xe9ce, 0xe9cf, + 0xe9d0, 0xe9d1, 0xe9d2, 0xe9d3, 0xe9d4, 0xe9d5, 0xe9d6, 0xe9d7, + 0xe9d8, 0xe9d9, 0xe9da, 0xe9db, 0xe9dc, 0xe9dd, 0xe9de, 0xe9df, + 0xe9e0, 0xe9e1, 0xe9e2, 0xe9e3, 0xe9e4, 0xe9e5, 0xe9e6, 0xe9e7, + 0xe9e8, 0xe9e9, 0xe9ea, 0xe9eb, 0xe9ec, 0xe9ed, 0xe9ee, 0xe9ef, + 0xe9f0, 0xe9f1, 0xe9f2, 0xe9f3, 0xe9f4, 0xe9f5, 0xe9f6, 0xe9f7, + 0xe9f8, 0xe9f9, 0xe9fa, 0xe9fb, 0xe9fc, 0xe9fd, 0xe9fe, 0xe9ff, + 0xea00, 0xea01, 0xea02, 0xea03, 0xea04, 0xea05, 0xea06, 0xea07, + 0xea08, 0xea09, 0xea0a, 0xea0b, 0xea0c, 0xea0d, 0xea0e, 0xea0f, + 0xea10, 0xea11, 0xea12, 0xea13, 0xea14, 0xea15, 0xea16, 0xea17, + 0xea18, 0xea19, 0xea1a, 0xea1b, 0xea1c, 0xea1d, 0xea1e, 0xea1f, + 0xea20, 0xea21, 0xea22, 0xea23, 0xea24, 0xea25, 0xea26, 0xea27, + 0xea28, 0xea29, 0xea2a, 0xea2b, 0xea2c, 0xea2d, 0xea2e, 0xea2f, + 0xea30, 0xea31, 0xea32, 0xea33, 0xea34, 0xea35, 0xea36, 0xea37, + 0xea38, 0xea39, 0xea3a, 0xea3b, 0xea3c, 0xea3d, 0xea3e, 0xea3f, + 0xea40, 0xea41, 0xea42, 0xea43, 0xea44, 0xea45, 0xea46, 0xea47, + 0xea48, 0xea49, 0xea4a, 0xea4b, 0xea4c, 0xea4d, 0xea4e, 0xea4f, + 0xea50, 0xea51, 0xea52, 0xea53, 0xea54, 0xea55, 0xea56, 0xea57, + 0xea58, 0xea59, 0xea5a, 0xea5b, 0xea5c, 0xea5d, 0xea5e, 0xea5f, + 0xea60, 0xea61, 0xea62, 0xea63, 0xea64, 0xea65, 0xea66, 0xea67, + 0xea68, 0xea69, 0xea6a, 0xea6b, 0xea6c, 0xea6d, 0xea6e, 0xea6f, + 0xea70, 0xea71, 0xea72, 0xea73, 0xea74, 0xea75, 0xea76, 0xea77, + 0xea78, 0xea79, 0xea7a, 0xea7b, 0xea7c, 0xea7d, 0xea7e, 0xea7f, + 0xea80, 0xea81, 0xea82, 0xea83, 0xea84, 0xea85, 0xea86, 0xea87, + 0xea88, 0xea89, 0xea8a, 0xea8b, 0xea8c, 0xea8d, 0xea8e, 0xea8f, + 0xea90, 0xea91, 0xea92, 0xea93, 0xea94, 0xea95, 0xea96, 0xea97, + 0xea98, 0xea99, 0xea9a, 0xea9b, 0xea9c, 0xea9d, 0xea9e, 0xea9f, + 0xeaa0, 0xeaa1, 0xeaa2, 0xeaa3, 0xeaa4, 0xeaa5, 0xeaa6, 0xeaa7, + 0xeaa8, 0xeaa9, 0xeaaa, 0xeaab, 0xeaac, 0xeaad, 0xeaae, 0xeaaf, + 0xeab0, 0xeab1, 0xeab2, 0xeab3, 0xeab4, 0xeab5, 0xeab6, 0xeab7, + 0xeab8, 0xeab9, 0xeaba, 0xeabb, 0xeabc, 0xeabd, 0xeabe, 0xeabf, + 0xeac0, 0xeac1, 0xeac2, 0xeac3, 0xeac4, 0xeac5, 0xeac6, 0xeac7, + 0xeac8, 0xeac9, 0xeaca, 0xeacb, 0xeacc, 0xeacd, 0xeace, 0xeacf, + 0xead0, 0xead1, 0xead2, 0xead3, 0xead4, 0xead5, 0xead6, 0xead7, + 0xead8, 0xead9, 0xeada, 0xeadb, 0xeadc, 0xeadd, 0xeade, 0xeadf, + 0xeae0, 0xeae1, 0xeae2, 0xeae3, 0xeae4, 0xeae5, 0xeae6, 0xeae7, + 0xeae8, 0xeae9, 0xeaea, 0xeaeb, 0xeaec, 0xeaed, 0xeaee, 0xeaef, + 0xeaf0, 0xeaf1, 0xeaf2, 0xeaf3, 0xeaf4, 0xeaf5, 0xeaf6, 0xeaf7, + 0xeaf8, 0xeaf9, 0xeafa, 0xeafb, 0xeafc, 0xeafd, 0xeafe, 0xeaff, + 0xeb00, 0xeb01, 0xeb02, 0xeb03, 0xeb04, 0xeb05, 0xeb06, 0xeb07, + 0xeb08, 0xeb09, 0xeb0a, 0xeb0b, 0xeb0c, 0xeb0d, 0xeb0e, 0xeb0f, + 0xeb10, 0xeb11, 0xeb12, 0xeb13, 0xeb14, 0xeb15, 0xeb16, 0xeb17, + 0xeb18, 0xeb19, 0xeb1a, 0xeb1b, 0xeb1c, 0xeb1d, 0xeb1e, 0xeb1f, + 0xeb20, 0xeb21, 0xeb22, 0xeb23, 0xeb24, 0xeb25, 0xeb26, 0xeb27, + 0xeb28, 0xeb29, 0xeb2a, 0xeb2b, 0xeb2c, 0xeb2d, 0xeb2e, 0xeb2f, + 0xeb30, 0xeb31, 0xeb32, 0xeb33, 0xeb34, 0xeb35, 0xeb36, 0xeb37, + 0xeb38, 0xeb39, 0xeb3a, 0xeb3b, 0xeb3c, 0xeb3d, 0xeb3e, 0xeb3f, + 0xeb40, 0xeb41, 0xeb42, 0xeb43, 0xeb44, 0xeb45, 0xeb46, 0xeb47, + 0xeb48, 0xeb49, 0xeb4a, 0xeb4b, 0xeb4c, 0xeb4d, 0xeb4e, 0xeb4f, + 0xeb50, 0xeb51, 0xeb52, 0xeb53, 0xeb54, 0xeb55, 0xeb56, 0xeb57, + 0xeb58, 0xeb59, 0xeb5a, 0xeb5b, 0xeb5c, 0xeb5d, 0xeb5e, 0xeb5f, + 0xeb60, 0xeb61, 0xeb62, 0xeb63, 0xeb64, 0xeb65, 0xeb66, 0xeb67, + 0xeb68, 0xeb69, 0xeb6a, 0xeb6b, 0xeb6c, 0xeb6d, 0xeb6e, 0xeb6f, + 0xeb70, 0xeb71, 0xeb72, 0xeb73, 0xeb74, 0xeb75, 0xeb76, 0xeb77, + 0xeb78, 0xeb79, 0xeb7a, 0xeb7b, 0xeb7c, 0xeb7d, 0xeb7e, 0xeb7f, + 0xeb80, 0xeb81, 0xeb82, 0xeb83, 0xeb84, 0xeb85, 0xeb86, 0xeb87, + 0xeb88, 0xeb89, 0xeb8a, 0xeb8b, 0xeb8c, 0xeb8d, 0xeb8e, 0xeb8f, + 0xeb90, 0xeb91, 0xeb92, 0xeb93, 0xeb94, 0xeb95, 0xeb96, 0xeb97, + 0xeb98, 0xeb99, 0xeb9a, 0xeb9b, 0xeb9c, 0xeb9d, 0xeb9e, 0xeb9f, + 0xeba0, 0xeba1, 0xeba2, 0xeba3, 0xeba4, 0xeba5, 0xeba6, 0xeba7, + 0xeba8, 0xeba9, 0xebaa, 0xebab, 0xebac, 0xebad, 0xebae, 0xebaf, + 0xebb0, 0xebb1, 0xebb2, 0xebb3, 0xebb4, 0xebb5, 0xebb6, 0xebb7, + 0xebb8, 0xebb9, 0xebba, 0xebbb, 0xebbc, 0xebbd, 0xebbe, 0xebbf, + 0xebc0, 0xebc1, 0xebc2, 0xebc3, 0xebc4, 0xebc5, 0xebc6, 0xebc7, + 0xebc8, 0xebc9, 0xebca, 0xebcb, 0xebcc, 0xebcd, 0xebce, 0xebcf, + 0xebd0, 0xebd1, 0xebd2, 0xebd3, 0xebd4, 0xebd5, 0xebd6, 0xebd7, + 0xebd8, 0xebd9, 0xebda, 0xebdb, 0xebdc, 0xebdd, 0xebde, 0xebdf, + 0xebe0, 0xebe1, 0xebe2, 0xebe3, 0xebe4, 0xebe5, 0xebe6, 0xebe7, + 0xebe8, 0xebe9, 0xebea, 0xebeb, 0xebec, 0xebed, 0xebee, 0xebef, + 0xebf0, 0xebf1, 0xebf2, 0xebf3, 0xebf4, 0xebf5, 0xebf6, 0xebf7, + 0xebf8, 0xebf9, 0xebfa, 0xebfb, 0xebfc, 0xebfd, 0xebfe, 0xebff, + 0xec00, 0xec01, 0xec02, 0xec03, 0xec04, 0xec05, 0xec06, 0xec07, + 0xec08, 0xec09, 0xec0a, 0xec0b, 0xec0c, 0xec0d, 0xec0e, 0xec0f, + 0xec10, 0xec11, 0xec12, 0xec13, 0xec14, 0xec15, 0xec16, 0xec17, + 0xec18, 0xec19, 0xec1a, 0xec1b, 0xec1c, 0xec1d, 0xec1e, 0xec1f, + 0xec20, 0xec21, 0xec22, 0xec23, 0xec24, 0xec25, 0xec26, 0xec27, + 0xec28, 0xec29, 0xec2a, 0xec2b, 0xec2c, 0xec2d, 0xec2e, 0xec2f, + 0xec30, 0xec31, 0xec32, 0xec33, 0xec34, 0xec35, 0xec36, 0xec37, + 0xec38, 0xec39, 0xec3a, 0xec3b, 0xec3c, 0xec3d, 0xec3e, 0xec3f, + 0xec40, 0xec41, 0xec42, 0xec43, 0xec44, 0xec45, 0xec46, 0xec47, + 0xec48, 0xec49, 0xec4a, 0xec4b, 0xec4c, 0xec4d, 0xec4e, 0xec4f, + 0xec50, 0xec51, 0xec52, 0xec53, 0xec54, 0xec55, 0xec56, 0xec57, + 0xec58, 0xec59, 0xec5a, 0xec5b, 0xec5c, 0xec5d, 0xec5e, 0xec5f, + 0xec60, 0xec61, 0xec62, 0xec63, 0xec64, 0xec65, 0xec66, 0xec67, + 0xec68, 0xec69, 0xec6a, 0xec6b, 0xec6c, 0xec6d, 0xec6e, 0xec6f, + 0xec70, 0xec71, 0xec72, 0xec73, 0xec74, 0xec75, 0xec76, 0xec77, + 0xec78, 0xec79, 0xec7a, 0xec7b, 0xec7c, 0xec7d, 0xec7e, 0xec7f, + 0xec80, 0xec81, 0xec82, 0xec83, 0xec84, 0xec85, 0xec86, 0xec87, + 0xec88, 0xec89, 0xec8a, 0xec8b, 0xec8c, 0xec8d, 0xec8e, 0xec8f, + 0xec90, 0xec91, 0xec92, 0xec93, 0xec94, 0xec95, 0xec96, 0xec97, + 0xec98, 0xec99, 0xec9a, 0xec9b, 0xec9c, 0xec9d, 0xec9e, 0xec9f, + 0xeca0, 0xeca1, 0xeca2, 0xeca3, 0xeca4, 0xeca5, 0xeca6, 0xeca7, + 0xeca8, 0xeca9, 0xecaa, 0xecab, 0xecac, 0xecad, 0xecae, 0xecaf, + 0xecb0, 0xecb1, 0xecb2, 0xecb3, 0xecb4, 0xecb5, 0xecb6, 0xecb7, + 0xecb8, 0xecb9, 0xecba, 0xecbb, 0xecbc, 0xecbd, 0xecbe, 0xecbf, + 0xecc0, 0xecc1, 0xecc2, 0xecc3, 0xecc4, 0xecc5, 0xecc6, 0xecc7, + 0xecc8, 0xecc9, 0xecca, 0xeccb, 0xeccc, 0xeccd, 0xecce, 0xeccf, + 0xecd0, 0xecd1, 0xecd2, 0xecd3, 0xecd4, 0xecd5, 0xecd6, 0xecd7, + 0xecd8, 0xecd9, 0xecda, 0xecdb, 0xecdc, 0xecdd, 0xecde, 0xecdf, + 0xece0, 0xece1, 0xece2, 0xece3, 0xece4, 0xece5, 0xece6, 0xece7, + 0xece8, 0xece9, 0xecea, 0xeceb, 0xecec, 0xeced, 0xecee, 0xecef, + 0xecf0, 0xecf1, 0xecf2, 0xecf3, 0xecf4, 0xecf5, 0xecf6, 0xecf7, + 0xecf8, 0xecf9, 0xecfa, 0xecfb, 0xecfc, 0xecfd, 0xecfe, 0xecff, + 0xed00, 0xed01, 0xed02, 0xed03, 0xed04, 0xed05, 0xed06, 0xed07, + 0xed08, 0xed09, 0xed0a, 0xed0b, 0xed0c, 0xed0d, 0xed0e, 0xed0f, + 0xed10, 0xed11, 0xed12, 0xed13, 0xed14, 0xed15, 0xed16, 0xed17, + 0xed18, 0xed19, 0xed1a, 0xed1b, 0xed1c, 0xed1d, 0xed1e, 0xed1f, + 0xed20, 0xed21, 0xed22, 0xed23, 0xed24, 0xed25, 0xed26, 0xed27, + 0xed28, 0xed29, 0xed2a, 0xed2b, 0xed2c, 0xed2d, 0xed2e, 0xed2f, + 0xed30, 0xed31, 0xed32, 0xed33, 0xed34, 0xed35, 0xed36, 0xed37, + 0xed38, 0xed39, 0xed3a, 0xed3b, 0xed3c, 0xed3d, 0xed3e, 0xed3f, + 0xed40, 0xed41, 0xed42, 0xed43, 0xed44, 0xed45, 0xed46, 0xed47, + 0xed48, 0xed49, 0xed4a, 0xed4b, 0xed4c, 0xed4d, 0xed4e, 0xed4f, + 0xed50, 0xed51, 0xed52, 0xed53, 0xed54, 0xed55, 0xed56, 0xed57, + 0xed58, 0xed59, 0xed5a, 0xed5b, 0xed5c, 0xed5d, 0xed5e, 0xed5f, + 0xed60, 0xed61, 0xed62, 0xed63, 0xed64, 0xed65, 0xed66, 0xed67, + 0xed68, 0xed69, 0xed6a, 0xed6b, 0xed6c, 0xed6d, 0xed6e, 0xed6f, + 0xed70, 0xed71, 0xed72, 0xed73, 0xed74, 0xed75, 0xed76, 0xed77, + 0xed78, 0xed79, 0xed7a, 0xed7b, 0xed7c, 0xed7d, 0xed7e, 0xed7f, + 0xed80, 0xed81, 0xed82, 0xed83, 0xed84, 0xed85, 0xed86, 0xed87, + 0xed88, 0xed89, 0xed8a, 0xed8b, 0xed8c, 0xed8d, 0xed8e, 0xed8f, + 0xed90, 0xed91, 0xed92, 0xed93, 0xed94, 0xed95, 0xed96, 0xed97, + 0xed98, 0xed99, 0xed9a, 0xed9b, 0xed9c, 0xed9d, 0xed9e, 0xed9f, + 0xeda0, 0xeda1, 0xeda2, 0xeda3, 0xeda4, 0xeda5, 0xeda6, 0xeda7, + 0xeda8, 0xeda9, 0xedaa, 0xedab, 0xedac, 0xedad, 0xedae, 0xedaf, + 0xedb0, 0xedb1, 0xedb2, 0xedb3, 0xedb4, 0xedb5, 0xedb6, 0xedb7, + 0xedb8, 0xedb9, 0xedba, 0xedbb, 0xedbc, 0xedbd, 0xedbe, 0xedbf, + 0xedc0, 0xedc1, 0xedc2, 0xedc3, 0xedc4, 0xedc5, 0xedc6, 0xedc7, + 0xedc8, 0xedc9, 0xedca, 0xedcb, 0xedcc, 0xedcd, 0xedce, 0xedcf, + 0xedd0, 0xedd1, 0xedd2, 0xedd3, 0xedd4, 0xedd5, 0xedd6, 0xedd7, + 0xedd8, 0xedd9, 0xedda, 0xeddb, 0xeddc, 0xeddd, 0xedde, 0xeddf, + 0xede0, 0xede1, 0xede2, 0xede3, 0xede4, 0xede5, 0xede6, 0xede7, + 0xede8, 0xede9, 0xedea, 0xedeb, 0xedec, 0xeded, 0xedee, 0xedef, + 0xedf0, 0xedf1, 0xedf2, 0xedf3, 0xedf4, 0xedf5, 0xedf6, 0xedf7, + 0xedf8, 0xedf9, 0xedfa, 0xedfb, 0xedfc, 0xedfd, 0xedfe, 0xedff, + 0xee00, 0xee01, 0xee02, 0xee03, 0xee04, 0xee05, 0xee06, 0xee07, + 0xee08, 0xee09, 0xee0a, 0xee0b, 0xee0c, 0xee0d, 0xee0e, 0xee0f, + 0xee10, 0xee11, 0xee12, 0xee13, 0xee14, 0xee15, 0xee16, 0xee17, + 0xee18, 0xee19, 0xee1a, 0xee1b, 0xee1c, 0xee1d, 0xee1e, 0xee1f, + 0xee20, 0xee21, 0xee22, 0xee23, 0xee24, 0xee25, 0xee26, 0xee27, + 0xee28, 0xee29, 0xee2a, 0xee2b, 0xee2c, 0xee2d, 0xee2e, 0xee2f, + 0xee30, 0xee31, 0xee32, 0xee33, 0xee34, 0xee35, 0xee36, 0xee37, + 0xee38, 0xee39, 0xee3a, 0xee3b, 0xee3c, 0xee3d, 0xee3e, 0xee3f, + 0xee40, 0xee41, 0xee42, 0xee43, 0xee44, 0xee45, 0xee46, 0xee47, + 0xee48, 0xee49, 0xee4a, 0xee4b, 0xee4c, 0xee4d, 0xee4e, 0xee4f, + 0xee50, 0xee51, 0xee52, 0xee53, 0xee54, 0xee55, 0xee56, 0xee57, + 0xee58, 0xee59, 0xee5a, 0xee5b, 0xee5c, 0xee5d, 0xee5e, 0xee5f, + 0xee60, 0xee61, 0xee62, 0xee63, 0xee64, 0xee65, 0xee66, 0xee67, + 0xee68, 0xee69, 0xee6a, 0xee6b, 0xee6c, 0xee6d, 0xee6e, 0xee6f, + 0xee70, 0xee71, 0xee72, 0xee73, 0xee74, 0xee75, 0xee76, 0xee77, + 0xee78, 0xee79, 0xee7a, 0xee7b, 0xee7c, 0xee7d, 0xee7e, 0xee7f, + 0xee80, 0xee81, 0xee82, 0xee83, 0xee84, 0xee85, 0xee86, 0xee87, + 0xee88, 0xee89, 0xee8a, 0xee8b, 0xee8c, 0xee8d, 0xee8e, 0xee8f, + 0xee90, 0xee91, 0xee92, 0xee93, 0xee94, 0xee95, 0xee96, 0xee97, + 0xee98, 0xee99, 0xee9a, 0xee9b, 0xee9c, 0xee9d, 0xee9e, 0xee9f, + 0xeea0, 0xeea1, 0xeea2, 0xeea3, 0xeea4, 0xeea5, 0xeea6, 0xeea7, + 0xeea8, 0xeea9, 0xeeaa, 0xeeab, 0xeeac, 0xeead, 0xeeae, 0xeeaf, + 0xeeb0, 0xeeb1, 0xeeb2, 0xeeb3, 0xeeb4, 0xeeb5, 0xeeb6, 0xeeb7, + 0xeeb8, 0xeeb9, 0xeeba, 0xeebb, 0xeebc, 0xeebd, 0xeebe, 0xeebf, + 0xeec0, 0xeec1, 0xeec2, 0xeec3, 0xeec4, 0xeec5, 0xeec6, 0xeec7, + 0xeec8, 0xeec9, 0xeeca, 0xeecb, 0xeecc, 0xeecd, 0xeece, 0xeecf, + 0xeed0, 0xeed1, 0xeed2, 0xeed3, 0xeed4, 0xeed5, 0xeed6, 0xeed7, + 0xeed8, 0xeed9, 0xeeda, 0xeedb, 0xeedc, 0xeedd, 0xeede, 0xeedf, + 0xeee0, 0xeee1, 0xeee2, 0xeee3, 0xeee4, 0xeee5, 0xeee6, 0xeee7, + 0xeee8, 0xeee9, 0xeeea, 0xeeeb, 0xeeec, 0xeeed, 0xeeee, 0xeeef, + 0xeef0, 0xeef1, 0xeef2, 0xeef3, 0xeef4, 0xeef5, 0xeef6, 0xeef7, + 0xeef8, 0xeef9, 0xeefa, 0xeefb, 0xeefc, 0xeefd, 0xeefe, 0xeeff, + 0xef00, 0xef01, 0xef02, 0xef03, 0xef04, 0xef05, 0xef06, 0xef07, + 0xef08, 0xef09, 0xef0a, 0xef0b, 0xef0c, 0xef0d, 0xef0e, 0xef0f, + 0xef10, 0xef11, 0xef12, 0xef13, 0xef14, 0xef15, 0xef16, 0xef17, + 0xef18, 0xef19, 0xef1a, 0xef1b, 0xef1c, 0xef1d, 0xef1e, 0xef1f, + 0xef20, 0xef21, 0xef22, 0xef23, 0xef24, 0xef25, 0xef26, 0xef27, + 0xef28, 0xef29, 0xef2a, 0xef2b, 0xef2c, 0xef2d, 0xef2e, 0xef2f, + 0xef30, 0xef31, 0xef32, 0xef33, 0xef34, 0xef35, 0xef36, 0xef37, + 0xef38, 0xef39, 0xef3a, 0xef3b, 0xef3c, 0xef3d, 0xef3e, 0xef3f, + 0xef40, 0xef41, 0xef42, 0xef43, 0xef44, 0xef45, 0xef46, 0xef47, + 0xef48, 0xef49, 0xef4a, 0xef4b, 0xef4c, 0xef4d, 0xef4e, 0xef4f, + 0xef50, 0xef51, 0xef52, 0xef53, 0xef54, 0xef55, 0xef56, 0xef57, + 0xef58, 0xef59, 0xef5a, 0xef5b, 0xef5c, 0xef5d, 0xef5e, 0xef5f, + 0xef60, 0xef61, 0xef62, 0xef63, 0xef64, 0xef65, 0xef66, 0xef67, + 0xef68, 0xef69, 0xef6a, 0xef6b, 0xef6c, 0xef6d, 0xef6e, 0xef6f, + 0xef70, 0xef71, 0xef72, 0xef73, 0xef74, 0xef75, 0xef76, 0xef77, + 0xef78, 0xef79, 0xef7a, 0xef7b, 0xef7c, 0xef7d, 0xef7e, 0xef7f, + 0xef80, 0xef81, 0xef82, 0xef83, 0xef84, 0xef85, 0xef86, 0xef87, + 0xef88, 0xef89, 0xef8a, 0xef8b, 0xef8c, 0xef8d, 0xef8e, 0xef8f, + 0xef90, 0xef91, 0xef92, 0xef93, 0xef94, 0xef95, 0xef96, 0xef97, + 0xef98, 0xef99, 0xef9a, 0xef9b, 0xef9c, 0xef9d, 0xef9e, 0xef9f, + 0xefa0, 0xefa1, 0xefa2, 0xefa3, 0xefa4, 0xefa5, 0xefa6, 0xefa7, + 0xefa8, 0xefa9, 0xefaa, 0xefab, 0xefac, 0xefad, 0xefae, 0xefaf, + 0xefb0, 0xefb1, 0xefb2, 0xefb3, 0xefb4, 0xefb5, 0xefb6, 0xefb7, + 0xefb8, 0xefb9, 0xefba, 0xefbb, 0xefbc, 0xefbd, 0xefbe, 0xefbf, + 0xefc0, 0xefc1, 0xefc2, 0xefc3, 0xefc4, 0xefc5, 0xefc6, 0xefc7, + 0xefc8, 0xefc9, 0xefca, 0xefcb, 0xefcc, 0xefcd, 0xefce, 0xefcf, + 0xefd0, 0xefd1, 0xefd2, 0xefd3, 0xefd4, 0xefd5, 0xefd6, 0xefd7, + 0xefd8, 0xefd9, 0xefda, 0xefdb, 0xefdc, 0xefdd, 0xefde, 0xefdf, + 0xefe0, 0xefe1, 0xefe2, 0xefe3, 0xefe4, 0xefe5, 0xefe6, 0xefe7, + 0xefe8, 0xefe9, 0xefea, 0xefeb, 0xefec, 0xefed, 0xefee, 0xefef, + 0xeff0, 0xeff1, 0xeff2, 0xeff3, 0xeff4, 0xeff5, 0xeff6, 0xeff7, + 0xeff8, 0xeff9, 0xeffa, 0xeffb, 0xeffc, 0xeffd, 0xeffe, 0xefff, + 0xf000, 0xf001, 0xf002, 0xf003, 0xf004, 0xf005, 0xf006, 0xf007, + 0xf008, 0xf009, 0xf00a, 0xf00b, 0xf00c, 0xf00d, 0xf00e, 0xf00f, + 0xf010, 0xf011, 0xf012, 0xf013, 0xf014, 0xf015, 0xf016, 0xf017, + 0xf018, 0xf019, 0xf01a, 0xf01b, 0xf01c, 0xf01d, 0xf01e, 0xf01f, + 0xf020, 0xf021, 0xf022, 0xf023, 0xf024, 0xf025, 0xf026, 0xf027, + 0xf028, 0xf029, 0xf02a, 0xf02b, 0xf02c, 0xf02d, 0xf02e, 0xf02f, + 0xf030, 0xf031, 0xf032, 0xf033, 0xf034, 0xf035, 0xf036, 0xf037, + 0xf038, 0xf039, 0xf03a, 0xf03b, 0xf03c, 0xf03d, 0xf03e, 0xf03f, + 0xf040, 0xf041, 0xf042, 0xf043, 0xf044, 0xf045, 0xf046, 0xf047, + 0xf048, 0xf049, 0xf04a, 0xf04b, 0xf04c, 0xf04d, 0xf04e, 0xf04f, + 0xf050, 0xf051, 0xf052, 0xf053, 0xf054, 0xf055, 0xf056, 0xf057, + 0xf058, 0xf059, 0xf05a, 0xf05b, 0xf05c, 0xf05d, 0xf05e, 0xf05f, + 0xf060, 0xf061, 0xf062, 0xf063, 0xf064, 0xf065, 0xf066, 0xf067, + 0xf068, 0xf069, 0xf06a, 0xf06b, 0xf06c, 0xf06d, 0xf06e, 0xf06f, + 0xf070, 0xf071, 0xf072, 0xf073, 0xf074, 0xf075, 0xf076, 0xf077, + 0xf078, 0xf079, 0xf07a, 0xf07b, 0xf07c, 0xf07d, 0xf07e, 0xf07f, + 0xf080, 0xf081, 0xf082, 0xf083, 0xf084, 0xf085, 0xf086, 0xf087, + 0xf088, 0xf089, 0xf08a, 0xf08b, 0xf08c, 0xf08d, 0xf08e, 0xf08f, + 0xf090, 0xf091, 0xf092, 0xf093, 0xf094, 0xf095, 0xf096, 0xf097, + 0xf098, 0xf099, 0xf09a, 0xf09b, 0xf09c, 0xf09d, 0xf09e, 0xf09f, + 0xf0a0, 0xf0a1, 0xf0a2, 0xf0a3, 0xf0a4, 0xf0a5, 0xf0a6, 0xf0a7, + 0xf0a8, 0xf0a9, 0xf0aa, 0xf0ab, 0xf0ac, 0xf0ad, 0xf0ae, 0xf0af, + 0xf0b0, 0xf0b1, 0xf0b2, 0xf0b3, 0xf0b4, 0xf0b5, 0xf0b6, 0xf0b7, + 0xf0b8, 0xf0b9, 0xf0ba, 0xf0bb, 0xf0bc, 0xf0bd, 0xf0be, 0xf0bf, + 0xf0c0, 0xf0c1, 0xf0c2, 0xf0c3, 0xf0c4, 0xf0c5, 0xf0c6, 0xf0c7, + 0xf0c8, 0xf0c9, 0xf0ca, 0xf0cb, 0xf0cc, 0xf0cd, 0xf0ce, 0xf0cf, + 0xf0d0, 0xf0d1, 0xf0d2, 0xf0d3, 0xf0d4, 0xf0d5, 0xf0d6, 0xf0d7, + 0xf0d8, 0xf0d9, 0xf0da, 0xf0db, 0xf0dc, 0xf0dd, 0xf0de, 0xf0df, + 0xf0e0, 0xf0e1, 0xf0e2, 0xf0e3, 0xf0e4, 0xf0e5, 0xf0e6, 0xf0e7, + 0xf0e8, 0xf0e9, 0xf0ea, 0xf0eb, 0xf0ec, 0xf0ed, 0xf0ee, 0xf0ef, + 0xf0f0, 0xf0f1, 0xf0f2, 0xf0f3, 0xf0f4, 0xf0f5, 0xf0f6, 0xf0f7, + 0xf0f8, 0xf0f9, 0xf0fa, 0xf0fb, 0xf0fc, 0xf0fd, 0xf0fe, 0xf0ff, + 0xf100, 0xf101, 0xf102, 0xf103, 0xf104, 0xf105, 0xf106, 0xf107, + 0xf108, 0xf109, 0xf10a, 0xf10b, 0xf10c, 0xf10d, 0xf10e, 0xf10f, + 0xf110, 0xf111, 0xf112, 0xf113, 0xf114, 0xf115, 0xf116, 0xf117, + 0xf118, 0xf119, 0xf11a, 0xf11b, 0xf11c, 0xf11d, 0xf11e, 0xf11f, + 0xf120, 0xf121, 0xf122, 0xf123, 0xf124, 0xf125, 0xf126, 0xf127, + 0xf128, 0xf129, 0xf12a, 0xf12b, 0xf12c, 0xf12d, 0xf12e, 0xf12f, + 0xf130, 0xf131, 0xf132, 0xf133, 0xf134, 0xf135, 0xf136, 0xf137, + 0xf138, 0xf139, 0xf13a, 0xf13b, 0xf13c, 0xf13d, 0xf13e, 0xf13f, + 0xf140, 0xf141, 0xf142, 0xf143, 0xf144, 0xf145, 0xf146, 0xf147, + 0xf148, 0xf149, 0xf14a, 0xf14b, 0xf14c, 0xf14d, 0xf14e, 0xf14f, + 0xf150, 0xf151, 0xf152, 0xf153, 0xf154, 0xf155, 0xf156, 0xf157, + 0xf158, 0xf159, 0xf15a, 0xf15b, 0xf15c, 0xf15d, 0xf15e, 0xf15f, + 0xf160, 0xf161, 0xf162, 0xf163, 0xf164, 0xf165, 0xf166, 0xf167, + 0xf168, 0xf169, 0xf16a, 0xf16b, 0xf16c, 0xf16d, 0xf16e, 0xf16f, + 0xf170, 0xf171, 0xf172, 0xf173, 0xf174, 0xf175, 0xf176, 0xf177, + 0xf178, 0xf179, 0xf17a, 0xf17b, 0xf17c, 0xf17d, 0xf17e, 0xf17f, + 0xf180, 0xf181, 0xf182, 0xf183, 0xf184, 0xf185, 0xf186, 0xf187, + 0xf188, 0xf189, 0xf18a, 0xf18b, 0xf18c, 0xf18d, 0xf18e, 0xf18f, + 0xf190, 0xf191, 0xf192, 0xf193, 0xf194, 0xf195, 0xf196, 0xf197, + 0xf198, 0xf199, 0xf19a, 0xf19b, 0xf19c, 0xf19d, 0xf19e, 0xf19f, + 0xf1a0, 0xf1a1, 0xf1a2, 0xf1a3, 0xf1a4, 0xf1a5, 0xf1a6, 0xf1a7, + 0xf1a8, 0xf1a9, 0xf1aa, 0xf1ab, 0xf1ac, 0xf1ad, 0xf1ae, 0xf1af, + 0xf1b0, 0xf1b1, 0xf1b2, 0xf1b3, 0xf1b4, 0xf1b5, 0xf1b6, 0xf1b7, + 0xf1b8, 0xf1b9, 0xf1ba, 0xf1bb, 0xf1bc, 0xf1bd, 0xf1be, 0xf1bf, + 0xf1c0, 0xf1c1, 0xf1c2, 0xf1c3, 0xf1c4, 0xf1c5, 0xf1c6, 0xf1c7, + 0xf1c8, 0xf1c9, 0xf1ca, 0xf1cb, 0xf1cc, 0xf1cd, 0xf1ce, 0xf1cf, + 0xf1d0, 0xf1d1, 0xf1d2, 0xf1d3, 0xf1d4, 0xf1d5, 0xf1d6, 0xf1d7, + 0xf1d8, 0xf1d9, 0xf1da, 0xf1db, 0xf1dc, 0xf1dd, 0xf1de, 0xf1df, + 0xf1e0, 0xf1e1, 0xf1e2, 0xf1e3, 0xf1e4, 0xf1e5, 0xf1e6, 0xf1e7, + 0xf1e8, 0xf1e9, 0xf1ea, 0xf1eb, 0xf1ec, 0xf1ed, 0xf1ee, 0xf1ef, + 0xf1f0, 0xf1f1, 0xf1f2, 0xf1f3, 0xf1f4, 0xf1f5, 0xf1f6, 0xf1f7, + 0xf1f8, 0xf1f9, 0xf1fa, 0xf1fb, 0xf1fc, 0xf1fd, 0xf1fe, 0xf1ff, + 0xf200, 0xf201, 0xf202, 0xf203, 0xf204, 0xf205, 0xf206, 0xf207, + 0xf208, 0xf209, 0xf20a, 0xf20b, 0xf20c, 0xf20d, 0xf20e, 0xf20f, + 0xf210, 0xf211, 0xf212, 0xf213, 0xf214, 0xf215, 0xf216, 0xf217, + 0xf218, 0xf219, 0xf21a, 0xf21b, 0xf21c, 0xf21d, 0xf21e, 0xf21f, + 0xf220, 0xf221, 0xf222, 0xf223, 0xf224, 0xf225, 0xf226, 0xf227, + 0xf228, 0xf229, 0xf22a, 0xf22b, 0xf22c, 0xf22d, 0xf22e, 0xf22f, + 0xf230, 0xf231, 0xf232, 0xf233, 0xf234, 0xf235, 0xf236, 0xf237, + 0xf238, 0xf239, 0xf23a, 0xf23b, 0xf23c, 0xf23d, 0xf23e, 0xf23f, + 0xf240, 0xf241, 0xf242, 0xf243, 0xf244, 0xf245, 0xf246, 0xf247, + 0xf248, 0xf249, 0xf24a, 0xf24b, 0xf24c, 0xf24d, 0xf24e, 0xf24f, + 0xf250, 0xf251, 0xf252, 0xf253, 0xf254, 0xf255, 0xf256, 0xf257, + 0xf258, 0xf259, 0xf25a, 0xf25b, 0xf25c, 0xf25d, 0xf25e, 0xf25f, + 0xf260, 0xf261, 0xf262, 0xf263, 0xf264, 0xf265, 0xf266, 0xf267, + 0xf268, 0xf269, 0xf26a, 0xf26b, 0xf26c, 0xf26d, 0xf26e, 0xf26f, + 0xf270, 0xf271, 0xf272, 0xf273, 0xf274, 0xf275, 0xf276, 0xf277, + 0xf278, 0xf279, 0xf27a, 0xf27b, 0xf27c, 0xf27d, 0xf27e, 0xf27f, + 0xf280, 0xf281, 0xf282, 0xf283, 0xf284, 0xf285, 0xf286, 0xf287, + 0xf288, 0xf289, 0xf28a, 0xf28b, 0xf28c, 0xf28d, 0xf28e, 0xf28f, + 0xf290, 0xf291, 0xf292, 0xf293, 0xf294, 0xf295, 0xf296, 0xf297, + 0xf298, 0xf299, 0xf29a, 0xf29b, 0xf29c, 0xf29d, 0xf29e, 0xf29f, + 0xf2a0, 0xf2a1, 0xf2a2, 0xf2a3, 0xf2a4, 0xf2a5, 0xf2a6, 0xf2a7, + 0xf2a8, 0xf2a9, 0xf2aa, 0xf2ab, 0xf2ac, 0xf2ad, 0xf2ae, 0xf2af, + 0xf2b0, 0xf2b1, 0xf2b2, 0xf2b3, 0xf2b4, 0xf2b5, 0xf2b6, 0xf2b7, + 0xf2b8, 0xf2b9, 0xf2ba, 0xf2bb, 0xf2bc, 0xf2bd, 0xf2be, 0xf2bf, + 0xf2c0, 0xf2c1, 0xf2c2, 0xf2c3, 0xf2c4, 0xf2c5, 0xf2c6, 0xf2c7, + 0xf2c8, 0xf2c9, 0xf2ca, 0xf2cb, 0xf2cc, 0xf2cd, 0xf2ce, 0xf2cf, + 0xf2d0, 0xf2d1, 0xf2d2, 0xf2d3, 0xf2d4, 0xf2d5, 0xf2d6, 0xf2d7, + 0xf2d8, 0xf2d9, 0xf2da, 0xf2db, 0xf2dc, 0xf2dd, 0xf2de, 0xf2df, + 0xf2e0, 0xf2e1, 0xf2e2, 0xf2e3, 0xf2e4, 0xf2e5, 0xf2e6, 0xf2e7, + 0xf2e8, 0xf2e9, 0xf2ea, 0xf2eb, 0xf2ec, 0xf2ed, 0xf2ee, 0xf2ef, + 0xf2f0, 0xf2f1, 0xf2f2, 0xf2f3, 0xf2f4, 0xf2f5, 0xf2f6, 0xf2f7, + 0xf2f8, 0xf2f9, 0xf2fa, 0xf2fb, 0xf2fc, 0xf2fd, 0xf2fe, 0xf2ff, + 0xf300, 0xf301, 0xf302, 0xf303, 0xf304, 0xf305, 0xf306, 0xf307, + 0xf308, 0xf309, 0xf30a, 0xf30b, 0xf30c, 0xf30d, 0xf30e, 0xf30f, + 0xf310, 0xf311, 0xf312, 0xf313, 0xf314, 0xf315, 0xf316, 0xf317, + 0xf318, 0xf319, 0xf31a, 0xf31b, 0xf31c, 0xf31d, 0xf31e, 0xf31f, + 0xf320, 0xf321, 0xf322, 0xf323, 0xf324, 0xf325, 0xf326, 0xf327, + 0xf328, 0xf329, 0xf32a, 0xf32b, 0xf32c, 0xf32d, 0xf32e, 0xf32f, + 0xf330, 0xf331, 0xf332, 0xf333, 0xf334, 0xf335, 0xf336, 0xf337, + 0xf338, 0xf339, 0xf33a, 0xf33b, 0xf33c, 0xf33d, 0xf33e, 0xf33f, + 0xf340, 0xf341, 0xf342, 0xf343, 0xf344, 0xf345, 0xf346, 0xf347, + 0xf348, 0xf349, 0xf34a, 0xf34b, 0xf34c, 0xf34d, 0xf34e, 0xf34f, + 0xf350, 0xf351, 0xf352, 0xf353, 0xf354, 0xf355, 0xf356, 0xf357, + 0xf358, 0xf359, 0xf35a, 0xf35b, 0xf35c, 0xf35d, 0xf35e, 0xf35f, + 0xf360, 0xf361, 0xf362, 0xf363, 0xf364, 0xf365, 0xf366, 0xf367, + 0xf368, 0xf369, 0xf36a, 0xf36b, 0xf36c, 0xf36d, 0xf36e, 0xf36f, + 0xf370, 0xf371, 0xf372, 0xf373, 0xf374, 0xf375, 0xf376, 0xf377, + 0xf378, 0xf379, 0xf37a, 0xf37b, 0xf37c, 0xf37d, 0xf37e, 0xf37f, + 0xf380, 0xf381, 0xf382, 0xf383, 0xf384, 0xf385, 0xf386, 0xf387, + 0xf388, 0xf389, 0xf38a, 0xf38b, 0xf38c, 0xf38d, 0xf38e, 0xf38f, + 0xf390, 0xf391, 0xf392, 0xf393, 0xf394, 0xf395, 0xf396, 0xf397, + 0xf398, 0xf399, 0xf39a, 0xf39b, 0xf39c, 0xf39d, 0xf39e, 0xf39f, + 0xf3a0, 0xf3a1, 0xf3a2, 0xf3a3, 0xf3a4, 0xf3a5, 0xf3a6, 0xf3a7, + 0xf3a8, 0xf3a9, 0xf3aa, 0xf3ab, 0xf3ac, 0xf3ad, 0xf3ae, 0xf3af, + 0xf3b0, 0xf3b1, 0xf3b2, 0xf3b3, 0xf3b4, 0xf3b5, 0xf3b6, 0xf3b7, + 0xf3b8, 0xf3b9, 0xf3ba, 0xf3bb, 0xf3bc, 0xf3bd, 0xf3be, 0xf3bf, + 0xf3c0, 0xf3c1, 0xf3c2, 0xf3c3, 0xf3c4, 0xf3c5, 0xf3c6, 0xf3c7, + 0xf3c8, 0xf3c9, 0xf3ca, 0xf3cb, 0xf3cc, 0xf3cd, 0xf3ce, 0xf3cf, + 0xf3d0, 0xf3d1, 0xf3d2, 0xf3d3, 0xf3d4, 0xf3d5, 0xf3d6, 0xf3d7, + 0xf3d8, 0xf3d9, 0xf3da, 0xf3db, 0xf3dc, 0xf3dd, 0xf3de, 0xf3df, + 0xf3e0, 0xf3e1, 0xf3e2, 0xf3e3, 0xf3e4, 0xf3e5, 0xf3e6, 0xf3e7, + 0xf3e8, 0xf3e9, 0xf3ea, 0xf3eb, 0xf3ec, 0xf3ed, 0xf3ee, 0xf3ef, + 0xf3f0, 0xf3f1, 0xf3f2, 0xf3f3, 0xf3f4, 0xf3f5, 0xf3f6, 0xf3f7, + 0xf3f8, 0xf3f9, 0xf3fa, 0xf3fb, 0xf3fc, 0xf3fd, 0xf3fe, 0xf3ff, + 0xf400, 0xf401, 0xf402, 0xf403, 0xf404, 0xf405, 0xf406, 0xf407, + 0xf408, 0xf409, 0xf40a, 0xf40b, 0xf40c, 0xf40d, 0xf40e, 0xf40f, + 0xf410, 0xf411, 0xf412, 0xf413, 0xf414, 0xf415, 0xf416, 0xf417, + 0xf418, 0xf419, 0xf41a, 0xf41b, 0xf41c, 0xf41d, 0xf41e, 0xf41f, + 0xf420, 0xf421, 0xf422, 0xf423, 0xf424, 0xf425, 0xf426, 0xf427, + 0xf428, 0xf429, 0xf42a, 0xf42b, 0xf42c, 0xf42d, 0xf42e, 0xf42f, + 0xf430, 0xf431, 0xf432, 0xf433, 0xf434, 0xf435, 0xf436, 0xf437, + 0xf438, 0xf439, 0xf43a, 0xf43b, 0xf43c, 0xf43d, 0xf43e, 0xf43f, + 0xf440, 0xf441, 0xf442, 0xf443, 0xf444, 0xf445, 0xf446, 0xf447, + 0xf448, 0xf449, 0xf44a, 0xf44b, 0xf44c, 0xf44d, 0xf44e, 0xf44f, + 0xf450, 0xf451, 0xf452, 0xf453, 0xf454, 0xf455, 0xf456, 0xf457, + 0xf458, 0xf459, 0xf45a, 0xf45b, 0xf45c, 0xf45d, 0xf45e, 0xf45f, + 0xf460, 0xf461, 0xf462, 0xf463, 0xf464, 0xf465, 0xf466, 0xf467, + 0xf468, 0xf469, 0xf46a, 0xf46b, 0xf46c, 0xf46d, 0xf46e, 0xf46f, + 0xf470, 0xf471, 0xf472, 0xf473, 0xf474, 0xf475, 0xf476, 0xf477, + 0xf478, 0xf479, 0xf47a, 0xf47b, 0xf47c, 0xf47d, 0xf47e, 0xf47f, + 0xf480, 0xf481, 0xf482, 0xf483, 0xf484, 0xf485, 0xf486, 0xf487, + 0xf488, 0xf489, 0xf48a, 0xf48b, 0xf48c, 0xf48d, 0xf48e, 0xf48f, + 0xf490, 0xf491, 0xf492, 0xf493, 0xf494, 0xf495, 0xf496, 0xf497, + 0xf498, 0xf499, 0xf49a, 0xf49b, 0xf49c, 0xf49d, 0xf49e, 0xf49f, + 0xf4a0, 0xf4a1, 0xf4a2, 0xf4a3, 0xf4a4, 0xf4a5, 0xf4a6, 0xf4a7, + 0xf4a8, 0xf4a9, 0xf4aa, 0xf4ab, 0xf4ac, 0xf4ad, 0xf4ae, 0xf4af, + 0xf4b0, 0xf4b1, 0xf4b2, 0xf4b3, 0xf4b4, 0xf4b5, 0xf4b6, 0xf4b7, + 0xf4b8, 0xf4b9, 0xf4ba, 0xf4bb, 0xf4bc, 0xf4bd, 0xf4be, 0xf4bf, + 0xf4c0, 0xf4c1, 0xf4c2, 0xf4c3, 0xf4c4, 0xf4c5, 0xf4c6, 0xf4c7, + 0xf4c8, 0xf4c9, 0xf4ca, 0xf4cb, 0xf4cc, 0xf4cd, 0xf4ce, 0xf4cf, + 0xf4d0, 0xf4d1, 0xf4d2, 0xf4d3, 0xf4d4, 0xf4d5, 0xf4d6, 0xf4d7, + 0xf4d8, 0xf4d9, 0xf4da, 0xf4db, 0xf4dc, 0xf4dd, 0xf4de, 0xf4df, + 0xf4e0, 0xf4e1, 0xf4e2, 0xf4e3, 0xf4e4, 0xf4e5, 0xf4e6, 0xf4e7, + 0xf4e8, 0xf4e9, 0xf4ea, 0xf4eb, 0xf4ec, 0xf4ed, 0xf4ee, 0xf4ef, + 0xf4f0, 0xf4f1, 0xf4f2, 0xf4f3, 0xf4f4, 0xf4f5, 0xf4f6, 0xf4f7, + 0xf4f8, 0xf4f9, 0xf4fa, 0xf4fb, 0xf4fc, 0xf4fd, 0xf4fe, 0xf4ff, + 0xf500, 0xf501, 0xf502, 0xf503, 0xf504, 0xf505, 0xf506, 0xf507, + 0xf508, 0xf509, 0xf50a, 0xf50b, 0xf50c, 0xf50d, 0xf50e, 0xf50f, + 0xf510, 0xf511, 0xf512, 0xf513, 0xf514, 0xf515, 0xf516, 0xf517, + 0xf518, 0xf519, 0xf51a, 0xf51b, 0xf51c, 0xf51d, 0xf51e, 0xf51f, + 0xf520, 0xf521, 0xf522, 0xf523, 0xf524, 0xf525, 0xf526, 0xf527, + 0xf528, 0xf529, 0xf52a, 0xf52b, 0xf52c, 0xf52d, 0xf52e, 0xf52f, + 0xf530, 0xf531, 0xf532, 0xf533, 0xf534, 0xf535, 0xf536, 0xf537, + 0xf538, 0xf539, 0xf53a, 0xf53b, 0xf53c, 0xf53d, 0xf53e, 0xf53f, + 0xf540, 0xf541, 0xf542, 0xf543, 0xf544, 0xf545, 0xf546, 0xf547, + 0xf548, 0xf549, 0xf54a, 0xf54b, 0xf54c, 0xf54d, 0xf54e, 0xf54f, + 0xf550, 0xf551, 0xf552, 0xf553, 0xf554, 0xf555, 0xf556, 0xf557, + 0xf558, 0xf559, 0xf55a, 0xf55b, 0xf55c, 0xf55d, 0xf55e, 0xf55f, + 0xf560, 0xf561, 0xf562, 0xf563, 0xf564, 0xf565, 0xf566, 0xf567, + 0xf568, 0xf569, 0xf56a, 0xf56b, 0xf56c, 0xf56d, 0xf56e, 0xf56f, + 0xf570, 0xf571, 0xf572, 0xf573, 0xf574, 0xf575, 0xf576, 0xf577, + 0xf578, 0xf579, 0xf57a, 0xf57b, 0xf57c, 0xf57d, 0xf57e, 0xf57f, + 0xf580, 0xf581, 0xf582, 0xf583, 0xf584, 0xf585, 0xf586, 0xf587, + 0xf588, 0xf589, 0xf58a, 0xf58b, 0xf58c, 0xf58d, 0xf58e, 0xf58f, + 0xf590, 0xf591, 0xf592, 0xf593, 0xf594, 0xf595, 0xf596, 0xf597, + 0xf598, 0xf599, 0xf59a, 0xf59b, 0xf59c, 0xf59d, 0xf59e, 0xf59f, + 0xf5a0, 0xf5a1, 0xf5a2, 0xf5a3, 0xf5a4, 0xf5a5, 0xf5a6, 0xf5a7, + 0xf5a8, 0xf5a9, 0xf5aa, 0xf5ab, 0xf5ac, 0xf5ad, 0xf5ae, 0xf5af, + 0xf5b0, 0xf5b1, 0xf5b2, 0xf5b3, 0xf5b4, 0xf5b5, 0xf5b6, 0xf5b7, + 0xf5b8, 0xf5b9, 0xf5ba, 0xf5bb, 0xf5bc, 0xf5bd, 0xf5be, 0xf5bf, + 0xf5c0, 0xf5c1, 0xf5c2, 0xf5c3, 0xf5c4, 0xf5c5, 0xf5c6, 0xf5c7, + 0xf5c8, 0xf5c9, 0xf5ca, 0xf5cb, 0xf5cc, 0xf5cd, 0xf5ce, 0xf5cf, + 0xf5d0, 0xf5d1, 0xf5d2, 0xf5d3, 0xf5d4, 0xf5d5, 0xf5d6, 0xf5d7, + 0xf5d8, 0xf5d9, 0xf5da, 0xf5db, 0xf5dc, 0xf5dd, 0xf5de, 0xf5df, + 0xf5e0, 0xf5e1, 0xf5e2, 0xf5e3, 0xf5e4, 0xf5e5, 0xf5e6, 0xf5e7, + 0xf5e8, 0xf5e9, 0xf5ea, 0xf5eb, 0xf5ec, 0xf5ed, 0xf5ee, 0xf5ef, + 0xf5f0, 0xf5f1, 0xf5f2, 0xf5f3, 0xf5f4, 0xf5f5, 0xf5f6, 0xf5f7, + 0xf5f8, 0xf5f9, 0xf5fa, 0xf5fb, 0xf5fc, 0xf5fd, 0xf5fe, 0xf5ff, + 0xf600, 0xf601, 0xf602, 0xf603, 0xf604, 0xf605, 0xf606, 0xf607, + 0xf608, 0xf609, 0xf60a, 0xf60b, 0xf60c, 0xf60d, 0xf60e, 0xf60f, + 0xf610, 0xf611, 0xf612, 0xf613, 0xf614, 0xf615, 0xf616, 0xf617, + 0xf618, 0xf619, 0xf61a, 0xf61b, 0xf61c, 0xf61d, 0xf61e, 0xf61f, + 0xf620, 0xf621, 0xf622, 0xf623, 0xf624, 0xf625, 0xf626, 0xf627, + 0xf628, 0xf629, 0xf62a, 0xf62b, 0xf62c, 0xf62d, 0xf62e, 0xf62f, + 0xf630, 0xf631, 0xf632, 0xf633, 0xf634, 0xf635, 0xf636, 0xf637, + 0xf638, 0xf639, 0xf63a, 0xf63b, 0xf63c, 0xf63d, 0xf63e, 0xf63f, + 0xf640, 0xf641, 0xf642, 0xf643, 0xf644, 0xf645, 0xf646, 0xf647, + 0xf648, 0xf649, 0xf64a, 0xf64b, 0xf64c, 0xf64d, 0xf64e, 0xf64f, + 0xf650, 0xf651, 0xf652, 0xf653, 0xf654, 0xf655, 0xf656, 0xf657, + 0xf658, 0xf659, 0xf65a, 0xf65b, 0xf65c, 0xf65d, 0xf65e, 0xf65f, + 0xf660, 0xf661, 0xf662, 0xf663, 0xf664, 0xf665, 0xf666, 0xf667, + 0xf668, 0xf669, 0xf66a, 0xf66b, 0xf66c, 0xf66d, 0xf66e, 0xf66f, + 0xf670, 0xf671, 0xf672, 0xf673, 0xf674, 0xf675, 0xf676, 0xf677, + 0xf678, 0xf679, 0xf67a, 0xf67b, 0xf67c, 0xf67d, 0xf67e, 0xf67f, + 0xf680, 0xf681, 0xf682, 0xf683, 0xf684, 0xf685, 0xf686, 0xf687, + 0xf688, 0xf689, 0xf68a, 0xf68b, 0xf68c, 0xf68d, 0xf68e, 0xf68f, + 0xf690, 0xf691, 0xf692, 0xf693, 0xf694, 0xf695, 0xf696, 0xf697, + 0xf698, 0xf699, 0xf69a, 0xf69b, 0xf69c, 0xf69d, 0xf69e, 0xf69f, + 0xf6a0, 0xf6a1, 0xf6a2, 0xf6a3, 0xf6a4, 0xf6a5, 0xf6a6, 0xf6a7, + 0xf6a8, 0xf6a9, 0xf6aa, 0xf6ab, 0xf6ac, 0xf6ad, 0xf6ae, 0xf6af, + 0xf6b0, 0xf6b1, 0xf6b2, 0xf6b3, 0xf6b4, 0xf6b5, 0xf6b6, 0xf6b7, + 0xf6b8, 0xf6b9, 0xf6ba, 0xf6bb, 0xf6bc, 0xf6bd, 0xf6be, 0xf6bf, + 0xf6c0, 0xf6c1, 0xf6c2, 0xf6c3, 0xf6c4, 0xf6c5, 0xf6c6, 0xf6c7, + 0xf6c8, 0xf6c9, 0xf6ca, 0xf6cb, 0xf6cc, 0xf6cd, 0xf6ce, 0xf6cf, + 0xf6d0, 0xf6d1, 0xf6d2, 0xf6d3, 0xf6d4, 0xf6d5, 0xf6d6, 0xf6d7, + 0xf6d8, 0xf6d9, 0xf6da, 0xf6db, 0xf6dc, 0xf6dd, 0xf6de, 0xf6df, + 0xf6e0, 0xf6e1, 0xf6e2, 0xf6e3, 0xf6e4, 0xf6e5, 0xf6e6, 0xf6e7, + 0xf6e8, 0xf6e9, 0xf6ea, 0xf6eb, 0xf6ec, 0xf6ed, 0xf6ee, 0xf6ef, + 0xf6f0, 0xf6f1, 0xf6f2, 0xf6f3, 0xf6f4, 0xf6f5, 0xf6f6, 0xf6f7, + 0xf6f8, 0xf6f9, 0xf6fa, 0xf6fb, 0xf6fc, 0xf6fd, 0xf6fe, 0xf6ff, + 0xf700, 0xf701, 0xf702, 0xf703, 0xf704, 0xf705, 0xf706, 0xf707, + 0xf708, 0xf709, 0xf70a, 0xf70b, 0xf70c, 0xf70d, 0xf70e, 0xf70f, + 0xf710, 0xf711, 0xf712, 0xf713, 0xf714, 0xf715, 0xf716, 0xf717, + 0xf718, 0xf719, 0xf71a, 0xf71b, 0xf71c, 0xf71d, 0xf71e, 0xf71f, + 0xf720, 0xf721, 0xf722, 0xf723, 0xf724, 0xf725, 0xf726, 0xf727, + 0xf728, 0xf729, 0xf72a, 0xf72b, 0xf72c, 0xf72d, 0xf72e, 0xf72f, + 0xf730, 0xf731, 0xf732, 0xf733, 0xf734, 0xf735, 0xf736, 0xf737, + 0xf738, 0xf739, 0xf73a, 0xf73b, 0xf73c, 0xf73d, 0xf73e, 0xf73f, + 0xf740, 0xf741, 0xf742, 0xf743, 0xf744, 0xf745, 0xf746, 0xf747, + 0xf748, 0xf749, 0xf74a, 0xf74b, 0xf74c, 0xf74d, 0xf74e, 0xf74f, + 0xf750, 0xf751, 0xf752, 0xf753, 0xf754, 0xf755, 0xf756, 0xf757, + 0xf758, 0xf759, 0xf75a, 0xf75b, 0xf75c, 0xf75d, 0xf75e, 0xf75f, + 0xf760, 0xf761, 0xf762, 0xf763, 0xf764, 0xf765, 0xf766, 0xf767, + 0xf768, 0xf769, 0xf76a, 0xf76b, 0xf76c, 0xf76d, 0xf76e, 0xf76f, + 0xf770, 0xf771, 0xf772, 0xf773, 0xf774, 0xf775, 0xf776, 0xf777, + 0xf778, 0xf779, 0xf77a, 0xf77b, 0xf77c, 0xf77d, 0xf77e, 0xf77f, + 0xf780, 0xf781, 0xf782, 0xf783, 0xf784, 0xf785, 0xf786, 0xf787, + 0xf788, 0xf789, 0xf78a, 0xf78b, 0xf78c, 0xf78d, 0xf78e, 0xf78f, + 0xf790, 0xf791, 0xf792, 0xf793, 0xf794, 0xf795, 0xf796, 0xf797, + 0xf798, 0xf799, 0xf79a, 0xf79b, 0xf79c, 0xf79d, 0xf79e, 0xf79f, + 0xf7a0, 0xf7a1, 0xf7a2, 0xf7a3, 0xf7a4, 0xf7a5, 0xf7a6, 0xf7a7, + 0xf7a8, 0xf7a9, 0xf7aa, 0xf7ab, 0xf7ac, 0xf7ad, 0xf7ae, 0xf7af, + 0xf7b0, 0xf7b1, 0xf7b2, 0xf7b3, 0xf7b4, 0xf7b5, 0xf7b6, 0xf7b7, + 0xf7b8, 0xf7b9, 0xf7ba, 0xf7bb, 0xf7bc, 0xf7bd, 0xf7be, 0xf7bf, + 0xf7c0, 0xf7c1, 0xf7c2, 0xf7c3, 0xf7c4, 0xf7c5, 0xf7c6, 0xf7c7, + 0xf7c8, 0xf7c9, 0xf7ca, 0xf7cb, 0xf7cc, 0xf7cd, 0xf7ce, 0xf7cf, + 0xf7d0, 0xf7d1, 0xf7d2, 0xf7d3, 0xf7d4, 0xf7d5, 0xf7d6, 0xf7d7, + 0xf7d8, 0xf7d9, 0xf7da, 0xf7db, 0xf7dc, 0xf7dd, 0xf7de, 0xf7df, + 0xf7e0, 0xf7e1, 0xf7e2, 0xf7e3, 0xf7e4, 0xf7e5, 0xf7e6, 0xf7e7, + 0xf7e8, 0xf7e9, 0xf7ea, 0xf7eb, 0xf7ec, 0xf7ed, 0xf7ee, 0xf7ef, + 0xf7f0, 0xf7f1, 0xf7f2, 0xf7f3, 0xf7f4, 0xf7f5, 0xf7f6, 0xf7f7, + 0xf7f8, 0xf7f9, 0xf7fa, 0xf7fb, 0xf7fc, 0xf7fd, 0xf7fe, 0xf7ff, + 0xf800, 0xf801, 0xf802, 0xf803, 0xf804, 0xf805, 0xf806, 0xf807, + 0xf808, 0xf809, 0xf80a, 0xf80b, 0xf80c, 0xf80d, 0xf80e, 0xf80f, + 0xf810, 0xf811, 0xf812, 0xf813, 0xf814, 0xf815, 0xf816, 0xf817, + 0xf818, 0xf819, 0xf81a, 0xf81b, 0xf81c, 0xf81d, 0xf81e, 0xf81f, + 0xf820, 0xf821, 0xf822, 0xf823, 0xf824, 0xf825, 0xf826, 0xf827, + 0xf828, 0xf829, 0xf82a, 0xf82b, 0xf82c, 0xf82d, 0xf82e, 0xf82f, + 0xf830, 0xf831, 0xf832, 0xf833, 0xf834, 0xf835, 0xf836, 0xf837, + 0xf838, 0xf839, 0xf83a, 0xf83b, 0xf83c, 0xf83d, 0xf83e, 0xf83f, + 0xf840, 0xf841, 0xf842, 0xf843, 0xf844, 0xf845, 0xf846, 0xf847, + 0xf848, 0xf849, 0xf84a, 0xf84b, 0xf84c, 0xf84d, 0xf84e, 0xf84f, + 0xf850, 0xf851, 0xf852, 0xf853, 0xf854, 0xf855, 0xf856, 0xf857, + 0xf858, 0xf859, 0xf85a, 0xf85b, 0xf85c, 0xf85d, 0xf85e, 0xf85f, + 0xf860, 0xf861, 0xf862, 0xf863, 0xf864, 0xf865, 0xf866, 0xf867, + 0xf868, 0xf869, 0xf86a, 0xf86b, 0xf86c, 0xf86d, 0xf86e, 0xf86f, + 0xf870, 0xf871, 0xf872, 0xf873, 0xf874, 0xf875, 0xf876, 0xf877, + 0xf878, 0xf879, 0xf87a, 0xf87b, 0xf87c, 0xf87d, 0xf87e, 0xf87f, + 0xf880, 0xf881, 0xf882, 0xf883, 0xf884, 0xf885, 0xf886, 0xf887, + 0xf888, 0xf889, 0xf88a, 0xf88b, 0xf88c, 0xf88d, 0xf88e, 0xf88f, + 0xf890, 0xf891, 0xf892, 0xf893, 0xf894, 0xf895, 0xf896, 0xf897, + 0xf898, 0xf899, 0xf89a, 0xf89b, 0xf89c, 0xf89d, 0xf89e, 0xf89f, + 0xf8a0, 0xf8a1, 0xf8a2, 0xf8a3, 0xf8a4, 0xf8a5, 0xf8a6, 0xf8a7, + 0xf8a8, 0xf8a9, 0xf8aa, 0xf8ab, 0xf8ac, 0xf8ad, 0xf8ae, 0xf8af, + 0xf8b0, 0xf8b1, 0xf8b2, 0xf8b3, 0xf8b4, 0xf8b5, 0xf8b6, 0xf8b7, + 0xf8b8, 0xf8b9, 0xf8ba, 0xf8bb, 0xf8bc, 0xf8bd, 0xf8be, 0xf8bf, + 0xf8c0, 0xf8c1, 0xf8c2, 0xf8c3, 0xf8c4, 0xf8c5, 0xf8c6, 0xf8c7, + 0xf8c8, 0xf8c9, 0xf8ca, 0xf8cb, 0xf8cc, 0xf8cd, 0xf8ce, 0xf8cf, + 0xf8d0, 0xf8d1, 0xf8d2, 0xf8d3, 0xf8d4, 0xf8d5, 0xf8d6, 0xf8d7, + 0xf8d8, 0xf8d9, 0xf8da, 0xf8db, 0xf8dc, 0xf8dd, 0xf8de, 0xf8df, + 0xf8e0, 0xf8e1, 0xf8e2, 0xf8e3, 0xf8e4, 0xf8e5, 0xf8e6, 0xf8e7, + 0xf8e8, 0xf8e9, 0xf8ea, 0xf8eb, 0xf8ec, 0xf8ed, 0xf8ee, 0xf8ef, + 0xf8f0, 0xf8f1, 0xf8f2, 0xf8f3, 0xf8f4, 0xf8f5, 0xf8f6, 0xf8f7, + 0xf8f8, 0xf8f9, 0xf8fa, 0xf8fb, 0xf8fc, 0xf8fd, 0xf8fe, 0xf8ff, + 0xf900, 0xf901, 0xf902, 0xf903, 0xf904, 0xf905, 0xf906, 0xf907, + 0xf908, 0xf909, 0xf90a, 0xf90b, 0xf90c, 0xf90d, 0xf90e, 0xf90f, + 0xf910, 0xf911, 0xf912, 0xf913, 0xf914, 0xf915, 0xf916, 0xf917, + 0xf918, 0xf919, 0xf91a, 0xf91b, 0xf91c, 0xf91d, 0xf91e, 0xf91f, + 0xf920, 0xf921, 0xf922, 0xf923, 0xf924, 0xf925, 0xf926, 0xf927, + 0xf928, 0xf929, 0xf92a, 0xf92b, 0xf92c, 0xf92d, 0xf92e, 0xf92f, + 0xf930, 0xf931, 0xf932, 0xf933, 0xf934, 0xf935, 0xf936, 0xf937, + 0xf938, 0xf939, 0xf93a, 0xf93b, 0xf93c, 0xf93d, 0xf93e, 0xf93f, + 0xf940, 0xf941, 0xf942, 0xf943, 0xf944, 0xf945, 0xf946, 0xf947, + 0xf948, 0xf949, 0xf94a, 0xf94b, 0xf94c, 0xf94d, 0xf94e, 0xf94f, + 0xf950, 0xf951, 0xf952, 0xf953, 0xf954, 0xf955, 0xf956, 0xf957, + 0xf958, 0xf959, 0xf95a, 0xf95b, 0xf95c, 0xf95d, 0xf95e, 0xf95f, + 0xf960, 0xf961, 0xf962, 0xf963, 0xf964, 0xf965, 0xf966, 0xf967, + 0xf968, 0xf969, 0xf96a, 0xf96b, 0xf96c, 0xf96d, 0xf96e, 0xf96f, + 0xf970, 0xf971, 0xf972, 0xf973, 0xf974, 0xf975, 0xf976, 0xf977, + 0xf978, 0xf979, 0xf97a, 0xf97b, 0xf97c, 0xf97d, 0xf97e, 0xf97f, + 0xf980, 0xf981, 0xf982, 0xf983, 0xf984, 0xf985, 0xf986, 0xf987, + 0xf988, 0xf989, 0xf98a, 0xf98b, 0xf98c, 0xf98d, 0xf98e, 0xf98f, + 0xf990, 0xf991, 0xf992, 0xf993, 0xf994, 0xf995, 0xf996, 0xf997, + 0xf998, 0xf999, 0xf99a, 0xf99b, 0xf99c, 0xf99d, 0xf99e, 0xf99f, + 0xf9a0, 0xf9a1, 0xf9a2, 0xf9a3, 0xf9a4, 0xf9a5, 0xf9a6, 0xf9a7, + 0xf9a8, 0xf9a9, 0xf9aa, 0xf9ab, 0xf9ac, 0xf9ad, 0xf9ae, 0xf9af, + 0xf9b0, 0xf9b1, 0xf9b2, 0xf9b3, 0xf9b4, 0xf9b5, 0xf9b6, 0xf9b7, + 0xf9b8, 0xf9b9, 0xf9ba, 0xf9bb, 0xf9bc, 0xf9bd, 0xf9be, 0xf9bf, + 0xf9c0, 0xf9c1, 0xf9c2, 0xf9c3, 0xf9c4, 0xf9c5, 0xf9c6, 0xf9c7, + 0xf9c8, 0xf9c9, 0xf9ca, 0xf9cb, 0xf9cc, 0xf9cd, 0xf9ce, 0xf9cf, + 0xf9d0, 0xf9d1, 0xf9d2, 0xf9d3, 0xf9d4, 0xf9d5, 0xf9d6, 0xf9d7, + 0xf9d8, 0xf9d9, 0xf9da, 0xf9db, 0xf9dc, 0xf9dd, 0xf9de, 0xf9df, + 0xf9e0, 0xf9e1, 0xf9e2, 0xf9e3, 0xf9e4, 0xf9e5, 0xf9e6, 0xf9e7, + 0xf9e8, 0xf9e9, 0xf9ea, 0xf9eb, 0xf9ec, 0xf9ed, 0xf9ee, 0xf9ef, + 0xf9f0, 0xf9f1, 0xf9f2, 0xf9f3, 0xf9f4, 0xf9f5, 0xf9f6, 0xf9f7, + 0xf9f8, 0xf9f9, 0xf9fa, 0xf9fb, 0xf9fc, 0xf9fd, 0xf9fe, 0xf9ff, + 0xfa00, 0xfa01, 0xfa02, 0xfa03, 0xfa04, 0xfa05, 0xfa06, 0xfa07, + 0xfa08, 0xfa09, 0xfa0a, 0xfa0b, 0xfa0c, 0xfa0d, 0xfa0e, 0xfa0f, + 0xfa10, 0xfa11, 0xfa12, 0xfa13, 0xfa14, 0xfa15, 0xfa16, 0xfa17, + 0xfa18, 0xfa19, 0xfa1a, 0xfa1b, 0xfa1c, 0xfa1d, 0xfa1e, 0xfa1f, + 0xfa20, 0xfa21, 0xfa22, 0xfa23, 0xfa24, 0xfa25, 0xfa26, 0xfa27, + 0xfa28, 0xfa29, 0xfa2a, 0xfa2b, 0xfa2c, 0xfa2d, 0x0000, 0x0000, + 0xfa30, 0xfa31, 0xfa32, 0xfa33, 0xfa34, 0xfa35, 0xfa36, 0xfa37, + 0xfa38, 0xfa39, 0xfa3a, 0xfa3b, 0xfa3c, 0xfa3d, 0xfa3e, 0xfa3f, + 0xfa40, 0xfa41, 0xfa42, 0xfa43, 0xfa44, 0xfa45, 0xfa46, 0xfa47, + 0xfa48, 0xfa49, 0xfa4a, 0xfa4b, 0xfa4c, 0xfa4d, 0xfa4e, 0xfa4f, + 0xfa50, 0xfa51, 0xfa52, 0xfa53, 0xfa54, 0xfa55, 0xfa56, 0xfa57, + 0xfa58, 0xfa59, 0xfa5a, 0xfa5b, 0xfa5c, 0xfa5d, 0xfa5e, 0xfa5f, + 0xfa60, 0xfa61, 0xfa62, 0xfa63, 0xfa64, 0xfa65, 0xfa66, 0xfa67, + 0xfa68, 0xfa69, 0xfa6a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xfa70, 0xfa71, 0xfa72, 0xfa73, 0xfa74, 0xfa75, 0xfa76, 0xfa77, + 0xfa78, 0xfa79, 0xfa7a, 0xfa7b, 0xfa7c, 0xfa7d, 0xfa7e, 0xfa7f, + 0xfa80, 0xfa81, 0xfa82, 0xfa83, 0xfa84, 0xfa85, 0xfa86, 0xfa87, + 0xfa88, 0xfa89, 0xfa8a, 0xfa8b, 0xfa8c, 0xfa8d, 0xfa8e, 0xfa8f, + 0xfa90, 0xfa91, 0xfa92, 0xfa93, 0xfa94, 0xfa95, 0xfa96, 0xfa97, + 0xfa98, 0xfa99, 0xfa9a, 0xfa9b, 0xfa9c, 0xfa9d, 0xfa9e, 0xfa9f, + 0xfaa0, 0xfaa1, 0xfaa2, 0xfaa3, 0xfaa4, 0xfaa5, 0xfaa6, 0xfaa7, + 0xfaa8, 0xfaa9, 0xfaaa, 0xfaab, 0xfaac, 0xfaad, 0xfaae, 0xfaaf, + 0xfab0, 0xfab1, 0xfab2, 0xfab3, 0xfab4, 0xfab5, 0xfab6, 0xfab7, + 0xfab8, 0xfab9, 0xfaba, 0xfabb, 0xfabc, 0xfabd, 0xfabe, 0xfabf, + 0xfac0, 0xfac1, 0xfac2, 0xfac3, 0xfac4, 0xfac5, 0xfac6, 0xfac7, + 0xfac8, 0xfac9, 0xfaca, 0xfacb, 0xfacc, 0xfacd, 0xface, 0xfacf, + 0xfad0, 0xfad1, 0xfad2, 0xfad3, 0xfad4, 0xfad5, 0xfad6, 0xfad7, + 0xfad8, 0xfad9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xfb00, 0xfb01, 0xfb02, 0xfb03, 0xfb04, 0xfb05, 0xfb06, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xfb13, 0xfb14, 0xfb15, 0xfb16, 0xfb17, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xfb1d, 0xfb1e, 0xfb1f, + 0xfb20, 0xfb21, 0xfb22, 0xfb23, 0xfb24, 0xfb25, 0xfb26, 0xfb27, + 0xfb28, 0xfb29, 0xfb2a, 0xfb2b, 0xfb2c, 0xfb2d, 0xfb2e, 0xfb2f, + 0xfb30, 0xfb31, 0xfb32, 0xfb33, 0xfb34, 0xfb35, 0xfb36, 0x0000, + 0xfb38, 0xfb39, 0xfb3a, 0xfb3b, 0xfb3c, 0x0000, 0xfb3e, 0x0000, + 0xfb40, 0xfb41, 0x0000, 0xfb43, 0xfb44, 0x0000, 0xfb46, 0xfb47, + 0xfb48, 0xfb49, 0xfb4a, 0xfb4b, 0xfb4c, 0xfb4d, 0xfb4e, 0xfb4f, + 0xfb50, 0xfb51, 0xfb52, 0xfb53, 0xfb54, 0xfb55, 0xfb56, 0xfb57, + 0xfb58, 0xfb59, 0xfb5a, 0xfb5b, 0xfb5c, 0xfb5d, 0xfb5e, 0xfb5f, + 0xfb60, 0xfb61, 0xfb62, 0xfb63, 0xfb64, 0xfb65, 0xfb66, 0xfb67, + 0xfb68, 0xfb69, 0xfb6a, 0xfb6b, 0xfb6c, 0xfb6d, 0xfb6e, 0xfb6f, + 0xfb70, 0xfb71, 0xfb72, 0xfb73, 0xfb74, 0xfb75, 0xfb76, 0xfb77, + 0xfb78, 0xfb79, 0xfb7a, 0xfb7b, 0xfb7c, 0xfb7d, 0xfb7e, 0xfb7f, + 0xfb80, 0xfb81, 0xfb82, 0xfb83, 0xfb84, 0xfb85, 0xfb86, 0xfb87, + 0xfb88, 0xfb89, 0xfb8a, 0xfb8b, 0xfb8c, 0xfb8d, 0xfb8e, 0xfb8f, + 0xfb90, 0xfb91, 0xfb92, 0xfb93, 0xfb94, 0xfb95, 0xfb96, 0xfb97, + 0xfb98, 0xfb99, 0xfb9a, 0xfb9b, 0xfb9c, 0xfb9d, 0xfb9e, 0xfb9f, + 0xfba0, 0xfba1, 0xfba2, 0xfba3, 0xfba4, 0xfba5, 0xfba6, 0xfba7, + 0xfba8, 0xfba9, 0xfbaa, 0xfbab, 0xfbac, 0xfbad, 0xfbae, 0xfbaf, + 0xfbb0, 0xfbb1, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xfbd3, 0xfbd4, 0xfbd5, 0xfbd6, 0xfbd7, + 0xfbd8, 0xfbd9, 0xfbda, 0xfbdb, 0xfbdc, 0xfbdd, 0xfbde, 0xfbdf, + 0xfbe0, 0xfbe1, 0xfbe2, 0xfbe3, 0xfbe4, 0xfbe5, 0xfbe6, 0xfbe7, + 0xfbe8, 0xfbe9, 0xfbea, 0xfbeb, 0xfbec, 0xfbed, 0xfbee, 0xfbef, + 0xfbf0, 0xfbf1, 0xfbf2, 0xfbf3, 0xfbf4, 0xfbf5, 0xfbf6, 0xfbf7, + 0xfbf8, 0xfbf9, 0xfbfa, 0xfbfb, 0xfbfc, 0xfbfd, 0xfbfe, 0xfbff, + 0xfc00, 0xfc01, 0xfc02, 0xfc03, 0xfc04, 0xfc05, 0xfc06, 0xfc07, + 0xfc08, 0xfc09, 0xfc0a, 0xfc0b, 0xfc0c, 0xfc0d, 0xfc0e, 0xfc0f, + 0xfc10, 0xfc11, 0xfc12, 0xfc13, 0xfc14, 0xfc15, 0xfc16, 0xfc17, + 0xfc18, 0xfc19, 0xfc1a, 0xfc1b, 0xfc1c, 0xfc1d, 0xfc1e, 0xfc1f, + 0xfc20, 0xfc21, 0xfc22, 0xfc23, 0xfc24, 0xfc25, 0xfc26, 0xfc27, + 0xfc28, 0xfc29, 0xfc2a, 0xfc2b, 0xfc2c, 0xfc2d, 0xfc2e, 0xfc2f, + 0xfc30, 0xfc31, 0xfc32, 0xfc33, 0xfc34, 0xfc35, 0xfc36, 0xfc37, + 0xfc38, 0xfc39, 0xfc3a, 0xfc3b, 0xfc3c, 0xfc3d, 0xfc3e, 0xfc3f, + 0xfc40, 0xfc41, 0xfc42, 0xfc43, 0xfc44, 0xfc45, 0xfc46, 0xfc47, + 0xfc48, 0xfc49, 0xfc4a, 0xfc4b, 0xfc4c, 0xfc4d, 0xfc4e, 0xfc4f, + 0xfc50, 0xfc51, 0xfc52, 0xfc53, 0xfc54, 0xfc55, 0xfc56, 0xfc57, + 0xfc58, 0xfc59, 0xfc5a, 0xfc5b, 0xfc5c, 0xfc5d, 0xfc5e, 0xfc5f, + 0xfc60, 0xfc61, 0xfc62, 0xfc63, 0xfc64, 0xfc65, 0xfc66, 0xfc67, + 0xfc68, 0xfc69, 0xfc6a, 0xfc6b, 0xfc6c, 0xfc6d, 0xfc6e, 0xfc6f, + 0xfc70, 0xfc71, 0xfc72, 0xfc73, 0xfc74, 0xfc75, 0xfc76, 0xfc77, + 0xfc78, 0xfc79, 0xfc7a, 0xfc7b, 0xfc7c, 0xfc7d, 0xfc7e, 0xfc7f, + 0xfc80, 0xfc81, 0xfc82, 0xfc83, 0xfc84, 0xfc85, 0xfc86, 0xfc87, + 0xfc88, 0xfc89, 0xfc8a, 0xfc8b, 0xfc8c, 0xfc8d, 0xfc8e, 0xfc8f, + 0xfc90, 0xfc91, 0xfc92, 0xfc93, 0xfc94, 0xfc95, 0xfc96, 0xfc97, + 0xfc98, 0xfc99, 0xfc9a, 0xfc9b, 0xfc9c, 0xfc9d, 0xfc9e, 0xfc9f, + 0xfca0, 0xfca1, 0xfca2, 0xfca3, 0xfca4, 0xfca5, 0xfca6, 0xfca7, + 0xfca8, 0xfca9, 0xfcaa, 0xfcab, 0xfcac, 0xfcad, 0xfcae, 0xfcaf, + 0xfcb0, 0xfcb1, 0xfcb2, 0xfcb3, 0xfcb4, 0xfcb5, 0xfcb6, 0xfcb7, + 0xfcb8, 0xfcb9, 0xfcba, 0xfcbb, 0xfcbc, 0xfcbd, 0xfcbe, 0xfcbf, + 0xfcc0, 0xfcc1, 0xfcc2, 0xfcc3, 0xfcc4, 0xfcc5, 0xfcc6, 0xfcc7, + 0xfcc8, 0xfcc9, 0xfcca, 0xfccb, 0xfccc, 0xfccd, 0xfcce, 0xfccf, + 0xfcd0, 0xfcd1, 0xfcd2, 0xfcd3, 0xfcd4, 0xfcd5, 0xfcd6, 0xfcd7, + 0xfcd8, 0xfcd9, 0xfcda, 0xfcdb, 0xfcdc, 0xfcdd, 0xfcde, 0xfcdf, + 0xfce0, 0xfce1, 0xfce2, 0xfce3, 0xfce4, 0xfce5, 0xfce6, 0xfce7, + 0xfce8, 0xfce9, 0xfcea, 0xfceb, 0xfcec, 0xfced, 0xfcee, 0xfcef, + 0xfcf0, 0xfcf1, 0xfcf2, 0xfcf3, 0xfcf4, 0xfcf5, 0xfcf6, 0xfcf7, + 0xfcf8, 0xfcf9, 0xfcfa, 0xfcfb, 0xfcfc, 0xfcfd, 0xfcfe, 0xfcff, + 0xfd00, 0xfd01, 0xfd02, 0xfd03, 0xfd04, 0xfd05, 0xfd06, 0xfd07, + 0xfd08, 0xfd09, 0xfd0a, 0xfd0b, 0xfd0c, 0xfd0d, 0xfd0e, 0xfd0f, + 0xfd10, 0xfd11, 0xfd12, 0xfd13, 0xfd14, 0xfd15, 0xfd16, 0xfd17, + 0xfd18, 0xfd19, 0xfd1a, 0xfd1b, 0xfd1c, 0xfd1d, 0xfd1e, 0xfd1f, + 0xfd20, 0xfd21, 0xfd22, 0xfd23, 0xfd24, 0xfd25, 0xfd26, 0xfd27, + 0xfd28, 0xfd29, 0xfd2a, 0xfd2b, 0xfd2c, 0xfd2d, 0xfd2e, 0xfd2f, + 0xfd30, 0xfd31, 0xfd32, 0xfd33, 0xfd34, 0xfd35, 0xfd36, 0xfd37, + 0xfd38, 0xfd39, 0xfd3a, 0xfd3b, 0xfd3c, 0xfd3d, 0xfd3e, 0xfd3f, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xfd50, 0xfd51, 0xfd52, 0xfd53, 0xfd54, 0xfd55, 0xfd56, 0xfd57, + 0xfd58, 0xfd59, 0xfd5a, 0xfd5b, 0xfd5c, 0xfd5d, 0xfd5e, 0xfd5f, + 0xfd60, 0xfd61, 0xfd62, 0xfd63, 0xfd64, 0xfd65, 0xfd66, 0xfd67, + 0xfd68, 0xfd69, 0xfd6a, 0xfd6b, 0xfd6c, 0xfd6d, 0xfd6e, 0xfd6f, + 0xfd70, 0xfd71, 0xfd72, 0xfd73, 0xfd74, 0xfd75, 0xfd76, 0xfd77, + 0xfd78, 0xfd79, 0xfd7a, 0xfd7b, 0xfd7c, 0xfd7d, 0xfd7e, 0xfd7f, + 0xfd80, 0xfd81, 0xfd82, 0xfd83, 0xfd84, 0xfd85, 0xfd86, 0xfd87, + 0xfd88, 0xfd89, 0xfd8a, 0xfd8b, 0xfd8c, 0xfd8d, 0xfd8e, 0xfd8f, + 0x0000, 0x0000, 0xfd92, 0xfd93, 0xfd94, 0xfd95, 0xfd96, 0xfd97, + 0xfd98, 0xfd99, 0xfd9a, 0xfd9b, 0xfd9c, 0xfd9d, 0xfd9e, 0xfd9f, + 0xfda0, 0xfda1, 0xfda2, 0xfda3, 0xfda4, 0xfda5, 0xfda6, 0xfda7, + 0xfda8, 0xfda9, 0xfdaa, 0xfdab, 0xfdac, 0xfdad, 0xfdae, 0xfdaf, + 0xfdb0, 0xfdb1, 0xfdb2, 0xfdb3, 0xfdb4, 0xfdb5, 0xfdb6, 0xfdb7, + 0xfdb8, 0xfdb9, 0xfdba, 0xfdbb, 0xfdbc, 0xfdbd, 0xfdbe, 0xfdbf, + 0xfdc0, 0xfdc1, 0xfdc2, 0xfdc3, 0xfdc4, 0xfdc5, 0xfdc6, 0xfdc7, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xfdf0, 0xfdf1, 0xfdf2, 0xfdf3, 0xfdf4, 0xfdf5, 0xfdf6, 0xfdf7, + 0xfdf8, 0xfdf9, 0xfdfa, 0xfdfb, 0xfdfc, 0xfdfd, 0x0000, 0x0000, + 0xfe00, 0xfe01, 0xfe02, 0xfe03, 0xfe04, 0xfe05, 0xfe06, 0xfe07, + 0xfe08, 0xfe09, 0xfe0a, 0xfe0b, 0xfe0c, 0xfe0d, 0xfe0e, 0xfe0f, + 0xfe10, 0xfe11, 0xfe12, 0xfe13, 0xfe14, 0xfe15, 0xfe16, 0xfe17, + 0xfe18, 0xfe19, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xfe20, 0xfe21, 0xfe22, 0xfe23, 0xfe24, 0xfe25, 0xfe26, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xfe30, 0xfe31, 0xfe32, 0xfe33, 0xfe34, 0xfe35, 0xfe36, 0xfe37, + 0xfe38, 0xfe39, 0xfe3a, 0xfe3b, 0xfe3c, 0xfe3d, 0xfe3e, 0xfe3f, + 0xfe40, 0xfe41, 0xfe42, 0xfe43, 0xfe44, 0xfe45, 0xfe46, 0xfe47, + 0xfe48, 0xfe49, 0xfe4a, 0xfe4b, 0xfe4c, 0xfe4d, 0xfe4e, 0xfe4f, + 0xfe50, 0xfe51, 0xfe52, 0x0000, 0xfe54, 0xfe55, 0xfe56, 0xfe57, + 0xfe58, 0xfe59, 0xfe5a, 0xfe5b, 0xfe5c, 0xfe5d, 0xfe5e, 0xfe5f, + 0xfe60, 0xfe61, 0xfe62, 0xfe63, 0xfe64, 0xfe65, 0xfe66, 0x0000, + 0xfe68, 0xfe69, 0xfe6a, 0xfe6b, 0x0000, 0x0000, 0x0000, 0x0000, + 0xfe70, 0xfe71, 0xfe72, 0xfe73, 0xfe74, 0x0000, 0xfe76, 0xfe77, + 0xfe78, 0xfe79, 0xfe7a, 0xfe7b, 0xfe7c, 0xfe7d, 0xfe7e, 0xfe7f, + 0xfe80, 0xfe81, 0xfe82, 0xfe83, 0xfe84, 0xfe85, 0xfe86, 0xfe87, + 0xfe88, 0xfe89, 0xfe8a, 0xfe8b, 0xfe8c, 0xfe8d, 0xfe8e, 0xfe8f, + 0xfe90, 0xfe91, 0xfe92, 0xfe93, 0xfe94, 0xfe95, 0xfe96, 0xfe97, + 0xfe98, 0xfe99, 0xfe9a, 0xfe9b, 0xfe9c, 0xfe9d, 0xfe9e, 0xfe9f, + 0xfea0, 0xfea1, 0xfea2, 0xfea3, 0xfea4, 0xfea5, 0xfea6, 0xfea7, + 0xfea8, 0xfea9, 0xfeaa, 0xfeab, 0xfeac, 0xfead, 0xfeae, 0xfeaf, + 0xfeb0, 0xfeb1, 0xfeb2, 0xfeb3, 0xfeb4, 0xfeb5, 0xfeb6, 0xfeb7, + 0xfeb8, 0xfeb9, 0xfeba, 0xfebb, 0xfebc, 0xfebd, 0xfebe, 0xfebf, + 0xfec0, 0xfec1, 0xfec2, 0xfec3, 0xfec4, 0xfec5, 0xfec6, 0xfec7, + 0xfec8, 0xfec9, 0xfeca, 0xfecb, 0xfecc, 0xfecd, 0xfece, 0xfecf, + 0xfed0, 0xfed1, 0xfed2, 0xfed3, 0xfed4, 0xfed5, 0xfed6, 0xfed7, + 0xfed8, 0xfed9, 0xfeda, 0xfedb, 0xfedc, 0xfedd, 0xfede, 0xfedf, + 0xfee0, 0xfee1, 0xfee2, 0xfee3, 0xfee4, 0xfee5, 0xfee6, 0xfee7, + 0xfee8, 0xfee9, 0xfeea, 0xfeeb, 0xfeec, 0xfeed, 0xfeee, 0xfeef, + 0xfef0, 0xfef1, 0xfef2, 0xfef3, 0xfef4, 0xfef5, 0xfef6, 0xfef7, + 0xfef8, 0xfef9, 0xfefa, 0xfefb, 0xfefc, 0x0000, 0x0000, 0xfeff, + 0x0000, 0xff01, 0xff02, 0xff03, 0xff04, 0xff05, 0xff06, 0xff07, + 0xff08, 0xff09, 0xff0a, 0xff0b, 0xff0c, 0xff0d, 0xff0e, 0xff0f, + 0xff10, 0xff11, 0xff12, 0xff13, 0xff14, 0xff15, 0xff16, 0xff17, + 0xff18, 0xff19, 0xff1a, 0xff1b, 0xff1c, 0xff1d, 0xff1e, 0xff1f, + 0xff20, 0xff21, 0xff22, 0xff23, 0xff24, 0xff25, 0xff26, 0xff27, + 0xff28, 0xff29, 0xff2a, 0xff2b, 0xff2c, 0xff2d, 0xff2e, 0xff2f, + 0xff30, 0xff31, 0xff32, 0xff33, 0xff34, 0xff35, 0xff36, 0xff37, + 0xff38, 0xff39, 0xff3a, 0xff3b, 0xff3c, 0xff3d, 0xff3e, 0xff3f, + 0xff40, 0xff21, 0xff22, 0xff23, 0xff24, 0xff25, 0xff26, 0xff27, + 0xff28, 0xff29, 0xff2a, 0xff2b, 0xff2c, 0xff2d, 0xff2e, 0xff2f, + 0xff30, 0xff31, 0xff32, 0xff33, 0xff34, 0xff35, 0xff36, 0xff37, + 0xff38, 0xff39, 0xff3a, 0xff5b, 0xff5c, 0xff5d, 0xff5e, 0xff5f, + 0xff60, 0xff61, 0xff62, 0xff63, 0xff64, 0xff65, 0xff66, 0xff67, + 0xff68, 0xff69, 0xff6a, 0xff6b, 0xff6c, 0xff6d, 0xff6e, 0xff6f, + 0xff70, 0xff71, 0xff72, 0xff73, 0xff74, 0xff75, 0xff76, 0xff77, + 0xff78, 0xff79, 0xff7a, 0xff7b, 0xff7c, 0xff7d, 0xff7e, 0xff7f, + 0xff80, 0xff81, 0xff82, 0xff83, 0xff84, 0xff85, 0xff86, 0xff87, + 0xff88, 0xff89, 0xff8a, 0xff8b, 0xff8c, 0xff8d, 0xff8e, 0xff8f, + 0xff90, 0xff91, 0xff92, 0xff93, 0xff94, 0xff95, 0xff96, 0xff97, + 0xff98, 0xff99, 0xff9a, 0xff9b, 0xff9c, 0xff9d, 0xff9e, 0xff9f, + 0xffa0, 0xffa1, 0xffa2, 0xffa3, 0xffa4, 0xffa5, 0xffa6, 0xffa7, + 0xffa8, 0xffa9, 0xffaa, 0xffab, 0xffac, 0xffad, 0xffae, 0xffaf, + 0xffb0, 0xffb1, 0xffb2, 0xffb3, 0xffb4, 0xffb5, 0xffb6, 0xffb7, + 0xffb8, 0xffb9, 0xffba, 0xffbb, 0xffbc, 0xffbd, 0xffbe, 0x0000, + 0x0000, 0x0000, 0xffc2, 0xffc3, 0xffc4, 0xffc5, 0xffc6, 0xffc7, + 0x0000, 0x0000, 0xffca, 0xffcb, 0xffcc, 0xffcd, 0xffce, 0xffcf, + 0x0000, 0x0000, 0xffd2, 0xffd3, 0xffd4, 0xffd5, 0xffd6, 0xffd7, + 0x0000, 0x0000, 0xffda, 0xffdb, 0xffdc, 0x0000, 0x0000, 0x0000, + 0xffe0, 0xffe1, 0xffe2, 0xffe3, 0xffe4, 0xffe5, 0xffe6, 0x0000, + 0xffe8, 0xffe9, 0xffea, 0xffeb, 0xffec, 0xffed, 0xffee, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0xfff9, 0xfffa, 0xfffb, 0xfffc, 0xfffd, 0x0000, 0x0000 +}; +#endif + +const unsigned int ____utype[] = { 0, + 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, + 0x00080000, 0x00020010, 0x00000010, 0x00000010, 0x00000010, 0x00000010, 0x00080000, 0x00080000, + 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, + 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, + 0x00020010, 0x00000020, 0x00000000, 0x00004000, 0x00004000, 0x00004000, 0x00000000, 0x00000000, + 0x00080000, 0x00040000, 0x00000000, 0x00001000, 0x00002020, 0x00021000, 0x00002020, 0x00102000, + 0x00000448, 0x00000448, 0x00000448, 0x00000448, 0x00000448, 0x00000448, 0x00000448, 0x00000448, + 0x00000448, 0x00000448, 0x00002020, 0x00000020, 0x00000000, 0x00000000, 0x00000000, 0x00000020, + 0x00000000, 0x00200142, 0x00200142, 0x00200142, 0x00200142, 0x00200142, 0x00200142, 0x00200102, + 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, + 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, + 0x00200102, 0x00200102, 0x00200102, 0x00080000, 0x00000000, 0x00040000, 0x00000000, 0x00000000, + 0x00000000, 0x00200141, 0x00200141, 0x00200141, 0x00200141, 0x00200141, 0x00200141, 0x00200101, + 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, + 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, + 0x00200101, 0x00200101, 0x00200101, 0x00080000, 0x00020000, 0x00040000, 0x00000000, 0x00080000, + 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00000010, 0x00080000, 0x00080000, + 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, + 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, + 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, + 0x180c2010, 0x00080000, 0x00004000, 0x00004000, 0x00004000, 0x00004000, 0x00000000, 0x00000000, + 0x10000000, 0x00000000, 0x10200101, 0x00000000, 0x00000000, 0x00020000, 0x00000000, 0x10000000, + 0x00004000, 0x00004000, 0x10000400, 0x10000400, 0x10010000, 0x10200101, 0x00000000, 0x00000000, + 0x10000000, 0x10000400, 0x10200101, 0x00000000, 0x10000000, 0x10000000, 0x10000000, 0x00080000, + 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x00200102, 0x10200102, + 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x10200102, + 0x00200102, 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x00000000, + 0x00200102, 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x00200102, 0x00200101, + 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x00200101, 0x10200101, + 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, + 0x00200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x00000000, + 0x00200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x00200101, 0x10200101, + 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, + 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, + 0x00200102, 0x00200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, + 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, + 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x00200102, 0x00200101, + 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, + 0x10200102, 0x00200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, + 0x00200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, + 0x10200101, 0x00200102, 0x00200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, + 0x10200101, 0x10200101, 0x00200102, 0x00200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, + 0x10200102, 0x10200101, 0x00200102, 0x00200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, + 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, + 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x00200102, 0x00200101, + 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, + 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, + 0x10200102, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200101, + 0x00200101, 0x00200102, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200102, + 0x00200101, 0x00200102, 0x00200102, 0x00200102, 0x00200101, 0x00200101, 0x00200102, 0x00200102, + 0x00200102, 0x00200102, 0x00200101, 0x00200102, 0x00200102, 0x00200101, 0x00200102, 0x00200102, + 0x00200102, 0x00200101, 0x00200101, 0x00200101, 0x00200102, 0x00200102, 0x00200101, 0x00200102, + 0x10200102, 0x10200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200102, + 0x00200101, 0x00200102, 0x00200101, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x10200102, + 0x10200101, 0x00200102, 0x00200102, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, + 0x00200102, 0x00200101, 0x00200101, 0x00200100, 0x00200102, 0x00200101, 0x00200101, 0x00200101, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x10200102, 0x10200104, 0x10200101, 0x10200102, + 0x10200104, 0x10200101, 0x10200102, 0x10200104, 0x10200101, 0x10200102, 0x10200101, 0x10200102, + 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, + 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x00200101, 0x10200102, 0x10200101, + 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x00200102, 0x00200101, 0x10200102, 0x10200101, + 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, + 0x10200101, 0x10200102, 0x10200104, 0x10200101, 0x10200102, 0x10200101, 0x00200102, 0x00200102, + 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, + 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, + 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, + 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, + 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x00200102, 0x00200101, 0x10200102, 0x10200101, + 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x10200102, 0x10200101, + 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, + 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, + 0x00200101, 0x00200101, 0x00200102, 0x00200102, 0x00200101, 0x00200102, 0x00200102, 0x00200101, + 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200101, + 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, + 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, + 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, + 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, + 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, + 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, + 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, + 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, + 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, + 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200100, 0x00200101, 0x00200101, 0x00200101, + 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, + 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, + 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, + 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, + 0x10000100, 0x00000000, 0x00000000, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00010000, 0x00000000, 0x00000000, 0x00000000, 0x00010000, 0x00000000, 0x00000000, 0x00000000, + 0x00000100, 0x00000100, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x00000000, 0x00010000, + 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000100, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, + 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, + 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, + 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, + 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, + 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, + 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, + 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, + 0x10088000, 0x10088000, 0x00088000, 0x10088000, 0x10088000, 0x00288000, 0x00088000, 0x00088000, + 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x000c8000, + 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, + 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x000c0000, 0x000c8000, 0x000c8000, 0x000c8000, + 0x000c8000, 0x000c8000, 0x000c8000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, + 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, + 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x10000000, 0x00000000, 0x00200102, 0x00200101, + 0x00000000, 0x00000000, 0x10000100, 0x00200101, 0x00200101, 0x00200101, 0x10000020, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x10000000, 0x10000000, 0x10200102, 0x10000020, + 0x10200102, 0x10200102, 0x10200102, 0x00000000, 0x10200102, 0x00000000, 0x10200102, 0x10200102, + 0x10200101, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, + 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, + 0x00200102, 0x00200102, 0x00000000, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, + 0x00200102, 0x00200102, 0x10200102, 0x10200102, 0x10200101, 0x10200101, 0x10200101, 0x10200101, + 0x10200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, + 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, + 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, + 0x00200101, 0x00200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x00200102, + 0x10200101, 0x10200101, 0x10200102, 0x10200102, 0x10200102, 0x10200101, 0x10200101, 0x00200101, + 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, + 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, + 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, + 0x10200101, 0x10200101, 0x10200101, 0x00200101, 0x10200102, 0x10200101, 0x00000000, 0x00200102, + 0x00200101, 0x10200102, 0x00200102, 0x00200101, 0x00200101, 0x00200102, 0x00200102, 0x00200102, + 0x10200102, 0x10200102, 0x00200102, 0x10200102, 0x00200102, 0x00200102, 0x00200102, 0x10200102, + 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x10200102, 0x10200102, 0x10200102, 0x00200102, + 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, + 0x00200102, 0x10200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, + 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, + 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, + 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, + 0x00200101, 0x10200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, + 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, + 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, + 0x10200101, 0x10200101, 0x00200101, 0x10200101, 0x00200101, 0x00200101, 0x00200101, 0x10200101, + 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x10200101, 0x10200101, 0x10200101, 0x00200101, + 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, + 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, + 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x10200102, 0x10200101, + 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, + 0x00200102, 0x00200101, 0x00000100, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, + 0x00080000, 0x00080000, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, + 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, + 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, + 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, + 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, + 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, + 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, + 0x00200102, 0x10200102, 0x10200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, + 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200101, + 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x00200102, 0x00200101, 0x10200102, 0x10200101, + 0x00200102, 0x00200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, + 0x00200102, 0x00200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, + 0x00200102, 0x00200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, + 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x00200102, 0x00200101, + 0x10200102, 0x10200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, + 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, + 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, + 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, + 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, + 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, + 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, + 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, + 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, + 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00000000, + 0x00000000, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000000, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, + 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, + 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, + 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, + 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x10200101, + 0x00000000, 0x00000120, 0x00020000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, + 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, + 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, + 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, + 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, + 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00020200, 0x00280000, + 0x00000200, 0x00280000, 0x00280000, 0x00000220, 0x00280000, 0x00280000, 0x00000200, 0x00280000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, + 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, + 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, + 0x00200200, 0x00200200, 0x00200200, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00200200, 0x00200200, 0x00200200, 0x00000200, 0x00000200, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000800, 0x00000800, 0x00000800, 0x00000800, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000200, 0x00004000, 0x00004000, 0x00000200, 0x00002020, 0x00000200, 0x00000000, 0x00000000, + 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, + 0x00280000, 0x00280000, 0x00280000, 0x00000220, 0x00000000, 0x00000000, 0x00000200, 0x00000220, + 0x00000000, 0x00200200, 0x10200200, 0x10200200, 0x10200200, 0x10200200, 0x10200200, 0x00200200, + 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, + 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, + 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, + 0x00000200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, + 0x00200200, 0x00200200, 0x00200200, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, + 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, + 0x00080000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00000000, + 0x00000808, 0x00000808, 0x00000808, 0x00000808, 0x00000808, 0x00000808, 0x00000808, 0x00000808, + 0x00000808, 0x00000808, 0x00004000, 0x00000800, 0x00000800, 0x00000200, 0x00200200, 0x00200200, + 0x00280000, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x10200200, 0x10200200, 0x10200200, + 0x10200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, + 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, + 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, + 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, + 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, + 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, + 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, + 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, + 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, + 0x10200200, 0x00200200, 0x10200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, + 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, + 0x00200200, 0x00200200, 0x00200200, 0x10200200, 0x00000220, 0x00200200, 0x00280000, 0x00280000, + 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00000800, 0x00080000, 0x00080000, + 0x00080000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00000200, 0x00000200, 0x00280000, + 0x00280000, 0x00000000, 0x00080000, 0x00080000, 0x00080000, 0x00280000, 0x00200200, 0x00200200, + 0x00000408, 0x00000408, 0x00000408, 0x00000408, 0x00000408, 0x00000408, 0x00000408, 0x00000408, + 0x00000408, 0x00000408, 0x00200200, 0x00200200, 0x00200200, 0x00000200, 0x00000200, 0x00200200, + 0x00000220, 0x00000220, 0x00000220, 0x00000220, 0x00000220, 0x00000220, 0x00000220, 0x00000220, + 0x00000220, 0x00000220, 0x00000220, 0x00000200, 0x00000220, 0x00000200, 0x00000000, 0x00000000, + 0x00200200, 0x00280000, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, + 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, + 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, + 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, + 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, + 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, + 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, + 0x00080000, 0x00080000, 0x00080000, 0x00000000, 0x00000000, 0x00200200, 0x00200200, 0x00200200, + 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, + 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, + 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, + 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, + 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, + 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, + 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, + 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, + 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, + 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, + 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00280000, 0x00280000, + 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, + 0x00280000, 0x00200200, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000208, 0x00000208, 0x00000208, 0x00000208, 0x00000208, 0x00000208, 0x00000208, 0x00000208, + 0x00000208, 0x00000208, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, + 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, + 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, + 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, 0x00200200, + 0x00200200, 0x00200200, 0x00200200, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, + 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00000200, 0x00000200, 0x00000000, 0x00000000, + 0x00000020, 0x00000020, 0x00000200, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00280000, 0x00280000, 0x00280100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x10200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x10200100, 0x00200100, 0x00200100, 0x10200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00000000, 0x00000000, 0x00080000, 0x00200100, 0x00280100, 0x00280100, + 0x00280100, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, + 0x00280000, 0x00280100, 0x00280100, 0x00280100, 0x00280100, 0x00080000, 0x00000000, 0x00000000, + 0x00200100, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00000000, 0x00000000, 0x00000000, + 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, + 0x00200100, 0x00200100, 0x00280000, 0x00280000, 0x00020120, 0x00020120, 0x00000108, 0x00000108, + 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, + 0x00000100, 0x00000100, 0x00200100, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00000000, 0x00280000, 0x00280100, 0x00280100, 0x00000000, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000, 0x00000000, 0x00200100, + 0x00200100, 0x00000000, 0x00000000, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00000000, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00000000, 0x00200100, 0x00000000, 0x00000000, 0x00000000, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00000000, 0x00000000, 0x00080000, 0x00200100, 0x00280100, 0x00280100, + 0x00280100, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00000000, 0x00000000, 0x00280100, + 0x00280100, 0x00000000, 0x00000000, 0x10280100, 0x10280100, 0x00080000, 0x00200100, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00280100, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x10200100, 0x10200100, 0x00000000, 0x10200100, + 0x00200100, 0x00200100, 0x00280000, 0x00280000, 0x00000000, 0x00000000, 0x00000108, 0x00000108, + 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, + 0x00200100, 0x00200100, 0x00004000, 0x00004000, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00280000, 0x00280000, 0x00280100, 0x00000000, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00200100, + 0x00200100, 0x00000000, 0x00000000, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00000000, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00000000, 0x00200100, 0x10200100, 0x00000000, 0x00200100, 0x10200100, 0x00000000, + 0x00200100, 0x00200100, 0x00000000, 0x00000000, 0x00080000, 0x00000000, 0x00280100, 0x00280100, + 0x00280100, 0x00280000, 0x00280000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00280000, + 0x00280000, 0x00000000, 0x00000000, 0x00280000, 0x00280000, 0x00080000, 0x00000000, 0x00000000, + 0x00000000, 0x00280000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x10200100, 0x10200100, 0x10200100, 0x00200100, 0x00000000, 0x10200100, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000108, 0x00000108, + 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, + 0x00280000, 0x00280000, 0x00200100, 0x00200100, 0x00200100, 0x00280000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00280000, 0x00280000, 0x00280100, 0x00000000, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000, 0x00200100, + 0x00200100, 0x00200100, 0x00000000, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00000000, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00000000, 0x00200100, 0x00200100, 0x00000000, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00000000, 0x00000000, 0x00080000, 0x00200100, 0x00280100, 0x00280100, + 0x00280100, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00000000, 0x00280000, + 0x00280000, 0x00280100, 0x00000000, 0x00280100, 0x00280100, 0x00080000, 0x00000000, 0x00000000, + 0x00200100, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00200100, 0x00200100, 0x00280000, 0x00280000, 0x00000000, 0x00000000, 0x00000108, 0x00000108, + 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, + 0x00000000, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00280000, 0x00280100, 0x00280100, 0x00000000, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000, 0x00000000, 0x00200100, + 0x00200100, 0x00000000, 0x00000000, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00000000, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00000000, 0x00200100, 0x00200100, 0x00000000, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00000000, 0x00000000, 0x00080000, 0x00200100, 0x00280100, 0x00280000, + 0x00280100, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00000000, 0x00000000, 0x00280100, + 0x10280100, 0x00000000, 0x00000000, 0x10280100, 0x10280100, 0x00080000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00280000, 0x00280100, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x10200100, 0x10200100, 0x00000000, 0x00200100, + 0x00200100, 0x00200100, 0x00280000, 0x00280000, 0x00000000, 0x00000000, 0x00000108, 0x00000108, + 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, + 0x00000100, 0x00200100, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00280000, 0x00200100, 0x00000000, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00000000, 0x00000000, 0x00000000, 0x00200100, 0x00200100, + 0x00200100, 0x00000000, 0x00200100, 0x00200100, 0x10200100, 0x00200100, 0x00000000, 0x00000000, + 0x00000000, 0x00200100, 0x00200100, 0x00000000, 0x00200100, 0x00000000, 0x00200100, 0x00200100, + 0x00000000, 0x00000000, 0x00000000, 0x00200100, 0x00200100, 0x00000000, 0x00000000, 0x00000000, + 0x00200100, 0x00200100, 0x00200100, 0x00000000, 0x00000000, 0x00000000, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00280100, 0x00280100, + 0x00280000, 0x00280100, 0x00280100, 0x00000000, 0x00000000, 0x00000000, 0x00280100, 0x00280100, + 0x00280100, 0x00000000, 0x10280100, 0x10280100, 0x10280100, 0x00080000, 0x00000000, 0x00000000, + 0x00200100, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00280100, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000108, 0x00000108, + 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, + 0x00000100, 0x00000100, 0x00000100, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00280100, 0x00280100, 0x00280100, 0x00000000, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000, 0x00200100, 0x00200100, + 0x00200100, 0x00000000, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00000000, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00000000, 0x00000000, 0x00000000, 0x00200100, 0x00280000, 0x00280000, + 0x00280000, 0x00280100, 0x00280100, 0x00280100, 0x00280100, 0x00000000, 0x00280000, 0x00280000, + 0x10280000, 0x00000000, 0x00280000, 0x00280000, 0x00280000, 0x00080000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00280000, 0x00280000, 0x00000000, + 0x00200100, 0x00200100, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00200100, 0x00200100, 0x00280000, 0x00280000, 0x00000000, 0x00000000, 0x00000108, 0x00000108, + 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000100, + 0x00000000, 0x00000000, 0x00280100, 0x00280100, 0x00000000, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000, 0x00200100, 0x00200100, + 0x00200100, 0x00000000, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00000000, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00000000, 0x00000000, 0x00080000, 0x00200100, 0x00280100, 0x00280100, + 0x10280100, 0x00280100, 0x00280100, 0x00280100, 0x00280100, 0x00000000, 0x00280100, 0x10280100, + 0x10280100, 0x00000000, 0x10280100, 0x10280100, 0x00280000, 0x00080000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00280100, 0x00280100, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00200100, 0x00000000, + 0x00200100, 0x00200100, 0x00280000, 0x00280000, 0x00000000, 0x00000000, 0x00000108, 0x00000108, + 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00280100, 0x00280100, 0x00000000, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000, 0x00200100, 0x00200100, + 0x00200100, 0x00000000, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00000000, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00000000, 0x00000000, 0x00000000, 0x00200100, 0x00280100, 0x00280100, + 0x00280100, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00000000, 0x00280100, 0x00280100, + 0x00280100, 0x00000000, 0x10280100, 0x10280100, 0x10280100, 0x00080000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00280100, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00200100, 0x00200100, 0x00280000, 0x00280000, 0x00000000, 0x00000000, 0x00000108, 0x00000108, + 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000000, 0x00000000, + 0x00000000, 0x00000100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00000000, 0x00000000, 0x00280100, 0x00280100, 0x00000000, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000, + 0x00000000, 0x00000000, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00000000, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000, 0x00200100, 0x00000000, 0x00000000, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000, + 0x00000000, 0x00000000, 0x00080000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00280100, + 0x00280100, 0x00280100, 0x00280000, 0x00280000, 0x00280000, 0x00000000, 0x00280000, 0x00000000, + 0x00280100, 0x00280100, 0x10280100, 0x00280100, 0x10280100, 0x10280100, 0x10280100, 0x00280100, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00280100, 0x00280100, 0x00000100, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200000, 0x00200100, 0x10200100, 0x00200000, 0x00200000, 0x00200000, 0x00200000, + 0x00200000, 0x00200000, 0x00200000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00004000, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000100, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00200000, 0x00000000, 0x00000100, + 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, + 0x00000108, 0x00000108, 0x00020120, 0x00020120, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00200100, 0x00200100, 0x00000000, 0x00200100, 0x00000000, 0x00000000, 0x00200100, + 0x00200100, 0x00000000, 0x00200100, 0x00000000, 0x00000000, 0x00200100, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00000000, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00000000, 0x00200100, 0x00200100, 0x00200100, 0x00000000, 0x00200100, 0x00000000, 0x00200100, + 0x00000000, 0x00000000, 0x00200100, 0x00200100, 0x00000000, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200000, 0x00200100, 0x10200100, 0x00200000, 0x00200000, 0x00200000, 0x00200000, + 0x00200000, 0x00200000, 0x00000000, 0x00200000, 0x00200000, 0x00200100, 0x00000000, 0x00000000, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000, 0x00000100, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00200000, 0x00000000, 0x00000000, + 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, + 0x00000108, 0x00000108, 0x00000000, 0x00000000, 0x10200100, 0x10200100, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00200100, 0x00010100, 0x00010100, 0x00010100, 0x00010100, 0x00000100, 0x00010100, 0x00010100, + 0x000c0120, 0x00010100, 0x00010100, 0x00020100, 0x100c0100, 0x00000120, 0x00000120, 0x00000120, + 0x00000120, 0x00000120, 0x000c0120, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00080000, 0x00080000, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, + 0x00000108, 0x00000108, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00020100, 0x00080000, 0x00000100, 0x00080000, + 0x00000100, 0x00080000, 0x00080000, 0x00040000, 0x00080000, 0x00040000, 0x00080100, 0x00080100, + 0x00200100, 0x00200100, 0x00200100, 0x10200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00000000, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x10200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x10200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x10200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x10200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x10200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00280000, 0x00280000, 0x10280000, 0x00280000, 0x10280000, 0x10280000, 0x10280000, + 0x10280000, 0x10280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00220100, + 0x00280000, 0x10280000, 0x00080000, 0x00080000, 0x00080000, 0x00020100, 0x00080000, 0x00080000, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00280000, 0x00280000, 0x00280000, 0x10280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, + 0x00000000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x10280000, 0x00280000, 0x00280000, + 0x00280000, 0x00280000, 0x10280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x10280000, + 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x10280000, 0x00280000, 0x00280000, 0x00280000, + 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, + 0x00280000, 0x10280000, 0x00280000, 0x00280000, 0x00280000, 0x00000000, 0x00020100, 0x00020100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00080000, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000000, 0x00000100, 0x00000100, + 0x00010100, 0x00010100, 0x00020100, 0x00010100, 0x00000100, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x10200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200000, 0x00200000, 0x00200000, + 0x00200000, 0x00200100, 0x00200000, 0x00200000, 0x00200000, 0x00200000, 0x00200000, 0x00000000, + 0x00200100, 0x00000000, 0x00000000, 0x00200100, 0x00200100, 0x00200000, 0x00200000, 0x00200100, + 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, + 0x00000108, 0x00000108, 0x00020120, 0x00020120, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200000, 0x00200000, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200000, 0x00200000, + 0x00200000, 0x00200100, 0x00200100, 0x00000100, 0x00000100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00200100, 0x00200100, + 0x00200100, 0x00200000, 0x00200000, 0x00200000, 0x00200000, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200000, 0x00200100, 0x00200100, 0x00200000, 0x00200000, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000000, 0x00200100, 0x00000100, + 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, + 0x00000108, 0x00000108, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000100, 0x00000100, + 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, + 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, + 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, + 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, + 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00000100, 0x10000100, 0x00000000, 0x00000000, 0x00000000, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00000000, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000, 0x00000000, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000, + 0x00200100, 0x00000000, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000, 0x00000000, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00000000, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000, 0x00000000, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00000000, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000, 0x00000000, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000, + 0x00200100, 0x00000000, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000, 0x00000000, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00000000, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000, 0x00000000, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00280000, + 0x00000100, 0x00020120, 0x00000120, 0x00000120, 0x00000120, 0x00000120, 0x00000120, 0x00000120, + 0x00000120, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000000, 0x00000000, 0x00000000, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000120, 0x00000120, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00020010, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00080000, 0x00040000, 0x00000000, 0x00000000, 0x00000000, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00020120, 0x00020120, 0x00020120, 0x00000100, 0x00000100, + 0x00000100, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00280000, 0x00280000, 0x00080000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00280000, 0x00280000, 0x00080000, 0x00020100, 0x00020100, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00280000, 0x00280000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000, 0x00200100, 0x00200100, + 0x00200100, 0x00000000, 0x00280000, 0x00280000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000100, 0x00000100, 0x00200100, 0x00200000, + 0x00200000, 0x00200000, 0x00200000, 0x00200000, 0x00200000, 0x00200000, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200000, 0x00200100, + 0x00200100, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00020120, 0x00020120, 0x00040120, 0x00000100, + 0x00020100, 0x00000100, 0x00020120, 0x00004000, 0x00200100, 0x00000000, 0x00000000, 0x00000000, + 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, + 0x00000108, 0x00000108, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000020, 0x00000020, 0x00020020, 0x00020020, 0x00010000, 0x00000000, + 0x00000020, 0x00000020, 0x00000000, 0x00080000, 0x00080000, 0x00080000, 0x000c0010, 0x00000000, + 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, + 0x00000108, 0x00000108, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00000100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00280000, 0x00200100, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000, 0x00000000, 0x00000000, + 0x00280000, 0x00280000, 0x00280000, 0x00280100, 0x00280100, 0x00280100, 0x00280100, 0x00280000, + 0x00280000, 0x00280100, 0x00280100, 0x00280100, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00280100, 0x00280100, 0x00280000, 0x00280100, 0x00280100, 0x00280100, 0x00280100, 0x00280100, + 0x00280100, 0x00080000, 0x00080000, 0x00080000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000020, 0x00000020, 0x00000108, 0x00000108, + 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000, 0x00000000, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, + 0x00000108, 0x00000108, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00280000, + 0x00280000, 0x00280100, 0x00280100, 0x00280100, 0x00000000, 0x00000000, 0x00000100, 0x00000100, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280100, 0x00200100, 0x10200100, 0x00200100, + 0x10200100, 0x00200100, 0x10200100, 0x00200100, 0x10200100, 0x00200100, 0x10200100, 0x00200100, + 0x00200100, 0x00200100, 0x10200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00080000, 0x00280100, 0x00280000, 0x00280000, + 0x00280000, 0x00280000, 0x00280000, 0x10280100, 0x00280000, 0x10280100, 0x00280100, 0x00280100, + 0x10280100, 0x10280100, 0x00280000, 0x10280100, 0x00080100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, + 0x00000108, 0x00000108, 0x00020120, 0x00020120, 0x00020100, 0x00020120, 0x00020120, 0x00020120, + 0x00020100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, + 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000000, 0x00000000, 0x00000000, + 0x00280000, 0x00280000, 0x00280100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00280100, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280100, 0x00280100, + 0x00280000, 0x00280000, 0x00080100, 0x00000000, 0x00000000, 0x00000000, 0x00200100, 0x00200100, + 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, + 0x00000108, 0x00000108, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00280100, 0x00280100, 0x00280100, 0x00280100, + 0x00280100, 0x00280100, 0x00280100, 0x00280100, 0x00280000, 0x00280000, 0x00280000, 0x00280000, + 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280100, 0x00280100, 0x00080000, 0x00080000, + 0x00000000, 0x00000000, 0x00000000, 0x00020120, 0x00020120, 0x00020120, 0x00020120, 0x00020120, + 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, + 0x00000108, 0x00000108, 0x00000000, 0x00000000, 0x00000000, 0x00200100, 0x00200100, 0x00200100, + 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, + 0x00000108, 0x00000108, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00020120, 0x00020120, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, + 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, + 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, + 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, + 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, + 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x10000100, 0x10000100, 0x10000100, 0x00000100, + 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, + 0x10000100, 0x10000100, 0x10000100, 0x00000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, + 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, + 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x00000100, 0x10000100, + 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, + 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, + 0x10000100, 0x10000100, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, + 0x10200101, 0x10200101, 0x10200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, + 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, + 0x10000100, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, + 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, + 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, + 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, + 0x00200101, 0x00200101, 0x00200101, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, + 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, + 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, + 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, + 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, + 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, + 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, + 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, + 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, + 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00088000, 0x00088000, + 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, + 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, + 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, + 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, + 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, + 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, + 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, + 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, + 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, + 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, + 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, + 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, + 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, + 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, + 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, + 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, + 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, + 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, + 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200101, 0x10200101, + 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x00200101, 0x00200101, 0x00200102, 0x00200101, + 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, + 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, + 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, + 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, + 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, + 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, + 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, + 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, + 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, + 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, + 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, 0x10200102, 0x10200101, + 0x10200102, 0x10200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, + 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, + 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x10200102, + 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x00000000, 0x00000000, + 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x00000000, 0x00000000, + 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, + 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x10200102, + 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, + 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x10200102, + 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x00000000, 0x00000000, + 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x00000000, 0x00000000, + 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, + 0x00000000, 0x10200102, 0x00000000, 0x10200102, 0x00000000, 0x10200102, 0x00000000, 0x10200102, + 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, + 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x10200102, + 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, + 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x00000000, 0x00000000, + 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, + 0x10200104, 0x10200104, 0x10200104, 0x10200104, 0x10200104, 0x10200104, 0x10200104, 0x10200104, + 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, + 0x10200104, 0x10200104, 0x10200104, 0x10200104, 0x10200104, 0x10200104, 0x10200104, 0x10200104, + 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, + 0x10200104, 0x10200104, 0x10200104, 0x10200104, 0x10200104, 0x10200104, 0x10200104, 0x10200104, + 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x00000000, 0x10200101, 0x10200101, + 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x10200104, 0x10000000, 0x10200101, 0x10000000, + 0x10000000, 0x10000000, 0x10200101, 0x10200101, 0x10200101, 0x00000000, 0x10200101, 0x10200101, + 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x10200104, 0x10000000, 0x10000000, 0x10000000, + 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x00000000, 0x00000000, 0x10200101, 0x10200101, + 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x00000000, 0x10000000, 0x10000000, 0x10000000, + 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, + 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x10000000, 0x10000000, 0x10000000, + 0x00000000, 0x00000000, 0x10200101, 0x10200101, 0x10200101, 0x00000000, 0x10200101, 0x10200101, + 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x10200104, 0x10010000, 0x10000000, 0x00000000, + 0x10020010, 0x10020010, 0x10020010, 0x10020010, 0x10020010, 0x10020010, 0x10020010, 0x100c0010, + 0x10020010, 0x10020010, 0x10020010, 0x00020080, 0x00080080, 0x00080080, 0x00080110, 0x00080210, + 0x00020000, 0x180c0000, 0x00020000, 0x00020000, 0x00030000, 0x00000000, 0x00000000, 0x10000000, + 0x00000000, 0x00000000, 0x00080000, 0x00000000, 0x00000000, 0x00000000, 0x00080000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x10000000, 0x10000000, 0x10000000, 0x00020000, + 0x00000010, 0x00000010, 0x00088180, 0x00080200, 0x00080000, 0x00080100, 0x00080200, 0x180c2010, + 0x00004000, 0x00004000, 0x00004000, 0x10004000, 0x10004000, 0x00000000, 0x10000000, 0x10000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x10040020, 0x00040020, 0x10000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00002000, 0x00080000, 0x00040000, 0x10040020, + 0x10040020, 0x10040020, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00020000, 0x10000000, + 0x00020000, 0x00020000, 0x00020000, 0x00020000, 0x00000000, 0x00020000, 0x00020000, 0x10020010, + 0x00000080, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, + 0x10000400, 0x10200101, 0x00000000, 0x00000000, 0x10000400, 0x10000400, 0x10000400, 0x10000400, + 0x10000400, 0x10000400, 0x10001000, 0x10001000, 0x10000000, 0x10080000, 0x10040000, 0x10200101, + 0x10000400, 0x10000400, 0x10000400, 0x10000400, 0x10000400, 0x10000400, 0x10000400, 0x10000400, + 0x10000400, 0x10000400, 0x10001000, 0x10001000, 0x10000000, 0x10080000, 0x10040000, 0x00000000, + 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00004000, 0x00004000, 0x00004000, 0x00004000, 0x00004000, 0x00004000, 0x00004000, 0x00004000, + 0x10004000, 0x00004000, 0x00004000, 0x00004000, 0x00004000, 0x00004000, 0x00004000, 0x00004000, + 0x00004000, 0x00004000, 0x00004000, 0x00004000, 0x00004000, 0x00004000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, + 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00080000, 0x00080000, 0x00080000, + 0x00080000, 0x00088000, 0x00080000, 0x00080000, 0x00080000, 0x00088000, 0x00088000, 0x00080000, + 0x00080000, 0x00080000, 0x00080000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, + 0x00080000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x10000000, 0x10000000, 0x10200102, 0x10000000, 0x00000000, 0x10000000, 0x10000000, 0x10200102, + 0x00000000, 0x10000000, 0x10200101, 0x10200102, 0x10200102, 0x10200102, 0x10200101, 0x10200101, + 0x10200102, 0x10200102, 0x10200102, 0x10200101, 0x00000000, 0x10200102, 0x10000000, 0x00000000, + 0x00000000, 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x00000000, 0x00000000, + 0x10000000, 0x10000000, 0x10000000, 0x00000000, 0x10200102, 0x00000000, 0x10200102, 0x00000000, + 0x10200102, 0x00000000, 0x10200102, 0x10200102, 0x10200102, 0x10200102, 0x00004000, 0x10200101, + 0x10200102, 0x10200102, 0x00200102, 0x10200102, 0x10200101, 0x10200100, 0x10200100, 0x10200100, + 0x10200100, 0x10200101, 0x00000000, 0x10000000, 0x10200101, 0x10200101, 0x10200102, 0x10200102, + 0x10000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x10200102, 0x10200101, 0x10200101, + 0x10200101, 0x10200101, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00200101, 0x00000100, + 0x00000000, 0x00000000, 0x00000000, 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x10000000, + 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x10000000, + 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, + 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, + 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, + 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, + 0x00000100, 0x00000100, 0x00000100, 0x00200102, 0x00200101, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x10000000, 0x10000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x10000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x10000000, 0x10000000, 0x10000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x10000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x10000000, 0x00000000, 0x00000000, 0x10000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00001000, 0x00004000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x10000000, 0x00000000, 0x10000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x10000000, 0x10000000, 0x00000000, 0x10000000, + 0x10000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x10000000, 0x00000000, 0x00000000, 0x10000000, 0x00000000, 0x00000000, 0x10000000, + 0x00000000, 0x10000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x10000000, 0x00000000, 0x10000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x10000000, 0x10000000, 0x10000000, + 0x10000000, 0x10000000, 0x00000000, 0x00000000, 0x10000000, 0x10000000, 0x00000000, 0x00000000, + 0x10000000, 0x10000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x10000000, 0x10000000, 0x00000000, 0x00000000, 0x10000000, 0x10000000, 0x00000000, 0x00000000, + 0x10000000, 0x10000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x10000000, 0x10000000, 0x10000000, 0x10000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x10080000, 0x10040000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000100, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x10000000, + 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x10000000, + 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x10000000, + 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x10000000, + 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x10000000, + 0x10000400, 0x10000400, 0x10000400, 0x10000400, 0x10000400, 0x10000400, 0x10000400, 0x10000400, + 0x10000400, 0x10000400, 0x10000400, 0x10000400, 0x10000400, 0x10000400, 0x10000400, 0x10000400, + 0x10000400, 0x10000400, 0x10000400, 0x10000400, 0x10000100, 0x10000100, 0x10000100, 0x10000100, + 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, + 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, + 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10000100, 0x10200100, 0x10200100, + 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, + 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, + 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, + 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, + 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, + 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, + 0x10200100, 0x10200100, 0x10000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000100, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00080000, 0x00040000, 0x00080000, 0x00040000, 0x00080000, 0x00040000, 0x00080000, 0x00040000, + 0x00080000, 0x00040000, 0x00080000, 0x00040000, 0x00080000, 0x00040000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00080000, 0x00040000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00080000, 0x00040000, + 0x00080000, 0x00040000, 0x00080000, 0x00040000, 0x00080000, 0x00040000, 0x00080000, 0x00040000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00080000, 0x00040000, 0x00080000, 0x00040000, 0x00080000, + 0x00040000, 0x00080000, 0x00040000, 0x00080000, 0x00040000, 0x00080000, 0x00040000, 0x00080000, + 0x00040000, 0x00080000, 0x00040000, 0x00080000, 0x00040000, 0x00080000, 0x00040000, 0x00080000, + 0x00040000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00080000, 0x00040000, 0x00080000, 0x00040000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00080000, 0x00040000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x10000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x10000000, 0x10000000, 0x10000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x10000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, + 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, + 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, + 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, + 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, + 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00200102, 0x00000000, + 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, + 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, + 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, + 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, + 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, + 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00000000, + 0x00200102, 0x00200101, 0x00200102, 0x00200102, 0x00200102, 0x00200101, 0x00200101, 0x00200102, + 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200102, 0x00200102, + 0x00000000, 0x00200101, 0x00200102, 0x00200101, 0x00200101, 0x00200102, 0x00200101, 0x00200101, + 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x10200101, 0x10000100, 0x00000000, 0x00000000, + 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, + 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, + 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, + 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, + 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, + 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, + 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, + 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, + 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, + 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, + 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, + 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, + 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200101, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00020000, 0x00020000, 0x00020000, 0x00000000, 0x00000000, 0x00020000, + 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, + 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, + 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, + 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, + 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x10000100, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000, + 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, + 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, + 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, + 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00020000, 0x00020000, + 0x00020000, 0x00020000, 0x00020000, 0x00020000, 0x00020000, 0x00020000, 0x00000000, 0x00020000, + 0x00080000, 0x00020000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00080000, 0x00040000, 0x00080000, 0x00040000, 0x00080000, 0x00040000, + 0x00080000, 0x00040000, 0x00020000, 0x00020000, 0x00020000, 0x00020000, 0x00000020, 0x00000000, + 0x00020000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, + 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, + 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, + 0x00030000, 0x00030000, 0x00000000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x10030000, + 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, + 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, + 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, + 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, + 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, + 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, + 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, + 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, + 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, + 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, + 0x00030000, 0x00030000, 0x00030000, 0x10030000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, + 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, + 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, + 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, + 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, + 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, + 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, + 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, + 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, + 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, + 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, + 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, + 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, + 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, + 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, + 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, + 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, + 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, + 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, + 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, + 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, + 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, + 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, + 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, + 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, + 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, + 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, + 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x10030010, 0x00040020, 0x00040020, 0x00030000, 0x00030000, 0x00040100, 0x00630100, 0x00430100, + 0x00080000, 0x00040000, 0x00080000, 0x00040000, 0x00080000, 0x00040000, 0x00080000, 0x00040000, + 0x00080000, 0x00040000, 0x00030000, 0x00030000, 0x00080000, 0x00040000, 0x00080000, 0x00040000, + 0x00080000, 0x00040000, 0x00080000, 0x00040000, 0x00040000, 0x00080000, 0x00040000, 0x00040000, + 0x00030000, 0x00430100, 0x00430100, 0x00430100, 0x00430100, 0x00430100, 0x00430100, 0x00430100, + 0x00430100, 0x00430100, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, + 0x00030000, 0x00030100, 0x00030100, 0x00030100, 0x00030100, 0x00030100, 0x10030000, 0x00030000, + 0x10430100, 0x10430100, 0x10430100, 0x00040100, 0x00240100, 0x00030000, 0x00030000, 0x00030000, + 0x00000000, 0x00240100, 0x00230100, 0x00240100, 0x00230100, 0x00240100, 0x00230100, 0x00240100, + 0x00230100, 0x00240100, 0x00230100, 0x00230100, 0x10230100, 0x00230100, 0x10230100, 0x00230100, + 0x10230100, 0x00230100, 0x10230100, 0x00230100, 0x10230100, 0x00230100, 0x10230100, 0x00230100, + 0x10230100, 0x00230100, 0x10230100, 0x00230100, 0x10230100, 0x00230100, 0x10230100, 0x00230100, + 0x10230100, 0x00230100, 0x10230100, 0x00240100, 0x00230100, 0x10230100, 0x00230100, 0x10230100, + 0x00230100, 0x10230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x10230100, 0x10230100, 0x00230100, 0x10230100, 0x10230100, 0x00230100, 0x10230100, 0x10230100, + 0x00230100, 0x10230100, 0x10230100, 0x00230100, 0x10230100, 0x10230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00240100, 0x00230100, 0x00240100, 0x00230100, 0x00240100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00240100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x10230100, 0x00240100, 0x00240100, 0x00000000, + 0x00000000, 0x00088000, 0x00088000, 0x10040000, 0x10040000, 0x00040100, 0x10040100, 0x10230100, + 0x00040000, 0x00240100, 0x00230100, 0x00240100, 0x00230100, 0x00240100, 0x00230100, 0x00240100, + 0x00230100, 0x00240100, 0x00230100, 0x00230100, 0x10230100, 0x00230100, 0x10230100, 0x00230100, + 0x10230100, 0x00230100, 0x10230100, 0x00230100, 0x10230100, 0x00230100, 0x10230100, 0x00230100, + 0x10230100, 0x00230100, 0x10230100, 0x00230100, 0x10230100, 0x00230100, 0x10230100, 0x00230100, + 0x10230100, 0x00230100, 0x10230100, 0x00240100, 0x00230100, 0x10230100, 0x00230100, 0x10230100, + 0x00230100, 0x10230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x10230100, 0x10230100, 0x00230100, 0x10230100, 0x10230100, 0x00230100, 0x10230100, 0x10230100, + 0x00230100, 0x10230100, 0x10230100, 0x00230100, 0x10230100, 0x10230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00240100, 0x00230100, 0x00240100, 0x00230100, 0x00240100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00240100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x10230100, 0x00240100, 0x00240100, 0x10230100, + 0x10230100, 0x10230100, 0x10230100, 0x00040000, 0x00040100, 0x00040100, 0x10040100, 0x10230100, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00000000, 0x00000000, + 0x00000000, 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, + 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, + 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, + 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, + 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, + 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, + 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, + 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, + 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, + 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, + 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, + 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x10230100, 0x00000000, + 0x00030100, 0x00030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, + 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, + 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, + 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, + 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, + 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00240100, 0x00240100, 0x00240100, 0x00240100, 0x00240100, 0x00240100, 0x00240100, 0x00240100, + 0x00240100, 0x00240100, 0x00240100, 0x00240100, 0x00240100, 0x00240100, 0x00240100, 0x00240100, + 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, + 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, + 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, + 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030000, 0x10030000, 0x00000000, + 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, + 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, + 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, + 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, + 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, + 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, + 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, + 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, + 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, + 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030000, 0x10030000, 0x10030000, 0x00030100, + 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, + 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, + 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, + 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, + 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, + 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, + 0x10030100, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, + 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, + 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, + 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030000, 0x10030000, 0x10030000, 0x10030000, + 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, + 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, + 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, + 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, + 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, + 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x00000000, + 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, + 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, + 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, + 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, + 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, + 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, + 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, + 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, + 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, + 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, + 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, + 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, + 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, + 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, + 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030000, + 0x10030000, 0x10030000, 0x10030000, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, + 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, + 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, + 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, + 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, + 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, + 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, + 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, + 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, + 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, + 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, + 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, + 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030000, 0x10030000, + 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, + 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, + 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, + 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030100, 0x10030000, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00630100, + 0x00630100, 0x00630100, 0x00630100, 0x00630100, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00040100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, + 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00230100, 0x00000000, 0x00000000, 0x00000000, + 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, + 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, + 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, + 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, + 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, + 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, + 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00030000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000100, 0x00020020, 0x00000020, 0x00020020, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, + 0x00000108, 0x00000108, 0x00200100, 0x00200100, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, + 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, + 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, + 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, + 0x00000000, 0x00000000, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, + 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200100, 0x00088000, + 0x00080000, 0x00080000, 0x00080000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00088000, 0x00088000, 0x00000000, 0x00000000, + 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, + 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, + 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, + 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, + 0x00200101, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, + 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, + 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, + 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, + 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, + 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, + 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, + 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, + 0x10000100, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, 0x00200101, + 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200102, 0x00200101, + 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, 0x00200102, 0x00200101, + 0x00000000, 0x00000100, 0x00000100, 0x00200102, 0x00200101, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00080000, 0x00200100, 0x00200100, 0x00200100, 0x00080000, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00080000, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00280100, 0x00280100, 0x00280000, 0x00280000, 0x00280100, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00010000, 0x00010000, 0x00000020, 0x00000020, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00280100, 0x00280100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00280100, 0x00280100, 0x00280100, 0x00280100, + 0x00280100, 0x00280100, 0x00280100, 0x00280100, 0x00280100, 0x00280100, 0x00280100, 0x00280100, + 0x00280100, 0x00280100, 0x00280100, 0x00280100, 0x00080000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00020120, 0x00020120, + 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, + 0x00000108, 0x00000108, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, + 0x00000108, 0x00000108, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00280000, 0x00280000, + 0x00280000, 0x00280000, 0x00280000, 0x00080000, 0x00080000, 0x00080000, 0x00020100, 0x00020120, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00280000, + 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, + 0x00280000, 0x00280000, 0x00280100, 0x00080100, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000100, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280000, 0x00280100, + 0x00280100, 0x00280000, 0x00280000, 0x00280100, 0x00280100, 0x00280000, 0x00280000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00200100, 0x00200100, 0x00200100, 0x00280000, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00280000, 0x00280100, 0x00000000, 0x00000000, + 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, 0x00000108, + 0x00000108, 0x00000108, 0x00000000, 0x00000000, 0x00000100, 0x00020120, 0x00020120, 0x00020120, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00200100, + 0x00200100, 0x00200100, 0x00200100, 0x00200100, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, 0x00000100, + 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, + 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, + 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, + 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, + 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, + 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, + 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, + 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, + 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, + 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, + 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, + 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, + 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, + 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, + 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, + 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, + 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, + 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, + 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, + 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, + 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, + 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, + 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, + 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, + 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, + 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, + 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, + 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, + 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, + 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, + 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, + 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, + 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, + 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x00630100, 0x00630100, + 0x10630100, 0x00630100, 0x10630100, 0x00630100, 0x00630100, 0x10630100, 0x10630100, 0x10630100, + 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x00630100, + 0x10630100, 0x00630100, 0x10630100, 0x00630100, 0x00630100, 0x10630100, 0x10630100, 0x00630100, + 0x00630100, 0x00630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x00000000, 0x00000000, + 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, + 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, + 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, + 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, + 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, + 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, + 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, + 0x10630100, 0x10630100, 0x10630100, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, + 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, + 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, + 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, + 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, + 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, + 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, + 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, + 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, + 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, + 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, + 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, + 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, 0x10630100, + 0x10630100, 0x10630100, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x10200101, 0x10200101, 0x10200101, 0x10200101, 0x10200101, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x10200200, 0x00280000, 0x10200200, + 0x10200200, 0x10200200, 0x10200200, 0x10200200, 0x10200200, 0x10200200, 0x10200200, 0x10200200, + 0x10200200, 0x10001000, 0x10200200, 0x10200200, 0x10200200, 0x10200200, 0x10200200, 0x10200200, + 0x10200200, 0x10200200, 0x10200200, 0x10200200, 0x10200200, 0x10200200, 0x10200200, 0x00000000, + 0x10200200, 0x10200200, 0x10200200, 0x10200200, 0x10200200, 0x00000000, 0x10200200, 0x00000000, + 0x10200200, 0x10200200, 0x00000000, 0x10200200, 0x10200200, 0x00000000, 0x10200200, 0x10200200, + 0x10200200, 0x10200200, 0x10200200, 0x10200200, 0x10200200, 0x10200200, 0x10200200, 0x10200200, + 0x14200200, 0x12200200, 0x14200200, 0x12200200, 0x10a00200, 0x11200200, 0x14200200, 0x12200200, + 0x10a00200, 0x11200200, 0x14200200, 0x12200200, 0x10a00200, 0x11200200, 0x14200200, 0x12200200, + 0x10a00200, 0x11200200, 0x14200200, 0x12200200, 0x10a00200, 0x11200200, 0x14200200, 0x12200200, + 0x10a00200, 0x11200200, 0x14200200, 0x12200200, 0x10a00200, 0x11200200, 0x14200200, 0x12200200, + 0x10a00200, 0x11200200, 0x14200200, 0x12200200, 0x10a00200, 0x11200200, 0x14200200, 0x12200200, + 0x10a00200, 0x11200200, 0x14200200, 0x12200200, 0x10a00200, 0x11200200, 0x14200200, 0x12200200, + 0x10a00200, 0x11200200, 0x14200200, 0x12200200, 0x14200200, 0x12200200, 0x14200200, 0x12200200, + 0x14200200, 0x12200200, 0x14200200, 0x12200200, 0x14200200, 0x12200200, 0x14200200, 0x12200200, + 0x10a00200, 0x11200200, 0x14200200, 0x12200200, 0x10a00200, 0x11200200, 0x14200200, 0x12200200, + 0x10a00200, 0x11200200, 0x14200200, 0x12200200, 0x10a00200, 0x11200200, 0x14200200, 0x12200200, + 0x14200200, 0x12200200, 0x10a00200, 0x11200200, 0x14200200, 0x12200200, 0x14200200, 0x12200200, + 0x10a00200, 0x11200200, 0x14200200, 0x12200200, 0x10a00200, 0x11200200, 0x14200200, 0x12200200, + 0x14200200, 0x12200200, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x14200200, 0x12200200, 0x10a00200, 0x11200200, 0x14200200, + 0x12200200, 0x14200200, 0x12200200, 0x14200200, 0x12200200, 0x14200200, 0x14200200, 0x12200200, + 0x14200200, 0x12200200, 0x14200200, 0x12200200, 0x14200200, 0x12200200, 0x10a00200, 0x11200200, + 0x10a00200, 0x11200200, 0x14200200, 0x12200200, 0x14200200, 0x12200200, 0x14200200, 0x12200200, + 0x14200200, 0x12200200, 0x14200200, 0x12200200, 0x14200200, 0x12200200, 0x14200200, 0x12200200, + 0x10a00200, 0x14200200, 0x12200200, 0x10a00200, 0x14200200, 0x12200200, 0x10a00200, 0x11200200, + 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, + 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, + 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, + 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, + 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, + 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, + 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, + 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, + 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, + 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, + 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, + 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, + 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, + 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, + 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, + 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, + 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, + 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, + 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x10a00200, + 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, + 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, + 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, + 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, + 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, + 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, + 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, + 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, + 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x11200200, + 0x11200200, 0x11200200, 0x11200200, 0x11200200, 0x11200200, 0x11200200, 0x11200200, 0x11200200, + 0x11200200, 0x11200200, 0x11200200, 0x11200200, 0x11200200, 0x11200200, 0x11200200, 0x11200200, + 0x11200200, 0x11200200, 0x11200200, 0x11200200, 0x11200200, 0x14200200, 0x14200200, 0x14200200, + 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, + 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, + 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, + 0x14200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, + 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, + 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, + 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x10a00200, 0x10a00200, 0x10a00200, + 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x11200200, 0x11200200, 0x11200200, 0x11200200, + 0x11200200, 0x11200200, 0x11200200, 0x11200200, 0x12200200, 0x14200200, 0x00080000, 0x00040000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x10a00200, 0x12200200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, + 0x12200200, 0x10a00200, 0x12200200, 0x12200200, 0x10a00200, 0x10a00200, 0x12200200, 0x12200200, + 0x10a00200, 0x10a00200, 0x12200200, 0x10a00200, 0x12200200, 0x10a00200, 0x12200200, 0x12200200, + 0x10a00200, 0x12200200, 0x12200200, 0x10a00200, 0x12200200, 0x10a00200, 0x12200200, 0x12200200, + 0x10a00200, 0x12200200, 0x10a00200, 0x10a00200, 0x12200200, 0x12200200, 0x12200200, 0x10a00200, + 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x10a00200, 0x12200200, 0x12200200, + 0x12200200, 0x12200200, 0x12200200, 0x10a00200, 0x12200200, 0x12200200, 0x10a00200, 0x12200200, + 0x10a00200, 0x10a00200, 0x10a00200, 0x12200200, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, + 0x00000000, 0x00000000, 0x10a00200, 0x10a00200, 0x10a00200, 0x10a00200, 0x12200200, 0x12200200, + 0x10a00200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x10a00200, 0x12200200, 0x12200200, + 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, + 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, + 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x10a00200, 0x10a00200, 0x12200200, 0x12200200, + 0x10a00200, 0x12200200, 0x10a00200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, 0x12200200, + 0x12200200, 0x12200200, 0x12200200, 0x10a00200, 0x10a00200, 0x10a00200, 0x12200200, 0x12200200, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14200200, + 0x14200200, 0x14200200, 0x14200200, 0x14200200, 0x14000200, 0x00000000, 0x00000000, 0x00000000, + 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, + 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, 0x00080000, + 0x10000000, 0x10040000, 0x10040000, 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x10080000, + 0x10040000, 0x10000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00088000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10080000, 0x10040000, 0x10080000, + 0x10040000, 0x10080000, 0x10040000, 0x10080000, 0x10040000, 0x10080000, 0x10040000, 0x10080000, + 0x10040000, 0x10080000, 0x10040000, 0x10080000, 0x10040000, 0x00030000, 0x00030000, 0x10080000, + 0x10040000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, 0x10030000, + 0x10042020, 0x10030020, 0x10042020, 0x00000000, 0x10040020, 0x10042020, 0x10000020, 0x10000020, + 0x10030000, 0x10080000, 0x10040000, 0x10080000, 0x10040000, 0x10080000, 0x10040000, 0x10034000, + 0x10030000, 0x10030000, 0x10031000, 0x10031000, 0x10030000, 0x10030000, 0x10030000, 0x00000000, + 0x10030000, 0x10004000, 0x10004000, 0x10030000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x14200200, 0x11200200, 0x14200200, 0x00200200, 0x14200200, 0x00000000, 0x14200200, 0x11200200, + 0x14200200, 0x11200200, 0x14200200, 0x11200200, 0x14200200, 0x11200200, 0x14200200, 0x11200200, + 0x14200200, 0x14200200, 0x12200200, 0x14200200, 0x12200200, 0x14200200, 0x12200200, 0x14200200, + 0x12200200, 0x14200200, 0x12200200, 0x10a00200, 0x11200200, 0x14200200, 0x12200200, 0x14200200, + 0x12200200, 0x10a00200, 0x11200200, 0x14200200, 0x12200200, 0x14200200, 0x12200200, 0x10a00200, + 0x11200200, 0x14200200, 0x12200200, 0x10a00200, 0x11200200, 0x14200200, 0x12200200, 0x10a00200, + 0x11200200, 0x14200200, 0x12200200, 0x10a00200, 0x11200200, 0x14200200, 0x12200200, 0x10a00200, + 0x11200200, 0x14200200, 0x12200200, 0x14200200, 0x12200200, 0x14200200, 0x12200200, 0x14200200, + 0x12200200, 0x14200200, 0x12200200, 0x10a00200, 0x11200200, 0x14200200, 0x12200200, 0x10a00200, + 0x11200200, 0x14200200, 0x12200200, 0x10a00200, 0x11200200, 0x14200200, 0x12200200, 0x10a00200, + 0x11200200, 0x14200200, 0x12200200, 0x10a00200, 0x11200200, 0x14200200, 0x12200200, 0x10a00200, + 0x11200200, 0x14200200, 0x12200200, 0x10a00200, 0x11200200, 0x14200200, 0x12200200, 0x10a00200, + 0x11200200, 0x14200200, 0x12200200, 0x10a00200, 0x11200200, 0x14200200, 0x12200200, 0x10a00200, + 0x11200200, 0x14200200, 0x12200200, 0x10a00200, 0x11200200, 0x14200200, 0x12200200, 0x10a00200, + 0x11200200, 0x14200200, 0x12200200, 0x10a00200, 0x11200200, 0x14200200, 0x12200200, 0x10a00200, + 0x11200200, 0x14200200, 0x12200200, 0x10a00200, 0x11200200, 0x14200200, 0x12200200, 0x14200200, + 0x12200200, 0x14200200, 0x12200200, 0x10a00200, 0x11200200, 0x14200200, 0x12200200, 0x14200200, + 0x12200200, 0x14200200, 0x12200200, 0x14200200, 0x12200200, 0x00000000, 0x00000000, 0x08000080, + 0x00000000, 0x10000020, 0x10030000, 0x10034000, 0x10004000, 0x10004000, 0x10030000, 0x10030000, + 0x10080000, 0x10040000, 0x10030000, 0x10031000, 0x10042020, 0x10031000, 0x10042020, 0x10032000, + 0x10030448, 0x10030448, 0x10030448, 0x10030448, 0x10030448, 0x10030448, 0x10030448, 0x10030448, + 0x10030448, 0x10030448, 0x10042020, 0x10040020, 0x10030000, 0x10030000, 0x10030000, 0x10000020, + 0x10030000, 0x10230142, 0x10230142, 0x10230142, 0x10230142, 0x10230142, 0x10230142, 0x10230102, + 0x10230102, 0x10230102, 0x10230102, 0x10230102, 0x10230102, 0x10230102, 0x10230102, 0x10230102, + 0x10230102, 0x10230102, 0x10230102, 0x10230102, 0x10230102, 0x10230102, 0x10230102, 0x10230102, + 0x10230102, 0x10230102, 0x10230102, 0x10080000, 0x10030000, 0x10040000, 0x10030000, 0x10030000, + 0x10030000, 0x10230141, 0x10230141, 0x10230141, 0x10230141, 0x10230141, 0x10230141, 0x10230101, + 0x10230101, 0x10230101, 0x10230101, 0x10230101, 0x10230101, 0x10230101, 0x10230101, 0x10230101, + 0x10230101, 0x10230101, 0x10230101, 0x10230101, 0x10230101, 0x10230101, 0x10230101, 0x10230101, + 0x10230101, 0x10230101, 0x10230101, 0x10080000, 0x10030000, 0x10040000, 0x10030000, 0x10080000, + 0x10040000, 0x10040020, 0x10080000, 0x10040000, 0x10040020, 0x10040000, 0x10200100, 0x10240100, + 0x10240100, 0x10240100, 0x10240100, 0x10240100, 0x10240100, 0x10240100, 0x10240100, 0x10240100, + 0x10040100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, + 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, + 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, + 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, + 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, + 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10040100, 0x10040100, + 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, + 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, + 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, + 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x00000000, + 0x00000000, 0x00000000, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, + 0x00000000, 0x00000000, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, + 0x00000000, 0x00000000, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, 0x10200100, + 0x00000000, 0x00000000, 0x10200100, 0x10200100, 0x10200100, 0x00000000, 0x00000000, 0x00000000, + 0x10004000, 0x10004000, 0x10030000, 0x10030000, 0x10030000, 0x10004000, 0x10004000, 0x00000000, + 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x10000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00080000, 0x00080000, 0x00080000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 +}; diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/VERSION b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/VERSION new file mode 100644 index 00000000000..6e18f9908cf --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/VERSION @@ -0,0 +1 @@ +20081117 diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/configure-options b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/configure-options new file mode 100644 index 00000000000..594a842e66f --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/configure-options @@ -0,0 +1 @@ +--enable-static --disable-shared --disable-freetype --without-freetype-src --without-cairo --without-python --without-pango --without-iconv --without-native-script --without-x diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/configure.in b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/configure.in new file mode 100644 index 00000000000..acbf44f2112 --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/configure.in @@ -0,0 +1,704 @@ +dnl Process this file with autoconf to produce a configure script. + +orig_args="$*" + +AC_INIT(fontforge/pfaedit.h) +AC_CONFIG_HEADERS([inc/config.h]) +AC_PROG_CC +AC_PROG_INSTALL +AC_DISABLE_STATIC +AC_ENABLE_SHARED +AC_CANONICAL_HOST +AC_SUBST(HOST) +AC_SUBST(MACAPP) +HOST="$host" + +AC_C_CONST +AC_PATH_XTRA +AC_SUBST(X_11LIB) +AC_SUBST(GDRAW_LIB) +AC_SUBST(exeOBJECTS) +AC_SUBST(LINK_WITH_GDRAW) +X_11LIB=-lX11 +GDRAW_LIB=libgdraw +exeOBJECTS=fontforge_UIOBJECTS +LINK_WITH_GDRAW=../libgdraw.la +if test "$no_x" = "yes"; then + X_11LIB= + GDRAW_LIB= + exeOBJECTS=fontforge_SCRIPTOBJ + LINK_WITH_GDRAW= + MACAPP= + +else + dnl AC_CHECK_HEADER("X11/extensions/XInput.h", : ,AC_DEFINE(_NO_XINPUT),) + dnl AC_CHECK_HEADER("X11/extensions/XI.h", : ,AC_DEFINE(_NO_XINPUT),) + dnl /usr/share/doc/XFree86-doc-4.2.0/Xi/lib.PS + + AC_CHECK_LIB(Xi, XOpenDevice, X_11LIB="-lXi -lX11" ,AC_DEFINE(_NO_XINPUT), $X_LIBS $X_PRE_LIBS $X_EXTRA_LIBS -lX11 ) + AC_CHECK_LIB(xkbui, XkbQueryExtension, X_11LIB="$X_11LIB -lxkbui" ,AC_DEFINE(_NO_XKB), $X_LIBS $X_PRE_LIBS $X_EXTRA_LIBS -lX11 -lm ) +fi + +gww_define_caps_for_alt="dontknow" +gww_nodynamic="no" +gww_needsstatic="no" +gww_ismac="no" +gww_iscygwin="no" +gww_needsstaticimages="no" +gww_rpath="" +AC_ARG_WITH(static-imagelibs, + [ --with-static-imagelibs Control whether to try using static image libaries], + [ + if test "$withval" \!= "no" ; then + gww_needsstaticimages="yes" + fi + dnl Mac doesn't ship with image libraries, so my builds should include + dnl static versions, else users won't have them. + + ]) + +oldLDFLAGS="$LDFLAGS" +LDFLAGS="$LDFLAGS -L/usr/local/lib" + +case "$host" in +*-apple-darwin*) + gww_ismac="yes" + AC_DEFINE(_CursorsMustBe16x16) + AC_DEFINE(_Keyboard,1) + AC_DEFINE(__Mac,1) + MACAPP=FontForge.app/Contents/Info.plist + gww_define_caps_for_alt="1" + +dnl fink puts stuff under /sw +dnl macports puts stuff under /opt/local + + if test "$CPPFLAGS" \!= "" >/dev/null ; then + TrustUser="yes" + elif test -d /sw/include >/dev/null ; then + CPPFLAGS="$CPPFLAGS -I/sw/include" + elif test -d /opt/local/include >/dev/null ; then + CPPFLAGS="$CPPFLAGS -I/opt/local/include" + fi + if test "$oldLDFLAGS" \!= "" >/dev/null ; then + TrustUser="yes" + elif test -d /sw/lib >/dev/null ; then + LDFLAGS="$LDFLAGS -L/sw/lib" + gww_rpath="-rpath /sw/lib" + elif test -d /opt/local/lib >/dev/null ; then + LDFLAGS="$LDFLAGS -L/opt/local/lib" + gww_rpath="-rpath /opt/local/lib" + fi + LIBS="-Wl,/System/Library/Frameworks/Carbon.framework/Carbon $LIBS" + LIBS="-Wl,/System/Library/Frameworks/CoreServices.framework/CoreServices $LIBS" + dnl I would like to be able to just leave the framework as a filename. But + dnl if I do that, libtool eats it and gcc doesn't get it and ld doesn't get + dnl it and we get undefined symbols. + + ;; +powerpc-*-*linux*) + AC_DEFINE(_Keyboard,3) + ;; +*sparc*) + AC_DEFINE(_Keyboard,2) + ;; +*-pc-cygwin*) + + AC_DEFINE(_BrokenBitmapImages) + AC_DEFINE(_ModKeysAutoRepeat) + AC_DEFINE(__CygWin,1) + gww_iscygwin="yes" + +dnl Although present on my cygwin system the Xi library does not load +dnl and crashes gdb if we attempt to use it. + + AC_DEFINE(_NO_XINPUT) + +dnl on cygwin the file we dlopen is not the expected filename. We must +dnl search for a libtool .la file (libpng.la for example) to tell us +dnl what name we should dlopen. Sadly cygwin doesn't always provide +dnl these => we must link statically, or load at start up. + +dnl so provide a simplistic function to check for the .la file +dnl AC_CHECK_LIB_LA(lib-name, action-if-found, action-if-missing) + +AC_DEFUN([AC_CHECK_LIB_LA], + [ + AC_CHECK_FILE(/lib/lib$1.la,[$2],[ + AC_CHECK_FILE(/usr/lib/lib$1.la,[$2],[ + AC_CHECK_FILE(/usr/local/lib/lib$1.la,[$2],[ + AC_CHECK_FILE(/usr/X11R6/lib/lib$1.la,[$2],[$3])])])]) + ]) + + ;; +esac + +AC_C_BIGENDIAN() + +AC_PROG_LIBTOOL + +AC_ARG_WITH(capslock-for-alt, + [ --with-capslock-for-alt Control whether to use capslock rather than alt/meta to alter behavior of tools in outline/bitmap windows], + [ + if test "$withval" \!= "2" ; then + gww_define_caps_for_alt="2" + elif test "$withval" \!= "no" ; then + gww_define_caps_for_alt="1" + else + gww_define_caps_for_alt="0" + fi + ]) +if test "$gww_define_caps_for_alt" \!= "dontknow" ; then + AC_DEFINE_UNQUOTED(FONTFORGE_CONFIG_CAPSLOCK_FOR_ALT,$gww_define_caps_for_alt) +fi + +AC_ARG_ENABLE(debug-raw-points, + [ --enable-debug-raw-points Add a raw mode to the points window of the debugger], + [ + if test "$enableval" \!= "no" ; then + AC_DEFINE(FONTFORGE_CONFIG_SHOW_RAW_POINTS) + fi + + ]) + +dnl One user seems to have messed up iconv on his system and can't get it +dnl to work. + +gww_uselessiconv="no" +AC_ARG_WITH(iconv, + [ --without-iconv Don't use the system's iconv(3) routines, use fontforge's instead], + [ + if test "$withval" = "no" ; then + gww_uselessiconv="yes" + fi + ]) + +AC_SUBST(FF_EXTRA_FILES) + +AC_SEARCH_LIBS(dlopen, dl) dnl some systems have this in libc (Darwin uses dyld) +AC_SEARCH_LIBS(inet_aton, resolv) dnl some systems have this in libc +if test "$gww_uselessiconv" = "no" ; then + AC_SEARCH_LIBS(libiconv, iconv) dnl linux has iconv in libc, mac,solaris have libiconv in libiconv, and a define to map iconv() to libiconv(), so we can't do the obvious check +fi + +python="yes" +python_prog="python" +AC_ARG_WITH(python, + [ --without-python Don't include a python interpreter], + [ + if test "$withval" = "no" >/dev/null 2>&1 ; then + python="no" + elif test "$withval" != "yes" >/dev/null 2>&1 ; then + python_prog="$withval" + fi + ], : ) +if test "$python" = "yes" ; then + # python thinks it knows where to find its headers and library. + # unfortunately on all my build systems that idea is incorrect. + # So we allow the user to specify the location manually. We + # ask python where it thinks things are, and we check some standard + # places. + py_headers="" + py_lib="" + AC_ARG_WITH(python-headers, + [ --with-python-headers Specify the directory containing the python headers], + [ + if test "$withval" != "no" >/dev/null 2>&1 ; then + py_headers="$withval" + if test "$py_headers" != "" -a \! -e "$py_headers" ; then + py_headers="" + fi + fi + ], : ) + AC_ARG_WITH(python-lib, + [ --with-python-lib Specify the python shared libary], + [ + if test "$withval" != "no" -a "$withval" != "yes" -a "$withval" != "" >/dev/null 2>&1 ; then + py_lib="$withval" + fi + ], : ) + echo -n "Checking for python..." + if $python_prog -c "import distutils.sysconfig ; print '%s' % distutils.sysconfig.get_config_var('VERSION')" ; then + PyVersion=`$python_prog -c "import distutils.sysconfig ; print '%s' % distutils.sysconfig.get_config_var('VERSION')"` + PySubVersion=`echo $PyVersion |sed -e 's/2.//'` + PyName="python$PyVersion" + if test "$PySubVersion" = "" ; then + python="no" + elif test "$PySubVersion" -le 2 ; then + python="no" + echo $ECHO_N "(need at least python 2.3) $ECHO_C" >&6 + else + PyInc=`$python_prog -c "import distutils.sysconfig ; print '%s' % distutils.sysconfig.get_config_var('INCLUDEPY')"` + if test "$py_headers" != "" -a -e "$py_headers" ; then + CPPFLAGS="$CPPFLAGS -I$py_headers" + elif test "$PyInc" != "" -a -e "$PyInc" ; then + CPPFLAGS="$CPPFLAGS -I$PyInc" + elif test -d /usr/include/$PyName ; then + CPPFLAGS="$CPPFLAGS -I/usr/include/$PyName" + elif test -d /usr/include/python ; then + CPPFLAGS="$CPPFLAGS -I/usr/include/python" + else + python="no" + fi + PyLib=`$python_prog -c "import distutils.sysconfig ; print '%s/%s' % (distutils.sysconfig.get_config_var('LIBPL'),distutils.sysconfig.get_config_var('LDLIBRARY'))"` + if test "$py_lib" != "" ; then + LIBS="$LIBS $py_lib" + elif test "$PyLib" != "" -a -e "$PyLib" ; then + LIBS="$LIBS $PyLib" + else + AC_SEARCH_LIBS(Py_Main, $PyName python, : , python="no") + fi + fi + else + python="no" + fi + echo $python +fi + +gww_dopy=no +gww_fflib=yes +AC_ARG_ENABLE(libff, + AC_HELP_STRING(--enable-libff, disable/enable building shared fontforge library), +[ + case $enableval in + no) + gww_fflib=no + ;; + esac +]) +if test "$python" = "no" ; then + AC_DEFINE(_NO_PYTHON) +fi +AC_DEFINE_UNQUOTED(PYTHON_LIB_NAME,"python$PyVersion") + +AC_ARG_ENABLE(pyextension, + AC_HELP_STRING(--enable-pyextension, disable/enable installing libfontforge as a python extension plugin), +[ + case $enableval in + yes) + if test "$gww_fflib" != "yes" -o "$python" = "no" ; then + echo FAILED --enable-pyextension requires that python be available and + echo " " that libfontforge be built "(--enable-libff)" + else + gww_dopy=yes + fi + ;; + esac +]) + +AC_SUBST(FINAL_TARGET) +AC_SUBST(O_EXTENSION) +if test "$gww_fflib" = "no" ; then + FINAL_TARGET=fontforge + O_EXTENSION=o +else + FINAL_TARGET=../libfontforge.la + O_EXTENSION=lo +fi + +ffscript="yes" +AC_ARG_WITH(native-script, + [ --without-native-script Don't include a legacy fontforge scripting interpreter], + [ + if test "$withval" = "no" >/dev/null 2>&1 ; then + ffscript="no" + fi + ], : ) +if test "$ffscript" = "no" ; then + AC_DEFINE(_NO_FFSCRIPT) +fi + +AC_CHECK_FUNC(tzset,:,AC_DEFINE(_NO_TZSET)) + +dnl Some old versions of lib(un)gif don't work for us, they've got the +dnl Function argument in the wrong place. So check the header files. +dnl check for both libgif and libungif, I think they use the same args. + +AC_CHECK_LIB(gif, DGifOpenFileName, [ +echo -n checking for ExtensionBlock.Function in gif_lib.h... +AC_TRY_COMPILE([#include ], [ ExtensionBlock foo; foo.Function=3; ], echo " " yes , [echo " " no + ac_cv_lib_ungif_DGifOpenFileName=no + AC_DEFINE(_NO_LIBUNGIF)]) +] , [ + AC_CHECK_LIB(ungif, DGifOpenFileName, [ + echo -n checking for ExtensionBlock.Function in gif_lib.h... + AC_TRY_COMPILE([#include ], [ ExtensionBlock foo; foo.Function=3; ], echo " " yes , [echo " " no + ac_cv_lib_ungif_DGifOpenFileName=no + AC_DEFINE(_NO_LIBUNGIF)]) + ] , AC_DEFINE(_NO_LIBUNGIF))]) + +dnl some people have installed libraries without include files. +dnl bloody useless thing to do, but check for both (don't need to check for +dnl zlib.h because we never use it directly, only used inside libpng) + +AC_CHECK_LIB(z, deflateEnd, : ,AC_DEFINE(_NO_LIBPNG), -lm) +AC_CHECK_LIB(png, png_create_read_struct, : ,[ + AC_CHECK_LIB(png12, png_create_read_struct, AC_DEFINE(_LIBPNG12), AC_DEFINE(_NO_LIBPNG), -lz -lm)], -lz -lm) +AC_CHECK_HEADER(png.h, : , AC_DEFINE(_NO_LIBPNG)) +AC_CHECK_LIB(jpeg, jpeg_CreateDecompress, : ,AC_DEFINE(_NO_LIBJPEG)) +AC_CHECK_HEADER(jpeglib.h, : , AC_DEFINE(_NO_LIBJPEG)) +AC_CHECK_LIB(tiff, TIFFOpen, : , AC_DEFINE(_NO_LIBTIFF), -lm ) +AC_CHECK_HEADER(tiffio.h, : , AC_DEFINE(_NO_LIBTIFF)) +AC_CHECK_LIB(spiro, TaggedSpiroCPsToBezier, : ,AC_DEFINE(_NO_LIBSPIRO)) +AC_CHECK_HEADER(spiroentrypoints.h, : , AC_DEFINE(_NO_LIBSPIRO)) +case "$host" in +*-pc-cygwin*) + AC_CHECK_LIB(xml2, xmlParseFile, : , AC_DEFINE(_NO_LIBXML), [-liconv -lz]) + ;; +*) + AC_CHECK_LIB(xml2, xmlParseFile, : , AC_DEFINE(_NO_LIBXML)) + ;; +esac + +if test "$gww_uselessiconv" = "no" ; then + AC_CHECK_HEADERS([iconv.h]) +fi +AC_CHECK_HEADERS([langinfo.h]) + +dnl linux has isnan in math.h, solaris puts it in ieeeefp.h + +AC_CHECK_HEADERS([ieeefp.h]) + +dnl linux has integer types in stdint.h, solaris, vms in inttypes.h + +AC_CHECK_HEADERS([stdint.h]) + +dnl Do we have libcairo + +AC_DEFINE(_NO_LIBCAIRO) + +dnl Do we have libpango + +AC_DEFINE(_NO_LIBPANGO) + +dnl many systems have freetype on /usr/X11R6/lib which isn't in the standard search path + +AC_DEFINE(_NO_FREETYPE) + +dnl older libc's don't have snprintf + +AC_CHECK_FUNC(snprintf, : , AC_DEFINE(_NO_SNPRINTF)) + +AC_C_LONG_DOUBLE +echo -n checking for long long ... +AC_TRY_COMPILE(,[long long foo=0x400000000000;],[ AC_DEFINE(_HAS_LONGLONG) + echo " " yes] , echo " " no ) + +dnl mac's don't have gettext, people have to use fink to install it +dnl used to check for gettext here, but we require a version with b_t_c +dnl and not all libintls have that. So check for it instead. +dnl sometimes it lives in libc so we can't dlopen it + +gww_has_gettext="yes" +AC_LINK_IFELSE([AC_LANG_CALL([],[bind_textdomain_codeset])], AC_DEFINE(_STATIC_LIBINTL) , [ + AC_CHECK_LIB(intl, bind_textdomain_codeset,: ,gww_has_gettext="no" )]) +if test $gww_has_gettext = yes >/dev/null ; then + AC_CHECK_HEADERS([libintl.h], : , gww_has_gettext="no") +fi + +gww_regular_link="no" +AC_ARG_WITH(regular-link, + [ --with-regular-link Don't try to dlopen libraries], + [ + if test "$withval" != "no" >/dev/null 2>&1 ; then + gww_regular_link="yes" + AC_DEFINE(NODYNAMIC) + gww_rpath="" + fi + ], : ) + +dnl If we can't/don't want to use dynamic libraries then we must link with +dnl the static libraries we've found + +AC_SUBST(STATIC_LIBS) +STATIC_LIBS= +if test "$gww_nodynamic" = "yes" -o "$gww_regular_link" = "yes"; then + if test "$gww_needsstatic" = "yes"; then + STATIC_LIBS="$STATIC_LIBS -static" + fi + if test "$ac_cv_lib_ungif_DGifOpenFileName" = "yes"; then + STATIC_LIBS="$STATIC_LIBS -lungif" + fi + if test "$ac_cv_lib_gif_DGifOpenFileName" = "yes"; then + STATIC_LIBS="$STATIC_LIBS -lgif" + fi + if test "$ac_cv_lib_png_png_create_read_struct" = "yes"; then + STATIC_LIBS="$STATIC_LIBS -lpng -lz" + fi + if test "$ac_cv_lib_png12_png_create_read_struct" = "yes"; then + STATIC_LIBS="$STATIC_LIBS -lpng12 -lz" + fi + if test "$ac_cv_lib_tiff_TIFFOpen" = "yes"; then + STATIC_LIBS="$STATIC_LIBS -ltiff" + fi + if test "$ac_cv_lib_jpeg_jpeg_CreateDecompress" = "yes"; then + STATIC_LIBS="$STATIC_LIBS -ljpeg" + fi + if test "$ac_cv_lib_xml2_xmlParseFile" = "yes"; then + STATIC_LIBS="$STATIC_LIBS -lxml2" + fi + if test "$ac_cv_lib_intl_bind_textdomain_codeset" = "yes"; then + STATIC_LIBS="$STATIC_LIBS -lintl" + fi + if test "$ac_cv_lib_spiro_TaggedSpiroCPsToBezier" = "yes"; then + STATIC_LIBS="$STATIC_LIBS -lspiro" + fi + AC_CHECK_LIB(uninameslist, UnicodeNameAnnot, [ + STATIC_LIBS="$STATIC_LIBS -luninameslist" + AC_DEFINE(_STATIC_LIBUNINAMESLIST) ] , AC_DEFINE(_NO_LIBUNINAMESLIST)) +fi + +if test "$gww_needsstaticimages" = "yes" -a "$gww_regular_link" = "no"; then + if test "$gww_needsstatic" = "yes"; then + STATIC_LIBS="$STATIC_LIBS -static" + fi + if test "$ac_cv_lib_gif_DGifOpenFileName" = "yes"; then + STATIC_LIBS="$STATIC_LIBS -lgif" + AC_DEFINE(_STATIC_LIBUNGIF) + fi + if test "$ac_cv_lib_ungif_DGifOpenFileName" = "yes"; then + STATIC_LIBS="$STATIC_LIBS -lungif" + AC_DEFINE(_STATIC_LIBUNGIF) + fi + if test "$ac_cv_lib_png_png_create_read_struct" = "yes"; then + STATIC_LIBS="$STATIC_LIBS -lpng -lz" + AC_DEFINE(_STATIC_LIBPNG) + fi + if test "$ac_cv_lib_png12_png_create_read_struct" = "yes"; then + STATIC_LIBS="$STATIC_LIBS -lpng12 -lz" + AC_DEFINE(_STATIC_LIBPNG) + fi + if test "$ac_cv_lib_tiff_TIFFOpen" = "yes"; then + STATIC_LIBS="$STATIC_LIBS -ltiff" + AC_DEFINE(_STATIC_LIBTIFF) + fi + if test "$ac_cv_lib_jpeg_jpeg_CreateDecompress" = "yes"; then + STATIC_LIBS="$STATIC_LIBS -ljpeg" + AC_DEFINE(_STATIC_LIBJPEG) + fi + if test "$ac_cv_lib_spiro_TaggedSpiroCPsToBezier" = "yes"; then + STATIC_LIBS="$STATIC_LIBS -lspiro" + AC_DEFINE(_STATIC_LIBSPIRO) + fi +fi +if test "$gww_nodynamic" != "yes" -a "$gww_regular_link" != "yes" -a \ + "$gww_needsstaticimages" != "yes" ; then +case "$host" in +*-pc-cygwin*) + if test "$ac_cv_lib_ungif_DGifOpenFileName" = "yes"; then + AC_CHECK_LIB_LA(ungif, :, [ STATIC_LIBS="$STATIC_LIBS -lungif" ; AC_DEFINE(_STATIC_LIBUNGIF)]) + fi + if test "$ac_cv_lib_png_png_create_read_struct" = "yes"; then + AC_CHECK_LIB_LA(png, :, [ STATIC_LIBS="$STATIC_LIBS -lpng -lz" ; AC_DEFINE(_STATIC_LIBPNG)]) + fi + if test "$ac_cv_lib_png12_png_create_read_struct" = "yes"; then + AC_CHECK_LIB_LA(png12, :, [ STATIC_LIBS="$STATIC_LIBS -lpng12 -lz" ; AC_DEFINE(_STATIC_LIBPNG12)]) + fi + if test "$ac_cv_lib_tiff_TIFFOpen" = "yes"; then + AC_CHECK_LIB_LA(tiff, :, [ STATIC_LIBS="$STATIC_LIBS -ltiff" ; AC_DEFINE(_STATIC_LIBTIFF)]) + fi + if test "$ac_cv_lib_spiro_TaggedSpiroCPsToBezier" = "yes"; then + AC_CHECK_LIB_LA(spiro, :, [ STATIC_LIBS="$STATIC_LIBS -lspiro" ; AC_DEFINE(_STATIC_LIBSPIRO)]) + fi + if test "$ac_cv_lib_jpeg_jpeg_CreateDecompress" = "yes"; then + AC_CHECK_LIB_LA(jpeg, :, [ STATIC_LIBS="$STATIC_LIBS -ljpeg" ; AC_DEFINE(_STATIC_LIBJPEG)]) + fi + if test "$ac_cv_lib_xml2_xmlParseFile" = "yes"; then + AC_CHECK_LIB_LA(xml2, :, [ STATIC_LIBS="$STATIC_LIBS -lxml2" ; AC_DEFINE(_STATIC_LIBXML2)]) + fi + ;; +esac +fi + +AC_ARG_ENABLE(type3, + [ --enable-type3 Control whether we build with support for type3/svg fonts containing multilayered drawing with strokes, fills, images, etc.], + [ + if test "$enableval" != "no" >/dev/null 2>&1 ; then + AC_DEFINE(FONTFORGE_CONFIG_TYPE3) + fi + ], : ) +AC_ARG_ENABLE(multilayer, + [ --enable-multilayer Control whether we build with support for type3/svg fonts containing multilayered drawing with strokes, fills, images, etc. (deprecated. Use --enable-type3 instead)], + [ + if test "$enableval" != "no" >/dev/null 2>&1 ; then + AC_DEFINE(FONTFORGE_CONFIG_TYPE3) + fi + ], : ) + +AC_ARG_ENABLE(devicetables, + AS_HELP_STRING([--enable-devicetables], [Control whether we build with support for device tables which allow fine control of kerning (etc.) at small point sizes]), + [ + if test "$enableval" != "no" >/dev/null 2>&1 ; then + AC_DEFINE(FONTFORGE_CONFIG_DEVICETABLES) + fi + ], AC_DEFINE(FONTFORGE_CONFIG_DEVICETABLES) ) + +AC_ARG_ENABLE(double, + AS_HELP_STRING([--enable-double], [Control whether fontforge uses doubles internally (normally it uses floats)]), + [ + if test "$enableval" != "no" >/dev/null 2>&1 ; then + AC_DEFINE(FONTFORGE_CONFIG_USE_DOUBLE) + fi + ], : ) +AC_ARG_ENABLE(longdouble, + AS_HELP_STRING([--enable-longdouble], [Control whether fontforge uses long doubles internally (normally it uses floats)]), + [ + if test "$enableval" != "no" >/dev/null 2>&1 ; then + AC_DEFINE(FONTFORGE_CONFIG_USE_LONGDOUBLE) + fi + ], : ) +AC_ARG_ENABLE(pasteafter, + AS_HELP_STRING([--enable-pasteafter], [Control whether fontforge has a paste after command (Useful for making words?)]), + [ + if test "$enableval" != "no" >/dev/null 2>&1 ; then + AC_DEFINE(FONTFORGE_CONFIG_PASTEAFTER) + fi + ], : ) +AC_ARG_ENABLE(gb12345, + AS_HELP_STRING([--enable-gb12345], [Control whether fontforge understands the gb12345 encoding]), + [ + if test "$enableval" != "no" >/dev/null 2>&1 ; then + AC_DEFINE(FONTFORGE_CONFIG_GB12345) + fi + ], : ) +AC_ARG_ENABLE(tilepath, + AS_HELP_STRING([--enable-tilepath], [Control whether fontforge has a tile path command (a variant of expand stroke)]), + [ + if test "$enableval" != "no" >/dev/null 2>&1 ; then + AC_DEFINE(FONTFORGE_CONFIG_TILEPATH) + fi + ], : ) + +test -d libs || mkdir libs + +AC_SUBST(WFLAGS) +if test "$GCC" = yes; then + WFLAGS="-Wmissing-prototypes -Wunused -Wimplicit -Wreturn-type -Wparentheses -Wformat -Wchar-subscripts" +else + WFLAGS="" +fi + +dnl LIBS="$LIBS $gww_rpath" +dnl The above causes problems when creating shared libraries. The rpath option +dnl is overloaded. When creating an executable it means directories to search +dnl for shared libraries (at load time). When creating a shared library it means +dnl the ultimate location of the library. There doesn't seem to be a way of +dnl saying where to look for other libraries linked into this one. Which is +dnl a pity. + + +AC_SUBST(VERSION) +VERSION=`cat $ac_confdir/VERSION` + +if test "x$prefix" != xNONE; then + real_prefix="$prefix" +else + real_prefix="$ac_default_prefix" +fi + +PY= +if test "$gww_dopy" = "yes" >/dev/null 2>&1 ; then + AC_SUBST(PYINCLUDE) + AC_SUBST(PYDEFINES) + AC_SUBST(PYLIBS) + PYINCLUDE= + PYDEFINES="('PREFIX','\"$real_prefix\"')" + if test "$gww_ismac" = "yes" >/dev/null 2>&1 ; then + PYDEFINES="$PYDEFINES, ('__Mac','1')" + elif test "$gww_iscygwin" = "yes" >/dev/null 2>&1 ; then + PYDEFINES="$PYDEFINES, ('__CygWin','1')" + fi + if test "$ac_cv_lib_dl_dlopen" = "yes" >/dev/null 2>&1 ; then + PYLIBS="'dl'" + else + PYLIBS="" + fi + PY=pyhook/setup.py +fi + +GTFF= +if test -e gtkui/Makefile.in -a \( -e /usr/include/gtk-2.0/gtk/gtk.h -o -e /sw/include/gtk-2.0/gtk/gtk.h \) ; then + GTFF=gtkui/Makefile +fi + + +cp $ac_confdir/Makefile.dynamic.in $ac_confdir/Makefile.in +cp $ac_confdir/Unicode/Makefile.dynamic.in $ac_confdir/Unicode/Makefile.in +cp $ac_confdir/gutils/Makefile.dynamic.in $ac_confdir/gutils/Makefile.in +cp $ac_confdir/gdraw/Makefile.dynamic.in $ac_confdir/gdraw/Makefile.in +cp $ac_confdir/fontforge/Makefile.dynamic.in $ac_confdir/fontforge/Makefile.in +UMAP= +if test -e umap >/dev/null 2>&1 ; then + cp $ac_confdir/umap/Makefile.dynamic.in $ac_confdir/umap/Makefile.in + UMAP=umap/Makefile +fi +AC_OUTPUT( Makefile Unicode/Makefile gutils/Makefile gdraw/Makefile fontforge/Makefile plugins/Makefile systemspecific fontforge.pc $PY $GTFF $MACKEYS $UMAP ) + +echo Configuration defines: $DEFS +echo CFLAGS: $CFLAGS +if test "$STATIC_LIBS" != ""; then + echo Non DlOpenable or Static Libraries: $STATIC_LIBS +fi + +if ! echo $PATH | tr : \\n | grep -x $real_prefix/bin >/dev/null ; then + echo " *******************************************************************" + echo " * You do not have $real_prefix/bin in your PATH environment variable *" + echo " *******************************************************************" + echo +fi + +if test "$no_x" = "yes"; then + echo " *******************************************************************" + echo " * This version of fontforge will only run scripts. No X libraries *" + echo " * (or X include files or some such) were found so there is NO user*" + echo " * interface!!!!! If you want a UI try installing X11 on your *" + echo " * system. *" + echo " * Caveat: You will probably need to install two packages, the *" + echo " * base X11 package and the developer SDK package *" + echo " *******************************************************************" + case "$host" in + *-apple-darwin*) + echo "" + echo "X11 is optional software on the mac, it does not install automatically" + echo " but X11User it is on CD 3 of the OS/X install disks, and X11SDK is on" + echo " the Xcode CD. You must install both packages for fontforge to build" + echo " with a user interface" + ;; + esac + echo +fi +if test "$gww_has_gettext" = "no"; then + echo " *******************************************************************" + echo " * Your system does not have the gettext package installed. This *" + echo " * means that fontforge cannot localize its user interface and all *" + echo " * messages will be in English. You might want to install libintl. *" + if test "$gww_ismac" = "yes"; then + echo " * Unfortunately Mac OS/X does not ship with gettext. You can find *" + echo " * it as part of the standard fink download at: *" + echo " * http://fink.sourceforge.net/ *" + echo " * of from macports: *" + echo " * http://www.macports.org/ *" + fi + echo " *******************************************************************" +fi +if test "$gww_has_pkg_config" = "no"; then + echo "*** Your system does not have pkg-config installed, so I can't figure out" + echo "*** if you have pango on your machine. If you do, set --with-pango-headers" + echo "*** and --with-pango-lib to specify the options needed to build with pango" + if test "$gww_ismac" = "yes"; then + echo " *** Unfortunately Mac OS/X does not ship with pango. You can find" + echo " *** it as part of the standard fink download at:" + echo " *** http://fink.sourceforge.net/" + echo " *** of from macports:" + echo " *** http://www.macports.org/" + fi +elif test "$gww_haspango" = "no"; then + if test "$gww_ismac" = "yes"; then + echo " *** Unfortunately Mac OS/X does not ship with pango. You can find" + echo " *** it as part of the standard fink download at:" + echo " *** http://fink.sourceforge.net/" + echo " *** of from macports:" + echo " *** http://www.macports.org/" + fi +fi + +dnl EOF diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/Makefile.in b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/Makefile.in new file mode 100644 index 00000000000..03eb261b484 --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/Makefile.in @@ -0,0 +1,71 @@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ + +sharedir = @prefix@/share/fontforge +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +top_builddir = .. +VPATH = @srcdir@ +bindir = @bindir@ +libdir = @libdir@ +plugindir = $(sharedir)/plugins + +LIBTOOL = @LIBTOOL@ +CC = @CC@ +O = @O_EXTENSION@ + +STATIC_LIBS = @STATIC_LIBS@ + +FF_VERSION=1 +FF_REVISION=0 +FF_AGE=0 + +fontforge_LIBOBJECTS = autohint.$O \ + clipnoui.$O cvundoes.$O dumppfa.$O \ + encoding.$O \ + featurefile.$O fontviewbase.$O fvcomposit.$O fvfonts.$O \ + lookups.$O macbinary.$O \ + macenc.$O mathconstants.$O mm.$O namelist.$O noprefs.$O nouiutil.$O \ + parsepfa.$O \ + parsettfatt.$O parsettf.$O parsettfvar.$O \ + psread.$O pua.$O python.$O \ + sfd1.$O splinechar.$O splinefill.$O \ + splinefont.$O splineorder2.$O splineoverlap.$O splinerefigure.$O \ + splinesave.$O splinesaveafm.$O splinestroke.$O splineutil2.$O splineutil.$O \ + start.$O stemdb.$O tottfaat.$O tottfgpos.$O tottf.$O \ + ttfspecial.$O + +_CFLAGS = -I$(top_builddir)/inc -I$(top_srcdir)/inc -I$(srcdir) -I. @WFLAGS@ $(XCFLAGS)\ + @DEFS@ '-DSHAREDIR="$(sharedir)"' -DLIBDIR='"$(libdir)"' \ + @CPPFLAGS@ '-DPREFIX="@prefix@"' +CFLAGS = @CFLAGS@ @CPPFLAGS@ $(_CFLAGS) + +LDFLAGS = @LDFLAGS@ +LIBLIBS = -rpath $(libdir) ../libgutils.la ../libgunicode.la @LIBS@ $(STATIC_LIBS) -lm + +../libfontforge.la: $(fontforge_LIBOBJECTS) libstamp.pre + sed -e '1,$$ s/REPLACE_ME_WITH_MAJOR_VERSION/$(FF_VERSION)/' -e '1,$$ s/REPLACE_ME_WITH_MINOR_VERSION/$(FF_REVISION)/' < $(srcdir)/libstamp.pre > libstamp.c + $(LIBTOOL) --mode=compile $(CC) $(CFLAGS) -c libstamp.c + $(LIBTOOL) --mode=link $(CC) -no-undefined $(CFLAGS) @LDFLAGS@ \ + -o ../libfontforge.la $(fontforge_LIBOBJECTS) libstamp.lo \ + -rpath $(libdir) -version-info $(FF_VERSION):$(FF_REVISION):$(FF_AGE) + +%.o: %.c + +%.o: %.c $(srcdir)/splinefont.h $(srcdir)/views.h $(srcdir)/stemdb.h $(srcdir)/ttf.h $(srcdir)/unicoderange.h $(srcdir)/psfont.h $(srcdir)/edgelist.h $(srcdir)/edgelist2.h $(srcdir)/uiinterface.h $(srcdir)/fontforgevw.h + $(CC) $(CFLAGS) -c $< + +%.lo: %.c + +%.lo: %.c $(srcdir)/splinefont.h $(srcdir)/views.h $(srcdir)/stemdb.h $(srcdir)/ttf.h $(srcdir)/unicoderange.h $(srcdir)/psfont.h $(srcdir)/edgelist.h $(srcdir)/edgelist2.h $(srcdir)/uiinterface.h $(srcdir)/fontforgevw.h + $(LIBTOOL) --mode=compile $(CC) $(CFLAGS) -c $< + +clean: + -rm -f ../libfontforge.la libstamp.c + -rm -f *.o + -rm -f *.lo + -rm -rf .libs + +distclean cleaner: clean + -rm -f Makefile + diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/PfEd.h b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/PfEd.h new file mode 100644 index 00000000000..d7d5d8fa670 --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/PfEd.h @@ -0,0 +1,218 @@ +/* Copyright (C) 2008 by George Williams */ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _PFED_H +# define _PFED_H +/* The PfEd table (from PfaEdit, former name of FontForge) is designed to */ +/* store information useful for editing the font. This includes stuff like */ +/* guidelines, background layers, spiro layers, comments, lookup names, etc*/ +/* The idea is that much useful information can be retrieved even after the */ +/* font has been generated into its final form: ttf/otf */ +/* It is something of a catch all table composed of many subtables, each of */ +/* which preserves one particular item. I expect more subtables will be */ +/* added as I, or others, think of more things worth preserving. */ + + +# ifndef CHR +# define CHR(ch1,ch2,ch3,ch4) (((ch1)<<24)|((ch2)<<16)|((ch3)<<8)|(ch4)) +# endif + +/* 'PfEd' table format is as follows... */ +/* uint32 version number 0x00010000 */ +/* uint32 subtable count */ +/* struct { uint32 tab, offset } tag/offset for first subtable */ +/* struct { uint32 tab, offset } tag/offset for second subtable */ +/* ... */ + +/* 'PfEd' 'fcmt' font comment subtable format */ +/* short version number 0/1 */ +/* short string length */ +/* version 0=>String in latin1 (should be ASCII), version 1=>utf8*/ + + /* 'PfEd' 'cmnt' glyph comment subtable format */ + /* THIS VERSION IS DEPRECATED IN FAVOR OF VERSION 1 DESCRIBED BELOW */ + /* short version number 0 */ + /* short count-of-ranges */ + /* struct { short start-glyph, end-glyph, short offset } */ + /* ... */ + /* foreach glyph >=start-glyph, <=end-glyph(+1) */ + /* uint32 offset to glyph comment string (in UCS2)*/ + /* ... */ + /* And one last offset pointing beyong the end of the last string to enable length calculations */ + /* String table in UCS2 (NUL terminated). All offsets from start*/ + /* of subtable */ + +/* 'PfEd' 'cmnt' glyph comment subtable format */ +/* New version of 'cmnt' which uses utf8 rather than UCS2 */ +/* short version number 1 */ +/* short count-of-ranges */ +/* struct { short start-glyph, end-glyph, short offset } */ +/* ... */ +/* foreach glyph >=start-glyph, <=end-glyph(+1) */ +/* uint32 offset to glyph comment string (in utf8)*/ +/* ... */ +/* And one last offset pointing beyong the end of the last string to enable length calculations */ +/* String table in utf8 (NUL terminated). All offsets from start*/ +/* of subtable */ + +/* 'PfEd' 'cvt ' cvt comment subtable format */ +/* short version number 0 */ +/* short size of cvt comment array (might be less that cvt) */ +/* ushort offset[size] to utf8 strings describing cvt entries */ +/* (strings are NUL terminated) */ +/* String table in utf8 (NUL terminated). All offsets from start*/ +/* of subtable */ + +/* 'PfEd' 'colr' glyph colour subtable */ +/* short version number 0 */ +/* short count-of-ranges */ +/* struct { short start-glyph, end-glyph, uint32 colour (rgb) } */ + +/* 'PfEd' 'GPOS' GPOS lookup/subtable/anchor names */ +/* short version number 0 */ +/* short count-of-lookups */ +/* struct { short offset name, offset subtables; } */ +/* A subtable: */ +/* short count-of-subtables */ +/* struct { short offset name, offset anchors; } */ +/* An anchor */ +/* short count-of-anchors */ +/* struct { short offset name; } */ +/* string data (utf8, nul terminated) */ +/* (all offsets from start of subtable) */ + +/* 'PfEd' 'GSUB' GSUB lookup/subtable names */ +/* Same as GPOS (anchors will always be NULL) */ + +/* The next two tables 'guid' and 'layr' will make use of the */ +/* following data type. The glyph_layer. */ +/* short contour-count */ +/* short image-count (always 0 for now) */ +/* struct { ushort offset; ushort name-off}[contour-count] */ +/* struct { ??? }[image-count] */ +/* Each contour consists of one byte of command and a random */ +/* amount of data dependant on the command. */ +/* See below for a description of the command verbs */ +/* string data in utf8 */ +/* (offsets relative to start of glyph_layer structure ) */ + +/* 'PfEd' 'guid' Horizontal/Vertical guideline data */ +/* short version number 0 */ +/* short # vertical guidelines */ +/* short # horizontal guidelines */ +/* short mbz */ +/* offset guide spline data -- specifies all guides as splines */ +/* May be NULL */ +/* struct[# vert guidelines] { short x; short offset name} */ +/* struct[# h guidelines] { short y; short offset name} */ +/* a glyph_layer (includes all guides, even those listed above) */ +/* (all offsets, except those in the glyph_layer, relative to start of subtable) */ + +/* 'PfEd' 'layr' layer data */ +/* short version number 0 */ +/* short layer-count */ +/* struct { short typeflags; short offset-name; uint32 offset-to-layer-data; } */ +/* the layer type is 2=>quadratic, 3=>PostScript, 1=>spiro */ +/* 0x102=>quadratic fore, 0x103=>PS fore */ +/* A layer: */ +/* short count-of-ranges */ +/* struct { short start-glyph, end-glyph, uint32 offset } */ +/* ... */ +/* foreach glyph >=start-glyph, <=end-glyph */ +/* uint32 offset to per-glyph outline data */ +/* many glyph_layers */ +/* (all offsets, except those in the glyph_layers, relative to start of subtable) */ + + /* Main table tag */ +# define PfEd_TAG CHR('P','f','E','d') + + /* Subtable tags */ +# define fcmt_TAG CHR('f','c','m','t') /* Font Comment */ +# define flog_TAG CHR('f','l','o','g') /* Font Log */ +# define cmnt_TAG CHR('c','m','n','t') /* Glyph Comments */ +# define cvtc_TAG CHR('c','v','t','c') /* Comments for each cvt entry */ +# define colr_TAG CHR('c','o','l','r') /* Glyph color flags */ +# ifndef GPOS_TAG +# define GPOS_TAG CHR('G','P','O','S') /* Names for GPOS lookups */ +# define GSUB_TAG CHR('G','S','U','B') /* Names for GSUB lookups */ +# endif +# define guid_TAG CHR('g','u','i','d') /* Guideline data */ +# define layr_TAG CHR('l','a','y','r') /* Any layers which aren't part of the font */ + /* Backgrounds, spiros, etc. */ + + +/* The layer commands used to draw quadratic and cubic layers have two */ +/* componants: A verb, which says what to do, and a modifier which says */ +/* how the data are stored. So a command looks like (verb)|(modifier) */ +/* A moveto command with byte data looks like (V_MoveTo|V_B) */ +/* The two commands to end a contour (V_Close and V_End) take no data */ +/* and use no modifier */ + +/* layr subtable contour construction verb modifiers specifying data types */ +# define V_B 0 /* data are signed bytes */ +# define V_S 1 /* data are signed shorts */ +# define V_F 2 /* data are fixed longs, divide by 256.0 */ + +/* layr subtable contour construction verbs */ +# define V_MoveTo 0 /* Start contour, absolute data (2 coords) */ +# define V_LineTo 4 /* Straight line, relative data (2 coords) */ +# define V_HLineTo 8 /* Horizontal line, relative (1 coord, x-off) */ +# define V_VLineTo 12 /* Vertical line, relative (1 coord, y-off) */ + +# define V_QCurveTo 16 /* Quadratic spline, rel, rel (4 coords, cp, p) */ +# define V_QImplicit 20 /* Quadratic spline, rel (2 coords, cp) */ + /* May only occur after a V_QCurveTo or V_QImplicit (may not start contour) */ + /* Must be followed by a V_QCurveTo or V_QImplicit (this may end contour) */ + /* The on-curve point is implicit by averaging the given cp with the cp in the next verb */ +# define V_QHImplicit 24 /* Quadratic spline, rel (1 coord, cp.x) */ +# define V_QVImplicit 28 /* Quadratic spline, rel (1 coord, cp.y) */ + +# define V_CurveTo 32 /* Cubic spline, rel, rel (6 coords, cp1, cp2, p) */ +# define V_VHCurveTo 36 /* Cubic spline, rel, rel (4 coords, cp1.y cp2.* p.x) */ + /* cp1.x == current.y, p.y == cp2.y */ +# define V_HVCurveTo 40 /* Cubic spline, rel, rel (4 coords, cp1.x cp2.* p.y) */ + +# define V_Close 44 /* Close path (optionally adding a line) no data */ +# define V_End 45 /* End path (leave open) no data */ + +#define COM_MOD(com) ((com)&3) +#define COM_VERB(com) ((com)&~3) + +/* the layer commands used to draw spiro layers are the standard spiro verbs */ +/* these will always take fixed long data (V_L) as described above */ +# ifndef SPIRO_OPEN_CONTOUR +# define SPIRO_OPEN_CONTOUR '{' +# define SPIRO_CORNER 'v' +# define SPIRO_G4 'o' +# define SPIRO_G2 'c' +# define SPIRO_LEFT '[' +# define SPIRO_RIGHT ']' +# define SPIRO_END 'z' +# endif +# define SPIRO_CLOSE_CONTOUR '}' + +#endif /* _PFED_H */ diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/autohint.c b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/autohint.c new file mode 100644 index 00000000000..a55a3d3d637 --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/autohint.c @@ -0,0 +1,2143 @@ +/* Copyright (C) 2000-2008 by George Williams */ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "pfaedit.h" +#include +#include +#include "splinefont.h" +#include "views.h" +#include "stemdb.h" +#include +#include +#include "edgelist.h" + +/* to create a type 1 font we must come up with the following entries for the + private dictionary: + BlueValues -- an array of 2n entries where Blue[2i]0 + OtherBlues -- (optional) OtherBlue[i]<0 + (blue zones should be at least 3 units appart) + StdHW -- (o) array with one entry, standard hstem height + StdVW -- (o) ditto vstem width + StemSnapH -- (o) up to 12 numbers containing various hstem heights (includes StdHW), small widths first + StemSnapV -- (o) ditto, vstem +This file has routines to figure out at least some of these + +Also other routines to guess at good per-character hints +*/ + +static void AddBlue(real val, real array[5], int force) { + val = rint(val); + if ( !force && (valarray[0]+array[1] )) +return; /* Outside of one sd */ + if ( array[3]==0 && array[4]==0 ) + array[3] = array[4] = val; + else if ( val>array[4] ) + array[4] = val; + else if ( valzone2[3] && zone1[3]<=zone2[3]) || + (zone2[4]+3>zone1[3] && zone2[3]<=zone1[3]) )) { + if (( zone2[0]zone1[0]+zone1[1] ) && + ( zone1[0]zone2[0]+zone2[1] )) + /* the means of the zones are too far appart, don't merge em */; + else { + if ( zone1[0]zone2[1] ) zone2[1] = zone1[1]; + } + zone1[2] = 0; + } +} + +/* I can deal with latin, greek and cyrillic because the they all come from */ +/* the same set of letter shapes and have all evolved together and have */ +/* various common features (ascenders, descenders, lower case, etc.). Other */ +/* scripts don't fit */ +void FindBlues( SplineFont *sf, int layer, real blues[14], real otherblues[10]) { + real caph[5], xh[5], ascenth[5], digith[5], descenth[5], base[5]; + real otherdigits[5]; + int i, j, k; + DBounds b; + + /* Go through once to get some idea of the average value so we can weed */ + /* out undesireables */ + caph[0] = caph[1] = caph[2] = xh[0] = xh[1] = xh[2] = 0; + ascenth[0] = ascenth[1] = ascenth[2] = digith[0] = digith[1] = digith[2] = 0; + descenth[0] = descenth[1] = descenth[2] = base[0] = base[1] = base[2] = 0; + otherdigits[0] = otherdigits[1] = otherdigits[2] = 0; + for ( i=0; iglyphcnt; ++i ) { + if ( sf->glyphs[i]!=NULL && sf->glyphs[i]->layers[layer].splines!=NULL ) { + int enc = sf->glyphs[i]->unicodeenc; + const unichar_t *upt; + if ( enc<0x10000 && isalnum(enc) && + ((enc>=32 && enc<128 ) || enc == 0xfe || enc==0xf0 || enc==0xdf || + enc==0x131 || + (enc>=0x391 && enc<=0x3f3 ) || + (enc>=0x400 && enc<=0x4e9 ) )) { + /* no accented characters (or ligatures) */ + if ( unicode_alternates[enc>>8]!=NULL && + (upt =unicode_alternates[enc>>8][enc&0xff])!=NULL && + upt[1]!='\0' ) + continue; + SplineCharFindBounds(sf->glyphs[i],&b); + if ( b.miny==0 && b.maxy==0 ) + continue; + if ( enc=='g' || enc=='j' || enc=='p' || enc=='q' || enc=='y' || + enc==0xfe || + enc==0x3c1 /* rho */ || + enc==0x3c6 /* phi */ || + enc==0x3c7 /* chi */ || + enc==0x3c8 /* psi */ || + enc==0x440 /* cyr er */ || + enc==0x443 /* cyr u */ || + enc==0x444 /* cyr ef */) { + descenth[0] += b.miny; + descenth[1] += b.miny*b.miny; + ++descenth[2]; + } else if ( enc=='x' || enc=='r' || enc=='o' || enc=='e' || + enc=='s' || enc=='c' || enc=='h' || enc=='k' || + enc=='l' || enc=='m' || enc=='n' || + enc==0x3b5 /* epsilon */ || + enc==0x3b9 /* iota */ || + enc==0x3ba /* kappa */ || + enc==0x3bf /* omicron */ || + enc==0x3c3 /* sigma */ || + enc==0x3c5 /* upsilon */ || + enc==0x430 /* cyr a */ || + enc==0x432 /* cyr ve */ || + enc==0x433 /* cyr ge */ || + enc==0x435 /* cyr e */ || + enc==0x436 /* cyr zhe */ || + enc==0x438 /* cyr i */ || + enc==0x43a /* cyr ka */ || + enc==0x43d /* cyr en */ || + enc==0x43e /* cyr o */ || + enc==0x441 /* cyr es */ || + enc==0x445 /* cyr ha */ || + enc==0x447 /* cyr che */ || + enc==0x448 /* cyr sha */ || + enc==0x44f /* cyr ya */ ){ + base[0] += b.miny; + base[1] += b.miny*b.miny; + ++base[2]; + } + /* careful of lowercase digits, 6 and 8 should be ascenders */ + if ( enc=='6' || enc=='8' ) { + digith[0] += b.maxy; + digith[1] += b.maxy*b.maxy; + ++digith[2]; + } else if ( enc<0x10000 && isdigit(enc) ) { + otherdigits[0] += b.maxy; + otherdigits[1] += b.maxy*b.maxy; + ++otherdigits[2]; + } else if ( enc<0x10000 && isupper(enc) && enc!=0x462 && enc!=0x490 ) { + caph[0] += b.maxy; + caph[1] += b.maxy*b.maxy; + ++caph[2]; + } else if ( enc=='b' || enc=='d' || enc=='f' || enc=='h' || enc=='k' || + enc == 'l' || enc==0xf0 || enc==0xfe || enc == 0xdf || + enc == 0x3b2 || enc==0x3b6 || enc==0x3b8 || enc==0x3bb || + enc == 0x3be || + enc == 0x431 /* cyr be */ /* || enc == 0x444 - ef may have varible height */) { + ascenth[0] += b.maxy; + ascenth[1] += b.maxy*b.maxy; + ++ascenth[2]; + } else if ( enc=='c' || enc=='e' || enc=='o' || enc=='s' || enc=='u' || + enc=='u' || enc=='v' || enc=='w' || enc=='x' || enc=='y' || + enc=='z' || + enc==0x3b5 /* epsilon */ || + enc==0x3b9 /* iota */ || + enc==0x3ba /* kappa */ || + enc==0x3bc /* mu */ || + enc==0x3bd /* nu */ || + enc==0x3bf /* omicron */ || + enc==0x3c0 /* pi */ || + enc==0x3c1 /* rho */ || + enc==0x3c5 /* upsilon */ || + enc==0x433 /* cyr ge */ || + enc==0x435 /* cyr e */ || + enc==0x436 /* cyr zhe */ || + enc==0x438 /* cyr i */ || + enc==0x43b /* cyr el */ || + enc==0x43d /* cyr en */ || + enc==0x43e /* cyr o */ || + enc==0x43f /* cyr pe */ || + enc==0x440 /* cyr er */ || + enc==0x441 /* cyr es */ || + enc==0x442 /* cyr te */ || + enc==0x443 /* cyr u */ || + enc==0x445 /* cyr ha */ || + enc==0x446 /* cyr tse */ || + enc==0x447 /* cyr che */ || + enc==0x448 /* cyr sha */ || + enc==0x449 /* cyr shcha */ || + enc==0x44a /* cyr hard sign */ || + enc==0x44b /* cyr yery */ || + enc==0x44c /* cyr soft sign */ || + enc==0x44d /* cyr reversed e */ || + enc==0x44f /* cyr ya */ ) { + xh[0] += b.maxy; + xh[1] += b.maxy*b.maxy; + ++xh[2]; + } + } + } + if ( !ff_progress_next()) + break; + } + if ( otherdigits[2]>0 && digith[2]>0 ) { + if ( otherdigits[0]/otherdigits[2] >= .95*digith[0]/digith[2] ) { + /* all digits are about the same height, not lowercase */ + digith[0] += otherdigits[0]; + digith[1] += otherdigits[1]; + digith[2] += otherdigits[2]; + } + } + + if ( xh[2]>1 ) { + xh[1] = sqrt((xh[1]-xh[0]*xh[0]/xh[2])/(xh[2]-1)); + xh[0] /= xh[2]; + } + if ( ascenth[2]>1 ) { + ascenth[1] = sqrt((ascenth[1]-ascenth[0]*ascenth[0]/ascenth[2])/(ascenth[2]-1)); + ascenth[0] /= ascenth[2]; + } + if ( caph[2]>1 ) { + caph[1] = sqrt((caph[1]-caph[0]*caph[0]/caph[2])/(caph[2]-1)); + caph[0] /= caph[2]; + } + if ( digith[2]>1 ) { + digith[1] = sqrt((digith[1]-digith[0]*digith[0]/digith[2])/(digith[2]-1)); + digith[0] /= digith[2]; + } + if ( base[2]>1 ) { + base[1] = sqrt((base[1]-base[0]*base[0]/base[2])/(base[2]-1)); + base[0] /= base[2]; + } + if ( descenth[2]>1 ) { + descenth[1] = sqrt((descenth[1]-descenth[0]*descenth[0]/descenth[2])/(descenth[2]-1)); + descenth[0] /= descenth[2]; + } + + /* we'll accept values between +/- 1sd of the mean */ + /* array[0] == mean, array[1] == sd, array[2] == cnt, array[3]=min, array[4]==max */ + if ( base[0]+base[1]<0 ) base[1] = -base[0]; /* Make sure 0 is within the base bluezone */ + caph[3] = caph[4] = 0; + xh[3] = xh[4] = 0; + ascenth[3] = ascenth[4] = 0; + digith[3] = digith[4] = 0; + descenth[3] = descenth[4] = 0; + base[3] = base[4] = 0; + for ( i=0; iglyphcnt; ++i ) if ( sf->glyphs[i]!=NULL ) { + int enc = sf->glyphs[i]->unicodeenc; + const unichar_t *upt; + if ( enc<0x10000 && isalnum(enc) && + ((enc>=32 && enc<128 ) || enc == 0xfe || enc==0xf0 || enc==0xdf || + (enc>=0x391 && enc<=0x3f3 ) || + (enc>=0x400 && enc<=0x4e9 ) )) { + /* no accented characters (or ligatures) */ + if ( unicode_alternates[enc>>8]!=NULL && + (upt =unicode_alternates[enc>>8][enc&0xff])!=NULL && + upt[1]!='\0' ) + continue; + SplineCharFindBounds(sf->glyphs[i],&b); + if ( b.miny==0 && b.maxy==0 ) + continue; + if ( enc=='g' || enc=='j' || enc=='p' || enc=='q' || enc=='y' || + enc==0xfe || enc == 0x3c6 || enc==0x3c8 || + enc==0x440 || enc==0x443 || enc==0x444) { + AddBlue(b.miny,descenth,false); + } else { + /* O and o get forced into the baseline blue value even if they*/ + /* are beyond 1 sd */ + AddBlue(b.miny,base,enc=='O' || enc=='o'); + } + if ( enc<0x10000 && isdigit(enc)) { + AddBlue(b.maxy,digith,false); + } else if ( enc<0x10000 && isupper(enc)) { + AddBlue(b.maxy,caph,enc=='O'); + } else if ( enc=='b' || enc=='d' || enc=='f' || enc=='h' || enc=='k' || + enc == 'l' || enc=='t' || enc==0xf0 || enc==0xfe || enc == 0xdf || + enc == 0x3b2 || enc==0x3b6 || enc==0x3b8 || enc==0x3bb || + enc == 0x3be || + enc == 0x431 ) { + AddBlue(b.maxy,ascenth,false); + } else if ( enc=='c' || enc=='e' || enc=='o' || enc=='s' || enc=='u' || + enc=='u' || enc=='v' || enc=='w' || enc=='x' || enc=='y' || + enc=='z' || + enc==0x3b5 /* epsilon */ || + enc==0x3b9 /* iota */ || + enc==0x3ba /* kappa */ || + enc==0x3bc /* mu */ || + enc==0x3bd /* nu */ || + enc==0x3bf /* omicron */ || + enc==0x3c0 /* pi */ || + enc==0x3c1 /* rho */ || + enc==0x3c5 /* upsilon */ || + enc==0x433 /* cyr ge */ || + enc==0x435 /* cyr e */ || + enc==0x436 /* cyr zhe */ || + enc==0x438 /* cyr i */ || + enc==0x43b /* cyr el */ || + enc==0x43d /* cyr en */ || + enc==0x43e /* cyr o */ || + enc==0x43f /* cyr pe */ || + enc==0x440 /* cyr er */ || + enc==0x441 /* cyr es */ || + enc==0x442 /* cyr te */ || + enc==0x443 /* cyr u */ || + enc==0x445 /* cyr ha */ || + enc==0x446 /* cyr tse */ || + enc==0x447 /* cyr che */ || + enc==0x448 /* cyr sha */ || + enc==0x449 /* cyr shcha */ || + enc==0x44a /* cyr hard sign */ || + enc==0x44b /* cyr yery */ || + enc==0x44c /* cyr soft sign */ || + enc==0x44d /* cyr reversed e */ || + enc==0x44f /* cyr ya */ ) { + AddBlue(b.maxy,xh,enc=='o' || enc=='x'); + } + } + } + + /* the descent blue zone merges into the base zone */ + MergeZones(descenth,base); + MergeZones(xh,base); + MergeZones(ascenth,caph); + MergeZones(digith,caph); + MergeZones(xh,caph); + MergeZones(ascenth,digith); + MergeZones(xh,digith); + + if ( otherblues!=NULL ) + for ( i=0; i<10; ++i ) + otherblues[i] = 0; + for ( i=0; i<14; ++i ) + blues[i] = 0; + + if ( otherblues!=NULL && descenth[2]!=0 ) { + otherblues[0] = descenth[3]; + otherblues[1] = descenth[4]; + } + i = 0; + if ( base[2]==0 && (xh[2]!=0 || ascenth[2]!=0 || caph[2]!=0 || digith[2]!=0 )) { + /* base line blue value must be present if any other value is */ + /* make one up if we don't have one */ + blues[0] = -20; + blues[1] = 0; + i = 2; + } else if ( base[2]!=0 ) { + blues[0] = base[3]; + blues[1] = base[4]; + i = 2; + } + if ( xh[2]!=0 ) { + blues[i++] = xh[3]; + blues[i++] = xh[4]; + } + if ( caph[2]!=0 ) { + blues[i++] = caph[3]; + blues[i++] = caph[4]; + } + if ( digith[2]!=0 ) { + blues[i++] = digith[3]; + blues[i++] = digith[4]; + } + if ( ascenth[2]!=0 ) { + blues[i++] = ascenth[3]; + blues[i++] = ascenth[4]; + } + + for ( j=0; jblues[k] ) { + real temp = blues[j]; + blues[j]=blues[k]; + blues[k] = temp; + temp = blues[j+1]; + blues[j+1] = blues[k+1]; + blues[k+1] = temp; + } + } +} + +void ElFreeEI(EIList *el) { + EI *e, *next; + + for ( e = el->edges; e!=NULL; e = next ) { + next = e->next; + free(e); + } +} + +static int EIAddEdge(Spline *spline, real tmin, real tmax, EIList *el) { + EI *new = gcalloc(1,sizeof(EI)); + real min, max, temp; + Spline1D *s; + real dxdtmin, dxdtmax, dydtmin, dydtmax; + + new->spline = spline; + new->tmin = tmin; + new->tmax = tmax; + + s = &spline->splines[1]; + if (( dydtmin = (3*s->a*tmin + 2*s->b)*tmin + s->c )<0 ) dydtmin = -dydtmin; + if (( dydtmax = (3*s->a*tmax + 2*s->b)*tmax + s->c )<0 ) dydtmax = -dydtmax; + s = &spline->splines[0]; + if (( dxdtmin = (3*s->a*tmin + 2*s->b)*tmin + s->c )<0 ) dxdtmin = -dxdtmin; + if (( dxdtmax = (3*s->a*tmax + 2*s->b)*tmax + s->c )<0 ) dxdtmax = -dxdtmax; + + /*s = &spline->splines[0];*/ + min = ((s->a * tmin + s->b)* tmin + s->c)* tmin + s->d; + max = ((s->a * tmax + s->b)* tmax + s->c)* tmax + s->d; + if ( tmax==1 ) max = spline->to->me.x; /* beware rounding errors */ + if ( !el->leavetiny && floor(min)==floor(max) ) { /* If it doesn't cross a pixel boundary then it might as well be vertical */ + if ( tmin==0 ) max = min; + else if ( tmax==1 ) min = max; + else max = min; + } + if ( min==max ) + new->vert = true; + else if ( minhup = true; + else { + temp = min; min = max; max=temp; + } + if ( !el->leavetiny && min+1>max ) new->almostvert = true; + if ( 40*dxdtminvertattmin = true; + if ( 40*dxdtmaxvertattmax = true; + /*if ( new->vertattmin && new->vertattmax && s->a==0 && s->b==0 ) new->almostvert = true;*/ + new->coordmin[0] = min; new->coordmax[0] = max; + if ( el->coordmin[0]>min ) + el->coordmin[0] = min; + if ( el->coordmax[0]coordmax[0] = max; + + s = &spline->splines[1]; + min = ((s->a * tmin + s->b)* tmin + s->c)* tmin + s->d; + max = ((s->a * tmax + s->b)* tmax + s->c)* tmax + s->d; + if ( tmax==1 ) max = spline->to->me.y; + if ( !el->leavetiny && floor(min)==floor(max) ) { /* If it doesn't cross a pixel boundary then it might as well be horizontal */ + if ( tmin==0 ) max = min; + else if ( tmax==1 ) min = max; + else max = min; + } + if ( min==max ) + new->hor = true; + else if ( minvup = true; + else { + temp = min; min = max; max=temp; + } + if ( !el->leavetiny && min+1>max ) new->almosthor = true; + if ( 40*dydtminhorattmin = true; + if ( 40*dydtmaxhorattmax = true; + /*if ( new->horattmin && new->horattmax && s->a==0 && s->b==0 ) new->almosthor = true;*/ + new->coordmin[1] = min; new->coordmax[1] = max; + if ( el->coordmin[1]>min ) + el->coordmin[1] = min; + if ( el->coordmax[1]coordmax[1] = max; + + if ( new->hor && new->vert ) { + /* This spline is too small for us to notice */ + free(new); +return( false ); + } else { + new->next = el->edges; + el->edges = new; + + if ( el->splinelast!=NULL ) + el->splinelast->splinenext = new; + el->splinelast = new; + if ( el->splinefirst==NULL ) + el->splinefirst = new; + +return( true ); + } +} + +static void EIAddSpline(Spline *spline, EIList *el) { + extended ts[6], temp; + int i, j, base, last; + + ts[0] = 0; ts[5] = 1.0; + SplineFindExtrema(&spline->splines[0],&ts[1],&ts[2]); + SplineFindExtrema(&spline->splines[1],&ts[3],&ts[4]); + /* avoid teeny tiny segments, they just confuse us */ + SplineRemoveExtremaTooClose(&spline->splines[0],&ts[1],&ts[2]); + SplineRemoveExtremaTooClose(&spline->splines[1],&ts[3],&ts[4]); + for ( i=0; i<4; ++i ) for ( j=i+1; j<5; ++j ) { + if ( ts[i]>ts[j] ) { + temp = ts[i]; + ts[i] = ts[j]; + ts[j] = temp; + } + } + for ( base=0; ts[base]==-1; ++base); + for ( i=5; i>base ; --i ) { + if ( ts[i]==ts[i-1] ) { + for ( j=i-1; j>base; --j ) + ts[j] = ts[j-1]; + ts[j] = -1; + ++base; + } + } + last = base; + for ( i=base; i<5 ; ++i ) + if ( EIAddEdge(spline,ts[last],ts[i+1],el) ) + last = i+1; +} + +void ELFindEdges(SplineChar *sc, EIList *el) { + Spline *spline, *first; + SplineSet *spl; + + el->sc = sc; + if ( sc->layers[el->layer].splines==NULL ) +return; + + el->coordmin[0] = el->coordmax[0] = sc->layers[el->layer].splines->first->me.x; + el->coordmin[1] = el->coordmax[1] = sc->layers[el->layer].splines->first->me.y; + + for ( spl = sc->layers[el->layer].splines; spl!=NULL; spl = spl->next ) if ( spl->first->prev!=NULL && spl->first->prev->from!=spl->first ) { + first = NULL; + for ( spline = spl->first->next; spline!=NULL && spline!=first; spline=spline->to->next ) { + EIAddSpline(spline,el); + if ( first==NULL ) first = spline; + } + if ( el->splinefirst!=NULL && spl->first->prev!=NULL ) + el->splinelast->splinenext = el->splinefirst; + el->splinelast = NULL; el->splinefirst = NULL; + } +} + +static int IsBiggerSlope(EI *test, EI *base, int major) { + int other = !major; + real tdo, tdm, bdo, bdm, t; + + if (( major && test->vup ) || (!major && test->hup)) + t = test->tmin; + else + t = test->tmax; + tdm = (3*test->spline->splines[major].a*t + 2*test->spline->splines[major].b)*t + test->spline->splines[major].c; + tdo = (3*test->spline->splines[other].a*t + 2*test->spline->splines[other].b)*t + test->spline->splines[other].c; + + if (( major && base->vup ) || (!major && base->hup)) + t = base->tmin; + else + t = base->tmax; + bdm = (3*base->spline->splines[major].a*t + 2*base->spline->splines[major].b)*t + base->spline->splines[major].c; + bdo = (3*base->spline->splines[other].a*t + 2*base->spline->splines[other].b)*t + base->spline->splines[other].c; + + if ( tdm==0 && bdm==0 ) +return( tdo > bdo ); + if ( tdo==0 ) +return( tdo>0 ); + else if ( bdo==0 ) +return( bdo>0 ); + +return( tdo/tdm > bdo/bdm ); +} + +void ELOrder(EIList *el, int major ) { + int other = !major; + int pos; + EI *ei, *prev, *test; + + el->low = floor(el->coordmin[major]); el->high = ceil(el->coordmax[major]); + el->cnt = el->high-el->low+1; + el->ordered = gcalloc(el->cnt,sizeof(EI *)); + el->ends = gcalloc(el->cnt,1); + + for ( ei = el->edges; ei!=NULL ; ei=ei->next ) { + pos = ceil(ei->coordmax[major])-el->low; + el->ends[pos] = true; + pos = floor(ei->coordmin[major])-el->low; + ei->ocur = (ei->hup == ei->vup)?ei->coordmin[other]:ei->coordmax[other]; + ei->tcur = ((major && ei->vup) || (!major && ei->hup)) ? + ei->tmin: ei->tmax; + if ( major ) { + ei->up = ei->vup; + ei->hv = (ei->vert || ei->almostvert); + ei->hvbottom = ei->vup ? ei->vertattmin : ei->vertattmax; + ei->hvtop =!ei->vup ? ei->vertattmin : ei->vertattmax; + if ( ei->hor || ei->almosthor) + continue; + } else { + ei->up = ei->hup; + ei->hv = (ei->hor || ei->almosthor); + ei->hvbottom = ei->hup ? ei->horattmin : ei->horattmax; + ei->hvtop =!ei->hup ? ei->horattmin : ei->horattmax; + if ( ei->vert || ei->almostvert) + continue; + } + if ( el->ordered[pos]==NULL || ei->ocurordered[pos]->ocur ) { + ei->ordered = el->ordered[pos]; + el->ordered[pos] = ei; + } else { + for ( prev=el->ordered[pos], test = prev->ordered; test!=NULL; + prev = test, test = test->ordered ) { + if ( test->ocur>ei->ocur || + (test->ocur==ei->ocur && IsBiggerSlope(test,ei,major))) + break; + } + ei->ordered = test; + prev->ordered = ei; + } + } +} + +static HintInstance *HIMerge(HintInstance *into, HintInstance *hi) { + HintInstance *n, *first = NULL, *last = NULL; + + while ( into!=NULL && hi!=NULL ) { + if ( into->beginbegin ) { + n = into; + into = into->next; + } else { + n = hi; + hi = hi->next; + } + if ( first==NULL ) + first = n; + else + last->next = n; + last = n; + } + if ( into!=NULL ) { + if ( first==NULL ) + first = into; + else + last->next = into; + } else if ( hi!=NULL ) { + if ( first==NULL ) + first = hi; + else + last->next = hi; + } +return( first ); +} + +StemInfo *HintCleanup(StemInfo *stem,int dosort,int instance_count) { + StemInfo *s, *p=NULL, *t, *pt, *sn; + int swap; + + for ( s=stem; s!=NULL; p=s, s=s->next ) { + if ( s->width<0 ) { + s->start += s->width; + s->width = -s->width; + s->ghost = true; + } + s->reordered = false; + if ( p!=NULL && p->start> s->start ) + dosort = true; + } + if ( dosort ) { + for ( p=NULL, s=stem; s!=NULL; p=s, s = sn ) { + sn = s->next; + for ( pt=s, t=sn; t!=NULL; pt=t, t=t->next ) { + if ( instance_count>1 && + t->u.unblended!=NULL && s->u.unblended!=NULL ) { + int temp = UnblendedCompare((*t->u.unblended)[0],(*s->u.unblended)[0],instance_count); + if ( temp==0 ) + swap = UnblendedCompare((*t->u.unblended)[1],(*s->u.unblended)[1],instance_count); + else + swap = temp<0; + } else if ( t->startstart ) + swap=true; + else if ( t->start>s->start ) + swap = false; + else + swap = (t->widthwidth); + if ( swap ) { + s->next = t->next; + if ( pt==s ) { + t->next = s; + sn = s; + } else { + t->next = sn; + pt->next = s; + } + if ( p==NULL ) + stem = t; + else + p->next = t; + pt = s; /* swap s and t */ + s = t; + t = pt; + } + } + } + /* Remove duplicates */ + if ( stem!=NULL ) for ( p=stem, s=stem->next; s!=NULL; s = sn ) { + sn = s->next; + if ( p->start==s->start && p->width==s->width && p->hintnumber==s->hintnumber ) { + p->where = HIMerge(p->where,s->where); + s->where = NULL; + p->next = sn; + StemInfoFree(s); + } else + p = s; + } + } +return( stem ); +} + +real EITOfNextMajor(EI *e, EIList *el, real sought_m ) { + /* We want to find t so that Mspline(t) = sought_m */ + /* the curve is monotonic */ + Spline1D *msp = &e->spline->splines[el->major]; + real new_t; + real found_m; + real t_mmax, t_mmin; + + if ( msp->a==0 && msp->b==0 ) { + if ( msp->c == 0 ) { + IError("Hor/Vert line when not expected"); +return( 0 ); + } + new_t = (sought_m-msp->d)/(msp->c); +return( new_t ); + } + + t_mmax = e->up?e->tmax:e->tmin; + t_mmin = e->up?e->tmin:e->tmax; + /* sought_m += el->low; */ + + while ( 1 ) { + new_t = (t_mmin+t_mmax)/2; + found_m = ( ((msp->a*new_t+msp->b)*new_t+msp->c)*new_t + msp->d ); + if ( found_m>sought_m-.001 && found_m sought_m ) { + t_mmax = new_t; + } else { + t_mmin = new_t; + } + if ( t_mmax==t_mmin ) { + IError("EITOfNextMajor failed! on %s", el->sc!=NULL?el->sc->name:"Unknown" ); +return( new_t ); + } + } +} + +EI *EIActiveListReorder(EI *active,int *change) { + int any; + EI *pr, *apt; + + *change = false; + if ( active!=NULL ) { + any = true; + while ( any ) { + any = false; + for ( pr=NULL, apt=active; apt->aenext!=NULL; ) { + if ( apt->ocur <= apt->aenext->ocur ) { + /* still ordered */; + pr = apt; + apt = apt->aenext; + } else if ( pr==NULL ) { + active = apt->aenext; + apt->aenext = apt->aenext->aenext; + active->aenext = apt; + *change = true; + /* don't need to set any, since this reorder can't disorder the list */ + pr = active; + } else { + pr->aenext = apt->aenext; + apt->aenext = apt->aenext->aenext; + pr->aenext->aenext = apt; + any = *change = true; + pr = pr->aenext; + } + } + } + } +return( active ); +} + +EI *EIActiveEdgesRefigure(EIList *el, EI *active,real i,int major, int *_change) { + EI *apt, *pr, *npt; + int change = false, subchange; + int other = !major; + + /* first remove any entry which doesn't intersect the new scan line */ + /* (ie. stopped on last line) */ + for ( pr=NULL, apt=active; apt!=NULL; apt = apt->aenext ) { + if ( apt->coordmax[major]low ) { + if ( pr==NULL ) + active = apt->aenext; + else + pr->aenext = apt->aenext; + change = true; + } else + pr = apt; + } + /* then move the active list to the next line */ + for ( apt=active; apt!=NULL; apt = apt->aenext ) { + Spline1D *osp = &apt->spline->splines[other]; + apt->tcur = EITOfNextMajor(apt,el,i+el->low); + apt->ocur = ( ((osp->a*apt->tcur+osp->b)*apt->tcur+osp->c)*apt->tcur + osp->d ); + } + /* reorder list */ + active = EIActiveListReorder(active,&subchange); + if ( subchange ) change = true; + + /* Insert new nodes */ + if ( el->ordered[(int) i]!=NULL ) change = true; + for ( pr=NULL, apt=active, npt=el->ordered[(int) i]; apt!=NULL && npt!=NULL; ) { + if ( npt->ocurocur ) { + npt->aenext = apt; + if ( pr==NULL ) + active = npt; + else + pr->aenext = npt; + pr = npt; + npt = npt->ordered; + } else { + pr = apt; + apt = apt->aenext; + } + } + while ( npt!=NULL ) { + npt->aenext = NULL; + if ( pr==NULL ) + active = npt; + else + pr->aenext = npt; + pr = npt; + npt = npt->ordered; + } + *_change = change; +return( active ); +} + + +int EISkipExtremum(EI *e, real i, int major) { + EI *n = e->aenext, *t; + + if ( n==NULL ) +return( false ); + if ( + (ceil(e->coordmin[major])==i || floor(e->coordmin[major])==i || floor(e->coordmax[major])==i || ceil(e->coordmax[major])==i) && + (ceil(n->coordmin[major])==i || floor(n->coordmin[major])==i || floor(n->coordmax[major])==i || ceil(n->coordmax[major])==i) ) { + if ( + (n==e->splinenext && n->tmin==e->tmax && + n->tcurtmin+.2 && e->tcur>e->tmax-.2 ) || + (n->splinenext==e && n->tmax==e->tmin && + n->tcur>n->tmax-.2 && e->tcurtmin+.2 ) ) +return( n->up!=e->up ); + /* can be separated by a horizontal/vertical line in the other direction */ + if ( n->tmax==1 && e->tmin==0 && n->tcur>.8 && e->tcur<.2) { + t = n; + while ( (t = t->splinenext)!=e ) { + if ( t==NULL || t==n || + (major && !t->hor) || ( !major && !t->vert )) +return( false ); + } +return( n->up!=e->up ); + } else if ( n->tmin==0 && e->tmax==1 && n->tcur<.2 && e->tcur>.8) { + t = e; + while ( (t = t->splinenext)!=n ) { + if ( t==NULL || t==e || + (major && !t->hor) || ( !major && !t->vert )) +return( false ); + } +return( n->up!=e->up ); + } + } +return( false ); +} + + +real HIlen( StemInfo *stems) { + HintInstance *hi; + real len = 0; + + for ( hi=stems->where; hi!=NULL; hi = hi->next ) + len += hi->end-hi->begin; +return( len ); +} + +real HIoverlap( HintInstance *mhi, HintInstance *thi) { + HintInstance *hi; + real len = 0; + real s, e; + + for ( ; mhi!=NULL; mhi = mhi->next ) { + for ( hi = thi; hi!=NULL && hi->begin<=mhi->end; hi = hi->next ) { + if ( hi->endbegin ) { + thi = hi; + continue; + } + s = hi->beginbegin?mhi->begin:hi->begin; + e = hi->end>mhi->end?mhi->end:hi->end; + if ( enext ) + s->hasconflicts = false; + while ( stems!=NULL ) { + end = stems->width<0 ? stems->start : stems->start+stems->width; + for ( s=stems->next; s!=NULL && (s->width>0 ? s->start : s->start+s->width)next ) { + stems->hasconflicts = true; + s->hasconflicts = true; + any = true; + } + stems = stems->next; + } +return( any ); +} + +static HintInstance *SCGuessHintPoints(SplineChar *sc, int layer, StemInfo *stem,int major, int off) { + SplinePoint *starts[20], *ends[20]; + int spt=0, ept=0; + SplinePointList *spl; + SplinePoint *sp, *np; + int sm, wm, i, j, val; + real coord; + HintInstance *head, *test, *cur, *prev; + + for ( spl=sc->layers[layer].splines; spl!=NULL; spl=spl->next ) { + for ( sp=spl->first; ; sp = np ) { + coord = (major?sp->me.x:sp->me.y); + sm = coord>=stem->start-off && coord<=stem->start+off; + wm = coord>=stem->start+stem->width-off && coord<=stem->start+stem->width+off; + if ( sm && spt<20 ) + starts[spt++] = sp; + if ( wm && ept<20 ) + ends[ept++] = sp; + if ( sp->next==NULL ) + break; + np = sp->next->to; + if ( np==spl->first ) + break; + } + } + + head = NULL; + for ( i=0; ime.y>=ends[j]->me.y-1 && starts[i]->me.y<=ends[j]->me.y+1 ) { + val = starts[i]->me.y; + break; + } else if ( !major && starts[i]->me.x>=ends[j]->me.x-1 && starts[i]->me.x<=ends[j]->me.x+1 ) { + val = starts[i]->me.x; + break; + } + } + if ( (unsigned)val!=0x80000000 ) { + for ( prev=NULL, test=head; test!=NULL && val>test->begin; prev=test, test=test->next ); + if ( test==NULL || val!=test->begin ) { + cur = chunkalloc(sizeof(HintInstance)); + cur->begin = cur->end = val; + cur->next = test; + if ( prev==NULL ) head = cur; + else prev->next = cur; + } + } + } +return( head ); +} + +static void SCGuessHintInstancesLight(SplineChar *sc, int layer, StemInfo *stem,int major) { + SplinePointList *spl; + SplinePoint *sp, *np; + int sm, wm, off; + real ob, oe; + HintInstance *s=NULL, *w=NULL, *cur, *p, *t, *n, *w2; + /* We've got a hint (from somewhere, old data, reading in a font, user specified etc.) */ + /* but we don't have HintInstance info. So see if we can find those data */ + /* Will get confused by stems with holes in them (for example if you make */ + /* a hint from one side of an H to the other, it will get the whole thing */ + /* not just the cross stem) */ + + for ( spl=sc->layers[layer].splines; spl!=NULL; spl=spl->next ) { + for ( sp=spl->first; ; sp = np ) { + sm = (major?sp->me.x:sp->me.y)==stem->start; + wm = (major?sp->me.x:sp->me.y)==stem->start+stem->width; + if ( sp->next==NULL ) + break; + np = sp->next->to; + if ( sm || wm ) { + if ( !major ) { + if ( np->me.y==sp->me.y ) { + ob = sp->me.x; oe = np->me.x; + } else if ( sp->nextcp.y==sp->me.y ) { + ob = sp->me.x; oe = (sp->me.x+sp->nextcp.x)/2; + if ( sp->prevcp.y==sp->me.y ) + ob = (sp->prevcp.x+sp->me.x)/2; + } else if ( sp->prevcp.y==sp->me.y ) { + ob = sp->me.x; oe = (sp->prevcp.x+sp->me.x)/2; + } else + sm = wm = false; + } else { + if ( np->me.x==sp->me.x ) { + ob = sp->me.y; oe = np->me.y; + } else if ( sp->nextcp.x==sp->me.x ) { + ob = sp->me.y; oe = (sp->nextcp.y+sp->me.y)/2; + if ( sp->prevcp.x==sp->me.x ) + ob = (sp->prevcp.y+sp->me.y)/2; + } else if ( sp->prevcp.x==sp->me.x ) { + ob = sp->me.y; oe = (sp->prevcp.y+sp->me.y)/2; + } else + sm = wm = false; + } + } + if ( sm || wm ) { + cur = chunkalloc(sizeof(HintInstance)); + if ( ob>oe ) { real temp=ob; ob=oe; oe=temp;} + cur->begin = ob; + cur->end = oe; + if ( sm ) { + if ( s==NULL || s->begin>cur->begin ) { + cur->next = s; + s = cur; + } else { + p = s; + for ( t=s->next; t!=NULL && t->beginbegin; p=t, t=t->next ); + p->next = cur; cur->next = t; + } + } else { + if ( w==NULL || w->begin>cur->begin ) { + cur->next = w; + w = cur; + } else { + p = w; + for ( t=w->next; t!=NULL && t->beginbegin; p=t, t=t->next ); + p->next = cur; cur->next = t; + } + } + } + if ( np==spl->first ) + break; + } + } + + /* Now we know what the right side of the stem looks like, and we know */ + /* what the left side looks like. They may not look the same (H for example) */ + /* Figure out the set where both are active */ + /* Unless it's a ghost hint */ + if ( stem->width==20 && s==NULL && w!=NULL ) { + s = w; + w = NULL; + } else if ( stem->width==21 && s!=NULL && w==NULL) { + /* Just use s */; + } else for ( p=NULL, t=s; t!=NULL; t=n ) { + n = t->next; + for ( w2=w; w2!=NULL && w2->beginend ; w2=w2->next ) { + if ( w2->end<=t->begin ) + continue; + if ( w2->begin<=t->begin && w2->end>=t->end ) { + /* Perfect match */ + break; + } + if ( w2->begin>=t->begin ) + t->begin = w2->begin; + if ( w2->end<=t->end ) { + cur = chunkalloc(sizeof(HintInstance)); + cur->begin = w2->end; + cur->end = t->end; + cur->next = n; + t->next = cur; + n = cur; + t->end = w2->end; + } + break; + } + if ( w2!=NULL && w2->begin>=t->end ) + w2 = NULL; + if ( w2==NULL && w!=NULL ) { + HintInstance *best = NULL; + double best_off=1e10, off; + for ( w2=w; w2!=NULL ; w2=w2->next ) { + if ( w2->end<=t->begin ) + off = t->begin - w2->end; + else + off = w2->begin - t->end; + if ( best==NULL && offwidth ) { + w2 = best; + if( w2->beginbegin ) + t->begin = w2->begin; + if ( w2->end>t->end ) + t->end = w2->end; + } + } + if ( w2==NULL ) { + /* No match for t (or if there were it wasn't complete) get rid */ + /* of what's left of t */ + chunkfree(t,sizeof(*t)); + if ( p==NULL ) + s = n; + else + p->next = n; + } else + p = t; + } + while ( w!=NULL ) { + n = w->next; + chunkfree(w,sizeof(*w)); + w=n; + } + + /* If we couldn't find anything, then see if there are two points which */ + /* have the same x or y value and whose other coordinates match those of */ + /* the hint */ + /* Surprisingly many fonts have hints which don't accurately match the */ + /* points. Perhaps BlueFuzz (default 1) applies here too */ + for ( off=0; off<1 && s==NULL; ++off ) + s = SCGuessHintPoints(sc,layer, stem,major,off); + + stem->where = s; +} + +void SCGuessHHintInstancesList(SplineChar *sc,int layer) { + StemInfo *h; + for ( h= sc->hstem; h!=NULL; h=h->next ) { + if ( h->where==NULL ) { + SCGuessHintInstancesLight( sc,layer,h,false ); + } + } +} + +void SCGuessVHintInstancesList(SplineChar *sc,int layer) { + StemInfo *h; + for ( h= sc->vstem; h!=NULL; h=h->next ) { + if ( h->where==NULL ) { + SCGuessHintInstancesLight( sc,layer,h,true ); + } + } +} + + +static void _SCClearHintMasks(SplineChar *sc,int layer, int counterstoo) { + SplineSet *spl; + SplinePoint *sp; + RefChar *ref; + + if ( counterstoo ) { + free(sc->countermasks); + sc->countermasks = NULL; sc->countermask_cnt = 0; + } + + for ( spl = sc->layers[layer].splines; spl!=NULL; spl=spl->next ) { + for ( sp = spl->first ; ; ) { + chunkfree(sp->hintmask,sizeof(HintMask)); + sp->hintmask = NULL; + if ( sp->next==NULL ) + break; + sp = sp->next->to; + if ( sp==spl->first ) + break; + } + } + + for ( ref = sc->layers[layer].refs; ref!=NULL; ref=ref->next ) { + for ( spl = ref->layers[0].splines; spl!=NULL; spl=spl->next ) { + for ( sp = spl->first ; ; ) { + chunkfree(sp->hintmask,sizeof(HintMask)); + sp->hintmask = NULL; + if ( sp->next==NULL ) + break; + sp = sp->next->to; + if ( sp==spl->first ) + break; + } + } + } +} + + +static void SCFigureSimpleCounterMasks(SplineChar *sc) { + SplineChar *scs[MmMax]; + int hadh3, hadv3, i, vbase; + HintMask mask; + StemInfo *h; + + if ( sc->countermask_cnt!=0 ) +return; + + scs[0] = sc; + hadh3 = CvtPsStem3(NULL,scs,1,true,false); + hadv3 = CvtPsStem3(NULL,scs,1,false,false); + if ( hadh3 || hadv3 ) { + memset(mask,0,sizeof(mask)); + if ( hadh3 ) mask[0] = 0x80|0x40|0x20; + if ( hadv3 ) { + for ( h=sc->hstem, vbase=0; h!=NULL; h=h->next, ++vbase ); + for ( i=0; i<3 ; ++i ) { + int j = i+vbase; + mask[j>>3] |= (0x80>>(j&7)); + } + } + sc->countermask_cnt = 1; + sc->countermasks = galloc(sizeof(HintMask)); + memcpy(sc->countermasks[0],mask,sizeof(HintMask)); +return; + } +} + +void SCClearHintMasks(SplineChar *sc,int layer,int counterstoo) { + MMSet *mm = sc->parent->mm; + int i; + + if ( mm==NULL ) + _SCClearHintMasks(sc,layer,counterstoo); + else { + for ( i=0; iinstance_count; ++i ) { + if ( sc->orig_posinstances[i]->glyphcnt ) + _SCClearHintMasks(mm->instances[i]->glyphs[sc->orig_pos],layer,counterstoo); + } + if ( sc->orig_posnormal->glyphcnt ) + _SCClearHintMasks(mm->normal->glyphs[sc->orig_pos],layer,counterstoo); + } +} + +static StemInfo *OnHHint(SplinePoint *sp, StemInfo *s) { + StemInfo *possible=NULL; + HintInstance *hi; + + if ( sp==NULL ) +return( NULL ); + + for ( ; s!=NULL; s=s->next ) { + if ( sp->me.ystart ) +return( possible ); + if ( s->start==sp->me.y || s->start+s->width==sp->me.y ) { + if ( !s->hasconflicts ) +return( s ); + for ( hi=s->where; hi!=NULL; hi=hi->next ) { + if ( hi->begin<=sp->me.x && hi->end>=sp->me.x ) +return( s ); + } + if ( !s->used ) + possible = s; + } + } +return( possible ); +} + +static StemInfo *OnVHint(SplinePoint *sp, StemInfo *s) { + StemInfo *possible=NULL; + HintInstance *hi; + + if ( sp==NULL ) +return( NULL ); + + for ( ; s!=NULL; s=s->next ) { + if ( sp->me.xstart ) +return( possible ); + if ( s->start==sp->me.x || s->start+s->width==sp->me.x ) { + if ( !s->hasconflicts ) +return( s ); + for ( hi=s->where; hi!=NULL; hi=hi->next ) { + if ( hi->begin<=sp->me.y && hi->end>=sp->me.y ) +return( s ); + } + if ( !s->used ) + possible = s; + } + } +return( possible ); +} + +/* Does h have a conflict with any of the stems in the list which have bits */ +/* set in the mask */ +static int ConflictsWithMask(StemInfo *stems, HintMask mask,StemInfo *h) { + while ( stems!=NULL && stems->startstart+h->width ) { + if ( stems->start+stems->width>=h->start && stems!=h ) { + if ( stems->hintnumber!=-1 && + (mask[stems->hintnumber>>3]&(0x80>>(stems->hintnumber&7))) ) +return( true ); + } + stems = stems->next; + } +return( false ); +} + +/* All instances of a MM set must have the same hint mask at all points */ +static void FigureHintMask(SplineChar *scs[MmMax], SplinePoint *to[MmMax], int instance_count, + HintMask mask) { + StemInfo *s; + int i; + SplinePoint *sp; + + memset(mask,'\0',sizeof(HintMask)); + + /* Install all hints that are always active */ + i=0; { + SplineChar *sc = scs[i]; + + if ( sc==NULL ) +return; + + for ( s=sc->hstem; s!=NULL; s=s->next ) + if ( s->hintnumber!=-1 && !s->hasconflicts ) + mask[s->hintnumber>>3] |= (0x80>>(s->hintnumber&7)); + for ( s=sc->vstem; s!=NULL; s=s->next ) + if ( s->hintnumber!=-1 && !s->hasconflicts ) + mask[s->hintnumber>>3] |= (0x80>>(s->hintnumber&7)); + + if ( sc->hconflicts ) { + for ( sp=to[i]; sp!=NULL; ) { + s = OnHHint(sp,sc->hstem); + if ( s!=NULL && s->hintnumber!=-1 ) { + if ( ConflictsWithMask(scs[i]->hstem,mask,s)) + break; + mask[s->hintnumber>>3] |= (0x80>>(s->hintnumber&7)); + } + if ( sp->next==NULL ) + break; + sp = sp->next->to; + if ( to[i]==sp ) + break; + } + } + if ( sc->vconflicts ) { + for ( sp=to[i]; sp!=NULL; ) { + s = OnVHint(sp,sc->vstem); + if ( s!=NULL && s->hintnumber!=-1 ) { + if ( ConflictsWithMask(scs[i]->vstem,mask,s)) + break; + mask[s->hintnumber>>3] |= (0x80>>(s->hintnumber&7)); + } + if ( sp->next==NULL ) + break; + sp = sp->next->to; + if ( to[i]==sp ) + break; + } + } + } + for ( i=0; ihintmask,sizeof(HintMask)); + to[i]->hintmask = chunkalloc(sizeof(HintMask)); + memcpy(to[i]->hintmask,mask,sizeof(HintMask)); + } +} + +static int TestHintMask(SplineChar *scs[MmMax], SplinePoint *to[MmMax], int instance_count, + HintMask mask) { + StemInfo *h=NULL, *v=NULL; + int i; + + for ( i=0; ihconflicts && !sc->vconflicts )) + continue; + + /* Does this point lie on any hints? */ + if ( scs[i]->hconflicts ) + h = OnHHint(to[i],sc->hstem); + if ( scs[i]->vconflicts ) + v = OnVHint(to[i],sc->vstem); + + /* Need to set this hint */ + if ( (h!=NULL && h->hintnumber!=-1 && (mask[h->hintnumber>>3]&(0x80>>(h->hintnumber&7)))==0 ) || + (v!=NULL && v->hintnumber!=-1 && (mask[v->hintnumber>>3]&(0x80>>(v->hintnumber&7)))==0 )) + break; + } + if ( i==instance_count ) /* All hint masks were ok */ +return( false ); + + FigureHintMask(scs,to,instance_count,mask); +return( true ); +} + +static void UnnumberHints(SplineChar *sc) { + StemInfo *h; + + for ( h=sc->hstem; h!=NULL; h=h->next ) + h->hintnumber = -1; + for ( h=sc->vstem; h!=NULL; h=h->next ) + h->hintnumber = -1; +} + +static int NumberHints(SplineChar *sc) { + StemInfo *h; + int hcnt=0; + + for ( h=sc->hstem; h!=NULL; h=h->next ) + h->hintnumber = hcnt>=HntMax ? -1 : hcnt++; + for ( h=sc->vstem; h!=NULL; h=h->next ) + h->hintnumber = hcnt>=HntMax ? -1 : hcnt++; +return( hcnt ); +} + +static void UntickHints(SplineChar *sc) { + StemInfo *h; + + for ( h=sc->hstem; h!=NULL; h=h->next ) + h->used = false; + for ( h=sc->vstem; h!=NULL; h=h->next ) + h->used = false; +} + +struct coords { + real coords[MmMax]; + struct coords *next; +}; + +typedef struct mmh { + StemInfo *hints[MmMax], *map[MmMax]; + struct coords *where; + struct mmh *next; +} MMH; + +static void AddCoord(MMH *mmh,SplinePoint *sps[MmMax],int instance_count, int ish) { + struct coords *coords; + int i; + + coords = chunkalloc(sizeof(struct coords)); + coords->next = mmh->where; + mmh->where = coords; + if ( ish ) + for ( i=0; icoords[i] = sps[i]->me.x; + else + for ( i=0; icoords[i] = sps[i]->me.y; +} + +static MMH *AddHintSet(MMH *hints,StemInfo *h[MmMax], int instance_count, + SplinePoint *sps[MmMax], int ish) { + int i, cnt, bestc; + MMH *test, *best; + + for ( i=0; inext ) { + cnt = 0; + for ( i=0; ihints[i]==h[i] ) + ++cnt; + if ( cnt==instance_count ) { + AddCoord(test,sps,instance_count,ish); +return( hints ); + } + if ( cnt>bestc ) { + bestc = cnt; + best = test; + } + } + test = chunkalloc(sizeof(MMH)); + test->next = hints; + AddCoord(test,sps,instance_count,ish); + for ( i=0; ihints[i]=h[i]; + if ( bestc!=0 ) { + for ( i=0; ihints[i]==h[i] ) { + h[i]->hasconflicts = true; + test->map[i] = chunkalloc(sizeof(StemInfo)); + *test->map[i] = *h[i]; + test->map[i]->where = NULL; + test->map[i]->used = true; + h[i]->next = test->map[i]; + } else + test->map[i] = h[i]; + } + } else { + for ( i=0; imap[i]=h[i]; + } +return( test ); +} + +static int CompareMMH(MMH *mmh1,MMH *mmh2, int instance_count) { + int i; + + if ( mmh1->map[0]==NULL ) +return( 1 ); + if ( mmh2->map[0]==NULL ) +return( -1 ); + + for ( i=0; imap[i]->start!=mmh2->map[i]->start ) { + if ( mmh1->map[i]->start > mmh2->map[i]->start ) +return( 1 ); + else +return( -1 ); + } + } + for ( i=0; imap[i]->width!=mmh2->map[i]->width ) { + if ( mmh1->map[i]->width > mmh2->map[i]->width ) +return( 1 ); + else +return( -1 ); + } + } +return( 0 ); +} + +static MMH *SortMMH(MMH *head,int instance_count) { + MMH *mmh, *p, *smallest, *psmallest, *test, *ptest; + + for ( mmh = head, p=NULL; mmh!=NULL ; ) { + smallest = mmh; psmallest = p; + ptest = mmh; test = mmh->next; + while ( test!=NULL ) { + if ( CompareMMH(test,smallest,instance_count)<0 ) { + smallest = test; + psmallest = ptest; + } + ptest = test; + test = test->next; + } + if ( smallest!=mmh ) { + if ( p==NULL ) + head = smallest; + else + p->next = smallest; + if ( mmh->next==smallest ) { + mmh->next = smallest->next; + smallest->next = mmh; + } else { + test = mmh->next; + mmh->next = smallest->next; + smallest->next = test; + psmallest->next = mmh; + } + } + p = smallest; + mmh = smallest->next; + } +return( head ); +} + +static int NumberMMH(MMH *mmh,int hstart,int instance_count) { + int i; + HintInstance *hi, *n; + struct coords *coords; + + while ( mmh!=NULL ) { + for ( i=0; imap[i]; + if ( h==NULL ) + continue; + + h->hintnumber = hstart; + + for ( hi=h->where; hi!=NULL; hi=n ) { + n = hi->next; + chunkfree(hi,sizeof(HintInstance)); + } + h->where = NULL; + for ( coords=mmh->where; coords!=NULL; coords = coords->next ) { + hi = chunkalloc(sizeof(HintInstance)); + hi->next = h->where; + h->where = hi; + hi->begin = coords->coords[i]-1; + hi->end = coords->coords[i]+1; + } + } + if ( mmh->map[0]!=NULL ) ++hstart; + mmh = mmh->next; + } +return( hstart ); +} + +static void SortMMH2(SplineChar *scs[MmMax],MMH *mmh,int instance_count,int ish) { + int i; + StemInfo *h, *n; + MMH *m; + + for ( i=0; ihstem : scs[i]->vstem; h!=NULL; h=n ) { + n = h->next; + if ( h->hintnumber==-1 ) + StemInfoFree(h); + } + n = NULL; + for ( m = mmh ; m!=NULL; m=m->next ) { + h = m->map[i]; + if ( n!=NULL ) + n->next = h; + else if ( ish ) + scs[i]->hstem = h; + else + scs[i]->vstem = h; + n = h; + } + if ( n!=NULL ) + n->next = NULL; + else if ( ish ) + scs[i]->hstem = NULL; + else + scs[i]->vstem = NULL; + } +} + +static void MMHFreeList(MMH *mmh) { + MMH *mn; + struct coords *c, *n; + + for ( ; mmh!=NULL; mmh = mn ) { + mn = mmh->next; + for ( c=mmh->where; c!=NULL; c=n ) { + n = c->next; + chunkfree(c,sizeof(struct coords)); + } + chunkfree(mmh,sizeof(struct coords)); + } +} + +static void SplResolveSplitHints(SplineChar *scs[MmMax], SplineSet *spl[MmMax], + int instance_count, MMH **hs, MMH **vs) { + SplinePoint *to[MmMax]; + StemInfo *h[MmMax], *v[MmMax]; + int i, anymore; + + forever { + for ( i=0; ifirst; + else + to[i] = NULL; + } + forever { + for ( i=0; ihstem); + v[i] = OnVHint(to[i],scs[i]->vstem); + } + *hs = AddHintSet(*hs,h,instance_count,to,true); + *vs = AddHintSet(*vs,v,instance_count,to,false); + anymore = false; + for ( i=0; inext==NULL ) to[i] = NULL; + else { + to[i] = to[i]->next->to; + if ( to[i]==spl[i]->first ) to[i] = NULL; + } + if ( to[i]!=NULL ) anymore = true; + } + if ( !anymore ) + break; + } + anymore = false; + for ( i=0; inext; + if ( spl[i]!=NULL ) anymore = true; + } + if ( !anymore ) + break; + } +} + +static void ResolveSplitHints(SplineChar *scs[16],int layer,int instance_count) { + /* It is possible for a single hint in one mm instance to split into two */ + /* in a different MM set. For example, we have two stems which happen */ + /* to line up in one instance but which do not in another instance. */ + /* It is even possible that there could be no instance with any conflicts */ + /* but some of the intermediate forms might conflict. */ + /* We can't deal (nor can postscript) with the case where hints change order*/ + SplinePointList *spl[MmMax]; + RefChar *ref[MmMax]; + int i, hcnt, hmax=0, anymore; + MMH *hs=NULL, *vs=NULL; + + for ( i=0; ihmax ) hmax = hcnt; + spl[i] = scs[i]->layers[layer].splines; + } + if ( hmax==0 ) +return; + + SplResolveSplitHints(scs,spl,instance_count,&hs,&vs); + anymore = false; + for ( i=0; ilayers[layer].refs; + if ( ref[i]!=NULL ) anymore = true; + } + while ( anymore ) { + for ( i=0; ilayers[0].splines : NULL; + SplResolveSplitHints(scs,spl,instance_count,&hs,&vs); + anymore = false; + for ( i=0; inext; + if ( ref[i]!=NULL ) anymore = true; + } + } + } + + for ( i=0; ifirst; + anymore = true; + } else + to[i] = NULL; + } + + /* Assign the initial hint mask */ + if ( anymore && !inited ) { + FigureHintMask(scs,to,instance_count,mask); + inited = true; + } + + forever { + for ( i=0; ifirst; + else + to[i] = NULL; + } + forever { + TestHintMask(scs,to,instance_count,mask); + anymore = false; + for ( i=0; inext==NULL ) to[i] = NULL; + else { + to[i] = to[i]->next->to; + if ( to[i]==spl[i]->first ) to[i] = NULL; + } + if ( to[i]!=NULL ) anymore = true; + } + if ( !anymore ) + break; + } + anymore = false; + for ( i=0; inext; + } + if ( spl[i]!=NULL ) { + anymore = true; + SplineSetReverse(spl[i]); + } + } + if ( !anymore ) + break; + } +return( inited ); +} + +void SCFigureHintMasks(SplineChar *sc,int layer) { + SplineChar *scs[MmMax]; + SplinePointList *spl[MmMax]; + RefChar *ref[MmMax]; + MMSet *mm = sc->parent->mm; + int i, instance_count, conflicts, anymore, inited; + HintMask mask; + + if ( mm==NULL ) { + scs[0] = sc; + instance_count = 1; + SCClearHintMasks(sc,layer,false); + } else { + if ( mm->apple ) +return; + instance_count = mm->instance_count; + for ( i=0; iorig_pos < mm->instances[i]->glyphcnt ) { + scs[i] = mm->instances[i]->glyphs[sc->orig_pos]; + SCClearHintMasks(scs[i],layer,false); + } + ResolveSplitHints(scs,layer,instance_count); + } + conflicts = false; + for ( i=0; ihconflicts || scs[i]->vconflicts ) + conflicts = true; + } + if ( !conflicts && instance_count==1 ) { /* All hints always active */ + SCFigureSimpleCounterMasks(sc); +return; /* In an MM font we may still need to resolve things like different numbers of hints */ + } + + for ( i=0; ilayers[layer].splines; + ref[i] = scs[i]->layers[layer].refs; + } + inited = SplFigureHintMasks(scs,spl,instance_count,mask,false); + forever { + for ( i=0; ilayers[0].splines; + } + inited = SplFigureHintMasks(scs,spl,instance_count,mask,inited); + anymore = false; + for ( i=0; inext; + if ( ref[i]!=NULL ) anymore = true; + } + } + if ( !anymore ) + break; + } + if ( instance_count==1 ) + SCFigureSimpleCounterMasks(sc); +} + + + +static void FigureStems( SplineFont *sf, real snaps[12], real cnts[12], + int which ) { + int i, j, k, cnt, smax=0, smin=2000; + real stemwidths[2000]; + StemInfo *stems, *test; + int len; + HintInstance *hi; + + memset(stemwidths,'\0',sizeof(stemwidths)); + + for ( i=0; iglyphcnt; ++i ) if ( sf->glyphs[i]!=NULL ) { + stems = which?sf->glyphs[i]->hstem:sf->glyphs[i]->vstem; + for ( test=stems; test!=NULL; test = test->next ) if ( !test->ghost ) { + if ( (j=test->width)<0 ) j= -j; + if ( j<2000 ) { + len = 0; + for ( hi=test->where; hi!=NULL; hi=hi->next ) + len += hi->end-hi->begin; + if ( len==0 ) len = 100; + stemwidths[j] += len; + if ( smaxj ) smin=j; + } + } + } + + for ( i=smin, cnt=0; i<=smax; ++i ) { + if ( stemwidths[i]!=0 ) + ++cnt; + } + + if ( cnt>12 ) { + /* Merge width windows */ + int windsize=3, j; + for ( i=smin; i<=smax; ++i ) if ( stemwidths[i]!=0 ) { + if ( (j = i-windsize)<0 ) j=0; + for ( ; ji+windsize ) { + if ( (j = i-windsize)<0 ) j=0; + for ( ; jstemwidths[i+1] ) { + stemwidths[i] += stemwidths[i+1]; + stemwidths[i+1] = 0; + } else { + if ( i<=smax-2 && stemwidths[i+2] && stemwidths[i+2]biggest ) { biggest = stemwidths[i]; biggesti=i; } + } + /* array must be sorted */ + if ( biggestbiggesti ) + break; + for ( k=cnt-1; k>=j; --k ) { + snaps[k+1] = snaps[k]; + cnts[k+1]=cnts[k]; + } + snaps[j] = biggesti; + cnts[j] = biggest; + stemwidths[biggesti] = 0; + if ( firstbiggest==0 ) firstbiggest = biggest; + } + } + for ( ; cnt<12; ++cnt ) { + snaps[cnt] = 0; + cnts[cnt] = 0; + } +} + +void FindHStems( SplineFont *sf, real snaps[12], real cnt[12]) { + FigureStems(sf,snaps,cnt,1); +} + +void FindVStems( SplineFont *sf, real snaps[12], real cnt[12]) { + FigureStems(sf,snaps,cnt,0); +} + +static int IsFlexSmooth(SplinePoint *sp) { + BasePoint nvec, pvec; + double proj_same, proj_normal; + + if ( sp->nonextcp || sp->noprevcp ) +return( false ); /* No continuity of slopes */ + + nvec.x = sp->nextcp.x - sp->me.x; nvec.y = sp->nextcp.y - sp->me.y; + pvec.x = sp->me.x - sp->prevcp.x; pvec.y = sp->me.y - sp->prevcp.y; + + /* Avoid cases where the slopes are 180 out of phase */ + if ( (proj_same = nvec.x*pvec.x + nvec.y*pvec.y)<=0 ) +return( false ); + if ( (proj_normal = nvec.x*pvec.y - nvec.y*pvec.x)<0 ) + proj_normal = -proj_normal; + + /* Something is smooth if the normal projection is 0. Let's allow for */ + /* some rounding errors */ + if ( proj_same >= 16*proj_normal ) +return( true ); + +return( false ); +} + +static int _SplineCharIsFlexible(SplineChar *sc, int layer, int blueshift) { + /* Need two splines + outer endpoints have same x (or y) values + inner point must be less than 20 horizontal (v) units from the outer points + inner point must also be less than BlueShift units (defaults to 7=>6) + (can increase BlueShift up to 21) + the inner point must be a local extremum + the inner point's cps must be at the x (or y) value as the extremum + (I think) + */ + /* We want long, nearly straight stems. If the end-points should not have + continuous slopes, or if they do, they must be horizontal/vertical. + This is an heuristic requirement, not part of Adobe's spec. + */ + SplineSet *spl; + SplinePoint *sp, *np, *pp; + int max=0, val; + RefChar *r; + + if ( sc==NULL ) +return(false); + + for ( spl = sc->layers[layer].splines; spl!=NULL; spl=spl->next ) { + if ( spl->first->prev==NULL ) { + /* Mark everything on the open path as inflexible */ + sp=spl->first; + while ( 1 ) { + sp->flexx = sp->flexy = false; + if ( sp->next==NULL ) + break; + sp = sp->next->to; + } + continue; /* Ignore open paths */ + } + sp=spl->first; + do { + if ( sp->next==NULL || sp->prev==NULL ) + break; + np = sp->next->to; + pp = sp->prev->from; + if ( !pp->flexx && !pp->flexy ) { + sp->flexy = sp->flexx = 0; + val = 0; + if ( RealNear(sp->nextcp.x,sp->me.x) && + RealNear(sp->prevcp.x,sp->me.x) && + RealNear(np->me.x,pp->me.x) && + !RealNear(np->me.x,sp->me.x) && + (!IsFlexSmooth(pp) || RealNear(pp->nextcp.x,pp->me.x)) && + (!IsFlexSmooth(np) || RealNear(np->prevcp.x,np->me.x)) && + np->me.x-sp->me.x < blueshift && + np->me.x-sp->me.x > -blueshift ) { + if ( (np->me.x>sp->me.x && + np->prevcp.x<=np->me.x && np->prevcp.x>=sp->me.x && + pp->nextcp.x<=pp->me.x && pp->prevcp.x>=sp->me.x ) || + (np->me.xme.x && + np->prevcp.x>=np->me.x && np->prevcp.x<=sp->me.x && + pp->nextcp.x>=pp->me.x && pp->prevcp.x<=sp->me.x )) { + sp->flexx = true; + val = np->me.x-sp->me.x; + } + } + if ( RealNear(sp->nextcp.y,sp->me.y) && + RealNear(sp->prevcp.y,sp->me.y) && + RealNear(np->me.y,pp->me.y) && + !RealNear(np->me.y,sp->me.y) && + (!IsFlexSmooth(pp) || RealNear(pp->nextcp.y,pp->me.y)) && + (!IsFlexSmooth(np) || RealNear(np->prevcp.y,np->me.y)) && + np->me.y-sp->me.y < blueshift && + np->me.y-sp->me.y > -blueshift ) { + if ( (np->me.y>sp->me.y && + np->prevcp.y<=np->me.y && np->prevcp.y>=sp->me.y && + pp->nextcp.y<=pp->me.y && pp->nextcp.y>=sp->me.y ) || + (np->me.yme.y && + np->prevcp.y>=np->me.y && np->prevcp.y<=sp->me.y && + pp->nextcp.y>=pp->me.y && pp->nextcp.y<=sp->me.y )) { + sp->flexy = true; + val = np->me.y-sp->me.y; + } + } + if ( val<0 ) val = -val; + if ( val>max ) max = val; + } + sp = np; + } while ( sp!=spl->first ); + } + sc->layers[layer].anyflexes = max>0; + if ( max==0 ) + for ( r = sc->layers[layer].refs; r!=NULL ; r=r->next ) + if ( r->sc->layers[layer].anyflexes ) { + sc->layers[layer].anyflexes = true; + break; + } +return( max ); +} + + + +static void SCUnflex(SplineChar *sc, int layer) { + SplineSet *spl; + SplinePoint *sp; + + for ( spl = sc->layers[layer].splines; spl!=NULL; spl=spl->next ) { + /* Mark everything on the path as inflexible */ + sp=spl->first; + while ( 1 ) { + sp->flexx = sp->flexy = false; + if ( sp->next==NULL ) + break; + sp = sp->next->to; + if ( sp==spl->first ) + break; + } + } + sc->layers[layer].anyflexes = false; +} + +static void FlexDependents(SplineChar *sc,int layer) { + struct splinecharlist *scl; + + sc->layers[layer].anyflexes = true; + for ( scl = sc->dependents; scl!=NULL; scl=scl->next ) + FlexDependents(scl->sc,layer); +} + +int SplineFontIsFlexible(SplineFont *sf,int layer, int flags) { + int i; + int max=0, val; + char *pt; + int blueshift; + /* if the return value is bigger than 6 and we don't have a BlueShift */ + /* then we must set BlueShift to ret+1 before saving private dictionary */ + /* If the first point in a spline set is flexible, then we must rotate */ + /* the splineset */ + + if ( flags&(ps_flag_nohints|ps_flag_noflex)) { + for ( i=0; iglyphcnt; ++i ) if ( sf->glyphs[i]!=NULL ) + SCUnflex(sf->glyphs[i],layer); +return( 0 ); + } + + pt = PSDictHasEntry(sf->private,"BlueShift"); + blueshift = 21; /* maximum posible flex, not default */ + if ( pt!=NULL ) { + blueshift = strtol(pt,NULL,10); + if ( blueshift>21 ) blueshift = 21; + } else if ( PSDictHasEntry(sf->private,"BlueValues")!=NULL ) + blueshift = 7; /* The BlueValues array may depend on BlueShift having its default value */ + + for ( i=0; iglyphcnt; ++i ) + if ( sf->glyphs[i]!=NULL ) if ( sf->glyphs[i]!=NULL ) { + val = _SplineCharIsFlexible(sf->glyphs[i],layer,blueshift); + if ( val>max ) max = val; + if ( sf->glyphs[i]->layers[layer].anyflexes ) + FlexDependents(sf->glyphs[i],layer); + } +return( max ); +} + + diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/baseviews.h b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/baseviews.h new file mode 100644 index 00000000000..530542634b0 --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/baseviews.h @@ -0,0 +1,541 @@ +/* Copyright (C) 2000-2008 by George Williams */ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef _BASEVIEWS_H +#define _BASEVIEWS_H + +/* cross-compiler woes */ +#if defined (small) +#undef small +#endif + +#include "splinefont.h" + +enum widthtype { wt_width, wt_lbearing, wt_rbearing, wt_vwidth }; + +enum fvtrans_flags { fvt_dobackground=1, fvt_round_to_int=2, + fvt_dontsetwidth=4, fvt_dontmovewidth=8, fvt_scalekernclasses=0x10, + fvt_scalepstpos=0x20, fvt_dogrid=0x40, fvt_partialreftrans=0x80 }; + +typedef struct drect { + real x, y; + real width, height; +} DRect; + +/* Note: These are ordered as they are displayed in the tools palette */ +enum cvtools { cvt_pointer, cvt_magnify, + cvt_freehand, cvt_hand, + cvt_curve, cvt_hvcurve, + cvt_corner, cvt_tangent, + cvt_pen, cvt_spiro, + cvt_knife, cvt_ruler, + cvt_scale, cvt_flip, + cvt_rotate, cvt_skew, + cvt_3d_rotate, cvt_perspective, + cvt_rect, cvt_poly, + cvt_elipse, cvt_star, + cvt_minify, cvt_max=cvt_minify, + cvt_none = -1, + cvt_spirog4=cvt_curve, cvt_spirog2=cvt_hvcurve, + cvt_spirocorner=cvt_corner, cvt_spiroleft=cvt_tangent, + cvt_spiroright=cvt_pen}; + +enum bvtools { bvt_pointer, bvt_magnify, + bvt_pencil, bvt_line, + bvt_shift, bvt_hand, + bvt_minify, bvt_eyedropper, bvt_max=bvt_eyedropper, + bvt_setwidth, bvt_setvwidth, + bvt_rect, bvt_filledrect, + bvt_elipse, bvt_filledelipse, + bvt_max2 = bvt_filledelipse, + bvt_none = -1, + bvt_fliph=0, bvt_flipv, bvt_rotate90cw, bvt_rotate90ccw, bvt_rotate180, bvt_skew, bvt_transmove }; +enum drawmode { dm_grid, dm_back, dm_fore, dm_max }; + +typedef struct bvtfunc { + enum bvtools func; + int x,y; /* used by skew and move */ +} BVTFunc; + +struct freetype_raster { + int16 rows, cols; + int16 as, lb; + int16 bytes_per_row; + int16 num_greys; + uint8 *bitmap; +}; + +struct cvcontainer { + struct cvcontainer_funcs *funcs; +}; + +enum nav_type { nt_prevdef, nt_prev, nt_goto, nt_next, nt_nextdef }; +struct cvcontainer_funcs { + enum cv_container_type { cvc_searcher, cvc_mathkern, cvc_tilepath, + cvc_gradient, cvc_multiplepattern } type; + void (*activateMe)(struct cvcontainer *cvc,struct charviewbase *cv); + void (*charEvent)(struct cvcontainer *cvc,void *event); + int (*canNavigate)(struct cvcontainer *cvc,enum nav_type type); + void (*doNavigate)(struct cvcontainer *cvc,enum nav_type type); + int (*canOpen)(struct cvcontainer *cvc); + void (*doClose)(struct cvcontainer *cvc); + SplineFont *(*sf_of_container)(struct cvcontainer *cvc); +}; + +typedef struct charviewbase { + struct charviewbase *next; + struct fontviewbase *fv; + SplineChar *sc; + Layer *layerheads[dm_max]; + uint8 drawmode; + uint16 ft_gridfitwidth; + SplineSet *gridfit; + struct cvcontainer *container; /* The sv (or whatever) within which this view is embedded (if it is embedded) */ +} CharViewBase; + +typedef struct fontviewbase { + struct fontviewbase *next; /* Next on list of open fontviews */ + struct fontviewbase *nextsame; /* Next fv looking at this font */ + EncMap *map; /* Current encoding info */ + EncMap *normal; /* If this is not NULL then we have a compacted encoding in map, and this is the original */ + SplineFont *sf; /* Current font */ + SplineFont *cidmaster; /* If CID keyed, contains master font */ + int active_layer; + BDFFont *active_bitmap; /* Set if the fontview displays a bitmap strike */ + uint8 *selected; /* Current selection */ +#ifndef _NO_FFSCRIPT + struct dictionary *fontvars; /* Scripting */ +#endif +#ifndef _NO_PYTHON + void *python_fv_object; +#endif +} FontViewBase; + +enum origins { or_zero, or_center, or_lastpress, or_value, or_undefined }; +struct pov_data { + enum origins xorigin, yorigin; + double x, y, z; + double direction; /* Direction of gaze projected into xy plane */ + double tilt; /* Angle which drawing plane is tilted with respect to projection plane */ + double d; /* Distance to projection plane */ + double sintilt; /* Used internally */ +}; + +typedef struct { + SplineFont *sf; + char *pathspec; /* In utf8, not necessarily local encoding */ + char *username, *password; + char *name; + char *description; + char *tags; + char *artists; + int notsafeforwork; + int oflicense; + char *previewimage; /* NULL => No image */ + uint8 upload_license; + uint8 upload_fontlog; + char *upload_id; /* Way to manipulate upload on OFLib */ +} OFLibData; + +struct lcg_zones { + /* info for unhinted processing */ + /* everything abvoe this should be moved down (default xheight/2) */ + int top_zone; + /* everything below this should be moved up (default xheight/2) */ + /* anything in between should be stationary */ + int bottom_zone; + + /* info for hinted processing */ + /* everything above & at this should be moved down */ + /* also anything on the other side of a hint from this should be moved down */ + int top_bound; + /* everything below & at this should be moved down */ + /* also anything on the other side of a hint from this should be moved down */ + int bottom_bound; + + enum counter_type { ct_squish, ct_retain, ct_auto } counter_type; + + SplineSet *(*embolden_hook)(SplineSet *,struct lcg_zones *,SplineChar *,int layer); + int wants_hints; + double serif_height, serif_fuzz; + + double stroke_width; /* negative number to lighten, positive to embolden */ + int removeoverlap; + + BlueData bd; + double stdvw; +}; +/* This order is the same order as the radio buttons in the embolden dlg */ +enum embolden_type { embolden_lcg, embolden_cjk, embolden_auto, embolden_custom, embolden_error }; + +struct counterinfo { + double c_factor, c_add; /* For counters */ + double sb_factor, sb_add; /* For side bearings */ + int correct_italic; + + BlueData bd; + double stdvw; + + SplineChar *sc; + int layer; + DBounds bb; /* Value before change */ + double top_y, bottom_y, boundry; + int has_two_zones; +#define TOP_Z 0 +#define BOT_Z 1 + int cnts[2]; + int maxes[2]; + struct ci_zones { + double start, width; + double moveto, newwidth; /* Only change width for diagonal stems*/ + } *zones[2]; +}; + +enum fvformats { fv_bdf, fv_ttf, fv_pk, fv_pcf, fv_mac, fv_win, fv_palm, + fv_image, fv_imgtemplate, + fv_eps, fv_epstemplate, + fv_pdf, fv_pdftemplate, + fv_plate, fv_platetemplate, + fv_svg, fv_svgtemplate, + fv_glif, fv_gliftemplate, + fv_fig, + fv_pythonbase = 0x100 }; + +extern enum undotype CopyUndoType(void); +extern int CopyContainsSomething(void); +extern int CopyContainsBitmap(void); +extern const Undoes *CopyBufferGet(void); +extern RefChar *CopyContainsRef(SplineFont *); +extern char **CopyGetPosSubData(enum possub_type *type,SplineFont **copied_from, + int pst_depth); +extern void CopyReference(SplineChar *sc); +extern void SCCopyLookupData(SplineChar *sc); +extern void PasteRemoveSFAnchors(SplineFont *); +extern void PasteAnchorClassMerge(SplineFont *sf,AnchorClass *into,AnchorClass *from); +extern void PasteRemoveAnchorClass(SplineFont *sf,AnchorClass *dying); +extern void ClipboardClear(void); +extern SplineSet *ClipBoardToSplineSet(void); +extern void BCCopySelected(BDFChar *bc,int pixelsize,int depth); +extern void PasteToBC(BDFChar *bc,int pixelsize,int depth); +extern void FVCopyWidth(FontViewBase *fv,enum undotype ut); +extern void FVCopyAnchors(FontViewBase *fv); +enum fvcopy_type { ct_fullcopy, ct_reference, ct_lookups, ct_unlinkrefs }; +extern void FVCopy(FontViewBase *fv, enum fvcopy_type copytype); +extern void PasteIntoFV(FontViewBase *fv, int pasteinto, real trans[6]); +extern void FVCopyFgtoBg(FontViewBase *fv); +extern void FVSameGlyphAs(FontViewBase *fv); +extern void FVClearBackground(FontViewBase *fv); +extern void FVClear(FontViewBase *fv); +extern void FVUnlinkRef(FontViewBase *fv); +extern void FVUndo(FontViewBase *fv); +extern void FVRedo(FontViewBase *fv); +extern void FVJoin(FontViewBase *fv); +extern void FVBuildDuplicate(FontViewBase *fv); +extern void FVTrans(FontViewBase *fv,SplineChar *sc,real transform[6],uint8 *sel, + enum fvtrans_flags); +extern void FVTransFunc(void *_fv,real transform[6],int otype, BVTFunc *bvts, + enum fvtrans_flags ); +extern void FVReencode(FontViewBase *fv,Encoding *enc); +extern void FVOverlap(FontViewBase *fv,enum overlap_type ot); +extern void FVAddExtrema(FontViewBase *fv); +extern void FVCorrectDir(FontViewBase *fv); +extern void FVRound2Int(FontViewBase *fv,real factor); +extern void FVCanonicalStart(FontViewBase *fv); +extern void FVCanonicalContours(FontViewBase *fv); +extern void FVCluster(FontViewBase *fv); +extern void CIDSetEncMap(FontViewBase *fv, SplineFont *new ); +extern void FVInsertInCID(FontViewBase *fv,SplineFont *sf); + +extern void FVAutoHint(FontViewBase *fv); +extern void FVAutoHintSubs(FontViewBase *fv); +extern void FVAutoCounter(FontViewBase *fv); +extern void FVDontAutoHint(FontViewBase *fv); +extern void FVAutoInstr(FontViewBase *fv); +extern void FVClearInstrs(FontViewBase *fv); +extern void FVClearHints(FontViewBase *fv); +extern void SCAutoTrace(SplineChar *sc,int layer, int ask); +extern char *FindAutoTraceName(void); +extern void *GetAutoTraceArgs(void); +extern void SetAutoTraceArgs(void *a); +extern char *FindMFName(void); +extern char *ProgramExists(char *prog,char *buffer); +extern void MfArgsInit(void); +extern void FVAutoTrace(FontViewBase *fv,int ask); +extern void FVAddEncodingSlot(FontViewBase *fv,int gid); +extern int FVImportMult(FontViewBase *fv, char *filename,int toback,int bf); +extern int FVImportBDF(FontViewBase *fv, char *filename,int ispk, int toback); +extern void MergeFont(FontViewBase *fv,SplineFont *other,int preserveCrossFontKerning); +extern int FVImportImages(FontViewBase *fv,char *path,int isimage,int toback,int flags); +extern int FVImportImageTemplate(FontViewBase *fv,char *path,int isimage,int toback,int flags); +extern void ScriptPrint(FontViewBase *fv,int type,int32 *pointsizes,char *samplefile, + unichar_t *sample, char *outputfile); +extern int FVBParseSelectByPST(FontViewBase *fv,struct lookup_subtable *sub, + int search_type); +extern int SFScaleToEm(SplineFont *sf, int ascent, int descent); +extern void TransHints(StemInfo *stem,real mul1, real off1, real mul2, real off2, int round_to_int ); +extern void TransDStemHints(DStemInfo *ds,real xmul, real xoff, real ymul, real yoff, int round_to_int ); +extern void VrTrans(struct vr *vr,real transform[6]); +extern int SFNLTrans(FontViewBase *fv,char *x_expr,char *y_expr); +extern void FVPointOfView(FontViewBase *fv,struct pov_data *); +extern void FVStrokeItScript(void *fv, StrokeInfo *si); +extern void FVOutline(struct fontviewbase *fv, real width); +extern void FVInline(struct fontviewbase *fv, real width, real inset); +extern void FVShadow(struct fontviewbase *fv,real angle, real outline_width, + real shadow_length,int wireframe); +extern void CI_Init(struct counterinfo *ci,SplineFont *sf); +extern void FVEmbolden(struct fontviewbase *fv,enum embolden_type type,struct lcg_zones *zones); +extern void FVCondenseExtend(struct fontviewbase *fv,struct counterinfo *ci); +extern void ScriptSCCondenseExtend(SplineChar *sc,struct counterinfo *ci); + +struct smallcaps { + double lc_stem_width, uc_stem_width; + double stem_factor, v_stem_factor; + double xheight, scheight, capheight; + double vscale, hscale; + char *extension_for_letters, *extension_for_symbols; + int dosymbols; + SplineFont *sf; + int layer; + double italic_angle, tan_ia; +}; + +extern void SmallCapsFindConstants(struct smallcaps *small, SplineFont *sf, + int layer ); + +enum glyphchange_type { gc_generic, gc_smallcaps, gc_subsuper, gc_max }; + +struct genericchange { + enum glyphchange_type gc; + uint32 feature_tag; + char *glyph_extension; + char *extension_for_letters, *extension_for_symbols; + double stem_height_scale, stem_width_scale; + double stem_height_add , stem_width_add ; + double serif_height_scale, serif_width_scale; + double seirf_height_add , serif_width_add ; + double hcounter_scale, hcounter_add; + double lsb_scale, lsb_add; + double rsb_scale, rsb_add; + uint8 center_in_hor_advance; + uint8 use_vert_mapping; + uint8 do_smallcap_symbols; + uint8 petite; /* generate petite caps rather than smallcaps */ + double vcounter_scale, vcounter_add; /* If not using mapping */ + double v_scale; /* If using mapping */ + struct fixed_maps { + int cnt; + struct position_maps { + double current , desired; + double cur_width, des_width; + int overlap_index; + } *maps; + } m; + struct fixed_maps g; /* Adjusted for each glyph */ + double vertical_offset; + unsigned int dstem_control, serif_control; + struct smallcaps *small; +/* Filled in by called routine */ + SplineFont *sf; + int layer; + double italic_angle, tan_ia; +}; + +extern void FVAddSmallCaps(FontViewBase *fv,struct genericchange *genchange); +extern void FVGenericChange(FontViewBase *fv,struct genericchange *genchange); +extern void CVGenericChange(CharViewBase *cv,struct genericchange *genchange); + +struct xheightinfo { + double xheight_current, xheight_desired; + double serif_height; +}; + +extern void InitXHeightInfo(SplineFont *sf, int layer, struct xheightinfo *xi); +extern void ChangeXHeight(FontViewBase *fv,CharViewBase *cv, struct xheightinfo *xi); +extern SplineSet *SSControlStems(SplineSet *ss, + double stemwidthscale, double stemheightscale, + double hscale, double vscale, double xheight); +extern void MakeItalic(FontViewBase *fv,CharViewBase *cv,ItalicInfo *ii); +extern int FVReplaceAll( FontViewBase *fv, SplineSet *find, SplineSet *rpl, double fudge, int flags ); +extern void FVBReplaceOutlineWithReference( FontViewBase *fv, double fudge ); +extern void FVCorrectReferences(FontViewBase *fv); +extern void _FVSimplify(FontViewBase *fv,struct simplifyinfo *smpl); +extern void UnlinkThisReference(FontViewBase *fv,SplineChar *sc,int layer); +extern FontViewBase *ViewPostscriptFont(char *filename,int openflags); +extern void FVBuildAccent(FontViewBase *fv,int onlyaccents); +extern void FVRemoveKerns(FontViewBase *fv); +extern void FVRemoveVKerns(FontViewBase *fv); +extern void FVVKernFromHKern(FontViewBase *fv); +extern void FVAddUnencoded(FontViewBase *fv, int cnt); +extern void FVRemoveUnused(FontViewBase *fv); +extern void FVCompact(FontViewBase *fv); +extern void FVDetachGlyphs(FontViewBase *fv); +extern void FVDetachAndRemoveGlyphs(FontViewBase *fv); +extern int AutoWidthScript(FontViewBase *fv,int spacing); +extern int AutoKernScript(FontViewBase *fv,int spacing, int threshold, + struct lookup_subtable *sub, char *kernfile); + +#ifndef _NO_FFSCRIPT +extern void DictionaryFree(struct dictionary *dica); +#endif + +extern void BCTrans(BDFFont *bdf,BDFChar *bc,BVTFunc *bvts,FontViewBase *fv ); +extern void BCSetPoint(BDFChar *bc, int x, int y, int color); +extern void BCTransFunc(BDFChar *bc,enum bvtools type,int xoff,int yoff); +extern void skewselect(BVTFunc *bvtf,real t); +extern void BCExpandBitmapToEmBox(BDFChar *bc, int xmin, int ymin, int xmax, int ymax); + +extern BDFFloat *BDFFloatCreate(BDFChar *bc,int xmin,int xmax,int ymin,int ymax, int clear); +extern BDFFloat *BDFFloatCopy(BDFFloat *sel); +extern BDFFloat *BDFFloatConvert(BDFFloat *sel,int newdepth, int olddepth); +extern void BDFFloatFree(BDFFloat *sel); + +extern int CVLayer(CharViewBase *cv); +extern Undoes *CVPreserveStateHints(CharViewBase *cv); +extern Undoes *CVPreserveState(CharViewBase *cv); +extern Undoes *CVPreserveWidth(CharViewBase *cv,int width); +extern Undoes *CVPreserveVWidth(CharViewBase *cv,int vwidth); +extern void CVDoRedo(CharViewBase *cv); +extern void CVDoUndo(CharViewBase *cv); +extern void CVRemoveTopUndo(CharViewBase *cv); +extern void CopySelected(CharViewBase *cv,int doanchors); +extern void CVCopyGridFit(CharViewBase *cv); +extern void CopyWidth(CharViewBase *cv,enum undotype); +extern void PasteToCV(CharViewBase *cv); +extern void CVYPerspective(CharViewBase *cv,double x_vanish, double y_vanish); +extern void ScriptSCEmbolden(SplineChar *sc,int layer,enum embolden_type type,struct lcg_zones *zones); +extern void CVEmbolden(CharViewBase *cv,enum embolden_type type,struct lcg_zones *zones); +extern void SCCondenseExtend(struct counterinfo *ci,SplineChar *sc, int layer, + int do_undoes); +extern void SCClearSelPt(SplineChar *sc); +extern void SC_MoreLayers(SplineChar *,Layer *old); +extern void SCLayersChange(SplineChar *sc); +extern void SFLayerChange(SplineFont *sf); +extern void SCTile(SplineChar *sc,int layer); +extern void _CVMenuMakeLine(CharViewBase *cv,int do_arc,int ellipse_to_back); + /* Ellipse to back is a debugging flag and adds the generated ellipse to */ + /* the background layer so we can look at it. I thought it might actually*/ + /* be useful, so I left it in. Activated with the Alt key in the menu */ + +extern void MVCopyChar(FontViewBase *fv, BDFFont *bdf, SplineChar *sc, enum fvcopy_type fullcopy); +extern void PasteIntoMV(FontViewBase *fv, BDFFont *bdf,SplineChar *sc, int doclear); + +extern void ExecuteScriptFile(FontViewBase *fv, SplineChar *sc, char *filename); + +extern int HasLicense(SplineFont *,FILE *); +extern int OFLibUploadFont(OFLibData *); + +enum search_flags { sv_reverse = 0x1, sv_flips = 0x2, sv_rotate = 0x4, + sv_scale = 0x8, sv_endpoints=0x10 }; +typedef struct searchdata { + SplineChar sc_srch, sc_rpl; + SplineSet *path, *revpath, *replacepath, *revreplace; + int pointcnt, rpointcnt; + real fudge; + real fudge_percent; /* a value of .05 here represents 5% (we don't store the integer) */ + unsigned int tryreverse: 1; + unsigned int tryflips: 1; + unsigned int tryrotate: 1; + unsigned int tryscale: 1; + unsigned int endpoints: 1; /* Don't match endpoints, use them for direction only */ + unsigned int onlyselected: 1; + unsigned int subpatternsearch: 1; + unsigned int doreplace: 1; + unsigned int replaceall: 1; + unsigned int findall: 1; + unsigned int searchback: 1; + unsigned int wrap: 1; + unsigned int wasreversed: 1; + unsigned int replacewithref: 1; + unsigned int already_complained: 1; /* User has already been alerted to the fact that we've converted splines to refs and lost the instructions */ + SplineSet *matched_spl; + SplinePoint *matched_sp, *last_sp; + real matched_rot, matched_scale; + real matched_x, matched_y; + double matched_co, matched_si; /* Precomputed sin, cos */ + enum flipset { flip_none = 0, flip_x, flip_y, flip_xy } matched_flip; +#ifdef _HAS_LONGLONG + unsigned long long matched_refs; /* Bit map of which refs in the char were matched */ + unsigned long long matched_ss; /* Bit map of which splines in the char were matched */ + /* In multi-path mode */ + unsigned long long matched_ss_start;/* Bit map of which splines we tried to start matches with */ +#else + unsigned long matched_refs; + unsigned long matched_ss; + unsigned long matched_ss_start; +#endif + FontViewBase *fv; + SplineChar *curchar; + int last_gid; +} SearchData; + +extern struct searchdata *SDFromContour( FontViewBase *fv, SplineSet *find, double fudge, int flags ); +extern SplineChar *SDFindNext(struct searchdata *sv); + +extern struct python_import_export { + struct _object *import; /* None becomes NULL */ + struct _object *export; /* None becomes NULL */ + struct _object *data; /* None stays None */ + char *name; + char *extension; + char *all_extensions; +} *py_ie; +extern void PyFF_SCExport(SplineChar *sc,int ie_index,char *filename, + int layer); +extern void PyFF_SCImport(SplineChar *sc,int ie_index,char *filename, + int layer, int clear); +extern void PyFF_InitFontHook(FontViewBase *fv); + +extern void LookupInit(void); +extern int UserFeaturesDiffer(void); +extern uint32 *StdFeaturesOfScript(uint32 script); + +enum byte_types { bt_instr, bt_cnt, bt_byte, bt_wordhi, bt_wordlo, bt_impliedreturn }; +struct instrdata { + uint8 *instrs; + int instr_cnt, max; + uint8 *bts; + unsigned int changed: 1; + unsigned int in_composit: 1; + SplineFont *sf; + SplineChar *sc; + uint32 tag; + struct instrdlg *id; + struct instrdata *next; +}; + +extern uint8 *_IVParse(SplineFont *sf, char *text, int *len, + void (*IVError)(void *,char *, int), void *iv); +extern char *_IVUnParseInstrs(uint8 *instrs,int instr_cnt); + +extern int BitmapControl(FontViewBase *fv,int32 *sizes,int isavail,int rasterize); +extern void FVSetWidthScript(FontViewBase *fv,enum widthtype wtype,int val,int incr); +extern void FVMetricsCenter(FontViewBase *fv,int docenter); +extern void FVRevert(FontViewBase *fv); +extern void FVRevertBackup(FontViewBase *fv); +extern void FVRevertGlyph(FontViewBase *fv); +extern int MMReblend(FontViewBase *fv, MMSet *mm); +extern FontViewBase *MMCreateBlendedFont(MMSet *mm,FontViewBase *fv,real blends[MmMax],int tonew ); +#endif diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/clipnoui.c b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/clipnoui.c new file mode 100644 index 00000000000..a6b38f970b8 --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/clipnoui.c @@ -0,0 +1,68 @@ +/* Copyright (C) 2007,2008 by George Williams */ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "pfaedit.h" +#include "uiinterface.h" + +static void NClipboard_Grab(void) { +} + +static void NClipboard_AddDataType(const char *type, void *data, int cnt, int size, + void *(*gendata)(void *,int32 *len), void (*freedata)(void *)) { + (void)type; + (void)cnt; + (void)size; + (void)gendata; + if ( freedata!=NULL && data !=NULL ) + (freedata)(data); +} + +/* Asks for the clip and waits for the response. */ +static void *NClipboard_Request(const char *mimetype,int *len) { + *len = 0; + (void)mimetype; +return( NULL ); +} + +static int NClipboard_HasType(const char *mimetype) { + (void)mimetype; +return( 0 ); +} + +static struct clip_interface noui_clip_interface = { + NClipboard_Grab, + NClipboard_AddDataType, + NClipboard_HasType, + NClipboard_Request +}; + +struct clip_interface *clip_interface = &noui_clip_interface; + +void FF_SetClipInterface(struct clip_interface *clipi) { + clip_interface = clipi; +} + diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/configure-pfaedit.h b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/configure-pfaedit.h new file mode 100644 index 00000000000..208341dd8a7 --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/configure-pfaedit.h @@ -0,0 +1,292 @@ +/* Copyright (C) 2002-2008 by George Williams */ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef _CONFIG_FONTFORGE_H_ +#define _CONFIG_FONTFORGE_H_ + + +#include "ff-config.h" + +/* Making FontForge handle more of the capabilities of type3 & svg fonts is not*/ +/* something most people will want. It wastes space too. So I thought I'd */ +/* make it conditional. */ +/* */ +/* #define FONTFORGE_CONFIG_TYPE3 */ +/* */ +/* It allows people to have images in a font, multiple layers, strokes, fills */ +/* transparencies, etc. (type3 doesn't support transparency, svg doesn't do */ +/* images) */ +/* Can be set from configure --with-multilayer */ + + +/* Making FontForge handle device tables uses up more space, so I want */ +/* people to be able to turn it off if space is an issue and device tables */ +/* (ability to correct rounding errors in spacing, ie. kerning, at small */ +/* point sizes) aren't important. */ +/* */ +/* #define FONTFORGE_CONFIG_DEVICETABLES */ +/* */ +/* Can be set from configure --with-devicetables */ + + +/* Apple suggests using a sfnt version of 'true' for fonts designed for use */ +/* only on a mac (windows refuses such fonts). I generally prefer to have a */ +/* font work everywhere, so normally ff produces fonts with version 1.0 */ +/* Set this if you want Apple only fonts (produced when Apple mode is set and*/ +/* Opentype mode is unset in the Generate Fonts-Options dialog). */ +/* */ +/* #define FONTFORGE_CONFIG_APPLE_ONLY_TTF */ +/* */ + + +/* Nobody else puts apple unicode encodings into the name table. So I probably*/ +/* shouldn't either. But if someone wants them... */ +/* */ +/* #define FONTFORGE_CONFIG_APPLE_UNICODE_NAMES */ +/* */ + + +/* Sometimes I want to create a glyph which is a word, and this command */ +/* makes that easy */ +/* */ +/* #define FONTFORGE_CONFIG_PASTEAFTER */ +/* */ +/* The paste after command pastes the contents of the clipboard into the */ +/* current glyph, translates that by the advance width of the current glyph */ +/* and increments the advance width by the advance width of the clipboard */ +/* */ +/* Can be set from configure --enable-pasteafter */ + + + +/* Someone asked for encoding GB12345. Neither libiconv nor iconv supports it.*/ +/* */ +/* #define FONTFORGE_CONFIG_GB12345 */ +/* */ +/* Can be set from configure --enable-gb12345 */ + + +/* I doubt anyone but me will be interested in the tile path command, so I */ +/* don't include code for it by default, but if you do want it simply define */ +/* the following macro */ +/* */ +/* #define FONTFORGE_CONFIG_TILEPATH */ +/* */ +/* The tile path command lets you specify a tile which will then be laid out */ +/* along a path. It could be used to make a font whose stems were filled with*/ +/* celtic knotwork, or bamboo segments, for example. */ +/* It's sort of an extension to the Expand Stroke command, only it strokes */ +/* with a pattern */ +/* */ +/* Can be set from configure --enable-tilepath */ + + +/* There used to be a property _XFREE86_GLYPH_RANGES (in bdf/pcf) fonts which */ +/* gave a quick view about what glyphs were in a bdf font. From what I gather*/ +/* this property has been dropped because it was redundant. If you would */ +/* like FontForge to generate it */ +/* */ +/* #define FONTFORGE_CONFIG_BDF_GLYPH_RANGES */ +/* */ + + +/* I used to use an approximation method when converting cubic to quadratic */ +/* splines which was non-symmetric. In some cases it produced better results */ +/* than the current approach. This flag restores the old algorithm. */ +/* */ +/* #define FONTFORGE_CONFIG_NON_SYMMETRIC_QUADRATIC_CONVERSION */ +/* */ + + +/* Harald Harders would like to be able to generate a PFM file without */ +/* creating a font along with it. I don't see the need for this, but he pro- */ +/* vided a patch. Setting this flag will enable his patch */ +/* */ +/* #define FONTFORGE_CONFIG_WRITE_PFM */ +/* */ + + +/* Prior to late Sept of 2003 FontForge converted certain mac feature/settings*/ +/* into opentype-like tags. Some features could be converted directly but for*/ +/* a few I made up tags. Now FontForge is capable of using the mac feature */ +/* settings directly. If you set this flag then when FontForge loads in an sfd*/ +/* file with these non-standard opentype tags, it will convert them into the */ +/* appropriate mac feature/setting combinations. */ +/* */ +/* #define FONTFORGE_CONFIG_CVT_OLD_MAC_FEATURES */ +/* */ + + +/* Normally fontforge uses float (32 bit real data type) to store position */ +/* and transformation data. If you prefer you may use double (64 bit real) */ +/* instead. The extra precision is usually not needed, but the extra space */ +/* can be a problem with large (CJK, UNICODE) fonts. */ +/* */ +/* #define FONTFORGE_CONFIG_USE_DOUBLE */ +/* #define FONTFORGE_CONFIG_USE_LONGDOUBLE */ +/* */ + + +/* In addition to placing snippets of charstrings into subrs, I tried adding */ +/* whole glyphs (when that was possible). To my surprise, it made things */ +/* worse in one of my test cases, and barely registered an improvement in */ +/* another. So I think we're better off without it. But I don't understand */ +/* why things are worse so I'm leaving the code in to play with */ +/* */ +/* #define FONTFORGE_CONFIG_PS_REFS_GET_SUBRS */ +/* */ + + +/* Werner wants to be able to see the raw (unscaled) data for the location of */ +/* points (in the points window of the debugger). I'm not sure that is */ +/* generally a good idea (I think it makes the dlg look unsymetric). */ +/* */ +/* #define FONTFORGE_CONFIG_SHOW_RAW_POINTS */ +/* */ + +/* On most systems fontforge uses the alt or meta key as a mouse press modifier*/ +/* on the mac that would mean the option key. But the mac usually uses option*/ +/* keypress to mean mouse button 2, and so option isn't available. Let's use */ +/* capslock instead. */ +/* */ +/* #define FONTFORGE_CONFIG_CAPSLOCK_FOR_ALT */ +/* */ +/* This has three states: */ +/* Undefined (or 0) => use meta/alt key */ +/* 2 => Use either meta/alt or capslock */ +/* otherwise => use capslock */ +/* */ +/* Can be set from configure --with-capslock-for-alt */ + + +/* Use horizontal, rather than vertical, tabsets for the Font and glyph Info */ +/* dialogs. This is what things used to look like. */ +/* */ +/* #define FONTFORGE_CONFIG_INFO_HORIZONTAL */ +/* */ + +/* ************************************************************************** */ +/* *********************** Set by configure script ************************** */ +/* ************************************************************************** */ + +/* The following are expected to be set by the configure script, but I suppose*/ +/* you could set them here too */ + +/* If your system does not have a working ldopen (to do dynamic binding of */ +/* shared libaries) then set NODYNAMIC */ + +/* If you are on a Mac then set __Mac */ +/* If you are on a windows box with cygwin set __CygWin */ + +/* If you are on a Mac where cursors are restricted to 16x16 pixel boxes then */ +/* set _CursorsMustBe16x16 */ + +/* If you are on cygwin where even the modifier keys autorepeat then set */ +/* _ModKeysAutoRepeat */ + +/* If you are on cygwin where some of the drawmode funtions (like AND) don't */ +/* work then set _BrokenBitmapImages */ + +/* FontForge knows about 4 different keyboard settings, a windows keyboard, a */ +/* mac keyboard, a mac keyboard under SUSE linux, and a sun keyboard */ +/* When it starts up FontForge assumes that the keyboard is some default type*/ +/* You can override the type by setting _Keyboard to */ +/* 0 -- windows */ +/* 1 -- mac running mac osx */ +/* 3 -- mac running SUSE linux (7.1) */ +/* 2 -- sparc */ +/* Basically this affects the text that appears in menus. The sun keyboard */ +/* uses meta where the windows one uses alt, and the mac use command and */ +/* option. */ + +/* If there are no freetype header files then define _NO_FREETYPE */ +/* If the freetype library has the bytecode debugger then define FREETYPE_HAS_DEBUGGER */ +/* If there is no mmap system call then define _NO_MMAP */ + +/* If there is no ungif library (or if it is out of date) define _NO_LIBUNGIF */ +/* If there is no png (or z) library define _NO_LIBPNG */ +/* If there libpng is version 1.2 define _LIBPNG12 */ +/* If there is no jpeg library define _NO_LIBJPEG */ +/* If there is no tiff library define _NO_LIBTIFF */ +/* If there is no xml2 library define _NO_LIBXML */ +/* If there is no uninameslist library define _NO_LIBUNINAMESLIST */ + +/* If any of the above libraries exists, but only in static form (on a system */ +/* with a dynamic loader) then define _STATIC_LIBUNGIF, etc. */ + +/* If there is no snprintf define _NO_SNPRINTF */ + +/* If the XInput extension is not available define _NO_XINPUT */ +/* If the Xkb extension is not available define _NO_XKB */ + +/* If the compiler supports long long define _HAS_LONGLONG */ + + +/* ************************************************************************** */ +/* ******************************** Obsolete ******************************** */ +/* ************************************************************************** */ + +/******* I decided to turn this on and remove all uses of the flag ************/ +/* I thought it would be fun to write a generalized non linear transformation */ +/* routine. I'm not sure that it's very useful though. It can be used to do */ +/* perspective transformations and such */ +/* */ +/* #define FONTFORGE_CONFIG_NONLINEAR */ +/* */ +/* This command takes two strings which specify general expressions in x and y*/ +/* and applies the specified transformations to the splines. Note: Each */ +/* spline is transformed into a new spline, but some transformations require */ +/* that a spline be broken into components and each of those transformed eg: */ +/* "x' = x, y' = y+sin(x)" would not produce anything useful when applied to */ +/* a long line segment like [0,100]...[100,100], but if that were broken up */ +/* into sub-segments each pi long the results would be much better */ + + +/******* Don't need this any longer as copy layer 2 layer is always available */ +/* Yoshiki Hayashi wants a copy background to foreground command in the */ +/* outline view. Setting this flag will enable his patch */ +/* */ +/* #define FONTFORGE_CONFIG_COPY_BG_TO_FG */ +/* */ + + +/* ************************************************************************** */ +/* **************************** Numeric Settings **************************** */ +/* ************************************************************************** */ + + +/* The number of files displayed in the "File->Recent" menu */ +#define RECENT_MAX 10 + +/* The number of tabs allowed in the outline glyph view of former glyphs */ +#define FORMER_MAX 10 + +/* The maximum number of layers allowed in a normal font (this includes the */ +/* default foreground and background layers) -- this does not limit type3 */ +/* fonts */ +#define BACK_LAYER_MAX 256 + +#endif diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/cvundoes.c b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/cvundoes.c new file mode 100644 index 00000000000..a19bcb9a4c0 --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/cvundoes.c @@ -0,0 +1,134 @@ +/* Copyright (C) 2000-2008 by George Williams */ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#define _DEFINE_SEARCHVIEW_ +#include "fontforgevw.h" +#include +#include +#include + +extern char *coord_sep; + +int onlycopydisplayed = 0; +int copymetadata = 0; +int copyttfinstr = 0; + +/* ********************************* Undoes ********************************* */ + +int maxundoes = 0; /* -1 is infinite */ + +static void UHintListFree(void *hints) { + StemInfo *h, *t, *p; + + if ( hints==NULL ) +return; + if ( ((StemInfo *) hints)->hinttype==ht_d ) + DStemInfosFree(hints); + else { + h = t = hints; + p = NULL; + while ( t!=NULL && t->hinttype!=ht_d ) { + p = t; + t = t->next; + } + p->next = NULL; + StemInfosFree(h); + DStemInfosFree((DStemInfo *) t); + } +} + +void UndoesFree(Undoes *undo) { + Undoes *unext; + + while ( undo!=NULL ) { + unext = undo->next; + switch ( undo->undotype ) { + case ut_noop: + case ut_width: case ut_vwidth: case ut_lbearing: case ut_rbearing: + /* Nothing else to free */; + break; + case ut_state: case ut_tstate: case ut_statehint: case ut_statename: + case ut_hints: case ut_anchors: case ut_statelookup: + SplinePointListsFree(undo->u.state.splines); + RefCharsFree(undo->u.state.refs); + UHintListFree(undo->u.state.hints); + free(undo->u.state.instrs); + ImageListsFree(undo->u.state.images); + if ( undo->undotype==ut_statename ) { + free( undo->u.state.charname ); + free( undo->u.state.comment ); + PSTFree( undo->u.state.possub ); + } + AnchorPointsFree(undo->u.state.anchor); + break; + case ut_bitmap: + free(undo->u.bmpstate.bitmap); + break; + case ut_multiple: case ut_layers: + UndoesFree( undo->u.multiple.mult ); + break; + case ut_composit: + UndoesFree(undo->u.composit.state); + UndoesFree(undo->u.composit.bitmaps); + break; + default: + IError( "Unknown undo type in UndoesFree: %d", undo->undotype ); + break; + } + chunkfree(undo,sizeof(Undoes)); + undo = unext; + } +} + +int getAdobeEnc(char *name) { + extern char *AdobeStandardEncoding[256]; + int i; + + for ( i=0; i<256; ++i ) + if ( strcmp(name,AdobeStandardEncoding[i])==0 ) + break; + if ( i==256 ) i = -1; +return( i ); +} + +int SCWasEmpty(SplineChar *sc, int skip_this_layer) { + int i; + + for ( i=ly_fore; ilayer_cnt; ++i ) if ( i!=skip_this_layer && !sc->layers[i].background ) { + if ( sc->layers[i].refs!=NULL ) +return( false ); + else if ( sc->layers[i].splines!=NULL ) { + SplineSet *ss; + for ( ss = sc->layers[i].splines; ss!=NULL; ss=ss->next ) { + if ( ss->first->prev!=NULL ) +return( false ); /* Closed contour */ + } + } + } +return( true ); +} + + diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/dumppfa.c b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/dumppfa.c new file mode 100644 index 00000000000..9a0e32a7240 --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/dumppfa.c @@ -0,0 +1,221 @@ +/* Copyright (C) 2000-2008 by George Williams */ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "pfaedit.h" +#include +#include +#include +#include +#include +#include +#include +#include +#ifndef _WIN32 +# include +#endif +#include +#include +#include "psfont.h" +#include "splinefont.h" +#ifdef FONTFORGE_CONFIG_TYPE3 + #include /* For image defn */ +#endif + +#ifdef __CygWin + #include + #include + #include +#endif + +extern int autohint_before_generate; +char *xuid=NULL; + +typedef void (*DumpChar)(int ch,void *data); +struct fileencryptdata { + DumpChar olddump; + void *olddata; + unsigned short r; + int hexline; +}; +#define c1 52845 +#define c2 22719 + +struct psdict *PSDictCopy(struct psdict *dict) { + struct psdict *ret; + int i; + + if ( dict==NULL ) +return( NULL ); + + ret = gcalloc(1,sizeof(struct psdict)); + ret->cnt = dict->cnt; ret->next = dict->next; + ret->keys = gcalloc(ret->cnt,sizeof(char *)); + ret->values = gcalloc(ret->cnt,sizeof(char *)); + for ( i=0; inext; ++i ) { + ret->keys[i] = copy(dict->keys[i]); + ret->values[i] = copy(dict->values[i]); + } + +return( ret ); +} + +int PSDictFindEntry(struct psdict *dict, char *key) { + int i; + + if ( dict==NULL ) +return( -1 ); + + for ( i=0; inext; ++i ) + if ( strcmp(dict->keys[i],key)==0 ) +return( i ); + +return( -1 ); +} + +char *PSDictHasEntry(struct psdict *dict, char *key) { + int i; + + if ( dict==NULL ) +return( NULL ); + + for ( i=0; inext; ++i ) + if ( strcmp(dict->keys[i],key)==0 ) +return( dict->values[i] ); + +return( NULL ); +} + +int PSDictRemoveEntry(struct psdict *dict, char *key) { + int i; + + if ( dict==NULL ) +return( false ); + + for ( i=0; inext; ++i ) + if ( strcmp(dict->keys[i],key)==0 ) + break; + if ( i==dict->next ) +return( false ); + free( dict->keys[i]); + free( dict->values[i] ); + --dict->next; + while ( inext ) { + dict->keys[i] = dict->keys[i+1]; + dict->values[i] = dict->values[i+1]; + ++i; + } + +return( true ); +} + +int PSDictChangeEntry(struct psdict *dict, char *key, char *newval) { + int i; + + if ( dict==NULL ) +return( -1 ); + + for ( i=0; inext; ++i ) + if ( strcmp(dict->keys[i],key)==0 ) + break; + if ( i==dict->next ) { + if ( dict->next>=dict->cnt ) { + dict->cnt += 10; + dict->keys = grealloc(dict->keys,dict->cnt*sizeof(char *)); + dict->values = grealloc(dict->values,dict->cnt*sizeof(char *)); + } + dict->keys[dict->next] = copy(key); + dict->values[dict->next] = NULL; + ++dict->next; + } + free(dict->values[i]); + dict->values[i] = copy(newval); +return( i ); +} + + +static double FindMaxDiffOfBlues(char *pt, double max_diff) { + char *end; + double p1, p2; + + while ( *pt==' ' || *pt=='[' ) ++pt; + forever { + p1 = strtod(pt,&end); + if ( end==pt ) + break; + pt = end; + p2 = strtod(pt,&end); + if ( end==pt ) + break; + if ( p2-p1 >max_diff ) max_diff = p2-p1; + pt = end; + } +return( max_diff ); +} + +double BlueScaleFigureForced(struct psdict *private,real bluevalues[], real otherblues[]) { + double max_diff=0; + char *pt; + int i; + + pt = PSDictHasEntry(private,"BlueValues"); + if ( pt!=NULL ) { + max_diff = FindMaxDiffOfBlues(pt,max_diff); + } else if ( bluevalues!=NULL ) { + for ( i=0; i<14 && (bluevalues[i]!=0 || bluevalues[i+1])!=0; i+=2 ) { + if ( bluevalues[i+1] - bluevalues[i]>=max_diff ) + max_diff = bluevalues[i+1] - bluevalues[i]; + } + } + pt = PSDictHasEntry(private,"FamilyBlues"); + if ( pt!=NULL ) + max_diff = FindMaxDiffOfBlues(pt,max_diff); + + pt = PSDictHasEntry(private,"OtherBlues"); + if ( pt!=NULL ) + max_diff = FindMaxDiffOfBlues(pt,max_diff); + else if ( otherblues!=NULL ) { + for ( i=0; i<10 && (otherblues[i]!=0 || otherblues[i+1]!=0); i+=2 ) { + if ( otherblues[i+1] - otherblues[i]>=max_diff ) + max_diff = otherblues[i+1] - otherblues[i]; + } + } + pt = PSDictHasEntry(private,"FamilyOtherBlues"); + if ( pt!=NULL ) + max_diff = FindMaxDiffOfBlues(pt,max_diff); + if ( max_diff<=0 ) +return( -1 ); + if ( 1/max_diff > .039625 ) +return( -1 ); + +return( .99/max_diff ); +} + +double BlueScaleFigure(struct psdict *private,real bluevalues[], real otherblues[]) { + if ( PSDictHasEntry(private,"BlueScale")!=NULL ) +return( -1 ); + return BlueScaleFigureForced(private, bluevalues, otherblues); +} + diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/edgelist.h b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/edgelist.h new file mode 100644 index 00000000000..ded484f40ff --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/edgelist.h @@ -0,0 +1,149 @@ +/* Copyright (C) 2000-2008 by George Williams */ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef _EDGELIST_H +#define _EDGELIST_H +#include "splinefont.h" + +typedef struct hints { + real base, width; + real b1, b2, e1, e2; + real ab, ae; + unsigned int adjustb: 1; + unsigned int adjuste: 1; + struct hints *next; +} Hints; + +/* Instead of y and x coordinates these are based on major and other */ +/* major maybe either x or y depending on what we're interested in */ +/* at the moment, and other will be the other one. Of course it's */ +/* consistant accross the datastructure at any given time */ +typedef struct edge { + real mmin, mmax; /* relative to es->mmin */ + real t_mmin, t_mmax; + real tmin, tmax; + real o_mmin, o_mmax; + real t_cur, o_cur, m_cur; + unsigned int up: 1; /* line is directed up in the spline list */ + unsigned int max_adjusted: 1; /* by hstem hints */ + unsigned int min_adjusted: 1; + Spline *spline; /* spline which generated this segment */ + struct edge *esnext, *aenext; + struct edge *before, *after; + int last_opos, last_mpos; + real oldt; /* only used for FindIntersections of RemoveOverlap */ +} Edge; + +typedef struct edgelist { + Edge **edges; + int cnt; + real mmin, mmax; + real omin, omax; + real scale; + int bytes_per_line; + uint8 *bitmap; + Edge *last, *splinesetfirst; + SplineChar *sc; + int layer; + char *interesting; + int major, other; + unsigned int genmajoredges: 1; /* generate a list of edges parallel to the major axis */ + Edge *majors; /* ordered so that lowest edge is first */ + Edge *majorhold; /* to hold major edges as we pass them and they become useless */ + Hints *hhints, *vhints; + int is_overlap; + DBounds bbox; /* Not always set. {m,o}{min,max} a provide scaled bbox, this is in glyph units */ +} EdgeList; + +extern void FreeEdges(EdgeList *es); +extern double TOfNextMajor(Edge *e, EdgeList *es, double sought_y ); +extern void FindEdgesSplineSet(SplinePointList *spl, EdgeList *es, int ignore_clip); +extern Edge *ActiveEdgesInsertNew(EdgeList *es, Edge *active,int i); +extern Edge *ActiveEdgesRefigure(EdgeList *es, Edge *active,real i); +extern Edge *ActiveEdgesFindStem(Edge *apt, Edge **prev, real i); + +/* Version which is better for everything other than rasterization */ +/* (I think) */ +typedef struct edgeinfo { + /* The spline is broken up at all extrema. So... */ + /* The spline between tmin and tmax is monotonic in both coordinates */ + /* If the spline becomes vert/horizontal that will be at one of the */ + /* end points too */ + Spline *spline; + real tmin, tmax; + real coordmin[2]; + real coordmax[2]; + unsigned int up: 1; + unsigned int hv: 1; + unsigned int hvbottom: 1; + unsigned int hvtop: 1; + unsigned int hor: 1; + unsigned int vert: 1; + unsigned int almosthor: 1; + unsigned int almostvert: 1; + unsigned int horattmin: 1; + unsigned int horattmax: 1; + unsigned int vertattmin: 1; + unsigned int vertattmax: 1; + unsigned hup: 1; + unsigned vup: 1; + real tcur; /* Value of t for current major coord */ + real ocur; /* Value of the other coord for current major coord */ + struct edgeinfo *next; + struct edgeinfo *ordered; + struct edgeinfo *aenext; + struct edgeinfo *splinenext; + SplineChar *sc; + int major; +} EI; + +typedef struct eilist { + EI *edges; + real coordmin[2]; + real coordmax[2]; + int low, high, cnt; + EI **ordered; + char *ends; /* flag to say an edge ends on this line */ + SplineChar *sc; + int layer; + int major; + EI *splinelast, *splinefirst; + EI **bottoms, **tops; /* Used only be FindNeeded in RemoveOverlap */ + unsigned leavetiny: 1; + enum overlap_type ot; +} EIList; + +extern void ElFreeEI(EIList *el); +extern void ELFindEdges(SplineChar *sc, EIList *el); +extern void ELOrder(EIList *el, int major ); +extern real EITOfNextMajor(EI *e, EIList *el, real sought_m ); +extern int EISameLine(EI *e, EI *n, real i, int major); +extern int EISkipExtremum(EI *e, real i, int major); +extern EI *EIActiveEdgesFindStem(EI *apt, real i, int major); +extern EI *EIActiveListReorder(EI *active,int *change); +extern EI *EIActiveEdgesRefigure(EIList *el, EI *active,real i,int major, + int *_change); +#endif diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/edgelist2.h b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/edgelist2.h new file mode 100644 index 00000000000..d84925bbde7 --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/edgelist2.h @@ -0,0 +1,49 @@ +/* Copyright (C) 2004-2008 by George Williams */ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef _EDGELIST2_H +#define _EDGELIST2_H +#include "splinefont.h" + +typedef struct monotonic { + Spline *s; + extended tstart, tend; + struct monotonic *next, *prev; /* along original contour */ + uint8 xup; /* increasing t => increasing x */ + uint8 yup; + unsigned int isneeded : 1; + unsigned int isunneeded : 1; + unsigned int exclude : 1; + struct intersection *start; + struct intersection *end; + DBounds b; + extended other, t; + struct monotonic *linked; /* singly linked list of all monotonic*/ + /* segments, no contour indication */ + double when_set; /* Debugging */ +} Monotonic; + +#endif /* _EDGELIST2_H */ diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/encoding.c b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/encoding.c new file mode 100644 index 00000000000..6fccf29e8ae --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/encoding.c @@ -0,0 +1,1152 @@ +/* Copyright (C) 2000-2008 by George Williams */ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "fontforgevw.h" +#include +#include +#include +#include +#include +#include +#include +#include "plugins.h" +#include "encoding.h" + +Encoding *default_encoding = NULL; + +static int32 tex_base_encoding[] = { + 0x0000, 0x02d9, 0xfb01, 0xfb02, 0x2044, 0x02dd, 0x0141, 0x0142, + 0x02db, 0x02da, 0x000a, 0x02d8, 0x2212, 0x000d, 0x017d, 0x017e, + 0x02c7, 0x0131, 0xf6be, 0xfb00, 0xfb03, 0xfb04, 0x2260, 0x221e, + 0x2264, 0x2265, 0x2202, 0x2211, 0x220f, 0x03c0, 0x0060, 0x0027, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x2019, + 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, + 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, + 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, + 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, + 0x2018, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, + 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, + 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, + 0x20ac, 0x222b, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021, + 0x02c6, 0x2030, 0x0160, 0x2039, 0x0152, 0x2126, 0x221a, 0x2248, + 0x0090, 0x0091, 0x0092, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, + 0x02dc, 0x2122, 0x0161, 0x203a, 0x0153, 0x2206, 0x25ca, 0x0178, + 0x0000, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, + 0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x002d, 0x00ae, 0x00af, + 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, + 0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf, + 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, + 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, + 0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7, + 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df, + 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, + 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, + 0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7, + 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x00ff +}; + +static int32 unicode_from_MacSymbol[] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, + 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, + 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, + 0x0020, 0x0021, 0x2200, 0x0023, 0x2203, 0x0025, 0x0026, 0x220d, + 0x0028, 0x0029, 0x2217, 0x002b, 0x002c, 0x2212, 0x002e, 0x002f, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, + 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, + 0x2245, 0x0391, 0x0392, 0x03a7, 0x0394, 0x0395, 0x03a6, 0x0393, + 0x0397, 0x0399, 0x03d1, 0x039a, 0x039b, 0x039c, 0x039d, 0x039f, + 0x03a0, 0x0398, 0x03a1, 0x03a3, 0x03a4, 0x03a5, 0x03c2, 0x03a9, + 0x039e, 0x03a8, 0x0396, 0x005b, 0x2234, 0x005d, 0x22a5, 0x005f, + 0xf8e5, 0x03b1, 0x03b2, 0x03c7, 0x03b4, 0x03b5, 0x03c6, 0x03b3, + 0x03b7, 0x03b9, 0x03d5, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03bf, + 0x03c0, 0x03b8, 0x03c1, 0x03c3, 0x03c4, 0x03c5, 0x03d6, 0x03c9, + 0x03be, 0x03c8, 0x03b6, 0x007b, 0x007c, 0x007d, 0x223c, 0x007f, + 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, + 0x0088, 0x0089, 0x008a, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, + 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, + 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, + 0x0000, 0x03d2, 0x2032, 0x2264, 0x2044, 0x221e, 0x0192, 0x2663, + 0x2666, 0x2665, 0x2660, 0x2194, 0x2190, 0x2191, 0x2192, 0x2193, + 0x00b0, 0x00b1, 0x2033, 0x2265, 0x00d7, 0x221d, 0x2202, 0x2022, + 0x00f7, 0x2260, 0x2261, 0x2248, 0x2026, 0xf8e6, 0xf8e7, 0x21b5, + 0x2135, 0x2111, 0x211c, 0x2118, 0x2297, 0x2295, 0x2205, 0x2229, + 0x222a, 0x2283, 0x2287, 0x2284, 0x2282, 0x2286, 0x2208, 0x2209, + 0x2220, 0x2207, 0x00ae, 0x00a9, 0x2122, 0x220f, 0x221a, 0x22c5, + 0x00ac, 0x2227, 0x2228, 0x21d4, 0x21d0, 0x21d1, 0x21d2, 0x21d3, + 0x22c4, 0x2329, 0xf8e8, 0xf8e9, 0xf8ea, 0x2211, 0xf8eb, 0xf8ec, + 0xf8ed, 0xf8ee, 0xf8ef, 0xf8f0, 0xf8f1, 0xf8f2, 0xf8f3, 0xf8f4, + 0xf8ff, 0x232a, 0x222b, 0x2320, 0xf8f5, 0x2321, 0xf8f6, 0xf8f7, + 0xf8f8, 0xf8f9, 0xf8fa, 0xf8fb, 0xf8fc, 0xf8fd, 0xf8fe, 0x02c7 +}; + +/* I don't think iconv provides encodings for zapfdingbats nor jis201 */ +/* Perhaps I should list them here for compatability, but I think I'll just */ +/* leave them out. I doubt they get used. */ +static Encoding texbase = { "TeX-Base-Encoding", 256, tex_base_encoding, NULL, NULL, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, { 0, 0 }, 0, 0, 0, NULL, NULL, NULL, NULL, NULL, 0, 0 }; + Encoding custom = { "Custom", 0, NULL, NULL, &texbase, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, { 0, 0 }, 0, 0, 0, NULL, NULL, NULL, NULL, NULL, 0, 0 }; +static Encoding original = { "Original", 0, NULL, NULL, &custom, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, { 0, 0 }, 0, 0, 0, NULL, NULL, NULL, NULL, NULL, 0, 0 }; +static Encoding unicodebmp = { "UnicodeBmp", 65536, NULL, NULL, &original, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, { 0, 0 }, 0, 0, 0, NULL, NULL, NULL, NULL, NULL, 0, 0 }; +static Encoding unicodefull = { "UnicodeFull", 17*65536, NULL, NULL, &unicodebmp, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, { 0, 0 }, 0, 0, 0, NULL, NULL, NULL, NULL, NULL, 0, 0 }; +static Encoding adobestd = { "AdobeStandard", 256, unicode_from_adobestd, AdobeStandardEncoding, &unicodefull, + 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, { 0, 0 }, 0, 0, 0, NULL, NULL, NULL, NULL, NULL, 0, 0 }; +static Encoding symbol = { "Symbol", 256, unicode_from_MacSymbol, NULL, &adobestd,1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, { 0, 0 }, 0, 0, 0, NULL, NULL, NULL, NULL, NULL, 0, 0 }; + +Encoding *enclist = &symbol; + +const char *FindUnicharName(void) { + /* Iconv and libiconv use different names for UCS2. Just great. Perhaps */ + /* different versions of each use still different names? */ + /* Even worse, both accept UCS-2, but under iconv it means native byte */ + /* ordering and under libiconv it means big-endian */ + iconv_t test; + static char *goodname = NULL; +#ifdef UNICHAR_16 + static char *names[] = { "UCS-2-INTERNAL", "UCS-2", "UCS2", "ISO-10646/UCS2", "UNICODE", NULL }; + static char *namesle[] = { "UCS-2LE", "UNICODELITTLE", NULL }; + static char *namesbe[] = { "UCS-2BE", "UNICODEBIG", NULL }; +#else + static char *names[] = { "UCS-4-INTERNAL", "UCS-4", "UCS4", "ISO-10646-UCS-4", "UTF-32", NULL }; + static char *namesle[] = { "UCS-4LE", "UTF-32LE", NULL }; + static char *namesbe[] = { "UCS-4BE", "UTF-32BE", NULL }; +#endif + char **testnames; + int i; + union { + short s; + char c[2]; + } u; + + if ( goodname!=NULL ) +return( goodname ); + + u.c[0] = 0x1; u.c[1] = 0x2; + if ( u.s==0x201 ) { /* Little endian */ + testnames = namesle; + } else { + testnames = namesbe; + } + for ( i=0; testnames[i]!=NULL; ++i ) { + test = iconv_open(testnames[i],"ISO-8859-1"); + if ( test!=(iconv_t) -1 && test!=NULL ) { + iconv_close(test); + goodname = testnames[i]; + break; + } + } + + if ( goodname==NULL ) { + for ( i=0; names[i]!=NULL; ++i ) { + test = iconv_open(names[i],"ISO-8859-1"); + if ( test!=(iconv_t) -1 && test!=NULL ) { + iconv_close(test); + goodname = names[i]; + break; + } + } + } + + if ( goodname==NULL ) { +#ifdef UNICHAR_16 + IError( "I can't figure out your version of iconv(). I need a name for the UCS-2 encoding and I can't find one. Reconfigure --without-iconv. Bye."); +#else + IError( "I can't figure out your version of iconv(). I need a name for the UCS-4 encoding and I can't find one. Reconfigure --without-iconv. Bye."); +#endif + exit( 1 ); + } + + test = iconv_open(goodname,"Mac"); + if ( test==(iconv_t) -1 || test==NULL ) { + IError( "Your version of iconv does not support the \"Mac Roman\" encoding.\nIf this causes problems, reconfigure --without-iconv." ); + } else + iconv_close(test); + + /* I really should check for ISO-2022-JP, KR, CN, and all the other encodings */ + /* I might find in a ttf 'name' table. But those tables take too long to build */ +return( goodname ); +} + +static int TryEscape( Encoding *enc,char *escape_sequence ) { + char from[20], ucs[20]; + size_t fromlen, tolen; + ICONV_CONST char *fpt; + char *upt; + int i, j, low; + int esc_len = strlen(escape_sequence); + + strcpy(from,escape_sequence); + + enc->has_2byte = false; + low = -1; + for ( i=0; i<256; ++i ) if ( i!=escape_sequence[0] ) { + for ( j=0; j<256; ++j ) { + from[esc_len] = i; from[esc_len+1] = j; from[esc_len+2] = 0; + fromlen = esc_len+2; + fpt = from; + upt = ucs; + tolen = sizeof(ucs); + if ( iconv( enc->tounicode , &fpt, &fromlen, &upt, &tolen )!= (size_t) (-1) && + upt-ucs==sizeof(unichar_t) /* Exactly one character */ ) { + if ( low==-1 ) { + enc->low_page = low = i; + enc->has_2byte = true; + } + enc->high_page = i; + break; + } + } + } + if ( enc->low_page==enc->high_page ) + enc->has_2byte = false; + if ( enc->has_2byte ) { + strcpy(enc->iso_2022_escape, escape_sequence); + enc->iso_2022_escape_len = esc_len; + } +return( enc->has_2byte ); +} + +Encoding *_FindOrMakeEncoding(const char *name,int make_it) { + Encoding *enc; + char buffer[20]; + const char *iconv_name; + Encoding temp; + uint8 good[256]; + int i, j, any, all; + char from[8], ucs[20]; + size_t fromlen, tolen; + ICONV_CONST char *fpt; + char *upt; + /* iconv is not case sensitive */ + + if ( strncasecmp(name,"iso8859_",8)==0 || strncasecmp(name,"koi8_",5)==0 ) { + /* Fixup for old naming conventions */ + strncpy(buffer,name,sizeof(buffer)); + *strchr(buffer,'_') = '-'; + name = buffer; + } else if ( strcasecmp(name,"iso-8859")==0 ) { + /* Fixup for old naming conventions */ + strncpy(buffer,name,3); + strncpy(buffer+3,name+4,sizeof(buffer)-3); + name = buffer; + } else if ( strcasecmp(name,"isolatin1")==0 ) { + name = "iso8859-1"; + } else if ( strcasecmp(name,"isocyrillic")==0 ) { + name = "iso8859-5"; + } else if ( strcasecmp(name,"isoarabic")==0 ) { + name = "iso8859-6"; + } else if ( strcasecmp(name,"isogreek")==0 ) { + name = "iso8859-7"; + } else if ( strcasecmp(name,"isohebrew")==0 ) { + name = "iso8859-8"; + } else if ( strcasecmp(name,"isothai")==0 ) { + name = "tis-620"; /* TIS doesn't define non-breaking space in 0xA0 */ + } else if ( strcasecmp(name,"latin0")==0 || strcasecmp(name,"latin9")==0 ) { + name = "iso8859-15"; /* "latin-9" is supported (libiconv bug?) */ + } else if ( strcasecmp(name,"koi8r")==0 ) { + name = "koi8-r"; + } else if ( strncasecmp(name,"jis201",6)==0 || strncasecmp(name,"jisx0201",8)==0 ) { + name = "jis_x0201"; + } else if ( strcasecmp(name,"AdobeStandardEncoding")==0 || strcasecmp(name,"Adobe")==0 ) + name = "AdobeStandard"; + for ( enc=enclist; enc!=NULL; enc=enc->next ) + if ( strmatch(name,enc->enc_name)==0 || + (enc->iconv_name!=NULL && strmatch(name,enc->iconv_name)==0)) +return( enc ); + if ( strmatch(name,"unicode")==0 || strmatch(name,"iso10646")==0 || strmatch(name,"iso10646-1")==0 ) +return( &unicodebmp ); + if ( strmatch(name,"unicode4")==0 || strmatch(name,"ucs4")==0 ) +return( &unicodefull ); + + iconv_name = name; + /* Mac seems to work ok */ + if ( strcasecmp(name,"win")==0 || strcasecmp(name,"ansi")==0 ) + iconv_name = "MS-ANSI"; /* "WINDOWS-1252";*/ + else if ( strncasecmp(name,"jis208",6)==0 || strncasecmp(name,"jisx0208",8)==0 ) + iconv_name = "ISO-2022-JP"; + else if ( strncasecmp(name,"jis212",6)==0 || strncasecmp(name,"jisx0212",8)==0 ) + iconv_name = "ISO-2022-JP-2"; + else if ( strncasecmp(name,"ksc5601",7)==0 ) + iconv_name = "ISO-2022-KR"; + else if ( strcasecmp(name,"gb2312pk")==0 || strcasecmp(name,"gb2312packed")==0 ) + iconv_name = "EUC-CN"; + else if ( strncasecmp(name,"gb2312",6)==0 ) + iconv_name = "ISO-2022-CN"; + else if ( strcasecmp(name,"wansung")==0 ) + iconv_name = "EUC-KR"; + else if ( strcasecmp(name,"EUC-CN")==0 ) { + iconv_name = name; + name = "gb2312pk"; + } else if ( strcasecmp(name,"EUC-KR")==0 ) { + iconv_name = name; + name = "wansung"; + } + +/* Escape sequences: */ +/* ISO-2022-CN: \e $ ) A ^N */ +/* ISO-2022-KR: \e $ ) C ^N */ +/* ISO-2022-JP: \e $ B */ +/* ISO-2022-JP-2: \e $ ( D */ +/* ISO-2022-JP-3: \e $ ( O */ /* Capital "O", not zero */ +/* ISO-2022-CN-EXT: \e $ ) E ^N */ /* Not sure about this, also uses CN escape */ + + memset(&temp,0,sizeof(temp)); + temp.builtin = true; + temp.tounicode = iconv_open(FindUnicharName(),iconv_name); + if ( temp.tounicode==(iconv_t) -1 || temp.tounicode==NULL ) +return( NULL ); /* Iconv doesn't recognize this name */ + temp.fromunicode = iconv_open(iconv_name,FindUnicharName()); + if ( temp.fromunicode==(iconv_t) -1 || temp.fromunicode==NULL ) { + /* This should never happen, but if it does... */ + iconv_close(temp.tounicode); +return( NULL ); + } + + memset(good,0,sizeof(good)); + any = false; all = true; + for ( i=1; i<256; ++i ) { + from[0] = i; from[1] = 0; + fromlen = 1; + fpt = from; + upt = ucs; + tolen = sizeof(ucs); + if ( iconv( temp.tounicode , &fpt, &fromlen, &upt, &tolen )!= (size_t) (-1)) { + good[i] = true; + any = true; + } else + all = false; + } + if ( any ) + temp.has_1byte = true; + if ( all ) + temp.only_1byte = true; + + if ( !all ) { + if ( strstr(iconv_name,"2022")==NULL ) { + for ( i=temp.has_1byte; i<256; ++i ) if ( !good[i] ) { + for ( j=0; j<256; ++j ) { + from[0] = i; from[1] = j; from[2] = 0; + fromlen = 2; + fpt = from; + upt = ucs; + tolen = sizeof(ucs); + if ( iconv( temp.tounicode , &fpt, &fromlen, &upt, &tolen )!= (size_t) (-1) && + upt-ucs==sizeof(unichar_t) /* Exactly one character */ ) { + if ( temp.low_page==-1 ) + temp.low_page = i; + temp.high_page = i; + temp.has_2byte = true; + break; + } + } + } + if ( temp.low_page==temp.high_page ) { + temp.has_2byte = false; + temp.low_page = temp.high_page = -1; + } + } + if ( !temp.has_2byte && !good[033]/* escape */ ) { + if ( strstr(iconv_name,"2022")!=NULL && + strstr(iconv_name,"JP3")!=NULL && + TryEscape( &temp,"\33$(O" )) { + ; + } + else if ( strstr(iconv_name,"2022")!=NULL && + strstr(iconv_name,"JP2")!=NULL && + TryEscape( &temp,"\33$(D" )) { + ; + } + else if ( strstr(iconv_name,"2022")!=NULL && + strstr(iconv_name,"JP")!=NULL && + TryEscape( &temp,"\33$B" )) { + ; + } + else if ( strstr(iconv_name,"2022")!=NULL && + strstr(iconv_name,"KR")!=NULL && + TryEscape( &temp,"\33$)C\16" )) { + ; + } + else if ( strstr(iconv_name,"2022")!=NULL && + strstr(iconv_name,"CN")!=NULL && + TryEscape( &temp,"\33$)A\16" )) { + ; + } + } + } + if ( !temp.has_1byte && !temp.has_2byte ) +return( NULL ); + if ( !make_it ) +return( NULL ); + + enc = chunkalloc(sizeof(Encoding)); + *enc = temp; + enc->enc_name = copy(name); + if ( iconv_name!=name ) + enc->iconv_name = copy(iconv_name); + enc->next = enclist; + enc->builtin = true; + enclist = enc; + if ( enc->has_2byte ) + enc->char_cnt = (enc->high_page<<8) + 256; + else { + enc->char_cnt = 256; + enc->only_1byte = true; + } + if ( strstrmatch(iconv_name,"JP")!=NULL || + strstrmatch(iconv_name,"sjis")!=NULL || + strstrmatch(iconv_name,"cp932")!=NULL ) + enc->is_japanese = true; + else if ( strstrmatch(iconv_name,"KR")!=NULL ) + enc->is_korean = true; + else if ( strstrmatch(iconv_name,"CN")!=NULL ) + enc->is_simplechinese = true; + else if ( strstrmatch(iconv_name,"BIG")!=NULL && strstrmatch(iconv_name,"5")!=NULL ) + enc->is_tradchinese = true; + + if ( strstrmatch(name,"ISO8859")!=NULL && + strtol(name+strlen(name)-2,NULL,10)>=16 ) + /* Not in our menu, don't hide */; + else if ( iconv_name!=name || strmatch(name,"mac")==0 || strstrmatch(name,"ISO8859")!=NULL || + strmatch(name,"koi8-r")==0 || strmatch(name,"sjis")==0 || + strmatch(name,"big5")==0 || strmatch(name,"big5hkscs")==0 ) + enc->hidden = true; + +return( enc ); +} + +Encoding *FindOrMakeEncoding(const char *name) { +return( _FindOrMakeEncoding(name,true)); +} + + +/* ************************************************************************** */ +/* ****************************** CID Encodings ***************************** */ +/* ************************************************************************** */ +struct cidmap *cidmaps = NULL; + +int CID2NameUni(struct cidmap *map,int cid, char *buffer, int len) { + int enc = -1; + const char *temp; + +#if defined( _NO_SNPRINTF ) || defined( __VMS ) + if ( map==NULL ) + sprintf(buffer,"cid-%d", cid); + else if ( cidnamemax && map->name[cid]!=NULL ) + strncpy(buffer,map->name[cid],len); + else if ( cid==0 || (cidnamemax && map->unicode[cid]!=0 )) { + if ( map->unicode==NULL || map->namemax==0 ) + enc = 0; + else + enc = map->unicode[cid]; + temp = StdGlyphName(buffer,enc,ui_none,(NameList *) -1); + if ( temp!=buffer ) + strcpy(buffer,temp); + } else + sprintf(buffer,"%s.%d", map->ordering, cid); +#else + if ( map==NULL ) + snprintf(buffer,len,"cid-%d", cid); + else if ( cidnamemax && map->name[cid]!=NULL ) + strncpy(buffer,map->name[cid],len); + else if ( cid==0 ) + strcpy(buffer,".notdef"); + else if ( cidnamemax && map->unicode[cid]!=0 ) { + if ( map->unicode==NULL || map->namemax==0 ) + enc = 0; + else + enc = map->unicode[cid]; + temp = StdGlyphName(buffer,enc,ui_none,(NameList *) -1); + if ( temp!=buffer ) + strcpy(buffer,temp); + } else + snprintf(buffer,len,"%s.%d", map->ordering, cid); +#endif +return( enc ); +} + +int NameUni2CID(struct cidmap *map,int uni, const char *name) { + int i; + + if ( map==NULL ) +return( -1 ); + if ( uni!=-1 ) { + for ( i=0; inamemax; ++i ) + if ( map->unicode[i]==(unsigned)uni ) +return( i ); + } else { + for ( i=0; inamemax; ++i ) + if ( map->name[i]!=NULL && strcmp(map->name[i],name)==0 ) +return( i ); + } +return( -1 ); +} + +int MaxCID(struct cidmap *map) { +return( map->cidmax ); +} + +static char *SearchDirForCidMap(char *dir,char *registry,char *ordering, + int supplement,char **maybefile) { + char maybe[FILENAME_MAX+1]; + struct dirent *ent; + DIR *d; + int len, rlen = strlen(registry), olen=strlen(ordering); + char *pt, *end, *ret; + int test, best = -1; + + if ( dir==NULL ) +return( NULL ); + + if ( *maybefile!=NULL ) { + char *pt = strrchr(*maybefile,'.'); + while ( pt>*maybefile && isdigit(pt[-1])) + --pt; + best = strtol(pt,NULL,10); + } + + d = opendir(dir); + if ( d==NULL ) +return( NULL ); + while ( (ent = readdir(d))!=NULL ) { + if ( (len = strlen(ent->d_name))<8 ) + continue; + if ( strcmp(ent->d_name+len-7,".cidmap")!=0 ) + continue; + if ( strncmp(ent->d_name,registry,rlen)!=0 || ent->d_name[rlen]!='-' ) + continue; + pt = ent->d_name+rlen+1; + if ( strncmp(pt,ordering,olen)!=0 || pt[olen]!='-' ) + continue; + pt += olen+1; + if ( !isdigit(*pt)) + continue; + test = strtol(pt,&end,10); + if ( *end!='.' ) + continue; + if ( test>=supplement ) { + ret = galloc(strlen(dir)+1+len+1); + strcpy(ret,dir); + strcat(ret,"/"); + strcat(ret,ent->d_name); + closedir(d); +return( ret ); + } else if ( test>best ) { + best = test; + strcpy(maybe,ent->d_name); + } + } + closedir(d); + if ( best>-1 ) { + ret = galloc(strlen(dir)+1+strlen(maybe)+1); + strcpy(ret,dir); + strcat(ret,"/"); + strcat(ret,maybe); + *maybefile = ret; + } +return( NULL ); +} + +static struct cidmap *MakeDummyMap(char *registry,char *ordering,int supplement) { + struct cidmap *ret = galloc(sizeof(struct cidmap)); + + ret->registry = copy(registry); + ret->ordering = copy(ordering); + ret->supplement = ret->maxsupple = supplement; + ret->cidmax = ret->namemax = 0; + ret->unicode = NULL; ret->name = NULL; + ret->next = cidmaps; + cidmaps = ret; +return( ret ); +} + +struct cidmap *LoadMapFromFile(char *file,char *registry,char *ordering, + int supplement) { + struct cidmap *ret = galloc(sizeof(struct cidmap)); + char *pt = strrchr(file,'.'); + FILE *f; + int cid1, cid2, uni, cnt, i; + char name[100]; + + while ( pt>file && isdigit(pt[-1])) + --pt; + ret->supplement = ret->maxsupple = strtol(pt,NULL,10); + if ( supplement>ret->maxsupple ) + ret->maxsupple = supplement; + ret->registry = copy(registry); + ret->ordering = copy(ordering); + ret->next = cidmaps; + cidmaps = ret; + + f = fopen( file,"r" ); + if ( f==NULL ) { + ff_post_error(_("Missing cidmap file"),_("Couldn't open cidmap file: %s"), file ); + ret->cidmax = ret->namemax = 0; + ret->unicode = NULL; ret->name = NULL; + } else if ( fscanf( f, "%d %d", &ret->cidmax, &ret->namemax )!=2 ) { + ff_post_error(_("Bad cidmap file"),_("%s is not a cidmap file, please download\nhttp://fontforge.sourceforge.net/cidmaps.tgz"), file ); + fprintf( stderr, _("%s is not a cidmap file, please download\nhttp://fontforge.sourceforge.net/cidmaps.tgz"), file ); + ret->cidmax = ret->namemax = 0; + ret->unicode = NULL; ret->name = NULL; + } else { + ret->unicode = gcalloc(ret->namemax+1,sizeof(uint32)); + ret->name = gcalloc(ret->namemax+1,sizeof(char *)); + while ( 1 ) { + cnt=fscanf( f, "%d..%d %x", &cid1, &cid2, (unsigned *) &uni ); + if ( cnt<=0 ) + break; + if ( cid1>ret->namemax ) + continue; + if ( cnt==3 ) { + if ( cid2>ret->namemax ) cid2 = ret->namemax; + for ( i=cid1; i<=cid2; ++i ) + ret->unicode[i] = uni++; + } else if ( cnt==1 ) { + if ( fscanf(f,"%x", (unsigned *) &uni )==1 ) + ret->unicode[cid1] = uni; + else if ( fscanf(f," /%s", name )==1 ) + ret->name[cid1] = copy(name); + } + } + fclose(f); + } + free(file); +return( ret ); +} + +struct cidmap *FindCidMap(char *registry,char *ordering,int supplement,SplineFont *sf) { + struct cidmap *map, *maybe=NULL; + char *file, *maybefile=NULL; + int maybe_sup = -1; + char *buts[3], *buts2[3]; + char buf[100]; + int ret; + + if ( sf!=NULL && sf->cidmaster ) sf = sf->cidmaster; + if ( sf!=NULL && sf->loading_cid_map ) +return( NULL ); + + for ( map = cidmaps; map!=NULL; map = map->next ) { + if ( strcmp(map->registry,registry)==0 && strcmp(map->ordering,ordering)==0 ) { + if ( supplement<=map->supplement ) +return( map ); + else if ( maybe==NULL || maybe->supplementsupplement ) + maybe = map; + } + } + if ( maybe!=NULL && supplement<=maybe->maxsupple ) +return( maybe ); /* User has said it's ok to use maybe at this supplement level */ + + file = SearchDirForCidMap(".",registry,ordering,supplement,&maybefile); + if ( file==NULL ) + file = SearchDirForCidMap(getFontForgeShareDir(),registry,ordering,supplement,&maybefile); + + if ( file==NULL && (maybe!=NULL || maybefile!=NULL)) { + if ( maybefile!=NULL ) { + char *pt = strrchr(maybefile,'.'); + while ( pt>maybefile && isdigit(pt[-1])) + --pt; + maybe_sup = strtol(pt,NULL,10); + if ( maybe!=NULL && maybe->supplement >= maybe_sup ) { + free(maybefile); maybefile = NULL; + maybe_sup = maybe->supplement; + } else + maybe = NULL; + } + if ( maybe!=NULL ) + maybe_sup = maybe->supplement; + if ( sf!=NULL ) sf->loading_cid_map = true; + buts[0] = _("_Use It"); buts[1] = _("_Search"); buts[2] = NULL; + ret = ff_ask(_("Use CID Map"),(const char **) buts,0,1,_("This font is based on the charset %1$.20s-%2$.20s-%3$d, but the best I've been able to find is %1$.20s-%2$.20s-%4$d.\nShall I use that or let you search?"), + registry,ordering,supplement,maybe_sup); + if ( sf!=NULL ) sf->loading_cid_map = false; + if ( ret==0 ) { + if ( maybe!=NULL ) { + maybe->maxsupple = supplement; +return( maybe ); + } else { + file = maybefile; + maybefile = NULL; + } + } + } + + if ( file==NULL ) { + char *uret; +#if defined( _NO_SNPRINTF ) || defined( __VMS ) + sprintf(buf,"%s-%s-*.cidmap", registry, ordering ); +#else + snprintf(buf,sizeof(buf),"%s-%s-*.cidmap", registry, ordering ); +#endif + if ( maybe==NULL && maybefile==NULL ) { + buf[0] = '\0'; + } + uret = NULL; + if ( uret==NULL ) { + buts2[0] = "_Use It"; buts2[1] = "_Search"; buts2[2] = NULL; + if ( maybe==NULL && maybefile==NULL ) + /* No luck */; + else if ( maybe!=NULL ) { + maybe->maxsupple = supplement; +return( maybe ); + } else { + file = maybefile; + maybefile = NULL; + } + } else { + file = utf82def_copy(uret); + free(uret); + } + } + + free(maybefile); + if ( file!=NULL ) +return( LoadMapFromFile(file,registry,ordering,supplement)); + +return( MakeDummyMap(registry,ordering,supplement)); +} + +/* ************************** Reencoding routines ************************** */ + + +EncMap *EncMapFromEncoding(SplineFont *sf,Encoding *enc) { + int i,j, extras, found, base, unmax; + int *encoded, *unencoded; + EncMap *map; + struct altuni *altuni; + SplineChar *sc; + + if ( enc==NULL ) +return( NULL ); + + base = enc->char_cnt; + if ( enc->is_original ) + base = 0; + else if ( enc->char_cnt<=256 ) + base = 256; + else if ( enc->char_cnt<=0x10000 ) + base = 0x10000; + encoded = galloc(base*sizeof(int)); + memset(encoded,-1,base*sizeof(int)); + unencoded = galloc(sf->glyphcnt*sizeof(int)); + unmax = sf->glyphcnt; + + for ( i=extras=0; iglyphcnt; ++i ) if ( (sc=sf->glyphs[i])!=NULL ) { + found = false; + if ( enc->psnames!=NULL ) { + for ( j=enc->char_cnt-1; j>=0; --j ) { + if ( enc->psnames[j]!=NULL && + strcmp(enc->psnames[j],sc->name)==0 ) { + found = true; + encoded[j] = i; + } + } + } + if ( !found ) { + if ( sc->unicodeenc!=-1 && + sc->unicodeencunicodeenc,enc))!= -1 ) + encoded[j] = i; + else { + /* I don't think extras can surpass unmax now, but it doesn't */ + /* hurt to leave the code (it's from when we encoded duplicates see below) */ + if ( extras>=unmax ) unencoded = grealloc(unencoded,(unmax+=300)*sizeof(int)); + unencoded[extras++] = i; + } + for ( altuni=sc->altuni; altuni!=NULL; altuni=altuni->next ) { + if ( altuni->unienc!=-1 && + altuni->uniencvs==-1 && + altuni->fid==0 && + (j = EncFromUni(altuni->unienc,enc))!= -1 ) + encoded[j] = i; + /* I used to have code here to add these unencoded duplicates */ + /* but I don't really see any reason to do so. The main unicode */ + /* will occur, and any encoded duplicates so the glyph won't */ + /* vanish */ + } + } + } + + /* Some glyphs have both a pua encoding and an encoding in a non-bmp */ + /* plane. Big5HK does and the AMS glyphs do */ + if ( enc->is_unicodefull && (sf->uni_interp == ui_trad_chinese || + sf->uni_interp == ui_ams )) { + extern const int cns14pua[], amspua[]; + const int *pua = sf->uni_interp == ui_ams? amspua : cns14pua; + for ( i=0xe000; i<0xf8ff; ++i ) { + if ( pua[i-0xe000]!=0 ) + encoded[pua[i-0xe000]] = encoded[i]; + } + } + + if ( enc->psnames != NULL ) { + /* Names are more important than unicode code points for some encodings */ + /* AdobeStandard for instance which won't work if you have a glyph */ + /* named "f_i" (must be "fi") even though the code point is correct */ + /* The code above would match f_i where AS requires fi, so force the */ + /* names to be correct. */ + for ( j=0; jchar_cnt; ++j ) { + if ( encoded[j]!=-1 && enc->psnames[j]!=NULL && + strcmp(sf->glyphs[encoded[j]]->name,enc->psnames[j])!=0 ) { + free(sf->glyphs[encoded[j]]->name); + sf->glyphs[encoded[j]]->name = copy(enc->psnames[j]); + } + } + } + + map = chunkalloc(sizeof(EncMap)); + map->enccount = map->encmax = base + extras; + map->map = galloc(map->enccount*sizeof(int)); + memcpy(map->map,encoded,base*sizeof(int)); + memcpy(map->map+base,unencoded,extras*sizeof(int)); + map->backmax = sf->glyphcnt; + map->backmap = galloc(sf->glyphcnt*sizeof(int)); + memset(map->backmap,-1,sf->glyphcnt*sizeof(int)); /* Just in case there are some unencoded glyphs (duplicates perhaps) */ + for ( i = map->enccount-1; i>=0; --i ) if ( map->map[i]!=-1 ) + map->backmap[map->map[i]] = i; + map->enc = enc; + + free(encoded); + free(unencoded); + +return( map ); +} + +EncMap *CompactEncMap(EncMap *map, SplineFont *sf) { + int i, inuse, gid; + int32 *newmap; + + for ( i=inuse=0; ienccount ; ++i ) + if ( (gid = map->map[i])!=-1 && SCWorthOutputting(sf->glyphs[gid])) + ++inuse; + newmap = galloc(inuse*sizeof(int32)); + for ( i=inuse=0; ienccount ; ++i ) + if ( (gid = map->map[i])!=-1 && SCWorthOutputting(sf->glyphs[gid])) + newmap[inuse++] = gid; + free(map->map); + map->map = newmap; + map->enccount = inuse; + map->encmax = inuse; + map->enc = &custom; + memset(map->backmap,-1,sf->glyphcnt*sizeof(int)); + for ( i=inuse-1; i>=0; --i ) + if ( (gid=map->map[i])!=-1 ) + map->backmap[gid] = i; +return( map ); +} + + +static int MapAddEncodingSlot(EncMap *map,int gid) { + int enc; + + if ( map->enccount>=map->encmax ) + map->map = grealloc(map->map,(map->encmax+=10)*sizeof(int)); + enc = map->enccount++; + map->map[enc] = gid; + map->backmap[gid] = enc; +return( enc ); +} + +void FVAddEncodingSlot(FontViewBase *fv,int gid) { + EncMap *map = fv->map; + int enc; + + enc = MapAddEncodingSlot(map,gid); + + fv->selected = grealloc(fv->selected,map->enccount); + fv->selected[enc] = 0; + FVAdjustScrollBarRows(fv,enc); +} + +static int MapAddEnc(SplineFont *sf,SplineChar *sc,EncMap *basemap, EncMap *map,int baseenc, int gid, FontViewBase *fv) { + int any = false, enc; + + if ( gid>=map->backmax ) { + map->backmap = grealloc(map->backmap,(map->backmax+=10)*sizeof(int)); + memset(map->backmap+map->backmax-10,-1,10*sizeof(int)); + } + if ( map->enc->psnames!=NULL ) { + /* Check for multiple encodings */ + for ( enc = map->enc->char_cnt-1; enc>=0; --enc ) { + if ( map->enc->psnames[enc]!=NULL && strcmp(sc->name,map->enc->psnames[enc])==0 ) { + if ( !any ) { + map->backmap[gid] = enc; + any = true; + } + map->map[enc] = gid; + } + } + } else { + enc = SFFindSlot(sf,map,sc->unicodeenc,sc->name); + if ( enc!=-1 ) { + map->map[enc] = gid; + map->backmap[gid] = enc; + any = true; + } + } + if ( basemap!=NULL && map->enc==basemap->enc && baseenc!=-1 ) { + if ( baseenc>=map->enccount ) { + if ( map==fv->map ) + FVAddEncodingSlot(fv,gid); + else + MapAddEncodingSlot(map,gid); + } else { + map->map[baseenc] = gid; + if ( map->backmap[gid]==-1 ) + map->backmap[gid] = baseenc; + } + any = true; + } +return( any ); +} + +void SFAddGlyphAndEncode(SplineFont *sf,SplineChar *sc,EncMap *basemap, int baseenc) { + int gid, mapfound = false; + FontViewBase *fv; + BDFFont *bdf; + + if ( sf->cidmaster==NULL ) { + if ( sf->glyphcnt+1>=sf->glyphmax ) + sf->glyphs = grealloc(sf->glyphs,(sf->glyphmax+=10)*sizeof(SplineChar *)); + gid = sf->glyphcnt++; + for ( bdf = sf->bitmaps; bdf!=NULL; bdf=bdf->next ) { + if ( sf->glyphcnt+1>=bdf->glyphmax ) + bdf->glyphs = grealloc(bdf->glyphs,(bdf->glyphmax=sf->glyphmax)*sizeof(BDFChar *)); + if ( sf->glyphcnt>bdf->glyphcnt ) { + memset(bdf->glyphs+bdf->glyphcnt,0,(sf->glyphcnt-bdf->glyphcnt)*sizeof(BDFChar *)); + bdf->glyphcnt = sf->glyphcnt; + } + } + for ( fv=sf->fv; fv!=NULL; fv = fv->nextsame ) { + EncMap *map = fv->map; + if ( gid>=map->backmax ) + map->backmap = grealloc(map->backmap,(map->backmax=gid+10)*sizeof(int)); + map->backmap[gid] = -1; + } + } else { + gid = baseenc; + if ( baseenc+1>=sf->glyphmax ) + sf->glyphs = grealloc(sf->glyphs,(sf->glyphmax = baseenc+10)*sizeof(SplineChar *)); + if ( baseenc>=sf->glyphcnt ) { + memset(sf->glyphs+sf->glyphcnt,0,(baseenc+1-sf->glyphcnt)*sizeof(SplineChar *)); + sf->glyphcnt = baseenc+1; + for ( bdf = sf->cidmaster->bitmaps; bdf!=NULL; bdf=bdf->next ) { + if ( baseenc+1>=bdf->glyphmax ) + bdf->glyphs = grealloc(bdf->glyphs,(bdf->glyphmax=baseenc+10)*sizeof(BDFChar *)); + if ( baseenc+1>bdf->glyphcnt ) { + memset(bdf->glyphs+bdf->glyphcnt,0,(baseenc+1-bdf->glyphcnt)*sizeof(BDFChar *)); + bdf->glyphcnt = baseenc+1; + } + } + for ( fv=sf->fv; fv!=NULL; fv = fv->nextsame ) if ( fv->sf==sf ) { + EncMap *map = fv->map; + if ( gid>=map->backmax ) + map->backmap = grealloc(map->backmap,(map->backmax=gid+10)*sizeof(int)); + map->backmap[gid] = -1; + } + } + } + sf->glyphs[gid] = NULL; + for ( fv=sf->fv; fv!=NULL; fv = fv->nextsame ) { + EncMap *map = fv->map; + + FVBiggerGlyphCache(fv,gid); + + if ( !MapAddEnc(sf,sc,basemap,map,baseenc,gid,fv) ) + FVAddEncodingSlot(fv,gid); + if ( map==basemap ) mapfound = true; + if ( fv->normal!=NULL ) { + if ( !MapAddEnc(sf,sc,basemap,fv->normal,baseenc,gid,fv)) + MapAddEncodingSlot(fv->normal,gid); + } + } + if ( !mapfound && basemap!=NULL ) + MapAddEnc(sf,sc,basemap,basemap,baseenc,gid,fv); + sf->glyphs[gid] = sc; + sc->orig_pos = gid; + sc->parent = sf; + SFHashGlyph(sf,sc); +} + + +int32 UniFromEnc(int enc, Encoding *encname) { + char from[20]; + unichar_t to[20]; + ICONV_CONST char *fpt; + char *tpt; + size_t fromlen, tolen; + + if ( encname->is_custom || encname->is_original ) +return( -1 ); + if ( enc>=encname->char_cnt ) +return( -1 ); + if ( encname->is_unicodebmp || encname->is_unicodefull ) +return( enc ); + if ( encname->unicode!=NULL ) +return( encname->unicode[enc] ); + else if ( encname->tounicode ) { + /* To my surprise, on RH9, doing a reset on conversion of CP1258->UCS2 */ + /* causes subsequent calls to return garbage */ + if ( encname->iso_2022_escape_len ) { + tolen = sizeof(to); fromlen = 0; + iconv(encname->tounicode,NULL,&fromlen,NULL,&tolen); /* Reset state */ + } + fpt = from; tpt = (char *) to; tolen = sizeof(to); + if ( encname->has_1byte && enc<256 ) { + *(char *) fpt = enc; + fromlen = 1; + } else if ( encname->has_2byte ) { + if ( encname->iso_2022_escape_len ) + strncpy(from,encname->iso_2022_escape,encname->iso_2022_escape_len ); + fromlen = encname->iso_2022_escape_len; + from[fromlen++] = enc>>8; + from[fromlen++] = enc&0xff; + } + if ( iconv(encname->tounicode,&fpt,&fromlen,&tpt,&tolen)==(size_t) -1 ) +return( -1 ); + if ( tpt-(char *) to == 0 ) { + /* This strange call appears to be what we need to make CP1258->UCS2 */ + /* work. It's supposed to reset the state and give us the shift */ + /* out. As there is no state, and no shift out I have no idea why*/ + /* this works, but it does. */ + if ( iconv(encname->tounicode,NULL,&fromlen,&tpt,&tolen)==(size_t) -1 ) +return( -1 ); + } + if ( tpt-(char *) to == sizeof(unichar_t) ) +return( to[0] ); +#ifdef UNICHAR_16 + else if ( tpt-(char *) to == 4 && to[0]>=0xd800 && to[0]<0xdc00 && to[1]>=0xdc00 ) +return( ((to[0]-0xd800)<<10) + (to[1]-0xdc00) + 0x10000 ); +#endif + } else if ( encname->tounicode_func!=NULL ) { +return( (encname->tounicode_func)(enc) ); + } +return( -1 ); +} + +int32 EncFromUni(int32 uni, Encoding *enc) { + unichar_t from[20]; + unsigned char to[20]; + ICONV_CONST char *fpt; + char *tpt; + size_t fromlen, tolen; + int i; + + if ( enc->is_custom || enc->is_original || enc->is_compact || uni==-1 ) +return( -1 ); + if ( enc->is_unicodebmp || enc->is_unicodefull ) +return( unichar_cnt ? uni : -1 ); + + if ( enc->unicode!=NULL ) { + for ( i=0; ichar_cnt; ++i ) { + if ( enc->unicode[i]==uni ) +return( i ); + } +return( -1 ); + } else if ( enc->fromunicode!=NULL ) { + /* I don't see how there can be any state to reset in this direction */ + /* So I don't reset it */ +#ifdef UNICHAR_16 + if ( uni<0x10000 ) { + from[0] = uni; + fromlen = sizeof(unichar_t); + } else { + uni -= 0x10000; + from[0] = 0xd800 + (uni>>10); + from[1] = 0xdc00 + (uni&0x3ff); + fromlen = 2*sizeof(unichar_t); + } +#else + from[0] = uni; + fromlen = sizeof(unichar_t); +#endif + fpt = (char *) from; tpt = (char *) to; tolen = sizeof(to); + iconv(enc->fromunicode,NULL,NULL,NULL,NULL); /* reset shift in/out, etc. */ + if ( iconv(enc->fromunicode,&fpt,&fromlen,&tpt,&tolen)==(size_t) -1 ) +return( -1 ); + if ( tpt-(char *) to == 1 ) +return( to[0] ); + if ( enc->iso_2022_escape_len!=0 ) { + if ( tpt-(char *) to == enc->iso_2022_escape_len+2 && + strncmp((char *) to,enc->iso_2022_escape,enc->iso_2022_escape_len)==0 ) +return( (to[enc->iso_2022_escape_len]<<8) | to[enc->iso_2022_escape_len+1] ); + } else { + if ( tpt-(char *) to == sizeof(unichar_t) ) +return( (to[0]<<8) | to[1] ); + } + } else if ( enc->fromunicode_func!=NULL ) { +return( (enc->fromunicode_func)(uni) ); + } +return( -1 ); +} + +int32 EncFromName(const char *name,enum uni_interp interp,Encoding *encname) { + int i; + if ( encname->psnames!=NULL ) { + for ( i=0; ichar_cnt; ++i ) + if ( encname->psnames[i]!=NULL && strcmp(name,encname->psnames[i])==0 ) +return( i ); + } + i = UniFromName(name,interp,encname); + if ( i==-1 && strlen(name)==4 ) { + /* MS says use this kind of name, Adobe says use the one above */ + char *end; + i = strtol(name,&end,16); + if ( i<0 || i>0xffff || *end!='\0' ) +return( -1 ); + } +return( EncFromUni(i,encname)); +} + +void SFExpandGlyphCount(SplineFont *sf, int newcnt) { + int old = sf->glyphcnt; + FontViewBase *fv; + + if ( old>=newcnt ) +return; + if ( sf->glyphmaxglyphs = grealloc(sf->glyphs,newcnt*sizeof(SplineChar *)); + sf->glyphmax = newcnt; + } + memset(sf->glyphs+sf->glyphcnt,0,(newcnt-sf->glyphcnt)*sizeof(SplineChar *)); + sf->glyphcnt = newcnt; + + for ( fv=sf->fv; fv!=NULL; fv=fv->nextsame ) { + if ( fv->sf==sf ) { /* Beware of cid keyed fonts which might look at a different subfont */ + if ( fv->normal!=NULL ) + continue; /* If compacted then we haven't added any glyphs so haven't changed anything */ + /* Don't display any of these guys, so not mapped. */ + /* No change to selection, or to map->map, but change to backmap */ + if ( newcnt>fv->map->backmax ) + fv->map->backmap = grealloc(fv->map->backmap,(fv->map->backmax = newcnt+5)*sizeof(int32)); + memset(fv->map->backmap+old,-1,(newcnt-old)*sizeof(int32)); + } + } +} diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/encoding.h b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/encoding.h new file mode 100644 index 00000000000..c272c6d2ff7 --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/encoding.h @@ -0,0 +1,18 @@ +#ifndef _ENCODING_H +#define _ENCODING_H + +struct cidmap { + char *registry, *ordering; + int supplement, maxsupple; + int cidmax; /* Max cid found in the charset */ + int namemax; /* Max cid with useful info */ + uint32 *unicode; + char **name; + struct cidmap *next; +}; + +extern struct cidmap *cidmaps; + +extern void DeleteEncoding(Encoding *me); +extern void RemoveMultiples(Encoding *item); +#endif diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/featurefile.c b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/featurefile.c new file mode 100644 index 00000000000..bf89c45f6ca --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/featurefile.c @@ -0,0 +1,4208 @@ +/* Copyright (C) 2000-2008 by George Williams */ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "fontforgevw.h" +#include "ttf.h" +#include +#include +#include +#ifdef __need_size_t +/* This is a bug on the mac, someone defines this and leaves it defined */ +/* that means when I load stddef.h it only defines size_t and doesn't */ +/* do offset_of, which is what I need */ +# undef __need_size_t +#endif +#include +#include +#include +#include + + + +/* ************************************************************************** */ +/* ******************************* Parse feat ******************************* */ +/* ************************************************************************** */ + +#include + +struct nameid { + uint16 strid; + uint16 platform, specific, language; + char *utf8_str; + struct nameid *next; +}; + +struct tablekeywords { + char *name; + int size; /* 1=>byte, 2=>short, 4=>int32 */ + int cnt; /* normally 1, but 10 for panose, -1 for infinite */ + int offset; /* -1 => parse but don't store */ +}; + +struct tablevalues { + int index; /* in the table key structure above */ + int value; + uint8 panose_vals[10]; + struct tablevalues *next; +}; + +enum feat_type { ft_lookup_start, ft_lookup_end, ft_feat_start, ft_feat_end, + ft_table, ft_names, ft_gdefclasses, ft_lcaret, ft_tablekeys, + ft_sizeparams, + ft_subtable, ft_script, ft_lang, ft_lookupflags, ft_langsys, + ft_pst, ft_pstclass, ft_fpst, ft_ap, ft_lookup_ref }; +struct feat_item { + uint16 /* enum feat_type */ type; + uint8 ticked; + union { + SplineChar *sc; /* For psts, aps */ + char *class; /* List of glyph names for kerning by class, lcarets */ + char *lookup_name; /* for lookup_start/ lookup_ref */ + uint32 tag; /* for feature/script/lang tag */ + int *params; /* size params */ + struct tablekeywords *offsets; + char **gdef_classes; + } u1; + union { + PST *pst; + /* For kerning by class we'll generate an invalid pst with the class as the "paired" field */ + FPST *fpst; + AnchorPoint *ap; + int lookupflags; + struct scriptlanglist *sl; /* Default langsyses for features/langsys */ + int exclude_dflt; /* for lang tags */ + struct nameid *names; /* size params */ + struct tablevalues *tvals; + int16 *lcaret; + } u2; + char *mark_class; /* For mark to base-ligature-mark, names of all marks which attach to this anchor */ + struct feat_item *next, *lookup_next; +}; + +static int strcmpD(const void *_str1, const void *_str2) { + const char *str1 = *(const char **)_str1, *str2 = *(const char **) _str2; +return( strcmp(str1,str2)); +} + +/* Order glyph classes just so we can do a simple string compare to check for */ +/* class match. So the order doesn't really matter, just so it is consistent */ +static char *fea_canonicalClassOrder(char *class) { + int name_cnt, i; + char *pt, **names, *cpt; + char *temp = copy(class); + + name_cnt = 0; + for ( pt = class; ; ) { + while ( *pt==' ' ) ++pt; + if ( *pt=='\0' ) + break; + for ( ; *pt!=' ' && *pt!='\0'; ++pt ); + ++name_cnt; + } + + names = galloc(name_cnt*sizeof(char *)); + name_cnt = 0; + for ( pt = temp; ; ) { + while ( *pt==' ' ) ++pt; + if ( *pt=='\0' ) + break; + for ( names[name_cnt++]=pt ; *pt!=' ' && *pt!='\0'; ++pt ); + if ( *pt==' ' ) + *pt++ = '\0'; + } + + qsort(names,name_cnt,sizeof(char *),strcmpD); + cpt = class; + for ( i=0; ilen ) len = len2; + intersection = galloc(len+1); + ix = 0; + + i = 0; + SKIP_SPACES(class1, i); + while (class1[i] != '\0') { + i_end = i; + FIND_SPACE(class1, i_end); + + length = i_end - i; + + match_found = 0; + j = 0; + SKIP_SPACES(class2, j); + while (!match_found && class2[j] != '\0') { + j_end = j; + FIND_SPACE(class2, j_end); + + if (length == j_end - j && strncmp(class1 + i, class2 + j, length) == 0) { + match_found = 1; + + if (ix != 0) { + intersection[ix] = ' '; + ix++; + } + memcpy(intersection + ix, class1 + i, length * sizeof (char)); + ix += length; + + SKIP_SPACES(class1, i_end); + memmove(class1 + i, class1 + i_end, (strlen(class1 + i_end) + 1) * sizeof (char)); + SKIP_SPACES(class2, j_end); + memmove(class2 + j, class2 + j_end, (strlen(class2 + j_end) + 1) * sizeof (char)); + } else { + j = j_end; + SKIP_SPACES(class2, j); + } + } + if (!match_found) { + i = i_end; + SKIP_SPACES(class1, i); + } + } + intersection[ix] = '\0'; + return( intersection ); +} + +#define MAXT 40 +#define MAXI 5 +struct parseState { + char tokbuf[MAXT+1]; + long value; + enum toktype { tk_name, tk_class, tk_int, tk_char, tk_cid, tk_eof, +/* keywords */ + tk_firstkey, + tk_anchor=tk_firstkey, tk_anonymous, tk_by, tk_caret, tk_cursive, tk_device, + tk_enumerate, tk_excludeDFLT, tk_exclude_dflt, tk_feature, tk_from, + tk_ignore, tk_ignoreDFLT, tk_ignoredflt, tk_IgnoreBaseGlyphs, + tk_IgnoreLigatures, tk_IgnoreMarks, tk_include, tk_includeDFLT, + tk_include_dflt, tk_language, tk_languagesystem, tk_lookup, + tk_lookupflag, tk_mark, tk_nameid, tk_NULL, tk_parameters, tk_position, + tk_required, tk_RightToLeft, tk_script, tk_substitute, tk_subtable, + tk_table, tk_useExtension + } type; + uint32 tag; + int could_be_tag; + FILE *inlist[MAXI]; + int inc_depth; + int line[MAXI]; + char *filename[MAXI]; + int err_count; + unsigned int warned_about_not_cid: 1; + unsigned int lookup_in_sf_warned: 1; + unsigned int in_vkrn: 1; + unsigned int backedup: 1; + unsigned int skipping: 1; + SplineFont *sf; + struct scriptlanglist *def_langsyses; + struct glyphclasses { char *classname, *glyphs; struct glyphclasses *next; } *classes; + struct feat_item *sofar; + int base; /* normally numbers are base 10, but in the case of languages in stringids, they can be octal or hex */ + OTLookup *created, *last; /* Ordered, but not sorted into GSUB, GPOS yet */ + AnchorClass *accreated; +}; + +static struct keywords { + char *name; + enum toktype tok; +} fea_keywords[] = { +/* list must be in toktype order */ + { "name", tk_name }, { "glyphclass", tk_class }, { "integer", tk_int }, + { "random character", tk_char}, { "cid", tk_cid }, { "EOF", tk_eof }, +/* keywords now */ + { "anchor", tk_anchor }, + { "anonymous", tk_anonymous }, + { "by", tk_by }, + { "caret", tk_caret }, + { "cursive", tk_cursive }, + { "device", tk_device }, + { "enumerate", tk_enumerate }, + { "excludeDFLT", tk_excludeDFLT }, + { "exclude_dflt", tk_exclude_dflt }, + { "feature", tk_feature }, + { "from", tk_from }, + { "ignore", tk_ignore }, + { "IgnoreBaseGlyphs", tk_IgnoreBaseGlyphs }, + { "IgnoreLigatures", tk_IgnoreLigatures }, + { "IgnoreMarks", tk_IgnoreMarks }, + { "include", tk_include }, + { "includeDFLT", tk_includeDFLT }, + { "include_dflt", tk_include_dflt }, + { "language", tk_language }, + { "languagesystem", tk_languagesystem }, + { "lookup", tk_lookup }, + { "lookupflag", tk_lookupflag }, + { "mark", tk_mark }, + { "nameid", tk_nameid }, + { "NULL", tk_NULL }, + { "parameters", tk_parameters }, + { "position", tk_position }, + { "required", tk_required }, + { "RightToLeft", tk_RightToLeft }, + { "script", tk_script }, + { "substitute", tk_substitute }, + { "subtable", tk_subtable }, + { "table", tk_table }, + { "useExtension", tk_useExtension }, +/* synonyms */ + { "sub", tk_substitute }, + { "pos", tk_position }, + { "enum", tk_enumerate }, + { "anon", tk_anonymous }, + { NULL, 0 } +}; + +static struct tablekeywords hhead_keys[] = { + { "CaretOffset", sizeof(short), 1, -1 }, /* Don't even know what this is! */ + { "Ascender", sizeof(short), 1, offsetof(struct pfminfo,hhead_ascent)+offsetof(SplineFont,pfminfo) }, + { "Descender", sizeof(short), 1, offsetof(struct pfminfo,hhead_descent)+offsetof(SplineFont,pfminfo) }, + { "LineGap", sizeof(short), 1, offsetof(struct pfminfo,linegap)+offsetof(SplineFont,pfminfo) }, + { NULL, 0, 0, 0 } +}; + +static struct tablekeywords vhead_keys[] = { + { "VertTypoAscender", sizeof(short), 1, -1 }, + { "VertTypoDescender", sizeof(short), 1, -1 }, + { "VertTypoLineGap", sizeof(short), 1, offsetof(struct pfminfo,vlinegap)+offsetof(SplineFont,pfminfo) }, + { NULL, 0, 0, 0 } +}; + +static struct tablekeywords os2_keys[] = { + { "FSType", sizeof(short), 1, offsetof(struct pfminfo,fstype)+offsetof(SplineFont,pfminfo) }, + { "Panose", sizeof(uint8), 10, offsetof(struct pfminfo,panose)+offsetof(SplineFont,pfminfo) }, + { "UnicodeRange", sizeof(short), -1, -1 }, + { "CodePageRange", sizeof(short), -1, -1 }, + { "TypoAscender", sizeof(short), 1, offsetof(struct pfminfo,os2_typoascent)+offsetof(SplineFont,pfminfo) }, + { "TypoDescender", sizeof(short), 1, offsetof(struct pfminfo,os2_typodescent)+offsetof(SplineFont,pfminfo) }, + { "TypoLineGap", sizeof(short), 1, offsetof(struct pfminfo,os2_typolinegap)+offsetof(SplineFont,pfminfo) }, + { "winAscent", sizeof(short), 1, offsetof(struct pfminfo,os2_winascent)+offsetof(SplineFont,pfminfo) }, + { "winDescent", sizeof(short), 1, offsetof(struct pfminfo,os2_windescent)+offsetof(SplineFont,pfminfo) }, + { "XHeight", sizeof(short), 1, -1 }, + { "CapHeight", sizeof(short), 1, -1 }, + { "WeightClass", sizeof(short), 1, offsetof(struct pfminfo,weight)+offsetof(SplineFont,pfminfo) }, + { "WidthClass", sizeof(short), 1, offsetof(struct pfminfo,width)+offsetof(SplineFont,pfminfo) }, + { "Vendor", sizeof(short), 1, offsetof(struct pfminfo,os2_vendor)+offsetof(SplineFont,pfminfo) }, + { NULL, 0, 0, 0 } +}; + + +static void fea_ParseTok(struct parseState *tok); + +static void fea_handle_include(struct parseState *tok) { + FILE *in; + char namebuf[1025], *pt, *filename; + int ch; + + fea_ParseTok(tok); + if ( tok->type!=tk_char || tok->tokbuf[0]!='(' ) { + LogError(_("Unparseable include on line %d of %s"), tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; +return; + } + + in = tok->inlist[tok->inc_depth]; + ch = getc(in); + while ( isspace(ch)) + ch = getc(in); + pt = namebuf; + while ( ch!=EOF && ch!=')' && ptline[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + } + while ( pt>=namebuf+1 && isspace(pt[-1]) ) + --pt; + *pt = '\0'; + if ( ch!=')' ) { + if ( ch==EOF ) + LogError(_("End of file in include on line %d of %s"), tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + else + LogError(_("Missing close parenthesis in include on line %d of %s"), tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; +return; + } + + if ( pt==namebuf ) { + LogError(_("No filename specified in include on line %d of %s"), tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; +return; + } + + if ( tok->inc_depth>=MAXI-1 ) { + LogError(_("Includes nested too deeply on line %d of %s"), tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; +return; + } + + if ( *namebuf=='/' || + ( pt = strrchr(tok->filename[tok->inc_depth],'/') )==NULL ) + filename=copy(namebuf); + else { + *pt = '\0'; + filename = GFileAppendFile(tok->filename[tok->inc_depth],namebuf,false); + *pt = '/'; + } + in = fopen(filename,"r"); + if ( in==NULL ) { + LogError(_("Could not open include file (%s) on line %d of %s"), + filename, tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + free(filename); +return; + } + + ++tok->inc_depth; + tok->filename[tok->inc_depth] = filename; + tok->inlist[tok->inc_depth] = in; + tok->line[tok->inc_depth] = 1; + fea_ParseTok(tok); +} + +static void fea_ParseTok(struct parseState *tok) { + FILE *in = tok->inlist[tok->inc_depth]; + int ch, peekch = 0; + char *pt, *start; + + if ( tok->backedup ) { + tok->backedup = false; +return; + } + + skip_whitespace: + ch = getc(in); + while ( isspace(ch) || ch=='#' ) { + if ( ch=='#' ) + while ( (ch=getc(in))!=EOF && ch!='\n' && ch!='\r' ); + if ( ch=='\n' || ch=='\r' ) { + if ( ch=='\r' ) { + ch = getc(in); + if ( ch!='\n' ) + ungetc(ch,in); + } + ++tok->line[tok->inc_depth]; + } + ch = getc(in); + } + + tok->could_be_tag = 0; + if ( ch==EOF ) { + if ( tok->inc_depth>0 ) { + fclose(tok->inlist[tok->inc_depth]); + free(tok->filename[tok->inc_depth]); + in = tok->inlist[--tok->inc_depth]; + goto skip_whitespace; + } + tok->type = tk_eof; + strcpy(tok->tokbuf,"EOF"); +return; + } + + start = pt = tok->tokbuf; + if ( ch=='\\' || ch=='-' ) { + peekch=getc(in); + ungetc(peekch,in); + } + + if ( isdigit(ch) || ch=='+' || ((ch=='-' || ch=='\\') && isdigit(peekch)) ) { + tok->type = tk_int; + if ( ch=='-' || ch=='+' ) { + if ( ch=='-' ) { + *pt++ = ch; + start = pt; + } + ch = getc(in); + } else if ( ch=='\\' ) { + ch = getc(in); + tok->type = tk_cid; + } + while ( (isdigit( ch ) || + (tok->base==0 && (ch=='x' || ch=='X' || (ch>='a' && ch<='f') || (ch>='A' && ch<='F')))) + && pttokbuf+15 ) { + *pt++ = ch; + ch = getc(in); + } + if ( isdigit(ch)) { + LogError(_("Number too long on line %d of %s"), tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + } else if ( pt==start ) { + LogError(_("Missing number on line %d of %s"), tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + } + ungetc(ch,in); + *pt = '\0'; + tok->value = strtol(tok->tokbuf,NULL,tok->base); +return; + } else if ( ch=='@' || ch=='_' || ch=='\\' || isalnum(ch)) { /* Names can't start with dot */ + int check_keywords = true; + tok->type = tk_name; + if ( ch=='@' ) { + tok->type = tk_class; + *pt++ = ch; + start = pt; + ch = getc(in); + check_keywords = false; + } else if ( ch=='\\' ) { + ch = getc(in); + check_keywords = false; + } + while (( isalnum(ch) || ch=='_' || ch=='.' ) && ptline[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + } else if ( pt==start ) { + LogError(_("Missing name on line %d of %s"), tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + } + + if ( check_keywords ) { + int i; + for ( i=tk_firstkey; fea_keywords[i].name!=NULL; ++i ) { + if ( strcmp(fea_keywords[i].name,tok->tokbuf)==0 ) { + tok->type = fea_keywords[i].tok; + break; + } + } + if ( tok->type==tk_include ) + fea_handle_include(tok); + } + if ( tok->type==tk_name && pt-tok->tokbuf<=4 && pt!=tok->tokbuf ) { + unsigned char tag[4]; + tok->could_be_tag = true; + memset(tag,' ',4); + tag[0] = tok->tokbuf[0]; + if ( tok->tokbuf[1]!='\0' ) { + tag[1] = tok->tokbuf[1]; + if ( tok->tokbuf[2]!='\0' ) { + tag[2] = tok->tokbuf[2]; + if ( tok->tokbuf[3]!='\0' ) + tag[3] = tok->tokbuf[3]; + } + } + tok->tag = (tag[0]<<24) | (tag[1]<<16) | (tag[2]<<8) | tag[3]; + } + } else { + /* I've already handled the special characters # @ and \ */ + /* so don't treat them as errors here, if they occur they will be out of context */ + if ( ch==';' || ch==',' || ch=='-' || ch=='=' || ch=='\'' || ch=='"' || + ch=='{' || ch=='}' || + ch=='[' || ch==']' || + ch=='<' || ch=='>' || + ch=='(' || ch==')' ) { + tok->type = tk_char; + tok->tokbuf[0] = ch; + tok->tokbuf[1] = '\0'; + } else { + if ( !tok->skipping ) { + LogError(_("Unexpected character (0x%02X) on line %d of %s"), ch, tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + } + goto skip_whitespace; + } + } +} + +static void fea_ParseTag(struct parseState *tok) { + /* The tag used for OS/2 doesn't get parsed properly */ + /* So if we know we are looking for a tag do some fixups */ + + fea_ParseTok(tok); + if ( tok->type==tk_name && tok->could_be_tag && + tok->tag==CHR('O','S',' ',' ') ) { + FILE *in = tok->inlist[tok->inc_depth]; + int ch; + ch = getc(in); + if ( ch=='/' ) { + ch = getc(in); + if ( ch=='2' ) { + tok->tag = CHR('O','S','/','2'); + } else { + tok->tag = CHR('O','S','/',' '); + ungetc(ch,in); + } + } else + ungetc(ch,in); + } +} + +static void fea_UnParseTok(struct parseState *tok) { + tok->backedup = true; +} + +static int fea_ParseDeciPoints(struct parseState *tok) { + /* When parsing size features floating point numbers are allowed */ + /* but they should be converted to ints by multiplying by 10 */ + /* (not my convention) */ + + fea_ParseTok(tok); + if ( tok->type==tk_int ) { + FILE *in = tok->inlist[tok->inc_depth]; + char *pt = tok->tokbuf + strlen(tok->tokbuf); + int ch; + ch = getc(in); + if ( ch=='.' ) { + *pt++ = ch; + while ( (ch = getc(in))!=EOF && isdigit(ch)) { + if ( pttokbuf+sizeof(tok->tokbuf)-1 ) + *pt++ = ch; + } + *pt = '\0'; + tok->value = rint(strtod(tok->tokbuf,NULL)*10.0); + } + if ( ch!=EOF ) + ungetc(ch,in); + } else { + LogError(_("Expected '%s' on line %d of %s"), fea_keywords[tk_int], + tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + tok->value = -1; + } +return( tok->value ); +} + +static void fea_TokenMustBe(struct parseState *tok, enum toktype type, int ch) { + fea_ParseTok(tok); + if ( type==tk_char && (tok->type!=type || tok->tokbuf[0]!=ch) ) { + LogError(_("Expected '%c' on line %d of %s"), ch, tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + } else if ( type!=tk_char && tok->type!=type ) { + LogError(_("Expected '%s' on line %d of %s"), fea_keywords[type], + tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + } +} + +static void fea_skip_to_semi(struct parseState *tok) { + int nest=0; + + while ( tok->type!=tk_char || tok->tokbuf[0]!=';' || nest>0 ) { + fea_ParseTok(tok); + if ( tok->type==tk_char ) { + if ( tok->tokbuf[0]=='{' ) ++nest; + else if ( tok->tokbuf[0]=='}' ) --nest; + if ( nest<0 ) + break; + } + if ( tok->type==tk_eof ) + break; + } +} + +static void fea_skip_to_close_curly(struct parseState *tok) { + int nest=0; + + tok->skipping = true; + /* The table blocks have slightly different syntaxes and can take strings */ + /* and floating point numbers. So don't complain about unknown chars when */ + /* in a table (that's skipping) */ + while ( tok->type!=tk_char || tok->tokbuf[0]!='}' || nest>0 ) { + fea_ParseTok(tok); + if ( tok->type==tk_char ) { + if ( tok->tokbuf[0]=='{' ) ++nest; + else if ( tok->tokbuf[0]=='}' ) --nest; + } + if ( tok->type==tk_eof ) + break; + } + tok->skipping = false; +} + +static void fea_now_semi(struct parseState *tok) { + if ( tok->type!=tk_char || tok->tokbuf[0]!=';' ) { + LogError(_("Expected ';' at statement end on line %d of %s"), tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + fea_skip_to_semi(tok); + ++tok->err_count; +return; + } +} + +static void fea_end_statement(struct parseState *tok) { + fea_ParseTok(tok); + fea_now_semi(tok); +} + +static struct glyphclasses *fea_lookup_class(struct parseState *tok,char *classname) { + struct glyphclasses *test; + + for ( test=tok->classes; test!=NULL; test=test->next ) { + if ( strcmp(classname,test->classname)==0 ) +return( test ); + } +return( NULL ); +} + +static char *fea_lookup_class_complain(struct parseState *tok,char *classname) { + struct glyphclasses *test; + + for ( test=tok->classes; test!=NULL; test=test->next ) { + if ( strcmp(classname,test->classname)==0 ) +return( copy( test->glyphs) ); + } + LogError(_("Use of undefined glyph class, %s, on line %d of %s"), classname, tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; +return( NULL ); +} + +static void fea_AddClassDef(struct parseState *tok,char *classname,char *contents) { + struct glyphclasses *test; + + test = fea_lookup_class(tok,classname); + if ( test==NULL ) { + test=chunkalloc(sizeof(struct glyphclasses)); + test->classname = classname; + test->next = tok->classes; + tok->classes = test; + } else { + free(classname); + free(test->glyphs); + } + test->glyphs = contents; +} + +static int fea_AddGlyphs(char **_glyphs, int *_max, int cnt, char *contents ) { + int len = strlen(contents); + char *glyphs = *_glyphs; + /* Append a glyph name, etc. to a glyph class */ + + if ( glyphs==NULL ) { + glyphs = copy(contents); + cnt = *_max = len; + } else { + if ( *_max-cnt <= len+1 ) + glyphs = grealloc(glyphs,(*_max+=200+len+1)+1); + glyphs[cnt++] = ' '; + strcpy(glyphs+cnt,contents); + cnt += strlen(contents); + } + free(contents); + *_glyphs = glyphs; +return( cnt ); +} + +static char *fea_cid_validate(struct parseState *tok,int cid) { + int i, max; + SplineFont *maxsf; + SplineChar *sc; + EncMap *map; + + if ( tok->sf->subfontcnt==0 ) { + if ( !tok->warned_about_not_cid ) { + LogError(_("Reference to a CID in a non-CID-keyed font on line %d of %s"), tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + tok->warned_about_not_cid = true; + } + ++tok->err_count; +return(NULL); + } + max = 0; maxsf = NULL; + for ( i=0; isf->subfontcnt; ++i ) { + SplineFont *sub = tok->sf->subfonts[i]; + if ( cidglyphcnt && sub->glyphs[cid]!=NULL ) +return( sub->glyphs[cid]->name ); + if ( sub->glyphcnt>max ) { + max = sub->glyphcnt; + maxsf = sub; + } + } + /* Not defined, try to create it */ + if ( maxsf==NULL ) /* No subfonts */ +return( NULL ); + if ( cid>=maxsf->glyphcnt ) { + struct cidmap *cidmap = FindCidMap(tok->sf->cidregistry,tok->sf->ordering,tok->sf->supplement,tok->sf); + if ( cidmap==NULL || cid>=MaxCID(cidmap) ) +return( NULL ); + SFExpandGlyphCount(maxsf,MaxCID(cidmap)); + } + if ( cid>=maxsf->glyphcnt ) +return( NULL ); + map = EncMap1to1(maxsf->glyphcnt); + sc = SFMakeChar(maxsf,map,cid); + EncMapFree(map); + if ( sc==NULL ) +return( NULL ); +return( copy( sc->name )); +} + +static SplineChar *fea_glyphname_get(struct parseState *tok,char *name) { + SplineFont *sf = tok->sf; + SplineChar *sc = SFGetChar(sf,-1,name); + int enc, gid; + + if ( sf->subfontcnt!=0 ) { + LogError(_("Reference to a glyph name in a CID-keyed font on line %d of %s"), tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; +return(sc); + } + + if ( sc!=NULL || strcmp(name,"NULL")==0 ) +return( sc ); + enc = SFFindSlot(sf,sf->fv->map,-1,name); + if ( enc!=-1 ) { + sc = SFMakeChar(sf,sf->fv->map,enc); + if ( sc!=NULL ) { + sc->widthset = true; + free(sc->name); + sc->name = copy(name); + } +return( sc ); + } + + for ( gid=sf->glyphcnt-1; gid>=0; --gid ) if ( (sc=sf->glyphs[gid])!=NULL ) { + if ( strcmp(sc->name,name)==0 ) +return( sc ); + } + +/* Don't encode it (not in current encoding), just add it, so we needn't */ +/* mess with maps or selections */ + SFExpandGlyphCount(sf,sf->glyphcnt+1); + sc = SFSplineCharCreate(sf); + sc->name = copy(name); + sc->unicodeenc = UniFromName(name,ui_none,&custom); + sc->parent = sf; + sc->vwidth = (sf->ascent+sf->descent); + sc->width = 6*sc->vwidth/10; + sc->widthset = true; /* So we don't lose the glyph */ + sc->orig_pos = sf->glyphcnt-1; + sf->glyphs[sc->orig_pos] = sc; +return( sc ); +} + +static char *fea_glyphname_validate(struct parseState *tok,char *name) { + SplineChar *sc = fea_glyphname_get(tok,name); + + if ( sc==NULL ) +return( NULL ); + +return( copy( sc->name )); +} + +static char *fea_ParseGlyphClass(struct parseState *tok) { + char *glyphs = NULL; + + if ( tok->type==tk_class ) { + glyphs = fea_lookup_class_complain(tok,tok->tokbuf); + } else if ( tok->type!=tk_char || tok->tokbuf[0]!='[' ) { + LogError(_("Expected '[' in glyph class definition on line %d of %s"), tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; +return( NULL ); + } else { + char *contents = NULL; + int cnt=0, max=0; + int last_val = 0, range_type, range_len = 0; + char last_glyph[MAXT+1]; + char *pt1, *start1, *pt2, *start2 = NULL; + int v1, v2; + + forever { + fea_ParseTok(tok); + if ( tok->type==tk_char && tok->tokbuf[0]==']' ) + break; + if ( tok->type==tk_class ) { + contents = fea_lookup_class_complain(tok,tok->tokbuf); + last_val=-1; last_glyph[0] = '\0'; + } else if ( tok->type==tk_cid ) { + last_val = tok->value; last_glyph[0] = '\0'; + contents = fea_cid_validate(tok,tok->value); + } else if ( tok->type==tk_name ) { + strcpy(last_glyph,tok->tokbuf); last_val = -1; + contents = fea_glyphname_validate(tok,tok->tokbuf); + } else if ( tok->type==tk_char && tok->tokbuf[0]=='-' ) { + fea_ParseTok(tok); + if ( last_val!=-1 && tok->type==tk_cid ) { + if ( last_val>=tok->value ) { + LogError(_("Invalid CID range in glyph class on line %d of %s"), tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + } + /* Last val has already been added to the class */ + /* and we'll add the current value later */ + for ( ++last_val; last_valvalue; ++last_val ) { + contents = fea_cid_validate(tok,last_val); + if ( contents!=NULL ) + cnt = fea_AddGlyphs(&glyphs,&max,cnt,contents); + } + contents = fea_cid_validate(tok,tok->value); + } else if ( last_glyph[0]!='\0' && tok->type==tk_name ) { + range_type=0; + if ( strlen(last_glyph)==strlen(tok->tokbuf) && + strcmp(last_glyph,tok->tokbuf)<0 ) { + start1=NULL; + for ( pt1=last_glyph, pt2=tok->tokbuf; + *pt1!='\0'; ++pt1, ++pt2 ) { + if ( *pt1!=*pt2 ) { + if ( start1!=NULL ) { + range_type=0; + break; + } + start1 = pt1; start2 = pt2; + if ( !isdigit(*pt1) || !isdigit(*pt2)) + range_type = 1; + else { + for ( range_len=0; range_len<3 && isdigit(*pt1) && isdigit(*pt2); + ++range_len, ++pt1, ++pt2 ); + range_type = 2; + --pt1; --pt2; + } + } + } + } + if ( range_type==0 ) { + LogError(_("Invalid glyph name range in glyph class on line %d of %s"), tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + } else if ( range_type==1 || range_len==1 ) { + /* Single letter changes */ + v1 = *start1; v2 = *start2; + for ( ++v1; v1<=v2; ++v1 ) { + *start1 = v1; + contents = fea_glyphname_validate(tok,start1); + if ( v1==v2 ) + break; + if ( contents!=NULL ) + cnt = fea_AddGlyphs(&glyphs,&max,cnt,contents); + } + } else { + v1 = strtol(start1,NULL,10); + v2 = strtol(start2,NULL,10); + for ( ++v1; v1<=v2; ++v1 ) { + if ( range_len==2 ) + sprintf( last_glyph, "%.*s%02d%s", (int) (start2-tok->tokbuf), + tok->tokbuf, v1, start2+2 ); + else + sprintf( last_glyph, "%.*s%03d%s", (int) (start2-tok->tokbuf), + tok->tokbuf, v1, start2+3 ); + contents = fea_glyphname_validate(tok,last_glyph); + if ( v1==v2 ) + break; + if ( contents!=NULL ) + cnt = fea_AddGlyphs(&glyphs,&max,cnt,contents); + } + } + } else { + LogError(_("Unexpected token in glyph class range on line %d of %s"), tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + if ( tok->type==tk_char && tok->tokbuf[0]==']' ) + break; + } + last_val=-1; last_glyph[0] = '\0'; + } else if ( tok->type == tk_NULL ) { + contents = copy("NULL"); + } else { + LogError(_("Expected glyph name, cid, or class in glyph class definition on line %d of %s"), tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + break; + } + if ( contents!=NULL ) + cnt = fea_AddGlyphs(&glyphs,&max,cnt,contents); + } + if ( glyphs==NULL ) + glyphs = copy(""); /* Is it legal to have an empty class? I can't think of any use for one */ + } +return( glyphs ); +} + +static char *fea_ParseGlyphClassGuarded(struct parseState *tok) { + char *ret = fea_ParseGlyphClass(tok); + if ( ret==NULL ) + ret = copy(""); +return( ret ); +} + +static void fea_ParseLookupFlags(struct parseState *tok) { + int val = 0; + struct feat_item *item; + + fea_ParseTok(tok); + if ( tok->type==tk_int ) { + val = tok->value; + fea_end_statement(tok); + } else { + while ( tok->type==tk_RightToLeft || tok->type==tk_IgnoreBaseGlyphs || + tok->type==tk_IgnoreMarks || tok->type==tk_IgnoreLigatures ) { + if ( tok->type == tk_RightToLeft ) + val |= pst_r2l; + else if ( tok->type == tk_IgnoreBaseGlyphs ) + val |= pst_ignorebaseglyphs; + else if ( tok->type == tk_IgnoreMarks ) + val |= pst_ignorecombiningmarks; + else if ( tok->type == tk_IgnoreLigatures ) + val |= pst_ignoreligatures; + fea_ParseTok(tok); + if ( tok->type == tk_char && tok->tokbuf[0]==';' ) + break; + else if ( tok->type==tk_char && tok->tokbuf[0]!=',' ) { + LogError(_("Expected ';' in lookupflags on line %d of %s"), tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + fea_skip_to_semi(tok); + break; + } + fea_ParseTok(tok); + } + if ( tok->type != tk_char || tok->tokbuf[0]!=';' ) { + LogError(_("Unexpected token in lookupflags on line %d of %s"), tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + fea_skip_to_semi(tok); + } else if ( val==0 ) { + LogError(_("No flags specified in lookupflags on line %d of %s"), tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + } + } + + item = chunkalloc(sizeof(struct feat_item)); + item->type = ft_lookupflags; + item->u2.lookupflags = val; + item->next = tok->sofar; + tok->sofar = item; +} + +static void fea_ParseGlyphClassDef(struct parseState *tok) { + char *classname = copy(tok->tokbuf ); + char *contents; + + fea_ParseTok(tok); + if ( tok->type!=tk_char || tok->tokbuf[0]!='=' ) { + LogError(_("Expected '=' in glyph class definition on line %d of %s"), tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + fea_skip_to_semi(tok); +return; + } + fea_ParseTok(tok); + contents = fea_ParseGlyphClass(tok); + if ( contents==NULL ) { + fea_skip_to_semi(tok); +return; + } + fea_AddClassDef(tok,classname,copy(contents)); + fea_end_statement(tok); +} + +static void fea_ParseLangSys(struct parseState *tok, int inside_feat) { + uint32 script, lang; + struct scriptlanglist *sl; + int l; + + fea_ParseTok(tok); + if ( tok->type!=tk_name || !tok->could_be_tag ) { + LogError(_("Expected tag in languagesystem on line %d of %s"), tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + fea_skip_to_semi(tok); +return; + } + script = tok->tag; + + fea_ParseTok(tok); + if ( tok->type!=tk_name || !tok->could_be_tag ) { + LogError(_("Expected tag in languagesystem on line %d of %s"), tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + fea_skip_to_semi(tok); +return; + } + lang = tok->tag; + + for ( sl=tok->def_langsyses; sl!=NULL && sl->script!=script; sl=sl->next ); + if ( sl==NULL ) { + sl = chunkalloc(sizeof(struct scriptlanglist)); + sl->script = script; + sl->next = tok->def_langsyses; + tok->def_langsyses = sl; + } + for ( l=0; llang_cnt; ++l ) { + uint32 language = llangs[l] : sl->morelangs[l-MAX_LANG]; + if ( language==lang ) + break; + } + if ( llang_cnt ) + /* Er... this combination is already in the list. I guess that's ok */; + else if ( sl->lang_cntlangs[sl->lang_cnt++] = lang; + else { + sl->morelangs = grealloc(sl->morelangs,(sl->lang_cnt+1)*sizeof(uint32)); + sl->morelangs[sl->lang_cnt++ - MAX_LANG] = lang; + } + fea_end_statement(tok); + + if ( inside_feat ) { + struct feat_item *item = chunkalloc(sizeof(struct feat_item)); + item->type = ft_langsys; + item->u2.sl = SListCopy(tok->def_langsyses); + item->next = tok->sofar; + tok->sofar = item; + } +} + +struct markedglyphs { + unsigned int has_marks: 1; /* Are there any marked glyphs in the entire sequence? */ + unsigned int is_cursive: 1; /* Only in a position sequence */ + unsigned int is_mark: 1; /* Only in a position sequence/mark keyword=>mark2mark */ + unsigned int is_name: 1; /* Otherwise a class */ + unsigned int is_lookup: 1; /* Or a lookup when parsing a subs replacement list */ + uint16 mark_count; /* 0=>unmarked, 1=>first mark, etc. */ + char *name_or_class; /* Glyph name / class contents */ + struct vr *vr; /* A value record. Only in position sequences */ + int ap_cnt; /* Number of anchor points */ + AnchorPoint **anchors; + char *lookupname; + struct markedglyphs *next; +}; + +#ifdef FONTFORGE_CONFIG_DEVICETABLES +static void fea_ParseDeviceTable(struct parseState *tok,DeviceTable *adjust) +#else +static void fea_ParseDeviceTable(struct parseState *tok) +#endif + { + int first = true; +#ifdef FONTFORGE_CONFIG_DEVICETABLES + int min=0, max= -1; + int8 values[512]; + + memset(values,0,sizeof(values)); +#endif + + fea_TokenMustBe(tok,tk_device,'\0'); + if ( tok->type!=tk_device ) +return; + + forever { + fea_ParseTok(tok); + if ( first && tok->type==tk_NULL ) { + fea_TokenMustBe(tok,tk_char,'>'); + break; + } else if ( tok->type==tk_char && tok->tokbuf[0]=='>' ) { + break; + } else if ( tok->type!=tk_int ) { + LogError(_("Expected integer in device table on line %d of %s"), tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + } else { +#ifdef FONTFORGE_CONFIG_DEVICETABLES + int pixel = tok->value; +#endif + fea_TokenMustBe(tok,tk_int,'\0'); +#ifdef FONTFORGE_CONFIG_DEVICETABLES + if ( pixel>=sizeof(values) || pixel<0 ) + LogError(_("Pixel size too big in device table on line %d of %s"), tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + else { + values[pixel] = tok->value; + if ( max==-1 ) + min=max=pixel; + else if ( pixelmax ) max = pixel; + } +#endif + } + first = false; + } +#ifdef FONTFORGE_CONFIG_DEVICETABLES + if ( max!=-1 ) { + int i; + adjust->first_pixel_size = min; + adjust->last_pixel_size = max; + adjust->corrections = galloc(max-min+1); + for ( i=min; i<=max; ++i ) + adjust->corrections[i-min] = values[i]; + } +#endif +} + +static void fea_ParseCaret(struct parseState *tok) { + int val=0; + + fea_TokenMustBe(tok,tk_caret,'\0'); + if ( tok->type!=tk_caret ) +return; + fea_ParseTok(tok); + if ( tok->type!=tk_int ) { + LogError(_("Expected integer in caret on line %d of %s"), tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + } else + val = tok->value; + fea_ParseTok(tok); + if ( tok->type!=tk_char || tok->tokbuf[0]!='>' ) { + LogError(_("Expected '>' in caret on line %d of %s"), tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + } + tok->value = val; +} + +static AnchorPoint *fea_ParseAnchor(struct parseState *tok) { + AnchorPoint *ap = NULL; + + if ( tok->type==tk_anchor ) { + fea_ParseTok(tok); + if ( tok->type==tk_NULL ) + ap = NULL; + else if ( tok->type==tk_int ) { + ap = chunkalloc(sizeof(AnchorPoint)); + ap->me.x = tok->value; + fea_TokenMustBe(tok,tk_int,'\0'); + ap->me.y = tok->value; + fea_ParseTok(tok); + if ( tok->type==tk_int ) { + ap->ttf_pt_index = tok->value; + ap->has_ttf_pt = true; + fea_TokenMustBe(tok,tk_char,'>'); + } else if ( tok->type==tk_char && tok->tokbuf[0]=='<' ) { +#ifdef FONTFORGE_CONFIG_DEVICETABLES + fea_ParseDeviceTable(tok,&ap->xadjust); + fea_TokenMustBe(tok,tk_char,'<'); + fea_ParseDeviceTable(tok,&ap->yadjust); +#else + fea_ParseDeviceTable(tok); + fea_TokenMustBe(tok,tk_char,'<'); + fea_ParseDeviceTable(tok); +#endif + fea_TokenMustBe(tok,tk_char,'>'); + } else if ( tok->type!=tk_char || tok->tokbuf[0]!='>' ) { + LogError(_("Expected '>' in anchor on line %d of %s"), tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + } + } else { + LogError(_("Expected integer in anchor on line %d of %s"), tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + } + } else { + LogError(_("Expected 'anchor' keyword in anchor on line %d of %s"), tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + } +return( ap ); +} + +static int fea_findLookup(struct parseState *tok,char *name ) { + struct feat_item *feat; + + for ( feat=tok->sofar; feat!=NULL; feat=feat->next ) { + if ( feat->type==ft_lookup_start && strcmp(name,feat->u1.lookup_name)==0 ) +return( true ); + } + + if ( SFFindLookup(tok->sf,name)!=NULL ) { + if ( !tok->lookup_in_sf_warned ) { + ff_post_notice(_("Refers to Font"),_("Reference to a lookup which is not in the feature file but which is in the font, %.50s"), name ); + tok->lookup_in_sf_warned = true; + } +return( true ); + } + +return( false ); +} + +static void fea_ParseBroket(struct parseState *tok,struct markedglyphs *last) { + /* We've read the open broket. Might find: value record, anchor, lookup */ + /* (lookups are my extension) */ + struct vr *vr; + + fea_ParseTok(tok); + if ( tok->type==tk_lookup ) { + fea_TokenMustBe(tok,tk_name,'\0'); + if ( last->mark_count==0 ) { + LogError(_("Lookups may only be specified after marked glyphs on line %d of %s"), tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + } + if ( !fea_findLookup(tok,tok->tokbuf) ) { + LogError(_("Lookups must be defined before being used on line %d of %s"), tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + } else + last->lookupname = copy(tok->tokbuf); + fea_TokenMustBe(tok,tk_char,'>'); + } else if ( tok->type==tk_anchor ) { + last->anchors = grealloc(last->anchors,(++last->ap_cnt)*sizeof(AnchorPoint *)); + last->anchors[last->ap_cnt-1] = fea_ParseAnchor(tok); + } else if ( tok->type==tk_NULL ) { + /* NULL value record. Adobe documents it and doesn't implement it */ + /* Not sure what it's good for */ + fea_TokenMustBe(tok,tk_char,'>'); + } else if ( tok->type==tk_int ) { + last->vr = vr = chunkalloc(sizeof( struct vr )); + vr->xoff = tok->value; + fea_ParseTok(tok); + if ( tok->type==tk_char && tok->tokbuf[0]=='>' ) { + if ( tok->in_vkrn ) + vr->v_adv_off = vr->xoff; + else + vr->h_adv_off = vr->xoff; + vr->xoff = 0; + } else if ( tok->type!=tk_int ) { + LogError(_("Expected integer in value record on line %d of %s"), tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + } else { + vr->yoff = tok->value; + fea_TokenMustBe(tok,tk_int,'\0'); + vr->h_adv_off = tok->value; + fea_TokenMustBe(tok,tk_int,'\0'); + vr->v_adv_off = tok->value; + fea_ParseTok(tok); + if ( tok->type==tk_char && tok->tokbuf[0]=='<' ) { +#ifdef FONTFORGE_CONFIG_DEVICETABLES + vr->adjust = chunkalloc(sizeof(struct valdev)); + fea_ParseDeviceTable(tok,&vr->adjust->xadjust); + fea_TokenMustBe(tok,tk_char,'<'); + fea_ParseDeviceTable(tok,&vr->adjust->yadjust); + fea_TokenMustBe(tok,tk_char,'<'); + fea_ParseDeviceTable(tok,&vr->adjust->xadv); + fea_TokenMustBe(tok,tk_char,'<'); + fea_ParseDeviceTable(tok,&vr->adjust->yadv); +#else + fea_ParseDeviceTable(tok); + fea_TokenMustBe(tok,tk_char,'<'); + fea_ParseDeviceTable(tok); + fea_TokenMustBe(tok,tk_char,'<'); + fea_ParseDeviceTable(tok); + fea_TokenMustBe(tok,tk_char,'<'); + fea_ParseDeviceTable(tok); +#endif + fea_TokenMustBe(tok,tk_char,'>'); + } else if ( tok->type!=tk_char || tok->tokbuf[0]!='>' ) { + LogError(_("Expected '>' in value record on line %d of %s"), tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + } + } + } +} + +static struct markedglyphs *fea_ParseMarkedGlyphs(struct parseState *tok, + int is_pos, int allow_marks, int allow_lookups) { + int mark_cnt = 0, last_mark=0, is_cursive = false, is_mark=false; + struct markedglyphs *head=NULL, *last=NULL, *prev=NULL, *cur; + int first = true; + char *contents; + + forever { + fea_ParseTok(tok); + cur = NULL; + if ( first && is_pos && tok->type == tk_cursive ) + is_cursive = true; + else if ( first && is_pos && tok->type == tk_mark ) + is_mark = true; + else if ( tok->type==tk_name || tok->type == tk_cid ) { + if ( tok->type == tk_name ) + contents = fea_glyphname_validate(tok,tok->tokbuf); + else + contents = fea_cid_validate(tok,tok->value); + if ( contents!=NULL ) { + cur = chunkalloc(sizeof(struct markedglyphs)); + cur->is_cursive = is_cursive; + cur->is_mark = is_mark; + cur->is_name = true; + cur->name_or_class = contents; + } + } else if ( tok->type == tk_class || (tok->type==tk_char && tok->tokbuf[0]=='[')) { + cur = chunkalloc(sizeof(struct markedglyphs)); + cur->is_cursive = is_cursive; + cur->is_mark = is_mark; + cur->is_name = false; + cur->name_or_class = fea_ParseGlyphClassGuarded(tok); + } else if ( allow_marks && tok->type==tk_char && + (tok->tokbuf[0]=='\'' || tok->tokbuf[0]=='"') && last!=NULL ) { + if ( last_mark!=tok->tokbuf[0] || (prev!=NULL && prev->mark_count==0)) { + ++mark_cnt; + last_mark = tok->tokbuf[0]; + } + last->mark_count = mark_cnt; + } else if ( is_pos && last!=NULL && last->vr==NULL && tok->type == tk_int ) { + last->vr = chunkalloc(sizeof(struct vr)); + if ( tok->in_vkrn ) + last->vr->v_adv_off = tok->value; + else + last->vr->h_adv_off = tok->value; + } else if ( is_pos && last!=NULL && tok->type == tk_char && tok->tokbuf[0]=='<' ) { + fea_ParseBroket(tok,last); + } else if ( !is_pos && allow_lookups && tok->type == tk_char && tok->tokbuf[0]=='<' ) { + fea_TokenMustBe(tok,tk_lookup,'\0'); + fea_TokenMustBe(tok,tk_name,'\0'); + cur = chunkalloc(sizeof(struct markedglyphs)); + cur->is_name = false; + cur->is_lookup = true; + cur->lookupname = copy(tok->tokbuf); + fea_TokenMustBe(tok,tk_char,'>'); + } else + break; + if ( cur!=NULL ) { + prev = last; + if ( last==NULL ) + head = cur; + else + last->next = cur; + last = cur; + } + first = false; + } + if ( head!=NULL && mark_cnt!=0 ) + head->has_marks = true; + fea_UnParseTok(tok); +return( head ); +} + +static void fea_markedglyphsFree(struct markedglyphs *gl) { + struct markedglyphs *next; + int i; + + while ( gl!=NULL ) { + next = gl->next; + free(gl->name_or_class); + free(gl->lookupname); + for ( i=0; iap_cnt; ++i ) + AnchorPointsFree(gl->anchors[i]); + free(gl->anchors); + if ( gl->vr!=NULL ) { +#ifdef FONTFORGE_CONFIG_DEVICETABLES + ValDevFree(gl->vr->adjust); +#endif + chunkfree(gl->vr,sizeof(struct vr)); + } + gl = next; + } +} + +static struct feat_item *fea_AddAllLigPosibilities(struct parseState *tok,struct markedglyphs *glyphs, + SplineChar *sc,char *sequence_start,char *next, struct feat_item *sofar) { + char *start, *pt, ch; + SplineChar *temp; + char *after; + struct feat_item *item; + + start = glyphs->name_or_class; + forever { + while ( *start==' ' ) ++start; + if ( *start=='\0' ) + break; + for ( pt=start; *pt!='\0' && *pt!=' '; ++pt ); + ch = *pt; *pt = '\0'; + temp = fea_glyphname_get(tok,start); + *pt = ch; start = pt; + if ( temp==NULL ) + continue; + strcpy(next,temp->name); + after = next+strlen(next); + if ( glyphs->next!=NULL ) { + *after++ = ' '; + sofar = fea_AddAllLigPosibilities(tok,glyphs->next,sc,sequence_start,after,sofar); + } else { + *after = '\0'; + item = chunkalloc(sizeof(struct feat_item)); + item->type = ft_pst; + item->next = sofar; + sofar = item; + item->u1.sc = sc; + item->u2.pst = chunkalloc(sizeof(PST)); + item->u2.pst->type = pst_ligature; + item->u2.pst->u.lig.components = copy(sequence_start); + item->u2.pst->u.lig.lig = sc; + } + } +return( sofar ); +} + +static struct markedglyphs *fea_glyphs_to_names(struct markedglyphs *glyphs, + int cnt,char **to) { + struct markedglyphs *g; + int len, i; + char *names, *pt; + + len = 0; + for ( g=glyphs, i=0; inext ) + len += strlen( g->name_or_class ) +1; + names = pt = galloc(len+1); + for ( g=glyphs, i=0; inext ) { + strcpy(pt,g->name_or_class); + pt += strlen( pt ); + *pt++ = ' '; + } + if ( pt!=names ) + pt[-1] = '\0'; + else + *pt = '\0'; + *to = names; +return( g ); +} + +static struct feat_item *fea_process_pos_single(struct parseState *tok, + struct markedglyphs *glyphs, struct feat_item *sofar) { + char *start, *pt, ch; + struct feat_item *item; + SplineChar *sc; + + start = glyphs->name_or_class; + forever { + while ( *start==' ' ) ++start; + if ( *start=='\0' ) + break; + for ( pt=start; *pt!='\0' && *pt!=' '; ++pt ); + ch = *pt; *pt = '\0'; + sc = fea_glyphname_get(tok,start); + *pt = ch; start = pt; + if ( sc!=NULL ) { + item = chunkalloc(sizeof(struct feat_item)); + item->type = ft_pst; + item->next = sofar; + sofar = item; + item->u1.sc = sc; + item->u2.pst = chunkalloc(sizeof(PST)); + item->u2.pst->type = pst_position; + item->u2.pst->u.pos = glyphs->vr[0]; + } + } +return( sofar ); +} + +static struct feat_item *fea_process_pos_pair(struct parseState *tok, + struct markedglyphs *glyphs, struct feat_item *sofar, int enumer) { + char *start, *pt, ch, *start2, *pt2, ch2; + struct feat_item *item; + struct vr vr[2]; + SplineChar *sc, *sc2; + + memset(vr,0,sizeof(vr)); + if ( glyphs->vr==NULL ) + vr[0] = *glyphs->next->vr; + else { + vr[0] = *glyphs->vr; + if ( glyphs->next->vr!=NULL ) + vr[1] = *glyphs->next->vr; + } + if ( enumer || (glyphs->is_name && glyphs->next->is_name)) { + start = glyphs->name_or_class; + forever { + while ( *start==' ' ) ++start; + if ( *start=='\0' ) + break; + for ( pt=start; *pt!='\0' && *pt!=' '; ++pt ); + ch = *pt; *pt = '\0'; + sc = fea_glyphname_get(tok,start); + *pt = ch; start = pt; + if ( sc!=NULL ) { + start2 = glyphs->next->name_or_class; + forever { + while ( *start2==' ' ) ++start2; + if ( *start2=='\0' ) + break; + for ( pt2=start2; *pt2!='\0' && *pt2!=' '; ++pt2 ); + ch2 = *pt2; *pt2 = '\0'; + sc2 = fea_glyphname_get(tok,start2); + *pt2 = ch2; start2 = pt2; + if ( sc2!=NULL ) { + item = chunkalloc(sizeof(struct feat_item)); + item->type = ft_pst; + item->next = sofar; + sofar = item; + item->u1.sc = sc; + item->u2.pst = chunkalloc(sizeof(PST)); + item->u2.pst->type = pst_pair; + item->u2.pst->u.pair.paired = copy(sc2->name); + item->u2.pst->u.pair.vr = chunkalloc(sizeof( struct vr[2])); + memcpy(item->u2.pst->u.pair.vr,vr,sizeof(vr)); + } + } + } + } + } else { + item = chunkalloc(sizeof(struct feat_item)); + item->type = ft_pstclass; + item->next = sofar; + sofar = item; + item->u1.class = copy(glyphs->name_or_class); + item->u2.pst = chunkalloc(sizeof(PST)); + item->u2.pst->type = pst_pair; + item->u2.pst->u.pair.paired = copy(glyphs->next->name_or_class); + item->u2.pst->u.pair.vr = chunkalloc(sizeof( struct vr[2])); + memcpy(item->u2.pst->u.pair.vr,vr,sizeof(vr)); + } +return( sofar ); +} + +static struct feat_item *fea_process_sub_single(struct parseState *tok, + struct markedglyphs *glyphs, struct markedglyphs *rpl, + struct feat_item *sofar ) { + char *start, *pt, ch, *start2, *pt2, ch2; + struct feat_item *item; + SplineChar *sc, *temp; + + if ( rpl->is_name ) { + temp = fea_glyphname_get(tok,rpl->name_or_class); + if ( temp!=NULL ) { + start = glyphs->name_or_class; + if ( start==NULL ) { + LogError(_("Internal state messed up on line %d of %s"), tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; +return( sofar ); + } + forever { + while ( *start==' ' ) ++start; + if ( *start=='\0' ) + break; + for ( pt=start; *pt!='\0' && *pt!=' '; ++pt ); + ch = *pt; *pt = '\0'; + sc = fea_glyphname_get(tok,start); + *pt = ch; start = pt; + if ( sc!=NULL ) { + item = chunkalloc(sizeof(struct feat_item)); + item->type = ft_pst; + item->next = sofar; + sofar = item; + item->u1.sc = sc; + item->u2.pst = chunkalloc(sizeof(PST)); + item->u2.pst->type = pst_substitution; + item->u2.pst->u.subs.variant = copy(temp->name); + } + } + } + } else if ( !glyphs->is_name ) { + start = glyphs->name_or_class; + start2 = rpl->name_or_class; + forever { + while ( *start==' ' ) ++start; + while ( *start2==' ' ) ++start2; + if ( *start=='\0' && *start2=='\0' ) + break; + else if ( *start=='\0' || *start2=='\0' ) { + LogError(_("When a single substitution is specified by glyph classes, those classes must be of the same length on line %d of %s"), tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + break; + } + for ( pt=start; *pt!='\0' && *pt!=' '; ++pt ); + ch = *pt; *pt = '\0'; + for ( pt2=start2; *pt2!='\0' && *pt2!=' '; ++pt2 ); + ch2 = *pt2; *pt2 = '\0'; + sc = fea_glyphname_get(tok,start); + temp = fea_glyphname_get(tok,start2); + *pt = ch; start = pt; + *pt2 = ch2; start2 = pt2; + if ( sc==NULL || temp==NULL ) + continue; + item = chunkalloc(sizeof(struct feat_item)); + item->type = ft_pst; + item->next = sofar; + sofar = item; + item->u1.sc = sc; + item->u2.pst = chunkalloc(sizeof(PST)); + item->u2.pst->type = pst_substitution; + item->u2.pst->u.subs.variant = copy(temp->name); + } + } else { + LogError(_("When a single substitution's replacement is specified by a glyph class, the thing being replaced must also be a class on line %d of %s"), tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + } +return( sofar ); +} + +static struct feat_item *fea_process_sub_ligature(struct parseState *tok, + struct markedglyphs *glyphs, struct markedglyphs *rpl, + struct feat_item *sofar ) { + SplineChar *sc; + struct markedglyphs *g; + + /* I store ligatures backwards, in the ligature glyph not the glyphs being substituted */ + sc = fea_glyphname_get(tok,rpl->name_or_class); + if ( sc!=NULL ) { + int len=0; + char *space; + for ( g=glyphs; g!=NULL && g->mark_count==glyphs->mark_count; g=g->next ) + len += strlen(g->name_or_class)+1; + space = galloc(len+1); + sofar = fea_AddAllLigPosibilities(tok,glyphs,sc,space,space,sofar); + free(space); + } +return( sofar ); +} + +static FPST *fea_markedglyphs_to_fpst(struct parseState *tok,struct markedglyphs *glyphs, + int is_pos,int is_ignore) { + struct markedglyphs *g; + int bcnt=0, ncnt=0, fcnt=0, cnt; + int all_single=true; + int mmax = 0; + int i; + FPST *fpst; + struct fpst_rule *r; + struct feat_item *item, *head = NULL; + + for ( g=glyphs; g!=NULL && g->mark_count==0; g=g->next ) { + ++bcnt; + if ( !g->is_name ) all_single = false; + } + for ( ; g!=NULL ; g=g->next ) { + if ( !g->is_name ) all_single = false; + if ( g->mark_count==0 ) + ++fcnt; + else { + /* if we found some unmarked glyphs between two runs of marked */ + /* they don't count as lookaheads */ + ncnt += fcnt + 1; + fcnt = 0; + if ( g->mark_count>mmax ) mmax = g->mark_count; + } + } + + fpst = chunkalloc(sizeof(FPST)); + fpst->type = is_pos ? pst_chainpos : pst_chainsub; + fpst->format = all_single ? pst_glyphs : pst_coverage; + fpst->rule_cnt = 1; + fpst->rules = r = gcalloc(1,sizeof(struct fpst_rule)); + if ( is_ignore ) + mmax = 0; + r->lookup_cnt = mmax; + r->lookups = gcalloc(mmax,sizeof(struct seqlookup)); + for ( i=0; ilookups[i].seq = i; + + if ( all_single ) { + g = fea_glyphs_to_names(glyphs,bcnt,&r->u.glyph.back); + g = fea_glyphs_to_names(g,ncnt,&r->u.glyph.names); + g = fea_glyphs_to_names(g,fcnt,&r->u.glyph.fore); + } else { + r->u.coverage.ncnt = ncnt; + r->u.coverage.bcnt = bcnt; + r->u.coverage.fcnt = fcnt; + r->u.coverage.ncovers = galloc(ncnt*sizeof(char*)); + r->u.coverage.bcovers = galloc(bcnt*sizeof(char*)); + r->u.coverage.fcovers = galloc(fcnt*sizeof(char*)); + for ( i=0, g=glyphs; inext ) + r->u.coverage.bcovers[i] = copy(g->name_or_class); + for ( i=0; inext ) + r->u.coverage.ncovers[i] = copy(g->name_or_class); + for ( i=0; inext ) + r->u.coverage.fcovers[i] = copy(g->name_or_class); + } + + item = chunkalloc(sizeof(struct feat_item)); + item->type = ft_fpst; + item->next = tok->sofar; + tok->sofar = item; + item->u2.fpst = fpst; + + if ( is_pos ) { + for ( g=glyphs; g!=NULL && g->mark_count==0; g=g->next ); + for ( i=0; g!=NULL; ++i ) { + head = NULL; + if ( g->lookupname!=NULL ) { + head = chunkalloc(sizeof(struct feat_item)); + head->type = ft_lookup_ref; + head->u1.lookup_name = copy(g->lookupname); + } else if ( (g->next==NULL || g->next->mark_count!=g->mark_count) && + g->vr!=NULL ) { + head = fea_process_pos_single(tok,g,NULL); + } else if ( g->next!=NULL && g->mark_count==g->next->mark_count && + (g->vr!=NULL || g->next->vr!=NULL ) && + ( g->next->next==NULL || g->next->next->mark_count!=g->mark_count)) { + head = fea_process_pos_pair(tok,g,NULL,false); + } else { + LogError(_("Unparseable contextual sequence on line %d of %s"), tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + } + r->lookups[i].lookup = (OTLookup *) head; + cnt = g->mark_count; + while ( g!=NULL && g->mark_count == cnt ) /* skip everything involved here */ + g=g->next; + for ( ; g!=NULL && g->mark_count==0; g=g->next ); /* skip any uninvolved glyphs */ + } + } + +return( fpst ); +} + +static void fea_ParseIgnore(struct parseState *tok) { + struct markedglyphs *glyphs; + int is_pos; + FPST *fpst; + /* ignore [pos|sub] (, )* */ + + fea_ParseTok(tok); + if ( tok->type==tk_position ) + is_pos = true; + else if ( tok->type == tk_substitute ) + is_pos = false; + else { + LogError(_("The ignore keyword must be followed by either position or substitute on line %d of %s"), tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + is_pos = true; + } + forever { + glyphs = fea_ParseMarkedGlyphs(tok,false/* don't parse value records, etc*/, + true/*allow marks*/,false/* no lookups */); + fpst = fea_markedglyphs_to_fpst(tok,glyphs,false,true); + if ( is_pos ) + fpst->type = pst_chainpos; + fea_markedglyphsFree(glyphs); + fea_ParseTok(tok); + if ( tok->type!=tk_char || tok->tokbuf[0]!=',' ) + break; + } + + fea_now_semi(tok); +} + +static void fea_ParseSubstitute(struct parseState *tok) { + /* name by name => single subs */ + /* class by name => single subs */ + /* class by class => single subs */ + /* name by => multiple subs */ + /* name from => alternate subs */ + /* by name => ligature */ + /* by => context chaining */ + /* by * => context chaining */ + /* [ignore sub] (, )* */ + struct markedglyphs *glyphs = fea_ParseMarkedGlyphs(tok,false,true,false), + *g, *rpl, *rp; + int cnt, i; + SplineChar *sc; + struct feat_item *item, *head; + + fea_ParseTok(tok); + for ( cnt=0, g=glyphs; g!=NULL; g=g->next, ++cnt ); + if ( glyphs==NULL ) { + LogError(_("Empty subsitute on line %d of %s"), tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + } else if ( !glyphs->has_marks ) { + /* Non-contextual */ + if ( cnt==1 && glyphs->is_name && tok->type==tk_from ) { + /* Alternate subs */ + char *alts; + fea_ParseTok(tok); + alts = fea_ParseGlyphClassGuarded(tok); + sc = fea_glyphname_get(tok,glyphs->name_or_class); + if ( sc!=NULL ) { + item = chunkalloc(sizeof(struct feat_item)); + item->type = ft_pst; + item->next = tok->sofar; + tok->sofar = item; + item->u1.sc = sc; + item->u2.pst = chunkalloc(sizeof(PST)); + item->u2.pst->type = pst_alternate; + item->u2.pst->u.alt.components = alts; + } + } else if ( cnt>=1 && tok->type==tk_by ) { + rpl = fea_ParseMarkedGlyphs(tok,false,false,false); + if ( rpl==NULL ) { + LogError(_("No substitution specified on line %d of %s"), tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + } else if ( rpl->has_marks ) { + LogError(_("No marked glyphs allowed in replacement on line %d of %s"), tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + } else { + if ( cnt==1 && rpl->next==NULL ) { + tok->sofar = fea_process_sub_single(tok,glyphs,rpl,tok->sofar); + } else if ( cnt==1 && glyphs->is_name && rpl->next!=NULL && rpl->is_name ) { + /* Multiple substitution */ + int len=0; + char *mult; + for ( g=rpl; g!=NULL; g=g->next ) + len += strlen(g->name_or_class)+1; + mult = galloc(len+1); + len = 0; + for ( g=rpl; g!=NULL; g=g->next ) { + strcpy(mult+len,g->name_or_class); + len += strlen(g->name_or_class); + mult[len++] = ' '; + } + mult[len-1] = '\0'; + sc = fea_glyphname_get(tok,glyphs->name_or_class); + if ( sc!=NULL ) { + item = chunkalloc(sizeof(struct feat_item)); + item->type = ft_pst; + item->next = tok->sofar; + tok->sofar = item; + item->u1.sc = sc; + item->u2.pst = chunkalloc(sizeof(PST)); + item->u2.pst->type = pst_multiple; + item->u2.pst->u.mult.components = mult; + } + } else if ( cnt>1 && rpl->is_name && rpl->next==NULL ) { + tok->sofar = fea_process_sub_ligature(tok,glyphs,rpl,tok->sofar); + /* Ligature */ + } else { + LogError(_("Unparseable glyph sequence in substitution on line %d of %s"), tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + } + } + fea_markedglyphsFree(rpl); + } else { + LogError(_("Expected 'by' or 'from' keywords in substitution on line %d of %s"), tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + } + } else { + /* Contextual */ + FPST *fpst = fea_markedglyphs_to_fpst(tok,glyphs,false,false); + struct fpst_rule *r = fpst->rules; + if ( tok->type!=tk_by ) { + LogError(_("Expected 'by' keyword in substitution on line %d of %s"), tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + } + rpl = fea_ParseMarkedGlyphs(tok,false,false,true); + for ( g=glyphs; g!=NULL && g->mark_count==0; g=g->next ); + for ( i=0, rp=rpl; g!=NULL && rp!=NULL; ++i, rp=rp->next ) { + if ( rp->lookupname!=NULL ) { + head = chunkalloc(sizeof(struct feat_item)); + head->type = ft_lookup_ref; + head->u1.lookup_name = copy(rp->lookupname); + } else if ( g->next==NULL || g->next->mark_count!=g->mark_count ) { + head = fea_process_sub_single(tok,g,rp,NULL); + } else if ( g->next!=NULL && g->mark_count==g->next->mark_count ) { + head = fea_process_sub_ligature(tok,g,rpl,NULL); + } else { + LogError(_("Unparseable contextual sequence on line %d of %s"), tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + } + r->lookups[i].lookup = (OTLookup *) head; + cnt = g->mark_count; + while ( g!=NULL && g->mark_count == cnt ) /* skip everything involved here */ + g=g->next; + for ( ; g!=NULL && g->mark_count!=0; g=g->next ); /* skip any uninvolved glyphs */ + } + + fea_markedglyphsFree(rpl); + } + + fea_end_statement(tok); + fea_markedglyphsFree(glyphs); +} + +static void fea_ParseMarks(struct parseState *tok) { + /* mark name|class */ + char *contents = NULL; + SplineChar *sc = NULL; + AnchorPoint *ap; + char *start, *pt; + int ch; + + fea_ParseTok(tok); + if ( tok->type==tk_name ) + sc = fea_glyphname_get(tok,tok->tokbuf); + else if ( tok->type==tk_class ) + contents = fea_lookup_class_complain(tok,tok->tokbuf); + else if ( tok->type==tk_char && tok->tokbuf[0]=='[' ) + contents = fea_ParseGlyphClass(tok); + else { + LogError(_("Expected glyph name or class in mark statement on line %d of %s"), tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + fea_skip_to_semi(tok); +return; + } + if ( sc==NULL && contents==NULL ) { + fea_skip_to_semi(tok); +return; + } + + fea_TokenMustBe(tok,tk_char,'<'); + fea_TokenMustBe(tok,tk_anchor,'\0'); + ap = fea_ParseAnchor(tok); + ap->type = at_mark; + fea_end_statement(tok); + + if ( ap!=NULL ) { + pt = contents; + forever { + struct feat_item *item = chunkalloc(sizeof(struct feat_item)); + item->type = ft_ap; + item->u2.ap = ap; + item->next = tok->sofar; + tok->sofar = item; + start = pt; + if ( contents==NULL ) { + item->u1.sc = sc; + break; + } + while ( *pt!='\0' && *pt!=' ' ) + ++pt; + ch = *pt; *pt = '\0'; + sc = fea_glyphname_get(tok,start); + *pt = ch; + while ( isspace(*pt)) ++pt; + if ( sc==NULL ) { + tok->sofar = item->next; /* Oops, remove it */ + chunkfree(item,sizeof(*item)); + if ( *pt=='\0' ) { + AnchorPointsFree(ap); + break; + } + } else { + item->u1.sc = sc; + if ( *pt=='\0' ) + break; + ap = AnchorPointsCopy(ap); + } + } + } + free(contents); +} + +static void fea_ParsePosition(struct parseState *tok, int enumer) { + /* name => single pos */ + /* class => single pos */ + /* name|class name|class => pair pos */ + /* name|class name|class => pair pos */ + /* cursive name|class => cursive positioning */ + /* name|class mark name|class => mark to base pos */ + /* Must be preceded by a mark statement */ + /* name|class + mark name|class => mark to ligature pos */ + /* Must be preceded by a mark statement */ + /* mark name|class mark name|class => mark to base pos */ + /* Must be preceded by a mark statement */ + /* => context chaining */ + /* [ignore pos] (, )* */ + struct markedglyphs *glyphs = fea_ParseMarkedGlyphs(tok,true,true,false), *g; + int cnt, i; + struct feat_item *item; + char *start, *pt, ch; + SplineChar *sc; + + fea_ParseTok(tok); + for ( cnt=0, g=glyphs; g!=NULL; g=g->next, ++cnt ); + if ( glyphs==NULL ) { + LogError(_("Empty position on line %d of %s"), tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + } else if ( !glyphs->has_marks ) { + /* Non-contextual */ + if ( glyphs->is_cursive ) { + if ( cnt!=1 || glyphs->ap_cnt!=2 ) { + LogError(_("Invalid cursive position on line %d of %s"), tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + } else { + start = glyphs->name_or_class; + if ( glyphs->anchors[1]!=NULL ) + glyphs->anchors[1]->type = at_cexit; + forever { + while ( *start==' ' ) ++start; + if ( *start=='\0' ) + break; + for ( pt=start; *pt!='\0' && *pt!=' '; ++pt ); + ch = *pt; *pt = '\0'; + sc = fea_glyphname_get(tok,start); + *pt = ch; start = pt; + if ( sc!=NULL ) { + item = chunkalloc(sizeof(struct feat_item)); + item->type = ft_ap; + item->next = tok->sofar; + tok->sofar = item; + item->u1.sc = sc; + if ( glyphs->anchors[0]!=NULL ) { + glyphs->anchors[0]->type = at_centry; + glyphs->anchors[0]->next = glyphs->anchors[1]; + item->u2.ap = AnchorPointsCopy(glyphs->anchors[0]); + } else + item->u2.ap = AnchorPointsCopy(glyphs->anchors[1]); + } + } + } + } else if ( cnt==1 && glyphs->vr!=NULL ) { + tok->sofar = fea_process_pos_single(tok,glyphs,tok->sofar); + } else if ( cnt==2 && (glyphs->vr!=NULL || glyphs->next->vr!=NULL) ) { + tok->sofar = fea_process_pos_pair(tok,glyphs,tok->sofar, enumer); + } else if ( cnt==1 && glyphs->ap_cnt>=1 && tok->type == tk_mark ) { + /* Mark to base, mark to mark, mark to ligature */ + char *mark_class; + AnchorPoint *head=NULL, *last=NULL; + if ( tok->type!=tk_mark ) { + LogError(_("A mark glyph (or class of marks) must be specified here on line %d of %s"), tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + } + fea_ParseTok(tok); + if ( tok->type==tk_name ) + mark_class = copy(tok->tokbuf); + else + mark_class = fea_canonicalClassOrder(fea_ParseGlyphClassGuarded(tok)); + fea_ParseTok(tok); + if ( glyphs->is_mark && glyphs->ap_cnt>1 ) { + LogError(_("Mark to base anchor statements may only have one anchor on line %d of %s"), tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + } + if ( mark_class!=NULL ) { + for ( i=0; iap_cnt; ++i ) { + if ( glyphs->anchors[i]==NULL ) + /* Nothing to be done */; + else { + if ( glyphs->ap_cnt>1 ) { + glyphs->anchors[i]->type = at_baselig; + glyphs->anchors[i]->lig_index = i; + } else if ( glyphs->is_mark ) + glyphs->anchors[i]->type = at_basemark; + else + glyphs->anchors[i]->type = at_basechar; + if ( head==NULL ) + head = glyphs->anchors[i]; + else + last->next = glyphs->anchors[i]; + last = glyphs->anchors[i]; + } + } + + start = glyphs->name_or_class; + forever { + while ( *start==' ' ) ++start; + if ( *start=='\0' ) + break; + for ( pt=start; *pt!='\0' && *pt!=' '; ++pt ); + ch = *pt; *pt = '\0'; + sc = fea_glyphname_get(tok,start); + *pt = ch; start = pt; + if ( sc!=NULL ) { + item = chunkalloc(sizeof(struct feat_item)); + item->type = ft_ap; + item->next = tok->sofar; + tok->sofar = item; + item->u1.sc = sc; + item->u2.ap = AnchorPointsCopy(head); + item->mark_class = copy(mark_class); + } + } + + /* So we can free them properly */ + for ( ; head!=NULL; head = last ) { + last = head->next; + head->next = NULL; + } + } + } else { + LogError(_("Unparseable glyph sequence in position on line %d of %s"), tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + } + } else { + /* Contextual */ + (void) fea_markedglyphs_to_fpst(tok,glyphs,true,false); + } + fea_now_semi(tok); + fea_markedglyphsFree(glyphs); +} + +static enum otlookup_type fea_LookupTypeFromItem(struct feat_item *item) { + switch ( item->type ) { + case ft_pst: case ft_pstclass: + switch ( item->u2.pst->type ) { + case pst_position: +return( gpos_single ); + case pst_pair: +return( gpos_pair ); + case pst_substitution: +return( gsub_single ); + case pst_alternate: +return( gsub_alternate ); + case pst_multiple: +return( gsub_multiple ); + case pst_ligature: +return( gsub_ligature ); + default: +return( ot_undef ); /* Can't happen */ + } + break; + case ft_ap: + switch( item->u2.ap->type ) { + case at_centry: case at_cexit: +return( gpos_cursive ); + case at_mark: +return( ot_undef ); /* Can be used in three different lookups. Not enough info */ + case at_basechar: +return( gpos_mark2base ); + case at_baselig: +return( gpos_mark2ligature ); + case at_basemark: +return( gpos_mark2mark ); + default: +return( ot_undef ); /* Can't happen */ + } + break; + case ft_fpst: + switch( item->u2.fpst->type ) { + case pst_chainpos: +return( gpos_contextchain ); + case pst_chainsub: +return( gsub_contextchain ); + default: +return( ot_undef ); /* Can't happen */ + } + break; + default: +return( ot_undef ); /* Can happen */ + } +} + +static struct feat_item *fea_AddFeatItem(struct parseState *tok,enum feat_type type,uint32 tag) { + struct feat_item *item; + + item = chunkalloc(sizeof(struct feat_item)); + item->type = type; + item->u1.tag = tag; + item->next = tok->sofar; + tok->sofar = item; +return( item ); +} + +static int fea_LookupSwitch(struct parseState *tok) { + int enumer = false; + + switch ( tok->type ) { + case tk_class: + fea_ParseGlyphClassDef(tok); + break; + case tk_lookupflag: + fea_ParseLookupFlags(tok); + break; + case tk_mark: + fea_ParseMarks(tok); + break; + case tk_ignore: + fea_ParseIgnore(tok); + break; + case tk_enumerate: + fea_TokenMustBe(tok,tk_position,'\0'); + enumer = true; + /* Fall through */; + case tk_position: + fea_ParsePosition(tok,enumer); + break; + case tk_substitute: + fea_ParseSubstitute(tok); + enumer = false; + break; + case tk_subtable: + fea_AddFeatItem(tok,ft_subtable,0); + fea_TokenMustBe(tok,tk_char,';'); + break; + case tk_char: + if ( tok->tokbuf[0]=='}' ) +return( 2 ); + /* Fall through */ + default: +return( 0 ); + } +return( 1 ); +} + +static void fea_ParseLookupDef(struct parseState *tok, int could_be_stat ) { + char *lookup_name; + struct feat_item *item, *first_after_mark; + enum otlookup_type lookuptype; + int has_marks; + int ret; + + fea_ParseTok(tok); + if ( tok->type!=tk_name ) { + LogError(_("Expected name in lookup on line %d of %s"), tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + fea_skip_to_semi(tok); +return; + } + lookup_name = copy(tok->tokbuf); + fea_ParseTok(tok); + if ( could_be_stat && tok->type==tk_char && tok->tokbuf[0]==';' ) { + item = chunkalloc(sizeof(struct feat_item)); + item->type = ft_lookup_ref; + item->u1.lookup_name = lookup_name; + item->next = tok->sofar; + tok->sofar = item; +return; + } else if ( tok->type==tk_useExtension ) /* I just ignore this */ + fea_ParseTok(tok); + if ( tok->type!=tk_char || tok->tokbuf[0]!='{' ) { + LogError(_("Expected '{' in feature definition on line %d of %s"), tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + fea_skip_to_semi(tok); +return; + } + + item = chunkalloc(sizeof(struct feat_item)); + item->type = ft_lookup_start; + item->u1.lookup_name = lookup_name; + item->next = tok->sofar; + tok->sofar = item; + + first_after_mark = NULL; + forever { + fea_ParseTok(tok); + if ( tok->err_count>100 ) + break; + if ( tok->type==tk_eof ) { + LogError(_("Unexpected end of file in lookup definition on line %d of %s"), tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; +return; + } else if ( (ret = fea_LookupSwitch(tok))==0 ) { + LogError(_("Unexpected token, %s, in lookup definition on line %d of %s"), tok->tokbuf, tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + if ( tok->type==tk_name && strcmp(tok->tokbuf,"subs")==0 ) + LogError(_(" Perhaps you meant to use the keyword 'sub' rather than 'subs'?") ); + ++tok->err_count; +return; + } else if ( ret==2 ) + break; + /* Ok, mark classes must either contain exactly the same glyphs, or */ + /* they may not intersect at all */ + /* Mark2* lookups are not well documented (because adobe FDK doesn't */ + /* support them) but I'm going to assume that if I have some mark */ + /* statements, then some pos statement, then another mark statement */ + /* that I begin a new subtable with the second set of marks (and a */ + /* different set of mark classes) */ + if ( tok->sofar!=NULL && tok->sofar->type==ft_subtable ) + first_after_mark = NULL; + else if ( tok->sofar!=NULL && tok->sofar->type==ft_ap ) { + if ( tok->sofar->u2.ap->type == at_mark ) + first_after_mark = NULL; + else if ( tok->sofar->mark_class==NULL ) + /* we don't have to worry about Cursive connections */; + else if ( first_after_mark == NULL ) + first_after_mark = tok->sofar; + else { + struct feat_item *f; + for ( f = tok->sofar->next; f!=NULL; f=f->next ) { + if ( f->type==ft_lookup_start || f->type==ft_subtable ) + break; + if ( f->type!=ft_ap || f->mark_class==NULL ) + continue; + if ( strcmp(tok->sofar->mark_class,f->mark_class)==0 ) + continue; /* same glyphs, that's ok */ + else if ( fea_classesIntersect(tok->sofar->mark_class,f->mark_class)) { + LogError(_("Mark classes must either be exactly the same or contain no common glyphs\n But the class on line %d of %s contains a match."), + tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + } + if ( f==first_after_mark ) + break; + } + } + } + } + fea_ParseTok(tok); + if ( tok->type!=tk_name || strcmp(tok->tokbuf,lookup_name)!=0 ) { + LogError(_("Expected %s in lookup definition on line %d of %s"), + lookup_name, tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + } + fea_end_statement(tok); + + /* Make sure all entries in this lookup of the same lookup type */ + lookuptype = ot_undef; + has_marks = false; + for ( item=tok->sofar ; item!=NULL && item->type!=ft_lookup_start; item=item->next ) { + enum otlookup_type cur = fea_LookupTypeFromItem(item); + if ( item->type==ft_ap && item->u2.ap->type == at_mark ) + has_marks = true; + if ( cur==ot_undef ) /* Some entries in the list (lookupflags) have no type */ + /* Tum, ty, tum tum */; + else if ( lookuptype==ot_undef ) + lookuptype = cur; + else if ( lookuptype!=cur ) { + LogError(_("All entries in a lookup must have the same type on line %d of %s"), + tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + break; + } + } + if ( lookuptype==ot_undef ) { + LogError(_("This lookup has no effect, I can't figure out its type on line %d of %s"), + tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + } else if ( has_marks && lookuptype!=gpos_mark2base && + lookuptype!=gpos_mark2mark && + lookuptype!=gpos_mark2ligature ) { + LogError(_("Mark glyphs may not be specified with this type of lookup on line %d of %s"), + tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + } + + item = chunkalloc(sizeof(struct feat_item)); + item->type = ft_lookup_end; + /* item->u1.lookup_name = lookup_name; */ + item->next = tok->sofar; + tok->sofar = item; +} + +static struct nameid *fea_ParseNameId(struct parseState *tok,int strid) { + int platform = 3, specific = 1, language = 0x409; + struct nameid *nm; + char *start, *pt; + int max, ch, value; + FILE *in = tok->inlist[tok->inc_depth]; + /* nameid [] string; */ + /* "nameid" and will already have been parsed when we get here */ + /* := | */ + /* ==3 => =1 =0x409 */ + /* ==1 => =0 =0 */ + /* string in double quotes \XXXX escapes to UCS2 (for 3) */ + /* string in double quotes \XX escapes to MacLatin (for 1) */ + /* I only store 3,1 strings */ + + fea_ParseTok(tok); + if ( tok->type == tk_int ) { + if ( tok->value!=3 && tok->value!=1 ) { + LogError(_("Invalid platform for string on line %d of %s"), + tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + } else if ( tok->value==1 ) { + specific = language = 0; + } + fea_ParseTok(tok); + if ( tok->type == tk_int ) { + specific = tok->value; + tok->base = 0; + fea_TokenMustBe(tok,tk_int,'\0'); + language = tok->value; + tok->base = 10; + fea_ParseTok(tok); + } + } + if ( tok->type!=tk_char || tok->tokbuf[0]!='"' ) { + LogError(_("Expected string on line %d of %s"), + tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + fea_skip_to_semi(tok); + nm = NULL; + } else { + if ( platform==3 && specific==1 ) { + nm = chunkalloc(sizeof(struct nameid)); + nm->strid = strid; + nm->platform = platform; + nm->specific = specific; + nm->language = language; + } else + nm = NULL; + max = 0; + pt = start = NULL; + while ( (ch=getc(in))!=EOF && ch!='"' ) { + if ( ch=='\n' || ch=='\r' ) + continue; /* Newline characters are ignored here */ + /* may be specified with backslashes */ + if ( ch=='\\' ) { + int i, dmax = platform==3 ? 4 : 2; + value = 0; + for ( i=0; i='a' && ch<='f' ) + ch -= ('a'-10); + else if ( ch>='A' && ch<='F' ) + ch -= ('A'-10); + else + ch -= '0'; + value <<= 4; + value |= ch; + } + } else + value = ch; + if ( nm!=NULL ) { + if ( pt-start+3>=max ) { + int off = pt-start; + start = grealloc(start,(max+=100)+1); + pt = start+off; + } + pt = utf8_idpb(pt,value); + } + } + if ( nm!=NULL ) { + if ( pt==NULL ) + nm->utf8_str = copy(""); + else { + *pt = '\0'; + nm->utf8_str = copy(start); + free(start); + } + } + if ( tok->type!=tk_char || tok->tokbuf[0]!='"' ) { + LogError(_("End of file found in string on line %d of %s"), + tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + } else + fea_end_statement(tok); + } +return( nm ); +} + +static struct feat_item *fea_ParseParameters(struct parseState *tok, struct feat_item *feat) { + /* Ok. The only time a parameter keyword may be used is inside a 'size' */ + /* feature and then it takes 4 numbers */ + /* The first, third and fourth are in decipoints and may be either */ + /* integers or floats (in which case we must multiply them by 10) */ + int params[4]; + int i; + + memset(params,0,sizeof(params)); + for ( i=0; i<4; ++i ) { + params[i] = fea_ParseDeciPoints(tok); + if ( tok->type==tk_char && tok->tokbuf[0]==';' ) + break; + } + fea_end_statement(tok); + + if ( feat==NULL ) { + feat = chunkalloc(sizeof(struct feat_item)); + feat->type = ft_sizeparams; + feat->next = tok->sofar; + tok->sofar = feat; + } + feat->u1.params = galloc(sizeof(params)); + memcpy(feat->u1.params,params,sizeof(params)); +return( feat ); +} + +static struct feat_item *fea_ParseSizeMenuName(struct parseState *tok, struct feat_item *feat) { + /* Sizemenuname takes either 0, 1 or 3 numbers and a string */ + /* if no numbers are given (or the first number is 3) then the string is */ + /* unicode. Otherwise a mac encoding, treated as single byte */ + /* Since fontforge only supports windows strings here I shall parse and */ + /* ignore mac strings */ + struct nameid *string; + + string = fea_ParseNameId(tok,-1); + + if ( string!=NULL ) { + if ( feat==NULL ) { + feat = chunkalloc(sizeof(struct feat_item)); + feat->type = ft_sizeparams; + feat->next = tok->sofar; + tok->sofar = feat; + } + string->next = feat->u2.names; + feat->u2.names = string; + } +return( feat ); +} + +static void fea_ParseFeatureDef(struct parseState *tok) { + uint32 feat_tag; + struct feat_item *item, *size_item = NULL; + int type, ret; + + fea_ParseTok(tok); + if ( tok->type!=tk_name || !tok->could_be_tag ) { + LogError(_("Expected tag in feature on line %d of %s"), tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + fea_skip_to_semi(tok); +return; + } + feat_tag = tok->tag; + tok->in_vkrn = feat_tag == CHR('v','k','r','n'); + + item = chunkalloc(sizeof(struct feat_item)); + item->type = ft_feat_start; + item->u1.tag = feat_tag; + if ( tok->def_langsyses!=NULL ) + item->u2.sl = SListCopy(tok->def_langsyses); + else { + item->u2.sl = chunkalloc(sizeof(struct scriptlanglist)); + item->u2.sl->script = DEFAULT_SCRIPT; + item->u2.sl->lang_cnt = 1; + item->u2.sl->langs[0] = DEFAULT_LANG; + } + item->next = tok->sofar; + tok->sofar = item; + + fea_ParseTok(tok); + if ( tok->type!=tk_char || tok->tokbuf[0]!='{' ) { + LogError(_("Expected '{' in feature definition on line %d of %s"), tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + fea_skip_to_semi(tok); +return; + } + + forever { + fea_ParseTok(tok); + if ( tok->err_count>100 ) + break; + if ( tok->type==tk_eof ) { + LogError(_("Unexpected end of file in feature definition on line %d of %s"), tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; +return; + } else if ( (ret = fea_LookupSwitch(tok))==0 ) { + switch ( tok->type ) { + case tk_lookup: + fea_ParseLookupDef(tok,true); + break; + case tk_languagesystem: + fea_ParseLangSys(tok,true); + break; + case tk_feature: + /* can appear inside an 'aalt' feature. I don't support it, but */ + /* just parse and ignore it */ + if ( feat_tag!=CHR('a','a','l','t')) { + LogError(_("Features inside of other features are only permitted for 'aalt' features on line %d of %s"), tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + } + fea_ParseTok(tok); + if ( tok->type!=tk_name || !tok->could_be_tag ) { + LogError(_("Expected tag on line %d of %s"), tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + } + fea_end_statement(tok); + break; + case tk_script: + case tk_language: + /* If no lang specified after script use 'dflt', if no script specified before a language use 'latn' */ + type = tok->type==tk_script ? ft_script : ft_lang; + fea_ParseTok(tok); + if ( tok->type!=tk_name || !tok->could_be_tag ) { + LogError(_("Expected tag on line %d of %s"), tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + } else { + item = fea_AddFeatItem(tok,type,tok->tag); + if ( type==ft_lang ) { + forever { + fea_ParseTok(tok); + if ( tok->type==tk_include_dflt ) + /* Unneeded */; + else if ( tok->type==tk_exclude_dflt ) + item->u2.exclude_dflt = true; + else if ( tok->type==tk_required ) + /* Not supported by adobe (or me) */; + else if ( tok->type==tk_char && tok->tokbuf[0]==';' ) + break; + else { + LogError(_("Expected ';' on line %d of %s"), tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + break; + } + } + } else + fea_end_statement(tok); + } + break; + case tk_parameters: + if ( feat_tag==CHR('s','i','z','e') ) { + size_item = fea_ParseParameters(tok, size_item); + break; + } + /* Fall on through */ + case tk_name: + if ( feat_tag==CHR('s','i','z','e') && strcmp(tok->tokbuf,"sizemenuname")==0 ) { + size_item = fea_ParseSizeMenuName(tok, size_item); + break; + } + /* Fall on through */ + default: + LogError(_("Unexpected token, %s, in feature definition on line %d of %s"), tok->tokbuf, tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; +return; + } + } else if ( ret==2 ) + break; + } + + fea_ParseTok(tok); + if ( tok->type!=tk_name || !tok->could_be_tag || tok->tag!=feat_tag ) { + LogError(_("Expected '%c%c%c%c' in lookup definition on line %d of %s"), + feat_tag>>24, feat_tag>>16, feat_tag>>8, feat_tag, + tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + } + fea_end_statement(tok); + + item = chunkalloc(sizeof(struct feat_item)); + item->type = ft_feat_end; + item->u1.tag = feat_tag; + item->next = tok->sofar; + tok->sofar = item; + + tok->in_vkrn = false; +} + +static void fea_ParseNameTable(struct parseState *tok) { + struct nameid *head=NULL, *string; + struct feat_item *item; + /* nameid [] string; */ + + forever { + fea_ParseTok(tok); + if ( tok->type != tk_nameid ) + break; + fea_TokenMustBe(tok,tk_int,'\0'); + string = fea_ParseNameId(tok,tok->value); + if ( string!=NULL ) { + string->next = head; + head = string; + } + } + + if ( head!=NULL ) { + item = chunkalloc(sizeof(struct feat_item)); + item->type = ft_names; + item->next = tok->sofar; + tok->sofar = item; + item->u2.names = head; + } + if ( tok->type!=tk_char || tok->tokbuf[0]!='}' ) { + LogError(_("Expected closing curly brace on line %d of %s"), tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + } +} + +static void fea_ParseTableKeywords(struct parseState *tok, struct tablekeywords *keys) { + int index; + struct tablevalues *tv, *head = NULL; + int i; + struct feat_item *item; + + forever { + fea_ParseTok(tok); + if ( tok->type != tk_name ) + break; + for ( index=0; keys[index].name!=NULL; ++index ) { + if ( strcmp(keys[index].name,tok->tokbuf)==0 ) + break; + } + if ( keys[index].name==NULL ) { + LogError(_("Unknown field %s on line %d of %s"), tok->tokbuf, tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + index = -1; + } + if ( index!=-1 && keys[index].offset!=-1 ) { + tv = chunkalloc(sizeof(struct tablevalues)); + tv->index = index; + } else + tv = NULL; + fea_ParseTok(tok); + if ( strcmp(tok->tokbuf,"Vendor")==0 && tv!=NULL) { + /* This takes a 4 character string */ + /* of course strings aren't part of the syntax, but it takes one anyway */ + if ( tok->type==tk_name && tok->could_be_tag ) + /* Accept a normal tag, since that's what it really is */ + tv->value = tok->tag; + else if ( tok->type==tk_char && tok->tokbuf[0]=='"' ) { + uint8 foo[4]; int ch; + FILE *in = tok->inlist[tok->inc_depth]; + memset(foo,' ',sizeof(foo)); + for ( i=0; i<4; ++i ) { + ch = getc(in); + if ( ch==EOF ) + break; + else if ( ch=='"' ) { + ungetc(ch,in); + break; + } + foo[i] = ch; + } + while ( (ch=getc(in))!=EOF && ch!='"' ); + tok->value=(foo[0]<<24) | (foo[1]<<16) | (foo[2]<<8) | foo[3]; + } else { + LogError(_("Expected string on line %d of %s"), + tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + chunkfree(tv,sizeof(*tv)); + tv = NULL; + } + fea_ParseTok(tok); + } else { + if ( tok->type!=tk_int ) { + LogError(_("Expected integer on line %d of %s"), + tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + chunkfree(tv,sizeof(*tv)); + tv = NULL; + fea_ParseTok(tok); + } else { + if ( tv!=NULL ) + tv->value = tok->value; + if ( strcmp(keys[index].name,"FontRevision")==0 ) { + /* Can take a float */ + FILE *in = tok->inlist[tok->inc_depth]; + int ch = getc(in); + if ( ch=='.' ) + for ( ch=getc(in); isdigit(ch); ch=getc(in)); + ungetc(ch,in); + } + if ( index!=-1 && keys[index].cnt!=1 ) { + int is_panose = strcmp(keys[index].name,"Panose")==0 && tv!=NULL; + if ( is_panose ) + tv->panose_vals[0] = tv->value; + for ( i=1; ; ++i ) { + fea_ParseTok(tok); + if ( tok->type!=tk_int ) + break; + if ( is_panose && i<10 && tv!=NULL ) + tv->panose_vals[i] = tok->value; + } + } else + fea_ParseTok(tok); + } + } + if ( tok->type!=tk_char || tok->tokbuf[0]!=';' ) { + LogError(_("Expected semicolon on line %d of %s"), + tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + fea_skip_to_close_curly(tok); + chunkfree(tv,sizeof(*tv)); + break; + } + if ( tv!=NULL ) { + tv->next = head; + head = tv; + } + } + if ( tok->type!=tk_char || tok->tokbuf[0]!='}' ) { + LogError(_("Expected '}' on line %d of %s"), + tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + fea_skip_to_close_curly(tok); + } + if ( head!=NULL ) { + item = chunkalloc(sizeof(struct feat_item)); + item->type = ft_tablekeys; + item->u1.offsets = keys; + item->u2.tvals = head; + item->next = tok->sofar; + tok->sofar = item; + } +} + +static void fea_ParseGDEFTable(struct parseState *tok) { + /* GlyphClassDef ; */ + /* Attach | +; */ /* parse & ignore */ + /* LigatureCaret | + */ + int i; + struct feat_item *item; + int16 *carets=NULL; int len=0, max=0; + + forever { + fea_ParseTok(tok); + if ( tok->type!=tk_name ) + break; + if ( strcmp(tok->tokbuf,"Attach")==0 ) { + fea_ParseTok(tok); + /* Bug. Not parsing inline classes */ + if ( tok->type!=tk_class && tok->type!=tk_name ) { + LogError(_("Expected name or class on line %d of %s"), tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + fea_skip_to_semi(tok); + } else { + forever { + fea_ParseTok(tok); + if ( tok->type!=tk_int ) + break; + } + } + } else if ( strcmp(tok->tokbuf,"LigatureCaret")==0 ) { + item = chunkalloc(sizeof(struct feat_item)); + item->type = ft_lcaret; + item->next = tok->sofar; + tok->sofar = item; + + fea_ParseTok(tok); + if ( tok->type==tk_name ) + item->u1.class = fea_glyphname_validate(tok,tok->tokbuf); + else if ( tok->type==tk_cid ) + item->u1.class = fea_cid_validate(tok,tok->value); + else if ( tok->type == tk_class || (tok->type==tk_char && tok->tokbuf[0]=='[')) + item->u1.class = fea_ParseGlyphClassGuarded(tok); + else { + LogError(_("Expected name or class on line %d of %s"), tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + fea_skip_to_semi(tok); + continue; + } + forever { + fea_ParseTok(tok); + if ( tok->type==tk_int ) + /* Not strictly cricket, but I'll accept it */; + else if ( tok->type==tk_char && tok->tokbuf[0]=='<' ) + fea_ParseCaret(tok); + else + break; + if ( len>=max ) + carets = grealloc(carets,(max+=10)*sizeof(int16)); + carets[len++] = tok->value; + } + if ( tok->type!=tk_char || tok->tokbuf[0]!=';' ) { + LogError(_("Expected semicolon on line %d of %s"), tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + fea_skip_to_semi(tok); + } + item->u2.lcaret = galloc((len+1)*sizeof(int16)); + memcpy(item->u2.lcaret,carets,len*sizeof(int16)); + item->u2.lcaret[len] = 0; + } else if ( strcmp(tok->tokbuf,"GlyphClassDef")==0 ) { + item = chunkalloc(sizeof(struct feat_item)); + item->type = ft_gdefclasses; + item->u1.gdef_classes = chunkalloc(sizeof(char *[4])); + item->next = tok->sofar; + tok->sofar = item; + for ( i=0; i<4; ++i ) { + fea_ParseTok(tok); + item->u1.gdef_classes[i] = fea_ParseGlyphClassGuarded(tok); + } + fea_ParseTok(tok); + } else { + LogError(_("Expected Attach or LigatureCaret or GlyphClassDef on line %d of %s"), tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + break; + } + } + if ( tok->type!=tk_char || tok->tokbuf[0]!='}' ) { + LogError(_("Unexpected token in GDEF on line %d of %s"), tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + fea_skip_to_close_curly(tok); + } + free(carets); +} + +static void fea_ParseTableDef(struct parseState *tok) { + uint32 table_tag; + struct feat_item *item; + + fea_ParseTag(tok); + if ( tok->type!=tk_name || !tok->could_be_tag ) { + LogError(_("Expected tag in table on line %d of %s"), tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + fea_skip_to_semi(tok); +return; + } + table_tag = tok->tag; + + item = chunkalloc(sizeof(struct feat_item)); + item->type = ft_table; + item->u1.tag = table_tag; + item->next = tok->sofar; + tok->sofar = item; + fea_TokenMustBe(tok,tk_char,'{'); + switch ( table_tag ) { + case CHR('G','D','E','F'): + fea_ParseGDEFTable(tok); + break; + case CHR('n','a','m','e'): + fea_ParseNameTable(tok); + break; + + case CHR('h','h','e','a'): + fea_ParseTableKeywords(tok,hhead_keys); + break; + case CHR('v','h','e','a'): + fea_ParseTableKeywords(tok,vhead_keys); + break; + case CHR('O','S','/','2'): + fea_ParseTableKeywords(tok,os2_keys); + break; + + case CHR('h','e','a','d'): + /* FontRevision .; */ + /* Only one field here, and I don't really support it */ + case CHR('v','m','t','x'): + /* I don't support 'vmtx' tables */ + case CHR('B','A','S','E'): + /* I don't support 'BASE' tables */ + default: + fea_skip_to_close_curly(tok); + break; + } + + fea_ParseTag(tok); + if ( tok->type!=tk_name || !tok->could_be_tag || tok->tag!=table_tag ) { + LogError(_("Expected matching tag in table on line %d of %s"), tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + fea_skip_to_semi(tok); +return; + } + fea_end_statement(tok); +} + +/* ************************************************************************** */ +/* ******************************* Free feat ******************************** */ +/* ************************************************************************** */ + +static void NameIdFree(struct nameid *nm) { + struct nameid *nmnext; + + while ( nm!=NULL ) { + nmnext = nm->next; + free( nm->utf8_str ); + chunkfree(nm,sizeof(*nm)); + nm = nmnext; + } +} + +static void TableValsFree(struct tablevalues *tb) { + struct tablevalues *tbnext; + + while ( tb!=NULL ) { + tbnext = tb->next; + chunkfree(tb,sizeof(*tb)); + tb = tbnext; + } +} + +static void fea_featitemFree(struct feat_item *item) { + struct feat_item *next; + int i,j; + + while ( item!=NULL ) { + next = item->next; + switch ( item->type ) { + case ft_lookup_end: + case ft_feat_end: + case ft_table: + case ft_subtable: + case ft_script: + case ft_lang: + case ft_lookupflags: + /* Nothing needs freeing */; + break; + case ft_feat_start: + case ft_langsys: + ScriptLangListFree( item->u2.sl); + break; + case ft_lookup_start: + case ft_lookup_ref: + free( item->u1.lookup_name ); + break; + case ft_sizeparams: + free( item->u1.params ); + NameIdFree( item->u2.names ); + break; + case ft_names: + NameIdFree( item->u2.names ); + break; + case ft_gdefclasses: + for ( i=0; i<4; ++i ) + free(item->u1.gdef_classes[i]); + chunkfree(item->u1.gdef_classes,sizeof(char *[4])); + break; + case ft_lcaret: + free( item->u2.lcaret ); + break; + case ft_tablekeys: + TableValsFree( item->u2.tvals ); + break; + case ft_pst: + PSTFree( item->u2.pst ); + break; + case ft_pstclass: + free( item->u1.class ); + PSTFree( item->u2.pst ); + break; + case ft_ap: + AnchorPointsFree( item->u2.ap ); + free( item->mark_class ); + break; + case ft_fpst: + if ( item->u2.fpst!=NULL ) { + for ( i=0; iu2.fpst->rule_cnt; ++i ) { + struct fpst_rule *r = &item->u2.fpst->rules[i]; + for ( j=0; jlookup_cnt; ++j ) { + if ( r->lookups[j].lookup!=NULL ) { + struct feat_item *nested = (struct feat_item *) (r->lookups[j].lookup); + fea_featitemFree(nested); + r->lookups[j].lookup = NULL; + } + } + } + FPSTFree(item->u2.fpst); + } + break; + default: + IError("Don't know how to free a feat_item of type %d", item->type ); + break; + } + chunkfree(item,sizeof(*item)); + item = next; + } +} + +static void fea_ParseFeatureFile(struct parseState *tok) { + + forever { + fea_ParseTok(tok); + if ( tok->err_count>100 ) + break; + switch ( tok->type ) { + case tk_class: + fea_ParseGlyphClassDef(tok); + break; + case tk_lookup: + fea_ParseLookupDef(tok,false); + break; + case tk_languagesystem: + fea_ParseLangSys(tok,false); + break; + case tk_feature: + fea_ParseFeatureDef(tok); + break; + case tk_table: + fea_ParseTableDef(tok); + break; + case tk_anonymous: + LogError(_("FontForge does not support anonymous tables on line %d of %s"), tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + fea_skip_to_close_curly(tok); + break; + case tk_eof: + goto end_loop; + default: + LogError(_("Unexpected token, %s, on line %d of %s"), tok->tokbuf, tok->line[tok->inc_depth], tok->filename[tok->inc_depth] ); + ++tok->err_count; + goto end_loop; + } + } + end_loop:; +} + +/* ************************************************************************** */ +/* ******************************* Apply feat ******************************* */ +/* ************************************************************************** */ +static int fea_FeatItemEndsLookup(enum feat_type type) { +return( type==ft_lookup_end || type == ft_feat_end || + type == ft_table || type == ft_script || + type == ft_lang || type == ft_langsys || + type == ft_lookup_ref ); +} + +static struct feat_item *fea_SetLookupLink(struct feat_item *nested, + enum otlookup_type type) { + struct feat_item *prev = NULL; + enum otlookup_type found_type; + + while ( nested!=NULL ) { + /* Stop when we find something which forces a new lookup */ + if ( fea_FeatItemEndsLookup(nested->type) ) + break; + if ( nested->ticked ) { + nested = nested->next; + continue; + } + found_type = fea_LookupTypeFromItem(nested); + if ( type==ot_undef || found_type == ot_undef || found_type == type ) { + if ( nested->type!=ft_ap || nested->u2.ap->type!=at_mark ) + nested->ticked = true; /* Marks might get used in more than one lookup */ + if ( prev!=NULL ) + prev->lookup_next = nested; + prev = nested; + } + nested = nested->next; + } +return( nested ); +} + +static void fea_ApplyLookupListPST(struct parseState *tok, + struct feat_item *lookup_data,OTLookup *otl) { + struct lookup_subtable *sub = NULL, *last=NULL; + struct feat_item *l; + (void)tok; + /* Simple pst's are easy. We just attach them to their proper glyphs */ + /* and then clear the feat_item pst slot (so we don't free them later) */ + /* There might be a subtable break */ + /* There might be a lookupflags */ + + for ( l = lookup_data; l!=NULL; l=l->lookup_next ) { + switch ( l->type ) { + case ft_lookup_start: + case ft_lookupflags: + /* Ignore these, already handled them */; + break; + case ft_subtable: + sub = NULL; + break; + case ft_pst: + if ( sub==NULL ) { + sub = chunkalloc(sizeof(struct lookup_subtable)); + sub->lookup = otl; + sub->per_glyph_pst_or_kern = true; + if ( last==NULL ) + otl->subtables = sub; + else + last->next = sub; + last = sub; + } + l->u2.pst->subtable = sub; + l->u2.pst->next = l->u1.sc->possub; + l->u1.sc->possub = l->u2.pst; + l->u2.pst = NULL; /* So we don't free it later */ + break; + default: + IError("Unexpected feature type %d in a PST feature", l->type ); + break; + } + } +} + +static OTLookup *fea_ApplyLookupList(struct parseState *tok, + struct feat_item *lookup_data,int lookup_flag); + +static void fea_ApplyLookupListContextual(struct parseState *tok, + struct feat_item *lookup_data,OTLookup *otl) { + struct lookup_subtable *sub = NULL, *last=NULL; + struct feat_item *l; + int i,j; + /* Fpst's are almost as easy as psts. We don't worry about subtables */ + /* (every fpst gets a new subtable, so the statement is irrelevant) */ + /* the only complication is that we must recursively handle a lookup list */ + /* There might be a lookupflags */ + + for ( l = lookup_data; l!=NULL; l=l->lookup_next ) { + switch ( l->type ) { + case ft_lookup_start: + case ft_lookupflags: + case ft_subtable: + /* Ignore these, already handled them */; + break; + case ft_fpst: + sub = chunkalloc(sizeof(struct lookup_subtable)); + sub->lookup = otl; + if ( last==NULL ) + otl->subtables = sub; + else + last->next = sub; + last = sub; + sub->fpst = l->u2.fpst; + l->u2.fpst->next = tok->sf->possub; + tok->sf->possub = l->u2.fpst; + l->u2.fpst = NULL; + sub->fpst->subtable = sub; + for ( i=0; ifpst->rule_cnt; ++i ) { + struct fpst_rule *r = &sub->fpst->rules[i]; + for ( j=0; jlookup_cnt; ++j ) { + if ( r->lookups[j].lookup!=NULL ) { + struct feat_item *nested = (struct feat_item *) (r->lookups[j].lookup); + fea_SetLookupLink(nested,ot_undef); + r->lookups[j].lookup = fea_ApplyLookupList(tok,nested,otl->lookup_flags); /* Not really sure what the lookup flag should be here. */ + fea_featitemFree(nested); + } + } + } + break; + default: + IError("Unexpected feature type %d in a FPST feature", l->type ); + break; + } + } +} + +static void fea_ApplyLookupListCursive(struct parseState *tok, + struct feat_item *lookup_data,OTLookup *otl) { + struct lookup_subtable *sub = NULL, *last=NULL; + struct feat_item *l; + AnchorPoint *aplast, *ap; + AnchorClass *ac = NULL; + /* Cursive's are also easy. There might be two ap's in the list so slight */ + /* care needed when adding them to a glyph, and we must create an anchorclass */ + /* There might be a subtable break */ + /* There might be a lookupflags */ + + for ( l = lookup_data; l!=NULL; l=l->lookup_next ) { + switch ( l->type ) { + case ft_lookup_start: + case ft_lookupflags: + /* Ignore these, already handled them */; + break; + case ft_subtable: + sub = NULL; + break; + case ft_ap: + if ( sub==NULL ) { + sub = chunkalloc(sizeof(struct lookup_subtable)); + sub->lookup = otl; + sub->anchor_classes = true; + if ( last==NULL ) + otl->subtables = sub; + else + last->next = sub; + last = sub; + ac = chunkalloc(sizeof(AnchorClass)); + ac->subtable = sub; + ac->type = act_curs; + ac->next = tok->accreated; + tok->accreated = ac; + } + aplast = NULL; + for ( ap=l->u2.ap; ap!=NULL; ap=ap->next ) { + aplast = ap; + ap->anchor = ac; + } + aplast->next = l->u1.sc->anchor; + l->u1.sc->anchor = l->u2.ap; + l->u2.ap = NULL; /* So we don't free them later */ + break; + default: + IError("Unexpected feature type %d in a cursive feature", l->type ); + break; + } + } +} + +static void fea_ApplyLookupListMark2(struct parseState *tok, + struct feat_item *lookup_data,int mcnt,OTLookup *otl) { + /* Mark2* lookups are not well documented (because adobe FDK doesn't */ + /* support them) but I'm going to assume that if I have some mark */ + /* statements, then some pos statement, then another mark statement */ + /* that I begin a new subtable with the second set of marks (and a */ + /* different set of mark classes) */ + char **classes; + AnchorClass **acs; + int ac_cnt, i; + struct lookup_subtable *sub = NULL, *last=NULL; + struct feat_item *mark_start, *l; + AnchorPoint *ap, *aplast; + + classes = galloc(mcnt*sizeof(char *)); + acs = galloc(mcnt*sizeof(AnchorClass *)); + ac_cnt = 0; + while ( lookup_data != NULL && lookup_data->type!=ft_lookup_end ) { + struct feat_item *orig = lookup_data; + sub = NULL; + /* Skip any subtable marks */ + while ( lookup_data!=NULL && + (lookup_data->type==ft_subtable || + lookup_data->type==ft_lookup_start || + lookup_data->type==ft_lookupflags ) ) + lookup_data = lookup_data->lookup_next; + + /* Skip over the marks, we'll deal with them after we know the mark classes */ + mark_start = lookup_data; + while ( lookup_data!=NULL && + ((lookup_data->type==ft_ap && lookup_data->u2.ap->type==at_mark) || + lookup_data->type==ft_lookup_start || + lookup_data->type==ft_lookupflags ) ) + lookup_data = lookup_data->lookup_next; + + /* Now process the base glyphs and figure out the mark classes */ + while ( lookup_data!=NULL && + ((lookup_data->type==ft_ap && lookup_data->mark_class!=NULL) || + lookup_data->type==ft_lookup_start || + lookup_data->type==ft_lookupflags ) ) { + if ( lookup_data->type == ft_ap ) { + for ( i=0; imark_class,classes[i])==0 ) + break; + } + if ( i==ac_cnt ) { + ++ac_cnt; + classes[i] = lookup_data->mark_class; + acs[i] = chunkalloc(sizeof(AnchorClass)); + if ( sub==NULL ) { + sub = chunkalloc(sizeof(struct lookup_subtable)); + sub->lookup = otl; + sub->anchor_classes = true; + if ( last==NULL ) + otl->subtables = sub; + else + last->next = sub; + last = sub; + } + acs[i]->subtable = sub; + acs[i]->type = otl->lookup_type==gpos_mark2mark ? act_mkmk : + otl->lookup_type==gpos_mark2base ? act_mark : + act_mklg; + acs[i]->next = tok->accreated; + tok->accreated = acs[i]; + } + aplast = NULL; + for ( ap=lookup_data->u2.ap; ap!=NULL; ap=ap->next ) { + aplast = ap; + ap->anchor = acs[i]; + } + aplast->next = lookup_data->u1.sc->anchor; + lookup_data->u1.sc->anchor = lookup_data->u2.ap; + lookup_data->u2.ap = NULL; /* So we don't free them later */ + } + lookup_data = lookup_data->next; + } + + /* Now go back and assign the marks to the correct anchor classes */ + for ( l=mark_start; l!=NULL && + /* The base aps will have been set to NULL above */ + ((l->type==ft_ap && l->u2.ap!=NULL && l->u2.ap->type==at_mark) || + l->type==ft_lookup_start || + l->type==ft_lookupflags ) ; + l = l->lookup_next ) { + if ( l->type==ft_ap ) { + for ( i=0; iu1.sc->name,classes[i])) { + AnchorPoint *ap = AnchorPointsCopy(l->u2.ap); + /* We make a copy of this anchor point because marks */ + /* might be used in more than one lookup. It makes */ + /* sense for a user to define a set of marks to be */ + /* used with both a m2base and a m2lig lookup within */ + /* a feature */ + ap->anchor = acs[i]; + ap->next = l->u1.sc->anchor; + l->u1.sc->anchor = ap; + break; + } + } + } + } + if ( lookup_data==orig ) + break; + } +} + + +static int is_blank(const char *s) { + int i; + + i = 0; + while (s[i] != '\0' && s[i] == ' ') + i++; + return( s[i] == '\0'); +} + +struct class_set { + char **classes; + int cnt, max; +}; + +/* We've got a set of glyph classes -- but they are the classes that make sense */ +/* to the user and so there's no guarantee that there aren't two classes with */ +/* the same glyph(s) */ +/* Simplify the list so that: There are no duplicates classes and each name */ +/* appears in at most one class. This is what we need */ +static void fea_canonicalClassSet(struct class_set *set) { + int i,j,k; + + /* Remove any duplicate classes */ + qsort(set->classes,set->cnt,sizeof(char *), strcmpD); + for ( i=0; icnt; ++i ) { + for ( j=i+1; jcnt; ++j ) + if ( strcmp(set->classes[i],set->classes[j])!=0 ) + break; + if ( j>i+1 ) { + int off = j-(i+1); + for ( k=i+1; kclasses[k]); + for ( k=j ; kcnt; ++k ) + set->classes[k-off] = set->classes[k]; + set->cnt -= off; + } + } + + for ( i=0; i < set->cnt - 1; ++i ) { + for ( j=i+1; j < set->cnt; ++j ) { + if ( fea_classesIntersect(set->classes[i],set->classes[j]) ) { + if ( set->cnt>=set->max ) + set->classes = grealloc(set->classes,(set->max+=20)*sizeof(char *)); + set->classes[set->cnt++] = fea_classesSplit(set->classes[i],set->classes[j]); + } + } + } + + /* Remove empty classes */ + i = 0; + while (i < set->cnt) { + if (is_blank(set->classes[i])) { + free(set->classes[i]); + for ( k=i+1 ; k < set->cnt; ++k ) + set->classes[k-1] = set->classes[k]; + set->cnt -= 1; + } else { + i++; + } + } +} + +#ifdef FONTFORGE_CONFIG_DEVICETABLES +static void KCFillDevTab(KernClass *kc,int index,DeviceTable *dt) { + if ( dt==NULL || dt->corrections == NULL ) +return; + if ( kc->adjusts == NULL ) + kc->adjusts = gcalloc(kc->first_cnt*kc->second_cnt,sizeof(DeviceTable)); + kc->adjusts[index] = *dt; + kc->adjusts[index].corrections = galloc(dt->last_pixel_size-dt->first_pixel_size+1); + memcpy(kc->adjusts[index].corrections,dt->corrections,dt->last_pixel_size-dt->first_pixel_size+1); + +} + +static void KPFillDevTab(KernPair *kp,DeviceTable *dt) { + if ( dt==NULL || dt->corrections == NULL ) +return; + kp->adjust = chunkalloc(sizeof(DeviceTable)); + *kp->adjust = *dt; + kp->adjust->corrections = galloc(dt->last_pixel_size-dt->first_pixel_size+1); + memcpy(kp->adjust->corrections,dt->corrections,dt->last_pixel_size-dt->first_pixel_size+1); +} +#endif + +static void fea_fillKernClass(KernClass *kc,struct feat_item *l) { + int i,j; + PST *pst; + + while ( l!=NULL && l->type!=ft_subtable ) { + if ( l->type==ft_pstclass ) { + pst = l->u2.pst; + for ( i=1; ifirst_cnt; ++i ) { + if ( fea_classesIntersect(kc->firsts[i],l->u1.class) ) { + for ( j=1; jsecond_cnt; ++j ) { + if ( fea_classesIntersect(kc->seconds[j],pst->u.pair.paired) ) { + /* FontForge only supports kerning classes in one direction at a time, not full value records */ + if ( pst->u.pair.vr[0].h_adv_off != 0 ) { + kc->offsets[i*kc->second_cnt+j] = pst->u.pair.vr[0].h_adv_off; +#ifdef FONTFORGE_CONFIG_DEVICETABLES + if ( pst->u.pair.vr[0].adjust!=NULL ) + KCFillDevTab(kc,i*kc->second_cnt+j,&pst->u.pair.vr[0].adjust->xadv); +#endif + } else if ( pst->u.pair.vr[0].v_adv_off != 0 ) { + kc->offsets[i*kc->second_cnt+j] = pst->u.pair.vr[0].v_adv_off; +#ifdef FONTFORGE_CONFIG_DEVICETABLES + if ( pst->u.pair.vr[0].adjust!=NULL ) + KCFillDevTab(kc,i*kc->second_cnt+j,&pst->u.pair.vr[0].adjust->yadv); +#endif + } else if ( pst->u.pair.vr[1].h_adv_off != 0 ) { + kc->offsets[i*kc->second_cnt+j] = pst->u.pair.vr[1].h_adv_off; +#ifdef FONTFORGE_CONFIG_DEVICETABLES + if ( pst->u.pair.vr[1].adjust!=NULL ) + KCFillDevTab(kc,i*kc->second_cnt+j,&pst->u.pair.vr[1].adjust->xadv); +#endif + } + if ( strcmp(kc->seconds[j],pst->u.pair.paired)==0 ) + break; + } + } + if ( strcmp(kc->firsts[i],l->u1.class)==0 ) + break; + } + } + } + l = l->lookup_next; + } +} + +static void SFKernClassRemoveFree(SplineFont *sf,KernClass *kc) { + KernClass *prev; + + if ( sf->kerns==kc ) + sf->kerns = kc->next; + else if ( sf->vkerns==kc ) + sf->vkerns = kc->next; + else { + prev = NULL; + if ( sf->kerns!=NULL ) + for ( prev=sf->kerns; prev!=NULL && prev->next!=kc; prev=prev->next ); + if ( prev==NULL && sf->vkerns!=NULL ) + for ( prev=sf->vkerns; prev!=NULL && prev->next!=kc; prev=prev->next ); + if ( prev!=NULL ) + prev->next = kc->next; + } + kc->next = NULL; + KernClassListFree(kc); +} + +static void fea_ApplyLookupListPair(struct parseState *tok, + struct feat_item *lookup_data,int kmax,OTLookup *otl) { + /* kcnt is the number of left/right glyph-name-lists we must sort into classes */ + struct feat_item *l, *first; + struct class_set lefts, rights; + struct lookup_subtable *sub = NULL, *lastsub=NULL; + SplineChar *sc, *other; + PST *pst; + KernPair *kp; + KernClass *kc; + int vkern, kcnt, i; + + memset(&lefts,0,sizeof(lefts)); + memset(&rights,0,sizeof(rights)); + if ( kmax!=0 ) { + lefts.classes = galloc(kmax*sizeof(char *)); + rights.classes = galloc(kmax*sizeof(char *)); + lefts.max = rights.max = kmax; + } + vkern = false; + for ( l = lookup_data; l!=NULL; ) { + first = l; + kcnt = 0; + while ( l!=NULL && l->type!=ft_subtable ) { + if ( l->type == ft_pst ) { + if ( sub==NULL ) { + sub = chunkalloc(sizeof(struct lookup_subtable)); + sub->lookup = otl; + sub->per_glyph_pst_or_kern = true; + if ( lastsub==NULL ) + otl->subtables = sub; + else + lastsub->next = sub; + lastsub = sub; + } + pst = l->u2.pst; + sc = l->u1.sc; + l->u2.pst = NULL; + kp = NULL; + other = SFGetChar(sc->parent,-1,pst->u.pair.paired); + if ( pst->u.pair.vr[0].xoff==0 && pst->u.pair.vr[0].yoff==0 && + pst->u.pair.vr[1].xoff==0 && pst->u.pair.vr[1].yoff==0 && + pst->u.pair.vr[1].v_adv_off==0 && + other!=NULL ) { + if ( (otl->lookup_flags&pst_r2l) && + (pst->u.pair.vr[0].h_adv_off==0 && pst->u.pair.vr[0].v_adv_off==0 )) { + kp = chunkalloc(sizeof(KernPair)); + kp->off = pst->u.pair.vr[1].h_adv_off; +#ifdef FONTFORGE_CONFIG_DEVICETABLES + if ( pst->u.pair.vr[1].adjust!=NULL ) + KPFillDevTab(kp,&pst->u.pair.vr[1].adjust->xadv); +#endif + } else if ( !(otl->lookup_flags&pst_r2l) && + (pst->u.pair.vr[1].h_adv_off==0 && pst->u.pair.vr[0].v_adv_off==0 )) { + kp = chunkalloc(sizeof(KernPair)); + kp->off = pst->u.pair.vr[0].h_adv_off; +#ifdef FONTFORGE_CONFIG_DEVICETABLES + if ( pst->u.pair.vr[0].adjust!=NULL ) + KPFillDevTab(kp,&pst->u.pair.vr[0].adjust->xadv); +#endif + } else if ( (pst->u.pair.vr[0].h_adv_off==0 && pst->u.pair.vr[1].h_adv_off==0 )) { + vkern = sub->vertical_kerning = true; + kp = chunkalloc(sizeof(KernPair)); + kp->off = pst->u.pair.vr[0].v_adv_off; +#ifdef FONTFORGE_CONFIG_DEVICETABLES + if ( pst->u.pair.vr[0].adjust!=NULL ) + KPFillDevTab(kp,&pst->u.pair.vr[0].adjust->yadv); +#endif + } + } + if ( kp!=NULL ) { + kp->sc = other; + kp->subtable = sub; + if ( vkern ) { + kp->next = sc->vkerns; + sc->vkerns = kp; + } else { + kp->next = sc->kerns; + sc->kerns = kp; + } + PSTFree(pst); + } else { + pst->subtable = sub; + pst->next = sc->possub; + sc->possub = pst; + } + } else if ( l->type == ft_pstclass ) { + lefts.classes[kcnt] = copy(fea_canonicalClassOrder(l->u1.class)); + rights.classes[kcnt++] = copy(fea_canonicalClassOrder(l->u2.pst->u.pair.paired)); + } + l = l->lookup_next; + } + if ( kcnt!=0 ) { + lefts.cnt = rights.cnt = kcnt; + fea_canonicalClassSet(&lefts); + fea_canonicalClassSet(&rights); + + sub = chunkalloc(sizeof(struct lookup_subtable)); + sub->lookup = otl; + if ( lastsub==NULL ) + otl->subtables = sub; + else + lastsub->next = sub; + lastsub = sub; + + if ( sub->kc!=NULL ) + SFKernClassRemoveFree(tok->sf,sub->kc); + sub->kc = kc = chunkalloc(sizeof(KernClass)); + kc->first_cnt = lefts.cnt+1; kc->second_cnt = rights.cnt+1; + kc->firsts = galloc(kc->first_cnt*sizeof(char *)); + kc->seconds = galloc(kc->second_cnt*sizeof(char *)); + kc->firsts[0] = kc->seconds[0] = NULL; + for ( i=0; ifirsts[i+1] = lefts.classes[i]; + for ( i=0; iseconds[i+1] = rights.classes[i]; + kc->subtable = sub; + kc->offsets = gcalloc(kc->first_cnt*kc->second_cnt,sizeof(int16)); +#ifdef FONTFORGE_CONFIG_DEVICETABLES + kc->adjusts = gcalloc(kc->first_cnt*kc->second_cnt,sizeof(DeviceTable)); +#endif + fea_fillKernClass(kc,first); + if ( sub->vertical_kerning ) { + kc->next = tok->sf->vkerns; + tok->sf->vkerns = kc; + } else { + kc->next = tok->sf->kerns; + tok->sf->kerns = kc; + } + } + sub = NULL; + while ( l!=NULL && l->type==ft_subtable ) + l = l->lookup_next; + } + if ( kmax!=0 ) { + free(lefts.classes); + free(rights.classes); + } +} + +static OTLookup *fea_ApplyLookupList(struct parseState *tok, + struct feat_item *lookup_data,int lookup_flag) { + /* A lookup list might consist just of a lookup_ref so find the lookup named u1.lookup_name */ + /* A lookup_start is optional and provides the lookup name */ + /* A lookupflags is optional and may occur anywhere u2.lookupflags */ + /* An ap is for mark2 types for the mark u1.sc and u2.ap (not grouped in anchor classes yet) */ + /* A fpst is for contextuals u2.fpst (rule.lookups[i].lookup are lookup lists in their own rights that need to become lookups) */ + /* A subtable means a subtable break, make up a new name, ignore multiple subtable entries */ + /* A pst is for simple things u1.sc, u2.pst */ + /* A pstclass is for kerning classes u1.class, u2.pst (paired may be a class list too) */ + /* An ap is for cursive types for the u1.sc and u2.ap (an entry and an exit ap) */ + /* An ap is for mark2 types for the base u1.sc and u2.ap and mark_class */ + OTLookup *otl; + int kcnt, mcnt; + struct feat_item *l; + enum otlookup_type temp; + + if ( lookup_data->type == ft_lookup_ref ) { + for ( otl=tok->created; otl!=NULL; otl=otl->next ) + if ( otl->lookup_name!=NULL && + strcmp(otl->lookup_name,lookup_data->u1.lookup_name)==0) +return( otl ); + otl = SFFindLookup(tok->sf,lookup_data->u1.lookup_name); + if ( otl==NULL ) + LogError( _("No lookup named %s"),lookup_data->u1.lookup_name ); + /* Can't give a line number, this is second pass */ +return( otl ); + } + + otl = chunkalloc(sizeof(OTLookup)); + otl->lookup_flags = lookup_flag; + otl->lookup_type = ot_undef; + if ( tok->last==NULL ) + tok->created = otl; + else + tok->last->next = otl; + tok->last = otl; + + /* Search first for class counts */ + kcnt = mcnt = 0; + for ( l = lookup_data; l!=NULL; l=l->lookup_next ) { + if ( l->type == ft_ap && l->mark_class!=NULL ) + ++mcnt; + else if ( l->type == ft_pstclass ) + ++kcnt; + else if ( l->type == ft_lookupflags ) + otl->lookup_flags = l->u2.lookupflags; + else if ( l->type == ft_lookup_start ) { + otl->lookup_name = l->u1.lookup_name; + l->u1.lookup_name = NULL; /* So we don't free it later */ + } + temp = fea_LookupTypeFromItem(l); + if ( temp==ot_undef ) + /* Tum ty tum tum. No information */; + else if ( otl->lookup_type == ot_undef ) + otl->lookup_type = temp; + else if ( otl->lookup_type != temp ) + IError(_("Mismatch lookup types inside a parsed lookup")); + } + if ( otl->lookup_type==gpos_mark2base || + otl->lookup_type==gpos_mark2ligature || + otl->lookup_type==gpos_mark2mark ) + fea_ApplyLookupListMark2(tok,lookup_data,mcnt,otl); + else if ( mcnt!=0 ) + IError(_("Mark anchors provided when nothing can use them")); + else if ( otl->lookup_type==gpos_cursive ) + fea_ApplyLookupListCursive(tok,lookup_data,otl); + else if ( otl->lookup_type==gpos_pair ) + fea_ApplyLookupListPair(tok,lookup_data,kcnt,otl); + else if ( otl->lookup_type==gpos_contextchain || + otl->lookup_type==gsub_contextchain ) + fea_ApplyLookupListContextual(tok,lookup_data,otl); + else + fea_ApplyLookupListPST(tok,lookup_data,otl); +return( otl ); +} + +static struct otfname *fea_NameID2OTFName(struct nameid *names) { + struct otfname *head=NULL, *cur; + + while ( names!=NULL ) { + cur = chunkalloc(sizeof(struct otfname)); + cur->lang = names->language; + cur->name = names->utf8_str; + names->utf8_str = NULL; + cur->next = head; + head = cur; + names = names->next; + } +return( head ); +} + +static void fea_AttachFeatureToLookup(OTLookup *otl,uint32 feat_tag, + struct scriptlanglist *sl) { + FeatureScriptLangList *fl; + + if ( otl==NULL ) +return; + + for ( fl = otl->features; fl!=NULL && fl->featuretag!=feat_tag; fl=fl->next ); + if ( fl==NULL ) { + fl = chunkalloc(sizeof(FeatureScriptLangList)); + fl->next = otl->features; + otl->features = fl; + fl->featuretag = feat_tag; + fl->scripts = SListCopy(sl); + } else + SLMerge(fl,sl); +} + +static void fea_NameID2NameTable(SplineFont *sf, struct nameid *names) { + struct ttflangname *cur; + + while ( names!=NULL ) { + for ( cur = sf->names; cur!=NULL && cur->lang!=names->language; cur=cur->next ); + if ( cur==NULL ) { + cur = chunkalloc(sizeof(struct ttflangname)); + cur->lang = names->language; + cur->next = sf->names; + sf->names = cur; + } + free(cur->names[names->strid]); + cur->names[names->strid] = names->utf8_str; + names->utf8_str = NULL; + names = names->next; + } +} + +static void fea_TableByKeywords(SplineFont *sf, struct feat_item *f) { + struct tablevalues *tv; + struct tablekeywords *offsets = f->u1.offsets, *cur; + int i; + + if ( !sf->pfminfo.pfmset ) { + SFDefaultOS2Info(&sf->pfminfo,sf,sf->fontname); + sf->pfminfo.pfmset = sf->pfminfo.subsuper_set = sf->pfminfo.panose_set = + sf->pfminfo.hheadset = sf->pfminfo.vheadset = true; + } + for ( tv = f->u2.tvals; tv!=NULL; tv=tv->next ) { + cur = &offsets[tv->index]; + if ( cur->offset==-1 ) + /* We don't support this guy, whatever he may be, but we did parse it */; + else if ( cur->cnt==1 ) { + if ( cur->size==4 ) + *((uint32 *) (((uint8 *) sf) + cur->offset)) = tv->value; + else if ( cur->size==2 ) + *((uint16 *) (((uint8 *) sf) + cur->offset)) = tv->value; + else + *((uint8 *) (((uint8 *) sf) + cur->offset)) = tv->value; + if ( strcmp(cur->name,"Ascender")==0 ) + sf->pfminfo.hheadascent_add = false; + else if ( strcmp(cur->name,"Descender")==0 ) + sf->pfminfo.hheaddescent_add = false; + else if ( strcmp(cur->name,"winAscent")==0 ) + sf->pfminfo.winascent_add = false; + else if ( strcmp(cur->name,"winDescent")==0 ) + sf->pfminfo.windescent_add = false; + else if ( strcmp(cur->name,"TypoAscender")==0 ) + sf->pfminfo.typoascent_add = false; + else if ( strcmp(cur->name,"TypoDescender")==0 ) + sf->pfminfo.typodescent_add = false; + } else if ( cur->cnt==10 && cur->size==1 ) { + for ( i=0; i<10; ++i ) + (((uint8 *) sf) + cur->offset)[i] = tv->panose_vals[i]; + } + } +} + +static void fea_GDefGlyphClasses(SplineFont *sf, struct feat_item *f) { + int i, ch; + char *pt, *start; + SplineChar *sc; + + for ( i=0; i<4; ++i ) if ( f->u1.gdef_classes[i]!=NULL ) { + for ( pt=f->u1.gdef_classes[i]; ; ) { + while ( *pt==' ' ) ++pt; + if ( *pt=='\0' ) + break; + for ( start = pt; *pt!=' ' && *pt!='\0'; ++pt ); + ch = *pt; *pt = '\0'; + sc = SFGetChar(sf,-1,start); + *pt = ch; + if ( sc!=NULL ) + sc->glyph_class = i+1; + } + } +} + +static void fea_GDefLigCarets(SplineFont *sf, struct feat_item *f) { + int i, ch; + char *pt, *start; + SplineChar *sc; + PST *pst, *prev, *next; + + for ( pt=f->u1.class; ; ) { + while ( *pt==' ' ) ++pt; + if ( *pt=='\0' ) + break; + for ( start = pt; *pt!=' ' && *pt!='\0'; ++pt ); + ch = *pt; *pt = '\0'; + sc = SFGetChar(sf,-1,start); + *pt = ch; + if ( sc!=NULL ) { + for ( prev=NULL, pst=sc->possub; pst!=NULL; pst=next ) { + next = pst->next; + if ( pst->type!=pst_lcaret ) + prev = pst; + else { + if ( prev==NULL ) + sc->possub = next; + else + prev->next = next; + pst->next = NULL; + PSTFree(pst); + } + } + for ( i=0; f->u2.lcaret[i]!=0; ++i ); + pst = chunkalloc(sizeof(PST)); + pst->next = sc->possub; + sc->possub = pst; + pst->type = pst_lcaret; + pst->u.lcaret.cnt = i; + pst->u.lcaret.carets = f->u2.lcaret; + f->u2.lcaret = NULL; + } + } +} + +static struct feat_item *fea_ApplyFeatureList(struct parseState *tok, + struct feat_item *feat_data) { + int lookup_flags = 0; + uint32 feature_tag = feat_data->u1.tag; + struct scriptlanglist *sl = feat_data->u2.sl; + struct feat_item *f, *start; + OTLookup *otl; + int saw_script = false; + enum otlookup_type ltype; + + feat_data->u2.sl = NULL; + + for ( f=feat_data->next; f!=NULL && f->type!=ft_feat_end ; ) { + if ( f->ticked ) { + f = f->next; + continue; + } + switch ( f->type ) { + case ft_lookupflags: + lookup_flags = f->u2.lookupflags; + f = f->next; + continue; + case ft_lookup_ref: + otl = fea_ApplyLookupList(tok,f,lookup_flags); + fea_AttachFeatureToLookup(otl,feature_tag,sl); + f = f->next; + continue; + case ft_lookup_start: + start = f; + start->lookup_next = f->next; + f = fea_SetLookupLink(start->next,ot_undef); + if ( f!=NULL && f->type == ft_lookup_end ) + f = f->next; + otl = fea_ApplyLookupList(tok,start,lookup_flags); + fea_AttachFeatureToLookup(otl,feature_tag,sl); + continue; + case ft_script: + ScriptLangListFree(sl); + sl = chunkalloc(sizeof(struct scriptlanglist)); + sl->script = f->u1.tag; + sl->lang_cnt = 1; + sl->langs[0] = DEFAULT_LANG; + saw_script = true; + f = f->next; + continue; + case ft_lang: + if ( !saw_script ) { + ScriptLangListFree(sl); + sl = chunkalloc(sizeof(struct scriptlanglist)); + sl->script = CHR('l','a','t','n'); + } + sl->langs[0] = f->u1.tag; + sl->lang_cnt = 1; + if ( !f->u2.exclude_dflt ) { + if ( sl->langs[0]!=DEFAULT_LANG ) { + sl->langs[1] = DEFAULT_LANG; + sl->lang_cnt = 2; + } + } + f = f->next; + continue; + case ft_langsys: + ScriptLangListFree(sl); + saw_script = false; + sl = f->u2.sl; + f->u2.sl = NULL; + f = f->next; + continue; + case ft_sizeparams: + if ( f->u1.params!=NULL ) { + tok->sf->design_size = f->u1.params[0]; + tok->sf->fontstyle_id = f->u1.params[1]; + tok->sf->design_range_bottom = f->u1.params[2]; + tok->sf->design_range_top = f->u1.params[3]; + } + OtfNameListFree(tok->sf->fontstyle_name); + tok->sf->fontstyle_name = fea_NameID2OTFName(f->u2.names); + f = f->next; + continue; + case ft_subtable: + f = f->next; + continue; + case ft_pst: + case ft_pstclass: + case ft_ap: + case ft_fpst: + if ( f->type==ft_ap && f->u2.ap->type==at_mark ) { + struct feat_item *n, *a; + /* skip over the marks */ + for ( n=f; n!=NULL && n->type == ft_ap && n->u2.ap->type==at_mark; n=n->next ); + /* find the next thing which can use those marks (might not be anything) */ + for ( a=n; a!=NULL; a=a->next ) { + if ( a->ticked ) + continue; + if ( fea_FeatItemEndsLookup(a->type) || + a->type==ft_subtable || a->type==ft_ap ) + break; + } + if ( a==NULL || fea_FeatItemEndsLookup(a->type) || a->type==ft_subtable || + (a->type==ft_ap && a->u2.ap->type == at_mark )) { + /* There's nothing else that can use these marks so we are */ + /* done with them. Skip over all of them */ + f = n; + continue; + } + ltype = fea_LookupTypeFromItem(a); + } else + ltype = fea_LookupTypeFromItem(f); + start = f; + f = fea_SetLookupLink(start,ltype); + otl = fea_ApplyLookupList(tok,start,lookup_flags); + fea_AttachFeatureToLookup(otl,feature_tag,sl); + continue; + default: + IError("Unexpected feature item in feature definition %d", f->type ); + f = f->next; + } + } + if ( f!=NULL && f->type == ft_feat_end ) + f = f->next; +return( f ); +} + +static void fea_ApplyFile(struct parseState *tok, struct feat_item *item) { + struct feat_item *f, *start; + + for ( f=item; f!=NULL ; ) { + switch ( f->type ) { + case ft_lookup_start: + start = f; + start->lookup_next = f->next; + f = fea_SetLookupLink(start->next,ot_undef); + if ( f!=NULL && f->type == ft_lookup_end ) + f = f->next; + fea_ApplyLookupList(tok,start,0); + continue; + case ft_feat_start: + f = fea_ApplyFeatureList(tok,f); + continue; + case ft_table: + /* I store things all mushed together, so this tag is useless to me*/ + /* ignore it. The stuff inside the table matters though... */ + f = f->next; + continue; + case ft_names: + fea_NameID2NameTable(tok->sf,f->u2.names); + f = f->next; + continue; + case ft_tablekeys: + fea_TableByKeywords(tok->sf,f); + f = f->next; + continue; + case ft_gdefclasses: + fea_GDefGlyphClasses(tok->sf,f); + f = f->next; + continue; + case ft_lcaret: + fea_GDefLigCarets(tok->sf,f); + f = f->next; + continue; + default: + IError("Unexpected feature item in feature file %d", f->type ); + f = f->next; + } + } +} + +static struct feat_item *fea_reverseList(struct feat_item *f) { + struct feat_item *n = NULL, *p = NULL; + + p = NULL; + while ( f!=NULL ) { + n = f->next; + f->next = p; + p = f; + f = n; + } +return( p ); +} + +static void fea_NameLookups(struct parseState *tok) { + SplineFont *sf = tok->sf; + OTLookup *gpos_last=NULL, *gsub_last=NULL, *otl, *otlnext; + int gp_cnt=0, gs_cnt=0, acnt; + AnchorClass *ac, *acnext, *an; + + for ( otl = sf->gpos_lookups; otl!=NULL; otl=otl->next ) { + otl->lookup_index = gp_cnt++; + gpos_last = otl; + } + for ( otl = sf->gsub_lookups; otl!=NULL; otl=otl->next ) { + otl->lookup_index = gs_cnt++; + gsub_last = otl; + } + + for ( otl = tok->created; otl!=NULL; otl=otlnext ) { + otlnext = otl->next; + otl->next = NULL; + if ( otl->lookup_name!=NULL && SFFindLookup(sf,otl->lookup_name)!=NULL ) { + int cnt=0; + char *namebuf = galloc(strlen( otl->lookup_name )+8 ); + /* Name already in use, modify it */ + do { + sprintf(namebuf,"%s-%d", otl->lookup_name, cnt++ ); + } while ( SFFindLookup(sf,namebuf)!=NULL ); + free(otl->lookup_name); + otl->lookup_name = namebuf; + } + if ( otl->lookup_type < gpos_start ) { + if ( gsub_last==NULL ) + sf->gsub_lookups = otl; + else + gsub_last->next = otl; + gsub_last = otl; + otl->lookup_index = gs_cnt++; + } else { + if ( gpos_last==NULL ) + sf->gpos_lookups = otl; + else + gpos_last->next = otl; + gpos_last = otl; + otl->lookup_index = gp_cnt++; + } + NameOTLookup(otl,sf); /* But only if it has no name */ + } + + /* Now name and attach any unnamed anchor classes (order here doesn't matter) */ + acnt = 0; + for ( ac=tok->accreated; ac!=NULL; ac=acnext ) { + acnext = ac->next; + if ( ac->name==NULL ) { + char buf[50]; + do { + snprintf(buf,sizeof(buf),_("Anchor-%d"), acnt++ ); + for ( an=sf->anchor; an!=NULL && strcmp(an->name,buf)!=0; an=an->next ); + } while ( an!=NULL ); + ac->name = copy(buf); + } + ac->next = sf->anchor; + sf->anchor = ac; + } + + sf->changed = true; + FVSetTitles(sf); + FVRefreshAll(sf); +} + +void SFApplyFeatureFile(SplineFont *sf,FILE *file,char *filename) { + struct parseState tok; + struct glyphclasses *gc, *gcnext; + + memset(&tok,0,sizeof(tok)); + tok.line[0] = 1; + tok.filename[0] = filename; + tok.inlist[0] = file; + tok.base = 10; + if ( sf->cidmaster ) sf = sf->cidmaster; + tok.sf = sf; + + fea_ParseFeatureFile(&tok); + if ( tok.err_count==0 ) { + tok.sofar = fea_reverseList(tok.sofar); + fea_ApplyFile(&tok, tok.sofar); + fea_NameLookups(&tok); + } else + ff_post_error("Not applied","There were errors when parsing the feature file and the features have not been applied"); + fea_featitemFree(tok.sofar); + ScriptLangListFree(tok.def_langsyses); + for ( gc = tok.classes; gc!=NULL; gc=gcnext ) { + gcnext = gc->next; + free(gc->classname); free(gc->glyphs); + chunkfree(gc,sizeof(struct glyphclasses)); + } +} + +void SFApplyFeatureFilename(SplineFont *sf,char *filename) { + FILE *in = fopen(filename,"r"); + + if ( in==NULL ) { + ff_post_error(_("Cannot open file"),_("Cannot open feature file %.120s"), filename ); +return; + } + SFApplyFeatureFile(sf,in,filename); + fclose(in); +} diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/fontforgevw.h b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/fontforgevw.h new file mode 100644 index 00000000000..2d3fa3207b8 --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/fontforgevw.h @@ -0,0 +1,34 @@ +/* Copyright (C) 2007,2008 by George Williams */ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef _FONTFORGEVW_H_ +#define _FONTFORGEVW_H_ + +#include "pfaedit.h" +#include "gimage.h" +#include "baseviews.h" + +#endif diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/fontviewbase.c b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/fontviewbase.c new file mode 100644 index 00000000000..7f2a34f1f05 --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/fontviewbase.c @@ -0,0 +1,286 @@ +/* Copyright (C) 2000-2008 by George Williams */ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "pfaedit.h" +#include "baseviews.h" +#include "psfont.h" +#include +#include +#include +#include +#include +#include +#include +#include + +static FontViewBase *fv_list=NULL; + +extern int onlycopydisplayed; +float joinsnap=0; + + +/* FV Interface */ + +static FontViewBase *_FontViewBaseCreate(SplineFont *sf) { + FontViewBase *fv = gcalloc(1,sizeof(FontViewBase)); + int i; + + fv->nextsame = sf->fv; + fv->active_layer = ly_fore; + sf->fv = fv; + if ( sf->mm!=NULL ) { + sf->mm->normal->fv = fv; + for ( i = 0; imm->instance_count; ++i ) + sf->mm->instances[i]->fv = fv; + } + if ( sf->subfontcnt==0 ) { + fv->sf = sf; + if ( fv->nextsame!=NULL ) { + fv->map = EncMapCopy(fv->nextsame->map); + fv->normal = fv->nextsame->normal==NULL ? NULL : EncMapCopy(fv->nextsame->normal); + } else if ( sf->compacted ) { + fv->normal = sf->map; + fv->map = CompactEncMap(EncMapCopy(sf->map),sf); + } else { + fv->map = sf->map; + fv->normal = NULL; + } + } else { + fv->cidmaster = sf; + for ( i=0; isubfontcnt; ++i ) + sf->subfonts[i]->fv = fv; + for ( i=0; isubfontcnt; ++i ) /* Search for a subfont that contains more than ".notdef" (most significant in .gai fonts) */ + if ( sf->subfonts[i]->glyphcnt>1 ) { + fv->sf = sf->subfonts[i]; + break; + } + if ( fv->sf==NULL ) + fv->sf = sf->subfonts[0]; + sf = fv->sf; + if ( fv->nextsame==NULL ) EncMapFree(sf->map); + fv->map = EncMap1to1(sf->glyphcnt); + } + fv->selected = gcalloc(fv->map->enccount,sizeof(char)); + +#ifndef _NO_PYTHON + PyFF_InitFontHook(fv); +#endif +return( fv ); +} + +static FontViewBase *FontViewBase_Create(SplineFont *sf,int hide) { + FontViewBase *fv = _FontViewBaseCreate(sf); + (void)hide; +return( fv ); +} + +static FontViewBase *FontViewBase_Append(FontViewBase *fv) { + /* Normally fontviews get added to the fv list when their windows are */ + /* created. but we don't create any windows here, so... */ + FontViewBase *test; + + if ( fv_list==NULL ) fv_list = fv; + else { + for ( test = fv_list; test->next!=NULL; test=test->next ); + test->next = fv; + } +return( fv ); +} + +static void FontViewBase_Free(FontViewBase *fv) { + int i; + FontViewBase *prev; + + if ( fv->nextsame==NULL && fv->sf->fv==fv ) { + EncMapFree(fv->map); + SplineFontFree(fv->cidmaster?fv->cidmaster:fv->sf); + } else { + EncMapFree(fv->map); + if ( fv->sf->fv==fv ) { + if ( fv->cidmaster==NULL ) + fv->sf->fv = fv->nextsame; + else { + fv->cidmaster->fv = fv->nextsame; + for ( i=0; icidmaster->subfontcnt; ++i ) + fv->cidmaster->subfonts[i]->fv = fv->nextsame; + } + } else { + for ( prev = fv->sf->fv; prev->nextsame!=fv; prev=prev->nextsame ); + prev->nextsame = fv->nextsame; + } + } +#ifndef _NO_FFSCRIPT + DictionaryFree(fv->fontvars); + free(fv->fontvars); +#endif + free(fv->selected); +#ifndef _NO_PYTHON + PyFF_FreeFV(fv); +#endif + free(fv); +} + +static int FontViewBaseWinInfo(FontViewBase *fv, int *cc, int *rc) { + (void)fv; + *cc = 16; *rc = 4; +return( -1 ); +} + +static void FontViewBaseSetTitle(FontViewBase *foo) { (void)foo; } +static void FontViewBaseSetTitles(SplineFont *foo) { (void)foo; } +static void FontViewBaseRefreshAll(SplineFont *foo) { (void)foo; } +static void FontViewBaseReformatOne(FontViewBase *foo) { (void)foo; } +static void FontViewBaseReformatAll(SplineFont *foo) { (void)foo; } +static void FontViewBaseLayerChanged(FontViewBase *foo) {(void)foo; } +static void FV_ToggleCharChanged(SplineChar *foo) {(void)foo; } +static FontViewBase *FVAny(void) { return fv_list; } +static int FontIsActive(SplineFont *sf) { + FontViewBase *fv; + + for ( fv=fv_list; fv!=NULL; fv=fv->next ) + if ( fv->sf == sf ) +return( true ); + +return( false ); +} + +static SplineFont *FontOfFilename(const char *filename) { + char buffer[1025]; + FontViewBase *fv; + + GFileGetAbsoluteName((char *) filename,buffer,sizeof(buffer)); + for ( fv=fv_list; fv!=NULL ; fv=fv->next ) { + if ( fv->sf->filename!=NULL && strcmp(fv->sf->filename,buffer)==0 ) +return( fv->sf ); + else if ( fv->sf->origname!=NULL && strcmp(fv->sf->origname,buffer)==0 ) +return( fv->sf ); + } +return( NULL ); +} + +static void FVExtraEncSlots(FontViewBase *fv, int encmax) { + (void)fv; + (void)encmax; +} + +static void FontViewBase_Close(FontViewBase *fv) { + if ( fv_list==fv ) + fv_list = fv->next; + else { + FontViewBase *n; + for ( n=fv_list; n->next!=fv; n=n->next ); + n->next = fv->next; + } + FontViewFree(fv); +} + +static void FVB_ChangeDisplayBitmap(FontViewBase *fv, BDFFont *bdf) { + fv->active_bitmap = bdf; +} + +static void FVB_ShowFilled(FontViewBase *fv) { + fv->active_bitmap = NULL; +} + +static void FVB_ReattachCVs(SplineFont *old, SplineFont *new) { + (void)old; + (void)new; +} + +static void FVB_DeselectAll(FontViewBase *fv) { + memset(fv->selected,0,fv->map->encmax); +} + +static void FVB_DisplayChar(FontViewBase *fv,int gid) { + (void)fv; + (void)gid; +} + +static int SFB_CloseAllInstrs(SplineFont *sf) { + (void)sf; +return( true ); +} + +struct fv_interface noui_fv = { + FontViewBase_Create, + _FontViewBaseCreate, + FontViewBase_Close, + FontViewBase_Free, + FontViewBaseSetTitle, + FontViewBaseSetTitles, + FontViewBaseRefreshAll, + FontViewBaseReformatOne, + FontViewBaseReformatAll, + FontViewBaseLayerChanged, + FV_ToggleCharChanged, + FontViewBaseWinInfo, + FontIsActive, + FVAny, + FontViewBase_Append, + FontOfFilename, + FVExtraEncSlots, + FVExtraEncSlots, + FVB_ChangeDisplayBitmap, + FVB_ShowFilled, + FVB_ReattachCVs, + FVB_DeselectAll, + FVB_DisplayChar, + FVB_DisplayChar, + FVB_DisplayChar, + SFB_CloseAllInstrs +}; + +struct fv_interface *fv_interface = &noui_fv; + + +/******************************************************************************/ +static int NoGlyphs(struct metricsview *mv) { + (void)mv; +return( 0 ); +} + +static SplineChar *Nothing(struct metricsview *mv, int i) { + (void)mv; + (void)i; +return( NULL ); +} + +static void NoReKern(struct splinefont *sf) { + (void)sf; +} + +static void NoCloseAll(struct splinefont *sf) { + (void)sf; +} + +struct mv_interface noui_mv = { + NoGlyphs, + Nothing, + NoReKern, + NoCloseAll +}; + +struct mv_interface *mv_interface = &noui_mv; diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/fvcomposit.c b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/fvcomposit.c new file mode 100644 index 00000000000..53f6ee81aa7 --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/fvcomposit.c @@ -0,0 +1,160 @@ +/* Copyright (C) 2000-2008 by George Williams */ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "fontforgevw.h" +#include +#include +#include +#include + +int accent_offset = 6; +int GraveAcuteCenterBottom = 1; +int PreferSpacingAccents = true; +int CharCenterHighest = 1; + +#define BottomAccent 0x300 +#define TopAccent 0x345 + +/* for accents between 0x300 and 345 these are some synonyms */ +/* type1 wants accented chars built with accents in the 0x2c? range */ +/* except for grave and acute which live in iso8859-1 range */ +/* this table is ordered on a best try basis */ +static const unichar_t accents[][4] = { + { 0x2cb, 0x300, 0x60 }, /* grave */ + { 0x2ca, 0x301, 0xb4 }, /* acute */ + { 0x2c6, 0x302, 0x5e }, /* circumflex */ + { 0x2dc, 0x303, 0x7e }, /* tilde */ + { 0x2c9, 0x304, 0xaf }, /* macron */ + { 0x305, 0xaf }, /* overline, (macron is suggested as a syn, but it's not quite right) */ + { 0x2d8, 0x306 }, /* breve */ + { 0x2d9, 0x307, '.' }, /* dot above */ + { 0xa8, 0x308 }, /* diaeresis */ + { 0x2c0 }, /* hook above */ + { 0x2da, 0xb0 }, /* ring above */ + { 0x2dd }, /* real acute */ + { 0x2c7 }, /* caron */ + { 0x2c8, 0x384, 0x30d, '\'' }, /* vertical line, tonos */ + { 0x30e, '"' }, /* real vertical line */ + { 0 }, /* real grave */ + { 0 }, /* cand... */ /* 310 */ + { 0 }, /* inverted breve */ + { 0x2bb }, /* turned comma */ + { 0x2bc, 0x313, ',' }, /* comma above */ + { 0x2bd }, /* reversed comma */ + { 0x2bc, 0x315, ',' }, /* comma above right */ + { 0x316, 0x60, 0x2cb }, /* grave below */ + { 0x317, 0xb4, 0x2ca }, /* acute below */ + { 0 }, /* left tack */ + { 0 }, /* right tack */ + { 0 }, /* left angle */ + { 0 }, /* horn, sometimes comma but only if nothing better */ + { 0 }, /* half ring */ + { 0x2d4 }, /* up tack */ + { 0x2d5 }, /* down tack */ + { 0x2d6, 0x31f, '+' }, /* plus below */ + { 0x2d7, 0x320, '-' }, /* minus below */ /* 320 */ + { 0x2b2 }, /* hook */ + { 0 }, /* back hook */ + { 0x323, 0x2d9, '.' }, /* dot below */ + { 0x324, 0xa8 }, /* diaeresis below */ + { 0x325, 0x2da, 0xb0 }, /* ring below */ + { 0x326, 0x2bc, ',' }, /* comma below */ + { 0xb8 }, /* cedilla */ + { 0x2db }, /* ogonek */ /* 0x328 */ + { 0x329, 0x2c8, 0x384, '\'' }, /* vertical line below */ + { 0 }, /* bridge below */ + { 0 }, /* real arch below */ + { 0x32c, 0x2c7 }, /* caron below */ + { 0x32d, 0x2c6, 0x52 }, /* circumflex below */ + { 0x32e, 0x2d8 }, /* breve below */ + { 0 }, /* inverted breve below */ + { 0x330, 0x2dc, 0x7e }, /* tilde below */ /* 0x330 */ + { 0x331, 0xaf, 0x2c9 }, /* macron below */ + { 0x332, '_' }, /* low line */ + { 0 }, /* real low line */ + { 0x334, 0x2dc, 0x7e }, /* tilde overstrike */ + { 0x335, '-' }, /* line overstrike */ + { 0x336, '_' }, /* long line overstrike */ + { 0x337, '/' }, /* short solidus overstrike */ + { 0x338, '/' }, /* long solidus overstrike */ /* 0x338 */ + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0x340, 0x60, 0x2cb }, /* tone mark, left of circumflex */ /* 0x340 */ + { 0x341, 0xb4, 0x2ca }, /* tone mark, right of circumflex */ + { 0x342, 0x2dc, 0x7e }, /* perispomeni (tilde) */ + { 0x343, 0x2bc, ',' }, /* koronis */ + { 0 }, /* dialytika tonos (two accents) */ + { 0x37a }, /* ypogegrammeni */ + { 0xffff } +}; + +int CanonicalCombiner(int uni) { + /* Translate spacing accents to combiners */ + int j,k; + + /* The above table will use these occasionally, but we don't want to */ + /* translate them. They aren't accents */ + if ( uni==',' || uni=='\'' || uni=='"' || uni=='~' || uni=='^' || uni=='-' || + uni=='+' || uni=='.' ) +return( uni ); + + for ( j=0; accents[j][0]!=0xffff; ++j ) { + for ( k=0; k<4 && accents[j][k]!=0; ++k ) { + if ( uni==(int)accents[j][k] ) { + uni = 0x300+j; + break; + } + } + if ( uni>=0x300 && uni<0x370 ) + break; + } +return( uni ); +} + + + +int isaccent(int uni) { + + if ( uni<0x10000 && iscombining(uni) ) +return( true ); + if ( uni>=0x2b0 && uni<0x2ff ) +return( true ); + if ( uni=='.' || uni==',' || uni==0x60 || uni==0x5e || uni==0x7e || + uni==0xa8 || uni==0xaf || uni==0xb8 || uni==0x384 || uni==0x385 || + (uni>=0x1fbd && uni<=0x1fc1) || + (uni>=0x1fcd && uni<=0x1fcf) || + (uni>=0x1fed && uni<=0x1fef) || + (uni>=0x1ffd && uni<=0x1fff) ) +return( true ); + +return( false ); +} + diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/fvfonts.c b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/fvfonts.c new file mode 100644 index 00000000000..db709cea56e --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/fvfonts.c @@ -0,0 +1,572 @@ +/* Copyright (C) 2000-2008 by George Williams */ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "fontforgevw.h" +#include "ustring.h" +#include "utype.h" +#include "gfile.h" +#include "chardata.h" + +RefChar *RefCharsCopy(RefChar *ref) { + RefChar *rhead=NULL, *last=NULL, *cur; + + while ( ref!=NULL ) { + cur = RefCharCreate(); +#ifdef FONTFORGE_CONFIG_TYPE3 + { struct reflayer *layers = cur->layers; int layer; + layers = grealloc(layers,ref->layer_cnt*sizeof(struct reflayer)); + memcpy(layers,ref->layers,ref->layer_cnt*sizeof(struct reflayer)); + *cur = *ref; + cur->layers = layers; + for ( layer=0; layerlayer_cnt; ++layer ) { + cur->layers[layer].splines = NULL; + cur->layers[layer].images = NULL; + } + } +#else + {struct reflayer *rl = cur->layers; + *cur = *ref; + cur->layers = rl; + } +#endif + if ( cur->sc!=NULL ) + cur->orig_pos = cur->sc->orig_pos; + cur->next = NULL; + if ( rhead==NULL ) + rhead = cur; + else + last->next = cur; + last = cur; + ref = ref->next; + } +return( rhead ); +} + +static OTLookup *MCConvertLookup(struct sfmergecontext *mc,OTLookup *otl) { + int l; + OTLookup *newotl; + + if ( mc==NULL || mc->sf_from==mc->sf_to ) +return( otl ); /* No translation needed */ + + for ( l=0; llcnt; ++l ) { + if ( mc->lks[l].from == otl ) + break; + } + if ( l==mc->lcnt ) +return( NULL ); + if ( mc->lks[l].to!=NULL ) +return( mc->lks[l].to ); + + mc->lks[l].to = newotl = chunkalloc(sizeof(struct lookup_subtable)); + newotl->lookup_name = strconcat(mc->prefix,otl->lookup_name); + newotl->lookup_type = otl->lookup_type; + newotl->lookup_flags = otl->lookup_flags; + newotl->features = FeatureListCopy(otl->features); + newotl->store_in_afm = otl->store_in_afm; +return( newotl ); +} + +struct lookup_subtable *MCConvertSubtable(struct sfmergecontext *mc,struct lookup_subtable *sub) { + int s; + struct lookup_subtable *newsub; + + if ( mc==NULL || mc->sf_from==mc->sf_to ) +return( sub ); /* No translation needed */ + if ( mc->prefix==NULL ) { + int lcnt, scnt; + OTLookup *otl; + struct lookup_subtable *subs; + int isgpos, doit; + char *temp; + + /* Not initialized */ + if ( mc->sf_from->cidmaster ) mc->sf_from = mc->sf_from->cidmaster; + else if ( mc->sf_from->mm!=NULL ) mc->sf_from = mc->sf_from->mm->normal; + if ( mc->sf_to->cidmaster ) mc->sf_to = mc->sf_to->cidmaster; + else if ( mc->sf_to->mm!=NULL ) mc->sf_to = mc->sf_to->mm->normal; + if ( mc->sf_from == mc->sf_to ) +return( sub ); + mc->prefix = strconcat(mc->sf_from->fontname,"-"); + for ( doit = 0; doit<2; ++doit ) { + lcnt = scnt = 0; + for ( isgpos=0; isgpos<2; ++isgpos ) { + for ( otl = isgpos ? mc->sf_from->gpos_lookups : mc->sf_from->gsub_lookups; otl!=NULL; otl=otl->next ) { + if ( doit ) { + mc->lks[lcnt].from = otl; + temp = strconcat(mc->prefix,otl->lookup_name); + mc->lks[lcnt].to = SFFindLookup(mc->sf_to,temp); + free(temp); + mc->lks[lcnt].old = mc->lks[lcnt].to!=NULL; + } + ++lcnt; + for ( subs=otl->subtables; subs!=NULL; subs=subs->next ) { + if ( doit ) { + mc->subs[scnt].from = subs; + temp = strconcat(mc->prefix,subs->subtable_name); + mc->subs[scnt].to = SFFindLookupSubtable(mc->sf_to,temp); + free(temp); + mc->subs[scnt].old = mc->subs[scnt].to!=NULL; + } + ++scnt; + } + } + } + if ( !doit ) { + mc->lcnt = lcnt; mc->scnt = scnt; + mc->lks = gcalloc(lcnt,sizeof(struct lookup_cvt)); + mc->subs = gcalloc(scnt,sizeof(struct sub_cvt)); + } + } + } + + for ( s=0; sscnt; ++s ) { + if ( mc->subs[s].from == sub ) + break; + } + if ( s==mc->scnt ) +return( NULL ); + if ( mc->subs[s].to!=NULL ) +return( mc->subs[s].to ); + + mc->subs[s].to = newsub = chunkalloc(sizeof(struct lookup_subtable)); + newsub->subtable_name = strconcat(mc->prefix,sub->subtable_name); + newsub->lookup = MCConvertLookup(mc,sub->lookup); + newsub->anchor_classes = sub->anchor_classes; + newsub->per_glyph_pst_or_kern = sub->per_glyph_pst_or_kern; +return( newsub ); +} + +PST *PSTCopy(PST *base,SplineChar *sc,struct sfmergecontext *mc) { + PST *head=NULL, *last=NULL, *cur; + + for ( ; base!=NULL; base = base->next ) { + cur = chunkalloc(sizeof(PST)); + *cur = *base; + cur->subtable = MCConvertSubtable(mc,base->subtable); + if ( cur->type==pst_ligature ) { + cur->u.lig.components = copy(cur->u.lig.components); + cur->u.lig.lig = sc; + } else if ( cur->type==pst_pair ) { + cur->u.pair.paired = copy(cur->u.pair.paired); + cur->u.pair.vr = chunkalloc(sizeof( struct vr [2])); + memcpy(cur->u.pair.vr,base->u.pair.vr,sizeof(struct vr [2])); + } else if ( cur->type==pst_lcaret ) { + cur->u.lcaret.carets = galloc(cur->u.lcaret.cnt*sizeof(uint16)); + memcpy(cur->u.lcaret.carets,base->u.lcaret.carets,cur->u.lcaret.cnt*sizeof(uint16)); + } else if ( cur->type==pst_substitution || cur->type==pst_multiple || cur->type==pst_alternate ) + cur->u.subs.variant = copy(cur->u.subs.variant); + if ( head==NULL ) + head = cur; + else + last->next = cur; + last = cur; + } +return( head ); +} + +static AnchorPoint *AnchorPointsDuplicate(AnchorPoint *base,SplineChar *sc) { + AnchorPoint *head=NULL, *last=NULL, *cur; + AnchorClass *ac; + + for ( ; base!=NULL; base = base->next ) { + cur = chunkalloc(sizeof(AnchorPoint)); + *cur = *base; + cur->next = NULL; + for ( ac=sc->parent->anchor; ac!=NULL; ac=ac->next ) + if ( strcmp(ac->name,base->anchor->name)==0 ) + break; + cur->anchor = ac; + if ( ac==NULL ) { + LogError( "No matching AnchorClass for %s", base->anchor->name); + chunkfree(cur,sizeof(AnchorPoint)); + } else { + if ( head==NULL ) + head = cur; + else + last->next = cur; + last = cur; + } + } +return( head ); +} + +static struct altuni *AltUniCopy(struct altuni *altuni,SplineFont *noconflicts) { + struct altuni *head=NULL, *last=NULL, *cur; + + while ( altuni!=NULL ) { + if ( noconflicts==NULL || SFGetChar(noconflicts,altuni->unienc,NULL)==NULL ) { + cur = chunkalloc(sizeof(struct altuni)); + cur->unienc = altuni->unienc; + cur->vs = altuni->vs; + cur->fid = altuni->fid; + if ( head==NULL ) + head = cur; + else + last->next = cur; + last = cur; + } + altuni = altuni->next; + } +return( head ); +} + +SplineChar *SplineCharCopy(SplineChar *sc,SplineFont *into,struct sfmergecontext *mc) { + SplineChar *nsc; + Layer *layers; + int layer; + if (into==NULL) { + nsc = SplineCharCreate(2); + } else { + nsc = SFSplineCharCreate(into); + } + layers = nsc->layers; + *nsc = *sc; /* We copy the layers just below */ + if (into==NULL || sc->layer_cnt!=into->layer_cnt ) + layers = grealloc(layers,sc->layer_cnt*sizeof(Layer)); + memcpy(layers,sc->layers,sc->layer_cnt*sizeof(Layer)); + nsc->layers = layers; + for ( layer = ly_back; layerlayer_cnt; ++layer ) { + layers[layer].splines = SplinePointListCopy(layers[layer].splines); + layers[layer].refs = RefCharsCopy(layers[layer].refs); + layers[layer].images = ImageListCopy(layers[layer].images); + layers[layer].undoes = NULL; + layers[layer].redoes = NULL; + } + nsc->parent = into; + nsc->orig_pos = -2; + nsc->name = copy(sc->name); + nsc->hstem = StemInfoCopy(nsc->hstem); + nsc->vstem = StemInfoCopy(nsc->vstem); + nsc->anchor = AnchorPointsDuplicate(nsc->anchor,nsc); + nsc->views = NULL; + nsc->changed = true; + nsc->dependents = NULL; /* Fix up later when we know more */ + nsc->layers[ly_fore].undoes = nsc->layers[ly_back].undoes = NULL; + nsc->layers[ly_fore].redoes = nsc->layers[ly_back].redoes = NULL; + if ( nsc->ttf_instrs_len!=0 ) { + nsc->ttf_instrs = galloc(nsc->ttf_instrs_len); + memcpy(nsc->ttf_instrs,sc->ttf_instrs,nsc->ttf_instrs_len); + } + nsc->kerns = NULL; + nsc->possub = PSTCopy(nsc->possub,nsc,mc); + nsc->altuni = AltUniCopy(nsc->altuni,into); +return(nsc); +} + +static int _SFFindExistingSlot(SplineFont *sf, int unienc, const char *name ); + + +#define GN_HSIZE 257 + +struct glyphnamebucket { + SplineChar *sc; + struct glyphnamebucket *next; +}; + +struct glyphnamehash { + struct glyphnamebucket *table[GN_HSIZE]; +}; + +#ifndef __GNUC__ +# define __inline__ +#endif + +static __inline__ int hashname(const char *pt) { + int val = 0; + + while ( *pt ) { + val = (val<<3)|((val>>29)&0x7); + val ^= (unsigned char)(*pt-'!'); + pt++; + } + val ^= (val>>16); + val &= 0xffff; + val %= GN_HSIZE; +return( val ); +} + +static void _GlyphHashFree(SplineFont *sf) { + struct glyphnamebucket *test, *next; + int i; + + if ( sf->glyphnames==NULL ) +return; + for ( i=0; iglyphnames->table[i]; test!=NULL; test = next ) { + next = test->next; + chunkfree(test,sizeof(struct glyphnamebucket)); + } + } + free(sf->glyphnames); + sf->glyphnames = NULL; +} + +void GlyphHashFree(SplineFont *sf) { + _GlyphHashFree(sf); + if ( sf->cidmaster ) + _GlyphHashFree(sf->cidmaster); +} + +static void GlyphHashCreate(SplineFont *sf) { + int i, k, hash; + SplineFont *_sf; + struct glyphnamehash *gnh; + struct glyphnamebucket *new; + + if ( sf->glyphnames!=NULL ) +return; + sf->glyphnames = gnh = gcalloc(1,sizeof(*gnh)); + k = 0; + do { + _sf = ksubfontcnt ? sf->subfonts[k] : sf; + /* I walk backwards because there are some ttf files where multiple */ + /* glyphs get the same name. In the cases I've seen only one of these */ + /* has an encoding. That's the one we want. It will be earlier in the */ + /* font than the others. If we build the list backwards then it will */ + /* be the top name in the bucket, and will be the one we return */ + for ( i=_sf->glyphcnt-1; i>=0; --i ) if ( _sf->glyphs[i]!=NULL ) { + new = chunkalloc(sizeof(struct glyphnamebucket)); + new->sc = _sf->glyphs[i]; + hash = hashname(new->sc->name); + new->next = gnh->table[hash]; + gnh->table[hash] = new; + } + ++k; + } while ( ksubfontcnt ); +} + +void SFHashGlyph(SplineFont *sf,SplineChar *sc) { + /* sc just got added to the font. Put it in the lookup */ + int hash; + struct glyphnamebucket *new; + + if ( sf->glyphnames==NULL ) +return; /* No hash table, nothing to update */ + + new = chunkalloc(sizeof(struct glyphnamebucket)); + new->sc = sc; + hash = hashname(sc->name); + new->next = sf->glyphnames->table[hash]; + sf->glyphnames->table[hash] = new; +} + +SplineChar *SFHashName(SplineFont *sf,const char *name) { + struct glyphnamebucket *test; + + if ( sf->glyphnames==NULL ) + GlyphHashCreate(sf); + + for ( test=sf->glyphnames->table[hashname(name)]; test!=NULL; test = test->next ) + if ( strcmp(test->sc->name,name)==0 ) +return( test->sc ); + +return( NULL ); +} + +/* Find the position in the glyph list where this code point/name is found. */ +/* Returns -1 else on error */ +int SFFindGID(SplineFont *sf, int unienc, const char *name ) { + struct altuni *altuni; + int gid; + SplineChar *sc; + + if ( unienc!=-1 ) { + for ( gid=0; gidglyphcnt; ++gid ) if ( sf->glyphs[gid]!=NULL ) { + if ( sf->glyphs[gid]->unicodeenc == unienc ) +return( gid ); + for ( altuni = sf->glyphs[gid]->altuni; altuni!=NULL; altuni=altuni->next ) { + if ( altuni->unienc == unienc && altuni->vs==-1 && altuni->fid==0 ) +return( gid ); + } + } + } + if ( name!=NULL ) { + sc = SFHashName(sf,name); + if ( sc!=NULL ) +return( sc->orig_pos ); + } + +return ( -1 ); +} + +/* Find the position in the current encoding where this code point/name should*/ +/* be found. (or for unencoded glyphs where it is found). Returns -1 else */ +int SFFindSlot(SplineFont *sf, EncMap *map, int unienc, const char *name ) { + int index=-1, pos; + struct cidmap *cidmap; + + if ( sf->cidmaster!=NULL && !map->enc->is_compact && + (cidmap = FindCidMap(sf->cidmaster->cidregistry, + sf->cidmaster->ordering, + sf->cidmaster->supplement, + sf->cidmaster))!=NULL ) + index = NameUni2CID(cidmap,unienc,name); + if ( index!=-1 ) + /* All done */; + else if ( (map->enc->is_custom || map->enc->is_compact || + map->enc->is_original) && unienc!=-1 ) { + if ( uniencenccount && map->map[unienc]!=-1 && + sf->glyphs[map->map[unienc]]!=NULL && + sf->glyphs[map->map[unienc]]->unicodeenc==unienc ) + index = unienc; + else for ( index = map->enccount-1; index>=0; --index ) { + if ( (pos = map->map[index])!=-1 && sf->glyphs[pos]!=NULL && + sf->glyphs[pos]->unicodeenc==unienc ) + break; + } + } else if ( unienc!=-1 && + ((unienc<0x10000 && map->enc->is_unicodebmp) || + (unienc<0x110000 && map->enc->is_unicodefull))) { + index = unienc; + } else if ( unienc!=-1 ) { + index = EncFromUni(unienc,map->enc); + if ( index<0 || index>=map->enccount ) { + for ( index=map->enc->char_cnt; indexenccount; ++index ) + if ( (pos = map->map[index])!=-1 && sf->glyphs[pos]!=NULL && + sf->glyphs[pos]->unicodeenc==unienc ) + break; + if ( index>=map->enccount ) + index = -1; + } + } + if ( index==-1 && name!=NULL ) { + SplineChar *sc = SFHashName(sf,name); + if ( sc!=NULL ) index = map->backmap[sc->orig_pos]; + if ( index==-1 ) { + unienc = UniFromName(name,sf->uni_interp,map->enc); + if ( unienc!=-1 ) +return( SFFindSlot(sf,map,unienc,NULL)); + if ( map->enc->psnames!=NULL ) { + for ( index = map->enc->char_cnt-1; index>=0; --index ) + if ( map->enc->psnames[index]!=NULL && + strcmp(map->enc->psnames[index],name)==0 ) +return( index ); + } + } + } + +return( index ); +} + +int SFCIDFindCID(SplineFont *sf, int unienc, const char *name ) { + int j,ret; + struct cidmap *cidmap; + + if ( sf->cidmaster!=NULL || sf->subfontcnt!=0 ) { + if ( sf->cidmaster!=NULL ) + sf=sf->cidmaster; + cidmap = FindCidMap(sf->cidregistry,sf->ordering,sf->supplement,sf); + ret = NameUni2CID(cidmap,unienc,name); + if ( ret!=-1 ) +return( ret ); + } + + if ( sf->subfonts==NULL && sf->cidmaster==NULL ) +return( SFFindGID(sf,unienc,name)); + + if ( sf->cidmaster!=NULL ) + sf=sf->cidmaster; + for ( j=0; jsubfontcnt; ++j ) + if (( ret = SFFindGID(sf,unienc,name))!=-1 ) +return( ret ); + +return( -1 ); +} + +int SFHasCID(SplineFont *sf,int cid) { + int i; + /* What subfont (if any) contains this cid? */ + if ( sf->cidmaster!=NULL ) + sf=sf->cidmaster; + for ( i=0; isubfontcnt; ++i ) + if ( cidsubfonts[i]->glyphcnt && + SCWorthOutputting(sf->subfonts[i]->glyphs[cid]) ) +return( i ); + for ( i=0; isubfontcnt; ++i ) + if ( cidsubfonts[i]->glyphcnt && sf->subfonts[i]->glyphs[cid]!=NULL ) +return( i ); + +return( -1 ); +} + +SplineChar *SFGetChar(SplineFont *sf, int unienc, const char *name ) { + int ind; + int j; + + ind = SFCIDFindCID(sf,unienc,name); + if ( ind==-1 ) +return( NULL ); + + if ( sf->subfonts==NULL && sf->cidmaster==NULL ) +return( sf->glyphs[ind]); + + if ( sf->cidmaster!=NULL ) + sf=sf->cidmaster; + + j = SFHasCID(sf,ind); + if ( j==-1 ) +return( NULL ); + +return( sf->subfonts[j]->glyphs[ind] ); +} + +static int _SFFindExistingSlot(SplineFont *sf, int unienc, const char *name ) { + int gid = -1; + struct altuni *altuni; + + if ( unienc!=-1 ) { + for ( gid=sf->glyphcnt-1; gid>=0; --gid ) if ( sf->glyphs[gid]!=NULL ) { + if ( sf->glyphs[gid]->unicodeenc==unienc ) + break; + for ( altuni=sf->glyphs[gid]->altuni ; altuni!=NULL && + (altuni->unienc!=unienc || altuni->vs!=-1 || altuni->fid!=0); + altuni=altuni->next ); + if ( altuni!=NULL ) + break; + } + } + if ( gid==-1 && name!=NULL ) { + SplineChar *sc = SFHashName(sf,name); + if ( sc==NULL ) +return( -1 ); + gid = sc->orig_pos; + if ( gid<0 || gid>=sf->glyphcnt ) { + IError("Invalid glyph location when searching for %s", name ); +return( -1 ); + } + } +return( gid ); +} + +int SFFindExistingSlot(SplineFont *sf, int unienc, const char *name ) { + int gid = _SFFindExistingSlot(sf,unienc,name); + + if ( gid==-1 || !SCWorthOutputting(sf->glyphs[gid]) ) +return( -1 ); + +return( gid ); +} diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/libffstamp.h b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/libffstamp.h new file mode 100644 index 00000000000..b6b19bde1f0 --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/libffstamp.h @@ -0,0 +1,3 @@ +#define LibFF_ModTime 1226720169L /* Seconds since 1970 (standard unix time) */ +#define LibFF_ModTime_Str "03:36 GMT 15-Nov-2008" +#define LibFF_VersionDate 20081115 /* Year, month, day */ diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/libstamp.pre b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/libstamp.pre new file mode 100644 index 00000000000..4670c8b403d --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/libstamp.pre @@ -0,0 +1,103 @@ +#include "pfaedit.h" +#include "baseviews.h" +#include "libffstamp.h" +#include "uiinterface.h" + +struct library_version_configuration library_version_configuration = { + REPLACE_ME_WITH_MAJOR_VERSION, + REPLACE_ME_WITH_MINOR_VERSION, + LibFF_ModTime, + LibFF_ModTime_Str, + LibFF_VersionDate, + sizeof(struct library_version_configuration), + sizeof(struct splinefont), + sizeof(struct splinechar), + sizeof(struct fontviewbase), + sizeof(struct charviewbase), + sizeof(struct cvcontainer), + +#ifdef FONTFORGE_CONFIG_DEVICETABLES + 1, +#else + 0, +#endif + +#ifdef FONTFORGE_CONFIG_TYPE3 + 1, +#else + 0, +#endif + +#ifdef _NO_PYTHON + 0, +#else + 1, +#endif + 0xff /* Not currently defined */ +}; + +/* Returns 0 on success, -1 for a fatal error, 1 for a dangerous condition */ +int check_library_version(Library_Version_Configuration *exe_lib_version, int fatal, int quiet) { + if ( exe_lib_version->major > library_version_configuration.major || + ( exe_lib_version->major == library_version_configuration.major && + exe_lib_version->minor > library_version_configuration.minor ) || + exe_lib_version->sizeof_me != library_version_configuration.sizeof_me || + exe_lib_version->sizeof_splinefont != library_version_configuration.sizeof_splinefont || + exe_lib_version->sizeof_splinechar != library_version_configuration.sizeof_splinechar || + exe_lib_version->sizeof_fvbase != library_version_configuration.sizeof_fvbase || + exe_lib_version->sizeof_cvbase != library_version_configuration.sizeof_cvbase || + exe_lib_version->sizeof_cvcontainer != library_version_configuration.sizeof_cvcontainer || + exe_lib_version->config_had_devicetables != library_version_configuration.config_had_devicetables || + exe_lib_version->config_had_multilayer != library_version_configuration.config_had_multilayer || + exe_lib_version->config_had_python != library_version_configuration.config_had_python || + exe_lib_version->mba1 != 0xff ) { + if ( !quiet ) { + IError("This executable will not work with this version of libfontforge\nSee the console log for more details." ); + if ( exe_lib_version->major > library_version_configuration.major || + ( exe_lib_version->major == library_version_configuration.major && + exe_lib_version->minor > library_version_configuration.minor )) + fprintf( stderr, "Library version number is too small for executable.\n" ); + if ( exe_lib_version->sizeof_me != library_version_configuration.sizeof_me ) + fprintf( stderr, "Configuration info in the executable has a different size than that\n expected by the library and is not to be trusted.\n" ); + if ( exe_lib_version->sizeof_splinefont != library_version_configuration.sizeof_splinefont ) + fprintf( stderr, "The internal data structure, SplineFont, has a different expected size\n in library and executable. So they will not work together.\n" ); + if ( exe_lib_version->sizeof_splinechar != library_version_configuration.sizeof_splinechar ) + fprintf( stderr, "The internal data structure, SplineChar, has a different expected size\n in library and executable. So they will not work together.\n" ); + if ( exe_lib_version->sizeof_fvbase != library_version_configuration.sizeof_fvbase ) + fprintf( stderr, "The internal data structure, FontViewBase, has a different expected size\n in library and executable. So they will not work together.\n" ); + if ( exe_lib_version->sizeof_cvbase != library_version_configuration.sizeof_cvbase ) + fprintf( stderr, "The internal data structure, CharViewBase, has a different expected size\n in library and executable. So they will not work together.\n" ); + if ( exe_lib_version->sizeof_cvcontainer != library_version_configuration.sizeof_cvcontainer ) + fprintf( stderr, "The internal data structure, CVContainer, has a different expected size\n in library and executable. So they will not work together.\n" ); + if ( exe_lib_version->config_had_devicetables != library_version_configuration.config_had_devicetables ) { + if ( !exe_lib_version->config_had_devicetables ) + fprintf( stderr, "The library is configured to support device tables, but the executable is\n not. This may explain why data structures are of different sizes.\n" ); + else + fprintf( stderr, "The executable is configured to support device tables, but the library is\n not. This may explain why data structures are of different sizes.\n" ); + } + if ( exe_lib_version->config_had_multilayer != library_version_configuration.config_had_multilayer ) { + if ( !exe_lib_version->config_had_multilayer ) + fprintf( stderr, "The library is configured to support type3 font editing, but the executable is\n not. This may explain why data structures are of different sizes.\n" ); + else + fprintf( stderr, "The executable is configured to support type3 font editing, but the library is\n not. This may explain why data structures are of different sizes.\n" ); + } + if ( exe_lib_version->config_had_python != library_version_configuration.config_had_python ) { + if ( !exe_lib_version->config_had_python ) + fprintf( stderr, "The library is configured to support python scripts, but the executable is\n not. This may explain why data structures are of different sizes.\n" ); + else + fprintf( stderr, "The executable is configured to support python scripts, but the library is\n not. This may explain why data structures are of different sizes.\n" ); + } + if ( exe_lib_version->mba1 != 0xff ) + fprintf( stderr, "The executable specifies a configuration value the library does not expect.\n" ); + } + if ( fatal ) +exit( 1 ); + else +return( -1 ); + } else if ( exe_lib_version->library_source_modtime > library_version_configuration.library_source_modtime ) { + if ( !quiet ) + ff_post_notice(_("Library may be too old"),_("The library is older than the executable expects.\n This might be ok.\nOr it may crash on you.\nYou have been warned." )); +return( 1 ); + } else +return( 0 ); +} diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/lookups.c b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/lookups.c new file mode 100644 index 00000000000..df31efd5c16 --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/lookups.c @@ -0,0 +1,4468 @@ +/* Copyright (C) 2007,2008 by George Williams */ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "fontforgevw.h" +#include +#include +#include +#include +#include +#include +#include "ttf.h" +#include "lookups.h" + +struct opentype_feature_friendlynames friendlies[] = { +#if 0 /* They get stuffed into the 'MATH' table now */ +/* I added these first three features to allow round-trip conversion of tfm files */ + { CHR('I','T','L','C'), "ITLC", N_("Italic Correction"), gpos_single_mask }, + { CHR('T','C','H','L'), "TCHL", N_("TeX Glyphlist"), gsub_alternate_mask }, + { CHR('T','E','X','L'), "TEXL", N_("TeX Extension List"), gsub_multiple_mask }, +#endif +/* Normal OpenType features follow */ + { CHR('a','a','l','t'), "aalt", N_("Access All Alternates"), gsub_single_mask|gsub_alternate_mask }, + { CHR('a','b','v','f'), "abvf", N_("Above Base Forms"), gsub_single_mask }, + { CHR('a','b','v','m'), "abvm", N_("Above Base Mark"), gpos_mark2base_mask|gpos_mark2ligature_mask }, + { CHR('a','b','v','s'), "abvs", N_("Above Base Substitutions"), gsub_ligature_mask }, + { CHR('a','f','r','c'), "afrc", N_("Vertical Fractions"), gsub_ligature_mask }, + { CHR('a','k','h','n'), "akhn", N_("Akhand"), gsub_ligature_mask }, + { CHR('a','l','i','g'), "alig", N_("Ancient Ligatures"), gsub_ligature_mask }, + { CHR('b','l','w','f'), "blwf", N_("Below Base Forms"), gsub_ligature_mask }, + { CHR('b','l','w','m'), "blwm", N_("Below Base Mark"), gpos_mark2base_mask|gpos_mark2ligature_mask }, + { CHR('b','l','w','s'), "blws", N_("Below Base Substitutions"), gsub_ligature_mask }, + { CHR('c','2','p','c'), "c2pc", N_("Capitals to Petite Capitals"), gsub_single_mask }, + { CHR('c','2','s','c'), "c2sc", N_("Capitals to Small Capitals"), gsub_single_mask }, + { CHR('c','a','l','t'), "calt", N_("Contextual Alternates"), gsub_context_mask|gsub_contextchain_mask|morx_context_mask }, + { CHR('c','a','s','e'), "case", N_("Case-Sensitive Forms"), gsub_single_mask|gpos_single_mask }, + { CHR('c','c','m','p'), "ccmp", N_("Glyph Composition/Decomposition"), gsub_multiple_mask|gsub_ligature_mask }, + { CHR('c','l','i','g'), "clig", N_("Contextual Ligatures"), gsub_reversecchain_mask }, + { CHR('c','p','c','t'), "cpct", N_("Centered CJK Punctuation"), gpos_single_mask }, + { CHR('c','p','s','p'), "cpsp", N_("Capital Spacing"), gpos_single_mask }, + { CHR('c','s','w','h'), "cswh", N_("Contextual Swash"), gsub_reversecchain_mask }, + { CHR('c','u','r','s'), "curs", N_("Cursive Attachment"), gpos_cursive_mask }, + { CHR('c','v','0','0'), "cv00", N_("Character Variants 00"), gsub_single_mask }, + { CHR('c','v','0','1'), "cv01", N_("Character Variants 01"), gsub_single_mask }, + { CHR('c','v','0','2'), "cv02", N_("Character Variants 02"), gsub_single_mask }, + { CHR('c','v','0','3'), "cv03", N_("Character Variants 03"), gsub_single_mask }, + { CHR('c','v','0','4'), "cv04", N_("Character Variants 04"), gsub_single_mask }, + { CHR('c','v','0','5'), "cv05", N_("Character Variants 05"), gsub_single_mask }, + { CHR('c','v','0','6'), "cv06", N_("Character Variants 06"), gsub_single_mask }, + { CHR('c','v','0','7'), "cv07", N_("Character Variants 07"), gsub_single_mask }, + { CHR('c','v','0','8'), "cv08", N_("Character Variants 08"), gsub_single_mask }, + { CHR('c','v','0','9'), "cv09", N_("Character Variants 09"), gsub_single_mask }, + { CHR('c','v','1','0'), "cv10", N_("Character Variants 10"), gsub_single_mask }, + { CHR('c','v','9','9'), "cv99", N_("Character Variants 99"), gsub_single_mask }, + { CHR('d','c','a','p'), "dcap", N_("Drop Caps"), gsub_single_mask }, + { CHR('d','i','s','t'), "dist", N_("Distance"), gpos_pair_mask }, + { CHR('d','l','i','g'), "dlig", N_("Discretionary Ligatures"), gsub_ligature_mask }, + { CHR('d','n','o','m'), "dnom", N_("Denominators"), gsub_single_mask }, + { CHR('d','p','n','g'), "dpng", N_("Dipthongs (Obsolete)"), gsub_ligature_mask }, + { CHR('e','x','p','t'), "expt", N_("Expert Forms"), gsub_single_mask }, + { CHR('f','a','l','t'), "falt", N_("Final Glyph On Line"), gsub_alternate_mask }, + { CHR('f','i','n','2'), "fin2", N_("Terminal Forms #2"), gsub_context_mask|gsub_contextchain_mask|morx_context_mask }, + { CHR('f','i','n','3'), "fin3", N_("Terminal Forms #3"), gsub_context_mask|gsub_contextchain_mask|morx_context_mask }, + { CHR('f','i','n','a'), "fina", N_("Terminal Forms"), gsub_single_mask }, + { CHR('f','l','a','c'), "flac", N_("Flattened Accents over Capitals"), gsub_single_mask|gsub_ligature_mask }, + { CHR('f','r','a','c'), "frac", N_("Diagonal Fractions"), gsub_single_mask|gsub_ligature_mask }, + { CHR('f','w','i','d'), "fwid", N_("Full Widths"), gsub_single_mask|gpos_single_mask }, + { CHR('h','a','l','f'), "half", N_("Half Forms"), gsub_ligature_mask }, + { CHR('h','a','l','n'), "haln", N_("Halant Forms"), gsub_ligature_mask }, + { CHR('h','a','l','t'), "halt", N_("Alternative Half Widths"), gpos_single_mask }, + { CHR('h','i','s','t'), "hist", N_("Historical Forms"), gsub_single_mask }, + { CHR('h','k','n','a'), "hkna", N_("Horizontal Kana Alternatives"), gsub_single_mask }, + { CHR('h','l','i','g'), "hlig", N_("Historic Ligatures"), gsub_ligature_mask }, + { CHR('h','n','g','l'), "hngl", N_("Hanja to Hangul"), gsub_single_mask|gsub_alternate_mask }, + { CHR('h','o','j','o'), "hojo", N_("Hojo (JIS X 0212-1990) Kanji Forms"), gsub_single_mask }, + { CHR('h','w','i','d'), "hwid", N_("Half Widths"), gsub_single_mask|gpos_single_mask }, + { CHR('i','n','i','t'), "init", N_("Initial Forms"), gsub_single_mask }, + { CHR('i','s','o','l'), "isol", N_("Isolated Forms"), gsub_single_mask }, + { CHR('i','t','a','l'), "ital", N_("Italics"), gsub_single_mask }, + { CHR('j','a','l','t'), "jalt", N_("Justification Alternatives"), gsub_alternate_mask }, + { CHR('j','a','j','p'), "jajp", N_("Japanese Forms (Obsolete"), gsub_single_mask|gsub_alternate_mask }, + { CHR('j','p','7','8'), "jp78", N_("JIS78 Forms"), gsub_single_mask|gsub_alternate_mask }, + { CHR('j','p','8','3'), "jp83", N_("JIS83 Forms"), gsub_single_mask }, + { CHR('j','p','9','0'), "jp90", N_("JIS90 Forms"), gsub_single_mask }, + { CHR('k','e','r','n'), "kern", N_("Horizontal Kerning"), gpos_pair_mask|gpos_context_mask|gpos_contextchain_mask|kern_statemachine_mask }, + { CHR('l','f','b','d'), "lfbd", N_("Left Bounds"), gpos_single_mask }, + { CHR('l','i','g','a'), "liga", N_("Standard Ligatures"), gsub_ligature_mask }, + { CHR('l','j','m','o'), "ljmo", N_("Leading Jamo Forms"), gsub_ligature_mask }, + { CHR('l','n','u','m'), "lnum", N_("Lining Figures"), gsub_single_mask }, + { CHR('l','o','c','l'), "locl", N_("Localized Forms"), gsub_single_mask }, + { CHR('m','a','r','k'), "mark", N_("Mark Positioning"), gpos_mark2base_mask|gpos_mark2ligature_mask }, + { CHR('m','e','d','2'), "med2", N_("Medial Forms 2"), gsub_context_mask|gsub_contextchain_mask|morx_context_mask }, + { CHR('m','e','d','i'), "medi", N_("Medial Forms"), gsub_single_mask }, + { CHR('m','g','r','k'), "mgrk", N_("Mathematical Greek"), gsub_single_mask }, + { CHR('m','k','m','k'), "mkmk", N_("Mark to Mark"), gpos_mark2mark_mask }, + { CHR('m','s','e','t'), "mset", N_("Mark Positioning via Substitution"), gsub_context_mask|gsub_contextchain_mask|morx_context_mask }, + { CHR('n','a','l','t'), "nalt", N_("Alternate Annotation Forms"), gsub_single_mask|gsub_alternate_mask }, + { CHR('n','u','k','t'), "nukt", N_("Nukta Forms"), gsub_ligature_mask }, + { CHR('n','u','m','r'), "numr", N_("Numerators"), gsub_single_mask }, + { CHR('o','n','u','m'), "onum", N_("Oldstyle Figures"), gsub_single_mask }, + { CHR('o','p','b','d'), "opbd", N_("Optical Bounds"), gpos_single_mask }, + { CHR('o','r','d','n'), "ordn", N_("Ordinals"), gsub_ligature_mask|gsub_context_mask|gsub_contextchain_mask|morx_context_mask }, + { CHR('o','r','n','m'), "ornm", N_("Ornaments"), gsub_single_mask|gsub_alternate_mask }, + { CHR('p','a','l','t'), "palt", N_("Proportional Alternate Metrics"), gpos_single_mask }, + { CHR('p','c','a','p'), "pcap", N_("Lowercase to Petite Capitals"), gsub_single_mask }, + { CHR('p','k','n','a'), "pkna", N_("Proportional Kana"), gpos_single_mask }, + { CHR('p','n','u','m'), "pnum", N_("Proportional Numbers"), gsub_single_mask }, + { CHR('p','r','e','f'), "pref", N_("Pre Base Forms"), gsub_ligature_mask }, + { CHR('p','r','e','s'), "pres", N_("Pre Base Substitutions"), gsub_ligature_mask|gsub_context_mask|gsub_contextchain_mask|morx_context_mask }, + { CHR('p','s','t','f'), "pstf", N_("Post Base Forms"), gsub_ligature_mask }, + { CHR('p','s','t','s'), "psts", N_("Post Base Substitutions"), gsub_ligature_mask }, + { CHR('p','w','i','d'), "pwid", N_("Proportional Width"), gsub_single_mask }, + { CHR('q','w','i','d'), "qwid", N_("Quarter Widths"), gsub_single_mask|gpos_single_mask }, + { CHR('r','a','n','d'), "rand", N_("Randomize"), gsub_alternate_mask }, + { CHR('r','k','r','f'), "rkrf", N_("Rakar Forms"), gsub_ligature_mask }, + { CHR('r','l','i','g'), "rlig", N_("Required Ligatures"), gsub_ligature_mask }, + { CHR('r','p','h','f'), "rphf", N_("Reph Form"), gsub_ligature_mask }, + { CHR('r','t','b','d'), "rtbd", N_("Right Bounds"), gpos_single_mask }, + { CHR('r','t','l','a'), "rtla", N_("Right to Left Alternates"), gsub_single_mask }, + { CHR('r','u','b','y'), "ruby", N_("Ruby Notational Forms"), gsub_single_mask }, + { CHR('s','a','l','t'), "salt", N_("Stylistic Alternatives"), gsub_single_mask|gsub_alternate_mask }, + { CHR('s','i','n','f'), "sinf", N_("Scientific Inferiors"), gsub_single_mask }, + { CHR('s','m','c','p'), "smcp", N_("Lowercase to Small Capitals"), gsub_single_mask }, + { CHR('s','m','p','l'), "smpl", N_("Simplified Forms"), gsub_single_mask }, + { CHR('s','s','0','1'), "ss01", N_("Style Set 1"), gsub_single_mask }, + { CHR('s','s','0','2'), "ss02", N_("Style Set 2"), gsub_single_mask }, + { CHR('s','s','0','3'), "ss03", N_("Style Set 3"), gsub_single_mask }, + { CHR('s','s','0','4'), "ss04", N_("Style Set 4"), gsub_single_mask }, + { CHR('s','s','0','5'), "ss05", N_("Style Set 5"), gsub_single_mask }, + { CHR('s','s','0','6'), "ss06", N_("Style Set 6"), gsub_single_mask }, + { CHR('s','s','0','7'), "ss07", N_("Style Set 7"), gsub_single_mask }, + { CHR('s','s','0','8'), "ss08", N_("Style Set 8"), gsub_single_mask }, + { CHR('s','s','0','9'), "ss09", N_("Style Set 9"), gsub_single_mask }, + { CHR('s','s','1','0'), "ss10", N_("Style Set 10"), gsub_single_mask }, + { CHR('s','s','1','1'), "ss11", N_("Style Set 11"), gsub_single_mask }, + { CHR('s','s','1','2'), "ss12", N_("Style Set 12"), gsub_single_mask }, + { CHR('s','s','1','3'), "ss13", N_("Style Set 13"), gsub_single_mask }, + { CHR('s','s','1','4'), "ss14", N_("Style Set 14"), gsub_single_mask }, + { CHR('s','s','1','5'), "ss15", N_("Style Set 15"), gsub_single_mask }, + { CHR('s','s','1','6'), "ss16", N_("Style Set 16"), gsub_single_mask }, + { CHR('s','s','1','7'), "ss17", N_("Style Set 17"), gsub_single_mask }, + { CHR('s','s','1','8'), "ss18", N_("Style Set 18"), gsub_single_mask }, + { CHR('s','s','1','9'), "ss19", N_("Style Set 19"), gsub_single_mask }, + { CHR('s','s','2','0'), "ss20", N_("Style Set 20"), gsub_single_mask }, + { CHR('s','s','t','y'), "ssty", N_("Script Style"), gsub_single_mask }, + { CHR('s','u','b','s'), "subs", N_("Subscript"), gsub_single_mask }, + { CHR('s','u','p','s'), "sups", N_("Superscript"), gsub_single_mask }, + { CHR('s','w','s','h'), "swsh", N_("Swash"), gsub_single_mask|gsub_alternate_mask }, + { CHR('t','i','t','l'), "titl", N_("Titling"), gsub_single_mask }, + { CHR('t','j','m','o'), "tjmo", N_("Trailing Jamo Forms"), gsub_ligature_mask }, + { CHR('t','n','a','m'), "tnam", N_("Traditional Name Forms"), gsub_single_mask }, + { CHR('t','n','u','m'), "tnum", N_("Tabular Numbers"), gsub_single_mask }, + { CHR('t','r','a','d'), "trad", N_("Traditional Forms"), gsub_single_mask|gsub_alternate_mask }, + { CHR('t','w','i','d'), "twid", N_("Third Widths"), gsub_single_mask|gpos_single_mask }, + { CHR('u','n','i','c'), "unic", N_("Unicase"), gsub_single_mask }, + { CHR('v','a','l','t'), "valt", N_("Alternate Vertical Metrics"), gpos_single_mask }, + { CHR('v','a','t','u'), "vatu", N_("Vattu Variants"), gsub_ligature_mask }, + { CHR('v','e','r','t'), "vert", N_("Vertical Alternates (obs)"), gsub_single_mask }, + { CHR('v','h','a','l'), "vhal", N_("Alternate Vertical Half Metrics"), gpos_single_mask }, + { CHR('v','j','m','o'), "vjmo", N_("Vowel Jamo Forms"), gsub_ligature_mask }, + { CHR('v','k','n','a'), "vkna", N_("Vertical Kana Alternates"), gsub_single_mask }, + { CHR('v','k','r','n'), "vkrn", N_("Vertical Kerning"), gpos_pair_mask|gpos_context_mask|gpos_contextchain_mask|kern_statemachine_mask }, + { CHR('v','p','a','l'), "vpal", N_("Proportional Alternate Vertical Metrics"), gpos_single_mask }, + { CHR('v','r','t','2'), "vrt2", N_("Vertical Rotation & Alternates"), gsub_single_mask }, + { CHR('z','e','r','o'), "zero", N_("Slashed Zero"), gsub_single_mask }, +/* This is my hack for setting the "Required feature" field of a script */ + { CHR(' ','R','Q','D'), " RQD", N_("Required feature"), gsub_single_mask|gsub_multiple_mask|gsub_alternate_mask|gsub_ligature_mask|gsub_context_mask|gsub_contextchain_mask|gsub_reversecchain_mask|morx_context_mask|gpos_single_mask|gpos_pair_mask|gpos_cursive_mask|gpos_mark2base_mask|gpos_mark2ligature_mask|gpos_mark2mark_mask|gpos_context_mask|gpos_contextchain_mask }, + { 0, NULL, 0, 0 } +}; + +static int uint32_cmp(const void *_ui1, const void *_ui2) { + if ( *(uint32 *) _ui1 > *(uint32 *)_ui2 ) +return( 1 ); + if ( *(uint32 *) _ui1 < *(uint32 *)_ui2 ) +return( -1 ); + +return( 0 ); +} + +static int lang_cmp(const void *_ui1, const void *_ui2) { + /* The default language is magic, and should come first in the list even */ + /* if that is not true alphabetical order */ + if ( *(uint32 *) _ui1 == DEFAULT_LANG ) +return( -1 ); + if ( *(uint32 *) _ui2 == DEFAULT_LANG ) +return( 1 ); + + if ( *(uint32 *) _ui1 > *(uint32 *)_ui2 ) +return( 1 ); + if ( *(uint32 *) _ui1 < *(uint32 *)_ui2 ) +return( -1 ); + +return( 0 ); +} + +FeatureScriptLangList *FindFeatureTagInFeatureScriptList(uint32 tag, FeatureScriptLangList *fl) { + + while ( fl!=NULL ) { + if ( fl->featuretag==tag ) +return( fl ); + fl = fl->next; + } +return( NULL ); +} + +int FeatureTagInFeatureScriptList(uint32 tag, FeatureScriptLangList *fl) { + + while ( fl!=NULL ) { + if ( fl->featuretag==tag ) +return( true ); + fl = fl->next; + } +return( false ); +} + +int ScriptInFeatureScriptList(uint32 script, FeatureScriptLangList *fl) { + struct scriptlanglist *sl; + + if ( fl==NULL ) /* No features bound to lookup? (nested?) don't restrict by script */ +return( true ); + + while ( fl!=NULL ) { + for ( sl=fl->scripts; sl!=NULL; sl=sl->next ) { + if ( sl->script == script ) +return( true ); + } + fl = fl->next; + } +return( false ); +} + +int FeatureScriptTagInFeatureScriptList(uint32 feature, uint32 script, FeatureScriptLangList *fl) { + struct scriptlanglist *sl; + + while ( fl!=NULL ) { + if ( fl->featuretag == feature ) { + for ( sl=fl->scripts; sl!=NULL; sl=sl->next ) { + if ( sl->script == script ) +return( true ); + } + } + fl = fl->next; + } +return( false ); +} + +int DefaultLangTagInOneScriptList(struct scriptlanglist *sl) { + int l; + + for ( l=0; llang_cnt; ++l ) { + uint32 lang = llangs[l] : sl->morelangs[l-MAX_LANG]; + if ( lang==DEFAULT_LANG ) +return( true ); + } +return( false ); +} + +struct scriptlanglist *DefaultLangTagInScriptList(struct scriptlanglist *sl, int DFLT_ok) { + + while ( sl!=NULL ) { + if ( DFLT_ok || sl->script!=DEFAULT_SCRIPT ) { + if ( DefaultLangTagInOneScriptList(sl)) +return( sl ); + } + sl = sl->next; + } +return( NULL ); +} + +uint32 *SFScriptsInLookups(SplineFont *sf,int gpos) { + /* Presumes that either SFFindUnusedLookups or SFFindClearUnusedLookupBits */ + /* has been called first */ + /* Since MS will sometimes ignore a script if it isn't found in both */ + /* GPOS and GSUB we want to return the same script list no matter */ + /* what the setting of gpos ... so we totally ignore that argument */ + /* and always look at both sets of lookups */ + +/* Sergey Malkin from MicroSoft tells me: + Each shaping engine in Uniscribe can decide on its requirements for + layout tables - some of them require both GSUB and GPOS, in some cases + any table present is enough, or it can work without any table. + + Sometimes, purpose of the check is to determine if font is supporting + particular script - if required tables are not there font is just + rejected by this shaping engine. Sometimes, shaping engine can not just + reject the font because there are fonts using older shaping technologies + we still have to support, so it uses some logic when to fallback to + legacy layout code. + + In your case this is Hebrew, where both tables are required to use + OpenType processing. Arabic requires both tables too, Latin requires + GSUB to execute GPOS. But in general, if you have both tables you should + be safe with any script to get fully featured OpenType shaping. + +In other words, if we have a Hebrew font with just GPOS features they won't work, +and MS will not use the font at all. We must add a GSUB table. In the unlikely +event that we had a hebrew font with only GSUB it would not work either. + +So if we want our lookups to have a chance of executing under Uniscribe we +better make sure that both tables have the same script set. + +(Sergey says we could optimize a little: A Latin GSUB table will run without +a GPOS, but he says the GPOS won't work without a GSUB.) +*/ + int cnt=0, tot=0, i; + uint32 *scripts = NULL; + OTLookup *test; + FeatureScriptLangList *fl; + struct scriptlanglist *sl; + + /* So here always give scripts for both (see comment above) no */ + /* matter what they asked for */ + for ( gpos=0; gpos<2; ++gpos ) { + for ( test = gpos ? sf->gpos_lookups : sf->gsub_lookups; test!=NULL; test = test->next ) { + if ( test->unused ) + continue; + for ( fl=test->features; fl!=NULL; fl=fl->next ) { + if ( fl->ismac ) + continue; + for ( sl=fl->scripts ; sl!=NULL; sl=sl->next ) { + for ( i=0; iscript==scripts[i] ) + break; + } + if ( i==cnt ) { + if ( cnt>=tot ) + scripts = grealloc(scripts,(tot+=10)*sizeof(uint32)); + scripts[cnt++] = sl->script; + } + } + } + } + } + + if ( cnt==0 ) +return( NULL ); + + /* We want our scripts in alphabetic order */ + qsort(scripts,cnt,sizeof(uint32),uint32_cmp); + /* add a 0 entry to mark the end of the list */ + if ( cnt>=tot ) + scripts = grealloc(scripts,(tot+1)*sizeof(uint32)); + scripts[cnt] = 0; +return( scripts ); +} + +uint32 *SFLangsInScript(SplineFont *sf,int gpos,uint32 script) { + /* However, the language lists (I think) are distinct */ + /* But giving a value of -1 for gpos will give us the set of languages in */ + /* both tables (for this script) */ + int cnt=0, tot=0, i, g, l; + uint32 *langs = NULL; + OTLookup *test; + FeatureScriptLangList *fl; + struct scriptlanglist *sl; + + for ( g=0; g<2; ++g ) { + if (( gpos==0 && g==1 ) || ( gpos==1 && g==0 )) + continue; + for ( test = gpos ? sf->gpos_lookups : sf->gsub_lookups; test!=NULL; test = test->next ) { + if ( test->unused ) + continue; + for ( fl=test->features; fl!=NULL; fl=fl->next ) { + for ( sl=fl->scripts ; sl!=NULL; sl=sl->next ) { + if ( sl->script==script ) { + for ( l=0; llang_cnt; ++l ) { + unsigned lang; + if ( llangs[l]; + else + lang = sl->morelangs[l-MAX_LANG]; + for ( i=0; i=tot ) + langs = grealloc(langs,(tot+=10)*sizeof(uint32)); + langs[cnt++] = lang; + } + } + } + } + } + } + } + + if ( cnt==0 ) { + /* We add dummy script entries. Because Uniscribe will refuse to */ + /* process some scripts if they don't have an entry in both GPOS */ + /* an GSUB. So if a script appears in either table, force it to */ + /* appear in both. That means we can get scripts with no lookups */ + /* and hence no languages. It seems that Uniscribe doesn't like */ + /* that either. So give each such script a dummy default language */ + /* entry. This is what VOLT does */ + langs = gcalloc(2,sizeof(uint32)); + langs[0] = DEFAULT_LANG; +return( langs ); + } + + /* We want our languages in alphabetic order */ + qsort(langs,cnt,sizeof(uint32),lang_cmp); + /* add a 0 entry to mark the end of the list */ + if ( cnt>=tot ) + langs = grealloc(langs,(tot+1)*sizeof(uint32)); + langs[cnt] = 0; +return( langs ); +} + +uint32 *SFFeaturesInScriptLang(SplineFont *sf,int gpos,uint32 script,uint32 lang) { + int cnt=0, tot=0, i, l, isg; + uint32 *features = NULL; + OTLookup *test; + FeatureScriptLangList *fl; + struct scriptlanglist *sl; + /* gpos==0 => GSUB, gpos==1 => GPOS, gpos==-1 => both, gpos==-2 => Both & morx & kern */ + + if ( sf->cidmaster ) sf=sf->cidmaster; + for ( isg = 0; isg<2; ++isg ) { + if ( gpos>=0 && isg!=gpos ) + continue; + for ( test = isg ? sf->gpos_lookups : sf->gsub_lookups; test!=NULL; test = test->next ) { + if ( test->unused ) + continue; + for ( fl=test->features; fl!=NULL; fl=fl->next ) { + if ( fl->ismac && gpos!=-2 ) + continue; + if ( script==0xffffffff ) { + for ( i=0; ifeaturetag==features[i] ) + break; + } + if ( i==cnt ) { + if ( cnt>=tot ) + features = grealloc(features,(tot+=10)*sizeof(uint32)); + features[cnt++] = fl->featuretag; + } + } else for ( sl=fl->scripts ; sl!=NULL; sl=sl->next ) { + if ( sl->script==script ) { + int matched = false; + if ( fl->ismac && gpos==-2 ) + matched = true; + else for ( l=0; llang_cnt; ++l ) { + unsigned testlang; + if ( llangs[l]; + else + testlang = sl->morelangs[l-MAX_LANG]; + if ( testlang==lang ) { + matched = true; + break; + } + } + if ( matched ) { + for ( i=0; ifeaturetag==features[i] ) + break; + } + if ( i==cnt ) { + if ( cnt>=tot ) + features = grealloc(features,(tot+=10)*sizeof(uint32)); + features[cnt++] = fl->featuretag; + } + } + } + } + } + } + } + + if ( sf->design_size!=0 && gpos ) { + /* The 'size' feature is like no other. It has no lookups and so */ + /* we will never find it in the normal course of events. If the */ + /* user has specified a design size, then every script/lang combo */ + /* gets a 'size' feature which contains no lookups but feature */ + /* params */ + if ( cnt>=tot ) + features = grealloc(features,(tot+=2)*sizeof(uint32)); + features[cnt++] = CHR('s','i','z','e'); + } + + if ( cnt==0 ) +return( gcalloc(1,sizeof(uint32)) ); + + /* We don't care if our features are in alphabetical order here */ + /* all that matters is whether the complete list of features is */ + /* ordering here would be irrelevant */ + /* qsort(features,cnt,sizeof(uint32),uint32_cmp); */ + + /* add a 0 entry to mark the end of the list */ + if ( cnt>=tot ) + features = grealloc(features,(tot+1)*sizeof(uint32)); + features[cnt] = 0; +return( features ); +} + +OTLookup **SFLookupsInScriptLangFeature(SplineFont *sf,int gpos,uint32 script,uint32 lang, uint32 feature) { + int cnt=0, tot=0, l; + OTLookup **lookups = NULL; + OTLookup *test; + FeatureScriptLangList *fl; + struct scriptlanglist *sl; + + for ( test = gpos ? sf->gpos_lookups : sf->gsub_lookups; test!=NULL; test = test->next ) { + if ( test->unused ) + continue; + for ( fl=test->features; fl!=NULL; fl=fl->next ) { + if ( fl->featuretag==feature ) { + for ( sl=fl->scripts ; sl!=NULL; sl=sl->next ) { + if ( sl->script==script ) { + for ( l=0; llang_cnt; ++l ) { + unsigned testlang; + if ( llangs[l]; + else + testlang = sl->morelangs[l-MAX_LANG]; + if ( testlang==lang ) { + if ( cnt>=tot ) + lookups = grealloc(lookups,(tot+=10)*sizeof(OTLookup *)); + lookups[cnt++] = test; + goto found; + } + } + } + } + } + } + found:; + } + + if ( cnt==0 ) +return( NULL ); + + /* lookup order is irrelevant here. might as well leave it in invocation order */ + /* add a 0 entry to mark the end of the list */ + if ( cnt>=tot ) + lookups = grealloc(lookups,(tot+1)*sizeof(OTLookup *)); + lookups[cnt] = 0; +return( lookups ); +} + +static int LigaturesFirstComponentGID(SplineFont *sf,char *components) { + int gid, ch; + char *pt; + + for ( pt = components; *pt!='\0' && *pt!=' '; ++pt ); + ch = *pt; *pt = '\0'; + gid = SFFindExistingSlot(sf,-1,components); + *pt = ch; +return( gid ); +} + +static int PSTValid(SplineFont *sf,PST *pst) { + char *start, *pt, ch; + int ret; + (void)sf; + switch ( pst->type ) { + case pst_position: +return( true ); + case pst_pair: +return( SCWorthOutputting(SFGetChar(sf,-1,pst->u.pair.paired)) ); + case pst_substitution: case pst_alternate: case pst_multiple: + case pst_ligature: + for ( start = pst->u.mult.components; *start ; ) { + for ( pt=start; *pt && *pt!=' '; ++pt ); + ch = *pt; *pt = '\0'; + ret = SCWorthOutputting(SFGetChar(sf,-1,start)); + *pt = ch; + if ( !ret ) +return( false ); + if ( ch==0 ) + start = pt; + else + start = pt+1; + } + } +return( true ); +} + +SplineChar **SFGlyphsWithPSTinSubtable(SplineFont *sf,struct lookup_subtable *subtable) { + uint8 *used = gcalloc(sf->glyphcnt,sizeof(uint8)); + SplineChar **glyphs, *sc; + int i, k, gid, cnt; + KernPair *kp; + PST *pst; + int ispair = subtable->lookup->lookup_type == gpos_pair; + int isliga = subtable->lookup->lookup_type == gsub_ligature; + sc = NULL; + for ( i=0; iglyphcnt; ++i ) if ( SCWorthOutputting(sc = sf->glyphs[i]) ) { + if ( ispair ) { + for ( k=0; k<2; ++k ) { + for ( kp= k ? sc->kerns : sc->vkerns; kp!=NULL ; kp=kp->next ) { + if ( !SCWorthOutputting(kp->sc)) + continue; + if ( kp->subtable == subtable ) { + used[i] = true; + goto continue_; + } + } + } + } + for ( pst=sc->possub; pst!=NULL; pst=pst->next ) { + if ( pst->subtable == subtable && PSTValid(sf,pst)) { + if ( !isliga ) { + used[i] = true; + goto continue_; + } else { + gid = LigaturesFirstComponentGID(sf,pst->u.lig.components); + pst->u.lig.lig = sc; + if ( gid!=-1 ) + used[gid] = true; + /* can't continue here. ffi might be "f+f+i" and "ff+i" */ + /* and we need to mark both "f" and "ff" as used */ + } + } + } + continue_: ; + } + + for ( i=cnt=0 ; iglyphcnt; ++i ) + if ( used[i] ) + ++cnt; + + if ( cnt==0 ) { + free(used); +return( NULL ); + } + glyphs = galloc((cnt+1)*sizeof(SplineChar *)); + for ( i=cnt=0 ; iglyphcnt; ++i ) { + if ( used[i] ) + glyphs[cnt++] = sf->glyphs[i]; + } + glyphs[cnt] = NULL; + free(used); +return( glyphs ); +} + +SplineChar **SFGlyphsWithLigatureinLookup(SplineFont *sf,struct lookup_subtable *subtable) { + uint8 *used = gcalloc(sf->glyphcnt,sizeof(uint8)); + SplineChar **glyphs, *sc; + int i, cnt; + PST *pst; + sc=NULL; + for ( i=0; iglyphcnt; ++i ) if ( SCWorthOutputting(sc = sf->glyphs[i]) ) { + for ( pst=sc->possub; pst!=NULL; pst=pst->next ) { + if ( pst->subtable == subtable ) { + used[i] = true; + goto continue_; + } + } + continue_: ; + } + + for ( i=cnt=0 ; iglyphcnt; ++i ) + if ( used[i] ) + ++cnt; + + if ( cnt==0 ) { + free(used); +return( NULL ); + } + + glyphs = galloc((cnt+1)*sizeof(SplineChar *)); + for ( i=cnt=0 ; iglyphcnt; ++i ) { + if ( used[i] ) + glyphs[cnt++] = sf->glyphs[i]; + } + glyphs[cnt] = NULL; + free(used); +return( glyphs ); +} + +void SFFindUnusedLookups(SplineFont *sf) { + OTLookup *test; + struct lookup_subtable *sub; + int gpos; + AnchorClass *ac; + AnchorPoint *ap; + SplineChar *sc; + KernPair *kp; + PST *pst; + int k,gid,isv; + SplineFont *_sf = sf; + sc=NULL; + if ( _sf->cidmaster ) _sf = _sf->cidmaster; + + /* Some things are obvious. If a subtable consists of a kernclass or some */ + /* such, then obviously it is used. But more distributed info takes more */ + /* work. So mark anything easy as used, and anything difficult as unused */ + /* We'll work on the difficult things later */ + for ( gpos=0; gpos<2; ++gpos ) { + for ( test = gpos ? _sf->gpos_lookups : _sf->gsub_lookups; test!=NULL; test = test->next ) { + for ( sub = test->subtables; sub!=NULL; sub=sub->next ) { + if ( sub->kc!=NULL || sub->fpst!=NULL || sub->sm!=NULL ) { + sub->unused = false; + continue; + } + sub->unused = true; + /* We'll turn the following bit back on if there turns out */ + /* to be an anchor class attached to it -- that is subtly */ + /* different than being unused -- unused will be set if all */ + /* acs are unused, this bit will be on if there are unused */ + /* classes that still refer to us. */ + sub->anchor_classes = false; + } + } + } + + /* To be useful an anchor class must have both at least one base and one mark */ + /* (for cursive anchors that means at least one entry and at least one exit) */ + /* Start by assuming the worst */ + for ( ac = _sf->anchor; ac!=NULL; ac=ac->next ) + ac->has_mark = ac->has_base = false; + + /* Ok, for each glyph, look at all lookups (or anchor classes) it affects */ + /* and mark the appropriate parts of them as used */ + k = 0; + do { + sf = _sf->subfontcnt==0 ? _sf : _sf->subfonts[k]; + for ( gid=0; gidglyphcnt; ++gid ) if ( SCWorthOutputting(sc = sf->glyphs[gid]) ) { + for ( ap=sc->anchor; ap!=NULL; ap=ap->next ) { + switch ( ap->type ) { + case at_mark: case at_centry: + ap->anchor->has_mark = true; + break; + case at_basechar: case at_baselig: case at_basemark: + case at_cexit: + ap->anchor->has_base = true; + break; + } + } + for ( isv=0; isv<2; ++isv ) { + for ( kp= isv ? sc->kerns : sc->vkerns ; kp!=NULL; kp=kp->next ) { + if ( SCWorthOutputting(kp->sc)) + kp->subtable->unused = false; + } + } + for ( pst=sc->possub; pst!=NULL; pst=pst->next ) { + if ( pst->subtable==NULL ) + continue; + if ( !PSTValid(sf,pst)) + continue; + pst->subtable->unused = false; + } + } + ++k; + } while ( k<_sf->subfontcnt ); + + /* Finally for any anchor class that has both a mark and a base then it is */ + /* used, and its lookup is also used */ + /* Also, even if unused, as long as the anchor class exists we must keep */ + /* the subtable around */ + for ( ac = _sf->anchor; ac!=NULL; ac=ac->next ) { + ac->subtable->anchor_classes = true; + if ( ac->has_mark && ac->has_base ) + ac->subtable->unused = false; + } + + /* Now for each lookup, a lookup is unused if ALL subtables are unused */ + for ( gpos=0; gpos<2; ++gpos ) { + for ( test = gpos ? _sf->gpos_lookups : _sf->gsub_lookups; test!=NULL; test = test->next ) { + test->unused = test->empty = true; + for ( sub=test->subtables; sub!=NULL; sub=sub->next ) { + if ( !sub->unused ) + test->unused = false; + if ( !sub->unused && !sub->anchor_classes ) { + test->empty = false; + break; + } + } + } + } +} + +void SFFindClearUnusedLookupBits(SplineFont *sf) { + OTLookup *test; + int gpos; + + for ( gpos=0; gpos<2; ++gpos ) { + for ( test = gpos ? sf->gpos_lookups : sf->gsub_lookups; test!=NULL; test = test->next ) { + test->unused = false; + test->empty = false; + test->def_lang_checked = false; + } + } +} + +static void SFRemoveAnchorPointsOfAC(SplineFont *sf,AnchorClass *ac) { + int gid; + SplineChar *sc; + AnchorPoint *ap, *prev, *next; + + for ( gid=0; gidglyphcnt; ++gid ) if ( (sc = sf->glyphs[gid])!=NULL ) { + for ( prev=NULL, ap=sc->anchor; ap!=NULL; ap=next ) { + next = ap->next; + if ( ap->anchor!=ac ) + prev = ap; + else { + if ( prev==NULL ) + sc->anchor = next; + else + prev->next = next; + ap->next = NULL; + AnchorPointsFree(ap); + } + } + } +} + +static void RemoveNestedReferences(SplineFont *sf,int isgpos,OTLookup *dying) { + OTLookup *otl; + struct lookup_subtable *sub; + int i,j,k; + (void)dying; + for ( otl = isgpos ? sf->gpos_lookups : sf->gsub_lookups; otl!=NULL; otl = otl->next ) { + if ( otl->lookup_type==morx_context ) { + for ( sub=otl->subtables; sub!=NULL; sub=sub->next ) { + ASM *sm = sub->sm; + if ( sm->type==asm_context ) { + for ( i=0; istate_cnt*sm->class_cnt; ++i ) { + struct asm_state *state = &sm->state[i]; + if ( state->u.context.mark_lookup == otl ) + state->u.context.mark_lookup = NULL; + if ( state->u.context.cur_lookup == otl ) + state->u.context.cur_lookup = NULL; + } + } + } + /* Reverse chaining tables do not reference lookups. The match pattern*/ + /* is a (exactly one) coverage table, and each glyph in that table */ + /* as an inline replacement. There is no lookup to do the replacement*/ + /* (so we ignore it here) */ + } else if ( otl->lookup_type==gsub_context || otl->lookup_type==gsub_contextchain || + otl->lookup_type==gpos_context || otl->lookup_type==gpos_contextchain ) { + for ( sub=otl->subtables; sub!=NULL; sub=sub->next ) { + FPST *fpst = sub->fpst; + for ( i=0; irule_cnt; ++i ) { + for ( j=0; jrules[i].lookup_cnt; ++j ) { + if ( fpst->rules[i].lookups[j].lookup == otl ) { + for ( k=j+1; krules[i].lookup_cnt; ++k ) + fpst->rules[i].lookups[k-1] = fpst->rules[i].lookups[k]; + --fpst->rules[i].lookup_cnt; + --j; + } + } + } + } + } + } +} + +void SFRemoveUnusedLookupSubTables(SplineFont *sf, + int remove_incomplete_anchorclasses, + int remove_unused_lookups) { + int gpos; + struct lookup_subtable *sub, *subnext, *prev; + AnchorClass *ac, *acprev, *acnext; + OTLookup *otl, *otlprev, *otlnext; + otlprev=NULL; + /* Presumes someone has called SFFindUnusedLookups first */ + + if ( remove_incomplete_anchorclasses ) { + for ( acprev=NULL, ac=sf->anchor; ac!=NULL; ac=acnext ) { + acnext = ac->next; + if ( ac->has_mark && ac->has_base ) + acprev = ac; + else { + SFRemoveAnchorPointsOfAC(sf,ac); + ac->next = NULL; + AnchorClassesFree(ac); + if ( acprev==NULL ) + sf->anchor = acnext; + else + acprev = acnext; + } + } + } + + for ( gpos=0; gpos<2; ++gpos ) { + for ( otl = gpos ? sf->gpos_lookups : sf->gsub_lookups; otl!=NULL; otl = otlnext ) { + otlnext = otl->next; + if ( remove_unused_lookups && (otl->empty || + (otl->unused && remove_incomplete_anchorclasses)) ) { + if ( otlprev!=NULL ) + otlprev->next = otlnext; + else if ( gpos ) + sf->gpos_lookups = otlnext; + else + sf->gsub_lookups = otlnext; + RemoveNestedReferences(sf,gpos,otl); + OTLookupFree(otl); + } else { + for ( prev=NULL, sub=otl->subtables; sub!=NULL; sub=subnext ) { + subnext = sub->next; + if ( sub->unused && + (!sub->anchor_classes || + remove_incomplete_anchorclasses )) { + if ( prev==NULL ) + otl->subtables = subnext; + else + prev->next = subnext; + free(sub->subtable_name); + chunkfree(sub,sizeof(*sub)); + } else + prev = sub; + } + } + } + } +} + +void SFRemoveLookupSubTable(SplineFont *sf,struct lookup_subtable *sub) { + OTLookup *otl = sub->lookup; + struct lookup_subtable *subprev, *subtest; + + if ( sf->cidmaster!=NULL ) sf = sf->cidmaster; + + if ( sub->sm!=NULL ) { + ASM *prev = NULL, *test; + for ( test=sf->sm; test!=NULL && test!=sub->sm; prev=test, test=test->next ); + if ( prev==NULL ) + sf->sm = sub->sm->next; + else + prev->next = sub->sm->next; + sub->sm->next = NULL; + ASMFree(sub->sm); + sub->sm = NULL; + } else if ( sub->fpst!=NULL ) { + FPST *prev = NULL, *test; + for ( test=sf->possub; test!=NULL && test!=sub->fpst; prev=test, test=test->next ); + if ( prev==NULL ) + sf->possub = sub->fpst->next; + else + prev->next = sub->fpst->next; + sub->fpst->next = NULL; + FPSTFree(sub->fpst); + sub->fpst = NULL; + } else if ( sub->kc!=NULL ) { + KernClass *prev = NULL, *test; + for ( test=sf->kerns; test!=NULL && test!=sub->kc; prev=test, test=test->next ); + if ( test!=NULL ) { + if ( prev==NULL ) + sf->kerns = sub->kc->next; + else + prev->next = sub->kc->next; + } else { + for ( prev=NULL,test=sf->vkerns; test!=NULL && test!=sub->kc; prev=test, test=test->next ); + if ( prev==NULL ) + sf->vkerns = sub->kc->next; + else + prev->next = sub->kc->next; + } + sub->kc->next = NULL; + KernClassListFree(sub->kc); + sub->kc = NULL; + } else if ( otl->lookup_type==gpos_cursive || otl->lookup_type==gpos_mark2base || + otl->lookup_type==gpos_mark2ligature || otl->lookup_type==gpos_mark2mark ) { + AnchorClass *ac, *acnext; + for ( ac=sf->anchor; ac!=NULL; ac=acnext ) { + acnext = ac->next; + if ( ac->subtable==sub ) + SFRemoveAnchorClass(sf,ac); + } + } else { + int i,k,v; + SplineChar *sc; + SplineFont *_sf; + PST *pst, *prev, *next; + KernPair *kp, *kpprev, *kpnext; + k=0; i=0; + do { + _sf = sf->subfontcnt==0 ? sf : sf->subfonts[i]; + for ( i=0; i<_sf->glyphcnt; ++i ) if ( (sc=_sf->glyphs[i])!=NULL ) { + for ( pst=sc->possub, prev=NULL ; pst!=NULL; pst=next ) { + next = pst->next; + if ( pst->subtable==sub ) { + if ( prev==NULL ) + sc->possub = next; + else + prev->next = next; + pst->next = NULL; + PSTFree(pst); + } else + prev = pst; + } + for ( v=0; v<2; ++v ) { + for ( kp=v ? sc->vkerns : sc->kerns, kpprev=NULL ; kp!=NULL; kp=kpnext ) { + kpnext = kp->next; + if ( kp->subtable==sub ) { + if ( kpprev!=NULL ) + kpprev->next = kpnext; + else if ( v ) + sc->vkerns = kpnext; + else + sc->kerns = kpnext; + kp->next = NULL; + KernPairsFree(kp); + } else + kpprev = kp; + } + } + } + ++k; + } while ( ksubfontcnt ); + } + + subprev = NULL; + for ( subtest = otl->subtables; subtest!=NULL && subtest!=sub; subprev = subtest, subtest=subtest->next ); + if ( subprev==NULL ) + otl->subtables = sub->next; + else + subprev->next = sub->next; + free(sub->subtable_name); + free(sub->suffix); + chunkfree(sub,sizeof(struct lookup_subtable)); +} + +void SFRemoveLookup(SplineFont *sf,OTLookup *otl) { + OTLookup *test, *prev; + int isgpos; + struct lookup_subtable *sub, *subnext; + + if ( sf->cidmaster ) sf = sf->cidmaster; + + for ( sub = otl->subtables; sub!=NULL; sub=subnext ) { + subnext = sub->next; + SFRemoveLookupSubTable(sf,sub); + } + + for ( prev=NULL, test=sf->gpos_lookups; test!=NULL && test!=otl; prev=test, test=test->next ); + if ( test==NULL ) { + isgpos = false; + for ( prev=NULL, test=sf->gsub_lookups; test!=NULL && test!=otl; prev=test, test=test->next ); + } else + isgpos = true; + if ( prev!=NULL ) + prev->next = otl->next; + else if ( isgpos ) + sf->gpos_lookups = otl->next; + else + sf->gsub_lookups = otl->next; + + RemoveNestedReferences(sf,isgpos,otl); + + otl->next = NULL; + OTLookupFree(otl); +} + +struct lookup_subtable *SFFindLookupSubtable(SplineFont *sf,char *name) { + int isgpos; + OTLookup *otl; + struct lookup_subtable *sub; + + if ( sf->cidmaster ) sf = sf->cidmaster; + + if ( name==NULL ) +return( NULL ); + + for ( isgpos=0; isgpos<2; ++isgpos ) { + for ( otl = isgpos ? sf->gpos_lookups : sf->gsub_lookups ; otl!=NULL; otl=otl->next ) { + for ( sub = otl->subtables; sub!=NULL; sub=sub->next ) { + if ( strcmp(name,sub->subtable_name)==0 ) +return( sub ); + } + } + } +return( NULL ); +} + +struct lookup_subtable *SFFindLookupSubtableAndFreeName(SplineFont *sf,char *name) { + struct lookup_subtable *sub = SFFindLookupSubtable(sf,name); + free(name); +return( sub ); +} + +OTLookup *SFFindLookup(SplineFont *sf,char *name) { + int isgpos; + OTLookup *otl; + + if ( sf->cidmaster ) sf = sf->cidmaster; + + if ( name==NULL ) +return( NULL ); + + for ( isgpos=0; isgpos<2; ++isgpos ) { + for ( otl = isgpos ? sf->gpos_lookups : sf->gsub_lookups ; otl!=NULL; otl=otl->next ) { + if ( strcmp(name,otl->lookup_name)==0 ) +return( otl ); + } + } +return( NULL ); +} + +void FListAppendScriptLang(FeatureScriptLangList *fl,uint32 script_tag,uint32 lang_tag) { + struct scriptlanglist *sl; + int l; + + for ( sl = fl->scripts; sl!=NULL && sl->script!=script_tag; sl=sl->next ); + if ( sl==NULL ) { + sl = chunkalloc(sizeof(struct scriptlanglist)); + sl->script = script_tag; + sl->next = fl->scripts; + fl->scripts = sl; + } + for ( l=0; llang_cnt && sl->langs[l]!=lang_tag; ++l ); + if ( l>=MAX_LANG && llang_cnt ) { + while ( llang_cnt && sl->morelangs[l-MAX_LANG]!=lang_tag ) + ++l; + } + if ( l>=sl->lang_cnt ) { + if ( llangs[l] = lang_tag; + else { + if ( l%MAX_LANG == 0 ) + sl->morelangs = grealloc(sl->morelangs,l*sizeof(uint32)); + /* We've just allocated MAX_LANG-1 more than we need */ + /* so we don't do quite some many allocations */ + sl->morelangs[l-MAX_LANG] = lang_tag; + } + ++sl->lang_cnt; + } +} + +void FListsAppendScriptLang(FeatureScriptLangList *fl,uint32 script_tag,uint32 lang_tag) { + while ( fl!=NULL ) { + FListAppendScriptLang(fl,script_tag,lang_tag); + fl=fl->next; + } +} + +char *SuffixFromTags(FeatureScriptLangList *fl) { + static struct { uint32 tag; char *suffix; } tags2suffix[] = { + { CHR('v','r','t','2'), "vert" }, /* Will check for vrt2 later */ + { CHR('o','n','u','m'), "oldstyle" }, + { CHR('s','u','p','s'), "superior" }, + { CHR('s','u','b','s'), "inferior" }, + { CHR('s','w','s','h'), "swash" }, + { CHR('f','w','i','d'), "full" }, + { CHR('h','w','i','d'), "hw" }, + { 0 , NULL } + }; + int i; + + while ( fl!=NULL ) { + for ( i=0; tags2suffix[i].tag!=0; ++i ) + if ( tags2suffix[i].tag==fl->featuretag ) +return( copy( tags2suffix[i].suffix )); + fl = fl->next; + } +return( NULL ); +} +#ifdef LUA_FF_LIB +/* ma = State Machine, un = Unknown */ +char *lookup_type_names[2][10] = + { { "us", "ss", "ms", "as", "ls", "cs", "ks", "es", "rk" }, + { "up", "sp", "pp", "ca", "mb", "ml", "mm", "cp", "kp","ep" }}; +#else +char *lookup_type_names[2][10] = + { { N_("Undefined substitution"), N_("Single Substitution"), N_("Multiple Substitution"), + N_("Alternate Substitution"), N_("Ligature Substitution"), N_("Contextual Substitution"), + N_("Contextual Chaining Substitution"), N_("Extension"), + N_("Reverse Contextual Chaining Substitution") }, + { N_("Undefined positioning"), N_("Single Positioning"), N_("Pairwise Positioning (kerning)"), + N_("Cursive attachment"), N_("Mark to base attachment"), + N_("Mark to Ligature attachment"), N_("Mark to Mark attachment"), + N_("Contextual Positioning"), N_("Contextual Chaining Positioning"), + N_("Extension") }}; +#endif + +/* This is a non-ui based copy of a similar list in lookupui.c */ +static struct { + char *text; + uint32 tag; +} localscripts[] = { +/* GT: See the long comment at "Property|New" */ +/* GT: The msgstr should contain a translation of "Arabic", ignore "Script|" */ + { N_("Script|Arabic"), CHR('a','r','a','b') }, + { N_("Script|Aramaic"), CHR('a','r','a','m') }, + { N_("Script|Armenian"), CHR('a','r','m','n') }, + { N_("Script|Avestan"), CHR('a','v','e','s') }, + { N_("Script|Balinese"), CHR('b','a','l','i') }, + { N_("Script|Batak"), CHR('b','a','t','k') }, + { N_("Script|Bengali"), CHR('b','e','n','g') }, + { N_("Script|Bengali2"), CHR('b','n','g','2') }, + { N_("Bliss Symbolics"), CHR('b','l','i','s') }, + { N_("Bopomofo"), CHR('b','o','p','o') }, + { NU_("Brāhmī"), CHR('b','r','a','h') }, + { N_("Braille"), CHR('b','r','a','i') }, + { N_("Script|Buginese"), CHR('b','u','g','i') }, + { N_("Script|Buhid"), CHR('b','u','h','d') }, + { N_("Byzantine Music"), CHR('b','y','z','m') }, + { N_("Canadian Syllabics"), CHR('c','a','n','s') }, + { N_("Carian"), CHR('c','a','r','i') }, + { N_("Cherokee"), CHR('c','h','a','m') }, + { N_("Script|Cham"), CHR('c','h','a','m') }, + { N_("Script|Cherokee"), CHR('c','h','e','r') }, + { N_("Cirth"), CHR('c','i','r','t') }, + { N_("CJK Ideographic"), CHR('h','a','n','i') }, + { N_("Script|Coptic"), CHR('c','o','p','t') }, + { N_("Cypro-Minoan"), CHR('c','p','r','t') }, + { N_("Cypriot syllabary"), CHR('c','p','m','n') }, + { N_("Cyrillic"), CHR('c','y','r','l') }, + { N_("Script|Default"), CHR('D','F','L','T') }, + { N_("Deseret (Mormon)"), CHR('d','s','r','t') }, + { N_("Devanagari"), CHR('d','e','v','a') }, + { N_("Devanagari2"), CHR('d','e','v','2') }, +/* { N_("Egyptian demotic"), CHR('e','g','y','d') }, */ +/* { N_("Egyptian hieratic"), CHR('e','g','y','h') }, */ +/* GT: Someone asked if FontForge actually was prepared generate hieroglyph output */ +/* GT: because of this string. No. But OpenType and Unicode have placeholders for */ +/* GT: dealing with these scripts against the day someone wants to use them. So */ +/* GT: FontForge must be prepared to deal with those placeholders if nothing else. */ +/* { N_("Egyptian hieroglyphs"), CHR('e','g','y','p') }, */ + { N_("Script|Ethiopic"), CHR('e','t','h','i') }, + { N_("Script|Georgian"), CHR('g','e','o','r') }, + { N_("Glagolitic"), CHR('g','l','a','g') }, + { N_("Gothic"), CHR('g','o','t','h') }, + { N_("Script|Greek"), CHR('g','r','e','k') }, + { N_("Script|Gujarati"), CHR('g','u','j','r') }, + { N_("Script|Gujarati2"), CHR('g','j','r','2') }, + { N_("Gurmukhi"), CHR('g','u','r','u') }, + { N_("Gurmukhi2"), CHR('g','u','r','2') }, + { N_("Hangul Jamo"), CHR('j','a','m','o') }, + { N_("Hangul"), CHR('h','a','n','g') }, + { NU_("Script|Hanunóo"), CHR('h','a','n','o') }, + { N_("Script|Hebrew"), CHR('h','e','b','r') }, +/* { N_("Pahawh Hmong"), CHR('h','m','n','g') },*/ +/* { N_("Indus (Harappan)"), CHR('i','n','d','s') },*/ + { N_("Script|Javanese"), CHR('j','a','v','a') }, + { N_("Kayah Li"), CHR('k','a','l','i') }, + { N_("Hiragana & Katakana"), CHR('k','a','n','a') }, + { NU_("Kharoṣṭhī"), CHR('k','h','a','r') }, + { N_("Script|Kannada"), CHR('k','n','d','a') }, + { N_("Script|Kannada2"), CHR('k','n','d','2') }, + { N_("Script|Khmer"), CHR('k','h','m','r') }, + { N_("Script|Kharosthi"), CHR('k','h','a','r') }, + { N_("Script|Lao") , CHR('l','a','o',' ') }, + { N_("Script|Latin"), CHR('l','a','t','n') }, + { NU_("Lepcha (Róng)"), CHR('l','e','p','c') }, + { N_("Script|Limbu"), CHR('l','i','m','b') }, /* Not in ISO 15924 !!!!!, just guessing */ + { N_("Linear A"), CHR('l','i','n','a') }, + { N_("Linear B"), CHR('l','i','n','b') }, + { N_("Lycian"), CHR('l','y','c','i') }, + { N_("Lydian"), CHR('l','y','d','i') }, + { N_("Script|Mandaean"), CHR('m','a','n','d') }, +/* { N_("Mayan hieroglyphs"), CHR('m','a','y','a') },*/ + { NU_("Script|Malayālam"), CHR('m','l','y','m') }, + { NU_("Script|Malayālam2"), CHR('m','l','y','2') }, + { NU_("Mathematical Alphanumeric Symbols"), CHR('m','a','t','h') }, + { N_("Script|Mongolian"), CHR('m','o','n','g') }, + { N_("Musical"), CHR('m','u','s','i') }, + { N_("Script|Myanmar"), CHR('m','y','m','r') }, + { N_("New Tai Lue"), CHR('t','a','l','u') }, + { N_("N'Ko"), CHR('n','k','o',' ') }, + { N_("Ogham"), CHR('o','g','a','m') }, + { N_("Ol Chiki"), CHR('o','l','c','k') }, + { N_("Old Italic (Etruscan, Oscan, etc.)"), CHR('i','t','a','l') }, + { N_("Script|Old Permic"), CHR('p','e','r','m') }, + { N_("Old Persian cuneiform"), CHR('x','p','e','o') }, + { N_("Script|Oriya"), CHR('o','r','y','a') }, + { N_("Script|Oriya2"), CHR('o','r','y','2') }, + { N_("Osmanya"), CHR('o','s','m','a') }, + { N_("Script|Pahlavi"), CHR('p','a','l','v') }, + { N_("Script|Phags-pa"), CHR('p','h','a','g') }, + { N_("Script|Phoenician"), CHR('p','h','n','x') }, + { N_("Phaistos"), CHR('p','h','s','t') }, + { N_("Pollard Phonetic"), CHR('p','l','r','d') }, + { N_("Rejang"), CHR('r','j','n','g') }, + { N_("Rongorongo"), CHR('r','o','r','o') }, + { N_("Runic"), CHR('r','u','n','r') }, + { N_("Saurashtra"), CHR('s','a','u','r') }, + { N_("Shavian"), CHR('s','h','a','w') }, + { N_("Script|Sinhala"), CHR('s','i','n','h') }, + { N_("Script|Sumero-Akkadian Cuneiform"), CHR('x','s','u','x') }, + { N_("Script|Sundanese"), CHR('s','u','n','d') }, + { N_("Script|Syloti Nagri"), CHR('s','y','l','o') }, + { N_("Script|Syriac"), CHR('s','y','r','c') }, + { N_("Script|Tagalog"), CHR('t','g','l','g') }, + { N_("Script|Tagbanwa"), CHR('t','a','g','b') }, + { N_("Tai Le"), CHR('t','a','l','e') }, /* Not in ISO 15924 !!!!!, just guessing */ + { N_("Tai Lu"), CHR('t','a','l','a') }, /* Not in ISO 15924 !!!!!, just guessing */ + { N_("Script|Tamil"), CHR('t','a','m','l') }, + { N_("Script|Tamil2"), CHR('t','m','l','2') }, + { N_("Script|Telugu"), CHR('t','e','l','u') }, + { N_("Script|Telugu2"), CHR('t','e','l','2') }, + { N_("Tengwar"), CHR('t','e','n','g') }, + { N_("Thaana"), CHR('t','h','a','a') }, + { N_("Script|Thai"), CHR('t','h','a','i') }, + { N_("Script|Tibetan"), CHR('t','i','b','t') }, + { N_("Tifinagh (Berber)"), CHR('t','f','n','g') }, + { N_("Script|Ugaritic"), CHR('u','g','r','t') }, /* Not in ISO 15924 !!!!!, just guessing */ + { N_("Script|Vai"), CHR('v','a','i',' ') }, +/* { N_("Visible Speech"), CHR('v','i','s','p') },*/ + { N_("Cuneiform, Ugaritic"), CHR('x','u','g','a') }, + { N_("Script|Yi") , CHR('y','i',' ',' ') }, +/* { N_("Private Use Script 1"), CHR('q','a','a','a') },*/ +/* { N_("Private Use Script 2"), CHR('q','a','a','b') },*/ +/* { N_("Undetermined Script"), CHR('z','y','y','y') },*/ +/* { N_("Uncoded Script"), CHR('z','z','z','z') },*/ + { NULL, 0 } +}; + +void LookupInit(void) { + static int done = false; + int i, j; + + if ( done ) +return; + done = true; + for ( j=0; j<2; ++j ) { + for ( i=0; i<10; ++i ) + if ( lookup_type_names[j][i]!=NULL ) + lookup_type_names[j][i] = S_((char *) lookup_type_names[j][i]); + } + for ( i=0; localscripts[i].text!=NULL; ++i ) + localscripts[i].text = S_(localscripts[i].text); + for ( i=0; friendlies[i].friendlyname!=NULL; ++i ) + friendlies[i].friendlyname = S_(friendlies[i].friendlyname); +} + +char *TagFullName(SplineFont *sf,uint32 tag, int ismac, int onlyifknown) { + char ubuf[200], *end = ubuf+sizeof(ubuf), *setname; + int k; + + if ( ismac==-1 ) + /* Guess */ + ismac = (tag>>24)<' ' || (tag>>24)>0x7e; + + if ( ismac ) { + sprintf( ubuf, "<%d,%d> ", (int) (tag>>16),(int) (tag&0xffff) ); + if ( (setname = PickNameFromMacName(FindMacSettingName(sf,tag>>16,tag&0xffff)))!=NULL ) { + strcat( ubuf, setname ); + free( setname ); + } + } else { + unsigned stag = tag; + if ( tag==CHR('n','u','t','f') ) /* early name that was standardize later as... */ + stag = CHR('a','f','r','c'); /* Stood for nut fractions. "nut" meaning "fits in an en" in old typography-speak => vertical fractions rather than diagonal ones */ + if ( tag==REQUIRED_FEATURE ) { + strcpy(ubuf,_("Required Feature")); + } else { + LookupInit(); + for ( k=0; friendlies[k].tag!=0; ++k ) { + if ( friendlies[k].tag == stag ) + break; + } + ubuf[0] = '\''; + ubuf[1] = tag>>24; + ubuf[2] = (tag>>16)&0xff; + ubuf[3] = (tag>>8)&0xff; + ubuf[4] = tag&0xff; + ubuf[5] = '\''; + ubuf[6] = ' '; + if ( friendlies[k].tag!=0 ) + strncpy(ubuf+7, (char *) friendlies[k].friendlyname,end-ubuf-7); + else if ( onlyifknown ) +return( NULL ); + else + ubuf[7]='\0'; + } + } +return( copy( ubuf )); +} + + +void NameOTLookup(OTLookup *otl,SplineFont *sf) { + char *userfriendly = NULL, *script; + FeatureScriptLangList *fl; + char *lookuptype; + char *format; + struct lookup_subtable *subtable; + int k; + (void)sf; + + LookupInit(); + + if ( otl->lookup_name==NULL ) { + for ( k=0; k<2; ++k ) { +#ifndef LUA_FF_LIB + for ( fl=otl->features; fl!=NULL ; fl=fl->next ) { + /* look first for a feature attached to a default language */ + if ( k==1 || DefaultLangTagInScriptList(fl->scripts,false)!=NULL ) { + userfriendly = TagFullName(sf,fl->featuretag, fl->ismac, true); + if ( userfriendly!=NULL ) + break; + } + } + if ( userfriendly!=NULL ) + break; +#endif + } + if ( userfriendly==NULL ) { + if ( (otl->lookup_type&0xff)>= 0xf0 ) +#ifdef LUA_FF_LIB + lookuptype = "ma"; +#else + lookuptype = _("State Machine"); +#endif + else if ( (otl->lookup_type>>8)<2 && (otl->lookup_type&0xff)<10 ) + lookuptype = _(lookup_type_names[otl->lookup_type>>8][otl->lookup_type&0xff]); + else +#ifdef LUA_FF_LIB + lookuptype = "un"; +#else + lookuptype = S_("LookupType|Unknown"); +#endif + for ( fl=otl->features; fl!=NULL && !fl->ismac; fl=fl->next ); + if ( fl==NULL ) + userfriendly = copy(lookuptype); + else { + userfriendly = galloc( strlen(lookuptype) + 16); +#ifdef LUA_FF_LIB + if ( (otl->lookup_type&0xff)>= 0xf0 ) { + sprintf( userfriendly, "%s_<%d,%d>", lookuptype, + (fl->featuretag>>16), (fl->featuretag&0xffff)); + } else { + sprintf( userfriendly, "%s_%c%c%c%c", lookuptype, + fl->featuretag>>24, + fl->featuretag>>16, + fl->featuretag>>8 , + fl->featuretag ); + } +#else + sprintf( userfriendly, "%s '%c%c%c%c'", lookuptype, + fl->featuretag>>24, + fl->featuretag>>16, + fl->featuretag>>8 , + fl->featuretag ); +#endif + } + } + script = NULL; + if ( fl==NULL ) fl = otl->features; + if ( fl!=NULL && fl->scripts!=NULL ) { + char buf[8]; + int j; + struct scriptlanglist *sl, *found, *found2; + uint32 script_tag = fl->scripts->script; + found = found2 = NULL; + for ( sl = fl->scripts; sl!=NULL; sl=sl->next ) { + if ( sl->script == DEFAULT_SCRIPT ) + /* Ignore it */; + else if ( DefaultLangTagInOneScriptList(sl)) { + if ( found==NULL ) + found = sl; + else { + found = found2 = NULL; + break; + } + } else if ( found2 == NULL ) + found2 = sl; + else + found2 = (struct scriptlanglist *) -1; + } + if ( found==NULL && found2!=NULL && found2 != (struct scriptlanglist *) -1 ) + found = found2; + if ( found!=NULL ) { + script_tag = found->script; + for ( j=0; localscripts[j].text!=NULL && script_tag!=localscripts[j].tag; ++j ); +#ifdef LUA_FF_LIB + buf[0] = fl->scripts->script>>24; + buf[1] = (fl->scripts->script>>16)&0xff; + buf[2] = (fl->scripts->script>>8)&0xff; + buf[3] = fl->scripts->script&0xff; + buf[4] = 0; + script = copy(buf); +#else + if ( localscripts[j].text!=NULL ) + script = copy( S_((char *) localscripts[j].text) ); + else { + buf[0] = '\''; + buf[1] = fl->scripts->script>>24; + buf[2] = (fl->scripts->script>>16)&0xff; + buf[3] = (fl->scripts->script>>8)&0xff; + buf[4] = fl->scripts->script&0xff; + buf[5] = '\''; + buf[6] = 0; + script = copy(buf); + } +#endif + } + } + if ( script!=NULL ) { +/* GT: This string is used to generate a name for each OpenType lookup. */ +/* GT: The %s will be filled with the user friendly name of the feature used to invoke the lookup */ +/* GT: The second %s (if present) is the script */ +/* GT: While the %d is the index into the lookup list and is used to disambiguate it */ +/* GT: In case that is needed */ +#ifdef LUA_FF_LIB + format = "%s_%s_l_%d"; +#else + format = _("%s in %s lookup %d"); +#endif + otl->lookup_name = galloc( strlen(userfriendly)+strlen(format)+strlen(script)+10 ); + sprintf( otl->lookup_name, format, userfriendly, script, otl->lookup_index ); + } else { +#ifdef LUA_FF_LIB + format = "%s_l_%d"; +#else + format = _("%s lookup %d"); +#endif + otl->lookup_name = galloc( strlen(userfriendly)+strlen(format)+10 ); + sprintf( otl->lookup_name, format, userfriendly, otl->lookup_index ); + } + free(script); + free(userfriendly); + } + + if ( otl->subtables==NULL ) + /* IError( _("Lookup with no subtables"))*/; + else { + int cnt = 0; + for ( subtable = otl->subtables; subtable!=NULL; subtable=subtable->next, ++cnt ) + if ( subtable->subtable_name==NULL ) { + if ( subtable==otl->subtables && subtable->next==NULL ) +/* GT: This string is used to generate a name for an OpenType lookup subtable. */ +/* GT: %s is the lookup name */ +#ifdef LUA_FF_LIB + format = "%s_s"; +#else + format = _("%s subtable"); +#endif + else if ( subtable->per_glyph_pst_or_kern ) +/* GT: This string is used to generate a name for an OpenType lookup subtable. */ +/* GT: %s is the lookup name, %d is the index of the subtable in the lookup */ +#ifdef LUA_FF_LIB + format = "%s_g_%d"; +#else + format = _("%s per glyph data %d"); +#endif + else if ( subtable->kc!=NULL ) +#ifdef LUA_FF_LIB + format = "%s_k_%d"; +#else + format = _("%s kerning class %d"); +#endif + else if ( subtable->fpst!=NULL ) +#ifdef LUA_FF_LIB + format = "%s_c_%d"; +#else + format = _("%s contextual %d"); +#endif + else if ( subtable->anchor_classes ) +#ifdef LUA_FF_LIB + format = "%s_a_%d"; +#else + format = _("%s anchor %d"); +#endif + else { + IError("Subtable status not filled in for %dth subtable of %s", cnt, otl->lookup_name ); + format = "%s !!!!!!!! %d"; + } + subtable->subtable_name = galloc( strlen(otl->lookup_name)+strlen(format)+10 ); + sprintf( subtable->subtable_name, format, otl->lookup_name, cnt ); + } + } + if ( otl->lookup_type==gsub_ligature ) { + for ( fl=otl->features; fl!=NULL; fl=fl->next ) + if ( fl->featuretag==CHR('l','i','g','a') || fl->featuretag==CHR('r','l','i','g')) + otl->store_in_afm = true; + } + + if ( otl->lookup_type==gsub_single ) + for ( subtable = otl->subtables; subtable!=NULL; subtable=subtable->next ) + subtable->suffix = SuffixFromTags(otl->features); +} + +static void LangOrder(struct scriptlanglist *sl) { + int i,j; + uint32 lang, lang2; + + for ( i=0; ilang_cnt; ++i ) { + lang = ilangs[i] : sl->morelangs[i-MAX_LANG]; + for ( j=i+1; jlang_cnt; ++j ) { + lang2 = jlangs[j] : sl->morelangs[j-MAX_LANG]; + if ( lang>lang2 ) { + if ( ilangs[i] = lang2; + else + sl->morelangs[i-MAX_LANG] = lang2; + if ( jlangs[j] = lang; + else + sl->morelangs[j-MAX_LANG] = lang; + lang = lang2; + } + } + } +} + +static struct scriptlanglist *SLOrder(struct scriptlanglist *sl) { + int i,j, cnt; + struct scriptlanglist *sl2, *space[30], **allocked=NULL, **test = space; + + for ( sl2=sl, cnt=0; sl2!=NULL; sl2=sl2->next, ++cnt ) + LangOrder(sl2); + if ( cnt<=1 ) +return( sl ); + if ( cnt>30 ) + test = allocked = galloc(cnt*sizeof(struct scriptlanglist *)); + for ( sl2=sl, cnt=0; sl2!=NULL; sl2=sl2->next, ++cnt ) + test[cnt] = sl2; + for ( i=0; iscript > test[j]->script ) { + struct scriptlanglist *temp; + temp = test[i]; + test[i] = test[j]; + test[j] = temp; + } + } + sl = test[0]; + for ( i=1; inext = test[i]; + test[i-1]->next = NULL; + free( allocked ); +return( sl ); +} + +FeatureScriptLangList *FLOrder(FeatureScriptLangList *fl) { + int i,j, cnt; + FeatureScriptLangList *fl2, *space[30], **allocked=NULL, **test = space; + + for ( fl2=fl, cnt=0; fl2!=NULL; fl2=fl2->next, ++cnt ) + fl2->scripts = SLOrder(fl2->scripts); + if ( cnt<=1 ) +return( fl ); + if ( cnt>30 ) + test = allocked = galloc(cnt*sizeof(FeatureScriptLangList *)); + for ( fl2=fl, cnt=0; fl2!=NULL; fl2=fl2->next, ++cnt ) + test[cnt] = fl2; + for ( i=0; ifeaturetag > test[j]->featuretag ) { + FeatureScriptLangList *temp; + temp = test[i]; + test[i] = test[j]; + test[j] = temp; + } + } + fl = test[0]; + for ( i=1; inext = test[i]; + test[i-1]->next = NULL; + free( allocked ); +return( fl ); +} + +struct scriptlanglist *SLCopy(struct scriptlanglist *sl) { + struct scriptlanglist *newsl; + + newsl = chunkalloc(sizeof(struct scriptlanglist)); + *newsl = *sl; + newsl->next = NULL; + + if ( sl->lang_cnt>MAX_LANG ) { + newsl->morelangs = galloc((newsl->lang_cnt-MAX_LANG)*sizeof(uint32)); + memcpy(newsl->morelangs,sl->morelangs,(newsl->lang_cnt-MAX_LANG)*sizeof(uint32)); + } +return( newsl ); +} + +struct scriptlanglist *SListCopy(struct scriptlanglist *sl) { + struct scriptlanglist *head=NULL, *last=NULL, *cur; + + for ( ; sl!=NULL; sl=sl->next ) { + cur = SLCopy(sl); + if ( head==NULL ) + head = cur; + else + last->next = cur; + last = cur; + } +return( head ); +} + +FeatureScriptLangList *FeatureListCopy(FeatureScriptLangList *fl) { + FeatureScriptLangList *newfl; + + if ( fl==NULL ) +return( NULL ); + + newfl = chunkalloc(sizeof(FeatureScriptLangList)); + *newfl = *fl; + newfl->next = NULL; + + newfl->scripts = SListCopy(fl->scripts); +return( newfl ); +} + +static void LangMerge(struct scriptlanglist *into, struct scriptlanglist *from) { + int i,j; + uint32 flang, tlang; + + for ( i=0 ; ilang_cnt; ++i ) { + flang = ilangs[i] : from->morelangs[i-MAX_LANG]; + for ( j=0; jlang_cnt; ++j ) { + tlang = jlangs[j] : into->morelangs[j-MAX_LANG]; + if ( tlang==flang ) + break; + } + if ( j==into->lang_cnt ) { + if ( into->lang_cntlangs[into->lang_cnt++] = flang; + else { + into->morelangs = grealloc(into->morelangs,(into->lang_cnt+1-MAX_LANG)*sizeof(uint32)); + into->morelangs[into->lang_cnt++-MAX_LANG] = flang; + } + } + } +} + +void SLMerge(FeatureScriptLangList *into, struct scriptlanglist *fsl) { + struct scriptlanglist *isl; + + for ( ; fsl!=NULL; fsl = fsl->next ) { + for ( isl=into->scripts; isl!=NULL; isl=isl->next ) { + if ( fsl->script==isl->script ) + break; + } + if ( isl!=NULL ) + LangMerge(isl,fsl); + else { + isl = SLCopy(fsl); + isl->next = into->scripts; + into->scripts = isl; + } + } +} + +void FLMerge(OTLookup *into, OTLookup *from) { + /* Merge the feature list from "from" into "into" */ + FeatureScriptLangList *ifl, *ffl; + + /* first check for common featuretags and merge the scripts of each */ + for ( ffl = from->features; ffl!=NULL; ffl = ffl->next ) { + for ( ifl=into->features; ifl!=NULL; ifl=ifl->next ) { + if ( ffl->featuretag==ifl->featuretag ) + break; + } + if ( ifl!=NULL ) + SLMerge(ffl,ifl->scripts); + else { + ifl = FeatureListCopy(ffl); + ifl->next = into->features; + into->features = ifl; + } + } + into->features = FLOrder(into->features); +} + +void SFSubTablesMerge(SplineFont *_sf,struct lookup_subtable *subfirst, + struct lookup_subtable *subsecond) { + unsigned lookup_type = subfirst->lookup->lookup_type; + int gid,k,isv; + SplineChar *sc; + SplineFont *sf = _sf; + PST *pst, *fpst, *spst, *pstprev, *pstnext; + KernPair *fkp, *skp, *kpprev, *kpnext; + AnchorClass *ac; + + if ( lookup_type != subsecond->lookup->lookup_type ) { + IError("Attempt to merge lookup subtables with mismatch types"); +return; + } + if ( lookup_type != gsub_single && + lookup_type != gsub_multiple && + lookup_type != gsub_alternate && + lookup_type != gsub_ligature && + lookup_type != gpos_single && + lookup_type != gpos_pair && + lookup_type != gpos_cursive && + lookup_type != gpos_mark2base && + lookup_type != gpos_mark2ligature && + lookup_type != gpos_mark2mark ) { + IError("Attempt to merge lookup subtables with bad types"); +return; + } else if ( subfirst->kc!=NULL || subsecond->kc != NULL ) { + IError("Attempt to merge lookup subtables with kerning classes"); +return; + } + + if ( lookup_type==gpos_cursive || lookup_type==gpos_mark2base || + lookup_type==gpos_mark2ligature || lookup_type==gpos_mark2mark ) { + for ( ac = sf->anchor; ac!=NULL ; ac=ac->next ) + if ( ac->subtable == subsecond ) + ac->subtable = subfirst; + } else { + k=0; + do { + sf = _sf->subfontcnt==0 ? _sf : _sf->subfonts[k]; + for ( gid=0; gidglyphcnt; ++gid ) if ( (sc=sf->glyphs[gid])!=NULL ) { + if ( lookup_type==gsub_single || lookup_type==gsub_multiple || + lookup_type==gsub_alternate || lookup_type==gpos_single ) { + fpst = spst = NULL; + for ( pst=sc->possub; pst!=NULL; pst=pst->next ) { + if ( pst->subtable == subfirst ) { + fpst = pst; + if ( spst!=NULL ) + break; + } else if ( pst->subtable == subsecond ) { + spst = pst; + if ( fpst!=NULL ) + break; + } + } + if ( fpst==NULL && spst!=NULL ) + spst->subtable = subfirst; + else if ( spst!=NULL ) { + LogError(_("The glyph, %s, contains a %s from %s and one from %s.\nThe one from %s will be removed.\n"), + sc->name, + lookup_type==gpos_single ? _("positioning") : _("substitution"), + subfirst->subtable_name, subsecond->subtable_name, + subsecond->subtable_name ); + pstprev = NULL; + for ( pst=sc->possub; pst!=NULL && pst!=spst; pstprev=pst, pst=pst->next ); + if ( pstprev==NULL ) + sc->possub = spst->next; + else + pstprev = spst->next; + spst->next = NULL; + PSTFree(spst); + } + } else if ( lookup_type==gsub_ligature || lookup_type==gpos_pair ) { + pstprev = NULL; + for ( spst=sc->possub; spst!=NULL ; spst = pstnext ) { + pstnext = spst->next; + if ( spst->subtable == subsecond ) { + for ( fpst=sc->possub; fpst!=NULL; fpst=fpst->next ) { + if ( fpst->subtable == subfirst && + strcmp(fpst->u.lig.components,spst->u.lig.components)==0 ) + break; + } + if ( fpst==NULL ) + spst->subtable = subfirst; + else { + LogError(_("The glyph, %s, contains the same %s from %s and from %s.\nThe one from %s will be removed.\n"), + sc->name, + lookup_type==gsub_ligature ? _("ligature") : _("kern pair"), + subfirst->subtable_name, subsecond->subtable_name, + subsecond->subtable_name ); + if ( pstprev==NULL ) + sc->possub = pstnext; + else + pstprev->next = pstnext; + spst->next = NULL; + PSTFree(spst); + spst = pstprev; + } + } + pstprev = spst; + } + for ( isv=0; isv<2; ++isv ) { + kpprev = NULL; + for ( skp=isv ? sc->vkerns : sc->kerns; skp!=NULL ; skp = kpnext ) { + kpnext = skp->next; + if ( skp->subtable == subsecond ) { + for ( fkp=isv ? sc->vkerns : sc->kerns; fkp!=NULL; fkp=fkp->next ) { + if ( fkp->subtable == subfirst && fkp->sc==skp->sc ) + break; + } + if ( fkp==NULL ) + skp->subtable = subfirst; + else { + LogError(_("The glyph, %s, contains the same kern pair from %s and from %s.\nThe one from %s will be removed.\n"), + sc->name, + subfirst->subtable_name, subsecond->subtable_name, + subsecond->subtable_name ); + if ( kpprev!=NULL ) + kpprev->next = kpnext; + else if ( isv ) + sc->vkerns = kpnext; + else + sc->kerns = kpnext; + skp->next = NULL; + KernPairsFree(skp); + skp = kpprev; + } + } + kpprev = skp; + } + } + } + } + ++k; + } while ( k<_sf->subfontcnt ); + } +} + +/* ************************************************************************** */ +/* ******************************* copy lookup ****************************** */ +/* ************************************************************************** */ + +static char **ClassCopy(int class_cnt,char **classes) { + char **newclasses; + int i; + + if ( classes==NULL || class_cnt==0 ) +return( NULL ); + newclasses = galloc(class_cnt*sizeof(char *)); + for ( i=0; ilcnt; ++l ) { + if ( mc->lks[l].from == from_otl ) +return( mc->lks[l].to ); + } + + newname = strconcat(mc->prefix,from_otl->lookup_name); + to_nested_otl = SFFindLookup(mc->sf_to,newname); + free(newname); + if ( to_nested_otl==NULL ) + to_nested_otl = _OTLookupCopyInto(mc, from_otl, (OTLookup *) -1, true ); +return( to_nested_otl ); +} + +static KernClass *SF_AddKernClass(struct sfmergecontext *mc,KernClass *kc, + struct lookup_subtable *sub ) { + KernClass *newkc; + + newkc = chunkalloc(sizeof(KernClass)); + *newkc = *kc; + newkc->subtable = sub; + if ( sub->vertical_kerning ) { + newkc->next = mc->sf_to->vkerns; + mc->sf_to->vkerns = newkc; + } else { + newkc->next = mc->sf_to->kerns; + mc->sf_to->kerns = newkc; + } + + newkc->firsts = ClassCopy(newkc->first_cnt,newkc->firsts); + newkc->seconds = ClassCopy(newkc->second_cnt,newkc->seconds); + newkc->offsets = galloc(newkc->first_cnt*newkc->second_cnt*sizeof(int16)); + memcpy(newkc->offsets,kc->offsets,newkc->first_cnt*newkc->second_cnt*sizeof(int16)); +return( newkc ); +} + +static FPST *SF_AddFPST(struct sfmergecontext *mc,FPST *fpst, + struct lookup_subtable *sub ) { + FPST *newfpst; + int i, k, cur; + + newfpst = chunkalloc(sizeof(FPST)); + *newfpst = *fpst; + newfpst->subtable = sub; + newfpst->next = mc->sf_to->possub; + mc->sf_to->possub = newfpst; + + newfpst->nclass = ClassCopy(newfpst->nccnt,newfpst->nclass); + newfpst->bclass = ClassCopy(newfpst->bccnt,newfpst->bclass); + newfpst->fclass = ClassCopy(newfpst->fccnt,newfpst->fclass); + + newfpst->rules = galloc(newfpst->rule_cnt*sizeof(struct fpst_rule)); + memcpy(newfpst->rules,fpst->rules,newfpst->rule_cnt*sizeof(struct fpst_rule)); + + cur = 0; + for ( i=0; irule_cnt; ++i ) { + struct fpst_rule *r = &newfpst->rules[i], *oldr = &fpst->rules[i]; + + r->lookups = galloc(r->lookup_cnt*sizeof(struct seqlookup)); + memcpy(r->lookups,oldr->lookups,r->lookup_cnt*sizeof(struct seqlookup)); + for ( k=0; klookup_cnt; ++k ) { + r->lookups[k].lookup = OTLookupCopyNested(mc, + r->lookups[k].lookup); + } + + switch ( newfpst->format ) { + case pst_glyphs: + r->u.glyph.names = copy( r->u.glyph.names ); + r->u.glyph.back = copy( r->u.glyph.back ); + r->u.glyph.fore = copy( r->u.glyph.fore ); + break; + case pst_class: + r->u.class.nclasses = galloc( r->u.class.ncnt*sizeof(uint16)); + memcpy(r->u.class.nclasses,oldr->u.class.nclasses, r->u.class.ncnt*sizeof(uint16)); + r->u.class.bclasses = galloc( r->u.class.bcnt*sizeof(uint16)); + memcpy(r->u.class.bclasses,oldr->u.class.bclasses, r->u.class.ncnt*sizeof(uint16)); + r->u.class.fclasses = galloc( r->u.class.fcnt*sizeof(uint16)); + memcpy(r->u.class.fclasses,oldr->u.class.fclasses, r->u.class.fcnt*sizeof(uint16)); + break; + case pst_coverage: + r->u.coverage.ncovers = ClassCopy( r->u.coverage.ncnt, r->u.coverage.ncovers ); + r->u.coverage.bcovers = ClassCopy( r->u.coverage.bcnt, r->u.coverage.bcovers ); + r->u.coverage.fcovers = ClassCopy( r->u.coverage.fcnt, r->u.coverage.fcovers ); + break; + case pst_reversecoverage: + r->u.rcoverage.ncovers = ClassCopy( r->u.rcoverage.always1, r->u.rcoverage.ncovers ); + r->u.rcoverage.bcovers = ClassCopy( r->u.rcoverage.bcnt, r->u.rcoverage.bcovers ); + r->u.rcoverage.fcovers = ClassCopy( r->u.rcoverage.fcnt, r->u.rcoverage.fcovers ); + r->u.rcoverage.replacements = copy( r->u.rcoverage.replacements ); + break; + } + } +return( newfpst ); +} + +static ASM *SF_AddASM(struct sfmergecontext *mc,ASM *sm, struct lookup_subtable *sub ) { + ASM *newsm; + int i; + + newsm = chunkalloc(sizeof(ASM)); + *newsm = *sm; + newsm->subtable = sub; + newsm->next = mc->sf_to->sm; + mc->sf_to->sm = newsm; + mc->sf_to->changed = true; + newsm->classes = ClassCopy(newsm->class_cnt, newsm->classes); + newsm->state = galloc(newsm->class_cnt*newsm->state_cnt*sizeof(struct asm_state)); + memcpy(newsm->state,sm->state, + newsm->class_cnt*newsm->state_cnt*sizeof(struct asm_state)); + if ( newsm->type == asm_kern ) { + for ( i=newsm->class_cnt*newsm->state_cnt-1; i>=0; --i ) { + newsm->state[i].u.kern.kerns = galloc(newsm->state[i].u.kern.kcnt*sizeof(int16)); + memcpy(newsm->state[i].u.kern.kerns,sm->state[i].u.kern.kerns,newsm->state[i].u.kern.kcnt*sizeof(int16)); + } + } else if ( newsm->type == asm_insert ) { + for ( i=0; iclass_cnt*newsm->state_cnt; ++i ) { + struct asm_state *this = &newsm->state[i]; + this->u.insert.mark_ins = copy(this->u.insert.mark_ins); + this->u.insert.cur_ins = copy(this->u.insert.cur_ins); + } + } else if ( newsm->type == asm_context ) { + for ( i=0; iclass_cnt*newsm->state_cnt; ++i ) { + newsm->state[i].u.context.mark_lookup = OTLookupCopyNested(mc, + newsm->state[i].u.context.mark_lookup); + newsm->state[i].u.context.cur_lookup = OTLookupCopyNested(mc, + newsm->state[i].u.context.cur_lookup); + } + } +return( newsm ); +} + +static SplineChar *SCFindOrMake(SplineFont *into,SplineChar *fromsc) { + int to_index; + + if ( into->cidmaster==NULL && into->fv!=NULL ) { + to_index = SFFindSlot(into,into->fv->map,fromsc->unicodeenc,fromsc->name); + if ( to_index==-1 ) +return( NULL ); +return( SFMakeChar(into,into->fv->map,to_index)); + } +return( SFGetChar(into,fromsc->unicodeenc,fromsc->name)); +} + +static void SF_SCAddAP(SplineChar *tosc,AnchorPoint *ap, AnchorClass *newac) { + AnchorPoint *newap; + + newap = chunkalloc(sizeof(AnchorPoint)); + *newap = *ap; + newap->anchor = newac; + newap->next = tosc->anchor; + tosc->anchor = newap; +} + +static void SF_AddAnchorClasses(struct sfmergecontext *mc, + struct lookup_subtable *from_sub, struct lookup_subtable *sub ) { + AnchorClass *ac, *nac; + int k, gid; + SplineFont *fsf; + AnchorPoint *ap; + SplineChar *fsc, *tsc; + + for ( ac=mc->sf_from->anchor; ac!=NULL; ac=ac->next ) if ( ac->subtable==from_sub ) { + nac = chunkalloc(sizeof(AnchorClass)); + *nac = *ac; + nac->subtable = sub; + nac->name = strconcat(mc->prefix,nac->name); + nac->next = mc->sf_to->anchor; + mc->sf_to->anchor = nac; + + k=0; + do { + fsf = mc->sf_from->subfontcnt==0 ? mc->sf_from : mc->sf_from->subfonts[k]; + for ( gid = 0; gidglyphcnt; ++gid ) if ( (fsc = fsf->glyphs[gid])!=NULL ) { + for ( ap=fsc->anchor; ap!=NULL; ap=ap->next ) { + if ( ap->anchor==ac ) { + tsc = SCFindOrMake(mc->sf_to,fsc); + if ( tsc==NULL ) + break; + SF_SCAddAP(tsc,ap,nac); + } + } + } + ++k; + } while ( ksf_from->subfontcnt ); + } +} + +static int SF_SCAddPST(SplineChar *tosc,PST *pst,struct lookup_subtable *sub) { + PST *newpst; + + newpst = chunkalloc(sizeof(PST)); + *newpst = *pst; + newpst->subtable = sub; + newpst->next = tosc->possub; + tosc->possub = newpst; + + switch( newpst->type ) { + case pst_pair: + newpst->u.pair.paired = copy(pst->u.pair.paired); + newpst->u.pair.vr = chunkalloc(sizeof(struct vr [2])); + memcpy(newpst->u.pair.vr,pst->u.pair.vr,sizeof(struct vr [2])); + break; + case pst_ligature: + newpst->u.lig.lig = tosc; + /* Fall through */ + case pst_substitution: + case pst_alternate: + case pst_multiple: + newpst->u.subs.variant = copy(pst->u.subs.variant); + break; + } +return( true ); +} + +static int SF_SCAddKP(SplineChar *tosc,KernPair *kp,struct lookup_subtable *sub, + int isvkern, SplineFont *to_sf ) { + SplineChar *tosecond; + KernPair *newkp; + + tosecond = SFGetChar(to_sf,kp->sc->unicodeenc,kp->sc->name); + if ( tosecond==NULL ) +return( false ); + + newkp = chunkalloc(sizeof(KernPair)); + *newkp = *kp; + newkp->subtable = sub; + newkp->sc = tosecond; + if ( isvkern ) { + newkp->next = tosc->vkerns; + tosc->vkerns = newkp; + } else { + newkp->next = tosc->kerns; + tosc->kerns = newkp; + } +return(true); +} + +static void SF_AddPSTKern(struct sfmergecontext *mc,struct lookup_subtable *from_sub, struct lookup_subtable *sub) { + int k, gid, isv; + SplineFont *fsf; + SplineChar *fsc, *tsc; + PST *pst; + KernPair *kp; + int iskern = sub->lookup->lookup_type==gpos_pair; + + k=0; + do { + fsf = mc->sf_from->subfontcnt==0 ? mc->sf_from : mc->sf_from->subfonts[k]; + for ( gid = 0; gidglyphcnt; ++gid ) if ( (fsc = fsf->glyphs[gid])!=NULL ) { + tsc = (SplineChar *) -1; + for ( pst = fsc->possub; pst!=NULL; pst=pst->next ) { + if ( pst->subtable==from_sub ) { + if ( tsc==(SplineChar *) -1 ) { + tsc = SCFindOrMake(mc->sf_to,fsc); + if ( tsc==NULL ) + break; + } + SF_SCAddPST(tsc,pst,sub); + } + } + if ( tsc!=NULL && iskern ) { + for ( isv=0; isv<2 && tsc!=NULL; ++isv ) { + for ( kp= isv ? fsc->vkerns : fsc->kerns; kp!=NULL; kp=kp->next ) { + if ( kp->subtable==sub ) { + /* Kerning data tend to be individualistic. Only copy if */ + /* glyphs exist */ + if ( tsc==(SplineChar *) -1 ) { + tsc = SFGetChar(mc->sf_to,fsc->unicodeenc,fsc->name); + if ( tsc==NULL ) + break; + } + SF_SCAddKP(tsc,kp,sub,isv,mc->sf_to); + } + } + } + } + } + ++k; + } while ( ksf_from->subfontcnt ); +} + +int _FeatureOrderId( int isgpos,uint32 tag ) { + /* This is the order in which features should be executed */ + + if ( !isgpos ) switch ( tag ) { +/* GSUB ordering */ + case CHR('c','c','m','p'): /* Must be first? */ +return( -2 ); + case CHR('l','o','c','l'): /* Language dependent letter forms (serbian uses some different glyphs than russian) */ +return( -1 ); + case CHR('i','s','o','l'): +return( 0 ); + case CHR('j','a','l','t'): /* must come after 'isol' */ +return( 1 ); + case CHR('f','i','n','a'): +return( 2 ); + case CHR('f','i','n','2'): + case CHR('f','a','l','t'): /* must come after 'fina' */ +return( 3 ); + case CHR('f','i','n','3'): +return( 4 ); + case CHR('m','e','d','i'): +return( 5 ); + case CHR('m','e','d','2'): +return( 6 ); + case CHR('i','n','i','t'): +return( 7 ); + + case CHR('r','t','l','a'): +return( 100 ); + case CHR('s','m','c','p'): case CHR('c','2','s','c'): +return( 200 ); + + case CHR('r','l','i','g'): +return( 300 ); + case CHR('c','a','l','t'): +return( 301 ); + case CHR('l','i','g','a'): +return( 302 ); + case CHR('d','l','i','g'): case CHR('h','l','i','g'): +return( 303 ); + case CHR('c','s','w','h'): +return( 304 ); + case CHR('m','s','e','t'): +return( 305 ); + + case CHR('f','r','a','c'): +return( 306 ); + +/* Indic processing */ + case CHR('n','u','k','t'): + case CHR('p','r','e','f'): +return( 301 ); + case CHR('a','k','h','n'): +return( 302 ); + case CHR('r','p','h','f'): +return( 303 ); + case CHR('b','l','w','f'): +return( 304 ); + case CHR('h','a','l','f'): + case CHR('a','b','v','f'): +return( 305 ); + case CHR('p','s','t','f'): +return( 306 ); + case CHR('v','a','t','u'): +return( 307 ); + + case CHR('p','r','e','s'): +return( 310 ); + case CHR('b','l','w','s'): +return( 311 ); + case CHR('a','b','v','s'): +return( 312 ); + case CHR('p','s','t','s'): +return( 313 ); + case CHR('c','l','i','g'): +return( 314 ); + + case CHR('h','a','l','n'): +return( 320 ); +/* end indic ordering */ + + case CHR('a','f','r','c'): + case CHR('l','j','m','o'): + case CHR('v','j','m','o'): +return( 350 ); + case CHR('v','r','t','2'): case CHR('v','e','r','t'): +return( 1010 ); /* Documented to come last */ + +/* Unknown things come after everything but vert/vrt2 */ + default: +return( 1000 ); + + } else switch ( tag ) { +/* GPOS ordering */ + case CHR('c','u','r','s'): +return( 0 ); + case CHR('d','i','s','t'): +return( 100 ); + case CHR('b','l','w','m'): +return( 201 ); + case CHR('a','b','v','m'): +return( 202 ); + case CHR('k','e','r','n'): +return( 300 ); + case CHR('m','a','r','k'): +return( 400 ); + case CHR('m','k','m','k'): +return( 500 ); +/* Unknown things come after everything */ + default: +return( 1000 ); + } +} + +int FeatureOrderId( int isgpos,FeatureScriptLangList *fl ) { + int pos = 9999, temp; + + if ( fl==NULL ) +return( 0 ); + + while ( fl!=NULL ) { + temp = _FeatureOrderId(isgpos,fl->featuretag ); + if ( tempnext; + } +return( pos ); +} + +void SortInsertLookup(SplineFont *sf, OTLookup *newotl) { + int isgpos = newotl->lookup_type>=gpos_start; + int pos; + OTLookup *prev, *otl; + + pos = FeatureOrderId(isgpos,newotl->features); + for ( prev=NULL, otl= isgpos ? sf->gpos_lookups : sf->gsub_lookups ; + otl!=NULL && FeatureOrderId(isgpos,newotl->features)next ); + newotl->next = otl; + if ( prev!=NULL ) + prev->next = newotl; + else if ( isgpos ) + sf->gpos_lookups = newotl; + else + sf->gsub_lookups = newotl; +} + +/* Before may be: + * A lookup in into_sf, in which case insert new lookup before it + * NULL , in which case insert new lookup at end + * -1 , in which case insert new lookup at start + * -2 , try to guess a good position +*/ +static void OrderNewLookup(SplineFont *into_sf,OTLookup *otl,OTLookup *before) { + int isgpos = otl->lookup_type>=gpos_start; + OTLookup **head = isgpos ? &into_sf->gpos_lookups : &into_sf->gsub_lookups; + OTLookup *prev; + + if ( before == (OTLookup *) -2 ) + SortInsertLookup(into_sf,otl); + else if ( before == (OTLookup *) -1 || *head==NULL || *head==before ) { + otl->next = *head; + *head = otl; + } else { + for ( prev= *head; prev->next!=NULL && prev->next!=before ; prev=prev->next ); + otl->next = prev->next; + prev->next = otl; + } +} + +static OTLookup *_OTLookupCopyInto(struct sfmergecontext *mc, + OTLookup *from_otl, OTLookup *before, int do_contents) { + OTLookup *otl; + struct lookup_subtable *sub, *last, *from_sub; + int scnt, l; + + for ( l=0; llcnt; ++l ) { + if ( mc->lks[l].from == from_otl ) { + if ( mc->lks[l].old ) +return( mc->lks[l].to ); + else + break; + } + } + + if ( l>=mc->lmax ) + mc->lks = grealloc(mc->lks,(mc->lmax += 20)*sizeof(struct lookup_cvt)); + mc->sf_to->changed = true; + + if ( l>=mc->lcnt ) { + otl = chunkalloc(sizeof(OTLookup)); + *otl = *from_otl; + memset(&mc->lks[l],0,sizeof(mc->lks[l])); + mc->lks[l].from = from_otl; mc->lks[l].to = otl; ++mc->lcnt; + otl->lookup_name = strconcat(mc->prefix,from_otl->lookup_name); + otl->features = FeatureListCopy(from_otl->features); + otl->next = NULL; otl->subtables = NULL; + OrderNewLookup(mc->sf_to,otl,before); + if ( !do_contents ) + FIOTLookupCopyInto(mc->sf_to,mc->sf_from, from_otl, otl, 0, before); + } else + otl = mc->lks[l].to; + if ( !do_contents ) +return( otl ); + + last = NULL; + scnt = 0; + for ( from_sub = from_otl->subtables; from_sub!=NULL; from_sub=from_sub->next ) { + sub = chunkalloc(sizeof(struct lookup_subtable)); + *sub = *from_sub; + sub->lookup = otl; + sub->subtable_name = strconcat(mc->prefix,from_sub->subtable_name); + sub->suffix = copy(sub->suffix); + if ( last==NULL ) + otl->subtables = sub; + else + last->next = sub; + last = sub; + if ( from_sub->kc!=NULL ) + sub->kc = SF_AddKernClass(mc, from_sub->kc, sub); + else if ( from_sub->fpst!=NULL ) + sub->fpst = SF_AddFPST(mc, from_sub->fpst, sub); + else if ( from_sub->sm!=NULL ) + sub->sm = SF_AddASM(mc, from_sub->sm, sub); + else if ( from_sub->anchor_classes ) + SF_AddAnchorClasses(mc, from_sub, sub); + else + SF_AddPSTKern(mc, from_sub, sub); + ++scnt; + } + FIOTLookupCopyInto(mc->sf_to,mc->sf_from, from_otl, otl, scnt, before); +return( otl ); +} + +static int NeedsPrefix(SplineFont *into_sf,SplineFont *from_sf, OTLookup **list) { + struct lookup_subtable *from_sub; + int i,j,k; + OTLookup *sublist[2]; + + sublist[1] = NULL; + + if ( list==NULL || list[0]==NULL ) +return( false ); + for ( k=0; list[k]!=NULL; ++k ) { + OTLookup *from_otl = list[k]; + if ( SFFindLookup(into_sf,from_otl->lookup_name)!=NULL ) +return( true ); + for ( from_sub = from_otl->subtables; from_sub!=NULL; from_sub=from_sub->next ) { + if ( from_sub->fpst!=NULL ) { + for ( i=0; ifpst->rule_cnt; ++i ) { + struct fpst_rule *r = &from_sub->fpst->rules[i]; + for ( j=0; jlookup_cnt; ++j ) { + sublist[0] = r->lookups[j].lookup; + if ( NeedsPrefix(into_sf,from_sf, sublist)) +return( true ); + } + } + } else if ( from_sub->sm!=NULL && from_sub->sm->type==asm_context ) { + for ( i=0; ism->class_cnt*from_sub->sm->state_cnt; ++i ) { + sublist[0] = from_sub->sm->state[i].u.context.mark_lookup; + if ( NeedsPrefix(into_sf,from_sf,sublist)) +return( true ); + sublist[0] = from_sub->sm->state[i].u.context.cur_lookup; + if ( NeedsPrefix(into_sf,from_sf,sublist)) +return( true ); + } + } + } + } +return( false ); +} + +OTLookup *OTLookupCopyInto(SplineFont *into_sf,SplineFont *from_sf, OTLookup *from_otl) { + OTLookup *newotl, *list[2]; + struct sfmergecontext mc; + + memset(&mc,0,sizeof(mc)); + mc.sf_from = from_sf; mc.sf_to = into_sf; + + list[0] = from_otl; list[1] = NULL; + mc.prefix = NeedsPrefix(into_sf,from_sf,list) + ? strconcat(from_sf->fontname,"-") : copy(""); + newotl = _OTLookupCopyInto(&mc,from_otl,(OTLookup *) -2,true); + free(mc.lks); + free(mc.prefix); +return( newotl ); +} + +void OTLookupsCopyInto(SplineFont *into_sf,SplineFont *from_sf, + OTLookup **list, OTLookup *before) { + int i, do_contents; + struct sfmergecontext mc; + + memset(&mc,0,sizeof(mc)); + mc.sf_from = from_sf; mc.sf_to = into_sf; + + mc.prefix = NeedsPrefix(into_sf,from_sf,list) + ? strconcat(from_sf->fontname,"-") : copy(""); + for ( i=0; list[i]!=NULL; ++i ); + mc.lks = galloc((mc.lmax=i+5)*sizeof(struct lookup_cvt)); + /* First create all the lookups and position them in the right order */ + /* then create subtables (which may in turn create some new lookups */ + /* for contextual lookups which invoke other lookups, don't care how */ + /* those nested lookups are ordered) */ + for ( do_contents=0; do_contents<2; ++do_contents ) + for ( i=0; list[i]!=NULL; ++i ) + (void) _OTLookupCopyInto(&mc,list[i],before,do_contents); + free(mc.lks); + free(mc.prefix); +} + +/* ************************************************************************** */ +/* ****************************** Apply lookups ***************************** */ +/* ************************************************************************** */ + +struct lookup_data { + struct opentype_str *str; + int cnt, max; + + uint32 script; + SplineFont *sf; + + struct lookup_subtable *lig_owner; + int lcnt, lmax; + SplineChar ***ligs; /* For each ligature we have an array of SplineChars that are its components preceded by the ligature glyph itself */ + /* NULL terminated */ + int pixelsize; + double scale; +}; + +static int ApplyLookupAtPos(uint32 tag, OTLookup *otl,struct lookup_data *data,int pos); + +static int GlyphNameInClass(char *name,char *class ) { + char *pt; + int len = strlen(name); + + if ( class==NULL ) +return( false ); + + pt = class; + while ( (pt=strstr(pt,name))!=NULL ) { + if ( pt==NULL ) +return( false ); + if ( (pt==class || pt[-1]==' ') && (pt[len]=='\0' || pt[len]==' ')) +return( true ); + pt+=len; + } + +return( false ); +} + +/* ************************************************************************** */ +/* ************************ Apply Apple State Machines ********************** */ +/* ************************************************************************** */ + +static void ApplyMacIndicRearrangement(struct lookup_data *data,int verb, + int first_pos,int last_pos) { + struct opentype_str temp, temp2, temp3, temp4; + int i; + + if ( first_pos==-1 || last_pos==-1 || last_pos <= first_pos ) +return; + switch ( verb ) { + case 1: /* Ax => xA */ + temp = data->str[first_pos]; + for ( i= first_pos; istr[i] = data->str[i+1]; + data->str[last_pos] = temp; + break; + case 2: /* xD => Dx */ + temp = data->str[last_pos]; + for ( i= last_pos; i>first_pos; --i ) + data->str[i] = data->str[i-1]; + data->str[first_pos] = temp; + break; + case 3: /* AxD => DxA */ + temp = data->str[last_pos]; + data->str[last_pos] = data->str[first_pos]; + data->str[first_pos] = temp; + break; + case 4: /* ABx => xAB */ + temp = data->str[first_pos]; + temp2 = data->str[first_pos+1]; + for ( i= first_pos; istr[i] = data->str[i+21]; + data->str[last_pos-1] = temp; + data->str[last_pos] = temp2; + break; + case 5: /* ABx => xBA */ + temp = data->str[first_pos]; + temp2 = data->str[first_pos+1]; + for ( i= first_pos; istr[i] = data->str[i+21]; + data->str[last_pos-1] = temp2; + data->str[last_pos] = temp; + break; + case 6: /* xCD => CDx */ + temp = data->str[last_pos]; + temp2 = data->str[last_pos-1]; + for ( i= last_pos; i>first_pos+1; --i ) + data->str[i] = data->str[i-2]; + data->str[first_pos+1] = temp; + data->str[first_pos] = temp2; + break; + case 7: /* xCD => DCx */ + temp = data->str[last_pos]; + temp2 = data->str[last_pos-1]; + for ( i= last_pos; i>first_pos+1; --i ) + data->str[i] = data->str[i-2]; + data->str[first_pos+1] = temp2; + data->str[first_pos] = temp; + break; + case 8: /* AxCD => CDxA */ + temp = data->str[first_pos]; + temp2 = data->str[last_pos-1]; + temp3 = data->str[last_pos]; + for ( i= last_pos-1; i>first_pos; --i ) + data->str[i] = data->str[i-1]; + data->str[first_pos+1] = temp2; + data->str[first_pos] = temp3; + data->str[last_pos] = temp; + break; + case 9: /* AxCD => DCxA */ + temp = data->str[first_pos]; + temp2 = data->str[last_pos-1]; + temp3 = data->str[last_pos]; + for ( i= last_pos-1; i>first_pos; --i ) + data->str[i] = data->str[i-1]; + data->str[first_pos+1] = temp3; + data->str[first_pos] = temp2; + data->str[last_pos] = temp; + break; + case 10: /* ABxD => DxAB */ + temp = data->str[first_pos]; + temp2 = data->str[first_pos+1]; + temp3 = data->str[last_pos]; + for ( i= first_pos+1; istr[i] = data->str[i+1]; + data->str[first_pos] = temp3; + data->str[last_pos-1] = temp; + data->str[last_pos] = temp2; + break; + case 11: /* ABxD => DxBA */ + temp = data->str[first_pos]; + temp2 = data->str[first_pos+1]; + temp3 = data->str[last_pos]; + for ( i= first_pos+1; istr[i] = data->str[i+1]; + data->str[first_pos] = temp3; + data->str[last_pos-1] = temp2; + data->str[last_pos] = temp; + break; + case 12: /* ABxCD => CDxAB */ + temp = data->str[first_pos]; + temp2 = data->str[first_pos+1]; + temp3 = data->str[last_pos-1]; + temp4 = data->str[last_pos]; + data->str[last_pos] = temp2; + data->str[last_pos-1] = temp; + data->str[first_pos+1] = temp4; + data->str[first_pos] = temp3; + break; + case 13: /* ABxCD => CDxBA */ + temp = data->str[first_pos]; + temp2 = data->str[first_pos+1]; + temp3 = data->str[last_pos-1]; + temp4 = data->str[last_pos]; + data->str[last_pos] = temp; + data->str[last_pos-1] = temp2; + data->str[first_pos+1] = temp4; + data->str[first_pos] = temp3; + break; + case 14: /* ABxCD => DCxAB */ + temp = data->str[first_pos]; + temp2 = data->str[first_pos+1]; + temp3 = data->str[last_pos-1]; + temp4 = data->str[last_pos]; + data->str[last_pos] = temp2; + data->str[last_pos-1] = temp; + data->str[first_pos+1] = temp3; + data->str[first_pos] = temp4; + break; + case 15: /* ABxCD => DCxBA */ + temp = data->str[first_pos]; + temp2 = data->str[first_pos+1]; + temp3 = data->str[last_pos-1]; + temp4 = data->str[last_pos]; + data->str[last_pos] = temp; + data->str[last_pos-1] = temp2; + data->str[first_pos+1] = temp3; + data->str[first_pos] = temp4; + break; + } +} + +static int ApplyMacInsert(struct lookup_data *data,int ipos,int cnt, + char *glyphnames, int orig_index) { + SplineChar *inserts[32]; + char *start, *pt; + int i, ch; + + if ( cnt==0 || glyphnames==NULL || ipos == -1 ) +return( 0 ); + + for ( i=0, start = glyphnames; isf,-1,start); + *pt = ch; + if ( inserts[i]!=NULL ) + ++i; + } + cnt = i; + if ( i==0 ) +return( 0 ); + for ( i= data->cnt; i>=ipos; --i ) + data->str[i+cnt] = data->str[i]; + memset(data->str+ipos,0,cnt*sizeof(struct opentype_str)); + for ( i=0; istr[ipos+i].sc = inserts[i]; + data->str[ipos+i].orig_index = orig_index; + } +return( cnt ); +} + +static void ApplyAppleStateMachine(uint32 tag, OTLookup *otl,struct lookup_data *data) { + struct lookup_subtable *sub; + int state, class, pos, mark_pos, markend_pos, i; + ASM *sm; + int cnt_cur, cnt_mark; + struct asm_state *entry; + int kern_stack[8], kcnt; /* Kerning state machines handle at most 8 glyphs */ + (void)tag; + /* Flaws: Line processing has not been done yet, so we are never in the */ + /* start of line state and we never get an end of line token. We never */ + /* get deleted tokens either, those glyphs are just gone */ + /* Class 0: End of text */ + /* Class 1: Glyph not in any classes */ + /* Class 2: Deleted (we never see) */ + /* Class 3: End of line (we never see) */ + /* Mac doesn't have the concept of subtables, but a user could create one */ + /* it will get flattened out into its own "lookup" when written to a file*/ + /* So if there are multiple subtables, just process them all */ + for ( sub=otl->subtables; sub!=NULL; sub=sub->next ) { + sm = sub->sm; + + state = 0; + mark_pos = markend_pos = -1; + for ( pos = 0; pos<=data->cnt; ) { + if ( pos==data->cnt ) + class = 0; + else { + for ( class = sm->class_cnt-1; class>3; --class ) + if ( GlyphNameInClass(data->str[i].sc->name,sm->classes[class]) ) + break; + if ( class==3 ) + class = 1; /* Glyph not in any class */; + } + entry = &sm->state[state*sm->class_cnt+class]; + switch ( otl->lookup_type ) { + case morx_context: + if ( entry->u.context.cur_lookup!=NULL ) + ApplyLookupAtPos(0,entry->u.context.cur_lookup,data,pos); + if ( entry->u.context.mark_lookup!=NULL && mark_pos!=-1 ) { + ApplyLookupAtPos(0,entry->u.context.mark_lookup,data,mark_pos); + mark_pos = -1; + } + break; + case morx_indic: + if ( entry->flags & 0x2000 ) + markend_pos = pos; + if ( (entry->flags&0xf)!=0 ) { + ApplyMacIndicRearrangement(data,entry->flags&0xf,mark_pos,markend_pos); + mark_pos = markend_pos = -1; + } + break; + case morx_insert: + /* I live in total ignorance of what I should do if the glyph */ + /* "is Kashida like"... so I ignore those flags. */ + cnt_cur = (entry->flags>>5)&0x1f; + cnt_mark = (entry->flags&0x1f); + if ( data->cnt + cnt_cur + cnt_mark >= data->max ) + data->str = grealloc(data->str,(data->max = data->cnt + cnt_cur + cnt_mark +20)*sizeof(struct opentype_str)); + if ( cnt_cur!=0 ) + cnt_cur = ApplyMacInsert(data,(entry->flags& 0x0800)? pos : pos+1, + cnt_cur,entry->u.insert.cur_ins,data->str[pos].orig_index); + if ( cnt_mark!=0 && mark_pos!=-1 ) { + cnt_mark = ApplyMacInsert(data,(entry->flags& 0x0800)? mark_pos : mark_pos+1, + cnt_mark,entry->u.insert.mark_ins,data->str[mark_pos].orig_index); + mark_pos = -1; + } else + cnt_mark = 0; + pos += cnt_cur+cnt_mark; + break; + case kern_statemachine: + if ( entry->u.kern.kcnt!=0 ) { + for ( i=0; iu.kern.kcnt; ++i ) + data->str[kern_stack[i]].vr.h_adv_off += + entry->u.kern.kerns[i]; + kcnt = 0; + } + if ( entry->flags & 0x8000 ) { + for ( i=6; i>=0; --i ) + kern_stack[i+1] = kern_stack[i]; + kern_stack[0] = pos; + if ( ++kcnt>8 ) kcnt = 8; + } + break; + default: /* for -W */ + break; + } + if ( entry->flags & 0x8000 ) + mark_pos = pos; /* The docs do not state whether this happens before or after substitutions are applied at the mark */ + /* after is more useful. So assume that */ + if ( !(entry->flags & 0x4000) ) + ++pos; + state = entry->next_state; + } + } +} + +/* ************************************************************************** */ +/* ************************* Apply OpenType Lookups ************************* */ +/* ************************************************************************** */ + +static void LigatureFree(struct lookup_data *data) { + int i; + + if ( data->ligs==NULL ) +return; + for ( i=0; data->ligs[i]!=NULL; ++i ) + free(data->ligs[i]); +} + +static void LigatureSearch(struct lookup_subtable *sub, struct lookup_data *data) { + SplineFont *sf = data->sf; + int gid, ccnt, cnt, ch, err; + SplineChar *sc; + PST *pst; + char *pt, *start; + + LigatureFree(data); + cnt = 0; + for ( gid=0; gidglyphcnt; ++gid ) if ( (sc=sf->glyphs[gid])!=NULL ) { + for ( pst=sc->possub; pst!=NULL; pst=pst->next ) if ( pst->subtable==sub ) { + for ( pt = pst->u.lig.components, ccnt=0; *pt; ++pt ) + if ( *pt==' ' ) + ++ccnt; + if ( cnt>=data->lmax ) + data->ligs = grealloc(data->ligs,(data->lmax+=100)*sizeof(SplineChar **)); + data->ligs[cnt] = galloc((ccnt+3)*sizeof(SplineChar *)); + data->ligs[cnt][0] = sc; + ccnt = 1; + err = 0; + for ( pt = pst->u.lig.components; *pt; ) { + while ( *pt==' ' ) ++pt; + if ( *pt=='\0' ) + break; + for ( start=pt; *pt!='\0' && *pt!=' '; ++pt ); + ch = *pt; *pt = '\0'; + data->ligs[cnt][ccnt++] = SFGetChar(sf,-1,start); + *pt = ch; + if ( data->ligs[cnt][ccnt-1]==NULL ) + err = 1; + } + if ( !err ) + data->ligs[cnt++][ccnt] = NULL; + } + } + if ( cnt>=data->lmax ) + data->ligs = grealloc(data->ligs,(data->lmax+=1)*sizeof(SplineChar **)); + data->ligs[cnt] = NULL; + data->lcnt = cnt; +} + +static int skipglyphs(int lookup_flags, struct lookup_data *data, int pos) { + int mc, glyph_class; + /* The lookup flags tell us what glyphs to ignore. Skip over anything we */ + /* should ignore */ + + if ( lookup_flags==0 ) +return( pos ); + mc = (lookup_flags>>8); + if ( mc<0 || mc>=data->sf->mark_class_cnt ) + mc = 0; + while ( poscnt ) { + glyph_class = gdefclass(data->str[pos].sc); + /* 1=>base, 2=>ligature, 3=>mark, 4=>component?, 0=>.notdef */ + if ( (glyph_class==1 && (lookup_flags&pst_ignorebaseglyphs)) || + (glyph_class==2 && (lookup_flags&pst_ignoreligatures)) || + (glyph_class==3 && (lookup_flags&pst_ignorecombiningmarks)) || + (glyph_class==3 && mc!=0 && + !GlyphNameInClass(data->str[pos].sc->name,data->sf->mark_classes[mc])) ) { + ++pos; + } else + break; + } +return( pos ); +} + +static int bskipmarkglyphs(int lookup_flags, struct lookup_data *data, int pos) { + int mc, glyph_class; + /* The lookup flags tell us what glyphs to ignore. Skip over anything we */ + /* should ignore. Here we skip backward */ + + mc = (lookup_flags>>8); + if ( mc<0 || mc>=data->sf->mark_class_cnt ) + mc = 0; + while ( pos>=0 ) { + glyph_class = gdefclass(data->str[pos].sc); + /* 1=>base, 2=>ligature, 3=>mark, 4=>component?, 0=>.notdef */ + if ( glyph_class==3 ) + --pos; + else if ( (glyph_class==1 && (lookup_flags&pst_ignorebaseglyphs)) || + (glyph_class==2 && (lookup_flags&pst_ignoreligatures)) || + (glyph_class==3 && (lookup_flags&pst_ignorecombiningmarks)) || + (glyph_class==3 && mc!=0 && + !GlyphNameInClass(data->str[pos].sc->name,data->sf->mark_classes[mc])) ) { + --pos; + } else + break; + } +return( pos ); +} + +static int bskipglyphs(int lookup_flags, struct lookup_data *data, int pos) { + int mc, glyph_class; + /* The lookup flags tell us what glyphs to ignore. Skip over anything we */ + /* should ignore. Here we skip backward */ + + if ( lookup_flags==0 ) +return( pos ); + mc = (lookup_flags>>8); + if ( mc<0 || mc>=data->sf->mark_class_cnt ) + mc = 0; + while ( pos>=0 ) { + glyph_class = gdefclass(data->str[pos].sc); + /* 1=>base, 2=>ligature, 3=>mark, 4=>component?, 0=>.notdef */ + if ( (glyph_class==1 && (lookup_flags&pst_ignorebaseglyphs)) || + (glyph_class==2 && (lookup_flags&pst_ignoreligatures)) || + (glyph_class==3 && (lookup_flags&pst_ignorecombiningmarks)) || + (glyph_class==3 && mc!=0 && + !GlyphNameInClass(data->str[pos].sc->name,data->sf->mark_classes[mc])) ) { + --pos; + } else + break; + } +return( pos ); +} + +static int ContextualMatch(struct lookup_subtable *sub,struct lookup_data *data, + int pos, struct fpst_rule **_rule) { + int i, cpos, retpos, r; + FPST *fpst = sub->fpst; + int lookup_flags = sub->lookup->lookup_flags; + char *pt; + + /* If we should skip the current glyph then don't try for a match here */ + cpos = skipglyphs(lookup_flags,data,pos); + if ( cpos!=pos ) +return( 0 ); + + for ( r=0; rrule_cnt; ++r ) { + struct fpst_rule *rule = &fpst->rules[r]; + for ( i=pos; icnt; ++i ) + data->str[i].context_pos = -1; + +/* Handle backtrack (backtrace in the rule is stored in reverse textual order) */ + if ( fpst->type == pst_chainpos || fpst->type == pst_chainsub ) { + if ( fpst->format==pst_glyphs ) { + pt = rule->u.glyph.back; + for ( i=bskipglyphs(lookup_flags,data,pos-1), cpos=0; i>=0; i = bskipglyphs(lookup_flags,data,i-1)) { + char *name = data->str[i].sc->name; + int len = strlen( name ); + if ( strncmp(name,pt,len)!=0 || (pt[len]!='\0' && pt[len]!=' ')) + break; + pt += len; + while ( *pt==' ' ) ++pt; + } + if ( *pt!='\0' ) + continue; /* didn't match */ + } else if ( fpst->format==pst_class ) { + for ( i=bskipglyphs(lookup_flags,data,pos-1), cpos=0; i>=0 && cposu.class.bcnt; i = bskipglyphs(lookup_flags,data,i-1)) { + if ( !GlyphNameInClass(data->str[i].sc->name,fpst->bclass[rule->u.class.bclasses[cpos]]) ) + break; + ++cpos; + } + if ( cpos!=rule->u.class.bcnt ) + continue; /* didn't match */ + } else if ( fpst->format==pst_coverage ) { + for ( i=bskipglyphs(lookup_flags,data,pos-1), cpos=0; i>=0 && cposu.coverage.bcnt; i = bskipglyphs(lookup_flags,data,i-1)) { + if ( !GlyphNameInClass(data->str[i].sc->name,rule->u.coverage.bcovers[cpos]) ) + break; + ++cpos; + } + if ( cposu.coverage.bcnt ) + continue; /* didn't match */ + } + } +/* Handle Match */ + if ( fpst->format==pst_glyphs ) { + pt = rule->u.glyph.names; + for ( i=pos, cpos=0; icnt && *pt!='\0'; i = skipglyphs(lookup_flags,data,i+1)) { + char *name = data->str[i].sc->name; + int len = strlen( name ); + if ( strncmp(name,pt,len)!=0 || (pt[len]!='\0' && pt[len]!=' ')) + break; + data->str[i].context_pos = cpos++; + pt += len; + while ( *pt==' ' ) ++pt; + } + if ( *pt!='\0' ) + continue; /* didn't match */ + } else if ( fpst->format==pst_class ) { + for ( i=pos, cpos=0; icnt && cposu.class.ncnt; i = skipglyphs(lookup_flags,data,i+1)) { + int class = rule->u.class.nclasses[cpos]; + if ( class!=0 ) { + if ( !GlyphNameInClass(data->str[i].sc->name,fpst->nclass[class]) ) + break; + } else { + int c; + /* Ok, to match class 0 we must fail to match all other classes */ + for ( c=1; cnccnt; ++c ) + if ( !GlyphNameInClass(data->str[i].sc->name,fpst->nclass[c]) ) + break; + if ( c!=fpst->nccnt ) + break; /* It matched another class => not in class 0 */ + } + data->str[i].context_pos = cpos++; + } + if ( cposu.class.ncnt ) + continue; /* didn't match */ + } else if ( fpst->format==pst_coverage ) { + for ( i=pos, cpos=0; icnt && cposu.coverage.ncnt; i = skipglyphs(lookup_flags,data,i+1)) { + if ( !GlyphNameInClass(data->str[i].sc->name,rule->u.coverage.ncovers[cpos]) ) + break; + data->str[i].context_pos = cpos++; + } + if ( cposu.coverage.ncnt ) + continue; /* didn't match */ + } else +return( 0 ); /* Not ready to deal with reverse chainging */ + + retpos = i; +/* Handle lookahead */ + if ( fpst->type == pst_chainpos || fpst->type == pst_chainsub ) { + if ( fpst->format==pst_glyphs ) { + pt = rule->u.glyph.fore; + for ( i=retpos; icnt && *pt!='\0'; i = skipglyphs(lookup_flags,data,i+1)) { + char *name = data->str[i].sc->name; + int len = strlen( name ); + if ( strncmp(name,pt,len)!=0 || (pt[len]!='\0' && pt[len]!=' ')) + break; + pt += len; + while ( *pt==' ' ) ++pt; + } + if ( *pt!='\0' ) + continue; /* didn't match */ + } else if ( fpst->format==pst_class ) { + for ( i=retpos, cpos=0; icnt && cposu.class.fcnt; i = skipglyphs(lookup_flags,data,i+1)) { + if ( !GlyphNameInClass(data->str[i].sc->name,fpst->fclass[rule->u.class.fclasses[cpos]]) ) + break; + cpos++; + } + if ( cposu.class.fcnt ) + continue; /* didn't match */ + } else if ( fpst->format==pst_coverage ) { + for ( i=retpos, cpos=0; icnt && cposu.coverage.fcnt; i = skipglyphs(lookup_flags,data,i+1)) { + if ( !GlyphNameInClass(data->str[i].sc->name,rule->u.coverage.fcovers[cpos]) ) + break; + cpos++; + } + if ( cposu.coverage.fcnt ) + continue; /* didn't match */ + } + } + *_rule = rule; +return( retpos ); + } +return( 0 ); +} + +static int ApplySingleSubsAtPos(struct lookup_subtable *sub,struct lookup_data *data,int pos) { + PST *pst; + SplineChar *sc; + + for ( pst=data->str[pos].sc->possub; pst!=NULL && pst->subtable!=sub; pst=pst->next ); + if ( pst==NULL ) +return( 0 ); + + sc = SFGetChar(data->sf,-1,pst->u.subs.variant); + if ( sc!=NULL ) { + data->str[pos].sc = sc; +return( pos+1 ); + } else if ( strcmp(pst->u.subs.variant,MAC_DELETED_GLYPH_NAME)==0 ) { + /* Under AAT we delete the glyph. But OpenType doesn't have that concept */ + int i; + for ( i=pos+1; icnt; ++i ) + data->str[pos-1] = data->str[pos]; + --data->cnt; +return( pos ); + } else { +return( 0 ); + } +} + +static int ApplyMultSubsAtPos(struct lookup_subtable *sub,struct lookup_data *data,int pos) { + PST *pst; + SplineChar *sc; + char *start, *pt; + int mcnt, ch, i; + SplineChar *mults[20]; + + for ( pst=data->str[pos].sc->possub; pst!=NULL && pst->subtable!=sub; pst=pst->next ); + if ( pst==NULL ) +return( 0 ); + + mcnt = 0; + for ( start = pst->u.alt.components; *start==' '; ++start); + for ( ; *start; ) { + for ( pt=start; *pt!='\0' && *pt!=' '; ++pt ); + ch = *pt; *pt = '\0'; + sc = SFGetChar(data->sf,-1,start); + *pt = ch; + if ( sc==NULL ) +return( 0 ); + if ( mcnt<20 ) mults[mcnt++] = sc; + while ( *pt==' ' ) ++pt; + start = pt; + } + + if ( mcnt==0 ) { + /* Is this legal? that is can we remove a glyph with an empty multiple? */ + for ( i=pos+1; icnt; ++i ) + data->str[i-1] = data->str[i]; + --data->cnt; +return( pos ); + } else if ( mcnt==1 ) { + data->str[pos].sc = mults[0]; +return( pos+1 ); + } else { + if ( data->cnt+mcnt-1 >= data->max ) + data->str = grealloc(data->str,(data->max+=mcnt) * sizeof( struct opentype_str )); + for ( i=data->cnt-1; i>pos; --i ) + data->str[i+mcnt-1] = data->str[i]; + memset(data->str+pos,0,mcnt*sizeof(struct opentype_str)); + for ( i=0; istr[pos+i].sc = mults[i]; + data->str[pos+i].orig_index = data->str[pos].orig_index; + } + data->cnt += (mcnt-1); +return( pos+mcnt ); + } +} + +static int ApplyAltSubsAtPos(struct lookup_subtable *sub,struct lookup_data *data,int pos) { + PST *pst; + SplineChar *sc; + char *start, *pt, ch; + + for ( pst=data->str[pos].sc->possub; pst!=NULL && pst->subtable!=sub; pst=pst->next ); + if ( pst==NULL ) +return( 0 ); + + for ( start = pst->u.alt.components; *start==' '; ++start); + for ( ; *start; ) { + for ( pt=start; *pt!='\0' && *pt!=' '; ++pt ); + ch = *pt; *pt = '\0'; + sc = SFGetChar(data->sf,-1,start); + *pt = ch; + if ( sc!=NULL ) { + data->str[pos].sc = sc; +return( pos+1 ); + } + while ( *pt==' ' ) ++pt; + start = pt; + } +return( 0 ); +} + +static int ApplyLigatureSubsAtPos(struct lookup_subtable *sub,struct lookup_data *data,int pos) { + int i,k, lpos, npos; + int lookup_flags = sub->lookup->lookup_flags; + int match_found = -1, match_len=0; + + if ( data->lig_owner!=sub ) + LigatureSearch(sub,data); + for ( i=0; ilcnt; ++i ) { + if ( data->ligs[i][1]==data->str[pos].sc ) { + lpos = 0; + npos = pos+1; + for ( k=2; data->ligs[i][k]!=NULL; ++k ) { + npos = skipglyphs(lookup_flags,data,npos); + if ( npos>=data->cnt || data->str[npos].sc != data->ligs[i][k] ) + break; + ++npos; + } + if ( data->ligs[i][k]==NULL ) { + if ( match_found==-1 || k>match_len ) { + match_found = i; + match_len = k; + } + } + } + } + if ( match_found!=-1 ) { + /* Matched. Remove the component glyphs, and note which component */ + /* any intervening marks should be attached to */ + data->str[pos].sc = data->ligs[match_found][0]; + npos = pos+1; + for ( k=2; data->ligs[match_found][k]!=NULL; ++k ) { + lpos = skipglyphs(lookup_flags,data,npos); + for ( ; nposstr[npos].lig_pos = k-2; + /* Remove this glyph (copy the final NUL too) */ + for ( ++lpos; lpos<=data->cnt; ++lpos ) + data->str[lpos-1] = data->str[lpos]; + --data->cnt; + } + /* Any marks after the last component (which should be attached */ + /* to it) will not have been tagged, so do that now */ + lpos = skipglyphs(lookup_flags,data,npos); + for ( ; nposstr[npos].lig_pos = k-2; +return( pos+1 ); + } + +return( 0 ); +} + +static int ApplyContextual(struct lookup_subtable *sub,struct lookup_data *data,int pos) { + /* On this level there is no difference between GPOS/GSUB contextuals */ + /* If the contextual matches, then we apply the lookups, otherwise we */ + /* don't. Now the lookups will be different, but we don't care here */ + struct fpst_rule *rule; + int retpos, i,j; + + retpos = ContextualMatch(sub,data,pos,&rule); + if ( retpos==0 ) +return( 0 ); + for ( i=0; ilookup_cnt; ++i ) { + for ( j=pos; jcnt; ++j ) { + if ( data->str[j].context_pos == rule->lookups[i].seq ) { + ApplyLookupAtPos(0,rule->lookups[i].lookup,data,j); + break; + } + } + } +return( retpos ); +} + +#ifdef FONTFORGE_CONFIG_DEVICETABLES +static int FigureDeviceTable(DeviceTable *dt,int pixelsize) { + + if ( dt==NULL || dt->corrections==NULL || pixelsizefirst_pixel_size || + pixelsize>dt->last_pixel_size ) +return( 0 ); + +return( dt->corrections[pixelsize - dt->last_pixel_size] ); +} +#endif + +static int ApplySinglePosAtPos(struct lookup_subtable *sub,struct lookup_data *data,int pos) { + PST *pst; + + for ( pst=data->str[pos].sc->possub; pst!=NULL && pst->subtable!=sub; pst=pst->next ); + if ( pst==NULL ) +return( 0 ); + + data->str[pos].vr.xoff += rint( pst->u.pos.xoff * data->scale ); + data->str[pos].vr.yoff += rint( pst->u.pos.yoff * data->scale ); + data->str[pos].vr.h_adv_off += rint( pst->u.pos.h_adv_off * data->scale ); + data->str[pos].vr.v_adv_off += rint( pst->u.pos.v_adv_off * data->scale ); +#ifdef FONTFORGE_CONFIG_DEVICETABLES + if ( pst->u.pos.adjust!=NULL ) { + data->str[pos].vr.xoff += FigureDeviceTable(&pst->u.pos.adjust->xadjust,data->pixelsize); + data->str[pos].vr.yoff += FigureDeviceTable(&pst->u.pos.adjust->yadjust,data->pixelsize); + data->str[pos].vr.h_adv_off += FigureDeviceTable(&pst->u.pos.adjust->xadv,data->pixelsize); + data->str[pos].vr.v_adv_off += FigureDeviceTable(&pst->u.pos.adjust->yadv,data->pixelsize); + } +#endif +return( pos+1 ); +} + +static int ApplyPairPosAtPos(struct lookup_subtable *sub,struct lookup_data *data,int pos) { + PST *pst; + int npos, isv, within; + KernPair *kp; + + npos = skipglyphs(sub->lookup->lookup_flags,data,pos+1); + if ( npos>=data->cnt ) +return( 0 ); + if ( sub->kc!=NULL ) { + within = KCFindIndex(sub->kc,data->str[pos].sc->name,data->str[npos].sc->name); + if ( within==-1 ) +return( 0 ); + data->str[pos].kc_index = within; + data->str[pos].kc = sub->kc; + if ( sub->vertical_kerning ) { + data->str[pos].vr.v_adv_off += rint( sub->kc->offsets[within] * data->scale ); +#ifdef FONTFORGE_CONFIG_DEVICETABLES + data->str[pos].vr.v_adv_off += FigureDeviceTable(&sub->kc->adjusts[within],data->pixelsize); +#endif + } else if ( sub->lookup->lookup_flags & pst_r2l ) { + data->str[npos].vr.h_adv_off += rint( sub->kc->offsets[within] * data->scale ); +#ifdef FONTFORGE_CONFIG_DEVICETABLES + data->str[npos].vr.h_adv_off += FigureDeviceTable(&sub->kc->adjusts[within],data->pixelsize); +#endif + } else { + data->str[pos].vr.h_adv_off += rint( sub->kc->offsets[within] * data->scale ); +#ifdef FONTFORGE_CONFIG_DEVICETABLES + data->str[pos].vr.h_adv_off += FigureDeviceTable(&sub->kc->adjusts[within],data->pixelsize); +#endif + } +return( pos+1 ); + } else { + for ( pst=data->str[pos].sc->possub; pst!=NULL; pst=pst->next ) { + if ( pst->subtable==sub && strcmp(pst->u.pair.paired,data->str[npos].sc->name)==0 ) { + data->str[pos].vr.xoff += rint( pst->u.pair.vr[0].xoff * data->scale); + data->str[pos].vr.yoff += rint( pst->u.pair.vr[0].yoff * data->scale); + data->str[pos].vr.h_adv_off += rint( pst->u.pair.vr[0].h_adv_off * data->scale); + data->str[pos].vr.v_adv_off += rint( pst->u.pair.vr[0].v_adv_off * data->scale); + data->str[npos].vr.xoff += rint( pst->u.pair.vr[1].xoff * data->scale); + data->str[npos].vr.yoff += rint( pst->u.pair.vr[1].yoff * data->scale); + data->str[npos].vr.h_adv_off += rint( pst->u.pair.vr[1].h_adv_off * data->scale); + data->str[npos].vr.v_adv_off += rint( pst->u.pair.vr[1].v_adv_off * data->scale); +#ifdef FONTFORGE_CONFIG_DEVICETABLES + /* I got bored. I should do all of them */ + if ( pst->u.pair.vr[0].adjust!=NULL ) { + data->str[pos].vr.h_adv_off += FigureDeviceTable(&pst->u.pair.vr[0].adjust->xadv,data->pixelsize); + } +#endif +return( pos+1 ); /* We do NOT want to return npos+1 */ + } + } + for ( isv = 0; isv<2; ++isv ) { + for ( kp = isv ? data->str[pos].sc->vkerns : data->str[pos].sc->kerns; kp!=NULL; kp=kp->next ) { + if ( kp->subtable == sub && kp->sc == data->str[npos].sc ) { + data->str[pos].kp = kp; + if ( isv ) { + data->str[pos].vr.v_adv_off += rint( kp->off * data->scale); +#ifdef FONTFORGE_CONFIG_DEVICETABLES + data->str[pos].vr.v_adv_off += FigureDeviceTable(kp->adjust,data->pixelsize); +#endif + } else if ( sub->lookup->lookup_flags & pst_r2l ) { + data->str[npos].vr.h_adv_off += rint( kp->off * data->scale); +#ifdef FONTFORGE_CONFIG_DEVICETABLES + data->str[npos].vr.h_adv_off += FigureDeviceTable(kp->adjust,data->pixelsize); +#endif + } else { + data->str[pos].vr.h_adv_off += rint( kp->off * data->scale); +#ifdef FONTFORGE_CONFIG_DEVICETABLES + data->str[pos].vr.h_adv_off += FigureDeviceTable(kp->adjust,data->pixelsize); +#endif + } +return( pos+1 ); + } + } + } + } + +return( 0 ); +} + +static int ApplyAnchorPosAtPos(struct lookup_subtable *sub,struct lookup_data *data,int pos) { + AnchorPoint *ap1, *ap2; + int bpos; + + /* Anchors do not position the base glyph, but the mark (or second glyph */ + /* of a cursive attachment). This means we don't apply the attachment when*/ + /* we meet the first glyph, but wait until we meet the second, and then */ + /* walk backwards */ + /* The backwards walk is different depending on the lookup type (I think) */ + /* mark to base and mark to ligature lookups will skip all marks even if */ + /* lookup flags don't specify that */ + /* mark to mark, and cursive attachment only skip what the lookup flags */ + /* tell them to skip. */ + for ( ap2=data->str[pos].sc->anchor; ap2!=NULL ; ap2=ap2->next ) { + if ( ap2->anchor->subtable==sub && (ap2->type == at_mark || ap2->type == at_centry)) + break; + } + if ( ap2==NULL ) { + /* This subtable is not used by this glyph ... at least this glyph is */ + /* neither a mark nor an entry point for this subtable */ +return( 0 ); + } + + /* There's only going to be one mark anchor on a glyph in a given subtable*/ + /* And cursive attachments only allow one anchor class per subtable */ + /* in either case we have already found the only attachment site possible */ + /* in the current glyph */ + + if ( sub->lookup->lookup_type == gpos_mark2base || + sub->lookup->lookup_type == gpos_mark2ligature ) + bpos = bskipmarkglyphs(sub->lookup->lookup_flags,data,pos-1); + else + bpos = bskipglyphs(sub->lookup->lookup_flags,data,pos-1); + if ( bpos==-1 ) +return( 0 ); /* No match */ + + if ( sub->lookup->lookup_type == gpos_cursive ) { + for ( ap1=data->str[bpos].sc->anchor; ap1!=NULL ; ap1=ap1->next ) { + if ( ap1->anchor==ap2->anchor && ap1->type==at_cexit ) + break; + } + } else if ( sub->lookup->lookup_type == gpos_mark2ligature ) { + for ( ap1=data->str[bpos].sc->anchor; ap1!=NULL ; ap1=ap1->next ) { + if ( ap1->anchor==ap2->anchor && ap1->type==at_baselig && + ap1->lig_index == data->str[pos].lig_pos ) + break; + } + } else { + for ( ap1=data->str[bpos].sc->anchor; ap1!=NULL ; ap1=ap1->next ) { + if ( ap1->anchor==ap2->anchor && + (ap1->type==at_basechar || ap1->type==at_basemark) ) + break; + } + } + if ( ap1==NULL ) +return( 0 ); /* No match */ + +/* This probably doesn't work for vertical text */ + data->str[pos].vr.yoff = data->str[bpos].vr.yoff + + rint((ap1->me.y - ap2->me.y) * data->scale); +#ifdef FONTFORGE_CONFIG_DEVICETABLES + data->str[pos].vr.yoff += FigureDeviceTable(&ap1->yadjust,data->pixelsize)- + FigureDeviceTable(&ap2->yadjust,data->pixelsize); +#endif + if ( sub->lookup->lookup_flags&pst_r2l ) { + data->str[pos].vr.xoff = data->str[bpos].vr.xoff + + rint( -(ap1->me.x - ap2->me.x)*data->scale ); +#ifdef FONTFORGE_CONFIG_DEVICETABLES + data->str[pos].vr.xoff -= FigureDeviceTable(&ap1->xadjust,data->pixelsize)- + FigureDeviceTable(&ap2->xadjust,data->pixelsize); +#endif + } else { + data->str[pos].vr.xoff = data->str[bpos].vr.xoff + + rint( (ap1->me.x - ap2->me.x - data->str[bpos].sc->width)*data->scale - + data->str[bpos].vr.h_adv_off); +#ifdef FONTFORGE_CONFIG_DEVICETABLES + data->str[pos].vr.xoff += FigureDeviceTable(&ap1->xadjust,data->pixelsize)- + FigureDeviceTable(&ap2->xadjust,data->pixelsize); +#endif + } + +return( pos+1 ); +} + +static int ConditionalTagOk(uint32 tag, OTLookup *otl,struct lookup_data *data,int pos) { + int npos, bpos; + uint32 script; + int before_in_script, after_in_script; + + if ( tag==CHR('i','n','i','t') || tag==CHR('i','s','o','l') || + tag==CHR('f','i','n','a') || tag==CHR('m','e','d','i') ) { + npos = skipglyphs(otl->lookup_flags,data,pos+1); + bpos = bskipglyphs(otl->lookup_flags,data,pos-1); + script = SCScriptFromUnicode(data->str[pos].sc); + before_in_script = (bpos>=0 && SCScriptFromUnicode(data->str[bpos].sc)==script); + after_in_script = (nposcnt && SCScriptFromUnicode(data->str[npos].sc)==script); + if ( tag==CHR('i','n','i','t') ) +return( !before_in_script && after_in_script ); + else if ( tag==CHR('i','s','o','l') ) +return( !before_in_script && !after_in_script ); + else if ( tag==CHR('f','i','n','a') ) +return( before_in_script && !after_in_script ); + else +return( before_in_script && after_in_script ); + } + +return( true ); +} + +static int ApplyLookupAtPos(uint32 tag, OTLookup *otl,struct lookup_data *data,int pos) { + struct lookup_subtable *sub; + int newpos; + + /* Some tags imply a conditional check. Do that now */ + if ( !ConditionalTagOk(tag,otl,data,pos)) +return( 0 ); + + for ( sub=otl->subtables; sub!=NULL; sub=sub->next ) { + switch ( otl->lookup_type ) { + case gsub_single: + newpos = ApplySingleSubsAtPos(sub,data,pos); + break; + case gsub_multiple: + newpos = ApplyMultSubsAtPos(sub,data,pos); + break; + case gsub_alternate: + newpos = ApplyAltSubsAtPos(sub,data,pos); + break; + case gsub_ligature: + newpos = ApplyLigatureSubsAtPos(sub,data,pos); + break; + case gsub_context: + newpos = ApplyContextual(sub,data,pos); + break; + case gsub_contextchain: + newpos = ApplyContextual(sub,data,pos); + break; + case gsub_reversecchain: + newpos = ApplySingleSubsAtPos(sub,data,pos); + break; + + case gpos_single: + newpos = ApplySinglePosAtPos(sub,data,pos); + break; + case gpos_pair: + newpos = ApplyPairPosAtPos(sub,data,pos); + break; + case gpos_cursive: + newpos = ApplyAnchorPosAtPos(sub,data,pos); + break; + case gpos_mark2base: + newpos = ApplyAnchorPosAtPos(sub,data,pos); + break; + case gpos_mark2ligature: + newpos = ApplyAnchorPosAtPos(sub,data,pos); + break; + case gpos_mark2mark: + newpos = ApplyAnchorPosAtPos(sub,data,pos); + break; + case gpos_context: + newpos = ApplyContextual(sub,data,pos); + break; + case gpos_contextchain: + newpos = ApplyContextual(sub,data,pos); + break; + default: + /* apple state machines */ + newpos = 0; + break; + } + /* if a subtable worked, we don't try to apply the next one */ + if ( newpos!=0 ) +return( newpos ); + } +return( 0 ); +} + +static void ApplyLookup(uint32 tag, OTLookup *otl,struct lookup_data *data) { + int pos, npos; + int lt = otl->lookup_type; + + if ( lt == morx_indic || lt == morx_context || lt == morx_insert || + lt == kern_statemachine ) + ApplyAppleStateMachine(tag,otl,data); + else { + /* OpenType */ + for ( pos = 0; poscnt; ) { + npos = ApplyLookupAtPos(tag,otl,data,pos); + if ( npos<=pos) /* !!!!! */ + npos = pos+1; + pos = npos; + } + } +} + +static uint32 FSLLMatches(FeatureScriptLangList *fl,uint32 *flist,uint32 script,uint32 lang) { + int i,l; + struct scriptlanglist *sl; + + if ( flist==NULL ) +return( 0 ); + + while ( fl!=NULL ) { + for ( i=0; flist[i]!=0; ++i ) { + if ( fl->featuretag==flist[i] ) + break; + } + if ( flist[i]!=0 ) { + for ( sl=fl->scripts; sl!=NULL; sl=sl->next ) { + if ( sl->script == script ) { + if ( fl->ismac ) /* Language irrelevant on macs (scripts too, but we pretend they matter) */ +return( fl->featuretag ); + for ( l=0; llang_cnt; ++l ) + if ( (llangs[l]==lang) || + (l>=MAX_LANG && sl->morelangs[l-MAX_LANG]==lang)) +return( fl->featuretag ); + } + } + } + fl = fl->next; + } +return( 0 ); +} + +/* This routine takes a string of glyphs and applies the opentype transformations */ +/* indicated by the features (and script and language) we are passed, it returns */ +/* a transformed string with substitutions applied and containing positioning */ +/* info */ +struct opentype_str *ApplyTickedFeatures(SplineFont *sf,uint32 *flist, uint32 script, uint32 lang, + int pixelsize, SplineChar **glyphs) { + int isgpos, cnt; + OTLookup *otl; + struct lookup_data data; + uint32 *langs, templang; + int i; + + memset(&data,0,sizeof(data)); + for ( cnt=0; glyphs[cnt]!=NULL; ++cnt ); + data.str = gcalloc(cnt+1,sizeof(struct opentype_str)); + data.cnt = data.max = cnt; + for ( cnt=0; glyphs[cnt]!=NULL; ++cnt ) { + data.str[cnt].sc = glyphs[cnt]; + data.str[cnt].orig_index = cnt; + data.str[cnt].lig_pos = data.str[cnt].context_pos = -1; + } + if ( sf->cidmaster!=NULL ) sf=sf->cidmaster; + data.sf = sf; + data.pixelsize = pixelsize; + data.scale = pixelsize/(double) (sf->ascent+sf->descent); + + /* Indic glyph reordering???? */ + for ( isgpos=0; isgpos<2; ++isgpos ) { + /* Check that this table has an entry for this language */ + /* if it doesn't use the default language */ + /* GPOS/GSUB may have different language sets, so we must be prepared */ + templang = lang; + langs = SFLangsInScript(sf,isgpos,script); + for ( i=0; langs[i]!=0 && langs[i]!=lang; ++i ); + if ( langs[i]==0 ) + templang = DEFAULT_LANG; + free(langs); + + for ( otl = isgpos ? sf->gpos_lookups : sf->gsub_lookups; otl!=NULL ; otl = otl->next ) { + uint32 tag; + if ( (tag=FSLLMatches(otl->features,flist,script,templang))!=0 ) + ApplyLookup(tag,otl,&data); + } + } + LigatureFree(&data); + free(data.ligs); + + data.str = grealloc(data.str,(data.cnt+1)*sizeof(struct opentype_str)); + memset(&data.str[data.cnt],0,sizeof(struct opentype_str)); +return( data.str ); +} + +static void doreplace(char **haystack,char *start,char *search,char *rpl,int slen) { + int rlen; + char *pt = start+slen; + (void)search; + rlen = strlen(rpl); + if ( slen>=rlen ) { + memcpy(start,rpl,rlen); + if ( slen>rlen ) { + int diff = slen-rlen; + for ( ; *pt ; ++pt ) + pt[-diff] = *pt; + pt[-diff] = '\0'; + } + } else { + char *base = *haystack; + char *new = galloc(pt-base+strlen(pt)+rlen-slen+1); + memcpy(new,base,start-base); + memcpy(new+(start-base),rpl,rlen); + strcpy(new+(start-base)+rlen,pt); + free( base ); + *haystack = new; + } +} + +static int rplstr(char **haystack,char *search, char *rpl,int multipleoccurances) { + char *start, *pt, *base = *haystack; + int ch, match, slen = strlen(search); + int any = 0; + + if ( base==NULL ) +return( false ); + + for ( pt=base ; ; ) { + while ( *pt==' ' ) ++pt; + if ( *pt=='\0' ) +return( any ); + start=pt; + while ( *pt!=' ' && *pt!='\0' ) ++pt; + if ( pt-start!=slen ) + match = -1; + else { + ch = *pt; *pt='\0'; + match = strcmp(start,search); + *pt = ch; + } + if ( match==0 ) { + doreplace(haystack,start,search,rpl,slen); + if ( !multipleoccurances ) +return( true ); + any = true; + if ( base!=*haystack ) { + pt = *haystack + (start-base)+strlen(rpl); + base = *haystack; + } else + pt = start+strlen(rpl); + } + } +} + +static int rplglyphname(char **haystack,char *search, char *rpl) { + /* If we change "f" to "uni0066" then we should also change "f.sc" to */ + /* "uni0066.sc" and "f_f_l" to "uni0066_uni0066_l" */ + char *start, *pt, *base = *haystack; + int ch, match; + unsigned slen = strlen(search); + int any = 0; + + if ( slen>=strlen( base )) +return( false ); + + for ( pt=base ; ; ) { + while ( *pt=='_' ) ++pt; + if ( *pt=='\0' || *pt=='.' ) +return( any ); + start=pt; + while ( *pt!='_' && *pt!='\0' && *pt!='.' ) ++pt; + if ( *pt=='\0' && start==base ) /* Don't change any unsegmented names */ +return( false ); /* In particular don't rename ourselves*/ + if ( pt-start!=slen ) + match = -1; + else { + ch = *pt; *pt='\0'; + match = strcmp(start,search); + *pt = ch; + } + if ( match==0 ) { + doreplace(haystack,start,search,rpl,slen); + any = true; + if ( base!=*haystack ) { + pt = *haystack + (start-base) + strlen(rpl); + base = *haystack; + } else + pt = start+strlen(rpl); + } + } +} + +static int glyphnameIsComponent(char *haystack,char *search) { + /* Check for a glyph name in ligature names and dotted names */ + char *start, *pt; + unsigned slen = strlen(search); + + if ( slen>=strlen( haystack )) +return( false ); + + for ( pt=haystack ; ; ) { + while ( *pt=='_' ) ++pt; + if ( *pt=='\0' || *pt=='.' ) +return( false ); + start=pt; + while ( *pt!='_' && *pt!='\0' && *pt!='.' ) ++pt; + if ( *pt=='\0' && start==haystack )/* Don't change any unsegmented names */ +return( false ); /* In particular don't rename ourselves*/ + if ( pt-start==slen && strncmp(start,search,slen)==0 ) +return( true ); + } +} + +static int gvfixup(struct glyphvariants *gv,char *old, char *new) { + int i; + int ret=0; + + if ( gv==NULL ) +return( false ); + ret = rplstr(&gv->variants,old,new,false); + for ( i=0; ipart_cnt; ++i ) { + if ( strcmp(gv->parts[i].component,old)==0 ) { + free( gv->parts[i].component); + gv->parts[i].component = copy(new); + ret = true; + } + } +return( ret ); +} + +void SFGlyphRenameFixup(SplineFont *sf, char *old, char *new) { + int k, gid, isv; + int i,r; + SplineFont *master = sf; + SplineChar *sc; + PST *pst; + FPST *fpst; + KernClass *kc; + ASM *sm; + + CVGlyphRenameFixup(sf,old,new); + if ( sf->cidmaster!=NULL ) + master = sf->cidmaster; + + /* Look through all substitutions (and pairwise psts) stored on the glyphs*/ + /* and change any occurances of the name */ + /* (KernPairs have a reference to the SC rather than the name, and need no fixup) */ + /* Also if the name is "f" then look for glyph names like "f.sc" or "f_f_l"*/ + /* and be ready to change them too */ + k = 0; + do { + sf = ksubfontcnt ? master->subfonts[k] : master; + for ( gid=0; gidglyphcnt; ++gid ) if ( (sc=sf->glyphs[gid])!=NULL ) { + if ( glyphnameIsComponent(sc->name,old)) { + char *newer = copy(sc->name); + rplglyphname(&newer,old,new); + SFGlyphRenameFixup(master,sc->name,newer); + free(sc->name); + sc->name = newer; + sc->namechanged = sc->changed = true; + } + for ( pst=sc->possub; pst!=NULL; pst=pst->next ) { + if ( pst->type==pst_substitution || pst->type==pst_alternate || + pst->type==pst_multiple || pst->type==pst_pair || + pst->type==pst_ligature ) { + if ( rplstr(&pst->u.mult.components,old,new,pst->type==pst_ligature)) + sc->changed = true; + } + } + /* For once I don't want a short circuit eval of "or", so I use */ + /* bitwise rather than boolean intentionally */ + if ( gvfixup(sc->vert_variants,old,new) | + gvfixup(sc->horiz_variants,old,new)) + sc->changed = true; + } + ++k; + } while ( ksubfontcnt ); + + /* Now look for contextual fpsts which might use the name */ + for ( fpst=master->possub; fpst!=NULL; fpst=fpst->next ) { + if ( fpst->format==pst_class ) { + for ( i=0; inccnt; ++i ) if ( fpst->nclass[i]!=NULL ) { + if ( rplstr(&fpst->nclass[i],old,new,false)) + break; + } + for ( i=0; ibccnt; ++i ) if ( fpst->bclass[i]!=NULL ) { + if ( rplstr(&fpst->bclass[i],old,new,false)) + break; + } + for ( i=0; ifccnt; ++i ) if ( fpst->fclass[i]!=NULL ) { + if ( rplstr(&fpst->fclass[i],old,new,false)) + break; + } + } + for ( r=0; rrule_cnt; ++r ) { + struct fpst_rule *rule = &fpst->rules[r]; + if ( fpst->type==pst_glyphs ) { + rplstr(&rule->u.glyph.names,old,new,true); + rplstr(&rule->u.glyph.back,old,new,true); + rplstr(&rule->u.glyph.fore,old,new,true); + } else if ( fpst->type==pst_coverage || + fpst->type==pst_reversecoverage ) { + for ( i=0; iu.coverage.ncnt ; ++i ) + rplstr(&rule->u.coverage.ncovers[i],old,new,false); + for ( i=0; iu.coverage.bcnt ; ++i ) + rplstr(&rule->u.coverage.bcovers[i],old,new,false); + for ( i=0; iu.coverage.fcnt ; ++i ) + rplstr(&rule->u.coverage.fcovers[i],old,new,false); + if ( fpst->type==pst_reversecoverage ) + rplstr(&rule->u.rcoverage.replacements,old,new,true); + } + } + } + + /* Now look for contextual apple state machines which might use the name */ + for ( sm = master->sm; sm!=NULL; sm=sm->next ) { + for ( i=0; iclass_cnt; ++i ) if ( sm->classes[i]!=NULL ) { + if ( rplstr(&sm->classes[i],old,new,false)) + break; + } + } + + /* Now look for contextual kerning classes which might use the name */ + for ( isv=0; isv<2; ++isv ) { + for ( kc=isv ? master->vkerns : master->kerns; kc!=NULL; kc=kc->next ) { + for ( i=0; ifirst_cnt; ++i ) if ( kc->firsts[i]!=NULL ) { + if ( rplstr(&kc->firsts[i],old,new,false)) + break; + } + for ( i=0; isecond_cnt; ++i ) if ( kc->seconds[i]!=NULL ) { + if ( rplstr(&kc->seconds[i],old,new,false)) + break; + } + } + } +} + +struct lookup_subtable *SFSubTableFindOrMake(SplineFont *sf,uint32 tag,uint32 script, + int lookup_type ) { + OTLookup **base; + OTLookup *otl, *found=NULL; + int isgpos = lookup_type>=gpos_start; + struct lookup_subtable *sub; + int isnew = false; + + if ( sf->cidmaster ) sf = sf->cidmaster; + base = isgpos ? &sf->gpos_lookups : &sf->gsub_lookups; + for ( otl= *base; otl!=NULL; otl=otl->next ) { + if ( otl->lookup_type==(unsigned)lookup_type && + FeatureScriptTagInFeatureScriptList(tag,script,otl->features) ) { + for ( sub = otl->subtables; sub!=NULL; sub=sub->next ) + if ( sub->kc==NULL ) +return( sub ); + found = otl; + } + } + + if ( found==NULL ) { + found = chunkalloc(sizeof(OTLookup)); + found->lookup_type = lookup_type; + found->features = chunkalloc(sizeof(FeatureScriptLangList)); + found->features->featuretag = tag; + found->features->scripts = chunkalloc(sizeof(struct scriptlanglist)); + found->features->scripts->script = script; + found->features->scripts->langs[0] = DEFAULT_LANG; + found->features->scripts->lang_cnt = 1; + + SortInsertLookup(sf, found); + isnew = true; + } + + sub = chunkalloc(sizeof(struct lookup_subtable)); + sub->next = found->subtables; + found->subtables = sub; + sub->lookup = found; + sub->per_glyph_pst_or_kern = true; + + NameOTLookup(found,sf); +return( sub ); +} + +struct lookup_subtable *SFSubTableMake(SplineFont *sf,uint32 tag,uint32 script, + int lookup_type ) { + OTLookup **base; + OTLookup *otl, *found=NULL; + int isgpos = lookup_type>=gpos_start; + struct lookup_subtable *sub; + int isnew = false; + + if ( sf->cidmaster ) sf = sf->cidmaster; + base = isgpos ? &sf->gpos_lookups : &sf->gsub_lookups; + for ( otl= *base; otl!=NULL; otl=otl->next ) { + if ( otl->lookup_type==(unsigned)lookup_type && + FeatureScriptTagInFeatureScriptList(tag,script,otl->features) ) { + found = otl; + } + } + + if ( found==NULL ) { + found = chunkalloc(sizeof(OTLookup)); + found->lookup_type = lookup_type; + found->features = chunkalloc(sizeof(FeatureScriptLangList)); + found->features->featuretag = tag; + found->features->scripts = chunkalloc(sizeof(struct scriptlanglist)); + found->features->scripts->script = script; + found->features->scripts->langs[0] = DEFAULT_LANG; + found->features->scripts->lang_cnt = 1; + + SortInsertLookup(sf, found); + isnew = true; + } + + sub = chunkalloc(sizeof(struct lookup_subtable)); + sub->next = found->subtables; + found->subtables = sub; + sub->lookup = found; + + if ( isnew ) + NameOTLookup(found,sf); +return( sub ); +} + +int LookupUsedNested(SplineFont *sf,OTLookup *checkme) { + OTLookup *otl; + struct lookup_subtable *sub; + int r,c; + + if ( checkme->lookup_type>=gpos_start ) + otl = sf->gpos_lookups; + else + otl = sf->gsub_lookups; + while ( otl!=NULL ) { + for ( sub = otl->subtables; sub!=NULL; sub=sub->next ) { + if ( sub->fpst!=NULL ) { + for ( r=0; rfpst->rule_cnt; ++r ) { + struct fpst_rule *rule = &sub->fpst->rules[r]; + for ( c=0; clookup_cnt; ++c ) { + if ( rule->lookups[c].lookup == checkme ) +return( true ); + } + } + } else if ( otl->lookup_type==morx_context ) { + for ( c = 0; csm->class_cnt*sub->sm->state_cnt; ++c ) { + struct asm_state *state = &sub->sm->state[c]; + if ( state->u.context.mark_lookup==checkme ) +return( true ); + if ( state->u.context.cur_lookup==checkme ) +return( true ); + } + } + } + } +return( false ); +} + +static void AALTRemoveOld(SplineFont *sf) { + FeatureScriptLangList *fl, *prev; + OTLookup *otl, *otlnext; + + for ( otl=sf->gsub_lookups; otl!=NULL; otl=otlnext ) { + otlnext = otl->next; + prev = NULL; + for ( fl = otl->features; fl!=NULL; prev=fl, fl=fl->next ) { + if ( fl->featuretag==CHR('a','a','l','t') ) { + if ( fl==otl->features && fl->next==NULL && !LookupUsedNested(sf,otl)) + SFRemoveLookup(sf,otl); + else { + if ( prev==NULL ) + otl->features = fl->next; + else + prev->next = fl->next; + fl->next = NULL; + FeatureScriptLangListFree(fl); + } + break; + } + } + } +} + +void SllkFree(struct sllk *sllk,int sllk_cnt) { + int i; + + for ( i=0; ilookup_type==gsub_single || otl->lookup_type==gsub_alternate ) { + for ( i=0; icnt; ++i ) + if ( sllk->lookups[i]==otl ) + break; + if ( i==sllk->cnt ) { + if ( sllk->cnt>=sllk->max ) + sllk->lookups = grealloc(sllk->lookups,(sllk->max+=5)*sizeof(OTLookup *)); + sllk->lookups[sllk->cnt++] = otl; + for ( l=0; llang_cnt; ++l ) { + uint32 lang = llangs[l] : sl->morelangs[l-MAX_LANG]; + for ( j=0; jlcnt; ++j ) + if ( sllk->langs[j]==lang ) + break; + if ( j==sllk->lcnt ) { + if ( sllk->lcnt>=sllk->lmax ) + sllk->langs = grealloc(sllk->langs,(sllk->lmax+=sl->lang_cnt+MAX_LANG)*sizeof(uint32)); + sllk->langs[sllk->lcnt++] = lang; + } + } + } + } else if ( otl->lookup_type==gsub_context || otl->lookup_type==gsub_contextchain ) { + struct lookup_subtable *sub; + for ( sub=otl->subtables; sub!=NULL; sub=sub->next ) { + FPST *fpst = sub->fpst; + for ( j=0; jrule_cnt; ++j ) { + struct fpst_rule *r = &fpst->rules[j]; + for ( k=0; klookup_cnt; ++k ) + AddOTLToSllk(sllk,r->lookups[k].lookup,sl); + } + } + } + /* reverse contextual chaining is weird and I shall ignore it. Adobe does too*/ +} + +static char *ComponentsFromPSTs(PST **psts,int pcnt) { + char **names=NULL; + int ncnt=0, nmax=0; + int i,j,len; + char *ret; + + /* First find all the names */ + for ( i=0; iu.alt.components; + char *start, *pt, ch; + + for ( start = nlist; ; ) { + while ( *start==' ' ) + ++start; + if ( *start=='\0' ) + break; + for ( pt=start; *pt!=' ' && *pt!='\0'; ++pt ); + ch = *pt; *pt = '\0'; + for ( j=0; j=nmax ) + names = grealloc(names,(nmax+=10)*sizeof(char *)); + names[ncnt++] = copy(start); + } + *pt = ch; + start = pt; + } + } + + len = 0; + for ( i=0; ifeatures; fl!=NULL; fl=fl->next ) { + for ( sl=fl->scripts; sl!=NULL; sl=sl->next ) { + for ( s=0; s<*_sllk_cnt; ++s ) + if ( sl->script == sllk[s].script ) + break; + if ( s==*_sllk_cnt ) { + if ( *_sllk_cnt>=*_sllk_max ) + sllk = grealloc(sllk,((*_sllk_max)+=10)*sizeof(struct sllk)); + memset(&sllk[*_sllk_cnt],0,sizeof(struct sllk)); + sllk[(*_sllk_cnt)++].script = sl->script; + } + AddOTLToSllk(&sllk[s], otl,sl); + } + } +return( sllk ); +} + +OTLookup *NewAALTLookup(SplineFont *sf,struct sllk *sllk, int sllk_cnt, int i) { + OTLookup *otl; + struct lookup_subtable *sub; + FeatureScriptLangList *fl; + struct scriptlanglist *sl; + PST **psts, *pst; + int j,k,l; + int gid,pcnt; + SplineFont *_sf; + SplineChar *sc; + + /* Make the new lookup (and all its supporting data structures) */ + otl = chunkalloc(sizeof(OTLookup)); + otl->lookup_type = gsub_alternate; + otl->lookup_flags = sllk[i].lookups[0]->lookup_flags & pst_r2l; + otl->features = fl = chunkalloc(sizeof(FeatureScriptLangList)); + fl->featuretag = CHR('a','a','l','t'); + /* Any other scripts with the same lookup set? */ + for ( j=i; jnext = fl->scripts; + fl->scripts = sl; + sl->script = sllk[j].script; + sl->lang_cnt = sllk[j].lcnt; + if ( sl->lang_cnt>MAX_LANG ) + sl->morelangs = galloc((sl->lang_cnt-MAX_LANG)*sizeof(uint32)); + for ( l=0; llang_cnt; ++l ) + if ( llangs[l] = sllk[j].langs[l]; + else + sl->morelangs[l-MAX_LANG] = sllk[j].langs[l]; + if ( i!=j ) sllk[j].cnt = 0; /* Mark as processed */ + } + } + otl->subtables = sub = chunkalloc(sizeof(struct lookup_subtable)); + sub->lookup = otl; + sub->per_glyph_pst_or_kern = true; + + /* Add it to the various lists it needs to be in */ + otl->next = sf->gsub_lookups; + sf->gsub_lookups = otl; + + /* Now look at every glyph in the font, and see if it has any of the */ + /* lookups we are interested in, and if it does, build a new pst */ + /* containing all posibilities listed on any of them */ + if ( sf->cidmaster ) sf = sf->cidmaster; + psts = galloc(sllk[i].cnt*sizeof(PST *)); + k=0; + do { + _sf = ksubfontcnt ? sf->subfonts[k] : sf; + for ( gid=0; gid<_sf->glyphcnt; ++gid ) if ( (sc = _sf->glyphs[gid])!=NULL ) { + pcnt = 0; + for ( pst=sc->possub; pst!=NULL; pst=pst->next ) { + if ( pst->subtable==NULL ) + continue; + for ( j=0; jsubtable->lookup == sllk[i].lookups[j] ) + break; + if ( jsubtable = sub; + pst->type = pst_alternate; + pst->next = sc->possub; + sc->possub = pst; + pst->u.alt.components = ComponentsFromPSTs(psts,pcnt); + } + ++k; + } while ( ksubfontcnt ); + free(psts); + NameOTLookup(otl,sf); +return( otl ); +} + +void AddNewAALTFeatures(SplineFont *sf) { + /* different script/lang combinations may need different 'aalt' lookups */ + /* well, let's just say different script combinations */ + /* for each script/lang combo find all single/alternate subs for each */ + /* glyph. Merge those choices and create new lookup with that info */ + struct sllk *sllk = NULL; + int sllk_cnt=0, sllk_max = 0; + int i; + OTLookup *otl; + + AALTRemoveOld(sf); + + /* Find all scripts, and all the single/alternate lookups for each */ + /* and all the languages used for these in each script */ + for ( otl=sf->gsub_lookups; otl!=NULL; otl=otl->next ) { + sllk = AddOTLToSllks( otl, sllk, &sllk_cnt, &sllk_max ); + } + /* Each of these gets its own gsub_alternate lookup which gets inserted */ + /* at the head of the lookup list. Each lookup has one subtable */ + for ( i=0; ifeatures; fl!=NULL; fl=fl->next ) { + if ( fl->featuretag==CHR('k','e','r','n') ) +return( false ); + else if ( fl->featuretag==CHR('v','k','r','n') ) +return( true ); + } + + for ( sub=otl->subtables; sub!=NULL; sub=sub->next ) { + if ( sub->kc!=NULL ) { + for ( kc=sf->kerns; kc!=NULL; kc=kc->next ) + if ( kc==sub->kc ) +return( false ); + for ( kc=sf->vkerns; kc!=NULL; kc=kc->next ) + if ( kc==sub->kc ) +return( true ); + } + } + + if ( !ask ) +return( -1 ); + + buts[0] = _("_Horizontal"); buts[1] = _("_Vertical"); buts[2] = NULL; +return( ff_ask(_("Kerning direction"),(const char **) buts,0,1,_("Is this horizontal or vertical kerning data?")) ); +} + +int IsAnchorClassUsed(SplineChar *sc,AnchorClass *an) { + AnchorPoint *ap; + int waslig=0, sawentry=0, sawexit=0; + + for ( ap=sc->anchor; ap!=NULL; ap=ap->next ) { + if ( ap->anchor==an ) { + if ( ap->type==at_centry ) + sawentry = true; + else if ( ap->type==at_cexit ) + sawexit = true; + else if ( an->type==act_mkmk ) { + if ( ap->type==at_basemark ) + sawexit = true; + else + sawentry = true; + } else if ( ap->type!=at_baselig ) +return( -1 ); + else if ( wasliglig_index+1 ) + waslig = ap->lig_index+1; + } + } + if ( sawentry && sawexit ) +return( -1 ); + else if ( sawentry ) +return( -2 ); + else if ( sawexit ) +return( -3 ); +return( waslig ); +} + +int PSTContains(const char *components,const char *name) { + const char *pt; + int len = strlen(name); + + for ( pt = strstr(components,name); pt!=NULL; pt = strstr(pt+len,name)) { + if (( pt==components || pt[-1]==' ') && (pt[len]==' ' || pt[len]=='\0')) +return( true ); + } +return( false ); +} + +int KernClassContains(KernClass *kc, char *name1, char *name2, int ordered ) { + int infirst=0, insecond=0, scpos1=0, kwpos1=0, scpos2=0, kwpos2=0; + int i; + + for ( i=1; ifirst_cnt; ++i ) { + if ( PSTContains(kc->firsts[i],name1) ) { + scpos1 = i; + if ( ++infirst>=3 ) /* The name occurs twice??? */ + break; + } else if ( PSTContains(kc->firsts[i],name2) ) { + kwpos1 = i; + if ( (infirst+=2)>=3 ) + break; + } + } + if ( infirst==0 || infirst>3 ) +return( 0 ); + for ( i=1; isecond_cnt; ++i ) { + if ( PSTContains(kc->seconds[i],name1) ) { + scpos2 = i; + if ( ++insecond>=3 ) + break; + } else if ( PSTContains(kc->seconds[i],name2) ) { + kwpos2 = i; + if ( (insecond+=2)>=3 ) + break; + } + } + if ( insecond==0 || insecond>3 ) +return( 0 ); + if ( (infirst&1) && (insecond&2) ) { + if ( kc->offsets[scpos1*kc->second_cnt+kwpos2]!=0 ) +return( kc->offsets[scpos1*kc->second_cnt+kwpos2] ); + } + if ( !ordered ) { + if ( (infirst&2) && (insecond&1) ) { + if ( kc->offsets[kwpos1*kc->second_cnt+scpos2]!=0 ) +return( kc->offsets[kwpos1*kc->second_cnt+scpos2] ); + } + } +return( 0 ); +} + +int KCFindName(char *name, char **classnames, int cnt ) { + int i; + char *pt, *end, ch; + + for ( i=0; ifirsts,kc->first_cnt); + l = KCFindName(name2,kc->seconds,kc->second_cnt); + if ( (f!=0 || kc->firsts[0]!=NULL) && l!=0 ) +return( f*kc->second_cnt+l ); + +return( -1 ); +} + + +static void NOFI_SortInsertLookup(SplineFont *sf, OTLookup *newotl) { + (void)sf; + (void)newotl; +} + +static void NOFI_OTLookupCopyInto(SplineFont *into_sf,SplineFont *from_sf, + OTLookup *from_otl, OTLookup *to_otl, int scnt, OTLookup *before ) { + (void)into_sf; + (void)from_sf; + (void)from_otl; + (void)to_otl; + (void)scnt; + (void)before; +} + +static void NOFI_Destroy(SplineFont *sf) { + (void)sf; +} + +struct fi_interface noui_fi = { + NOFI_SortInsertLookup, + NOFI_OTLookupCopyInto, + NOFI_Destroy +}; + +struct fi_interface *fi_interface = &noui_fi; + +void FF_SetFIInterface(struct fi_interface *fii) { + fi_interface = fii; +} diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/lookups.h b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/lookups.h new file mode 100644 index 00000000000..2489d0c137c --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/lookups.h @@ -0,0 +1,2 @@ +extern void SortInsertLookup(SplineFont *sf, OTLookup *newotl); +extern char *SuffixFromTags(FeatureScriptLangList *fl); diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/macbinary.c b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/macbinary.c new file mode 100644 index 00000000000..2f92df3e03e --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/macbinary.c @@ -0,0 +1,1201 @@ +/* Copyright (C) 2000-2008 by George Williams */ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "fontforgevw.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include "ttf.h" +#include "psfont.h" +#ifdef LUA_FF_LIB +#undef __Mac +#endif +#if __Mac +# include +# include +#else +# include +#undef __Mac +#define __Mac 0 +#endif + +const int mac_dpi = 72; +/* I had always assumed that the mac still believed in 72dpi screens, but I */ +/* see that in geneva under OS/9, the pointsize does not match the pixel */ +/* size of the font. But the dpi is not constant (and the differences */ +/* excede those supplied by rounding errors) varying between 96 and 84dpi */ + +/* A Mac Resource fork */ +/* http://developer.apple.com/techpubs/mac/MoreToolbox/MoreToolbox-9.html */ +/* begins with a 16 byte header containing: */ +/* resource start offset */ +/* map start offset */ +/* resource length */ +/* map length */ +/* then 256-16 bytes of zeros */ +/* the resource section consists of (many) */ +/* 4 byte length count */ +/* resource data */ +/* the map section contains */ +/* A copy of the 16 byte header */ +/* a 4 byte mac internal value (I hope) */ +/* another 4 bytes of mac internal values (I hope) */ +/* a 2 byte offset from the start of the map section to the list of resource types */ +/* a 2 byte offset from the start of the map section to the list of resource names */ +/* The resource type list consists of */ +/* a 2 byte count of the number of resource types (-1) */ +/* (many copies of) */ +/* a 4 byte resource type ('FOND' for example) */ +/* a 2 byte count of the number of resources of this type (-1) */ +/* a 2 byte offset from the type list start to the resource table */ +/* a resource table looks like */ +/* a 2 byte offset from the resource name table to a pascal */ +/* string containing this resource's name (or 0xffff for none) */ +/* 1 byte of resource flags */ +/* 3 bytes of offset from the resource section to the length & */ +/* data of this instance of the resource type */ +/* 4 bytes of 0 */ +/* The resource name section consists of */ +/* a bunch of pascal strings (ie. preceded by a length byte) */ + +/* The POST resource isn't noticeably documented, it's pretty much a */ +/* straight copy of the pfb file cut up into 0x800 byte chunks. */ +/* (each section of the pfb file has it's own set of chunks, the last may be smaller than 0x800) */ +/* The NFNT resource http://developer.apple.com/techpubs/mac/Text/Text-250.html */ +/* The FOND resource http://developer.apple.com/techpubs/mac/Text/Text-269.html */ +/* The sfnt resource is basically a copy of the ttf file */ + +/* A MacBinary file */ +/* http://www.lazerware.com/formats/macbinary.html */ +/* begins with a 128 byte header */ +/* (which specifies lengths for data/resource forks) */ +/* (and contains mac type/creator data) */ +/* (and other stuff) */ +/* (and finally a crc checksum) */ +/* is followed by the data section (padded to a mult of 128 bytes) */ +/* is followed by the resource section (padded to a mult of 128 bytes) */ + +/* ******************************** Creation ******************************** */ + + +struct resource { + uint32 pos; + uint8 flags; + uint16 id; + char *name; + uint32 nameloc; + uint32 nameptloc; +}; + +struct resourcetype { + uint32 tag; + struct resource *res; + uint32 resloc; +}; + +struct macbinaryheader { + char *macfilename; + char *binfilename; /* if macfilename is null and this is set we will figure out macfilename by removing .bin */ + uint32 type; + uint32 creator; +}; + + +enum psstyle_flags { psf_bold = 1, psf_italic = 2, psf_outline = 4, + psf_shadow = 0x8, psf_condense = 0x10, psf_extend = 0x20 }; + +uint16 _MacStyleCode( char *styles, SplineFont *sf, uint16 *psstylecode ) { + unsigned short stylecode= 0, psstyle=0; + + if ( strstrmatch( styles, "Bold" ) || strstrmatch(styles,"Demi") || + strstrmatch( styles,"Heav") || strstrmatch(styles,"Blac") || +/* A few fonts have German/French styles in their names */ + strstrmatch( styles,"Fett") || strstrmatch(styles,"Gras") ) { + stylecode = sf_bold; + psstyle = psf_bold; + } else if ( sf!=NULL && sf->weight!=NULL && + (strstrmatch( sf->weight, "Bold" ) || strstrmatch(sf->weight,"Demi") || + strstrmatch( sf->weight,"Heav") || strstrmatch(sf->weight,"Blac") || + strstrmatch( sf->weight,"Fett") || strstrmatch(sf->weight,"Gras")) ) { + stylecode = sf_bold; + psstyle = psf_bold; + } + /* URW uses four leter abbreviations of Italic and Oblique */ + /* Somebody else uses two letter abbrevs */ + if ( (sf!=NULL && sf->italicangle!=0) || + strstrmatch( styles, "Ital" ) || + strstrmatch( styles, "Obli" ) || + strstrmatch(styles, "Slanted") || + strstrmatch(styles, "Kurs") || + strstr( styles,"It" ) ) { + stylecode |= sf_italic; + psstyle |= psf_italic; + } + if ( strstrmatch( styles, "Underline" ) ) { + stylecode |= sf_underline; + } + if ( strstrmatch( styles, "Outl" ) ) { + stylecode |= sf_outline; + psstyle |= psf_outline; + } + if ( strstr(styles,"Shadow")!=NULL ) { + stylecode |= sf_shadow; + psstyle |= psf_shadow; + } + if ( strstrmatch( styles, "Cond" ) || strstr( styles,"Cn") || + strstrmatch( styles, "Narrow") ) { + stylecode |= sf_condense; + psstyle |= psf_condense; + } + if ( strstrmatch( styles, "Exte" ) || strstr( styles,"Ex") ) { + stylecode |= sf_extend; + psstyle |= psf_extend; + } + if ( (psstyle&psf_extend) && (psstyle&psf_condense) ) { + if ( sf!=NULL ) + LogError( _("Warning: %s(%s) is both extended and condensed. That's impossible.\n"), + sf->fontname, sf->origname ); + else + LogError( _("Warning: Both extended and condensed. That's impossible.\n") ); + psstyle &= ~psf_extend; + stylecode &= ~sf_extend; + } + if ( psstylecode!=NULL ) + *psstylecode = psstyle; +return( stylecode ); +} + + + +/* ******************************** Reading ********************************* */ + +static SplineFont *SearchPostscriptResources(FILE *f,long rlistpos,int subcnt,long rdata_pos, + long name_list, int flags) { + long here = ftell(f); + long *offsets, lenpos; + int rname = -1, tmp; + int ch1, ch2; + int len, type, i, j, rlen; + unsigned short id, *rsrcids; + /* I don't pretend to understand the rational behind the format of a */ + /* postscript font. It appears to be split up into chunks where the */ + /* maximum chunk size is 0x800, each section (ascii, binary, ascii, eof) */ + /* has its own set of chunks (ie chunks don't cross sections) */ + char *buffer=NULL; + int max = 0; + FILE *pfb; + FontDict *fd; + SplineFont *sf; + (void)name_list; + fseek(f,rlistpos,SEEK_SET); + rsrcids = gcalloc(subcnt,sizeof(short)); + offsets = gcalloc(subcnt,sizeof(long)); + for ( i=0; i>24,pfb); + putc((len>>16)&0xff,pfb); + putc((len>>8)&0xff,pfb); + putc(len&0xff,pfb); + fseek(pfb,hold,SEEK_SET); + if ( ch1==5 ) /* end of font mark */ + break; + putc(0x80,pfb); + putc(ch1,pfb); + lenpos = ftell(pfb); + putc(0,pfb); + putc(0,pfb); + putc(0,pfb); + putc(0,pfb); + type = ch1; + len = rlen; + } + if ( rlen>max ) { + free(buffer); + max = rlen; + if ( max<0x800 ) max = 0x800; + buffer=galloc(max); + if ( buffer==NULL ) { + LogError( _("Out of memory\n") ); + exit( 1 ); + } + } + fread(buffer,1,rlen,f); + fwrite(buffer,1,rlen,pfb); + } + free(buffer); + free(offsets); + free(rsrcids); + putc(0x80,pfb); + putc(3,pfb); + fseek(pfb,lenpos,SEEK_SET); + putc(len>>24,pfb); + putc((len>>16)&0xff,pfb); + putc((len>>8)&0xff,pfb); + putc(len&0xff,pfb); + fseek(f,here,SEEK_SET); + rewind(pfb); + if ( flags&ttf_onlynames ) +return( (SplineFont *) _NamesReadPostscript(pfb) ); /* This closes the font for us */ + + fd = _ReadPSFont(pfb); + sf = NULL; + if ( fd!=NULL ) { + sf = SplineFontFromPSFont(fd); + PSFontFree(fd); + /* There is no FOND in a postscript file, so we can't read any kerning*/ + } + fclose(pfb); +return( sf ); +} + +static SplineFont *SearchTtfResources(FILE *f,long rlistpos,int subcnt,long rdata_pos, + long name_list,char *filename,int flags,enum openflags openflags) { + long here, start = ftell(f); + long roff; + int rname = -1; + int ch1, ch2; + int len, i, rlen, ilen; + /* The sfnt resource is just a copy of the ttf file */ + char *buffer=NULL; + int max = 0; + FILE *ttf; + SplineFont *sf; + int which = 0; + char **names; + char *pt,*lparen, *rparen; + char *chosenname=NULL; + (void)name_list; + fseek(f,rlistpos,SEEK_SET); + if ( subcnt>1 || (flags&ttf_onlynames) ) { + names = gcalloc(subcnt+1,sizeof(char *)); + for ( i=0; i=0; --which ) + if ( strcmp(names[which],find)==0 ) + break; + if ( which==-1 ) { + char *end; + which = strtol(find,&end,10); + if ( *end!='\0' ) + which = -1; + } + if ( which==-1 ) { + char *fn = copy(filename); + fn[lparen-filename] = '\0'; + ff_post_error(_("Not in Collection"),_("%s is not in %.100s"),find,fn); + free(fn); + } + free(find); + } else + which = 0; + if ( lparen==NULL && which!=-1 ) + chosenname = copy(names[which]); + for ( i=0; i16*1024 ) + ilen = 16*1024; + if ( ilen>max ) { + free(buffer); + max = ilen; + if ( max<0x800 ) max = 0x800; + buffer=malloc(max); + } + for ( len=0; lenchosenname==NULL ) sf->chosenname = chosenname; +return( sf ); + } + fseek(f,here,SEEK_SET); + } + free(chosenname); + free(buffer); + fseek(f,start,SEEK_SET); +return( NULL ); +} + +typedef struct fond { + char *fondname; + int first, last; + int assoc_cnt; + struct assoc { + short size, style, id; + } *assoc; + /* size==0 => scalable */ + /* style>>8 is the bit depth (0=>1, 1=>2, 2=>4, 3=>8) */ + /* search order for ID is sfnt, NFNT, FONT */ + int stylewidthcnt; + struct stylewidths { + short style; + short *widthtab; /* 4.12 fixed number with the width specified as a fraction of an em */ + } *stylewidths; + int stylekerncnt; + struct stylekerns { + short style; + int kernpairs; + struct kerns { + unsigned char ch1, ch2; + short offset; /* 4.12 */ + } *kerns; + } *stylekerns; + char *psnames[48]; + struct fond *next; +} FOND; + +struct MacFontRec { + short fontType; + short firstChar; + short lastChar; + short widthMax; + short kernMax; /* bb learing */ + short Descent; /* maximum negative distance below baseline*/ + short fRectWidth; /* bounding box width */ + short fRectHeight; /* bounding box height */ + unsigned short *offsetWidths;/* offset to start of offset/width table */ + /* 0xffff => undefined, else high byte is offset in locTable, */ + /* low byte is width */ + short ascent; + short descent; + short leading; + short rowWords; /* shorts per row */ + unsigned short *fontImage; /* rowWords*fRectHeight */ + /* Images for all characters plus one extra for undefined */ + unsigned short *locs; /* lastchar-firstchar+3 words */ + /* Horizontal offset to start of n'th character. Note: applies */ + /* to each row. Missing characters have same loc as following */ +}; + +static void FondListFree(FOND *list) { + FOND *next; + int i; + + while ( list!=NULL ) { + next = list->next; + free(list->assoc); + for ( i=0; istylewidthcnt; ++i ) + free(list->stylewidths[i].widthtab); + free(list->stylewidths); + for ( i=0; istylekerncnt; ++i ) + free(list->stylekerns[i].kerns); + free(list->stylekerns); + for ( i=0; i<48; ++i ) + free(list->psnames[i]); + free(list); + list = next; + } +} + +/* There's probably only one fond in the file, but there could be more so be */ +/* prepared... */ +/* I want the fond: */ +/* to get the fractional widths for the SWIDTH entry on bdf */ +/* to get the font name */ +/* to get the font association tables */ +/* to get the style flags */ +/* http://developer.apple.com/techpubs/mac/Text/Text-269.html */ +static FOND *BuildFondList(FILE *f,long rlistpos,int subcnt,long rdata_pos, + long name_list,int flags) { + long here, start = ftell(f); + long offset; + int rname = -1; + char name[300]; + int ch1, ch2; + int i, j, k, cnt, isfixed; + FOND *head=NULL, *cur; + long widoff, kernoff, styleoff; + + fseek(f,rlistpos,SEEK_SET); + for ( i=0; inext = head; + head = cur; + + if ( rname!=-1 ) { + fseek(f,name_list+rname,SEEK_SET); + ch1 = getc(f); + fread(name,1,ch1,f); + name[ch1] = '\0'; + cur->fondname = copy(name); + } + + offset += 4; + fseek(f,offset,SEEK_SET); + isfixed = getushort(f)&0x8000?1:0; + /* family id = */ getushort(f); + cur->first = getushort(f); + cur->last = getushort(f); +/* on a 1 point font... */ + /* ascent = */ getushort(f); + /* descent = (short) */ getushort(f); + /* leading = */ getushort(f); + /* widmax = */ getushort(f); + if ( (widoff = getlong(f))!=0 ) widoff += offset; + if ( (kernoff = getlong(f))!=0 ) kernoff += offset; + if ( (styleoff = getlong(f))!=0 ) styleoff += offset; + for ( j=0; j<9; ++j ) + getushort(f); + /* internal & undefined, for international scripts = */ getlong(f); + /* version = */ getushort(f); + cur->assoc_cnt = getushort(f)+1; + cur->assoc = gcalloc(cur->assoc_cnt,sizeof(struct assoc)); + for ( j=0; jassoc_cnt; ++j ) { + cur->assoc[j].size = getushort(f); + cur->assoc[j].style = getushort(f); + cur->assoc[j].id = getushort(f); + } + if ( widoff!=0 ) { + fseek(f,widoff,SEEK_SET); + cnt = getushort(f)+1; + cur->stylewidthcnt = cnt; + cur->stylewidths = gcalloc(cnt,sizeof(struct stylewidths)); + for ( j=0; jstylewidths[j].style = getushort(f); + cur->stylewidths[j].widthtab = galloc((cur->last-cur->first+3)*sizeof(short)); + for ( k=cur->first; k<=cur->last+2; ++k ) + cur->stylewidths[j].widthtab[k] = getushort(f); + } + } + if ( kernoff!=0 && (flags&ttf_onlykerns) ) { + fseek(f,kernoff,SEEK_SET); + cnt = getushort(f)+1; + cur->stylekerncnt = cnt; + cur->stylekerns = gcalloc(cnt,sizeof(struct stylekerns)); + for ( j=0; jstylekerns[j].style = getushort(f); + cur->stylekerns[j].kernpairs = getushort(f); + cur->stylekerns[j].kerns = galloc(cur->stylekerns[j].kernpairs*sizeof(struct kerns)); + for ( k=0; kstylekerns[j].kernpairs; ++k ) { + cur->stylekerns[j].kerns[k].ch1 = getc(f); + cur->stylekerns[j].kerns[k].ch2 = getc(f); + cur->stylekerns[j].kerns[k].offset = getushort(f); + } + } + } + if ( styleoff!=0 ) { + uint8 stringoffsets[48]; + int strcnt, stringlen, format; + char **strings, *pt; + fseek(f,styleoff,SEEK_SET); + /* class = */ getushort(f); + /* glyph encoding offset = */ getlong(f); + /* reserved = */ getlong(f); + for ( j=0; j<48; ++j ) + stringoffsets[j] = getc(f); + strcnt = getushort(f); + strings = galloc(strcnt*sizeof(char *)); + for ( j=0; j=0; --k ) + if ( stringoffsets[j]==stringoffsets[k] ) + break; + if ( k!=-1 ) + continue; /* this style doesn't exist */ + format = stringoffsets[j]-1; + stringlen = strings[0][0]; + if ( format!=0 ) + for ( k=0; kpsnames[j] = galloc(stringlen+1); + strcpy(pt,strings[ 0 ]+1); + pt += strings[ 0 ][0]; + if ( format!=0 ) + for ( k=0; k=0; --which ) + if ( styles[which] == style ) +return( which ); + +return( -1 ); +} + +static FOND *PickFOND(FOND *fondlist,char *filename,char **name, int *style) { + int i,j; + FOND *test; + uint8 stylesused[96]; + char **names; + FOND **fonds = NULL, *fond = NULL; + int *styles = NULL; + int cnt, which; + char *pt, *lparen; + char *find = NULL; + + if ((pt = strrchr(filename,'/'))!=NULL ) pt = filename; + if ( (lparen = strchr(filename,'('))!=NULL && strchr(lparen,')')!=NULL ) { + find = copy(lparen+1); + pt = strchr(find,')'); + if ( pt!=NULL ) *pt='\0'; + for ( test=fondlist; test!=NULL; test=test->next ) { + for ( i=0; i<48; ++i ) + if ( test->psnames[i]!=NULL && strcmp(find,test->psnames[i])==0 ) { + *style = (i&3) | ((i&~3)<<1); /* PS styles skip underline bit */ + *name = copy(test->psnames[i]); +return( test ); + } + } + } + + /* The file may contain multiple families, and each family may contain */ + /* multiple styles (and each style may contain multiple sizes, but that's */ + /* not an issue for us here) */ + names = NULL; + for ( i=0; i<2; ++i ) { + cnt = 0; + for ( test=fondlist; test!=NULL; test=test->next ) if ( test->fondname!=NULL ) { + memset(stylesused,0,sizeof(stylesused)); + for ( j=0; jassoc_cnt; ++j ) { + if ( test->assoc[j].size!=0 && !stylesused[test->assoc[j].style]) { + stylesused[test->assoc[j].style]=true; + if ( names!=NULL ) { + names[cnt] = BuildName(test->fondname,test->assoc[j].style); + styles[cnt] = test->assoc[j].style; + fonds[cnt] = test; + } + ++cnt; + } + } + } + if ( names==NULL ) { + names = gcalloc(cnt+1,sizeof(char *)); + fonds = galloc(cnt*sizeof(FOND *)); + styles = galloc(cnt*sizeof(int)); + } + } + + if ( find!=NULL ) { + for ( which=cnt-1; which>=0; --which ) + if ( strcmp(names[which],find)==0 ) + break; + if ( which==-1 && strstrmatch(find,test->fondname)!=NULL ) + which = GuessStyle(find,styles,cnt); + if ( which==-1 ) { + char *fn = copy(filename); + fn[lparen-filename] = '\0'; + ff_post_error(_("Not in Collection"),_("%s is not in %.100s"),find,fn); + free(fn); + } + free(find); + } else + which = 0; + + if ( which!=-1 ) { + fond = fonds[which]; + *name = copy(names[which]); + *style = styles[which]; + } + for ( i=0; istylekerncnt; ++i ) + if ( fond->stylekerns[i].style==style ) + break; + if ( i==fond->stylekerncnt ) { + LogError(_("No kerning table for %s\n"), name ); + free(name); +return( NULL ); + } + for ( j=0; jstylekerns[i].kernpairs; ++j ) { + ch1 = fond->stylekerns[i].kerns[j].ch1; + ch2 = fond->stylekerns[i].kerns[j].ch2; + offset = (fond->stylekerns[i].kerns[j].offset*(into->ascent+into->descent)+(1<<11))>>12; + sc1 = SFMakeChar(into,map,ch1); + sc2 = SFMakeChar(into,map,ch2); + for ( kp=sc1->kerns; kp!=NULL; kp=kp->next ) + if ( kp->sc==sc2 ) + break; + if ( kp==NULL ) { + uint32 script; + kp = chunkalloc(sizeof(KernPair)); + kp->sc = sc2; + kp->next = sc1->kerns; + sc1->kerns = kp; + script = SCScriptFromUnicode(sc1); + if ( script==DEFAULT_SCRIPT ) + script = SCScriptFromUnicode(sc2); + kp->subtable = SFSubTableFindOrMake(sc1->parent,CHR('k','e','r','n'), + script, gpos_pair); + } + kp->off = offset; + } +return( into ); +} + +/* Look for a bare truetype font in a binhex/macbinary wrapper */ +static SplineFont *MightBeTrueType(FILE *binary,int32 pos,int32 dlen,int flags, + enum openflags openflags) { + FILE *temp = tmpfile(); + char *buffer = galloc(8192); + int len; + SplineFont *sf; + + if ( flags&ttf_onlynames ) { + char **ret; + char *temp = TTFGetFontName(binary,pos,pos); + if ( temp==NULL ) +return( NULL ); + ret = galloc(2*sizeof(char *)); + ret[0] = temp; + ret[1] = NULL; +return( (SplineFont *) ret ); + } + + fseek(binary,pos,SEEK_SET); + while ( dlen>0 ) { + len = dlen > 8192 ? 8192 : dlen; + len = fread(buffer,1,dlen > 8192 ? 8192 : dlen,binary); + if ( len==0 ) + break; + fwrite(buffer,1,len,temp); + dlen -= len; + } + rewind(temp); + sf = _SFReadTTF(temp,flags,openflags,NULL,NULL); + fclose(temp); + free(buffer); +return( sf ); +} + +static SplineFont *IsResourceFork(FILE *f, long offset,char *filename,int flags, + enum openflags openflags, SplineFont *into,EncMap *map) { + /* If it is a good resource fork then the first 16 bytes are repeated */ + /* at the location specified in bytes 4-7 */ + /* We include an offset because if we are looking at a mac binary file */ + /* the resource fork will actually start somewhere in the middle of the */ + /* file, not at the beginning */ + unsigned char buffer[16], buffer2[16]; + long rdata_pos, map_pos, type_list, name_list, rpos; + int32 rdata_len, map_len; + uint32 nfnt_pos, font_pos, fond_pos; + unsigned long tag; + int i, cnt, subcnt, nfnt_subcnt=0, font_subcnt=0, fond_subcnt=0; + SplineFont *sf; + FOND *fondlist=NULL; + fond_pos=0; + fseek(f,offset,SEEK_SET); + if ( fread(buffer,1,16,f)!=16 ) +return( NULL ); + rdata_pos = offset + ((buffer[0]<<24)|(buffer[1]<<16)|(buffer[2]<<8)|buffer[3]); + map_pos = offset + ((buffer[4]<<24)|(buffer[5]<<16)|(buffer[6]<<8)|buffer[7]); + rdata_len = ((buffer[8]<<24)|(buffer[9]<<16)|(buffer[10]<<8)|buffer[11]); + map_len = ((buffer[12]<<24)|(buffer[13]<<16)|(buffer[14]<<8)|buffer[15]); + if ( rdata_pos+rdata_len!=map_pos || rdata_len==0 ) +return( NULL ); + fseek(f,map_pos,SEEK_SET); + buffer2[15] = buffer[15]+1; /* make it be different */ + if ( fread(buffer2,1,16,f)!=16 ) +return( NULL ); + +/* Apple's data fork resources appear to have a bunch of zeroes here instead */ +/* of a copy of the first 16 bytes */ + for ( i=0; i<16; ++i ) + if ( buffer2[i]!=0 ) + break; + if ( i!=16 ) { + for ( i=0; i<16; ++i ) + if ( buffer[i]!=buffer2[i] ) +return( NULL ); + } + getlong(f); /* skip the handle to the next resource map */ + getushort(f); /* skip the file resource number */ + getushort(f); /* skip the attributes */ + type_list = map_pos + getushort(f); + name_list = map_pos + getushort(f); + + fseek(f,type_list,SEEK_SET); + cnt = getushort(f)+1; + for ( i=0; i>24, (tag>>16)&0xff, (tag>>8)&0xff, tag&0xff );*/ + subcnt = getushort(f)+1; + rpos = type_list+getushort(f); + sf = NULL; + if ( tag==CHR('P','O','S','T') && !(flags&(ttf_onlystrikes|ttf_onlykerns))) /* No FOND */ + sf = SearchPostscriptResources(f,rpos,subcnt,rdata_pos,name_list,flags); + else if ( tag==CHR('s','f','n','t') && !(flags&ttf_onlykerns)) + sf = SearchTtfResources(f,rpos,subcnt,rdata_pos,name_list,filename,flags,openflags); + else if ( tag==CHR('N','F','N','T') ) { + nfnt_pos = rpos; + nfnt_subcnt = subcnt; + } else if ( tag==CHR('F','O','N','T') ) { + font_pos = rpos; + font_subcnt = subcnt; + } else if ( tag==CHR('F','O','N','D') ) { + fond_pos = rpos; + fond_subcnt = subcnt; + } + if ( sf!=NULL ) +return( sf ); + } + if ( flags&ttf_onlynames ) /* Not interested in bitmap resources here */ +return( NULL ); + + if ( flags&ttf_onlykerns ) { /* For kerns */ + if ( fond_subcnt!=0 ) + fondlist = BuildFondList(f,fond_pos,fond_subcnt,rdata_pos,name_list,flags); + into = FindFamilyStyleKerns(into,map,fondlist,filename); + FondListFree(fondlist); +return( into ); + } + /* Ok. If no outline font, try for a bitmap */ + if ( nfnt_subcnt==0 ) { + nfnt_pos = font_pos; + nfnt_subcnt = font_subcnt; + } +return( (SplineFont *) -1 ); /* It's a valid resource file, but just has no fonts */ +} + + +static SplineFont *IsResourceInBinary(FILE *f,char *filename,int flags, + enum openflags openflags, SplineFont *into,EncMap *map) { + unsigned char header[128]; + unsigned long offset, dlen, rlen; + + if ( fread(header,1,128,f)!=128 ) +return( NULL ); + if ( header[0]!=0 || header[74]!=0 || header[82]!=0 || header[1]<=0 || + header[1]>33 || header[63]!=0 || header[2+header[1]]!=0 ) +return( NULL ); + dlen = ((header[0x53]<<24)|(header[0x54]<<16)|(header[0x55]<<8)|header[0x56]); + rlen = ((header[0x57]<<24)|(header[0x58]<<16)|(header[0x59]<<8)|header[0x5a]); + /* 128 bytes for header, then the dlen is padded to a 128 byte boundary */ + offset = 128 + ((dlen+127)&~127); +/* Look for a bare truetype font in a binhex/macbinary wrapper */ + if ( dlen!=0 && rlen<=dlen) { + int pos = ftell(f); + fread(header,1,4,f); + header[5] = '\0'; + if ( strcmp((char *) header,"OTTO")==0 || strcmp((char *) header,"true")==0 || + strcmp((char *) header,"ttcf")==0 || + (header[0]==0 && header[1]==1 && header[2]==0 && header[3]==0)) +return( MightBeTrueType(f,pos,dlen,flags,openflags)); + } +return( IsResourceFork(f,offset,filename,flags,openflags,into,map)); +} + +static int lastch=0, repeat = 0; +static void outchr(FILE *binary, int ch) { + int i; + + if ( repeat ) { + if ( ch==0 ) { + /* no repeat, output a literal 0x90 (the repeat flag) */ + lastch=0x90; + putc(lastch,binary); + } else { + for ( i=1; i>16)&0xff); + outchr(binary,(val>>8)&0xff); + outchr(binary,val&0xff); + val = cnt = 0; + } + } + if ( cnt!=0 ) { + if ( cnt==1 ) + outchr(binary,val<<2); + else if ( cnt==2 ) { + val<<=4; + outchr(binary,(val>>8)&0xff); + outchr(binary,val&0xff); + } else if ( cnt==3 ) { + val<<=6; + outchr(binary,(val>>16)&0xff); + outchr(binary,(val>>8)&0xff); + outchr(binary,val&0xff); + } + } + + rewind(binary); + ch = getc(binary); /* Name length */ + /* skip name */ + for ( i=0; i8 || strlen(dpt)>4 ) { + char exten[8]; + strncpy(exten,dpt,7); + exten[4] = '\0'; /* it includes the dot */ + if ( dpt-spt>6 ) + dpt = spt+6; + *dpt++ = '~'; + *dpt++ = '1'; + strcpy(dpt,exten); + } +return( IsResourceInFile(buffer,flags,openflags,into,map)); +} + +SplineFont *SFReadMacBinary(char *filename,int flags,enum openflags openflags) { + SplineFont *sf = FindResourceFile(filename,flags,openflags,NULL,NULL); + + if ( sf==NULL ) + LogError( _("Couldn't find a font file named %s\n"), filename ); + else if ( sf==(SplineFont *) (-1) ) { + LogError( _("%s is a mac resource file but contains no postscript or truetype fonts\n"), filename ); + sf = NULL; + } +return( sf ); +} + +char **NamesReadMacBinary(char *filename) { +return( (char **) FindResourceFile(filename,ttf_onlynames,0,NULL,NULL)); +} + +/* should try to optimize this */ +SplineFont *SFReadMacBinaryInfo(char *filename,int flags,enum openflags openflags) { + SplineFont *sf = FindResourceFile(filename,flags,openflags,NULL,NULL); + + if ( sf==NULL ) + LogError( _("Couldn't find a font file named %s\n"), filename ); + else if ( sf==(SplineFont *) (-1) ) { + LogError( _("%s is a mac resource file but contains no postscript or truetype fonts\n"), filename ); + sf = NULL; + } +return( sf ); +} diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/macenc.c b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/macenc.c new file mode 100644 index 00000000000..a44fc3ab5a6 --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/macenc.c @@ -0,0 +1,2244 @@ +/* Copyright (C) 2003-2008 by George Williams */ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "fontforgevw.h" +#include +#include +#include "ttf.h" + +/* + The original data for these mappings may be found at + http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/ + unfortunately this site does not contain all the macintosh encodings + so we leave some blank +*/ +/* Response (indirectly) from charsets@apple.com when asked about the missing + encodings: + + > I don't believe any of those additional scripts are actually + > defined as character encodings. He can safely ignore anything + > that's not in the Apple folder on the Unicode site. + > + > I monitor charsets@apple.com and don't recall seeing any e-mail + > on this subject. It's possible it got lost in the voluminous + > spam the address receives. + > + > Deborah + I find this perplexing (unless the script is defined but unused, how can + it fail to have a defined encoding), but will accept it. +*/ + +/* Macintosh 1 byte encodings */ +static unichar_t arabic[256] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, + 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, + 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, + 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, + 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, + 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, + 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, + 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, + 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, + 0x00c4, 0x00a0, 0x00c7, 0x00c9, 0x00d1, 0x00d6, 0x00dc, 0x00e1, + 0x00e0, 0x00e2, 0x00e4, 0x06ba, 0x00ab, 0x00e7, 0x00e9, 0x00e8, + 0x00ea, 0x00eb, 0x00ed, 0x2026, 0x00ee, 0x00ef, 0x00f1, 0x00f3, + 0x00bb, 0x00f4, 0x00f6, 0x00f7, 0x00fa, 0x00f9, 0x00fb, 0x00fc, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x066a, 0x0026, 0x0027, + 0x0028, 0x0029, 0x002a, 0x002b, 0x060c, 0x002d, 0x002e, 0x002f, + 0x0660, 0x0661, 0x0662, 0x0663, 0x0664, 0x0665, 0x0666, 0x0667, + 0x0668, 0x0669, 0x003a, 0x061b, 0x003c, 0x003d, 0x003e, 0x061f, + 0x274a, 0x0621, 0x0622, 0x0623, 0x0624, 0x0625, 0x0626, 0x0627, + 0x0628, 0x0629, 0x062a, 0x062b, 0x062c, 0x062d, 0x062e, 0x062f, + 0x0630, 0x0631, 0x0632, 0x0633, 0x0634, 0x0635, 0x0636, 0x0637, + 0x0638, 0x0639, 0x063a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, + 0x0640, 0x0641, 0x0642, 0x0643, 0x0644, 0x0645, 0x0646, 0x0647, + 0x0648, 0x0649, 0x064a, 0x064b, 0x064c, 0x064d, 0x064e, 0x064f, + 0x0650, 0x0651, 0x0652, 0x067e, 0x0679, 0x0686, 0x06d5, 0x06a4, + 0x06af, 0x0688, 0x0691, 0x007b, 0x007c, 0x007d, 0x0698, 0x06d2 +}; + +static unichar_t centeuro[256] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, + 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, + 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, + 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, + 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, + 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, + 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, + 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, + 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, + 0x00c4, 0x0100, 0x0101, 0x00c9, 0x0104, 0x00d6, 0x00dc, 0x00e1, + 0x0105, 0x010c, 0x00e4, 0x010d, 0x0106, 0x0107, 0x00e9, 0x0179, + 0x017a, 0x010e, 0x00ed, 0x010f, 0x0112, 0x0113, 0x0116, 0x00f3, + 0x0117, 0x00f4, 0x00f6, 0x00f5, 0x00fa, 0x011a, 0x011b, 0x00fc, + 0x2020, 0x00b0, 0x0118, 0x00a3, 0x00a7, 0x2022, 0x00b6, 0x00df, + 0x00ae, 0x00a9, 0x2122, 0x0119, 0x00a8, 0x2260, 0x0123, 0x012e, + 0x012f, 0x012a, 0x2264, 0x2265, 0x012b, 0x0136, 0x2202, 0x2211, + 0x0142, 0x013b, 0x013c, 0x013d, 0x013e, 0x0139, 0x013a, 0x0145, + 0x0146, 0x0143, 0x00ac, 0x221a, 0x0144, 0x0147, 0x2206, 0x00ab, + 0x00bb, 0x2026, 0x00a0, 0x0148, 0x0150, 0x00d5, 0x0151, 0x014c, + 0x2013, 0x2014, 0x201c, 0x201d, 0x2018, 0x2019, 0x00f7, 0x25ca, + 0x014d, 0x0154, 0x0155, 0x0158, 0x2039, 0x203a, 0x0159, 0x0156, + 0x0157, 0x0160, 0x201a, 0x201e, 0x0161, 0x015a, 0x015b, 0x00c1, + 0x0164, 0x0165, 0x00cd, 0x017d, 0x017e, 0x016a, 0x00d3, 0x00d4, + 0x016b, 0x016e, 0x00da, 0x016f, 0x0170, 0x0171, 0x0172, 0x0173, + 0x00dd, 0x00fd, 0x0137, 0x017b, 0x0141, 0x017c, 0x0122, 0x02c7 +}; + +static unichar_t croatian[256] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, + 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, + 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, + 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, + 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, + 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, + 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, + 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, + 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, + 0x00c4, 0x00c5, 0x00c7, 0x00c9, 0x00d1, 0x00d6, 0x00dc, 0x00e1, + 0x00e0, 0x00e2, 0x00e4, 0x00e3, 0x00e5, 0x00e7, 0x00e9, 0x00e8, + 0x00ea, 0x00eb, 0x00ed, 0x00ec, 0x00ee, 0x00ef, 0x00f1, 0x00f3, + 0x00f2, 0x00f4, 0x00f6, 0x00f5, 0x00fa, 0x00f9, 0x00fb, 0x00fc, + 0x2020, 0x00b0, 0x00a2, 0x00a3, 0x00a7, 0x2022, 0x00b6, 0x00df, + 0x00ae, 0x0160, 0x2122, 0x00b4, 0x00a8, 0x2260, 0x017d, 0x00d8, + 0x221e, 0x00b1, 0x2264, 0x2265, 0x2206, 0x00b5, 0x2202, 0x2211, + 0x220f, 0x0161, 0x222b, 0x00aa, 0x00ba, 0x03a9, 0x017e, 0x00f8, + 0x00bf, 0x00a1, 0x00ac, 0x221a, 0x0192, 0x2248, 0x0106, 0x00ab, + 0x010c, 0x2026, 0x00a0, 0x00c0, 0x00c3, 0x00d5, 0x0152, 0x0153, + 0x0110, 0x2014, 0x201c, 0x201d, 0x2018, 0x2019, 0x00f7, 0x25ca, + 0xf8ff, 0x00a9, 0x2044, 0x20ac, 0x2039, 0x203a, 0x00c6, 0x00bb, + 0x2013, 0x00b7, 0x201a, 0x201e, 0x2030, 0x00c2, 0x0107, 0x00c1, + 0x010d, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x00d3, 0x00d4, + 0x0111, 0x00d2, 0x00da, 0x00db, 0x00d9, 0x0131, 0x02c6, 0x02dc, + 0x00af, 0x03c0, 0x00cb, 0x02da, 0x00b8, 0x00ca, 0x00e6, 0x02c7 +}; + +static unichar_t cyrillic[256] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, + 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, + 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, + 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, + 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, + 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, + 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, + 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, + 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, + 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, + 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f, + 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, + 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f, + 0x2020, 0x00b0, 0x0490, 0x00a3, 0x00a7, 0x2022, 0x00b6, 0x0406, + 0x00ae, 0x00a9, 0x2122, 0x0402, 0x0452, 0x2260, 0x0403, 0x0453, + 0x221e, 0x00b1, 0x2264, 0x2265, 0x0456, 0x00b5, 0x0491, 0x0408, + 0x0404, 0x0454, 0x0407, 0x0457, 0x0409, 0x0459, 0x040a, 0x045a, + 0x0458, 0x0405, 0x00ac, 0x221a, 0x0192, 0x2248, 0x2206, 0x00ab, + 0x00bb, 0x2026, 0x00a0, 0x040b, 0x045b, 0x040c, 0x045c, 0x0455, + 0x2013, 0x2014, 0x201c, 0x201d, 0x2018, 0x2019, 0x00f7, 0x201e, + 0x040e, 0x045e, 0x040f, 0x045f, 0x2116, 0x0401, 0x0451, 0x044f, + 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, + 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, + 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, + 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x20ac +}; + +static unichar_t devanagari[256] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, + 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, + 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, + 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, + 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, + 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, + 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, + 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, + 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, + 0x00d7, 0x2212, 0x2013, 0x2014, 0x2018, 0x2019, 0x2026, 0x2022, + 0x00a9, 0x00ae, 0x2122, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, + 0x0965, 0x0970, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, + 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, + 0x00a0, 0x0901, 0x0902, 0x0903, 0x0905, 0x0906, 0x0907, 0x0908, + 0x0909, 0x090a, 0x090b, 0x090e, 0x090f, 0x0910, 0x090d, 0x0912, + 0x0913, 0x0914, 0x0911, 0x0915, 0x0916, 0x0917, 0x0918, 0x0919, + 0x091a, 0x091b, 0x091c, 0x091d, 0x091e, 0x091f, 0x0920, 0x0921, + 0x0922, 0x0923, 0x0924, 0x0925, 0x0926, 0x0927, 0x0928, 0x0929, + 0x092a, 0x092b, 0x092c, 0x092d, 0x092e, 0x092f, 0x095f, 0x0930, + 0x0931, 0x0932, 0x0933, 0x0934, 0x0935, 0x0936, 0x0937, 0x0938, + 0x0939, 0x200e, 0x093e, 0x093f, 0x0940, 0x0941, 0x0942, 0x0943, + 0x0946, 0x0947, 0x0948, 0x0945, 0x094a, 0x094b, 0x094c, 0x0949, + 0x094d, 0x093c, 0x0964, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, + 0x00f0, 0x0966, 0x0967, 0x0968, 0x0969, 0x096a, 0x096b, 0x096c, + 0x096d, 0x096e, 0x096f, +}; + +static unichar_t farsi[256] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, + 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, + 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, + 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, + 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, + 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, + 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, + 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, + 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, + 0x00c4, 0x00a0, 0x00c7, 0x00c9, 0x00d1, 0x00d6, 0x00dc, 0x00e1, + 0x00e0, 0x00e2, 0x00e4, 0x06ba, 0x00ab, 0x00e7, 0x00e9, 0x00e8, + 0x00ea, 0x00eb, 0x00ed, 0x2026, 0x00ee, 0x00ef, 0x00f1, 0x00f3, + 0x00bb, 0x00f4, 0x00f6, 0x00f7, 0x00fa, 0x00f9, 0x00fb, 0x00fc, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x066a, 0x0026, 0x0027, + 0x0028, 0x0029, 0x002a, 0x002b, 0x060c, 0x002d, 0x002e, 0x002f, + 0x06f0, 0x06f1, 0x06f2, 0x06f3, 0x06f4, 0x06f5, 0x06f6, 0x06f7, + 0x06f8, 0x06f9, 0x003a, 0x061b, 0x003c, 0x003d, 0x003e, 0x061f, + 0x274a, 0x0621, 0x0622, 0x0623, 0x0624, 0x0625, 0x0626, 0x0627, + 0x0628, 0x0629, 0x062a, 0x062b, 0x062c, 0x062d, 0x062e, 0x062f, + 0x0630, 0x0631, 0x0632, 0x0633, 0x0634, 0x0635, 0x0636, 0x0637, + 0x0638, 0x0639, 0x063a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, + 0x0640, 0x0641, 0x0642, 0x0643, 0x0644, 0x0645, 0x0646, 0x0647, + 0x0648, 0x0649, 0x064a, 0x064b, 0x064c, 0x064d, 0x064e, 0x064f, + 0x0650, 0x0651, 0x0652, 0x067e, 0x0679, 0x0686, 0x06d5, 0x06a4, + 0x06af, 0x0688, 0x0691, 0x007b, 0x007c, 0x007d, 0x0698, 0x06d2 +}; + +static unichar_t greek[256] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, + 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, + 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, + 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, + 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, + 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, + 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, + 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, + 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, + 0x00c4, 0x00b9, 0x00b2, 0x00c9, 0x00b3, 0x00d6, 0x00dc, 0x0385, + 0x00e0, 0x00e2, 0x00e4, 0x0384, 0x00a8, 0x00e7, 0x00e9, 0x00e8, + 0x00ea, 0x00eb, 0x00a3, 0x2122, 0x00ee, 0x00ef, 0x2022, 0x00bd, + 0x2030, 0x00f4, 0x00f6, 0x00a6, 0x20ac, 0x00f9, 0x00fb, 0x00fc, + 0x2020, 0x0393, 0x0394, 0x0398, 0x039b, 0x039e, 0x03a0, 0x00df, + 0x00ae, 0x00a9, 0x03a3, 0x03aa, 0x00a7, 0x2260, 0x00b0, 0x00b7, + 0x0391, 0x00b1, 0x2264, 0x2265, 0x00a5, 0x0392, 0x0395, 0x0396, + 0x0397, 0x0399, 0x039a, 0x039c, 0x03a6, 0x03ab, 0x03a8, 0x03a9, + 0x03ac, 0x039d, 0x00ac, 0x039f, 0x03a1, 0x2248, 0x03a4, 0x00ab, + 0x00bb, 0x2026, 0x00a0, 0x03a5, 0x03a7, 0x0386, 0x0388, 0x0153, + 0x2013, 0x2015, 0x201c, 0x201d, 0x2018, 0x2019, 0x00f7, 0x0389, + 0x038a, 0x038c, 0x038e, 0x03ad, 0x03ae, 0x03af, 0x03cc, 0x038f, + 0x03cd, 0x03b1, 0x03b2, 0x03c8, 0x03b4, 0x03b5, 0x03c6, 0x03b3, + 0x03b7, 0x03b9, 0x03be, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03bf, + 0x03c0, 0x03ce, 0x03c1, 0x03c3, 0x03c4, 0x03b8, 0x03c9, 0x03c2, + 0x03c7, 0x03c5, 0x03b6, 0x03ca, 0x03cb, 0x0390, 0x03b0, 0x00ad +}; + +static unichar_t gujarati[256] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, + 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, + 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, + 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, + 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, + 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, + 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, + 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, + 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, + 0x00d7, 0x2212, 0x2013, 0x2014, 0x2018, 0x2019, 0x2026, 0x2022, + 0x00a9, 0x00ae, 0x2122, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, + 0x0965, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097, + 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, + 0x00a0, 0x0a81, 0x0a82, 0x0a83, 0x0a85, 0x0a86, 0x0a87, 0x0a88, + 0x0a89, 0x0a8a, 0x0a8b, 0x00ab, 0x0a8f, 0x0a90, 0x0a8d, 0x00af, + 0x0a93, 0x0a94, 0x0a91, 0x0a95, 0x0a96, 0x0a97, 0x0a98, 0x0a99, + 0x0a9a, 0x0a9b, 0x0a9c, 0x0a9d, 0x0a9e, 0x0a9f, 0x0aa0, 0x0aa1, + 0x0aa2, 0x0aa3, 0x0aa4, 0x0aa5, 0x0aa6, 0x0aa7, 0x0aa8, 0x00c7, + 0x0aaa, 0x0aab, 0x0aac, 0x0aad, 0x0aae, 0x0aaf, 0x00ce, 0x0ab0, + 0x00d0, 0x0ab2, 0x0ab3, 0x00d3, 0x0ab5, 0x0ab6, 0x0ab7, 0x0ab8, + 0x0ab9, 0x200e, 0x0abe, 0x0abf, 0x0ac0, 0x0ac1, 0x0ac2, 0x0ac3, + 0x00e0, 0x0ac7, 0x0ac8, 0x0ac5, 0x00e4, 0x0acb, 0x0acc, 0x0ac9, + 0x0acd, 0x0abc, 0x0964, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, + 0x00f0, 0x0ae6, 0x0ae7, 0x0ae8, 0x0ae9, 0x0aea, 0x0aeb, 0x0aec, + 0x0aed, 0x0aee, 0x0aef, +}; + +static unichar_t gurmukhi[256] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, + 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, + 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, + 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, + 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, + 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, + 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, + 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, + 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, + 0x00d7, 0x2212, 0x2013, 0x2014, 0x2018, 0x2019, 0x2026, 0x2022, + 0x00a9, 0x00ae, 0x2122, 0x008b, 0x008c, 0x008d, 0x008e, 0x008f, + 0x0a71, 0x0a5c, 0x0a73, 0x0a72, 0x0a74, 0x0095, 0x0096, 0x0097, + 0x0098, 0x0099, 0x009a, 0x009b, 0x009c, 0x009d, 0x009e, 0x009f, + 0x00a0, 0x00a1, 0x0a02, 0x00a3, 0x0a05, 0x0a06, 0x0a07, 0x0a08, + 0x0a09, 0x0a0a, 0x00aa, 0x00ab, 0x0a0f, 0x0a10, 0x00ae, 0x00af, + 0x0a13, 0x0a14, 0x00b2, 0x0a15, 0x0a16, 0x0a17, 0x0a18, 0x0a19, + 0x0a1a, 0x0a1b, 0x0a1c, 0x0a1d, 0x0a1e, 0x0a1f, 0x0a20, 0x0a21, + 0x0a22, 0x0a23, 0x0a24, 0x0a25, 0x0a26, 0x0a27, 0x0a28, 0x00c7, + 0x0a2a, 0x0a2b, 0x0a2c, 0x0a2d, 0x0a2e, 0x0a2f, 0x00ce, 0x0a30, + 0x00d0, 0x0a32, 0x00d2, 0x00d3, 0x0a35, 0xf860, 0x00d6, 0x0a38, + 0x0a39, 0x200e, 0x0a3e, 0x0a3f, 0x0a40, 0x0a41, 0x0a42, 0x00df, + 0x00e0, 0x0a47, 0x0a48, 0x00e3, 0x00e4, 0x0a4b, 0x0a4c, 0x00e7, + 0x0a4d, 0x0a3c, 0x0964, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, + 0x00f0, 0x0a66, 0x0a67, 0x0a68, 0x0a69, 0x0a6a, 0x0a6b, 0x0a6c, + 0x0a6d, 0x0a6e, 0x0a6f, +}; + +static unichar_t hebrew[256] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, + 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, + 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, + 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, + 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, + 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, + 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, + 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, + 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, + 0x00c4, 0x05f2, 0x00c7, 0x00c9, 0x00d1, 0x00d6, 0x00dc, 0x00e1, + 0x00e0, 0x00e2, 0x00e4, 0x00e3, 0x00e5, 0x00e7, 0x00e9, 0x00e8, + 0x00ea, 0x00eb, 0x00ed, 0x00ec, 0x00ee, 0x00ef, 0x00f1, 0x00f3, + 0x00f2, 0x00f4, 0x00f6, 0x00f5, 0x00fa, 0x00f9, 0x00fb, 0x00fc, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x20aa, 0x0027, + 0x0029, 0x0028, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, + 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, + 0xf86a, 0x201e, 0xf89b, 0xf89c, 0xf89d, 0xf89e, 0x05bc, 0xfb4b, + 0xfb35, 0x2026, 0x00a0, 0x05b8, 0x05b7, 0x05b5, 0x05b6, 0x05b4, + 0x2013, 0x2014, 0x201c, 0x201d, 0x2018, 0x2019, 0xfb2a, 0xfb2b, + 0x05bf, 0x05b0, 0x05b2, 0x05b1, 0x05bb, 0x05b9, 0x05b8, 0x05b3, + 0x05d0, 0x05d1, 0x05d2, 0x05d3, 0x05d4, 0x05d5, 0x05d6, 0x05d7, + 0x05d8, 0x05d9, 0x05da, 0x05db, 0x05dc, 0x05dd, 0x05de, 0x05df, + 0x05e0, 0x05e1, 0x05e2, 0x05e3, 0x05e4, 0x05e5, 0x05e6, 0x05e7, + 0x05e8, 0x05e9, 0x05ea, 0x007d, 0x005d, 0x007b, 0x005b, 0x007c +}; + +static unichar_t iceland[256] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, + 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, + 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, + 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, + 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, + 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, + 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, + 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, + 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, + 0x00c4, 0x00c5, 0x00c7, 0x00c9, 0x00d1, 0x00d6, 0x00dc, 0x00e1, + 0x00e0, 0x00e2, 0x00e4, 0x00e3, 0x00e5, 0x00e7, 0x00e9, 0x00e8, + 0x00ea, 0x00eb, 0x00ed, 0x00ec, 0x00ee, 0x00ef, 0x00f1, 0x00f3, + 0x00f2, 0x00f4, 0x00f6, 0x00f5, 0x00fa, 0x00f9, 0x00fb, 0x00fc, + 0x00dd, 0x00b0, 0x00a2, 0x00a3, 0x00a7, 0x2022, 0x00b6, 0x00df, + 0x00ae, 0x00a9, 0x2122, 0x00b4, 0x00a8, 0x2260, 0x00c6, 0x00d8, + 0x221e, 0x00b1, 0x2264, 0x2265, 0x00a5, 0x00b5, 0x2202, 0x2211, + 0x220f, 0x03c0, 0x222b, 0x00aa, 0x00ba, 0x03a9, 0x00e6, 0x00f8, + 0x00bf, 0x00a1, 0x00ac, 0x221a, 0x0192, 0x2248, 0x2206, 0x00ab, + 0x00bb, 0x2026, 0x00a0, 0x00c0, 0x00c3, 0x00d5, 0x0152, 0x0153, + 0x2013, 0x2014, 0x201c, 0x201d, 0x2018, 0x2019, 0x00f7, 0x25ca, + 0x00ff, 0x0178, 0x2044, 0x20ac, 0x00d0, 0x00f0, 0x00de, 0x00fe, + 0x00fd, 0x00b7, 0x201a, 0x201e, 0x2030, 0x00c2, 0x00ca, 0x00c1, + 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x00d3, 0x00d4, + 0xf8ff, 0x00d2, 0x00da, 0x00db, 0x00d9, 0x0131, 0x02c6, 0x02dc, + 0x00af, 0x02d8, 0x02d9, 0x02da, 0x00b8, 0x02dd, 0x02db, 0x02c7 +}; + +static unichar_t romanian[256] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, + 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, + 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, + 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, + 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, + 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, + 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, + 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, + 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, + 0x00c4, 0x00c5, 0x00c7, 0x00c9, 0x00d1, 0x00d6, 0x00dc, 0x00e1, + 0x00e0, 0x00e2, 0x00e4, 0x00e3, 0x00e5, 0x00e7, 0x00e9, 0x00e8, + 0x00ea, 0x00eb, 0x00ed, 0x00ec, 0x00ee, 0x00ef, 0x00f1, 0x00f3, + 0x00f2, 0x00f4, 0x00f6, 0x00f5, 0x00fa, 0x00f9, 0x00fb, 0x00fc, + 0x2020, 0x00b0, 0x00a2, 0x00a3, 0x00a7, 0x2022, 0x00b6, 0x00df, + 0x00ae, 0x00a9, 0x2122, 0x00b4, 0x00a8, 0x2260, 0x0102, 0x0218, + 0x221e, 0x00b1, 0x2264, 0x2265, 0x00a5, 0x00b5, 0x2202, 0x2211, + 0x220f, 0x03c0, 0x222b, 0x00aa, 0x00ba, 0x03a9, 0x0103, 0x0219, + 0x00bf, 0x00a1, 0x00ac, 0x221a, 0x0192, 0x2248, 0x2206, 0x00ab, + 0x00bb, 0x2026, 0x00a0, 0x00c0, 0x00c3, 0x00d5, 0x0152, 0x0153, + 0x2013, 0x2014, 0x201c, 0x201d, 0x2018, 0x2019, 0x00f7, 0x25ca, + 0x00ff, 0x0178, 0x2044, 0x20ac, 0x2039, 0x203a, 0x021a, 0x021b, + 0x2021, 0x00b7, 0x201a, 0x201e, 0x2030, 0x00c2, 0x00ca, 0x00c1, + 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x00d3, 0x00d4, + 0xf8ff, 0x00d2, 0x00da, 0x00db, 0x00d9, 0x0131, 0x02c6, 0x02dc, + 0x00af, 0x02d8, 0x02d9, 0x02da, 0x00b8, 0x02dd, 0x02db, 0x02c7 +}; + +unichar_t MacRomanEnc[256] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, + 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, + 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, + 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, + 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, + 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, + 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, + 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, + 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, + 0x00c4, 0x00c5, 0x00c7, 0x00c9, 0x00d1, 0x00d6, 0x00dc, 0x00e1, + 0x00e0, 0x00e2, 0x00e4, 0x00e3, 0x00e5, 0x00e7, 0x00e9, 0x00e8, + 0x00ea, 0x00eb, 0x00ed, 0x00ec, 0x00ee, 0x00ef, 0x00f1, 0x00f3, + 0x00f2, 0x00f4, 0x00f6, 0x00f5, 0x00fa, 0x00f9, 0x00fb, 0x00fc, + 0x2020, 0x00b0, 0x00a2, 0x00a3, 0x00a7, 0x2022, 0x00b6, 0x00df, + 0x00ae, 0x00a9, 0x2122, 0x00b4, 0x00a8, 0x2260, 0x00c6, 0x00d8, + 0x221e, 0x00b1, 0x2264, 0x2265, 0x00a5, 0x00b5, 0x2202, 0x2211, + 0x220f, 0x03c0, 0x222b, 0x00aa, 0x00ba, 0x03a9, 0x00e6, 0x00f8, + 0x00bf, 0x00a1, 0x00ac, 0x221a, 0x0192, 0x2248, 0x2206, 0x00ab, + 0x00bb, 0x2026, 0x00a0, 0x00c0, 0x00c3, 0x00d5, 0x0152, 0x0153, + 0x2013, 0x2014, 0x201c, 0x201d, 0x2018, 0x2019, 0x00f7, 0x25ca, + 0x00ff, 0x0178, 0x2044, 0x20ac, 0x2039, 0x203a, 0xfb01, 0xfb02, + 0x2021, 0x00b7, 0x201a, 0x201e, 0x2030, 0x00c2, 0x00ca, 0x00c1, + 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x00d3, 0x00d4, + 0xf8ff, 0x00d2, 0x00da, 0x00db, 0x00d9, 0x0131, 0x02c6, 0x02dc, + 0x00af, 0x02d8, 0x02d9, 0x02da, 0x00b8, 0x02dd, 0x02db, 0x02c7 +}; + +static unichar_t thai[256] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, + 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, + 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, + 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, + 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, + 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, + 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, + 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, + 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, + 0x00ab, 0x00bb, 0x2026, 0x0e48, 0x0e49, 0x0e4a, 0x0e4b, 0x0e4c, + 0x0e48, 0x0e49, 0x0e4a, 0x0e4b, 0x0e4c, 0x201c, 0x201d, 0x0e4d, + 0x0090, 0x2022, 0x0e31, 0x0e47, 0x0e34, 0x0e35, 0x0e36, 0x0e37, + 0x0e48, 0x0e49, 0x0e4a, 0x0e4b, 0x0e4c, 0x2018, 0x2019, 0x009f, + 0x00a0, 0x0e01, 0x0e02, 0x0e03, 0x0e04, 0x0e05, 0x0e06, 0x0e07, + 0x0e08, 0x0e09, 0x0e0a, 0x0e0b, 0x0e0c, 0x0e0d, 0x0e0e, 0x0e0f, + 0x0e10, 0x0e11, 0x0e12, 0x0e13, 0x0e14, 0x0e15, 0x0e16, 0x0e17, + 0x0e18, 0x0e19, 0x0e1a, 0x0e1b, 0x0e1c, 0x0e1d, 0x0e1e, 0x0e1f, + 0x0e20, 0x0e21, 0x0e22, 0x0e23, 0x0e24, 0x0e25, 0x0e26, 0x0e27, + 0x0e28, 0x0e29, 0x0e2a, 0x0e2b, 0x0e2c, 0x0e2d, 0x0e2e, 0x0e2f, + 0x0e30, 0x0e31, 0x0e32, 0x0e33, 0x0e34, 0x0e35, 0x0e36, 0x0e37, + 0x0e38, 0x0e39, 0x0e3a, 0x2060, 0x200b, 0x2013, 0x2014, 0x0e3f, + 0x0e40, 0x0e41, 0x0e42, 0x0e43, 0x0e44, 0x0e45, 0x0e46, 0x0e47, + 0x0e48, 0x0e49, 0x0e4a, 0x0e4b, 0x0e4c, 0x0e4d, 0x2122, 0x0e4f, + 0x0e50, 0x0e51, 0x0e52, 0x0e53, 0x0e54, 0x0e55, 0x0e56, 0x0e57, + 0x0e58, 0x0e59, 0x00ae, 0x00a9, +}; + +static unichar_t turkish[256] = { + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, + 0x0008, 0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, + 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, + 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027, + 0x0028, 0x0029, 0x002a, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, + 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e, 0x003f, + 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, + 0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, + 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, + 0x0058, 0x0059, 0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, + 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, + 0x0068, 0x0069, 0x006a, 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, + 0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, + 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d, 0x007e, 0x007f, + 0x00c4, 0x00c5, 0x00c7, 0x00c9, 0x00d1, 0x00d6, 0x00dc, 0x00e1, + 0x00e0, 0x00e2, 0x00e4, 0x00e3, 0x00e5, 0x00e7, 0x00e9, 0x00e8, + 0x00ea, 0x00eb, 0x00ed, 0x00ec, 0x00ee, 0x00ef, 0x00f1, 0x00f3, + 0x00f2, 0x00f4, 0x00f6, 0x00f5, 0x00fa, 0x00f9, 0x00fb, 0x00fc, + 0x2020, 0x00b0, 0x00a2, 0x00a3, 0x00a7, 0x2022, 0x00b6, 0x00df, + 0x00ae, 0x00a9, 0x2122, 0x00b4, 0x00a8, 0x2260, 0x00c6, 0x00d8, + 0x221e, 0x00b1, 0x2264, 0x2265, 0x00a5, 0x00b5, 0x2202, 0x2211, + 0x220f, 0x03c0, 0x222b, 0x00aa, 0x00ba, 0x03a9, 0x00e6, 0x00f8, + 0x00bf, 0x00a1, 0x00ac, 0x221a, 0x0192, 0x2248, 0x2206, 0x00ab, + 0x00bb, 0x2026, 0x00a0, 0x00c0, 0x00c3, 0x00d5, 0x0152, 0x0153, + 0x2013, 0x2014, 0x201c, 0x201d, 0x2018, 0x2019, 0x00f7, 0x25ca, + 0x00ff, 0x0178, 0x011e, 0x011f, 0x0130, 0x0131, 0x015e, 0x015f, + 0x2021, 0x00b7, 0x201a, 0x201e, 0x2030, 0x00c2, 0x00ca, 0x00c1, + 0x00cb, 0x00c8, 0x00cd, 0x00ce, 0x00cf, 0x00cc, 0x00d3, 0x00d4, + 0xf8ff, 0x00d2, 0x00da, 0x00db, 0x00d9, 0xf8a0, 0x02c6, 0x02dc, + 0x00af, 0x02d8, 0x02d9, 0x02da, 0x00b8, 0x02dd, 0x02db, 0x02c7 +}; + +enum script_codes { + sm_roman, sm_japanese, sm_tradchinese, sm_korean, + sm_arabic, sm_hebrew, sm_greek, sm_cyrillic, + sm_rsymbol, sm_devanagari, sm_gurmukhi, sm_gujarati, + sm_oriya, sm_bengali, sm_tamil, sm_telugu, + sm_kannada, sm_malayalam, sm_sinhalese, sm_burmese, + sm_khmer, sm_thai, sm_laotian, sm_georgian, + sm_armenian, sm_simpchinese, sm_tibetan, sm_mongolian, + sm_geez, sm_slavic, sm_vietnamese, sm_sindhi, + sm_max }; + +static unichar_t *macencodings[] = { + MacRomanEnc, + NULL/*Essentially SJIS*/, + NULL/*Essentially Big 5*/, + NULL/*Essentially Wansung*/, + arabic, + hebrew, + greek, + cyrillic, + NULL, /* rsymbol, whatever that is */ + devanagari, +/*10*/ gurmukhi, + gujarati, + NULL, /* oriya */ + NULL, /* bengali */ + NULL, /* Tamil */ + NULL, /* Telugu */ + NULL, /* Kannada */ + NULL, /* Malayalam */ + NULL, /* Sinhalese */ + NULL, /* Burmese */ +/*20*/ NULL, /* Khmer */ + thai, + NULL, /* Lao */ + NULL, /* Georgian */ + NULL, /* Armenian */ +/*25*/ NULL,/* SimpChinese, GB2312 offset by 0x8080 to 0xa1a1 */ + NULL, /* Tibetan */ + NULL, /* Mongolian */ + NULL, /* Geex/Ethiopic */ + centeuro, /* Baltic/Slavic */ +/*30*/ NULL, /* Vietnamese */ + NULL, /* Extended Arabic for Sindhi */ + NULL /* Uninterpretted */ +}; + +/* The icelandic encoding also uses 0 (mac roman) encoding even though it's not*/ +/* The turkish encoding also uses 0 (mac roman) encoding even though it's not*/ +/* The croatian encoding also uses 0 (mac roman) encoding even though it's not*/ +/* The romanian encoding also uses 0 (mac roman) encoding even though it's not*/ + +/* I've no idea what encoding code farsi uses, it isn't documented to be arabic 4, nor is it documented to have its own code */ + +static uint8 _MacScriptFromLanguage[] = { + sm_roman, /* English */ + sm_roman, /* French */ + sm_roman, /* German */ + sm_roman, /* Italian */ + sm_roman, /* Dutch */ + sm_roman, /* Swedish */ + sm_roman, /* Spanish */ + sm_roman, /* Danish */ + sm_roman, /* Portuguese */ + sm_roman, /* Norwegian */ +/*10*/ sm_hebrew, /* Hebrew */ + sm_japanese, /* Japanese */ + sm_arabic, /* Arabic */ + sm_roman, /* Finnish */ + sm_greek, /* Greek */ + sm_roman, /* Icelandic */ /* Modified roman */ + sm_roman, /* Maltese */ + sm_roman, /* Turkish */ /* Modified roman */ + sm_roman, /* Croatian */ /* Modified roman */ + sm_tradchinese, /* Traditional Chinese */ +/*20*/ sm_arabic, /* Urdu (I assume arabic) */ + sm_devanagari, /* Hindi (I assume) */ + sm_thai, /* Thai */ + sm_korean, /* Korean */ + sm_slavic, /* Lithuanian */ + sm_slavic, /* Polish */ + sm_slavic, /* Hungarian */ + sm_slavic, /* Estonian */ + sm_slavic, /* Latvian */ + sm_roman, /* Sami (Lappish) */ +/*30*/ sm_roman, /* Faroese (Icelandic) */ /* Modified roman */ + sm_arabic, /* Farsi/Persian */ /* Modified Arabic */ + sm_cyrillic, /* Russian */ + sm_simpchinese, /* Simplified Chinese */ + sm_roman, /* Flemish */ + sm_roman, /* Irish Gaelic */ + sm_roman, /* albanian (???) */ + sm_roman, /* Romanian */ /* Modified roman */ + sm_slavic, /* Czech */ + sm_slavic, /* Slovak */ +/*40*/ sm_slavic, /* Slovenian */ + sm_roman, /* Yiddish */ + sm_cyrillic, /* Serbian */ + sm_cyrillic, /* Macedonian */ + sm_cyrillic, /* Bulgarian */ + sm_cyrillic, /* Ukrainian */ + sm_cyrillic, /* Byelorussian */ + sm_cyrillic, /* Uzbek */ + sm_cyrillic, /* Kazakh */ + sm_cyrillic, /* Axerbaijani (Cyrillic) */ +/*50*/ sm_arabic, /* Axerbaijani (Arabic) */ + sm_armenian, /* Armenian */ + sm_georgian, /* Georgian */ + sm_cyrillic, /* Moldavian */ + sm_cyrillic, /* Kirghiz */ + sm_cyrillic, /* Tajiki */ + sm_cyrillic, /* Turkmen */ + sm_mongolian, /* Mongolian (Mongolian) */ + sm_cyrillic, /* Mongolian (cyrillic) */ + sm_arabic, /* Pashto */ +/*60*/ sm_arabic, /* Kurdish */ + sm_devanagari, /* Kashmiri (???) */ + sm_sindhi, /* Sindhi */ + sm_tibetan, /* Tibetan */ + sm_tibetan, /* Nepali (???) */ + sm_devanagari, /* Sanskrit */ + sm_devanagari, /* Marathi */ + sm_bengali, /* Bengali */ + sm_bengali, /* Assamese (???) */ + sm_gujarati, /* Gujarati */ +/*70*/ sm_gujarati, /* Punjabi (???) */ + sm_oriya, /* Oriya */ + sm_malayalam, /* Malayalam */ + sm_kannada, /* Kannada */ + sm_tamil, /* Tamil */ + sm_telugu, /* Telugu */ + sm_sinhalese, /* Sinhalese */ + sm_burmese, /* Burmese */ + sm_khmer, /* Khmer */ + sm_laotian, /* Lao */ +/*80*/ sm_vietnamese, /* Vietnamese */ + sm_arabic, /* Indonesian */ + sm_roman, /* Tagalog (???) */ + sm_roman, /* Malay (roman) */ + sm_arabic, /* Malay (arabic) */ + sm_roman, /* Amharic (???) */ + sm_roman, /* Tigrinya (???) */ + sm_roman, /* Galla (???) */ + sm_roman, /* Somali (???) */ + sm_roman, /* Swahili (???) */ +/*90*/ sm_roman, /* Kinyarwanda/Ruanda (???) */ + sm_roman, /* Rundi (???) */ + sm_roman, /* Nyanja/Chewa (???) */ + sm_roman, /* Malagasy */ +/*94*/ sm_roman, /* Esperanto */ + 0xff, + 0xff, + 0xff, + 0xff, + 0xff, +/*100*/ 0xff, + 0xff, + 0xff, + 0xff, + 0xff, + 0xff, + 0xff, + 0xff, + 0xff, + 0xff, +/*110*/ 0xff, + 0xff, + 0xff, + 0xff, + 0xff, + 0xff, + 0xff, + 0xff, + 0xff, + 0xff, +/*120*/ 0xff, + 0xff, + 0xff, + 0xff, + 0xff, + 0xff, + 0xff, + 0xff, +/*128*/ sm_roman, /* Welsh */ + sm_roman, /* Basque */ +/*130*/ sm_roman, /* Catalan */ + sm_roman, /* Latin */ + sm_roman, /* Quechua (???) */ + sm_roman, /* Guarani (???) */ + sm_roman, /* Aymara (???) */ + sm_cyrillic, /* Tatar (???) */ + sm_cyrillic, /* Uighur (???) */ + sm_cyrillic, /* Dzongkha (???) */ + sm_roman, /* Javanese (roman) */ + sm_roman, /* Sundanese (roman) */ +/*140*/ sm_roman, /* Galician */ + sm_roman, /* Afrikaans */ + sm_roman, /* Breton */ + sm_roman, /* Inuktitut */ + sm_roman, /* Scottish Gaelic */ + sm_roman, /* Manx Gaelic */ + sm_roman, /* Irish Gaelic (with dot) */ + sm_roman, /* Tongan */ + sm_greek, /* Greek (polytonic) */ + sm_roman, /* Greenlandic */ /* Presumably icelandic? */ +/*150*/ sm_roman, /* Azebaijani (roman) */ + 0xff +}; + +static uint16 _WinLangFromMac[] = { + 0x409, /* English */ + 0x40c, /* French */ + 0x407, /* German */ + 0x410, /* Italian */ + 0x413, /* Dutch */ + 0x41d, /* Swedish */ + 0x40a, /* Spanish */ + 0x406, /* Danish */ + 0x416, /* Portuguese */ + 0x414, /* Norwegian */ +/*10*/ 0x40d, /* Hebrew */ + 0x411, /* Japanese */ + 0x401, /* Arabic */ + 0x40b, /* Finnish */ + 0x408, /* Greek */ + 0x40f, /* Icelandic */ + 0x43a, /* Maltese */ + 0x41f, /* Turkish */ + 0x41a, /* Croatian */ + 0x404, /* Traditional Chinese */ +/*20*/ 0x420, /* Urdu */ + 0x439, /* Hindi */ + 0x41e, /* Thai */ + 0x412, /* Korean */ + 0x427, /* Lithuanian */ + 0x415, /* Polish */ + 0x40e, /* Hungarian */ + 0x425, /* Estonian */ + 0x426, /* Latvian */ + 0x43b, /* Sami (Lappish) */ +/*30*/ 0x438, /* Faroese (Icelandic) */ + 0x429, /* Farsi/Persian */ + 0x419, /* Russian */ + 0x804, /* Simplified Chinese */ + 0x813, /* Flemish */ + 0x43c, /* Irish Gaelic */ + 0x41c, /* albanian */ + 0x418, /* Romanian */ + 0x405, /* Czech */ + 0x41b, /* Slovak */ +/*40*/ 0x424, /* Slovenian */ + 0x43d, /* Yiddish */ + 0xc1a, /* Serbian */ + 0x42f, /* Macedonian */ + 0x402, /* Bulgarian */ + 0x422, /* Ukrainian */ + 0x423, /* Byelorussian */ + 0x843, /* Uzbek */ + 0x43f, /* Kazakh */ + 0x42c, /* Azerbaijani (Cyrillic) */ +/*50*/ 0x82c, /* Azerbaijani (Arabic) */ + 0x42b, /* Armenian */ + 0x437, /* Georgian */ + 0x818, /* Moldavian */ + 0x440, /* Kirghiz */ + 0x428, /* Tajiki */ + 0x442, /* Turkmen */ + 0x450, /* Mongolian (Mongolian) */ + 0x850, /* Mongolian (cyrillic) */ + 0x463, /* Pashto */ +/*60*/ 0xffff, /* Kurdish */ + 0x860, /* Kashmiri */ + 0x459, /* Sindhi */ + 0xffff, /* Tibetan */ + 0x461, /* Nepali */ + 0x43b, /* Sanskrit */ + 0x44e, /* Marathi */ + 0x445, /* Bengali */ + 0x44d, /* Assamese */ + 0x447, /* Gujarati */ +/*70*/ 0x446, /* Punjabi */ + 0x448, /* Oriya */ + 0x44c, /* Malayalam */ + 0x44b, /* Kannada */ + 0x449, /* Tamil */ + 0x44a, /* Telugu */ + 0x45b, /* Sinhalese */ + 0x455, /* Burmese */ + 0x453, /* Khmer */ + 0x454, /* Lao */ +/*80*/ 0x42a, /* Vietnamese */ + 0x421, /* Indonesian */ + 0x464, /* Tagalog */ + 0x43e, /* Malay (latin) */ + 0x83e, /* Malay (arabic) */ + 0x45e, /* Amharic */ + 0x473, /* Tigrinya */ + 0x472, /* Galla, oromo, afan */ + 0x477, /* Somali */ + 0x441, /* Swahili */ +/*90*/ 0xffff, /* Kinyarwanda/Ruanda */ + 0xffff, /* Rundi/Kirundi */ + 0xffff, /* Nyanja/Chewa */ + 0xffff, /* Malagasy */ +/*94*/ 0xffff, /* Esperanto */ + 0xffff, + 0xffff, + 0xffff, + 0xffff, + 0xffff, +/*100*/ 0xffff, + 0xffff, + 0xffff, + 0xffff, + 0xffff, + 0xffff, + 0xffff, + 0xffff, + 0xffff, + 0xffff, +/*110*/ 0xffff, + 0xffff, + 0xffff, + 0xffff, + 0xffff, + 0xffff, + 0xffff, + 0xffff, + 0xffff, + 0xffff, +/*120*/ 0xffff, + 0xffff, + 0xffff, + 0xffff, + 0xffff, + 0xffff, + 0xffff, + 0xffff, +/*128*/ 0x452, /* Welsh */ + 0x42d, /* Basque */ +/*130*/ 0x403, /* Catalan */ + 0x476, /* Latin */ + 0xffff, /* Quechua */ + 0x474, /* Guarani */ + 0xffff, /* Aymara */ + 0x444, /* Tatar */ + 0xffff, /* Uighur */ + 0xffff, /* Dzongkha/Bhutani */ + 0xffff, /* Javanese (roman) */ + 0xffff, /* Sundanese (roman) */ +/*140*/ 0x456, /* Galician */ + 0x436, /* Afrikaans */ + 0xffff, /* Breton */ + 0x45d, /* Inuktitut */ + 0x43c, /* Scottish Gaelic */ + 0xc3c, /* Manx Gaelic */ + 0x83c, /* Irish Gaelic (with dot) */ + 0xffff, /* Tongan */ + 0xffff, /* Greek (polytonic) */ + 0xffff, /* Greenlandic */ /* Presumably icelandic? */ +/*150*/ 0x42c, /* Azebaijani (roman) */ + 0xffff +}; + +static char *LanguageCodesFromMacLang[] = { + "en", /* English */ + "fr", /* French */ + "de", /* German */ + "it", /* Italian */ + "nl", /* Dutch */ + "sv", /* Swedish */ + "es", /* Spanish */ + "da", /* Danish */ + "pt", /* Portuguese */ + "no", /* Norwegian */ +/*10*/ "he", /* Hebrew */ + "ja", /* Japanese */ + "ar", /* Arabic */ + "fi", /* Finnish */ + "el", /* Greek */ + "is", /* Icelandic */ + "ml", /* Maltese */ + "tr", /* Turkish */ + "hr", /* Croatian */ + "zh_TW", /* Traditional Chinese */ /* zh_HK */ +/*20*/ "ur", /* Urdu */ + "hi", /* Hindi */ + "th", /* Thai */ + "ko", /* Korean */ + "lt", /* Lithuanian */ + "pl", /* Polish */ + "hu", /* Hungarian */ + "et", /* Estonian */ + "lv", /* Latvian */ + "smi", /* Sami (Lappish) */ +/*30*/ "fo", /* Faroese (Icelandic) */ + "fa", /* Farsi/Persian */ + "ru", /* Russian */ + "zh_CN", /* Simplified Chinese */ + "nl_BE", /* Flemish */ /* Flemish doesn't rate a language code, use dutch */ + "ga", /* Irish Gaelic */ + "sq", /* albanian */ + "ro", /* Romanian */ + "cs", /* Czech */ + "sk", /* Slovak */ +/*40*/ "sl", /* Slovenian */ + "yi", /* Yiddish */ + "sr", /* Serbian */ + "mk", /* Macedonian */ + "bg", /* Bulgarian */ + "uk", /* Ukrainian */ + "be", /* Byelorussian */ + "uz", /* Uzbek */ + "kk", /* Kazakh */ + "az", /* Axerbaijani (Cyrillic) */ +/*50*/ "az", /* Axerbaijani (Arabic) */ + "hy", /* Armenian */ + "ka", /* Georgian */ + "mo", /* Moldavian */ + "ky", /* Kirghiz */ + "tg", /* Tajiki */ + "tk", /* Turkmen */ + "mn", /* Mongolian (Mongolian) */ + "mn", /* Mongolian (cyrillic) */ + "ps", /* Pashto */ +/*60*/ "ku", /* Kurdish */ + "ks", /* Kashmiri */ + "sd", /* Sindhi */ + "bo", /* Tibetan */ + "ne", /* Nepali */ + "sa", /* Sanskrit */ + "mr", /* Marathi */ + "bn", /* Bengali */ + "as", /* Assamese */ + "gu", /* Gujarati */ +/*70*/ "pa", /* Punjabi */ + "or", /* Oriya */ + "mal", /* Malayalam */ + "kn", /* Kannada */ + "ta", /* Tamil */ + "te", /* Telugu */ + "si", /* Sinhalese */ + "my", /* Burmese */ + "km", /* Khmer */ + "lo", /* Lao */ +/*80*/ "vi", /* Vietnamese */ + "id", /* Indonesian */ + "tl", /* Tagalog */ + "ms", /* Malay (roman) */ + "ms", /* Malay (arabic) */ + "am", /* Amharic */ + "ti", /* Tigrinya */ + "om", /* Galla */ + "so", /* Somali */ + "sw", /* Swahili */ +/*90*/ "rw", /* Kinyarwanda/Ruanda */ + "rn", /* Rundi */ + "nya", /* Nyanja/Chewa */ + "mg", /* Malagasy */ +/*94*/ "eo", /* Esperanto */ + NULL, + NULL, + NULL, + NULL, + NULL, +/*100*/ NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, +/*110*/ NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, +/*120*/ NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, +/*128*/ "cy", /* Welsh */ + "eu", /* Basque */ +/*130*/ "ca", /* Catalan */ + "la", /* Latin */ + "qu", /* Quechua */ + "gn", /* Guarani */ + "ay", /* Aymara */ + "tt", /* Tatar */ + "ug", /* Uighur */ + "dz", /* Dzongkha */ + "jv", /* Javanese (roman) */ + "su", /* Sundanese (roman) */ +/*140*/ "gl", /* Galician */ + "af", /* Afrikaans */ + "be", /* Breton */ + "iu", /* Inuktitut */ + "gd", /* Scottish Gaelic */ + "gv", /* Manx Gaelic */ + NULL, /* Irish Gaelic (with dot) */ + "to", /* Tongan */ + "grc", /* Greek (polytonic) */ + "kl", /* Greenlandic */ /* Presumably icelandic? */ +/*150*/ "az", /* Azebaijani (roman) */ + NULL +}; + +static const unichar_t *MacEncLangToTable(int macenc,int maclang) { + const unichar_t *table = macencodings[macenc]; + + if ( maclang==15 /* Icelandic */ || + maclang==30 /* Faroese */ || + maclang==149 /* Greenlandic */ ) + table = iceland; + else if ( maclang == 17 /* turkish */ ) + table = turkish; + else if ( maclang == 18 /* croatian */ ) + table = croatian; + else if ( maclang == 37 /* romanian */ ) + table = romanian; + else if ( maclang == 31 /* Farsi/Persian */ ) + table = farsi; +return( table ); +} + +char *MacStrToUtf8(const char *str,int macenc,int maclang) { + const unichar_t *table; + char *ret, *rpt; + const uint8 *ustr = (uint8 *) str; + + if ( str==NULL ) +return( NULL ); + + if ( macenc==sm_japanese || macenc==sm_korean || macenc==sm_tradchinese || + macenc == sm_simpchinese ) { + Encoding *enc = FindOrMakeEncoding(macenc==sm_japanese ? "Sjis" : + macenc==sm_korean ? "EUC-KR" : + macenc==sm_tradchinese ? "Big5" : + "EUC-CN" ); + iconv_t *toutf8; + ICONV_CONST char *in; + char *out; + size_t inlen, outlen; + if ( enc==NULL ) +return( NULL ); +#ifdef UNICHAR_16 + toutf8 = iconv_open("UCS2",enc->iconv_name!=NULL?enc->iconv_name:enc->enc_name); +#else + toutf8 = iconv_open("UCS4",enc->iconv_name!=NULL?enc->iconv_name:enc->enc_name); +#endif + if ( toutf8==(iconv_t) -1 || toutf8==NULL ) +return( NULL ); + in = (char *) str; + inlen = strlen(in); + outlen = (inlen+1)*4; + out = (char *) (ret = galloc(outlen+2)); + if(iconv(toutf8,&in,&inlen,&out,&outlen)==-1) +return( NULL ); + out[0] = '\0'; + iconv_close(toutf8); +#ifdef UNICHAR_16 + toutf8 = iconv_open("UTF-8","UCS2"); +#else + toutf8 = iconv_open("UTF-8","UCS4"); +#endif + if ( toutf8==(iconv_t) -1 || toutf8==NULL ) +return( NULL ); + in = (char *) strdup(ret); + inlen = strlen(in); + outlen = (inlen+1)*4; + out = (char *) (ret = galloc(outlen+2)); + if(iconv(toutf8,&in,&inlen,&out,&outlen)==-1) +return( NULL ); + out[0] = '\0'; + iconv_close(toutf8); + free(in); +return( ret ); + } + + if ( macenc<0 || macenc>31 ) { + IError( "Invalid mac encoding %d.\n", macenc ); +return( NULL ); + } + table = MacEncLangToTable(macenc,maclang); + + if ( table==NULL ) +return( NULL ); + + ret = galloc((strlen(str)+1)*3); + for ( rpt = ret; *ustr; ++ustr ) { + int ch = table[*ustr]; + rpt = utf8_idpb(rpt,ch); + } + *rpt = '\0'; +return( ret ); +} + +uint8 MacEncFromMacLang(int maclang) { + if ( maclang<0 || maclang>=(int)(sizeof(_MacScriptFromLanguage)/sizeof(_MacScriptFromLanguage[0]))) +return( 0xff ); + +return( _MacScriptFromLanguage[maclang] ); +} + +uint16 WinLangFromMac(int maclang) { + + if ( maclang<0 || maclang>=(int)(sizeof(_WinLangFromMac)/sizeof(_WinLangFromMac[0]))) +return( 0xffff ); + +return( _WinLangFromMac[maclang] ); +} + +uint16 WinLangToMac(int winlang) { + int i; + + for ( i=0; i<(int)(sizeof(_WinLangFromMac)/sizeof(_WinLangFromMac[0])); ++i ) + if ( _WinLangFromMac[i] == winlang ) +return( i ); + + winlang &= 0xff; + for ( i=0; i<(int)(sizeof(_WinLangFromMac)/sizeof(_WinLangFromMac[0])); ++i ) + if ( (_WinLangFromMac[i]&0xff) == winlang ) +return( i ); + +return( 0xffff ); +} + +int CanEncodingWinLangAsMac(int winlang) { + int maclang = WinLangToMac(winlang); + int macenc = MacEncFromMacLang(maclang); + + if ( macenc==0xff ) +return( false ); + if ( macencodings[macenc]==NULL ) +return( false ); + +return( true ); +} + +const int32 *MacEncToUnicode(int script,int lang) { + static int32 temp[256]; + int i; + const unichar_t *table; + + table = MacEncLangToTable(script,lang); + if ( table==NULL ) +return( NULL ); + for ( i=0; i<256; ++i ) + temp[i] = table[i]; +return( temp ); +} + +int MacLangFromLocale(void) { + /*const char *loc = setlocale(LC_MESSAGES,NULL);*/ /* This always returns "C" for me, even when it shouldn't be */ + const char *loc; + static int found=-1; + int i; + + if ( found!=-1 ) +return( found ); + + loc = getenv("LC_ALL"); + if ( loc==NULL ) loc = getenv("LC_MESSAGES"); + if ( loc==NULL ) loc = getenv("LANG"); + + if ( loc==NULL ) { + found=0; /* Default to english */ +return(found); + } + if ( strncmp(loc,"nl_BE",5)==0 ) { + found = 34; +return( found ); + } + for ( i=0; i<(int)(sizeof(LanguageCodesFromMacLang)/sizeof(LanguageCodesFromMacLang[0])); ++i ) { + if ( LanguageCodesFromMacLang[i]!=NULL && + strncmp(loc,LanguageCodesFromMacLang[i],strlen(LanguageCodesFromMacLang[i]))==0 ) { + found = i; +return( found ); + } + } + if ( strncmp(loc,"zh_HK",2)==0 ) /* I think there are other traditional locales than Hong Kong and Taiwan (?Singapore?) so any chinese we don't recognize */ + found = 19; + else + found = 0; +return( found ); +} + +char *PickNameFromMacName(struct macname *mn) { + int lang = MacLangFromLocale(); + struct macname *first=mn, *english=NULL; + + while ( mn!=NULL ) { + if ( mn->lang==lang ) + break; + else if ( mn->lang==0 ) + english = mn; + mn = mn->next; + } + if ( mn==NULL ) + mn = english; + if ( mn==NULL ) + mn = first; + if ( mn==NULL ) +return( NULL ); + +return( MacStrToUtf8(mn->name,mn->enc,mn->lang)); +} + +char *FindEnglishNameInMacName(struct macname *mn) { + + while ( mn!=NULL ) { + if ( mn->lang==0 ) + break; + mn = mn->next; + } + if ( mn==NULL ) +return( NULL ); + +return( MacStrToUtf8(mn->name,mn->enc,mn->lang)); +} + +struct macname *FindMacSettingName(SplineFont *sf, int feat, int set) { + MacFeat *from_f, *from_p; + struct macsetting *s; + + if ( sf != NULL ) + for ( from_f = sf->features; from_f!=NULL && from_f->feature!=feat; from_f=from_f->next ); + else + from_f = NULL; + for ( from_p = default_mac_feature_map; from_p!=NULL && from_p->feature!=feat; from_p=from_p->next ); + if ( set==-1 ) { + if ( from_f!=NULL && from_f->featname!=NULL ) +return( from_f->featname ); + else if ( from_p!=NULL ) +return( from_p->featname ); +return( NULL ); + } + s = NULL; + if ( from_f!=NULL ) + for ( s = from_f->settings; s!=NULL && s->setting!=set; s=s->next ); + if ( (s==NULL || s->setname==NULL) && from_p!=NULL ) + for ( s = from_p->settings; s!=NULL && s->setting!=set; s=s->next ); + if ( s!=NULL ) +return( s->setname ); + +return( NULL ); +} + +struct macsettingname macfeat_otftag[] = { + { 1, 0, CHR('r','l','i','g') }, /* Required ligatures */ + { 1, 2, CHR('l','i','g','a') }, /* Common ligatures */ + { 1, 4, CHR('d','l','i','g') }, /* rare ligatures => discretionary */ +#if 0 + { 1, 4, CHR('h','l','i','g') }, /* rare ligatures => historic */ + { 1, 4, CHR('a','l','i','g') }, /* rare ligatures => ?ancient? */ +#endif + /* 2, 1, partially connected cursive */ + { 2, 2, CHR('i','s','o','l') }, /* Arabic forms */ + { 2, 2, CHR('c','a','l','t') }, /* ??? */ + /* 3, 1, all caps */ + /* 3, 2, all lower */ + { 3, 3, CHR('s','m','c','p') }, /* small caps */ + /* 3, 4, initial caps */ + /* 3, 5, initial caps, small caps */ + { 4, 0, CHR('v','r','t','2') }, /* vertical forms => vertical rotation */ +#if 0 + { 4, 0, CHR('v','k','n','a') }, /* vertical forms => vertical kana */ +#endif + { 6, 0, CHR('t','n','u','m') }, /* monospace numbers => Tabular numbers */ + { 10, 1, CHR('s','u','p','s') }, /* superior vertical position => superscript */ + { 10, 2, CHR('s','u','b','s') }, /* inferior vertical position => subscript */ +#if 0 + { 10, 3, CHR('s','u','p','s') }, /* ordinal vertical position => superscript */ +#endif + { 11, 1, CHR('a','f','r','c') }, /* vertical fraction => fraction ligature */ + { 11, 2, CHR('f','r','a','c') }, /* diagonal fraction => fraction ligature */ + { 16, 1, CHR('o','r','n','m') }, /* vertical fraction => fraction ligature */ + { 20, 0, CHR('t','r','a','d') }, /* traditional characters => traditional forms */ +#if 0 + { 20, 0, CHR('t','n','a','m') }, /* traditional characters => traditional names */ +#endif + { 20, 1, CHR('s','m','p','l') }, /* simplified characters */ + { 20, 2, CHR('j','p','7','8') }, /* jis 1978 */ + { 20, 3, CHR('j','p','8','3') }, /* jis 1983 */ + { 20, 4, CHR('j','p','9','0') }, /* jis 1990 */ + { 21, 0, CHR('o','n','u','m') }, /* lower case number => old style numbers */ + { 22, 0, CHR('p','w','i','d') }, /* proportional text => proportional widths */ + { 22, 2, CHR('h','w','i','d') }, /* half width text => half widths */ + { 22, 3, CHR('f','w','i','d') }, /* full width text => full widths */ + { 25, 0, CHR('f','w','i','d') }, /* full width kana => full widths */ + { 25, 1, CHR('p','w','i','d') }, /* proportional kana => proportional widths */ + { 26, 0, CHR('f','w','i','d') }, /* full width ideograph => full widths */ + { 26, 1, CHR('p','w','i','d') }, /* proportional ideograph => proportional widths */ + { 103, 0, CHR('h','w','i','d') }, /* half width cjk roman => half widths */ + { 103, 1, CHR('p','w','i','d') }, /* proportional cjk roman => proportional widths */ + { 103, 3, CHR('f','w','i','d') }, /* full width cjk roman => full widths */ + { 0, 0, 0 } +}, *user_macfeat_otftag; + +static struct macname fs_names[] = { + { &fs_names[146], 0, 0, "All Typographic Features" }, + { &fs_names[147], 0, 0, "All Type Features" }, + { &fs_names[148], 0, 0, "Ligatures" }, + { &fs_names[149], 0, 0, "Required Ligatures" }, + { &fs_names[150], 0, 0, "Common Ligatures" }, + { &fs_names[151], 0, 0, "Rare Ligatures" }, + { &fs_names[152], 0, 0, "Logo Ligatures" }, + { &fs_names[153], 0, 0, "Rebus Ligatures" }, + { &fs_names[154], 0, 0, "Diphthong Ligatures" }, + { &fs_names[155], 0, 0, "Squared Ligatures" }, + { &fs_names[156], 0, 0, "Abbreviated Squared Ligatures" }, + { &fs_names[157], 0, 0, "Cursive connection" }, + { &fs_names[158], 0, 0, "Unconnected" }, + { &fs_names[159], 0, 0, "Partially connected" }, + { &fs_names[160], 0, 0, "Cursive" }, + { &fs_names[161], 0, 0, "Letter Case" }, + { &fs_names[162], 0, 0, "Upper & Lower Case" }, + { &fs_names[163], 0, 0, "All Capitals" }, + { &fs_names[164], 0, 0, "All Lower Case" }, + { &fs_names[165], 0, 0, "Small Caps" }, + { &fs_names[166], 0, 0, "Initial Caps" }, + { &fs_names[167], 0, 0, "Initial and Small Caps" }, + { &fs_names[168], 0, 0, "Vertical Substitution" }, + { &fs_names[169], 0, 0, "Vertical Substitution" }, + { &fs_names[170], 0, 0, "No Vertical Substitution" }, + { &fs_names[171], 0, 0, "Linguistic Rearrangement" }, + { &fs_names[172], 0, 0, "Linguistic Rearrangement" }, + { &fs_names[173], 0, 0, "No Linguistic Rearrangement" }, + { &fs_names[174], 0, 0, "Number Spacing" }, + { &fs_names[175], 0, 0, "Monospaced Numbers" }, + { &fs_names[176], 0, 0, "Proportional Numbers" }, + { &fs_names[177], 0, 0, "Smart Swashes" }, + { &fs_names[178], 0, 0, "Word Initial Swashes" }, + { &fs_names[179], 0, 0, "Word Final Swashes" }, + { &fs_names[180], 0, 0, "Line Initial Swashes" }, + { &fs_names[181], 0, 0, "Line Final Swashes" }, + { &fs_names[182], 0, 0, "Non-Final Swashes" }, + { &fs_names[183], 0, 0, "Diacritics" }, + { &fs_names[184], 0, 0, "Show Diacritics" }, + { &fs_names[185], 0, 0, "Hide Diacritics" }, + { &fs_names[186], 0, 0, "Decompose Diacritics" }, + { &fs_names[187], 0, 0, "Vertical Position" }, + { &fs_names[188], 0, 0, "Normal Vertical Position" }, + { &fs_names[189], 0, 0, "Superiors" }, + { &fs_names[190], 0, 0, "Inferiors" }, + { &fs_names[191], 0, 0, "Ordinals" }, + { &fs_names[192], 0, 0, "Fractions" }, + { &fs_names[193], 0, 0, "No Fractions" }, + { &fs_names[194], 0, 0, "Vertical Fractions" }, + { &fs_names[195], 0, 0, "Diagonal Fractions" }, + { &fs_names[196], 0, 0, "Overlapping Characters" }, + { &fs_names[197], 0, 0, "Prevent Overlap" }, + { &fs_names[198], 0, 0, "Allow Overlap" }, + { &fs_names[199], 0, 0, "Typographic Extras" }, + { &fs_names[200], 0, 0, "Hyphens to Em-dash" }, + { &fs_names[201], 0, 0, "Hyphen to En-dash" }, + { &fs_names[202], 0, 0, "Unslashed Zero" }, + { &fs_names[203], 0, 0, "Form Interrobang" }, + { &fs_names[204], 0, 0, "Smart Quotes" }, + { &fs_names[205], 0, 0, "Periods to Ellipsis" }, + { &fs_names[206], 0, 0, "Mathematical Extras" }, + { &fs_names[207], 0, 0, "Hyphen to Minus" }, + { &fs_names[208], 0, 0, "Asterisk to Multiply" }, + { &fs_names[209], 0, 0, "Slash to Divide" }, + { &fs_names[210], 0, 0, "Inequality Ligatures" }, + { &fs_names[211], 0, 0, "Exponents" }, + { &fs_names[212], 0, 0, "Ornament Sets" }, + { &fs_names[213], 0, 0, "No Ornaments" }, + { &fs_names[214], 0, 0, "Dingbats" }, + { &fs_names[215], 0, 0, "Pi Characters" }, + { &fs_names[216], 0, 0, "Fleurons" }, + { &fs_names[217], 0, 0, "Decorative Borders" }, + { &fs_names[218], 0, 0, "International Symbols" }, + { &fs_names[219], 0, 0, "Math Symbols" }, + { &fs_names[220], 0, 0, "Character Alternates" }, + { &fs_names[221], 0, 0, "No Alternates" }, + { &fs_names[222], 0, 0, "Alternate Characters" }, + { &fs_names[223], 0, 0, "Other Alternates" }, + { &fs_names[224], 0, 0, "Design Complexity" }, + { &fs_names[225], 0, 0, "Design Level 1" }, + { &fs_names[226], 0, 0, "Design Level 2" }, + { &fs_names[227], 0, 0, "Design Level 3" }, + { &fs_names[228], 0, 0, "Design Level 4" }, + { &fs_names[229], 0, 0, "Design Level 5" }, + { &fs_names[230], 0, 0, "Style Options" }, + { &fs_names[231], 0, 0, "No Style Options" }, + { &fs_names[232], 0, 0, "Display Text" }, + { &fs_names[233], 0, 0, "Engraved Text" }, + { &fs_names[234], 0, 0, "Illuminated Caps" }, + { &fs_names[235], 0, 0, "Titling Caps" }, + { &fs_names[236], 0, 0, "Tall Caps" }, + { &fs_names[237], 0, 0, "Character Shape" }, + { &fs_names[238], 0, 0, "Traditional" }, + { &fs_names[239], 0, 0, "Simplified" }, + { &fs_names[240], 0, 0, "jis 1978" }, + { &fs_names[241], 0, 0, "jis 1983" }, + { &fs_names[242], 0, 0, "jis 1990" }, + { &fs_names[243], 0, 0, "Traditional Alt 1" }, + { &fs_names[244], 0, 0, "Traditional Alt 2" }, + { &fs_names[245], 0, 0, "Traditional Alt 3" }, + { &fs_names[246], 0, 0, "Traditional Alt 4" }, + { &fs_names[247], 0, 0, "Traditional Alt 5" }, + { &fs_names[248], 0, 0, "Expert" }, + { &fs_names[249], 0, 0, "Number Case" }, + { &fs_names[250], 0, 0, "Lower Case Numbers" }, + { &fs_names[251], 0, 0, "Upper Case Numbers" }, + { &fs_names[252], 0, 0, "Text Spacing" }, + { &fs_names[253], 0, 0, "Proportional" }, + { &fs_names[254], 0, 0, "Monospace" }, + { &fs_names[255], 0, 0, "Transliteration" }, + { &fs_names[256], 0, 0, "No Transliteration" }, + { &fs_names[257], 0, 0, "Hanja To Hangul" }, + { &fs_names[258], 0, 0, "Hiragana to Katakana" }, + { &fs_names[259], 0, 0, "Katakana to Hiragana" }, + { &fs_names[260], 0, 0, "Katakana to Roman" }, + { &fs_names[261], 0, 0, "Roman to Hiragana" }, + { &fs_names[262], 0, 0, "Roman to Katakana" }, + { &fs_names[263], 0, 0, "Hanja To Hangul Alt 1" }, + { &fs_names[264], 0, 0, "Hanja To Hangul Alt 2" }, + { &fs_names[265], 0, 0, "Hanja To Hangul Alt 3" }, + { &fs_names[266], 0, 0, "Annotation" }, + { &fs_names[267], 0, 0, "No Annotation" }, + { &fs_names[268], 0, 0, "Box Annotation" }, + { &fs_names[269], 0, 0, "Rounded Box Annotation" }, + { &fs_names[270], 0, 0, "Circle Annotation" }, + { &fs_names[271], 0, 0, "Inverted Circle Annotation" }, + { &fs_names[272], 0, 0, "Parenthesized Annotation" }, + { &fs_names[273], 0, 0, "Period Annotation" }, + { &fs_names[274], 0, 0, "Roman Numeral Annotation" }, + { &fs_names[275], 0, 0, "Diamond Annotation" }, + { &fs_names[276], 0, 0, "Kana Spacing" }, + { &fs_names[277], 0, 0, "Full-Width" }, + { &fs_names[278], 0, 0, "Proportional" }, + { &fs_names[136], 0, 0, "Ideographic Spacing" }, + { &fs_names[137], 0, 0, "Full-Width" }, + { &fs_names[138], 0, 0, "Proportional" }, + { &fs_names[279], 0, 0, "Ideographic Spacing" }, + { &fs_names[280], 0, 0, "Full-Width" }, + { &fs_names[281], 0, 0, "Proportional" }, + { &fs_names[282], 0, 0, "CJK Roman Spacing" }, + { &fs_names[283], 0, 0, "Half-Width" }, + { &fs_names[284], 0, 0, "Proportional" }, + { &fs_names[285], 0, 0, "Default" }, + { &fs_names[286], 0, 0, "Full-Width" }, + { &fs_names[287], 0, 0, "Unicode Decomposition" }, + { &fs_names[288], 0, 0, "Canonical Decomposition" }, + { &fs_names[289], 0, 1, "Fonctions typographiques" }, + { &fs_names[290], 0, 1, "Toutes fonctions typographiques" }, + { &fs_names[291], 0, 1, "Ligatures" }, + { &fs_names[397], 0, 1, "Ligatures Requises" }, + { &fs_names[292], 0, 1, "Ligatures Usuelles" }, + { &fs_names[293], 0, 1, "Ligatures Rares" }, + { &fs_names[400], 0, 1, "Ligatures Logos" }, + { &fs_names[401], 0, 1, "Ligatures R\216bus" }, + { &fs_names[334], 0, 1, "Ligatures Diphtongues" }, + { &fs_names[403], 0, 1, "Ligatures Carr\216es" }, + { &fs_names[404], 0, 1, "Ligatures Carr\216es Abr\217g\216es" }, + { &fs_names[405], 0, 1, "Connection des Cursives" }, + { &fs_names[406], 0, 1, "Non connect\216es" }, + { &fs_names[407], 0, 1, "Partiellement connect\216es" }, + { &fs_names[408], 0, 1, "Pleinement connect\216es" }, + { &fs_names[409], 0, 1, "Casse" }, + { &fs_names[295], 0, 1, "Majuscules & Minuscules" }, + { &fs_names[296], 0, 1, "Tout Majuscule" }, + { &fs_names[412], 0, 1, "Tout Minuscule" }, + { &fs_names[297], 0, 1, "Petites Majuscules" }, + { &fs_names[414], 0, 1, "Initiales Majuscules" }, + { &fs_names[415], 0, 1, "Initiales + Petites Majuscules" }, + { &fs_names[416], 0, 1, "Substitution Verticale" }, + { &fs_names[417], 0, 1, "Substitution vertical" }, + { &fs_names[418], 0, 1, "Aucun Substitution vertical" }, + { &fs_names[419], 0, 1, "R\216arrangement Linguistique" }, + { &fs_names[420], 0, 1, "Avec R\216arrangement Linguistique" }, + { &fs_names[421], 0, 1, "Pas de R\216arrangement Linguistique" }, + { &fs_names[422], 0, 1, "Espacement des chiffres" }, + { &fs_names[299], 0, 1, "Chiffres de largeur fixe" }, + { &fs_names[300], 0, 1, "Chiffres Proportionnels" }, + { &fs_names[301], 0, 1, "Parafes" }, + { &fs_names[304], 0, 1, "Parafes en d\216but de mot" }, + { &fs_names[305], 0, 1, "Parafes en fin de mot" }, + { &fs_names[303], 0, 1, "Parafes en d\216but de ligne" }, + { &fs_names[302], 0, 1, "Parafes en fin de ligne" }, + { &fs_names[306], 0, 1, "Autres Parafes" }, + { &fs_names[431], 0, 1, "Signes Diacritiques" }, + { &fs_names[339], 0, 1, "Montrer les Signes Diacritiques" }, + { &fs_names[433], 0, 1, "Cacher les Signes Diacritiques" }, + { &fs_names[337], 0, 1, "D\216composer les Signes Diacritiques" }, + { &fs_names[435], 0, 1, "Position Verticale" }, + { &fs_names[309], 0, 1, "Position Verticale Normale" }, + { &fs_names[308], 0, 1, "Position Sup\216rieure" }, + { &fs_names[310], 0, 1, "Position Inf\216rieure" }, + { &fs_names[311], 0, 1, "Position Sup\216rieure Contextuelle (Num\216rique)" }, + { &fs_names[440], 0, 1, "Fractions" }, + { &fs_names[313], 0, 1, "Pas de Fractions" }, + { &fs_names[442], 0, 1, "Fractions Verticales" }, + { &fs_names[314], 0, 1, "Fractions en Diagonale" }, + { &fs_names[444], 0, 1, "Chevauchement des caract\217res" }, + { &fs_names[316], 0, 1, "\203viter le chevauchement" }, + { &fs_names[446], 0, 1, "Laisser le Chevauchement" }, + { &fs_names[317], 0, 1, "Extras Typographiques" }, + { &fs_names[448], 0, 1, "Tirets vers Tiret Large" }, + { &fs_names[449], 0, 1, "Tiret vers Tiret Moyen" }, + { &fs_names[450], 0, 1, "Z\216ro non Barr\216" }, + { &fs_names[451], 0, 1, "?! vers InterroExclam" }, + { &fs_names[336], 0, 1, "Apostrophes Intelligentes" }, + { &fs_names[453], 0, 1, "... vers Ellipse" }, + { &fs_names[318], 0, 1, "Extras Math\216matiques" }, + { &fs_names[319], 0, 1, "Tiret vers Moins" }, + { &fs_names[320], 0, 1, "\203toile vers Multipli\216" }, + { &fs_names[457], 0, 1, "Barre pench\216e vers Divis\216" }, + { &fs_names[458], 0, 1, "Ligatures pour In\216galit\216s" }, + { &fs_names[459], 0, 1, "Passage en Exposant" }, + { &fs_names[460], 0, 1, "Ensembles Ornementaux" }, + { &fs_names[322], 0, 1, "Pas d'Ornements" }, + { &fs_names[462], 0, 1, "Dingbats" }, + { &fs_names[463], 0, 1, "Symboles Sp\216cifiques \210 un Domaine" }, + { &fs_names[323], 0, 1, "Fleurons" }, + { &fs_names[465], 0, 1, "Bordures D\216coratives" }, + { &fs_names[466], 0, 1, "Symboles Internationaux" }, + { &fs_names[467], 0, 1, "Symboles Math\216matiques" }, + { &fs_names[468], 0, 1, "Caract\217res Alternatifs" }, + { &fs_names[325], 0, 1, "Sans Caract\217res Alternatifs" }, + { &fs_names[470], 0, 1, "Avec Caract\217res Alternatifs" }, + { &fs_names[471], 0, 1, "Autres Caract\217res Alternatifs" }, + { &fs_names[472], 0, 1, "Complexit\216 du Dessin" }, + { &fs_names[327], 0, 1, "Dessin Niveau 1" }, + { &fs_names[328], 0, 1, "Dessin Niveau 2" }, + { &fs_names[329], 0, 1, "Dessin Niveau 3" }, + { &fs_names[330], 0, 1, "Dessin Niveau 4" }, + { &fs_names[477], 0, 1, "Dessin Niveau 5" }, + { &fs_names[478], 0, 1, "Options de Style" }, + { &fs_names[479], 0, 1, "Texte Ordinaire" }, + { &fs_names[480], 0, 1, "Texte Majeur" }, + { &fs_names[481], 0, 1, "Texte en Relief" }, + { &fs_names[482], 0, 1, "Majuscules Enlumin\216es" }, + { &fs_names[483], 0, 1, "Majuscules de Titrage" }, + { &fs_names[484], 0, 1, "Majuscules avec Descendantes" }, + { &fs_names[485], 0, 1, "Forme des Caract\217res" }, + { &fs_names[486], 0, 1, "Traditionelle" }, + { &fs_names[487], 0, 1, "Simplifi\216e" }, + { &fs_names[488], 0, 1, "jis 1978" }, + { &fs_names[489], 0, 1, "jis 1983" }, + { &fs_names[490], 0, 1, "jis 1990" }, + { &fs_names[491], 0, 1, "Traditionelle Alt 1" }, + { &fs_names[492], 0, 1, "Traditionelle Alt 2" }, + { &fs_names[493], 0, 1, "Traditionelle Alt 3" }, + { &fs_names[494], 0, 1, "Traditionelle Alt 4" }, + { &fs_names[495], 0, 1, "Traditionelle Alt 5" }, + { &fs_names[496], 0, 1, "Expert" }, + { &fs_names[497], 0, 1, "Style des Chiffres" }, + { &fs_names[332], 0, 1, "Chiffres Anciens (bas de casse)" }, + { &fs_names[333], 0, 1, "Chiffres Conventionnels (alignants)" }, + { &fs_names[500], 0, 1, "Espacement du Texte" }, + { &fs_names[501], 0, 1, "Proportionel" }, + { &fs_names[502], 0, 1, "Fixe" }, + { &fs_names[503], 0, 1, "Translitt\216ration" }, + { &fs_names[504], 0, 1, "Sans Translitt\216ration" }, + { &fs_names[505], 0, 1, "Hanja vers Hangul" }, + { &fs_names[506], 0, 1, "Hiragana vers Katakana" }, + { &fs_names[507], 0, 1, "Katakana vers Hiragana" }, + { &fs_names[508], 0, 1, "Katakana vers Roman" }, + { &fs_names[509], 0, 1, "Roman vers Hiragana" }, + { &fs_names[510], 0, 1, "Roman vers Katakana" }, + { &fs_names[511], 0, 1, "Hanja vers Hangul Alt 1" }, + { &fs_names[512], 0, 1, "Hanja vers Hangul Alt 2" }, + { &fs_names[513], 0, 1, "Hanja vers Hangul Alt 3" }, + { &fs_names[514], 0, 1, "Annotations" }, + { &fs_names[515], 0, 1, "Sans Annotations" }, + { &fs_names[516], 0, 1, "Annotations Encadr\216es" }, + { &fs_names[517], 0, 1, "Annotations en Cadres arrondis" }, + { &fs_names[518], 0, 1, "Annotations dans des Cercles" }, + { &fs_names[519], 0, 1, "Annotations dans des Cercles inverses" }, + { &fs_names[520], 0, 1, "Annotations Parenth\217s\216es" }, + { &fs_names[521], 0, 1, "Annotations avec des ." }, + { &fs_names[522], 0, 1, "Annotations en Chiffres Romains" }, + { &fs_names[523], 0, 1, "Annotations Diamant" }, + { &fs_names[524], 0, 1, "Espacement Kana" }, + { &fs_names[525], 0, 1, "Pleine Taille" }, + { &fs_names[526], 0, 1, "Proportionnel" }, + { &fs_names[527], 0, 1, "Espacement des Id\216ogrammes" }, + { &fs_names[528], 0, 1, "Pleine Taille" }, + { &fs_names[529], 0, 1, "Proportionnel" }, + { &fs_names[533], 0, 1, "Espacement des CJK romains" }, + { &fs_names[534], 0, 1, "Pleine Taille" }, + { &fs_names[535], 0, 1, "Proportionnel" }, + { &fs_names[536], 0, 1, "Romains par D\216faut" }, + { &fs_names[537], 0, 1, "Romains Pleine Taille" }, + { &fs_names[340], 0, 1, "D\216composition Unicode" }, + { &fs_names[341], 0, 1, "D\216composition Canonique" }, + { &fs_names[342], 0, 2, "Alle typografischen M\232glichkeiten" }, + { &fs_names[343], 0, 2, "Alle Auszeichnungsarten" }, + { &fs_names[344], 0, 2, "Ligaturen" }, + { &fs_names[346], 0, 2, "Normale Ligaturen" }, + { &fs_names[345], 0, 2, "Seltene Ligaturen" }, + { &fs_names[347], 0, 2, "Schreibweise" }, + { &fs_names[348], 0, 2, "Gro\247/Klein" }, + { &fs_names[349], 0, 2, "Gro\247" }, + { &fs_names[350], 0, 2, "Kapit\212lchen" }, + { &fs_names[351], 0, 2, "Ziffernabst\212nde" }, + { &fs_names[352], 0, 2, "Tabellenziffern" }, + { &fs_names[353], 0, 2, "Proportionalziffern" }, + { &fs_names[354], 0, 2, "Zierbuchstabe" }, + { &fs_names[355], 0, 2, "Zierbuchstabe Zeilenende" }, + { &fs_names[356], 0, 2, "Zierbuchstabe Zeilenanfang" }, + { &fs_names[357], 0, 2, "Zierbuchstabe Wortanfang" }, + { &fs_names[358], 0, 2, "Zierbuchstabe Wortende" }, + { &fs_names[359], 0, 2, "Zierbuchstabe Beliebig" }, + { &fs_names[360], 0, 2, "Hoch-/Tiefstellen" }, + { &fs_names[361], 0, 2, "Hochgestellt" }, + { &fs_names[362], 0, 2, "Normal" }, + { &fs_names[363], 0, 2, "Tiefgestellt" }, + { &fs_names[364], 0, 2, "Ordnungszahlen" }, + { &fs_names[365], 0, 2, "Br\237che" }, + { &fs_names[367], 0, 2, "Kein Bruche" }, + { &fs_names[366], 0, 2, "Diagonaler Bruch" }, + { &fs_names[368], 0, 2, "\206berlappen" }, + { &fs_names[369], 0, 2, "\206berlappen vermeiden" }, + { &fs_names[335], 0, 2, "Typographische Extras" }, + { &fs_names[370], 0, 2, "Mathematische Sonderzeichen" }, + { &fs_names[371], 0, 2, "Minuszeichen" }, + { &fs_names[372], 0, 2, "Malzeichen" }, + { &fs_names[373], 0, 2, "Sonderzeichen" }, + { &fs_names[374], 0, 2, "Keine Sonderzeichen" }, + { &fs_names[375], 0, 2, "Pflanzenornamente" }, + { &fs_names[376], 0, 2, "Alternative Zeichen" }, + { &fs_names[377], 0, 2, "Keine Alternativ-Figuren" }, + { &fs_names[378], 0, 2, "Modifikationsgrad" }, + { &fs_names[379], 0, 2, "Design Stufe 1" }, + { &fs_names[380], 0, 2, "Design Stufe 2" }, + { &fs_names[381], 0, 2, "Design Stufe 3" }, + { &fs_names[382], 0, 2, "Design Stufe 4" }, + { &fs_names[383], 0, 2, "Zahlendarstellung" }, + { &fs_names[384], 0, 2, "Medi\276val-Ziffern" }, + { &fs_names[385], 0, 2, "Normale Ziffern" }, + { &fs_names[386], 0, 2, "Diphtong Ligaturen" }, + { &fs_names[387], 0, 2, "Typografische Extras" }, + { &fs_names[388], 0, 2, "Ersetzen mit geschwungenen Anf\237hrungszeichen" }, + { &fs_names[389], 0, 2, "Keine Ver\212nderung" }, + { &fs_names[390], 0, 2, "Diakritische Zeichen" }, + { &fs_names[391], 0, 2, "Diakritische Zeichen zeigen" }, + { &fs_names[392], 0, 2, "In Unicode zerlegen" }, + { &fs_names[393], 0, 2, "anerkannte Komposition" }, + { &fs_names[394], 0, 3, "Funzioni Tipografiche" }, + { &fs_names[395], 0, 3, "Tutte le Funzioni" }, + { &fs_names[396], 0, 3, "Legature" }, + { &fs_names[399], 0, 3, "Legature Rare" }, + { &fs_names[398], 0, 3, "Legature pi\235 Comuni" }, + { NULL, 0, 3, "Maiuscolo o Minuscolo" }, + { &fs_names[410], 0, 3, "Maiuscolo & minuscolo" }, + { &fs_names[411], 0, 3, "Tutto in Maiuscolo" }, + { &fs_names[413], 0, 3, "Maiuscoletto" }, + { NULL, 0, 3, "Spaziatura numeri" }, + { &fs_names[423], 0, 3, "Monospaziata" }, + { &fs_names[424], 0, 3, "Proporzionale" }, + { &fs_names[425], 0, 3, "Lettere Ornate" }, + { &fs_names[429], 0, 3, "Fine Riga" }, + { &fs_names[428], 0, 3, "Inizio Riga" }, + { &fs_names[426], 0, 3, "All'inizio" }, + { &fs_names[427], 0, 3, "Alla Fine" }, + { &fs_names[430], 0, 3, "All'interno" }, + { NULL, 0, 3, "Posizione Verticale" }, + { &fs_names[437], 0, 3, "Apice" }, + { &fs_names[436], 0, 3, "Posizione Normale" }, + { &fs_names[438], 0, 3, "Pedice" }, + { &fs_names[439], 0, 3, "Ordinali" }, + { NULL, 0, 3, "Frazioni" }, + { &fs_names[443], 0, 3, "Frazioni Diagonali" }, + { &fs_names[441], 0, 3, "Nessuna Frazione" }, + { NULL, 0, 3, "Caratteri Sovrapposti" }, + { &fs_names[445], 0, 3, "Nessuna Sovrapposizione" }, + { &fs_names[454], 0, 3, "Conversioni Matematiche" }, + { &fs_names[455], 0, 3, "Trattino per Sottrazione" }, + { &fs_names[456], 0, 3, "Asterisco per Moltiplicazione" }, + { NULL, 0, 3, "Impostazione Ornamenti" }, + { &fs_names[461], 0, 3, "Nessun Ornamento" }, + { &fs_names[464], 0, 3, "Fleurons" }, + { NULL, 0, 3, "Caratteri Alternativi" }, + { &fs_names[469], 0, 3, "Nessuna alternativa" }, + { NULL, 0, 3, "Design Complexity" }, + { &fs_names[473], 0, 3, "Livello 1" }, + { &fs_names[474], 0, 3, "Livello 2" }, + { &fs_names[475], 0, 3, "Livello 3" }, + { &fs_names[476], 0, 3, "Livello 4" }, + { NULL, 0, 3, "Posizione Numeri" }, + { &fs_names[498], 0, 3, "Sopra la Linea Base" }, + { &fs_names[499], 0, 3, "Tradizionale" }, + { &fs_names[402], 0, 3, "Legature dittonghi" }, + { &fs_names[447], 0, 3, "Extra tipografici" }, + { &fs_names[452], 0, 3, "Virgolette eleganti" }, + { &fs_names[434], 0, 3, "Nessuna modifica" }, + { NULL, 0, 3, "Diacritici" }, + { &fs_names[432], 0, 3, "Mostra diacritici" }, + { &fs_names[538], 0, 3, "Scomposizione unicode" }, + { &fs_names[539], 0, 3, "Composizione canonica" }, + { NULL, 0, 4, "Alle typografische kenmerken" }, + { NULL, 0, 4, "Alle typekenmerken" }, + { NULL, 0, 4, "Ligaturen" }, + { NULL, 0, 4, "Vereiste ligaturen" }, + { NULL, 0, 4, "Gemeenschappelijke Ligaturen" }, + { NULL, 0, 4, "Zeldzame ligaturen" }, + { NULL, 0, 4, "Logoligaturen" }, + { NULL, 0, 4, "Rebusligaturen" }, + { NULL, 0, 4, "Tweeklankligaturen" }, + { NULL, 0, 4, "Vierkante ligaturen" }, + { NULL, 0, 4, "Afgekorte vierkante ligatures" }, + { NULL, 0, 4, "Cursieve verbinding" }, + { NULL, 0, 4, "Niet verbonden" }, + { NULL, 0, 4, "Gedeeltelijk verbonden" }, + { NULL, 0, 4, "Cursief" }, + { NULL, 0, 4, "Hoofd/kleine letters" }, + { NULL, 0, 4, "Hoofd- en kleine letters" }, + { NULL, 0, 4, "Alles in hoofdletters" }, + { NULL, 0, 4, "Alles in kleine letters" }, + { NULL, 0, 4, "Kleine hoofdletters" }, + { NULL, 0, 4, "Eerste hoofdletters" }, + { NULL, 0, 4, "Eerste en kleine hoofdletters" }, + { NULL, 0, 4, "Verticale vervanging" }, + { NULL, 0, 4, "Verticale vervanging" }, + { NULL, 0, 4, "Geen verticale vervanging" }, + { NULL, 0, 4, "Taalkundige herschikking" }, + { NULL, 0, 4, "Taalkundige herschikking" }, + { NULL, 0, 4, "Geen taalkundige herschikking" }, + { NULL, 0, 4, "Nummerafstanden" }, + { NULL, 0, 4, "Vaste nummerafstanden" }, + { NULL, 0, 4, "Proportionele nummers" }, + { NULL, 0, 4, "Slimme versieringingen" }, + { NULL, 0, 4, "Woordbegin-versieringingen" }, + { NULL, 0, 4, "Woordeinde-versieringingen" }, + { NULL, 0, 4, "Regelbegin-versieringingen" }, + { NULL, 0, 4, "Regeleinde-versieringingen" }, + { NULL, 0, 4, "Niet-einde-versieringingen" }, + { NULL, 0, 4, "Accenten" }, + { NULL, 0, 4, "Accenten tonen" }, + { NULL, 0, 4, "Accenten verbergen" }, + { NULL, 0, 4, "Accenten ontleden" }, + { NULL, 0, 4, "Verticale positie" }, + { NULL, 0, 4, "Normale verticale positie" }, + { NULL, 0, 4, "Superieuren" }, + { NULL, 0, 4, "Inferieuren" }, + { NULL, 0, 4, "Ordinalen" }, + { NULL, 0, 4, "Breuken" }, + { NULL, 0, 4, "Geen breuken" }, + { NULL, 0, 4, "Verticale breuken" }, + { NULL, 0, 4, "Diagonale breuken" }, + { NULL, 0, 4, "Overlappende tekens" }, + { NULL, 0, 4, "Overlap voorkomen" }, + { NULL, 0, 4, "Overlap toestaan" }, + { NULL, 0, 4, "Typografische extras" }, + { NULL, 0, 4, "Koppelteken naar em-streep" }, + { NULL, 0, 4, "Koppelteken naar en-streepje" }, + { NULL, 0, 4, "Nul zonder schuine streep" }, + { NULL, 0, 4, "Vorm interrobang" }, + { NULL, 0, 4, "Slimme aanhalingstekens" }, + { NULL, 0, 4, "Punten naar ellipsen" }, + { NULL, 0, 4, "Wiskundige extras" }, + { NULL, 0, 4, "Koppelteken naar minteken" }, + { NULL, 0, 4, "Sterretje naar multiplicatieteken" }, + { NULL, 0, 4, "Schuine streep naar deelteken" }, + { NULL, 0, 4, "Ongelijkheidsligaturen" }, + { NULL, 0, 4, "Exponenten aan" }, + { NULL, 0, 4, "Ornamentenverzamelingen" }, + { NULL, 0, 4, "Geen ornamenten" }, + { NULL, 0, 4, "Dingbats" }, + { NULL, 0, 4, "Pi-tekens" }, + { NULL, 0, 4, "Fleurons" }, + { NULL, 0, 4, "Decoratieve randen" }, + { NULL, 0, 4, "Internationale symbolen" }, + { NULL, 0, 4, "Wiskundige Symbolen" }, + { NULL, 0, 4, "Tekenalternatieven" }, + { NULL, 0, 4, "Geen alternatieven" }, + { NULL, 0, 4, "Alternatieve tekens" }, + { NULL, 0, 4, "Andere alternatieven" }, + { NULL, 0, 4, "Ontwepcomplexiteit" }, + { NULL, 0, 4, "Ontwerpniveau 1" }, + { NULL, 0, 4, "Ontwerpniveau 2" }, + { NULL, 0, 4, "Ontwerpniveau 3" }, + { NULL, 0, 4, "Ontwerpniveau 4" }, + { NULL, 0, 4, "Ontwerpniveau 5" }, + { NULL, 0, 4, "Stijlopties" }, + { NULL, 0, 4, "Geen stijl ptions" }, + { NULL, 0, 4, "Tekst tonen" }, + { NULL, 0, 4, "Gegraveerde tekst" }, + { NULL, 0, 4, "Uitgelichte koppen" }, + { NULL, 0, 4, "Titelkoppen" }, + { NULL, 0, 4, "Eindkoppen" }, + { NULL, 0, 4, "Tekenvorm" }, + { NULL, 0, 4, "Traditioneel" }, + { NULL, 0, 4, "Vereenvoudigd" }, + { NULL, 0, 4, "jis 1978" }, + { NULL, 0, 4, "jis 1983" }, + { NULL, 0, 4, "jis 1990" }, + { NULL, 0, 4, "Traditioneel Alt 1" }, + { NULL, 0, 4, "Traditioneel Alt 2" }, + { NULL, 0, 4, "Traditioneel Alt 3" }, + { NULL, 0, 4, "Traditioneel Alt 4" }, + { NULL, 0, 4, "Traditioneel Alt 5" }, + { NULL, 0, 4, "Expert" }, + { NULL, 0, 4, "Nummerhoogte" }, + { NULL, 0, 4, "Kleine nummers" }, + { NULL, 0, 4, "Grote nummers" }, + { NULL, 0, 4, "TekstspatiQring" }, + { NULL, 0, 4, "Proportioneel" }, + { NULL, 0, 4, "Gelijk gespatieerd" }, + { NULL, 0, 4, "Transliteratie" }, + { NULL, 0, 4, "Geen transliteratie" }, + { NULL, 0, 4, "Hanja naar Hangul" }, + { NULL, 0, 4, "Hiragana naar Katakana" }, + { NULL, 0, 4, "Katakana naar Hiragana" }, + { NULL, 0, 4, "Katakana naar Romeins" }, + { NULL, 0, 4, "Romeins naar Hiragana" }, + { NULL, 0, 4, "Romeins naar Katakana" }, + { NULL, 0, 4, "Hanja naar Hangul Alt 1" }, + { NULL, 0, 4, "Hanja naar Hangul Alt 2" }, + { NULL, 0, 4, "Hanja naar Hangul Alt 3" }, + { NULL, 0, 4, "Annotatie" }, + { NULL, 0, 4, "Geen annotatie" }, + { NULL, 0, 4, "Vierkantannotatie" }, + { NULL, 0, 4, "Ronde-vierkantannotatie" }, + { NULL, 0, 4, "Cirkelannotatie" }, + { NULL, 0, 4, "Omgekeerde cirkelannotatie" }, + { NULL, 0, 4, "Aanhalingstekenannotatie" }, + { NULL, 0, 4, "Puntannotatie" }, + { NULL, 0, 4, "Romeinse-cijferannotatie" }, + { NULL, 0, 4, "Diamantannotatie" }, + { NULL, 0, 4, "Kana spatiQring" }, + { NULL, 0, 4, "Volledige breedte" }, + { NULL, 0, 4, "Proportioneel" }, + { &fs_names[530], 0, 4, "Ideographische spatiQring" }, + { &fs_names[531], 0, 4, "Volledige breedte" }, + { &fs_names[532], 0, 4, "Proportioneel" }, + { NULL, 0, 4, "IdeograafspatiQring" }, + { NULL, 0, 4, "Volledige breedte" }, + { NULL, 0, 4, "Proportioneel" }, + { NULL, 0, 4, "CJK Romeinse spatiQring" }, + { NULL, 0, 4, "Halve breedte" }, + { NULL, 0, 4, "Proportioneel" }, + { NULL, 0, 4, "Default" }, + { NULL, 0, 4, "Volledige breedte" }, + { NULL, 0, 4, "Unicodeontleding" }, + { NULL, 0, 4, "Canonieke ontleding" }, + { NULL, 0, 0, NULL } +}; + +static struct macsetting fs_settings[] = { + { NULL, 0, 0, &fs_names[1], 0 }, + { NULL, 14, 0, &fs_names[10], 0 }, + { &fs_settings[1], 12, 0, &fs_names[9], 0 }, + { &fs_settings[2], 10, 0, &fs_names[8], 0 }, + { &fs_settings[3], 8, 0, &fs_names[7], 0 }, + { &fs_settings[4], 6, 0, &fs_names[6], 0 }, + { &fs_settings[5], 4, 0, &fs_names[5], 0 }, + { &fs_settings[6], 2, 0, &fs_names[4], 1 }, + { &fs_settings[7], 0, 0, &fs_names[3], 1 }, + { NULL, 2, 0, &fs_names[14], 0 }, + { &fs_settings[9], 1, 0, &fs_names[13], 0 }, + { &fs_settings[10], 0, 0, &fs_names[12], 1 }, + { NULL, 5, 0, &fs_names[21], 0 }, + { &fs_settings[12], 4, 0, &fs_names[20], 0 }, + { &fs_settings[13], 3, 0, &fs_names[19], 0 }, + { &fs_settings[14], 2, 0, &fs_names[18], 0 }, + { &fs_settings[15], 1, 0, &fs_names[17], 0 }, + { &fs_settings[16], 0, 0, &fs_names[16], 1 }, + { NULL, 1, 0, &fs_names[24], 0 }, + { &fs_settings[18], 0, 0, &fs_names[23], 1 }, + { NULL, 1, 0, &fs_names[27], 0 }, + { &fs_settings[20], 0, 0, &fs_names[26], 1 }, + { NULL, 1, 0, &fs_names[30], 0 }, + { &fs_settings[22], 0, 0, &fs_names[29], 1 }, + { NULL, 8, 0, &fs_names[36], 0 }, + { &fs_settings[24], 6, 0, &fs_names[35], 0 }, + { &fs_settings[25], 4, 0, &fs_names[34], 0 }, + { &fs_settings[26], 2, 0, &fs_names[33], 0 }, + { &fs_settings[27], 0, 0, &fs_names[32], 0 }, + { NULL, 2, 0, &fs_names[40], 0 }, + { &fs_settings[29], 1, 0, &fs_names[39], 0 }, + { &fs_settings[30], 0, 0, &fs_names[38], 1 }, + { NULL, 3, 0, &fs_names[45], 0 }, + { &fs_settings[32], 2, 0, &fs_names[44], 0 }, + { &fs_settings[33], 1, 0, &fs_names[43], 0 }, + { &fs_settings[34], 0, 0, &fs_names[42], 1 }, + { NULL, 2, 0, &fs_names[49], 0 }, + { &fs_settings[36], 1, 0, &fs_names[48], 0 }, + { &fs_settings[37], 0, 0, &fs_names[47], 1 }, + { NULL, 1, 0, &fs_names[52], 0 }, + { &fs_settings[39], 0, 0, &fs_names[51], 1 }, + { NULL, 10, 0, &fs_names[59], 0 }, + { &fs_settings[41], 8, 0, &fs_names[58], 0 }, + { &fs_settings[42], 6, 0, &fs_names[57], 0 }, + { &fs_settings[43], 4, 0, &fs_names[56], 0 }, + { &fs_settings[44], 2, 0, &fs_names[55], 0 }, + { &fs_settings[45], 0, 0, &fs_names[54], 0 }, + { NULL, 8, 0, &fs_names[65], 0 }, + { &fs_settings[47], 6, 0, &fs_names[64], 0 }, + { &fs_settings[48], 4, 0, &fs_names[63], 0 }, + { &fs_settings[49], 2, 0, &fs_names[62], 0 }, + { &fs_settings[50], 0, 0, &fs_names[61], 0 }, + { NULL, 6, 0, &fs_names[73], 0 }, + { &fs_settings[52], 5, 0, &fs_names[72], 0 }, + { &fs_settings[53], 4, 0, &fs_names[71], 0 }, + { &fs_settings[54], 3, 0, &fs_names[70], 0 }, + { &fs_settings[55], 2, 0, &fs_names[69], 0 }, + { &fs_settings[56], 1, 0, &fs_names[68], 0 }, + { &fs_settings[57], 0, 0, &fs_names[67], 1 }, + { NULL, 2, 0, &fs_names[77], 0 }, + { &fs_settings[59], 1, 0, &fs_names[76], 0 }, + { &fs_settings[60], 0, 0, &fs_names[75], 1 }, + { NULL, 4, 0, &fs_names[83], 0 }, + { &fs_settings[62], 3, 0, &fs_names[82], 0 }, + { &fs_settings[63], 2, 0, &fs_names[81], 0 }, + { &fs_settings[64], 1, 0, &fs_names[80], 0 }, + { &fs_settings[65], 0, 0, &fs_names[79], 1 }, + { NULL, 5, 0, &fs_names[90], 0 }, + { &fs_settings[67], 4, 0, &fs_names[89], 0 }, + { &fs_settings[68], 3, 0, &fs_names[88], 0 }, + { &fs_settings[69], 2, 0, &fs_names[87], 0 }, + { &fs_settings[70], 1, 0, &fs_names[86], 0 }, + { &fs_settings[71], 0, 0, &fs_names[85], 1 }, + { NULL, 10, 0, &fs_names[102], 0 }, + { &fs_settings[73], 9, 0, &fs_names[101], 0 }, + { &fs_settings[74], 8, 0, &fs_names[100], 0 }, + { &fs_settings[75], 7, 0, &fs_names[99], 0 }, + { &fs_settings[76], 6, 0, &fs_names[98], 0 }, + { &fs_settings[77], 5, 0, &fs_names[97], 0 }, + { &fs_settings[78], 4, 0, &fs_names[96], 0 }, + { &fs_settings[79], 3, 0, &fs_names[95], 0 }, + { &fs_settings[80], 2, 0, &fs_names[94], 0 }, + { &fs_settings[81], 1, 0, &fs_names[93], 0 }, + { &fs_settings[82], 0, 0, &fs_names[92], 1 }, + { NULL, 1, 0, &fs_names[105], 1 }, + { &fs_settings[84], 0, 0, &fs_names[104], 0 }, + { NULL, 1, 0, &fs_names[108], 0 }, + { &fs_settings[86], 0, 0, &fs_names[107], 1 }, + { NULL, 9, 0, &fs_names[119], 0 }, + { &fs_settings[88], 8, 0, &fs_names[118], 0 }, + { &fs_settings[89], 7, 0, &fs_names[117], 0 }, + { &fs_settings[90], 6, 0, &fs_names[116], 0 }, + { &fs_settings[91], 5, 0, &fs_names[115], 0 }, + { &fs_settings[92], 4, 0, &fs_names[114], 0 }, + { &fs_settings[93], 3, 0, &fs_names[113], 0 }, + { &fs_settings[94], 2, 0, &fs_names[112], 0 }, + { &fs_settings[95], 1, 0, &fs_names[111], 0 }, + { &fs_settings[96], 0, 0, &fs_names[110], 1 }, + { NULL, 8, 0, &fs_names[129], 0 }, + { &fs_settings[98], 7, 0, &fs_names[128], 0 }, + { &fs_settings[99], 6, 0, &fs_names[127], 0 }, + { &fs_settings[100], 5, 0, &fs_names[126], 0 }, + { &fs_settings[101], 4, 0, &fs_names[125], 0 }, + { &fs_settings[102], 3, 0, &fs_names[124], 0 }, + { &fs_settings[103], 2, 0, &fs_names[123], 0 }, + { &fs_settings[104], 1, 0, &fs_names[122], 0 }, + { &fs_settings[105], 0, 0, &fs_names[121], 1 }, + { NULL, 1, 0, &fs_names[132], 0 }, + { &fs_settings[107], 0, 0, &fs_names[131], 1 }, + { NULL, 1, 0, &fs_names[135], 0 }, + { &fs_settings[109], 0, 0, &fs_names[134], 1 }, + { NULL, 0, 0, &fs_names[145], 0 }, + { NULL, 3, 0, &fs_names[143], 0 }, + { &fs_settings[112], 2, 0, &fs_names[142], 0 }, + { &fs_settings[113], 1, 0, &fs_names[141], 0 }, + { &fs_settings[114], 0, 0, &fs_names[140], 1 }, + { NULL, 0, 0, NULL, 0 } +}; + +static MacFeat fs_features[] = { + { NULL, 103, 1, 0, 0, &fs_names[139], &fs_settings[115] }, + { &fs_features[0], 27, 0, 0, 0, &fs_names[144], &fs_settings[111] }, + { &fs_features[1], 26, 1, 0, 0, &fs_names[133], &fs_settings[110] }, + { &fs_features[2], 25, 1, 0, 0, &fs_names[130], &fs_settings[108] }, + { &fs_features[3], 24, 1, 0, 0, &fs_names[120], &fs_settings[106] }, + { &fs_features[4], 23, 1, 0, 0, &fs_names[109], &fs_settings[97] }, + { &fs_features[5], 22, 1, 0, 0, &fs_names[106], &fs_settings[87] }, + { &fs_features[6], 21, 1, 1, 0, &fs_names[103], &fs_settings[85] }, + { &fs_features[7], 20, 1, 0, 0, &fs_names[91], &fs_settings[83] }, + { &fs_features[8], 19, 1, 0, 0, &fs_names[84], &fs_settings[72] }, + { &fs_features[9], 18, 1, 0, 0, &fs_names[78], &fs_settings[66] }, + { &fs_features[10], 17, 1, 0, 0, &fs_names[74], &fs_settings[61] }, + { &fs_features[11], 16, 1, 0, 0, &fs_names[66], &fs_settings[58] }, + { &fs_features[12], 15, 0, 0, 0, &fs_names[60], &fs_settings[51] }, + { &fs_features[13], 14, 0, 0, 0, &fs_names[53], &fs_settings[46] }, + { &fs_features[14], 13, 1, 0, 0, &fs_names[50], &fs_settings[40] }, + { &fs_features[15], 11, 1, 0, 0, &fs_names[46], &fs_settings[38] }, + { &fs_features[16], 10, 1, 0, 0, &fs_names[41], &fs_settings[35] }, + { &fs_features[17], 9, 1, 0, 0, &fs_names[37], &fs_settings[31] }, + { &fs_features[18], 8, 0, 0, 0, &fs_names[31], &fs_settings[28] }, + { &fs_features[19], 6, 1, 0, 0, &fs_names[28], &fs_settings[23] }, + { &fs_features[20], 5, 1, 0, 0, &fs_names[25], &fs_settings[21] }, + { &fs_features[21], 4, 1, 0, 0, &fs_names[22], &fs_settings[19] }, + { &fs_features[22], 3, 1, 0, 0, &fs_names[15], &fs_settings[17] }, + { &fs_features[23], 2, 1, 0, 0, &fs_names[11], &fs_settings[11] }, + { &fs_features[24], 1, 0, 0, 0, &fs_names[2], &fs_settings[8] }, + { &fs_features[25], 0, 0, 0, 0, &fs_names[0], &fs_settings[0] }, + { NULL, 0, 0, 0, 0, NULL, NULL } +}; + +MacFeat *default_mac_feature_map = &fs_features[26], + *builtin_mac_feature_map=&fs_features[26], + *user_mac_feature_map; + + +struct macname *MacNameCopy(struct macname *mn) { + struct macname *head=NULL, *last=NULL, *cur; + + while ( mn!=NULL ) { + cur = chunkalloc(sizeof(struct macname)); + cur->enc = mn->enc; + cur->lang = mn->lang; + cur->name = copy(mn->name); + if ( head==NULL ) + head = cur; + else + last->next = cur; + last = cur; + mn = mn->next; + } +return( head ); +} + +/* Sigh. This list is duplicated in macencui.c */ +static struct { char *name; int code; } localmaclang[] = { + {N_("English"), 0}, + {N_("French"), 1}, + {N_("German"), 2}, + {N_("Italian"), 3}, + {N_("Dutch"), 4}, + {N_("Swedish"), 5}, + {N_("Spanish"), 6}, + {N_("Danish"), 7}, + {N_("Portuguese"), 8}, + {N_("Norwegian"), 9}, + {N_("Lang|Hebrew"), 10}, + {N_("Japanese"), 11}, + {N_("Lang|Arabic"), 12}, + {N_("Finnish"), 13}, + {N_("Lang|Greek"), 14}, + {N_("Icelandic"), 15}, + {N_("Maltese"), 16}, + {N_("Turkish"), 17}, + {N_("Croatian"), 18}, + {N_("Traditional Chinese"), 19}, + {N_("Urdu"), 20}, + {N_("Hindi"), 21}, + {N_("Lang|Thai"), 22}, + {N_("Korean"), 23}, + {N_("Lithuanian"), 24}, + {N_("Polish"), 25}, + {N_("Hungarian"), 26}, + {N_("Estonian"), 27}, + {N_("Latvian"), 28}, + {N_("Sami (Lappish)"), 29}, + {N_("Faroese (Icelandic)"), 30}, +/* GT: See the long comment at "Property|New" */ +/* GT: The msgstr should contain a translation of "Farsi/Persian"), ignore "Lang|" */ + {N_("Lang|Farsi/Persian"), 31}, + {N_("Russian"), 32}, + {N_("Simplified Chinese"), 33}, + {N_("Flemish"), 34}, + {N_("Irish Gaelic"), 35}, + {N_("Albanian"), 36}, + {N_("Romanian"), 37}, + {N_("Czech"), 38}, + {N_("Slovak"), 39}, + {N_("Slovenian"), 40}, + {N_("Yiddish"), 41}, + {N_("Serbian"), 42}, + {N_("Macedonian"), 43}, + {N_("Bulgarian"), 44}, + {N_("Ukrainian"), 45}, + {N_("Byelorussian"), 46}, + {N_("Uzbek"), 47}, + {N_("Kazakh"), 48}, + {N_("Axerbaijani (Cyrillic)"), 49}, + {N_("Axerbaijani (Arabic)"), 50}, + {N_("Lang|Armenian"), 51}, + {N_("Lang|Georgian"), 52}, + {N_("Moldavian"), 53}, + {N_("Kirghiz"), 54}, + {N_("Tajiki"), 55}, + {N_("Turkmen"), 56}, + {N_("Mongolian (Mongolian)"), 57}, + {N_("Mongolian (cyrillic)"), 58}, + {N_("Pashto"), 59}, + {N_("Kurdish"), 60}, + {N_("Kashmiri"), 61}, + {N_("Sindhi"), 62}, + {N_("Lang|Tibetan"), 63}, + {N_("Nepali"), 64}, + {N_("Sanskrit"), 65}, + {N_("Marathi"), 66}, + {N_("Lang|Bengali"), 67}, + {N_("Assamese"), 68}, + {N_("Lang|Gujarati"), 69}, + {N_("Punjabi"), 70}, + {N_("Lang|Oriya"), 71}, + {N_("Lang|Malayalam"), 72}, + {N_("Lang|Kannada"), 73}, + {N_("Lang|Tamil"), 74}, + {N_("Lang|Telugu"), 75}, + {N_("Lang|Sinhalese"), 76}, + {N_("Burmese"), 77}, + {N_("Lang|Khmer"), 78}, + {N_("Lang|Lao"), 79}, + {N_("Vietnamese"), 80}, + {N_("Indonesian"), 81}, + {N_("Lang|Tagalog"), 82}, + {N_("Malay (roman)"), 83}, + {N_("Malay (arabic)"), 84}, + {N_("Lang|Amharic"), 85}, + {N_("Tigrinya"), 86}, + {N_("Galla"), 87}, + {N_("Somali"), 88}, + {N_("Swahili"), 89}, + {N_("Kinyarwanda/Ruanda"), 90}, + {N_("Rundi"), 91}, + {N_("Nyanja/Chewa"), 92}, + {N_("Malagasy"), 93}, + {N_("Esperanto"), 94}, + {N_("Welsh"), 128}, + {N_("Basque"), 129}, + {N_("Catalan"), 130}, + {N_("Lang|Latin"), 131}, + {N_("Quechua"), 132}, + {N_("Guarani"), 133}, + {N_("Aymara"), 134}, + {N_("Tatar"), 135}, + {N_("Lang|Uighur"), 136}, + {N_("Dzongkha"), 137}, + {N_("Javanese (roman)"), 138}, + {N_("Sundanese (roman)"), 139}, + {N_("Galician"), 140}, + {N_("Afrikaans"), 141}, + {N_("Breton"), 142}, + {N_("Inuktitut"), 143}, + {N_("Scottish Gaelic"), 144}, + {N_("Manx Gaelic"), 145}, + {N_("Irish Gaelic (with dot)"), 146}, + {N_("Tongan"), 147}, + {N_("Greek (polytonic)"), 148}, + {N_("Greenlandic"), 149}, + {N_("Azebaijani (roman)"), 150}, + { NULL, 0 }}; + +char *MacLanguageFromCode(int code) { + int i; + + if ( code==-1 ) +return( _("Unspecified Language") ); + + for ( i=0; localmaclang[i].name!=NULL; ++i ) + if ( code == localmaclang[i].code ) +return( S_(localmaclang[i].name) ); + +return( _("Unknown Language")); +} diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/mathconstants.c b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/mathconstants.c new file mode 100644 index 00000000000..551b4419ecf --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/mathconstants.c @@ -0,0 +1,99 @@ +/* Copyright (C) 2007,2008 by George Williams */ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "fontforgevw.h" +#ifdef __need_size_t +/* This is a bug on the mac, someone defines this and leaves it defined */ +/* that means when I load stddef.h it only defines size_t and doesn't */ +/* do offset_of, which is what I need */ +# undef __need_size_t +#endif +#include + +#define MCD(ui_name,name,msg,np) { ui_name, #name, offsetof(struct MATH,name), -1,msg,np } +#define MCDD(ui_name,name,devtab_name,msg,np) { ui_name, #name, offsetof(struct MATH,name), -2,msg,np } + +struct math_constants_descriptor math_constants_descriptor[] = { + MCD(N_("ScriptPercentScaleDown:"),ScriptPercentScaleDown,N_("Percentage scale down for script level 1"),0), + MCD(N_("ScriptScriptPercentScaleDown:"),ScriptScriptPercentScaleDown,N_("Percentage scale down for script level 2"),0), + MCD(N_("DelimitedSubFormulaMinHeight:"),DelimitedSubFormulaMinHeight,N_("Minimum height at which to treat a delimited\nexpression as a subformula"),0), + MCD(N_("DisplayOperatorMinHeight:"),DisplayOperatorMinHeight,N_("Minimum height of n-ary operators (integration, summation, etc.)"),0), + MCDD(N_("MathLeading:"),MathLeading,MathLeading_adjust,N_("White space to be left between math formulae\nto ensure proper line spacing."),0), + MCDD(N_("AxisHeight:"),AxisHeight,AxisHeight_adjust,N_("Axis height of the font"),0), + MCDD(N_("AccentBaseHeight:"),AccentBaseHeight,AccentBaseHeight_adjust,N_("Maximum (ink) height of accent base that\ndoes not require raising the accents."),0), + MCDD(N_("FlattenedAccentBaseHeight:"),FlattenedAccentBaseHeight,FlattenedAccentBaseHeight_adjust,N_("Maximum (ink) height of accent base that\ndoes not require flattening the accents."),0), + MCDD(N_("SubscriptShiftDown:"),SubscriptShiftDown,SubscriptShiftDown_adjust,N_("The standard shift down applied to subscript elements.\nPositive for moving downward."),1), + MCDD(N_("SubscriptTopMax:"),SubscriptTopMax,SubscriptTopMax_adjust,N_("Maximum height of the (ink) top of subscripts\nthat does not require moving\nubscripts further down."),0), + MCDD(N_("SubscriptBaselineDropMin:"),SubscriptBaselineDropMin,SubscriptBaselineDropMin_adjust,N_("Maximum allowed drop of the baseline of\nsubscripts realtive to the bottom of the base.\nUsed for bases that are treated as a box\nor extended shape. Positive for subscript\nbaseline dropped below base bottom."),0), + MCDD(N_("SuperscriptShiftUp:"),SuperscriptShiftUp,SuperscriptShiftUp_adjust,N_("Standard shift up applied to superscript elements."),0), + MCDD(N_("SuperscriptShiftUpCramped:"),SuperscriptShiftUpCramped,SuperscriptShiftUpCramped_adjust,N_("Standard shift of superscript relative\nto base in cramped mode."),0), + MCDD(N_("SuperscriptBottomMin:"),SuperscriptBottomMin,SuperscriptBottomMin_adjust,N_("Minimum allowed hieght of the bottom\nof superscripts that does not require moving\nthem further up."),0), + MCDD(N_("SuperscriptBaselineDropMax:"),SuperscriptBaselineDropMax,SuperscriptBaselineDropMax_adjust,N_("Maximum allowed drop of the baseline of\nsuperscripts realtive to the top of the base.\nUsed for bases that are treated as a box\nor extended shape. Positive for superscript\nbaseline below base top."),0), + MCDD(N_("SubSuperscriptGapMin:"),SubSuperscriptGapMin,SubSuperscriptGapMin_adjust,N_("Minimum gap between the supersecript and subscript ink."),0), + MCDD(N_("SuperscriptBottomMaxWithSubscript:"),SuperscriptBottomMaxWithSubscript,SuperscriptBottomMaxWithSubscript_adjust,N_("The maximum level to which the (ink) bottom\nof superscript can be pushed to increase the\ngap between superscript and subscript, before\nsubscript starts being moved down."),0), + MCDD(N_("SpaceAfterScript:"),SpaceAfterScript,SpaceAfterScript_adjust,N_("Extra white space to be added after each\nub/superscript."),0), + MCDD(N_("UpperLimitGapMin:"),UpperLimitGapMin,UpperLimitGapMin_adjust,N_("Minimum gap between the bottom of the\nupper limit, and the top of the base operator."),1), + MCDD(N_("UpperLimitBaselineRiseMin:"),UpperLimitBaselineRiseMin,UpperLimitBaselineRiseMin_adjust,N_("Minimum distance between the baseline of an upper\nlimit and the bottom of the base operator."),0), + MCDD(N_("LowerLimitGapMin:"),LowerLimitGapMin,LowerLimitGapMin_adjust,N_("Minimum gap between (ink) top of the lower limit,\nand (ink) bottom of the base operator."),0), + MCDD(N_("LowerLimitBaselineDropMin:"),LowerLimitBaselineDropMin,LowerLimitBaselineDropMin_adjust,N_("Minimum distance between the baseline of the\nlower limit and bottom of the base operator."),0), + MCDD(N_("StackTopShiftUp:"),StackTopShiftUp,StackTopShiftUp_adjust,N_("Standard shift up applied to the top element of a stack."),1), + MCDD(N_("StackTopDisplayStyleShiftUp:"),StackTopDisplayStyleShiftUp,StackTopDisplayStyleShiftUp_adjust,N_("Standard shift up applied to the top element of\na stack in display style."),0), + MCDD(N_("StackBottomShiftDown:"),StackBottomShiftDown,StackBottomShiftDown_adjust,N_("Standard shift down applied to the bottom element of a stack.\nPositive values indicate downward motion."),0), + MCDD(N_("StackBottomDisplayStyleShiftDown:"),StackBottomDisplayStyleShiftDown,StackBottomDisplayStyleShiftDown_adjust,N_("Standard shift down applied to the bottom\nelement of a stack in display style.\nPositive values indicate downward motion."),0), + MCDD(N_("StackGapMin:"),StackGapMin,StackGapMin_adjust,N_("Minimum gap between bottom of the top\nelement of a stack, and the top of the bottom element."),0), + MCDD(N_("StackDisplayStyleGapMin:"),StackDisplayStyleGapMin,StackDisplayStyleGapMin_adjust,N_("Minimum gap between bottom of the top\nelement of a stack and the top of the bottom\nelement in display style."),0), + MCDD(N_("StretchStackTopShiftUp:"),StretchStackTopShiftUp,StretchStackTopShiftUp_adjust,N_("Standard shift up applied to the top element of the stretch stack."),0), + MCDD(N_("StretchStackBottomShiftDown:"),StretchStackBottomShiftDown,StretchStackBottomShiftDown_adjust,N_("Standard shift down applied to the bottom\nelement of the stretch stack.\nPositive values indicate downward motion."),0), + MCDD(N_("StretchStackGapAboveMin:"),StretchStackGapAboveMin,StretchStackGapAboveMin_adjust,N_("Minimum gap between the ink of the stretched\nelement and the ink bottom of the element\nabove.."),0), + MCDD(N_("StretchStackGapBelowMin:"),StretchStackGapBelowMin,StretchStackGapBelowMin_adjust,N_("Minimum gap between the ink of the stretched\nelement and the ink top of the element below."),0), + MCDD(N_("FractionNumeratorShiftUp:"),FractionNumeratorShiftUp,FractionNumeratorShiftUp_adjust,N_("Standard shift up applied to the numerator."),1), + MCDD(N_("FractionNumeratorDisplayStyleShiftUp:"),FractionNumeratorDisplayStyleShiftUp,FractionNumeratorDisplayStyleShiftUp_adjust,N_("Standard shift up applied to the\nnumerator in display style."),0), + MCDD(N_("FractionDenominatorShiftDown:"),FractionDenominatorShiftDown,FractionDenominatorShiftDown_adjust,N_("Standard shift down applied to the denominator.\nPostive values indicate downward motion."),0), + MCDD(N_("FractionDenominatorDisplayStyleShiftDown:"),FractionDenominatorDisplayStyleShiftDown,FractionDenominatorDisplayStyleShiftDown_adjust,N_("Standard shift down applied to the\ndenominator in display style.\nPostive values indicate downward motion."),0), + MCDD(N_("FractionNumeratorGapMin:"),FractionNumeratorGapMin,FractionNumeratorGapMin_adjust,N_("Minimum tolerated gap between the ink\nbottom of the numerator and the ink of the fraction bar."),0), + MCDD(N_("FractionNumeratorDisplayStyleGapMin:"),FractionNumeratorDisplayStyleGapMin,FractionNumeratorDisplayStyleGapMin_adjust,N_("Minimum tolerated gap between the ink\nbottom of the numerator and the ink of the fraction\nbar in display style."),0), + MCDD(N_("FractionRuleThickness:"),FractionRuleThickness,FractionRuleThickness_adjust,N_("Thickness of the fraction bar."),0), + MCDD(N_("FractionDenominatorGapMin:"),FractionDenominatorGapMin,FractionDenominatorGapMin_adjust,N_("Minimum tolerated gap between the ink top of the denominator\nand the ink of the fraction bar.."),0), + MCDD(N_("FractionDenominatorDisplayStyleGapMin:"),FractionDenominatorDisplayStyleGapMin,FractionDenominatorDisplayStyleGapMin_adjust,N_("Minimum tolerated gap between the ink top of the denominator\nand the ink of the fraction bar in display style."),0), + MCDD(N_("SkewedFractionHorizontalGap:"),SkewedFractionHorizontalGap,SkewedFractionHorizontalGap_adjust,N_("Horizontal distance between the top\nand bottom elemnts of a skewed fraction."),0), + MCDD(N_("SkewedFractionVerticalGap:"),SkewedFractionVerticalGap,SkewedFractionVerticalGap_adjust,N_("Vertical distance between the ink of the top and\nbottom elements of a skewed fraction."),0), + MCDD(N_("OverbarVerticalGap:"),OverbarVerticalGap,OverbarVerticalGap_adjust,N_("Distance between the overbar and\nthe ink top of the base."),1), + MCDD(N_("OverbarRuleThickness:"),OverbarRuleThickness,OverbarRuleThickness_adjust,N_("Thickness of the overbar."),0), + MCDD(N_("OverbarExtraAscender:"),OverbarExtraAscender,OverbarExtraAscender_adjust,N_("Extra white space reserved above the overbar."),0), + MCDD(N_("UnderbarVerticalGap:"),UnderbarVerticalGap,UnderbarVerticalGap_adjust,N_("Distance between underbar and\nthe (ink) bottom of the base."),0), + MCDD(N_("UnderbarRuleThickness:"),UnderbarRuleThickness,UnderbarRuleThickness_adjust,N_("Thickness of the underbar."),0), + MCDD(N_("UnderbarExtraDescender:"),UnderbarExtraDescender,UnderbarExtraDescender_adjust,N_("Extra white space resevered below the underbar."),0), + MCDD(N_("RadicalVerticalGap:"),RadicalVerticalGap,RadicalVerticalGap_adjust,N_("Space between the ink to of the\nexpression and the bar over it."),1), + MCDD(N_("RadicalDisplayStyleVerticalGap:"),RadicalDisplayStyleVerticalGap,RadicalDisplayStyleVerticalGap_adjust,N_("Space between the ink top of the\nexpression and the bar over it in display\nstyle."),0), + MCDD(N_("RadicalRuleThickness:"),RadicalRuleThickness,RadicalRuleThickness_adjust,N_("Thickness of the radical rule in\ndesigned or constructed radical\nsigns."),0), + MCDD(N_("RadicalExtraAscender:"),RadicalExtraAscender,RadicalExtraAscender_adjust,N_("Extra white space reserved above the radical."),0), + MCDD(N_("RadicalKernBeforeDegree:"),RadicalKernBeforeDegree,RadicalKernBeforeDegree_adjust,N_("Extra horizontal kern before the degree of a\nradical if such be present."),0), + MCDD(N_("RadicalKernAfterDegree:"),RadicalKernAfterDegree,RadicalKernAfterDegree_adjust,N_("Negative horizontal kern after the degree of a\nradical if such be present."),0), + MCD(N_("RadicalDegreeBottomRaisePercent:"),RadicalDegreeBottomRaisePercent,N_("Height of the bottom of the radical degree, if\nsuch be present, in proportion to the ascender\nof the radical sign."),0), + MCD(N_("MinConnectorOverlap:"),MinConnectorOverlap,N_("Minimum overlap of connecting glyphs during\nglyph construction."),1), + { NULL, NULL, 0, 0, NULL, 0 } +}; diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/mm.c b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/mm.c new file mode 100644 index 00000000000..6bed24e9a54 --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/mm.c @@ -0,0 +1,235 @@ +/* Copyright (C) 2003-2008 by George Williams */ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "fontforgevw.h" +#include +#include +#include +#include "ttf.h" +#include "mm.h" + +char *MMAxisAbrev(char *axis_name) { + if ( strcmp(axis_name,"Weight")==0 ) +return( "wt" ); + if ( strcmp(axis_name,"Width")==0 ) +return( "wd" ); + if ( strcmp(axis_name,"OpticalSize")==0 ) +return( "op" ); + if ( strcmp(axis_name,"Slant")==0 ) +return( "sl" ); + +return( axis_name ); +} + +double MMAxisUnmap(MMSet *mm,int axis,double ncv) { + struct axismap *axismap = &mm->axismaps[axis]; + int j; + + if ( ncv<=axismap->blends[0] ) +return(axismap->designs[0]); + + for ( j=1; jpoints; ++j ) { + if ( ncv<=axismap->blends[j]) { + double t = (ncv-axismap->blends[j-1])/(axismap->blends[j]-axismap->blends[j-1]); +return( axismap->designs[j-1]+ t*(axismap->designs[j]-axismap->designs[j-1]) ); + } + } + +return(axismap->designs[axismap->points-1]); +} + +static char *_MMMakeFontname(MMSet *mm,real *normalized,char **fullname) { + char *pt, *pt2, *hyphen=NULL; + char *ret = NULL; + int i,j; + + if ( mm->apple ) { + for ( i=0; inamed_instance_count; ++i ) { + for ( j=0; jaxis_count; ++j ) { + if (( normalized[j] == -1 && + RealApprox(mm->named_instances[i].coords[j],mm->axismaps[j].min) ) || + ( normalized[j] == 0 && + RealApprox(mm->named_instances[i].coords[j],mm->axismaps[j].def) ) || + ( normalized[j] == 1 && + RealApprox(mm->named_instances[i].coords[j],mm->axismaps[j].max) )) + /* A match so far */; + else + break; + } + if ( j==mm->axis_count ) + break; + } + if ( i!=mm->named_instance_count ) { + char *styles = PickNameFromMacName(mm->named_instances[i].names); + if ( styles==NULL ) + styles = FindEnglishNameInMacName(mm->named_instances[i].names); + if ( styles!=NULL ) { + ret = galloc(strlen(mm->normal->familyname)+ strlen(styles)+3 ); + strcpy(ret,mm->normal->familyname); + hyphen = ret+strlen(ret); + strcpy(hyphen," "); + strcpy(hyphen+1,styles); + free(styles); + } + } + } + + if ( ret==NULL ) { + pt = ret = galloc(strlen(mm->normal->familyname)+ mm->axis_count*15 + 1); + strcpy(pt,mm->normal->familyname); + pt += strlen(pt); + *pt++ = '_'; + for ( i=0; iaxis_count; ++i ) { + if ( !mm->apple ) + sprintf( pt, " %d%s", (int) rint(MMAxisUnmap(mm,i,normalized[i])), + MMAxisAbrev(mm->axes[i])); + else + sprintf( pt, " %.1f%s", MMAxisUnmap(mm,i,normalized[i]), + MMAxisAbrev(mm->axes[i])); + pt += strlen(pt); + } + if ( pt>ret && pt[-1]==' ' ) + --pt; + *pt = '\0'; + } + + *fullname = ret; + + ret = copy(ret); + for ( pt=*fullname, pt2=ret; *pt!='\0'; ++pt ) + if ( pt==hyphen ) + *pt2++ = '-'; + else if ( *pt!=' ' ) + *pt2++ = *pt; + *pt2 = '\0'; +return( ret ); +} + +char *MMMakeMasterFontname(MMSet *mm,int ipos,char **fullname) { +return( _MMMakeFontname(mm,&mm->positions[ipos*mm->axis_count],fullname)); +} + +static char *_MMGuessWeight(MMSet *mm,real *normalized,char *def) { + int i; + char *ret; + real design; + + for ( i=0; iaxis_count; ++i ) { + if ( strcmp(mm->axes[i],"Weight")==0 ) + break; + } + if ( i==mm->axis_count ) +return( def ); + design = MMAxisUnmap(mm,i,normalized[i]); + if ( design<50 || design>1500 ) /* Er... Probably not the 0...1000 range I expect */ +return( def ); + ret = NULL; + if ( design<150 ) + ret = "Thin"; + else if ( design<350 ) + ret = "Light"; + else if ( design<550 ) + ret = "Medium"; + else if ( design<650 ) + ret = "DemiBold"; + else if ( design<750 ) + ret = "Bold"; + else if ( design<850 ) + ret = "Heavy"; + else + ret = "Black"; + free( def ); +return( copy(ret) ); +} + +char *MMGuessWeight(MMSet *mm,int ipos,char *def) { +return( _MMGuessWeight(mm,&mm->positions[ipos*mm->axis_count],def)); +} + +/* Given a postscript array of scalars, what's the ipos'th element? */ +char *MMExtractNth(char *pt,int ipos) { + int i; + char *end; + + while ( *pt==' ' ) ++pt; + if ( *pt=='[' ) ++pt; + for ( i=0; *pt!=']' && *pt!='\0'; ++i ) { + while ( *pt==' ' ) ++pt; + if ( *pt==']' || *pt=='\0' ) +return( NULL ); + for ( end=pt; *end!=' ' && *end!=']' && *end!='\0'; ++end ); + if ( i==ipos ) +return( copyn(pt,end-pt)); + pt = end; + } +return( NULL ); +} + +/* Given a postscript array of arrays, such as those found in Blend Private BlueValues */ +/* return the array composed of the ipos'th element of each sub-array */ +char *MMExtractArrayNth(char *pt,int ipos) { + char *hold[40], *ret; + int i,j,len; + + while ( *pt==' ' ) ++pt; + if ( *pt=='[' ) ++pt; + i = 0; + while ( *pt!=']' && *pt!=' ' ) { + while ( *pt==' ' ) ++pt; + if ( *pt=='[' ) { + if ( i<(int)(sizeof(hold)/sizeof(hold[0])) ) + hold[i++] = MMExtractNth(pt,ipos); + ++pt; + while ( *pt!=']' && *pt!='\0' ) ++pt; + } + if ( *pt!='\0' ) + ++pt; + } + if ( i==0 ) +return( NULL ); + for ( j=len=0; j + +int recognizePUA = false; +NameList *force_names_when_opening=NULL; +NameList *force_names_when_saving=NULL; + +static struct psaltnames { + char *name; + int unicode; + int provenance; /* 1=> Adobe PUA, 2=>AMS PUA, 3=>TeX */ +} psaltnames[]; + +static NameList agl_sans, agl, adobepua, greeksc, tex, ams; +NameList *namelist_for_new_fonts = &agl; + + /* Adobe's standard names are wrong for: */ + /* 0x0162 is named Tcommaaccent, 0x21A should be */ + /* 0x0163 is named tcommaaccent, 0x21B should be */ +/* The following have been corrected (at least by intent) or removed */ + /* 0xf6be is named dotlessj, 0x237 should be */ + /* 0x2206 is named Delta, 0x394 should be */ + /* 0x2126 is named Omega, 0x3A9 should be */ + /* 0x00b5 is named mu, 0x3BC should be */ + +static int psnamesinited=false; +#define HASH_SIZE 257 +struct psbucket { const char *name; int uni; struct psbucket *prev; } *psbuckets[HASH_SIZE]; + +static int hashname(const char *_name) { + const unsigned char *name = (const unsigned char *) _name; + int hash=0; + + while ( *name ) { + if ( *name<=' ' ) + break; + hash = (hash<<3)|((hash>>29)&0x7); + hash ^= *name++-(' '+1); + } + hash ^= (hash>>16); + hash &= 0xffff; +return( hash%HASH_SIZE ); +} + +static void psaddbucket(const char *name, int uni) { + int hash = hashname(name); + struct psbucket *buck = gcalloc(1,sizeof(struct psbucket)); + + buck->name = name; + buck->uni = uni; + buck->prev = psbuckets[hash]; + psbuckets[hash] = buck; +} + +static void NameListHash(NameList *nl) { + int i,j,k; + for ( i=0; i<17; ++i ) if ( nl->unicode[i]!=NULL ) { + for ( j=0; j<256; ++j ) if ( nl->unicode[i][j]!=NULL ) { + for ( k=0; k<256; ++k ) if ( nl->unicode[i][j][k]!=NULL ) + psaddbucket(nl->unicode[i][j][k],(i<<16)|(j<<8)|k ); + } + } +} + +static void psinitnames(void) { + int i; + NameList *nl; + + agl.next = &agl_sans; + agl_sans.next = &adobepua; + adobepua.next = &greeksc; + greeksc.next = &tex; + tex.next = &ams; + + for ( i=0; psaltnames[i].name!=NULL ; ++i ) + psaddbucket(psaltnames[i].name,psaltnames[i].unicode); + for ( nl=&agl; nl!=NULL; nl=nl->next ) + NameListHash(nl); + psnamesinited = true; +} + +static void psreinitnames(void) { + /* If we reread a (loaded) namelist file, then we must remove the old defn*/ + /* which means we must remove all the old hash entries before we can put */ + /* in the new ones */ + int i; + struct psbucket *cur, *prev; + NameList *nl; + + for ( i=0; iprev; + chunkfree(cur,sizeof(struct psbucket)); + } + psbuckets[i] = NULL; + } + + for ( i=0; psaltnames[i].name!=NULL ; ++i ) + psaddbucket(psaltnames[i].name,psaltnames[i].unicode); + for ( nl=&agl; nl!=NULL; nl=nl->next ) + NameListHash(nl); +} + +int UniFromName(const char *name,enum uni_interp interp,Encoding *encname) { + int i = -1; + char *end; + struct psbucket *buck; + + if ( strncmp(name,"uni",3)==0 ) { + i = strtol(name+3,&end,16); + if ( *end || end-name!=7 ) /* uniXXXXXXXX means a ligature of uniXXXX and uniXXXX */ + i = -1; + } else if ( (name[0]=='U' || name[0]=='u') && name[1]=='+' && + (strlen(name)==6 || strlen(name)==7)) { + /* Unifont uses this convention */ + i = strtol(name+2,&end,16); + if ( *end ) + i = -1; + } else if ( name[0]=='u' && strlen(name)>=5 ) { + i = strtol(name+1,&end,16); + if ( *end ) + i = -1; + else if ( encname!=NULL && !encname->is_unicodefull && + (interp==ui_ams || interp==ui_trad_chinese)) { + int j; + extern const int cns14pua[], amspua[]; + const int *pua = interp==ui_ams ? amspua : cns14pua; + for ( j=0xf8ff-0xe000; j>=0; --j ) + if ( pua[j]==i ) { + i = j+0xe000; + break; + } + } + } else if ( name[0]!='\0' && name[1]=='\0' ) + i = ((unsigned char *) name)[0]; + if ( i==-1 ) { + if ( !psnamesinited ) + psinitnames(); + for ( buck = psbuckets[hashname(name)]; buck!=NULL; buck=buck->prev ) + if ( strcmp(buck->name,name)==0 ) + break; + if ( buck!=NULL ) + i = buck->uni; + } + if ( !recognizePUA && i>=0xe000 && i<=0xf8ff ) + i = -1; +return( i ); +} + +const char *StdGlyphName(char *buffer, int uni,enum uni_interp interp,NameList *for_this_font) { + const char *name = NULL; + NameList *nl; + int up, ub, uc; + + if ( for_this_font==NULL ) + for_this_font = namelist_for_new_fonts; + else if ( for_this_font==(NameList *) -1 ) + for_this_font = &agl; + if ( (uni>=0 && uni<' ') || + (uni>=0x7f && uni<0xa0) ) + /* standard controls */; + else if ( uni!=-1 ) { + if ( uni>=0xe000 && uni<=0xf8ff && + (interp==ui_trad_chinese || for_this_font==&ams)) { + extern const int cns14pua[], amspua[]; + const int *pua = interp==ui_trad_chinese ? cns14pua : amspua; + if ( pua[uni-0xe000]!=0 ) + uni = pua[uni-0xe000]; + } + up = uni>>16; + ub = (uni&0xff00)>>8; + uc = (uni&0xff); + if ( up<17 ) + for ( nl=for_this_font; nl!=NULL; nl=nl->basedon ) { + if ( nl->unicode[up]!=NULL && nl->unicode[up][ub]!=NULL && + (name = nl->unicode[up][ub][uc])!=NULL ) + break; + } + } + if ( name==NULL ) { + if ( uni>=0x10000 ) + sprintf( buffer, "u%04X", uni); + else + sprintf( buffer, "uni%04X", uni); + name = buffer; + } +return( name ); +} + +#define RefMax 40 + +static int transcmp(RefChar *r1, RefChar *r2) { + double d1, d2; + + if ( r1->transform[4]transform[4] ) +return( -1 ); + else if ( r1->transform[4]>r2->transform[4] ) +return( 1 ); + if ( (d1 = r1->transform[5])<0 ) d1 = -d1; + if ( (d2 = r2->transform[5])<0 ) d2 = -d2; + if ( d1parent->multilayer ) + last = sc->layer_cnt-1; + for ( layer=ly_fore; layer<=last; ++layer ) + if ( sc->layers[layer].splines!=NULL || sc->layers[layer].images!=NULL ) +return( 0 ); + rcnt = 0; + for ( layer=ly_fore; layer<=last; ++layer ) { + for ( ref = sc->layers[layer].refs; ref!=NULL; ref = ref->next ) { + if ( rcnt>=RefMax ) +return( 0 ); + refs[rcnt++] = ref; + } + } + alluni = true; + for ( i=0; isc->unicodeenc==-1 ) { + alluni = false; + break; + } + } + if ( !alluni ) { + /* If not all unicode we can't make any guesses about meaning, so */ + /* order by transformation */ + for ( i=0; i0 ) { + ref = refs[i]; + refs[i] = refs[j]; + refs[j] = ref; + } + } + } else { + acnt = 0; + for ( i=0; isc->unicodeenc )) { + alp[acnt++] = refs[i]; + --rcnt; + for ( j=i; j0 ) { + ref = alp[i]; + alp[i] = alp[j]; + alp[j] = ref; + } + } + for ( i=0; i0 ) { + ref = refs[i]; + refs[i] = refs[j]; + refs[j] = ref; + } + } + if ( acnt!=0 ) { + int a=0, r=0; + real cutpoint; + ocnt = 0; + out[ocnt++] = alp[a++]; + forever { + if ( atransform[4]+3*alp[a-1]->transform[4])/4; + else cutpoint = 1e30; + while ( rtransform[4]=acnt ) + break; + out[ocnt++] = alp[a++]; + } + memcpy(refs,out,ocnt*sizeof(RefChar *)); + rcnt = ocnt; + } + } + for ( i=0; isc; + /* alluni now means can be written as uniXXXX.XXXX.XXXX... */ + for ( i=0; isc->unicodeenc>0x10000 ) { + alluni = false; + break; + } + } + *au = alluni; +return( rcnt ); +} + +/* Return a list of all alternate or standard glyph names for this encoding */ +char **AllGlyphNames(int uni, NameList *for_this_font, SplineChar *sc) { + int cnt, k, j, i, len; + NameList *nl, *nl2, *nl3; + char **names = NULL; + const char *name; + int up, ub, uc; + char buffer[40], *pt; + SplineChar *refs[RefMax]; + int rcnt, alluni = 0; + + rcnt = FindAllRefs(sc,refs,&alluni); + + up = uni>>16; + ub = (uni&0xff00)>>8; + uc = (uni&0xff); + + for ( k=0; k<2; ++k ) { + cnt = 0; + /* try the default namelist first to put that at the head of the list */ + name = NULL; + nl = nl3 = NULL; + if ( uni>=0 && up<17 ) { + if ( for_this_font!=NULL ) { + for ( nl3=for_this_font; nl3!=NULL; nl3=nl3->basedon ) { + if ( nl3->unicode[up]!=NULL && nl3->unicode[up][ub]!=NULL && + (name = nl3->unicode[up][ub][uc])!=NULL ) + break; + } + if ( name!=NULL ) { + if ( names ) + names[cnt] = copy(name); + ++cnt; + } + } + if ( for_this_font!=namelist_for_new_fonts ) { + for ( nl=namelist_for_new_fonts; nl!=NULL; nl=nl->basedon ) if ( nl!=nl3 ) { + if ( nl->unicode[up]!=NULL && nl->unicode[up][ub]!=NULL && + (name = nl->unicode[up][ub][uc])!=NULL ) + break; + } + if ( name!=NULL ) { + if ( names ) + names[cnt] = copy(name); + ++cnt; + } + } + for ( nl2 = &agl; nl2!=NULL; nl2=nl2->next ) if ( nl2!=nl && nl2!=nl3) { + if ( nl2->unicode[up]!=NULL && nl2->unicode[up][ub]!=NULL && + (name = nl2->unicode[up][ub][uc])!=NULL ) { + if ( names ) + names[cnt] = copy(name); + ++cnt; + } + } + for ( i=0; psaltnames[i].name!=NULL ; ++i ) { + if ( psaltnames[i].unicode==uni ) { + if ( names ) + names[cnt] = copy(psaltnames[i].name); + ++cnt; + } + } + if ( uni<0x10000 ) { + if ( names ) { + sprintf( buffer, "uni%04X", uni); + names[cnt] = copy(buffer); + } + ++cnt; + } + if ( names ) { + sprintf( buffer, "u%04X", uni); + names[cnt] = copy(buffer); + } + ++cnt; + } + if ( rcnt>1 && alluni && (uni<0 || (uni>=0xe000 && uni<0xf900) || uni>=0xf0000 ) ) { + if ( names ) { + names[cnt] = galloc(4+4*rcnt); + strcpy(names[cnt],"uni"); + pt = names[cnt]+3; + for ( i=0; iunicodeenc==0x131 || refs[i]->unicodeenc==0x237 || + refs[i]->unicodeenc==0xf6be ) + sprintf( pt,"%04X", refs[i]->unicodeenc==0x131?'i':'j' ); + else + sprintf( pt,"%04X", CanonicalCombiner(refs[i]->unicodeenc)); + pt += 4; + } + } + ++cnt; + } + if ( rcnt>1 ) { + if ( names ) { + for ( i=len=0; iname )+1; + names[cnt] = pt = galloc(len); + for ( i=len=0; iname); + pt += strlen(pt); + *pt++ = '_'; + } + pt[-1] = '\0'; + } + ++cnt; + } + if ( uni<0 || up>=17 ) { + if ( names ) + names[cnt] = copy(".notdef"); + ++cnt; + } + if ( k==0 ) { + names = galloc((cnt+1)*sizeof(char *)); + names[cnt] = NULL; + } + } + /* Remove any names from multiiple namelists */ + for ( i=0; inext, ++cnt ); + names = galloc((cnt+1) *sizeof(char *)); + for ( nl = &agl, cnt=0; nl!=NULL; nl=nl->next, ++cnt ) + names[cnt] = copy(_(nl->title)); + names[cnt] = NULL; +return( names ); +} + +#if 0 +uint8 *AllNamelistUnicodes(void) { + NameList *nl; + int cnt; + uint8 *uses; + + for ( nl = &agl, cnt=0; nl!=NULL; nl=nl->next, ++cnt ); + uses = galloc((cnt+1) *sizeof(uint8)); + for ( nl = &agl, cnt=0; nl!=NULL; nl=nl->next, ++cnt ) + uses[cnt] = nl->uses_unicode; + uses[cnt] = 0xff; +return( uses ); +} +#endif + +NameList *DefaultNameListForNewFonts(void) { +return( namelist_for_new_fonts ); +} + +NameList *NameListByName(char *name) { + NameList *nl; + for ( nl = &agl; nl!=NULL; nl=nl->next ) { + if ( strcmp(_(nl->title),name)==0 || strcmp(nl->title,name)==0 ) +return( nl ); + } +return( NULL ); +} + +static void NameListFreeContents(NameList *nl) { + int np, nb, nc, i; + + for ( np=0; np<17; ++np ) if ( nl->unicode[np]!=NULL ) { + for ( nb=0; nb<256; ++nb ) if ( nl->unicode[np][nb]!=NULL ) { + for ( nc=0; nc<256; ++nc ) if ( nl->unicode[np][nb][nc]!=NULL ) + free((char *)nl->unicode[np][nb][nc] ); + free( (char **) nl->unicode[np][nb]); + } + free( (char ***) nl->unicode[np]); + } + free( nl->title ); + if ( nl->renames!=NULL ) { + for ( i=0; nl->renames[i].from!=NULL; ++i ) { + free(nl->renames[i].from); + free(nl->renames[i].to); + } + free(nl->renames); + } + free(nl->a_utf8_name); +} + +static void NameListFree(NameList *nl) { + NameListFreeContents(nl); + chunkfree(nl,sizeof(NameList)); +} +/* ************************************************************************** */ + +#include +#include + +NameList *LoadNamelist(char *filename) { + FILE *file = fopen(filename,"r"); + NameList *nl, *nl2; + char buffer[400]; + char *pt, *end, *test; + int uni; + int len; + int up, ub, uc; + int rn_cnt=0, rn_max = 0; + int uses_unicode = false; + + if ( file==NULL ) +return( NULL ); + + if ( !psnamesinited ) + psinitnames(); + + nl = chunkalloc(sizeof(NameList)); + pt = strrchr(filename,'/'); + if ( pt==NULL ) pt = filename; else ++pt; + nl->title = def2utf8_copy(pt); + pt = strrchr(nl->title,'.'); + if ( pt!=NULL ) *pt = '\0'; + + while ( fgets(buffer,sizeof(buffer),file)!=NULL ) { + if ( buffer[0]=='#' || buffer[0]=='\n' || buffer[0]=='\r' ) + continue; + len = strlen( buffer ); + if ( buffer[len-1]=='\n' ) buffer[--len] = '\0'; + if ( buffer[len-1]=='\r' ) buffer[--len] = '\0'; + if ( strncmp(buffer,"Based:",6)==0 ) { + for ( pt=buffer+6; *pt==' ' || *pt=='\t'; ++pt); + for ( nl2 = &agl; nl2!=NULL; nl2 = nl2->next ) + if ( strcmp( nl2->title,pt )==0 ) + break; + if ( nl2==NULL ) { + ff_post_error(_("NameList base missing"),_("NameList %s based on %s which could not be found"), nl->title, pt ); + NameListFree(nl); +return( NULL ); + } else if ( nl->basedon!=NULL ) { + ff_post_error(_("NameList based twice"),_("NameList %s based on two NameLists"), nl->title ); + NameListFree(nl); +return( NULL ); + } + nl->basedon = nl2; + } else if ( strncmp(buffer,"Rename:",7)==0 ) { + for ( pt=buffer+7; *pt==' ' || *pt=='\t'; ++pt); + for ( test=pt; *test!=' ' && *test!='\t' && *test!='\0'; ++test ); + if ( *test=='\0' ) { + ff_post_error(_("NameList parsing error"),_("Missing rename \"to\" name %s\n%s"), nl->title, buffer ); + NameListFree(nl); +return( NULL ); + } + *test='\0'; + for ( ++test; *test==' ' || *test=='\t'; ++test); + if ( (test[0]=='-' || test[0]=='=') && test[1]=='>' ) + for ( test+=2; *test==' ' || *test=='\t'; ++test); + if ( *test=='\0' ) { + ff_post_error(_("NameList parsing error"),_("Missing rename \"to\" name %s\n%s"), nl->title, buffer ); + NameListFree(nl); +return( NULL ); + } + if ( rn_cnt>=rn_max-1 ) + nl->renames = grealloc(nl->renames,(rn_max+=20)*sizeof(struct renames)); + nl->renames[rn_cnt].from = copy(pt); + nl->renames[rn_cnt].to = copy(test); + nl->renames[++rn_cnt].from = NULL; /* End mark */ + } else { + pt = buffer; + if ( *pt=='0' && (pt[1]=='x' || pt[1]=='X')) + pt += 2; + else if (( *pt=='u' || *pt=='U') && pt[1]=='+' ) + pt += 2; + uni = strtol(pt,&end,16); + if ( end==pt || uni<0 || uni>=unicode4_size ) { + ff_post_error(_("NameList parsing error"),_("Bad unicode value when parsing %s\n%s"), nl->title, buffer ); + NameListFree(nl); +return( NULL ); + } + pt = end; + while ( *pt==' ' || *pt==';' || *pt=='\t' ) ++pt; + if ( *pt=='\0' ) { + ff_post_error(_("NameList parsing error"),_("Missing name when parsing %s for unicode %x"), nl->title, uni ); + NameListFree(nl); +return( NULL ); + } + for ( test=pt; *test; ++test ) { + if ( (*test<=' ' && *test>=0) || + *test=='(' || *test=='[' || *test=='{' || *test=='<' || + *test==')' || *test==']' || *test=='}' || *test=='>' || + *test=='%' || *test=='/' ) { + ff_post_error(_("NameList parsing error"),_("Bad name when parsing %s for unicode %x"), nl->title, uni ); + NameListFree(nl); +return( NULL ); + } + if ( *test&0x80 ) { + uses_unicode = true; + if ( nl->a_utf8_name==NULL ) + nl->a_utf8_name = copy(pt); + } + } + up = uni>>16; + ub = (uni&0xff00)>>8; + uc = uni&0xff; + if ( nl->unicode[up]==NULL ) + nl->unicode[up] = gcalloc(256,sizeof(char **)); + if ( nl->unicode[up][ub]==NULL ) + nl->unicode[up][ub] = gcalloc(256,sizeof(char *)); + if ( nl->unicode[up][ub][uc]==NULL ) + nl->unicode[up][ub][uc]=copy(pt); + else { + ff_post_error(_("NameList parsing error"),_("Multiple names when parsing %s for unicode %x"), nl->title, uni ); + NameListFree(nl); +return( NULL ); + } + } + } + + nl->uses_unicode = uses_unicode; + if ( nl->basedon!=NULL && nl->basedon->uses_unicode ) + nl->uses_unicode = true; + fclose(file); + for ( nl2 = &agl; nl2->next!=NULL; nl2=nl2->next ) { + if ( strcmp(nl2->title,nl->title)==0 ) { /* Replace old version */ + NameList *next = nl2->next; + NameListFreeContents(nl2); + *nl2 = *nl; + nl2->next = next; + chunkfree(nl,sizeof(NameList)); + psreinitnames(); +return( nl2 ); + } + } + NameListHash(nl); + nl2->next = nl; +return( nl ); +} + + +/* ************************************************************************** */ +const char *RenameGlyphToNamelist(char *buffer, SplineChar *sc,NameList *old,NameList *new) { + int i, up, ub, uc, ch; + char space[80]; /* glyph names are supposed to be less<=31 chars */ + char tempbuf[32]; + char *pt, *start, *opt, *oend; const char *newsubname; + SplineChar *tempsc; + NameList *nl; + + if ( sc->unicodeenc!=-1 ) { + up = sc->unicodeenc>>16; + ub = (sc->unicodeenc>>8)&0xff; + uc = (sc->unicodeenc&0xff); + for ( nl=new; nl!=NULL; nl=nl->basedon ) + if ( nl->unicode[up]!=NULL && nl->unicode[up][ub]!=NULL && nl->unicode[up][ub][uc]!=NULL ) +return( nl->unicode[up][ub][uc] ); + if ( up==0 ) + sprintf( buffer, "uni%04X", sc->unicodeenc ); + else + sprintf( buffer, "u%04X", sc->unicodeenc ); +return( buffer ); + } else { + if ( old!=NULL && old->renames!=NULL ) { + for ( i=0; old->renames[i].from!=NULL; ++i ) + if ( strcmp(sc->name,old->renames[i].from)==0 ) +return( old->renames[i].to ); + } + if ( new->renames!=NULL ) { + for ( i=0; new->renames[i].from!=NULL; ++i ) + if ( strcmp(sc->name,new->renames[i].to)==0 ) +return( new->renames[i].from ); + } + if ( strlen(sc->name)>sizeof(space)-1 ) +return( sc->name ); + strcpy(space,sc->name); + opt = buffer; oend = buffer+31; + start = space; + /* Check for composite names f_i, A.small */ + while ( *start ) { + for ( pt=start; *pt!='\0' && *pt!='.' && *pt!='_'; ++pt ); + if ( *pt=='\0' && start==space ) +return( sc->name ); + ch = *pt; + *pt = '\0'; + tempsc = SFGetChar(sc->parent,-1,start); + if ( tempsc==NULL ) +return( sc->name ); + newsubname = RenameGlyphToNamelist(tempbuf,tempsc,old,new); + while ( optname ); + if ( ch=='\0' ) { + *opt = '\0'; +return( buffer ); + } else if ( ch=='.' ) { + /* don't attempt to translate anything after a '.' just copy that litterally */ + while ( optname ); + *opt = '\0'; +return( buffer ); + } else { /* _ */ + *opt++ = '_'; + start = pt+1; + } + } + *opt = '\0'; +return( buffer ); + } +} + +void SFRenameGlyphsToNamelist(SplineFont *sf,NameList *new) { + int gid; + char buffer[40]; const char *name; + SplineChar *sc; + + if ( new==NULL ) +return; + + for ( gid = 0; gidglyphcnt; ++gid ) if ( (sc=sf->glyphs[gid])!=NULL ) { + name = RenameGlyphToNamelist(buffer,sc,sf->for_new_glyphs,new); + if ( name!=sc->name ) { + free(sc->name); + sc->name = copy(name); + } + } + sf->for_new_glyphs = new; +} + +char **SFTemporaryRenameGlyphsToNamelist(SplineFont *sf,NameList *new) { + int gid; + char buffer[40]; const char *name; + SplineChar *sc; + char **ret; + + if ( new==NULL ) +return( NULL ); + + ret = gcalloc(sf->glyphcnt,sizeof(char *)); + for ( gid = 0; gidglyphcnt; ++gid ) if ( (sc=sf->glyphs[gid])!=NULL ) { + name = RenameGlyphToNamelist(buffer,sc,sf->for_new_glyphs,new); + if ( name!=sc->name ) { + ret[gid] = sc->name; + sc->name = copy(name); + } + } +return( ret ); +} + +void SFTemporaryRestoreGlyphNames(SplineFont *sf,char **former) { + int gid; + SplineChar *sc; + + for ( gid = 0; gidglyphcnt; ++gid ) if ( (sc=sf->glyphs[gid])!=NULL ) { + if ( former[gid]!=NULL ) { + free(sc->name); + sc->name = former[gid]; + } + } + free(former); +} +/* ************************************************************************** */ +static const char *agl_sans_p0_b0[] = { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "space", + "exclam", + "quotedbl", + "numbersign", + "dollar", + "percent", + "ampersand", + "quotesingle", + "parenleft", + "parenright", + "asterisk", + "plus", + "comma", + "hyphen", + "period", + "slash", + "zero", + "one", + "two", + "three", + "four", + "five", + "six", + "seven", + "eight", + "nine", + "colon", + "semicolon", + "less", + "equal", + "greater", + "question", + "at", + "A", + "B", + "C", + "D", + "E", + "F", + "G", + "H", + "I", + "J", + "K", + "L", + "M", + "N", + "O", + "P", + "Q", + "R", + "S", + "T", + "U", + "V", + "W", + "X", + "Y", + "Z", + "bracketleft", + "backslash", + "bracketright", + "asciicircum", + "underscore", + "grave", + "a", + "b", + "c", + "d", + "e", + "f", + "g", + "h", + "i", + "j", + "k", + "l", + "m", + "n", + "o", + "p", + "q", + "r", + "s", + "t", + "u", + "v", + "w", + "x", + "y", + "z", + "braceleft", + "bar", + "braceright", + "asciitilde", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "exclamdown", + "cent", + "sterling", + "currency", + "yen", + "brokenbar", + "section", + "dieresis", + "copyright", + "ordfeminine", + "guillemotleft", + "logicalnot", + NULL, + "registered", + "macron", + "degree", + "plusminus", + NULL, + NULL, + "acute", + NULL, + "paragraph", + "periodcentered", + "cedilla", + NULL, + "ordmasculine", + "guillemotright", + "onequarter", + "onehalf", + "threequarters", + "questiondown", + "Agrave", + "Aacute", + "Acircumflex", + "Atilde", + "Adieresis", + "Aring", + "AE", + "Ccedilla", + "Egrave", + "Eacute", + "Ecircumflex", + "Edieresis", + "Igrave", + "Iacute", + "Icircumflex", + "Idieresis", + "Eth", + "Ntilde", + "Ograve", + "Oacute", + "Ocircumflex", + "Otilde", + "Odieresis", + "multiply", + "Oslash", + "Ugrave", + "Uacute", + "Ucircumflex", + "Udieresis", + "Yacute", + "Thorn", + "germandbls", + "agrave", + "aacute", + "acircumflex", + "atilde", + "adieresis", + "aring", + "ae", + "ccedilla", + "egrave", + "eacute", + "ecircumflex", + "edieresis", + "igrave", + "iacute", + "icircumflex", + "idieresis", + "eth", + "ntilde", + "ograve", + "oacute", + "ocircumflex", + "otilde", + "odieresis", + "divide", + "oslash", + "ugrave", + "uacute", + "ucircumflex", + "udieresis", + "yacute", + "thorn", + "ydieresis" +}; + +static const char *agl_sans_p0_b1[] = { + "Amacron", + "amacron", + "Abreve", + "abreve", + "Aogonek", + "aogonek", + "Cacute", + "cacute", + "Ccircumflex", + "ccircumflex", + "Cdotaccent", + "cdotaccent", + "Ccaron", + "ccaron", + "Dcaron", + "dcaron", + "Dcroat", + "dcroat", + "Emacron", + "emacron", + "Ebreve", + "ebreve", + "Edotaccent", + "edotaccent", + "Eogonek", + "eogonek", + "Ecaron", + "ecaron", + "Gcircumflex", + "gcircumflex", + "Gbreve", + "gbreve", + "Gdotaccent", + "gdotaccent", + "Gcommaaccent", + "gcommaaccent", + "Hcircumflex", + "hcircumflex", + "Hbar", + "hbar", + "Itilde", + "itilde", + "Imacron", + "imacron", + "Ibreve", + "ibreve", + "Iogonek", + "iogonek", + "Idotaccent", + "dotlessi", + "IJ", + "ij", + "Jcircumflex", + "jcircumflex", + "Kcommaaccent", + "kcommaaccent", + "kgreenlandic", + "Lacute", + "lacute", + "Lcommaaccent", + "lcommaaccent", + "Lcaron", + "lcaron", + "Ldot", + "ldot", + "Lslash", + "lslash", + "Nacute", + "nacute", + "Ncommaaccent", + "ncommaaccent", + "Ncaron", + "ncaron", + "napostrophe", + "Eng", + "eng", + "Omacron", + "omacron", + "Obreve", + "obreve", + "Ohungarumlaut", + "ohungarumlaut", + "OE", + "oe", + "Racute", + "racute", + "Rcommaaccent", + "rcommaaccent", + "Rcaron", + "rcaron", + "Sacute", + "sacute", + "Scircumflex", + "scircumflex", + "Scedilla", + "scedilla", + "Scaron", + "scaron", + NULL, + NULL, + "Tcaron", + "tcaron", + "Tbar", + "tbar", + "Utilde", + "utilde", + "Umacron", + "umacron", + "Ubreve", + "ubreve", + "Uring", + "uring", + "Uhungarumlaut", + "uhungarumlaut", + "Uogonek", + "uogonek", + "Wcircumflex", + "wcircumflex", + "Ycircumflex", + "ycircumflex", + "Ydieresis", + "Zacute", + "zacute", + "Zdotaccent", + "zdotaccent", + "Zcaron", + "zcaron", + "longs", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "florin", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "Ohorn", + "ohorn", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "Uhorn", + "uhorn", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "Gcaron", + "gcaron", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "Aringacute", + "aringacute", + "AEacute", + "aeacute", + "Oslashacute", + "oslashacute" +}; + +static const char *agl_sans_p0_b2[] = { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "Scommaaccent", + "scommaaccent", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "circumflex", + "caron", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "breve", + "dotaccent", + "ring", + "ogonek", + "tilde", + "hungarumlaut", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL +}; + +static const char *agl_sans_p0_b3[] = { + "gravecomb", + "acutecomb", + NULL, + "tildecomb", + NULL, + NULL, + NULL, + NULL, + NULL, + "hookabovecomb", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "dotbelowcomb", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "tonos", + "dieresistonos", + "Alphatonos", + "anoteleia", + "Epsilontonos", + "Etatonos", + "Iotatonos", + NULL, + "Omicrontonos", + NULL, + "Upsilontonos", + "Omegatonos", + "iotadieresistonos", + "Alpha", + "Beta", + "Gamma", + "Delta", + "Epsilon", + "Zeta", + "Eta", + "Theta", + "Iota", + "Kappa", + "Lambda", + "Mu", + "Nu", + "Xi", + "Omicron", + "Pi", + "Rho", + NULL, + "Sigma", + "Tau", + "Upsilon", + "Phi", + "Chi", + "Psi", + "Omega", + "Iotadieresis", + "Upsilondieresis", + "alphatonos", + "epsilontonos", + "etatonos", + "iotatonos", + "upsilondieresistonos", + "alpha", + "beta", + "gamma", + "delta", + "epsilon", + "zeta", + "eta", + "theta", + "iota", + "kappa", + "lambda", + "mu", + "nu", + "xi", + "omicron", + "pi", + "rho", + "sigma1", + "sigma", + "tau", + "upsilon", + "phi", + "chi", + "psi", + "omega", + "iotadieresis", + "upsilondieresis", + "omicrontonos", + "upsilontonos", + "omegatonos", + NULL, + NULL, + "theta1", + "Upsilon1", + NULL, + NULL, + "phi1", + "omega1", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL +}; + +static const char *agl_sans_p0_b1e[] = { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "Wgrave", + "wgrave", + "Wacute", + "wacute", + "Wdieresis", + "wdieresis", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "Ygrave", + "ygrave", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL +}; + +static const char *agl_sans_p0_b20[] = { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "figuredash", + "endash", + "emdash", + NULL, + NULL, + "underscoredbl", + "quoteleft", + "quoteright", + "quotesinglbase", + "quotereversed", + "quotedblleft", + "quotedblright", + "quotedblbase", + NULL, + "dagger", + "daggerdbl", + "bullet", + NULL, + "onedotenleader", + "twodotenleader", + "ellipsis", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "perthousand", + NULL, + "minute", + "second", + NULL, + NULL, + NULL, + NULL, + NULL, + "guilsinglleft", + "guilsinglright", + NULL, + "exclamdbl", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "fraction", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "colonmonetary", + NULL, + "franc", + "lira", + NULL, + NULL, + "peseta", + NULL, + NULL, + NULL, + "dong", + "Euro", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL +}; + +static const char *agl_sans_p0_b21[] = { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "Ifraktur", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "weierstrass", + NULL, + NULL, + NULL, + "Rfraktur", + NULL, + "prescription", + NULL, + NULL, + NULL, + "trademark", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "estimated", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "aleph", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "onethird", + "twothirds", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "oneeighth", + "threeeighths", + "fiveeighths", + "seveneighths", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "arrowleft", + "arrowup", + "arrowright", + "arrowdown", + "arrowboth", + "arrowupdn", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "arrowupdnbse", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "carriagereturn", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "arrowdblleft", + "arrowdblup", + "arrowdblright", + "arrowdbldown", + "arrowdblboth", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL +}; + +static const char *agl_sans_p0_b22[] = { + "universal", + NULL, + "partialdiff", + "existential", + NULL, + "emptyset", + NULL, + "gradient", + "element", + "notelement", + NULL, + "suchthat", + NULL, + NULL, + NULL, + "product", + NULL, + "summation", + "minus", + NULL, + NULL, + NULL, + NULL, + "asteriskmath", + NULL, + NULL, + "radical", + NULL, + NULL, + "proportional", + "infinity", + "orthogonal", + "angle", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "logicaland", + "logicalor", + "intersection", + "union", + "integral", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "therefore", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "similar", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "congruent", + NULL, + NULL, + "approxequal", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "notequal", + "equivalence", + NULL, + NULL, + "lessequal", + "greaterequal", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "propersubset", + "propersuperset", + "notsubset", + NULL, + "reflexsubset", + "reflexsuperset", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "circleplus", + NULL, + "circlemultiply", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "perpendicular", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "dotmath", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL +}; + +static const char *agl_sans_p0_b23[] = { + NULL, + NULL, + "house", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "revlogicalnot", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "integraltp", + "integralbt", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "angleleft", + "angleright", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL +}; + +static const char *agl_sans_p0_b25[] = { + "SF100000", + NULL, + "SF110000", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "SF010000", + NULL, + NULL, + NULL, + "SF030000", + NULL, + NULL, + NULL, + "SF020000", + NULL, + NULL, + NULL, + "SF040000", + NULL, + NULL, + NULL, + "SF080000", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "SF090000", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "SF060000", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "SF070000", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "SF050000", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "SF430000", + "SF240000", + "SF510000", + "SF520000", + "SF390000", + "SF220000", + "SF210000", + "SF250000", + "SF500000", + "SF490000", + "SF380000", + "SF280000", + "SF270000", + "SF260000", + "SF360000", + "SF370000", + "SF420000", + "SF190000", + "SF200000", + "SF230000", + "SF470000", + "SF480000", + "SF410000", + "SF450000", + "SF460000", + "SF400000", + "SF540000", + "SF530000", + "SF440000", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "upblock", + NULL, + NULL, + NULL, + "dnblock", + NULL, + NULL, + NULL, + "block", + NULL, + NULL, + NULL, + "lfblock", + NULL, + NULL, + NULL, + "rtblock", + "ltshade", + "shade", + "dkshade", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "filledbox", + "H22073", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "H18543", + "H18551", + "filledrect", + NULL, + NULL, + NULL, + NULL, + NULL, + "triagup", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "triagrt", + NULL, + "triagdn", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "triaglf", + NULL, + NULL, + NULL, + NULL, + NULL, + "lozenge", + "circle", + NULL, + NULL, + NULL, + "H18533", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "invbullet", + "invcircle", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "openbullet", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL +}; + +static const char *agl_sans_p0_b26[] = { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "smileface", + "invsmileface", + "sun", + NULL, + NULL, + NULL, + "female", + NULL, + "male", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "spade", + NULL, + NULL, + "club", + NULL, + "heart", + "diamond", + NULL, + NULL, + NULL, + "musicalnote", + "musicalnotedbl", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL +}; + +static const char **agl_sans_p0[] = { + agl_sans_p0_b0, + agl_sans_p0_b1, + agl_sans_p0_b2, + agl_sans_p0_b3, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + agl_sans_p0_b1e, + NULL, + agl_sans_p0_b20, + agl_sans_p0_b21, + agl_sans_p0_b22, + agl_sans_p0_b23, + NULL, + agl_sans_p0_b25, + agl_sans_p0_b26, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL +}; + +static NameList agl_sans = { + NULL, + N_("AGL without afii"), + { agl_sans_p0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }, + NULL, 0, 0, NULL +}; +/* ************************************************************************** */ +static const char *agl_p0_b1[] = { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "Tcommaaccent", + "tcommaaccent", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL +}; + +static const char *agl_p0_b2[] = { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "afii57929", + "afii64937", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL +}; + +static const char *agl_p0_b4[] = { + NULL, + "afii10023", + "afii10051", + "afii10052", + "afii10053", + "afii10054", + "afii10055", + "afii10056", + "afii10057", + "afii10058", + "afii10059", + "afii10060", + "afii10061", + NULL, + "afii10062", + "afii10145", + "afii10017", + "afii10018", + "afii10019", + "afii10020", + "afii10021", + "afii10022", + "afii10024", + "afii10025", + "afii10026", + "afii10027", + "afii10028", + "afii10029", + "afii10030", + "afii10031", + "afii10032", + "afii10033", + "afii10034", + "afii10035", + "afii10036", + "afii10037", + "afii10038", + "afii10039", + "afii10040", + "afii10041", + "afii10042", + "afii10043", + "afii10044", + "afii10045", + "afii10046", + "afii10047", + "afii10048", + "afii10049", + "afii10065", + "afii10066", + "afii10067", + "afii10068", + "afii10069", + "afii10070", + "afii10072", + "afii10073", + "afii10074", + "afii10075", + "afii10076", + "afii10077", + "afii10078", + "afii10079", + "afii10080", + "afii10081", + "afii10082", + "afii10083", + "afii10084", + "afii10085", + "afii10086", + "afii10087", + "afii10088", + "afii10089", + "afii10090", + "afii10091", + "afii10092", + "afii10093", + "afii10094", + "afii10095", + "afii10096", + "afii10097", + NULL, + "afii10071", + "afii10099", + "afii10100", + "afii10101", + "afii10102", + "afii10103", + "afii10104", + "afii10105", + "afii10106", + "afii10107", + "afii10108", + "afii10109", + NULL, + "afii10110", + "afii10193", + NULL, + NULL, + "afii10146", + "afii10194", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "afii10147", + "afii10195", + "afii10148", + "afii10196", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "afii10050", + "afii10098", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "afii10846", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL +}; + +static const char *agl_p0_b5[] = { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "afii57799", + "afii57801", + "afii57800", + "afii57802", + "afii57793", + "afii57794", + "afii57795", + "afii57798", + "afii57797", + "afii57806", + NULL, + "afii57796", + "afii57807", + "afii57839", + "afii57645", + "afii57841", + "afii57842", + "afii57804", + "afii57803", + "afii57658", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "afii57664", + "afii57665", + "afii57666", + "afii57667", + "afii57668", + "afii57669", + "afii57670", + "afii57671", + "afii57672", + "afii57673", + "afii57674", + "afii57675", + "afii57676", + "afii57677", + "afii57678", + "afii57679", + "afii57680", + "afii57681", + "afii57682", + "afii57683", + "afii57684", + "afii57685", + "afii57686", + "afii57687", + "afii57688", + "afii57689", + "afii57690", + NULL, + NULL, + NULL, + NULL, + NULL, + "afii57716", + "afii57717", + "afii57718", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL +}; + +static const char *agl_p0_b6[] = { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "afii57388", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "afii57403", + NULL, + NULL, + NULL, + "afii57407", + NULL, + "afii57409", + "afii57410", + "afii57411", + "afii57412", + "afii57413", + "afii57414", + "afii57415", + "afii57416", + "afii57417", + "afii57418", + "afii57419", + "afii57420", + "afii57421", + "afii57422", + "afii57423", + "afii57424", + "afii57425", + "afii57426", + "afii57427", + "afii57428", + "afii57429", + "afii57430", + "afii57431", + "afii57432", + "afii57433", + "afii57434", + NULL, + NULL, + NULL, + NULL, + NULL, + "afii57440", + "afii57441", + "afii57442", + "afii57443", + "afii57444", + "afii57445", + "afii57446", + "afii57470", + "afii57448", + "afii57449", + "afii57450", + "afii57451", + "afii57452", + "afii57453", + "afii57454", + "afii57455", + "afii57456", + "afii57457", + "afii57458", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "afii57392", + "afii57393", + "afii57394", + "afii57395", + "afii57396", + "afii57397", + "afii57398", + "afii57399", + "afii57400", + "afii57401", + "afii57381", + NULL, + NULL, + "afii63167", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "afii57511", + NULL, + NULL, + NULL, + NULL, + "afii57506", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "afii57507", + NULL, + "afii57512", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "afii57513", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "afii57508", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "afii57505", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "afii57509", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "afii57514", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "afii57519", + NULL, + NULL, + "afii57534", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL +}; + +static const char *agl_p0_b20[] = { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "afii61664", + "afii301", + "afii299", + "afii300", + NULL, + NULL, + NULL, + NULL, + NULL, + "afii00208", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "afii61573", + "afii61574", + "afii61575", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "afii57636", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL +}; + +static const char *agl_p0_b21[] = { + NULL, + NULL, + NULL, + NULL, + NULL, + "afii61248", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "afii61289", + NULL, + NULL, + "afii61352", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL +}; + +static const char **agl_p0[] = { + NULL, + agl_p0_b1, + agl_p0_b2, + NULL, + agl_p0_b4, + agl_p0_b5, + agl_p0_b6, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + agl_p0_b20, + agl_p0_b21, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL +}; + +static NameList agl = { + &agl_sans, + N_("Adobe Glyph List"), + { agl_p0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }, + NULL, 0, 0, NULL +}; +/* ************************************************************************** */ +static const char *adobepua_p0_bf6[] = { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "perthousand.oldstyle", + "cent.denominator", + "dollar.denominator", + "hyphen.denominator", + "parenleft.denominator", + "parenright.denominator", + "cent.numerator", + "dollar.numerator", + "hyphen.numerator", + "parenleft.numerator", + "parenright.numerator", + "at.cap", + "commaaccent.cap", + "commaaccent.small", + "pi.math", + "h.superior", + "zero.slash", + "zero.fitted", + "two.fitted", + "three.fitted", + "four.fitted", + "five.fitted", + "six.fitted", + "seven.fitted", + "eight.fitted", + "nine.fitted", + "percent.oldstyle", + "zero.taboldstyle", + "one.taboldstyle", + "two.taboldstyle", + "three.taboldstyle", + "four.taboldstyle", + "five.taboldstyle", + "six.taboldstyle", + "seven.taboldstyle", + "eight.taboldstyle", + "nine.taboldstyle", + "colonmonetary.taboldstyle", + "Euro.taboldstyle", + "florin.taboldstyle", + "numbersign.taboldstyle", + "sterling.taboldstyle", + "yen.taboldstyle", + "dollar.taboldstyle", + "cent.taboldstyle", + "zero.denominator", + "one.denominator", + "two.denominator", + "three.denominator", + "four.denominator", + "five.denominator", + "six.denominator", + "seven.denominator", + "eight.denominator", + "nine.denominator", + "comma.denominator", + "period.denominator", + "zero.numerator", + "one.numerator", + "two.numerator", + "three.numerator", + "four.numerator", + "five.numerator", + "six.numerator", + "seven.numerator", + "eight.numerator", + "nine.numerator", + "comma.numerator", + "period.numerator", + "Abreve.small", + "Amacron.small", + "Aogonek.small", + "AEacute.small", + "Cacute.small", + "Ccaron.small", + "Ccircumflex.small", + "Cdotaccent.small", + "Dcaron.small", + "Dcroat.small", + "Ebreve.small", + "Ecaron.small", + "Edotaccent.small", + "Emacron.small", + "Eng.small", + "Eogonek.small", + "Gbreve.small", + "Gcircumflex.small", + "Gcommaaccent.small", + "Gdotaccent.small", + "Hbar.small", + "Hcircumflex.small", + "Ibreve.small", + "IJ.small", + "Imacron.small", + "Iogonek.small", + "Itilde.small", + "Jcircumflex.small", + "Kcommaaccent.small", + "Lacute.small", + "Lcaron.small", + "Lcommaaccent.small", + "Ldot.small", + "Nacute.small", + "Ncaron.small", + "Ncommaaccent.small", + "Obreve.small", + "Ohungarumlaut.small", + "Omacron.small", + "Oslashacute.small", + "Racute.small", + "Rcaron.small", + "Rcommaaccent.small", + "Sacute.small", + "Scedilla.small", + "Scircumflex.small", + "Scommaaccent.small", + "Tbar.small", + "Tcaron.small", + "Tcommaaccent.small", + "Ubreve.small", + "Uhungarumlaut.small", + "Umacron.small", + "Uogonek.small", + "Uring.small", + "Utilde.small", + "Wacute.small", + "Wcircumflex.small", + "Wdieresis.small", + "Wgrave.small", + "Ycircumflex.small", + "Ygrave.small", + "Zacute.small", + "Zdotaccent.small", + "Idotaccent.small", + "parenleft.cap", + "parenright.cap", + "bracketleft.cap", + "bracketright.cap", + "braceleft.cap", + "braceright.cap", + "exclamdown.cap", + "questiondown.cap", + "guillemotleft.cap", + "guillemotright.cap", + "guilsinglleft.cap", + "guilsinglright.cap", + "hyphen.cap", + "endash.cap", + "emdash.cap", + "periodcentered.cap", + "j.dotless", + NULL, + NULL, + NULL, + NULL, + NULL, + "afii10068.ital", + "afii10066.ital", + "afii10069.ital", + "afii10081.ital", + "afii10084.ital", + "acute.cap", + "caron.cap", + "dieresis.cap", + "space_uni0308_uni0301.cap", + "space_uni0308_uni0300.cap", + "grave.cap", + "hungarumlaut.cap", + "macron.cap", + "breve.cyrcap", + "circumflex.cyrcap", + "space_uni030F.cap", + "breve.cyr", + "circumflex.cyr", + "space_uni030F", + "space_uni0308_uni0301", + "space_uni0308_uni0300", + "copyright.serif", + "registered.serif", + "trademark.serif", + "one.fitted", + "R_p", + "uni2014.alt", + "cent.inferior", + "cent.superior", + "comma.inferior", + "comma.superior", + "dollar.inferior", + "dollar.superior", + "hyphen.inferior", + "hyphen.superior", + "period.inferior", + "period.superior", + "a.superior", + "b.superior", + "d.superior", + "e.superior", + "i.superior", + "l.superior", + "m.superior", + "o.superior", + "r.superior", + "s.superior", + "t.superior", + "breve.sc", + "caron.sc", + "circumflex.sc", + "dotaccent.sc", + "hungarumlaut.sc", + "lslash.sc", + "oe.sc", + "ogonek.sc", + "ring.sc", + "scaron.sc", + "tilde.sc", + "zcaron.sc" +}; + +static const char *adobepua_p0_bf7[] = { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "exclam.sc", + NULL, + NULL, + "dollar.oldstyle", + NULL, + "ampersand.sc", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "zero.oldstyle", + "one.oldstyle", + "two.oldstyle", + "three.oldstyle", + "four.oldstyle", + "five.oldstyle", + "six.oldstyle", + "seven.oldstyle", + "eight.oldstyle", + "nine.oldstyle", + NULL, + NULL, + NULL, + NULL, + NULL, + "question.sc", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "grave.sc", + "a.sc", + "b.sc", + "c.sc", + "d.sc", + "e.sc", + "f.sc", + "g.sc", + "h.sc", + "i.sc", + "j.sc", + "k.sc", + "l.sc", + "m.sc", + "n.sc", + "o.sc", + "p.sc", + "q.sc", + "r.sc", + "s.sc", + "t.sc", + "u.sc", + "v.sc", + "w.sc", + "x.sc", + "y.sc", + "z.sc", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "exclamdown.sc", + "cent.oldstyle", + NULL, + NULL, + NULL, + NULL, + NULL, + "dieresis.sc", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "macron.sc", + NULL, + NULL, + NULL, + NULL, + "acute.sc", + NULL, + NULL, + NULL, + "cedilla.sc", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "questiondown.sc", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "agrave.sc", + "aacute.sc", + "acircumflex.sc", + "atilde.sc", + "adieresis.sc", + "aring.sc", + "ae.sc", + "ccedilla.sc", + "egrave.sc", + "eacute.sc", + "ecircumflex.sc", + "edieresis.sc", + "igrave.sc", + "iacute.sc", + "icircumflex.sc", + "idieresis.sc", + "eth.sc", + "ntilde.sc", + "ograve.sc", + "oacute.sc", + "ocircumflex.sc", + "otilde.sc", + "odieresis.sc", + NULL, + "oslash.sc", + "ugrave.sc", + "uacute.sc", + "ucircumflex.sc", + "udieresis.sc", + "yacute.sc", + "thorn.sc", + "ydieresis.sc" +}; + +static const char *adobepua_p0_bf8[] = { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "registered.sans", + "copyright.sans", + "trademark.sans", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL +}; + +static const char *adobepua_p0_bfb[] = { + "f_f", + "f_i", + "f_l", + "f_f_i", + "f_f_l", + "longs_t", + "s_t", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL +}; + +static const char **adobepua_p0[] = { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + adobepua_p0_bf6, + adobepua_p0_bf7, + adobepua_p0_bf8, + NULL, + NULL, + adobepua_p0_bfb, + NULL, + NULL, + NULL, + NULL +}; + +static NameList adobepua = { + &agl, + N_("AGL with PUA"), + { adobepua_p0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }, + NULL, 0, 0, NULL +}; +/* ************************************************************************** */ +static const char *greeksc_p0_bf5[] = { + "alpha.sc", + "beta.sc", + "gamma.sc", + "delta.sc", + "epsilon.sc", + "zeta.sc", + "eta.sc", + "theta.sc", + "iota.sc", + "kappa.sc", + "lambda.sc", + "mu.sc", + "nu.sc", + "xi.sc", + "omicron.sc", + "pi.sc", + "rho.sc", + NULL, + "sigma.sc", + "tau.sc", + "upsilon.sc", + "phi.sc", + "chi.sc", + "psi.sc", + "omega.sc", + "iotadieresis.sc", + "upsilondieresis.sc", + "alphaiota.sc", + "etaiota.sc", + "omegaiota.sc", + "prosgegrammeni.sc", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL +}; + +static const char **greeksc_p0[] = { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + greeksc_p0_bf5, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL +}; + +static NameList greeksc = { + &adobepua, + N_("Greek small caps"), + { greeksc_p0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }, + NULL, 0, 0, NULL +}; +/* ************************************************************************** */ +static const char *tex_p0_b20[] = { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "closure", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "leftharpoonaccent", + "rightharpoonaccent", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL +}; + +static const char *tex_p0_b21[] = { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "shortleftarrow", + "shortuparrow", + "shortrightarrow", + "shortdownarrow", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "leftwavyarrow", + "rightwavyarrow", + NULL, + "twoheaduparrow", + NULL, + "twoheaddownarrow", + NULL, + NULL, + NULL, + "mapsup", + NULL, + "mapsdown", + "updownarrowbar", + NULL, + NULL, + NULL, + NULL, + "leftrightwavyarrow", + NULL, + "downzigzagarrow", + NULL, + NULL, + "Ldsh", + "Rdsh", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "acwopencirclearrow", + "cwopencirclearrow", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "updownarrows", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "Nwarrow", + "Nearrow", + "Searrow", + "Swarrow", + NULL, + NULL, + "longleftzigzagarrow", + "rightzigzagarrow", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "barleftarrow", + "rightarrowbar", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "downuparrows", + "rightthreearrows", + "nvleftarrow", + "nvrightarrow", + "nvleftrightarrow", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL +}; + +static const char *tex_p0_b22[] = { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "ltrpar", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "difference", + NULL, + "ac", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "approxident", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "arceq", + NULL, + "veeeq", + "stareq", + NULL, + "eqdef", + "measeq", + NULL, + NULL, + NULL, + NULL, + "Equiv", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "prurel", + "scurel", + NULL, + NULL, + NULL, + NULL, + "origof", + "imageof", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "eqless", + "eqgtr", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "disin", + NULL, + "isins", + "isindot", + NULL, + NULL, + "isinvb", + "isinE", + "nisd", + NULL, + "nis", + NULL, + NULL, + NULL +}; + +static const char *tex_p0_b23[] = { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "invnot", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "turnednot", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "solbar", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "rangledownzigzagarrow", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL +}; + +static const char *tex_p0_b27[] = { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "longrightzigzagarrow" +}; + +static const char *tex_p0_b29[] = { + NULL, + NULL, + "nvLeftarrow", + "nvRightarrow", + "nvLeftrightarrow", + "twoheadmapsto", + NULL, + NULL, + "downarrowbarred", + "uparrowbarred", + "Uuparrow", + "Ddownarrow", + "leftbkarrow", + "rightbkarrow", + "leftdbkarrow", + NULL, + NULL, + "rightdotarrow", + "baruparrow", + "downarrowbar", + NULL, + NULL, + "twoheadrightarrowtail", + NULL, + NULL, + "lefttail", + "righttail", + "leftdbltail", + "rightdbltail", + "diamondleftarrow", + "rightarrowdiamond", + "diamondleftarrowbar", + "barrightarrowdiamond", + "nwsearrow", + "neswarrow", + "hknwarrow", + "hknearrow", + "hksearrow", + "hkswarrow", + NULL, + NULL, + NULL, + NULL, + "rdiagovfdiag", + "fdiagovrdiag", + "seovnearrow", + "neovsearrow", + "fdiagovnearrow", + "rdiagovsearrow", + "neovnwarrow", + "nwovnearrow", + "rightcurvedarrow", + NULL, + NULL, + "leftdowncurvedarrow", + "rightdowncurvedarrow", + "cwhalfcirclearrow", + "acwhalfcirclearrow", + NULL, + "acwundercurvearrow", + "curvearrowrightminus", + "curvearrowleftplus", + "cwundercurvearrow", + NULL, + NULL, + NULL, + "rightarrowshortleftarrow", + "leftarrowshortrightarrow", + "shortrightarrowleftarrow", + "rightarrowplus", + "leftarrowplus", + "rightarrowx", + "leftrightarrowcircle", + "twoheaduparrowcircle", + "leftrightharpoonupdown", + "leftrightharpoondownup", + "updownharpoonrightleft", + "updownharpoonleftright", + "leftrightharpoonupup", + "updownharpoonrightright", + "leftrightharpoondowndown", + "updownharpoonleftleft", + "barleftharpoonup", + "rightharpoonupbar", + "barupharpoonright", + "downharpoonrightbar", + "barleftharpoondown", + "rightharpoondownbar", + "barupharpoonleft", + "downharpoonleftbar", + "leftharpoonupbar", + "barrightharpoonup", + "upharpoonrightbar", + "bardownharpoonright", + "leftharpoondownbar", + "barrightharpoondown", + "upharpoonleftbar", + "bardownharpoonleft", + "leftharpoonsupdown", + "upharpoonsleftright", + "rightharpoonsupdown", + "downharpoonsleftright", + "leftrightharpoonsup", + "leftrightharpoonsdown", + "rightleftharpoonsup", + "rightleftharpoonsdown", + "leftharpoonupdash", + "dashleftharpoondown", + "rightharpoonupdash", + "dashrightharpoondown", + "updownharpoonsleftright", + "downupharpoonsleftright", + "rightimply", + "equalrightarrow", + "similarrightarrow", + "leftarrowsimilar", + "rightarrowsimilar", + "rightarrowapprox", + "ltlarr", + "leftarrowless", + "gtrarr", + "subrarr", + "leftarrowsubset", + "suplarr", + "leftfishtail", + "rightfishtail", + "upfishtail", + "downfishtail", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "rtriltri", + "ltrivb", + "vbrtri", + "lfbowtie", + "rfbowtie", + "fbowtie", + "lftimes", + "rftimes", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "eqvparsl", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "ruledelayed", + NULL, + "dsol", + "rsolbar", + "xsol", + "xbsol", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL +}; + +static const char *tex_p0_b2a[] = { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "congdot", + NULL, + NULL, + "approxeqq", + NULL, + NULL, + "eqqsim", + "Coloneq", + "eqeq", + NULL, + NULL, + "equivDD", + "ltcir", + "gtcir", + "ltquest", + "gtquest", + NULL, + NULL, + "lesdot", + "gesdot", + "lesdoto", + "gesdoto", + "lesdotor", + "gesdotol", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "lsime", + "gsime", + "lsimg", + "gsiml", + "lgE", + "glE", + "lesges", + "gesles", + NULL, + NULL, + "elsdot", + "egsdot", + NULL, + NULL, + NULL, + NULL, + "simless", + "simgtr", + "simlE", + "simgE", + "Lt", + "Gt", + NULL, + "glj", + "gla", + "ltcc", + "gtcc", + "lescc", + "gescc", + "smt", + "lat", + "smte", + "late", + "bumpeqq", + NULL, + NULL, + NULL, + NULL, + "prE", + "scE", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "Pr", + "Sc", + "subsetdot", + "supsetdot", + "subsetplus", + "supsetplus", + "submult", + "supmult", + "subedot", + "supedot", + NULL, + NULL, + "subsim", + "supsim", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "csub", + "csup", + "csube", + "csupe", + "subsup", + "supsub", + "subsub", + "supsup", + "suphsub", + "supdsub", + "forkv", + "topfork", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "Barv", + "vBar", + "vBarv", + "barV", + "Vbar", + "Not", + "bNot", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL +}; + +static const char *tex_p0_be2[] = { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "rightdbkarrow", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "nrightwavyarrow", + NULL, + "nrightcurvedarrow", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "race", + "acE", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL +}; + +static const char *tex_p0_be3[] = { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "lesg", + "gesl", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "smtes", + "lates", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "bsolhsub", + "suphsol", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "congruence", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL +}; + +static const char *tex_p0_be4[] = { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "mostpos", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL +}; + +static const char *tex_p0_be6[] = { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "varrightfishtail", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL +}; + +static const char **tex_p0[] = { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + tex_p0_b20, + tex_p0_b21, + tex_p0_b22, + tex_p0_b23, + NULL, + NULL, + NULL, + tex_p0_b27, + NULL, + tex_p0_b29, + tex_p0_b2a, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + tex_p0_be2, + tex_p0_be3, + tex_p0_be4, + NULL, + tex_p0_be6, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL +}; + +static NameList tex = { + &agl, + NU_("ΤεΧ Names"), + { tex_p0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }, + NULL, 0, 0, NULL +}; +/* ************************************************************************** */ +static const char *ams_p0_be2[] = { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "uni219D0338", + NULL, + "uni29330338", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "uni2192.short", + "uni2190.short", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "uni222AFE00", + "uni2229FE00", + "uni2294FE00", + "uni2293FE00", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "uni223E0332.reversed", + "uni223E0333", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "uni2269FE00", + NULL, + NULL, + "uni2268FE00", + "uni22670338", + "uni2A7E0338", + "uni2A7D0338", + "uni22660338", + NULL, + "uni2224.short", + "uni2226.short", + "uni228220D2", + "uni228620D2", + "uni2AC50338", + "uni228320D2", + "uni2AC60338", + "uni228720D2", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "uni2ACBFE00", + "uni228AFE00", + "uni228BFE00", + "uni2ACCFE00", + "uni224B0338", + NULL, + NULL, + NULL, + NULL, + "uni226420D2", + "uni226520D2", + "uni003C20D2", + "uni003E20D2", + "uni2A6D0338", + "uni224820D2", + "uni2A700338", + NULL, + "uni2AA120D2", + "uni2AA220D2", + "uni226A0338", + "uni226B0338", + "uni22D80338", + "uni22D90338", + "uni22B520D2", + "uni22B420D2", + NULL, + NULL, + NULL, + "uni006A.dotless", + "uni210F.var", + NULL, + NULL, + "uni222020D2", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL +}; + +static const char *ams_p0_be3[] = { + NULL, + "uni2223.short", + "uni2225.short", + NULL, + NULL, + NULL, + "uni2248.bold", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "uni22DAFE00", + "uni22DBFE00", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "uni2AACFE00", + "uni2AADFE00", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "uni220B20D2", + "uni220D0338", + NULL, + NULL, + "uni220820D2", + NULL, + NULL, + NULL, + NULL, + NULL, + "uni2A15.up", + "uni2A16.up", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "uni226120E5", + "uni003D20E5", + "uni2AFD20E5", + "uni22500338", + NULL, + NULL, + NULL, + NULL, + NULL, + "uni22020338", + NULL, + NULL, + NULL, + NULL, + "uni2A10.up", + NULL, + "uni2A12.up", + "uni2A13.up", + "uni2A14.up", + "uni2A17.up", + "uni2A11.up", + NULL, + "uni22F50338", + NULL, + "uni22F90338", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "uni2026.em", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "uni220A0338", + "uni227320D2", + "uni227220D2", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "uni223E.reversed", + NULL, + NULL, + NULL, + NULL, + "uni0265.superscript", + "uni0252.superscript", + NULL, + NULL, + NULL, + "uni2A0F.up", + NULL, + NULL, + NULL, + NULL, + "uni2A9B20D2", + "uni2A9C20D2", + "uni2A9B0338", + "uni2A9C0338", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL +}; + +static const char *ams_p0_be4[] = { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "uni223E.var", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "uni223C20D2", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL +}; + +static const char *ams_p0_be5[] = { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "uni2A3CFE00", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "uni2AAF0338", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "uni224220D2", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "uni2AB00338", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL +}; + +static const char *ams_p0_be6[] = { + NULL, + NULL, + NULL, + NULL, + "uni228F0338", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "uni22900338", + "uni224E0338", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "uni2205.var", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "uni0077.subscript", + NULL, + NULL, + NULL, + NULL, + NULL, + "uni1D0B.reversed", + NULL, + NULL, + NULL, + NULL, + NULL, + "uni025102DE", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "uni025B02DE", + "uni025402DE", + NULL, + "uni03C9.inverted", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "uni297D.var", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "uni223C.bold", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL +}; + +static const char *ams_p0_be8[] = { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "uni227E0338", + "uni227F0338", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "uni2216.var", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "uni224F0338", + "uni22420338", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL +}; + +static const char *ams_p0_bea[] = { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "uni00730336", + NULL, + "uni006C0321", + NULL, + NULL, + "uni03040304", + NULL, + NULL, + "uni229CFE00", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "uni03020302", + NULL, + "uni03030303", + "uni033103310331", + "uni0331033103310331", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "uni03070302", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "uni03040303", + "uni03310330", + "uni03040308", + "uni03300331", + NULL, + "uni00640321", + "uni00680321", + "uni006B0321", + "uni00780321", + NULL, + NULL, + NULL, + NULL, + NULL, + "uni00730321", + "uni007A0321", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "uni2034.notsup", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "uni2A0B.up", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "uni227620D2", + "uni227720D2", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL +}; + +static const char *ams_p0_bec[] = { + NULL, + NULL, + "uni2A3DFE00", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL +}; + +static const char *ams_p0_bed[] = { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "uni220A20D2", + "uni220D20D2", + "uni22F60338", + "uni22FD0338", + "uni22F620D2", + "uni22FD20D2", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "uni2295FE00", + "uni2297FE00", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "uni224320D2", + "uni224520D2", + NULL, + "uni2A6C0338", + "uni2A6C20D2", + "uni2A7020D2", + "uni224D20D2", + "uni223F.reversed", + "uni003D20D2", + NULL, + "uni226120D2", + "uni22630338", + "uni226320D2", + NULL, + NULL, + "uni2A7D20D2", + "uni2A7E20D2", + "uni226620D2", + "uni226720D2", + "uni2A950338", + "uni2A960338", + "uni2A9520D2", + "uni2A9620D2", + NULL, + NULL, + NULL, + NULL, + "uni2A990338", + "uni2A9A0338", + "uni2A9920D2", + "uni2A9A20D2", + "uni2272FE00", + "uni2273FE00", + "uni2A9DFE00", + "uni2A9EFE00", + NULL, + NULL, + "uni227A20D2", + "uni227B20D2", + "uni227C20D2", + "uni227D20D2", + "uni22DE20D2", + "uni22DF20D2", + "uni22DE0338", + "uni22DF0338", + NULL, + NULL, + NULL, + NULL, + "uni2AC520D2", + "uni2AC620D2", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "uni2AF40338", + NULL, + NULL, + NULL, + NULL, + NULL, + "uni2A0A.lgdisplay", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "uni220A.narrow", + "uni220D.narrow", + NULL, + "u1D6FB.narrow", + "uni002820090029", + "uni002822C50029", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL +}; + +static const char *ams_p0_bee[] = { + "stixEE00", + "stixEE01", + "stixEE02", + "stixEE03", + "stixEE04", + "stixEE05", + "stixEE06", + "stixEE07", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "stixEE10", + "stixEE11", + "stixEE12", + "stixEE13", + "stixEE14", + "stixEE15", + "stixEE16", + "stixEE17", + "stixEE18", + "stixEE19", + "stixEE1A", + "stixEE1B", + "stixEE1C", + "stixEE1D", + "stixEE1E", + "stixEE1F", + "stixEE20", + "stixEE21", + "stixEE22", + "stixEE23", + "stixEE24", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "stixEE30", + "stixEE31", + "stixEE32", + "stixEE33", + "stixEE34", + "stixEE35", + "stixEE36", + "stixEE37", + "stixEE38", + "stixEE39", + "stixEE3A", + "stixEE3B", + "stixEE3C", + "stixEE3D", + "stixEE3E", + NULL, + "stixEE40", + "stixEE41", + "stixEE42", + "stixEE43", + "stixEE44", + "stixEE45", + "stixEE46", + "stixEE47", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "stixEE50", + "stixEE51", + "stixEE52", + "stixEE53", + "stixEE54", + "stixEE55", + "stixEE56", + "stixEE57", + "stixEE58", + "stixEE59", + "stixEE5A", + "stixEE5B", + "stixEE5C", + "stixEE5D", + "stixEE5E", + "stixEE5F", + "stixEE60", + "stixEE61", + "stixEE62", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "stixEE70", + "stixEE71", + "stixEE72", + "stixEE73", + "stixEE74", + "stixEE75", + "stixEE76", + "stixEE77", + "stixEE78", + "stixEE79", + "stixEE7A", + "stixEE7B", + "stixEE7C", + "stixEE7D", + "stixEE7E", + "stixEE7F", + "stixEE80", + "stixEE81", + "stixEE82", + "stixEE83", + "stixEE84", + "stixEE85", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "stixEE90", + "stixEE91", + "stixEE92", + "stixEE93", + "stixEE94", + "stixEE95", + "stixEE96", + "stixEE97", + "stixEE98", + "stixEE99", + "stixEE9A", + "stixEE9B", + "stixEE9C", + "stixEE9D", + "stixEE9E", + "stixEE9F", + "stixEEA0", + "stixEEA1", + "stixEEA2", + "stixEEA3", + "stixEEA4", + "stixEEA5", + "stixEEA6", + "stixEEA7", + "stixEEA8", + "stixEEA9", + "stixEEAA", + "stixEEAB", + "stixEEAC", + NULL, + NULL, + NULL, + "stixEEB0", + "stixEEB1", + "stixEEB2", + "stixEEB3", + "stixEEB4", + "stixEEB5", + "stixEEB6", + "stixEEB7", + "stixEEB8", + "stixEEB9", + "stixEEBA", + "stixEEBB", + "stixEEBC", + "stixEEBD", + "stixEEBE", + "stixEEBF", + "stixEEC0", + "stixEEC1", + "stixEEC2", + "stixEEC3", + "stixEEC4", + "stixEEC5", + "stixEEC6", + "stixEEC7", + "stixEEC8", + "stixEEC9", + "stixEECA", + "stixEECB", + NULL, + "stixEECD", + "stixEECE", + "stixEECF", + "stixEED0", + "stixEED1", + "stixEED2", + "stixEED3", + "stixEED4", + "stixEED5", + "stixEED6", + "stixEED7", + "stixEED8", + "stixEED9", + "stixEEDA", + "stixEEDB", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL +}; + +static const char *ams_p0_bf4[] = { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "uni29CF0338", + "uni29D00338", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "uni2AA10338", + NULL, + NULL, + NULL, + NULL, + "uni2AA20338", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL +}; + +static const char *ams_p0_bf5[] = { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "uni2191.short", + "uni2193.short", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL +}; + +static const char **ams_p0[] = { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + ams_p0_be2, + ams_p0_be3, + ams_p0_be4, + ams_p0_be5, + ams_p0_be6, + NULL, + ams_p0_be8, + NULL, + ams_p0_bea, + NULL, + ams_p0_bec, + ams_p0_bed, + ams_p0_bee, + NULL, + NULL, + NULL, + NULL, + NULL, + ams_p0_bf4, + ams_p0_bf5, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL +}; + +static NameList ams = { + &tex, + N_("AMS Names"), + { ams_p0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }, + NULL, 0, 0, NULL +}; +/* ************************************************************************** */ +static struct psaltnames psaltnames[] = { + { "AEmacron", 0x01e2 , 0 }, + { "AEsmall", 0xf7e6 , 0 }, + { "Aacutesmall", 0xf7e1 , 0 }, + { "Abreveacute", 0x1eae , 0 }, + { "Abrevecyrillic", 0x04d0 , 0 }, + { "Abrevedotbelow", 0x1eb6 , 0 }, + { "Abrevegrave", 0x1eb0 , 0 }, + { "Abrevehookabove", 0x1eb2 , 0 }, + { "Abrevetilde", 0x1eb4 , 0 }, + { "Acaron", 0x01cd , 0 }, + { "Acircle", 0x24b6 , 0 }, + { "Acircumflexacute", 0x1ea4 , 0 }, + { "Acircumflexdotbelow", 0x1eac , 0 }, + { "Acircumflexgrave", 0x1ea6 , 0 }, + { "Acircumflexhookabove", 0x1ea8 , 0 }, + { "Acircumflexsmall", 0xf7e2 , 0 }, + { "Acircumflextilde", 0x1eaa , 0 }, + { "Acute", 0xf6c9 , 0 }, + { "Acutesmall", 0xf7b4 , 0 }, + { "Acyrillic", 0x0410 , 0 }, + { "Adblgrave", 0x0200 , 0 }, + { "Adieresiscyrillic", 0x04d2 , 0 }, + { "Adieresismacron", 0x01de , 0 }, + { "Adieresissmall", 0xf7e4 , 0 }, + { "Adotbelow", 0x1ea0 , 0 }, + { "Adotmacron", 0x01e0 , 0 }, + { "Agravesmall", 0xf7e0 , 0 }, + { "Ahookabove", 0x1ea2 , 0 }, + { "Aiecyrillic", 0x04d4 , 0 }, + { "Ainvertedbreve", 0x0202 , 0 }, + { "Amonospace", 0xff21 , 0 }, + { "Aringbelow", 0x1e00 , 0 }, + { "Aringsmall", 0xf7e5 , 0 }, + { "Asmall", 0xf761 , 0 }, + { "Atildesmall", 0xf7e3 , 0 }, + { "Aybarmenian", 0x0531 , 0 }, + { "Bcircle", 0x24b7 , 0 }, + { "Bdotaccent", 0x1e02 , 0 }, + { "Bdotbelow", 0x1e04 , 0 }, + { "Becyrillic", 0x0411 , 0 }, + { "Benarmenian", 0x0532 , 0 }, + { "Bhook", 0x0181 , 0 }, + { "Blinebelow", 0x1e06 , 0 }, + { "Bmonospace", 0xff22 , 0 }, + { "Brevesmall", 0xf6f4 , 0 }, + { "Bsmall", 0xf762 , 0 }, + { "Btopbar", 0x0182 , 0 }, + { "Caarmenian", 0x053e , 0 }, + { "Caron", 0xf6ca , 0 }, + { "Caronsmall", 0xf6f5 , 0 }, + { "Ccedillaacute", 0x1e08 , 0 }, + { "Ccedillasmall", 0xf7e7 , 0 }, + { "Ccircle", 0x24b8 , 0 }, + { "Cdot", 0x010a , 0 }, + { "Cedillasmall", 0xf7b8 , 0 }, + { "Chaarmenian", 0x0549 , 0 }, + { "Cheabkhasiancyrillic", 0x04bc , 0 }, + { "Checyrillic", 0x0427 , 0 }, + { "Chedescenderabkhasiancyrillic", 0x04be , 0 }, + { "Chedescendercyrillic", 0x04b6 , 0 }, + { "Chedieresiscyrillic", 0x04f4 , 0 }, + { "Cheharmenian", 0x0543 , 0 }, + { "Chekhakassiancyrillic", 0x04cb , 0 }, + { "Cheverticalstrokecyrillic", 0x04b8 , 0 }, + { "Chook", 0x0187 , 0 }, + { "Circumflexsmall", 0xf6f6 , 0 }, + { "Cmonospace", 0xff23 , 0 }, + { "Coarmenian", 0x0551 , 0 }, + { "Csmall", 0xf763 , 0 }, + { "DZ", 0x01f1 , 0 }, + { "DZcaron", 0x01c4 , 0 }, + { "Daarmenian", 0x0534 , 0 }, + { "Dafrican", 0x0189 , 0 }, + { "Dcedilla", 0x1e10 , 0 }, + { "Dcircle", 0x24b9 , 0 }, + { "Dcircumflexbelow", 0x1e12 , 0 }, + { "Ddotaccent", 0x1e0a , 0 }, + { "Ddotbelow", 0x1e0c , 0 }, + { "Decyrillic", 0x0414 , 0 }, + { "Deicoptic", 0x03ee , 0 }, + { "Deltagreek", 0x0394 , 0 }, + { "Dhook", 0x018a , 0 }, + { "Dieresis", 0xf6cb , 0 }, + { "diaeresis", 0x00a8 , 0 }, + { "Diaeresis", 0xf6cb , 0 }, + { "DieresisAcute", 0xf6cc , 0 }, + { "DieresisGrave", 0xf6cd , 0 }, + { "Dieresissmall", 0xf7a8 , 0 }, + { "Digammagreek", 0x03dc , 0 }, + { "Djecyrillic", 0x0402 , 0 }, + { "Dlinebelow", 0x1e0e , 0 }, + { "Dmonospace", 0xff24 , 0 }, + { "Dotaccentsmall", 0xf6f7 , 0 }, + { "Dslash", 0x0110 , 0 }, + { "Dsmall", 0xf764 , 0 }, + { "Dtopbar", 0x018b , 0 }, + { "Dz", 0x01f2 , 0 }, + { "Dzcaron", 0x01c5 , 0 }, + { "Dzeabkhasiancyrillic", 0x04e0 , 0 }, + { "Dzecyrillic", 0x0405 , 0 }, + { "Dzhecyrillic", 0x040f , 0 }, + { "Eacutesmall", 0xf7e9 , 0 }, + { "Ecedillabreve", 0x1e1c , 0 }, + { "Echarmenian", 0x0535 , 0 }, + { "Ecircle", 0x24ba , 0 }, + { "Ecircumflexacute", 0x1ebe , 0 }, + { "Ecircumflexbelow", 0x1e18 , 0 }, + { "Ecircumflexdotbelow", 0x1ec6 , 0 }, + { "Ecircumflexgrave", 0x1ec0 , 0 }, + { "Ecircumflexhookabove", 0x1ec2 , 0 }, + { "Ecircumflexsmall", 0xf7ea , 0 }, + { "Ecircumflextilde", 0x1ec4 , 0 }, + { "Ecyrillic", 0x0404 , 0 }, + { "Edblgrave", 0x0204 , 0 }, + { "Edieresissmall", 0xf7eb , 0 }, + { "Edot", 0x0116 , 0 }, + { "Edotbelow", 0x1eb8 , 0 }, + { "Efcyrillic", 0x0424 , 0 }, + { "Egravesmall", 0xf7e8 , 0 }, + { "Eharmenian", 0x0537 , 0 }, + { "Ehookabove", 0x1eba , 0 }, + { "Eightroman", 0x2167 , 0 }, + { "Einvertedbreve", 0x0206 , 0 }, + { "Eiotifiedcyrillic", 0x0464 , 0 }, + { "Elcyrillic", 0x041b , 0 }, + { "Elevenroman", 0x216a , 0 }, + { "Emacronacute", 0x1e16 , 0 }, + { "Emacrongrave", 0x1e14 , 0 }, + { "Emcyrillic", 0x041c , 0 }, + { "Emonospace", 0xff25 , 0 }, + { "Encyrillic", 0x041d , 0 }, + { "Endescendercyrillic", 0x04a2 , 0 }, + { "Enghecyrillic", 0x04a4 , 0 }, + { "Enhookcyrillic", 0x04c7 , 0 }, + { "Eopen", 0x0190 , 0 }, + { "Ercyrillic", 0x0420 , 0 }, + { "Ereversed", 0x018e , 0 }, + { "Ereversedcyrillic", 0x042d , 0 }, + { "Escyrillic", 0x0421 , 0 }, + { "Esdescendercyrillic", 0x04aa , 0 }, + { "Esh", 0x01a9 , 0 }, + { "Esmall", 0xf765 , 0 }, + { "Etarmenian", 0x0538 , 0 }, + { "Ethsmall", 0xf7f0 , 0 }, + { "Etilde", 0x1ebc , 0 }, + { "Etildebelow", 0x1e1a , 0 }, + { "Ezh", 0x01b7 , 0 }, + { "Ezhcaron", 0x01ee , 0 }, + { "Ezhreversed", 0x01b8 , 0 }, + { "Fcircle", 0x24bb , 0 }, + { "Fdotaccent", 0x1e1e , 0 }, + { "Feharmenian", 0x0556 , 0 }, + { "Feicoptic", 0x03e4 , 0 }, + { "Fhook", 0x0191 , 0 }, + { "Fitacyrillic", 0x0472 , 0 }, + { "Fiveroman", 0x2164 , 0 }, + { "Fmonospace", 0xff26 , 0 }, + { "Fourroman", 0x2163 , 0 }, + { "Fsmall", 0xf766 , 0 }, + { "GBsquare", 0x3387 , 0 }, + { "Gacute", 0x01f4 , 0 }, + { "Gammaafrican", 0x0194 , 0 }, + { "Gangiacoptic", 0x03ea , 0 }, + { "Gcedilla", 0x0122 , 0 }, + { "Gcircle", 0x24bc , 0 }, + { "Gdot", 0x0120 , 0 }, + { "Gecyrillic", 0x0413 , 0 }, + { "Ghadarmenian", 0x0542 , 0 }, + { "Ghemiddlehookcyrillic", 0x0494 , 0 }, + { "Ghestrokecyrillic", 0x0492 , 0 }, + { "Gheupturncyrillic", 0x0490 , 0 }, + { "Ghook", 0x0193 , 0 }, + { "Gimarmenian", 0x0533 , 0 }, + { "Gjecyrillic", 0x0403 , 0 }, + { "Gmacron", 0x1e20 , 0 }, + { "Gmonospace", 0xff27 , 0 }, + { "Grave", 0xf6ce , 0 }, + { "Gravesmall", 0xf760 , 0 }, + { "Gsmall", 0xf767 , 0 }, + { "Gsmallhook", 0x029b , 0 }, + { "Gstroke", 0x01e4 , 0 }, + { "HPsquare", 0x33cb , 0 }, + { "Haabkhasiancyrillic", 0x04a8 , 0 }, + { "Hadescendercyrillic", 0x04b2 , 0 }, + { "Hardsigncyrillic", 0x042a , 0 }, + { "Hbrevebelow", 0x1e2a , 0 }, + { "Hcedilla", 0x1e28 , 0 }, + { "Hcircle", 0x24bd , 0 }, + { "Hdieresis", 0x1e26 , 0 }, + { "Hdotaccent", 0x1e22 , 0 }, + { "Hdotbelow", 0x1e24 , 0 }, + { "Hmonospace", 0xff28 , 0 }, + { "Hoarmenian", 0x0540 , 0 }, + { "Horicoptic", 0x03e8 , 0 }, + { "Hsmall", 0xf768 , 0 }, + { "Hungarumlaut", 0xf6cf , 0 }, + { "Hungarumlautsmall", 0xf6f8 , 0 }, + { "Hzsquare", 0x3390 , 0 }, + { "IAcyrillic", 0x042f , 0 }, + { "IUcyrillic", 0x042e , 0 }, + { "Iacutesmall", 0xf7ed , 0 }, + { "Icaron", 0x01cf , 0 }, + { "Icircle", 0x24be , 0 }, + { "Icircumflexsmall", 0xf7ee , 0 }, + { "Icyrillic", 0x0406 , 0 }, + { "Idblgrave", 0x0208 , 0 }, + { "Idieresisacute", 0x1e2e , 0 }, + { "Idieresiscyrillic", 0x04e4 , 0 }, + { "Idieresissmall", 0xf7ef , 0 }, + { "Idot", 0x0130 , 0 }, + { "Idotbelow", 0x1eca , 0 }, + { "Iebrevecyrillic", 0x04d6 , 0 }, + { "Iecyrillic", 0x0415 , 0 }, + { "Igravesmall", 0xf7ec , 0 }, + { "Ihookabove", 0x1ec8 , 0 }, + { "Iicyrillic", 0x0418 , 0 }, + { "Iinvertedbreve", 0x020a , 0 }, + { "Iishortcyrillic", 0x0419 , 0 }, + { "Imacroncyrillic", 0x04e2 , 0 }, + { "Imonospace", 0xff29 , 0 }, + { "Iniarmenian", 0x053b , 0 }, + { "Iocyrillic", 0x0401 , 0 }, + { "Iotaafrican", 0x0196 , 0 }, + { "Ismall", 0xf769 , 0 }, + { "Istroke", 0x0197 , 0 }, + { "Itildebelow", 0x1e2c , 0 }, + { "Izhitsacyrillic", 0x0474 , 0 }, + { "Izhitsadblgravecyrillic", 0x0476 , 0 }, + { "Jaarmenian", 0x0541 , 0 }, + { "Jcircle", 0x24bf , 0 }, + { "Jecyrillic", 0x0408 , 0 }, + { "Jheharmenian", 0x054b , 0 }, + { "Jmonospace", 0xff2a , 0 }, + { "Jsmall", 0xf76a , 0 }, + { "KBsquare", 0x3385 , 0 }, + { "KKsquare", 0x33cd , 0 }, + { "Kabashkircyrillic", 0x04a0 , 0 }, + { "Kacute", 0x1e30 , 0 }, + { "Kacyrillic", 0x041a , 0 }, + { "Kadescendercyrillic", 0x049a , 0 }, + { "Kahookcyrillic", 0x04c3 , 0 }, + { "Kastrokecyrillic", 0x049e , 0 }, + { "Kaverticalstrokecyrillic", 0x049c , 0 }, + { "Kcaron", 0x01e8 , 0 }, + { "Kcedilla", 0x0136 , 0 }, + { "Kcircle", 0x24c0 , 0 }, + { "Kdotbelow", 0x1e32 , 0 }, + { "Keharmenian", 0x0554 , 0 }, + { "Kenarmenian", 0x053f , 0 }, + { "Khacyrillic", 0x0425 , 0 }, + { "Kheicoptic", 0x03e6 , 0 }, + { "Khook", 0x0198 , 0 }, + { "Kjecyrillic", 0x040c , 0 }, + { "Klinebelow", 0x1e34 , 0 }, + { "Kmonospace", 0xff2b , 0 }, + { "Koppacyrillic", 0x0480 , 0 }, + { "Koppagreek", 0x03de , 0 }, + { "Ksicyrillic", 0x046e , 0 }, + { "Ksmall", 0xf76b , 0 }, + { "LJ", 0x01c7 , 0 }, + { "LL", 0xf6bf , 0 }, + { "Lcedilla", 0x013b , 0 }, + { "Lcircle", 0x24c1 , 0 }, + { "Lcircumflexbelow", 0x1e3c , 0 }, + { "Ldotaccent", 0x013f , 0 }, + { "Ldotbelow", 0x1e36 , 0 }, + { "Ldotbelowmacron", 0x1e38 , 0 }, + { "Liwnarmenian", 0x053c , 0 }, + { "Lj", 0x01c8 , 0 }, + { "Ljecyrillic", 0x0409 , 0 }, + { "Llinebelow", 0x1e3a , 0 }, + { "Lmonospace", 0xff2c , 0 }, + { "Lslashsmall", 0xf6f9 , 0 }, + { "Lsmall", 0xf76c , 0 }, + { "MBsquare", 0x3386 , 0 }, + { "Macron", 0xf6d0 , 0 }, + { "Macronsmall", 0xf7af , 0 }, + { "Macute", 0x1e3e , 0 }, + { "Mcircle", 0x24c2 , 0 }, + { "Mdotaccent", 0x1e40 , 0 }, + { "Mdotbelow", 0x1e42 , 0 }, + { "Menarmenian", 0x0544 , 0 }, + { "Mmonospace", 0xff2d , 0 }, + { "Msmall", 0xf76d , 0 }, + { "Mturned", 0x019c , 0 }, + { "NJ", 0x01ca , 0 }, + { "Ncedilla", 0x0145 , 0 }, + { "Ncircle", 0x24c3 , 0 }, + { "Ncircumflexbelow", 0x1e4a , 0 }, + { "Ndotaccent", 0x1e44 , 0 }, + { "Ndotbelow", 0x1e46 , 0 }, + { "Nhookleft", 0x019d , 0 }, + { "Nineroman", 0x2168 , 0 }, + { "Nj", 0x01cb , 0 }, + { "Njecyrillic", 0x040a , 0 }, + { "Nlinebelow", 0x1e48 , 0 }, + { "Nmonospace", 0xff2e , 0 }, + { "Nowarmenian", 0x0546 , 0 }, + { "Nsmall", 0xf76e , 0 }, + { "Ntildesmall", 0xf7f1 , 0 }, + { "OEsmall", 0xf6fa , 0 }, + { "Oacutesmall", 0xf7f3 , 0 }, + { "Obarredcyrillic", 0x04e8 , 0 }, + { "Obarreddieresiscyrillic", 0x04ea , 0 }, + { "Ocaron", 0x01d1 , 0 }, + { "Ocenteredtilde", 0x019f , 0 }, + { "Ocircle", 0x24c4 , 0 }, + { "Ocircumflexacute", 0x1ed0 , 0 }, + { "Ocircumflexdotbelow", 0x1ed8 , 0 }, + { "Ocircumflexgrave", 0x1ed2 , 0 }, + { "Ocircumflexhookabove", 0x1ed4 , 0 }, + { "Ocircumflexsmall", 0xf7f4 , 0 }, + { "Ocircumflextilde", 0x1ed6 , 0 }, + { "Ocyrillic", 0x041e , 0 }, + { "Odblacute", 0x0150 , 0 }, + { "Odblgrave", 0x020c , 0 }, + { "Odieresiscyrillic", 0x04e6 , 0 }, + { "Odieresissmall", 0xf7f6 , 0 }, + { "Odotbelow", 0x1ecc , 0 }, + { "Ogoneksmall", 0xf6fb , 0 }, + { "Ogravesmall", 0xf7f2 , 0 }, + { "Oharmenian", 0x0555 , 0 }, + { "Ohm", 0x2126 , 0 }, + { "Ohookabove", 0x1ece , 0 }, + { "Ohornacute", 0x1eda , 0 }, + { "Ohorndotbelow", 0x1ee2 , 0 }, + { "Ohorngrave", 0x1edc , 0 }, + { "Ohornhookabove", 0x1ede , 0 }, + { "Ohorntilde", 0x1ee0 , 0 }, + { "Oi", 0x01a2 , 0 }, + { "Oinvertedbreve", 0x020e , 0 }, + { "Omacronacute", 0x1e52 , 0 }, + { "Omacrongrave", 0x1e50 , 0 }, + { "Omegacyrillic", 0x0460 , 0 }, + { "Omegagreek", 0x03a9 , 0 }, + { "Omegaroundcyrillic", 0x047a , 0 }, + { "Omegatitlocyrillic", 0x047c , 0 }, + { "Omonospace", 0xff2f , 0 }, + { "Oneroman", 0x2160 , 0 }, + { "Oogonek", 0x01ea , 0 }, + { "Oogonekmacron", 0x01ec , 0 }, + { "Oopen", 0x0186 , 0 }, + { "Oslashsmall", 0xf7f8 , 0 }, + { "Osmall", 0xf76f , 0 }, + { "Ostrokeacute", 0x01fe , 0 }, + { "Otcyrillic", 0x047e , 0 }, + { "Otildeacute", 0x1e4c , 0 }, + { "Otildedieresis", 0x1e4e , 0 }, + { "Otildesmall", 0xf7f5 , 0 }, + { "Pacute", 0x1e54 , 0 }, + { "Pcircle", 0x24c5 , 0 }, + { "Pdotaccent", 0x1e56 , 0 }, + { "Pecyrillic", 0x041f , 0 }, + { "Peharmenian", 0x054a , 0 }, + { "Pemiddlehookcyrillic", 0x04a6 , 0 }, + { "Phook", 0x01a4 , 0 }, + { "Piwrarmenian", 0x0553 , 0 }, + { "Pmonospace", 0xff30 , 0 }, + { "Psicyrillic", 0x0470 , 0 }, + { "Psmall", 0xf770 , 0 }, + { "Qcircle", 0x24c6 , 0 }, + { "Qmonospace", 0xff31 , 0 }, + { "Qsmall", 0xf771 , 0 }, + { "Raarmenian", 0x054c , 0 }, + { "Rcedilla", 0x0156 , 0 }, + { "Rcircle", 0x24c7 , 0 }, + { "Rdblgrave", 0x0210 , 0 }, + { "Rdotaccent", 0x1e58 , 0 }, + { "Rdotbelow", 0x1e5a , 0 }, + { "Rdotbelowmacron", 0x1e5c , 0 }, + { "Reharmenian", 0x0550 , 0 }, + { "Ringsmall", 0xf6fc , 0 }, + { "Rinvertedbreve", 0x0212 , 0 }, + { "Rlinebelow", 0x1e5e , 0 }, + { "Rmonospace", 0xff32 , 0 }, + { "Rsmall", 0xf772 , 0 }, + { "Rsmallinverted", 0x0281 , 0 }, + { "Rsmallinvertedsuperior", 0x02b6 , 0 }, + { "Sacutedotaccent", 0x1e64 , 0 }, + { "Sampigreek", 0x03e0 , 0 }, + { "Scarondotaccent", 0x1e66 , 0 }, + { "Scaronsmall", 0xf6fd , 0 }, + { "Schwa", 0x018f , 0 }, + { "Schwacyrillic", 0x04d8 , 0 }, + { "Schwadieresiscyrillic", 0x04da , 0 }, + { "Scircle", 0x24c8 , 0 }, + { "Sdotaccent", 0x1e60 , 0 }, + { "Sdotbelow", 0x1e62 , 0 }, + { "Sdotbelowdotaccent", 0x1e68 , 0 }, + { "Seharmenian", 0x054d , 0 }, + { "Sevenroman", 0x2166 , 0 }, + { "Shaarmenian", 0x0547 , 0 }, + { "Shacyrillic", 0x0428 , 0 }, + { "Shchacyrillic", 0x0429 , 0 }, + { "Sheicoptic", 0x03e2 , 0 }, + { "Shhacyrillic", 0x04ba , 0 }, + { "Shimacoptic", 0x03ec , 0 }, + { "Sixroman", 0x2165 , 0 }, + { "Smonospace", 0xff33 , 0 }, + { "Softsigncyrillic", 0x042c , 0 }, + { "Ssmall", 0xf773 , 0 }, + { "Stigmagreek", 0x03da , 0 }, + { "Tcedilla", 0x0162 , 0 }, + { "Tcircle", 0x24c9 , 0 }, + { "Tcircumflexbelow", 0x1e70 , 0 }, + { "Tdotaccent", 0x1e6a , 0 }, + { "Tdotbelow", 0x1e6c , 0 }, + { "Tecyrillic", 0x0422 , 0 }, + { "Tedescendercyrillic", 0x04ac , 0 }, + { "Tenroman", 0x2169 , 0 }, + { "Tetsecyrillic", 0x04b4 , 0 }, + { "Thook", 0x01ac , 0 }, + { "Thornsmall", 0xf7fe , 0 }, + { "Threeroman", 0x2162 , 0 }, + { "Tildesmall", 0xf6fe , 0 }, + { "Tiwnarmenian", 0x054f , 0 }, + { "Tlinebelow", 0x1e6e , 0 }, + { "Tmonospace", 0xff34 , 0 }, + { "Toarmenian", 0x0539 , 0 }, + { "Tonefive", 0x01bc , 0 }, + { "Tonesix", 0x0184 , 0 }, + { "Tonetwo", 0x01a7 , 0 }, + { "Tretroflexhook", 0x01ae , 0 }, + { "Tsecyrillic", 0x0426 , 0 }, + { "Tshecyrillic", 0x040b , 0 }, + { "Tsmall", 0xf774 , 0 }, + { "Twelveroman", 0x216b , 0 }, + { "Tworoman", 0x2161 , 0 }, + { "Uacutesmall", 0xf7fa , 0 }, + { "Ucaron", 0x01d3 , 0 }, + { "Ucircle", 0x24ca , 0 }, + { "Ucircumflexbelow", 0x1e76 , 0 }, + { "Ucircumflexsmall", 0xf7fb , 0 }, + { "Ucyrillic", 0x0423 , 0 }, + { "Udblacute", 0x0170 , 0 }, + { "Udblgrave", 0x0214 , 0 }, + { "Udieresisacute", 0x01d7 , 0 }, + { "Udieresisbelow", 0x1e72 , 0 }, + { "Udieresiscaron", 0x01d9 , 0 }, + { "Udieresiscyrillic", 0x04f0 , 0 }, + { "Udieresisgrave", 0x01db , 0 }, + { "Udieresismacron", 0x01d5 , 0 }, + { "Udieresissmall", 0xf7fc , 0 }, + { "Udotbelow", 0x1ee4 , 0 }, + { "Ugravesmall", 0xf7f9 , 0 }, + { "Uhookabove", 0x1ee6 , 0 }, + { "Uhornacute", 0x1ee8 , 0 }, + { "Uhorndotbelow", 0x1ef0 , 0 }, + { "Uhorngrave", 0x1eea , 0 }, + { "Uhornhookabove", 0x1eec , 0 }, + { "Uhorntilde", 0x1eee , 0 }, + { "Uhungarumlautcyrillic", 0x04f2 , 0 }, + { "Uinvertedbreve", 0x0216 , 0 }, + { "Ukcyrillic", 0x0478 , 0 }, + { "Umacroncyrillic", 0x04ee , 0 }, + { "Umacrondieresis", 0x1e7a , 0 }, + { "Umonospace", 0xff35 , 0 }, + { "Upsilonacutehooksymbolgreek", 0x03d3 , 0 }, + { "Upsilonafrican", 0x01b1 , 0 }, + { "Upsilondieresishooksymbolgreek", 0x03d4 , 0 }, + { "Upsilonhooksymbol", 0x03d2 , 0 }, + { "Ushortcyrillic", 0x040e , 0 }, + { "Usmall", 0xf775 , 0 }, + { "Ustraightcyrillic", 0x04ae , 0 }, + { "Ustraightstrokecyrillic", 0x04b0 , 0 }, + { "Utildeacute", 0x1e78 , 0 }, + { "Utildebelow", 0x1e74 , 0 }, + { "Vcircle", 0x24cb , 0 }, + { "Vdotbelow", 0x1e7e , 0 }, + { "Vecyrillic", 0x0412 , 0 }, + { "Vewarmenian", 0x054e , 0 }, + { "Vhook", 0x01b2 , 0 }, + { "Vmonospace", 0xff36 , 0 }, + { "Voarmenian", 0x0548 , 0 }, + { "Vsmall", 0xf776 , 0 }, + { "Vtilde", 0x1e7c , 0 }, + { "Wcircle", 0x24cc , 0 }, + { "Wdotaccent", 0x1e86 , 0 }, + { "Wdotbelow", 0x1e88 , 0 }, + { "Wmonospace", 0xff37 , 0 }, + { "Wsmall", 0xf777 , 0 }, + { "Xcircle", 0x24cd , 0 }, + { "Xdieresis", 0x1e8c , 0 }, + { "Xdotaccent", 0x1e8a , 0 }, + { "Xeharmenian", 0x053d , 0 }, + { "Xmonospace", 0xff38 , 0 }, + { "Xsmall", 0xf778 , 0 }, + { "Yacutesmall", 0xf7fd , 0 }, + { "Yatcyrillic", 0x0462 , 0 }, + { "Ycircle", 0x24ce , 0 }, + { "Ydieresissmall", 0xf7ff , 0 }, + { "Ydotaccent", 0x1e8e , 0 }, + { "Ydotbelow", 0x1ef4 , 0 }, + { "Yericyrillic", 0x042b , 0 }, + { "Yerudieresiscyrillic", 0x04f8 , 0 }, + { "Yhook", 0x01b3 , 0 }, + { "Yhookabove", 0x1ef6 , 0 }, + { "Yiarmenian", 0x0545 , 0 }, + { "Yicyrillic", 0x0407 , 0 }, + { "Yiwnarmenian", 0x0552 , 0 }, + { "Ymonospace", 0xff39 , 0 }, + { "Ysmall", 0xf779 , 0 }, + { "Ytilde", 0x1ef8 , 0 }, + { "Yusbigcyrillic", 0x046a , 0 }, + { "Yusbigiotifiedcyrillic", 0x046c , 0 }, + { "Yuslittlecyrillic", 0x0466 , 0 }, + { "Yuslittleiotifiedcyrillic", 0x0468 , 0 }, + { "Zaarmenian", 0x0536 , 0 }, + { "Zcaronsmall", 0xf6ff , 0 }, + { "Zcircle", 0x24cf , 0 }, + { "Zcircumflex", 0x1e90 , 0 }, + { "Zdot", 0x017b , 0 }, + { "Zdotbelow", 0x1e92 , 0 }, + { "Zecyrillic", 0x0417 , 0 }, + { "Zedescendercyrillic", 0x0498 , 0 }, + { "Zedieresiscyrillic", 0x04de , 0 }, + { "Zhearmenian", 0x053a , 0 }, + { "Zhebrevecyrillic", 0x04c1 , 0 }, + { "Zhecyrillic", 0x0416 , 0 }, + { "Zhedescendercyrillic", 0x0496 , 0 }, + { "Zhedieresiscyrillic", 0x04dc , 0 }, + { "Zlinebelow", 0x1e94 , 0 }, + { "Zmonospace", 0xff3a , 0 }, + { "Zsmall", 0xf77a , 0 }, + { "Zstroke", 0x01b5 , 0 }, + { "aabengali", 0x0986 , 0 }, + { "aadeva", 0x0906 , 0 }, + { "aagujarati", 0x0a86 , 0 }, + { "aagurmukhi", 0x0a06 , 0 }, + { "aamatragurmukhi", 0x0a3e , 0 }, + { "aarusquare", 0x3303 , 0 }, + { "aavowelsignbengali", 0x09be , 0 }, + { "aavowelsigndeva", 0x093e , 0 }, + { "aavowelsigngujarati", 0x0abe , 0 }, + { "abbreviationmarkarmenian", 0x055f , 0 }, + { "abbreviationsigndeva", 0x0970 , 0 }, + { "abengali", 0x0985 , 0 }, + { "abopomofo", 0x311a , 0 }, + { "abreveacute", 0x1eaf , 0 }, + { "abrevecyrillic", 0x04d1 , 0 }, + { "abrevedotbelow", 0x1eb7 , 0 }, + { "abrevegrave", 0x1eb1 , 0 }, + { "abrevehookabove", 0x1eb3 , 0 }, + { "abrevetilde", 0x1eb5 , 0 }, + { "acaron", 0x01ce , 0 }, + { "acircle", 0x24d0 , 0 }, + { "acircumflexacute", 0x1ea5 , 0 }, + { "acircumflexdotbelow", 0x1ead , 0 }, + { "acircumflexgrave", 0x1ea7 , 0 }, + { "acircumflexhookabove", 0x1ea9 , 0 }, + { "acircumflextilde", 0x1eab , 0 }, + { "acutebelowcmb", 0x0317 , 0 }, + { "acutecmb", 0x0301 , 0 }, + { "acutedeva", 0x0954 , 0 }, + { "acutelowmod", 0x02cf , 0 }, + { "acutetonecmb", 0x0341 , 0 }, + { "acyrillic", 0x0430 , 0 }, + { "adblgrave", 0x0201 , 0 }, + { "addakgurmukhi", 0x0a71 , 0 }, + { "adeva", 0x0905 , 0 }, + { "adieresiscyrillic", 0x04d3 , 0 }, + { "adieresismacron", 0x01df , 0 }, + { "adotbelow", 0x1ea1 , 0 }, + { "adotmacron", 0x01e1 , 0 }, + { "aekorean", 0x3150 , 0 }, + { "aemacron", 0x01e3 , 0 }, + { "afii08941", 0x20a4 , 0 }, + { "afii10063", 0xf6c4 , 0 }, + { "afii10064", 0xf6c5 , 0 }, + { "afii10192", 0xf6c6 , 0 }, + { "afii10831", 0xf6c7 , 0 }, + { "afii10832", 0xf6c8 , 0 }, + { "afii57694", 0xfb2a , 0 }, + { "afii57695", 0xfb2b , 0 }, + { "afii57700", 0xfb4b , 0 }, + { "afii57705", 0xfb1f , 0 }, + { "afii57723", 0xfb35 , 0 }, + { "agujarati", 0x0a85 , 0 }, + { "agurmukhi", 0x0a05 , 0 }, + { "ahiragana", 0x3042 , 0 }, + { "ahookabove", 0x1ea3 , 0 }, + { "aibengali", 0x0990 , 0 }, + { "aibopomofo", 0x311e , 0 }, + { "aideva", 0x0910 , 0 }, + { "aiecyrillic", 0x04d5 , 0 }, + { "aigujarati", 0x0a90 , 0 }, + { "aigurmukhi", 0x0a10 , 0 }, + { "aimatragurmukhi", 0x0a48 , 0 }, + { "ainarabic", 0x0639 , 0 }, + { "ainfinalarabic", 0xfeca , 0 }, + { "aininitialarabic", 0xfecb , 0 }, + { "ainmedialarabic", 0xfecc , 0 }, + { "ainvertedbreve", 0x0203 , 0 }, + { "aivowelsignbengali", 0x09c8 , 0 }, + { "aivowelsigndeva", 0x0948 , 0 }, + { "aivowelsigngujarati", 0x0ac8 , 0 }, + { "akatakana", 0x30a2 , 0 }, + { "akatakanahalfwidth", 0xff71 , 0 }, + { "akorean", 0x314f , 0 }, + { "alef", 0x05d0 , 0 }, + { "alefarabic", 0x0627 , 0 }, + { "alefdageshhebrew", 0xfb30 , 0 }, + { "aleffinalarabic", 0xfe8e , 0 }, + { "alefhamzaabovearabic", 0x0623 , 0 }, + { "alefhamzaabovefinalarabic", 0xfe84 , 0 }, + { "alefhamzabelowarabic", 0x0625 , 0 }, + { "alefhamzabelowfinalarabic", 0xfe88 , 0 }, + { "alefhebrew", 0x05d0 , 0 }, + { "aleflamedhebrew", 0xfb4f , 0 }, + { "alefmaddaabovearabic", 0x0622 , 0 }, + { "alefmaddaabovefinalarabic", 0xfe82 , 0 }, + { "alefmaksuraarabic", 0x0649 , 0 }, + { "alefmaksurafinalarabic", 0xfef0 , 0 }, + { "alefmaksurainitialarabic", 0xfef3 , 0 }, + { "alefmaksuramedialarabic", 0xfef4 , 0 }, + { "alefpatahhebrew", 0xfb2e , 0 }, + { "alefqamatshebrew", 0xfb2f , 0 }, + { "allequal", 0x224c , 0 }, + { "amonospace", 0xff41 , 0 }, + { "ampersandmonospace", 0xff06 , 0 }, + { "ampersandsmall", 0xf726 , 0 }, + { "amsquare", 0x33c2 , 0 }, + { "anbopomofo", 0x3122 , 0 }, + { "angbopomofo", 0x3124 , 0 }, + { "angkhankhuthai", 0x0e5a , 0 }, + { "anglebracketleft", 0x3008 , 0 }, + { "anglebracketleftvertical", 0xfe3f , 0 }, + { "anglebracketright", 0x3009 , 0 }, + { "anglebracketrightvertical", 0xfe40 , 0 }, + { "angstrom", 0x212b , 0 }, + { "anudattadeva", 0x0952 , 0 }, + { "anusvarabengali", 0x0982 , 0 }, + { "anusvaradeva", 0x0902 , 0 }, + { "anusvaragujarati", 0x0a82 , 0 }, + { "apaatosquare", 0x3300 , 0 }, + { "aparen", 0x249c , 0 }, + { "apostrophearmenian", 0x055a , 0 }, + { "apostrophemod", 0x02bc , 0 }, + { "apple", 0xf8ff , 0 }, + { "approaches", 0x2250 , 0 }, + { "approxequalorimage", 0x2252 , 0 }, + { "approximatelyequal", 0x2245 , 0 }, + { "araeaekorean", 0x318e , 0 }, + { "araeakorean", 0x318d , 0 }, + { "arc", 0x2312 , 0 }, + { "arighthalfring", 0x1e9a , 0 }, + { "aringbelow", 0x1e01 , 0 }, + { "arrowdashdown", 0x21e3 , 0 }, + { "arrowdashleft", 0x21e0 , 0 }, + { "arrowdashright", 0x21e2 , 0 }, + { "arrowdashup", 0x21e1 , 0 }, + { "arrowdownleft", 0x2199 , 0 }, + { "arrowdownright", 0x2198 , 0 }, + { "arrowdownwhite", 0x21e9 , 0 }, + { "arrowheaddownmod", 0x02c5 , 0 }, + { "arrowheadleftmod", 0x02c2 , 0 }, + { "arrowheadrightmod", 0x02c3 , 0 }, + { "arrowheadupmod", 0x02c4 , 0 }, + { "arrowhorizex", 0xf8e7 , 0 }, + { "arrowleftdbl", 0x21d0 , 0 }, + { "arrowleftdblstroke", 0x21cd , 0 }, + { "arrowleftoverright", 0x21c6 , 0 }, + { "arrowleftwhite", 0x21e6 , 0 }, + { "arrowrightdblstroke", 0x21cf , 0 }, + { "arrowrightheavy", 0x279e , 0 }, + { "arrowrightoverleft", 0x21c4 , 0 }, + { "arrowrightwhite", 0x21e8 , 0 }, + { "arrowtableft", 0x21e4 , 0 }, + { "arrowtabright", 0x21e5 , 0 }, + { "arrowupdownbase", 0x21a8 , 0 }, + { "arrowupleft", 0x2196 , 0 }, + { "arrowupleftofdown", 0x21c5 , 0 }, + { "arrowupright", 0x2197 , 0 }, + { "arrowupwhite", 0x21e7 , 0 }, + { "arrowvertex", 0xf8e6 , 0 }, + { "asciicircummonospace", 0xff3e , 0 }, + { "asciitildemonospace", 0xff5e , 0 }, + { "ascript", 0x0251 , 0 }, + { "ascriptturned", 0x0252 , 0 }, + { "asmallhiragana", 0x3041 , 0 }, + { "asmallkatakana", 0x30a1 , 0 }, + { "asmallkatakanahalfwidth", 0xff67 , 0 }, + { "asteriskaltonearabic", 0x066d , 0 }, + { "asteriskarabic", 0x066d , 0 }, + { "asteriskmonospace", 0xff0a , 0 }, + { "asterisksmall", 0xfe61 , 0 }, + { "asterism", 0x2042 , 0 }, + { "asuperior", 0xf6e9 , 0 }, + { "asymptoticallyequal", 0x2243 , 0 }, + { "atmonospace", 0xff20 , 0 }, + { "atsmall", 0xfe6b , 0 }, + { "aturned", 0x0250 , 0 }, + { "aubengali", 0x0994 , 0 }, + { "aubopomofo", 0x3120 , 0 }, + { "audeva", 0x0914 , 0 }, + { "augujarati", 0x0a94 , 0 }, + { "augurmukhi", 0x0a14 , 0 }, + { "aulengthmarkbengali", 0x09d7 , 0 }, + { "aumatragurmukhi", 0x0a4c , 0 }, + { "auvowelsignbengali", 0x09cc , 0 }, + { "auvowelsigndeva", 0x094c , 0 }, + { "auvowelsigngujarati", 0x0acc , 0 }, + { "avagrahadeva", 0x093d , 0 }, + { "aybarmenian", 0x0561 , 0 }, + { "ayin", 0x05e2 , 0 }, + { "ayinaltonehebrew", 0xfb20 , 0 }, + { "ayinhebrew", 0x05e2 , 0 }, + { "babengali", 0x09ac , 0 }, + { "backslashmonospace", 0xff3c , 0 }, + { "badeva", 0x092c , 0 }, + { "bagujarati", 0x0aac , 0 }, + { "bagurmukhi", 0x0a2c , 0 }, + { "bahiragana", 0x3070 , 0 }, + { "bahtthai", 0x0e3f , 0 }, + { "bakatakana", 0x30d0 , 0 }, + { "barmonospace", 0xff5c , 0 }, + { "bbopomofo", 0x3105 , 0 }, + { "bcircle", 0x24d1 , 0 }, + { "bdotaccent", 0x1e03 , 0 }, + { "bdotbelow", 0x1e05 , 0 }, + { "beamedsixteenthnotes", 0x266c , 0 }, + { "because", 0x2235 , 0 }, + { "becyrillic", 0x0431 , 0 }, + { "beharabic", 0x0628 , 0 }, + { "behfinalarabic", 0xfe90 , 0 }, + { "behinitialarabic", 0xfe91 , 0 }, + { "behiragana", 0x3079 , 0 }, + { "behmedialarabic", 0xfe92 , 0 }, + { "behmeeminitialarabic", 0xfc9f , 0 }, + { "behmeemisolatedarabic", 0xfc08 , 0 }, + { "behnoonfinalarabic", 0xfc6d , 0 }, + { "bekatakana", 0x30d9 , 0 }, + { "benarmenian", 0x0562 , 0 }, + { "bet", 0x05d1 , 0 }, + { "betasymbolgreek", 0x03d0 , 0 }, + { "betdagesh", 0xfb31 , 0 }, + { "betdageshhebrew", 0xfb31 , 0 }, + { "bethebrew", 0x05d1 , 0 }, + { "betrafehebrew", 0xfb4c , 0 }, + { "bhabengali", 0x09ad , 0 }, + { "bhadeva", 0x092d , 0 }, + { "bhagujarati", 0x0aad , 0 }, + { "bhagurmukhi", 0x0a2d , 0 }, + { "bhook", 0x0253 , 0 }, + { "bihiragana", 0x3073 , 0 }, + { "bikatakana", 0x30d3 , 0 }, + { "bilabialclick", 0x0298 , 0 }, + { "bindigurmukhi", 0x0a02 , 0 }, + { "birusquare", 0x3331 , 0 }, + { "blackcircle", 0x25cf , 0 }, + { "blackdiamond", 0x25c6 , 0 }, + { "blackdownpointingtriangle", 0x25bc , 0 }, + { "blackleftpointingpointer", 0x25c4 , 0 }, + { "blackleftpointingtriangle", 0x25c0 , 0 }, + { "blacklenticularbracketleft", 0x3010 , 0 }, + { "blacklenticularbracketleftvertical", 0xfe3b , 0 }, + { "blacklenticularbracketright", 0x3011 , 0 }, + { "blacklenticularbracketrightvertical", 0xfe3c , 0 }, + { "blacklowerlefttriangle", 0x25e3 , 0 }, + { "blacklowerrighttriangle", 0x25e2 , 0 }, + { "blackrectangle", 0x25ac , 0 }, + { "blackrightpointingpointer", 0x25ba , 0 }, + { "blackrightpointingtriangle", 0x25b6 , 0 }, + { "blacksmallsquare", 0x25aa , 0 }, + { "blacksmilingface", 0x263b , 0 }, + { "blacksquare", 0x25a0 , 0 }, + { "blackstar", 0x2605 , 0 }, + { "blackupperlefttriangle", 0x25e4 , 0 }, + { "blackupperrighttriangle", 0x25e5 , 0 }, + { "blackuppointingsmalltriangle", 0x25b4 , 0 }, + { "blackuppointingtriangle", 0x25b2 , 0 }, + { "blank", 0x2423 , 0 }, + { "blinebelow", 0x1e07 , 0 }, + { "bmonospace", 0xff42 , 0 }, + { "bobaimaithai", 0x0e1a , 0 }, + { "bohiragana", 0x307c , 0 }, + { "bokatakana", 0x30dc , 0 }, + { "bparen", 0x249d , 0 }, + { "bqsquare", 0x33c3 , 0 }, + { "braceex", 0xf8f4 , 0 }, + { "braceleftbt", 0xf8f3 , 0 }, + { "braceleftmid", 0xf8f2 , 0 }, + { "braceleftmonospace", 0xff5b , 0 }, + { "braceleftsmall", 0xfe5b , 0 }, + { "bracelefttp", 0xf8f1 , 0 }, + { "braceleftvertical", 0xfe37 , 0 }, + { "bracerightbt", 0xf8fe , 0 }, + { "bracerightmid", 0xf8fd , 0 }, + { "bracerightmonospace", 0xff5d , 0 }, + { "bracerightsmall", 0xfe5c , 0 }, + { "bracerighttp", 0xf8fc , 0 }, + { "bracerightvertical", 0xfe38 , 0 }, + { "bracketleftbt", 0xf8f0 , 0 }, + { "bracketleftex", 0xf8ef , 0 }, + { "bracketleftmonospace", 0xff3b , 0 }, + { "bracketlefttp", 0xf8ee , 0 }, + { "bracketrightbt", 0xf8fb , 0 }, + { "bracketrightex", 0xf8fa , 0 }, + { "bracketrightmonospace", 0xff3d , 0 }, + { "bracketrighttp", 0xf8f9 , 0 }, + { "brevebelowcmb", 0x032e , 0 }, + { "brevecmb", 0x0306 , 0 }, + { "breveinvertedbelowcmb", 0x032f , 0 }, + { "breveinvertedcmb", 0x0311 , 0 }, + { "breveinverteddoublecmb", 0x0361 , 0 }, + { "bridgebelowcmb", 0x032a , 0 }, + { "bridgeinvertedbelowcmb", 0x033a , 0 }, + { "bstroke", 0x0180 , 0 }, + { "bsuperior", 0xf6ea , 0 }, + { "btopbar", 0x0183 , 0 }, + { "buhiragana", 0x3076 , 0 }, + { "bukatakana", 0x30d6 , 0 }, + { "bulletinverse", 0x25d8 , 0 }, + { "bulletoperator", 0x2219 , 0 }, + { "bullseye", 0x25ce , 0 }, + { "caarmenian", 0x056e , 0 }, + { "cabengali", 0x099a , 0 }, + { "cadeva", 0x091a , 0 }, + { "cagujarati", 0x0a9a , 0 }, + { "cagurmukhi", 0x0a1a , 0 }, + { "calsquare", 0x3388 , 0 }, + { "candrabindubengali", 0x0981 , 0 }, + { "candrabinducmb", 0x0310 , 0 }, + { "candrabindudeva", 0x0901 , 0 }, + { "candrabindugujarati", 0x0a81 , 0 }, + { "capslock", 0x21ea , 0 }, + { "careof", 0x2105 , 0 }, + { "caronbelowcmb", 0x032c , 0 }, + { "caroncmb", 0x030c , 0 }, + { "cbopomofo", 0x3118 , 0 }, + { "ccedillaacute", 0x1e09 , 0 }, + { "ccircle", 0x24d2 , 0 }, + { "ccurl", 0x0255 , 0 }, + { "cdot", 0x010b , 0 }, + { "cdsquare", 0x33c5 , 0 }, + { "cedillacmb", 0x0327 , 0 }, + { "centigrade", 0x2103 , 0 }, + { "centinferior", 0xf6df , 0 }, + { "centmonospace", 0xffe0 , 0 }, + { "centoldstyle", 0xf7a2 , 0 }, + { "centsuperior", 0xf6e0 , 0 }, + { "chaarmenian", 0x0579 , 0 }, + { "chabengali", 0x099b , 0 }, + { "chadeva", 0x091b , 0 }, + { "chagujarati", 0x0a9b , 0 }, + { "chagurmukhi", 0x0a1b , 0 }, + { "chbopomofo", 0x3114 , 0 }, + { "cheabkhasiancyrillic", 0x04bd , 0 }, + { "checkmark", 0x2713 , 0 }, + { "checyrillic", 0x0447 , 0 }, + { "chedescenderabkhasiancyrillic", 0x04bf , 0 }, + { "chedescendercyrillic", 0x04b7 , 0 }, + { "chedieresiscyrillic", 0x04f5 , 0 }, + { "cheharmenian", 0x0573 , 0 }, + { "chekhakassiancyrillic", 0x04cc , 0 }, + { "cheverticalstrokecyrillic", 0x04b9 , 0 }, + { "chieuchacirclekorean", 0x3277 , 0 }, + { "chieuchaparenkorean", 0x3217 , 0 }, + { "chieuchcirclekorean", 0x3269 , 0 }, + { "chieuchkorean", 0x314a , 0 }, + { "chieuchparenkorean", 0x3209 , 0 }, + { "chochangthai", 0x0e0a , 0 }, + { "chochanthai", 0x0e08 , 0 }, + { "chochingthai", 0x0e09 , 0 }, + { "chochoethai", 0x0e0c , 0 }, + { "chook", 0x0188 , 0 }, + { "cieucacirclekorean", 0x3276 , 0 }, + { "cieucaparenkorean", 0x3216 , 0 }, + { "cieuccirclekorean", 0x3268 , 0 }, + { "cieuckorean", 0x3148 , 0 }, + { "cieucparenkorean", 0x3208 , 0 }, + { "cieucuparenkorean", 0x321c , 0 }, + { "circleot", 0x2299 , 0 }, /* Typo in Adobe's glyphlist */ + { "circledot", 0x2299 , 0 }, /* But same typo exists in acrobat */ + { "circlepostalmark", 0x3036 , 0 }, + { "circlewithlefthalfblack", 0x25d0 , 0 }, + { "circlewithrighthalfblack", 0x25d1 , 0 }, + { "circumflexbelowcmb", 0x032d , 0 }, + { "circumflexcmb", 0x0302 , 0 }, + { "clear", 0x2327 , 0 }, + { "clickalveolar", 0x01c2 , 0 }, + { "clickdental", 0x01c0 , 0 }, + { "clicklateral", 0x01c1 , 0 }, + { "clickretroflex", 0x01c3 , 0 }, + { "clubsuitblack", 0x2663 , 0 }, + { "clubsuitwhite", 0x2667 , 0 }, + { "cmcubedsquare", 0x33a4 , 0 }, + { "cmonospace", 0xff43 , 0 }, + { "cmsquaredsquare", 0x33a0 , 0 }, + { "coarmenian", 0x0581 , 0 }, + { "colonmonospace", 0xff1a , 0 }, + { "colonsign", 0x20a1 , 0 }, + { "colonsmall", 0xfe55 , 0 }, + { "colontriangularhalfmod", 0x02d1 , 0 }, + { "colontriangularmod", 0x02d0 , 0 }, + { "commaabovecmb", 0x0313 , 0 }, + { "commaaboverightcmb", 0x0315 , 0 }, + { "commaaccent", 0xf6c3 , 0 }, + { "commaarabic", 0x060c , 0 }, + { "commaarmenian", 0x055d , 0 }, + { "commainferior", 0xf6e1 , 0 }, + { "commamonospace", 0xff0c , 0 }, + { "commareversedabovecmb", 0x0314 , 0 }, + { "commareversedmod", 0x02bd , 0 }, + { "commasmall", 0xfe50 , 0 }, + { "commasuperior", 0xf6e2 , 0 }, + { "commaturnedabovecmb", 0x0312 , 0 }, + { "commaturnedmod", 0x02bb , 0 }, + { "compass", 0x263c , 0 }, + { "contourintegral", 0x222e , 0 }, + { "control", 0x2303 , 0 }, + { "controlACK", 0x0006 , 0 }, + { "controlBEL", 0x0007 , 0 }, + { "controlBS", 0x0008 , 0 }, + { "controlCAN", 0x0018 , 0 }, + { "controlCR", 0x000d , 0 }, + { "controlDC1", 0x0011 , 0 }, + { "controlDC2", 0x0012 , 0 }, + { "controlDC3", 0x0013 , 0 }, + { "controlDC4", 0x0014 , 0 }, + { "controlDEL", 0x007f , 0 }, + { "controlDLE", 0x0010 , 0 }, + { "controlEM", 0x0019 , 0 }, + { "controlENQ", 0x0005 , 0 }, + { "controlEOT", 0x0004 , 0 }, + { "controlESC", 0x001b , 0 }, + { "controlETB", 0x0017 , 0 }, + { "controlETX", 0x0003 , 0 }, + { "controlFF", 0x000c , 0 }, + { "controlFS", 0x001c , 0 }, + { "controlGS", 0x001d , 0 }, + { "controlHT", 0x0009 , 0 }, + { "controlLF", 0x000a , 0 }, + { "controlNAK", 0x0015 , 0 }, + { "controlRS", 0x001e , 0 }, + { "controlSI", 0x000f , 0 }, + { "controlSO", 0x000e , 0 }, + { "controlSOT", 0x0002 , 0 }, + { "controlSTX", 0x0001 , 0 }, + { "controlSUB", 0x001a , 0 }, + { "controlSYN", 0x0016 , 0 }, + { "controlUS", 0x001f , 0 }, + { "controlVT", 0x000b , 0 }, + { "copyrightsans", 0xf8e9 , 0 }, + { "copyrightserif", 0xf6d9 , 0 }, + { "cornerbracketleft", 0x300c , 0 }, + { "cornerbracketlefthalfwidth", 0xff62 , 0 }, + { "cornerbracketleftvertical", 0xfe41 , 0 }, + { "cornerbracketright", 0x300d , 0 }, + { "cornerbracketrighthalfwidth", 0xff63 , 0 }, + { "cornerbracketrightvertical", 0xfe42 , 0 }, + { "corporationsquare", 0x337f , 0 }, + { "cosquare", 0x33c7 , 0 }, + { "coverkgsquare", 0x33c6 , 0 }, + { "cparen", 0x249e , 0 }, + { "cruzeiro", 0x20a2 , 0 }, + { "cstretched", 0x0297 , 0 }, + { "curlyand", 0x22cf , 0 }, + { "curlyor", 0x22ce , 0 }, + { "cyrBreve", 0xf6d1 , 0 }, + { "cyrFlex", 0xf6d2 , 0 }, + { "cyrbreve", 0xf6d4 , 0 }, + { "cyrflex", 0xf6d5 , 0 }, + { "daarmenian", 0x0564 , 0 }, + { "dabengali", 0x09a6 , 0 }, + { "dadarabic", 0x0636 , 0 }, + { "dadeva", 0x0926 , 0 }, + { "dadfinalarabic", 0xfebe , 0 }, + { "dadinitialarabic", 0xfebf , 0 }, + { "dadmedialarabic", 0xfec0 , 0 }, + { "dagesh", 0x05bc , 0 }, + { "dageshhebrew", 0x05bc , 0 }, + { "dagujarati", 0x0aa6 , 0 }, + { "dagurmukhi", 0x0a26 , 0 }, + { "dahiragana", 0x3060 , 0 }, + { "dakatakana", 0x30c0 , 0 }, + { "dalarabic", 0x062f , 0 }, + { "dalet", 0x05d3 , 0 }, + { "daletdagesh", 0xfb33 , 0 }, + { "daletdageshhebrew", 0xfb33 , 0 }, + { "dalethatafpatah", 0x05d3 , 0 }, + { "dalethatafpatahhebrew", 0x05d3 , 0 }, + { "dalethatafsegol", 0x05d3 , 0 }, + { "dalethatafsegolhebrew", 0x05d3 , 0 }, + { "dalethebrew", 0x05d3 , 0 }, + { "dalethiriq", 0x05d3 , 0 }, + { "dalethiriqhebrew", 0x05d3 , 0 }, + { "daletholam", 0x05d3 , 0 }, + { "daletholamhebrew", 0x05d3 , 0 }, + { "daletpatah", 0x05d3 , 0 }, + { "daletpatahhebrew", 0x05d3 , 0 }, + { "daletqamats", 0x05d3 , 0 }, + { "daletqamatshebrew", 0x05d3 , 0 }, + { "daletqubuts", 0x05d3 , 0 }, + { "daletqubutshebrew", 0x05d3 , 0 }, + { "daletsegol", 0x05d3 , 0 }, + { "daletsegolhebrew", 0x05d3 , 0 }, + { "daletsheva", 0x05d3 , 0 }, + { "daletshevahebrew", 0x05d3 , 0 }, + { "dalettsere", 0x05d3 , 0 }, + { "dalettserehebrew", 0x05d3 , 0 }, + { "dalfinalarabic", 0xfeaa , 0 }, + { "dammaarabic", 0x064f , 0 }, + { "dammalowarabic", 0x064f , 0 }, + { "dammatanaltonearabic", 0x064c , 0 }, + { "dammatanarabic", 0x064c , 0 }, + { "danda", 0x0964 , 0 }, + { "dargahebrew", 0x05a7 , 0 }, + { "dargalefthebrew", 0x05a7 , 0 }, + { "dasiapneumatacyrilliccmb", 0x0485 , 0 }, + { "dblGrave", 0xf6d3 , 0 }, + { "dblanglebracketleft", 0x300a , 0 }, + { "dblanglebracketleftvertical", 0xfe3d , 0 }, + { "dblanglebracketright", 0x300b , 0 }, + { "dblanglebracketrightvertical", 0xfe3e , 0 }, + { "dblarchinvertedbelowcmb", 0x032b , 0 }, + { "dblarrowleft", 0x21d4 , 0 }, + { "dblarrowright", 0x21d2 , 0 }, + { "dbldanda", 0x0965 , 0 }, + { "dblgrave", 0xf6d6 , 0 }, + { "dblgravecmb", 0x030f , 0 }, + { "dblintegral", 0x222c , 0 }, + { "dbllowline", 0x2017 , 0 }, + { "dbllowlinecmb", 0x0333 , 0 }, + { "dbloverlinecmb", 0x033f , 0 }, + { "dblprimemod", 0x02ba , 0 }, + { "dblverticalbar", 0x2016 , 0 }, + { "dblverticallineabovecmb", 0x030e , 0 }, + { "dbopomofo", 0x3109 , 0 }, + { "dbsquare", 0x33c8 , 0 }, + { "dcedilla", 0x1e11 , 0 }, + { "dcircle", 0x24d3 , 0 }, + { "dcircumflexbelow", 0x1e13 , 0 }, + { "ddabengali", 0x09a1 , 0 }, + { "ddadeva", 0x0921 , 0 }, + { "ddagujarati", 0x0aa1 , 0 }, + { "ddagurmukhi", 0x0a21 , 0 }, + { "ddalarabic", 0x0688 , 0 }, + { "ddalfinalarabic", 0xfb89 , 0 }, + { "dddhadeva", 0x095c , 0 }, + { "ddhabengali", 0x09a2 , 0 }, + { "ddhadeva", 0x0922 , 0 }, + { "ddhagujarati", 0x0aa2 , 0 }, + { "ddhagurmukhi", 0x0a22 , 0 }, + { "ddotaccent", 0x1e0b , 0 }, + { "ddotbelow", 0x1e0d , 0 }, + { "decimalseparatorarabic", 0x066b , 0 }, + { "decimalseparatorpersian", 0x066b , 0 }, + { "decyrillic", 0x0434 , 0 }, + { "dehihebrew", 0x05ad , 0 }, + { "dehiragana", 0x3067 , 0 }, + { "deicoptic", 0x03ef , 0 }, + { "dekatakana", 0x30c7 , 0 }, + { "deleteleft", 0x232b , 0 }, + { "deleteright", 0x2326 , 0 }, + { "deltaturned", 0x018d , 0 }, + { "denominatorminusonenumeratorbengali", 0x09f8 , 0 }, + { "dezh", 0x02a4 , 0 }, + { "dhabengali", 0x09a7 , 0 }, + { "dhadeva", 0x0927 , 0 }, + { "dhagujarati", 0x0aa7 , 0 }, + { "dhagurmukhi", 0x0a27 , 0 }, + { "dhook", 0x0257 , 0 }, + { "dialytikatonos", 0x0385 , 0 }, + { "dialytikatonoscmb", 0x0344 , 0 }, + { "diamondsuitwhite", 0x2662 , 0 }, + { "dieresisacute", 0xf6d7 , 0 }, + { "dieresisbelowcmb", 0x0324 , 0 }, + { "dieresiscmb", 0x0308 , 0 }, + { "dieresisgrave", 0xf6d8 , 0 }, + { "dihiragana", 0x3062 , 0 }, + { "dikatakana", 0x30c2 , 0 }, + { "dittomark", 0x3003 , 0 }, + { "divides", 0x2223 , 0 }, + { "divisionslash", 0x2215 , 0 }, + { "djecyrillic", 0x0452 , 0 }, + { "dlinebelow", 0x1e0f , 0 }, + { "dlsquare", 0x3397 , 0 }, + { "dmacron", 0x0111 , 0 }, + { "dmonospace", 0xff44 , 0 }, + { "dochadathai", 0x0e0e , 0 }, + { "dodekthai", 0x0e14 , 0 }, + { "dohiragana", 0x3069 , 0 }, + { "dokatakana", 0x30c9 , 0 }, + { "dollarinferior", 0xf6e3 , 0 }, + { "dollarmonospace", 0xff04 , 0 }, + { "dollaroldstyle", 0xf724 , 0 }, + { "dollarsmall", 0xfe69 , 0 }, + { "dollarsuperior", 0xf6e4 , 0 }, + { "dorusquare", 0x3326 , 0 }, + { "dotaccentcmb", 0x0307 , 0 }, + { "dotbelowcmb", 0x0323 , 0 }, + { "dotkatakana", 0x30fb , 0 }, + { "dotlessj", 0x0237 , 0 }, /* !!!! AGL Still says this is 0xf6be */ + { "dotlessjstrokehook", 0x0284 , 0 }, + { "dottedcircle", 0x25cc , 0 }, + { "doubleyodpatah", 0xfb1f , 0 }, + { "doubleyodpatahhebrew", 0xfb1f , 0 }, + { "downtackbelowcmb", 0x031e , 0 }, + { "downtackmod", 0x02d5 , 0 }, + { "dparen", 0x249f , 0 }, + { "dsuperior", 0xf6eb , 0 }, + { "dtail", 0x0256 , 0 }, + { "dtopbar", 0x018c , 0 }, + { "duhiragana", 0x3065 , 0 }, + { "dukatakana", 0x30c5 , 0 }, + { "dz", 0x01f3 , 0 }, + { "dzaltone", 0x02a3 , 0 }, + { "dzcaron", 0x01c6 , 0 }, + { "dzcurl", 0x02a5 , 0 }, + { "dzeabkhasiancyrillic", 0x04e1 , 0 }, + { "dzecyrillic", 0x0455 , 0 }, + { "dzhecyrillic", 0x045f , 0 }, + { "earth", 0x2641 , 0 }, + { "ebengali", 0x098f , 0 }, + { "ebopomofo", 0x311c , 0 }, + { "ecandradeva", 0x090d , 0 }, + { "ecandragujarati", 0x0a8d , 0 }, + { "ecandravowelsigndeva", 0x0945 , 0 }, + { "ecandravowelsigngujarati", 0x0ac5 , 0 }, + { "ecedillabreve", 0x1e1d , 0 }, + { "echarmenian", 0x0565 , 0 }, + { "echyiwnarmenian", 0x0587 , 0 }, + { "ecircle", 0x24d4 , 0 }, + { "ecircumflexacute", 0x1ebf , 0 }, + { "ecircumflexbelow", 0x1e19 , 0 }, + { "ecircumflexdotbelow", 0x1ec7 , 0 }, + { "ecircumflexgrave", 0x1ec1 , 0 }, + { "ecircumflexhookabove", 0x1ec3 , 0 }, + { "ecircumflextilde", 0x1ec5 , 0 }, + { "ecyrillic", 0x0454 , 0 }, + { "edblgrave", 0x0205 , 0 }, + { "edeva", 0x090f , 0 }, + { "edot", 0x0117 , 0 }, + { "edotbelow", 0x1eb9 , 0 }, + { "eegurmukhi", 0x0a0f , 0 }, + { "eematragurmukhi", 0x0a47 , 0 }, + { "efcyrillic", 0x0444 , 0 }, + { "egujarati", 0x0a8f , 0 }, + { "eharmenian", 0x0567 , 0 }, + { "ehbopomofo", 0x311d , 0 }, + { "ehiragana", 0x3048 , 0 }, + { "ehookabove", 0x1ebb , 0 }, + { "eibopomofo", 0x311f , 0 }, + { "eightarabic", 0x0668 , 0 }, + { "eightbengali", 0x09ee , 0 }, + { "eightcircle", 0x2467 , 0 }, + { "eightcircleinversesansserif", 0x2791 , 0 }, + { "eightdeva", 0x096e , 0 }, + { "eighteencircle", 0x2471 , 0 }, + { "eighteenparen", 0x2485 , 0 }, + { "eighteenperiod", 0x2499 , 0 }, + { "eightgujarati", 0x0aee , 0 }, + { "eightgurmukhi", 0x0a6e , 0 }, + { "eighthackarabic", 0x0668 , 0 }, + { "eighthangzhou", 0x3028 , 0 }, + { "eighthnotebeamed", 0x266b , 0 }, + { "eightideographicparen", 0x3227 , 0 }, + { "eightinferior", 0x2088 , 0 }, + { "eightmonospace", 0xff18 , 0 }, + { "eightoldstyle", 0xf738 , 0 }, + { "eightparen", 0x247b , 0 }, + { "eightperiod", 0x248f , 0 }, + { "eightpersian", 0x06f8 , 0 }, + { "eightroman", 0x2177 , 0 }, + { "eightsuperior", 0x2078 , 0 }, + { "eightthai", 0x0e58 , 0 }, + { "einvertedbreve", 0x0207 , 0 }, + { "eiotifiedcyrillic", 0x0465 , 0 }, + { "ekatakana", 0x30a8 , 0 }, + { "ekatakanahalfwidth", 0xff74 , 0 }, + { "ekonkargurmukhi", 0x0a74 , 0 }, + { "ekorean", 0x3154 , 0 }, + { "elcyrillic", 0x043b , 0 }, + { "elevencircle", 0x246a , 0 }, + { "elevenparen", 0x247e , 0 }, + { "elevenperiod", 0x2492 , 0 }, + { "elevenroman", 0x217a , 0 }, + { "ellipsisvertical", 0x22ee , 0 }, + { "emacronacute", 0x1e17 , 0 }, + { "emacrongrave", 0x1e15 , 0 }, + { "emcyrillic", 0x043c , 0 }, + { "emdashvertical", 0xfe31 , 0 }, + { "emonospace", 0xff45 , 0 }, + { "emphasismarkarmenian", 0x055b , 0 }, + { "enbopomofo", 0x3123 , 0 }, + { "encyrillic", 0x043d , 0 }, + { "endashvertical", 0xfe32 , 0 }, + { "endescendercyrillic", 0x04a3 , 0 }, + { "engbopomofo", 0x3125 , 0 }, + { "enghecyrillic", 0x04a5 , 0 }, + { "enhookcyrillic", 0x04c8 , 0 }, + { "enspace", 0x2002 , 0 }, + { "eokorean", 0x3153 , 0 }, + { "eopen", 0x025b , 0 }, + { "eopenclosed", 0x029a , 0 }, + { "eopenreversed", 0x025c , 0 }, + { "eopenreversedclosed", 0x025e , 0 }, + { "eopenreversedhook", 0x025d , 0 }, + { "eparen", 0x24a0 , 0 }, + { "equalmonospace", 0xff1d , 0 }, + { "equalsmall", 0xfe66 , 0 }, + { "equalsuperior", 0x207c , 0 }, + { "erbopomofo", 0x3126 , 0 }, + { "ercyrillic", 0x0440 , 0 }, + { "ereversed", 0x0258 , 0 }, + { "ereversedcyrillic", 0x044d , 0 }, + { "escyrillic", 0x0441 , 0 }, + { "esdescendercyrillic", 0x04ab , 0 }, + { "esh", 0x0283 , 0 }, + { "eshcurl", 0x0286 , 0 }, + { "eshortdeva", 0x090e , 0 }, + { "eshortvowelsigndeva", 0x0946 , 0 }, + { "eshreversedloop", 0x01aa , 0 }, + { "eshsquatreversed", 0x0285 , 0 }, + { "esmallhiragana", 0x3047 , 0 }, + { "esmallkatakana", 0x30a7 , 0 }, + { "esmallkatakanahalfwidth", 0xff6a , 0 }, + { "esuperior", 0xf6ec , 0 }, + { "etarmenian", 0x0568 , 0 }, + { "etilde", 0x1ebd , 0 }, + { "etildebelow", 0x1e1b , 0 }, + { "etnahtafoukhhebrew", 0x0591 , 0 }, + { "etnahtafoukhlefthebrew", 0x0591 , 0 }, + { "etnahtahebrew", 0x0591 , 0 }, + { "etnahtalefthebrew", 0x0591 , 0 }, + { "eturned", 0x01dd , 0 }, + { "eukorean", 0x3161 , 0 }, + { "euro", 0x20ac , 0 }, + { "evowelsignbengali", 0x09c7 , 0 }, + { "evowelsigndeva", 0x0947 , 0 }, + { "evowelsigngujarati", 0x0ac7 , 0 }, + { "exclamarmenian", 0x055c , 0 }, + { "exclamdownsmall", 0xf7a1 , 0 }, + { "exclammonospace", 0xff01 , 0 }, + { "exclamsmall", 0xf721 , 0 }, + { "ezh", 0x0292 , 0 }, + { "ezhcaron", 0x01ef , 0 }, + { "ezhcurl", 0x0293 , 0 }, + { "ezhreversed", 0x01b9 , 0 }, + { "ezhtail", 0x01ba , 0 }, + { "fadeva", 0x095e , 0 }, + { "fagurmukhi", 0x0a5e , 0 }, + { "fahrenheit", 0x2109 , 0 }, + { "fathaarabic", 0x064e , 0 }, + { "fathalowarabic", 0x064e , 0 }, + { "fathatanarabic", 0x064b , 0 }, + { "fbopomofo", 0x3108 , 0 }, + { "fcircle", 0x24d5 , 0 }, + { "fdotaccent", 0x1e1f , 0 }, + { "feharabic", 0x0641 , 0 }, + { "feharmenian", 0x0586 , 0 }, + { "fehfinalarabic", 0xfed2 , 0 }, + { "fehinitialarabic", 0xfed3 , 0 }, + { "fehmedialarabic", 0xfed4 , 0 }, + { "feicoptic", 0x03e5 , 0 }, + { "ff", 0xfb00 , 0 }, + { "ffi", 0xfb03 , 0 }, + { "ffl", 0xfb04 , 0 }, + { "fi", 0xfb01 , 0 }, + { "fifteencircle", 0x246e , 0 }, + { "fifteenparen", 0x2482 , 0 }, + { "fifteenperiod", 0x2496 , 0 }, + { "finalkaf", 0x05da , 0 }, + { "finalkafdagesh", 0xfb3a , 0 }, + { "finalkafdageshhebrew", 0xfb3a , 0 }, + { "finalkafhebrew", 0x05da , 0 }, + { "finalkafqamats", 0x05da , 0 }, + { "finalkafqamatshebrew", 0x05da , 0 }, + { "finalkafsheva", 0x05da , 0 }, + { "finalkafshevahebrew", 0x05da , 0 }, + { "finalmem", 0x05dd , 0 }, + { "finalmemhebrew", 0x05dd , 0 }, + { "finalnun", 0x05df , 0 }, + { "finalnunhebrew", 0x05df , 0 }, + { "finalpe", 0x05e3 , 0 }, + { "finalpehebrew", 0x05e3 , 0 }, + { "finaltsadi", 0x05e5 , 0 }, + { "finaltsadihebrew", 0x05e5 , 0 }, + { "firsttonechinese", 0x02c9 , 0 }, + { "fisheye", 0x25c9 , 0 }, + { "fitacyrillic", 0x0473 , 0 }, + { "fivearabic", 0x0665 , 0 }, + { "fivebengali", 0x09eb , 0 }, + { "fivecircle", 0x2464 , 0 }, + { "fivecircleinversesansserif", 0x278e , 0 }, + { "fivedeva", 0x096b , 0 }, + { "fivegujarati", 0x0aeb , 0 }, + { "fivegurmukhi", 0x0a6b , 0 }, + { "fivehackarabic", 0x0665 , 0 }, + { "fivehangzhou", 0x3025 , 0 }, + { "fiveideographicparen", 0x3224 , 0 }, + { "fiveinferior", 0x2085 , 0 }, + { "fivemonospace", 0xff15 , 0 }, + { "fiveoldstyle", 0xf735 , 0 }, + { "fiveparen", 0x2478 , 0 }, + { "fiveperiod", 0x248c , 0 }, + { "fivepersian", 0x06f5 , 0 }, + { "fiveroman", 0x2174 , 0 }, + { "fivesuperior", 0x2075 , 0 }, + { "fivethai", 0x0e55 , 0 }, + { "fl", 0xfb02 , 0 }, + { "fmonospace", 0xff46 , 0 }, + { "fmsquare", 0x3399 , 0 }, + { "fofanthai", 0x0e1f , 0 }, + { "fofathai", 0x0e1d , 0 }, + { "fongmanthai", 0x0e4f , 0 }, + { "forall", 0x2200 , 0 }, + { "fourarabic", 0x0664 , 0 }, + { "fourbengali", 0x09ea , 0 }, + { "fourcircle", 0x2463 , 0 }, + { "fourcircleinversesansserif", 0x278d , 0 }, + { "fourdeva", 0x096a , 0 }, + { "fourgujarati", 0x0aea , 0 }, + { "fourgurmukhi", 0x0a6a , 0 }, + { "fourhackarabic", 0x0664 , 0 }, + { "fourhangzhou", 0x3024 , 0 }, + { "fourideographicparen", 0x3223 , 0 }, + { "fourinferior", 0x2084 , 0 }, + { "fourmonospace", 0xff14 , 0 }, + { "fournumeratorbengali", 0x09f7 , 0 }, + { "fouroldstyle", 0xf734 , 0 }, + { "fourparen", 0x2477 , 0 }, + { "fourperiod", 0x248b , 0 }, + { "fourpersian", 0x06f4 , 0 }, + { "fourroman", 0x2173 , 0 }, + { "foursuperior", 0x2074 , 0 }, + { "fourteencircle", 0x246d , 0 }, + { "fourteenparen", 0x2481 , 0 }, + { "fourteenperiod", 0x2495 , 0 }, + { "fourthai", 0x0e54 , 0 }, + { "fourthtonechinese", 0x02cb , 0 }, + { "fparen", 0x24a1 , 0 }, + { "gabengali", 0x0997 , 0 }, + { "gacute", 0x01f5 , 0 }, + { "gadeva", 0x0917 , 0 }, + { "gafarabic", 0x06af , 0 }, + { "gaffinalarabic", 0xfb93 , 0 }, + { "gafinitialarabic", 0xfb94 , 0 }, + { "gafmedialarabic", 0xfb95 , 0 }, + { "gagujarati", 0x0a97 , 0 }, + { "gagurmukhi", 0x0a17 , 0 }, + { "gahiragana", 0x304c , 0 }, + { "gakatakana", 0x30ac , 0 }, + { "gammalatinsmall", 0x0263 , 0 }, + { "gammasuperior", 0x02e0 , 0 }, + { "gangiacoptic", 0x03eb , 0 }, + { "gbopomofo", 0x310d , 0 }, + { "gcedilla", 0x0123 , 0 }, + { "gcircle", 0x24d6 , 0 }, + { "gdot", 0x0121 , 0 }, + { "gecyrillic", 0x0433 , 0 }, + { "gehiragana", 0x3052 , 0 }, + { "gekatakana", 0x30b2 , 0 }, + { "geometricallyequal", 0x2251 , 0 }, + { "gereshaccenthebrew", 0x059c , 0 }, + { "gereshhebrew", 0x05f3 , 0 }, + { "gereshmuqdamhebrew", 0x059d , 0 }, + { "gershayimaccenthebrew", 0x059e , 0 }, + { "gershayimhebrew", 0x05f4 , 0 }, + { "getamark", 0x3013 , 0 }, + { "ghabengali", 0x0998 , 0 }, + { "ghadarmenian", 0x0572 , 0 }, + { "ghadeva", 0x0918 , 0 }, + { "ghagujarati", 0x0a98 , 0 }, + { "ghagurmukhi", 0x0a18 , 0 }, + { "ghainarabic", 0x063a , 0 }, + { "ghainfinalarabic", 0xfece , 0 }, + { "ghaininitialarabic", 0xfecf , 0 }, + { "ghainmedialarabic", 0xfed0 , 0 }, + { "ghemiddlehookcyrillic", 0x0495 , 0 }, + { "ghestrokecyrillic", 0x0493 , 0 }, + { "gheupturncyrillic", 0x0491 , 0 }, + { "ghhadeva", 0x095a , 0 }, + { "ghhagurmukhi", 0x0a5a , 0 }, + { "ghook", 0x0260 , 0 }, + { "ghzsquare", 0x3393 , 0 }, + { "gihiragana", 0x304e , 0 }, + { "gikatakana", 0x30ae , 0 }, + { "gimarmenian", 0x0563 , 0 }, + { "gimel", 0x05d2 , 0 }, + { "gimeldagesh", 0xfb32 , 0 }, + { "gimeldageshhebrew", 0xfb32 , 0 }, + { "gimelhebrew", 0x05d2 , 0 }, + { "gjecyrillic", 0x0453 , 0 }, + { "glottalinvertedstroke", 0x01be , 0 }, + { "glottalstop", 0x0294 , 0 }, + { "glottalstopinverted", 0x0296 , 0 }, + { "glottalstopmod", 0x02c0 , 0 }, + { "glottalstopreversed", 0x0295 , 0 }, + { "glottalstopreversedmod", 0x02c1 , 0 }, + { "glottalstopreversedsuperior", 0x02e4 , 0 }, + { "glottalstopstroke", 0x02a1 , 0 }, + { "glottalstopstrokereversed", 0x02a2 , 0 }, + { "gmacron", 0x1e21 , 0 }, + { "gmonospace", 0xff47 , 0 }, + { "gohiragana", 0x3054 , 0 }, + { "gokatakana", 0x30b4 , 0 }, + { "gparen", 0x24a2 , 0 }, + { "gpasquare", 0x33ac , 0 }, + { "gravebelowcmb", 0x0316 , 0 }, + { "gravecmb", 0x0300 , 0 }, + { "gravedeva", 0x0953 , 0 }, + { "gravelowmod", 0x02ce , 0 }, + { "gravemonospace", 0xff40 , 0 }, + { "gravetonecmb", 0x0340 , 0 }, + { "greaterequalorless", 0x22db , 0 }, + { "greatermonospace", 0xff1e , 0 }, + { "greaterorequivalent", 0x2273 , 0 }, + { "greaterorless", 0x2277 , 0 }, + { "greateroverequal", 0x2267 , 0 }, + { "greatersmall", 0xfe65 , 0 }, + { "gscript", 0x0261 , 0 }, + { "gstroke", 0x01e5 , 0 }, + { "guhiragana", 0x3050 , 0 }, + { "gukatakana", 0x30b0 , 0 }, + { "guramusquare", 0x3318 , 0 }, + { "gysquare", 0x33c9 , 0 }, + { "haabkhasiancyrillic", 0x04a9 , 0 }, + { "haaltonearabic", 0x06c1 , 0 }, + { "habengali", 0x09b9 , 0 }, + { "hadescendercyrillic", 0x04b3 , 0 }, + { "hadeva", 0x0939 , 0 }, + { "hagujarati", 0x0ab9 , 0 }, + { "hagurmukhi", 0x0a39 , 0 }, + { "haharabic", 0x062d , 0 }, + { "hahfinalarabic", 0xfea2 , 0 }, + { "hahinitialarabic", 0xfea3 , 0 }, + { "hahiragana", 0x306f , 0 }, + { "hahmedialarabic", 0xfea4 , 0 }, + { "haitusquare", 0x332a , 0 }, + { "hakatakana", 0x30cf , 0 }, + { "hakatakanahalfwidth", 0xff8a , 0 }, + { "halantgurmukhi", 0x0a4d , 0 }, + { "hamzaarabic", 0x0621 , 0 }, + { "hamzadammaarabic", 0x0621 , 0 }, + { "hamzadammatanarabic", 0x0621 , 0 }, + { "hamzafathaarabic", 0x0621 , 0 }, + { "hamzafathatanarabic", 0x0621 , 0 }, + { "hamzalowarabic", 0x0621 , 0 }, + { "hamzalowkasraarabic", 0x0621 , 0 }, + { "hamzalowkasratanarabic", 0x0621 , 0 }, + { "hamzasukunarabic", 0x0621 , 0 }, + { "hangulfiller", 0x3164 , 0 }, + { "hardsigncyrillic", 0x044a , 0 }, + { "harpoonleftbarbup", 0x21bc , 0 }, + { "harpoonrightbarbup", 0x21c0 , 0 }, + { "hasquare", 0x33ca , 0 }, + { "hatafpatah", 0x05b2 , 0 }, + { "hatafpatah16", 0x05b2 , 0 }, + { "hatafpatah23", 0x05b2 , 0 }, + { "hatafpatah2f", 0x05b2 , 0 }, + { "hatafpatahhebrew", 0x05b2 , 0 }, + { "hatafpatahnarrowhebrew", 0x05b2 , 0 }, + { "hatafpatahquarterhebrew", 0x05b2 , 0 }, + { "hatafpatahwidehebrew", 0x05b2 , 0 }, + { "hatafqamats", 0x05b3 , 0 }, + { "hatafqamats1b", 0x05b3 , 0 }, + { "hatafqamats28", 0x05b3 , 0 }, + { "hatafqamats34", 0x05b3 , 0 }, + { "hatafqamatshebrew", 0x05b3 , 0 }, + { "hatafqamatsnarrowhebrew", 0x05b3 , 0 }, + { "hatafqamatsquarterhebrew", 0x05b3 , 0 }, + { "hatafqamatswidehebrew", 0x05b3 , 0 }, + { "hatafsegol", 0x05b1 , 0 }, + { "hatafsegol17", 0x05b1 , 0 }, + { "hatafsegol24", 0x05b1 , 0 }, + { "hatafsegol30", 0x05b1 , 0 }, + { "hatafsegolhebrew", 0x05b1 , 0 }, + { "hatafsegolnarrowhebrew", 0x05b1 , 0 }, + { "hatafsegolquarterhebrew", 0x05b1 , 0 }, + { "hatafsegolwidehebrew", 0x05b1 , 0 }, + { "hbopomofo", 0x310f , 0 }, + { "hbrevebelow", 0x1e2b , 0 }, + { "hcedilla", 0x1e29 , 0 }, + { "hcircle", 0x24d7 , 0 }, + { "hdieresis", 0x1e27 , 0 }, + { "hdotaccent", 0x1e23 , 0 }, + { "hdotbelow", 0x1e25 , 0 }, + { "he", 0x05d4 , 0 }, + { "heartsuitblack", 0x2665 , 0 }, + { "heartsuitwhite", 0x2661 , 0 }, + { "hedagesh", 0xfb34 , 0 }, + { "hedageshhebrew", 0xfb34 , 0 }, + { "hehaltonearabic", 0x06c1 , 0 }, + { "heharabic", 0x0647 , 0 }, + { "hehebrew", 0x05d4 , 0 }, + { "hehfinalaltonearabic", 0xfba7 , 0 }, + { "hehfinalalttwoarabic", 0xfeea , 0 }, + { "hehfinalarabic", 0xfeea , 0 }, + { "hehhamzaabovefinalarabic", 0xfba5 , 0 }, + { "hehhamzaaboveisolatedarabic", 0xfba4 , 0 }, + { "hehinitialaltonearabic", 0xfba8 , 0 }, + { "hehinitialarabic", 0xfeeb , 0 }, + { "hehiragana", 0x3078 , 0 }, + { "hehmedialaltonearabic", 0xfba9 , 0 }, + { "hehmedialarabic", 0xfeec , 0 }, + { "heiseierasquare", 0x337b , 0 }, + { "hekatakana", 0x30d8 , 0 }, + { "hekatakanahalfwidth", 0xff8d , 0 }, + { "hekutaarusquare", 0x3336 , 0 }, + { "henghook", 0x0267 , 0 }, + { "herutusquare", 0x3339 , 0 }, + { "het", 0x05d7 , 0 }, + { "hethebrew", 0x05d7 , 0 }, + { "hhook", 0x0266 , 0 }, + { "hhooksuperior", 0x02b1 , 0 }, + { "hieuhacirclekorean", 0x327b , 0 }, + { "hieuhaparenkorean", 0x321b , 0 }, + { "hieuhcirclekorean", 0x326d , 0 }, + { "hieuhkorean", 0x314e , 0 }, + { "hieuhparenkorean", 0x320d , 0 }, + { "hihiragana", 0x3072 , 0 }, + { "hikatakana", 0x30d2 , 0 }, + { "hikatakanahalfwidth", 0xff8b , 0 }, + { "hiriq", 0x05b4 , 0 }, + { "hiriq14", 0x05b4 , 0 }, + { "hiriq21", 0x05b4 , 0 }, + { "hiriq2d", 0x05b4 , 0 }, + { "hiriqhebrew", 0x05b4 , 0 }, + { "hiriqnarrowhebrew", 0x05b4 , 0 }, + { "hiriqquarterhebrew", 0x05b4 , 0 }, + { "hiriqwidehebrew", 0x05b4 , 0 }, + { "hlinebelow", 0x1e96 , 0 }, + { "hmonospace", 0xff48 , 0 }, + { "hoarmenian", 0x0570 , 0 }, + { "hohipthai", 0x0e2b , 0 }, + { "hohiragana", 0x307b , 0 }, + { "hokatakana", 0x30db , 0 }, + { "hokatakanahalfwidth", 0xff8e , 0 }, + { "holam", 0x05b9 , 0 }, + { "holam19", 0x05b9 , 0 }, + { "holam26", 0x05b9 , 0 }, + { "holam32", 0x05b9 , 0 }, + { "holamhebrew", 0x05b9 , 0 }, + { "holamnarrowhebrew", 0x05b9 , 0 }, + { "holamquarterhebrew", 0x05b9 , 0 }, + { "holamwidehebrew", 0x05b9 , 0 }, + { "honokhukthai", 0x0e2e , 0 }, + { "hookcmb", 0x0309 , 0 }, + { "hookpalatalizedbelowcmb", 0x0321 , 0 }, + { "hookretroflexbelowcmb", 0x0322 , 0 }, + { "hoonsquare", 0x3342 , 0 }, + { "horicoptic", 0x03e9 , 0 }, + { "horizontalbar", 0x2015 , 0 }, + { "horncmb", 0x031b , 0 }, + { "hotsprings", 0x2668 , 0 }, + { "hparen", 0x24a3 , 0 }, + { "hsuperior", 0x02b0 , 0 }, + { "hturned", 0x0265 , 0 }, + { "huhiragana", 0x3075 , 0 }, + { "huiitosquare", 0x3333 , 0 }, + { "hukatakana", 0x30d5 , 0 }, + { "hukatakanahalfwidth", 0xff8c , 0 }, + { "hungarumlautcmb", 0x030b , 0 }, + { "hv", 0x0195 , 0 }, + { "hypheninferior", 0xf6e5 , 0 }, + { "hyphenmonospace", 0xff0d , 0 }, + { "hyphensmall", 0xfe63 , 0 }, + { "hyphensuperior", 0xf6e6 , 0 }, + { "hyphentwo", 0x2010 , 0 }, + { "iacyrillic", 0x044f , 0 }, + { "ibengali", 0x0987 , 0 }, + { "ibopomofo", 0x3127 , 0 }, + { "icaron", 0x01d0 , 0 }, + { "icircle", 0x24d8 , 0 }, + { "icyrillic", 0x0456 , 0 }, + { "idblgrave", 0x0209 , 0 }, + { "ideographearthcircle", 0x328f , 0 }, + { "ideographfirecircle", 0x328b , 0 }, + { "ideographicallianceparen", 0x323f , 0 }, + { "ideographiccallparen", 0x323a , 0 }, + { "ideographiccentrecircle", 0x32a5 , 0 }, + { "ideographicclose", 0x3006 , 0 }, + { "ideographiccomma", 0x3001 , 0 }, + { "ideographiccommaleft", 0xff64 , 0 }, + { "ideographiccongratulationparen", 0x3237 , 0 }, + { "ideographiccorrectcircle", 0x32a3 , 0 }, + { "ideographicearthparen", 0x322f , 0 }, + { "ideographicenterpriseparen", 0x323d , 0 }, + { "ideographicexcellentcircle", 0x329d , 0 }, + { "ideographicfestivalparen", 0x3240 , 0 }, + { "ideographicfinancialcircle", 0x3296 , 0 }, + { "ideographicfinancialparen", 0x3236 , 0 }, + { "ideographicfireparen", 0x322b , 0 }, + { "ideographichaveparen", 0x3232 , 0 }, + { "ideographichighcircle", 0x32a4 , 0 }, + { "ideographiciterationmark", 0x3005 , 0 }, + { "ideographiclaborcircle", 0x3298 , 0 }, + { "ideographiclaborparen", 0x3238 , 0 }, + { "ideographicleftcircle", 0x32a7 , 0 }, + { "ideographiclowcircle", 0x32a6 , 0 }, + { "ideographicmedicinecircle", 0x32a9 , 0 }, + { "ideographicmetalparen", 0x322e , 0 }, + { "ideographicmoonparen", 0x322a , 0 }, + { "ideographicnameparen", 0x3234 , 0 }, + { "ideographicperiod", 0x3002 , 0 }, + { "ideographicprintcircle", 0x329e , 0 }, + { "ideographicreachparen", 0x3243 , 0 }, + { "ideographicrepresentparen", 0x3239 , 0 }, + { "ideographicresourceparen", 0x323e , 0 }, + { "ideographicrightcircle", 0x32a8 , 0 }, + { "ideographicsecretcircle", 0x3299 , 0 }, + { "ideographicselfparen", 0x3242 , 0 }, + { "ideographicsocietyparen", 0x3233 , 0 }, + { "ideographicspace", 0x3000 , 0 }, + { "ideographicspecialparen", 0x3235 , 0 }, + { "ideographicstockparen", 0x3231 , 0 }, + { "ideographicstudyparen", 0x323b , 0 }, + { "ideographicsunparen", 0x3230 , 0 }, + { "ideographicsuperviseparen", 0x323c , 0 }, + { "ideographicwaterparen", 0x322c , 0 }, + { "ideographicwoodparen", 0x322d , 0 }, + { "ideographiczero", 0x3007 , 0 }, + { "ideographmetalcircle", 0x328e , 0 }, + { "ideographmooncircle", 0x328a , 0 }, + { "ideographnamecircle", 0x3294 , 0 }, + { "ideographsuncircle", 0x3290 , 0 }, + { "ideographwatercircle", 0x328c , 0 }, + { "ideographwoodcircle", 0x328d , 0 }, + { "ideva", 0x0907 , 0 }, + { "idieresisacute", 0x1e2f , 0 }, + { "idieresiscyrillic", 0x04e5 , 0 }, + { "idotbelow", 0x1ecb , 0 }, + { "iebrevecyrillic", 0x04d7 , 0 }, + { "iecyrillic", 0x0435 , 0 }, + { "ieungacirclekorean", 0x3275 , 0 }, + { "ieungaparenkorean", 0x3215 , 0 }, + { "ieungcirclekorean", 0x3267 , 0 }, + { "ieungkorean", 0x3147 , 0 }, + { "ieungparenkorean", 0x3207 , 0 }, + { "igujarati", 0x0a87 , 0 }, + { "igurmukhi", 0x0a07 , 0 }, + { "ihiragana", 0x3044 , 0 }, + { "ihookabove", 0x1ec9 , 0 }, + { "iibengali", 0x0988 , 0 }, + { "iicyrillic", 0x0438 , 0 }, + { "iideva", 0x0908 , 0 }, + { "iigujarati", 0x0a88 , 0 }, + { "iigurmukhi", 0x0a08 , 0 }, + { "iimatragurmukhi", 0x0a40 , 0 }, + { "iinvertedbreve", 0x020b , 0 }, + { "iishortcyrillic", 0x0439 , 0 }, + { "iivowelsignbengali", 0x09c0 , 0 }, + { "iivowelsigndeva", 0x0940 , 0 }, + { "iivowelsigngujarati", 0x0ac0 , 0 }, + { "ikatakana", 0x30a4 , 0 }, + { "ikatakanahalfwidth", 0xff72 , 0 }, + { "ikorean", 0x3163 , 0 }, + { "ilde", 0x02dc , 0 }, + { "iluyhebrew", 0x05ac , 0 }, + { "imacroncyrillic", 0x04e3 , 0 }, + { "imageorapproximatelyequal", 0x2253 , 0 }, + { "imatragurmukhi", 0x0a3f , 0 }, + { "imonospace", 0xff49 , 0 }, + { "increment", 0x2206 , 0 }, + { "iniarmenian", 0x056b , 0 }, + { "integralbottom", 0x2321 , 0 }, + { "integralex", 0xf8f5 , 0 }, + { "integraltop", 0x2320 , 0 }, + { "intisquare", 0x3305 , 0 }, + { "iocyrillic", 0x0451 , 0 }, + { "iotalatin", 0x0269 , 0 }, + { "iparen", 0x24a4 , 0 }, + { "irigurmukhi", 0x0a72 , 0 }, + { "ismallhiragana", 0x3043 , 0 }, + { "ismallkatakana", 0x30a3 , 0 }, + { "ismallkatakanahalfwidth", 0xff68 , 0 }, + { "issharbengali", 0x09fa , 0 }, + { "istroke", 0x0268 , 0 }, + { "isuperior", 0xf6ed , 0 }, + { "iterationhiragana", 0x309d , 0 }, + { "iterationkatakana", 0x30fd , 0 }, + { "itildebelow", 0x1e2d , 0 }, + { "iubopomofo", 0x3129 , 0 }, + { "iucyrillic", 0x044e , 0 }, + { "ivowelsignbengali", 0x09bf , 0 }, + { "ivowelsigndeva", 0x093f , 0 }, + { "ivowelsigngujarati", 0x0abf , 0 }, + { "izhitsacyrillic", 0x0475 , 0 }, + { "izhitsadblgravecyrillic", 0x0477 , 0 }, + { "jaarmenian", 0x0571 , 0 }, + { "jabengali", 0x099c , 0 }, + { "jadeva", 0x091c , 0 }, + { "jagujarati", 0x0a9c , 0 }, + { "jagurmukhi", 0x0a1c , 0 }, + { "jbopomofo", 0x3110 , 0 }, + { "jcaron", 0x01f0 , 0 }, + { "jcircle", 0x24d9 , 0 }, + { "jcrossedtail", 0x029d , 0 }, + { "jdotlessstroke", 0x025f , 0 }, + { "jecyrillic", 0x0458 , 0 }, + { "jeemarabic", 0x062c , 0 }, + { "jeemfinalarabic", 0xfe9e , 0 }, + { "jeeminitialarabic", 0xfe9f , 0 }, + { "jeemmedialarabic", 0xfea0 , 0 }, + { "jeharabic", 0x0698 , 0 }, + { "jehfinalarabic", 0xfb8b , 0 }, + { "jhabengali", 0x099d , 0 }, + { "jhadeva", 0x091d , 0 }, + { "jhagujarati", 0x0a9d , 0 }, + { "jhagurmukhi", 0x0a1d , 0 }, + { "jheharmenian", 0x057b , 0 }, + { "jis", 0x3004 , 0 }, + { "jmonospace", 0xff4a , 0 }, + { "jparen", 0x24a5 , 0 }, + { "jsuperior", 0x02b2 , 0 }, + { "kabashkircyrillic", 0x04a1 , 0 }, + { "kabengali", 0x0995 , 0 }, + { "kacute", 0x1e31 , 0 }, + { "kacyrillic", 0x043a , 0 }, + { "kadescendercyrillic", 0x049b , 0 }, + { "kadeva", 0x0915 , 0 }, + { "kaf", 0x05db , 0 }, + { "kafarabic", 0x0643 , 0 }, + { "kafdagesh", 0xfb3b , 0 }, + { "kafdageshhebrew", 0xfb3b , 0 }, + { "kaffinalarabic", 0xfeda , 0 }, + { "kafhebrew", 0x05db , 0 }, + { "kafinitialarabic", 0xfedb , 0 }, + { "kafmedialarabic", 0xfedc , 0 }, + { "kafrafehebrew", 0xfb4d , 0 }, + { "kagujarati", 0x0a95 , 0 }, + { "kagurmukhi", 0x0a15 , 0 }, + { "kahiragana", 0x304b , 0 }, + { "kahookcyrillic", 0x04c4 , 0 }, + { "kakatakana", 0x30ab , 0 }, + { "kakatakanahalfwidth", 0xff76 , 0 }, + { "kappasymbolgreek", 0x03f0 , 0 }, + { "kapyeounmieumkorean", 0x3171 , 0 }, + { "kapyeounphieuphkorean", 0x3184 , 0 }, + { "kapyeounpieupkorean", 0x3178 , 0 }, + { "kapyeounssangpieupkorean", 0x3179 , 0 }, + { "karoriisquare", 0x330d , 0 }, + { "kashidaautoarabic", 0x0640 , 0 }, + { "kashidaautonosidebearingarabic", 0x0640 , 0 }, + { "kasmallkatakana", 0x30f5 , 0 }, + { "kasquare", 0x3384 , 0 }, + { "kasraarabic", 0x0650 , 0 }, + { "kasratanarabic", 0x064d , 0 }, + { "kastrokecyrillic", 0x049f , 0 }, + { "katahiraprolongmarkhalfwidth", 0xff70 , 0 }, + { "kaverticalstrokecyrillic", 0x049d , 0 }, + { "kbopomofo", 0x310e , 0 }, + { "kcalsquare", 0x3389 , 0 }, + { "kcaron", 0x01e9 , 0 }, + { "kcedilla", 0x0137 , 0 }, + { "kcircle", 0x24da , 0 }, + { "kdotbelow", 0x1e33 , 0 }, + { "keharmenian", 0x0584 , 0 }, + { "kehiragana", 0x3051 , 0 }, + { "kekatakana", 0x30b1 , 0 }, + { "kekatakanahalfwidth", 0xff79 , 0 }, + { "kenarmenian", 0x056f , 0 }, + { "kesmallkatakana", 0x30f6 , 0 }, + { "khabengali", 0x0996 , 0 }, + { "khacyrillic", 0x0445 , 0 }, + { "khadeva", 0x0916 , 0 }, + { "khagujarati", 0x0a96 , 0 }, + { "khagurmukhi", 0x0a16 , 0 }, + { "khaharabic", 0x062e , 0 }, + { "khahfinalarabic", 0xfea6 , 0 }, + { "khahinitialarabic", 0xfea7 , 0 }, + { "khahmedialarabic", 0xfea8 , 0 }, + { "kheicoptic", 0x03e7 , 0 }, + { "khhadeva", 0x0959 , 0 }, + { "khhagurmukhi", 0x0a59 , 0 }, + { "khieukhacirclekorean", 0x3278 , 0 }, + { "khieukhaparenkorean", 0x3218 , 0 }, + { "khieukhcirclekorean", 0x326a , 0 }, + { "khieukhkorean", 0x314b , 0 }, + { "khieukhparenkorean", 0x320a , 0 }, + { "khokhaithai", 0x0e02 , 0 }, + { "khokhonthai", 0x0e05 , 0 }, + { "khokhuatthai", 0x0e03 , 0 }, + { "khokhwaithai", 0x0e04 , 0 }, + { "khomutthai", 0x0e5b , 0 }, + { "khook", 0x0199 , 0 }, + { "khorakhangthai", 0x0e06 , 0 }, + { "khzsquare", 0x3391 , 0 }, + { "kihiragana", 0x304d , 0 }, + { "kikatakana", 0x30ad , 0 }, + { "kikatakanahalfwidth", 0xff77 , 0 }, + { "kiroguramusquare", 0x3315 , 0 }, + { "kiromeetorusquare", 0x3316 , 0 }, + { "kirosquare", 0x3314 , 0 }, + { "kiyeokacirclekorean", 0x326e , 0 }, + { "kiyeokaparenkorean", 0x320e , 0 }, + { "kiyeokcirclekorean", 0x3260 , 0 }, + { "kiyeokkorean", 0x3131 , 0 }, + { "kiyeokparenkorean", 0x3200 , 0 }, + { "kiyeoksioskorean", 0x3133 , 0 }, + { "kjecyrillic", 0x045c , 0 }, + { "klinebelow", 0x1e35 , 0 }, + { "klsquare", 0x3398 , 0 }, + { "kmcubedsquare", 0x33a6 , 0 }, + { "kmonospace", 0xff4b , 0 }, + { "kmsquaredsquare", 0x33a2 , 0 }, + { "kohiragana", 0x3053 , 0 }, + { "kohmsquare", 0x33c0 , 0 }, + { "kokaithai", 0x0e01 , 0 }, + { "kokatakana", 0x30b3 , 0 }, + { "kokatakanahalfwidth", 0xff7a , 0 }, + { "kooposquare", 0x331e , 0 }, + { "koppacyrillic", 0x0481 , 0 }, + { "koreanstandardsymbol", 0x327f , 0 }, + { "koroniscmb", 0x0343 , 0 }, + { "kparen", 0x24a6 , 0 }, + { "kpasquare", 0x33aa , 0 }, + { "ksicyrillic", 0x046f , 0 }, + { "ktsquare", 0x33cf , 0 }, + { "kturned", 0x029e , 0 }, + { "kuhiragana", 0x304f , 0 }, + { "kukatakana", 0x30af , 0 }, + { "kukatakanahalfwidth", 0xff78 , 0 }, + { "kvsquare", 0x33b8 , 0 }, + { "kwsquare", 0x33be , 0 }, + { "labengali", 0x09b2 , 0 }, + { "ladeva", 0x0932 , 0 }, + { "lagujarati", 0x0ab2 , 0 }, + { "lagurmukhi", 0x0a32 , 0 }, + { "lakkhangyaothai", 0x0e45 , 0 }, + { "lamaleffinalarabic", 0xfefc , 0 }, + { "lamalefhamzaabovefinalarabic", 0xfef8 , 0 }, + { "lamalefhamzaaboveisolatedarabic", 0xfef7 , 0 }, + { "lamalefhamzabelowfinalarabic", 0xfefa , 0 }, + { "lamalefhamzabelowisolatedarabic", 0xfef9 , 0 }, + { "lamalefisolatedarabic", 0xfefb , 0 }, + { "lamalefmaddaabovefinalarabic", 0xfef6 , 0 }, + { "lamalefmaddaaboveisolatedarabic", 0xfef5 , 0 }, + { "lamarabic", 0x0644 , 0 }, + { "lambdastroke", 0x019b , 0 }, + { "lamed", 0x05dc , 0 }, + { "lameddagesh", 0xfb3c , 0 }, + { "lameddageshhebrew", 0xfb3c , 0 }, + { "lamedhebrew", 0x05dc , 0 }, + { "lamedholam", 0x05dc , 0 }, + { "lamedholamdagesh", 0x05dc , 0 }, + { "lamedholamdageshhebrew", 0x05dc , 0 }, + { "lamedholamhebrew", 0x05dc , 0 }, + { "lamfinalarabic", 0xfede , 0 }, + { "lamhahinitialarabic", 0xfcca , 0 }, + { "laminitialarabic", 0xfedf , 0 }, + { "lamjeeminitialarabic", 0xfcc9 , 0 }, + { "lamkhahinitialarabic", 0xfccb , 0 }, + { "lamlamhehisolatedarabic", 0xfdf2 , 0 }, + { "lammedialarabic", 0xfee0 , 0 }, + { "lammeemhahinitialarabic", 0xfd88 , 0 }, + { "lammeeminitialarabic", 0xfccc , 0 }, + { "lammeemjeeminitialarabic", 0xfedf , 0 }, + { "lammeemkhahinitialarabic", 0xfedf , 0 }, + { "largecircle", 0x25ef , 0 }, + { "lbar", 0x019a , 0 }, + { "lbelt", 0x026c , 0 }, + { "lbopomofo", 0x310c , 0 }, + { "lcedilla", 0x013c , 0 }, + { "lcircle", 0x24db , 0 }, + { "lcircumflexbelow", 0x1e3d , 0 }, + { "ldotaccent", 0x0140 , 0 }, + { "ldotbelow", 0x1e37 , 0 }, + { "ldotbelowmacron", 0x1e39 , 0 }, + { "leftangleabovecmb", 0x031a , 0 }, + { "lefttackbelowcmb", 0x0318 , 0 }, + { "lessequalorgreater", 0x22da , 0 }, + { "lessmonospace", 0xff1c , 0 }, + { "lessorequivalent", 0x2272 , 0 }, + { "lessorgreater", 0x2276 , 0 }, + { "lessoverequal", 0x2266 , 0 }, + { "lesssmall", 0xfe64 , 0 }, + { "lezh", 0x026e , 0 }, + { "lhookretroflex", 0x026d , 0 }, + { "liwnarmenian", 0x056c , 0 }, + { "lj", 0x01c9 , 0 }, + { "ljecyrillic", 0x0459 , 0 }, + { "ll", 0xf6c0 , 0 }, + { "lladeva", 0x0933 , 0 }, + { "llagujarati", 0x0ab3 , 0 }, + { "llinebelow", 0x1e3b , 0 }, + { "llladeva", 0x0934 , 0 }, + { "llvocalicbengali", 0x09e1 , 0 }, + { "llvocalicdeva", 0x0961 , 0 }, + { "llvocalicvowelsignbengali", 0x09e3 , 0 }, + { "llvocalicvowelsigndeva", 0x0963 , 0 }, + { "lmiddletilde", 0x026b , 0 }, + { "lmonospace", 0xff4c , 0 }, + { "lmsquare", 0x33d0 , 0 }, + { "lochulathai", 0x0e2c , 0 }, + { "logicalnotreversed", 0x2310 , 0 }, + { "lolingthai", 0x0e25 , 0 }, + { "lowlinecenterline", 0xfe4e , 0 }, + { "lowlinecmb", 0x0332 , 0 }, + { "lowlinedashed", 0xfe4d , 0 }, + { "lparen", 0x24a7 , 0 }, + { "lsquare", 0x2113 , 0 }, + { "lsuperior", 0xf6ee , 0 }, + { "luthai", 0x0e26 , 0 }, + { "lvocalicbengali", 0x098c , 0 }, + { "lvocalicdeva", 0x090c , 0 }, + { "lvocalicvowelsignbengali", 0x09e2 , 0 }, + { "lvocalicvowelsigndeva", 0x0962 , 0 }, + { "lxsquare", 0x33d3 , 0 }, + { "mabengali", 0x09ae , 0 }, + { "macronbelowcmb", 0x0331 , 0 }, + { "macroncmb", 0x0304 , 0 }, + { "macronlowmod", 0x02cd , 0 }, + { "macronmonospace", 0xffe3 , 0 }, + { "macute", 0x1e3f , 0 }, + { "madeva", 0x092e , 0 }, + { "magujarati", 0x0aae , 0 }, + { "magurmukhi", 0x0a2e , 0 }, + { "mahapakhhebrew", 0x05a4 , 0 }, + { "mahapakhlefthebrew", 0x05a4 , 0 }, + { "mahiragana", 0x307e , 0 }, + { "maichattawalowleftthai", 0xf895 , 0 }, + { "maichattawalowrightthai", 0xf894 , 0 }, + { "maichattawathai", 0x0e4b , 0 }, + { "maichattawaupperleftthai", 0xf893 , 0 }, + { "maieklowleftthai", 0xf88c , 0 }, + { "maieklowrightthai", 0xf88b , 0 }, + { "maiekthai", 0x0e48 , 0 }, + { "maiekupperleftthai", 0xf88a , 0 }, + { "maihanakatleftthai", 0xf884 , 0 }, + { "maihanakatthai", 0x0e31 , 0 }, + { "maitaikhuleftthai", 0xf889 , 0 }, + { "maitaikhuthai", 0x0e47 , 0 }, + { "maitholowleftthai", 0xf88f , 0 }, + { "maitholowrightthai", 0xf88e , 0 }, + { "maithothai", 0x0e49 , 0 }, + { "maithoupperleftthai", 0xf88d , 0 }, + { "maitrilowleftthai", 0xf892 , 0 }, + { "maitrilowrightthai", 0xf891 , 0 }, + { "maitrithai", 0x0e4a , 0 }, + { "maitriupperleftthai", 0xf890 , 0 }, + { "maiyamokthai", 0x0e46 , 0 }, + { "makatakana", 0x30de , 0 }, + { "makatakanahalfwidth", 0xff8f , 0 }, + { "mansyonsquare", 0x3347 , 0 }, + { "maqafhebrew", 0x05be , 0 }, + { "mars", 0x2642 , 0 }, + { "masoracirclehebrew", 0x05af , 0 }, + { "masquare", 0x3383 , 0 }, + { "mbopomofo", 0x3107 , 0 }, + { "mbsquare", 0x33d4 , 0 }, + { "mcircle", 0x24dc , 0 }, + { "mcubedsquare", 0x33a5 , 0 }, + { "mdotaccent", 0x1e41 , 0 }, + { "mdotbelow", 0x1e43 , 0 }, + { "meemarabic", 0x0645 , 0 }, + { "meemfinalarabic", 0xfee2 , 0 }, + { "meeminitialarabic", 0xfee3 , 0 }, + { "meemmedialarabic", 0xfee4 , 0 }, + { "meemmeeminitialarabic", 0xfcd1 , 0 }, + { "meemmeemisolatedarabic", 0xfc48 , 0 }, + { "meetorusquare", 0x334d , 0 }, + { "mehiragana", 0x3081 , 0 }, + { "meizierasquare", 0x337e , 0 }, + { "mekatakana", 0x30e1 , 0 }, + { "mekatakanahalfwidth", 0xff92 , 0 }, + { "mem", 0x05de , 0 }, + { "memdagesh", 0xfb3e , 0 }, + { "memdageshhebrew", 0xfb3e , 0 }, + { "memhebrew", 0x05de , 0 }, + { "menarmenian", 0x0574 , 0 }, + { "merkhahebrew", 0x05a5 , 0 }, + { "merkhakefulahebrew", 0x05a6 , 0 }, + { "merkhakefulalefthebrew", 0x05a6 , 0 }, + { "merkhalefthebrew", 0x05a5 , 0 }, + { "mhook", 0x0271 , 0 }, + { "mhzsquare", 0x3392 , 0 }, + { "middledotkatakanahalfwidth", 0xff65 , 0 }, + { "middot", 0x00b7 , 0 }, + { "mieumacirclekorean", 0x3272 , 0 }, + { "mieumaparenkorean", 0x3212 , 0 }, + { "mieumcirclekorean", 0x3264 , 0 }, + { "mieumkorean", 0x3141 , 0 }, + { "mieumpansioskorean", 0x3170 , 0 }, + { "mieumparenkorean", 0x3204 , 0 }, + { "mieumpieupkorean", 0x316e , 0 }, + { "mieumsioskorean", 0x316f , 0 }, + { "mihiragana", 0x307f , 0 }, + { "mikatakana", 0x30df , 0 }, + { "mikatakanahalfwidth", 0xff90 , 0 }, + { "minusbelowcmb", 0x0320 , 0 }, + { "minuscircle", 0x2296 , 0 }, + { "minusmod", 0x02d7 , 0 }, + { "minusplus", 0x2213 , 0 }, + { "miribaarusquare", 0x334a , 0 }, + { "mirisquare", 0x3349 , 0 }, + { "mlonglegturned", 0x0270 , 0 }, + { "mlsquare", 0x3396 , 0 }, + { "mmcubedsquare", 0x33a3 , 0 }, + { "mmonospace", 0xff4d , 0 }, + { "mmsquaredsquare", 0x339f , 0 }, + { "mohiragana", 0x3082 , 0 }, + { "mohmsquare", 0x33c1 , 0 }, + { "mokatakana", 0x30e2 , 0 }, + { "mokatakanahalfwidth", 0xff93 , 0 }, + { "molsquare", 0x33d6 , 0 }, + { "momathai", 0x0e21 , 0 }, + { "moverssquare", 0x33a7 , 0 }, + { "moverssquaredsquare", 0x33a8 , 0 }, + { "mparen", 0x24a8 , 0 }, + { "mpasquare", 0x33ab , 0 }, + { "mssquare", 0x33b3 , 0 }, + { "msuperior", 0xf6ef , 0 }, + { "mturned", 0x026f , 0 }, + { "mu1", 0x00b5 , 0 }, + { "muasquare", 0x3382 , 0 }, + { "muchgreater", 0x226b , 0 }, + { "muchless", 0x226a , 0 }, + { "mufsquare", 0x338c , 0 }, + { "mugreek", 0x03bc , 0 }, + { "mugsquare", 0x338d , 0 }, + { "muhiragana", 0x3080 , 0 }, + { "mukatakana", 0x30e0 , 0 }, + { "mukatakanahalfwidth", 0xff91 , 0 }, + { "mulsquare", 0x3395 , 0 }, + { "mumsquare", 0x339b , 0 }, + { "munahhebrew", 0x05a3 , 0 }, + { "munahlefthebrew", 0x05a3 , 0 }, + { "musicflatsign", 0x266d , 0 }, + { "musicsharpsign", 0x266f , 0 }, + { "mussquare", 0x33b2 , 0 }, + { "muvsquare", 0x33b6 , 0 }, + { "muwsquare", 0x33bc , 0 }, + { "mvmegasquare", 0x33b9 , 0 }, + { "mvsquare", 0x33b7 , 0 }, + { "mwmegasquare", 0x33bf , 0 }, + { "mwsquare", 0x33bd , 0 }, + { "nabengali", 0x09a8 , 0 }, + { "nabla", 0x2207 , 0 }, + { "nadeva", 0x0928 , 0 }, + { "nagujarati", 0x0aa8 , 0 }, + { "nagurmukhi", 0x0a28 , 0 }, + { "nahiragana", 0x306a , 0 }, + { "nakatakana", 0x30ca , 0 }, + { "nakatakanahalfwidth", 0xff85 , 0 }, + { "nasquare", 0x3381 , 0 }, + { "nbopomofo", 0x310b , 0 }, + { "nbspace", 0x00a0 , 0 }, + { "ncedilla", 0x0146 , 0 }, + { "ncircle", 0x24dd , 0 }, + { "ncircumflexbelow", 0x1e4b , 0 }, + { "ndotaccent", 0x1e45 , 0 }, + { "ndotbelow", 0x1e47 , 0 }, + { "nehiragana", 0x306d , 0 }, + { "nekatakana", 0x30cd , 0 }, + { "nekatakanahalfwidth", 0xff88 , 0 }, + { "newsheqelsign", 0x20aa , 0 }, + { "nfsquare", 0x338b , 0 }, + { "ngabengali", 0x0999 , 0 }, + { "ngadeva", 0x0919 , 0 }, + { "ngagujarati", 0x0a99 , 0 }, + { "ngagurmukhi", 0x0a19 , 0 }, + { "ngonguthai", 0x0e07 , 0 }, + { "nhiragana", 0x3093 , 0 }, + { "nhookleft", 0x0272 , 0 }, + { "nhookretroflex", 0x0273 , 0 }, + { "nieunacirclekorean", 0x326f , 0 }, + { "nieunaparenkorean", 0x320f , 0 }, + { "nieuncieuckorean", 0x3135 , 0 }, + { "nieuncirclekorean", 0x3261 , 0 }, + { "nieunhieuhkorean", 0x3136 , 0 }, + { "nieunkorean", 0x3134 , 0 }, + { "nieunpansioskorean", 0x3168 , 0 }, + { "nieunparenkorean", 0x3201 , 0 }, + { "nieunsioskorean", 0x3167 , 0 }, + { "nieuntikeutkorean", 0x3166 , 0 }, + { "nihiragana", 0x306b , 0 }, + { "nikatakana", 0x30cb , 0 }, + { "nikatakanahalfwidth", 0xff86 , 0 }, + { "nikhahitleftthai", 0xf899 , 0 }, + { "nikhahitthai", 0x0e4d , 0 }, + { "ninearabic", 0x0669 , 0 }, + { "ninebengali", 0x09ef , 0 }, + { "ninecircle", 0x2468 , 0 }, + { "ninecircleinversesansserif", 0x2792 , 0 }, + { "ninedeva", 0x096f , 0 }, + { "ninegujarati", 0x0aef , 0 }, + { "ninegurmukhi", 0x0a6f , 0 }, + { "ninehackarabic", 0x0669 , 0 }, + { "ninehangzhou", 0x3029 , 0 }, + { "nineideographicparen", 0x3228 , 0 }, + { "nineinferior", 0x2089 , 0 }, + { "ninemonospace", 0xff19 , 0 }, + { "nineoldstyle", 0xf739 , 0 }, + { "nineparen", 0x247c , 0 }, + { "nineperiod", 0x2490 , 0 }, + { "ninepersian", 0x06f9 , 0 }, + { "nineroman", 0x2178 , 0 }, + { "ninesuperior", 0x2079 , 0 }, + { "nineteencircle", 0x2472 , 0 }, + { "nineteenparen", 0x2486 , 0 }, + { "nineteenperiod", 0x249a , 0 }, + { "ninethai", 0x0e59 , 0 }, + { "nj", 0x01cc , 0 }, + { "njecyrillic", 0x045a , 0 }, + { "nkatakana", 0x30f3 , 0 }, + { "nkatakanahalfwidth", 0xff9d , 0 }, + { "nlegrightlong", 0x019e , 0 }, + { "nlinebelow", 0x1e49 , 0 }, + { "nmonospace", 0xff4e , 0 }, + { "nmsquare", 0x339a , 0 }, + { "nnabengali", 0x09a3 , 0 }, + { "nnadeva", 0x0923 , 0 }, + { "nnagujarati", 0x0aa3 , 0 }, + { "nnagurmukhi", 0x0a23 , 0 }, + { "nnnadeva", 0x0929 , 0 }, + { "nohiragana", 0x306e , 0 }, + { "nokatakana", 0x30ce , 0 }, + { "nokatakanahalfwidth", 0xff89 , 0 }, + { "nonbreakingspace", 0x00a0 , 0 }, + { "nonenthai", 0x0e13 , 0 }, + { "nonuthai", 0x0e19 , 0 }, + { "noonarabic", 0x0646 , 0 }, + { "noonfinalarabic", 0xfee6 , 0 }, + { "noonghunnaarabic", 0x06ba , 0 }, + { "noonghunnafinalarabic", 0xfb9f , 0 }, + { "noonhehinitialarabic", 0xfee7 , 0 }, + { "nooninitialarabic", 0xfee7 , 0 }, + { "noonjeeminitialarabic", 0xfcd2 , 0 }, + { "noonjeemisolatedarabic", 0xfc4b , 0 }, + { "noonmedialarabic", 0xfee8 , 0 }, + { "noonmeeminitialarabic", 0xfcd5 , 0 }, + { "noonmeemisolatedarabic", 0xfc4e , 0 }, + { "noonnoonfinalarabic", 0xfc8d , 0 }, + { "notcontains", 0x220c , 0 }, + { "notelementof", 0x2209 , 0 }, + { "notgreater", 0x226f , 0 }, + { "notgreaternorequal", 0x2271 , 0 }, + { "notgreaternorless", 0x2279 , 0 }, + { "notidentical", 0x2262 , 0 }, + { "notless", 0x226e , 0 }, + { "notlessnorequal", 0x2270 , 0 }, + { "notparallel", 0x2226 , 0 }, + { "notprecedes", 0x2280 , 0 }, + { "notsucceeds", 0x2281 , 0 }, + { "notsuperset", 0x2285 , 0 }, + { "nowarmenian", 0x0576 , 0 }, + { "nparen", 0x24a9 , 0 }, + { "nssquare", 0x33b1 , 0 }, + { "nsuperior", 0x207f , 0 }, + { "nuhiragana", 0x306c , 0 }, + { "nukatakana", 0x30cc , 0 }, + { "nukatakanahalfwidth", 0xff87 , 0 }, + { "nuktabengali", 0x09bc , 0 }, + { "nuktadeva", 0x093c , 0 }, + { "nuktagujarati", 0x0abc , 0 }, + { "nuktagurmukhi", 0x0a3c , 0 }, + { "numbersignmonospace", 0xff03 , 0 }, + { "numbersignsmall", 0xfe5f , 0 }, + { "numeralsigngreek", 0x0374 , 0 }, + { "numeralsignlowergreek", 0x0375 , 0 }, + { "numero", 0x2116 , 0 }, + { "nun", 0x05e0 , 0 }, + { "nundagesh", 0xfb40 , 0 }, + { "nundageshhebrew", 0xfb40 , 0 }, + { "nunhebrew", 0x05e0 , 0 }, + { "nvsquare", 0x33b5 , 0 }, + { "nwsquare", 0x33bb , 0 }, + { "nyabengali", 0x099e , 0 }, + { "nyadeva", 0x091e , 0 }, + { "nyagujarati", 0x0a9e , 0 }, + { "nyagurmukhi", 0x0a1e , 0 }, + { "oangthai", 0x0e2d , 0 }, + { "obarred", 0x0275 , 0 }, + { "obarredcyrillic", 0x04e9 , 0 }, + { "obarreddieresiscyrillic", 0x04eb , 0 }, + { "obengali", 0x0993 , 0 }, + { "obopomofo", 0x311b , 0 }, + { "ocandradeva", 0x0911 , 0 }, + { "ocandragujarati", 0x0a91 , 0 }, + { "ocandravowelsigndeva", 0x0949 , 0 }, + { "ocandravowelsigngujarati", 0x0ac9 , 0 }, + { "ocaron", 0x01d2 , 0 }, + { "ocircle", 0x24de , 0 }, + { "ocircumflexacute", 0x1ed1 , 0 }, + { "ocircumflexdotbelow", 0x1ed9 , 0 }, + { "ocircumflexgrave", 0x1ed3 , 0 }, + { "ocircumflexhookabove", 0x1ed5 , 0 }, + { "ocircumflextilde", 0x1ed7 , 0 }, + { "ocyrillic", 0x043e , 0 }, + { "odblacute", 0x0151 , 0 }, + { "odblgrave", 0x020d , 0 }, + { "odeva", 0x0913 , 0 }, + { "odieresiscyrillic", 0x04e7 , 0 }, + { "odotbelow", 0x1ecd , 0 }, + { "oekorean", 0x315a , 0 }, + { "ogonekcmb", 0x0328 , 0 }, + { "ogujarati", 0x0a93 , 0 }, + { "oharmenian", 0x0585 , 0 }, + { "ohiragana", 0x304a , 0 }, + { "ohookabove", 0x1ecf , 0 }, + { "ohornacute", 0x1edb , 0 }, + { "ohorndotbelow", 0x1ee3 , 0 }, + { "ohorngrave", 0x1edd , 0 }, + { "ohornhookabove", 0x1edf , 0 }, + { "ohorntilde", 0x1ee1 , 0 }, + { "oi", 0x01a3 , 0 }, + { "oinvertedbreve", 0x020f , 0 }, + { "okatakana", 0x30aa , 0 }, + { "okatakanahalfwidth", 0xff75 , 0 }, + { "okorean", 0x3157 , 0 }, + { "olehebrew", 0x05ab , 0 }, + { "omacronacute", 0x1e53 , 0 }, + { "omacrongrave", 0x1e51 , 0 }, + { "omdeva", 0x0950 , 0 }, + { "omegacyrillic", 0x0461 , 0 }, + { "omegalatinclosed", 0x0277 , 0 }, + { "omegaroundcyrillic", 0x047b , 0 }, + { "omegatitlocyrillic", 0x047d , 0 }, + { "omgujarati", 0x0ad0 , 0 }, + { "omonospace", 0xff4f , 0 }, + { "onearabic", 0x0661 , 0 }, + { "onebengali", 0x09e7 , 0 }, + { "onecircle", 0x2460 , 0 }, + { "onecircleinversesansserif", 0x278a , 0 }, + { "onedeva", 0x0967 , 0 }, + { "onefitted", 0xf6dc , 0 }, + { "onegujarati", 0x0ae7 , 0 }, + { "onegurmukhi", 0x0a67 , 0 }, + { "onehackarabic", 0x0661 , 0 }, + { "onehangzhou", 0x3021 , 0 }, + { "oneideographicparen", 0x3220 , 0 }, + { "oneinferior", 0x2081 , 0 }, + { "onemonospace", 0xff11 , 0 }, + { "onenumeratorbengali", 0x09f4 , 0 }, + { "oneoldstyle", 0xf731 , 0 }, + { "oneparen", 0x2474 , 0 }, + { "oneperiod", 0x2488 , 0 }, + { "onepersian", 0x06f1 , 0 }, + { "oneroman", 0x2170 , 0 }, + { "onesuperior", 0x00b9 , 0 }, + { "onethai", 0x0e51 , 0 }, + { "oogonek", 0x01eb , 0 }, + { "oogonekmacron", 0x01ed , 0 }, + { "oogurmukhi", 0x0a13 , 0 }, + { "oomatragurmukhi", 0x0a4b , 0 }, + { "oopen", 0x0254 , 0 }, + { "oparen", 0x24aa , 0 }, + { "option", 0x2325 , 0 }, + { "oshortdeva", 0x0912 , 0 }, + { "oshortvowelsigndeva", 0x094a , 0 }, + { "osmallhiragana", 0x3049 , 0 }, + { "osmallkatakana", 0x30a9 , 0 }, + { "osmallkatakanahalfwidth", 0xff6b , 0 }, + { "ostrokeacute", 0x01ff , 0 }, + { "osuperior", 0xf6f0 , 0 }, + { "otcyrillic", 0x047f , 0 }, + { "otildeacute", 0x1e4d , 0 }, + { "otildedieresis", 0x1e4f , 0 }, + { "oubopomofo", 0x3121 , 0 }, + { "overline", 0x203e , 0 }, + { "overlinecenterline", 0xfe4a , 0 }, + { "overlinecmb", 0x0305 , 0 }, + { "overlinedashed", 0xfe49 , 0 }, + { "overlinedblwavy", 0xfe4c , 0 }, + { "overlinewavy", 0xfe4b , 0 }, + { "overscore", 0x00af , 0 }, + { "ovowelsignbengali", 0x09cb , 0 }, + { "ovowelsigndeva", 0x094b , 0 }, + { "ovowelsigngujarati", 0x0acb , 0 }, + { "paampssquare", 0x3380 , 0 }, + { "paasentosquare", 0x332b , 0 }, + { "pabengali", 0x09aa , 0 }, + { "pacute", 0x1e55 , 0 }, + { "padeva", 0x092a , 0 }, + { "pagedown", 0x21df , 0 }, + { "pageup", 0x21de , 0 }, + { "pagujarati", 0x0aaa , 0 }, + { "pagurmukhi", 0x0a2a , 0 }, + { "pahiragana", 0x3071 , 0 }, + { "paiyannoithai", 0x0e2f , 0 }, + { "pakatakana", 0x30d1 , 0 }, + { "palatalizationcyrilliccmb", 0x0484 , 0 }, + { "palochkacyrillic", 0x04c0 , 0 }, + { "pansioskorean", 0x317f , 0 }, + { "parallel", 0x2225 , 0 }, + { "parenleftaltonearabic", 0xfd3e , 0 }, + { "parenleftbt", 0xf8ed , 0 }, + { "parenleftex", 0xf8ec , 0 }, + { "parenleftinferior", 0x208d , 0 }, + { "parenleftmonospace", 0xff08 , 0 }, + { "parenleftsmall", 0xfe59 , 0 }, + { "parenleftsuperior", 0x207d , 0 }, + { "parenlefttp", 0xf8eb , 0 }, + { "parenleftvertical", 0xfe35 , 0 }, + { "parenrightaltonearabic", 0xfd3f , 0 }, + { "parenrightbt", 0xf8f8 , 0 }, + { "parenrightex", 0xf8f7 , 0 }, + { "parenrightinferior", 0x208e , 0 }, + { "parenrightmonospace", 0xff09 , 0 }, + { "parenrightsmall", 0xfe5a , 0 }, + { "parenrightsuperior", 0x207e , 0 }, + { "parenrighttp", 0xf8f6 , 0 }, + { "parenrightvertical", 0xfe36 , 0 }, + { "paseqhebrew", 0x05c0 , 0 }, + { "pashtahebrew", 0x0599 , 0 }, + { "pasquare", 0x33a9 , 0 }, + { "patah", 0x05b7 , 0 }, + { "patah11", 0x05b7 , 0 }, + { "patah1d", 0x05b7 , 0 }, + { "patah2a", 0x05b7 , 0 }, + { "patahhebrew", 0x05b7 , 0 }, + { "patahnarrowhebrew", 0x05b7 , 0 }, + { "patahquarterhebrew", 0x05b7 , 0 }, + { "patahwidehebrew", 0x05b7 , 0 }, + { "pazerhebrew", 0x05a1 , 0 }, + { "pbopomofo", 0x3106 , 0 }, + { "pcircle", 0x24df , 0 }, + { "pdotaccent", 0x1e57 , 0 }, + { "pe", 0x05e4 , 0 }, + { "pecyrillic", 0x043f , 0 }, + { "pedagesh", 0xfb44 , 0 }, + { "pedageshhebrew", 0xfb44 , 0 }, + { "peezisquare", 0x333b , 0 }, + { "pefinaldageshhebrew", 0xfb43 , 0 }, + { "peharabic", 0x067e , 0 }, + { "peharmenian", 0x057a , 0 }, + { "pehebrew", 0x05e4 , 0 }, + { "pehfinalarabic", 0xfb57 , 0 }, + { "pehinitialarabic", 0xfb58 , 0 }, + { "pehiragana", 0x307a , 0 }, + { "pehmedialarabic", 0xfb59 , 0 }, + { "pekatakana", 0x30da , 0 }, + { "pemiddlehookcyrillic", 0x04a7 , 0 }, + { "perafehebrew", 0xfb4e , 0 }, + { "percentarabic", 0x066a , 0 }, + { "percentmonospace", 0xff05 , 0 }, + { "percentsmall", 0xfe6a , 0 }, + { "periodarmenian", 0x0589 , 0 }, + { "periodhalfwidth", 0xff61 , 0 }, + { "periodinferior", 0xf6e7 , 0 }, + { "periodmonospace", 0xff0e , 0 }, + { "periodsmall", 0xfe52 , 0 }, + { "periodsuperior", 0xf6e8 , 0 }, + { "perispomenigreekcmb", 0x0342 , 0 }, + { "pfsquare", 0x338a , 0 }, + { "phabengali", 0x09ab , 0 }, + { "phadeva", 0x092b , 0 }, + { "phagujarati", 0x0aab , 0 }, + { "phagurmukhi", 0x0a2b , 0 }, + { "phieuphacirclekorean", 0x327a , 0 }, + { "phieuphaparenkorean", 0x321a , 0 }, + { "phieuphcirclekorean", 0x326c , 0 }, + { "phieuphkorean", 0x314d , 0 }, + { "phieuphparenkorean", 0x320c , 0 }, + { "philatin", 0x0278 , 0 }, + { "phinthuthai", 0x0e3a , 0 }, + { "phisymbolgreek", 0x03d5 , 0 }, + { "phook", 0x01a5 , 0 }, + { "phophanthai", 0x0e1e , 0 }, + { "phophungthai", 0x0e1c , 0 }, + { "phosamphaothai", 0x0e20 , 0 }, + { "pieupacirclekorean", 0x3273 , 0 }, + { "pieupaparenkorean", 0x3213 , 0 }, + { "pieupcieuckorean", 0x3176 , 0 }, + { "pieupcirclekorean", 0x3265 , 0 }, + { "pieupkiyeokkorean", 0x3172 , 0 }, + { "pieupkorean", 0x3142 , 0 }, + { "pieupparenkorean", 0x3205 , 0 }, + { "pieupsioskiyeokkorean", 0x3174 , 0 }, + { "pieupsioskorean", 0x3144 , 0 }, + { "pieupsiostikeutkorean", 0x3175 , 0 }, + { "pieupthieuthkorean", 0x3177 , 0 }, + { "pieuptikeutkorean", 0x3173 , 0 }, + { "pihiragana", 0x3074 , 0 }, + { "pikatakana", 0x30d4 , 0 }, + { "pisymbolgreek", 0x03d6 , 0 }, + { "piwrarmenian", 0x0583 , 0 }, + { "plusbelowcmb", 0x031f , 0 }, + { "pluscircle", 0x2295 , 0 }, + { "plusmod", 0x02d6 , 0 }, + { "plusmonospace", 0xff0b , 0 }, + { "plussmall", 0xfe62 , 0 }, + { "plussuperior", 0x207a , 0 }, + { "pmonospace", 0xff50 , 0 }, + { "pmsquare", 0x33d8 , 0 }, + { "pohiragana", 0x307d , 0 }, + { "pointingindexdownwhite", 0x261f , 0 }, + { "pointingindexleftwhite", 0x261c , 0 }, + { "pointingindexrightwhite", 0x261e , 0 }, + { "pointingindexupwhite", 0x261d , 0 }, + { "pokatakana", 0x30dd , 0 }, + { "poplathai", 0x0e1b , 0 }, + { "postalmark", 0x3012 , 0 }, + { "postalmarkface", 0x3020 , 0 }, + { "pparen", 0x24ab , 0 }, + { "precedes", 0x227a , 0 }, + { "primemod", 0x02b9 , 0 }, + { "primereversed", 0x2035 , 0 }, + { "projective", 0x2305 , 0 }, + { "prolongedkana", 0x30fc , 0 }, + { "propellor", 0x2318 , 0 }, + { "proportion", 0x2237 , 0 }, + { "psicyrillic", 0x0471 , 0 }, + { "psilipneumatacyrilliccmb", 0x0486 , 0 }, + { "pssquare", 0x33b0 , 0 }, + { "puhiragana", 0x3077 , 0 }, + { "pukatakana", 0x30d7 , 0 }, + { "pvsquare", 0x33b4 , 0 }, + { "pwsquare", 0x33ba , 0 }, + { "qadeva", 0x0958 , 0 }, + { "qadmahebrew", 0x05a8 , 0 }, + { "qafarabic", 0x0642 , 0 }, + { "qaffinalarabic", 0xfed6 , 0 }, + { "qafinitialarabic", 0xfed7 , 0 }, + { "qafmedialarabic", 0xfed8 , 0 }, + { "qamats", 0x05b8 , 0 }, + { "qamats10", 0x05b8 , 0 }, + { "qamats1a", 0x05b8 , 0 }, + { "qamats1c", 0x05b8 , 0 }, + { "qamats27", 0x05b8 , 0 }, + { "qamats29", 0x05b8 , 0 }, + { "qamats33", 0x05b8 , 0 }, + { "qamatsde", 0x05b8 , 0 }, + { "qamatshebrew", 0x05b8 , 0 }, + { "qamatsnarrowhebrew", 0x05b8 , 0 }, + { "qamatsqatanhebrew", 0x05b8 , 0 }, + { "qamatsqatannarrowhebrew", 0x05b8 , 0 }, + { "qamatsqatanquarterhebrew", 0x05b8 , 0 }, + { "qamatsqatanwidehebrew", 0x05b8 , 0 }, + { "qamatsquarterhebrew", 0x05b8 , 0 }, + { "qamatswidehebrew", 0x05b8 , 0 }, + { "qarneyparahebrew", 0x059f , 0 }, + { "qbopomofo", 0x3111 , 0 }, + { "qcircle", 0x24e0 , 0 }, + { "qhook", 0x02a0 , 0 }, + { "qmonospace", 0xff51 , 0 }, + { "qof", 0x05e7 , 0 }, + { "qofdagesh", 0xfb47 , 0 }, + { "qofdageshhebrew", 0xfb47 , 0 }, + { "qofhatafpatah", 0x05e7 , 0 }, + { "qofhatafpatahhebrew", 0x05e7 , 0 }, + { "qofhatafsegol", 0x05e7 , 0 }, + { "qofhatafsegolhebrew", 0x05e7 , 0 }, + { "qofhebrew", 0x05e7 , 0 }, + { "qofhiriq", 0x05e7 , 0 }, + { "qofhiriqhebrew", 0x05e7 , 0 }, + { "qofholam", 0x05e7 , 0 }, + { "qofholamhebrew", 0x05e7 , 0 }, + { "qofpatah", 0x05e7 , 0 }, + { "qofpatahhebrew", 0x05e7 , 0 }, + { "qofqamats", 0x05e7 , 0 }, + { "qofqamatshebrew", 0x05e7 , 0 }, + { "qofqubuts", 0x05e7 , 0 }, + { "qofqubutshebrew", 0x05e7 , 0 }, + { "qofsegol", 0x05e7 , 0 }, + { "qofsegolhebrew", 0x05e7 , 0 }, + { "qofsheva", 0x05e7 , 0 }, + { "qofshevahebrew", 0x05e7 , 0 }, + { "qoftsere", 0x05e7 , 0 }, + { "qoftserehebrew", 0x05e7 , 0 }, + { "qparen", 0x24ac , 0 }, + { "quarternote", 0x2669 , 0 }, + { "qubuts", 0x05bb , 0 }, + { "qubuts18", 0x05bb , 0 }, + { "qubuts25", 0x05bb , 0 }, + { "qubuts31", 0x05bb , 0 }, + { "qubutshebrew", 0x05bb , 0 }, + { "qubutsnarrowhebrew", 0x05bb , 0 }, + { "qubutsquarterhebrew", 0x05bb , 0 }, + { "qubutswidehebrew", 0x05bb , 0 }, + { "questionarabic", 0x061f , 0 }, + { "questionarmenian", 0x055e , 0 }, + { "questiondownsmall", 0xf7bf , 0 }, + { "questiongreek", 0x037e , 0 }, + { "questionmonospace", 0xff1f , 0 }, + { "questionsmall", 0xf73f , 0 }, + { "quotedblmonospace", 0xff02 , 0 }, + { "quotedblprime", 0x301e , 0 }, + { "quotedblprimereversed", 0x301d , 0 }, + { "quoteleftreversed", 0x201b , 0 }, + { "quoterightn", 0x0149 , 0 }, + { "quotesinglemonospace", 0xff07 , 0 }, + { "raarmenian", 0x057c , 0 }, + { "rabengali", 0x09b0 , 0 }, + { "radeva", 0x0930 , 0 }, + { "radicalex", 0xf8e5 , 0 }, + { "radoverssquare", 0x33ae , 0 }, + { "radoverssquaredsquare", 0x33af , 0 }, + { "radsquare", 0x33ad , 0 }, + { "rafe", 0x05bf , 0 }, + { "rafehebrew", 0x05bf , 0 }, + { "ragujarati", 0x0ab0 , 0 }, + { "ragurmukhi", 0x0a30 , 0 }, + { "rahiragana", 0x3089 , 0 }, + { "rakatakana", 0x30e9 , 0 }, + { "rakatakanahalfwidth", 0xff97 , 0 }, + { "ralowerdiagonalbengali", 0x09f1 , 0 }, + { "ramiddlediagonalbengali", 0x09f0 , 0 }, + { "ramshorn", 0x0264 , 0 }, + { "ratio", 0x2236 , 0 }, + { "rbopomofo", 0x3116 , 0 }, + { "rcedilla", 0x0157 , 0 }, + { "rcircle", 0x24e1 , 0 }, + { "rdblgrave", 0x0211 , 0 }, + { "rdotaccent", 0x1e59 , 0 }, + { "rdotbelow", 0x1e5b , 0 }, + { "rdotbelowmacron", 0x1e5d , 0 }, + { "referencemark", 0x203b , 0 }, + { "registersans", 0xf8e8 , 0 }, + { "registerserif", 0xf6da , 0 }, + { "reharabic", 0x0631 , 0 }, + { "reharmenian", 0x0580 , 0 }, + { "rehfinalarabic", 0xfeae , 0 }, + { "rehiragana", 0x308c , 0 }, + { "rehyehaleflamarabic", 0x0631 , 0 }, + { "rekatakana", 0x30ec , 0 }, + { "rekatakanahalfwidth", 0xff9a , 0 }, + { "resh", 0x05e8 , 0 }, + { "reshdageshhebrew", 0xfb48 , 0 }, + { "reshhatafpatah", 0x05e8 , 0 }, + { "reshhatafpatahhebrew", 0x05e8 , 0 }, + { "reshhatafsegol", 0x05e8 , 0 }, + { "reshhatafsegolhebrew", 0x05e8 , 0 }, + { "reshhebrew", 0x05e8 , 0 }, + { "reshhiriq", 0x05e8 , 0 }, + { "reshhiriqhebrew", 0x05e8 , 0 }, + { "reshholam", 0x05e8 , 0 }, + { "reshholamhebrew", 0x05e8 , 0 }, + { "reshpatah", 0x05e8 , 0 }, + { "reshpatahhebrew", 0x05e8 , 0 }, + { "reshqamats", 0x05e8 , 0 }, + { "reshqamatshebrew", 0x05e8 , 0 }, + { "reshqubuts", 0x05e8 , 0 }, + { "reshqubutshebrew", 0x05e8 , 0 }, + { "reshsegol", 0x05e8 , 0 }, + { "reshsegolhebrew", 0x05e8 , 0 }, + { "reshsheva", 0x05e8 , 0 }, + { "reshshevahebrew", 0x05e8 , 0 }, + { "reshtsere", 0x05e8 , 0 }, + { "reshtserehebrew", 0x05e8 , 0 }, + { "reversedtilde", 0x223d , 0 }, + { "reviahebrew", 0x0597 , 0 }, + { "reviamugrashhebrew", 0x0597 , 0 }, + { "rfishhook", 0x027e , 0 }, + { "rfishhookreversed", 0x027f , 0 }, + { "rhabengali", 0x09dd , 0 }, + { "rhadeva", 0x095d , 0 }, + { "rhook", 0x027d , 0 }, + { "rhookturned", 0x027b , 0 }, + { "rhookturnedsuperior", 0x02b5 , 0 }, + { "rhosymbolgreek", 0x03f1 , 0 }, + { "rhotichookmod", 0x02de , 0 }, + { "rieulacirclekorean", 0x3271 , 0 }, + { "rieulaparenkorean", 0x3211 , 0 }, + { "rieulcirclekorean", 0x3263 , 0 }, + { "rieulhieuhkorean", 0x3140 , 0 }, + { "rieulkiyeokkorean", 0x313a , 0 }, + { "rieulkiyeoksioskorean", 0x3169 , 0 }, + { "rieulkorean", 0x3139 , 0 }, + { "rieulmieumkorean", 0x313b , 0 }, + { "rieulpansioskorean", 0x316c , 0 }, + { "rieulparenkorean", 0x3203 , 0 }, + { "rieulphieuphkorean", 0x313f , 0 }, + { "rieulpieupkorean", 0x313c , 0 }, + { "rieulpieupsioskorean", 0x316b , 0 }, + { "rieulsioskorean", 0x313d , 0 }, + { "rieulthieuthkorean", 0x313e , 0 }, + { "rieultikeutkorean", 0x316a , 0 }, + { "rieulyeorinhieuhkorean", 0x316d , 0 }, + { "rightangle", 0x221f , 0 }, + { "righttackbelowcmb", 0x0319 , 0 }, + { "righttriangle", 0x22bf , 0 }, + { "rihiragana", 0x308a , 0 }, + { "rikatakana", 0x30ea , 0 }, + { "rikatakanahalfwidth", 0xff98 , 0 }, + { "ringbelowcmb", 0x0325 , 0 }, + { "ringcmb", 0x030a , 0 }, + { "ringhalfleft", 0x02bf , 0 }, + { "ringhalfleftarmenian", 0x0559 , 0 }, + { "ringhalfleftbelowcmb", 0x031c , 0 }, + { "ringhalfleftcentered", 0x02d3 , 0 }, + { "ringhalfright", 0x02be , 0 }, + { "ringhalfrightbelowcmb", 0x0339 , 0 }, + { "ringhalfrightcentered", 0x02d2 , 0 }, + { "rinvertedbreve", 0x0213 , 0 }, + { "rittorusquare", 0x3351 , 0 }, + { "rlinebelow", 0x1e5f , 0 }, + { "rlongleg", 0x027c , 0 }, + { "rlonglegturned", 0x027a , 0 }, + { "rmonospace", 0xff52 , 0 }, + { "rohiragana", 0x308d , 0 }, + { "rokatakana", 0x30ed , 0 }, + { "rokatakanahalfwidth", 0xff9b , 0 }, + { "roruathai", 0x0e23 , 0 }, + { "rparen", 0x24ad , 0 }, + { "rrabengali", 0x09dc , 0 }, + { "rradeva", 0x0931 , 0 }, + { "rragurmukhi", 0x0a5c , 0 }, + { "rreharabic", 0x0691 , 0 }, + { "rrehfinalarabic", 0xfb8d , 0 }, + { "rrvocalicbengali", 0x09e0 , 0 }, + { "rrvocalicdeva", 0x0960 , 0 }, + { "rrvocalicgujarati", 0x0ae0 , 0 }, + { "rrvocalicvowelsignbengali", 0x09c4 , 0 }, + { "rrvocalicvowelsigndeva", 0x0944 , 0 }, + { "rrvocalicvowelsigngujarati", 0x0ac4 , 0 }, + { "rsuperior", 0xf6f1 , 0 }, + { "rturned", 0x0279 , 0 }, + { "rturnedsuperior", 0x02b4 , 0 }, + { "ruhiragana", 0x308b , 0 }, + { "rukatakana", 0x30eb , 0 }, + { "rukatakanahalfwidth", 0xff99 , 0 }, + { "rupeemarkbengali", 0x09f2 , 0 }, + { "rupeesignbengali", 0x09f3 , 0 }, + { "rupiah", 0xf6dd , 0 }, + { "ruthai", 0x0e24 , 0 }, + { "rvocalicbengali", 0x098b , 0 }, + { "rvocalicdeva", 0x090b , 0 }, + { "rvocalicgujarati", 0x0a8b , 0 }, + { "rvocalicvowelsignbengali", 0x09c3 , 0 }, + { "rvocalicvowelsigndeva", 0x0943 , 0 }, + { "rvocalicvowelsigngujarati", 0x0ac3 , 0 }, + { "sabengali", 0x09b8 , 0 }, + { "sacutedotaccent", 0x1e65 , 0 }, + { "sadarabic", 0x0635 , 0 }, + { "sadeva", 0x0938 , 0 }, + { "sadfinalarabic", 0xfeba , 0 }, + { "sadinitialarabic", 0xfebb , 0 }, + { "sadmedialarabic", 0xfebc , 0 }, + { "sagujarati", 0x0ab8 , 0 }, + { "sagurmukhi", 0x0a38 , 0 }, + { "sahiragana", 0x3055 , 0 }, + { "sakatakana", 0x30b5 , 0 }, + { "sakatakanahalfwidth", 0xff7b , 0 }, + { "sallallahoualayhewasallamarabic", 0xfdfa , 0 }, + { "samekh", 0x05e1 , 0 }, + { "samekhdagesh", 0xfb41 , 0 }, + { "samekhdageshhebrew", 0xfb41 , 0 }, + { "samekhhebrew", 0x05e1 , 0 }, + { "saraaathai", 0x0e32 , 0 }, + { "saraaethai", 0x0e41 , 0 }, + { "saraaimaimalaithai", 0x0e44 , 0 }, + { "saraaimaimuanthai", 0x0e43 , 0 }, + { "saraamthai", 0x0e33 , 0 }, + { "saraathai", 0x0e30 , 0 }, + { "saraethai", 0x0e40 , 0 }, + { "saraiileftthai", 0xf886 , 0 }, + { "saraiithai", 0x0e35 , 0 }, + { "saraileftthai", 0xf885 , 0 }, + { "saraithai", 0x0e34 , 0 }, + { "saraothai", 0x0e42 , 0 }, + { "saraueeleftthai", 0xf888 , 0 }, + { "saraueethai", 0x0e37 , 0 }, + { "saraueleftthai", 0xf887 , 0 }, + { "sarauethai", 0x0e36 , 0 }, + { "sarauthai", 0x0e38 , 0 }, + { "sarauuthai", 0x0e39 , 0 }, + { "sbopomofo", 0x3119 , 0 }, + { "scarondotaccent", 0x1e67 , 0 }, + { "schwa", 0x0259 , 0 }, + { "schwacyrillic", 0x04d9 , 0 }, + { "schwadieresiscyrillic", 0x04db , 0 }, + { "schwahook", 0x025a , 0 }, + { "scircle", 0x24e2 , 0 }, + { "sdotaccent", 0x1e61 , 0 }, + { "sdotbelow", 0x1e63 , 0 }, + { "sdotbelowdotaccent", 0x1e69 , 0 }, + { "seagullbelowcmb", 0x033c , 0 }, + { "secondtonechinese", 0x02ca , 0 }, + { "seenarabic", 0x0633 , 0 }, + { "seenfinalarabic", 0xfeb2 , 0 }, + { "seeninitialarabic", 0xfeb3 , 0 }, + { "seenmedialarabic", 0xfeb4 , 0 }, + { "segol", 0x05b6 , 0 }, + { "segol13", 0x05b6 , 0 }, + { "segol1f", 0x05b6 , 0 }, + { "segol2c", 0x05b6 , 0 }, + { "segolhebrew", 0x05b6 , 0 }, + { "segolnarrowhebrew", 0x05b6 , 0 }, + { "segolquarterhebrew", 0x05b6 , 0 }, + { "segoltahebrew", 0x0592 , 0 }, + { "segolwidehebrew", 0x05b6 , 0 }, + { "seharmenian", 0x057d , 0 }, + { "sehiragana", 0x305b , 0 }, + { "sekatakana", 0x30bb , 0 }, + { "sekatakanahalfwidth", 0xff7e , 0 }, + { "semicolonarabic", 0x061b , 0 }, + { "semicolonmonospace", 0xff1b , 0 }, + { "semicolonsmall", 0xfe54 , 0 }, + { "semivoicedmarkkana", 0x309c , 0 }, + { "semivoicedmarkkanahalfwidth", 0xff9f , 0 }, + { "sentisquare", 0x3322 , 0 }, + { "sentosquare", 0x3323 , 0 }, + { "sevenarabic", 0x0667 , 0 }, + { "sevenbengali", 0x09ed , 0 }, + { "sevencircle", 0x2466 , 0 }, + { "sevencircleinversesansserif", 0x2790 , 0 }, + { "sevendeva", 0x096d , 0 }, + { "sevengujarati", 0x0aed , 0 }, + { "sevengurmukhi", 0x0a6d , 0 }, + { "sevenhackarabic", 0x0667 , 0 }, + { "sevenhangzhou", 0x3027 , 0 }, + { "sevenideographicparen", 0x3226 , 0 }, + { "seveninferior", 0x2087 , 0 }, + { "sevenmonospace", 0xff17 , 0 }, + { "sevenoldstyle", 0xf737 , 0 }, + { "sevenparen", 0x247a , 0 }, + { "sevenperiod", 0x248e , 0 }, + { "sevenpersian", 0x06f7 , 0 }, + { "sevenroman", 0x2176 , 0 }, + { "sevensuperior", 0x2077 , 0 }, + { "seventeencircle", 0x2470 , 0 }, + { "seventeenparen", 0x2484 , 0 }, + { "seventeenperiod", 0x2498 , 0 }, + { "seventhai", 0x0e57 , 0 }, + { "sfthyphen", 0x00ad , 0 }, + { "shaarmenian", 0x0577 , 0 }, + { "shabengali", 0x09b6 , 0 }, + { "shacyrillic", 0x0448 , 0 }, + { "shaddaarabic", 0x0651 , 0 }, + { "shaddadammaarabic", 0xfc61 , 0 }, + { "shaddadammatanarabic", 0xfc5e , 0 }, + { "shaddafathaarabic", 0xfc60 , 0 }, + { "shaddafathatanarabic", 0x0651 , 0 }, + { "shaddakasraarabic", 0xfc62 , 0 }, + { "shaddakasratanarabic", 0xfc5f , 0 }, + { "shadedark", 0x2593 , 0 }, + { "shadelight", 0x2591 , 0 }, + { "shademedium", 0x2592 , 0 }, + { "shadeva", 0x0936 , 0 }, + { "shagujarati", 0x0ab6 , 0 }, + { "shagurmukhi", 0x0a36 , 0 }, + { "shalshelethebrew", 0x0593 , 0 }, + { "shbopomofo", 0x3115 , 0 }, + { "shchacyrillic", 0x0449 , 0 }, + { "sheenarabic", 0x0634 , 0 }, + { "sheenfinalarabic", 0xfeb6 , 0 }, + { "sheeninitialarabic", 0xfeb7 , 0 }, + { "sheenmedialarabic", 0xfeb8 , 0 }, + { "sheicoptic", 0x03e3 , 0 }, + { "sheqel", 0x20aa , 0 }, + { "sheqelhebrew", 0x20aa , 0 }, + { "sheva", 0x05b0 , 0 }, + { "sheva115", 0x05b0 , 0 }, + { "sheva15", 0x05b0 , 0 }, + { "sheva22", 0x05b0 , 0 }, + { "sheva2e", 0x05b0 , 0 }, + { "shevahebrew", 0x05b0 , 0 }, + { "shevanarrowhebrew", 0x05b0 , 0 }, + { "shevaquarterhebrew", 0x05b0 , 0 }, + { "shevawidehebrew", 0x05b0 , 0 }, + { "shhacyrillic", 0x04bb , 0 }, + { "shimacoptic", 0x03ed , 0 }, + { "shin", 0x05e9 , 0 }, + { "shindagesh", 0xfb49 , 0 }, + { "shindageshhebrew", 0xfb49 , 0 }, + { "shindageshshindot", 0xfb2c , 0 }, + { "shindageshshindothebrew", 0xfb2c , 0 }, + { "shindageshsindot", 0xfb2d , 0 }, + { "shindageshsindothebrew", 0xfb2d , 0 }, + { "shindothebrew", 0x05c1 , 0 }, + { "shinhebrew", 0x05e9 , 0 }, + { "shinshindot", 0xfb2a , 0 }, + { "shinshindothebrew", 0xfb2a , 0 }, + { "shinsindot", 0xfb2b , 0 }, + { "shinsindothebrew", 0xfb2b , 0 }, + { "shook", 0x0282 , 0 }, + { "sigmafinal", 0x03c2 , 0 }, + { "sigmalunatesymbolgreek", 0x03f2 , 0 }, + { "sihiragana", 0x3057 , 0 }, + { "sikatakana", 0x30b7 , 0 }, + { "sikatakanahalfwidth", 0xff7c , 0 }, + { "siluqhebrew", 0x05bd , 0 }, + { "siluqlefthebrew", 0x05bd , 0 }, + { "sindothebrew", 0x05c2 , 0 }, + { "siosacirclekorean", 0x3274 , 0 }, + { "siosaparenkorean", 0x3214 , 0 }, + { "sioscieuckorean", 0x317e , 0 }, + { "sioscirclekorean", 0x3266 , 0 }, + { "sioskiyeokkorean", 0x317a , 0 }, + { "sioskorean", 0x3145 , 0 }, + { "siosnieunkorean", 0x317b , 0 }, + { "siosparenkorean", 0x3206 , 0 }, + { "siospieupkorean", 0x317d , 0 }, + { "siostikeutkorean", 0x317c , 0 }, + { "sixarabic", 0x0666 , 0 }, + { "sixbengali", 0x09ec , 0 }, + { "sixcircle", 0x2465 , 0 }, + { "sixcircleinversesansserif", 0x278f , 0 }, + { "sixdeva", 0x096c , 0 }, + { "sixgujarati", 0x0aec , 0 }, + { "sixgurmukhi", 0x0a6c , 0 }, + { "sixhackarabic", 0x0666 , 0 }, + { "sixhangzhou", 0x3026 , 0 }, + { "sixideographicparen", 0x3225 , 0 }, + { "sixinferior", 0x2086 , 0 }, + { "sixmonospace", 0xff16 , 0 }, + { "sixoldstyle", 0xf736 , 0 }, + { "sixparen", 0x2479 , 0 }, + { "sixperiod", 0x248d , 0 }, + { "sixpersian", 0x06f6 , 0 }, + { "sixroman", 0x2175 , 0 }, + { "sixsuperior", 0x2076 , 0 }, + { "sixteencircle", 0x246f , 0 }, + { "sixteencurrencydenominatorbengali", 0x09f9 , 0 }, + { "sixteenparen", 0x2483 , 0 }, + { "sixteenperiod", 0x2497 , 0 }, + { "sixthai", 0x0e56 , 0 }, + { "slashmonospace", 0xff0f , 0 }, + { "slong", 0x017f , 0 }, + { "slongdotaccent", 0x1e9b , 0 }, + { "smonospace", 0xff53 , 0 }, + { "sofpasuqhebrew", 0x05c3 , 0 }, + { "softhyphen", 0x00ad , 0 }, + { "softsigncyrillic", 0x044c , 0 }, + { "sohiragana", 0x305d , 0 }, + { "sokatakana", 0x30bd , 0 }, + { "sokatakanahalfwidth", 0xff7f , 0 }, + { "soliduslongoverlaycmb", 0x0338 , 0 }, + { "solidusshortoverlaycmb", 0x0337 , 0 }, + { "sorusithai", 0x0e29 , 0 }, + { "sosalathai", 0x0e28 , 0 }, + { "sosothai", 0x0e0b , 0 }, + { "sosuathai", 0x0e2a , 0 }, + { "spacehackarabic", 0x0020 , 0 }, + { "spadesuitblack", 0x2660 , 0 }, + { "spadesuitwhite", 0x2664 , 0 }, + { "sparen", 0x24ae , 0 }, + { "squarebelowcmb", 0x033b , 0 }, + { "squarecc", 0x33c4 , 0 }, + { "squarecm", 0x339d , 0 }, + { "squarediagonalcrosshatchfill", 0x25a9 , 0 }, + { "squarehorizontalfill", 0x25a4 , 0 }, + { "squarekg", 0x338f , 0 }, + { "squarekm", 0x339e , 0 }, + { "squarekmcapital", 0x33ce , 0 }, + { "squareln", 0x33d1 , 0 }, + { "squarelog", 0x33d2 , 0 }, + { "squaremg", 0x338e , 0 }, + { "squaremil", 0x33d5 , 0 }, + { "squaremm", 0x339c , 0 }, + { "squaremsquared", 0x33a1 , 0 }, + { "squareorthogonalcrosshatchfill", 0x25a6 , 0 }, + { "squareupperlefttolowerrightfill", 0x25a7 , 0 }, + { "squareupperrighttolowerleftfill", 0x25a8 , 0 }, + { "squareverticalfill", 0x25a5 , 0 }, + { "squarewhitewithsmallblack", 0x25a3 , 0 }, + { "srsquare", 0x33db , 0 }, + { "ssabengali", 0x09b7 , 0 }, + { "ssadeva", 0x0937 , 0 }, + { "ssagujarati", 0x0ab7 , 0 }, + { "ssangcieuckorean", 0x3149 , 0 }, + { "ssanghieuhkorean", 0x3185 , 0 }, + { "ssangieungkorean", 0x3180 , 0 }, + { "ssangkiyeokkorean", 0x3132 , 0 }, + { "ssangnieunkorean", 0x3165 , 0 }, + { "ssangpieupkorean", 0x3143 , 0 }, + { "ssangsioskorean", 0x3146 , 0 }, + { "ssangtikeutkorean", 0x3138 , 0 }, + { "ssuperior", 0xf6f2 , 0 }, + { "sterlingmonospace", 0xffe1 , 0 }, + { "strokelongoverlaycmb", 0x0336 , 0 }, + { "strokeshortoverlaycmb", 0x0335 , 0 }, + { "subset", 0x2282 , 0 }, + { "subsetnotequal", 0x228a , 0 }, + { "subsetorequal", 0x2286 , 0 }, + { "succeeds", 0x227b , 0 }, + { "suhiragana", 0x3059 , 0 }, + { "sukatakana", 0x30b9 , 0 }, + { "sukatakanahalfwidth", 0xff7d , 0 }, + { "sukunarabic", 0x0652 , 0 }, + { "superset", 0x2283 , 0 }, + { "supersetnotequal", 0x228b , 0 }, + { "supersetorequal", 0x2287 , 0 }, + { "svsquare", 0x33dc , 0 }, + { "syouwaerasquare", 0x337c , 0 }, + { "tabengali", 0x09a4 , 0 }, + { "tackdown", 0x22a4 , 0 }, + { "tackleft", 0x22a3 , 0 }, + { "tadeva", 0x0924 , 0 }, + { "tagujarati", 0x0aa4 , 0 }, + { "tagurmukhi", 0x0a24 , 0 }, + { "taharabic", 0x0637 , 0 }, + { "tahfinalarabic", 0xfec2 , 0 }, + { "tahinitialarabic", 0xfec3 , 0 }, + { "tahiragana", 0x305f , 0 }, + { "tahmedialarabic", 0xfec4 , 0 }, + { "taisyouerasquare", 0x337d , 0 }, + { "takatakana", 0x30bf , 0 }, + { "takatakanahalfwidth", 0xff80 , 0 }, + { "tatweelarabic", 0x0640 , 0 }, + { "tav", 0x05ea , 0 }, + { "tavdages", 0xfb4a , 0 }, + { "tavdagesh", 0xfb4a , 0 }, + { "tavdageshhebrew", 0xfb4a , 0 }, + { "tavhebrew", 0x05ea , 0 }, + { "tbopomofo", 0x310a , 0 }, + { "tccurl", 0x02a8 , 0 }, + { "tcedilla", 0x0163 , 0 }, + { "tcheharabic", 0x0686 , 0 }, + { "tchehfinalarabic", 0xfb7b , 0 }, + { "tchehinitialarabic", 0xfb7c , 0 }, + { "tchehmedialarabic", 0xfb7d , 0 }, + { "tchehmeeminitialarabic", 0xfb7c , 0 }, + { "tcircle", 0x24e3 , 0 }, + { "tcircumflexbelow", 0x1e71 , 0 }, + { "tdieresis", 0x1e97 , 0 }, + { "tdotaccent", 0x1e6b , 0 }, + { "tdotbelow", 0x1e6d , 0 }, + { "tecyrillic", 0x0442 , 0 }, + { "tedescendercyrillic", 0x04ad , 0 }, + { "teharabic", 0x062a , 0 }, + { "tehfinalarabic", 0xfe96 , 0 }, + { "tehhahinitialarabic", 0xfca2 , 0 }, + { "tehhahisolatedarabic", 0xfc0c , 0 }, + { "tehinitialarabic", 0xfe97 , 0 }, + { "tehiragana", 0x3066 , 0 }, + { "tehjeeminitialarabic", 0xfca1 , 0 }, + { "tehjeemisolatedarabic", 0xfc0b , 0 }, + { "tehmarbutaarabic", 0x0629 , 0 }, + { "tehmarbutafinalarabic", 0xfe94 , 0 }, + { "tehmedialarabic", 0xfe98 , 0 }, + { "tehmeeminitialarabic", 0xfca4 , 0 }, + { "tehmeemisolatedarabic", 0xfc0e , 0 }, + { "tehnoonfinalarabic", 0xfc73 , 0 }, + { "tekatakana", 0x30c6 , 0 }, + { "tekatakanahalfwidth", 0xff83 , 0 }, + { "telephone", 0x2121 , 0 }, + { "telephoneblack", 0x260e , 0 }, + { "telishagedolahebrew", 0x05a0 , 0 }, + { "telishaqetanahebrew", 0x05a9 , 0 }, + { "tencircle", 0x2469 , 0 }, + { "tenideographicparen", 0x3229 , 0 }, + { "tenparen", 0x247d , 0 }, + { "tenperiod", 0x2491 , 0 }, + { "tenroman", 0x2179 , 0 }, + { "tesh", 0x02a7 , 0 }, + { "tet", 0x05d8 , 0 }, + { "tetdagesh", 0xfb38 , 0 }, + { "tetdageshhebrew", 0xfb38 , 0 }, + { "tethebrew", 0x05d8 , 0 }, + { "tetsecyrillic", 0x04b5 , 0 }, + { "tevirhebrew", 0x059b , 0 }, + { "tevirlefthebrew", 0x059b , 0 }, + { "thabengali", 0x09a5 , 0 }, + { "thadeva", 0x0925 , 0 }, + { "thagujarati", 0x0aa5 , 0 }, + { "thagurmukhi", 0x0a25 , 0 }, + { "thalarabic", 0x0630 , 0 }, + { "thalfinalarabic", 0xfeac , 0 }, + { "thanthakhatlowleftthai", 0xf898 , 0 }, + { "thanthakhatlowrightthai", 0xf897 , 0 }, + { "thanthakhatthai", 0x0e4c , 0 }, + { "thanthakhatupperleftthai", 0xf896 , 0 }, + { "theharabic", 0x062b , 0 }, + { "thehfinalarabic", 0xfe9a , 0 }, + { "thehinitialarabic", 0xfe9b , 0 }, + { "thehmedialarabic", 0xfe9c , 0 }, + { "thereexists", 0x2203 , 0 }, + { "thetasymbolgreek", 0x03d1 , 0 }, + { "thieuthacirclekorean", 0x3279 , 0 }, + { "thieuthaparenkorean", 0x3219 , 0 }, + { "thieuthcirclekorean", 0x326b , 0 }, + { "thieuthkorean", 0x314c , 0 }, + { "thieuthparenkorean", 0x320b , 0 }, + { "thirteencircle", 0x246c , 0 }, + { "thirteenparen", 0x2480 , 0 }, + { "thirteenperiod", 0x2494 , 0 }, + { "thonangmonthothai", 0x0e11 , 0 }, + { "thook", 0x01ad , 0 }, + { "thophuthaothai", 0x0e12 , 0 }, + { "thothahanthai", 0x0e17 , 0 }, + { "thothanthai", 0x0e10 , 0 }, + { "thothongthai", 0x0e18 , 0 }, + { "thothungthai", 0x0e16 , 0 }, + { "thousandcyrillic", 0x0482 , 0 }, + { "thousandsseparatorarabic", 0x066c , 0 }, + { "thousandsseparatorpersian", 0x066c , 0 }, + { "threearabic", 0x0663 , 0 }, + { "threebengali", 0x09e9 , 0 }, + { "threecircle", 0x2462 , 0 }, + { "threecircleinversesansserif", 0x278c , 0 }, + { "threedeva", 0x0969 , 0 }, + { "threegujarati", 0x0ae9 , 0 }, + { "threegurmukhi", 0x0a69 , 0 }, + { "threehackarabic", 0x0663 , 0 }, + { "threehangzhou", 0x3023 , 0 }, + { "threeideographicparen", 0x3222 , 0 }, + { "threeinferior", 0x2083 , 0 }, + { "threemonospace", 0xff13 , 0 }, + { "threenumeratorbengali", 0x09f6 , 0 }, + { "threeoldstyle", 0xf733 , 0 }, + { "threeparen", 0x2476 , 0 }, + { "threeperiod", 0x248a , 0 }, + { "threepersian", 0x06f3 , 0 }, + { "threequartersemdash", 0xf6de , 0 }, + { "threeroman", 0x2172 , 0 }, + { "threesuperior", 0x00b3 , 0 }, + { "threethai", 0x0e53 , 0 }, + { "thzsquare", 0x3394 , 0 }, + { "tihiragana", 0x3061 , 0 }, + { "tikatakana", 0x30c1 , 0 }, + { "tikatakanahalfwidth", 0xff81 , 0 }, + { "tikeutacirclekorean", 0x3270 , 0 }, + { "tikeutaparenkorean", 0x3210 , 0 }, + { "tikeutcirclekorean", 0x3262 , 0 }, + { "tikeutkorean", 0x3137 , 0 }, + { "tikeutparenkorean", 0x3202 , 0 }, + { "tildebelowcmb", 0x0330 , 0 }, + { "tildecmb", 0x0303 , 0 }, + { "tildedoublecmb", 0x0360 , 0 }, + { "tildeoperator", 0x223c , 0 }, + { "tildeoverlaycmb", 0x0334 , 0 }, + { "tildeverticalcmb", 0x033e , 0 }, + { "timescircle", 0x2297 , 0 }, + { "tipehahebrew", 0x0596 , 0 }, + { "tipehalefthebrew", 0x0596 , 0 }, + { "tippigurmukhi", 0x0a70 , 0 }, + { "titlocyrilliccmb", 0x0483 , 0 }, + { "tiwnarmenian", 0x057f , 0 }, + { "tlinebelow", 0x1e6f , 0 }, + { "tmonospace", 0xff54 , 0 }, + { "toarmenian", 0x0569 , 0 }, + { "tohiragana", 0x3068 , 0 }, + { "tokatakana", 0x30c8 , 0 }, + { "tokatakanahalfwidth", 0xff84 , 0 }, + { "tonebarextrahighmod", 0x02e5 , 0 }, + { "tonebarextralowmod", 0x02e9 , 0 }, + { "tonebarhighmod", 0x02e6 , 0 }, + { "tonebarlowmod", 0x02e8 , 0 }, + { "tonebarmidmod", 0x02e7 , 0 }, + { "tonefive", 0x01bd , 0 }, + { "tonesix", 0x0185 , 0 }, + { "tonetwo", 0x01a8 , 0 }, + { "tonsquare", 0x3327 , 0 }, + { "topatakthai", 0x0e0f , 0 }, + { "tortoiseshellbracketleft", 0x3014 , 0 }, + { "tortoiseshellbracketleftsmall", 0xfe5d , 0 }, + { "tortoiseshellbracketleftvertical", 0xfe39 , 0 }, + { "tortoiseshellbracketright", 0x3015 , 0 }, + { "tortoiseshellbracketrightsmall", 0xfe5e , 0 }, + { "tortoiseshellbracketrightvertical", 0xfe3a , 0 }, + { "totaothai", 0x0e15 , 0 }, + { "tpalatalhook", 0x01ab , 0 }, + { "tparen", 0x24af , 0 }, + { "trademarksans", 0xf8ea , 0 }, + { "trademarkserif", 0xf6db , 0 }, + { "tretroflexhook", 0x0288 , 0 }, + { "ts", 0x02a6 , 0 }, + { "tsadi", 0x05e6 , 0 }, + { "tsadidagesh", 0xfb46 , 0 }, + { "tsadidageshhebrew", 0xfb46 , 0 }, + { "tsadihebrew", 0x05e6 , 0 }, + { "tsecyrillic", 0x0446 , 0 }, + { "tsere", 0x05b5 , 0 }, + { "tsere12", 0x05b5 , 0 }, + { "tsere1e", 0x05b5 , 0 }, + { "tsere2b", 0x05b5 , 0 }, + { "tserehebrew", 0x05b5 , 0 }, + { "tserenarrowhebrew", 0x05b5 , 0 }, + { "tserequarterhebrew", 0x05b5 , 0 }, + { "tserewidehebrew", 0x05b5 , 0 }, + { "tshecyrillic", 0x045b , 0 }, + { "tsuperior", 0xf6f3 , 0 }, + { "ttabengali", 0x099f , 0 }, + { "ttadeva", 0x091f , 0 }, + { "ttagujarati", 0x0a9f , 0 }, + { "ttagurmukhi", 0x0a1f , 0 }, + { "tteharabic", 0x0679 , 0 }, + { "ttehfinalarabic", 0xfb67 , 0 }, + { "ttehinitialarabic", 0xfb68 , 0 }, + { "ttehmedialarabic", 0xfb69 , 0 }, + { "tthabengali", 0x09a0 , 0 }, + { "tthadeva", 0x0920 , 0 }, + { "tthagujarati", 0x0aa0 , 0 }, + { "tthagurmukhi", 0x0a20 , 0 }, + { "tturned", 0x0287 , 0 }, + { "tuhiragana", 0x3064 , 0 }, + { "tukatakana", 0x30c4 , 0 }, + { "tukatakanahalfwidth", 0xff82 , 0 }, + { "tusmallhiragana", 0x3063 , 0 }, + { "tusmallkatakana", 0x30c3 , 0 }, + { "tusmallkatakanahalfwidth", 0xff6f , 0 }, + { "twelvecircle", 0x246b , 0 }, + { "twelveparen", 0x247f , 0 }, + { "twelveperiod", 0x2493 , 0 }, + { "twelveroman", 0x217b , 0 }, + { "twentycircle", 0x2473 , 0 }, + { "twentyhangzhou", 0x5344 , 0 }, + { "twentyparen", 0x2487 , 0 }, + { "twentyperiod", 0x249b , 0 }, + { "twoarabic", 0x0662 , 0 }, + { "twobengali", 0x09e8 , 0 }, + { "twocircle", 0x2461 , 0 }, + { "twocircleinversesansserif", 0x278b , 0 }, + { "twodeva", 0x0968 , 0 }, + { "twodotleader", 0x2025 , 0 }, + { "twodotleadervertical", 0xfe30 , 0 }, + { "twogujarati", 0x0ae8 , 0 }, + { "twogurmukhi", 0x0a68 , 0 }, + { "twohackarabic", 0x0662 , 0 }, + { "twohangzhou", 0x3022 , 0 }, + { "twoideographicparen", 0x3221 , 0 }, + { "twoinferior", 0x2082 , 0 }, + { "twomonospace", 0xff12 , 0 }, + { "twonumeratorbengali", 0x09f5 , 0 }, + { "twooldstyle", 0xf732 , 0 }, + { "twoparen", 0x2475 , 0 }, + { "twoperiod", 0x2489 , 0 }, + { "twopersian", 0x06f2 , 0 }, + { "tworoman", 0x2171 , 0 }, + { "twostroke", 0x01bb , 0 }, + { "twosuperior", 0x00b2 , 0 }, + { "twothai", 0x0e52 , 0 }, + { "ubar", 0x0289 , 0 }, + { "ubengali", 0x0989 , 0 }, + { "ubopomofo", 0x3128 , 0 }, + { "ucaron", 0x01d4 , 0 }, + { "ucircle", 0x24e4 , 0 }, + { "ucircumflexbelow", 0x1e77 , 0 }, + { "ucyrillic", 0x0443 , 0 }, + { "udattadeva", 0x0951 , 0 }, + { "udblacute", 0x0171 , 0 }, + { "udblgrave", 0x0215 , 0 }, + { "udeva", 0x0909 , 0 }, + { "udieresisacute", 0x01d8 , 0 }, + { "udieresisbelow", 0x1e73 , 0 }, + { "udieresiscaron", 0x01da , 0 }, + { "udieresiscyrillic", 0x04f1 , 0 }, + { "udieresisgrave", 0x01dc , 0 }, + { "udieresismacron", 0x01d6 , 0 }, + { "udotbelow", 0x1ee5 , 0 }, + { "ugujarati", 0x0a89 , 0 }, + { "ugurmukhi", 0x0a09 , 0 }, + { "uhiragana", 0x3046 , 0 }, + { "uhookabove", 0x1ee7 , 0 }, + { "uhornacute", 0x1ee9 , 0 }, + { "uhorndotbelow", 0x1ef1 , 0 }, + { "uhorngrave", 0x1eeb , 0 }, + { "uhornhookabove", 0x1eed , 0 }, + { "uhorntilde", 0x1eef , 0 }, + { "uhungarumlautcyrillic", 0x04f3 , 0 }, + { "uinvertedbreve", 0x0217 , 0 }, + { "ukatakana", 0x30a6 , 0 }, + { "ukatakanahalfwidth", 0xff73 , 0 }, + { "ukcyrillic", 0x0479 , 0 }, + { "ukorean", 0x315c , 0 }, + { "umacroncyrillic", 0x04ef , 0 }, + { "umacrondieresis", 0x1e7b , 0 }, + { "umatragurmukhi", 0x0a41 , 0 }, + { "umonospace", 0xff55 , 0 }, + { "underscoremonospace", 0xff3f , 0 }, + { "underscorevertical", 0xfe33 , 0 }, + { "underscorewavy", 0xfe4f , 0 }, + { "uparen", 0x24b0 , 0 }, + { "upperdothebrew", 0x05c4 , 0 }, + { "upsilonlatin", 0x028a , 0 }, + { "uptackbelowcmb", 0x031d , 0 }, + { "uptackmod", 0x02d4 , 0 }, + { "uragurmukhi", 0x0a73 , 0 }, + { "ushortcyrillic", 0x045e , 0 }, + { "usmallhiragana", 0x3045 , 0 }, + { "usmallkatakana", 0x30a5 , 0 }, + { "usmallkatakanahalfwidth", 0xff69 , 0 }, + { "ustraightcyrillic", 0x04af , 0 }, + { "ustraightstrokecyrillic", 0x04b1 , 0 }, + { "utildeacute", 0x1e79 , 0 }, + { "utildebelow", 0x1e75 , 0 }, + { "uubengali", 0x098a , 0 }, + { "uudeva", 0x090a , 0 }, + { "uugujarati", 0x0a8a , 0 }, + { "uugurmukhi", 0x0a0a , 0 }, + { "uumatragurmukhi", 0x0a42 , 0 }, + { "uuvowelsignbengali", 0x09c2 , 0 }, + { "uuvowelsigndeva", 0x0942 , 0 }, + { "uuvowelsigngujarati", 0x0ac2 , 0 }, + { "uvowelsignbengali", 0x09c1 , 0 }, + { "uvowelsigndeva", 0x0941 , 0 }, + { "uvowelsigngujarati", 0x0ac1 , 0 }, + { "vadeva", 0x0935 , 0 }, + { "vagujarati", 0x0ab5 , 0 }, + { "vagurmukhi", 0x0a35 , 0 }, + { "vakatakana", 0x30f7 , 0 }, + { "vav", 0x05d5 , 0 }, + { "vavdagesh", 0xfb35 , 0 }, + { "vavdagesh65", 0xfb35 , 0 }, + { "vavdageshhebrew", 0xfb35 , 0 }, + { "vavhebrew", 0x05d5 , 0 }, + { "vavholam", 0xfb4b , 0 }, + { "vavholamhebrew", 0xfb4b , 0 }, + { "vavvavhebrew", 0x05f0 , 0 }, + { "vavyodhebrew", 0x05f1 , 0 }, + { "vcircle", 0x24e5 , 0 }, + { "vdotbelow", 0x1e7f , 0 }, + { "vecyrillic", 0x0432 , 0 }, + { "veharabic", 0x06a4 , 0 }, + { "vehfinalarabic", 0xfb6b , 0 }, + { "vehinitialarabic", 0xfb6c , 0 }, + { "vehmedialarabic", 0xfb6d , 0 }, + { "vekatakana", 0x30f9 , 0 }, + { "venus", 0x2640 , 0 }, + { "verticalbar", 0x007c , 0 }, + { "verticallineabovecmb", 0x030d , 0 }, + { "verticallinebelowcmb", 0x0329 , 0 }, + { "verticallinelowmod", 0x02cc , 0 }, + { "verticallinemod", 0x02c8 , 0 }, + { "vewarmenian", 0x057e , 0 }, + { "vhook", 0x028b , 0 }, + { "vikatakana", 0x30f8 , 0 }, + { "viramabengali", 0x09cd , 0 }, + { "viramadeva", 0x094d , 0 }, + { "viramagujarati", 0x0acd , 0 }, + { "visargabengali", 0x0983 , 0 }, + { "visargadeva", 0x0903 , 0 }, + { "visargagujarati", 0x0a83 , 0 }, + { "vmonospace", 0xff56 , 0 }, + { "voarmenian", 0x0578 , 0 }, + { "voicediterationhiragana", 0x309e , 0 }, + { "voicediterationkatakana", 0x30fe , 0 }, + { "voicedmarkkana", 0x309b , 0 }, + { "voicedmarkkanahalfwidth", 0xff9e , 0 }, + { "vokatakana", 0x30fa , 0 }, + { "vparen", 0x24b1 , 0 }, + { "vtilde", 0x1e7d , 0 }, + { "vturned", 0x028c , 0 }, + { "vuhiragana", 0x3094 , 0 }, + { "vukatakana", 0x30f4 , 0 }, + { "waekorean", 0x3159 , 0 }, + { "wahiragana", 0x308f , 0 }, + { "wakatakana", 0x30ef , 0 }, + { "wakatakanahalfwidth", 0xff9c , 0 }, + { "wakorean", 0x3158 , 0 }, + { "wasmallhiragana", 0x308e , 0 }, + { "wasmallkatakana", 0x30ee , 0 }, + { "wattosquare", 0x3357 , 0 }, + { "wavedash", 0x301c , 0 }, + { "wavyunderscorevertical", 0xfe34 , 0 }, + { "wawarabic", 0x0648 , 0 }, + { "wawfinalarabic", 0xfeee , 0 }, + { "wawhamzaabovearabic", 0x0624 , 0 }, + { "wawhamzaabovefinalarabic", 0xfe86 , 0 }, + { "wbsquare", 0x33dd , 0 }, + { "wcircle", 0x24e6 , 0 }, + { "wdotaccent", 0x1e87 , 0 }, + { "wdotbelow", 0x1e89 , 0 }, + { "wehiragana", 0x3091 , 0 }, + { "wekatakana", 0x30f1 , 0 }, + { "wekorean", 0x315e , 0 }, + { "weokorean", 0x315d , 0 }, + { "whitebullet", 0x25e6 , 0 }, + { "whitecircle", 0x25cb , 0 }, + { "whitecircleinverse", 0x25d9 , 0 }, + { "whitecornerbracketleft", 0x300e , 0 }, + { "whitecornerbracketleftvertical", 0xfe43 , 0 }, + { "whitecornerbracketright", 0x300f , 0 }, + { "whitecornerbracketrightvertical", 0xfe44 , 0 }, + { "whitediamond", 0x25c7 , 0 }, + { "whitediamondcontainingblacksmalldiamond", 0x25c8 , 0 }, + { "whitedownpointingsmalltriangle", 0x25bf , 0 }, + { "whitedownpointingtriangle", 0x25bd , 0 }, + { "whiteleftpointingsmalltriangle", 0x25c3 , 0 }, + { "whiteleftpointingtriangle", 0x25c1 , 0 }, + { "whitelenticularbracketleft", 0x3016 , 0 }, + { "whitelenticularbracketright", 0x3017 , 0 }, + { "whiterightpointingsmalltriangle", 0x25b9 , 0 }, + { "whiterightpointingtriangle", 0x25b7 , 0 }, + { "whitesmallsquare", 0x25ab , 0 }, + { "whitesmilingface", 0x263a , 0 }, + { "whitesquare", 0x25a1 , 0 }, + { "whitestar", 0x2606 , 0 }, + { "whitetelephone", 0x260f , 0 }, + { "whitetortoiseshellbracketleft", 0x3018 , 0 }, + { "whitetortoiseshellbracketright", 0x3019 , 0 }, + { "whiteuppointingsmalltriangle", 0x25b5 , 0 }, + { "whiteuppointingtriangle", 0x25b3 , 0 }, + { "wihiragana", 0x3090 , 0 }, + { "wikatakana", 0x30f0 , 0 }, + { "wikorean", 0x315f , 0 }, + { "wmonospace", 0xff57 , 0 }, + { "wohiragana", 0x3092 , 0 }, + { "wokatakana", 0x30f2 , 0 }, + { "wokatakanahalfwidth", 0xff66 , 0 }, + { "won", 0x20a9 , 0 }, + { "wonmonospace", 0xffe6 , 0 }, + { "wowaenthai", 0x0e27 , 0 }, + { "wparen", 0x24b2 , 0 }, + { "wring", 0x1e98 , 0 }, + { "wsuperior", 0x02b7 , 0 }, + { "wturned", 0x028d , 0 }, + { "wynn", 0x01bf , 0 }, + { "xabovecmb", 0x033d , 0 }, + { "xbopomofo", 0x3112 , 0 }, + { "xcircle", 0x24e7 , 0 }, + { "xdieresis", 0x1e8d , 0 }, + { "xdotaccent", 0x1e8b , 0 }, + { "xeharmenian", 0x056d , 0 }, + { "xmonospace", 0xff58 , 0 }, + { "xparen", 0x24b3 , 0 }, + { "xsuperior", 0x02e3 , 0 }, + { "yaadosquare", 0x334e , 0 }, + { "yabengali", 0x09af , 0 }, + { "yadeva", 0x092f , 0 }, + { "yaekorean", 0x3152 , 0 }, + { "yagujarati", 0x0aaf , 0 }, + { "yagurmukhi", 0x0a2f , 0 }, + { "yahiragana", 0x3084 , 0 }, + { "yakatakana", 0x30e4 , 0 }, + { "yakatakanahalfwidth", 0xff94 , 0 }, + { "yakorean", 0x3151 , 0 }, + { "yamakkanthai", 0x0e4e , 0 }, + { "yasmallhiragana", 0x3083 , 0 }, + { "yasmallkatakana", 0x30e3 , 0 }, + { "yasmallkatakanahalfwidth", 0xff6c , 0 }, + { "yatcyrillic", 0x0463 , 0 }, + { "ycircle", 0x24e8 , 0 }, + { "ydotaccent", 0x1e8f , 0 }, + { "ydotbelow", 0x1ef5 , 0 }, + { "yeharabic", 0x064a , 0 }, + { "yehbarreearabic", 0x06d2 , 0 }, + { "yehbarreefinalarabic", 0xfbaf , 0 }, + { "yehfinalarabic", 0xfef2 , 0 }, + { "yehhamzaabovearabic", 0x0626 , 0 }, + { "yehhamzaabovefinalarabic", 0xfe8a , 0 }, + { "yehhamzaaboveinitialarabic", 0xfe8b , 0 }, + { "yehhamzaabovemedialarabic", 0xfe8c , 0 }, + { "yehinitialarabic", 0xfef3 , 0 }, + { "yehmedialarabic", 0xfef4 , 0 }, + { "yehmeeminitialarabic", 0xfcdd , 0 }, + { "yehmeemisolatedarabic", 0xfc58 , 0 }, + { "yehnoonfinalarabic", 0xfc94 , 0 }, + { "yehthreedotsbelowarabic", 0x06d1 , 0 }, + { "yekorean", 0x3156 , 0 }, + { "yenmonospace", 0xffe5 , 0 }, + { "yeokorean", 0x3155 , 0 }, + { "yeorinhieuhkorean", 0x3186 , 0 }, + { "yerahbenyomohebrew", 0x05aa , 0 }, + { "yerahbenyomolefthebrew", 0x05aa , 0 }, + { "yericyrillic", 0x044b , 0 }, + { "yerudieresiscyrillic", 0x04f9 , 0 }, + { "yesieungkorean", 0x3181 , 0 }, + { "yesieungpansioskorean", 0x3183 , 0 }, + { "yesieungsioskorean", 0x3182 , 0 }, + { "yetivhebrew", 0x059a , 0 }, + { "yhook", 0x01b4 , 0 }, + { "yhookabove", 0x1ef7 , 0 }, + { "yiarmenian", 0x0575 , 0 }, + { "yicyrillic", 0x0457 , 0 }, + { "yikorean", 0x3162 , 0 }, + { "yinyang", 0x262f , 0 }, + { "yiwnarmenian", 0x0582 , 0 }, + { "ymonospace", 0xff59 , 0 }, + { "yod", 0x05d9 , 0 }, + { "yoddagesh", 0xfb39 , 0 }, + { "yoddageshhebrew", 0xfb39 , 0 }, + { "yodhebrew", 0x05d9 , 0 }, + { "yodyodhebrew", 0x05f2 , 0 }, + { "yodyodpatahhebrew", 0xfb1f , 0 }, + { "yohiragana", 0x3088 , 0 }, + { "yoikorean", 0x3189 , 0 }, + { "yokatakana", 0x30e8 , 0 }, + { "yokatakanahalfwidth", 0xff96 , 0 }, + { "yokorean", 0x315b , 0 }, + { "yosmallhiragana", 0x3087 , 0 }, + { "yosmallkatakana", 0x30e7 , 0 }, + { "yosmallkatakanahalfwidth", 0xff6e , 0 }, + { "yotgreek", 0x03f3 , 0 }, + { "yoyaekorean", 0x3188 , 0 }, + { "yoyakorean", 0x3187 , 0 }, + { "yoyakthai", 0x0e22 , 0 }, + { "yoyingthai", 0x0e0d , 0 }, + { "yparen", 0x24b4 , 0 }, + { "ypogegrammeni", 0x037a , 0 }, + { "ypogegrammenigreekcmb", 0x0345 , 0 }, + { "yr", 0x01a6 , 0 }, + { "yring", 0x1e99 , 0 }, + { "ysuperior", 0x02b8 , 0 }, + { "ytilde", 0x1ef9 , 0 }, + { "yturned", 0x028e , 0 }, + { "yuhiragana", 0x3086 , 0 }, + { "yuikorean", 0x318c , 0 }, + { "yukatakana", 0x30e6 , 0 }, + { "yukatakanahalfwidth", 0xff95 , 0 }, + { "yukorean", 0x3160 , 0 }, + { "yusbigcyrillic", 0x046b , 0 }, + { "yusbigiotifiedcyrillic", 0x046d , 0 }, + { "yuslittlecyrillic", 0x0467 , 0 }, + { "yuslittleiotifiedcyrillic", 0x0469 , 0 }, + { "yusmallhiragana", 0x3085 , 0 }, + { "yusmallkatakana", 0x30e5 , 0 }, + { "yusmallkatakanahalfwidth", 0xff6d , 0 }, + { "yuyekorean", 0x318b , 0 }, + { "yuyeokorean", 0x318a , 0 }, + { "yyabengali", 0x09df , 0 }, + { "yyadeva", 0x095f , 0 }, + { "zaarmenian", 0x0566 , 0 }, + { "zadeva", 0x095b , 0 }, + { "zagurmukhi", 0x0a5b , 0 }, + { "zaharabic", 0x0638 , 0 }, + { "zahfinalarabic", 0xfec6 , 0 }, + { "zahinitialarabic", 0xfec7 , 0 }, + { "zahiragana", 0x3056 , 0 }, + { "zahmedialarabic", 0xfec8 , 0 }, + { "zainarabic", 0x0632 , 0 }, + { "zainfinalarabic", 0xfeb0 , 0 }, + { "zakatakana", 0x30b6 , 0 }, + { "zaqefgadolhebrew", 0x0595 , 0 }, + { "zaqefqatanhebrew", 0x0594 , 0 }, + { "zarqahebrew", 0x0598 , 0 }, + { "zayin", 0x05d6 , 0 }, + { "zayindagesh", 0xfb36 , 0 }, + { "zayindageshhebrew", 0xfb36 , 0 }, + { "zayinhebrew", 0x05d6 , 0 }, + { "zbopomofo", 0x3117 , 0 }, + { "zcircle", 0x24e9 , 0 }, + { "zcircumflex", 0x1e91 , 0 }, + { "zcurl", 0x0291 , 0 }, + { "zdot", 0x017c , 0 }, + { "zdotbelow", 0x1e93 , 0 }, + { "zecyrillic", 0x0437 , 0 }, + { "zedescendercyrillic", 0x0499 , 0 }, + { "zedieresiscyrillic", 0x04df , 0 }, + { "zehiragana", 0x305c , 0 }, + { "zekatakana", 0x30bc , 0 }, + { "zeroarabic", 0x0660 , 0 }, + { "zerobengali", 0x09e6 , 0 }, + { "zerodeva", 0x0966 , 0 }, + { "zerogujarati", 0x0ae6 , 0 }, + { "zerogurmukhi", 0x0a66 , 0 }, + { "zerohackarabic", 0x0660 , 0 }, + { "zeroinferior", 0x2080 , 0 }, + { "zeromonospace", 0xff10 , 0 }, + { "zerooldstyle", 0xf730 , 0 }, + { "zeropersian", 0x06f0 , 0 }, + { "zerosuperior", 0x2070 , 0 }, + { "zerothai", 0x0e50 , 0 }, + { "zerowidthjoiner", 0xfeff , 0 }, + { "zerowidthnonjoiner", 0x200c , 0 }, + { "zerowidthspace", 0x200b , 0 }, + { "zhbopomofo", 0x3113 , 0 }, + { "zhearmenian", 0x056a , 0 }, + { "zhebrevecyrillic", 0x04c2 , 0 }, + { "zhecyrillic", 0x0436 , 0 }, + { "zhedescendercyrillic", 0x0497 , 0 }, + { "zhedieresiscyrillic", 0x04dd , 0 }, + { "zihiragana", 0x3058 , 0 }, + { "zikatakana", 0x30b8 , 0 }, + { "zinorhebrew", 0x05ae , 0 }, + { "zlinebelow", 0x1e95 , 0 }, + { "zmonospace", 0xff5a , 0 }, + { "zohiragana", 0x305e , 0 }, + { "zokatakana", 0x30be , 0 }, + { "zparen", 0x24b5 , 0 }, + { "zretroflexhook", 0x0290 , 0 }, + { "zstroke", 0x01b6 , 0 }, + { "zuhiragana", 0x305a , 0 }, + { "zukatakana", 0x30ba , 0 }, + { "dotaccent.cap", 0xefed , 0 }, + { "breve.cap", 0xefee , 0 }, + { "ogonek.cap", 0xeff1 , 0 }, + { "cedilla.cap", 0xeff2 , 0 }, + { "ring.cap", 0xeff3 , 0 }, + { "tilde.cap", 0xeff5 , 0 }, + { "circumflex.cap", 0xeff7 , 0 }, + { "a1", 0x2701 , 0 }, + { "a2", 0x2702 , 0 }, + { "a202", 0x2703 , 0 }, + { "a3", 0x2704 , 0 }, + { "a4", 0x260e , 0 }, + { "a5", 0x2706 , 0 }, + { "a119", 0x2707 , 0 }, + { "a118", 0x2708 , 0 }, + { "a117", 0x2709 , 0 }, + { "a11", 0x261b , 0 }, + { "a12", 0x261e , 0 }, + { "a13", 0x270c , 0 }, + { "a14", 0x270d , 0 }, + { "a15", 0x270e , 0 }, + { "a16", 0x270f , 0 }, + { "a105", 0x2710 , 0 }, + { "a17", 0x2711 , 0 }, + { "a18", 0x2712 , 0 }, + { "a19", 0x2713 , 0 }, + { "a20", 0x2714 , 0 }, + { "a21", 0x2715 , 0 }, + { "a22", 0x2716 , 0 }, + { "a23", 0x2717 , 0 }, + { "a24", 0x2718 , 0 }, + { "a25", 0x2719 , 0 }, + { "a26", 0x271a , 0 }, + { "a27", 0x271b , 0 }, + { "a28", 0x271c , 0 }, + { "a6", 0x271d , 0 }, + { "a7", 0x271e , 0 }, + { "a8", 0x271f , 0 }, + { "a9", 0x2720 , 0 }, + { "a10", 0x2721 , 0 }, + { "a29", 0x2722 , 0 }, + { "a30", 0x2723 , 0 }, + { "a31", 0x2724 , 0 }, + { "a32", 0x2725 , 0 }, + { "a33", 0x2726 , 0 }, + { "a34", 0x2727 , 0 }, + { "a35", 0x2605 , 0 }, + { "a36", 0x2729 , 0 }, + { "a37", 0x272a , 0 }, + { "a38", 0x272b , 0 }, + { "a39", 0x272c , 0 }, + { "a40", 0x272d , 0 }, + { "a41", 0x272e , 0 }, + { "a42", 0x272f , 0 }, + { "a43", 0x2730 , 0 }, + { "a44", 0x2731 , 0 }, + { "a45", 0x2732 , 0 }, + { "a46", 0x2733 , 0 }, + { "a47", 0x2734 , 0 }, + { "a48", 0x2735 , 0 }, + { "a49", 0x2736 , 0 }, + { "a50", 0x2737 , 0 }, + { "a51", 0x2738 , 0 }, + { "a52", 0x2739 , 0 }, + { "a53", 0x273a , 0 }, + { "a54", 0x273b , 0 }, + { "a55", 0x273c , 0 }, + { "a56", 0x273d , 0 }, + { "a57", 0x273e , 0 }, + { "a58", 0x273f , 0 }, + { "a59", 0x2740 , 0 }, + { "a60", 0x2741 , 0 }, + { "a61", 0x2742 , 0 }, + { "a62", 0x2743 , 0 }, + { "a63", 0x2744 , 0 }, + { "a64", 0x2745 , 0 }, + { "a65", 0x2746 , 0 }, + { "a66", 0x2747 , 0 }, + { "a67", 0x2748 , 0 }, + { "a68", 0x2749 , 0 }, + { "a69", 0x274a , 0 }, + { "a70", 0x274b , 0 }, + { "a71", 0x25cf , 0 }, + { "a72", 0x274d , 0 }, + { "a73", 0x25a0 , 0 }, + { "a74", 0x274f , 0 }, + { "a203", 0x2750 , 0 }, + { "a75", 0x2751 , 0 }, + { "a204", 0x2752 , 0 }, + { "a76", 0x25b2 , 0 }, + { "a77", 0x25bc , 0 }, + { "a78", 0x25c6 , 0 }, + { "a79", 0x2756 , 0 }, + { "a81", 0x25d7 , 0 }, + { "a82", 0x2758 , 0 }, + { "a83", 0x2759 , 0 }, + { "a84", 0x275a , 0 }, + { "a97", 0x275b , 0 }, + { "a98", 0x275c , 0 }, + { "a99", 0x275d , 0 }, + { "a100", 0x275e , 0 }, + { "a89", 0x2768 , 0 }, + { "a90", 0x2769 , 0 }, + { "a93", 0x276a , 0 }, + { "a94", 0x276b , 0 }, + { "a91", 0x276c , 0 }, + { "a92", 0x276d , 0 }, + { "a205", 0x276e , 0 }, + { "a85", 0x276f , 0 }, + { "a206", 0x2770 , 0 }, + { "a86", 0x2771 , 0 }, + { "a87", 0x2772 , 0 }, + { "a88", 0x2773 , 0 }, + { "a95", 0x2774 , 0 }, + { "a96", 0x2775 , 0 }, + { "a101", 0x2761 , 0 }, + { "a102", 0x2762 , 0 }, + { "a103", 0x2763 , 0 }, + { "a104", 0x2764 , 0 }, + { "a106", 0x2765 , 0 }, + { "a107", 0x2766 , 0 }, + { "a108", 0x2767 , 0 }, + { "a112", 0x2663 , 0 }, + { "a111", 0x2666 , 0 }, + { "a110", 0x2665 , 0 }, + { "a109", 0x2660 , 0 }, + { "a120", 0x2460 , 0 }, + { "a121", 0x2461 , 0 }, + { "a122", 0x2462 , 0 }, + { "a123", 0x2463 , 0 }, + { "a124", 0x2464 , 0 }, + { "a125", 0x2465 , 0 }, + { "a126", 0x2466 , 0 }, + { "a127", 0x2467 , 0 }, + { "a128", 0x2468 , 0 }, + { "a129", 0x2469 , 0 }, + { "a130", 0x2776 , 0 }, + { "a131", 0x2777 , 0 }, + { "a132", 0x2778 , 0 }, + { "a133", 0x2779 , 0 }, + { "a134", 0x277a , 0 }, + { "a135", 0x277b , 0 }, + { "a136", 0x277c , 0 }, + { "a137", 0x277d , 0 }, + { "a138", 0x277e , 0 }, + { "a139", 0x277f , 0 }, + { "a140", 0x2780 , 0 }, + { "a141", 0x2781 , 0 }, + { "a142", 0x2782 , 0 }, + { "a143", 0x2783 , 0 }, + { "a144", 0x2784 , 0 }, + { "a145", 0x2785 , 0 }, + { "a146", 0x2786 , 0 }, + { "a147", 0x2787 , 0 }, + { "a148", 0x2788 , 0 }, + { "a149", 0x2789 , 0 }, + { "a150", 0x278a , 0 }, + { "a151", 0x278b , 0 }, + { "a152", 0x278c , 0 }, + { "a153", 0x278d , 0 }, + { "a154", 0x278e , 0 }, + { "a155", 0x278f , 0 }, + { "a156", 0x2790 , 0 }, + { "a157", 0x2791 , 0 }, + { "a158", 0x2792 , 0 }, + { "a159", 0x2793 , 0 }, + { "a160", 0x2794 , 0 }, + { "a161", 0x2192 , 0 }, + { "a163", 0x2194 , 0 }, + { "a164", 0x2195 , 0 }, + { "a196", 0x2798 , 0 }, + { "a165", 0x2799 , 0 }, + { "a192", 0x279a , 0 }, + { "a166", 0x279b , 0 }, + { "a167", 0x279c , 0 }, + { "a168", 0x279d , 0 }, + { "a169", 0x279e , 0 }, + { "a170", 0x279f , 0 }, + { "a171", 0x27a0 , 0 }, + { "a172", 0x27a1 , 0 }, + { "a173", 0x27a2 , 0 }, + { "a162", 0x27a3 , 0 }, + { "a174", 0x27a4 , 0 }, + { "a175", 0x27a5 , 0 }, + { "a176", 0x27a6 , 0 }, + { "a177", 0x27a7 , 0 }, + { "a178", 0x27a8 , 0 }, + { "a179", 0x27a9 , 0 }, + { "a193", 0x27aa , 0 }, + { "a180", 0x27ab , 0 }, + { "a199", 0x27ac , 0 }, + { "a181", 0x27ad , 0 }, + { "a200", 0x27ae , 0 }, + { "a182", 0x27af , 0 }, + { "a201", 0x27b1 , 0 }, + { "a183", 0x27b2 , 0 }, + { "a184", 0x27b3 , 0 }, + { "a197", 0x27b4 , 0 }, + { "a185", 0x27b5 , 0 }, + { "a194", 0x27b6 , 0 }, + { "a198", 0x27b7 , 0 }, + { "a186", 0x27b8 , 0 }, + { "a195", 0x27b9 , 0 }, + { "a187", 0x27ba , 0 }, + { "a188", 0x27bb , 0 }, + { "a189", 0x27bc , 0 }, + { "a190", 0x27bd , 0 }, + { "a191", 0x27be , 0 }, + { "register.sans", 0xf8e8 , 0 }, + { "register.serif", 0xf6da , 0 }, + { "one.superior", 0x00b9 , 0 }, + { "two.superior", 0x00b2 , 0 }, + { "three.superior", 0x00b3 , 0 }, + { "parenleft.superior", 0x207d , 0 }, + { "parenright.superior", 0x207e , 0 }, + { "n.superior", 0x207f , 0 }, + { "parenleft.inferior", 0x208d , 0 }, + { "parenright.inferior", 0x208e , 0 }, + { "zero.superior", 0x2070 , 0 }, + { "four.superior", 0x2074 , 0 }, + { "five.superior", 0x2075 , 0 }, + { "six.superior", 0x2076 , 0 }, + { "seven.superior", 0x2077 , 0 }, + { "eight.superior", 0x2078 , 0 }, + { "nine.superior", 0x2079 , 0 }, + { "zero.inferior", 0x2080 , 0 }, + { "one.inferior", 0x2081 , 0 }, + { "two.inferior", 0x2082 , 0 }, + { "three.inferior", 0x2083 , 0 }, + { "four.inferior", 0x2084 , 0 }, + { "five.inferior", 0x2085 , 0 }, + { "six.inferior", 0x2086 , 0 }, + { "seven.inferior", 0x2087 , 0 }, + { "eight.inferior", 0x2088 , 0 }, + { "nine.inferior", 0x2089 , 0 }, + { "mu.greek", 0x03bc , 0 }, + { "Delta.greek", 0x0394 , 0 }, + { "Omega.greek", 0x03a9 , 0 }, + { "sigma.end", 0x03c2 , 0 }, + { "beta.alt", 0x03d0 , 0 }, + { "kappa.alt", 0x03f0 , 0 }, + { "theta.alt", 0x03d1 , 0 }, + { "Upsilon.alt", 0x03d2 , 0 }, + { "phi.alt", 0x03d5 , 0 }, + { "pi.alt", 0x03d6 , 0 }, + { "A.cyr", 0x0410 , 0 }, + { "Ghe.up", 0x0490 , 0 }, + { "I.cyr", 0x0418 , 0 }, + { "I.short", 0x0419 , 0 }, + { "O.cyr", 0x041e , 0 }, + { "U.cyr", 0x0423 , 0 }, + { "E.cyr", 0x042d , 0 }, + { "Ie.ukran", 0x0404 , 0 }, + { "I.ukran", 0x0406 , 0 }, + { "U.short", 0x040e , 0 }, + { "a.cyr", 0x0430 , 0 }, + { "ghe.up", 0x0491 , 0 }, + { "i.cyr", 0x0438 , 0 }, + { "i.short", 0x0439 , 0 }, + { "o.cyr", 0x043e , 0 }, + { "u.cyr", 0x0443 , 0 }, + { "e.cyr", 0x044d , 0 }, + { "ie.ukran", 0x0454 , 0 }, + { "i.ukran", 0x0456 , 0 }, + { "u.short", 0x045e , 0 }, + { "ghe.ital", 0xf6c4 , 0 }, + { "afii10068.ital", 0xf6c4 , 0 }, + { "afii10066.ital", 0xf6c5 , 0 }, + { "be.alt", 0xf6c5 , 0 }, + { "afii10069.ital", 0xf6c6 , 0 }, + { "de.ital", 0xf6c6 , 0 }, + { "afii10081.ital", 0xf6c7 , 0 }, + { "pe.ital", 0xf6c7 , 0 }, + { "afii10084.ital", 0xf6c8 , 0 }, + { "te.ital", 0xf6c8 , 0 }, + { "Omega.math", 0x2126 , 0 }, + { "Delta.math", 0x2206 , 0 }, + { "afii57689_afii57804", 0xfb2a , 0 }, + { "afii57689_afii57803", 0xfb2b , 0 }, + { "afii57669_afii57806", 0xfb4b , 0 }, + { "afii57718_afii57798", 0xfb1f , 0 }, + { "afii57669_afii57807", 0xfb35 , 0 }, + { ".null", 0x0000 , 0 }, + { "dialytika_perispomeni", 0x1fc1 , 0 }, + { "psili_varia", 0x1fcd , 0 }, + { "psili_oxia", 0x1fce , 0 }, + { "psili_perispomeni", 0x1fcf , 0 }, + { "dasia_varia", 0x1fdd , 0 }, + { "dasia_oxia", 0x1fde , 0 }, + { "dasia_perispomeni", 0x1fdf , 0 }, + { "dialytika_varia", 0x1fed , 0 }, + { "dialytika_oxia", 0x1fee , 0 }, + { "Alphaacute", 0x1fbb , 0 }, + { "Alphaasper", 0x1f09 , 0 }, + { "Alphaasperacute", 0x1f0d , 0 }, + { "Alphaaspergrave", 0x1f0b , 0 }, + { "Alphaaspertilde", 0x1f0f , 0 }, + { "Alphabreve", 0x1fb8 , 0 }, + { "Alphagrave", 0x1fba , 0 }, + { "Alphaiotasub", 0x1fbc , 0 }, + { "Alphaiotasubasper", 0x1f89 , 0 }, + { "Alphaiotasubasperacute", 0x1f8d , 0 }, + { "Alphaiotasubaspergrave", 0x1f8b , 0 }, + { "Alphaiotasubaspertilde", 0x1f8f , 0 }, + { "Alphaiotasublenis", 0x1f88 , 0 }, + { "Alphaiotasublenisacute", 0x1f8c , 0 }, + { "Alphaiotasublenisgrave", 0x1f8a , 0 }, + { "Alphaiotasublenistilde", 0x1f8e , 0 }, + { "Alphalenis", 0x1f08 , 0 }, + { "Alphalenisacute", 0x1f0c , 0 }, + { "Alphalenisgrave", 0x1f0a , 0 }, + { "Alphalenistilde", 0x1f0e , 0 }, + { "Alphamacron", 0x1fb9 , 0 }, + { "Epsilonacute", 0x1fc9 , 0 }, + { "Epsilonasper", 0x1f19 , 0 }, + { "Epsilonasperacute", 0x1f1d , 0 }, + { "Epsilonaspergrave", 0x1f1b , 0 }, + { "Epsilongrave", 0x1fc8 , 0 }, + { "Epsilonlenis", 0x1f18 , 0 }, + { "Epsilonlenisacute", 0x1f1c , 0 }, + { "Epsilonlenisgrave", 0x1f1a , 0 }, + { "Etaacute", 0x1fcb , 0 }, + { "Etaasper", 0x1f29 , 0 }, + { "Etaasperacute", 0x1f2d , 0 }, + { "Etaaspergrave", 0x1f2b , 0 }, + { "Etaaspertilde", 0x1f2f , 0 }, + { "Etagrave", 0x1fca , 0 }, + { "Etaiotasub", 0x1fcc , 0 }, + { "Etaiotasubasper", 0x1f99 , 0 }, + { "Etaiotasubasperacute", 0x1f9d , 0 }, + { "Etaiotasubaspergrave", 0x1f9b , 0 }, + { "Etaiotasubaspertilde", 0x1f9f , 0 }, + { "Etaiotasublenis", 0x1f98 , 0 }, + { "Etaiotasublenisacute", 0x1f9c , 0 }, + { "Etaiotasublenisgrave", 0x1f9a , 0 }, + { "Etaiotasublenistilde", 0x1f9e , 0 }, + { "Etalenis", 0x1f28 , 0 }, + { "Etalenisacute", 0x1f2c , 0 }, + { "Etalenisgrave", 0x1f2a , 0 }, + { "Etalenistilde", 0x1f2e , 0 }, + { "Iotaacute", 0x1fdb , 0 }, + { "Iotaasper", 0x1f39 , 0 }, + { "Iotaasperacute", 0x1f3d , 0 }, + { "Iotaaspergrave", 0x1f3b , 0 }, + { "Iotaaspertilde", 0x1f3f , 0 }, + { "Iotabreve", 0x1fd8 , 0 }, + { "Iotagrave", 0x1fda , 0 }, + { "Iotalenis", 0x1f38 , 0 }, + { "Iotalenisacute", 0x1f3c , 0 }, + { "Iotalenisgrave", 0x1f3a , 0 }, + { "Iotalenistilde", 0x1f3e , 0 }, + { "Iotamacron", 0x1fd9 , 0 }, + { "Omegaacute", 0x1ffb , 0 }, + { "Omegaasper", 0x1f69 , 0 }, + { "Omegaasperacute", 0x1f6d , 0 }, + { "Omegaaspergrave", 0x1f6b , 0 }, + { "Omegaaspertilde", 0x1f6f , 0 }, + { "Omegagrave", 0x1ffa , 0 }, + { "Omegaiotasub", 0x1ffc , 0 }, + { "Omegaiotasubasper", 0x1fa9 , 0 }, + { "Omegaiotasubasperacute", 0x1fad , 0 }, + { "Omegaiotasubaspergrave", 0x1fab , 0 }, + { "Omegaiotasubaspertilde", 0x1faf , 0 }, + { "Omegaiotasublenis", 0x1fa8 , 0 }, + { "Omegaiotasublenisacute", 0x1fac , 0 }, + { "Omegaiotasublenisgrave", 0x1faa , 0 }, + { "Omegaiotasublenistilde", 0x1fae , 0 }, + { "Omegalenis", 0x1f68 , 0 }, + { "Omegalenisacute", 0x1f6c , 0 }, + { "Omegalenisgrave", 0x1f6a , 0 }, + { "Omegalenistilde", 0x1f6e , 0 }, + { "Omicronacute", 0x1ff9 , 0 }, + { "Omicronasper", 0x1f49 , 0 }, + { "Omicronasperacute", 0x1f4d , 0 }, + { "Omicronaspergrave", 0x1f4b , 0 }, + { "Omicrongrave", 0x1ff8 , 0 }, + { "Omicronlenis", 0x1f48 , 0 }, + { "Omicronlenisacute", 0x1f4c , 0 }, + { "Omicronlenisgrave", 0x1f4a , 0 }, + { "Rhoasper", 0x1fec , 0 }, + { "Upsilonacute", 0x1feb , 0 }, + { "Upsilonasper", 0x1f59 , 0 }, + { "Upsilonasperacute", 0x1f5d , 0 }, + { "Upsilonaspergrave", 0x1f5b , 0 }, + { "Upsilonaspertilde", 0x1f5f , 0 }, + { "Upsilonbreve", 0x1fe8 , 0 }, + { "Upsilongrave", 0x1fea , 0 }, + { "Upsilonmacron", 0x1fe9 , 0 }, + { "numeralsign", 0x0374 , 0 }, + { "lownumeralsign", 0x0375 , 0 }, + { "lowcomma", 0x037a , 0 }, + { "stigma", 0x03da , 0 }, + { "koppa", 0x03de , 0 }, + { "sampi", 0x03e0 , 0 }, + { "lenis", 0x1fbd , 0 }, + { "iotasubscript", 0x1fbe , 0 }, + { "dieresistilde", 0x1fc1 , 0 }, + { "lenisgrave", 0x1fcd , 0 }, + { "lenisacute", 0x1fce , 0 }, + { "lenistilde", 0x1fcf , 0 }, + { "aspergrave", 0x1fdd , 0 }, + { "asperacute", 0x1fde , 0 }, + { "aspertilde", 0x1fdf , 0 }, + { "dialytikagrave", 0x1fed , 0 }, + { "dialytikaacute", 0x1fee , 0 }, + { "asper", 0x1ffe , 0 }, + { "alphalenis", 0x1f00 , 0 }, + { "alphaasper", 0x1f01 , 0 }, + { "alphalenisgrave", 0x1f02 , 0 }, + { "alphaaspergrave", 0x1f03 , 0 }, + { "alphalenisacute", 0x1f04 , 0 }, + { "alphaasperacute", 0x1f05 , 0 }, + { "alphalenistilde", 0x1f06 , 0 }, + { "alphaaspertilde", 0x1f07 , 0 }, + { "epsilonlenis", 0x1f10 , 0 }, + { "epsilonasper", 0x1f11 , 0 }, + { "epsilonlenisgrave", 0x1f12 , 0 }, + { "epsilonaspergrave", 0x1f13 , 0 }, + { "epsilonlenisacute", 0x1f14 , 0 }, + { "epsilonasperacute", 0x1f15 , 0 }, + { "etalenis", 0x1f20 , 0 }, + { "etaasper", 0x1f21 , 0 }, + { "etalenisgrave", 0x1f22 , 0 }, + { "etaaspergrave", 0x1f23 , 0 }, + { "etalenisacute", 0x1f24 , 0 }, + { "etaasperacute", 0x1f25 , 0 }, + { "etalenistilde", 0x1f26 , 0 }, + { "etaaspertilde", 0x1f27 , 0 }, + { "iotalenis", 0x1f30 , 0 }, + { "iotaasper", 0x1f31 , 0 }, + { "iotalenisgrave", 0x1f32 , 0 }, + { "iotaaspergrave", 0x1f33 , 0 }, + { "iotalenisacute", 0x1f34 , 0 }, + { "iotaasperacute", 0x1f35 , 0 }, + { "iotalenistilde", 0x1f36 , 0 }, + { "iotaaspertilde", 0x1f37 , 0 }, + { "omicronlenis", 0x1f40 , 0 }, + { "omicronasper", 0x1f41 , 0 }, + { "omicronlenisgrave", 0x1f42 , 0 }, + { "omicronaspergrave", 0x1f43 , 0 }, + { "omicronlenisacute", 0x1f44 , 0 }, + { "omicronasperacute", 0x1f45 , 0 }, + { "upsilonlenis", 0x1f50 , 0 }, + { "upsilonasper", 0x1f51 , 0 }, + { "upsilonlenisgrave", 0x1f52 , 0 }, + { "upsilonaspergrave", 0x1f53 , 0 }, + { "upsilonlenisacute", 0x1f54 , 0 }, + { "upsilonasperacute", 0x1f55 , 0 }, + { "upsilonlenistilde", 0x1f56 , 0 }, + { "upsilonaspertilde", 0x1f57 , 0 }, + { "omegalenis", 0x1f60 , 0 }, + { "omegaasper", 0x1f61 , 0 }, + { "omegalenisgrave", 0x1f62 , 0 }, + { "omegaaspergrave", 0x1f63 , 0 }, + { "omegalenisacute", 0x1f64 , 0 }, + { "omegaasperacute", 0x1f65 , 0 }, + { "omegalenistilde", 0x1f66 , 0 }, + { "omegaaspertilde", 0x1f67 , 0 }, + { "alphagrave", 0x1f70 , 0 }, + { "alphaacute", 0x1f71 , 0 }, + { "epsilongrave", 0x1f72 , 0 }, + { "epsilonacute", 0x1f73 , 0 }, + { "etagrave", 0x1f74 , 0 }, + { "etaacute", 0x1f75 , 0 }, + { "iotagrave", 0x1f76 , 0 }, + { "iotaacute", 0x1f77 , 0 }, + { "omicrongrave", 0x1f78 , 0 }, + { "omicronacute", 0x1f79 , 0 }, + { "upsilongrave", 0x1f7a , 0 }, + { "upsilonacute", 0x1f7b , 0 }, + { "omegagrave", 0x1f7c , 0 }, + { "omegaacute", 0x1f7d , 0 }, + { "alphaiotasublenis", 0x1f80 , 0 }, + { "alphaiotasubasper", 0x1f81 , 0 }, + { "alphaiotasublenisgrave", 0x1f82 , 0 }, + { "alphaiotasubaspergrave", 0x1f83 , 0 }, + { "alphaiotasublenisacute", 0x1f84 , 0 }, + { "alphaiotasubasperacute", 0x1f85 , 0 }, + { "alphaiotasublenistilde", 0x1f86 , 0 }, + { "alphaiotasubaspertilde", 0x1f87 , 0 }, + { "etaiotasublenis", 0x1f90 , 0 }, + { "etaiotasubasper", 0x1f91 , 0 }, + { "etaiotasublenisgrave", 0x1f92 , 0 }, + { "etaiotasubaspergrave", 0x1f93 , 0 }, + { "etaiotasublenisacute", 0x1f94 , 0 }, + { "etaiotasubasperacute", 0x1f95 , 0 }, + { "etaiotasublenistilde", 0x1f96 , 0 }, + { "etaiotasubaspertilde", 0x1f97 , 0 }, + { "omegaiotasublenis", 0x1fa0 , 0 }, + { "omegaiotasubasper", 0x1fa1 , 0 }, + { "omegaiotasublenisgrave", 0x1fa2 , 0 }, + { "omegaiotasubaspergrave", 0x1fa3 , 0 }, + { "omegaiotasublenisacute", 0x1fa4 , 0 }, + { "omegaiotasubasperacute", 0x1fa5 , 0 }, + { "omegaiotasublenistilde", 0x1fa6 , 0 }, + { "omegaiotasubaspertilde", 0x1fa7 , 0 }, + { "alphabreve", 0x1fb0 , 0 }, + { "alphamacron", 0x1fb1 , 0 }, + { "alphaiotasubgrave", 0x1fb2 , 0 }, + { "alphaiotasub", 0x1fb3 , 0 }, + { "alphatilde", 0x1fb6 , 0 }, + { "alphaiotasubtilde", 0x1fb7 , 0 }, + { "etaiotasubgrave", 0x1fc2 , 0 }, + { "etaiotasub", 0x1fc3 , 0 }, + { "etaiotasubacute", 0x1fc4 , 0 }, + { "etatilde", 0x1fc6 , 0 }, + { "etaiotasubtilde", 0x1fc7 , 0 }, + { "iotabreve", 0x1fd0 , 0 }, + { "iotamacron", 0x1fd1 , 0 }, + { "iotadieresisgrave", 0x1fd2 , 0 }, + { "iotadieresisacute", 0x1fd3 , 0 }, + { "iotatilde", 0x1fd6 , 0 }, + { "iotadieresistilde", 0x1fd7 , 0 }, + { "upsilonbreve", 0x1fe0 , 0 }, + { "upsilonmacron", 0x1fe1 , 0 }, + { "upsilondieresisgrave", 0x1fe2 , 0 }, + { "upsilondieresisacute", 0x1fe3 , 0 }, + { "rholenis", 0x1fe4 , 0 }, + { "rhoasper", 0x1fe5 , 0 }, + { "upsilontilde", 0x1fe6 , 0 }, + { "omegaiotasubgrave", 0x1ff2 , 0 }, + { "omegaiotasub", 0x1ff3 , 0 }, + { "omegaiotasubacute", 0x1ff4 , 0 }, + { "omegatilde", 0x1ff6 , 0 }, + { "omegaiotasubtilde", 0x1ff7 , 0 }, + { "alphaiotasubacute", 0x1fb4 , 0 }, + { "upsilondieresistilde", 0x1fe7 , 0 }, + { "digamma", 0xefd5 , 0 }, + { "Be", 0x0411 , 0 }, + { "Ve", 0x0412 , 0 }, + { "Ghe", 0x0413 , 0 }, + { "De", 0x0414 , 0 }, + { "Ie", 0x0415 , 0 }, + { "Zhe", 0x0416 , 0 }, + { "Ze", 0x0417 , 0 }, + { "Ka", 0x041a , 0 }, + { "El", 0x041b , 0 }, + { "Em", 0x041c , 0 }, + { "En", 0x041d , 0 }, + { "Pe", 0x041f , 0 }, + { "Er", 0x0420 , 0 }, + { "Es", 0x0421 , 0 }, + { "Te", 0x0422 , 0 }, + { "Ef", 0x0424 , 0 }, + { "Ha", 0x0425 , 0 }, + { "Tse", 0x0426 , 0 }, + { "Che", 0x0427 , 0 }, + { "Sha", 0x0428 , 0 }, + { "Shcha", 0x0429 , 0 }, + { "Hard", 0x042a , 0 }, + { "Yeru", 0x042b , 0 }, + { "Soft", 0x042c , 0 }, + { "Yu", 0x042e , 0 }, + { "Ya", 0x042f , 0 }, + { "Io", 0x0401 , 0 }, + { "Dje", 0x0402 , 0 }, + { "Gje", 0x0403 , 0 }, + { "Dze", 0x0405 , 0 }, + { "Yi", 0x0407 , 0 }, + { "Je", 0x0408 , 0 }, + { "Lje", 0x0409 , 0 }, + { "Nje", 0x040a , 0 }, + { "Tshe", 0x040b , 0 }, + { "Kje", 0x040c , 0 }, + { "Dzhe", 0x040f , 0 }, + { "Yat", 0x0462 , 0 }, + { "Fita", 0x0472 , 0 }, + { "Izhitsa", 0x0474 , 0 }, + { "be", 0x0431 , 0 }, + { "ve", 0x0432 , 0 }, + { "ghe", 0x0433 , 0 }, + { "de", 0x0434 , 0 }, + { "ie", 0x0435 , 0 }, + { "zhe", 0x0436 , 0 }, + { "ze", 0x0437 , 0 }, + { "ka", 0x043a , 0 }, + { "el", 0x043b , 0 }, + { "em", 0x043c , 0 }, + { "en", 0x043d , 0 }, + { "er", 0x0440 , 0 }, + { "es", 0x0441 , 0 }, + { "te", 0x0442 , 0 }, + { "ef", 0x0444 , 0 }, + { "ha", 0x0445 , 0 }, + { "tse", 0x0446 , 0 }, + { "che", 0x0447 , 0 }, + { "sha", 0x0448 , 0 }, + { "shcha", 0x0449 , 0 }, + { "hard", 0x044a , 0 }, + { "yeru", 0x044b , 0 }, + { "soft", 0x044c , 0 }, + { "yu", 0x044e , 0 }, + { "ya", 0x044f , 0 }, + { "io", 0x0451 , 0 }, + { "dje", 0x0452 , 0 }, + { "gje", 0x0453 , 0 }, + { "dze", 0x0455 , 0 }, + { "yi", 0x0457 , 0 }, + { "je", 0x0458 , 0 }, + { "lje", 0x0459 , 0 }, + { "nje", 0x045a , 0 }, + { "tshe", 0x045b , 0 }, + { "kje", 0x045c , 0 }, + { "dzhe", 0x045f , 0 }, + { "yat", 0x0463 , 0 }, + { "fita", 0x0473 , 0 }, + { "izhitsa", 0x0475 , 0 }, + { "litre", 0x2113 , 0 }, + { "Dotaccent", 0xefed , 0 }, + { "Breve", 0xefee , 0 }, + { "Ogonek", 0xeff1 , 0 }, + { "Cedilla", 0xeff2 , 0 }, + { "Ring", 0xeff3 , 0 }, + { "Tilde", 0xeff5 , 0 }, + { "Circumflex", 0xeff7 , 0 }, + { "dbar", 0x0111 , 0 }, + { "st", 0xfb06 , 0 }, + { "TeXtext32", 0x0337 , 0 }, + { "DD070", 0x2014 , 0 }, + { "monospacedash", 0x2014 , 0 }, + { "Dash1cent", 0x2015 , 0 }, + { "apostrophereverse", 0x201b , 0 }, + { "Pts", 0x20a7 , 0 }, + { "SM760000", 0x2195 , 0 }, + { "SM770000", 0x21a8 , 0 }, + { "SP320000", 0x2219 , 0 }, + { "SD630000", 0x22c5 , 0 }, + { "SM790000", 0x2302 , 0 }, + { "caretinverted", 0x2304 , 0 }, + { "SM680000", 0x2310 , 0 }, + { "SA420000", 0x2319 , 0 }, + { "BorderULCorner1", 0x231c , 0 }, + { "DD010", 0x231c , 0 }, + { "DD101", 0x231c , 0 }, + { "BorderURCorner1", 0x231d , 0 }, + { "DD012", 0x231d , 0 }, + { "DD104", 0x231d , 0 }, + { "BorderLLCorner1", 0x231e , 0 }, + { "DD014", 0x231e , 0 }, + { "DD109", 0x231e , 0 }, + { "BorderLRCorner1", 0x231f , 0 }, + { "DD015", 0x231f , 0 }, + { "DD112", 0x231f , 0 }, + { "SS260000", 0x2320 , 0 }, + { "SS270000", 0x2321 , 0 }, + { "hook", 0x2440 , 0 }, + { "chair", 0x2441 , 0 }, + { "fork", 0x2442 , 0 }, + { "SF600000", 0x2580 , 0 }, + { "BorderLower1", 0x2581 , 0 }, + { "DD011", 0x2581 , 0 }, + { "DD021", 0x2581 , 0 }, + { "DD110", 0x2581 , 0 }, + { "Flower1l", 0x2581 , 0 }, + { "SF570000", 0x2584 , 0 }, + { "SF610000", 0x2588 , 0 }, + { "Tile", 0x2588 , 0 }, + { "HalfTile", 0x258c , 0 }, + { "SF580000", 0x258c , 0 }, + { "BorderLeftVertical1", 0x258f , 0 }, + { "DD013", 0x258f , 0 }, + { "DD034", 0x258f , 0 }, + { "DD105", 0x258f , 0 }, + { "Flower1d", 0x258f , 0 }, + { "SF590000", 0x2590 , 0 }, + { "SF140000", 0x2591 , 0 }, + { "SF150000", 0x2592 , 0 }, + { "SF160000", 0x2593 , 0 }, + { "BorderUpper1", 0x2594 , 0 }, + { "DD024", 0x2594 , 0 }, + { "DD102", 0x2594 , 0 }, + { "BorderRightVertical1", 0x2595 , 0 }, + { "DD031", 0x2595 , 0 }, + { "DD106", 0x2595 , 0 }, + { "Flower2dr", 0x2595 , 0 }, + { "SM600000", 0x25b2 , 0 }, + { "SM590000", 0x25b6 , 0 }, + { "SV040000", 0x25bc , 0 }, + { "SM630000", 0x25c0 , 0 }, + { "SM750000", 0x25cb , 0 }, + { "SM570001", 0x25d8 , 0 }, + { "SM750002", 0x25d9 , 0 }, + { "ShootingStar", 0x2604 , 0 }, + { "DD130", 0x2605 , 0 }, + { "StarDingbat1", 0x2605 , 0 }, + { "TheSun", 0x2609 , 0 }, + { "FleuronLeft", 0x2619 , 0 }, + { "cross", 0x2629 , 0 }, + { "SS000000", 0x263a , 0 }, + { "SS010000", 0x263b , 0 }, + { "SM690000", 0x263c , 0 }, + { "TheMoon", 0x263d , 0 }, + { "Moon", 0x263e , 0 }, + { "Mercury", 0x263f , 0 }, + { "Venus", 0x2640 , 0 }, + { "Earth", 0x2641 , 0 }, + { "Mars", 0x2642 , 0 }, + { "Jupiter", 0x2643 , 0 }, + { "Saturn", 0x2644 , 0 }, + { "Uranus", 0x2645 , 0 }, + { "Neptune", 0x2646 , 0 }, + { "Pluto", 0x2647 , 0 }, + { "Aries", 0x2648 , 0 }, + { "Taurus", 0x2649 , 0 }, + { "Gemini", 0x264a , 0 }, + { "Cancer", 0x264b , 0 }, + { "Leo", 0x264c , 0 }, + { "Virgo", 0x264d , 0 }, + { "Libra", 0x264e , 0 }, + { "Scorpio", 0x264f , 0 }, + { "Sagittarius", 0x2650 , 0 }, + { "Capricorn", 0x2651 , 0 }, + { "Aquarius", 0x2652 , 0 }, + { "Pisces", 0x2653 , 0 }, + { "diamondopen", 0x2662 , 0 }, + { "FleuronCenter", 0x2766 , 0 }, + { "FleuronRight", 0x2767 , 0 }, + { "st1", 0xfb06 , 0 }, + { "zeroslash", 0xf638 , 0 }, + { "pi1", 0x03d6 , 0 }, + { "hyphen-minus", 0x002d , 0 }, + { "hyphenminus", 0x002d , 0 }, + { "nonmarkingreturn", 0x000d , 0 }, + { "micro", 0x00b5 , 0 }, + { "Dmacron", 0x0110 , 0 }, + { "kra", 0x0138 , 0 }, + { "bbar", 0x0180 , 0 }, + { "Dbar", 0x0189 , 0 }, + { "deltaturn", 0x018d , 0 }, + { "Eturn", 0x018e , 0 }, + { "Epsilonlatin", 0x0190 , 0 }, + { "Gammalatin", 0x0194 , 0 }, + { "Iotalatin", 0x0196 , 0 }, + { "Ibar", 0x0197 , 0 }, + { "lambdabar", 0x019b , 0 }, + { "mcapturn", 0x019c , 0 }, + { "Nhook", 0x019d , 0 }, + { "nleg", 0x019e , 0 }, + { "Obar", 0x019f , 0 }, + { "OI", 0x01a2 , 0 }, + { "YR", 0x01a6 , 0 }, + { "eshlooprev", 0x01aa , 0 }, + { "Trthook", 0x01ae , 0 }, + { "Upsilonlatin", 0x01b1 , 0 }, + { "Vcursive", 0x01b2 , 0 }, + { "Zbar", 0x01b5 , 0 }, + { "zbar", 0x01b6 , 0 }, + { "Yogh", 0x01b7 , 0 }, + { "Yoghrev", 0x01b8 , 0 }, + { "yoghrev", 0x01b9 , 0 }, + { "yoghtail", 0x01ba , 0 }, + { "twobar", 0x01bb , 0 }, + { "glottalstopbarinv", 0x01be , 0 }, + { "pipe", 0x01c0 , 0 }, + { "pipedbl", 0x01c1 , 0 }, + { "pipedblbar", 0x01c2 , 0 }, + { "exclamlatin", 0x01c3 , 0 }, + { "DZhacek", 0x01c4 , 0 }, + { "Dzhacek", 0x01c5 , 0 }, + { "dzhacek", 0x01c6 , 0 }, + { "Ahacek", 0x01cd , 0 }, + { "ahacek", 0x01ce , 0 }, + { "Ihacek", 0x01cf , 0 }, + { "ihacek", 0x01d0 , 0 }, + { "Ohacek", 0x01d1 , 0 }, + { "ohacek", 0x01d2 , 0 }, + { "Uhacek", 0x01d3 , 0 }, + { "uhacek", 0x01d4 , 0 }, + { "Udieresishacek", 0x01d9 , 0 }, + { "udieresishacek", 0x01da , 0 }, + { "eturn", 0x01dd , 0 }, + { "Gbar", 0x01e4 , 0 }, + { "gbar", 0x01e5 , 0 }, + { "Ghacek", 0x01e6 , 0 }, + { "ghacek", 0x01e7 , 0 }, + { "Khacek", 0x01e8 , 0 }, + { "khacek", 0x01e9 , 0 }, + { "Yoghhacek", 0x01ee , 0 }, + { "yoghhacek", 0x01ef , 0 }, + { "jhacek", 0x01f0 , 0 }, + { "aturn", 0x0250 , 0 }, + { "ascriptturn", 0x0252 , 0 }, + { "cturn", 0x0254 , 0 }, + { "drthook", 0x0256 , 0 }, + { "erev", 0x0258 , 0 }, + { "epsilonlatin", 0x025b , 0 }, + { "epsilonlatinrev", 0x025c , 0 }, + { "epsilonlatinrevhook", 0x025d , 0 }, + { "epsilonlatinrevclosed", 0x025e , 0 }, + { "jdotlessbar", 0x025f , 0 }, + { "gcursive", 0x0261 , 0 }, + { "Gsmallcap", 0x0262 , 0 }, + { "gammalatin", 0x0263 , 0 }, + { "babygamma", 0x0264 , 0 }, + { "hturn", 0x0265 , 0 }, + { "ibar", 0x0268 , 0 }, + { "Ismallcap", 0x026a , 0 }, + { "lmidtilde", 0x026b , 0 }, + { "lrthook", 0x026d , 0 }, + { "lyogh", 0x026e , 0 }, + { "mturn", 0x026f , 0 }, + { "mturndescend", 0x0270 , 0 }, + { "nlftlfthook", 0x0272 , 0 }, + { "nrthook", 0x0273 , 0 }, + { "Nsmallcap", 0x0274 , 0 }, + { "obar", 0x0275 , 0 }, + { "OEsmallcap", 0x0276 , 0 }, + { "omegaclosed", 0x0277 , 0 }, + { "rturn", 0x0279 , 0 }, + { "rturnascend", 0x027a , 0 }, + { "rturnrthook", 0x027b , 0 }, + { "rdescend", 0x027c , 0 }, + { "rrthook", 0x027d , 0 }, + { "rfishhookrev", 0x027f , 0 }, + { "Rsmallcap", 0x0280 , 0 }, + { "Rsmallcapinv", 0x0281 , 0 }, + { "srthook", 0x0282 , 0 }, + { "jhookdblbar", 0x0284 , 0 }, + { "eshshortrev", 0x0285 , 0 }, + { "tturn", 0x0287 , 0 }, + { "trthook", 0x0288 , 0 }, + { "vscript", 0x028b , 0 }, + { "vturn", 0x028c , 0 }, + { "wturn", 0x028d , 0 }, + { "yturn", 0x028e , 0 }, + { "Ysmallcap", 0x028f , 0 }, + { "zrthook", 0x0290 , 0 }, + { "yogh", 0x0292 , 0 }, + { "yoghcurl", 0x0293 , 0 }, + { "glottalstoprevinv", 0x0295 , 0 }, + { "glottalstopinv", 0x0296 , 0 }, + { "cstretch", 0x0297 , 0 }, + { "kiss", 0x0298 , 0 }, + { "Bsmallcap", 0x0299 , 0 }, + { "epsilonclosed", 0x029a , 0 }, + { "Gsmallcaphook", 0x029b , 0 }, + { "Hsmallcap", 0x029c , 0 }, + { "jcrosstail", 0x029d , 0 }, + { "kturn", 0x029e , 0 }, + { "Lsmallcap", 0x029f , 0 }, + { "glottalstopbar", 0x02a1 , 0 }, + { "glottalstopbarrev", 0x02a2 , 0 }, + { "dyogh", 0x02a4 , 0 }, + { "hsuper", 0x02b0 , 0 }, + { "hhooksuper", 0x02b1 , 0 }, + { "jsuper", 0x02b2 , 0 }, + { "rsuper", 0x02b3 , 0 }, + { "rturnsuper", 0x02b4 , 0 }, + { "rturnrthooksuper", 0x02b5 , 0 }, + { "Rturnsuper", 0x02b6 , 0 }, + { "wsuper", 0x02b7 , 0 }, + { "ysuper", 0x02b8 , 0 }, + { "primedblmod", 0x02ba , 0 }, + { "quoteleftmod", 0x02bb , 0 }, + { "apostrophe", 0x02bc , 0 }, + { "apostropherev", 0x02bd , 0 }, + { "ringrighthalfsuper", 0x02be , 0 }, + { "ringlefthalfsuper", 0x02bf , 0 }, + { "glottal", 0x02c0 , 0 }, + { "glottalrev", 0x02c1 , 0 }, + { "fronted", 0x02c2 , 0 }, + { "backed", 0x02c3 , 0 }, + { "raised", 0x02c4 , 0 }, + { "lowered", 0x02c5 , 0 }, + { "linevert", 0x02c8 , 0 }, + { "macronmodifier", 0x02c9 , 0 }, + { "acutemodifier", 0x02ca , 0 }, + { "gravemodifier", 0x02cb , 0 }, + { "linevertsub", 0x02cc , 0 }, + { "macronsub", 0x02cd , 0 }, + { "gravesub", 0x02ce , 0 }, + { "acutesub", 0x02cf , 0 }, + { "length", 0x02d0 , 0 }, + { "halflength", 0x02d1 , 0 }, + { "ringrighthalfcenter", 0x02d2 , 0 }, + { "ringlefthalfsup", 0x02d3 , 0 }, + { "tackupmid", 0x02d4 , 0 }, + { "tackdownmid", 0x02d5 , 0 }, + { "rhotichook", 0x02de , 0 }, + { "gammasuper", 0x02e0 , 0 }, + { "lsuper", 0x02e1 , 0 }, + { "ssuper", 0x02e2 , 0 }, + { "xsuper", 0x02e3 , 0 }, + { "glottalrevsuper", 0x02e4 , 0 }, + { "toneextrahigh", 0x02e5 , 0 }, + { "tonehigh", 0x02e6 , 0 }, + { "tonemid", 0x02e7 , 0 }, + { "tonelow", 0x02e8 , 0 }, + { "toneextralow", 0x02e9 , 0 }, + { "gravenosp", 0x0300 , 0 }, + { "acutenosp", 0x0301 , 0 }, + { "circumflexnosp", 0x0302 , 0 }, + { "tildenosp", 0x0303 , 0 }, + { "macronnosp", 0x0304 , 0 }, + { "overscorenosp", 0x0305 , 0 }, + { "brevenosp", 0x0306 , 0 }, + { "dotnosp", 0x0307 , 0 }, + { "dieresisnosp", 0x0308 , 0 }, + { "hooksupnosp", 0x0309 , 0 }, + { "ringnosp", 0x030a , 0 }, + { "acutedblnosp", 0x030b , 0 }, + { "haceknosp", 0x030c , 0 }, + { "linevertnosp", 0x030d , 0 }, + { "linevertdblnosp", 0x030e , 0 }, + { "gravedblnosp", 0x030f , 0 }, + { "candrabindunosp", 0x0310 , 0 }, + { "breveinvnosp", 0x0311 , 0 }, + { "commaturnsupnosp", 0x0312 , 0 }, + { "apostrophesupnosp", 0x0313 , 0 }, + { "commasuprevnosp", 0x0314 , 0 }, + { "commasuprightnosp", 0x0315 , 0 }, + { "gravesubnosp", 0x0316 , 0 }, + { "acutesubnosp", 0x0317 , 0 }, + { "tackleftsubnosp", 0x0318 , 0 }, + { "tackrightsubnosp", 0x0319 , 0 }, + { "anglesupnosp", 0x031a , 0 }, + { "hornnosp", 0x031b , 0 }, + { "ringlefthalfsubnosp", 0x031c , 0 }, + { "tackupsubnosp", 0x031d , 0 }, + { "tackdownsubnosp", 0x031e , 0 }, + { "plussubnosp", 0x031f , 0 }, + { "minussubnosp", 0x0320 , 0 }, + { "hooksubpalatnosp", 0x0321 , 0 }, + { "hooksubretronosp", 0x0322 , 0 }, + { "dotsubnosp", 0x0323 , 0 }, + { "dotdblsubnosp", 0x0324 , 0 }, + { "ringsubnosp", 0x0325 , 0 }, + { "commasubnosp", 0x0326 , 0 }, + { "cedillanosp", 0x0327 , 0 }, + { "ogoneknosp", 0x0328 , 0 }, + { "linevertsubnosp", 0x0329 , 0 }, + { "bridgesubnosp", 0x032a , 0 }, + { "archdblsubnosp", 0x032b , 0 }, + { "haceksubnosp", 0x032c , 0 }, + { "circumflexsubnosp", 0x032d , 0 }, + { "brevesubnosp", 0x032e , 0 }, + { "breveinvsubnosp", 0x032f , 0 }, + { "tildesubnosp", 0x0330 , 0 }, + { "macronsubnosp", 0x0331 , 0 }, + { "underscorenosp", 0x0332 , 0 }, + { "underscoredblnosp", 0x0333 , 0 }, + { "tildemidnosp", 0x0334 , 0 }, + { "barmidshortnosp", 0x0335 , 0 }, + { "barmidlongnosp", 0x0336 , 0 }, + { "slashshortnosp", 0x0337 , 0 }, + { "slashlongnosp", 0x0338 , 0 }, + { "ringrighthalfsubnosp", 0x0339 , 0 }, + { "bridgeinvsubnosp", 0x033a , 0 }, + { "squaresubnosp", 0x033b , 0 }, + { "seagullsubnosp", 0x033c , 0 }, + { "xsupnosp", 0x033d , 0 }, + { "tildevertsupnosp", 0x033e , 0 }, + { "overscoredblnosp", 0x033f , 0 }, + { "graveleftnosp", 0x0340 , 0 }, + { "acuterightnosp", 0x0341 , 0 }, + { "wavyoverscorenosp", 0x0342 , 0 }, + { "zigzagoverscorenosp", 0x0343 , 0 }, + { "diaeresistonosnosp", 0x0344 , 0 }, + { "iotasubnosp", 0x0345 , 0 }, + { "iotasub", 0x037a , 0 }, + { "diaeresistonos", 0x0385 , 0 }, + { "iotadiaeresistonos", 0x0390 , 0 }, + { "Iotadiaeresis", 0x03aa , 0 }, + { "Upsilondiaeresis", 0x03ab , 0 }, + { "upsilondiaeresistonos", 0x03b0 , 0 }, + { "iotadiaeresis", 0x03ca , 0 }, + { "upsilondiaeresis", 0x03cb , 0 }, + { "betacurled", 0x03d0 , 0 }, + { "thetascript", 0x03d1 , 0 }, + { "Upsilonhook", 0x03d2 , 0 }, + { "Upsilonhooktonos", 0x03d3 , 0 }, + { "Upsilonhookdiaeresis", 0x03d4 , 0 }, + { "phiscript", 0x03d5 , 0 }, + { "omegapi", 0x03d6 , 0 }, + { "Stigma", 0x03da , 0 }, + { "stigma", 0x03db , 0 }, + { "Digamma", 0x03dc , 0 }, + { "digamma", 0x03dd , 0 }, + { "Koppa", 0x03de , 0 }, + { "koppa", 0x03df , 0 }, + { "Sampi", 0x03e0 , 0 }, + { "sampi", 0x03e1 , 0 }, + { "Shei", 0x03e2 , 0 }, + { "shei", 0x03e3 , 0 }, + { "Fei", 0x03e4 , 0 }, + { "fei", 0x03e5 , 0 }, + { "Khei", 0x03e6 , 0 }, + { "khei", 0x03e7 , 0 }, + { "Hori", 0x03e8 , 0 }, + { "hori", 0x03e9 , 0 }, + { "Gangia", 0x03ea , 0 }, + { "gangia", 0x03eb , 0 }, + { "Shima", 0x03ec , 0 }, + { "shima", 0x03ed , 0 }, + { "Dei", 0x03ee , 0 }, + { "dei", 0x03ef , 0 }, + { "kappascript", 0x03f0 , 0 }, + { "sigmalunate", 0x03f2 , 0 }, + { "Io", 0x0401 , 0 }, + { "Dje", 0x0402 , 0 }, + { "Gje", 0x0403 , 0 }, + { "Ecyril", 0x0404 , 0 }, + { "Dze", 0x0405 , 0 }, + { "Icyril", 0x0406 , 0 }, + { "Yi", 0x0407 , 0 }, + { "Je", 0x0408 , 0 }, + { "Lje", 0x0409 , 0 }, + { "Nje", 0x040a , 0 }, + { "Tshe", 0x040b , 0 }, + { "Kje", 0x040c , 0 }, + { "Ucyrilbreve", 0x040e , 0 }, + { "Dzhe", 0x040f , 0 }, + { "Acyril", 0x0410 , 0 }, + { "Be", 0x0411 , 0 }, + { "Ve", 0x0412 , 0 }, + { "Ge", 0x0413 , 0 }, + { "De", 0x0414 , 0 }, + { "Ie", 0x0415 , 0 }, + { "Zhe", 0x0416 , 0 }, + { "Ze", 0x0417 , 0 }, + { "Ii", 0x0418 , 0 }, + { "Iibreve", 0x0419 , 0 }, + { "Ka", 0x041a , 0 }, + { "El", 0x041b , 0 }, + { "Em", 0x041c , 0 }, + { "En", 0x041d , 0 }, + { "Ocyril", 0x041e , 0 }, + { "Pecyril", 0x041f , 0 }, + { "Er", 0x0420 , 0 }, + { "Es", 0x0421 , 0 }, + { "Te", 0x0422 , 0 }, + { "Ucyril", 0x0423 , 0 }, + { "Ef", 0x0424 , 0 }, + { "Kha", 0x0425 , 0 }, + { "Tse", 0x0426 , 0 }, + { "Che", 0x0427 , 0 }, + { "Sha", 0x0428 , 0 }, + { "Shcha", 0x0429 , 0 }, + { "Hard", 0x042a , 0 }, + { "Yeri", 0x042b , 0 }, + { "Soft", 0x042c , 0 }, + { "Ecyrilrev", 0x042d , 0 }, + { "Iu", 0x042e , 0 }, + { "Ia", 0x042f , 0 }, + { "acyril", 0x0430 , 0 }, + { "be", 0x0431 , 0 }, + { "ve", 0x0432 , 0 }, + { "ge", 0x0433 , 0 }, + { "de", 0x0434 , 0 }, + { "ie", 0x0435 , 0 }, + { "zhe", 0x0436 , 0 }, + { "ze", 0x0437 , 0 }, + { "ii", 0x0438 , 0 }, + { "iibreve", 0x0439 , 0 }, + { "ka", 0x043a , 0 }, + { "el", 0x043b , 0 }, + { "em", 0x043c , 0 }, + { "en", 0x043d , 0 }, + { "ocyril", 0x043e , 0 }, + { "pecyril", 0x043f , 0 }, + { "er", 0x0440 , 0 }, + { "es", 0x0441 , 0 }, + { "te", 0x0442 , 0 }, + { "ucyril", 0x0443 , 0 }, + { "ef", 0x0444 , 0 }, + { "kha", 0x0445 , 0 }, + { "tse", 0x0446 , 0 }, + { "che", 0x0447 , 0 }, + { "sha", 0x0448 , 0 }, + { "shcha", 0x0449 , 0 }, + { "hard", 0x044a , 0 }, + { "yeri", 0x044b , 0 }, + { "soft", 0x044c , 0 }, + { "ecyrilrev", 0x044d , 0 }, + { "iu", 0x044e , 0 }, + { "ia", 0x044f , 0 }, + { "io", 0x0451 , 0 }, + { "dje", 0x0452 , 0 }, + { "gje", 0x0453 , 0 }, + { "ecyril", 0x0454 , 0 }, + { "dze", 0x0455 , 0 }, + { "icyril", 0x0456 , 0 }, + { "yi", 0x0457 , 0 }, + { "je", 0x0458 , 0 }, + { "lje", 0x0459 , 0 }, + { "nje", 0x045a , 0 }, + { "tshe", 0x045b , 0 }, + { "kje", 0x045c , 0 }, + { "ucyrilbreve", 0x045e , 0 }, + { "dzhe", 0x045f , 0 }, + { "Yat", 0x0462 , 0 }, + { "yat", 0x0463 , 0 }, + { "Yusbig", 0x046a , 0 }, + { "yusbig", 0x046b , 0 }, + { "Psicyril", 0x0470 , 0 }, + { "psicyril", 0x0471 , 0 }, + { "Fita", 0x0472 , 0 }, + { "fita", 0x0473 , 0 }, + { "Izhitsa", 0x0474 , 0 }, + { "izhitsa", 0x0475 , 0 }, + { "Izhitsagravedbl", 0x0476 , 0 }, + { "izhitsagravedbl", 0x0477 , 0 }, + { "Digraphuk", 0x0478 , 0 }, + { "digraphuk", 0x0479 , 0 }, + { "Omegaround", 0x047a , 0 }, + { "omegaround", 0x047b , 0 }, + { "Omegatitlo", 0x047c , 0 }, + { "omegatitlo", 0x047d , 0 }, + { "OT", 0x047e , 0 }, + { "ot", 0x047f , 0 }, + { "Geupturn", 0x0490 , 0 }, + { "geupturn", 0x0491 , 0 }, + { "Gebar", 0x0492 , 0 }, + { "gebar", 0x0493 , 0 }, + { "Gehook", 0x0494 , 0 }, + { "gehook", 0x0495 , 0 }, + { "Zhertdes", 0x0496 , 0 }, + { "zhertdes", 0x0497 , 0 }, + { "Zecedilla", 0x0498 , 0 }, + { "zecedilla", 0x0499 , 0 }, + { "Kartdes", 0x049a , 0 }, + { "kartdes", 0x049b , 0 }, + { "Kavertbar", 0x049c , 0 }, + { "kavertbar", 0x049d , 0 }, + { "Kabar", 0x049e , 0 }, + { "kabar", 0x049f , 0 }, + { "GeKarev", 0x04a0 , 0 }, + { "gekarev", 0x04a1 , 0 }, + { "Enrtdes", 0x04a2 , 0 }, + { "enrtdes", 0x04a3 , 0 }, + { "EnGe", 0x04a4 , 0 }, + { "enge", 0x04a5 , 0 }, + { "Pehook", 0x04a6 , 0 }, + { "pehook", 0x04a7 , 0 }, + { "Ohook", 0x04a8 , 0 }, + { "ohook", 0x04a9 , 0 }, + { "Escedilla", 0x04aa , 0 }, + { "escedilla", 0x04ab , 0 }, + { "Tertdes", 0x04ac , 0 }, + { "tertdes", 0x04ad , 0 }, + { "Ustrt", 0x04ae , 0 }, + { "ustrt", 0x04af , 0 }, + { "Ustrtbar", 0x04b0 , 0 }, + { "ustrtbar", 0x04b1 , 0 }, + { "Khartdes", 0x04b2 , 0 }, + { "khartdes", 0x04b3 , 0 }, + { "TeTse", 0x04b4 , 0 }, + { "tetse", 0x04b5 , 0 }, + { "Chertdes", 0x04b6 , 0 }, + { "chertdes", 0x04b7 , 0 }, + { "Chevertbar", 0x04b8 , 0 }, + { "chevertbar", 0x04b9 , 0 }, + { "Hcyril", 0x04ba , 0 }, + { "hcyril", 0x04bb , 0 }, + { "Iehook", 0x04bc , 0 }, + { "iehook", 0x04bd , 0 }, + { "Iehookogonek", 0x04be , 0 }, + { "iehookogonek", 0x04bf , 0 }, + { "Icyril1", 0x04c0 , 0 }, + { "Zhebreve", 0x04c1 , 0 }, + { "zhebreve", 0x04c2 , 0 }, + { "Kahook", 0x04c3 , 0 }, + { "kahook", 0x04c4 , 0 }, + { "Enhook", 0x04c7 , 0 }, + { "enhook", 0x04c8 , 0 }, + { "Cheleftdes", 0x04cb , 0 }, + { "cheleftdes", 0x04cc , 0 }, + { "qibuts", 0x05bb , 0 }, + { "meteg", 0x05bd , 0 }, + { "maqaf", 0x05be , 0 }, + { "paseq", 0x05c0 , 0 }, + { "shindot", 0x05c1 , 0 }, + { "sindot", 0x05c2 , 0 }, + { "sofpasuq", 0x05c3 , 0 }, + { "kaffinal", 0x05da , 0 }, + { "memfinal", 0x05dd , 0 }, + { "nunfinal", 0x05df , 0 }, + { "pefinal", 0x05e3 , 0 }, + { "tsadifinal", 0x05e5 , 0 }, + { "vavdbl", 0x05f0 , 0 }, + { "vavyod", 0x05f1 , 0 }, + { "yoddbl", 0x05f2 , 0 }, + { "geresh", 0x05f3 , 0 }, + { "gershayim", 0x05f4 , 0 }, + { "varika", 0x05f5 , 0 }, + { "enquad", 0x2000 , 0 }, + { "emquad", 0x2001 , 0 }, + { "emspace", 0x2003 , 0 }, + { "threeperemspace", 0x2004 , 0 }, + { "fourperemspace", 0x2005 , 0 }, + { "sixperemspace", 0x2006 , 0 }, + { "figurespace", 0x2007 , 0 }, + { "punctuationspace", 0x2008 , 0 }, + { "thinspace", 0x2009 , 0 }, + { "hairspace", 0x200a , 0 }, + { "zerospace", 0x200b , 0 }, + { "zeronojoin", 0x200c , 0 }, + { "zerojoin", 0x200d , 0 }, + { "hyphennobreak", 0x2011 , 0 }, + { "quotedash", 0x2015 , 0 }, + { "dashdbl", 0x2016 , 0 }, + { "quotesinglrev", 0x201b , 0 }, + { "quotedblrev", 0x201f , 0 }, + { "trianglebullet", 0x2023 , 0 }, + { "onedotlead", 0x2024 , 0 }, + { "twodotlead", 0x2025 , 0 }, + { "hyphendot", 0x2027 , 0 }, + { "lineseparator", 0x2028 , 0 }, + { "paragraphseparator", 0x2029 , 0 }, + { "lre", 0x202a , 0 }, + { "rle", 0x202b , 0 }, + { "pdf", 0x202c , 0 }, + { "lro", 0x202d , 0 }, + { "rlo", 0x202e , 0 }, + { "pertenthousand", 0x2031 , 0 }, + { "prime", 0x2032 , 0 }, + { "primedbl", 0x2033 , 0 }, + { "primetriple", 0x2034 , 0 }, + { "primerev", 0x2035 , 0 }, + { "primedblrev", 0x2036 , 0 }, + { "primetriplerev", 0x2037 , 0 }, + { "caret", 0x2038 , 0 }, + { "refmark", 0x203b , 0 }, + { "interrobang", 0x203d , 0 }, + { "tie", 0x2040 , 0 }, + { "caretinsert", 0x2041 , 0 }, + { "hyphenbullet", 0x2043 , 0 }, + { "minussuperior", 0x207b , 0 }, + { "plusinferior", 0x208a , 0 }, + { "equalinferior", 0x208c , 0 }, + { "eurocurrency", 0x20a0 , 0 }, + { "coloncurrency", 0x20a1 , 0 }, + { "mill", 0x20a5 , 0 }, + { "naira", 0x20a6 , 0 }, + { "pesetas", 0x20a7 , 0 }, + { "rupee", 0x20a8 , 0 }, + { "newsheqel", 0x20aa , 0 }, + { "accountof", 0x2100 , 0 }, + { "addresssubject", 0x2101 , 0 }, + { "Cbb", 0x2102 , 0 }, + { "degreecentigrade", 0x2103 , 0 }, + { "CL", 0x2104 , 0 }, + { "cadauna", 0x2106 , 0 }, + { "Euler", 0x2107 , 0 }, + { "scruple", 0x2108 , 0 }, + { "degreefarenheit", 0x2109 , 0 }, + { "Hscript", 0x210b , 0 }, + { "Hblackletter", 0x210c , 0 }, + { "Hbb", 0x210d , 0 }, + { "planck", 0x210e , 0 }, + { "planckover2pi", 0x210f , 0 }, + { "Iscript", 0x2110 , 0 }, + { "Lscript", 0x2112 , 0 }, + { "lscript", 0x2113 , 0 }, + { "lbbar", 0x2114 , 0 }, + { "Nbb", 0x2115 , 0 }, + { "recordright", 0x2117 , 0 }, + { "Pbb", 0x2119 , 0 }, + { "Qbb", 0x211a , 0 }, + { "Rscript", 0x211b , 0 }, + { "Rfractur", 0x211c , 0 }, + { "Rbb", 0x211d , 0 }, + { "Rx", 0x211e , 0 }, + { "response", 0x211f , 0 }, + { "servicemark", 0x2120 , 0 }, + { "tel", 0x2121 , 0 }, + { "versicle", 0x2123 , 0 }, + { "Zbb", 0x2124 , 0 }, + { "ounce", 0x2125 , 0 }, + { "ohm", 0x2126 , 0 }, + { "mho", 0x2127 , 0 }, + { "Zblackletter", 0x2128 , 0 }, + { "iotaturn", 0x2129 , 0 }, + { "degreekelvin", 0x212a , 0 }, + { "Bscript", 0x212c , 0 }, + { "Cblackletter", 0x212d , 0 }, + { "escript", 0x212f , 0 }, + { "Escript", 0x2130 , 0 }, + { "Fscript", 0x2131 , 0 }, + { "Fturn", 0x2132 , 0 }, + { "Mscript", 0x2133 , 0 }, + { "u0scrip", 0x2134 , 0 }, + { "alephmath", 0x2135 , 0 }, + { "gimelmath", 0x2137 , 0 }, + { "dalethmath", 0x2138 , 0 }, + { "twothird", 0x2154 , 0 }, + { "onefifth", 0x2155 , 0 }, + { "twofifths", 0x2156 , 0 }, + { "threefifths", 0x2157 , 0 }, + { "fourfifths", 0x2158 , 0 }, + { "onesixth", 0x2159 , 0 }, + { "fivesixths", 0x215a , 0 }, + { "onenumerator", 0x215f , 0 }, + { "arrowlongboth", 0x2194 , 0 }, + { "arrowlongbothv", 0x2195 , 0 }, + { "arrownorthwest", 0x2196 , 0 }, + { "arrownortheast", 0x2197 , 0 }, + { "arrowsoutheast", 0x2198 , 0 }, + { "arrowsouthwest", 0x2199 , 0 }, + { "arrowleftnot", 0x219a , 0 }, + { "arrowrightnot", 0x219b , 0 }, + { "arrowwaveleft", 0x219c , 0 }, + { "arrowwaveright", 0x219d , 0 }, + { "dblarrowheadleft", 0x219e , 0 }, + { "dblarrowheadup", 0x219f , 0 }, + { "dblarrowheadright", 0x21a0 , 0 }, + { "dblarrowheaddown", 0x21a1 , 0 }, + { "arrowtailleft", 0x21a2 , 0 }, + { "arrowtailright", 0x21a3 , 0 }, + { "arrowbarleft", 0x21a4 , 0 }, + { "arrowbarup", 0x21a5 , 0 }, + { "arrowbarright", 0x21a6 , 0 }, + { "arrowbardown", 0x21a7 , 0 }, + { "arrowbothvbase", 0x21a8 , 0 }, + { "arrowhookleft", 0x21a9 , 0 }, + { "arrowhookright", 0x21aa , 0 }, + { "arrowloopleft", 0x21ab , 0 }, + { "arrowloopright", 0x21ac , 0 }, + { "arrowwaveboth", 0x21ad , 0 }, + { "arrowlongbothnot", 0x21ae , 0 }, + { "arrowzigzag", 0x21af , 0 }, + { "arrowrightdown", 0x21b4 , 0 }, + { "carriagerreturn", 0x21b5 , 0 }, + { "arrowsemanticlockw", 0x21b6 , 0 }, + { "arrowsemclockw", 0x21b7 , 0 }, + { "home", 0x21b8 , 0 }, + { "tableftright", 0x21b9 , 0 }, + { "arrowanticlockw", 0x21ba , 0 }, + { "arrowclockw", 0x21bb , 0 }, + { "arrowlefttophalf", 0x21bc , 0 }, + { "arrowleftbothalf", 0x21bd , 0 }, + { "harpoonupright", 0x21be , 0 }, + { "harpoonupleft", 0x21bf , 0 }, + { "arrowrighttophalf", 0x21c0 , 0 }, + { "arrowrightbothalf", 0x21c1 , 0 }, + { "harpoondownright", 0x21c2 , 0 }, + { "harpoondownleft", 0x21c3 , 0 }, + { "arrowparrrightleft", 0x21c4 , 0 }, + { "dblarrowupdown", 0x21c5 , 0 }, + { "arrowparrleftright", 0x21c6 , 0 }, + { "dblarrowup", 0x21c8 , 0 }, + { "dblarrowdown", 0x21ca , 0 }, + { "harpoonleftright", 0x21cb , 0 }, + { "harpoonrightleft", 0x21cc , 0 }, + { "arrowdblleftnot", 0x21cd , 0 }, + { "arrowdbllongbothnot", 0x21ce , 0 }, + { "arrowdblrightnot", 0x21cf , 0 }, + { "arrowdbllongboth", 0x21d4 , 0 }, + { "arrowdbllongbothv", 0x21d5 , 0 }, + { "arrowdblnw", 0x21d6 , 0 }, + { "arrowdblne", 0x21d7 , 0 }, + { "arrowdblse", 0x21d8 , 0 }, + { "arrowdblsw", 0x21d9 , 0 }, + { "arrowtripleleft", 0x21da , 0 }, + { "arrowtripleright", 0x21db , 0 }, + { "arrowsquiggleleft", 0x21dc , 0 }, + { "arrowsquiggleright", 0x21dd , 0 }, + { "arrowopenleft", 0x21e6 , 0 }, + { "arrowopenup", 0x21e7 , 0 }, + { "arrowopenright", 0x21e8 , 0 }, + { "arrowopendown", 0x21e9 , 0 }, + { "complement", 0x2201 , 0 }, + { "notexistential", 0x2204 , 0 }, + { "elementsmall", 0x220a , 0 }, + { "owner", 0x220b , 0 }, + { "notowner", 0x220c , 0 }, + { "ownersmall", 0x220d , 0 }, + { "eop", 0x220e , 0 }, + { "coproduct", 0x2210 , 0 }, + { "dotplus", 0x2214 , 0 }, + { "slashmath", 0x2215 , 0 }, + { "backslashmath", 0x2216 , 0 }, + { "ringoperator", 0x2218 , 0 }, + { "bulletmath", 0x2219 , 0 }, + { "cuberoot", 0x221b , 0 }, + { "fourthroot", 0x221c , 0 }, + { "measuredangle", 0x2221 , 0 }, + { "sphericalangle", 0x2222 , 0 }, + { "notbar", 0x2224 , 0 }, + { "parallelto", 0x2225 , 0 }, + { "notbardbl", 0x2226 , 0 }, + { "integraldbl", 0x222c , 0 }, + { "integraltrpl", 0x222d , 0 }, + { "contintegral", 0x222e , 0 }, + { "surfintegral", 0x222f , 0 }, + { "volintegral", 0x2230 , 0 }, + { "clwintegral", 0x2231 , 0 }, + { "clwcontintegral", 0x2232 , 0 }, + { "cclwcontintegral", 0x2233 , 0 }, + { "dotminus", 0x2238 , 0 }, + { "excess", 0x2239 , 0 }, + { "geomproportion", 0x223a , 0 }, + { "homothetic", 0x223b , 0 }, + { "revsimilar", 0x223d , 0 }, + { "lazysinv", 0x223e , 0 }, + { "sine", 0x223f , 0 }, + { "wreathproduct", 0x2240 , 0 }, + { "notsimilar", 0x2241 , 0 }, + { "minustilde", 0x2242 , 0 }, + { "asymptequal", 0x2243 , 0 }, + { "notasymptequal", 0x2244 , 0 }, + { "approxorequal", 0x2245 , 0 }, + { "approxnotequal", 0x2246 , 0 }, + { "notapproxequal", 0x2247 , 0 }, + { "almostequal", 0x2248 , 0 }, + { "notalmostequal", 0x2249 , 0 }, + { "almostorequal", 0x224a , 0 }, + { "tildetrpl", 0x224b , 0 }, + { "equivasymptotic", 0x224d , 0 }, + { "geomequivalent", 0x224e , 0 }, + { "difference", 0x224f , 0 }, + { "approachlimit", 0x2250 , 0 }, + { "geomequal", 0x2251 , 0 }, + { "imageorapproxequal", 0x2253 , 0 }, + { "colonequal", 0x2254 , 0 }, + { "equalcolon", 0x2255 , 0 }, + { "ringinequal", 0x2256 , 0 }, + { "ringequal", 0x2257 , 0 }, + { "corresponds", 0x2258 , 0 }, + { "estimates", 0x2259 , 0 }, + { "equiangular", 0x225a , 0 }, + { "starequal", 0x225b , 0 }, + { "deltaequal", 0x225c , 0 }, + { "definequal", 0x225d , 0 }, + { "measurequal", 0x225e , 0 }, + { "questionequal", 0x225f , 0 }, + { "notequivalence", 0x2262 , 0 }, + { "strictequivalence", 0x2263 , 0 }, + { "lessdblequal", 0x2266 , 0 }, + { "greaterdblequal", 0x2267 , 0 }, + { "lessnotdblequal", 0x2268 , 0 }, + { "greaternotdblequal", 0x2269 , 0 }, + { "lessmuch", 0x226a , 0 }, + { "greatermuch", 0x226b , 0 }, + { "between", 0x226c , 0 }, + { "notequivasymptotic", 0x226d , 0 }, + { "notlessequal", 0x2270 , 0 }, + { "notgreaterequal", 0x2271 , 0 }, + { "lessequivlnt", 0x2272 , 0 }, + { "greaterequivlnt", 0x2273 , 0 }, + { "notlessequivlnt", 0x2274 , 0 }, + { "notgreaterequivlnt", 0x2275 , 0 }, + { "notlessgreater", 0x2278 , 0 }, + { "notgreaterless", 0x2279 , 0 }, + { "follows", 0x227b , 0 }, + { "precedesequal", 0x227c , 0 }, + { "followsequal", 0x227d , 0 }, + { "precedequivlnt", 0x227e , 0 }, + { "followsequivlnt", 0x227f , 0 }, + { "notpreceeds", 0x2280 , 0 }, + { "notfollows", 0x2281 , 0 }, + { "notpropersubset", 0x2284 , 0 }, + { "notpropersuperset", 0x2285 , 0 }, + { "notreflexsubset", 0x2288 , 0 }, + { "notreflexsuperset", 0x2289 , 0 }, + { "multiset", 0x228c , 0 }, + { "multiplymultiset", 0x228d , 0 }, + { "unionmulti", 0x228e , 0 }, + { "squareimage", 0x228f , 0 }, + { "squareoriginal", 0x2290 , 0 }, + { "subsetsqequal", 0x2291 , 0 }, + { "supersetsqequal", 0x2292 , 0 }, + { "intersectionsq", 0x2293 , 0 }, + { "unionsq", 0x2294 , 0 }, + { "circleminus", 0x2296 , 0 }, + { "circledivide", 0x2298 , 0 }, + { "circledot", 0x2299 , 0 }, + { "circlering", 0x229a , 0 }, + { "circleasterisk", 0x229b , 0 }, + { "circleequal", 0x229c , 0 }, + { "circlevertbar", 0x229d , 0 }, + { "squareplus", 0x229e , 0 }, + { "squareminus", 0x229f , 0 }, + { "squaremultiply", 0x22a0 , 0 }, + { "squaredot", 0x22a1 , 0 }, + { "turnstileleft", 0x22a2 , 0 }, + { "turnstileright", 0x22a3 , 0 }, + { "latticetop", 0x22a4 , 0 }, + { "assertion", 0x22a6 , 0 }, + { "truestate", 0x22a7 , 0 }, + { "satisfy", 0x22a8 , 0 }, + { "force", 0x22a9 , 0 }, + { "tacktrpl", 0x22aa , 0 }, + { "forceextr", 0x22ab , 0 }, + { "notturnstileleft", 0x22ac , 0 }, + { "notsatisfy", 0x22ad , 0 }, + { "notforce", 0x22ae , 0 }, + { "notforceextr", 0x22af , 0 }, + { "lowerrank", 0x22b0 , 0 }, + { "higherrank", 0x22b1 , 0 }, + { "triangleright", 0x22b2 , 0 }, + { "triangleleft", 0x22b3 , 0 }, + { "triangleftequal", 0x22b4 , 0 }, + { "triangrightequal", 0x22b5 , 0 }, + { "original", 0x22b6 , 0 }, + { "image", 0x22b7 , 0 }, + { "multimap", 0x22b8 , 0 }, + { "hermitconjmatrix", 0x22b9 , 0 }, + { "intercal", 0x22ba , 0 }, + { "xor", 0x22bb , 0 }, + { "nand", 0x22bc , 0 }, + { "nor", 0x22bd , 0 }, + { "rightanglearc", 0x22be , 0 }, + { "narylogicaland", 0x22c0 , 0 }, + { "narylogicalor", 0x22c1 , 0 }, + { "naryintersection", 0x22c2 , 0 }, + { "naryunion", 0x22c3 , 0 }, + { "diamondmath", 0x22c4 , 0 }, + { "divideonmultiply", 0x22c7 , 0 }, + { "bowtie", 0x22c8 , 0 }, + { "multicloseleft", 0x22c9 , 0 }, + { "multicloseright", 0x22ca , 0 }, + { "multiopenleft", 0x22cb , 0 }, + { "multiopenright", 0x22cc , 0 }, + { "revasymptequal", 0x22cd , 0 }, + { "curlor", 0x22ce , 0 }, + { "curland", 0x22cf , 0 }, + { "subsetdbl", 0x22d0 , 0 }, + { "supersetdbl", 0x22d1 , 0 }, + { "uniondbl", 0x22d2 , 0 }, + { "intersectiondbl", 0x22d3 , 0 }, + { "fork", 0x22d4 , 0 }, + { "equalparallel", 0x22d5 , 0 }, + { "lessdot", 0x22d6 , 0 }, + { "greaterdot", 0x22d7 , 0 }, + { "verymuchless", 0x22d8 , 0 }, + { "verymuchgreater", 0x22d9 , 0 }, + { "lessequalgreater", 0x22da , 0 }, + { "greaterequalless", 0x22db , 0 }, + { "equalless", 0x22dc , 0 }, + { "equalgreater", 0x22dd , 0 }, + { "equalprecedes", 0x22de , 0 }, + { "equalfollows", 0x22df , 0 }, + { "preceedsnotequal", 0x22e0 , 0 }, + { "followsnotequal", 0x22e1 , 0 }, + { "notsubsetsqequal", 0x22e2 , 0 }, + { "notsupersetsqequal", 0x22e3 , 0 }, + { "sqimageornotequal", 0x22e4 , 0 }, + { "sqoriginornotequal", 0x22e5 , 0 }, + { "lessnotequivlnt", 0x22e6 , 0 }, + { "greaternotequivlnt", 0x22e7 , 0 }, + { "preceedsnotsimilar", 0x22e8 , 0 }, + { "followsnotequivlnt", 0x22e9 , 0 }, + { "nottriangleleft", 0x22ea , 0 }, + { "nottriangleright", 0x22eb , 0 }, + { "nottriangleleftequal", 0x22ec , 0 }, + { "nottrianglerightequal", 0x22ed , 0 }, + { "vertellipsis", 0x22ee , 0 }, + { "midhorizellipsis", 0x22ef , 0 }, + { "upslopeellipsis", 0x22f0 , 0 }, + { "downslopeellipsis", 0x22f1 , 0 }, + { "perspcorrespond", 0x2306 , 0 }, + { "ceilingleft", 0x2308 , 0 }, + { "ceilingright", 0x2309 , 0 }, + { "floorleft", 0x230a , 0 }, + { "floorright", 0x230b , 0 }, + { "slurabove", 0x2322 , 0 }, + { "slurbelow", 0x2323 , 0 }, + { "null", 0x2400 , 0 }, + { "startofhead", 0x2401 , 0 }, + { "starttext", 0x2402 , 0 }, + { "endtext", 0x2403 , 0 }, + { "endtrans", 0x2404 , 0 }, + { "enquiry", 0x2405 , 0 }, + { "acknowledge", 0x2406 , 0 }, + { "bell", 0x2407 , 0 }, + { "backspace", 0x2408 , 0 }, + { "horiztab", 0x2409 , 0 }, + { "linefeed", 0x240a , 0 }, + { "verttab", 0x240b , 0 }, + { "formfeed", 0x240c , 0 }, + { "shiftout", 0x240e , 0 }, + { "shiftin", 0x240f , 0 }, + { "datalinkescape", 0x2410 , 0 }, + { "devcon1", 0x2411 , 0 }, + { "devcon2", 0x2412 , 0 }, + { "devcon3", 0x2413 , 0 }, + { "devcon4", 0x2414 , 0 }, + { "negacknowledge", 0x2415 , 0 }, + { "synch", 0x2416 , 0 }, + { "endtransblock", 0x2417 , 0 }, + { "cancel", 0x2418 , 0 }, + { "endmedium", 0x2419 , 0 }, + { "substitute", 0x241a , 0 }, + { "escape", 0x241b , 0 }, + { "fileseparator", 0x241c , 0 }, + { "groupseparator", 0x241d , 0 }, + { "recordseparator", 0x241e , 0 }, + { "unitseparator", 0x241f , 0 }, + { "spaceliteral", 0x2420 , 0 }, + { "delete", 0x2421 , 0 }, + { "blankb", 0x2422 , 0 }, + { "spaceopenbox", 0x2423 , 0 }, + { "newline", 0x2424 , 0 }, + { "lthorizform", 0x2500 , 0 }, + { "hvhorizform", 0x2501 , 0 }, + { "ltvertform", 0x2502 , 0 }, + { "hvvertform", 0x2503 , 0 }, + { "ltdashtriphorizform", 0x2504 , 0 }, + { "hvdashtriphorizform", 0x2505 , 0 }, + { "ltdashtripvertform", 0x2506 , 0 }, + { "hvdashtripvertform", 0x2507 , 0 }, + { "ltdashquadhorizform", 0x2508 , 0 }, + { "hvdashquadhorizform", 0x2509 , 0 }, + { "ltdashquadvertform", 0x250a , 0 }, + { "hvdashquadvertform", 0x250b , 0 }, + { "ltdnrtform", 0x250c , 0 }, + { "dnltrthvform", 0x250d , 0 }, + { "dnhvrtltform", 0x250e , 0 }, + { "hvdnrtform", 0x250f , 0 }, + { "ltdnleftform", 0x2510 , 0 }, + { "dnltlefthvform", 0x2511 , 0 }, + { "dnhvleftltform", 0x2512 , 0 }, + { "hvdnleftform", 0x2513 , 0 }, + { "ltuprtform", 0x2514 , 0 }, + { "upltrthvform", 0x2515 , 0 }, + { "uphvrtltform", 0x2516 , 0 }, + { "hvuprtform", 0x2517 , 0 }, + { "ltupleftform", 0x2518 , 0 }, + { "upltlefthvform", 0x2519 , 0 }, + { "uphvleftltform", 0x251a , 0 }, + { "hvupleftform", 0x251b , 0 }, + { "ltvertrightform", 0x251c , 0 }, + { "vertltrthvform", 0x251d , 0 }, + { "uphvrtdnltform", 0x251e , 0 }, + { "dnhvrtupltform", 0x251f , 0 }, + { "verthvrtltform", 0x2520 , 0 }, + { "dnltrtuphvform", 0x2521 , 0 }, + { "upltrtdnhvform", 0x2522 , 0 }, + { "hvvertrtform", 0x2523 , 0 }, + { "ltvertleftform", 0x2524 , 0 }, + { "vtltlefthvform", 0x2525 , 0 }, + { "uphvleftdnltform", 0x2526 , 0 }, + { "dnhvleftupltform", 0x2527 , 0 }, + { "verthvleftltform", 0x2528 , 0 }, + { "dnltleftuphvform", 0x2529 , 0 }, + { "upltleftdnhvform", 0x252a , 0 }, + { "hvvertleftform", 0x252b , 0 }, + { "ltdnhorizform", 0x252c , 0 }, + { "lefthvrtdnltform", 0x252d , 0 }, + { "rthvleftdnltform", 0x252e , 0 }, + { "dnlthorizhvform", 0x252f , 0 }, + { "dnhvhorizltform", 0x2530 , 0 }, + { "rtltrtdnhvform", 0x2531 , 0 }, + { "leftltrtdnhvform", 0x2532 , 0 }, + { "hvdnhorizform", 0x2533 , 0 }, + { "ltuphorizform", 0x2534 , 0 }, + { "lefthvrtupltform", 0x2535 , 0 }, + { "rthvleftupltform", 0x2536 , 0 }, + { "uplthorizhvform", 0x2537 , 0 }, + { "uphvhorizltform", 0x2538 , 0 }, + { "rtltleftuphvform", 0x2539 , 0 }, + { "leftltrtuphvform", 0x253a , 0 }, + { "hvuphorizform", 0x253b , 0 }, + { "ltverthorizform", 0x253c , 0 }, + { "lefthvrtvertltform", 0x253d , 0 }, + { "rthvleftvertltform", 0x253e , 0 }, + { "vertlthorizhvform", 0x253f , 0 }, + { "uphvdnhorizltform", 0x2540 , 0 }, + { "dnhvuphorizltform", 0x2541 , 0 }, + { "verthvhorizltform", 0x2542 , 0 }, + { "leftuphvrtdnltform", 0x2543 , 0 }, + { "rtuphvleftdnltform", 0x2544 , 0 }, + { "leftdnhvrtupltform", 0x2545 , 0 }, + { "rtdnhvleftupltform", 0x2546 , 0 }, + { "dnltuphorizhvform", 0x2547 , 0 }, + { "upltdnhorizhvform", 0x2548 , 0 }, + { "rtltleftverthvform", 0x2549 , 0 }, + { "leftltrtverthvform", 0x254a , 0 }, + { "hvverthorizform", 0x254b , 0 }, + { "ltdashdblhorizform", 0x254c , 0 }, + { "hvdashdblhorizform", 0x254d , 0 }, + { "ltdashdblvertform", 0x254e , 0 }, + { "hvdashdblvertform", 0x254f , 0 }, + { "horizdblbar", 0x2550 , 0 }, + { "vertdblbar", 0x2551 , 0 }, + { "dnrtdblform", 0x2552 , 0 }, + { "dndblrtform", 0x2553 , 0 }, + { "dbldnrtform", 0x2554 , 0 }, + { "dnleftdblform", 0x2555 , 0 }, + { "dndblleftform", 0x2556 , 0 }, + { "dbldnleftform", 0x2557 , 0 }, + { "uprtdblform", 0x2558 , 0 }, + { "updblrtform", 0x2559 , 0 }, + { "dbluprtform", 0x255a , 0 }, + { "upleftdblform", 0x255b , 0 }, + { "updblleftform", 0x255c , 0 }, + { "dblupleftform", 0x255d , 0 }, + { "vertrtdblform", 0x255e , 0 }, + { "vertdblrtform", 0x255f , 0 }, + { "dblvertrtform", 0x2560 , 0 }, + { "vertleftdblform", 0x2561 , 0 }, + { "vertdblleftform", 0x2562 , 0 }, + { "dblvertleftform", 0x2563 , 0 }, + { "dnhorizdblform", 0x2564 , 0 }, + { "dndblhorizform", 0x2565 , 0 }, + { "dbldnhorizform", 0x2566 , 0 }, + { "uphorizdblform", 0x2567 , 0 }, + { "updblhorizform", 0x2568 , 0 }, + { "dbluphorizform", 0x2569 , 0 }, + { "verthorizdblform", 0x256a , 0 }, + { "vertdblhorizform", 0x256b , 0 }, + { "dblverthorizform", 0x256c , 0 }, + { "ltarcdnrtform", 0x256d , 0 }, + { "ltarcdnleftform", 0x256e , 0 }, + { "ltarcupleftform", 0x256f , 0 }, + { "ltarcuprtform", 0x2570 , 0 }, + { "forwarddiagonal", 0x2571 , 0 }, + { "backwarddiagonal", 0x2572 , 0 }, + { "ltdiagonalcross", 0x2573 , 0 }, + { "dneighthblock", 0x2581 , 0 }, + { "dnquarterblock", 0x2582 , 0 }, + { "dnthreeeighthblock", 0x2583 , 0 }, + { "dnfiveeighthblock", 0x2585 , 0 }, + { "dnthreequarterblock", 0x2586 , 0 }, + { "dnseveneighthblock", 0x2587 , 0 }, + { "lfseveneighthblock", 0x2589 , 0 }, + { "lfthreequarterblock", 0x258a , 0 }, + { "lffiveeighthblock", 0x258b , 0 }, + { "lfthreeeighthblock", 0x258d , 0 }, + { "lfquarterblock", 0x258e , 0 }, + { "lfeighthblock", 0x258f , 0 }, + { "upeighthblock", 0x2594 , 0 }, + { "rteighthblock", 0x2595 , 0 }, + { "box", 0x25a1 , 0 }, + { "boxrounded", 0x25a2 , 0 }, + { "boxnested", 0x25a3 , 0 }, + { "boxhorizhatch", 0x25a4 , 0 }, + { "boxverthatch", 0x25a5 , 0 }, + { "boxcrosshatch", 0x25a6 , 0 }, + { "boxleftdiaghatch", 0x25a7 , 0 }, + { "boxrtdiaghatch", 0x25a8 , 0 }, + { "boxcrossdiaghatch", 0x25a9 , 0 }, + { "smallboxfilled", 0x25aa , 0 }, + { "smallbox", 0x25ab , 0 }, + { "rectangle", 0x25ad , 0 }, + { "filledvertrect", 0x25ae , 0 }, + { "vertrectangle", 0x25af , 0 }, + { "filledparallelogram", 0x25b0 , 0 }, + { "parallelogram", 0x25b1 , 0 }, + { "triangle", 0x25b3 , 0 }, + { "smalltrianglesld", 0x25b4 , 0 }, + { "smalltriangle", 0x25b5 , 0 }, + { "trianglerightsld1", 0x25b6 , 0 }, + { "triangleright1", 0x25b7 , 0 }, + { "smalltrianglerightsld", 0x25b8 , 0 }, + { "smalltriangleright", 0x25b9 , 0 }, + { "triagrtopen", 0x25bb , 0 }, + { "triangleinv", 0x25bd , 0 }, + { "smalltriangleinvsld", 0x25be , 0 }, + { "smalltriangleinv", 0x25bf , 0 }, + { "triangleleftsld1", 0x25c0 , 0 }, + { "triangleleft1", 0x25c1 , 0 }, + { "smalltriangleleftsld", 0x25c2 , 0 }, + { "smalltriangleleft", 0x25c3 , 0 }, + { "triaglfopen", 0x25c5 , 0 }, + { "diamondrhombsolid", 0x25c6 , 0 }, + { "diamondrhomb", 0x25c7 , 0 }, + { "diamondrhombnested", 0x25c8 , 0 }, + { "circledash", 0x25cc , 0 }, + { "circleverthatch", 0x25cd , 0 }, + { "circlesolid", 0x25cf , 0 }, + { "circleleftsld", 0x25d0 , 0 }, + { "circlerightsld", 0x25d1 , 0 }, + { "circlebottomsld", 0x25d2 , 0 }, + { "circletopsld", 0x25d3 , 0 }, + { "circlenesld", 0x25d4 , 0 }, + { "circlenwopen", 0x25d5 , 0 }, + { "semicircleleftsld", 0x25d6 , 0 }, + { "semicirclelertsld", 0x25d7 , 0 }, + { "invsemicircleup", 0x25da , 0 }, + { "invsemicircledn", 0x25db , 0 }, + { "nwquadarc", 0x25dc , 0 }, + { "nequadarc", 0x25dd , 0 }, + { "sequadarc", 0x25de , 0 }, + { "swquadarc", 0x25df , 0 }, + { "toparc", 0x25e0 , 0 }, + { "bottomarc", 0x25e1 , 0 }, + { "trianglesesld", 0x25e2 , 0 }, + { "triangleswsld", 0x25e3 , 0 }, + { "tranglenwsld", 0x25e4 , 0 }, + { "trianglenesld", 0x25e5 , 0 }, + { "squareleftsld", 0x25e7 , 0 }, + { "squarerightsld", 0x25e8 , 0 }, + { "squarenwsld", 0x25e9 , 0 }, + { "squaresesld", 0x25ea , 0 }, + { "squarevertbisect", 0x25eb , 0 }, + { "triangledot", 0x25ec , 0 }, + { "triangleleftsld", 0x25ed , 0 }, + { "trianglerightsld", 0x25ee , 0 }, + { "heartopen", 0x2661 , 0 }, + { "diamondopen", 0x2662 , 0 }, + { "spadeopen", 0x2664 , 0 }, + { "Omegaiotasubleniscircumflex", 0x1fae , 0 }, + { "Omegaleniscircumflex", 0x1f6e , 0 }, + { "Upsilonaspercircumflex", 0x1f5f , 0 }, + { "dieresiscircumflex", 0x1fc1 , 0 }, + { "leniscircumflex", 0x1fcf , 0 }, + { "aspercircumflex", 0x1fdf , 0 }, + { "alphaleniscircumflex", 0x1f06 , 0 }, + { "alphaaspercircumflex", 0x1f07 , 0 }, + { "etaleniscircumflex", 0x1f26 , 0 }, + { "etaaspercircumflex", 0x1f27 , 0 }, + { "iotaleniscircumflex", 0x1f36 , 0 }, + { "iotaaspercircumflex", 0x1f37 , 0 }, + { "upsilonleniscircumflex", 0x1f56 , 0 }, + { "upsilonaspercircumflex", 0x1f57 , 0 }, + { "omegaleniscircumflex", 0x1f66 , 0 }, + { "omegaaspercircumflex", 0x1f67 , 0 }, + { "alphaiotasubleniscircumflex", 0x1f86 , 0 }, + { "alphaiotasubaspercircumflex", 0x1f87 , 0 }, + { "etaiotasubleniscircumflex", 0x1f96 , 0 }, + { "etaiotasubaspercircumflex", 0x1f97 , 0 }, + { "omegaiotasubleniscircumflex", 0x1fa6 , 0 }, + { "omegaiotasubaspercircumflex", 0x1fa7 , 0 }, + { "alphacircumflex", 0x1fb6 , 0 }, + { "alphaiotasubcircumflex", 0x1fb7 , 0 }, + { "etacircumflex", 0x1fc6 , 0 }, + { "etaiotasubcircumflex", 0x1fc7 , 0 }, + { "iotacircumflex", 0x1fd6 , 0 }, + { "iotadieresiscircumflex", 0x1fd7 , 0 }, + { "upsiloncircumflex", 0x1fe6 , 0 }, + { "omegacircumflex", 0x1ff6 , 0 }, + { "omegaiotasubcircumflex", 0x1ff7 , 0 }, + { "upsilondieresiscircumflex", 0x1fe7 , 0 }, + { "dialytika", 0x0308 , 0 }, + { "koronis", 0x1fbd , 0 }, + { "prosgegrammeni", 0x1fbe , 0 }, + { "psili", 0x1fbf , 0 }, + { "perispomeni", 0x1fc0 , 0 }, + { "varia", 0x1fef , 0 }, + { "oxia", 0x1ffd , 0 }, + { "dasia", 0x1ffe , 0 }, + { "Alphasmall", 0xf500 , 0 }, + { "Betasmall", 0xf501 , 0 }, + { "Gammasmall", 0xf502 , 0 }, + { "Deltasmall", 0xf503 , 0 }, + { "Epsilonsmall", 0xf504 , 0 }, + { "Zetasmall", 0xf505 , 0 }, + { "Etasmall", 0xf506 , 0 }, + { "Thetasmall", 0xf507 , 0 }, + { "Iotasmall", 0xf508 , 0 }, + { "Kappasmall", 0xf509 , 0 }, + { "Lambdasmall", 0xf50a , 0 }, + { "Musmall", 0xf50b , 0 }, + { "Nusmall", 0xf50c , 0 }, + { "Xismall", 0xf50d , 0 }, + { "Omicronsmall", 0xf50e , 0 }, + { "Pismall", 0xf50f , 0 }, + { "Rhosmall", 0xf510 , 0 }, + { "Sigmasmall", 0xf512 , 0 }, + { "Tausmall", 0xf513 , 0 }, + { "Upsilonsmall", 0xf514 , 0 }, + { "Phismall", 0xf515 , 0 }, + { "Chismall", 0xf516 , 0 }, + { "Psismall", 0xf517 , 0 }, + { "Omegasmall", 0xf518 , 0 }, + { "Iotadieresissmall", 0xf519 , 0 }, + { "Upsilondieresissmall", 0xf51a , 0 }, + { "uni2A0B.lgdisplay", 0xea57 , 0 }, + { "uni2A0B.uplgdisplay", 0xea57 , 0 }, + { "uni2A15.lgdisplay", 0xe376 , 0 }, + { "uni2A15.uplgdisplay", 0xe376 , 0 }, + { "uni2A16.lgdisplay", 0xe377 , 0 }, + { "uni2A16.uplgdisplay", 0xe377 , 0 }, + { "uni2A10.lgdisplay", 0xe395 , 0 }, + { "uni2A10.uplgdisplay", 0xe395 , 0 }, + { "uni2A12.lgdisplay", 0xe397 , 0 }, + { "uni2A12.uplgdisplay", 0xe397 , 0 }, + { "uni2A13.lgdisplay", 0xe398 , 0 }, + { "uni2A13.uplgdisplay", 0xe398 , 0 }, + { "uni2A14.lgdisplay", 0xe399 , 0 }, + { "uni2A14.uplgdisplay", 0xe399 , 0 }, + { "uni2A17.lgdisplay", 0xe39a , 0 }, + { "uni2A17.uplgdisplay", 0xe39a , 0 }, + { "uni2A11.uplgdisplay", 0xe39b , 0 }, + { "uni2A11.lgdisplay", 0xe39b , 0 }, + { "uni2A0F.lgdisplay", 0xe3d3 , 0 }, + { "uni2A0F.uplgdisplay", 0xe3d3 , 0 }, +/* From Richard Kinch's TeX list of glyph aliases */ + { "fscript", 0x192 , 0 }, + { "fraction1", 0x2215 , 0 }, + { "negationslash", 0x2215 , 0 }, + { "circleR", 0xae , 0 }, + { "circlecopyrt", 0xa9 , 0 }, + { "smile", 0x263a , 0 }, + { "Ifractur", 0x2111 , 0 }, + { "Rfractur", 0x211C , 0 }, + { "Omegainv", 0x2127 , 0 }, + { "mho", 0x2127 , 0 }, + { "alephmath", 0x2135 , 0 }, + { "beth", 0x2136 , 0 }, + { "bethmath", 0x2136 , 0 }, + { "gimelmath", 0x2137 , 0 }, + { "daleth", 0x2138 , 0 }, + { "daletmath", 0x2138 , 0 }, + { "arrowbothv", 0x2195 , 0 }, + { "prime1", 0x2032 , 0 }, + { "primerev1", 0x2035 , 0 }, + { "primereverse", 0x2035 , 0 }, + { "followsequal1", 0x227d , 0 }, + { "similarequal", 0x2243 , 0 }, + { "square", 0x25a1 , 0 }, + { "squaresolid", 0x25a0 , 0 }, + { "squaresmallsolid", 0x25aa , 0 }, + { "diamondsolid", 0x25c6 , 0 }, + { "clockwise", 0x21bb , 0 }, + { "anticlockwise", 0x21ba , 0 }, + { "forces", 0x22a9 , 0 }, + { "forcesbar", 0x22aa , 0 }, + { "satisfies", 0x22a8 , 0 }, + { "dblarrowdwn", 0x21ca , 0 }, + { "shiftleft", 0x2196 , 0 }, + { "shiftright", 0x2197 , 0 }, + { "squiggleright", 0x21dd , 0 }, + { "squiggleleft", 0x21dc , 0 }, + { "squiggleleftright", 0x21ad , 0 }, + { "curlyleft", 0x21ab , 0 }, + { "curlyright", 0x21ac , 0 }, + { "followsorequal", 0x227d , 0 }, + { "equalsdots", 0x2251 , 0 }, + { "defines", 0x225c , 0 }, + { "ng", 0x014b , 0 }, + { "Ng", 0x014a , 0 }, + { "visiblespace", 0x2420 , 0 }, + { "dslash", 0x0111 , 0 }, + { "tie1", 0x2040 , 0 }, + { "arrowdblbothv", 0x21d5 , 0 }, + { "precedesequal1", 0x227c , 0 }, + { "greaterorsimilar", 0x2273 , 0 }, + { "precedesorequal", 0x227e , 0 }, + { "lessorsimilar", 0x2272 , 0 }, + { "equalorgreater", 0x22dd , 0 }, + { "lessorequalslant", 0x2264 , 0 }, + { "equaldotrightleft", 0x2253 , 0 }, + { "equaldotleftright", 0x2252 , 0 }, + { "followsorcurly", 0x227d , 0 }, + { "greaterorequalslant", 0x2265 , 0 }, + { "trianglerightequal", 0x22b5 , 0 }, + { "triangleleftequal", 0x22b4 , 0 }, + { "triangledownsld", 0x25bc , 0 }, + { "arrowaxisright", 0x2192 , 0 }, + { "arrowaxisleft", 0x2190 , 0 }, + { "trianglesolid", 0x25b2 , 0 }, + { "greaterlessequal", 0x22db , 0 }, + { "orunderscore", 0x22bb , 0 }, + { "frown", 0x2322 , 0 }, + { "uprise", 0x22cf , 0 }, + { "downfall", 0x22ce , 0 }, + { "subsetdblequal", 0x2286 , 0 }, + { "supersetdblequal", 0x2287 , 0 }, + { "Finv", 0x2132 , 0 }, + { "notarrowboth", 0x21ae , 0 }, + { "archleftdown", 0x21b6 , 0 }, + { "archrightdown", 0x21b7 , 0 }, + { "notdblarrowleft", 0x21cd , 0 }, + { "notdblarrowboth", 0x21ce , 0 }, + { "notdblarrowright", 0x21cf , 0 }, + { "epsiloninv", 0x220a , 0 }, + { "equalorsimilar", 0x2242 , 0 }, + { "notprecedes", 0x2280 , 0 }, + { "notsubseteql", 0x2288 , 0 }, + { "notsuperseteql", 0x2289 , 0 }, + { "subsetnoteql", 0x228a , 0 }, + { "supersetnoteql", 0x228b , 0 }, + { "notturnstile", 0x22ac , 0 }, + { "notforcesextra", 0x22af , 0 }, + { "dividemultiply", 0x22c7 , 0 }, + { "notprecedesoreql", 0x22e0 , 0 }, + { "notfollowsoreql", 0x22e1 , 0 }, + { "lessornotsimilar", 0x22e6 , 0 }, + { "greaterornotsimilar", 0x22e7 , 0 }, + { "precedeornoteqvlnt", 0x22e8 , 0 }, + { "followornoteqvlnt", 0x22e9 , 0 }, + { "nottriangeqlleft", 0x22ec , 0 }, + { "nottriangeqlright", 0x22ed , 0 }, + { "angbracketleft", 0x3008 , 0 }, + { "angbracketright", 0x3009 , 0 }, + { "check", 0x2713 , 0 }, + { "circleS", 0x24c8 , 0 }, + { "rightanglenw", 0x250c , 0 }, + { "rightanglene", 0x2510 , 0 }, + { "rightanglesw", 0x2514 , 0 }, + { "rightanglese", 0x2518 , 0 }, + { "Yen", 0x00a5 , 0 }, + { "permill", 0x2030 , 0 }, + { "recipe", 0x211e , 0 }, + { "pertenmill", 0x2031 , 0 }, + { "lnot", 0x00ac , 0 }, + { "circleP", 0x2117 , 0 }, + { "surd", 0x221a , 0 }, + { "asciigrave", 0x60 , 0 }, + { "asciigrave", 0x60 , 0 }, + { "asciiacute", 0xb4 , 0 }, + { "asciidieresis", 0xa8 , 0 }, + { "pilcrow", 0xb6 , 0 }, +/* Useful names to use to find glyphs */ + { "circumflexcomb", 0x302 , 0 }, + { "macroncomb", 0x304 , 0 }, + { "brevecomb", 0x306 , 0 }, + { "diaeresiscomb", 0x308 , 0 }, + { "caroncomb", 0x30c , 0 }, + { "vrachycomb", 0x306 , 0 }, + { "psilicomb", 0x313 , 0 }, + { "dasiacomb", 0x314 , 0 }, + { "psilivaria", 0x1fcd , 0 }, + { "psilioxia", 0x1fce , 0 }, + { "psiliperispomeni", 0x1fcf , 0 }, + { "dasiavaria", 0x1fdd , 0 }, + { "dasiaoxia", 0x1fde , 0 }, + { "dasiaperispomeni", 0x1fdf , 0 }, + { "dialytikavaria", 0x1fed , 0 }, + { "dialytikaoxia", 0x1fee , 0 }, + { "dialytikaperispomeni", 0x1fc1 , 0 }, +/* Adobe spells diaeresis the American way, as dieresis */ + { "diaeresis", 0xa8 , 0 }, + { "Adiaeresis", 0xC4 , 0 }, + { "Ediaeresis", 0xCB , 0 }, + { "Idiaeresis", 0xCF , 0 }, + { "Odiaeresis", 0xD6 , 0 }, + { "Udiaeresis", 0xDC , 0 }, + { "adiaeresis", 0xE4 , 0 }, + { "ediaeresis", 0xEB , 0 }, + { "idiaeresis", 0xEF , 0 }, + { "odiaeresis", 0xF6 , 0 }, + { "udiaeresis", 0xFC , 0 }, + { "Ydiaeresis", 0x178 , 0 }, + { "diaeresistonos", 0x385 , 0 }, + { "iotadiaeresistonos", 0x390 , 0 }, + { "Iotadiaeresis", 0x3AA , 0 }, + { "Upsilondiaeresis", 0x3AB , 0 }, + { "upsilondiaeresistonos", 0x3B0 , 0 }, + { "iotadiaeresis", 0x3CA , 0 }, + { "upsilondiaeresis", 0x3CB , 0 }, + { "Wdiaeresis", 0x1e84 , 0 }, + { "wdiaeresis", 0x1e85 , 0 }, + { "ETH", 0xd0 , 0 }, + { "THORN", 0xde , 0 }, + { "ssharp", 0xdf , 0 }, + { "Ooblique", 0xd8 , 0 }, + { "notsign", 0xac , 0 }, +/* Sun has used "masculine" for ordmasculine */ + { NULL, 0, 0 }, +}; diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/noprefs.c b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/noprefs.c new file mode 100644 index 00000000000..bc23f7d23c4 --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/noprefs.c @@ -0,0 +1,602 @@ +/* Copyright (C) 2000-2008 by George Williams */ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "pfaedit.h" +#include "plugins.h" +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#include "ttf.h" + +#if HAVE_LANGINFO_H +# include +#endif + +static char *othersubrsfile = NULL; + +extern int adjustwidth; +extern int adjustlbearing; +extern Encoding *default_encoding; +extern int autohint_before_rasterize; +extern int autohint_before_generate; +extern int accent_offset; +extern int GraveAcuteCenterBottom; +extern int PreferSpacingAccents; +extern int CharCenterHighest; +extern int recognizePUA; +extern int snaptoint; +extern float joinsnap; +extern char *BDFFoundry; +extern char *TTFFoundry; +extern char *xuid; +extern char *SaveTablesPref; +extern int maxundoes; /* in cvundoes */ +extern int prefer_cjk_encodings; /* in parsettf */ +extern int onlycopydisplayed, copymetadata, copyttfinstr; +extern int oldformatstate; /* in savefontdlg.c */ +extern int oldbitmapstate; /* in savefontdlg.c */ +extern int old_ttf_flags; /* in savefontdlg.c */ +extern int old_ps_flags; /* in savefontdlg.c */ +extern int old_otf_flags; /* in savefontdlg.c */ +extern int preferpotrace; /* in autotrace.c */ +extern int autotrace_ask; /* in autotrace.c */ +extern int mf_ask; /* in autotrace.c */ +extern int mf_clearbackgrounds; /* in autotrace.c */ +extern int mf_showerrors; /* in autotrace.c */ +extern char *mf_args; /* in autotrace.c */ +extern int coverageformatsallowed; /* in tottfgpos.c */ +extern int hint_diagonal_ends; /* in stemdb.c */ +extern int hint_diagonal_intersections; /* in stemdb.c */ +extern int hint_bounding_boxes; /* in stemdb.c */ +extern int detect_diagonal_stems; /* in stemdb.c */ +extern int new_em_size; /* in splineutil2.c */ +extern int new_fonts_are_order2; /* in splineutil2.c */ +extern int loaded_fonts_same_as_new; /* in splineutil2.c */ +extern int use_second_indic_scripts; /* in tottfgpos.c */ +extern MacFeat *default_mac_feature_map, /* from macenc.c */ + *user_mac_feature_map; +extern int allow_utf8_glyphnames; /* in charinfo.c */ +extern int ask_user_for_cmap; /* in parsettf.c */ +extern NameList *force_names_when_opening; +extern NameList *force_names_when_saving; +extern NameList *namelist_for_new_fonts; +extern int default_fv_row_count; /* in splineutil2.c */ +extern int default_fv_col_count; /* in splineutil2.c */ +extern int use_freetype_to_rasterize_fv; /* in bitmapchar.c */ + +/* UI preferences which we don't use, but will preserve to so we can read/write */ +/* UI preference files without loss of data */ +static char *xdefs_filename; +static char *helpdir=NULL; /* in uiutil.c */ +static int splash=1; +static int cv_auto_goto=1; +static int OpenCharsInNewWindow=1; +static float arrowAmount=1; +static float arrowAccelFactor=10; +static float snapdistance=3.5; +static int stop_at_join=0; +static int updateflex=0; /* in charview.c */ +static int ask_user_for_resolution=1; +static int default_fv_showhmetrics=0; /* in fontview */ +static int default_fv_showvmetrics=0; /* in fontview */ +static int default_fv_glyphlabel=0; /* in fontview */ +static int save_to_dir=0; /* in fontview, use sfdir rather than sfd */ +static int palettes_docked=1; /* in cvpalettes */ +static int cvvisible[2]={1,1}, bvvisible[3]={1,1,1}; /* in cvpalettes.c */ +static int infowindowdistance=10; /* in cvruler.c */ +static int loacal_markextrema, loacal_markpoi, loacal_showrulers, + loacal_showcpinfo, loacal_showsidebearings, loacal_showpoints, + loacal_showfilled, loacal_showtabs, loacal_showrefnames; +static int oldsystem=100; +static char *oflib_username; +static char *oflib_password; +static int rectelipse=0, polystar=0, regular_star=0; /* from cvpalettes.c */ +static int center_out[2]={0,0}; /* from cvpalettes.c */ +static float rr_radius=0; /* from cvpalettes.c */ +static int ps_pointcnt=5; /* from cvpalettes.c */ +static float star_percent=100; /* from cvpalettes.c */ +static int debug_wins=0; /* in cvdebug.c */ +static int gridfit_dpi=100, gridfit_depth=1; /* in cvgridfit.c */ +static float gridfit_pointsizex=12; /* in cvgridfit.c */ +static float gridfit_pointsizey=12; /* in cvgridfit.c */ +static int gridfit_x_sameas_y=true; /* in cvgridfit.c */ +static int default_font_filter_index=0; +static int ItalicConstrained = true; +extern int clear_tt_instructions_when_needed; /* cvundoes.c */ +static int default_cv_width; /* in charview.c */ +static int default_cv_height; /* in charview.c */ +static int mv_width; /* in metricsview.c */ +static int mv_height; /* in metricsview.c */ +static int bv_width; /* in bitmapview.c */ +static int bv_height; /* in bitmapview.c */ +static int mvshowgrid; /* in metricsview.c */ +static int old_validate = true; +static int old_fontlog = false; +static int home_char = 'A'; +static int compact_font_on_open=0; +static int oflib_automagic_preview; /* from oflib.c */ +static int aa_pixelsize; /* from anchorsaway.c */ + +static int gfc_showhidden, gfc_dirplace; +static char *gfc_bookmarks=NULL; +static char *pixmapdir=NULL; + +enum pref_types { pr_int, pr_real, pr_bool, pr_enum, pr_encoding, pr_string, + pr_file, pr_namelist, pr_unicode }; + +int unused = 0; +char *unused_string = NULL; + +static struct prefs_list { + char *name; + /* In the prefs file the untranslated name will always be used, but */ + /* in the UI that name may be translated. */ + enum pref_types type; + void *val; + void *(*get)(void); + void (*set)(void *); + char mn; + struct enums *enums; + unsigned int dontdisplay: 1; + char *popup; +} core_list[] = { + { N_("OtherSubrsFile"), pr_file, &othersubrsfile, NULL, NULL, 'O', NULL, 0, N_("If you wish to replace Adobe's OtherSubrs array (for Type1 fonts)\nwith an array of your own, set this to point to a file containing\na list of up to 14 PostScript subroutines. Each subroutine must\nbe preceded by a line starting with '%%%%' (any text before the\nfirst '%%%%' line will be treated as an initial copyright notice).\nThe first three subroutines are for flex hints, the next for hint\nsubstitution (this MUST be present), the 14th (or 13 as the\nnumbering actually starts with 0) is for counter hints.\nThe subroutines should not be enclosed in a [ ] pair.") }, + { N_("AutoHint"), pr_bool, &unused, NULL, NULL, 'A', NULL, 0, N_("AutoHint before rasterizing") }, + { N_("NewCharset"), pr_encoding, &default_encoding, NULL, NULL, 'N', NULL, 0, N_("Default encoding for\nnew fonts") }, + { N_("NewEmSize"), pr_int, &new_em_size, NULL, NULL, 'S', NULL, 0, N_("The default size of the Em-Square in a newly created font.") }, + { N_("NewFontsQuadratic"), pr_bool, &new_fonts_are_order2, NULL, NULL, 'Q', NULL, 0, N_("Whether new fonts should contain splines of quadratic (truetype)\nor cubic (postscript & opentype).") }, + { N_("FreeTypeInFontView"), pr_bool, &unused, NULL, NULL, 'O', NULL, 0, N_("Use the FreeType rasterizer (when available)\nto rasterize glyphs in the font view.\nThis generally results in better quality.") }, + { N_("LoadedFontsAsNew"), pr_bool, &loaded_fonts_same_as_new, NULL, NULL, 'L', NULL, 0, N_("Whether fonts loaded from the disk should retain their splines\nwith the original order (quadratic or cubic), or whether the\nsplines should be converted to the default order for new fonts\n(see NewFontsQuadratic).") }, + { N_("PreferCJKEncodings"), pr_bool, &prefer_cjk_encodings, NULL, NULL, 'C', NULL, 0, N_("When loading a truetype or opentype font which has both a unicode\nand a CJK encoding table, use this flag to specify which\nshould be loaded for the font.") }, + { N_("AskUserForCMap"), pr_bool, &ask_user_for_cmap, NULL, NULL, 'O', NULL, 0, N_("When loading a font in sfnt format (TrueType, OpenType, etc.),\nask the user to specify which cmap to use initially.") }, + { N_("PreserveTables"), pr_string, &SaveTablesPref, NULL, NULL, 'P', NULL, 0, N_("Enter a list of 4 letter table tags, separated by commas.\nFontForge will make a binary copy of these tables when it\nloads a True/OpenType font, and will output them (unchanged)\nwhen it generates the font. Do not include table tags which\nFontForge thinks it understands.") }, + { N_("ItalicConstrained"), pr_bool, &ItalicConstrained, NULL, NULL, '\0', NULL, 0, N_("In the Outline View, the Shift key constrains motion to be parallel to the ItalicAngle rather than constraining it to be vertical.") }, + { N_("SnapToInt"), pr_bool, &snaptoint, NULL, NULL, '\0', NULL, 0, N_("When the user clicks in the editing window, round the location to the nearest integers.") }, + { N_("JoinSnap"), pr_real, &joinsnap, NULL, NULL, '\0', NULL, 0, N_("The Edit->Join command will join points which are this close together\nA value of 0 means they must be coincident") }, + { N_("CopyMetaData"), pr_bool, ©metadata, NULL, NULL, '\0', NULL, 0, N_("When copying glyphs from the font view, also copy the\nglyphs' metadata (name, encoding, comment, etc).") }, + { N_("UndoDepth"), pr_int, &maxundoes, NULL, NULL, '\0', NULL, 0, N_("The maximum number of Undoes/Redoes stored in a glyph") }, + { N_("AutoWidthSync"), pr_bool, &adjustwidth, NULL, NULL, '\0', NULL, 0, N_("Changing the width of a glyph\nchanges the widths of all accented\nglyphs based on it.") }, + { N_("AutoLBearingSync"), pr_bool, &adjustlbearing, NULL, NULL, '\0', NULL, 0, N_("Changing the left side bearing\nof a glyph adjusts the lbearing\nof other references in all accented\nglyphs based on it.") }, + { N_("ClearInstrsBigChanges"), pr_bool, &clear_tt_instructions_when_needed, NULL, NULL, 'C', NULL, 0, N_("Instructions in a TrueType font refer to\npoints by number, so if you edit a glyph\nin such a way that some points have different\nnumbers (add points, remove them, etc.) then\nthe instructions will be applied to the wrong\npoints with disasterous results.\n Normally FontForge will remove the instructions\nif it detects that the points have been renumbered\nin order to avoid the above problem. You may turn\nthis behavior off -- but be careful!") }, + { N_("CopyTTFInstrs"), pr_bool, ©ttfinstr, NULL, NULL, '\0', NULL, 0, N_("When copying glyphs from the font view, also copy the\nglyphs' metadata (name, encoding, comment, etc).") }, + { N_("AccentOffsetPercent"), pr_int, &accent_offset, NULL, NULL, '\0', NULL, 0, N_("The percentage of an em by which an accent is offset from its base glyph in Build Accent") }, + { N_("AccentCenterLowest"), pr_bool, &GraveAcuteCenterBottom, NULL, NULL, '\0', NULL, 0, N_("When placing grave and acute accents above letters, should\nFontForge center them based on their full width, or\nshould it just center based on the lowest point\nof the accent.") }, + { N_("CharCenterHighest"), pr_bool, &CharCenterHighest, NULL, NULL, '\0', NULL, 0, N_("When centering an accent over a glyph, should the accent\nbe centered on the highest point(s) of the glyph,\nor the middle of the glyph?") }, + { N_("PreferSpacingAccents"), pr_bool, &PreferSpacingAccents, NULL, NULL, '\0', NULL, 0, N_("Use spacing accents (Unicode: 02C0-02FF) rather than\ncombining accents (Unicode: 0300-036F) when\nbuilding accented glyphs.") }, + { N_("PreferPotrace"), pr_bool, &unused, NULL, NULL, '\0', NULL, 0, N_("FontForge supports two different helper applications to do autotracing\n autotrace and potrace\nIf your system only has one it will use that one, if you have both\nuse this option to tell FontForge which to pick.") }, + { N_("AutotraceArgs"), pr_string, &unused_string, NULL, NULL, '\0', NULL, 0, N_("Extra arguments for configuring the autotrace program\n(either autotrace or potrace)") }, + { N_("AutotraceAsk"), pr_bool, &unused, NULL, NULL, '\0', NULL, 0, N_("Ask the user for autotrace arguments each time autotrace is invoked") }, + { N_("MfArgs"), pr_string, &unused_string, NULL, NULL, '\0', NULL, 0, N_("Commands to pass to mf (metafont) program, the filename will follow these") }, + { N_("MfAsk"), pr_bool, &unused, NULL, NULL, '\0', NULL, 0, N_("Ask the user for mf commands each time mf is invoked") }, + { N_("MfClearBg"), pr_bool, &unused, NULL, NULL, '\0', NULL, 0, N_("FontForge loads large images into the background of each glyph\nprior to autotracing them. You may retain those\nimages to look at after mf processing is complete, or\nremove them to save space") }, + { N_("MfShowErr"), pr_bool, &unused, NULL, NULL, '\0', NULL, 0, N_("MetaFont (mf) generates lots of verbiage to stdout.\nMost of the time I find it an annoyance but it is\nimportant to see if something goes wrong.") }, + { N_("FoundryName"), pr_string, &unused_string, NULL, NULL, 'F', NULL, 0, N_("Name used for foundry field in bdf\nfont generation") }, + { N_("TTFFoundry"), pr_string, &TTFFoundry, NULL, NULL, 'T', NULL, 0, N_("Name used for Vendor ID field in\nttf (OS/2 table) font generation.\nMust be no more than 4 characters") }, + { N_("NewFontNameList"), pr_namelist, &namelist_for_new_fonts, NULL, NULL, '\0', NULL, 0, N_("FontForge will use this namelist when assigning\nglyph names to code points in a new font.") }, + { N_("RecognizePUANames"), pr_bool, &recognizePUA, NULL, NULL, 'U', NULL, 0, N_("Once upon a time, Adobe assigned PUA (public use area) encodings\nfor many stylistic variants of characters (small caps, old style\nnumerals, etc.). Adobe no longer believes this to be a good idea,\nand recommends that these encodings be ignored.\n\n The assignments were originally made because most applications\ncould not handle OpenType features for accessing variants. Adobe\nnow believes that all apps that matter can now do so. Applications\nlike Word and OpenOffice still can't handle these features, so\n fontforge's default behavior is to ignore Adobe's current\nrecommendations.\n\nNote: This does not affect figuring out unicode from the font's encoding,\nit just controls determining unicode from a name.") }, + { N_("UnicodeGlyphNames"), pr_bool, &allow_utf8_glyphnames, NULL, NULL, 'O', NULL, 0, N_("Allow the full unicode character set in glyph names.\nThis does not conform to adobe's glyph name standard.\nSuch names should be for internal use only and\nshould NOT end up in production fonts." ) }, + { N_("XUID-Base"), pr_string, &xuid, NULL, NULL, 'X', NULL, 0, N_("If specified this should be a space separated list of integers each\nless than 16777216 which uniquely identify your organization\nFontForge will generate a random number for the final component.") }, + { N_("AskBDFResolution"), pr_bool, &ask_user_for_resolution, NULL, NULL, 'B', NULL, 0, N_("When generating a set of BDF fonts ask the user\nto specify the screen resolution of the fonts\notherwise FontForge will guess depending on the pixel size.") }, + { N_("HintForGen"), pr_bool, &autohint_before_generate, NULL, NULL, 'H', NULL, 0, N_("AutoHint changed glyphs before generating a font") }, + { N_("HintBoundingBoxes"), pr_bool, &hint_bounding_boxes, NULL, NULL, '\0', NULL, 0, N_("FontForge will place vertical or horizontal hints to describe the bounding boxes of suitable glyphs.") }, + { N_("HintDiagonalEnds"), pr_bool, &hint_diagonal_ends, NULL, NULL, '\0', NULL, 0, N_("FontForge will place vertical or horizontal hints at the ends of diagonal stems.") }, + { N_("HintDiagonalInter"), pr_bool, &hint_diagonal_intersections, NULL, NULL, '\0', NULL, 0, N_("FontForge will place vertical or horizontal hints at the intersections of diagonal stems.") }, + { N_("DetectDiagonalStems"), pr_bool, &detect_diagonal_stems, NULL, NULL, '\0', NULL, 0, N_("FontForge will generate diagonal stem hints, which then can be used by the AutoInstr command.") }, + { N_("UseNewIndicScripts"), pr_bool, &use_second_indic_scripts, NULL, NULL, 'C', NULL, 0, N_("MS has changed (in August 2006) the inner workings of their Indic shaping\nengine, and to disambiguate this change has created a parallel set of script\ntags (generally ending in '2') for Indic writing systems. If you are working\nwith the new system set this flag, if you are working with the old unset it.\n(if you aren't doing Indic work, this flag is irrelevant).") }, + { "AntiAlias", pr_bool, &default_fv_antialias, NULL, NULL, '\0', NULL, 1, NULL }, + { "DefaultFVSize", pr_int, &default_fv_font_size, NULL, NULL, 'S', NULL, 1, NULL }, + { "DefaultFVRowCount", pr_int, &default_fv_row_count, NULL, NULL, 'S', NULL, 1, NULL }, + { "DefaultFVColCount", pr_int, &default_fv_col_count, NULL, NULL, 'S', NULL, 1, NULL }, + { "OnlyCopyDisplayed", pr_bool, &onlycopydisplayed, NULL, NULL, '\0', NULL, 1, NULL }, + { "DefaultOutputFormat", pr_int, &unused, NULL, NULL, '\0', NULL, 1, NULL }, + { "DefaultBitmapFormat", pr_int, &unused, NULL, NULL, '\0', NULL, 1, NULL }, + { "SaveValidate", pr_int, &old_validate, NULL, NULL, '\0', NULL, 1, NULL }, + { "SaveFontLogAsk", pr_int, &old_fontlog, NULL, NULL, '\0', NULL, 1, NULL }, + { "DefaultTTFflags", pr_int, &unused, NULL, NULL, '\0', NULL, 1, NULL }, + { "DefaultPSflags", pr_int, &unused, NULL, NULL, '\0', NULL, 1, NULL }, + { "DefaultOTFflags", pr_int, &unused, NULL, NULL, '\0', NULL, 1, NULL }, + { "PageWidth", pr_int, &unused, NULL, NULL, '\0', NULL, 1, NULL }, + { "PageHeight", pr_int, &unused, NULL, NULL, '\0', NULL, 1, NULL }, + { "PrintType", pr_int, &unused, NULL, NULL, '\0', NULL, 1, NULL }, + { "PrintCommand", pr_string, &unused_string, NULL, NULL, '\0', NULL, 1, NULL }, + { "PageLazyPrinter", pr_string, &unused_string, NULL, NULL, '\0', NULL, 1, NULL }, + { "CoverageFormatsAllowed", pr_int, &coverageformatsallowed, NULL, NULL, '\0', NULL, 1, NULL }, + { "ForceNamesWhenOpening", pr_namelist, &force_names_when_opening, NULL, NULL, '\0', NULL, 1, NULL }, + { "ForceNamesWhenSaving", pr_namelist, &force_names_when_saving, NULL, NULL, '\0', NULL, 1, NULL }, + { NULL, 0, NULL, NULL, NULL, 0, NULL, 0, NULL }, +}, + extras[] = { + { N_("ResourceFile"), pr_file, &xdefs_filename, NULL, NULL, 'R', NULL, 0, N_("When FontForge starts up, it loads display related resources from a\nproperty on the screen. Sometimes it is useful to be able to store\nthese resources in a file. These resources are only read at start\nup, so changing this has no effect until the next time you start\nFontForge.") }, + { N_("HelpDir"), pr_file, &helpdir, NULL, NULL, 'H', NULL, 0, N_("The directory on your local system in which FontForge will search for help\nfiles. If a file is not found there, then FontForge will look for it on the net.") }, + { N_("SplashScreen"), pr_bool, &splash, NULL, NULL, 'S', NULL, 0, N_("Show splash screen on start-up") }, + { N_("GlyphAutoGoto"), pr_bool, &cv_auto_goto, NULL, NULL, '\0', NULL, 0, N_("Typing a normal character in the glyph view window changes the window to look at that character") }, + { N_("OpenCharsInNewWindow"), pr_bool, &OpenCharsInNewWindow, NULL, NULL, '\0', NULL, 0, N_("When double clicking on a character in the font view\nopen that character in a new window, otherwise\nreuse an existing one.") }, + { N_("ArrowMoveSize"), pr_real, &arrowAmount, NULL, NULL, '\0', NULL, 0, N_("The number of em-units by which an arrow key will move a selected point") }, + { N_("ArrowAccelFactor"), pr_real, &arrowAccelFactor, NULL, NULL, '\0', NULL, 0, N_("Holding down the Alt (or Meta) key will speed up arrow key motion by this factor") }, + { N_("SnapDistance"), pr_real, &snapdistance, NULL, NULL, '\0', NULL, 0, N_("When the mouse pointer is within this many pixels\nof one of the various interesting features (baseline,\nwidth, grid splines, etc.) the pointer will snap\nto that feature.") }, + { N_("StopAtJoin"), pr_bool, &stop_at_join, NULL, NULL, '\0', NULL, 0, N_("When dragging points in the outline view a join may occur\n(two open contours may connect at their endpoints). When\nthis is On a join will cause FontForge to stop moving the\nselection (as if the user had released the mouse button).\nThis is handy if your fingers are inclined to wiggle a bit.") }, + { N_("UpdateFlex"), pr_bool, &updateflex, NULL, NULL, '\0', NULL, 0, N_("Figure out flex hints after every change") }, + { N_("AskBDFResolution"), pr_bool, &ask_user_for_resolution, NULL, NULL, 'B', NULL, 0, N_("When generating a set of BDF fonts ask the user\nto specify the screen resolution of the fonts\notherwise FontForge will guess depending on the pixel size.") }, + { "DefaultFVShowHmetrics", pr_int, &default_fv_showhmetrics, NULL, NULL, '\0', NULL, 1, NULL }, + { "DefaultFVShowVmetrics", pr_int, &default_fv_showvmetrics, NULL, NULL, '\0', NULL, 1, NULL }, + { "DefaultFVGlyphLabel", pr_int, &default_fv_glyphlabel, NULL, NULL, 'S', NULL, 1, NULL }, + { "SaveToDir", pr_int, &save_to_dir, NULL, NULL, 'S', NULL, 1, NULL }, + { "PalettesDocked", pr_bool, &palettes_docked, NULL, NULL, '\0', NULL, 1, NULL }, + { "CVVisible0", pr_bool, &cvvisible[0], NULL, NULL, '\0', NULL, 1, NULL }, + { "CVVisible1", pr_bool, &cvvisible[1], NULL, NULL, '\0', NULL, 1, NULL }, + { "BVVisible0", pr_bool, &bvvisible[0], NULL, NULL, '\0', NULL, 1, NULL }, + { "BVVisible1", pr_bool, &bvvisible[1], NULL, NULL, '\0', NULL, 1, NULL }, + { "BVVisible2", pr_bool, &bvvisible[2], NULL, NULL, '\0', NULL, 1, NULL }, + { "InfoWindowDistance", pr_int, &infowindowdistance, NULL, NULL, '\0', NULL, 1, NULL }, + { "MarkExtrema", pr_int, &loacal_markextrema, NULL, NULL, '\0', NULL, 1, NULL }, + { "MarkPointsOfInflect", pr_int, &loacal_markpoi, NULL, NULL, '\0', NULL, 1, NULL }, + { "ShowRulers", pr_bool, &loacal_showrulers, NULL, NULL, '\0', NULL, 1, N_("Display rulers in the Outline Glyph View") }, + { "ShowCPInfo", pr_int, &loacal_showcpinfo, NULL, NULL, '\0', NULL, 1, NULL }, + { "ShowSideBearings", pr_int, &loacal_showsidebearings, NULL, NULL, '\0', NULL, 1, NULL }, + { "ShowRefNames", pr_int, &loacal_showrefnames, NULL, NULL, '\0', NULL, 1, NULL }, + { "ShowPoints", pr_bool, &loacal_showpoints, NULL, NULL, '\0', NULL, 1, NULL }, + { "ShowFilled", pr_int, &loacal_showfilled, NULL, NULL, '\0', NULL, 1, NULL }, + { "ShowTabs", pr_int, &loacal_showtabs, NULL, NULL, '\0', NULL, 1, NULL }, + { "DefaultScreenDpiSystem", pr_int, &oldsystem, NULL, NULL, '\0', NULL, 1, NULL }, + { "OFLibUsername", pr_string, &oflib_username, NULL, NULL, '\0', NULL, 1, NULL }, + { "OFLibPassword", pr_string, &oflib_password, NULL, NULL, '\0', NULL, 1, NULL }, + { "RegularStar", pr_bool, ®ular_star, NULL, NULL, '\0', NULL, 1, NULL }, + { "PolyStar", pr_bool, &polystar, NULL, NULL, '\0', NULL, 1, NULL }, + { "RectEllipse", pr_bool, &rectelipse, NULL, NULL, '\0', NULL, 1, NULL }, + { "RectCenterOut", pr_bool, ¢er_out[0], NULL, NULL, '\0', NULL, 1, NULL }, + { "EllipseCenterOut", pr_bool, ¢er_out[1], NULL, NULL, '\0', NULL, 1, NULL }, + { "PolyStartPointCnt", pr_int, &ps_pointcnt, NULL, NULL, '\0', NULL, 1, NULL }, + { "RoundRectRadius", pr_real, &rr_radius, NULL, NULL, '\0', NULL, 1, NULL }, + { "StarPercent", pr_real, &star_percent, NULL, NULL, '\0', NULL, 1, NULL }, + { "DebugWins", pr_int, &debug_wins, NULL, NULL, '\0', NULL, 1, NULL }, + { "GridFitDpi", pr_int, &gridfit_dpi, NULL, NULL, '\0', NULL, 1, NULL }, + { "GridFitDepth", pr_int, &gridfit_depth, NULL, NULL, '\0', NULL, 1, NULL }, + { "GridFitPointSize", pr_real, &gridfit_pointsizey, NULL, NULL, '\0', NULL, 1, NULL }, + { "GridFitPointSizeX", pr_real, &gridfit_pointsizex, NULL, NULL, '\0', NULL, 1, NULL }, + { "GridFitSameAs", pr_int, &gridfit_x_sameas_y, NULL, NULL, '\0', NULL, 1, NULL }, + { "MVShowGrid", pr_int, &mvshowgrid, NULL, NULL, '\0', NULL, 1, NULL }, + { "DefaultFontFilterIndex", pr_int, &default_font_filter_index, NULL, NULL, '\0', NULL, 1, NULL }, + { "SeekChar", pr_unicode, &home_char, NULL, NULL, '\0', NULL, 1, NULL }, + { "CompactOnOpen", pr_bool, &compact_font_on_open, NULL, NULL, '\0', NULL, 1, NULL }, + { "PixmapDir", pr_file, &pixmapdir, NULL, NULL, 'R', NULL, 0, NULL }, + { "DefaultCVWidth", pr_int, &default_cv_width, NULL, NULL, '\0', NULL, 1, NULL }, + { "DefaultCVHeight", pr_int, &default_cv_height, NULL, NULL, '\0', NULL, 1, NULL }, + { "FCShowHidden", pr_bool, &gfc_showhidden, NULL, NULL, '\0', NULL, 1, NULL }, + { "FCDirPlacement", pr_int, &gfc_dirplace, NULL, NULL, '\0', NULL, 1, NULL }, + { "FCBookmarks", pr_string, &gfc_bookmarks, NULL, NULL, '\0', NULL, 1, NULL }, + { "OFLibAutomagicPreview", pr_int, &oflib_automagic_preview, NULL, NULL, '\0', NULL, 1, NULL }, + { "DefaultMVWidth", pr_int, &mv_width, NULL, NULL, '\0', NULL, 1, NULL }, + { "DefaultMVHeight", pr_int, &mv_height, NULL, NULL, '\0', NULL, 1, NULL }, + { "DefaultBVWidth", pr_int, &bv_width, NULL, NULL, '\0', NULL, 1, NULL }, + { "DefaultBVHeight", pr_int, &bv_height, NULL, NULL, '\0', NULL, 1, NULL }, + { "AnchorControlPixelSize", pr_int, &aa_pixelsize, NULL, NULL, '\0', NULL, 1, NULL }, + { NULL, 0, NULL, NULL, NULL, 0, NULL, 0, NULL }, +}, + *prefs_list[] = { core_list, extras, NULL }; + +static int NOUI_GetPrefs(char *name,Val *val) { + int i,j; + + for ( i=0; prefs_list[i]!=NULL; ++i ) for ( j=0; prefs_list[i][j].name!=NULL; ++j ) { + if ( strcmp(prefs_list[i][j].name,name)==0 ) { + struct prefs_list *pf = &prefs_list[i][j]; + if ( pf->type == pr_bool || pf->type == pr_int || pf->type == pr_unicode ) { + val->type = v_int; + val->u.ival = *((int *) (pf->val)); + } else if ( pf->type == pr_string || pf->type == pr_file ) { + val->type = v_str; + val->u.sval = copy( *((char **) (pf->val))); + } else if ( pf->type == pr_encoding ) { + val->type = v_str; + if ( *((NameList **) (pf->val))==NULL ) + val->u.sval = copy( "NULL" ); + else + val->u.sval = copy( (*((Encoding **) (pf->val)))->enc_name ); + } else if ( pf->type == pr_namelist ) { + val->type = v_str; + val->u.sval = copy( (*((NameList **) (pf->val)))->title ); + } else if ( pf->type == pr_real ) { + val->type = v_real; + val->u.fval = *((float *) (pf->val)); + } else +return( false ); + +return( true ); + } + } +return( false ); +} + +static int NOUI_SetPrefs(char *name,Val *val1, Val *val2) { + int i,j; + + for ( i=0; prefs_list[i]!=NULL; ++i ) for ( j=0; prefs_list[i][j].name!=NULL; ++j ) { + if ( strcmp(prefs_list[i][j].name,name)==0 ) { + struct prefs_list *pf = &prefs_list[i][j]; + if ( pf->type == pr_bool || pf->type == pr_int || pf->type == pr_unicode ) { + if ( (val1->type!=v_int && val1->type!=v_unicode) || val2!=NULL ) +return( -1 ); + *((int *) (pf->val)) = val1->u.ival; + } else if ( pf->type == pr_real ) { + if ( val1->type==v_real && val2==NULL ) + *((float *) (pf->val)) = val1->u.fval; + else if ( val1->type!=v_int || (val2!=NULL && val2->type!=v_int )) +return( -1 ); + else + *((float *) (pf->val)) = (val2==NULL ? val1->u.ival : val1->u.ival / (double) val2->u.ival); + } else if ( pf->type == pr_string || pf->type == pr_file ) { + if ( val1->type!=v_str || val2!=NULL ) +return( -1 ); + if ( pf->set ) { + pf->set( val1->u.sval ); + } else { + free( *((char **) (pf->val))); + *((char **) (pf->val)) = copy( val1->u.sval ); + } + } else if ( pf->type == pr_encoding ) { + if ( val2!=NULL ) +return( -1 ); + else if ( val1->type==v_str && pf->val == &default_encoding) { + Encoding *enc = FindOrMakeEncoding(val1->u.sval); + if ( enc==NULL ) +return( -1 ); + *((Encoding **) (pf->val)) = enc; + } else +return( -1 ); + } else if ( pf->type == pr_namelist ) { + if ( val2!=NULL ) +return( -1 ); + else if ( val1->type==v_str ) { + NameList *nl = NameListByName(val1->u.sval); + if ( strcmp(val1->u.sval,"NULL")==0 && pf->val != &namelist_for_new_fonts ) + nl = NULL; + else if ( nl==NULL ) +return( -1 ); + *((NameList **) (pf->val)) = nl; + } else +return( -1 ); + } else +return( false ); + + SavePrefs(true); +return( true ); + } + } +return( false ); +} + +static char *NOUI_getFontForgeShareDir(void) { +#if defined(SHAREDIR) +return( SHAREDIR "/fontforge" ); +#elif defined(PREFIX) +return( PREFIX "/share/fontforge" ); +#else +return( NULL ); +#endif +} + +# include /* we still need the charsets & encoding to set local_encoding */ +static int encmatch(const char *enc,int subok) { + static struct { char *name; int enc; } encs[] = { + { "US-ASCII", e_usascii }, + { "ASCII", e_usascii }, + { "ISO646-NO", e_iso646_no }, + { "ISO646-SE", e_iso646_se }, + { "LATIN1", e_iso8859_1 }, + { "ISO-8859-1", e_iso8859_1 }, + { "ISO-8859-2", e_iso8859_2 }, + { "ISO-8859-3", e_iso8859_3 }, + { "ISO-8859-4", e_iso8859_4 }, + { "ISO-8859-5", e_iso8859_4 }, + { "ISO-8859-6", e_iso8859_4 }, + { "ISO-8859-7", e_iso8859_4 }, + { "ISO-8859-8", e_iso8859_4 }, + { "ISO-8859-9", e_iso8859_4 }, + { "ISO-8859-10", e_iso8859_10 }, + { "ISO-8859-11", e_iso8859_11 }, + { "ISO-8859-13", e_iso8859_13 }, + { "ISO-8859-14", e_iso8859_14 }, + { "ISO-8859-15", e_iso8859_15 }, + { "ISO_8859-1", e_iso8859_1 }, + { "ISO_8859-2", e_iso8859_2 }, + { "ISO_8859-3", e_iso8859_3 }, + { "ISO_8859-4", e_iso8859_4 }, + { "ISO_8859-5", e_iso8859_4 }, + { "ISO_8859-6", e_iso8859_4 }, + { "ISO_8859-7", e_iso8859_4 }, + { "ISO_8859-8", e_iso8859_4 }, + { "ISO_8859-9", e_iso8859_4 }, + { "ISO_8859-10", e_iso8859_10 }, + { "ISO_8859-11", e_iso8859_11 }, + { "ISO_8859-13", e_iso8859_13 }, + { "ISO_8859-14", e_iso8859_14 }, + { "ISO_8859-15", e_iso8859_15 }, + { "ISO8859-1", e_iso8859_1 }, + { "ISO8859-2", e_iso8859_2 }, + { "ISO8859-3", e_iso8859_3 }, + { "ISO8859-4", e_iso8859_4 }, + { "ISO8859-5", e_iso8859_4 }, + { "ISO8859-6", e_iso8859_4 }, + { "ISO8859-7", e_iso8859_4 }, + { "ISO8859-8", e_iso8859_4 }, + { "ISO8859-9", e_iso8859_4 }, + { "ISO8859-10", e_iso8859_10 }, + { "ISO8859-11", e_iso8859_11 }, + { "ISO8859-13", e_iso8859_13 }, + { "ISO8859-14", e_iso8859_14 }, + { "ISO8859-15", e_iso8859_15 }, + { "ISO88591", e_iso8859_1 }, + { "ISO88592", e_iso8859_2 }, + { "ISO88593", e_iso8859_3 }, + { "ISO88594", e_iso8859_4 }, + { "ISO88595", e_iso8859_4 }, + { "ISO88596", e_iso8859_4 }, + { "ISO88597", e_iso8859_4 }, + { "ISO88598", e_iso8859_4 }, + { "ISO88599", e_iso8859_4 }, + { "ISO885910", e_iso8859_10 }, + { "ISO885911", e_iso8859_11 }, + { "ISO885913", e_iso8859_13 }, + { "ISO885914", e_iso8859_14 }, + { "ISO885915", e_iso8859_15 }, + { "8859_1", e_iso8859_1 }, + { "8859_2", e_iso8859_2 }, + { "8859_3", e_iso8859_3 }, + { "8859_4", e_iso8859_4 }, + { "8859_5", e_iso8859_4 }, + { "8859_6", e_iso8859_4 }, + { "8859_7", e_iso8859_4 }, + { "8859_8", e_iso8859_4 }, + { "8859_9", e_iso8859_4 }, + { "8859_10", e_iso8859_10 }, + { "8859_11", e_iso8859_11 }, + { "8859_13", e_iso8859_13 }, + { "8859_14", e_iso8859_14 }, + { "8859_15", e_iso8859_15 }, + { "KOI8-R", e_koi8_r }, + { "KOI8R", e_koi8_r }, + { "WINDOWS-1252", e_win }, + { "CP1252", e_win }, + { "Big5", e_big5 }, + { "Big-5", e_big5 }, + { "BigFive", e_big5 }, + { "Big-Five", e_big5 }, + { "Big5HKSCS", e_big5hkscs }, + { "Big5-HKSCS", e_big5hkscs }, + { "UTF-8", e_utf8 }, + { "ISO-10646/UTF-8", e_utf8 }, + { "ISO_10646/UTF-8", e_utf8 }, + { "UCS2", e_unicode }, + { "UCS-2", e_unicode }, + { "UCS-2-INTERNAL", e_unicode }, + { "ISO-10646", e_unicode }, + { "ISO_10646", e_unicode }, + { NULL, 0 }}; + int i; + char buffer[80]; + + if ( strchr(enc,'@')!=NULL && strlen(enc) +#include +#include +#include + +static void NOUI_IError(const char *format,...) { + va_list ap; + va_start(ap,format); + fprintf(stderr, "Internal Error: " ); + vfprintf(stderr,format,ap); + va_end(ap); +} + +static void NOUI__LogError(const char *format,va_list ap) { + char buffer[400], *str; + vsnprintf(buffer,sizeof(buffer),format,ap); + str = utf82def_copy(buffer); + fprintf(stderr,"%s",str); + if ( str[strlen(str)-1]!='\n' ) + putc('\n',stderr); + free(str); +} + +static void NOUI_LogError(const char *format,...) { + va_list ap; + + va_start(ap,format); + NOUI__LogError(format,ap); + va_end(ap); +} + +static void NOUI_post_notice(const char *title,const char *statement,...) { + va_list ap; + (void)title; + va_start(ap,statement); + NOUI__LogError(statement,ap); + va_end(ap); +} + +static void NOUI_post_error(const char *title,const char *statement,...) { + va_list ap; + (void)title; + va_start(ap,statement); + NOUI__LogError(statement,ap); + va_end(ap); +} + +static int NOUI_ask(const char *title, const char **answers, + int def, int cancel,const char *question,...) { + (void)title; + (void)answers; + (void)def; + (void)cancel; + (void)question; +return( def ); +} + +static int NOUI_choose(const char *title, const char **choices,int cnt, int def, + const char *question,...) { + (void)title; + (void)choices; + (void)def; + (void)cnt; + (void)question; +return( def ); +} + +static int NOUI_choose_multiple(char *title, const char **choices,char *sel, + int cnt, char *buts[2], const char *question,...) { + (void)title; + (void)choices; + (void)sel; + (void)cnt; + (void)buts; + (void)question; +return( -1 ); +} + +static char *NOUI_ask_string(const char *title, const char *def, + const char *question,...) { + (void)title; + (void)def; + (void)question; +return( (char *) def ); +} + +static char *NOUI_open_file(const char *title, const char *defaultfile, + const char *initial_filter) { + (void)title; + (void)defaultfile; + (void)initial_filter; +return( NULL ); +} + +static char *NOUI_saveas_file(const char *title, const char *defaultfile, + const char *initial_filter) { + (void)title; + (void)initial_filter; +return( copy(defaultfile) ); +} + +static void NOUI_progress_start(int delay, const char *title, const char *line1, + const char *line2, int tot, int stages) { + (void)delay; + (void)title; + (void)line1; + (void)line2; + (void)tot; + (void)stages; +} + +static void NOUI_void_void_noop(void) { +} + +static void NOUI_void_int_noop(int useless) { + (void)useless; +} + +static int NOUI_int_int_noop(int useless) { + (void)useless; +return( true ); +} + +static void NOUI_void_str_noop(const char * useless) { + (void)useless; +} + +static int NOUI_alwaystrue(void) { +return( true ); +} + +static int NOUI_DefaultStrokeFlags(void) { +return( sf_correctdir ); +} + +static struct ui_interface noui_interface = { + NOUI_IError, + NOUI_post_error, + NOUI_LogError, + NOUI_post_notice, + NOUI_ask, + NOUI_choose, + NOUI_choose_multiple, + NOUI_ask_string, + NOUI_ask_string, /* password */ + NOUI_open_file, + NOUI_saveas_file, + + NOUI_progress_start, + NOUI_void_void_noop, + NOUI_void_void_noop, + NOUI_void_int_noop, + NOUI_alwaystrue, + NOUI_alwaystrue, + NOUI_int_int_noop, + NOUI_void_str_noop, + NOUI_void_str_noop, + NOUI_void_void_noop, + NOUI_void_void_noop, + NOUI_void_int_noop, + NOUI_void_int_noop, + NOUI_alwaystrue, + + NOUI_void_void_noop, + + NOUI_TTFNameIds, + NOUI_MSLangString, + + NOUI_DefaultStrokeFlags +}; +struct ui_interface *ui_interface = &noui_interface; + +void FF_SetUiInterface(struct ui_interface *uii) { + ui_interface = uii; +} diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/parsepfa.c b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/parsepfa.c new file mode 100644 index 00000000000..0c4108fa99e --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/parsepfa.c @@ -0,0 +1,2740 @@ +/* Copyright (C) 2000-2008 by George Williams */ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "pfaedit.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include "psfont.h" +#include + +struct fontparse { + FontDict *fd, *mainfd; + /* always in font data */ + unsigned int infi:1; + unsigned int inchars:1; + unsigned int inprivate:1; + unsigned int insubs:1; + unsigned int inmetrics: 1; + unsigned int inmetrics2: 1; + unsigned int inbb: 1; + unsigned int inencoding: 1; + unsigned int simpleencoding: 1; + unsigned int multiline: 1; + unsigned int incidsysteminfo: 1; + unsigned int inblendfi:1; + unsigned int inblendprivate:1; + unsigned int skipping_mbf: 1; + unsigned int inblend: 1; + unsigned int iscid: 1; + unsigned int iscff: 1; + unsigned int useshexstrings: 1; + unsigned int doneencoding: 1; + unsigned int ignore: 1; + int simple_enc_pos; + int instring; + int fdindex; + char **pending_parse; + FILE *sfnts; + + unsigned int alreadycomplained: 1; + + char *vbuf, *vmax, *vpt; + int depth; +}; + +static void copyenc(char *encoding[256],char *std[256]) { + int i; + for ( i=0; i<256; ++i ) + encoding[i] = copy(std[i]); +} + +char *AdobeStandardEncoding[] = { +/* 0000 */ ".notdef", +/* 0001 */ ".notdef", +/* 0002 */ ".notdef", +/* 0003 */ ".notdef", +/* 0004 */ ".notdef", +/* 0005 */ ".notdef", +/* 0006 */ ".notdef", +/* 0007 */ ".notdef", +/* 0008 */ ".notdef", +/* 0009 */ ".notdef", +/* 000a */ ".notdef", +/* 000b */ ".notdef", +/* 000c */ ".notdef", +/* 000d */ ".notdef", +/* 000e */ ".notdef", +/* 000f */ ".notdef", +/* 0010 */ ".notdef", +/* 0011 */ ".notdef", +/* 0012 */ ".notdef", +/* 0013 */ ".notdef", +/* 0014 */ ".notdef", +/* 0015 */ ".notdef", +/* 0016 */ ".notdef", +/* 0017 */ ".notdef", +/* 0018 */ ".notdef", +/* 0019 */ ".notdef", +/* 001a */ ".notdef", +/* 001b */ ".notdef", +/* 001c */ ".notdef", +/* 001d */ ".notdef", +/* 001e */ ".notdef", +/* 001f */ ".notdef", +/* 0020 */ "space", +/* 0021 */ "exclam", +/* 0022 */ "quotedbl", +/* 0023 */ "numbersign", +/* 0024 */ "dollar", +/* 0025 */ "percent", +/* 0026 */ "ampersand", +/* 0027 */ "quoteright", +/* 0028 */ "parenleft", +/* 0029 */ "parenright", +/* 002a */ "asterisk", +/* 002b */ "plus", +/* 002c */ "comma", +/* 002d */ "hyphen", +/* 002e */ "period", +/* 002f */ "slash", +/* 0030 */ "zero", +/* 0031 */ "one", +/* 0032 */ "two", +/* 0033 */ "three", +/* 0034 */ "four", +/* 0035 */ "five", +/* 0036 */ "six", +/* 0037 */ "seven", +/* 0038 */ "eight", +/* 0039 */ "nine", +/* 003a */ "colon", +/* 003b */ "semicolon", +/* 003c */ "less", +/* 003d */ "equal", +/* 003e */ "greater", +/* 003f */ "question", +/* 0040 */ "at", +/* 0041 */ "A", +/* 0042 */ "B", +/* 0043 */ "C", +/* 0044 */ "D", +/* 0045 */ "E", +/* 0046 */ "F", +/* 0047 */ "G", +/* 0048 */ "H", +/* 0049 */ "I", +/* 004a */ "J", +/* 004b */ "K", +/* 004c */ "L", +/* 004d */ "M", +/* 004e */ "N", +/* 004f */ "O", +/* 0050 */ "P", +/* 0051 */ "Q", +/* 0052 */ "R", +/* 0053 */ "S", +/* 0054 */ "T", +/* 0055 */ "U", +/* 0056 */ "V", +/* 0057 */ "W", +/* 0058 */ "X", +/* 0059 */ "Y", +/* 005a */ "Z", +/* 005b */ "bracketleft", +/* 005c */ "backslash", +/* 005d */ "bracketright", +/* 005e */ "asciicircum", +/* 005f */ "underscore", +/* 0060 */ "quoteleft", +/* 0061 */ "a", +/* 0062 */ "b", +/* 0063 */ "c", +/* 0064 */ "d", +/* 0065 */ "e", +/* 0066 */ "f", +/* 0067 */ "g", +/* 0068 */ "h", +/* 0069 */ "i", +/* 006a */ "j", +/* 006b */ "k", +/* 006c */ "l", +/* 006d */ "m", +/* 006e */ "n", +/* 006f */ "o", +/* 0070 */ "p", +/* 0071 */ "q", +/* 0072 */ "r", +/* 0073 */ "s", +/* 0074 */ "t", +/* 0075 */ "u", +/* 0076 */ "v", +/* 0077 */ "w", +/* 0078 */ "x", +/* 0079 */ "y", +/* 007a */ "z", +/* 007b */ "braceleft", +/* 007c */ "bar", +/* 007d */ "braceright", +/* 007e */ "asciitilde", +/* 007f */ ".notdef", +/* 0080 */ ".notdef", +/* 0081 */ ".notdef", +/* 0082 */ ".notdef", +/* 0083 */ ".notdef", +/* 0084 */ ".notdef", +/* 0085 */ ".notdef", +/* 0086 */ ".notdef", +/* 0087 */ ".notdef", +/* 0088 */ ".notdef", +/* 0089 */ ".notdef", +/* 008a */ ".notdef", +/* 008b */ ".notdef", +/* 008c */ ".notdef", +/* 008d */ ".notdef", +/* 008e */ ".notdef", +/* 008f */ ".notdef", +/* 0090 */ ".notdef", +/* 0091 */ ".notdef", +/* 0092 */ ".notdef", +/* 0093 */ ".notdef", +/* 0094 */ ".notdef", +/* 0095 */ ".notdef", +/* 0096 */ ".notdef", +/* 0097 */ ".notdef", +/* 0098 */ ".notdef", +/* 0099 */ ".notdef", +/* 009a */ ".notdef", +/* 009b */ ".notdef", +/* 009c */ ".notdef", +/* 009d */ ".notdef", +/* 009e */ ".notdef", +/* 009f */ ".notdef", +/* 00a0 */ ".notdef", +/* 00a1 */ "exclamdown", +/* 00a2 */ "cent", +/* 00a3 */ "sterling", +/* 00a4 */ "fraction", +/* 00a5 */ "yen", +/* 00a6 */ "florin", +/* 00a7 */ "section", +/* 00a8 */ "currency", +/* 00a9 */ "quotesingle", +/* 00aa */ "quotedblleft", +/* 00ab */ "guillemotleft", +/* 00ac */ "guilsinglleft", +/* 00ad */ "guilsinglright", +/* 00ae */ "fi", +/* 00af */ "fl", +/* 00b0 */ ".notdef", +/* 00b1 */ "endash", +/* 00b2 */ "dagger", +/* 00b3 */ "daggerdbl", +/* 00b4 */ "periodcentered", +/* 00b5 */ ".notdef", +/* 00b6 */ "paragraph", +/* 00b7 */ "bullet", +/* 00b8 */ "quotesinglbase", +/* 00b9 */ "quotedblbase", +/* 00ba */ "quotedblright", +/* 00bb */ "guillemotright", +/* 00bc */ "ellipsis", +/* 00bd */ "perthousand", +/* 00be */ ".notdef", +/* 00bf */ "questiondown", +/* 00c0 */ ".notdef", +/* 00c1 */ "grave", +/* 00c2 */ "acute", +/* 00c3 */ "circumflex", +/* 00c4 */ "tilde", +/* 00c5 */ "macron", +/* 00c6 */ "breve", +/* 00c7 */ "dotaccent", +/* 00c8 */ "dieresis", +/* 00c9 */ ".notdef", +/* 00ca */ "ring", +/* 00cb */ "cedilla", +/* 00cc */ ".notdef", +/* 00cd */ "hungarumlaut", +/* 00ce */ "ogonek", +/* 00cf */ "caron", +/* 00d0 */ "emdash", +/* 00d1 */ ".notdef", +/* 00d2 */ ".notdef", +/* 00d3 */ ".notdef", +/* 00d4 */ ".notdef", +/* 00d5 */ ".notdef", +/* 00d6 */ ".notdef", +/* 00d7 */ ".notdef", +/* 00d8 */ ".notdef", +/* 00d9 */ ".notdef", +/* 00da */ ".notdef", +/* 00db */ ".notdef", +/* 00dc */ ".notdef", +/* 00dd */ ".notdef", +/* 00de */ ".notdef", +/* 00df */ ".notdef", +/* 00e0 */ ".notdef", +/* 00e1 */ "AE", +/* 00e2 */ ".notdef", +/* 00e3 */ "ordfeminine", +/* 00e4 */ ".notdef", +/* 00e5 */ ".notdef", +/* 00e6 */ ".notdef", +/* 00e7 */ ".notdef", +/* 00e8 */ "Lslash", +/* 00e9 */ "Oslash", +/* 00ea */ "OE", +/* 00eb */ "ordmasculine", +/* 00ec */ ".notdef", +/* 00ed */ ".notdef", +/* 00ee */ ".notdef", +/* 00ef */ ".notdef", +/* 00f0 */ ".notdef", +/* 00f1 */ "ae", +/* 00f2 */ ".notdef", +/* 00f3 */ ".notdef", +/* 00f4 */ ".notdef", +/* 00f5 */ "dotlessi", +/* 00f6 */ ".notdef", +/* 00f7 */ ".notdef", +/* 00f8 */ "lslash", +/* 00f9 */ "oslash", +/* 00fa */ "oe", +/* 00fb */ "germandbls", +/* 00fc */ ".notdef", +/* 00fd */ ".notdef", +/* 00fe */ ".notdef", +/* 00ff */ ".notdef" +}; +static void setStdEnc(char *encoding[256]) { + copyenc(encoding,AdobeStandardEncoding); +} + +static void setLatin1Enc(char *encoding[256]) { + static char *latin1enc[] = { +/* 0000 */ ".notdef", +/* 0001 */ ".notdef", +/* 0002 */ ".notdef", +/* 0003 */ ".notdef", +/* 0004 */ ".notdef", +/* 0005 */ ".notdef", +/* 0006 */ ".notdef", +/* 0007 */ ".notdef", +/* 0008 */ ".notdef", +/* 0009 */ ".notdef", +/* 000a */ ".notdef", +/* 000b */ ".notdef", +/* 000c */ ".notdef", +/* 000d */ ".notdef", +/* 000e */ ".notdef", +/* 000f */ ".notdef", +/* 0010 */ ".notdef", +/* 0011 */ ".notdef", +/* 0012 */ ".notdef", +/* 0013 */ ".notdef", +/* 0014 */ ".notdef", +/* 0015 */ ".notdef", +/* 0016 */ ".notdef", +/* 0017 */ ".notdef", +/* 0018 */ ".notdef", +/* 0019 */ ".notdef", +/* 001a */ ".notdef", +/* 001b */ ".notdef", +/* 001c */ ".notdef", +/* 001d */ ".notdef", +/* 001e */ ".notdef", +/* 001f */ ".notdef", +/* 0020 */ "space", +/* 0021 */ "exclam", +/* 0022 */ "quotedbl", +/* 0023 */ "numbersign", +/* 0024 */ "dollar", +/* 0025 */ "percent", +/* 0026 */ "ampersand", +/* 0027 */ "quoteright", +/* 0028 */ "parenleft", +/* 0029 */ "parenright", +/* 002a */ "asterisk", +/* 002b */ "plus", +/* 002c */ "comma", +/* 002d */ "hyphen", +/* 002e */ "period", +/* 002f */ "slash", +/* 0030 */ "zero", +/* 0031 */ "one", +/* 0032 */ "two", +/* 0033 */ "three", +/* 0034 */ "four", +/* 0035 */ "five", +/* 0036 */ "six", +/* 0037 */ "seven", +/* 0038 */ "eight", +/* 0039 */ "nine", +/* 003a */ "colon", +/* 003b */ "semicolon", +/* 003c */ "less", +/* 003d */ "equal", +/* 003e */ "greater", +/* 003f */ "question", +/* 0040 */ "at", +/* 0041 */ "A", +/* 0042 */ "B", +/* 0043 */ "C", +/* 0044 */ "D", +/* 0045 */ "E", +/* 0046 */ "F", +/* 0047 */ "G", +/* 0048 */ "H", +/* 0049 */ "I", +/* 004a */ "J", +/* 004b */ "K", +/* 004c */ "L", +/* 004d */ "M", +/* 004e */ "N", +/* 004f */ "O", +/* 0050 */ "P", +/* 0051 */ "Q", +/* 0052 */ "R", +/* 0053 */ "S", +/* 0054 */ "T", +/* 0055 */ "U", +/* 0056 */ "V", +/* 0057 */ "W", +/* 0058 */ "X", +/* 0059 */ "Y", +/* 005a */ "Z", +/* 005b */ "bracketleft", +/* 005c */ "backslash", +/* 005d */ "bracketright", +/* 005e */ "asciicircum", +/* 005f */ "underscore", +/* 0060 */ "grave", +/* 0061 */ "a", +/* 0062 */ "b", +/* 0063 */ "c", +/* 0064 */ "d", +/* 0065 */ "e", +/* 0066 */ "f", +/* 0067 */ "g", +/* 0068 */ "h", +/* 0069 */ "i", +/* 006a */ "j", +/* 006b */ "k", +/* 006c */ "l", +/* 006d */ "m", +/* 006e */ "n", +/* 006f */ "o", +/* 0070 */ "p", +/* 0071 */ "q", +/* 0072 */ "r", +/* 0073 */ "s", +/* 0074 */ "t", +/* 0075 */ "u", +/* 0076 */ "v", +/* 0077 */ "w", +/* 0078 */ "x", +/* 0079 */ "y", +/* 007a */ "z", +/* 007b */ "braceleft", +/* 007c */ "bar", +/* 007d */ "braceright", +/* 007e */ "asciitilde", +/* 007f */ ".notdef", +/* 0080 */ ".notdef", +/* 0081 */ ".notdef", +/* 0082 */ ".notdef", +/* 0083 */ ".notdef", +/* 0084 */ ".notdef", +/* 0085 */ ".notdef", +/* 0086 */ ".notdef", +/* 0087 */ ".notdef", +/* 0088 */ ".notdef", +/* 0089 */ ".notdef", +/* 008a */ ".notdef", +/* 008b */ ".notdef", +/* 008c */ ".notdef", +/* 008d */ ".notdef", +/* 008e */ ".notdef", +/* 008f */ ".notdef", +/* 0090 */ "dotlessi", /* Um, Adobe's Latin1 has some extra chars */ +/* 0091 */ "grave", +/* 0092 */ "accute", /* This is a duplicate... */ +/* 0093 */ "circumflex", +/* 0094 */ "tilde", +/* 0095 */ "macron", +/* 0096 */ "breve", +/* 0097 */ "dotaccent", +/* 0098 */ "dieresis", +/* 0099 */ ".notdef", +/* 009a */ "ring", +/* 009b */ "cedilla", +/* 009c */ ".notdef", +/* 009d */ "hungarumlaut", +/* 009e */ "ogonek", +/* 009f */ "caron", +/* 00a0 */ "space", +/* 00a1 */ "exclamdown", +/* 00a2 */ "cent", +/* 00a3 */ "sterling", +/* 00a4 */ "currency", +/* 00a5 */ "yen", +/* 00a6 */ "brokenbar", +/* 00a7 */ "section", +/* 00a8 */ "dieresis", +/* 00a9 */ "copyright", +/* 00aa */ "ordfeminine", +/* 00ab */ "guillemotleft", +/* 00ac */ "logicalnot", +/* 00ad */ "hyphen", +/* 00ae */ "registered", +/* 00af */ "macron", +/* 00b0 */ "degree", +/* 00b1 */ "plusminus", +/* 00b2 */ "twosuperior", +/* 00b3 */ "threesuperior", +/* 00b4 */ "acute", +/* 00b5 */ "mu", +/* 00b6 */ "paragraph", +/* 00b7 */ "periodcentered", +/* 00b8 */ "cedilla", +/* 00b9 */ "onesuperior", +/* 00ba */ "ordmasculine", +/* 00bb */ "guillemotright", +/* 00bc */ "onequarter", +/* 00bd */ "onehalf", +/* 00be */ "threequarters", +/* 00bf */ "questiondown", +/* 00c0 */ "Agrave", +/* 00c1 */ "Aacute", +/* 00c2 */ "Acircumflex", +/* 00c3 */ "Atilde", +/* 00c4 */ "Adieresis", +/* 00c5 */ "Aring", +/* 00c6 */ "AE", +/* 00c7 */ "Ccedilla", +/* 00c8 */ "Egrave", +/* 00c9 */ "Eacute", +/* 00ca */ "Ecircumflex", +/* 00cb */ "Edieresis", +/* 00cc */ "Igrave", +/* 00cd */ "Iacute", +/* 00ce */ "Icircumflex", +/* 00cf */ "Idieresis", +/* 00d0 */ "Eth", +/* 00d1 */ "Ntilde", +/* 00d2 */ "Ograve", +/* 00d3 */ "Oacute", +/* 00d4 */ "Ocircumflex", +/* 00d5 */ "Otilde", +/* 00d6 */ "Odieresis", +/* 00d7 */ "multiply", +/* 00d8 */ "Oslash", +/* 00d9 */ "Ugrave", +/* 00da */ "Uacute", +/* 00db */ "Ucircumflex", +/* 00dc */ "Udieresis", +/* 00dd */ "Yacute", +/* 00de */ "Thorn", +/* 00df */ "germandbls", +/* 00e0 */ "agrave", +/* 00e1 */ "aacute", +/* 00e2 */ "acircumflex", +/* 00e3 */ "atilde", +/* 00e4 */ "adieresis", +/* 00e5 */ "aring", +/* 00e6 */ "ae", +/* 00e7 */ "ccedilla", +/* 00e8 */ "egrave", +/* 00e9 */ "eacute", +/* 00ea */ "ecircumflex", +/* 00eb */ "edieresis", +/* 00ec */ "igrave", +/* 00ed */ "iacute", +/* 00ee */ "icircumflex", +/* 00ef */ "idieresis", +/* 00f0 */ "eth", +/* 00f1 */ "ntilde", +/* 00f2 */ "ograve", +/* 00f3 */ "oacute", +/* 00f4 */ "ocircumflex", +/* 00f5 */ "otilde", +/* 00f6 */ "odieresis", +/* 00f7 */ "divide", +/* 00f8 */ "oslash", +/* 00f9 */ "ugrave", +/* 00fa */ "uacute", +/* 00fb */ "ucircumflex", +/* 00fc */ "udieresis", +/* 00fd */ "yacute", +/* 00fe */ "thorn", +/* 00ff */ "ydieresis" + }; + copyenc(encoding,latin1enc); +} + +char *AdobeExpertEncoding[] = { +/* 0000 */ ".notdef", +/* 0001 */ ".notdef", +/* 0002 */ ".notdef", +/* 0003 */ ".notdef", +/* 0004 */ ".notdef", +/* 0005 */ ".notdef", +/* 0006 */ ".notdef", +/* 0007 */ ".notdef", +/* 0008 */ ".notdef", +/* 0009 */ ".notdef", +/* 000a */ ".notdef", +/* 000b */ ".notdef", +/* 000c */ ".notdef", +/* 000d */ ".notdef", +/* 000e */ ".notdef", +/* 000f */ ".notdef", +/* 0010 */ ".notdef", +/* 0011 */ ".notdef", +/* 0012 */ ".notdef", +/* 0013 */ ".notdef", +/* 0014 */ ".notdef", +/* 0015 */ ".notdef", +/* 0016 */ ".notdef", +/* 0017 */ ".notdef", +/* 0018 */ ".notdef", +/* 0019 */ ".notdef", +/* 001a */ ".notdef", +/* 001b */ ".notdef", +/* 001c */ ".notdef", +/* 001d */ ".notdef", +/* 001e */ ".notdef", +/* 001f */ ".notdef", +/* 0020 */ "space", +/* 0021 */ "exclamsmall", +/* 0022 */ "Hungarumlautsmal", +/* 0023 */ ".notdef", +/* 0024 */ "dollaroldstyle", +/* 0025 */ "dollarsuperior", +/* 0026 */ "ampersandsmall", +/* 0027 */ "Acutesmall", +/* 0028 */ "parenleftsuperior", +/* 0029 */ "parenrightsuperior", +/* 002a */ "twodotenleader", +/* 002b */ "onedotenleader", +/* 002c */ "comma", +/* 002d */ "hyphen", +/* 002e */ "period", +/* 002f */ "fraction", +/* 0030 */ "zerooldstyle", +/* 0031 */ "oneoldstyle", +/* 0032 */ "twooldstyle", +/* 0033 */ "threeoldstyle", +/* 0034 */ "fouroldstyle", +/* 0035 */ "fiveoldstyle", +/* 0036 */ "sixoldstyle", +/* 0037 */ "sevenoldstyle", +/* 0038 */ "eightoldstyle", +/* 0039 */ "nineoldstyle", +/* 003a */ "colon", +/* 003b */ "semicolon", +/* 003c */ "commasuperior", +/* 003d */ "threequartersemdash", +/* 003e */ "periodsuperior", +/* 003f */ "questionsmall", +/* 0040 */ ".notdef", +/* 0041 */ "asuperior", +/* 0042 */ "bsuperior", +/* 0043 */ "centsuperior", +/* 0044 */ "dsuperior", +/* 0045 */ "esuperior", +/* 0046 */ ".notdef", +/* 0047 */ ".notdef", +/* 0048 */ ".notdef", +/* 0049 */ "isuperior", +/* 004a */ ".notdef", +/* 004b */ ".notdef", +/* 004c */ "lsuperior", +/* 004d */ "msuperior", +/* 004e */ "nsuperior", +/* 004f */ "osuperior", +/* 0050 */ ".notdef", +/* 0051 */ ".notdef", +/* 0052 */ "rsuperior", +/* 0053 */ "ssuperior", +/* 0054 */ "tsuperior", +/* 0055 */ ".notdef", +/* 0056 */ "ff", +/* 0057 */ "fi", +/* 0058 */ "fl", +/* 0059 */ "ffi", +/* 005a */ "ffl", +/* 005b */ "parenleftinferior", +/* 005c */ ".notdef", +/* 005d */ "parenrightinferior", +/* 005e */ "Circumflexsmall", +/* 005f */ "hyphensuperior", +/* 0060 */ "Gravesmall", +/* 0061 */ "Asmall", +/* 0062 */ "Bsmall", +/* 0063 */ "Csmall", +/* 0064 */ "Dsmall", +/* 0065 */ "Esmall", +/* 0066 */ "Fsmall", +/* 0067 */ "Gsmall", +/* 0068 */ "Hsmall", +/* 0069 */ "Ismall", +/* 006a */ "Jsmall", +/* 006b */ "Ksmall", +/* 006c */ "Lsmall", +/* 006d */ "Msmall", +/* 006e */ "Nsmall", +/* 006f */ "Osmall", +/* 0070 */ "Psmall", +/* 0071 */ "Qsmall", +/* 0072 */ "Rsmall", +/* 0073 */ "Ssmall", +/* 0074 */ "Tsmall", +/* 0075 */ "Usmall", +/* 0076 */ "Vsmall", +/* 0077 */ "Wsmall", +/* 0078 */ "Xsmall", +/* 0079 */ "Ysmall", +/* 007a */ "Zsmall", +/* 007b */ "colonmonetary", +/* 007c */ "onefitted", +/* 007d */ "rupiah", +/* 007e */ "Tildesmall", +/* 007f */ ".notdef", +/* 0080 */ ".notdef", +/* 0081 */ ".notdef", +/* 0082 */ ".notdef", +/* 0083 */ ".notdef", +/* 0084 */ ".notdef", +/* 0085 */ ".notdef", +/* 0086 */ ".notdef", +/* 0087 */ ".notdef", +/* 0088 */ ".notdef", +/* 0089 */ ".notdef", +/* 008a */ ".notdef", +/* 008b */ ".notdef", +/* 008c */ ".notdef", +/* 008d */ ".notdef", +/* 008e */ ".notdef", +/* 008f */ ".notdef", +/* 0090 */ ".notdef", +/* 0091 */ ".notdef", +/* 0092 */ ".notdef", +/* 0093 */ ".notdef", +/* 0094 */ ".notdef", +/* 0095 */ ".notdef", +/* 0096 */ ".notdef", +/* 0097 */ ".notdef", +/* 0098 */ ".notdef", +/* 0099 */ ".notdef", +/* 009a */ ".notdef", +/* 009b */ ".notdef", +/* 009c */ ".notdef", +/* 009d */ ".notdef", +/* 009e */ ".notdef", +/* 009f */ ".notdef", +/* 00a0 */ ".notdef", +/* 00a1 */ "exclamdownsmall", +/* 00a2 */ "centoldstyle", +/* 00a3 */ "Lslashsmall", +/* 00a4 */ ".notdef", +/* 00a5 */ ".notdef", +/* 00a6 */ "Scaronsmall", +/* 00a7 */ "Zcaronsmall", +/* 00a8 */ "Dieresissmall", +/* 00a9 */ "Brevesmall", +/* 00aa */ "Caronsmall", +/* 00ab */ ".notdef", +/* 00ac */ "Dotaccentsmall", +/* 00ad */ ".notdef", +/* 00ae */ ".notdef", +/* 00af */ "Macronsmall", +/* 00b0 */ ".notdef", +/* 00b1 */ ".notdef", +/* 00b2 */ "figuredash", +/* 00b3 */ "hypheninferior", +/* 00b4 */ ".notdef", +/* 00b5 */ ".notdef", +/* 00b6 */ "Ogoneksmall", +/* 00b7 */ "Ringsmall", +/* 00b8 */ "Cedillasmall", +/* 00b9 */ ".notdef", +/* 00ba */ ".notdef", +/* 00bb */ ".notdef", +/* 00bc */ "onequarter", +/* 00bd */ "onehalf", +/* 00be */ "threequarters", +/* 00bf */ "questiondownsmall", +/* 00c0 */ "oneeighth", +/* 00c1 */ "threeeighths", +/* 00c2 */ "fiveeighths", +/* 00c3 */ "seveneighths", +/* 00c4 */ "onethird", +/* 00c5 */ "twothirds", +/* 00c6 */ ".notdef", +/* 00c7 */ ".notdef", +/* 00c8 */ "zerosuperior", +/* 00c9 */ "onesuperior", +/* 00ca */ "twosuperior", +/* 00cb */ "threesuperior", +/* 00cc */ "foursuperior", +/* 00cd */ "fivesuperior", +/* 00ce */ "sixsuperior", +/* 00cf */ "sevensuperior", +/* 00d0 */ "eightsuperior", +/* 00d1 */ "ninesuperior", +/* 00d2 */ "zeroinferior", +/* 00d3 */ "oneinferior", +/* 00d4 */ "twoinferior", +/* 00d5 */ "threeinferior", +/* 00d6 */ "fourinferior", +/* 00d7 */ "fiveinferior", +/* 00d8 */ "sixinferior", +/* 00d9 */ "seveninferior", +/* 00da */ "eightinferior", +/* 00db */ "nineinferior", +/* 00dc */ "centinferior", +/* 00dd */ "dollarinferior", +/* 00de */ "periodinferior", +/* 00df */ "commainferior", +/* 00e0 */ "Agravesmall", +/* 00e1 */ "Aacutesmall", +/* 00e2 */ "Acircumflexsmall", +/* 00e3 */ "Atildesmall", +/* 00e4 */ "Adieresissmall", +/* 00e5 */ "Aringsmall", +/* 00e6 */ "AEsmall", +/* 00e7 */ "Ccedillasmall", +/* 00e8 */ "Egravesmall", +/* 00e9 */ "Eacutesmall", +/* 00ea */ "Ecircumflexsmall", +/* 00eb */ "Edieresissmall", +/* 00ec */ "Igravesmall", +/* 00ed */ "Iacutesmall", +/* 00ee */ "Icircumflexsmall", +/* 00ef */ "Idieresissmall", +/* 00f0 */ "Ethsmall", +/* 00f1 */ "Ntildesmall", +/* 00f2 */ "Ogravesmall", +/* 00f3 */ "Oacutesmall", +/* 00f4 */ "Ocircumflexsmall", +/* 00f5 */ "Otildesmall", +/* 00f6 */ "Odieresissmall", +/* 00f7 */ "OEsmall", +/* 00f8 */ "Oslashsmall", +/* 00f9 */ "Ugravesmall", +/* 00fa */ "Uacutesmall", +/* 00fb */ "Ucircumflexsmall", +/* 00fc */ "Udieresissmall", +/* 00fd */ "Yacutesmall", +/* 00fe */ "Thornsmall", +/* 00ff */ "Ydieresissmall" +}; + +static struct fontdict *MakeEmptyFont(void) { + struct fontdict *ret; + + ret = gcalloc(1,sizeof(struct fontdict)); + ret->fontinfo = gcalloc(1,sizeof(struct fontinfo)); + ret->chars = gcalloc(1,sizeof(struct pschars)); + ret->private = gcalloc(1,sizeof(struct private)); + ret->private->subrs = gcalloc(1,sizeof(struct pschars)); + ret->private->private = gcalloc(1,sizeof(struct psdict)); + ret->private->leniv = 4; + ret->encoding_name = &custom; + ret->fontinfo->fstype = -1; +return( ret ); +} + +static struct fontdict *PSMakeEmptyFont(void) { + struct fontdict *ret; + + ret = gcalloc(1,sizeof(struct fontdict)); + ret->fontinfo = gcalloc(1,sizeof(struct fontinfo)); + ret->chars = gcalloc(1,sizeof(struct pschars)); + ret->private = gcalloc(1,sizeof(struct private)); + ret->private->subrs = gcalloc(1,sizeof(struct pschars)); + ret->private->private = gcalloc(1,sizeof(struct psdict)); + ret->private->leniv = 4; + ret->charprocs = gcalloc(1,sizeof(struct charprocs)); + ret->encoding_name = &custom; + ret->fontinfo->fstype = -1; +return( ret ); +} + +static char *myfgets(char *str, int len, FILE *file) { + char *pt, *end; + int ch=0; + + for ( pt = str, end = str+len-1; pt0); ++end ) { + if ( *end=='\\' && (end[1]=='(' || end[1]==')')) + ++end; + else if ( *end=='(' ) ++parencnt; + else if ( *end==')' ) --parencnt; + } + if ( end>start ) { + if ( ret==NULL ) + ret = galloc(end-start+1); + else + ret = grealloc(ret,len+end-start); + strncpy(ret+len-1,start,end-start); + len += end-start; + ret[len-1] = '\0'; + } + if ( *end!='\0' ) + break; + if ( myfgetsNoNulls(buffer,sizeof(buffer),in)==NULL ) +return( ret ); + start = buffer; + } +return( ret ); +} + +static char *gettoken(char *start) { + char *end, *ret; + + while ( *start!='\0' && *start!='/' && *start!='(' ) ++start; + if ( *start=='/' || *start=='(' ) ++start; + for ( end = start; *end!='\0' && !isspace(*end) && *end!='[' && *end!='/' && *end!='{' && *end!='(' && *end!=')'; ++end ); + ret = galloc(end-start+1); + if ( end>start ) + strncpy(ret,start,end-start); + ret[end-start] = '\0'; +return( ret ); +} + +static int getbool(char *start) { + + while ( isspace(*start) ) ++start; + if ( *start=='T' || *start=='t' ) +return( 1 ); + +return( 0 ); +} + +static void fillintarray(int *array,char *start,int maxentries) { + int i; + char *end; + + while ( *start!='\0' && *start!='[' && *start!='{' ) ++start; + if ( *start=='[' || *start=='{' ) ++start; + for ( i=0; i=2 ) { + /* Some of Luc Devroye's fonts have a "div" in the FontMatrix */ + array[i-2] /= array[i-1]; + i -= 2; + end = start+3; + } else +return; + if ( start==end ) +return; + start = end; + while ( isspace(*start) ) ++start; + } +} + +static void InitDict(struct psdict *dict,char *line) { + while ( *line!='/' && *line!='\0' ) ++line; + while ( !isspace(*line) && *line!='\0' ) ++line; + dict->cnt += strtol(line,NULL,10); + if ( dict->next>0 ) { int i; /* Shouldn't happen, but did in a bad file */ + dict->keys = grealloc(dict->keys,dict->cnt*sizeof(char *)); + dict->values = grealloc(dict->values,dict->cnt*sizeof(char *)); + for ( i=dict->next; icnt; ++i ) { + dict->keys[i] = NULL; dict->values[i] = NULL; + } + } else { + dict->keys = gcalloc(dict->cnt,sizeof(char *)); + dict->values = gcalloc(dict->cnt,sizeof(char *)); + } +} + +static void InitChars(struct pschars *chars,char *line) { + while ( *line!='/' && *line!='\0' ) ++line; + while ( !isspace(*line) && *line!='\0' ) ++line; + chars->cnt = strtol(line,NULL,10); + if ( chars->cnt>0 ) { + chars->keys = gcalloc(chars->cnt,sizeof(char *)); + chars->values = gcalloc(chars->cnt,sizeof(char *)); + chars->lens = gcalloc(chars->cnt,sizeof(int)); + ff_progress_change_total(chars->cnt); + } +} + +static void InitCharProcs(struct charprocs *cp, char *line) { + while ( *line!='/' && *line!='\0' ) ++line; + while ( !isspace(*line) && *line!='\0' ) ++line; + cp->cnt = strtol(line,NULL,10); + if ( cp->cnt>0 ) { + cp->keys = gcalloc(cp->cnt,sizeof(char *)); + cp->values = gcalloc(cp->cnt,sizeof(SplineChar *)); + ff_progress_change_total(cp->cnt); + } +} + +static int mycmp(char *str,char *within, char *end ) { + while ( withininstring && fp->depth==0 && + (strncmp(line,"def",3)==0 || + strncmp(line,"|-",2)==0 || strncmp(line,"ND",2)==0)) { + while ( 1 ) { + while ( fp->vpt>fp->vbuf+1 && isspace(fp->vpt[-1]) ) + --fp->vpt; + if ( fp->vpt>fp->vbuf+8 && strncmp(fp->vpt-8,"noaccess",8)==0 ) + fp->vpt -= 8; + else if ( fp->vpt>fp->vbuf+8 && strncmp(fp->vpt-8,"readonly",8)==0 ) + fp->vpt -= 8; + else if ( fp->vpt>fp->vbuf+4 && strncmp(fp->vpt-4,"bind",4)==0 ) + fp->vpt -= 4; + else + break; + } + /* In some URW fonts (Nimbus Sans L, n019003l) we get a complex */ + /* expression rather than just an array. This is ok. The expression */ + /* converts itself into an array. We could just truncate to the */ + /* default array, but I don't see any reason to do so */ + if ( fp->pending_parse!=NULL ) { + *fp->pending_parse = copyn(fp->vbuf,fp->vpt-fp->vbuf); + fp->pending_parse = NULL; + } else { + dict->values[dict->next] = copyn(fp->vbuf,fp->vpt-fp->vbuf); + ++dict->next; + } + fp->vpt = fp->vbuf; + fp->multiline = false; +return; + } + if ( fp->vpt>=fp->vmax ) { + int len = fp->vmax-fp->vbuf+1000, off=fp->vpt-fp->vbuf; + fp->vbuf = grealloc(fp->vbuf,len); + fp->vpt = fp->vbuf+off; + fp->vmax = fp->vbuf+len; + } + if ( fp->instring ) { + if ( *line==')' ) --fp->instring; + } else if ( incomment ) { + /* Do Nothing */; + } else if ( *line=='(' ) + ++fp->instring; + else if ( *line=='%' ) + incomment = true; + else if ( *line=='[' || *line=='{' ) + ++fp->depth; + else if ( *line=='}' || *line==']' ) + --fp->depth; + *fp->vpt++ = *line++; + } +} + +static void AddValue(struct fontparse *fp, struct psdict *dict, char *line, char *endtok) { + char *pt; + + if ( dict!=NULL ) { + if ( dict->next>=dict->cnt ) { + dict->cnt += 10; + dict->keys = grealloc(dict->keys,dict->cnt*sizeof(char *)); + dict->values = grealloc(dict->values,dict->cnt*sizeof(char *)); + } + dict->keys[dict->next] = copyn(line+1,endtok-(line+1)); + } + pt = line+strlen(line)-1; + while ( isspace(*endtok)) ++endtok; + while ( pt>endtok && isspace(*pt)) --pt; + ++pt; + if ( strncmp(pt-3,"def",3)==0 ) + pt -= 3; + else if ( strncmp(pt-2,"|-",2)==0 || strncmp(pt-2,"ND",2)==0 ) + pt -= 2; + else { + fp->multiline = true; + ContinueValue(fp,dict,endtok); +return; + } + forever { + while ( pt-1>endtok && isspace(pt[-1])) --pt; + if ( pt-8>endtok && strncmp(pt-8,"noaccess",8)==0 ) + pt -= 8; + else if ( pt-8>endtok && strncmp(pt-8,"readonly",8)==0 ) + pt -= 8; + else if ( pt-4>endtok && strncmp(pt-4,"bind",4)==0 ) + pt -= 4; + else + break; + } + if ( dict!=NULL ) { + dict->values[dict->next] = copyn(endtok,pt-endtok); + ++dict->next; + } else { + *fp->pending_parse = copyn(endtok,pt-endtok); + fp->pending_parse = NULL; + } +} + +static int hex(int ch1, int ch2) { + if ( ch1>='0' && ch1<='9' ) + ch1 -= '0'; + else if ( ch1>='a' ) + ch1 -= 'a'-10; + else + ch1 -= 'A'-10; + if ( ch2>='0' && ch2<='9' ) + ch2 -= '0'; + else if ( ch2>='a' ) + ch2 -= 'a'-10; + else + ch2 -= 'A'-10; +return( (ch1<<4)|ch2 ); +} + +unsigned short r; +#define c1 52845 +#define c2 22719 + +static void initcode(void) { + r = 55665; +} + +static int decode(unsigned char cypher) { + unsigned char plain = ( cypher ^ (r>>8)); + r = (cypher + r) * c1 + c2; +return( plain ); +} + +static void dumpzeros(FILE *out, unsigned char *zeros, int zcnt) { + while ( --zcnt >= 0 ) + fputc(*zeros++,out); +} + +static void decodestr(unsigned char *str, int len) { + unsigned short r = 4330; + unsigned char plain, cypher; + + while ( len-->0 ) { + cypher = *str; + plain = ( cypher ^ (r>>8)); + r = (cypher + r) * c1 + c2; + *str++ = plain; + } +} + +static void findstring(struct fontparse *fp,struct pschars *subrs,int index,char *nametok,char *str) { + char buffer[1024], *bpt, *bs, *end = buffer+sizeof(buffer)-1; + int val; + + while ( isspace(*str)) ++str; + if ( *str=='(' ) { + ++str; + bpt = buffer; + while ( *str!=')' && *str!='\0' ) { + if ( *str!='\\' ) + val = *str++; + else { + if ( isdigit( *++str )) { + val = *str++-'0'; + if ( isdigit( *str )) { + val = (val<<3) | (*str++-'0'); + if ( isdigit( *str )) + val = (val<<3) | (*str++-'0'); + } + } else + val = *str++; + } + if ( bptfd->private->leniv; + if ( bptlens[index] = bpt-bs; + subrs->keys[index] = copy(nametok); + subrs->values[index] = galloc(bpt-bs); + memcpy(subrs->values[index],bs,bpt-bs); + if ( index>=subrs->next ) subrs->next = index+1; + } +} + +/* Type42 charstrings are actually numbers */ +static void findnumbers(struct fontparse *fp,struct pschars *chars,char *str) { + int val; + char *end; + (void)fp; + forever { + int index = chars->next; + char *namestrt; + + while ( isspace(*str)) ++str; + if ( *str!='/' ) + break; + namestrt = ++str; + while ( isalnum(*str) || *str=='.' ) ++str; + *str = '\0'; + index = chars->next; + + ++str; + val = strtol(str,&end,10); + chars->lens[index] = 0; + chars->keys[index] = copy(namestrt); + chars->values[index] = (void *) (intpt) val; + chars->next = index+1; + str = end; + while ( isspace(*str)) ++str; + if ( str[0]=='d' && str[1]=='e' && str[2]=='f' ) + str += 3; + } +} + +static char *rmbinary(char *line) { + char *pt; + + for ( pt=line; *pt; ++pt ) { + if (( *pt<' ' || *pt>=0x7f ) && *pt!='\n' ) { + if ( strlen(pt)>5 ) { + pt[0] = '.'; + pt[1] = '.'; + pt[2] = '.'; + pt[3] = '\n'; + pt[4] = '\0'; + } else { + pt[0] = '\n'; + pt[1] = '\0'; + } + break; + } + } +return( line ); +} + +static void sfnts2tempfile(struct fontparse *fp,FILE *in,char *line) { + char *pt; + int instring = false, firstnibble=true, sofar=0, nibble; + int complained = false; + int ch=0; + + fp->sfnts = tmpfile(); + + /* first finish off anything in the current line */ + while ( (pt=strpbrk(line,"<]" ))!=NULL ) { + if ( *pt==']' ) + goto skip_to_eol; + + instring = true; + for ( ++pt; *pt && *pt!='>'; ++pt ) { + if ( isspace(*pt)) + continue; + if ( isdigit(*pt)) + nibble = *pt-'0'; + else if ( *pt>='a' && *pt<='f' ) + nibble = *pt-'a'+10; + else if ( *pt>='A' && *pt<='F' ) + nibble = *pt-'A'+10; + else { + if ( !complained ) { + LogError( _("Invalid hex digit in sfnts array\n") ); + complained = true; + } + ++pt; + continue; + } + if ( firstnibble ) { + sofar = nibble<<4; + firstnibble = false; + } else { + putc(sofar|nibble,fp->sfnts); + sofar = 0; + firstnibble = true; + } + } + if ( *pt=='>' ) { + if ( ftell(fp->sfnts)&1 ) { /* Strings must be contain an even number of bytes */ + /* But may be padded with a trailing NUL */ + fseek(fp->sfnts,-1,SEEK_CUR); + } + ++pt; + instring = false; + } + line = pt; + } + + while ( (ch=getc(in))!=EOF ) { + if ( ch==']' ) + goto skip_to_eol; + if ( isspace(ch)) + continue; + if ( !instring && ch=='<' ) { + instring = true; + firstnibble = true; + sofar = 0; + } else if ( !instring ) { + if ( !complained ) { + LogError( _("Invalid character outside of string in sfnts array\n") ); + complained = true; + } + } else if ( instring && ch=='>' ) { + if ( ftell(fp->sfnts)&1 ) { /* Strings must be contain an even number of bytes */ + /* But may be padded with a trailing NUL */ + fseek(fp->sfnts,-1,SEEK_CUR); + } + instring = false; + } else { + if ( isdigit(ch)) + nibble = ch-'0'; + else if ( ch>='a' && ch<='f' ) + nibble = ch-'a'+10; + else if ( ch>='A' && ch<='F' ) + nibble = ch-'A'+10; + else { + if ( !complained ) { + LogError( _("Invalid hex digit in sfnts array\n") ); + complained = true; + } + continue; + } + if ( firstnibble ) { + sofar = nibble<<4; + firstnibble = false; + } else { + putc(sofar|nibble,fp->sfnts); + sofar = 0; + firstnibble = true; + } + } + } + skip_to_eol: + while ( ch!=EOF && ch!='\n' && ch!='\r' ) + ch = getc(in); + rewind(fp->sfnts); +} + +static void ParseSimpleEncoding(struct fontparse *fp,char *line) { + char tok[200], *pt; + + while ( *line!='\0' && *line!=']' ) { + while ( isspace(*line)) ++line; + if ( *line==']' ) + break; + if ( *line!='/' ) { + ++line; + continue; + } + ++line; + while ( isspace(*line)) ++line; + for ( pt=tok; !isspace(*line) && *line!='\0' && *line!='/' && *line!=']'; ) { + if ( ptsimple_enc_pos<256 ) + fp->fd->encoding[fp->simple_enc_pos++] = copy(tok); + } + if ( *line==']' ) { + fp->simpleencoding = false; + fp->inencoding = false; + } +} + +static void parseline(struct fontparse *fp,char *line,FILE *in) { + char buffer[200], *pt, *endtok; + + while ( *line==' ' || *line=='\t' ) ++line; + if ( line[0]=='%' && !fp->multiline ) +return; + + if ( fp->simpleencoding ) { + ParseSimpleEncoding(fp,line); +return; + } else if (( fp->inencoding && strncmp(line,"dup",3)==0 ) || + ( strncmp(line,"dup ",4)==0 && isdigit(line[4]) && + strstr(line+strlen(line)-6," put")!=NULL && strchr(line,'/')!=NULL )) { + /* Fontographer's type3 fonts claim to be standard, but then aren't */ + fp->fd->encoding_name = &custom; + /* Metamorphasis has multiple entries on a line */ + while ( strncmp(line,"dup",3)==0 ) { + char *end; + int pos = strtol(line+3,&end,10); + line = end; + while ( isspace( *line )) ++line; + if ( *line=='/' ) ++line; + for ( pt = buffer; !isspace(*line); *pt++ = *line++ ); + *pt = '\0'; + if ( pos>=0 && pos<256 ) { + free(fp->fd->encoding[pos]); + fp->fd->encoding[pos] = copy(buffer); + } + while ( isspace(*line)) ++line; + if ( strncmp(line,"put",3)==0 ) line+=3; + while ( isspace(*line)) ++line; + } +return; + } else if ( fp->inencoding && strstr(line,"for")!=NULL && strstr(line,"/.notdef")!=NULL ) { + /* the T1 spec I've got doesn't allow for this, but I've seen it anyway*/ + /* 0 1 255 {1 index exch /.notdef put} for */ + /* 0 1 31 { 1 index exch /.notdef put } bind for */ + int i; + for ( i=0; i<256; ++i ) + if ( fp->fd->encoding[i]==NULL ) + fp->fd->encoding[i] = copy(".notdef"); +return; + } else if ( fp->inencoding && strstr(line,"Encoding")!=NULL && strstr(line,"put")!=NULL ) { + /* Saw a type 3 font with lines like "Encoding 1 /_a0 put" */ + char *end; + int pos; + while ( isspace(*line)) ++line; + if ( strncmp(line,"Encoding ",9)==0 ) { + line+=9; + pos = strtol(line,&end,10); + line = end; + while ( isspace(*line)) ++line; + if ( *line=='/' ) { + ++line; + for ( pt = buffer; !isspace(*line); *pt++ = *line++ ); + *pt = '\0'; + if ( pos>=0 && pos<256 ) + fp->fd->encoding[pos] = copy(buffer); + } + } +return; + } else if ( fp->insubs ) { + struct pschars *subrs = fp->fd->private->subrs; + while ( isspace(*line)) ++line; + if ( strncmp(line,"dup ",4)==0 ) { + int i; + char *ept; + for ( line += 4; *line==' '; ++line ); + i = strtol(line,&ept,10); + if ( fp->ignore ) + /* Do Nothing */; + else if ( icnt ) { + findstring(fp,subrs,i,NULL,ept); + } else if ( !fp->alreadycomplained ) { + LogError( _("Index too big (must be <%d) \"%s"), subrs->cnt, rmbinary(line)); + fp->alreadycomplained = true; + } + } else if ( strncmp(line, "readonly put", 12)==0 || strncmp(line, "ND", 2)==0 || strncmp(line, "|-", 2)==0 ) { + fp->insubs = false; + fp->ignore = false; + } else if ( *line=='\n' || *line=='\0' ) { + /* Ignore blank lines */; + } else if ( !fp->alreadycomplained ) { + LogError( _("Didn't understand \"%s"), rmbinary(line) ); + fp->alreadycomplained = true; + } + } else if ( fp->inchars ) { + struct pschars *chars = fp->fd->chars; + while ( isspace(*line)) ++line; + if ( strncmp(line,"end",3)==0 ) + fp->ignore = fp->inchars = false; + else if ( *line=='\n' || *line=='\0' ) + /* Ignore it */; + else if ( *line!='/' || !(isalpha(line[1]) || line[1]=='.')) { + LogError( _("No name for CharStrings dictionary \"%s"), rmbinary(line) ); + fp->alreadycomplained = true; + } else if ( fp->ignore ) { + /* Do Nothing */; + } else if ( chars->next>=chars->cnt ) + LogError( _("Too many entries in CharStrings dictionary \"%s"), rmbinary(line) ); + else if ( fp->fd->fonttype==42 || fp->fd->fonttype==11 || fp->fd->cidfonttype==2 ) + findnumbers(fp,chars,line); + else { + int i = chars->next; + char *namestrt = ++line; + while ( isalnum(*line) || *line=='.' ) ++line; + *line = '\0'; + findstring(fp,chars,i,namestrt,line+1); + ff_progress_next(); + } +return; + } + fp->inencoding = 0; + + while ( isspace(*line)) ++line; + endtok = NULL; + if ( *line=='/' ) + for ( endtok=line+1; !isspace(*endtok) && *endtok!='(' && *endtok!='/' && + *endtok!='{' && *endtok!='[' && *endtok!='\0'; ++endtok ); + + if ( strstr(line,"/shareddict")!=NULL && strstr(line,"where")!=NULL ) { + fp->infi = fp->inbb = fp->inmetrics = fp->inmetrics2 = false; + fp->inprivate = fp->inblendprivate = fp->inblendfi = false; + fp->skipping_mbf = true; +return; + } + + if ( mycmp("Encoding",line+1,endtok)==0 && !fp->doneencoding ) { + if ( strstr(endtok,"StandardEncoding")!=NULL ) { + fp->fd->encoding_name = FindOrMakeEncoding("AdobeStandard"); + setStdEnc(fp->fd->encoding); + } else if ( strstr(endtok,"ISOLatin1Encoding")!=NULL ) { + fp->fd->encoding_name = FindOrMakeEncoding("ISO8859-1"); + setLatin1Enc(fp->fd->encoding); + } else { + fp->fd->encoding_name = &custom; + fp->inencoding = 1; + } + if ( fp->fd->encoding_name==NULL ) + fp->fd->encoding_name = &custom; + fp->infi = fp->inprivate = fp->inbb = fp->inmetrics = fp->inmetrics2 = false; + fp->doneencoding = true; + while ( *endtok==' ' || *endtok=='\t' ) ++endtok; + if ( *endtok=='[' ) { /* It's a literal array */ + fp->simpleencoding = true; + fp->simple_enc_pos = 0; + ParseSimpleEncoding(fp,endtok+1); + } + } else if ( mycmp("BoundingBoxes",line+1,endtok)==0 ) { + fp->infi = fp->inprivate = fp->inencoding = fp->inmetrics = fp->inmetrics2 = false; + fp->inbb = true; + } else if ( mycmp("Metrics",line+1,endtok)==0 ) { + fp->infi = fp->inprivate = fp->inbb = fp->inencoding = fp->inmetrics2 = false; + fp->inmetrics = true; + fp->fd->metrics = gcalloc(1,sizeof(struct psdict)); + fp->fd->metrics->cnt = strtol(endtok,NULL,10); + fp->fd->metrics->keys = galloc(fp->fd->metrics->cnt*sizeof(char *)); + fp->fd->metrics->values = galloc(fp->fd->metrics->cnt*sizeof(char *)); + } else if ( strstr(line,"/Private")!=NULL && strstr(line,"/Blend")!=NULL ) { + fp->infi = fp->inbb = fp->inmetrics = fp->inmetrics2 = false; + fp->inprivate = fp->inblendprivate = fp->inblendfi = false; + fp->inblendprivate = 1; + fp->fd->blendprivate = gcalloc(1,sizeof(struct psdict)); + InitDict(fp->fd->blendprivate,line); +return; + } else if ( strstr(line,"/FontInfo")!=NULL && strstr(line,"/Blend")!=NULL ) { + fp->infi = fp->inbb = fp->inmetrics = fp->inmetrics2 = false; + fp->inprivate = fp->inblendprivate = fp->inblendfi = false; + fp->inblendfi = 1; + fp->fd->blendfontinfo = gcalloc(1,sizeof(struct psdict)); + InitDict(fp->fd->blendfontinfo,line); +return; + } else if ( fp->infi ) { + if ( fp->multiline ) { + ContinueValue(fp,NULL,line); +return; + } + if ( endtok==NULL && (strncmp(line,"end", 3)==0 || strncmp(line,">>",2)==0)) { + fp->infi=0; +return; + } else if ( endtok==NULL ) +return; + if ( mycmp("version",line+1,endtok)==0 ) { + free(fp->fd->fontinfo->version); + fp->fd->fontinfo->version = getstring(endtok,in); + } else if ( mycmp("Notice",line+1,endtok)==0 ) { + if ( fp->fd->fontinfo->notice!=NULL ) + free(fp->fd->fontinfo->notice); + fp->fd->fontinfo->notice = getstring(endtok,in); + } else if ( mycmp("Copyright",line+1,endtok)==0 ) { /* cff spec allows for copyright and notice */ + if ( fp->fd->fontinfo->notice!=NULL ) + free(fp->fd->fontinfo->notice); + fp->fd->fontinfo->notice = getstring(endtok,in); + } else if ( mycmp("FullName",line+1,endtok)==0 ) { + if ( fp->fd->fontinfo->fullname==NULL ) + fp->fd->fontinfo->fullname = getstring(endtok,in); + else + free(getstring(endtok,in)); + } else if ( mycmp("FamilyName",line+1,endtok)==0 ) { + free( fp->fd->fontinfo->familyname ); + fp->fd->fontinfo->familyname = getstring(endtok,in); + } else if ( mycmp("Weight",line+1,endtok)==0 ) { + free( fp->fd->fontinfo->weight ); + fp->fd->fontinfo->weight = getstring(endtok,in); + } else if ( mycmp("ItalicAngle",line+1,endtok)==0 ) + fp->fd->fontinfo->italicangle = strtod(endtok,NULL); + else if ( mycmp("UnderlinePosition",line+1,endtok)==0 ) + fp->fd->fontinfo->underlineposition = strtod(endtok,NULL); + else if ( mycmp("UnderlineThickness",line+1,endtok)==0 ) + fp->fd->fontinfo->underlinethickness = strtod(endtok,NULL); + else if ( mycmp("isFixedPitch",line+1,endtok)==0 ) + fp->fd->fontinfo->isfixedpitch = getbool(endtok); + else if ( mycmp("em",line+1,endtok)==0 ) + fp->fd->fontinfo->em = strtol(endtok,NULL,10); + else if ( mycmp("ascent",line+1,endtok)==0 ) + fp->fd->fontinfo->ascent = strtol(endtok,NULL,10); + else if ( mycmp("descent",line+1,endtok)==0 ) + fp->fd->fontinfo->descent = strtol(endtok,NULL,10); + else if ( mycmp("FSType",line+1,endtok)==0 ) + fp->fd->fontinfo->fstype = strtol(endtok,NULL,10); + else if ( mycmp("BlendDesignPositions",line+1,endtok)==0 ) { + fp->pending_parse = &fp->fd->fontinfo->blenddesignpositions; + AddValue(fp,NULL,line,endtok); + } else if ( mycmp("BlendDesignMap",line+1,endtok)==0 ) { + fp->pending_parse = &fp->fd->fontinfo->blenddesignmap; + AddValue(fp,NULL,line,endtok); + } else if ( mycmp("BlendAxisTypes",line+1,endtok)==0 ) { + fp->pending_parse = &fp->fd->fontinfo->blendaxistypes; + AddValue(fp,NULL,line,endtok); + } else if ( !fp->alreadycomplained ) { + LogError( _("Didn't understand \"%s"), rmbinary(line) ); + fp->alreadycomplained = true; + } + } else if ( fp->inblend ) { + if ( endtok==NULL ) { + if ( *line!='/' && strstr(line,"end")!=NULL ) + fp->inblend = false; +return; + } + /* Ignore anything in the blend dict defn */ + } else if ( fp->inblendprivate || fp->inblendfi ) { + struct psdict *subdict = fp->inblendfi ? fp->fd->blendfontinfo : fp->fd->blendprivate; + if ( fp->multiline ) { + ContinueValue(fp,subdict,line); +return; + } else if ( endtok==NULL ) { + if ( *line!='/' && strstr(line,"end")!=NULL ) { + fp->inblendprivate = fp->inblendfi = false; + fp->inprivate = true; + } +return; + } else + AddValue(fp,subdict,line,endtok); + } else if ( fp->inprivate ) { + if ( strstr(line,"/CharStrings")!=NULL && strstr(line,"dict")!=NULL ) { + if ( fp->fd->chars->next==0 ) { + InitChars(fp->fd->chars,line); + fp->ignore = false; + } else { + fp->ignore = true; + LogError( _("Ignoring duplicate /CharStrings entry\n") ); + } + fp->inchars = 1; + fp->insubs = 0; +return; + } else if ( strstr(line,"/Subrs")!=NULL ) { + if ( fp->fd->private->subrs->next>0 ) { + fp->ignore = true; + LogError( _("Ignoring duplicate /Subrs entry\n") ); + } else { + InitChars(fp->fd->private->subrs,line); + fp->ignore = false; + } + fp->insubs = 1; + fp->inchars = 0; +return; + } else if ( fp->multiline ) { + ContinueValue(fp,fp->fd->private->private,line); +return; + } + if ( endtok==NULL ) { + char *pt = line; + if ( *pt!='/' ) while ( (pt=strstr(pt,"end"))!=NULL ) { + if ( fp->inchars ) fp->inchars = false; + else fp->inprivate = false; + pt += 3; + } +return; + } + if ( mycmp("ND",line+1,endtok)==0 || mycmp("|-",line+1,endtok)==0 || + mycmp("NP",line+1,endtok)==0 || mycmp("|",line+1,endtok)==0 || + mycmp("RD",line+1,endtok)==0 || mycmp("-|",line+1,endtok)==0 || + mycmp("password",line+1,endtok)==0 || + mycmp("MinFeature",line+1,endtok)==0 ) + /* These conveigh no information, but are required */; + else if ( mycmp("UniqueID",line+1,endtok)==0 ) { + if ( fp->fd->uniqueid==0 ) + fp->fd->uniqueid = strtol(endtok,NULL,10); + } else { + if ( mycmp("lenIV",line+1,endtok)==0 ) + fp->fd->private->leniv = strtol(endtok,NULL,10); /* We need this value */ + AddValue(fp,fp->fd->private->private,line,endtok); + } + } else if ( fp->incidsysteminfo ) { + if ( endtok==NULL && strncmp(line,"end", 3)==0 ) { + fp->incidsysteminfo=0; +return; + } else if ( endtok==NULL ) +return; + if ( mycmp("Registry",line+1,endtok)==0 ) { + free( fp->fd->registry ); + fp->fd->registry = getstring(endtok,in); + } else if ( mycmp("Ordering",line+1,endtok)==0 ) { + free( fp->fd->ordering ); + fp->fd->ordering = getstring(endtok,in); + } else if ( mycmp("Supplement",line+1,endtok)==0 ) /* cff spec allows for copyright and notice */ + fp->fd->supplement = strtol(endtok,NULL,0); + } else { + if ( strstr(line,"/Private")!=NULL && (strstr(line,"dict")!=NULL || strstr(line,"<<")!=NULL )) { + fp->infi = fp->inbb = fp->inmetrics = fp->inmetrics2 = false; + fp->inprivate = fp->inblendprivate = fp->inblendfi = false; + if ( strstr(line,"/Blend")!=NULL ) { + fp->inblendprivate = 1; + fp->fd->blendprivate = gcalloc(1,sizeof(struct psdict)); + InitDict(fp->fd->blendprivate,line); + } else { + fp->inprivate = 1; + InitDict(fp->fd->private->private,line); + } +return; + } else if ( strstr(line,"/FontInfo")!=NULL && (strstr(line,"dict")!=NULL || strstr(line,"<<")!=NULL)) { + fp->inprivate = fp->inbb = fp->inmetrics = fp->inmetrics2 = false; + fp->infi = fp->inblendprivate = fp->inblendfi = false; + if ( strstr(line,"/Blend")!=NULL ) { + fp->inblendfi = 1; + fp->fd->blendfontinfo = gcalloc(1,sizeof(struct psdict)); + InitDict(fp->fd->blendfontinfo,line); + } else { + fp->infi = 1; + } +return; + } else if ( strstr(line,"/Blend")!=NULL && strstr(line,"dict")!=NULL ) { + fp->inprivate = fp->inbb = fp->inmetrics = fp->inmetrics2 = false; + fp->infi = fp->inblendprivate = fp->inblendfi = false; + fp->inblend = true; +return; + } else if ( strstr(line,"/sfnts")!=NULL && strstr(line,"[")!=NULL ) { + sfnts2tempfile(fp,in,line); +return; + } else if ( strstr(line,"/CharStrings")!=NULL && strstr(line,"dict")!=NULL + && fp->fd->fonttype!=3 ) { + if ( fp->fd->chars->next==0 ) { + InitChars(fp->fd->chars,line); + fp->ignore = false; + } else { + fp->ignore = true; + LogError( _("Ignoring duplicate /CharStrings entry\n") ); + } + fp->inchars = 1; + fp->insubs = 0; + fp->infi = fp->inprivate = fp->inbb = fp->inmetrics = fp->inmetrics2 = false; + fp->inblendprivate = fp->inblendfi = false; +return; + } else if ( mycmp("/CharProcs",line,endtok)==0 ) { + InitCharProcs(fp->fd->charprocs,line); + fp->infi = fp->inprivate = fp->inbb = fp->inmetrics = fp->inmetrics2 = false; + fp->insubs = 0; +return; + } else if ( strstr(line,"/CIDSystemInfo")!=NULL ) { + fp->incidsysteminfo = 1; +return; + } else if ( fp->inmetrics ) { + if ( endtok!=NULL ) + AddValue(fp,fp->fd->metrics,line,endtok); +return; + } else if ( fp->inbb ) { + /* Ignore it */; +return; + } + + if ( fp->multiline ) { + ContinueValue(fp,NULL,line); +return; + } + + if ( endtok==NULL ) { + if ( fp->skipping_mbf ) + ; + else if ( fp->fdindex!=-1 && strstr(line,"end")!=NULL ) { + if ( ++fp->fdindex>=fp->mainfd->fdcnt ) + fp->fd = fp->mainfd; + else + fp->fd = fp->mainfd->fds[fp->fdindex]; + } +return; + } + if ( mycmp("FontName",line+1,endtok)==0 ) { + if ( fp->fd->fontname==NULL ) + fp->fd->fontname = gettoken(endtok); + else + free(gettoken(endtok)); /* skip it */ + } else if ( mycmp("PaintType",line+1,endtok)==0 ) + fp->fd->painttype = strtol(endtok,NULL,10); + else if ( mycmp("FontType",line+1,endtok)==0 ) + fp->fd->fonttype = strtol(endtok,NULL,10); + else if ( mycmp("FontMatrix",line+1,endtok)==0 ) { + if ( fp->fd->fontmatrix[0]==0 ) + fillrealarray(fp->fd->fontmatrix,endtok,6); + else { + real temp[6]; + fillrealarray(temp,endtok,6); + } + } else if ( mycmp("LanguageLevel",line+1,endtok)==0 ) + fp->fd->languagelevel = strtol(endtok,NULL,10); + else if ( mycmp("WMode",line+1,endtok)==0 ) + fp->fd->wmode = strtol(endtok,NULL,10); + else if ( mycmp("FontBBox",line+1,endtok)==0 ) + fillrealarray(fp->fd->fontbb,endtok,4); + else if ( mycmp("UniqueID",line+1,endtok)==0 ) { + if ( fp->fd->uniqueid==0 ) + fp->fd->uniqueid = strtol(endtok,NULL,10); + } else if ( mycmp("UniqueId",line+1,endtok)==0 ) { + LogError(_("This font contains a \"UniqueId\" variable, but the correct name for it is\n\t\"UniqueID\" (postscript is case concious)\n") ); + if ( fp->fd->uniqueid==0 ) + fp->fd->uniqueid = strtol(endtok,NULL,10); + } else if ( mycmp("XUID",line+1,endtok)==0 ) { + if ( fp->fd->xuid[0]==0 ) + fillintarray(fp->fd->xuid,endtok,20); + } else if ( mycmp("StrokeWidth",line+1,endtok)==0 ) + fp->fd->strokewidth = strtod(endtok,NULL); + else if ( mycmp("WeightVector",line+1,endtok)==0 ) { + if ( fp->fd->weightvector==NULL ) { + fp->pending_parse = &fp->fd->weightvector; + AddValue(fp,NULL,line,endtok); + } + } else if ( mycmp("$Blend",line+1,endtok)==0 ) { + fp->pending_parse = &fp->fd->blendfunc; + AddValue(fp,NULL,line,endtok); + } else if ( strstr( line,"/NormalizeDesignVector" )!=NULL ) { + fp->pending_parse = &fp->fd->ndv; + AddValue(fp,NULL,line,endtok); + } else if ( strstr( line,"/ConvertDesignVector" )!=NULL ) { + fp->pending_parse = &fp->fd->cdv; + AddValue(fp,NULL,line,endtok); + } else if ( mycmp("BuildChar",line+1,endtok)==0 ) + /* Do Nothing */; + else if ( mycmp("BuildGlyph",line+1,endtok)==0 ) + /* Do Nothing */; + else if ( mycmp("CIDFontName",line+1,endtok)==0 ) { + free( fp->fd->cidfontname ); + fp->fd->cidfontname = gettoken(endtok); + } else if ( mycmp("CIDFontVersion",line+1,endtok)==0 ) { + fp->fd->cidversion = strtod(endtok,NULL); +#if 0 + if ( fp->fd->fontinfo->version==NULL ) { + char temp[40]; + sprintf(temp,"%f", fp->fd->cidversion); + fp->fd->fontinfo->version = copy(temp); + } +#endif + } else if ( mycmp("CIDFontType",line+1,endtok)==0 ) + fp->fd->cidfonttype = strtol(endtok,NULL,10); + else if ( mycmp("UIDBase",line+1,endtok)==0 ) + fp->fd->uniqueid = strtol(endtok,NULL,10); + else if ( mycmp("CIDMapOffset",line+1,endtok)==0 ) + fp->fd->mapoffset = strtol(endtok,NULL,10); + else if ( mycmp("FDBytes",line+1,endtok)==0 ) + fp->fd->fdbytes = strtol(endtok,NULL,10); + else if ( mycmp("GDBytes",line+1,endtok)==0 ) + fp->fd->gdbytes = strtol(endtok,NULL,10); + else if ( mycmp("CIDCount",line+1,endtok)==0 ) + fp->fd->cidcnt = strtol(endtok,NULL,10); + else if ( mycmp("FDArray",line+1,endtok)==0 ) { int i; + fp->mainfd = fp->fd; + fp->fd->fdcnt = strtol(endtok,NULL,10); + fp->fd->fds = gcalloc(fp->fd->fdcnt,sizeof(struct fontdict *)); + for ( i=0; ifd->fdcnt; ++i ) + fp->fd->fds[i] = MakeEmptyFont(); + fp->fdindex = 0; + fp->fd = fp->fd->fds[0]; + } else if ( mycmp("FontSetInit",line+1,endtok)==0 ) { + fp->iscff = true; + fp->iscid = false; + } else if ( mycmp("CIDInit",line+1,endtok)==0 ) { + fp->iscid = true; + fp->iscff = false; + } else if ( fp->skipping_mbf ) { /* Skip over the makeblendedfont defn in a multimaster font */ + /* Do Nothing */ + } else if ( !fp->alreadycomplained ) { + LogError( _("Didn't understand \"%s"), rmbinary(line) ); + fp->alreadycomplained = true; + } + } +} + +static void addinfo(struct fontparse *fp,char *line,char *tok,char *binstart,int binlen,FILE *in) { + char *pt; + + decodestr((unsigned char *) binstart,binlen); + binstart += fp->fd->private->leniv; + binlen -= fp->fd->private->leniv; + if ( binlen<0 ) { + LogError( _("Bad CharString. Does not include lenIV bytes.\n") ); +return; + } + + retry: + if ( fp->insubs ) { + struct pschars *chars = /*fp->insubs ?*/ fp->fd->private->subrs /*: fp->fd->private->othersubrs*/; + while ( isspace(*line)) ++line; + if ( strncmp(line,"dup ",4)==0 ) { + int i = strtol(line+4,NULL,10); + if ( fp->ignore ) + /* Do Nothing */; + else if ( icnt ) { + if ( chars->values[i]!=NULL ) + LogError( _("Duplicate definition of subroutine %d\n"), i ); + chars->lens[i] = binlen; + chars->values[i] = galloc(binlen); + memcpy(chars->values[i],binstart,binlen); + if ( i>=chars->next ) chars->next = i+1; + } else if ( !fp->alreadycomplained ) { + LogError( _("Index too big (must be <%d) \"%s"), chars->cnt, rmbinary(line)); + fp->alreadycomplained = true; + } + } else if ( !fp->alreadycomplained ) { + LogError( _("Didn't understand \"%s"), rmbinary(line) ); + fp->alreadycomplained = true; + } + } else if ( fp->inchars ) { + struct pschars *chars = fp->fd->chars; + if ( *tok=='\0' ) + LogError( _("No name for CharStrings dictionary \"%s"), rmbinary(line) ); + else if ( fp->ignore ) + /* Do Nothing */; + else if ( chars->next>=chars->cnt ) + LogError( _("Too many entries in CharStrings dictionary \"%s"), rmbinary(line) ); + else { + int i = chars->next; + chars->lens[i] = binlen; + chars->keys[i] = copy(tok); + chars->values[i] = galloc(binlen); + memcpy(chars->values[i],binstart,binlen); + ++chars->next; + ff_progress_next(); + } + } else if ( !fp->alreadycomplained ) { + /* Special hacks for known badly formatted fonts */ + if ( strstr(line,"/CharStrings")!=NULL ) { + for ( pt=line; *pt!='/'; ++pt ); + pt = strchr(pt+1,'/'); + if ( pt!=NULL ) + *pt = '\0'; + parseline(fp,line,in); + if ( pt!=NULL ) { + *pt = '/'; + line = pt; + goto retry; + } +return; + } else if ( strstr(line,"/Subrs")!=NULL ) { + pt = strstr(line,"dup"); + if ( pt!=NULL ) + *pt = '\0'; + parseline(fp,line,in); + if ( pt!=NULL ) { + *pt = 'd'; + line = pt; + goto retry; + } +return; + } + LogError( _("Shouldn't be in addinfo \"%s"), rmbinary(line) ); + fp->alreadycomplained = true; + } +} + +/* In the book the token which starts a character description is always RD but*/ +/* it's just the name of a subroutine which is defined in the private diction*/ +/* and it could be anything. in one case it was "-|" (hyphen bar) so we can't*/ +/* just look for RD we must be a bit smarter and figure out what the token is*/ +/* (oh. I see now. it's allowed to be either one "RD" or "-|", but nothing else*/ +/* right) */ +/* It's defined as {string currentfile exch readstring pop} so look for that */ +/* Except that in gsf files we've also got "/-!{string currentfile exch readhexstring pop} readonly def" */ +/* NOTE: readhexstring!!! */ +/* And in files generated by GNU fontutils */ +static int glorpline(struct fontparse *fp, FILE *temp, char *rdtok) { + static char *buffer=NULL, *end; + char *pt, *binstart; + int binlen; + int ch; + int innum, val=0, inbinary, cnt=0, inr, wasspace, nownum, nowr, nowspace, sptok; + char *rdline = "{string currentfile exch readstring pop}", *rpt; + char *rdline2 = "{string currentfile exch readhexstring pop}"; + char *tokpt = NULL, *rdpt; + char temptok[255]; + int intok, first; + int wasminus=false, isminus, nibble=0, firstnibble=true, inhex; + int willbehex = false; + + ch = getc(temp); + if ( ch==EOF ) +return( 0 ); + ungetc(ch,temp); + + if ( buffer==NULL ) { + buffer = galloc(3000); + end = buffer+3000; + } + innum = inr = 0; wasspace = 0; inbinary = 0; rpt = NULL; rdpt = NULL; + inhex = 0; + pt = buffer; binstart=NULL; binlen = 0; intok=0; sptok=0; first=1; + temptok[0] = '\0'; + while ( (ch=getc(temp))!=EOF ) { + if ( pt>=end ) { + char *old = buffer; + int len = (end-buffer)+2000; + buffer = grealloc(buffer,len); + end = buffer+len; + pt = buffer+(pt-old); + if ( binstart!=NULL ) + binstart = buffer+(binstart-old); + } + *pt++ = ch; + isminus = ch=='-' && wasspace; + nownum = nowspace = nowr = 0; + if ( rpt!=NULL && ch!=*rpt && ch=='h' && rpt-rdline>25 && rpt-rdline<30 && + rdline2[rpt-rdline]=='h' ) { + rpt = rdline2 + (rpt-rdline); + willbehex = true; + } + if ( inbinary ) { + if ( --cnt==0 ) + inbinary = 0; + } else if ( inhex ) { + if ( ishexdigit(ch)) { + int h; + if ( isdigit(ch)) h = ch-'0'; + else if ( ch>='a' && ch<='f' ) h = ch-'a'+10; + else h = ch-'A'+10; + if ( firstnibble ) { + nibble = h; + --pt; + } else { + pt[-1] = (nibble<<4)|h; + if ( --cnt==0 ) + inbinary = inhex = 0; + } + firstnibble = !firstnibble; + } else { + --pt; + /* skip everything not hex */ + } + } else if ( ch=='/' ) { + intok = 1; + tokpt = temptok; + } else if ( intok && !isspace(ch) && ch!='{' && ch!='[' ) { + *tokpt++ = ch; + } else if ( (intok||sptok) && (ch=='{' || ch=='[')) { + *tokpt = '\0'; + rpt = rdline+1; + intok = sptok = 0; + } else if ( intok ) { + *tokpt = '\0'; + intok = 0; + sptok = 1; + } else if ( sptok && isspace(ch)) { + nowspace = 1; + if ( ch=='\n' || ch=='\r' ) + break; + } else if ( sptok && !isdigit(ch)) + sptok = 0; + else if ( rpt!=NULL && ch==*rpt ) { + if ( *++rpt=='\0' ) { + /* it matched the character definition string so this is the */ + /* token we want to search for */ + strcpy(rdtok,temptok); + fp->useshexstrings = willbehex; + rpt = NULL; + } + } else if ( rpt!=NULL && ch==' ' ) { + /* Extra spaces are ok */ + } else if ( rpt!=NULL ) { + rpt = NULL; + willbehex = false; + } else if ( isdigit(ch)) { + sptok = 0; + nownum = 1; + if ( innum ) + val = 10*val + ch-'0'; + else + val = ch-'0'; + } else if ( isspace(ch)) { + nowspace = 1; + if ( ch=='\n' || ch=='\r' ) + break; + } else if ( wasspace && ch==*rdtok ) { + nowr = 1; + fp->useshexstrings = willbehex; + rdpt = rdtok+1; + } else if ( wasspace && ch=='-' ) { /* fonts produced by type1fix seem to define both "RD" and "-|" which confused me. so just respond to either */ + nowr = 1; + fp->useshexstrings = false; + rdpt = "|"; + } else if ( wasspace && ch=='R' ) { /* fonts produced by type1fix seem to define both "RD" and "-|" which confused me. so just respond to either */ + nowr = 1; + fp->useshexstrings = false; + rdpt = "D"; + } else if ( inr && ch==*rdpt ) { + if ( *++rdpt =='\0' ) { + ch = getc(temp); + *pt++ = ch; + if ( isspace(ch) && val!=0 ) { + inhex = fp->useshexstrings; + inbinary = !fp->useshexstrings; + firstnibble = true; + cnt = val; + binstart = pt; + binlen = val; + } + } else + nowr = 1; + } else if ( wasminus && ch=='!' ) { + ch = getc(temp); + *pt++ = ch; + if ( isspace(ch) && val!=0 ) { + inhex = 1; + cnt = val; + binstart = pt; + binlen = val; + firstnibble = true; + } + } + innum = nownum; wasspace = nowspace; inr = nowr; + wasminus = isminus; + first = 0; + } + *pt = '\0'; + if ( binstart==NULL ) { + parseline(fp,buffer,temp); + } else { + addinfo(fp,buffer,temptok,binstart,binlen,temp); + } +return( 1 ); +} + +static int nrandombytes[4]; +#define EODMARKLEN 16 + +#define bgetc(extra,in) (*(extra)=='\0' ? getc(in) : (unsigned char ) *(extra)++ ) + +static void decrypteexec(FILE *in,FILE *temp, int hassectionheads,char *extra) { + int ch1, ch2, ch3, ch4, binary; + int zcnt; + unsigned char zeros[EODMARKLEN+6+1]; + int sect_len=0x7fffffff; + + if ( extra==(void *) 5 ) extra = ""; + + /* The PLRM defines white space to include form-feed and null. The t1_spec*/ + /* does not. The t1_spec wins here. Someone gave me a font which began */ + /* with a formfeed and that was part of the encrypted body */ + while ( (ch1=bgetc(extra,in))!=EOF && (ch1==' ' || ch1=='\t' || ch1=='\n' || ch1=='\r')); + if ( ch1==0200 && hassectionheads ) { + /* skip the 6 byte section header in pfb files that follows eexec */ + ch1 = bgetc(extra,in); + sect_len = bgetc(extra,in); + sect_len |= bgetc(extra,in)<<8; + sect_len |= bgetc(extra,in)<<16; + sect_len |= bgetc(extra,in)<<24; + sect_len -= 3; + ch1 = bgetc(extra,in); + } + ch2 = bgetc(extra,in); ch3 = bgetc(extra,in); ch4 = bgetc(extra,in); + binary = 0; + if ( ch1<'0' || (ch1>'9' && ch1<'A') || ( ch1>'F' && ch1<'a') || (ch1>'f') || + ch2<'0' || (ch2>'9' && ch2<'A') || (ch2>'F' && ch2<'a') || (ch2>'f') || + ch3<'0' || (ch3>'9' && ch3<'A') || (ch3>'F' && ch3<'a') || (ch3>'f') || + ch4<'0' || (ch4>'9' && ch4<'A') || (ch4>'F' && ch4<'a') || (ch4>'f') ) + binary = 1; + if ( ch1==EOF || ch2==EOF || ch3==EOF || ch4==EOF ) { +return; + } + + initcode(); + if ( binary ) { + nrandombytes[0] = decode(ch1); + nrandombytes[1] = decode(ch2); + nrandombytes[2] = decode(ch3); + nrandombytes[3] = decode(ch4); + zcnt = 0; + while (( ch1=bgetc(extra,in))!=EOF ) { + --sect_len; + if ( hassectionheads ) { + if ( sect_len==0 && ch1==0200 ) { + ch1 = bgetc(extra,in); + sect_len = bgetc(extra,in); + sect_len |= bgetc(extra,in)<<8; + sect_len |= bgetc(extra,in)<<16; + sect_len |= bgetc(extra,in)<<24; + sect_len += 1; + if ( ch1=='\1' ) + break; + } else { + dumpzeros(temp,zeros,zcnt); + zcnt = 0; + putc(decode(ch1),temp); + } + } else { + if ( ch1=='0' ) ++zcnt; else {dumpzeros(temp,zeros,zcnt); zcnt = 0; } + if ( zcnt>EODMARKLEN ) + break; + if ( zcnt==0 ) + putc(decode(ch1),temp); + else + zeros[zcnt-1] = decode(ch1); + } + } + } else { + nrandombytes[0] = decode(hex(ch1,ch2)); + nrandombytes[1] = decode(hex(ch3,ch4)); + ch1 = bgetc(extra,in); ch2 = bgetc(extra,in); ch3 = bgetc(extra,in); ch4 = bgetc(extra,in); + nrandombytes[2] = decode(hex(ch1,ch2)); + nrandombytes[3] = decode(hex(ch3,ch4)); + zcnt = 0; + while (( ch1=bgetc(extra,in))!=EOF ) { + while ( ch1!=EOF && isspace(ch1)) ch1 = bgetc(extra,in); + while ( (ch2=bgetc(extra,in))!=EOF && isspace(ch2)); + if ( ch1=='0' && ch2=='0' ) ++zcnt; else { dumpzeros(temp,zeros,zcnt); zcnt = 0;} + if ( zcnt>EODMARKLEN ) + break; + if ( zcnt==0 ) + putc(decode(hex(ch1,ch2)),temp); + else + zeros[zcnt-1] = decode(hex(ch1,ch2)); + } + } + while (( ch1=bgetc(extra,in))=='0' || isspace(ch1) ); + if ( ch1!=EOF ) ungetc(ch1,in); +} + +static void decryptagain(struct fontparse *fp,FILE *temp,char *rdtok) { + while ( glorpline(fp,temp,rdtok)); +} + +static void parsetype3(struct fontparse *fp,FILE *in) { + PSFontInterpretPS(in,fp->fd->charprocs,fp->fd->encoding ); +} + +static unsigned char *readt1str(FILE *temp,int offset,int len,int leniv) { + int i; + unsigned char *str, *pt; + unsigned short r = 4330; + unsigned char plain, cypher; + /* The CID spec doesn't mention this, but the type 1 strings are all */ + /* eexec encrupted (with the nested encryption). Remember leniv varies */ + /* from fd to fd (potentially) */ + /* I'm told (by Ian Kemmish) that leniv==-1 => no eexec encryption */ + + fseek(temp,offset,SEEK_SET); + if ( leniv<0 ) { + str = pt = galloc(len+1); + for ( i=0 ; i>8)); + r = (cypher + r) * c1 + c2; + } + str = pt = galloc(len-leniv+1); + for (; i>8)); + r = (cypher + r) * c1 + c2; + *pt++ = plain; + } + } + *pt = '\0'; +return( str ); +} + +static void figurecids(struct fontparse *fp,FILE *temp) { + struct fontdict *fd = fp->mainfd; + int i,j,k,val; + int *offsets; + int cidcnt = fd->cidcnt; + int leniv; + /* Some cid formats don't have any of these */ + + fd->cidstrs = galloc(cidcnt*sizeof(uint8 *)); + fd->cidlens = galloc(cidcnt*sizeof(int16)); + fd->cidfds = galloc((cidcnt+1)*sizeof(int16)); + offsets = galloc((cidcnt+1)*sizeof(int)); + ff_progress_change_total(cidcnt); + + fseek(temp,fd->mapoffset,SEEK_SET); + for ( i=0; i<=fd->cidcnt; ++i ) { + for ( j=val=0; jfdbytes; ++j ) + val = (val<<8) + getc(temp); + if ( val >= fd->fdcnt && val!=255 ) { /* 255 is a special mark */ + LogError( _("Invalid FD (%d) assigned to CID %d.\n"), val, i ); + val = 0; + } + fd->cidfds[i] = val; + for ( j=val=0; jgdbytes; ++j ) + val = (val<<8) + getc(temp); + offsets[i] = val; + if ( i!=0 ) { + fd->cidlens[i-1] = offsets[i]-offsets[i-1]; + if ( fd->cidlens[i-1]<0 ) { + LogError( _("Bad CID offset for CID %d\n"), i-1 ); + fd->cidlens[i-1] = 0; + } + } + } + + for ( i=0; icidcnt; ++i ) { + if ( fd->cidlens[i]== 0 ) + fd->cidstrs[i] = NULL; + else { + fd->cidstrs[i] = readt1str(temp,offsets[i],fd->cidlens[i], + fd->fds[fd->cidfds[i]]->private->leniv); + fd->cidlens[i] -= fd->fds[fd->cidfds[i]]->private->leniv; + } + ff_progress_next(); + } + free(offsets); + + for ( k=0; kfdcnt; ++k ) { + struct private *private = fd->fds[k]->private; + char *ssubroff = PSDictHasEntry(private->private,"SubrMapOffset"); + char *ssdbytes = PSDictHasEntry(private->private,"SDBytes"); + char *ssubrcnt = PSDictHasEntry(private->private,"SubrCount"); + int subroff, sdbytes, subrcnt; + + if ( ssubroff!=NULL && ssdbytes!=NULL && ssubrcnt!=NULL && + (subroff=strtol(ssubroff,NULL,10))>=0 && + (sdbytes=strtol(ssdbytes,NULL,10))>0 && + (subrcnt=strtol(ssubrcnt,NULL,10))>0 ) { + private->subrs->cnt = subrcnt; + private->subrs->values = gcalloc(subrcnt,sizeof(char *)); + private->subrs->lens = gcalloc(subrcnt,sizeof(int)); + leniv = private->leniv; + offsets = galloc((subrcnt+1)*sizeof(int)); + fseek(temp,subroff,SEEK_SET); + for ( i=0; i<=subrcnt; ++i ) { + for ( j=val=0; jsubrs->lens[i-1] = offsets[i]-offsets[i-1]; + } + for ( i=0; isubrs->values[i] = readt1str(temp,offsets[i], + private->subrs->lens[i],leniv); + } + private->subrs->next = i; + free(offsets); + } + PSDictRemoveEntry(private->private,"SubrMapOffset"); + PSDictRemoveEntry(private->private,"SDBytes"); + PSDictRemoveEntry(private->private,"SubrCount"); + } +} + +static void dodata( struct fontparse *fp, FILE *in, FILE *temp) { + int binary, cnt, len; + int ch, ch2; + char *pt; + char fontsetname[256]; + + while ( (ch=getc(in))!='(' && ch!='/' && ch!=EOF ); + if ( ch=='/' ) { + /* There appears to be no provision for a hex encoding here */ + /* Why can't they use the same format for routines with the same name? */ + binary = true; + for ( pt=fontsetname; (ch=getc(in))!=' ' && ch!=EOF; ) + if ( pt0 ) { + ch = getc(in); + putc(ch,temp); + --cnt; + } + } else { + while ( cnt>0 ) { + /* Hex data are allowed to contain whitespace */ + while ( isspace(ch=getc(in)) ); + while ( isspace(ch2=getc(in)) ); + ch = hex(ch,ch2); + putc(ch,temp); + --cnt; + } + if ( (ch=getc(in))!='>' ) ungetc(ch,in); + } + rewind(temp); + if ( fp->iscid ) + figurecids(fp,temp); + else { + fp->fd->sf = _CFFParse(temp,len,fontsetname); + fp->fd->wascff = true; + } +} + +static void realdecrypt(struct fontparse *fp,FILE *in, FILE *temp) { + char buffer[256]; + int first, hassectionheads; + char rdtok[20]; + int saw_blend = false; + + strcpy(rdtok,"RD"); + + first = 1; hassectionheads = 0; + while ( myfgets(buffer,sizeof(buffer),in)!=NULL ) { + if ( strstr(buffer, "Blend")!=NULL ) + saw_blend = true; + if ( first && buffer[0]=='\200' ) { + int len = strlen( buffer ); + hassectionheads = 1; + fp->fd->wasbinary = true; + /* if there were a newline in the section header (in the length word)*/ + /* we would stop at it, and not read the full header */ + if ( len<6 ) /* eat the header */ + while ( len<6 ) { getc(in); ++len; } + else /* Otherwise parse anything else on the line */ + parseline(fp,buffer+6,in); + } else if ( strstr(buffer,"CharProcs")!=NULL && strstr(buffer,"begin")!=NULL ) { + parsetype3(fp,in); +return; + } else if ( fp->fd->fonttype!=42 && strstr(buffer,"CharStrings")!=NULL && strstr(buffer,"begin")!=NULL ) { + /* Fontographer uses CharStrings even though they aren't */ + parsetype3(fp,in); +return; + } else if ( !fp->iscid ) { + if ( saw_blend ) + parseline(fp,buffer,in); + /* But if it's a multi master font, don't do the special private hack */ + else if ( strstr(buffer,"/CharStrings")!=NULL && + strstr(buffer,"begin")!=NULL && + (fp->fd->fonttype!=42 && fp->fd->cidfonttype!=2)) { + /* gsf files are not eexec encoded, but the charstrings are encoded*/ + InitChars(fp->fd->chars,buffer); + fp->inchars = 1; + decryptagain(fp,in,rdtok); +return; + } else if ( strstr(buffer,"/Subrs")!=NULL && strstr(buffer,"array")!=NULL ) { + /* Same case as above */ + InitChars(fp->fd->private->subrs,buffer); + fp->insubs = 1; + decryptagain(fp,in,rdtok); +return; + } else if ( strstr(buffer,"/Private")!=NULL && (strstr(buffer,"dict")!=NULL || strstr(buffer,"<<")!=NULL )) { + /* files produced by GNU fontutils have some of the same issues */ + fp->inprivate = 1; + fp->infi = false; + decryptagain(fp,in,rdtok); +return; + } else + parseline(fp,buffer,in); + } else + parseline(fp,buffer,in); + first = 0; + if ( strstr(buffer,"%%BeginData: ")!=NULL ) + break; + if ( strstr(buffer,"currentfile")!=NULL && strstr(buffer, "eexec")!=NULL ) { + fp->skipping_mbf = false; + break; + } + /* Hmm. These lines were put in to handle parsing type42 fonts, but */ + /* they break multimaster fonts, and they don't seem to be needed */ + /* for type42s any more either. So... Away with them */ +#if 0 + if ( strstr(buffer,"definefont")!=NULL ) + break; +#endif + } + + if ( strstr(buffer,"%%BeginData: ")!=NULL ) { + /* used by both CID fonts and CFF fonts (and chameleons, whatever they are) */ + dodata(fp,in,temp); + } else if ( strstr(buffer,"eexec")!=NULL ) { + decrypteexec(in,temp,hassectionheads,strstr(buffer, "eexec")+5); + rewind(temp); + decryptagain(fp,temp,rdtok); + while ( myfgets(buffer,sizeof(buffer),in)!=NULL ) { + if ( buffer[0]!='\200' || !hassectionheads ) + parseline(fp,buffer,in); + } + } else if (( fp->fd->fonttype==42 || fp->fd->cidfonttype==2 ) && fp->sfnts!=NULL ) { + fp->fd->sf = _SFReadTTF(fp->sfnts,0,0,"",fp->fd); + fclose(fp->sfnts); + } +} + +FontDict *_ReadPSFont(FILE *in) { + FILE *temp; + struct fontparse fp; + char *oldloc; + struct stat b; + + temp = tmpfile(); + if ( temp==NULL ) { + LogError( _("Cannot open a temporary file\n") ); + fclose(in); +return(NULL); + } + + oldloc = setlocale(LC_NUMERIC,"C"); + memset(&fp,'\0',sizeof(fp)); + fp.fd = fp.mainfd = PSMakeEmptyFont(); + fp.fdindex = -1; + realdecrypt(&fp,in,temp); + free(fp.vbuf); + setlocale(LC_NUMERIC,oldloc); + + fclose(temp); + + if ( fstat(fileno(in),&b)!=-1 ) { + fp.fd->modificationtime = b.st_mtime; + fp.fd->creationtime = b.st_mtime; + } +return( fp.fd ); +} + +FontDict *ReadPSFont(char *fontname) { + FILE *in; + FontDict *fd; + + in = fopen(fontname,"rb"); + if ( in==NULL ) { + LogError( _("Cannot open %s\n"), fontname ); +return(NULL); + } + fd = _ReadPSFont(in); + fclose(in); +return( fd ); +} + +void PSCharsFree(struct pschars *chrs) { + int i; + + if ( chrs==NULL ) +return; + for ( i=0; inext; ++i ) { + if ( chrs->keys!=NULL ) free(chrs->keys[i]); + free(chrs->values[i]); + } + free(chrs->lens); + free(chrs->keys); + free(chrs->values); + free(chrs); +} + +void PSDictFree(struct psdict *dict) { + int i; + + if ( dict==NULL ) +return; + for ( i=0; inext; ++i ) { + if ( dict->keys!=NULL ) free(dict->keys[i]); + free(dict->values[i]); + } + free(dict->keys); + free(dict->values); + free(dict); +} + +static void PrivateFree(struct private *prv) { + PSCharsFree(prv->subrs); +#if 1 + PSDictFree(prv->private); +#else + PSCharsFree(prv->othersubrs); + free(prv->minfeature); + free(prv->nd); + free(prv->np); + free(prv->rd); +#endif + free(prv); +} + +static void FontInfoFree(struct fontinfo *fi) { + free(fi->familyname); + free(fi->fullname); + free(fi->notice); + free(fi->weight); + free(fi->version); + free(fi->blenddesignpositions); + free(fi->blenddesignmap); + free(fi->blendaxistypes); + free(fi); +} + +void PSFontFree(FontDict *fd) { + int i; + + if ( fd->encoding!=NULL ) + for ( i=0; i<256; ++i ) + free( fd->encoding[i]); + free(fd->fontname); + free(fd->cidfontname); + free(fd->registry); + free(fd->ordering); + FontInfoFree(fd->fontinfo); + PSCharsFree(fd->chars); + PrivateFree(fd->private); + if ( fd->charprocs!=NULL ) { + for ( i=0; icharprocs->cnt; ++i ) + free(fd->charprocs->keys[i]); + free(fd->charprocs->keys); + free(fd->charprocs->values); + free(fd->charprocs); + } + if ( fd->cidstrs!=NULL ) { + for ( i=0; icidcnt; ++i ) + free( fd->cidstrs[i]); + free(fd->cidstrs); + } + free(fd->cidlens); + free(fd->cidfds); + if ( fd->fds!=NULL ) { + for ( i=0; ifdcnt; ++i ) + PSFontFree(fd->fds[i]); + free(fd->fds); + } + free(fd->blendfunc); + free(fd->weightvector); + free(fd->cdv); + free(fd->ndv); + + PSDictFree(fd->blendprivate); + PSDictFree(fd->blendfontinfo); + + free(fd); +} + +char **_NamesReadPostscript(FILE *ps) { + char **ret = NULL; + char buffer[2000], *pt, *end; + + if ( ps!=NULL ) { + while ( fgets(buffer,sizeof(buffer),ps)!=NULL ) { + if ( strstr(buffer,"/FontName")!=NULL || + strstr(buffer,"/CIDFontName")!=NULL ) { + pt = strstr(buffer,"FontName"); + pt += strlen("FontName"); + while ( isspace(*pt)) ++pt; + if ( *pt=='/' ) ++pt; + for ( end = pt; *end!='\0' && !isspace(*end); ++end ); + ret = galloc(2*sizeof(char *)); + ret[0] = copyn(pt,end-pt); + ret[1] = NULL; + break; + } else if ( strstr(buffer,"currentfile")!=NULL && strstr(buffer,"eexec")!=NULL ) + break; + else if ( strstr(buffer,"%%BeginData")!=NULL ) + break; + } + fclose(ps); + } +return( ret ); +} + +char **NamesReadPostscript(char *filename) { +return( _NamesReadPostscript( fopen(filename,"rb"))); +} diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/parsettf.c b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/parsettf.c new file mode 100644 index 00000000000..1e1cf2ccad5 --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/parsettf.c @@ -0,0 +1,6489 @@ +/* Copyright (C) 2000-2008 by George Williams */ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "pfaedit.h" +#include +#include +#include +#include +#include +#include +#include "ttf.h" + +#ifdef LUA_FF_LIB +SplineFont *_SFReadTTFInfo(FILE *ttf, int flags,enum openflags openflags, char *filename,struct fontdict *fd); +void THPatchSplineChar(SplineChar *sc); +#endif + +char *SaveTablesPref; +int ask_user_for_cmap = false; + +/* True Type is a really icky format. Nothing is together. It's badly described */ +/* much of the description is misleading */ +/* Apple's version: */ +/* http://fonts.apple.com/TTRefMan/index.html */ +/* MS's version: */ +/* http://www.microsoft.com/typography/tt/tt.htm */ +/* An helpful but incomplete description is given at */ +/* http://www.truetype.demon.co.uk/ttoutln.htm */ +/* For some things I looked at freetype's code to see how they did it */ +/* (I think only for what happens if !ARGS_ARE_XY) */ +/* http://freetype.sourceforge.net/ */ +/* It grows on you though... now that I understand it better it seems better designed */ +/* but the docs remain in conflict. Sometimes badly so */ + +int prefer_cjk_encodings=false; + +/* ************************************************************************** */ +static struct ms_2_locales { char *loc_name; int local_id; } ms_2_locals[] = { + { "af", 0x436 }, + { "sq_AL", 0x41c }, + { "am", 0x45e }, + { "ar_SA", 0x401 }, + { "ar_IQ", 0x801 }, + { "ar_EG", 0xc01 }, + { "ar_LY", 0x1001 }, + { "ar_DZ", 0x1401 }, + { "ar_MA", 0x1801 }, + { "ar_TN", 0x1C01 }, + { "ar_OM", 0x2001 }, + { "ar_YE", 0x2401 }, + { "ar_SY", 0x2801 }, + { "ar_JO", 0x2c01 }, + { "ar_LB", 0x3001 }, + { "ar_KW", 0x3401 }, + { "ar_AE", 0x3801 }, + { "ar_BH", 0x3c01 }, + { "ar_QA", 0x4001 }, + { "hy", 0x42b }, + { "as", 0x44d }, + { "az", 0x42c }, + { "az", 0x82c }, + { "eu", 0x42d }, + { "be_BY", 0x423 }, + { "bn_IN", 0x445 }, + { "bn_BD", 0x845 }, + { "bg_BG", 0x402 }, + { "my", 0x455 }, + { "ca", 0x403 }, + { "km", 0x453 }, + { "zh_TW", 0x404 }, /* Trad */ + { "zh_CN", 0x804 }, /* Simp */ + { "zh_HK", 0xc04 }, /* Trad */ + { "zh_SG", 0x1004 }, /* Simp */ + { "zh_MO", 0x1404 }, /* Trad */ + { "hr", 0x41a }, + { "hr_BA", 0x101a }, + { "cs_CZ", 0x405 }, + { "da_DK", 0x406 }, + { "div", 0x465 }, + { "nl_NL", 0x413 }, + { "nl_BE", 0x813 }, + { "en_UK", 0x809 }, + { "en_US", 0x409 }, + { "en_CA", 0x1009 }, + { "en_AU", 0xc09 }, + { "en_NZ", 0x1409 }, + { "en_IE", 0x1809 }, + { "en_ZA", 0x1c09 }, + { "en_JM", 0x2009 }, + { "en", 0x2409 }, + { "en_BZ", 0x2809 }, + { "en_TT", 0x2c09 }, + { "en_ZW", 0x3009 }, + { "en_PH", 0x3409 }, + { "en_ID", 0x3809 }, + { "en_HK", 0x3c09 }, + { "en_IN", 0x4009 }, + { "en_MY", 0x4409 }, + { "et_EE", 0x425 }, + { "fo", 0x438 }, +/* No language code for filipino */ + { "fa", 0x429 }, + { "fi_FI", 0x40b }, + { "fr_FR", 0x40c }, + { "fr_BE", 0x80c }, + { "fr_CA", 0xc0c }, + { "fr_CH", 0x100c }, + { "fr_LU", 0x140c }, + { "fr_MC", 0x180c }, + { "fr", 0x1c0c }, /* West Indes */ + { "fr_RE", 0x200c }, + { "fr_CD", 0x240c }, + { "fr_SN", 0x280c }, + { "fr_CM", 0x2c0c }, + { "fr_CI", 0x300c }, + { "fr_ML", 0x340c }, + { "fr_MA", 0x380c }, + { "fr_HT", 0x3c0c }, + { "fr_DZ", 0xe40c }, /* North African is most likely to be Algeria, possibly Tunisia */ + { "fy", 0x462 }, + { "gl", 0x456 }, + { "ka", 0x437 }, + { "de_DE", 0x407 }, + { "de_CH", 0x807 }, + { "de_AT", 0xc07 }, + { "de_LU", 0x1007 }, + { "de_LI", 0x1407 }, + { "el_GR", 0x408 }, + { "ga", 0x83c }, + { "gd", 0x43c }, + { "gn", 0x474 }, + { "gu", 0x447 }, + { "ha", 0x468 }, + { "he_IL", 0x40d }, + { "iw", 0x40d }, /* Obsolete name for Hebrew */ + { "hi", 0x439 }, + { "hu_HU", 0x40e }, + { "is_IS", 0x40f }, + { "id", 0x421 }, + { "in", 0x421 }, /* Obsolete name for Indonesean */ + { "iu", 0x45d }, + { "it_IT", 0x410 }, + { "it_CH", 0x810 }, + { "ja_JP", 0x411 }, + { "kn", 0x44b }, + { "ks_IN", 0x860 }, + { "kk", 0x43f }, + { "ky", 0x440 }, + { "km", 0x453 }, + { "kok", 0x457 }, + { "ko", 0x412 }, + { "ko", 0x812 }, /*Johab */ + { "lo", 0x454 }, + { "la", 0x476 }, + { "lv_LV", 0x426 }, + { "lt_LT", 0x427 }, + { "lt", 0x827 }, /* Classic */ + { "mk", 0x42f }, + { "ms", 0x43e }, + { "ms", 0x83e }, + { "ml", 0x44c }, + { "mt", 0x43a }, + { "mr", 0x44e }, + { "mn", 0x450 }, + { "ne_NP", 0x461 }, + { "ne_IN", 0x861 }, + { "no_NO", 0x414 }, /* Bokmal */ + { "no_NO", 0x814 }, /* Nynorsk */ + { "or", 0x448 }, + { "om", 0x472 }, + { "ps", 0x463 }, + { "pl_PL", 0x415 }, + { "pt_PT", 0x416 }, + { "pt_BR", 0x816 }, + { "pa_IN", 0x446 }, + { "pa_PK", 0x846 }, + { "qu_BO", 0x46b }, + { "qu_EC", 0x86b }, + { "qu_PE", 0xc6b }, + { "rm", 0x417 }, + { "ro_RO", 0x418 }, + { "ro_MD", 0x818 }, + { "ru_RU", 0x419 }, + { "ru_MD", 0x819 }, + { "smi", 0x43b }, + { "sa", 0x43b }, +/* No language code for Sepedi */ + { "sr", 0xc1a }, /* Cyrillic */ + { "sr", 0x81a }, /* Latin */ + { "sd_IN", 0x459 }, + { "sd_PK", 0x859 }, + { "si", 0x45b }, + { "sk_SK", 0x41b }, + { "sl_SI", 0x424 }, + { "wen", 0x42e }, + { "es_ES", 0x40a }, /* traditional spanish */ + { "es_MX", 0x80a }, + { "es_ES", 0xc0a }, /* Modern spanish */ + { "es_GT", 0x100a }, + { "es_CR", 0x140a }, + { "es_PA", 0x180a }, + { "es_DO", 0x1c0a }, + { "es_VE", 0x200a }, + { "es_CO", 0x240a }, + { "es_PE", 0x280a }, + { "es_AR", 0x2c0a }, + { "es_EC", 0x300a }, + { "es_CL", 0x340a }, + { "es_UY", 0x380a }, + { "es_PY", 0x3c0a }, + { "es_BO", 0x400a }, + { "es_SV", 0x440a }, + { "es_HN", 0x480a }, + { "es_NI", 0x4c0a }, + { "es_PR", 0x500a }, + { "es_US", 0x540a }, + { "sutu", 0x430 }, + { "sw_KE", 0x441 }, + { "sv_SE", 0x41d }, + { "sv_FI", 0x81d }, + { "tl", 0x464 }, + { "tg", 0x464 }, + { "ta", 0x449 }, + { "tt", 0x444 }, + { "te", 0x44a }, + { "th", 0x41e }, + { "bo_CN", 0x451 }, + { "bo_BT", 0x451 }, + { "ti_ET", 0x473 }, + { "ti_ER", 0x873 }, + { "ts", 0x431 }, + { "tn", 0x432 }, + { "tr_TR", 0x41f }, + { "tk", 0x442 }, + { "uk_UA", 0x422 }, + { "ug", 0x480 }, + { "ur_PK", 0x420 }, + { "ur_IN", 0x820 }, + { "uz", 0x443 }, /* Latin */ + { "uz", 0x843 }, /* Cyrillic */ + { "ven", 0x433 }, + { "vi", 0x42a }, + { "cy", 0x452 }, + { "xh", 0x434 }, + { "yi", 0x43d }, + { "ji", 0x43d }, /* Obsolete Yiddish */ + { "yo", 0x46a }, + { "zu", 0x435 }, + { NULL, 0 }}; + +int MSLanguageFromLocale(void) { + const char *lang=NULL; + int i, langlen; + static char *envs[] = { "LC_ALL", "LC_MESSAGES", "LANG", NULL }; + char langcountry[8], language[4]; + int langcode, langlocalecode; + + for ( i=0; envs[i]!=NULL; ++i ) { + lang = getenv(envs[i]); + if ( lang!=NULL ) { + langlen = strlen(lang); + if (( langlen>5 && lang[5]=='.' && lang[2]=='_' ) || + (langlen==5 && lang[2]=='_' ) || + (langlen==2) || + (langlen==3)) /* Some obscure languages have a 3 letter code */ + /* I understand this language */ + break; + } + } + if ( lang==NULL ) + lang = "en_US"; + strncpy(langcountry,lang,5); langcountry[5] = '\0'; + strncpy(language,lang,3); language[3] = '\0'; + if ( language[2]=='_' ) language[2] = '\0'; + langlen = strlen(language); + + langcode = langlocalecode = -1; + for ( i=0; ms_2_locals[i].loc_name!=NULL; ++i ) { + if ( strmatch(langcountry,ms_2_locals[i].loc_name)==0 ) { + langlocalecode = ms_2_locals[i].local_id; + langcode = langlocalecode&0x3ff; + break; + } else if ( strncmp(language,ms_2_locals[i].loc_name,langlen)==0 ) + langcode = ms_2_locals[i].local_id&0x3ff; + } + if ( langcode==-1 ) /* Default to English */ + langcode = 0x9; +return( langlocalecode==-1 ? (langcode|0x400) : langlocalecode ); +} +/* ************************************************************************** */ + +int getushort(FILE *ttf) { + int ch1 = getc(ttf); + int ch2 = getc(ttf); + if ( ch2==EOF ) +return( EOF ); +return( (ch1<<8)|ch2 ); +} + +int get3byte(FILE *ttf) { + int ch1 = getc(ttf); + int ch2 = getc(ttf); + int ch3 = getc(ttf); + if ( ch3==EOF ) +return( EOF ); +return( (ch1<<16)|(ch2<<8)|ch3 ); +} + +int32 getlong(FILE *ttf) { + int ch1 = getc(ttf); + int ch2 = getc(ttf); + int ch3 = getc(ttf); + int ch4 = getc(ttf); + if ( ch4==EOF ) +return( EOF ); +return( (ch1<<24)|(ch2<<16)|(ch3<<8)|ch4 ); +} + +static int32 getoffset(FILE *ttf, int offsize) { + if ( offsize==1 ) +return( getc(ttf)); + else if ( offsize==2 ) +return( getushort(ttf)); + else if ( offsize==3 ) +return( get3byte(ttf)); + else +return( getlong(ttf)); +} + +real getfixed(FILE *ttf) { + int32 val = getlong(ttf); + int mant = val&0xffff; + /* This oddity may be needed to deal with the first 16 bits being signed */ + /* and the low-order bits unsigned */ +return( (real) (val>>16) + (mant/65536.0) ); +} + +real get2dot14(FILE *ttf) { + int32 val = getushort(ttf); + int mant = val&0x3fff; + /* This oddity may be needed to deal with the first 2 bits being signed */ + /* and the low-order bits unsigned */ +return( (real) ((val<<16)>>(16+14)) + (mant/16384.0) ); +} + +static Encoding *enc_from_platspec(int platform,int specific) { + char *enc; + Encoding *e; + + enc = "Custom"; + if ( platform==0 ) { + enc = "Unicode"; + if ( specific==4 ) + enc = "UnicodeFull"; + } else if ( platform==1 ) { + if ( specific==0 ) + enc = "Mac"; + else if ( specific==1 ) + enc = "Sjis"; + else if ( specific==2 ) + enc = "Big5hkscs"; /* Or should we just guess big5? Both are wrong sometimes */ + else if ( specific==3 ) + enc = "EUC-KR"; + else if ( specific==25 ) + enc = "EUC-CN"; + } else if ( platform==2 ) { /* obselete */ + if ( specific==0 ) + enc = "ASCII"; + else if ( specific==1 ) + enc = "Unicode"; + else if ( specific==2 ) + enc = "ISO8859-1"; + } else if ( platform==3 ) { + if ( specific==1 || specific==0 ) /* symbol (sp=0) is just unicode (PUA) */ + enc = "Unicode"; + else if ( specific==2 ) + enc = "Sjis"; + else if ( specific==3 ) + enc = "EUC-CN"; + else if ( specific==4 ) + enc = "Big5hkscs"; + else if ( specific==5 ) + enc = "EUC-KR"; + else if ( specific==6 ) + enc = "Johab"; + else if ( specific==10 ) + enc = "UnicodeFull"; + } else if ( platform==7 ) { /* Used internally in freetype, but */ + if ( specific==0 ) /* there's no harm in looking for it */ + enc = "AdobeStandard"; /* even if it never happens */ + else if ( specific==1 ) { + /* adobe_expert */; + } else if ( specific==2 ) { + /* adobe_custom */; + } + } + e = FindOrMakeEncoding(enc); + if ( e==NULL ) { + static int p = -1,s = -1; + if ( p!=platform || s!=specific ) { + LogError( _("The truetype encoding specified by platform=%d specific=%d (which we map to %s) is not supported by your version of iconv(3).\n"), + platform, specific, enc ); + p = platform; s = specific; + } + } +return( e ); +} + +static char *_readencstring(FILE *ttf,int offset,int len, + int platform,int specific,int language) { + long pos = ftell(ttf); + unichar_t *str, *pt; + char *ret; + int i, ch; + Encoding *enc; + + fseek(ttf,offset,SEEK_SET); + + if ( platform==1 ) { + /* Mac is screwy, there are several different varients of MacRoman */ + /* depending on the language, they didn't get it right when they */ + /* invented their script system */ + char *cstr, *cpt; + cstr = cpt = galloc(len+1); + for ( i=0; iis_unicodebmp ) { + str = pt = galloc((sizeof(unichar_t)/2)*len+sizeof(unichar_t)); + for ( i=0; iunicode!=NULL ) { + str = pt = galloc(sizeof(unichar_t)*len+sizeof(unichar_t)); + for ( i=0; iunicode[getc(ttf)]; + *pt = 0; + } else if ( enc->tounicode!=NULL ) { + size_t inlen = len+1, outlen = sizeof(unichar_t)*(len+1); + char *cstr = galloc(inlen); + ICONV_CONST char *in = cstr; + char *out; + str = galloc(outlen+2); + out = (char *) str; + iconv(enc->tounicode,&in,&inlen,&out,&outlen); + out[0] = '\0'; out[1] = '\0'; +#ifndef UNICHAR_16 + out[2] = '\0'; out[3] = '\0'; +#endif + free(cstr); + } else { + str = uc_copy(""); + } + ret = u2utf8_copy(str); + free(str); + } + fseek(ttf,pos,SEEK_SET); +return( ret ); +} + +char *TTFGetFontName(FILE *ttf,int32 offset,int32 off2) { + int i,num; + int32 tag, length, stringoffset; + int plat, spec, lang, name, len, off, val; + Encoding *enc; + int32 nameoffset = 0; + int fullval=0, fullstr=0, fulllen=0, famval=0, famstr=0, famlen=0; + int fullplat=0, fullspec=0, fulllang=0, famplat=0, famspec=0, famlang=0; + int locale = MSLanguageFromLocale(); + int maclang = WinLangToMac(locale); + + fseek(ttf,offset,SEEK_SET); + /* version = */ getlong(ttf); + num = getushort(ttf); + /* srange = */ getushort(ttf); + /* esel = */ getushort(ttf); + /* rshift = */ getushort(ttf); + for ( i=0; iis_custom && lang==locale ) + val = 15; + else if ( plat==3 && !enc->is_custom && (lang&0xff)==(locale&0xff) ) + val = 14; + else if ( (plat==0 || plat==1) && !enc->is_custom && lang==maclang ) + val = 13; + /* Ok, that didn't work, how about an english name? */ + else if ( plat==3 && !enc->is_custom && lang==0x409 ) + val = 12; + else if ( plat==3 && !enc->is_custom && (lang&0xff)==0x09 ) + val = 11; + else if ( (plat==0 || plat==1) && !enc->is_custom && lang==0 ) + val = 10; + /* failing that I'll take what I can get */ + else if ( !enc->is_custom ) + val = 1; + if ( name==4 && val>fullval ) { + fullval = val; + fullstr = off; + fulllen = len; + fullplat = plat; + fullspec = spec; + fulllang = lang; + if ( val==12 ) + break; + } else if ( name==1 && val>famval ) { + famval = val; + famstr = off; + famlen = len; + famplat = plat; + famspec = spec; + famlang = lang; + } + } + if ( fullval==0 ) { + if ( famval==0 ) +return( NULL ); + fullstr = famstr; + fulllen = famlen; + fullplat = famplat; + fullspec = famspec; + fulllang = famlang; + } +return( _readencstring(ttf,stringoffset+fullstr,fulllen,fullplat,fullspec,fulllang)); +} + +static int PickTTFFont(FILE *ttf,char *filename,char **chosenname) { + int32 *offsets, cnt, i, choice, j; + char **names; + char *pt, *lparen, *rparen; + + /* TTCF version = */ getlong(ttf); + cnt = getlong(ttf); + if ( cnt==1 ) { + /* This is easy, don't bother to ask the user, there's no choice */ + int32 offset = getlong(ttf); + fseek(ttf,offset,SEEK_SET); + return( true ); + } + offsets = galloc(cnt*sizeof(int32)); + for ( i=0; i=0; --choice ) + if ( strcmp(names[choice],find)==0 ) + break; + if ( choice==-1 ) { + char *end; + choice = strtol(find,&end,10); + if ( *end!='\0' ) + choice = -1; + } + if ( choice==-1 ) { + char *fn = copy(filename); + fn[lparen-filename] = '\0'; + ff_post_error(_("Not in Collection"), +/* GT: The user is trying to open a font file which contains multiple fonts and */ +/* GT: has asked for a font which is not in that file. */ +/* GT: The string will look like: is not in */ + _("%1$s is not in %2$.100s"),find,fn); + free(fn); + } + free(find); + } else + choice = 0; + if ( choice!=-1 ) { + fseek(ttf,offsets[choice],SEEK_SET); + *chosenname = copy(names[choice]); + } + for ( i=0; isavecnt = 0; + info->savetab = NULL; + if ( SaveTablesPref==NULL || *SaveTablesPref=='\0' ) +return; + for ( pt=SaveTablesPref, cnt=0; *pt; ++pt ) + if ( *pt==',' ) + ++cnt; + info->savecnt = cnt+1; + info->savetab = gcalloc(cnt+1,sizeof(struct savetab)); + for ( pt=spt=SaveTablesPref, cnt=0; ; ++pt ) { + if ( *pt==',' || *pt=='\0' ) { + uint32 tag; + tag = ( ( spt savetab[cnt++].tag = tag; + if ( *pt ) + spt = pt+1; + else + break; + } + } +} + +static int32 filechecksum(FILE *file, int start, int len) { + uint32 sum = 0, chunk; + + fseek(file,start,SEEK_SET); + if ( len!=-1 ) len=(len+3)>>2; + while ( len==-1 || --len>=0 ) { + chunk = getlong(file); + if ( feof(file)) + break; + sum += chunk; + } +return( sum ); +} + +static void ValidateTTFHead(FILE *ttf,struct ttfinfo *info) { + /* When doing font lint we want to check the ttf header and make */ + /* sure all the offsets and lengths are valid, and the checksums */ + /* match. Most of the time this is just extra work and we don't */ + /* bather */ + uint32 restore_this_pos = ftell(ttf); + struct tt_tables { + uint32 tag; + uint32 checksum; + uint32 offset; + uint32 length; + } *tabs, temp; + int i,j; + uint32 file_len; + int sr, es, rs, e_sr, e_es, e_rs; + int hashead, hashhea, hasmaxp, masos2, haspost, hasname, hasos2; + int hasloca, hascff, hasglyf; + + info->numtables = getushort(ttf); + sr = getushort(ttf); + es = getushort(ttf); + rs = getushort(ttf); + e_sr = (info->numtables<8?4:info->numtables<16?8:info->numtables<32?16:info->numtables<64?32:64)*16; + e_es = (info->numtables<8?2:info->numtables<16?3:info->numtables<32?4:info->numtables<64?5:6); + e_rs = info->numtables*16-e_sr; + if ( e_sr!=sr || e_es!=es || e_rs!=rs ) { + LogError( _("Unexpected values for binsearch header. Based on the number of tables I\n expect searchRange=%d (not %d), entrySel=%d (not %d) rangeShift=%d (not %d)\n"), + e_sr, sr, e_es, es, e_rs, rs ); + info->bad_sfnt_header = true; + } + + if ( info->numtables<=0 ) { + LogError(_("An sfnt file must contain SOME tables, but this one does not.")); + info->bad_sfnt_header = true; + fseek(ttf,restore_this_pos,SEEK_SET); +return; + } else if ( info->numtables>1000 ) { + LogError(_("An sfnt file may contain a large number of tables, but this one has over 1000\n and that seems like too many\n")); + info->bad_sfnt_header = true; + fseek(ttf,restore_this_pos,SEEK_SET); +return; + } + + tabs = galloc(info->numtables*sizeof(struct tt_tables)); + + for ( i=0; inumtables; ++i ) { + tabs[i].tag = getlong(ttf); + tabs[i].checksum = getlong(ttf); + tabs[i].offset = getlong(ttf); + tabs[i].length = getlong(ttf); + if ( i!=0 && tabs[i].tagbad_sfnt_header ) { + LogError(_("Table tags should be in alphabetic order in the font header\n but '%c%c%c%c', appears after '%c%c%c%c'."), + tabs[i-1].tag>>24, tabs[i-1].tag>>16, tabs[i-1].tag>>8, tabs[i-1].tag, + tabs[i].tag>>24, tabs[i].tag>>16, tabs[i].tag>>8, tabs[i].tag ); + info->bad_sfnt_header = true; + } + } + fseek(ttf,0,SEEK_END); + file_len = ftell(ttf); + + for ( i=0; inumtables; ++i ) for ( j=i+1; jnumtables; ++j ) { + if ( tabs[i].offset>tabs[j].offset ) { + temp = tabs[i]; + tabs[i] = tabs[j]; + tabs[j] = temp; + } + } + for ( i=0; inumtables-1; ++i ) { + for ( j=i+1; jnumtables; ++j ) { + if ( tabs[i].tag==tabs[j].tag ) { + LogError(_("Same table tag, '%c%c%c%c', appears twice in sfnt header"), + tabs[i].tag>>24, tabs[i].tag>>16, tabs[i].tag>>8, tabs[i].tag ); + info->bad_sfnt_header = true; + } + } + if ( tabs[i].offset+tabs[i].length > tabs[i+1].offset ) { + LogError(_("Tables '%c%c%c%c' and '%c%c%c%c' overlap"), + tabs[i].tag>>24, tabs[i].tag>>16, tabs[i].tag>>8, tabs[i].tag, + tabs[j].tag>>24, tabs[j].tag>>16, tabs[j].tag>>8, tabs[j].tag ); + } + } + if ( tabs[i].offset+tabs[i].length > file_len ) { + LogError(_("Table '%c%c%c%c' extends beyond end of file."), + tabs[i].tag>>24, tabs[i].tag>>16, tabs[i].tag>>8, tabs[i].tag ); + info->bad_sfnt_header = true; + } + + /* Checksums. First file as a whole, then each table */ + if ( filechecksum(ttf,0,-1)!=(int)0xb1b0afba ) { + LogError(_("File checksum is incorrect.")); + info->bad_sfnt_header = true; + } + for ( i=0; inumtables-1; ++i ) if ( tabs[i].tag!=CHR('h','e','a','d')) { + if ( filechecksum(ttf,tabs[i].offset,tabs[i].length)!=(int)tabs[i].checksum ) { + LogError(_("Table '%c%c%c%c' has a bad checksum."), + tabs[i].tag>>24, tabs[i].tag>>16, tabs[i].tag>>8, tabs[i].tag ); + info->bad_sfnt_header = true; + } + } + + hashead = hashhea = hasmaxp = masos2 = haspost = hasname = hasos2 = false; + hasloca = hascff = hasglyf = false; + for ( i=0; inumtables-1; ++i ) { + switch ( tabs[i].tag ) { + case CHR('c','v','t',' '): + if ( tabs[i].length&1 ) + LogError(_("Table '%c%c%c%c' has a bad length, must be even."), + tabs[i].tag>>24, tabs[i].tag>>16, tabs[i].tag>>8, tabs[i].tag ); + break; + case CHR('b','h','e','d'): /* Fonts with bitmaps but no outlines get bhea */ + case CHR('h','e','a','d'): + if ( tabs[i].length!=54 ) + LogError(_("Table '%c%c%c%c' has a bad length, must be 54 but is %d."), + tabs[i].tag>>24, tabs[i].tag>>16, tabs[i].tag>>8, tabs[i].tag, + tabs[i].length ); + hashead = true; + break; + case CHR('h','h','e','a'): + hashhea = true; + case CHR('v','h','e','a'): + if ( tabs[i].length!=36 ) + LogError(_("Table '%c%c%c%c' has a bad length, must be 36 but is %d."), + tabs[i].tag>>24, tabs[i].tag>>16, tabs[i].tag>>8, tabs[i].tag, + tabs[i].length ); + break; + case CHR('m','a','x','p'): + hasmaxp = true; + if ( tabs[i].length!=32 && tabs[i].length!=6 ) + LogError(_("Table '%c%c%c%c' has a bad length, must be 32 or 6 but is %d."), + tabs[i].tag>>24, tabs[i].tag>>16, tabs[i].tag>>8, tabs[i].tag, + tabs[i].length ); + break; + case CHR('O','S','/','2'): + hasos2 = true; + if ( tabs[i].length!=78 && tabs[i].length!=86 && tabs[i].length!=96 ) + LogError(_("Table '%c%c%c%c' has a bad length, must be 78, 86 or 96 but is %d."), + tabs[i].tag>>24, tabs[i].tag>>16, tabs[i].tag>>8, tabs[i].tag, + tabs[i].length ); + break; + case CHR('p','o','s','t'): + haspost = true; + break; + case CHR('n','a','m','e'): + hasname = true; + break; + case CHR('l','o','c','a'): + hasloca = true; + break; + case CHR('g','l','y','f'): + hasglyf = true; + break; + case CHR('C','F','F',' '): + hascff = true; + break; + } + } + if ( !hashead ) + LogError(_("Missing required table: \"head\"")); + if ( !hashhea ) + LogError(_("Missing required table: \"hhea\"")); + if ( !hasmaxp ) + LogError(_("Missing required table: \"maxp\"")); + if ( !haspost ) + LogError(_("Missing required table: \"post\"")); + if ( !hasname ) + LogError(_("Missing required table: \"name\"")); + if ( hasglyf && !hasloca ) + LogError(_("Missing required table: \"loca\"")); + if ( !hasos2 ) + LogError(_("Missing \"OS/2\" table")); + if ( !hasglyf && hasloca ) + LogError(_("Missing required table: \"glyf\"")); + if ( !hasglyf && !hascff ) + LogError(_("This font contains neither \"CFF \" nor \"glyf\"/\"loca\" tables")); + + free(tabs); + fseek(ttf,restore_this_pos,SEEK_SET); +} + +static struct tablenames { uint32 tag; char *name; } stdtables[] = { + { CHR('a','c','n','t'), N_("accent attachment table") }, + { CHR('a','v','a','r'), N_("axis variation table") }, + { CHR('B','A','S','E'), N_("Baseline table (OT version)") }, + { CHR('b','d','a','t'), N_("bitmap data table (AAT version)") }, + { CHR('B','D','F',' '), N_("BDF bitmap properties table") }, + { CHR('b','h','e','d'), N_("bitmap font header table") }, + { CHR('b','l','o','c'), N_("bitmap location table (AAT version)") }, + { CHR('b','s','l','n'), N_("baseline table (AAT version)") }, + { CHR('C','F','F',' '), N_("PostScript font program (Compact Font Format)") }, + { CHR('C','I','D',' '), N_("Obsolete table for a type1 CID keyed font") }, + { CHR('c','m','a','p'), N_("character code mapping table") }, + { CHR('c','v','a','r'), N_("CVT variation table") }, + { CHR('c','v','t',' '), N_("control value table") }, + { CHR('D','S','I','G'), N_("digital signature table") }, + { CHR('E','B','D','T'), N_("bitmap data table (OT version)") }, + { CHR('E','B','L','C'), N_("bitmap location table (OT version)") }, + { CHR('E','B','S','C'), N_("embedded bitmap scaling control table") }, + { CHR('E','L','U','A'), N_("electronic end user license table") }, + { CHR('f','d','s','c'), N_("font descriptor table") }, + { CHR('f','e','a','t'), N_("layout feature table") }, + { CHR('F','e','a','t'), N_("SIL Graphite layout feature table") }, + { CHR('F','F','T','M'), N_("FontForge time stamp table") }, + { CHR('f','m','t','x'), N_("font metrics table") }, + { CHR('f','p','g','m'), N_("font program table") }, + { CHR('f','v','a','r'), N_("font variation table") }, + { CHR('g','a','s','p'), N_("grid-fitting and scan-conversion procedure table") }, + { CHR('G','D','E','F'), N_("glyph definition table") }, + { CHR('G','l','a','t'), N_("Graphite glyph attribute table") }, + { CHR('G','l','o','c'), N_("Graphite glyph location in Glat table") }, + { CHR('g','l','y','f'), N_("glyph outline table") }, + { CHR('G','P','O','S'), N_("glyph positioning table") }, + { CHR('g','v','a','r'), N_("glyph variation table") }, + { CHR('G','S','U','B'), N_("glyph substitution table") }, + { CHR('h','d','m','x'), N_("horizontal device metrics table") }, + { CHR('h','e','a','d'), N_("font header table") }, + { CHR('h','h','e','a'), N_("horizontal header table") }, + { CHR('h','m','t','x'), N_("horizontal metrics table") }, + { CHR('h','s','t','y'), N_("horizontal style table") }, + { CHR('j','u','s','t'), N_("justification table (AAT version)") }, + { CHR('J','S','T','F'), N_("justification table (OT version)") }, + { CHR('k','e','r','n'), N_("kerning table") }, + { CHR('l','c','a','r'), N_("ligature caret table") }, + { CHR('l','o','c','a'), N_("glyph location table") }, + { CHR('L','T','S','H'), N_("linear threshold table") }, + { CHR('M','A','T','H'), N_("math table") }, + { CHR('m','a','x','p'), N_("maximum profile table") }, + { CHR('M','M','S','D'), N_("Multi-Master table, obsolete") }, + { CHR('M','M','F','X'), N_("Multi-Master table, obsolete") }, + { CHR('m','o','r','t'), N_("metamorphosis table") }, + { CHR('m','o','r','x'), N_("extended metamorphosis table") }, + { CHR('n','a','m','e'), N_("name table") }, + { CHR('o','p','b','d'), N_("optical bounds table") }, + { CHR('O','S','/','2'), N_("OS/2 and Windows specific metrics table") }, + { CHR('P','C','L','T'), N_("PCL 5 data table") }, + { CHR('P','f','E','d'), N_("FontForge font debugging table") }, + { CHR('p','o','s','t'), N_("glyph name and PostScript compatibility table") }, + { CHR('p','r','e','p'), N_("control value program table") }, + { CHR('p','r','o','p'), N_("properties table") }, + { CHR('S','i','l','f'), N_("SIL Graphite rule table") }, + { CHR('S','i','l','l'), N_("(unspecified) SIL Graphite table") }, + { CHR('S','i','l','t'), N_("unknown SIL table") }, + { CHR('T','e','X',' '), N_("TeX table") }, + { CHR('t','r','a','k'), N_("tracking table") }, + { CHR('T','Y','P','1'), N_("Obsolete table for a type1 font") }, + { CHR('V','D','M','X'), N_("vertical device metrics table") }, + { CHR('v','h','e','a'), N_("vertical header table") }, + { CHR('v','m','t','x'), N_("vertical metrics table") }, + { CHR('V','O','R','G'), N_("vertical origin table") }, + { CHR('Z','a','p','f'), N_("glyph reference table") }, + { 0 , NULL } +}; + +static int readttfheader(FILE *ttf, struct ttfinfo *info,char *filename, + char **choosenname) { + int i, j, k; + unsigned tag; + int checksum, offset, length, version; + int first = true; + + version=getlong(ttf); + if ( version==CHR('t','t','c','f')) { + /* TrueType font collection */ + info->is_ttc = true; + if ( !PickTTFFont(ttf,filename,choosenname)) +return( 0 ); + /* If they picked a font, then we should be left pointing at the */ + /* start of the Table Directory for that font */ + info->one_of_many = true; + version = getlong(ttf); + } + + /* Apple says that 'typ1' is a valid code for a type1 font wrapped up in */ + /* a truetype table structure, but gives no docs on what tables get used */ + /* or how */ /* Turns out to be pretty simple */ + /* typ1 is used for both type1 fonts and CID type1 fonts, I don't think a version of 'CID ' is actually used */ + if ( version==CHR('t','y','p','1') || version==CHR('C','I','D',' ')) { + LogError( _("Nifty, you've got one of the old Apple/Adobe type1 sfnts here\n") ); + } else if ( version!=0x00010000 && version!=CHR('t','r','u','e') && + version!=0x00020000 && /* Windows 3.1 Chinese version used this version for some arphic fonts */ + /* See discussion on freetype list, july 2004 */ + version!=CHR('O','T','T','O')) +return( 0 ); /* Not version 1 of true type, nor Open Type */ + + if ( info->openflags & of_fontlint ) + ValidateTTFHead(ttf,info); + + info->numtables = getushort(ttf); + /* searchRange = */ getushort(ttf); + /* entrySelector = */ getushort(ttf); + /* rangeshift = */ getushort(ttf); + + ParseSaveTablesPref(info); + + for ( i=0; inumtables; ++i ) { + tag = getlong(ttf); + checksum = getlong(ttf); + offset = getlong(ttf); + length = getlong(ttf); +#ifdef DEBUG + printf( "%c%c%c%c\n", tag>>24, (tag>>16)&0xff, (tag>>8)&0xff, tag&0xff ); +#endif + switch ( tag ) { + case CHR('B','A','S','E'): + info->base_start = offset; + break; + case CHR('b','s','l','n'): + info->bsln_start = offset; + break; + case CHR('C','F','F',' '): + info->cff_start = offset; + info->cff_length = length; + break; + case CHR('c','m','a','p'): + info->encoding_start = offset; + break; + case CHR('g','a','s','p'): + info->gasp_start = offset; + break; + case CHR('g','l','y','f'): + info->glyph_start = offset; + info->glyph_length = length; + break; + case CHR('G','D','E','F'): + info->gdef_start = offset; + info->gdef_length = length; + break; + case CHR('G','P','O','S'): + info->gpos_start = offset; + info->gpos_length = length; + break; + case CHR('G','S','U','B'): + info->gsub_start = offset; + info->gsub_length = length; + break; + case CHR('b','d','a','t'): /* Apple/MS use a different tag, but the same format. Great. */ + case CHR('E','B','D','T'): + info->bitmapdata_start = offset; + info->bitmapdata_length = length; + break; + case CHR('b','l','o','c'): /* Apple/MS use a different tag. Great. */ + case CHR('E','B','L','C'): + info->bitmaploc_start = offset; + info->bitmaploc_length = length; + break; + case CHR('b','h','e','d'): /* Apple uses bhed for fonts with only bitmaps */ + case CHR('h','e','a','d'): + info->head_start = offset; + break; + case CHR('h','h','e','a'): + info->hhea_start = offset; + break; + case CHR('h','m','t','x'): + info->hmetrics_start = offset; + break; + case CHR('k','e','r','n'): + info->kern_start = offset; + break; + case CHR('l','o','c','a'): + info->glyphlocations_start = offset; + info->loca_length = length; + info->glyph_cnt = length/2-1; /* the minus one is because there is one extra entry to give the length of the last glyph */ + if ( info->glyph_cnt<0 ) info->glyph_cnt = 0; + break; + case CHR('m','a','x','p'): + info->maxp_start = offset; + info->maxp_len = length; + break; + case CHR('n','a','m','e'): + info->copyright_start = offset; + break; + case CHR('p','o','s','t'): + info->postscript_start = offset; + break; + case CHR('O','S','/','2'): + info->os2_start = offset; + break; + case CHR('C','I','D',' '): + case CHR('T','Y','P','1'): + info->typ1_start = offset; + info->typ1_length = length; + break; + case CHR('v','h','e','a'): + info->vhea_start = offset; + break; + case CHR('v','m','t','x'): + info->vmetrics_start = offset; + break; + case CHR('M','A','T','H'): + info->math_start = offset; + info->math_length = length; + break; + /* Apple stuff */ +#if 0 + case CHR('a','c','n','t'): + info->acnt_start = offset; + break; +#endif + case CHR('f','e','a','t'): + info->feat_start = offset; + break; + case CHR('l','c','a','r'): + info->lcar_start = offset; + break; + case CHR('m','o','r','t'): + info->mort_start = offset; + break; + case CHR('m','o','r','x'): + info->morx_start = offset; + break; + case CHR('o','p','b','d'): + info->opbd_start = offset; + break; + case CHR('p','r','o','p'): + info->prop_start = offset; + break; + /* to make sense of instrs */ + case CHR('c','v','t',' '): + info->cvt_start = offset; + info->cvt_len = length; + break; + case CHR('p','r','e','p'): + info->prep_start = offset; + info->prep_len = length; + break; + case CHR('f','p','g','m'): + info->fpgm_start = offset; + info->fpgm_len = length; + break; + + /* non-standard tables I've added */ + case CHR('P','f','E','d'): + info->pfed_start = offset; + break; + case CHR('F','F','T','M'): + info->fftm_start = offset; + break; + case CHR('T','e','X',' '): + info->tex_start = offset; + break; + case CHR('B','D','F',' '): + info->bdf_start = offset; + break; + + /* Apple's mm fonts */ + case CHR('g','v','a','r'): + info->gvar_start = offset; + info->gvar_len = length; + break; + case CHR('f','v','a','r'): + info->fvar_start = offset; + info->fvar_len = length; + break; + case CHR('a','v','a','r'): + info->avar_start = offset; + info->avar_len = length; + break; + case CHR('c','v','a','r'): + info->cvar_start = offset; + info->cvar_len = length; + break; + + default: + for ( j=0; jsavecnt; ++j ) if ( info->savetab[j].tag == tag ) { + info->savetab[j].offset = offset; + info->savetab[j].len = length; + break; + } + if ( j==info->savecnt ) { + if ( first ) { + LogError( _("The following table(s) in the font have been ignored by FontForge\n") ); + first = false; + } + for ( k=0; stdtables[k].tag!=0; ++k ) + if ( stdtables[k].tag == tag ) + break; + if ( stdtables[k].tag==0 ) { + LogError( _(" Ignoring '%c%c%c%c'\n"), tag>>24, tag>>16, tag>>8, tag); + } else { + LogError( _(" Ignoring '%c%c%c%c' %s\n"), tag>>24, tag>>16, tag>>8, tag, + _(stdtables[k].name)); + } + } + } + } + if ( info->glyphlocations_start!=0 && info->cff_start!=0 ) + LogError( _("This font contains both truetype and PostScript glyph descriptions\n only one will be used.\n")); + else if ( (info->glyphlocations_start!=0) + + (info->cff_start!=0) + + (info->typ1_start!=0)>1 ) + LogError( _("This font contains multiple glyph descriptions\n only one will be used.\n")); + if ( info->gpos_start!=0 && info->kern_start!=0 ) + LogError( _("This font contains both a 'kern' table and a 'GPOS' table.\n The 'kern' table will only be read if there is no 'kern' feature in 'GPOS'.\n")); + if ( (info->mort_start!=0 || info->morx_start!=0) && info->gsub_start!=0 ) + LogError( _("This font contains both a 'mor[tx]' table and a 'GSUB' table.\n FF will only read feature/settings in 'morx' which do not match features\n found in 'GSUB'.\n")); + if ( info->base_start!=0 && info->bsln_start!=0 ) + LogError( _("This font contains both a 'BASE' table and a 'bsln' table.\n FontForge will only read one of them ('BASE').\n")); +return( true ); +} + +static void readdate(FILE *ttf,struct ttfinfo *info,int ismod) { + int date[4], date1970[4], year[2]; + int i; + /* Dates in sfnt files are seconds since 1904. I adjust to unix time */ + /* seconds since 1970 by figuring out how many seconds were in between */ + + date[3] = getushort(ttf); + date[2] = getushort(ttf); + date[1] = getushort(ttf); + date[0] = getushort(ttf); + memset(date1970,0,sizeof(date1970)); + year[0] = (60*60*24*365L)&0xffff; + year[1] = (60*60*24*365L)>>16; + for ( i=1904; i<1970; ++i ) { + date1970[0] += year[0]; + date1970[1] += year[1]; + if ( (i&3)==0 && (i%100!=0 || i%400==0)) + date1970[0] += 24*60*60L; /* Leap year */ + date1970[1] += (date1970[0]>>16); + date1970[0] &= 0xffff; + date1970[2] += date1970[1]>>16; + date1970[1] &= 0xffff; + date1970[3] += date1970[2]>>16; + date1970[2] &= 0xffff; + } + + for ( i=0; i<3; ++i ) { + date[i] -= date1970[i]; + date[i+1] += date[i]>>16; + date[i] &= 0xffff; + } + date[3] -= date1970[3]; + + *(ismod ? &info->modificationtime : &info->creationtime) = +#ifdef _HAS_LONGLONG + (((long long) date[3])<<48) | + (((long long) date[2])<<32) | +#endif + ( date[1] <<16) | + date[0]; +} + +static void readttfhead(FILE *ttf,struct ttfinfo *info) { + /* Here I want units per em, and size of loca entries */ + /* oh... also creation/modification times */ + int i, flags; + + fseek(ttf,info->head_start+4*4,SEEK_SET); /* skip over the version number and a bunch of junk */ + flags = getushort(ttf); + info->optimized_for_cleartype = (flags&(1<<13))?1:0; + info->apply_lsb = !(flags&(1<<1)); + info->emsize = getushort(ttf); + + info->ascent = .8*info->emsize; + info->descent = info->emsize-info->ascent; + + for ( i=0; i<12; ++i ) + getushort(ttf); + info->macstyle = getushort(ttf); + for ( i=0; i<2; ++i ) + getushort(ttf); + info->index_to_loc_is_long = getushort(ttf); + if ( info->index_to_loc_is_long ) + info->glyph_cnt = info->loca_length/4-1; + if ( info->glyph_cnt<0 ) info->glyph_cnt = 0; + + if ( info->fftm_start!=0 ) { + fseek(ttf,info->fftm_start+3*4,SEEK_SET); + } else { + fseek(ttf,info->head_start+4*4+2+2,SEEK_SET); + } + readdate(ttf,info,0); + readdate(ttf,info,1); +} + +static void readttfhhea(FILE *ttf,struct ttfinfo *info) { + /* Here I want ascent, descent and the number of horizontal metrics */ + int i; + + fseek(ttf,info->hhea_start+4,SEEK_SET); /* skip over the version number */ + info->pfminfo.hhead_ascent = getushort(ttf); + info->pfminfo.hhead_descent = (short) getushort(ttf); + info->pfminfo.hheadascent_add = info->pfminfo.hheaddescent_add = false; + info->pfminfo.linegap = getushort(ttf); + info->pfminfo.hheadset = true; + /*info->ascent = info->pfminfo.hhead_ascent;*/ + + for ( i=0; i<12; ++i ) + getushort(ttf); + info->width_cnt = getushort(ttf); +} + +static void readttfmaxp(FILE *ttf,struct ttfinfo *info) { + /* All I want here is the number of glyphs */ + int cnt; + fseek(ttf,info->maxp_start+4,SEEK_SET); /* skip over the version number */ + cnt = getushort(ttf); + if ( info->glyph_cnt==0 && info->glyph_length==0 && info->loca_length<=4 && + info->cff_length==0 && info->typ1_start==0 ) { + /* X11 OpenType bitmap format */; + info->onlystrikes = true; + } else if ( cnt!=info->glyph_cnt && info->loca_length!=0 ) { + ff_post_notice(_("Bad Glyph Count"), _("Font file has bad glyph count field. maxp says: %d sizeof(loca)=>%d"), cnt, info->glyph_cnt); + info->bad_glyph_data = true; + if ( cnt>info->glyph_cnt ) + cnt = info->glyph_cnt; /* Use the smaller of the two values */ + } + /* Open Type fonts have no loca table, so we can't calculate the glyph */ + /* count from it */ + info->glyph_cnt = cnt; + if ( cnt<0 ) info->glyph_cnt = 0; +} + +static char *stripspaces(char *str) { + char *str2 = str, *base = str; + + if ( str==NULL ) +return( NULL ); + + while ( *str ) { + if ( *str==' ' ) + ++str; + else + *str2++ = *str++; + } + *str2 = '\0'; +return( base ); +} + +static struct macname *AddMacName(FILE *ttf, + int strlen, int stroff,int spec,int language, struct macname *last) { + struct macname *new = chunkalloc(sizeof(struct macname)); + long pos = ftell(ttf); + char *pt; + int i; + + new->next = last; + new->enc = spec; + new->lang = language; + new->name = pt = galloc(strlen+1); + + fseek(ttf,stroff,SEEK_SET); + + for ( i=0; ifeatures; f!=NULL; f=f->next ) { + if ( f->strid==id ) { + f->featname = AddMacName(ttf,strlen,stroff,spec,language,f->featname); +return; + } else { + for ( s=f->settings; s!=NULL; s=s->next ) { + if ( s->strid==id ) { + s->setname = AddMacName(ttf,strlen,stroff,spec,language,s->setname); +return; + } + } + } + } + /* Well, there are some things in the name table other than feature/setting*/ + /* names. Let's keep track of everything just in case.... */ + if ( info->fvar_start!=0 ) { + struct macidname *mi, *p; + for ( p=NULL, mi=info->macstrids; mi!=NULL && mi->id!=id; p = mi, mi=mi->next ); + if ( mi==NULL ) { + mi = chunkalloc(sizeof(struct macidname)); + mi->id = id; + mi->last = mi->head = AddMacName(ttf,strlen,stroff,spec,language,NULL); + if ( p==NULL ) + info->macstrids = mi; + else + p->next = mi; + } else { + mi->last->next = AddMacName(ttf,strlen,stroff,spec,language,NULL); + mi->last = mi->last->next; + } + } +} + +static void ValidatePostScriptFontName(struct ttfinfo *info, char *str) { + char *end, *pt, *npt; + int complained = false; + + /* someone gave me a font where the fontname started with the utf8 byte */ + /* order mark. PLRM says only ASCII encoding is supported. CFF says */ + /* only printable ASCII should be used */ + if ( ((uint8 *) str)[0] == 0xef && ((uint8 *) str)[1]==0xbb && ((uint8 *) str)[2] == 0xbf ) { + LogError(_("The fontname begins with the utf8 byte order sequence. This is illegal. %s"), str+3 ); + info->bad_ps_fontname = true; + for ( pt=str+3; *pt; ++pt ) + pt[-3] = *pt; /* ANSI says we can't strcpy overlapping strings */ + } + strtod(str,&end); + if ( (*end=='\0' || (isdigit(str[0]) && strchr(str,'#')!=NULL)) && + *str!='\0' ) { + ff_post_error(_("Bad Font Name"),_("A Postscript name may not be a number")); + info->bad_ps_fontname = true; + *str = 'a'; + complained = true; + } + for ( pt=str; *pt; ++pt ) { + if ( *pt<=' ' || *pt>=0x7f || + *pt=='(' || *pt=='[' || *pt=='{' || *pt=='<' || + *pt==')' || *pt==']' || *pt=='}' || *pt=='>' || + *pt=='%' || *pt=='/' ) { + if ( !complained ) { + ff_post_error(_("Bad Font Name"),_("The Postscript font name \"%.63s\" is invalid.\nIt should be printable ASCII,\nmust not contain (){}[]<>%%/ or space\nand must be shorter than 63 characters"),str); + info->bad_ps_fontname = true; + } + complained = true; + for ( npt=pt; npt[1]; ++npt ) + *npt = npt[1]; + *npt = '\0'; + --pt; + } + } + if ( strlen(str)>63 ) { + ff_post_error(_("Bad Font Name"),_("The Postscript font name \"%.63s\" is invalid.\nIt should be printable ASCII,\nmust not contain (){}[]<>%%/ or space\nand must be shorter than 63 characters"),str); + info->bad_ps_fontname = true; + str[63] = '\0'; + } +} + +char *EnforcePostScriptName(char *old) { + char *end, *pt, *npt, *str = copy(old); + + if ( old==NULL ) +return( old ); + + strtod(str,&end); + if ( (*end=='\0' || (isdigit(str[0]) && strchr(str,'#')!=NULL)) && + *str!='\0' ) { + free(str); + str=galloc(strlen(old)+2); + *str = 'a'; + strcpy(str+1,old); + } + for ( pt=str; *pt; ++pt ) { + if ( *pt<=' ' || *pt>=0x7f || + *pt=='(' || *pt=='[' || *pt=='{' || *pt=='<' || + *pt==')' || *pt==']' || *pt=='}' || *pt=='>' || + *pt=='%' || *pt=='/' ) { + for ( npt=pt; npt[1]; ++npt ) + *npt = npt[1]; + *npt = '\0'; + } + } + if ( strlen(str)>63 ) + str[63] = '\0'; +return( str ); +} + +static int IsSubSetOf(const char *substr,const char *fullstr ) { + /* The mac string is often a subset of the unicode string. Certain */ + /* characters can't be expressed in the mac encoding and are omitted */ + /* or turned to question marks or some such */ + const char *pt1, *pt2; + uint32 ch1, ch2; + + for ( pt1=substr, pt2=fullstr, ch1=utf8_ildb(&pt1); ch1!=0 ; ) { + if ( *pt2=='\0' ) + break; + ch2 = utf8_ildb(&pt2); + if ( ch1==ch2 ) + ch1 = utf8_ildb(&pt1); + } + if ( ch1=='\0' ) +return( true ); + + for ( pt1=substr, pt2=fullstr, ch1=utf8_ildb(&pt1); ch1!=0 ; ) { + if ( *pt2=='\0' ) + break; + ch2 = utf8_ildb(&pt2); + if ( ch1==ch2 || ch1=='?' ) + ch1 = utf8_ildb(&pt1); + } +return( ch1=='\0' ); +} + +static void TTFAddLangStr(FILE *ttf, struct ttfinfo *info, int id, + int strlen, int stroff,int plat,int spec,int language) { + struct ttflangname *cur, *prev; + char *str; + + if ( plat==1 && id>=256 && (info->features!=NULL || info->fvar_start!=0)) { + MacFeatureAdd(ttf,info,id,strlen,stroff,spec,language); +return; + } else if ( id<0 || id>=ttf_namemax ) +return; + + str = _readencstring(ttf,stroff,strlen,plat,spec,language); + if ( str==NULL ) /* we didn't understand the encoding */ +return; + if ( id==ttf_postscriptname ) + ValidatePostScriptFontName(info,str); + if ( *str=='\0' ) { + free(str); +return; + } + + if ( plat==1 || plat==0 ) + language = WinLangFromMac(language); + if ( (language&0xff00)==0 ) language |= 0x400; + + for ( prev=NULL, cur=info->names; cur!=NULL && cur->lang!=language; prev = cur, cur=cur->next ); + if ( cur==NULL ) { + cur = chunkalloc(sizeof(struct ttflangname)); + cur->lang = language; + if ( prev==NULL ) + info->names = cur; + else + prev->next = cur; + } + if ( cur->names[id]==NULL ) { + cur->names[id] = str; + if ( plat==1 || plat==0 ) + cur->frommac[id/32] |= (1<<(id&0x1f)); +/* There's some wacky bug in gcc. If the optimizer is on then strcmp gets turned */ +/* into some inline call. Which would be fine, except the following line goes */ +/* bluey. "Called object is not a function", etc. Compiles fine if we turn off */ +/* the inlining magic */ +#ifdef strcmp +# undef strcmp +#endif + } else if ( strcmp(str,cur->names[id])==0 ) { + free(str); + if ( plat==3 ) + cur->frommac[id/32] &= ~(1<<(id&0x1f)); + } else if ( plat==1 ) { + /* Mac string doesn't match mac unicode string */ + if ( !IsSubSetOf(str,cur->names[id]) ) + LogError( _("Warning: Mac and Unicode entries in the 'name' table differ for the\n %s string in the language %s\n Mac String: %s\nMac Unicode String: %s\n"), + TTFNameIds(id),MSLangString(language), + str,cur->names[id]); + else + LogError( _("Warning: Mac string is a subset of the Unicode string in the 'name' table\n for the %s string in the %s language.\n"), + TTFNameIds(id),MSLangString(language)); + free(str); + } else if ( plat==3 && (cur->frommac[id/32] & (1<<(id&0x1f))) ) { + if ( !IsSubSetOf(cur->names[id],str) ) + LogError( _("Warning: Mac and Windows entries in the 'name' table differ for the\n %s string in the language %s\n Mac String: %s\nWindows String: %s\n"), + TTFNameIds(id),MSLangString(language), + cur->names[id],str); + else + LogError( _("Warning: Mac string is a subset of the Windows string in the 'name' table\n for the %s string in the %s language.\n"), + TTFNameIds(id),MSLangString(language)); + free(cur->names[id]); + cur->names[id] = str; + cur->frommac[id/32] &= ~(1<<(id&0x1f)); + } else { + int ret; + if ( info->dupnamestate!=0 ) + ret = info->dupnamestate; + else + ret = 3; + if ( ret==0 || ret==1 ) + free(str); + else { + free(cur->names[id]); + cur->names[id] = str; + } + } +} + +static int is_ascii(char *str) { /* isascii is in ctype */ + if ( str==NULL ) +return( false ); + while ( *str && *str<127 && *str>=' ' ) + ++str; +return( *str=='\0' ); +} + +static char *FindLangEntry(struct ttfinfo *info, int id ) { + /* Look for an entry with string id */ + /* we prefer english, if we can't find english look for something in ascii */ + struct ttflangname *cur; + char *ret; + + for ( cur=info->names; cur!=NULL && cur->lang!=0x409; cur=cur->next ); + if ( cur!=NULL && cur->names[id]==NULL ) cur = NULL; + if ( cur==NULL ) + for ( cur=info->names; cur!=NULL && (cur->lang&0xf)!=0x09; cur=cur->next ); + if ( cur!=NULL && cur->names[id]==NULL ) cur = NULL; + if ( cur==NULL ) + for ( cur=info->names; cur!=NULL && !is_ascii(cur->names[id]); cur=cur->next ); + if ( cur==NULL ) + for ( cur=info->names; cur!=NULL && cur->names[id]==NULL; cur=cur->next ); + if ( cur==NULL ) +return( NULL ); + ret = copy(cur->names[id]); +return( ret ); +} + +struct otfname *FindAllLangEntries(FILE *ttf, struct ttfinfo *info, int id ) { + /* Look for all entries with string id under windows platform */ + int32 here = ftell(ttf); + int i, cnt, tableoff; + int platform, specific, language, name, str_len, stroff; + struct otfname *head=NULL, *cur; + + if ( info->copyright_start!=0 && id!=0 ) { + fseek(ttf,info->copyright_start,SEEK_SET); + /* format selector = */ getushort(ttf); + cnt = getushort(ttf); + tableoff = info->copyright_start+getushort(ttf); + for ( i=0; inext = head; + head = cur; + cur->lang = language; + cur->name = temp; + } + } + } + fseek(ttf,here,SEEK_SET); + } +return( head ); +} + +static struct macname *reversemacnames(struct macname *mn) { + struct macname *next, *prev=NULL; + + if ( mn==NULL ) +return( NULL ); + + next = mn->next; + while ( next!=NULL ) { + mn->next = prev; + prev = mn; + mn = next; + next = mn->next; + } + mn->next = prev; +return( mn ); +} + +static void readttfcopyrights(FILE *ttf,struct ttfinfo *info) { + int i, cnt, tableoff; + int platform, specific, language, name, str_len, stroff; + + if ( info->feat_start!=0 ) + readmacfeaturemap(ttf,info); + if ( info->copyright_start!=0 ) { + fseek(ttf,info->copyright_start,SEEK_SET); + /* format selector = */ getushort(ttf); + cnt = getushort(ttf); + tableoff = info->copyright_start+getushort(ttf); + for ( i=0; icopyright==NULL ) + info->copyright = FindLangEntry(info,ttf_copyright); + if ( info->familyname==NULL ) + info->familyname = FindLangEntry(info,ttf_family); + if ( info->fullname==NULL ) + info->fullname = FindLangEntry(info,ttf_fullname); + if ( info->version==NULL ) + info->version = FindLangEntry(info,ttf_version); + if ( info->fontname==NULL ) + info->fontname = FindLangEntry(info,ttf_postscriptname); + + if ( info->fontname != NULL && *info->fontname=='\0' ) { + free(info->fontname); + info->fontname = NULL; + } + if ( info->familyname != NULL && *info->familyname=='\0' ) { + free(info->familyname); + info->familyname = NULL; + } + if ( info->fullname != NULL && *info->fullname=='\0' ) { + free(info->fullname); + info->fullname = NULL; + } + + /* OpenType spec says the version string should begin with "Version " and */ + /* end with a space and have a number in between */ + if ( info->version==NULL ) info->version = copy("1.0"); + else if ( strnmatch(info->version,"Version ",8)==0 ) { + char *temp = copy(info->version+8); + if ( temp[strlen(temp)-1]==' ' ) + temp[strlen(temp)-1] = '\0'; + free(info->version); + info->version = temp; + } + if ( info->fontname==NULL ) { + if ( info->fullname!=NULL ) + info->fontname = stripspaces(copy(info->fullname)); + if ( info->fontname==NULL && info->familyname!=NULL ) + info->fontname = stripspaces(copy(info->familyname)); + if ( info->fontname!=NULL ) + ValidatePostScriptFontName(info,info->fontname); + } + + if ( info->features ) { + MacFeat *mf; + struct macsetting *ms; + for ( mf=info->features; mf!=NULL; mf = mf->next ) { + mf->featname = reversemacnames(mf->featname); + for ( ms=mf->settings; ms!=NULL; ms=ms->next ) + ms->setname = reversemacnames(ms->setname); + } + } +} + +static void readttfpreglyph(FILE *ttf,struct ttfinfo *info) { + if ( info->head_start!=0 ) + readttfhead(ttf,info); + if ( info->hhea_start!=0 ) + readttfhhea(ttf,info); + if ( info->maxp_start!=0 ) + readttfmaxp(ttf,info); + readttfcopyrights(ttf,info); /* This one has internal checks */ +} + +#define _On_Curve 1 +#define _X_Short 2 +#define _Y_Short 4 +#define _Repeat 8 +#define _X_Same 0x10 +#define _Y_Same 0x20 + +static void FigureControls(SplinePoint *from, SplinePoint *to, BasePoint *cp, + int is_order2) { + /* What are the control points for 2 cp bezier which will provide the same*/ + /* curve as that for the 1 cp bezier specified above */ + real b, c, d; + + if ( is_order2 ) { + from->nextcp = to->prevcp = *cp; + if ( cp->x==to->me.x && cp->y==to->me.y ) { + /* I would lose track of the proper location of this cp if I left */ + /* it here (would end up with from->nonextcp, which would mean I'd*/ + /* use from->me rather than to->me in tottf.c:SSAddPoints. So we */ + /* distort it a little */ + BasePoint off; + double len; + off.x = from->me.x-to->me.x; off.y = from->me.y-to->me.y; + len = sqrt(off.x*off.x+off.y*off.y); + if ( len>3 ) { + /* move the cp slightly toward from, but on the line between the two */ + from->nextcp.x = (to->prevcp.x += rint(off.x/len)); + from->nextcp.y = (to->prevcp.y += rint(off.y/len)); + } + } + } else { + d = from->me.x; + c = 2*cp->x - 2*from->me.x; + b = to->me.x+from->me.x-2*cp->x; + from->nextcp.x = d+c/3; + to->prevcp.x = from->nextcp.x + (c+b)/3; + + d = from->me.y; + c = 2*cp->y - 2*from->me.y; + b = to->me.y+from->me.y-2*cp->y; + from->nextcp.y = d+c/3; + to->prevcp.y = from->nextcp.y + (c+b)/3; + } + + if ( from->me.x!=from->nextcp.x || from->me.y!=from->nextcp.y ) + from->nonextcp = false; + if ( to->me.x!=to->prevcp.x || to->me.y!=to->prevcp.y ) + to->noprevcp = false; + if ( is_order2 && (to->noprevcp || from->nonextcp)) { + to->noprevcp = from->nonextcp = true; + from->nextcp = from->me; + to->prevcp = to->me; + } +} + +static SplineSet *ttfbuildcontours(int path_cnt,uint16 *endpt, char *flags, + BasePoint *pts, int is_order2) { + SplineSet *head=NULL, *last=NULL, *cur; + int i, path, start, last_off; + SplinePoint *sp; + + for ( path=i=0; pathnext = cur; + last = cur; + last_off = false; + start = i; + sp = NULL; + while ( i<=endpt[path] ) { + if ( flags[i]&_On_Curve ) { + sp = chunkalloc(sizeof(SplinePoint)); + sp->me = sp->nextcp = sp->prevcp = pts[i]; + sp->nonextcp = sp->noprevcp = true; + sp->ttfindex = i; + sp->nextcpindex = 0xffff; + if ( last_off && cur->last!=NULL ) + FigureControls(cur->last,sp,&pts[i-1],is_order2); + last_off = false; + } else if ( last_off ) { + /* two off curve points get a third on curve point created */ + /* half-way between them. Now isn't that special */ + sp = chunkalloc(sizeof(SplinePoint)); + sp->me.x = (pts[i].x+pts[i-1].x)/2; + sp->me.y = (pts[i].y+pts[i-1].y)/2; + sp->nextcp = sp->prevcp = sp->me; + sp->nonextcp = true; + sp->ttfindex = 0xffff; + sp->nextcpindex = i; + if ( last_off && cur->last!=NULL ) + FigureControls(cur->last,sp,&pts[i-1],is_order2); + /* last_off continues to be true */ + } else { + if ( cur->first!=NULL ) + cur->last->nextcpindex = i; + last_off = true; + sp = NULL; + } + if ( sp!=NULL ) { + if ( cur->first==NULL ) + cur->first = sp; + else + SplineMake(cur->last,sp,is_order2); + cur->last = sp; + } + ++i; + } + if ( start==i-1 ) { + /* MS chinese fonts have contours consisting of a single off curve*/ + /* point. What on earth do they think that means? */ + /* Oh. I see. It's used to possition marks and such */ + if ( cur->first==NULL ) { + sp = chunkalloc(sizeof(SplinePoint)); + sp->me.x = pts[start].x; + sp->me.y = pts[start].y; + sp->nextcp = sp->prevcp = sp->me; + sp->nonextcp = sp->noprevcp = true; + sp->ttfindex = i-1; + sp->nextcpindex = 0xffff; + cur->first = cur->last = sp; + } + } else if ( !(flags[start]&_On_Curve) && !(flags[i-1]&_On_Curve) ) { + sp = chunkalloc(sizeof(SplinePoint)); + sp->me.x = (pts[start].x+pts[i-1].x)/2; + sp->me.y = (pts[start].y+pts[i-1].y)/2; + sp->nextcp = sp->prevcp = sp->me; + sp->nonextcp = true; + sp->ttfindex = 0xffff; + sp->nextcpindex = start; + FigureControls(cur->last,sp,&pts[i-1],is_order2); + SplineMake(cur->last,sp,is_order2); + cur->last = sp; + FigureControls(sp,cur->first,&pts[start],is_order2); + } else if ( !(flags[i-1]&_On_Curve)) { + FigureControls(cur->last,cur->first,&pts[i-1],is_order2); + cur->last->nextcpindex = i-1; + } else if ( !(flags[start]&_On_Curve) ) { + FigureControls(cur->last,cur->first,&pts[start],is_order2); + sp->nextcpindex = start; + } + if ( cur->last!=cur->first ) { + SplineMake(cur->last,cur->first,is_order2); + cur->last = cur->first; + } + for ( sp=cur->first; ; ) { + /*if ( sp->ttfindex!=0xffff && SPInterpolate(sp) ) + sp->dontinterpolate = true;*/ /* TODO: needs checking */ + if ( sp->next==NULL ) + break; + sp=sp->next->to; + if ( sp==cur->first ) + break; + } + } +return( head ); +} + +static void readttfsimpleglyph(FILE *ttf,struct ttfinfo *info,SplineChar *sc, int path_cnt) { + uint16 *endpt = galloc((path_cnt+1)*sizeof(uint16)); + uint8 *instructions; + char *flags; + BasePoint *pts; + int i, j, tot, len; + int last_pos; + + for ( i=0; ibad_glyph_data = true; + LogError( _("Bad tt font: contour ends make no sense in glyph %d.\n"), + sc->orig_pos ); +return; + } + } + if ( path_cnt==0 ) { + tot = 0; + pts = galloc(sizeof(BasePoint)); + } else { + tot = endpt[path_cnt-1]+1; + pts = galloc(tot*sizeof(BasePoint)); + } + + len = getushort(ttf); + instructions = galloc(len); + for ( i=0; i=tot ) { + IError("Flag count is wrong (or total is): %d %d", i+cnt, tot ); + cnt = tot-i-1; + } + for ( j=0; jorig_pos ); + + last_pos = 0; + for ( i=0; ilayers[ly_fore].splines = ttfbuildcontours(path_cnt,endpt,flags,pts,info->to_order2); + if ( info->to_order2 && len!=0 ) { + sc->ttf_instrs_len = len; + sc->ttf_instrs = instructions; + } else + free(instructions); + SCCatagorizePoints(sc); + free(endpt); + free(flags); + free(pts); + if ( feof(ttf)) { + LogError( _("Reached end of file when reading simple glyph\n") ); + info->bad_glyph_data = true; + } +} + +static void readttfcompositglyph(FILE *ttf,struct ttfinfo *info,SplineChar *sc, int32 end) { + RefChar *head=NULL, *last=NULL, *cur=NULL; + int flags=0, arg1, arg2; + int use_my_metrics=0; + + if ( ftell(ttf)>=end ) { + LogError( _("Empty composite %d\n"), sc->orig_pos ); + info->bad_glyph_data = true; +return; + } + + do { + if ( ftell(ttf)>=end ) { + LogError( _("Bad flags value, implied MORE components at end of glyph %d\n"), sc->orig_pos ); + info->bad_glyph_data = true; + break; + } + cur = RefCharCreate(); + flags = getushort(ttf); + cur->orig_pos = getushort(ttf); + if ( feof(ttf) || cur->orig_pos>=info->glyph_cnt ) { + LogError(_("Reference to glyph %d out of bounds when parsing 'glyf' table.\n"), cur->orig_pos ); + info->bad_glyph_data = true; + cur->orig_pos = 0; + } + if ( info->inuse!=NULL ) + info->inuse[cur->orig_pos] = true; + if ( flags&_ARGS_ARE_WORDS ) { + arg1 = (short) getushort(ttf); + arg2 = (short) getushort(ttf); + } else { + arg1 = (signed char) getc(ttf); + arg2 = (signed char) getc(ttf); + } + cur->use_my_metrics = (flags & _USE_MY_METRICS) ? 1 : 0; + if ( cur->use_my_metrics ) { + if ( use_my_metrics ) { + LogError( _("Use-my-metrics flag set on at least two components in glyph %d\n"), sc->orig_pos ); + info->bad_glyph_data = true; + } else + use_my_metrics = true; + } + cur->round_translation_to_grid = (flags & _ROUND) ? 1 : 0; + if ( flags & _ARGS_ARE_XY ) { + /* There is some very strange stuff (half-)documented on the apple*/ + /* site about how these should be interpretted when there are */ + /* scale factors, or rotations */ + /* It isn't well enough described to be comprehensible */ + /* http://fonts.apple.com/TTRefMan/RM06/Chap6glyf.html */ + /* Microsoft says nothing about this */ + /* Adobe implies this is a difference between MS and Apple */ + /* MS doesn't do this, Apple does (GRRRGH!!!!) */ + /* Adobe says that setting bit 12 means that this will not happen */ + /* Adobe says that setting bit 11 means that this will happen */ + /* So if either bit is set we know when this happens, if neither */ + /* we guess... But I still don't know how to interpret the */ + /* apple mode under rotation... */ + /* I notice that FreeType does nothing about rotation nor does it */ + /* interpret bits 11&12 */ + /* Ah. It turns out that even Apple does not do what Apple's docs */ + /* claim it does. I think I've worked it out (see below), but... */ + /* Bleah! */ + cur->transform[4] = arg1; + cur->transform[5] = arg2; + } else { + /* Somehow we can get offsets by looking at the points in the */ + /* points so far generated and comparing them to the points in */ + /* the current componant */ + /* How exactly is not described on any of the Apple, MS, Adobe */ + /* freetype looks up arg1 in the set of points we've got so far */ + /* looks up arg2 in the new component (before renumbering) */ + /* offset.x = arg1.x - arg2.x; offset.y = arg1.y - arg2.y; */ + /* This fixup needs to be done later though (after all glyphs */ + /* have been loaded) */ + cur->match_pt_base = arg1; + cur->match_pt_ref = arg2; + cur->point_match = true; + } + cur->transform[0] = cur->transform[3] = 1.0; + if ( flags & _SCALE ) + cur->transform[0] = cur->transform[3] = get2dot14(ttf); + else if ( flags & _XY_SCALE ) { + cur->transform[0] = get2dot14(ttf); + cur->transform[3] = get2dot14(ttf); + } else if ( flags & _MATRIX ) { + cur->transform[0] = get2dot14(ttf); + cur->transform[1] = get2dot14(ttf); + cur->transform[2] = get2dot14(ttf); + cur->transform[3] = get2dot14(ttf); + } + if ( flags & _ARGS_ARE_XY ) { /* Only muck with these guys if they are real offsets and not point matching */ +#ifdef __Mac + /* On mac assume scaled offsets unless told unscaled explicitly */ + if ( !(flags&_UNSCALED_OFFSETS) && +#else + /* everywhere else assume unscaled offsets unless told scaled explicitly */ + if ( (flags & _SCALED_OFFSETS) && +#endif + (flags & _ARGS_ARE_XY) && (flags&(_SCALE|_XY_SCALE|_MATRIX))) { + /*static int asked = 0;*/ + /* This is not what Apple documents on their website. But it is */ + /* what appears to match the behavior of their rasterizer */ + /* Apple has changed their documentation (without updating their */ + /* changelog), but I believe they are still incorrect */ + cur->transform[4] *= sqrt(cur->transform[0]*cur->transform[0]+ + cur->transform[1]*cur->transform[1]); + cur->transform[5] *= sqrt(cur->transform[2]*cur->transform[2]+ + cur->transform[3]*cur->transform[3]); +#if 0 + /* Apple's Chicago is an example */ + if ( info->fontname!=NULL && strcmp(info->fontname,"CompositeMac")!=0 && !asked ) { + /* Not interested in the test font I generated myself */ + asked = true; + fprintf( stderr, "Neat! You've got a font that actually uses Apple's scaled composite offsets.\n" ); + fprintf( stderr, " I've never seen one, could you send me a copy of %s?\n", info->fontname ); + fprintf( stderr, " Thanks. gww@silcom.com\n" ); + } +#endif + } + } + if ( cur->orig_pos>=info->glyph_cnt ) { + LogError(_("Glyph %d attempts to reference glyph %d which is outside the font\n"), sc->orig_pos, cur->orig_pos ); + chunkfree(cur,sizeof(*cur)); + } else { + if ( head==NULL ) + head = cur; + else + last->next = cur; + last = cur; + } + if ( feof(ttf)) { + LogError(_("Reached end of file when reading composit glyph\n") ); + info->bad_glyph_data = true; + break; + } + } while ( flags&_MORE ); + if ( (flags & _INSTR ) && info->to_order2 && ftell(ttf)ttf_instrs_len = getushort(ttf); + if ( sc->ttf_instrs_len > 0 && ftell(ttf)+sc->ttf_instrs_len<=end ) { + uint8 *instructions = galloc(sc->ttf_instrs_len); + int i; + for ( i=0; ittf_instrs_len; ++i ) + instructions[i] = getc(ttf); + sc->ttf_instrs = instructions; + } else + sc->ttf_instrs_len = 0; + } + sc->layers[ly_fore].refs = head; +} + +static SplineChar *readttfglyph(FILE *ttf,struct ttfinfo *info,int start, int end,int gid) { + int path_cnt; + SplineChar *sc = SplineCharCreate(2); + + sc->unicodeenc = -1; + sc->vwidth = info->emsize; + sc->orig_pos = gid; + + if ( end>(int)info->glyph_length ) { + if ( !info->complainedbeyondglyfend ) + LogError(_("Bad glyph (%d), its definition extends beyond the end of the glyf table\n"), gid ); + info->bad_glyph_data = true; + info->complainedbeyondglyfend = true; + SplineCharFree(sc); +return( NULL ); + } else if ( endglyph_start+start,SEEK_SET); + path_cnt = (short) getushort(ttf); + +#ifdef LUA_FF_LIB + sc->xmin = getushort(ttf); + sc->ymin = getushort(ttf); + sc->xmax = getushort(ttf); + sc->ymax = getushort(ttf); + sc->lsidebearing = sc->xmin; +#else + /* xmin = */ sc->lsidebearing = getushort(ttf); + /* ymin = */ getushort(ttf); + /* xmax = */ getushort(ttf); + /* ymax = */ /* sc->lsidebearing = */ getushort(ttf); /* what was this for? */ +#endif + if ( path_cnt>=0 ) + readttfsimpleglyph(ttf,info,sc,path_cnt); + else + readttfcompositglyph(ttf,info,sc,info->glyph_start+end); + if ( start>end ) { + LogError(_("Bad glyph (%d), disordered 'loca' table (start comes after end)\n"), gid ); + info->bad_glyph_data = true; + } else if ( ftell(ttf)>info->glyph_start+end ) { + LogError(_("Bad glyph (%d), its definition extends beyond the space allowed for it\n"), gid ); + info->bad_glyph_data = true; + } + + /* find the bb */ + THPatchSplineChar(sc); + +return( sc ); +} + +static void readttfencodings(FILE *ttf,struct ttfinfo *info, int justinuse); + +static void readttfglyphs(FILE *ttf,struct ttfinfo *info) { + int i, anyread; + uint32 *goffsets = galloc((info->glyph_cnt+1)*sizeof(uint32)); + + /* First we read all the locations. This might not be needed, they may */ + /* just follow one another, but nothing I've noticed says that so let's */ + /* be careful */ + fseek(ttf,info->glyphlocations_start,SEEK_SET); + if ( info->index_to_loc_is_long ) { + for ( i=0; i<=info->glyph_cnt ; ++i ) + goffsets[i] = getlong(ttf); + } else { + for ( i=0; i<=info->glyph_cnt ; ++i ) + goffsets[i] = 2*getushort(ttf); + } + + info->chars = gcalloc(info->glyph_cnt,sizeof(SplineChar *)); + if ( !info->is_ttc || (info->openflags&of_all_glyphs_in_ttc)) { + /* read all the glyphs */ + for ( i=0; iglyph_cnt ; ++i ) { + info->chars[i] = readttfglyph(ttf,info,goffsets[i],goffsets[i+1],i); + ff_progress_next(); + } + } else { + /* only read the glyphs we actually use in this font */ + /* this is complicated by references (and substitutions), */ + /* we can't just rely on the encoding to tell us what is used */ + info->inuse = gcalloc(info->glyph_cnt,sizeof(char)); + readttfencodings(ttf,info,git_justinuse); + if ( info->gsub_start!=0 ) /* Some glyphs may appear in substitutions and not in the encoding... */ + readttfgsubUsed(ttf,info); + if ( info->math_start!=0 ) + otf_read_math_used(ttf,info); + /* I don't bother to read the morx table because mac doesn't */ + /* support ttc files */ + anyread = true; + while ( anyread ) { + anyread = false; + for ( i=0; iglyph_cnt ; ++i ) { + if ( info->inuse[i] && info->chars[i]==NULL ) { + info->chars[i] = readttfglyph(ttf,info,goffsets[i],goffsets[i+1],i); + ff_progress_next(); + anyread = info->chars[i]!=NULL; + } + } + } + free(info->inuse); info->inuse = NULL; + } + free(goffsets); + for ( i=0; iglyph_cnt ; ++i ) + if ( info->chars[i]!=NULL ) + info->chars[i]->orig_pos = i; + ff_progress_next_stage(); +} + +/* Standard names for cff */ +const char *cffnames[] = { + ".notdef", + "space", + "exclam", + "quotedbl", + "numbersign", + "dollar", + "percent", + "ampersand", + "quoteright", + "parenleft", + "parenright", + "asterisk", + "plus", + "comma", + "hyphen", + "period", + "slash", + "zero", + "one", + "two", + "three", + "four", + "five", + "six", + "seven", + "eight", + "nine", + "colon", + "semicolon", + "less", + "equal", + "greater", + "question", + "at", + "A", + "B", + "C", + "D", + "E", + "F", + "G", + "H", + "I", + "J", + "K", + "L", + "M", + "N", + "O", + "P", + "Q", + "R", + "S", + "T", + "U", + "V", + "W", + "X", + "Y", + "Z", + "bracketleft", + "backslash", + "bracketright", + "asciicircum", + "underscore", + "quoteleft", + "a", + "b", + "c", + "d", + "e", + "f", + "g", + "h", + "i", + "j", + "k", + "l", + "m", + "n", + "o", + "p", + "q", + "r", + "s", + "t", + "u", + "v", + "w", + "x", + "y", + "z", + "braceleft", + "bar", + "braceright", + "asciitilde", + "exclamdown", + "cent", + "sterling", + "fraction", + "yen", + "florin", + "section", + "currency", + "quotesingle", + "quotedblleft", + "guillemotleft", + "guilsinglleft", + "guilsinglright", + "fi", + "fl", + "endash", + "dagger", + "daggerdbl", + "periodcentered", + "paragraph", + "bullet", + "quotesinglbase", + "quotedblbase", + "quotedblright", + "guillemotright", + "ellipsis", + "perthousand", + "questiondown", + "grave", + "acute", + "circumflex", + "tilde", + "macron", + "breve", + "dotaccent", + "dieresis", + "ring", + "cedilla", + "hungarumlaut", + "ogonek", + "caron", + "emdash", + "AE", + "ordfeminine", + "Lslash", + "Oslash", + "OE", + "ordmasculine", + "ae", + "dotlessi", + "lslash", + "oslash", + "oe", + "germandbls", + "onesuperior", + "logicalnot", + "mu", + "trademark", + "Eth", + "onehalf", + "plusminus", + "Thorn", + "onequarter", + "divide", + "brokenbar", + "degree", + "thorn", + "threequarters", + "twosuperior", + "registered", + "minus", + "eth", + "multiply", + "threesuperior", + "copyright", + "Aacute", + "Acircumflex", + "Adieresis", + "Agrave", + "Aring", + "Atilde", + "Ccedilla", + "Eacute", + "Ecircumflex", + "Edieresis", + "Egrave", + "Iacute", + "Icircumflex", + "Idieresis", + "Igrave", + "Ntilde", + "Oacute", + "Ocircumflex", + "Odieresis", + "Ograve", + "Otilde", + "Scaron", + "Uacute", + "Ucircumflex", + "Udieresis", + "Ugrave", + "Yacute", + "Ydieresis", + "Zcaron", + "aacute", + "acircumflex", + "adieresis", + "agrave", + "aring", + "atilde", + "ccedilla", + "eacute", + "ecircumflex", + "edieresis", + "egrave", + "iacute", + "icircumflex", + "idieresis", + "igrave", + "ntilde", + "oacute", + "ocircumflex", + "odieresis", + "ograve", + "otilde", + "scaron", + "uacute", + "ucircumflex", + "udieresis", + "ugrave", + "yacute", + "ydieresis", + "zcaron", + "exclamsmall", + "Hungarumlautsmall", + "dollaroldstyle", + "dollarsuperior", + "ampersandsmall", + "Acutesmall", + "parenleftsuperior", + "parenrightsuperior", + "twodotenleader", + "onedotenleader", + "zerooldstyle", + "oneoldstyle", + "twooldstyle", + "threeoldstyle", + "fouroldstyle", + "fiveoldstyle", + "sixoldstyle", + "sevenoldstyle", + "eightoldstyle", + "nineoldstyle", + "commasuperior", + "threequartersemdash", + "periodsuperior", + "questionsmall", + "asuperior", + "bsuperior", + "centsuperior", + "dsuperior", + "esuperior", + "isuperior", + "lsuperior", + "msuperior", + "nsuperior", + "osuperior", + "rsuperior", + "ssuperior", + "tsuperior", + "ff", + "ffi", + "ffl", + "parenleftinferior", + "parenrightinferior", + "Circumflexsmall", + "hyphensuperior", + "Gravesmall", + "Asmall", + "Bsmall", + "Csmall", + "Dsmall", + "Esmall", + "Fsmall", + "Gsmall", + "Hsmall", + "Ismall", + "Jsmall", + "Ksmall", + "Lsmall", + "Msmall", + "Nsmall", + "Osmall", + "Psmall", + "Qsmall", + "Rsmall", + "Ssmall", + "Tsmall", + "Usmall", + "Vsmall", + "Wsmall", + "Xsmall", + "Ysmall", + "Zsmall", + "colonmonetary", + "onefitted", + "rupiah", + "Tildesmall", + "exclamdownsmall", + "centoldstyle", + "Lslashsmall", + "Scaronsmall", + "Zcaronsmall", + "Dieresissmall", + "Brevesmall", + "Caronsmall", + "Dotaccentsmall", + "Macronsmall", + "figuredash", + "hypheninferior", + "Ogoneksmall", + "Ringsmall", + "Cedillasmall", + "questiondownsmall", + "oneeighth", + "threeeighths", + "fiveeighths", + "seveneighths", + "onethird", + "twothirds", + "zerosuperior", + "foursuperior", + "fivesuperior", + "sixsuperior", + "sevensuperior", + "eightsuperior", + "ninesuperior", + "zeroinferior", + "oneinferior", + "twoinferior", + "threeinferior", + "fourinferior", + "fiveinferior", + "sixinferior", + "seveninferior", + "eightinferior", + "nineinferior", + "centinferior", + "dollarinferior", + "periodinferior", + "commainferior", + "Agravesmall", + "Aacutesmall", + "Acircumflexsmall", + "Atildesmall", + "Adieresissmall", + "Aringsmall", + "AEsmall", + "Ccedillasmall", + "Egravesmall", + "Eacutesmall", + "Ecircumflexsmall", + "Edieresissmall", + "Igravesmall", + "Iacutesmall", + "Icircumflexsmall", + "Idieresissmall", + "Ethsmall", + "Ntildesmall", + "Ogravesmall", + "Oacutesmall", + "Ocircumflexsmall", + "Otildesmall", + "Odieresissmall", + "OEsmall", + "Oslashsmall", + "Ugravesmall", + "Uacutesmall", + "Ucircumflexsmall", + "Udieresissmall", + "Yacutesmall", + "Thornsmall", + "Ydieresissmall", + "001.000", + "001.001", + "001.002", + "001.003", + "Black", + "Bold", + "Book", + "Light", + "Medium", + "Regular", + "Roman", + "Semibold", + NULL +}; +const int nStdStrings = sizeof(cffnames)/sizeof(cffnames[0])-1; + +static char **readcfffontnames(FILE *ttf,int *cnt,struct ttfinfo *info) { + uint16 count = getushort(ttf); + int offsize; + uint32 *offsets; + char **names; + int i,j; + + if ( cnt!=NULL ) *cnt = count; + + if ( count==0 ) +return( NULL ); + offsets = galloc((count+1)*sizeof(uint32)); + offsize = getc(ttf); + for ( i=0; i<=count; ++i ) + offsets[i] = getoffset(ttf,offsize); + names = galloc((count+1)*sizeof(char *)); + for ( i=0; ibad_cff = true; + while ( i>4); + pt = addnibble(pt,ch&0xf); + } + } while ( pt[-1]!='\0' ); + *dval = strtod(buffer,NULL); +return( 2 ); + } else if ( ch>=32 && ch<=246 ) { + *_ival = ch-139; +return( 1 ); + } else if ( ch>=247 && ch<=250 ) { + *_ival = ((ch-247)<<8) + getc(ttf)+108; +return( 1 ); + } else if ( ch>=251 && ch<=254 ) { + *_ival = -((ch-251)<<8) - getc(ttf)-108; +return( 1 ); + } else if ( ch==28 ) { + ival = getc(ttf)<<8; + *_ival = (short) (ival | getc(ttf)); +return( 1 ); + } else if ( ch==29 ) { + /* 4 byte integers exist in dict data but not in type2 strings */ + ival = getc(ttf)<<24; + ival = ival | getc(ttf)<<16; + ival = ival | getc(ttf)<<8; + *_ival = (int) (ival | getc(ttf)); +return( 1 ); + } + LogError(_("Unexpected value in dictionary %d\n"), ch ); + info->bad_cff = true; + *_ival = 0; +return( 0 ); +} + +static void skipcfft2thing(FILE *ttf) { + /* The old CFF spec allows little type2 programs to live in the CFF dict */ + /* indices. These are designed to allow interpolation of values for mm */ + /* fonts. */ + /* The Type2 program is terminated by an "endchar" operator */ + /* I don't support this, but I shall try to skip over them properly */ + /* There's no discussion about how values move from the t2 stack to the */ + /* cff stack, as there are no examples of this, it's hard to guess */ + int ch; + +/* GT: DICT is a magic term inside CFF fonts, as is INDEX, and I guess CFF and type2 */ + LogError( _("FontForge does not support type2 programs embedded in CFF DICT INDICES.\n") ); + forever { + ch = getc(ttf); + if ( ch>=247 && ch<=254 ) + getc(ttf); /* Two byte number */ + else if ( ch==255 ) { + getc(ttf); getc(ttf); getc(ttf); getc(ttf); + /* 16.16 number */ + } else if ( ch==28 ) { + getc(ttf); + getc(ttf); + } else if ( ch==12 ) { + getc(ttf); /* Two byte operator */ + } else if ( ch==14 ) { +return; + } + } +} + +struct topdicts { + int32 cff_start; + + char *fontname; /* From Name Index */ + + int version; /* SID */ + int notice; /* SID */ + int copyright; /* SID */ + int fullname; /* SID */ + int familyname; /* SID */ + int weight; /* SID */ + int isfixedpitch; + real italicangle; + real underlinepos; + real underlinewidth; + int painttype; + int charstringtype; + real fontmatrix[6]; + int fontmatrix_set; + int uniqueid; + real fontbb[4]; + real strokewidth; + int xuid[20]; + int charsetoff; /* from start of file */ + int encodingoff; /* from start of file */ + int charstringsoff; /* from start of file */ + int private_size; + int private_offset; /* from start of file */ + int synthetic_base; /* font index */ + int postscript_code; /* SID */ + /* synthetic fonts only (whatever they are) */ + int basefontname; /* SID */ + /* Multiple master/synthetic fonts */ + real basefontblend[16]; /* delta */ /* No description of why this is relevant for mm fonts */ + /* Multiple master fonts only */ + int blendaxistypes[17]; /* SID */ + int nMasters; + int nAxes; + real weightvector[17]; + int lenBuildCharArray; /* No description of what this means */ + int NormalizeDesignVector; /* SID */ /* No description of what this does */ + int ConvertDesignVector; /* SID */ /* No description of what this does */ + /* CID fonts only */ + int ros_registry; /* SID */ + int ros_ordering; /* SID */ + int ros_supplement; + real cidfontversion; + int cidfontrevision; + int cidfonttype; + int cidcount; + int uidbase; + int fdarrayoff; /* from start of file */ + int fdselectoff; /* from start of file */ + int sid_fontname; /* SID */ +/* Private stuff */ + real bluevalues[14]; + real otherblues[10]; + real familyblues[14]; + real familyotherblues[10]; + real bluescale; + real blueshift; + real bluefuzz; + int stdhw; + int stdvw; + real stemsnaph[10]; + real stemsnapv[10]; + int forcebold; + real forceboldthreshold; + int languagegroup; + real expansionfactor; + int initialRandomSeed; + int subrsoff; /* from start of this private table */ + int defaultwidthx; + int nominalwidthx; + + struct pschars glyphs; + struct pschars local_subrs; + uint16 *charset; +}; + +static void TopDictFree(struct topdicts *dict) { + int i; + + free(dict->charset); + for ( i=0; iglyphs.cnt; ++i ) + free(dict->glyphs.values[i]); + free(dict->glyphs.values); + free(dict->glyphs.lens); + for ( i=0; ilocal_subrs.cnt; ++i ) + free(dict->local_subrs.values[i]); + free(dict->local_subrs.values); + free(dict->local_subrs.lens); + free(dict); +} + +static void readcffsubrs(FILE *ttf, struct pschars *subs, struct ttfinfo *info) { + uint16 count = getushort(ttf); + int offsize; + uint32 *offsets; + int i,j, base; + int err = false; + + memset(subs,'\0',sizeof(struct pschars)); + if ( count==0 ) +return; + subs->cnt = count; + subs->lens = galloc(count*sizeof(int)); + subs->values = galloc(count*sizeof(uint8 *)); + offsets = galloc((count+1)*sizeof(uint32)); + offsize = getc(ttf); + for ( i=0; i<=count; ++i ) + offsets[i] = getoffset(ttf,offsize); + base = ftell(ttf)-1; + for ( i=0; ioffsets[i] && offsets[i+1]-offsets[i]<0x10000 ) { + subs->lens[i] = offsets[i+1]-offsets[i]; + subs->values[i] = galloc(offsets[i+1]-offsets[i]+1); + for ( j=0; j<(int)(offsets[i+1]-offsets[i]); ++j ) + subs->values[i][j] = getc(ttf); + subs->values[i][j] = '\0'; + } else { + if ( !err ) + LogError( _("Bad subroutine INDEX in cff font.\n" )); + info->bad_cff = true; + err = true; + subs->lens[i] = 1; + subs->values[i] = galloc(2); + subs->values[i][0] = 11; /* return */ + subs->values[i][1] = '\0'; + fseek(ttf,base+offsets[i+1],SEEK_SET); + } + } + free(offsets); +} + +static struct topdicts *readcfftopdict(FILE *ttf, char *fontname, int len, + struct ttfinfo *info) { + struct topdicts *td = gcalloc(1,sizeof(struct topdicts)); + long base = ftell(ttf); + int ival, oval, sp, ret, i; + real stack[50]; + + if ( fontname!=NULL ) + ValidatePostScriptFontName(info,fontname); + + td->fontname = fontname; + td->underlinepos = -100; + td->underlinewidth = 50; + td->charstringtype = 2; + td->fontmatrix[0] = td->fontmatrix[3] = .001; + + td->notice = td->copyright = td->fullname = td->familyname = td->weight = td->version = -1; + td->postscript_code = td->basefontname = -1; + td->synthetic_base = td->ros_registry = -1; + td->fdarrayoff = td->fdselectoff = td->sid_fontname = -1; + td->blendaxistypes[0] = -1; + + /* Multiple master fonts can have Type2 operators here, particularly */ + /* blend operators. We're ignoring that */ + while ( ftell(ttf)bad_cff = true; + } else if ( ret==3 ) switch( oval ) { + case 0: + td->version = stack[sp-1]; + break; + case 1: + td->notice = stack[sp-1]; + break; + case (12<<8)+0: + td->copyright = stack[sp-1]; + break; + case 2: + td->fullname = stack[sp-1]; + break; + case 3: + td->familyname = stack[sp-1]; + break; + case 4: + td->weight = stack[sp-1]; + break; + case (12<<8)+1: + td->isfixedpitch = stack[sp-1]; + break; + case (12<<8)+2: + td->italicangle = stack[sp-1]; + break; + case (12<<8)+3: + td->underlinepos = stack[sp-1]; + break; + case (12<<8)+4: + td->underlinewidth = stack[sp-1]; + break; + case (12<<8)+5: + td->painttype = stack[sp-1]; + break; + case (12<<8)+6: + td->charstringtype = stack[sp-1]; + break; + case (12<<8)+7: + memcpy(td->fontmatrix,stack,(sp>=6?6:sp)*sizeof(real)); + td->fontmatrix_set = 1; + break; + case 13: + td->uniqueid = stack[sp-1]; + break; + case 5: + memcpy(td->fontbb,stack,(sp>=4?4:sp)*sizeof(real)); + break; + case (12<<8)+8: + td->strokewidth = stack[sp-1]; + break; + case 14: + for ( i=0; ixuid[i] = stack[i]; + break; + case 15: + td->charsetoff = stack[sp-1]; + break; + case 16: + td->encodingoff = stack[sp-1]; + break; + case 17: + td->charstringsoff = stack[sp-1]; + break; + case 18: + td->private_size = stack[0]; + td->private_offset = stack[1]; + break; + case (12<<8)+20: + LogError( _("FontForge does not support synthetic fonts\n") ); + td->synthetic_base = stack[sp-1]; + break; + case (12<<8)+21: + td->postscript_code = stack[sp-1]; + break; + case (12<<8)+22: + td->basefontname = stack[sp-1]; + break; + case (12<<8)+23: + for ( i=0; ibasefontblend[i] = stack[i]; + break; + case (12<<8)+24: + LogError( _("FontForge does not support type2 multiple master fonts\n") ); + info->bad_cff = true; + td->nMasters = stack[0]; + td->nAxes = sp-4; + memcpy(td->weightvector,stack+1,(sp-4)*sizeof(real)); + td->lenBuildCharArray = stack[sp-3]; + td->NormalizeDesignVector = stack[sp-2]; /* These are type2 charstrings, even in type1 fonts */ + td->ConvertDesignVector = stack[sp-1]; + break; + case (12<<8)+26: + for ( i=0; iblendaxistypes[i] = stack[i]; + td->blendaxistypes[i] = -1; + break; + case (12<<8)+30: + td->ros_registry = stack[0]; + td->ros_ordering = stack[1]; + td->ros_supplement = stack[2]; + break; + case (12<<8)+31: + td->cidfontversion = stack[sp-1]; + break; + case (12<<8)+32: + td->cidfontrevision = stack[sp-1]; + break; + case (12<<8)+33: + td->cidfonttype = stack[sp-1]; + break; + case (12<<8)+34: + td->cidcount = stack[sp-1]; + break; + case (12<<8)+35: + td->uidbase = stack[sp-1]; + break; + case (12<<8)+36: + td->fdarrayoff = stack[sp-1]; + break; + case (12<<8)+37: + td->fdselectoff = stack[sp-1]; + break; + case (12<<8)+38: + td->sid_fontname = stack[sp-1]; + break; + case (12<<8)+39: + LogError(_("FontForge does not support Chameleon fonts\n"));; + break; + default: + LogError(_("Unknown operator in %s: %x\n"), fontname, oval ); + info->bad_cff = true; + break; + } + } +return( td ); +} + +static void readcffprivate(FILE *ttf, struct topdicts *td, struct ttfinfo *info) { + int ival, oval, sp, ret, i; + real stack[50]; + int32 end = td->cff_start+td->private_offset+td->private_size; + + fseek(ttf,td->cff_start+td->private_offset,SEEK_SET); + + td->subrsoff = -1; + td->expansionfactor = .06; + td->bluefuzz = 1; + td->blueshift = 7; + td->bluescale = .039625; + + while ( ftell(ttf)bad_cff = true; + } else if ( ret==3 ) switch( oval ) { + case 6: + for ( i=0; ibluevalues[i] = stack[i]; + if ( i!=0 ) + td->bluevalues[i] += td->bluevalues[i-1]; + } + break; + case 7: + for ( i=0; iotherblues[i] = stack[i]; + if ( i!=0 ) + td->otherblues[i] += td->otherblues[i-1]; + } + break; + case 8: + for ( i=0; ifamilyblues[i] = stack[i]; + if ( i!=0 ) + td->familyblues[i] += td->familyblues[i-1]; + } + break; + case 9: + for ( i=0; ifamilyotherblues[i] = stack[i]; + if ( i!=0 ) + td->familyotherblues[i] += td->familyotherblues[i-1]; + } + break; + case (12<<8)+9: + td->bluescale = stack[sp-1]; + break; + case (12<<8)+10: + td->blueshift = stack[sp-1]; + break; + case (12<<8)+11: + td->bluefuzz = stack[sp-1]; + break; + case 10: + td->stdhw = stack[sp-1]; + break; + case 11: + td->stdvw = stack[sp-1]; + break; + case (12<<8)+12: + for ( i=0; istemsnaph[i] = stack[i]; + if ( i!=0 ) + td->stemsnaph[i] += td->stemsnaph[i-1]; + } + break; + case (12<<8)+13: + for ( i=0; istemsnapv[i] = stack[i]; + if ( i!=0 ) + td->stemsnapv[i] += td->stemsnapv[i-1]; + } + break; + case (12<<8)+14: + td->forcebold = stack[sp-1]; + break; + case (12<<8)+15: /* obsolete */ + td->forceboldthreshold = stack[sp-1]; + break; + case (12<<8)+16: + /* lenIV. -1 => unencrypted charstrings */ + /* obsolete */ + break; + case (12<<8)+17: + td->languagegroup = stack[sp-1]; + break; + case (12<<8)+18: + td->expansionfactor = stack[sp-1]; + break; + case (12<<8)+19: + td->initialRandomSeed = stack[sp-1]; + break; + case 19: + td->subrsoff = stack[sp-1]; + break; + case 20: + td->defaultwidthx = stack[sp-1]; + break; + case 21: + td->nominalwidthx = stack[sp-1]; + break; + default: + LogError(_("Unknown operator in %s: %x\n"), td->fontname, oval ); + info->bad_cff = true; + break; + } + } + + if ( td->subrsoff!=-1 ) { + fseek(ttf,td->cff_start+td->private_offset+td->subrsoff,SEEK_SET); + readcffsubrs(ttf,&td->local_subrs,info); + } +} + +static struct topdicts **readcfftopdicts(FILE *ttf, char **fontnames, int32 cff_start, + struct ttfinfo *info, struct topdicts *parent_dict) { + uint16 count = getushort(ttf); + int offsize; + uint32 *offsets; + struct topdicts **dicts; + int i; + + if ( count==0 ) +return( NULL ); + offsets = galloc((count+1)*sizeof(uint32)); + offsize = getc(ttf); + for ( i=0; i<=count; ++i ) + offsets[i] = getoffset(ttf,offsize); + dicts = galloc((count+1)*sizeof(struct topdicts *)); + for ( i=0; ifontmatrix_set ) { + MatMultiply(parent_dict->fontmatrix,dicts[i]->fontmatrix,dicts[i]->fontmatrix); + } + dicts[i]->cff_start = cff_start; + } + dicts[i] = NULL; + free(offsets); +return( dicts ); +} + +static const char *getsid(int sid,char **strings,int scnt,struct ttfinfo *info) { + if ( sid==-1 ) +return( NULL ); + else if ( sidscnt ) { + LogError( _("Bad sid %d (must be less than %d)\n"), sid, scnt+nStdStrings ); + if ( info!=NULL ) info->bad_cff = true; +return( NULL ); + } else +return( strings[sid-nStdStrings]); +} + +/* I really expect to deal with encodings in ttf cmap, but ocasionally we */ +/* get a bare cff */ +static void readcffenc(FILE *ttf,struct topdicts *dict,struct ttfinfo *info, + char **strings, int scnt) { + int format, cnt, i, j, pos, first, last, dupenc, sid; + extern char *AdobeStandardEncoding[], *AdobeExpertEncoding[]; + const char *name; + EncMap *map; + + if ( info->encoding_start!=0 ) /* Use the cmap instead */ +return; + if ( info->subfontcnt!=0 ) +return; /* Use cids instead */ + + for ( i=0; iglyph_cnt; ++i ) { + if ( info->chars[i]->unicodeenc==-1 ) + info->chars[i]->unicodeenc = UniFromName(info->chars[i]->name,ui_none,&custom); + } + + map = EncMapNew(256,256,&custom); + if ( dict->encodingoff==0 || dict->encodingoff==1 ) { + /* Standard Encodings */ + char **enc = dict->encodingoff==0 ? AdobeStandardEncoding : AdobeExpertEncoding; + map->enc = FindOrMakeEncoding( dict->encodingoff==0 ? + "AdobeStandard" : "Custom" ); + if ( map->enc==NULL ) + map->enc = &custom; + for ( i=0; iglyph_cnt; ++i ) { + for ( pos=0; pos<256; ++pos ) + if ( strcmp(info->chars[i]->name,enc[pos])==0 ) + break; + if ( pos<256 ) + map->map[pos] = i; + } + } else { + fseek(ttf,dict->cff_start+dict->encodingoff,SEEK_SET); + format = getc(ttf); + if ( (format&0x7f)==0 ) { + cnt = getc(ttf); + for ( i=1; i<=cnt && iglyph_cnt; ++i ) + map->map[getc(ttf)] = i; + } else if ( (format&0x7f)==1 ) { + cnt = getc(ttf); + pos = 0; + for ( i=0; iglyph_cnt ) + map->map[first] = pos; + ++pos; + ++first; + } + } + } else { + LogError( _("Unexpected encoding format in cff: %d\n"), format ); + if ( info!=NULL ) info->bad_cff = true; + } + if ( format&0x80 ) { + cnt = getc(ttf); + for ( i=0; iglyph_cnt; ++j ) + if ( strcmp(name,info->chars[j]->name)==0 ) + break; + if ( j!=info->glyph_cnt ) + map->map[dupenc] = j; + } + } + } + info->map = map; +} + +static void readcffset(FILE *ttf,struct topdicts *dict,struct ttfinfo *info) { + int len = dict->glyphs.cnt; + int i; + int format, cnt, j, first; + + i = 0; + if ( dict->charsetoff==0 ) { + /* ISO Adobe charset */ + dict->charset = galloc(len*sizeof(uint16)); + for ( i=0; icharset[i] = i; + } else if ( dict->charsetoff==1 ) { + /* Expert charset */ + dict->charset = galloc((len<162?162:len)*sizeof(uint16)); + dict->charset[0] = 0; /* .notdef */ + dict->charset[1] = 1; + for ( i=2; icharset[i] = i+227; + dict->charset[12] = 13; + dict->charset[13] = 14; + dict->charset[14] = 15; + dict->charset[15] = 99; + for ( i=16; icharset[i] = i+223; + dict->charset[25] = 27; + dict->charset[26] = 28; + for ( i=27; icharset[i] = i+222; + dict->charset[44] = 109; + dict->charset[45] = 110; + for ( i=46; icharset[i] = i+221; + dict->charset[96] = 158; + dict->charset[97] = 155; + dict->charset[98] = 163; + for ( i=99; icharset[i] = i+220; + dict->charset[107] = 150; + dict->charset[108] = 164; + dict->charset[109] = 169; + for ( i=110; icharset[i] = i+217; + } else if ( dict->charsetoff==2 ) { + /* Expert subset charset */ + dict->charset = galloc((len<130?130:len)*sizeof(uint16)); + dict->charset[0] = 0; /* .notdef */ + dict->charset[1] = 1; + for ( i=2; icharset[i] = i+227; + dict->charset[12] = 13; + dict->charset[13] = 14; + dict->charset[14] = 15; + dict->charset[15] = 99; + for ( i=16; icharset[i] = i+223; + dict->charset[25] = 27; + dict->charset[26] = 28; + for ( i=27; icharset[i] = i+222; + dict->charset[44] = 109; + dict->charset[45] = 110; + for ( i=46; icharset[i] = i+221; + dict->charset[51] = 300; + dict->charset[52] = 301; + dict->charset[53] = 302; + dict->charset[54] = 305; + dict->charset[55] = 314; + dict->charset[56] = 315; + dict->charset[57] = 158; + dict->charset[58] = 155; + dict->charset[59] = 163; + for ( i=60; icharset[i] = i+260; + dict->charset[67] = 150; + dict->charset[68] = 164; + dict->charset[69] = 169; + for ( i=110; icharset[i] = i+217; + } else { + dict->charset = galloc(len*sizeof(uint16)); + dict->charset[0] = 0; /* .notdef */ + fseek(ttf,dict->cff_start+dict->charsetoff,SEEK_SET); + format = getc(ttf); + if ( format==0 ) { + for ( i=1; icharset[i] = getushort(ttf); + } else if ( format==1 ) { + for ( i = 1; icharset[i++] = getushort(ttf); + cnt = getc(ttf); + for ( j=0; jcharset[i++] = ++first; + } + } else if ( format==2 ) { + for ( i = 1; icharset[i++] = getushort(ttf); + cnt = getushort(ttf); + for ( j=0; jcharset[i++] = ++first; + } + } else { + LogError( _("Unexpected charset format in cff: %d\n"), format ); + if ( info!=NULL ) info->bad_cff = true; + } + } + while ( icharset[i++] = 0; +} + +static uint8 *readfdselect(FILE *ttf,int numglyphs,struct ttfinfo *info) { + uint8 *fdselect = gcalloc(numglyphs,sizeof(uint8)); + int i, j, format, nr, first, end, fd; + + format = getc(ttf); + if ( format==0 ) { + for ( i=0; i=numglyphs ) { + LogError( _("Bad fdselect\n") ); + if ( info!=NULL ) info->bad_cff = true; + } else + fdselect[j] = fd; + } + first = end; + } + } else { + LogError( _("Didn't understand format for fdselect %d\n"), format ); + if ( info!=NULL ) info->bad_cff = true; + } +return( fdselect ); +} + + +static char *intarray2str(int *array, int size) { + int i,j; + char *pt, *ret; + + for ( i=size-1; i>=0 && array[i]==0; --i ); + if ( i==-1 ) +return( NULL ); + ret = pt = galloc((i+1)*12+12); + *pt++ = '['; + for ( j=0; j<=i; ++j ) { + sprintf( pt, "%d ", array[j]); + pt += strlen(pt); + } + pt[-1]=']'; +return( ret ); +} + +static char *realarray2str(real *array, int size, int must_be_even) { + int i,j; + char *pt, *ret; + + for ( i=size-1; i>=0 && array[i]==0; --i ); + if ( i==-1 ) +return( NULL ); + if ( must_be_even && !(i&1) && array[i]<0 ) + ++i; /* Someone gave us a bluevalues of [-20 0] and we reported [-20] */ + ret = pt = galloc((i+1)*20+12); + *pt++ = '['; + for ( j=0; j<=i; ++j ) { + sprintf( pt, "%g ", (double) array[j]); + pt += strlen(pt); + } + pt[-1]=']'; +return( ret ); +} + +static void privateadd(struct psdict *private,char *key,char *value) { + if ( value==NULL ) +return; + private->keys[private->next] = copy(key); + private->values[private->next++] = value; +} + +static void privateaddint(struct psdict *private,char *key,int val) { + char buf[10]; + if ( val==0 ) +return; + sprintf( buf,"%d", val ); + privateadd(private,key,copy(buf)); +} + +static void privateaddintarray(struct psdict *private,char *key,int val) { + char buf[10]; + if ( val==0 ) +return; + sprintf( buf,"[%d]", val ); + privateadd(private,key,copy(buf)); +} + +static void privateaddreal(struct psdict *private,char *key,double val,double def) { + char buf[10]; + if ( val==def ) +return; + sprintf( buf,"%g", val ); + privateadd(private,key,copy(buf)); +} + +static void cffprivatefillup(struct psdict *private, struct topdicts *dict) { + private->cnt = 14; + private->keys = galloc(14*sizeof(char *)); + private->values = galloc(14*sizeof(char *)); + privateadd(private,"BlueValues", + realarray2str(dict->bluevalues,sizeof(dict->bluevalues)/sizeof(dict->bluevalues[0]),true)); + privateadd(private,"OtherBlues", + realarray2str(dict->otherblues,sizeof(dict->otherblues)/sizeof(dict->otherblues[0]),true)); + privateadd(private,"FamilyBlues", + realarray2str(dict->familyblues,sizeof(dict->familyblues)/sizeof(dict->familyblues[0]),true)); + privateadd(private,"FamilyOtherBlues", + realarray2str(dict->familyotherblues,sizeof(dict->familyotherblues)/sizeof(dict->familyotherblues[0]),true)); + privateaddreal(private,"BlueScale",dict->bluescale,0.039625); + privateaddreal(private,"BlueShift",dict->blueshift,7); + privateaddreal(private,"BlueFuzz",dict->bluefuzz,1); + privateaddintarray(private,"StdHW",dict->stdhw); + privateaddintarray(private,"StdVW",dict->stdvw); + privateadd(private,"StemSnapH", + realarray2str(dict->stemsnaph,sizeof(dict->stemsnaph)/sizeof(dict->stemsnaph[0]),false)); + privateadd(private,"StemSnapV", + realarray2str(dict->stemsnapv,sizeof(dict->stemsnapv)/sizeof(dict->stemsnapv[0]),false)); + if ( dict->forcebold ) + privateadd(private,"ForceBold",copy("true")); + if ( dict->forceboldthreshold!=0 ) + privateaddreal(private,"ForceBoldThreshold",dict->forceboldthreshold,0); + privateaddint(private,"LanguageGroup",dict->languagegroup); + privateaddreal(private,"ExpansionFactor",dict->expansionfactor,0.06); +} + +static SplineFont *cffsffillup(struct topdicts *subdict, char **strings, + int scnt, struct ttfinfo *info) { + SplineFont *sf = SplineFontEmpty(); + int emsize; + static int nameless; + + sf->fontname = utf8_verify_copy(getsid(subdict->sid_fontname,strings,scnt,info)); + if ( sf->fontname==NULL ) { + char buffer[40]; + sprintf(buffer,"UntitledSubFont_%d", ++nameless ); + sf->fontname = copy(buffer); + } + + if ( subdict->fontmatrix[0]==0 ) + emsize = 1000; + else + emsize = rint( 1/subdict->fontmatrix[0] ); + sf->ascent = .8*emsize; + sf->descent = emsize - sf->ascent; + if ( subdict->copyright!=-1 ) + sf->copyright = utf8_verify_copy(getsid(subdict->copyright,strings,scnt,info)); + else + sf->copyright = utf8_verify_copy(getsid(subdict->notice,strings,scnt,info)); + sf->familyname = utf8_verify_copy(getsid(subdict->familyname,strings,scnt,info)); + sf->fullname = utf8_verify_copy(getsid(subdict->fullname,strings,scnt,info)); + sf->weight = utf8_verify_copy(getsid(subdict->weight,strings,scnt,info)); + sf->version = utf8_verify_copy(getsid(subdict->version,strings,scnt,info)); + sf->italicangle = subdict->italicangle; + sf->upos = subdict->underlinepos; + sf->uwidth = subdict->underlinewidth; + sf->xuid = intarray2str(subdict->xuid,sizeof(subdict->xuid)/sizeof(subdict->xuid[0])); + sf->uniqueid = subdict->uniqueid; + sf->strokewidth = subdict->strokewidth; + sf->strokedfont = subdict->painttype==2; + + if ( subdict->private_size>0 ) { + sf->private = gcalloc(1,sizeof(struct psdict)); + cffprivatefillup(sf->private,subdict); + } +return( sf ); +} + +static void cffinfofillup(struct ttfinfo *info, struct topdicts *dict, + char **strings, int scnt ) { + + info->glyph_cnt = dict->glyphs.cnt; + if ( info->glyph_cnt<0 ) info->glyph_cnt = 0; + + if ( dict->fontmatrix[0]==0 ) + info->emsize = 1000; + else + info->emsize = rint( 1/dict->fontmatrix[0] ); +#if 1 + info->ascent = .8*info->emsize; +#else + info->ascent = dict->fontbb[3]*info->emsize/(dict->fontbb[3]-dict->fontbb[1]); +#endif + info->descent = info->emsize - info->ascent; + if ( dict->copyright!=-1 || dict->notice!=-1 ) + free( info->copyright ); + if ( dict->copyright!=-1 ) + info->copyright = utf8_verify_copy(getsid(dict->copyright,strings,scnt,info)); + else if ( dict->notice!=-1 ) + info->copyright = utf8_verify_copy(getsid(dict->notice,strings,scnt,info)); + if ( dict->familyname!=-1 ) { + free(info->familyname); + info->familyname = utf8_verify_copy(getsid(dict->familyname,strings,scnt,info)); + } + if ( dict->fullname!=-1 ) { + free(info->fullname); + info->fullname = utf8_verify_copy(getsid(dict->fullname,strings,scnt,info)); + } + if ( dict->weight!=-1 ) { + free(info->weight); + info->weight = utf8_verify_copy(getsid(dict->weight,strings,scnt,info)); + } + if ( dict->version!=-1 ) { + free(info->version); + info->version = utf8_verify_copy(getsid(dict->version,strings,scnt,info)); + } + if ( dict->fontname!=NULL ) { + free(info->fontname); + info->fontname = utf8_verify_copy(dict->fontname); + } + info->italicAngle = dict->italicangle; + info->upos = dict->underlinepos; + info->uwidth = dict->underlinewidth; + info->xuid = intarray2str(dict->xuid,sizeof(dict->xuid)/sizeof(dict->xuid[0])); + info->uniqueid = dict->uniqueid; + info->strokewidth = dict->strokewidth; + info->strokedfont = dict->painttype==2; + + if ( dict->private_size>0 ) { + info->private = gcalloc(1,sizeof(struct psdict)); + cffprivatefillup(info->private,dict); + } + if ( dict->ros_registry!=-1 ) { + info->cidregistry = copy(getsid(dict->ros_registry,strings,scnt,info)); + info->ordering = copy(getsid(dict->ros_ordering,strings,scnt,info)); + info->supplement = dict->ros_supplement; + info->cidfontversion = dict->cidfontversion; + } +} + +static void cfffigure(struct ttfinfo *info, struct topdicts *dict, + char **strings, int scnt, struct pschars *gsubrs) { + int i, cstype; + struct pschars *subrs; + struct pscontext pscontext; + memset(&pscontext,0,sizeof(pscontext)); + + cffinfofillup(info, dict, strings, scnt ); + +/* The format allows for some dicts that are type1 strings and others that */ +/* are type2s. Which means that the global subrs will have a different bias */ +/* as we flip from font to font. So we can't set the bias when we read in */ +/* the subrs but must wait until we know which font we're working on. */ + cstype = dict->charstringtype; + pscontext.is_type2 = cstype-1; + pscontext.painttype = dict->painttype; + gsubrs->bias = cstype==1 ? 0 : + gsubrs->cnt < 1240 ? 107 : + gsubrs->cnt <33900 ? 1131 : 32768; + subrs = &dict->local_subrs; + subrs->bias = cstype==1 ? 0 : + subrs->cnt < 1240 ? 107 : + subrs->cnt <33900 ? 1131 : 32768; + + info->chars = gcalloc(info->glyph_cnt,sizeof(SplineChar *)); + for ( i=0; iglyph_cnt; ++i ) { + info->chars[i] = PSCharStringToSplines( + dict->glyphs.values[i], dict->glyphs.lens[i],&pscontext, + subrs,gsubrs,getsid(dict->charset[i],strings,scnt,info)); + info->chars[i]->vwidth = info->emsize; + if ( cstype==2 ) { + if ( info->chars[i]->width == (int16) 0x8000 ) + info->chars[i]->width = dict->defaultwidthx; + else + info->chars[i]->width += dict->nominalwidthx; + } + } + /* Need to do a reference fixup here !!!!! just in case some idiot */ + /* used type1 char strings -- or used the depreciated meaning of */ + /* endchar (==seac) */ +} + +static void cidfigure(struct ttfinfo *info, struct topdicts *dict, + char **strings, int scnt, struct pschars *gsubrs, struct topdicts **subdicts, + uint8 *fdselect) { + int i, j, cstype, uni, cid; + struct pschars *subrs; + SplineFont *sf; + struct cidmap *map; + char buffer[100]; + struct pscontext pscontext; + EncMap *encmap = NULL; + + memset(&pscontext,0,sizeof(pscontext)); + + cffinfofillup(info, dict, strings, scnt ); + + /* We'll set the encmap later */ + /*info->map = encmap = EncMapNew(info->glyph_cnt,info->glyph_cnt,&custom);*/ + + for ( j=0; subdicts[j]!=NULL; ++j ); + info->subfontcnt = j; + info->subfonts = gcalloc(j+1,sizeof(SplineFont *)); + for ( j=0; subdicts[j]!=NULL; ++j ) { + info->subfonts[j] = cffsffillup(subdicts[j],strings,scnt,info); + info->subfonts[j]->map = encmap; + } + for ( i=0; iglyph_cnt; ++i ) { + sf = info->subfonts[ fdselect[i] ]; + cid = dict->charset[i]; + if ( cid>=sf->glyphcnt ) sf->glyphcnt = sf->glyphmax = cid+1; + /*if ( cid>=encmap->enccount ) encmap->enccount = cid+1;*/ + } + for ( j=0; subdicts[j]!=NULL; ++j ) + info->subfonts[j]->glyphs = gcalloc(info->subfonts[j]->glyphcnt,sizeof(SplineChar *)); + /*encmap->encmax = encmap->enccount;*/ + /*encmap->map = galloc(encmap->enccount*sizeof(int));*/ + /*memset(encmap->map,-1,encmap->enccount*sizeof(int));*/ + + info->chars = gcalloc(info->glyph_cnt,sizeof(SplineChar *)); + + /* info->chars provides access to the chars ordered by glyph, which the */ + /* ttf routines care about */ + /* sf->glyphs provides access to the chars ordered by CID. Not sure what */ + /* would happen to a kern from one font to another... */ + + map = FindCidMap(info->cidregistry,info->ordering,info->supplement,NULL); + + for ( i=0; iglyph_cnt; ++i ) { + j = fdselect[i]; + sf = info->subfonts[ j ]; +/* The format allows for some dicts that are type1 strings and others that */ +/* are type2s. Which means that the global subrs will have a different bias */ +/* as we flip from font to font. So we can't set the bias when we read in */ +/* the subrs but must wait until we know which font we're working on. */ + cstype = subdicts[j]->charstringtype; + pscontext.is_type2 = cstype-1; + pscontext.painttype = subdicts[j]->painttype; + gsubrs->bias = cstype==1 ? 0 : + gsubrs->cnt < 1240 ? 107 : + gsubrs->cnt <33900 ? 1131 : 32768; + subrs = &subdicts[j]->local_subrs; + subrs->bias = cstype==1 ? 0 : + subrs->cnt < 1240 ? 107 : + subrs->cnt <33900 ? 1131 : 32768; + + cid = dict->charset[i]; + /*encmap->map[cid] = cid;*/ + uni = CID2NameUni(map,cid,buffer,sizeof(buffer)); + info->chars[i] = PSCharStringToSplines( + dict->glyphs.values[i], dict->glyphs.lens[i],&pscontext, + subrs,gsubrs,buffer); + info->chars[i]->vwidth = sf->ascent+sf->descent; + info->chars[i]->unicodeenc = uni; + sf->glyphs[cid] = info->chars[i]; + sf->glyphs[cid]->parent = sf; + sf->glyphs[cid]->orig_pos = cid; /* Bug! should be i, but I assume sf->chars[orig_pos]->orig_pos==orig_pos */ + if ( sf->glyphs[cid]->layers[ly_fore].refs!=NULL ) + IError( "Reference found in CID font. Can't fix it up"); + + THPatchSplineChar(sf->glyphs[cid]); + + if ( cstype==2 ) { + if ( sf->glyphs[cid]->width == (int16) 0x8000 ) + sf->glyphs[cid]->width = subdicts[j]->defaultwidthx; + else + sf->glyphs[cid]->width += subdicts[j]->nominalwidthx; + } + ff_progress_next(); + } + /* No need to do a reference fixup here-- the chars aren't associated */ + /* with any encoding as is required for seac */ +} + +static int readcffglyphs(FILE *ttf,struct ttfinfo *info) { + int offsize; + int hdrsize; + char **fontnames, **strings; + struct topdicts **dicts, **subdicts; + int i, j, which; + struct pschars gsubs; + uint8 *fdselect; + int scnt; + + fseek(ttf,info->cff_start,SEEK_SET); + if ( getc(ttf)!='\1' ) { /* Major version */ + LogError( _("CFF version mismatch\n" )); + info->bad_cff = true; +return( 0 ); + } + getc(ttf); /* Minor version */ + hdrsize = getc(ttf); + offsize = getc(ttf); + if ( hdrsize!=4 ) + fseek(ttf,info->cff_start+hdrsize,SEEK_SET); + fontnames = readcfffontnames(ttf,NULL,info); + which = 0; + if ( fontnames[1]!=NULL ) { /* More than one? Can that even happen in OpenType? */ + which = PickCFFFont(fontnames); + if ( which==-1 ) { + for ( i=0; fontnames[i]!=NULL; ++i ) + free(fontnames[i]); + free(fontnames); +return( 0 ); + } + } + dicts = readcfftopdicts(ttf,fontnames,info->cff_start,info, NULL); + /* String index is just the same as fontname index */ + strings = readcfffontnames(ttf,&scnt,info); + readcffsubrs(ttf,&gsubs,info ); + /* Can be many fonts here. Only decompose the one */ + if ( dicts[which]->charstringsoff!=-1 ) { + fseek(ttf,info->cff_start+dicts[which]->charstringsoff,SEEK_SET); + readcffsubrs(ttf,&dicts[which]->glyphs,info); + } + if ( dicts[which]->private_offset!=-1 ) + readcffprivate(ttf,dicts[which],info); + if ( dicts[which]->charsetoff!=-1 ) + readcffset(ttf,dicts[which],info); + if ( dicts[which]->fdarrayoff==-1 ) + cfffigure(info,dicts[which],strings,scnt,&gsubs); + else { + fseek(ttf,info->cff_start+dicts[which]->fdarrayoff,SEEK_SET); + subdicts = readcfftopdicts(ttf,NULL,info->cff_start,info,dicts[which]); + fseek(ttf,info->cff_start+dicts[which]->fdselectoff,SEEK_SET); + fdselect = readfdselect(ttf,dicts[which]->glyphs.cnt,info); + for ( j=0; subdicts[j]!=NULL; ++j ) { + if ( subdicts[j]->private_offset!=-1 ) + readcffprivate(ttf,subdicts[j],info); + if ( subdicts[j]->charsetoff!=-1 ) + readcffset(ttf,subdicts[j],info); + } + cidfigure(info,dicts[which],strings,scnt,&gsubs,subdicts,fdselect); + for ( j=0; subdicts[j]!=NULL; ++j ) + TopDictFree(subdicts[j]); + free(subdicts); free(fdselect); + } + if ( dicts[which]->encodingoff!=-1 ) + readcffenc(ttf,dicts[which],info,strings,scnt); + + if ( dicts[which]->fdarrayoff==-1 ) { + for ( i=0; iglyph_cnt ; ++i ) + if ( info->chars[i]!=NULL ) + info->chars[i]->orig_pos = i; + } + + if ( info->to_order2 ) { + for ( i=0; iglyph_cnt; ++i ) + SCConvertToOrder2(info->chars[i]); + } + + for ( i=0; fontnames[i]!=NULL && i<1; ++i ) { + free(fontnames[i]); + TopDictFree(dicts[i]); + } + free(fontnames); free(dicts); + if ( strings!=NULL ) { + for ( i=0; strings[i]!=NULL; ++i ) + free(strings[i]); + free(strings); + } + for ( i=0; ityp1_start,SEEK_SET); +/* There appear to be about 20 bytes of garbage (well, I don't know what they */ +/* mean, so they are garbage to me) before the start of the PostScript. But */ +/* it's not exactly 20. I've seen 22 and 24. So see if we can find "%!PS-Adobe" */ +/* in the first few bytes of the file, and skip to there if found */ + { char buffer[41]; + fread(buffer,1,sizeof(buffer),ttf); + buffer[40] = '\0'; + for ( i=39; i>=0; --i ) + if ( buffer[i]=='%' && buffer[i+1]=='!' ) + break; + if ( i<0 ) + i = 0; + fseek(ttf,info->typ1_start+i,SEEK_SET); + } + + tmp = tmpfile(); + for ( i=0; i<(int)info->typ1_length; ++i ) + putc(getc(ttf),tmp); + rewind(tmp); + fd = _ReadPSFont(tmp); + fclose(tmp); + if ( fd!=NULL ) { + SplineFont *sf = SplineFontFromPSFont(fd); + PSFontFree(fd); + info->emsize = (sf->ascent+sf->descent); + info->ascent = sf->ascent; + info->descent = sf->descent; + if ( sf->subfontcnt!=0 ) { + info->subfontcnt = sf->subfontcnt; + info->subfonts = sf->subfonts; + info->cidregistry = copy(sf->cidregistry); + info->ordering = copy(sf->ordering); + info->supplement = sf->supplement; + info->cidfontversion = sf->cidversion; + sf->subfonts = NULL; + sf->subfontcnt = 0; + } else { + info->chars = sf->glyphs; + info->glyph_cnt = sf->glyphcnt; + for ( i=sf->glyphcnt-1; i>=0; --i ) if ( (sc=sf->glyphs[i])!=NULL ) + sc->parent = NULL; + sf->glyphs = NULL; + sf->glyphcnt = 0; + } + SplineFontFree(sf); +return( true ); + } +return( false ); +} + +static void readttfwidths(FILE *ttf,struct ttfinfo *info) { + int i,j; + int lastwidth = info->emsize, lsb; + /* I'm not interested in the lsb, I'm not sure what it means if it differs*/ + /* from that is specified in the outline. Do we move the outline? */ + /* Ah... I am interested in it if bit 1 of 'head'.flags is set, then we */ + /* do move the outline */ + int check_width_consistency = info->cff_start!=0 && info->glyph_start==0; + SplineChar *sc; + real trans[6]; + + memset(trans,0,sizeof(trans)); + trans[0] = trans[3] = 1; + + fseek(ttf,info->hmetrics_start,SEEK_SET); + for ( i=0; iwidth_cnt && iglyph_cnt; ++i ) { + lastwidth = getushort(ttf); + lsb = (short) getushort(ttf); + if ( (sc = info->chars[i])!=NULL ) { /* can happen in ttc files */ + if ( check_width_consistency && sc->width!=lastwidth ) { + if ( info->fontname!=NULL && sc->name!=NULL ) + LogError("In %s, in glyph %s, 'CFF ' advance width (%d) and\n 'hmtx' width (%d) do not match. (Subsequent mismatches will not be reported)\n", + info->fontname, sc->name, sc->width, lastwidth ); + else + LogError("In GID %d, 'CFF ' advance width (%d) and 'hmtx' width (%d) do not match.\n (Subsequent mismatches will not be reported)\n", + i, sc->width, lastwidth ); + info->bad_metrics = true; + check_width_consistency = false; + } + sc->width = lastwidth; + sc->widthset = true; + if ( info->apply_lsb ) { + if ( sc->lsidebearing!=lsb ) { + trans[4] = lsb-sc->lsidebearing; + SplinePointListTransform(sc->layers[ly_fore].splines,trans,true); + } + } + } + } + if ( i==0 ) { + LogError( _("Invalid ttf hmtx table (or hhea), numOfLongMetrics is 0\n") ); + info->bad_metrics = true; + } + + for ( j=i; jglyph_cnt; ++j ) { + if ( (sc = info->chars[j])!=NULL ) { /* In a ttc file we may skip some */ + sc->width = lastwidth; + sc->widthset = true; + if ( info->apply_lsb ) { + lsb = (short) getushort(ttf); + if ( sc->lsidebearing!=lsb ) { + trans[4] = lsb-sc->lsidebearing; + SplinePointListTransform(sc->layers[ly_fore].splines,trans,true); + } + } + } + } +} + +static void dummywidthsfromstrike(FILE *ttf,struct ttfinfo *info) { + BDFFont *bdf; + int i, cnt; + double scaled_sum; + (void)ttf; /* -Wall */ + if ( info->bitmaps==NULL ) +return; +#if 0 + for ( bdf=info->bitmaps; bdf->next!=NULL; bdf=bdf->next ); + for ( i=0; iglyphcnt; ++i ) if ( bdf->glyphs[i]!=NULL ) { + bdf->glyphs[i]->sc->width = info->emsize*bdf->glyphs[i]->width/bdf->pixelsize; + bdf->glyphs[i]->sc->widthset = true; + } +#else + for ( i=0; iglyph_cnt; ++i ) if ( info->chars[i]!=NULL ) { + cnt = 0; scaled_sum = 0; + for ( bdf=info->bitmaps; bdf->next!=NULL; bdf=bdf->next ) { + if ( iglyphcnt && bdf->glyphs[i]!=NULL ) { + scaled_sum += ((double) (info->emsize*bdf->glyphs[i]->width))/bdf->pixelsize; + ++cnt; + } + } + if ( cnt!=0 ) { + info->chars[i]->width = scaled_sum/cnt; + info->chars[i]->widthset = true; + } + } +#endif +} + +static void readttfvwidths(FILE *ttf,struct ttfinfo *info) { + int i,j; + int lastvwidth = info->emsize, vwidth_cnt, tsb/*, cnt=0*/; + /* int32 voff=0; */ + + fseek(ttf,info->vhea_start+4+4,SEEK_SET); /* skip over the version number & typo right/left */ + info->pfminfo.vlinegap = getushort(ttf); + info->pfminfo.vheadset = true; + + for ( i=0; i<12; ++i ) + getushort(ttf); + vwidth_cnt = getushort(ttf); + + fseek(ttf,info->vmetrics_start,SEEK_SET); + for ( i=0; iglyph_cnt; ++i ) { + lastvwidth = getushort(ttf); + tsb = getushort(ttf); + if ( info->chars[i]!=NULL ) { /* can happen in ttc files */ + info->chars[i]->vwidth = lastvwidth; +#if 0 /* this used to mean something once */ + /* At one point I stored the ymax of loading the glyph in lsidebearing*/ + /* I've removed that as it now seems pointless */ + if ( info->cff_start==0 ) { + voff += tsb + info->chars[i]->lsidebearing /* actually maxy */; + ++cnt; + } +#endif + } + } + if ( i==0 ) { + LogError( _("Invalid ttf vmtx table (or vhea), numOfLongVerMetrics is 0\n") ); + info->bad_metrics = true; + } + + for ( j=i; jglyph_cnt; ++j ) { + if ( info->chars[j]!=NULL ) /* In a ttc file we may skip some */ + info->chars[j]->vwidth = lastvwidth; + } + +} + +static int modenc(int enc,int modtype) { + (void)modtype; /* for -Wall */ +return( enc ); +} + +static int badencoding(struct ttfinfo *info) { + if ( !info->bad_cmap ) { + LogError("Bad encoding information in 'cmap' table."); + info->bad_cmap = true; + } +return( -1 ); +} + +static int umodenc(int enc,int modtype, struct ttfinfo *info) { + if ( modtype==-1 ) +return( -1 ); + if ( modtype<=1 /* Unicode */ ) { + /* No conversion needed, already unicode */; + } else if ( modtype==2 /* SJIS */ ) { + if ( enc<=127 ) { + /* Latin */ + if ( enc=='\\' ) enc = 0xa5; /* Yen */ + } else if ( enc>=161 && enc<=223 ) { + /* Katakana */ + enc = unicode_from_jis201[enc]; + } else if ( enc<255 ) { + /* This is erroneous as I understand SJIS */ + enc = badencoding(info); + } else { + int ch1 = enc>>8, ch2 = enc&0xff; + if ( ch1 >= 129 && ch1<= 159 ) + ch1 -= 112; + else + ch1 -= 176; + ch1 <<= 1; + if ( ch2>=159 ) + ch2-= 126; + else if ( ch2>127 ) { + --ch1; + ch2 -= 32; + } else { + --ch1; + ch2 -= 31; + } + if ( ch1<0x21 || ch2<0x21 || ch1>0x7f || ch2>0x7f ) + enc = badencoding(info); + else + enc = unicode_from_jis208[(ch1-0x21)*94+(ch2-0x21)]; + } + } else if ( modtype==3 /* GB2312 offset by 0x8080, parse just like wansung */ ) { + if ( enc>0xa1a1 ) { + enc -= 0xa1a1; + enc = (enc>>8)*94 + (enc&0xff); + enc = unicode_from_gb2312[enc]; + if ( enc==0 ) enc = -1; + } else if ( enc>0x100 ) + enc = badencoding(info); + } else if ( modtype==4 /* BIG5 */ ) { /* old ms docs say big5 is modtype==3, but new ones say 4 */ + if ( enc>0x8100 ) + enc = unicode_from_big5hkscs[enc-0x8100]; + else if ( enc>0x100 ) + enc = badencoding(info); + } else if ( modtype==5 /* Wansung == KSC 5601-1987, I hope */ ) { + if ( enc>0xa1a1 ) { + enc -= 0xa1a1; + enc = (enc>>8)*94 + (enc&0xff); + enc = unicode_from_ksc5601[enc]; + if ( enc==0 ) enc = -1; + } else if ( enc>0x100 ) + enc = badencoding(info); + } else if ( modtype==6 /* Johab */ ) { + if ( enc>0x8400 ) + enc = unicode_from_johab[enc-0x8400]; + else if ( enc>0x100 ) + enc = badencoding(info); + } + if ( enc==0 ) + enc = -1; +return( enc ); +} + +struct cmap_encs { + int platform; + int specific; + int offset; + int lang; + int format; + Encoding *enc; +}; + +static int SubtableIsntSupported(FILE *ttf,uint32 offset,struct cmap_encs *cmap_enc, struct ttfinfo *info) { + uint32 here = ftell(ttf); + int format, len, ret=false; + + fseek(ttf,offset,SEEK_SET); + + cmap_enc->format = format = getushort(ttf); + if ( format<0 || (format&1) || format>12 ) { + LogError( _("Encoding subtable for platform=%d, specific=%d has an unsupported format %d.\n"), + cmap_enc->platform, cmap_enc->specific, format ); + info->bad_cmap = true; + ret = true; + } + + if ( format!=12 && format!=10 && format!=8 ) { + len = getushort(ttf); + cmap_enc->lang = getushort(ttf); + } else { + /* padding */ getushort(ttf); + len = getlong(ttf); + cmap_enc->lang = getlong(ttf); + } + if ( len==0 ) { + LogError( _("Encoding subtable for platform=%d, specific=%d has a 0 length subtable.\n"), + cmap_enc->platform, cmap_enc->specific ); + info->bad_cmap = true; + ret = true; + } + fseek(ttf,here,SEEK_SET); +return( ret ); +} + +static int SubtableMustBe14(FILE *ttf,uint32 offset,struct ttfinfo *info) { + uint32 here = ftell(ttf); + int format, ret=true; + + fseek(ttf,offset,SEEK_SET); + + format = getushort(ttf); + if ( format!=14 ) { + LogError( _("Encoding subtable for platform=%d, specific=%d (which must be 14)\nhas an unsupported format %d.\n"), + 0, 5, format ); + info->bad_cmap = true; + ret = false; + } + fseek(ttf,here,SEEK_SET); +return( ret ); +} + +static void ApplyVariationSequenceSubtable(FILE *ttf,uint32 vs_map, + struct ttfinfo *info,int justinuse) { + int sub_table_len, vs_cnt, i, j, rcnt, gid; + struct vs_data { int vs; uint32 def, non_def; } *vs_data; + SplineChar *sc; + + fseek(ttf,vs_map,SEEK_SET); + /* We/ve already checked the format is 14 */ getushort(ttf); + sub_table_len = getlong(ttf); + vs_cnt = getlong(ttf); + vs_data = galloc(vs_cnt*sizeof(struct vs_data)); + for ( i=0; iglyph_cnt; ++gid ) { + if ( (sc = info->chars[gid])!=NULL ) { + if ( sc->unicodeenc==uni ) + break; + for ( altuni = sc->altuni; altuni!=NULL; altuni=altuni->next ) + if ( altuni->unienc==uni && altuni->vs == -1 && altuni->fid==0 ) + break; + if ( altuni!=NULL ) + break; + } + } + if ( gid==info->glyph_cnt ) { + LogError( _("No glyph with unicode U+%05x in font\n"), + uni ); + info->bad_cmap = true; + } else { + altuni = chunkalloc(sizeof(struct altuni)); + altuni->unienc = uni; + altuni->vs = vs_data[i].vs; + altuni->fid = 0; + altuni->next = sc->altuni; + sc->altuni = altuni; + } + } + } + } + if ( vs_data[i].non_def!=0 ) { + fseek(ttf,vs_map+vs_data[i].non_def,SEEK_SET); + rcnt = getlong(ttf); + for ( j=0; jglyph_cnt && curgid>=0) + info->inuse[curgid] = 1; + } else if ( justinuse==git_justinuse ) { + if ( curgidglyph_cnt && curgid>=0 && + (sc=info->chars[curgid])!=NULL && sc->name==NULL ) { + char buffer[32]; + sprintf(buffer, "u%04X.vs%04X", uni, vs_data[i].vs ); + sc->name = copy(buffer); + } + } else { + if ( curgid>=info->glyph_cnt || curgid<0 || + info->chars[curgid]==NULL ) { + LogError( _("GID out of range (%d) in format 14 'cmap' subtable\n"), + curgid ); + info->bad_cmap = true; + } else { + SplineChar *sc = info->chars[curgid]; + struct altuni *altuni = chunkalloc(sizeof(struct altuni)); + altuni->unienc = uni; + altuni->vs = vs_data[i].vs; + altuni->fid = 0; + altuni->next = sc->altuni; + sc->altuni = altuni; + } + } + } + } + } +} + +static enum uni_interp amscheck(struct ttfinfo *info, EncMap *map) { + int cnt = 0; + /* Try to guess if the font uses the AMS math PUA assignments */ + + if ( map==NULL ) +return( ui_none ); + + if ( 0xe668enccount && map->map[0xe668]!=-1 && + info->chars[map->map[0xe668]]->unicodeenc=='b' ) + ++cnt; + if ( 0xe3c8enccount && map->map[0xe626]!=-1 && + info->chars[map->map[0xe626]]->unicodeenc==0xe626 ) + ++cnt; + if ( 0xe3c8enccount && map->map[0xe3c8]!=-1 && + info->chars[map->map[0xe3c8]]->unicodeenc==0x29e1 ) + ++cnt; + if ( 0x2A7Cenccount && map->map[0x2A7C]!=-1 && + info->chars[map->map[0x2A7C]]->unicodeenc==0xE32A ) + ++cnt; + if ( 0x2920enccount && map->map[0x2920]!=-1 && + info->chars[map->map[0x2920]]->unicodeenc==0xE221 ) + ++cnt; +return( cnt>=2 ? ui_ams : ui_none ); +} + +static int PickCMap(struct cmap_encs *cmap_encs,int enccnt,int def) { + char buffer[500]; + char **choices, *encname; + int i, ret; + static char *macscripts[]= { N_("Script|Roman"), N_("Script|Japanese"), N_("Script|Traditional Chinese"), N_("Script|Korean"), + N_("Script|Arabic"), N_("Script|Hebrew"), N_("Script|Greek"), +/* GT: Don't ask me what RSymbol means, I don't know either. It's in apple's */ +/* GT: docs though */ + N_("Script|Cyrillic"), N_("Script|RSymbol"), N_("Script|Devanagari"), +/* 10*/ N_("Script|Gurmukhi"), N_("Script|Gujarati"), NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, +/* 20*/ NULL, N_("Script|Thai"), NULL, NULL, NULL, N_("Script|Simplified Chinese"), + NULL, NULL, NULL, N_("Script|Central European"), +/* 30*/ NULL, NULL, NULL }; + + choices = galloc(enccnt*sizeof(char *)); + for ( i=0; ienc_name; + + sprintf(buffer,"%d (%s) %d %s %s %s", + cmap_encs[i].platform, + cmap_encs[i].platform==0 ? _("Unicode") : + cmap_encs[i].platform==1 ? _("Apple") : + cmap_encs[i].platform==2 ? _("ISO (Deprecated)") : + cmap_encs[i].platform==3 ? _("MicroSoft") : + cmap_encs[i].platform==4 ? _("Custom") : + cmap_encs[i].platform==7 ? _("FreeType internals") : + _("Unknown"), + cmap_encs[i].specific, + encname, + cmap_encs[i].platform==1 && cmap_encs[i].lang!=0? MacLanguageFromCode(cmap_encs[i].lang-1) : "", + cmap_encs[i].format == 0 ? "Byte encoding table" : + cmap_encs[i].format == 2 ? "High-byte mapping through table" : + cmap_encs[i].format == 4 ? "Segment mapping to delta values" : + cmap_encs[i].format == 6 ? "Trimmed table mapping" : + cmap_encs[i].format == 8 ? "mixed 16-bit and 32-bit coverage" : + cmap_encs[i].format == 10 ? "Trimmed array" : + cmap_encs[i].format == 12 ? "Segmented coverage" : + "Unknown format" ); + choices[i] = copy(buffer); + } + ret = ff_choose(_("Pick a CMap subtable"),(const char **) choices,enccnt,def, + _("Pick a CMap subtable")); + for ( i=0; iencoding_start,SEEK_SET); + version = getushort(ttf); + nencs = getushort(ttf); + if ( version!=0 && nencs==0 ) + nencs = version; /* Sometimes they are backwards */ /* Or was I just confused early on? */ + cmap_encs = galloc(nencs*sizeof(struct cmap_encs)); + for ( i=usable_encs=0; iencoding_start+cmap_encs[usable_encs].offset,info) ) + vs_map = info->encoding_start+cmap_encs[usable_encs].offset; + continue; + } + temp = enc_from_platspec(cmap_encs[usable_encs].platform,cmap_encs[usable_encs].specific); + if ( temp==NULL ) /* iconv doesn't support this. Some sun iconvs seem limited */ + temp = FindOrMakeEncoding("Custom"); + cmap_encs[usable_encs].enc = temp; + if ( SubtableIsntSupported(ttf,info->encoding_start+cmap_encs[usable_encs].offset, + &cmap_encs[usable_encs],info)) + continue; + ++usable_encs; + } + if ( usable_encs==0 ) { + LogError( _("Could not find any valid encoding tables" )); + free(cmap_encs); +return; + } + def = -1; + enc = &custom; + unicode_cmap = unicode4_cmap = -1; + for ( i=0; iis_unicodefull && (!prefer_cjk_encodings || + (!enc->is_japanese && !enc->is_korean && !enc->is_tradchinese && + !enc->is_simplechinese)) && + (( platform==3 && specific==1 ) || /* MS Unicode */ +/* Well I should only deal with apple unicode specific==0 (default) and 3 (U2.0 semantics) */ +/* but apple ships dfonts with specific==1 (Unicode 1.1 semantics) */ +/* which is stupid of them */ + ( platform==0 /*&& (specific==0 || specific==3)*/ ))) { /* Apple Unicode */ + enc = temp; + def = i; + } else if ( platform==3 && specific==0 && enc->is_custom ) { + /* Only select symbol if we don't have something better */ + enc = temp; + def = i; + /* Now I had assumed this would be a 1 byte encoding, but it turns*/ + /* out to map into the unicode private use area at U+f000-U+F0FF */ + /* so it's a 2 byte enc */ +/* Mac platform specific encodings are script numbers. 0=>roman, 1=>jap, 2=>big5, 3=>korean, 4=>arab, 5=>hebrew, 6=>greek, 7=>cyrillic, ... 25=>simplified chinese */ + } else if ( platform==1 && specific==0 && enc->is_custom ) { + enc = temp; + def = i; + } else if ( platform==1 && (specific==2 ||specific==1||specific==3||specific==25) && + !enc->is_unicodefull && + (prefer_cjk_encodings || !enc->is_unicodebmp) ) { + enc = temp; + def = i; + } else if ( platform==3 && (specific>=2 && specific<=6 ) && + !enc->is_unicodefull && + (prefer_cjk_encodings || !enc->is_unicodebmp) ) { + /* Old ms docs say that specific==3 => big 5, new docs say specific==4 => big5 */ + /* Ain't that jus' great? */ + enc = temp; + def = i; + } + if ( (platform==3 && specific==1) || + (platform==0 && specific==3)) + unicode_cmap = i; + } + + if ( justinuse==git_justinuse || !ask_user_for_cmap || (i = PickCMap(cmap_encs,usable_encs,def))==-1 ) + i = def; + + if ( i==-1 ) { + LogError( _("Could not find a usable encoding table" )); + free(cmap_encs); +return; + } + + info->platform = cmap_encs[i].platform; + info->specific = cmap_encs[i].specific; + + desired_cmaps[0] = cmap_encs[i]; dcnt = 1; + if ( unicode4_cmap!=-1 ) { + if ( i!=unicode4_cmap ) { + desired_cmaps[1] = cmap_encs[unicode4_cmap]; + ++dcnt; + } + } else if ( unicode_cmap!=-1 ) { + if ( i!=unicode_cmap ) { + desired_cmaps[1] = cmap_encs[unicode_cmap]; + ++dcnt; + } + } else { + if ( i!=def && def!=-1 ) { + desired_cmaps[1] = cmap_encs[def]; + ++dcnt; + } + } + + map = NULL; + if ( justinuse==git_justinuse ) { + dcmap_cnt = usable_encs; + dcmap = cmap_encs; + } else { + dcmap_cnt = dcnt; + dcmap = desired_cmaps; + } + for ( dc=dcmap_cnt-1; dc>=0; --dc ) { + /* if justinuse then look at all cmaps and tick the glyphs they use */ + /* otherwise dcmap_cnt will be either 1 or 2. If 1 then this subtable */ + /* contains both the encoding and the source for unicode encodings */ + /* if dcmap_cnt==2 then when dc==0 we are setting up the encoding */ + /* and when dc==1 we are setting up the unicode code points */ + int dounicode = (dc==dcmap_cnt-1); + enc = dcmap[dc].enc; + encoff = dcmap[dc].offset; + + if ( dc==0 && justinuse==git_normal ) { + interp = interp_from_encoding(enc,ui_none); + mod = 0; + if ( dcmap[dc].platform==3 && (dcmap[dc].specific>=2 && dcmap[dc].specific<=6 )) + mod = dcmap[dc].specific; + else if ( dcmap[dc].platform==1 && (dcmap[dc].specific==2 ||dcmap[dc].specific==1||dcmap[dc].specific==3||dcmap[dc].specific==25)) + mod = dcmap[dc].specific==1?2:dcmap[dc].specific==2?4:dcmap[dc].specific==3?5:3; /* convert to ms specific */ + info->map = map = EncMapNew(enc->char_cnt,info->glyph_cnt,enc); + info->uni_interp = interp; + } + + fseek(ttf,info->encoding_start+encoff,SEEK_SET); + format = getushort(ttf); + if ( format!=12 && format!=10 && format!=8 ) { + len = getushort(ttf); + /* version/language = */ getushort(ttf); + } else { + /* padding */ getushort(ttf); + len = getlong(ttf); + /* language = */ getlong(ttf); + } + if ( enc->is_unicodebmp && (format==8 || format==10 || format==12)) + enc = FindOrMakeEncoding("UnicodeFull"); + + if ( format==0 ) { + if ( justinuse==git_normal && map!=NULL && map->enccount<256 ) { + map->map = grealloc(map->map,256*sizeof(int)); + memset(map->map,-1,(256-map->enccount)*sizeof(int)); + map->enccount = map->encmax = 256; + } + for ( i=0; iunicode; + if ( trans==NULL && dcmap[dc].platform==1 ) + trans = MacEncToUnicode(dcmap[dc].specific,dcmap[dc].lang-1); + for ( i=0; i<256 && iglyph_cnt && info->chars[table[i]]!=NULL ) { + if ( map!=NULL ) + map->map[i] = table[i]; + if ( dounicode && trans!=NULL ) + info->chars[table[i]]->unicodeenc = trans[i]; + } + } else if ( table[i]glyph_cnt && info->chars[table[i]]!=NULL ) + info->inuse[table[i]] = 1; + } else if ( format==4 ) { + segCount = getushort(ttf)/2; + /* searchRange = */ getushort(ttf); + /* entrySelector = */ getushort(ttf); + /* rangeShift = */ getushort(ttf); + endchars = galloc(segCount*sizeof(uint16)); + used = gcalloc(65536,sizeof(uint8)); + for ( i=0; iglyph_cnt ) + info->inuse[(uint16) (j+delta[i])] = true; + else if ( (uint16) (j+delta[i])>=info->glyph_cnt || info->chars[(uint16) (j+delta[i])]==NULL ) { + LogError( _("Attempt to encode missing glyph %d to %d (0x%x)\n"), + (uint16) (j+delta[i]), modenc(j,mod), modenc(j,mod)); + info->bad_cmap = true; + } else { + int uenc = umodenc(j,mod,info); + int lenc = modenc(j,mod); + if ( uenc!=-1 && used[uenc] ) { + if ( !badencwarned ) { + LogError( _("Multiple glyphs map to the same unicode encoding U+%04X, only one will be used\n"), uenc ); + info->bad_cmap = true; + badencwarned = true; + } + } else { + if ( uenc!=-1 && dounicode ) used[uenc] = true; + if ( dounicode && info->chars[(uint16) (j+delta[i])]->unicodeenc==-1 ) + info->chars[(uint16) (j+delta[i])]->unicodeenc = uenc; + if ( map!=NULL && lencenccount ) + map->map[lenc] = (uint16) (j+delta[i]); + } + } + } + } else if ( rangeOffset[i]!=0xffff ) { + /* Apple says a rangeOffset of 0xffff means no glyph */ + /* OpenType doesn't mention this */ + for ( j=startchars[i]; j<=endchars[i]; ++j ) { + int temp = (i-segCount+rangeOffset[i]/2) + j-startchars[i]; + if ( tempbad_cmap = true; + } + index = 0; + } + if ( index!=0 ) { + index = (unsigned short) (index+delta[i]); + if ( index>=info->glyph_cnt ) { + /* This isn't mentioned either, but in some */ + /* MS Chinese fonts (kaiu.ttf) the index */ + /* goes out of bounds. and MS's ttf dump */ + /* program says it is treated as 0 */ + LogError( _("Attempt to encode missing glyph %d to %d (0x%x)\n"), + index, modenc(j,mod), modenc(j,mod)); + info->bad_cmap = true; + } else if ( justinuse==git_justinuse ) + info->inuse[index] = 1; + else if ( info->chars[index]==NULL ) { + LogError( _("Attempt to encode missing glyph %d to %d (0x%x)\n"), + index, modenc(j,mod), modenc(j,mod)); + info->bad_cmap = true; + } else { + int uenc = umodenc(j,mod,info); + int lenc = modenc(j,mod); + if ( uenc!=-1 && used[uenc] ) { + if ( !badencwarned ) { + LogError( _("Multiple glyphs map to the same unicode encoding U+%04X, only one will be used\n"), uenc ); + info->bad_cmap = true; + badencwarned = true; + } + } else { + if ( uenc!=-1 && dounicode ) used[uenc] = true; + if ( dounicode && info->chars[index]->unicodeenc==-1 ) + info->chars[index]->unicodeenc = uenc; + if ( map!=NULL && lencenccount ) + map->map[lenc] = index; + } + } + } + } + } else { + LogError( _("Use of a range offset of 0xffff to mean a missing glyph in cmap table\n") ); + info->bad_cmap = true; + } + } + free(glyphs); + free(rangeOffset); + free(delta); + free(startchars); + free(endchars); + free(used); + } else if ( format==6 ) { + /* trimmed array format */ + /* Well, the docs say it's for 2byte encodings, but Apple actually*/ + /* uses it for 1 byte encodings which don't fit into the require-*/ + /* ments for a format 0 sub-table. See Zapfino.dfont */ + int first, count; + first = getushort(ttf); + count = getushort(ttf); + trans = enc->unicode; + if ( trans==NULL && dcmap[dc].platform==1 && first+count<=256 ) + trans = MacEncToUnicode(dcmap[dc].specific,dcmap[dc].lang-1); + if ( justinuse==git_justinuse ) + for ( i=0; iinuse[getushort(ttf)]= 1; + else { + for ( i=0; ichars[gid]->unicodeenc = trans!=NULL ? trans[first+1] : first+i; + if ( map!=NULL && first+i < map->enccount ) + map->map[first+i] = gid; + } + } + } else if ( format==2 ) { + int max_sub_head_key = 0, cnt, max_pos= -1; + struct subhead *subheads; + + for ( i=0; i<256; ++i ) { + table[i] = getushort(ttf)/8; /* Sub-header keys */ + if ( table[i]>max_sub_head_key ) { + max_sub_head_key = table[i]; /* The entry is a byte pointer, I want a pointer in units of struct subheader */ + max_pos = i; + } + } + subheads = galloc((max_sub_head_key+1)*sizeof(struct subhead)); + for ( i=0; i<=max_sub_head_key; ++i ) { + subheads[i].first = getushort(ttf); + subheads[i].cnt = getushort(ttf); + subheads[i].delta = getushort(ttf); + subheads[i].rangeoff = (getushort(ttf)- + (max_sub_head_key-i)*sizeof(struct subhead)- + sizeof(short))/sizeof(short); + } + cnt = (len-(ftell(ttf)-(info->encoding_start+encoff)))/sizeof(short); + /* The count is the number of glyph indexes to read. it is the */ + /* length of the entire subtable minus that bit we've read so far */ + glyphs = galloc(cnt*sizeof(short)); + for ( i=0; i=max_pos ) + index = 0; /* the subhead says there are 256 entries, but in fact there are only 193, so attempting to find these guys should give an error */ + else if ( i=subheads[0].first+subheads[0].cnt || + subheads[0].rangeoff+(i-subheads[0].first)>=cnt ) + index = 0; + else if ( (index = glyphs[subheads[0].rangeoff+(i-subheads[0].first)])!= 0 ) + index = (uint32) (index+subheads[0].delta); + /* I assume the single byte codes are just ascii or latin1*/ + if ( index!=0 && indexglyph_cnt ) { + if ( justinuse==git_justinuse ) + info->inuse[index] = 1; + else if ( info->chars[index]==NULL ) + /* Do Nothing */; + else { + int lenc = modenc(i,mod); + if ( dounicode && info->chars[index]->unicodeenc==-1 ) + info->chars[index]->unicodeenc = i; + if ( map!=NULL && lencenccount ) + map->map[lenc] = index; + } + } + } else { + int k = table[i]; + for ( j=0; j=cnt ) + index = 0; + else if ( (index = glyphs[subheads[k].rangeoff+j])!= 0 ) + index = (uint16) (index+subheads[k].delta); + if ( index!=0 && indexglyph_cnt ) { + enc = (i<<8)|(j+subheads[k].first); + lenc = modenc(enc,mod); + if ( justinuse==git_justinuse ) + info->inuse[index] = 1; + else if ( info->chars[index]==NULL ) + /* Do Nothing */; + else { + if ( dounicode && info->chars[index]->unicodeenc==-1 ) + info->chars[index]->unicodeenc = umodenc(enc,mod,info); + if ( map!=NULL && lencenccount ) + map->map[lenc] = index; + } + } + } + /*if ( last==-1 ) last = i;*/ + } + } + free(subheads); + free(glyphs); + } else if ( format==8 ) { + uint32 ngroups, start, end, startglyph; + if ( !enc->is_unicodefull ) { + IError("I don't support 32 bit characters except for the UCS-4 (MS platform, specific=10)" ); + enc = FindOrMakeEncoding("UnicodeFull"); + } + /* I'm now assuming unicode surrogate encoding, so I just ignore */ + /* the is32 table (it will be set for the surrogates and not for */ + /* anything else */ + fseek(ttf,8192,SEEK_CUR); + ngroups = getlong(ttf); + for ( j=0; j<(int)ngroups; ++j ) { + start = getlong(ttf); + end = getlong(ttf); + startglyph = getlong(ttf); + if ( justinuse==git_justinuse ) + for ( i=start; i<=(int)end; ++i ) + info->inuse[startglyph+i-start]= 1; + else + for ( i=start; i<=(int)end; ++i ) { + int uenc = ((i>>16)-0xd800)*0x400 + (i&0xffff)-0xdc00 + 0x10000; + sc = info->chars[startglyph+i-start]; + if ( dounicode && sc->unicodeenc==-1 ) + sc->unicodeenc = uenc; + if ( map!=NULL && sc->unicodeenc < map->enccount ) + map->map[uenc] = startglyph+i-start; + } + } + } else if ( format==10 ) { + /* same as format 6, except for 4byte chars */ + int first, count; + if ( !enc->is_unicodefull ) { + IError("I don't support 32 bit characters except for the UCS-4 (MS platform, specific=10)" ); + enc = FindOrMakeEncoding("UnicodeFull"); + } + first = getlong(ttf); + count = getlong(ttf); + if ( justinuse==git_justinuse ) + for ( i=0; iinuse[getushort(ttf)]= 1; + else + for ( i=0; ichars[gid]->unicodeenc = first+i; + if ( map!=NULL && first+i < map->enccount ) + map->map[first+i] = gid; + } + } else if ( format==12 ) { + uint32 ngroups, start, end, startglyph; + if ( !enc->is_unicodefull ) { + IError("I don't support 32 bit characters except for the UCS-4 (MS platform, specific=10)" ); + enc = FindOrMakeEncoding("UnicodeFull"); + } + ngroups = getlong(ttf); + for ( j=0; j<(int)ngroups; ++j ) { + start = getlong(ttf); + end = getlong(ttf); + startglyph = getlong(ttf); + if ( justinuse==git_justinuse ) { + for ( i=start; i<=(int)end; ++i ) + if ( startglyph+i-start < (unsigned)info->glyph_cnt ) + info->inuse[startglyph+i-start]= 1; + else + break; + } else + for ( i=start; i<=(int)end; ++i ) { + if ( startglyph+i-start >= (unsigned)info->glyph_cnt || + info->chars[startglyph+i-start]==NULL ) { + LogError( _("Bad font: Encoding data out of range.\n") ); + info->bad_cmap = true; + break; + } else { + if ( dounicode ) + info->chars[startglyph+i-start]->unicodeenc = i; + if ( map!=NULL && i < map->enccount ) + map->map[i] = startglyph+i-start; + } + } + } + } + } + free(cmap_encs); + if ( info->chars!=NULL ) + for ( i=0; iglyph_cnt; ++i ) + if ( info->chars[i]!=NULL && info->chars[i]->unicodeenc==0xffff ) + info->chars[i]->unicodeenc = -1; + info->vs_start = vs_map; + if ( vs_map!=0 ) + ApplyVariationSequenceSubtable(ttf,vs_map,info,justinuse); + if ( justinuse==git_normal ) { + if ( interp==ui_none ) + info->uni_interp = amscheck(info,map); + map->enc = enc; /* This can be changed from the initial value */ + } + info->map = map; +} + +static void readttfos2metrics(FILE *ttf,struct ttfinfo *info) { + int i, sel; + + fseek(ttf,info->os2_start,SEEK_SET); + info->os2_version = getushort(ttf); +#ifdef LUA_FF_LIB + info->pfminfo.avgwidth = getushort(ttf); +#else + /* avgwidth */ getushort(ttf); +#endif + info->pfminfo.weight = getushort(ttf); + info->pfminfo.width = getushort(ttf); + info->pfminfo.fstype = getushort(ttf); + info->pfminfo.os2_subxsize = getushort(ttf); + info->pfminfo.os2_subysize = getushort(ttf); + info->pfminfo.os2_subxoff = getushort(ttf); + info->pfminfo.os2_subyoff = getushort(ttf); + info->pfminfo.os2_supxsize = getushort(ttf); + info->pfminfo.os2_supysize = getushort(ttf); + info->pfminfo.os2_supxoff = getushort(ttf); + info->pfminfo.os2_supyoff = getushort(ttf); + info->pfminfo.os2_strikeysize = getushort(ttf); + info->pfminfo.os2_strikeypos = getushort(ttf); + info->pfminfo.os2_family_class = getushort(ttf); + for ( i=0; i<10; ++i ) + info->pfminfo.panose[i] = getc(ttf); + info->pfminfo.pfmfamily = info->pfminfo.panose[0]==2 ? 0x11 : /* might be 0x21 */ /* Text & Display maps to either serif 0x11 or sans 0x21 or monospace 0x31 */ + info->pfminfo.panose[0]==3 ? 0x41 : /* Script */ + info->pfminfo.panose[0]==4 ? 0x51 : /* Decorative */ + 0x51; /* And pictorial doesn't fit into pfm */ + info->pfminfo.unicoderanges[0] = getlong(ttf); + info->pfminfo.unicoderanges[1] = getlong(ttf); + info->pfminfo.unicoderanges[2] = getlong(ttf); + info->pfminfo.unicoderanges[3] = getlong(ttf); + info->pfminfo.hasunicoderanges = true; + info->pfminfo.os2_vendor[0] = getc(ttf); + info->pfminfo.os2_vendor[1] = getc(ttf); + info->pfminfo.os2_vendor[2] = getc(ttf); + info->pfminfo.os2_vendor[3] = getc(ttf); + sel = getushort(ttf); + if ( info->os2_version>=4 ) { + info->use_typo_metrics = (sel&128)?1:0; + info->weight_width_slope_only = (sel&256)?1:0; + } +#ifdef LUA_FF_LIB + info->pfminfo.firstchar = getushort(ttf); + info->pfminfo.lastchar = getushort(ttf); +#else + /* firstchar */ getushort(ttf); + /* lastchar */ getushort(ttf); +#endif + info->pfminfo.os2_typoascent = getushort(ttf); + info->pfminfo.os2_typodescent = (short) getushort(ttf); + if ( info->pfminfo.os2_typoascent-info->pfminfo.os2_typodescent == info->emsize ) { + info->ascent = info->pfminfo.os2_typoascent; + info->descent = -info->pfminfo.os2_typodescent; + } + info->pfminfo.os2_typolinegap = getushort(ttf); + info->pfminfo.os2_winascent = getushort(ttf); + info->pfminfo.os2_windescent = getushort(ttf); + info->pfminfo.winascent_add = info->pfminfo.windescent_add = false; + info->pfminfo.typoascent_add = info->pfminfo.typodescent_add = false; + info->pfminfo.pfmset = true; + info->pfminfo.panose_set = true; + info->pfminfo.subsuper_set = true; + if ( info->os2_version>=1 ) { + info->pfminfo.codepages[0] = getlong(ttf); + info->pfminfo.codepages[1] = getlong(ttf); + info->pfminfo.hascodepages = true; + } +#ifdef LUA_FF_LIB + if ( info->os2_version>=3 ) { /* TH just in case */ + info->pfminfo.os2_xheight = getushort(ttf); /* four new fields */ + info->pfminfo.os2_capheight = getushort(ttf); + info->pfminfo.os2_defaultchar = getushort(ttf); + info->pfminfo.os2_breakchar = getushort(ttf); + } +#endif + if ( info->os2_version==0 ) { + LogError("Windows will reject fonts with an OS/2 version number of 0\n"); + info->bad_os2_version = true; + } else if ( info->os2_version==1 && info->cff_start!=0 ) { + LogError("Windows will reject otf (cff) fonts with an OS/2 version number of 1\n"); + info->bad_os2_version = true; + } +} + +#if 0 +static int cmapEncFromName(struct ttfinfo *info,const char *nm, int glyphid) { + int uni; + int i; + + if ( info->map!=NULL ) + uni = EncFromName(nm,info->uni_interp,info->map->enc); + else + uni = EncFromName(nm,ui_none,&custom); + if ( uni==-1 ) +return( -1 ); + + for ( i=0; iglyph_cnt; ++i ) if ( info->chars[i]!=NULL ) { + if ( info->chars[i]->unicodeenc==uni ) { + if ( info->complainedmultname ) + /* Don't do it again */; + else if ( info->chars[i]->name!=NULL && strcmp(info->chars[i]->name,nm)==0 ) + LogError( _("Warning: Glyph %d has the same name (%s) as Glyph %d\n"), + i, nm, glyphid ); + else + LogError( _("Warning: Glyph %d is named %s which should mean it is mapped to\n Unicode U+%04X, but Glyph %d already has that encoding.\n"), + glyphid, nm, uni, i); + info->complainedmultname = true; +return( -1 ); + } + } +return( uni ); +} +#endif + +static void readttfpostnames(FILE *ttf,struct ttfinfo *info) { + int i,j; + int format, len, gc, gcbig, val; + const char *name; + char buffer[30]; + uint16 *indexes; + extern const char *ttfstandardnames[]; + int notdefwarned = false; + int anynames = false; + + ff_progress_change_line2(_("Reading Names")); + + /* Give ourselves an xuid, just in case they want to convert to PostScript*/ + /* (even type42) */ + if ( xuid!=NULL && info->fd==NULL && info->xuid==NULL ) { + info->xuid = galloc(strlen(xuid)+20); + sprintf(info->xuid,"[%s %d]", xuid, (rand()&0xffffff)); + } + + if ( info->postscript_start!=0 ) { + fseek(ttf,info->postscript_start,SEEK_SET); + format = getlong(ttf); + info->italicAngle = getfixed(ttf); + info->upos = (short) getushort(ttf); + info->uwidth = (short) getushort(ttf); + info->upos += info->uwidth/2; /* 'post' defn of this field is different from FontInfo defn and I didn't notice */ + /* fixedpitch = */ getlong(ttf); + /* mem1 = */ getlong(ttf); + /* mem2 = */ getlong(ttf); + /* mem3 = */ getlong(ttf); + /* mem4 = */ getlong(ttf); + if ( format==0x00020000 ) { + gc = getushort(ttf); + indexes = gcalloc(65536,sizeof(uint16)); + /* the index table is backwards from the way I want to use it */ + gcbig = 0; + for ( i=0; i=258 ) ++gcbig; + } + + /* if we are only loading bitmaps, we can get holes in our data */ + for ( i=0; i<258; ++i ) if ( indexes[i]!=0 || i==0 ) if ( indexes[i]glyph_cnt && info->chars[indexes[i]]!=NULL ) { + info->chars[indexes[i]]->name = copy(ttfstandardnames[i]); +#if 0 /* Too many fonts have badly named glyphs */ + if ( info->chars[indexes[i]]->unicodeenc==-1 ) + info->chars[indexes[i]]->unicodeenc = cmapEncFromName(info,ttfstandardnames[i],indexes[i]); +#endif + } + gcbig += 258; + for ( i=258; iglyph_cnt && info->chars[indexes[i]]!=NULL ) { + info->chars[indexes[i]]->name = nm; +#if 0 /* Too many fonts have badly named glyphs */ + if ( info->chars[indexes[i]]->unicodeenc==-1 ) + info->chars[indexes[i]]->unicodeenc = cmapEncFromName(info,nm,indexes[i]); +#endif + } + } + free(indexes); + anynames = true; + } + } + + if ( info->fd!=NULL && info->fd->chars!=NULL) { + EncMap *map = NULL; + struct pschars *chars = info->fd->chars; + if ( info->map==NULL ) + info->map = map = EncMapNew(65536,65536,FindOrMakeEncoding("UnicodeBmp")); + /* In type42 fonts the names are stored in a postscript /CharStrings dictionary */ + for ( i=0; inext; ++i ) { + int gid = (intpt) (chars->values[i]); + if ( gid>=0 && gidglyph_cnt && chars->keys[i]!=NULL ) { + free(info->chars[gid]->name); + info->chars[gid]->name = chars->keys[i]; + info->chars[gid]->unicodeenc = UniFromName(chars->keys[i],info->uni_interp,info->map->enc); + if ( map!=NULL && info->chars[gid]->unicodeenc!=-1 && + info->chars[gid]->unicodeencenccount) + map->map[ info->chars[gid]->unicodeenc ] = gid; + chars->keys[i] = NULL; + chars->values[i] = NULL; + } else + chars->values[i] = NULL; + } + } + + for ( i=0; iglyph_cnt; ++i ) if ( info->chars[i]!=NULL ) { + /* info->chars[i] can be null in some TTC files */ + if ( i!=0 && info->chars[i]->name!=NULL && + strcmp(info->chars[i]->name,".notdef")==0 ) { + /* for some reason MS puts out fonts where several characters */ + /* are called .notdef (and only one is a real notdef). So if we */ + /* find a glyph other than 0 called ".notdef" then pretend it had */ + /* no name */ + if ( !notdefwarned ) { + notdefwarned = true; + LogError( _("Glyph %d is called \".notdef\", a singularly inept choice of name (only glyph 0\n may be called .notdef)\nFontForge will rename it.\n"), i ); + } + free(info->chars[i]->name); + info->chars[i]->name = NULL; + /* I used to check for glyphs with bad names (ie. names indicative of */ + /* another unicode code point than the one applied to the glyph) but */ + /* this proves too early for that check, as we don't have the altunis*/ + /* figured out yet. So I've moved that into its own routine later */ + } + /* And some volt files actually assign nul strings to the name */ + if ( (info->chars[i]->name!=NULL && *info->chars[i]->name!='\0' )) + continue; + free(info->chars[i]->name); /* If it's a null string get rid of it */ + if ( i==0 ) + name = ".notdef"; + else if ( info->chars[i]->unicodeenc==-1 ) { + /* Do this later */; + name = NULL; + } else { + name = StdGlyphName(buffer,info->chars[i]->unicodeenc,info->uni_interp,NULL); + if ( anynames ) { + for ( j=0; jglyph_cnt; ++j ) { + if ( info->chars[j]!=NULL && j!=i && info->chars[j]->name!=NULL ) { + if ( strcmp(info->chars[j]->name,name)==0 ) { + name = NULL; + break; + } + } + } + } + } + ff_progress_next(); + info->chars[i]->name = copy(name); + } + + /* If we have a GSUB table we can give some unencoded glyphs names */ + /* for example if we have a vrt2 substitution of A to */ + /* we could name the unencoded "A.vrt2" (though in this case we might */ + /* try A.vert instead */ /* Werner suggested this */ + /* We could try this from morx too, except that apple features don't */ + /* use meaningful ids. That is A.15,3 isn't very readable */ + for ( i=info->glyph_cnt-1; i>=0 ; --i ) + if ( info->chars[i]!=NULL && info->chars[i]->name==NULL ) + break; + if ( i>=0 && info->vs_start!=0 ) + ApplyVariationSequenceSubtable(ttf,info->vs_start,info,git_findnames); + if ( i>=0 && info->gsub_start!=0 ) + GuessNamesFromGSUB(ttf,info); + if ( i>=0 && info->math_start!=0 ) + GuessNamesFromMATH(ttf,info); + + for ( i=0; iglyph_cnt; ++i ) { + /* info->chars[i] can be null in some TTC files */ + if ( info->chars[i]==NULL ) + continue; + if ( info->chars[i]->name!=NULL ) + continue; + if ( info->ordering!=NULL ) + sprintf(buffer, "%.20s-%d", info->ordering, i ); + else if ( info->map!=NULL && info->map->backmap[i]!=-1 ) + sprintf(buffer, "nounicode.%d.%d.%x", info->platform, info->specific, + (int) info->map->backmap[i] ); + else + sprintf( buffer, "glyph%d", i ); + info->chars[i]->name = copy(buffer); + ff_progress_next(); + } + ff_progress_next_stage(); +} + +static void readttfgasp(FILE *ttf,struct ttfinfo *info) { + int i, cnt; + + if ( info->gasp_start==0 ) +return; + + fseek(ttf,info->gasp_start,SEEK_SET); + info->gasp_version = getushort(ttf); + if ( info->gasp_version!=0 && info->gasp_version!=1 ) +return; /* We only support 'gasp' versions 0&1 (no other versions currently) */ + info->gasp_cnt = cnt = getushort(ttf); + if ( cnt==0 ) +return; + info->gasp = galloc(cnt*sizeof(struct gasp)); + for ( i=0; igasp[i].ppem = getushort(ttf); + info->gasp[i].flags = getushort(ttf); + } +} + +static void UnfigureControls(Spline *spline,BasePoint *pos) { + pos->x = rint( (spline->splines[0].c+2*spline->splines[0].d)/2 ); + pos->y = rint( (spline->splines[1].c+2*spline->splines[1].d)/2 ); +} + +int ttfFindPointInSC(SplineChar *sc,int layer,int pnum,BasePoint *pos, + RefChar *bound) { + SplineSet *ss; + SplinePoint *sp; + int last=0, ret; + RefChar *refs; + + for ( ss = sc->layers[layer].splines; ss!=NULL; ss=ss->next ) { + for ( sp=ss->first; ; ) { + if ( sp->ttfindex==pnum ) { + *pos = sp->me; +return(-1); + } else if ( sp->nextcpindex==pnum ) { + if ( sp->next!=NULL && sp->next->order2 ) + *pos = sp->nextcp; + else { + /* fix this up to be 2 degree bezier control point */ + UnfigureControls(sp->next,pos); + } +return( -1 ); + } + if ( !sp->nonextcp && last<=sp->nextcpindex ) + last = sp->nextcpindex+1; + else if ( sp->ttfindex!=0xffff ) + last = sp->ttfindex+1; + if ( sp->next==NULL ) + break; + sp = sp->next->to; + if ( sp==ss->first ) + break; + } + } + for ( refs=sc->layers[layer].refs; refs!=NULL; refs=refs->next ) { + if ( refs==bound ) { + LogError( _("Invalid point match. Point would be after this reference.\n") ); +return( 0x800000 ); + } + ret = ttfFindPointInSC(refs->sc,ly_fore,pnum-last,pos,NULL); + if ( ret==-1 ) { + BasePoint p; + p.x = refs->transform[0]*pos->x + refs->transform[2]*pos->y + refs->transform[4]; + p.y = refs->transform[1]*pos->x + refs->transform[3]*pos->y + refs->transform[5]; + *pos = p; +return( -1 ); + } + last += ret; + if ( last>pnum ) { + IError("Point match failure last=%d, pnum=%d", last, pnum ); +return( 0x800000 ); + } + } +return( last ); /* Count of number of points in the character */ +} + +static void ttfPointMatch(SplineChar *sc,RefChar *rf) { + BasePoint sofar, inref; + + if ( ttfFindPointInSC(sc,ly_fore,rf->match_pt_base,&sofar,rf)!=-1 || + ttfFindPointInSC(rf->sc,ly_fore,rf->match_pt_ref,&inref,NULL)!=-1 ) { + LogError( _("Could not match points in composite glyph (%d to %d) when adding %s to %s\n"), + rf->match_pt_base, rf->match_pt_ref, rf->sc->name, sc->name); +return; + } + rf->transform[4] = sofar.x-inref.x; + rf->transform[5] = sofar.y-inref.y; +} + +int ttfFixupRef(SplineChar **chars,int i) { + RefChar *ref, *prev, *next; + + if ( chars[i]==NULL ) /* Can happen in ttc files */ +return( false ); + if ( chars[i]->ticked ) +return( false ); + chars[i]->ticked = true; + prev = NULL; + for ( ref=chars[i]->layers[ly_fore].refs; ref!=NULL; ref=next ) { + if ( ref->sc!=NULL ) + break; /* Already done */ + next = ref->next; + if ( !ttfFixupRef(chars,ref->orig_pos)) { + if ( prev==NULL ) + chars[i]->layers[ly_fore].refs = next; + else + prev->next = next; + chunkfree(ref,sizeof(RefChar)); + } else { + ref->sc = chars[ref->orig_pos]; + ref->adobe_enc = getAdobeEnc(ref->sc->name); + if ( ref->point_match ) + ttfPointMatch(chars[i],ref); + SCReinstanciateRefChar(chars[i],ref,ly_fore); + SCMakeDependent(chars[i],ref->sc); + prev = ref; + } + } + chars[i]->ticked = false; +return( true ); +} + +static void ttfFixupReferences(struct ttfinfo *info) { + int i; + + ff_progress_change_line2(_("Fixing up References")); + for ( i=0; iglyph_cnt; ++i ) if ( info->chars[i]!=NULL ) + info->chars[i]->ticked = false; + for ( i=0; iglyph_cnt; ++i ) { + ttfFixupRef(info->chars,i); + ff_progress_next(); + } + ff_progress_next_stage(); +} + +static void TtfCopyTableBlindly(struct ttfinfo *info,FILE *ttf, + uint32 start,uint32 len,uint32 tag) { + struct ttf_table *tab; + + if ( start==0 || len==0 ) +return; + if ( len>0x1000000 ) { + LogError( _("Unlikely length for table, so I'm ignoring it. %u\n"), len ); +return; + } + + tab = chunkalloc(sizeof(struct ttf_table)); + tab->tag = tag; + tab->len = len; + tab->data = galloc(len); + fseek(ttf,start,SEEK_SET); + fread(tab->data,1,len,ttf); + tab->next = info->tabs; + info->tabs = tab; +} + +static int LookupListHasFeature(OTLookup *otl,uint32 tag) { + FeatureScriptLangList *feat; + + while ( otl!=NULL ) { + for ( feat = otl->features; feat!=NULL; feat=feat->next ) + if ( feat->featuretag == tag ) +return( true ); + otl = otl->next; + } +return( false ); +} + +static int readttf(FILE *ttf, struct ttfinfo *info, char *filename) { + char *oldloc; + int i; + + ff_progress_change_stages(3); + if ( !readttfheader(ttf,info,filename,&info->chosenname)) { +return( 0 ); + } + oldloc = setlocale(LC_NUMERIC,"C"); /* TrueType doesn't need this but opentype dictionaries do */ + readttfpreglyph(ttf,info); + ff_progress_change_total(info->glyph_cnt); + + /* If font only contains bitmaps, then only read bitmaps */ + if ( (info->glyphlocations_start==0 || info->glyph_length==0) && + info->cff_start==0 && info->typ1_start==0 && + info->bitmapdata_start!=0 && info->bitmaploc_start!=0 ) + info->onlystrikes = true; + + if ( !info->onlystrikes && + info->glyphlocations_start!=0 && info->glyph_start!=0 && + info->cff_start!=0 ) { + char *buts[4]; + int choice; + buts[0] = _("TTF 'glyf'"); + buts[1] = _("OTF 'CFF '"); + buts[2] = _("_Cancel"); + buts[3] = NULL; + choice = ff_ask(_("Pick a font, any font..."),(const char **) buts,0,2,_("This font contains both a TrueType 'glyf' table and an OpenType 'CFF ' table. FontForge can only deal with one at a time, please pick which one you want to use")); + if ( choice==2 ) { + setlocale(LC_NUMERIC,oldloc); +return( 0 ); + } else if ( choice==0 ) + info->cff_start=0; + else + info->glyph_start = info->glyphlocations_start = 0; + } + + if ( info->onlystrikes ) { + info->chars = gcalloc(info->glyph_cnt+1,sizeof(SplineChar *)); + info->to_order2 = new_fonts_are_order2; + } else if ( info->glyphlocations_start!=0 && info->glyph_start!=0 ) { + info->to_order2 = (!loaded_fonts_same_as_new || + (loaded_fonts_same_as_new && new_fonts_are_order2)); + /* If it's an apple mm font, then we don't want to change the order */ + /* This messes up the point count */ + if ( info->gvar_start!=0 && info->fvar_start!=0 ) + info->to_order2 = true; + readttfglyphs(ttf,info); + } else if ( info->cff_start!=0 ) { + info->to_order2 = (loaded_fonts_same_as_new && new_fonts_are_order2); + if ( !readcffglyphs(ttf,info) ) { + setlocale(LC_NUMERIC,oldloc); +return( 0 ); + } + } else if ( info->typ1_start!=0 ) { + if ( !readtyp1glyphs(ttf,info) ) { + setlocale(LC_NUMERIC,oldloc); +return( 0 ); + } + } else { + setlocale(LC_NUMERIC,oldloc); +return( 0 ); + } + if ( info->bitmapdata_start!=0 && info->bitmaploc_start!=0 ) + ; /*TTFLoadBitmaps(ttf,info,info->onlyonestrike);*/ + else if ( info->onlystrikes ) + ff_post_error( _("No Bitmap Strikes"), _("No (useable) bitmap strikes in this TTF font: %s"), filename==NULL ? "" : filename ); + if ( info->onlystrikes && info->bitmaps==NULL ) { + free(info->chars); + setlocale(LC_NUMERIC,oldloc); +return( 0 ); + } + if ( info->hmetrics_start!=0 ) + readttfwidths(ttf,info); + else if ( info->bitmapdata_start!=0 && info->bitmaploc_start!=0 ) + dummywidthsfromstrike(ttf,info); + if ( info->vmetrics_start!=0 && info->vhea_start!=0 ) + readttfvwidths(ttf,info); + /* 'cmap' is not meaningful for cid keyed fonts, and not supplied for */ + /* type42 fonts */ + if ( info->cidregistry==NULL && info->encoding_start!=0 ) + readttfencodings(ttf,info,git_normal); + if ( info->os2_start!=0 ) + readttfos2metrics(ttf,info); + readttfpostnames(ttf,info); /* If no postscript table we'll guess at names */ + if ( info->gdef_start!=0 ) /* ligature caret positioning info */ + readttfgdef(ttf,info); + else { + if ( info->prop_start!=0 ) + readttfprop(ttf,info); + if ( info->lcar_start!=0 ) + readttflcar(ttf,info); + } + if ( info->base_start!=0 ) + readttfbase(ttf,info); + else if ( info->bsln_start!=0 ) + readttfbsln(ttf,info); + if ( info->gasp_start!=0 ) + readttfgasp(ttf,info); + /* read the cvt table before reading variation data */ + if ( info->to_order2 ) { + /* Yes, even though we've looked at maxp already, let's make a blind */ + /* copy too for those fields we can't compute on our own */ + /* Like size of twilight zone, etc. */ + TtfCopyTableBlindly(info,ttf,info->maxp_start,info->maxp_len,CHR('m','a','x','p')); + TtfCopyTableBlindly(info,ttf,info->cvt_start,info->cvt_len,CHR('c','v','t',' ')); + TtfCopyTableBlindly(info,ttf,info->fpgm_start,info->fpgm_len,CHR('f','p','g','m')); + TtfCopyTableBlindly(info,ttf,info->prep_start,info->prep_len,CHR('p','r','e','p')); + } + for ( i=0; isavecnt; ++i ) if ( info->savetab[i].offset!=0 ) + TtfCopyTableBlindly(info,ttf,info->savetab[i].offset,info->savetab[i].len,info->savetab[i].tag); + /* Do this before reading kerning info */ + if ( info->to_order2 && info->gvar_start!=0 && info->fvar_start!=0 ) + readttfvariations(info,ttf); + if ( info->gpos_start!=0 ) /* kerning info may live in the gpos table too */ + readttfgpossub(ttf,info,true); + /* Load the 'kern' table if the GPOS table either didn't exist or didn't */ + /* contain any kerning info */ + if ( info->kern_start!=0 && !LookupListHasFeature(info->gpos_lookups,CHR('k','e','r','n'))) + readttfkerns(ttf,info); + if ( info->opbd_start!=0 && !LookupListHasFeature(info->gpos_lookups,CHR('l','f','b','d'))) + readttfopbd(ttf,info); + if ( info->gsub_start!=0 ) + readttfgpossub(ttf,info,false); + if ( info->morx_start!=0 || info->mort_start!=0 ) + readttfmort(ttf,info); + + if ( info->pfed_start!=0 ) + pfed_read(ttf,info); + if ( info->tex_start!=0 ) + tex_read(ttf,info); + if ( info->math_start!=0 ) + otf_read_math(ttf,info); + setlocale(LC_NUMERIC,oldloc); + if ( !info->onlystrikes && info->glyphlocations_start!=0 && info->glyph_start!=0 ) + ttfFixupReferences(info); + /* Can't fix up any postscript references until we create a SplineFont */ + /* so the check for cff is delayed. Generally there aren't any cff refs */ + /* anyway */ +return( true ); +} + +static void SymbolFixup(struct ttfinfo *info) { + /* convert a two-byte symbol encoding (one using PUA) into expected */ + /* one-byte encoding. */ + int i, max; + EncMap *map = info->map; + + max = -1; + for ( i=map->enccount-1; i>=0; --i ) { + if ( map->map[i]==-1 ) + continue; + if ( i>=0xf000 && i<=0xf0ff ) { + map->map[i-0xf000] = map->map[i]; + map->map[i] = -1; + continue; + } + if ( i>max ) max = i; + } + map->enccount = max; +} + +void AltUniFigure(SplineFont *sf,EncMap *map) { + int i,gid; + + if ( map->enc!=&custom ) { + for ( i=0; ienccount; ++i ) if ( (gid = map->map[i])!=-1 ) { + int uni = UniFromEnc(i,map->enc); + AltUniAdd(sf->glyphs[gid],uni); + } + } +} + +static void NameConsistancyCheck(SplineFont *sf,EncMap *map) { + /* Many fonts seem to have glyph names which mean something other than */ + /* what the encoding says of the glyph */ + /* I used to ask about fixing the names up, but people didn't like that */ + /* so now I just produce warnings */ + int gid, uni; + SplineChar *sc; +#if 0 + char buffer[100]; + int response, asked=-1; + char *buts[5]; +#endif + +#if 0 + buts[0] = _("Yes"); buts[1] = _("Yes to _All"); + buts[2] = _("No _to All"); buts[3] = _("No"); + buts[4] = NULL; +#endif + + for ( gid = 0 ; gidglyphcnt; ++gid ) if ( (sc=sf->glyphs[gid])!=NULL ) { + if ( sc->name!=NULL && + strcmp(sc->name,".null")!=0 && + strcmp(sc->name,"nonmarkingreturn")!=0 && + (uni = UniFromName(sc->name,sf->uni_interp,map==NULL ? &custom : map->enc))!= -1 && + sc->unicodeenc != uni ) { +#if 1 + if ( uni>=0xe000 && uni<=0xf8ff ) + /* Don't complain about adobe's old PUA assignments for things like "eight.oldstyle" */; + else if ( uni<0x20 ) + /* Nor about control characters */; + else if ( sc->unicodeenc==-1 ) { +#if 0 + LogError(_("The glyph named %.30s is not mapped to any unicode code point.\nBut its name indicates it should be mapped to U+%04X.\n"), + sc->name,uni); +#endif + } else { + /* Ah, but suppose there's an altuni? */ + struct altuni *alt; + for ( alt = sc->altuni; alt!=NULL && alt->unienc!=uni; alt=alt->next ); + if ( alt==NULL ) + LogError( _("The glyph named %.30s is mapped to U+%04X.\nBut its name indicates it should be mapped to U+%04X.\n"), + sc->name,sc->unicodeenc, uni); + else if ( alt->vs==0 ) { + alt->unienc = sc->unicodeenc; + sc->unicodeenc = uni; + } + } +#else + if ( asked!=-1 ) + response = asked; + else if ( sc->unicodeenc==-1 ) + response = ff_ask(_("Bad glyph name"),(const char **) buts,1,1,_("The glyph named %.30s is not mapped to any unicode code point. But its name indicates it should be mapped to U+%04X.\nWould you like to retain the name in spite of this?"), + sc->name,uni); + else + response = ff_ask(_("Bad glyph name"),(const char **) buts,1,1,_("The glyph named %.30s is mapped to U+%04X.\nBut its name indicates it should be mapped to U+%04X.\nWould you like to retain the name in spite of this?"), + sc->name,sc->unicodeenc, uni); + if ( response==1 ) + asked = response = 0; + else if ( response==2 ) + asked = response = 3; + if ( response==3 ) { + free(sc->name); + if ( sc->unicodeenc==-1 ) + sc->name = StdGlyphName(buffer,sc->unicodeenc,sf->uni_interp,NULL); + else { + sprintf( buffer, "glyph%d", gid ); + sc->name = copy( buffer ); + } + } +#endif + } + } +} + +static void UseGivenEncoding(SplineFont *sf,struct ttfinfo *info) { + int i; + RefChar *rf, *prev, *next; + SplineChar *sc; + + sf->glyphs = info->chars; + sf->glyphcnt = sf->glyphmax = info->glyph_cnt; + for ( i=0; iglyphcnt; ++i ) + if ( (sc = sf->glyphs[i])!=NULL ) { + sc->layers[ly_fore].order2 = sc->layers[ly_back].order2 = info->to_order2; + sc->parent = sf; + } + + /* A CFF font could contain type1 charstrings, or a type2 font could use */ + /* the depreciated convention that endchar =~ seac */ + if ( info->cff_length!=0 ) + SFInstanciateRefs(sf); + + for ( i=0; iglyphcnt; ++i ) if ( sf->glyphs[i]!=NULL ) { + for ( rf = sf->glyphs[i]->layers[ly_fore].refs, prev=NULL; rf!=NULL; rf = next ) { + next = rf->next; + if ( rf->sc==NULL ) { + if ( prev==NULL ) sf->glyphs[i]->layers[ly_fore].refs = next; + else prev->next = next; + RefCharFree(rf); + } else { + rf->orig_pos = rf->sc->orig_pos; + rf->unicode_enc = rf->sc->unicodeenc; + prev = rf; + } + } + } + sf->map = info->map; + sf->uni_interp = info->uni_interp; + AltUniFigure(sf,sf->map); + NameConsistancyCheck(sf, sf->map); +} + +static char *AxisNameConvert(uint32 tag) { + char buffer[8]; + + if ( tag==CHR('w','g','h','t')) +return( copy("Weight")); + if ( tag==CHR('w','d','t','h')) +return( copy("Width")); + if ( tag==CHR('o','p','s','z')) +return( copy("OpticalSize")); + if ( tag==CHR('s','l','n','t')) +return( copy("Slant")); + + buffer[0] = tag>>24; + buffer[1] = tag>>16; + buffer[2] = tag>>8; + buffer[3] = tag&0xff; + buffer[4] = 0; +return( copy(buffer )); +} + +static struct macname *FindMacName(struct ttfinfo *info, int strid) { + struct macidname *sid; + + for ( sid=info->macstrids; sid!=NULL; sid=sid->next ) { + if ( sid->id == strid ) +return( sid->head ); + } +return( NULL ); +} + +static SplineFont *SFFromTuple(SplineFont *basesf,struct variations *v,int tuple, + MMSet *mm, struct ttfinfo *info) { + SplineFont *sf; + int i; + RefChar *r; + (void)info; /* for -Wall */ + sf = SplineFontEmpty(); + sf->display_size = basesf->display_size; + sf->display_antialias = basesf->display_antialias; + + sf->fontname = MMMakeMasterFontname(mm,tuple,&sf->fullname); + sf->familyname = copy(basesf->familyname); + sf->weight = copy("All"); + sf->italicangle = basesf->italicangle; + sf->strokewidth = basesf->strokewidth; + sf->strokedfont = basesf->strokedfont; + sf->upos = basesf->upos; + sf->uwidth = basesf->uwidth; + sf->ascent = basesf->ascent; + sf->hasvmetrics = basesf->hasvmetrics; + sf->descent = basesf->descent; + sf->kerns = v->tuples[tuple].khead; + sf->vkerns = v->tuples[tuple].vkhead; + sf->map = basesf->map; + sf->mm = mm; + sf->glyphmax = sf->glyphcnt = basesf->glyphcnt; + sf->glyphs = v->tuples[tuple].chars; + sf->layers[ly_fore].order2 = sf->layers[ly_back].order2 = true; + for ( i=0; iglyphcnt; ++i ) if ( basesf->glyphs[i]!=NULL ) { + SplineChar *sc = sf->glyphs[i]; + sc->orig_pos = i; + sc->parent = sf; + sc->layers[ly_fore].order2 = sc->layers[ly_back].order2 = true; + } + sf->grid.order2 = true; + for ( i=0; iglyphcnt; ++i ) if ( sf->glyphs[i]!=NULL ) { + for ( r=sf->glyphs[i]->layers[ly_fore].refs; r!=NULL; r=r->next ) + SCReinstanciateRefChar(sf->glyphs[i],r,ly_fore); + } + + sf->ttf_tables = v->tuples[tuple].cvt; + + v->tuples[tuple].chars = NULL; + v->tuples[tuple].khead = NULL; + v->tuples[tuple].vkhead = NULL; + v->tuples[tuple].cvt = NULL; +return( sf ); +} + +static void MMFillFromVAR(SplineFont *sf, struct ttfinfo *info) { + MMSet *mm = chunkalloc(sizeof(MMSet)); + struct variations *v = info->variations; + int i,j; + + sf->mm = mm; + mm->normal = sf; + mm->apple = true; + mm->axis_count = v->axis_count; + mm->instance_count = v->tuple_count; + mm->instances = galloc(v->tuple_count*sizeof(SplineFont *)); + mm->positions = galloc(v->tuple_count*v->axis_count*sizeof(real)); + for ( i=0; ituple_count; ++i ) for ( j=0; jaxis_count; ++j ) + mm->positions[i*v->axis_count+j] = v->tuples[i].coords[j]; + mm->defweights = gcalloc(v->tuple_count,sizeof(real)); /* Doesn't apply */ + mm->axismaps = gcalloc(v->axis_count,sizeof(struct axismap)); + for ( i=0; iaxis_count; ++i ) { + mm->axes[i] = AxisNameConvert(v->axes[i].tag); + mm->axismaps[i].min = v->axes[i].min; + mm->axismaps[i].def = v->axes[i].def; + mm->axismaps[i].max = v->axes[i].max; + if ( v->axes[i].paircount==0 ) { + mm->axismaps[i].points = 3; + mm->axismaps[i].blends = galloc(3*sizeof(real)); + mm->axismaps[i].designs = galloc(3*sizeof(real)); + mm->axismaps[i].blends[0] = -1; mm->axismaps[i].designs[0] = mm->axismaps[i].min; + mm->axismaps[i].blends[1] = 0; mm->axismaps[i].designs[1] = mm->axismaps[i].def; + mm->axismaps[i].blends[2] = 1; mm->axismaps[i].designs[2] = mm->axismaps[i].max; + } else { + mm->axismaps[i].points = v->axes[i].paircount; + mm->axismaps[i].blends = galloc(v->axes[i].paircount*sizeof(real)); + mm->axismaps[i].designs = galloc(v->axes[i].paircount*sizeof(real)); + for ( j=0; jaxes[i].paircount; ++j ) { + if ( v->axes[i].mapfrom[j]<=0 ) { + mm->axismaps[i].designs[j] = mm->axismaps[i].def + + v->axes[i].mapfrom[j]*(mm->axismaps[i].def-mm->axismaps[i].min); + } else { + mm->axismaps[i].designs[j] = mm->axismaps[i].def + + v->axes[i].mapfrom[j]*(mm->axismaps[i].max-mm->axismaps[i].def); + } + mm->axismaps[i].blends[j] = v->axes[i].mapto[j]; + } + } + mm->axismaps[i].axisnames = MacNameCopy(FindMacName(info, v->axes[i].nameid)); + } + mm->named_instance_count = v->instance_count; + mm->named_instances = galloc(v->instance_count*sizeof(struct named_instance)); + for ( i=0; iinstance_count; ++i ) { + mm->named_instances[i].coords = v->instances[i].coords; + v->instances[i].coords = NULL; + mm->named_instances[i].names = MacNameCopy(FindMacName(info, v->instances[i].nameid)); + } + for ( i=0; iinstance_count; ++i ) + mm->instances[i] = SFFromTuple(sf,v,i,mm,info); + VariationFree(info); +} + +static void SFRelativeWinAsDs(SplineFont *sf) { + if ( !sf->pfminfo.winascent_add || !sf->pfminfo.windescent_add || + !sf->pfminfo.hheadascent_add || !sf->pfminfo.hheaddescent_add ) { + DBounds b; + CIDLayerFindBounds(sf,ly_fore,&b); + if ( !sf->pfminfo.winascent_add ) { + sf->pfminfo.winascent_add = true; + if ( sf->pfminfo.os2_winascent < sf->ascent/8 ) { + /* There was a bug for a while which gave us really bad values */ + sf->pfminfo.os2_winascent = 0; + sf->pfminfo.windescent_add = true; + sf->pfminfo.os2_windescent = 0; + } else + sf->pfminfo.os2_winascent -= b.maxy; + } + if ( !sf->pfminfo.windescent_add ) { + sf->pfminfo.windescent_add = true; + sf->pfminfo.os2_windescent += b.miny; + } + if ( !sf->pfminfo.hheadascent_add ) { + sf->pfminfo.hheadascent_add = true; + sf->pfminfo.hhead_ascent -= b.maxy; + } + if ( !sf->pfminfo.hheaddescent_add ) { + sf->pfminfo.hheaddescent_add = true; + sf->pfminfo.hhead_descent -= b.miny; + } + } + if ( !sf->pfminfo.typoascent_add ) { + sf->pfminfo.typoascent_add = true; + sf->pfminfo.os2_typoascent -= sf->ascent; + } + if ( !sf->pfminfo.typodescent_add ) { + sf->pfminfo.typodescent_add = true; + sf->pfminfo.os2_typodescent -= -sf->descent; + } +} + +static void PsuedoEncodeUnencoded(EncMap *map,struct ttfinfo *info) { + int extras, base; + int i; + + for ( i=0; iglyph_cnt; ++i ) + if ( info->chars[i]!=NULL ) + info->chars[i]->ticked = false; + for ( i=0; ienccount; ++i ) + if ( map->map[i]!=-1 ) + info->chars[map->map[i]]->ticked = true; + extras = 0; + for ( i=0; iglyph_cnt; ++i ) + if ( info->chars[i]!=NULL && !info->chars[i]->ticked ) + ++extras; + if ( extras!=0 ) { + if ( map->enccount<=256 ) + base = 256; + else if ( map->enccount<=65536 ) + base = 65536; + else if ( map->enccount<=17*65536 ) + base = 17*65536; + else + base = map->enccount; + if ( base+extras>map->encmax ) { + map->map = grealloc(map->map,(base+extras)*sizeof(int)); + memset(map->map+map->enccount,-1,(base+extras-map->enccount)*sizeof(int)); + map->encmax = base+extras; + } + map->enccount = base+extras; + extras = 0; + for ( i=0; iglyph_cnt; ++i ) + if ( info->chars[i]!=NULL && !info->chars[i]->ticked ) + map->map[base+extras++] = i; + } +} + +static void MapDoBack(EncMap *map,struct ttfinfo *info) { + int i; + + if ( map==NULL ) /* CID fonts */ +return; + free(map->backmap); /* CFF files have this */ + map->backmax = info->glyph_cnt; + map->backmap = galloc(info->glyph_cnt*sizeof(int)); + memset(map->backmap,-1,info->glyph_cnt*sizeof(int)); + for ( i = map->enccount-1; i>=0; --i ) + if ( map->map[i]>=0 && map->map[i]glyph_cnt ) + if ( map->backmap[map->map[i]]==-1 ) + map->backmap[map->map[i]] = i; +} + +void TTF_PSDupsDefault(SplineFont *sf) { + struct ttflangname *english; + char versionbuf[40]; + + /* Ok, if we've just loaded a ttf file then we've got a bunch of langnames*/ + /* we copied some of them (copyright, family, fullname, etc) into equiv */ + /* postscript entries in the sf. If we then use FontInfo and change the */ + /* obvious postscript entries we are left with the old ttf entries. If */ + /* we generate a ttf file and then load it the old values pop up. */ + /* Solution: Anything we can generate by default should be set to NULL */ + for ( english=sf->names; english!=NULL && english->lang!=0x409; english=english->next ); + if ( english==NULL ) +return; + if ( english->names[ttf_family]!=NULL && + strcmp(english->names[ttf_family],sf->familyname)==0 ) { + free(english->names[ttf_family]); + english->names[ttf_family]=NULL; + } + if ( english->names[ttf_copyright]!=NULL && + strcmp(english->names[ttf_copyright],sf->copyright)==0 ) { + free(english->names[ttf_copyright]); + english->names[ttf_copyright]=NULL; + } + if ( english->names[ttf_fullname]!=NULL && + strcmp(english->names[ttf_fullname],sf->fullname)==0 ) { + free(english->names[ttf_fullname]); + english->names[ttf_fullname]=NULL; + } + if ( sf->subfontcnt!=0 || sf->version!=NULL ) { + if ( sf->subfontcnt!=0 ) + sprintf( versionbuf, "Version %f", sf->cidversion ); + else + sprintf(versionbuf,"Version %.20s ", sf->version); + if ( english->names[ttf_version]!=NULL && + strcmp(english->names[ttf_version],versionbuf)==0 ) { + free(english->names[ttf_version]); + english->names[ttf_version]=NULL; + } + } + if ( english->names[ttf_subfamily]!=NULL && + strcmp(english->names[ttf_subfamily],SFGetModifiers(sf))==0 ) { + free(english->names[ttf_subfamily]); + english->names[ttf_subfamily]=NULL; + } + + /* User should not be allowed any access to this one, not ever */ + free(english->names[ttf_postscriptname]); + english->names[ttf_postscriptname]=NULL; +} + +static SplineFont *SFFillFromTTF(struct ttfinfo *info) { + SplineFont *sf, *_sf; + int i,k; + SplineChar *sc; + struct ttf_table *last[2], *tab, *next; + + + sf = SplineFontEmpty(); + sf->display_size = -default_fv_font_size; +#ifdef LUA_FF_LIB + sf->units_per_em = info->emsize; +#endif + sf->display_antialias = default_fv_antialias; + sf->fontname = info->fontname; + sf->fullname = info->fullname; + sf->familyname = info->familyname; + sf->chosenname = info->chosenname; + sf->onlybitmaps = info->onlystrikes; + sf->layers[ly_fore].order2 = info->to_order2; + sf->layers[ly_back].order2 = info->to_order2; + sf->comments = info->fontcomments; + sf->fontlog = info->fontlog; + sf->cvt_names = info->cvt_names; + + sf->creationtime = info->creationtime; + sf->modificationtime = info->modificationtime; + + sf->design_size = info->design_size; + sf->design_range_bottom = info->design_range_bottom; + sf->design_range_top = info->design_range_top; + sf->fontstyle_id = info->fontstyle_id; + sf->fontstyle_name = info->fontstyle_name; + + sf->gasp_cnt = info->gasp_cnt; + sf->gasp = info->gasp; + sf->MATH = info->math; + + sf->texdata = info->texdata; + + sf->mark_class_cnt = info->mark_class_cnt; + sf->mark_classes = info->mark_classes; + sf->mark_class_names = info->mark_class_names; + + if ( info->fd!=NULL ) { /* Special hack for type42 fonts */ + sf->fontname = copy(info->fd->fontname); + sf->uniqueid = info->fd->uniqueid; + sf->xuid = XUIDFromFD(info->fd->xuid); + if ( info->fd->fontinfo!=NULL ) { + sf->familyname = utf8_verify_copy(info->fd->fontinfo->familyname); + sf->fullname = utf8_verify_copy(info->fd->fontinfo->fullname); + sf->copyright = utf8_verify_copy(info->fd->fontinfo->notice); + sf->weight = utf8_verify_copy(info->fd->fontinfo->weight); + sf->version = utf8_verify_copy(info->fd->fontinfo->version); + sf->italicangle = info->fd->fontinfo->italicangle; + sf->upos = info->fd->fontinfo->underlineposition*(sf->ascent+sf->descent); + sf->uwidth = info->fd->fontinfo->underlinethickness*(sf->ascent+sf->descent); + } + } + + if ( sf->fontname==NULL ) { + sf->fontname = EnforcePostScriptName(sf->fullname); + if ( sf->fontname==NULL ) + sf->fontname = EnforcePostScriptName(sf->familyname); + if ( sf->fontname==NULL ) sf->fontname = EnforcePostScriptName("UntitledTTF"); + } + if ( sf->fullname==NULL ) sf->fullname = copy( sf->fontname ); + if ( sf->familyname==NULL ) sf->familyname = copy( sf->fontname ); + if ( sf->weight==NULL ) { + if ( info->weight != NULL ) + sf->weight = info->weight; + else if ( info->pfminfo.pfmset ) + sf->weight = copy( info->pfminfo.weight <= 100 ? "Thin" : + info->pfminfo.weight <= 200 ? "Extra-Light" : + info->pfminfo.weight <= 300 ? "Light" : + info->pfminfo.weight <= 400 ? "Book" : + info->pfminfo.weight <= 500 ? "Medium" : + info->pfminfo.weight <= 600 ? "Demi" : + info->pfminfo.weight <= 700 ? "Bold" : + info->pfminfo.weight <= 800 ? "Heavy" : + "Black" ); + else + sf->weight = copy(""); + } else + free( info->weight ); + if ( sf->copyright==NULL ) + sf->copyright = info->copyright; + else + free( info->copyright ); + sf->version = info->version; + sf->italicangle = info->italicAngle; + sf->strokewidth = info->strokewidth; + sf->strokedfont = info->strokedfont; + sf->upos = info->upos; + sf->uwidth = info->uwidth; + sf->ascent = info->ascent; + if ( info->vhea_start!=0 && info->vmetrics_start!=0 ) + sf->hasvmetrics = true; + sf->descent = info->descent; + sf->private = info->private; + sf->xuid = info->xuid; + sf->uniqueid = info->uniqueid; + sf->pfminfo = info->pfminfo; + sf->os2_version = info->os2_version; + sf->use_typo_metrics = info->use_typo_metrics; + sf->weight_width_slope_only = info->weight_width_slope_only; + sf->head_optimized_for_cleartype = info->optimized_for_cleartype; + sf->gasp_version = info->gasp_version; + sf->names = info->names; + sf->anchor = info->ahead; + sf->kerns = info->khead; + sf->vkerns = info->vkhead; + sf->possub = info->possub; + sf->sm = info->sm; + sf->features = info->features; + sf->gpos_lookups = info->gpos_lookups; + sf->gsub_lookups = info->gsub_lookups; + + last[0] = sf->ttf_tables; + last[1] = NULL; + for ( tab=info->tabs; tab!=NULL; tab = next ) { + next = tab->next; + if ( tab->tag==CHR('f','p','g','m') || tab->tag==CHR('p','r','e','p') || + tab->tag==CHR('c','v','t',' ') || tab->tag==CHR('m','a','x','p')) { + if ( last[0]==NULL ) + sf->ttf_tables = tab; + else + last[0]->next = tab; + last[0] = tab; + } else { + if ( last[1]==NULL ) + sf->ttf_tab_saved = tab; + else + last[1]->next = tab; + last[1] = tab; + } + tab->next = NULL; + } + + if ( info->twobytesymbol ) + /* rework ms symbol encodings */ + SymbolFixup(info); + if ( info->map==NULL && info->subfonts==NULL ) /* Can happen when reading a ttf from a pdf */ + info->map = EncMapFromEncoding(sf,FindOrMakeEncoding("original")); + if ( info->subfontcnt==0 ) + PsuedoEncodeUnencoded(info->map,info); + MapDoBack(info->map,info); + sf->map = info->map; + sf->cidregistry = info->cidregistry; + sf->ordering = info->ordering; + sf->supplement = info->supplement; + sf->cidversion = info->cidfontversion; + sf->bitmaps = info->bitmaps; + sf->grid = info->guidelines; + sf->horiz_base = info->horiz_base; + sf->vert_base = info->vert_base; + if ( info->layers!=NULL ) { + info->layers[ly_fore] = sf->layers[ly_fore]; + sf->layers[ly_fore].name = NULL; + if ( info->layers[ly_back].name==NULL ) + info->layers[ly_back].name = sf->layers[ly_back].name; + else + free( sf->layers[ly_back].name ); + free( sf->layers ); + sf->layers = info->layers; + sf->layer_cnt = info->layer_cnt; + } + + + for ( i=0; iglyph_cnt; ++i ) if ( info->chars[i]!=NULL ) { + SCOrderAP(info->chars[i]); + } + + if ( info->subfontcnt == 0 ) { + UseGivenEncoding(sf,info); + } else { + sf->subfontcnt = info->subfontcnt; + sf->subfonts = info->subfonts; + free(info->chars); /* This is the GID->char index, don't need it now */ + for ( i=0; isubfontcnt; ++i ) { + sf->subfonts[i]->cidmaster = sf; + sf->subfonts[i]->hasvmetrics = sf->hasvmetrics; + } + } + TTF_PSDupsDefault(sf); +#if 0 + if ( info->gsub_start==0 && info->mort_start==0 && info->morx_start==0 ) { + /* Get default ligature values, etc. */ + k=0; + do { + _sf = ksubfontcnt?sf->subfonts[k]:sf; + for ( i=0; iglyphcnt; ++i ) { + if ( _sf->glyphs[i]!=NULL ) /* Might be null in ttc files */ + SCLigDefault(_sf->glyphs[i]); + } + ++k; + } while ( ksubfontcnt ); + } +#endif + + /* I thought the languages were supposed to be ordered, but it seems */ + /* that is not always the case. Order everything, just in case */ + { int isgpos; OTLookup *otl; + for ( isgpos=0; isgpos<2; ++isgpos ) + for ( otl= isgpos? sf->gpos_lookups:sf->gsub_lookups; otl!=NULL; otl=otl->next ) + otl->features = FLOrder(otl->features); + } + + if ( info->variations!=NULL ) + MMFillFromVAR(sf,info); + + if ( info->cff_length!=0 && !sf->layers[ly_fore].order2 ) { + /* Clean up the hint masks, We create an initial hintmask whether we */ + /* need it or not */ + k=0; + do { + _sf = ksubfontcnt?sf->subfonts[k]:sf; + for ( i=0; iglyphcnt; ++i ) { + if ( (sc = _sf->glyphs[i])!=NULL && !sc->hconflicts && !sc->vconflicts && + sc->layers[ly_fore].splines!=NULL ) { + chunkfree( sc->layers[ly_fore].splines->first->hintmask,sizeof(HintMask) ); + sc->layers[ly_fore].splines->first->hintmask = NULL; + } + } + ++k; + } while ( ksubfontcnt ); + } + SFRelativeWinAsDs(sf); + free(info->savetab); + sf->loadvalidation_state = + (info->bad_ps_fontname ?lvs_bad_ps_fontname:0) | + (info->bad_glyph_data ?lvs_bad_glyph_table:0) | + (info->bad_cff ?lvs_bad_cff_table:0) | + (info->bad_metrics ?lvs_bad_metrics_table:0) | + (info->bad_cmap ?lvs_bad_cmap_table:0) | + (info->bad_embedded_bitmap ?lvs_bad_bitmaps_table:0) | + (info->bad_gx ?lvs_bad_gx_table:0) | + (info->bad_ot ?lvs_bad_ot_table:0) | + (info->bad_os2_version ?lvs_bad_os2_version:0)| + (info->bad_sfnt_header ?lvs_bad_sfnt_header:0); +return( sf ); +} + +SplineFont *_SFReadTTF(FILE *ttf, int flags,enum openflags openflags, char *filename,struct fontdict *fd) { + struct ttfinfo info; + int ret; + + memset(&info,'\0',sizeof(struct ttfinfo)); + info.onlystrikes = (flags&ttf_onlystrikes)?1:0; + info.onlyonestrike = (flags&ttf_onlyonestrike)?1:0; + info.use_typo_metrics = true; + info.openflags = openflags; + info.fd = fd; + ret = readttf(ttf,&info,filename); + if ( !ret ) +return( NULL ); +return( SFFillFromTTF(&info)); +} + +SplineFont *SFReadTTF(char *filename, int flags, enum openflags openflags) { + FILE *ttf; + SplineFont *sf; + char *temp=filename, *pt, *lparen, *rparen; + + pt = strrchr(filename,'/'); + if ( pt==NULL ) pt = filename; + if ( (lparen = strrchr(pt,'('))!=NULL && + (rparen = strrchr(lparen,')'))!=NULL && + rparen[1]=='\0' ) { + temp = copy(filename); + pt = temp + (lparen-filename); + *pt = '\0'; + } + ttf = fopen(temp,"rb"); + if ( temp!=filename ) free(temp); + if ( ttf==NULL ) +return( NULL ); + + sf = _SFReadTTF(ttf,flags,openflags,filename,NULL); + fclose(ttf); +return( sf ); +} + +#ifdef LUA_FF_LIB + +static int readttfinfo(FILE *ttf, struct ttfinfo *info, char *filename) { + + if ( !readttfheader(ttf,info,filename,&info->chosenname)) { +return( 0 ); + } + readttfpreglyph(ttf,info); + if ( info->os2_start!=0 ) + readttfos2metrics(ttf,info); + if ( info->postscript_start!=0 ) { + fseek(ttf,info->postscript_start,SEEK_SET); + (void)getlong(ttf); + info->italicAngle = getfixed(ttf); + } +return( true ); +} + +/* I am not sure what happens to the ttinfo struct's members. + perhaps some need free()-ing +*/ + +void THPatchSplineChar (SplineChar *sc) +{ + DBounds bb; + if (sc->layers!=NULL && sc->layers[ly_fore].splines != NULL) { + if (sc->xmax==0 && sc->ymax==0 && sc->xmin==0 && sc->ymin==0) { + SplineCharFindBounds(sc,&bb); + sc->xmin = bb.minx; + sc->ymin = bb.miny; + sc->xmax = bb.maxx; + sc->ymax = bb.maxy; + } + /* free the curves */ + SplinePointListsFree(sc->layers[ly_fore].splines); + sc->layers[ly_fore].splines=NULL; + } + if (sc->layers[ly_fore].refs!=NULL) { + RefCharsFree(sc->layers[ly_fore].refs); + sc->layers[ly_fore].refs = NULL; + } +} + + +static SplineFont *SFFillFromTTFInfo(struct ttfinfo *info) { + SplineFont *sf ; + + sf = SplineFontEmpty(); + + sf->fontname = info->fontname; + sf->fullname = info->fullname; + sf->familyname = info->familyname; + + if ( info->fd!=NULL ) { /* Special hack for type42 fonts */ + sf->fontname = copy(info->fd->fontname); + if ( info->fd->fontinfo!=NULL ) { + sf->familyname = utf8_verify_copy(info->fd->fontinfo->familyname); + sf->fullname = utf8_verify_copy(info->fd->fontinfo->fullname); + sf->weight = utf8_verify_copy(info->fd->fontinfo->weight); + } + } + if ( sf->fontname==NULL ) sf->fontname = EnforcePostScriptName(sf->fullname); + if ( sf->fontname==NULL ) sf->fontname = EnforcePostScriptName(sf->familyname); + if ( sf->fontname==NULL ) sf->fontname = EnforcePostScriptName("UntitledTTF"); + + if ( sf->fullname==NULL ) sf->fullname = copy( sf->fontname ); + if ( sf->familyname==NULL ) sf->familyname = copy( sf->fontname ); + if ( sf->weight==NULL ) { + if ( info->weight != NULL ) + sf->weight = info->weight; + else if ( info->pfminfo.pfmset ) + sf->weight = copy( info->pfminfo.weight <= 100 ? "Thin" : + info->pfminfo.weight <= 200 ? "Extra-Light" : + info->pfminfo.weight <= 300 ? "Light" : + info->pfminfo.weight <= 400 ? "Book" : + info->pfminfo.weight <= 500 ? "Medium" : + info->pfminfo.weight <= 600 ? "Demi" : + info->pfminfo.weight <= 700 ? "Bold" : + info->pfminfo.weight <= 800 ? "Heavy" : + "Black" ); + else + sf->weight = copy(""); + } else + free( info->weight ); + sf->version = info->version; + sf->italicangle = info->italicAngle; + +return( sf ); +} + +SplineFont *_SFReadTTFInfo(FILE *ttf, int flags,enum openflags openflags, char *filename,struct fontdict *fd) { + struct ttfinfo info; + int ret; + (void)openflags; /* for -Wall */ + memset(&info,'\0',sizeof(struct ttfinfo)); + info.onlystrikes = (flags&ttf_onlystrikes)?1:0; + info.onlyonestrike = (flags&ttf_onlyonestrike)?1:0; + info.use_typo_metrics = true; + info.fd = fd; + ret = readttfinfo(ttf,&info,filename); + if ( !ret ) +return( NULL ); +return( SFFillFromTTFInfo(&info)); +} + +SplineFont *SFReadTTFInfo(char *filename, int flags, enum openflags openflags) { + FILE *ttf; + SplineFont *sf; + char *temp=filename, *pt, *lparen; + + pt = strrchr(filename,'/'); + if ( pt==NULL ) pt = filename; + if ( (lparen=strchr(pt,'('))!=NULL && strchr(lparen,')')!=NULL ) { + temp = copy(filename); + pt = temp + (lparen-filename); + *pt = '\0'; + } + ttf = fopen(temp,"rb"); + if ( temp!=filename ) free(temp); + if ( ttf==NULL ) +return( NULL ); + + sf = _SFReadTTFInfo(ttf,flags,openflags,filename,NULL); + fclose(ttf); +return( sf ); +} +#endif + +SplineFont *_CFFParse(FILE *temp,int len, char *fontsetname) { + struct ttfinfo info; + (void)fontsetname; /* for -Wall */ + + memset(&info,'\0',sizeof(info)); + info.cff_start = 0; + info.cff_length = len; + info.barecff = true; + if ( !readcffglyphs(temp,&info) ) +return( NULL ); +return( SFFillFromTTF(&info)); +} + +SplineFont *CFFParse(char *filename) { + FILE *cff = fopen(filename,"r"); + SplineFont *sf; + long len; + + if ( cff == NULL ) +return( NULL ); + fseek(cff,0,SEEK_END); + len = ftell(cff); + fseek(cff,0,SEEK_SET); + sf = _CFFParse(cff,len,NULL); + fclose(cff); +return( sf ); +} + +char **NamesReadCFF(char *filename) { + FILE *cff = fopen(filename,"rb"); + int32 hdrsize, offsize; + char **fontnames; + + if ( cff==NULL ) +return( NULL ); + if ( getc(cff)!='\1' ) { /* Major version */ + LogError( _("CFF version mismatch\n") ); + fclose(cff); +return( NULL ); + } + getc(cff); /* Minor version */ + hdrsize = getc(cff); + offsize = getc(cff); + if ( hdrsize!=4 ) + fseek(cff,hdrsize,SEEK_SET); + fontnames = readcfffontnames(cff,NULL,NULL); + fclose(cff); +return( fontnames ); +} + +char **NamesReadTTF(char *filename) { + FILE *ttf = fopen(filename,"rb"); + int32 version, cnt, *offsets; + int i,j; + char **ret = NULL; + char *temp; + + if ( ttf==NULL ) +return( NULL ); + version=getlong(ttf); + if ( version==CHR('t','t','c','f')) { + /* TTCF version = */ getlong(ttf); + cnt = getlong(ttf); + offsets = galloc(cnt*sizeof(int32)); + for ( i=0; i +#include +#include +#include +#include +#include +#include /* For GTextInfo */ +#include "ttf.h" + +static uint16 *getAppleClassTable(FILE *ttf, int classdef_offset, int cnt, int sub, int div, struct ttfinfo *info) { + uint16 *class = gcalloc(cnt,sizeof(uint16)); + int first, i, n; + /* Apple stores its class tables as containing offsets. I find it hard to */ + /* think that way and convert them to indeces (by subtracting off a base */ + /* offset and dividing by the item's size) before doing anything else */ + + fseek(ttf,classdef_offset,SEEK_SET); + first = getushort(ttf); + n = getushort(ttf); + if ( first+n-1>=cnt ) { + LogError( _("Bad Apple Kern Class\n") ); + info->bad_gx = true; + } + for ( i=0; ichars[i]!=NULL && class[i]chars[i]->name)+1; + for ( i=1; ichars[i]!=NULL ) { + if ( class[i]chars[i]->name ); + lens[class[i]] += strlen(info->chars[i]->name)+1; + ret[class[i]][lens[class[i]]-1] = ' '; + } else { + LogError( _("Class index out of range %d (must be <%d)\n"),class[i], class_cnt ); + info->bad_ot = true; + } + } + for ( i=1; iglyph_cnt,1); + char *ret; + + for ( i=0; coverageglyphs[i]!=0xffff; ++i ) + glyphs[coverageglyphs[i]] = 1; + for ( i=0; iglyph_cnt; ++i ) + if ( classed[i]!=0 ) + glyphs[i] = 0; + for ( i=0; iglyph_cnt; ++i ) + if ( glyphs[i]!=0 ) + break; + /* coverage table matches glyphs in classes. No need for special treatment*/ + if ( i==info->glyph_cnt ) { + free(glyphs); +return( NULL ); + } + /* Otherwise we need to generate a class string of glyph names in the coverage */ + /* table but not in any class. These become the glyphs in class 0 */ + ret = NULL; + for ( j=0; j<2; ++j ) { + len = 0; + for ( i=0; iglyph_cnt; ++i ) { + if ( glyphs[i]!=0 ) { + if ( j ) { + strcpy( ret+len, info->chars[i]->name ); + strcat( ret+len, " "); + } + len += strlen(info->chars[i]->name)+1; + } + } + if ( j==0 ) + ret = galloc(len+1); + else + ret[len-1] = '\0'; + } + free(glyphs); +return( ret ); +} + +static int ClassFindCnt(uint16 *class,int tot) { + int i, max=0; + + for ( i=0; imax ) max = class[i]; +return( max+1 ); +} + +static int cmpuint16(const void *u1, const void *u2) { +return( ((int) *((const uint16 *) u1)) - ((int) *((const uint16 *) u2)) ); +} + +static char *GlyphsToNames(struct ttfinfo *info,uint16 *glyphs,int make_uniq) { + int i, j, len, off; + char *ret, *pt; + + if ( glyphs==NULL ) +return( copy("")); + + /* Adobe produces coverage tables containing duplicate glyphs in */ + /* GaramondPremrPro.otf. We want unique glyphs, so enforce that */ + if ( make_uniq ) { + for ( i=0 ; glyphs[i]!=0xffff; ++i ); + qsort(glyphs,i,sizeof(uint16),cmpuint16); + for ( i=0; glyphs[i]!=0xffff; ++i ) { + if ( glyphs[i+1]==glyphs[i] ) { + for ( j=i+1; glyphs[j]==glyphs[i]; ++j ); + off = j-i -1; + for ( j=i+1; ; ++j ) { + glyphs[j] = glyphs[j+off]; + if ( glyphs[j]==0xffff ) + break; + } + } + } + } + + for ( i=len=0 ; glyphs[i]!=0xffff; ++i ) + if ( info->chars[glyphs[i]]!=NULL ) + len += strlen(info->chars[glyphs[i]]->name)+1; + ret = pt = galloc(len+1); *pt = '\0'; + for ( i=0 ; glyphs[i]!=0xffff; ++i ) if ( info->chars[glyphs[i]]!=NULL ) { + strcpy(pt,info->chars[glyphs[i]]->name); + pt += strlen(pt); + *pt++ = ' '; + } + if ( pt>ret ) pt[-1] = '\0'; +return( ret ); +} + +struct scripts { + uint32 offset; + uint32 tag; + int langcnt; /* the default language is included as a */ + struct language { /* normal entry with lang tag 'dflt' */ + uint32 tag; + uint32 offset; + uint16 req; /* required feature index. 0xffff for null */ + int fcnt; + uint16 *features; + } *languages; +}; + +struct feature { + uint32 offset; + uint32 tag; + int lcnt; + uint16 *lookups; +}; + +struct lookup { + uint16 type; + uint16 flags; + /* uint16 lookup; */ /* ???? can't imagine what this is*/ + uint32 offset; + int subtabcnt; + int32 *subtab_offsets; + OTLookup *otlookup; +}; + +static uint16 *getCoverageTable(FILE *ttf, int coverage_offset, struct ttfinfo *info) { + int format, cnt, i,j, rcnt; + uint16 *glyphs=NULL; + int start, end, ind, max; + + fseek(ttf,coverage_offset,SEEK_SET); + format = getushort(ttf); + if ( format==1 ) { + cnt = getushort(ttf); + glyphs = galloc((cnt+1)*sizeof(uint16)); + if ( ftell(ttf)+2*cnt > info->g_bounds ) { + LogError( _("coverage table extends beyond end of table\n") ); + info->bad_ot = true; + if ( ftell(ttf)>info->g_bounds ) +return( NULL ); + cnt = (info->g_bounds-ftell(ttf))/2; + } + for ( i=0; ibad_ot = true; + } + glyphs[i] = getushort(ttf); + if ( feof(ttf) ) { + LogError( _("End of file found in coverage table.\n") ); + info->bad_ot = true; + free(glyphs); +return( NULL ); + } + if ( glyphs[i]>=info->glyph_cnt ) { + LogError( _("Bad coverage table. Glyph %d out of range [0,%d)\n"), glyphs[i], info->glyph_cnt ); + info->bad_ot = true; + glyphs[i] = 0; + } + } + } else if ( format==2 ) { + glyphs = gcalloc((max=256),sizeof(uint16)); + rcnt = getushort(ttf); cnt = 0; + if ( ftell(ttf)+6*rcnt > info->g_bounds ) { + LogError( _("coverage table extends beyond end of table\n") ); + info->bad_ot = true; + rcnt = (info->g_bounds-ftell(ttf))/6; + } + + for ( i=0; ibad_ot = true; + free(glyphs); +return( NULL ); + } + if ( start>end || end>=info->glyph_cnt ) { + LogError( _("Bad coverage table. Glyph range %d-%d out of range [0,%d)\n"), start, end, info->glyph_cnt ); + info->bad_ot = true; + start = end = 0; + } + if ( ind+end-start+2 >= max ) { + int oldmax = max; + max = ind+end-start+2; + glyphs = grealloc(glyphs,max*sizeof(uint16)); + memset(glyphs+oldmax,0,(max-oldmax)*sizeof(uint16)); + } + for ( j=start; j<=end; ++j ) { + glyphs[j-start+ind] = j; + if ( j>=info->glyph_cnt ) + glyphs[j-start+ind] = 0; + } + if ( ind+end-start+1>cnt ) + cnt = ind+end-start+1; + } + } else { + LogError( _("Bad format for coverage table %d\n"), format ); + info->bad_ot = true; +return( NULL ); + } + glyphs[cnt] = 0xffff; + +return( glyphs ); +} + +struct valuerecord { + int16 xplacement, yplacement; + int16 xadvance, yadvance; + uint16 offXplaceDev, offYplaceDev; + uint16 offXadvanceDev, offYadvanceDev; +}; + +static uint16 *getClassDefTable(FILE *ttf, int classdef_offset, struct ttfinfo *info) { + int format, i, j; + uint16 start, glyphcnt, rangecnt, end, class; + uint16 *glist=NULL; + int warned = false; + int cnt = info->glyph_cnt; + uint32 g_bounds = info->g_bounds; + + fseek(ttf, classdef_offset, SEEK_SET); + glist = gcalloc(cnt,sizeof(uint16)); /* Class 0 is default */ + format = getushort(ttf); + if ( format==1 ) { + start = getushort(ttf); + glyphcnt = getushort(ttf); + if ( start+(int) glyphcnt>cnt ) { + LogError( _("Bad class def table. start=%d cnt=%d, max glyph=%d\n"), start, glyphcnt, cnt ); + info->bad_ot = true; + glyphcnt = cnt-start; + } else if ( ftell(ttf)+2*glyphcnt > g_bounds ) { + LogError( _("Class definition sub-table extends beyond end of table\n") ); + info->bad_ot = true; + glyphcnt = (g_bounds-ftell(ttf))/2; + } + for ( i=0; i g_bounds ) { + LogError( _("Class definition sub-table extends beyond end of table\n") ); + info->bad_ot = true; + rangecnt = (g_bounds-ftell(ttf))/6; + } + for ( i=0; iend || end>=cnt ) { + LogError( _("Bad class def table. Glyph range %d-%d out of range [0,%d)\n"), start, end, cnt ); + info->bad_ot = true; + } + class = getushort(ttf); + for ( j=start; j<=end; ++j ) if ( jbad_ot = true; + } + + /* Do another validity test */ + for ( i=0; i=cnt+1 ) { + if ( !warned ) { + LogError( _("Nonsensical class assigned to a glyph-- class=%d is too big. Glyph=%d\n"), + glist[i], i ); + info->bad_ot = true; + warned = true; + } + glist[i] = 0; + } + } + +return glist; +} + +static void readvaluerecord(struct valuerecord *vr,int vf,FILE *ttf) { + memset(vr,'\0',sizeof(struct valuerecord)); + if ( vf&1 ) + vr->xplacement = getushort(ttf); + if ( vf&2 ) + vr->yplacement = getushort(ttf); + if ( vf&4 ) + vr->xadvance = getushort(ttf); + if ( vf&8 ) + vr->yadvance = getushort(ttf); + if ( vf&0x10 ) + vr->offXplaceDev = getushort(ttf); + if ( vf&0x20 ) + vr->offYplaceDev = getushort(ttf); + if ( vf&0x40 ) + vr->offXadvanceDev = getushort(ttf); + if ( vf&0x80 ) + vr->offYadvanceDev = getushort(ttf); +} + +#ifdef FONTFORGE_CONFIG_DEVICETABLES +static void ReadDeviceTable(FILE *ttf,DeviceTable *adjust,uint32 devtab, + struct ttfinfo *info) { + long here; + int pack; + int w,b,i,c; + + if ( devtab==0 ) +return; + here = ftell(ttf); + fseek(ttf,devtab,SEEK_SET); + adjust->first_pixel_size = getushort(ttf); + adjust->last_pixel_size = getushort(ttf); + pack = getushort(ttf); + if ( adjust->first_pixel_size>adjust->last_pixel_size || pack==0 || pack>3 ) { + LogError(_("Bad device table\n" )); + info->bad_ot = true; + adjust->first_pixel_size = adjust->last_pixel_size = 0; + } else { + c = adjust->last_pixel_size-adjust->first_pixel_size+1; + adjust->corrections = galloc(c); + if ( pack==1 ) { + for ( i=0; icorrections[i+b] = ((int16) ((w<<(b*2))&0xc000))>>14; + } + } else if ( pack==2 ) { + for ( i=0; icorrections[i+b] = ((int16) ((w<<(b*4))&0xf000))>>12; + } + } else { + for ( i=0; icorrections[i] = (int8) getc(ttf); + } + } + fseek(ttf,here,SEEK_SET); +} + +static ValDevTab *readValDevTab(FILE *ttf,struct valuerecord *vr,uint32 base, + struct ttfinfo *info) { + ValDevTab *ret; + + if ( vr->offXplaceDev==0 && vr->offYplaceDev==0 && + vr->offXadvanceDev==0 && vr->offYadvanceDev==0 ) +return( NULL ); + ret = chunkalloc(sizeof(ValDevTab)); + if ( vr->offXplaceDev!=0 ) + ReadDeviceTable(ttf,&ret->xadjust,base + vr->offXplaceDev,info); + if ( vr->offYplaceDev!=0 ) + ReadDeviceTable(ttf,&ret->yadjust,base + vr->offYplaceDev,info); + if ( vr->offXadvanceDev!=0 ) + ReadDeviceTable(ttf,&ret->xadv,base + vr->offXadvanceDev,info); + if ( vr->offYadvanceDev!=0 ) + ReadDeviceTable(ttf,&ret->yadv,base + vr->offYadvanceDev,info); +return( ret ); +} +#endif + +static void addPairPos(struct ttfinfo *info, int glyph1, int glyph2, + struct lookup *l, struct lookup_subtable *subtable, struct valuerecord *vr1,struct valuerecord *vr2, + uint32 base,FILE *ttf) { + (void)ttf; /* for -Wall */ + (void)l; /* for -Wall */ + (void)base; /* for -Wall */ + if ( glyph1glyph_cnt && glyph2glyph_cnt ) { + PST *pos = chunkalloc(sizeof(PST)); + pos->type = pst_pair; + pos->subtable = subtable; + pos->next = info->chars[glyph1]->possub; + info->chars[glyph1]->possub = pos; + pos->u.pair.vr = chunkalloc(sizeof(struct vr [2])); + pos->u.pair.paired = copy(info->chars[glyph2]->name); + pos->u.pair.vr[0].xoff = vr1->xplacement; + pos->u.pair.vr[0].yoff = vr1->yplacement; + pos->u.pair.vr[0].h_adv_off = vr1->xadvance; + pos->u.pair.vr[0].v_adv_off = vr1->yadvance; + pos->u.pair.vr[1].xoff = vr2->xplacement; + pos->u.pair.vr[1].yoff = vr2->yplacement; + pos->u.pair.vr[1].h_adv_off = vr2->xadvance; + pos->u.pair.vr[1].v_adv_off = vr2->yadvance; +#ifdef FONTFORGE_CONFIG_DEVICETABLES + pos->u.pair.vr[0].adjust = readValDevTab(ttf,vr1,base,info); + pos->u.pair.vr[1].adjust = readValDevTab(ttf,vr2,base,info); +#endif + } else { + LogError( _("Bad pair position: glyphs %d & %d should have been < %d\n"), + glyph1, glyph2, info->glyph_cnt ); + info->bad_ot = true; + } +} + +static int addKernPair(struct ttfinfo *info, int glyph1, int glyph2, + int16 offset, uint32 devtab, struct lookup *l, struct lookup_subtable *subtable,int isv, + FILE *ttf) { + KernPair *kp; + (void)ttf; /* for -Wall */ + (void)l; /* for -Wall */ + (void)devtab; /* for -Wall */ + if ( glyph1glyph_cnt && glyph2glyph_cnt && + info->chars[glyph1]!=NULL && info->chars[glyph2]!=NULL ) { + for ( kp=isv ? info->chars[glyph1]->vkerns : info->chars[glyph1]->kerns; + kp!=NULL; kp=kp->next ) { + if ( kp->sc == info->chars[glyph2] ) + break; + } + if ( kp==NULL ) { + kp = chunkalloc(sizeof(KernPair)); + kp->sc = info->chars[glyph2]; + kp->off = offset; + kp->subtable = subtable; +#ifdef FONTFORGE_CONFIG_DEVICETABLES + if ( devtab!=0 ) { + kp->adjust = chunkalloc(sizeof(DeviceTable)); + ReadDeviceTable(ttf,kp->adjust,devtab,info); + } +#endif + if ( isv ) { + kp->next = info->chars[glyph1]->vkerns; + info->chars[glyph1]->vkerns = kp; + } else { + kp->next = info->chars[glyph1]->kerns; + info->chars[glyph1]->kerns = kp; + } + } else if ( kp->subtable!=subtable ) +return( true ); + } else if ( glyph1>=info->glyph_cnt || glyph2>=info->glyph_cnt ) { + /* Might be NULL in a ttc file where we omit glyphs */ + LogError( _("Bad kern pair: glyphs %d & %d should have been < %d\n"), + glyph1, glyph2, info->glyph_cnt ); + info->bad_ot = true; + } +return( false ); +} + +static void gposKernSubTable(FILE *ttf, int stoffset, struct ttfinfo *info, struct lookup *l, struct lookup_subtable *subtable) { + int coverage, cnt, i, j, pair_cnt, vf1, vf2, glyph2; + int cd1, cd2, c1_cnt, c2_cnt; + uint16 format; + uint16 *ps_offsets; + uint16 *glyphs, *class1, *class2; + struct valuerecord vr1, vr2; + long foffset; + KernClass *kc; + int isv, r2l; + + format=getushort(ttf); + if ( format!=1 && format!=2 ) /* Unknown subtable format */ +return; + coverage = getushort(ttf); + vf1 = getushort(ttf); + vf2 = getushort(ttf); + r2l = 0; + + /* Accept forms both with and without device tables */ + if ( (vf1==0x0008 || vf1==0x0088) && vf2==0x0000 ) + isv = 1; /* Top to bottom */ + else if ( vf1==0x0000 && (vf2==0x0004 || vf2==0x0044) && (l->flags&pst_r2l)) { + isv = 0; /* Right to left */ + r2l = 1; + } else if ( (vf1==0x0004 || vf1==0x0044) && vf2==0x0000 && !(l->flags&pst_r2l) ) + isv = 0; /* Left to right */ + else + isv = 2; /* Can't optimize, store all 8 settings */ + if ( format==1 ) { + subtable->per_glyph_pst_or_kern = true; + cnt = getushort(ttf); + ps_offsets = galloc(cnt*sizeof(uint16)); + for ( i=0; iglyph_cnt ) { + fseek(ttf,stoffset+ps_offsets[i],SEEK_SET); + pair_cnt = getushort(ttf); + for ( j=0; jvkhead==NULL ) + info->vkhead = kc = chunkalloc(sizeof(KernClass)); + else + kc = info->vklast->next = chunkalloc(sizeof(KernClass)); + info->vklast = kc; + } else { + if ( info->khead==NULL ) + info->khead = kc = chunkalloc(sizeof(KernClass)); + else + kc = info->klast->next = chunkalloc(sizeof(KernClass)); + info->klast = kc; + } + subtable->vertical_kerning = isv; + subtable->kc = kc; + kc->first_cnt = c1_cnt; kc->second_cnt = c2_cnt; + kc->subtable = subtable; + kc->offsets = galloc(c1_cnt*c2_cnt*sizeof(int16)); +#ifdef FONTFORGE_CONFIG_DEVICETABLES + kc->adjusts = gcalloc(c1_cnt*c2_cnt,sizeof(DeviceTable)); +#endif + kc->firsts = ClassToNames(info,c1_cnt,class1,info->glyph_cnt); + kc->seconds = ClassToNames(info,c2_cnt,class2,info->glyph_cnt); + /* Now if the coverage table contains entries which are not in */ + /* the list of first classes, then those glyphs are the real */ + /* values for kc->firsts[0] */ + kc->firsts[0] = CoverageMinusClasses(glyphs,class1,info); + for ( i=0; ioffsets[i*c2_cnt+j] = vr1.yadvance; + else if ( r2l ) + kc->offsets[i*c2_cnt+j] = vr2.xadvance; + else + kc->offsets[i*c2_cnt+j] = vr1.xadvance; +#ifdef FONTFORGE_CONFIG_DEVICETABLES + if ( isv ) { + if ( vr1.offYadvanceDev!=0 ) + ReadDeviceTable(ttf,&kc->adjusts[i*c2_cnt+j],stoffset+vr1.offYadvanceDev,info); + } else if ( r2l ) { + if ( vr2.offXadvanceDev!=0 ) + ReadDeviceTable(ttf,&kc->adjusts[i*c2_cnt+j],stoffset+vr2.offXadvanceDev,info); + } else { + if ( vr1.offXadvanceDev!=0 ) + ReadDeviceTable(ttf,&kc->adjusts[i*c2_cnt+j],stoffset+vr1.offXadvanceDev,info); + } +#endif + } + } + } else { /* This happens when we have a feature which is neither 'kern' nor 'vkrn' we don't know what to do with it so we make it into kern pairs */ + int k,m; + subtable->per_glyph_pst_or_kern = true; + for ( i=0; iglyph_cnt; ++k ) + if ( class1[k]==i ) + for ( m=0; mglyph_cnt; ++m ) + if ( class2[m]==j ) + addPairPos(info, k,m,l,subtable,&vr1,&vr2,stoffset,ttf); + } + } + } + free(class1); free(class2); + free(glyphs); + } +} + +static AnchorPoint *readAnchorPoint(FILE *ttf,uint32 base,AnchorClass *class, + enum anchor_type type,AnchorPoint *last, struct ttfinfo *info) { + AnchorPoint *ap; + int format; + (void)info; /* for -Wall */ + fseek(ttf,base,SEEK_SET); + + ap = chunkalloc(sizeof(AnchorPoint)); + ap->anchor = class; + /* All anchor types have the same initial 3 entries, format */ + /* x,y pos. format 2 contains a truetype positioning point, and */ + /* format==3 may also have device tables */ + format = getushort(ttf); + ap->me.x = (int16) getushort(ttf); + ap->me.y = (int16) getushort(ttf); + ap->type = type; + if ( format==2 ) { + ap->ttf_pt_index = getushort(ttf); + ap->has_ttf_pt = true; + } +#ifdef FONTFORGE_CONFIG_DEVICETABLES + else if ( format==3 ) { + int devoff; + devoff = getushort(ttf); + if ( devoff!=0 ) + ReadDeviceTable(ttf,&ap->xadjust,base+devoff,info); + devoff = getushort(ttf); + if ( devoff!=0 ) + ReadDeviceTable(ttf,&ap->yadjust,base+devoff,info); + } +#endif + ap->next = last; +return( ap ); +} + +static void gposCursiveSubTable(FILE *ttf, int stoffset, struct ttfinfo *info,struct lookup *l, struct lookup_subtable *subtable) { + int coverage, cnt, format, i; + struct ee_offsets { int entry, exit; } *offsets; + uint16 *glyphs; + AnchorClass *class; + SplineChar *sc; + char buf[50]; + (void)l; /* for -Wall */ + format=getushort(ttf); + if ( format!=1 ) /* Unknown subtable format */ +return; + coverage = getushort(ttf); + cnt = getushort(ttf); + if ( cnt==0 ) +return; + offsets = galloc(cnt*sizeof(struct ee_offsets)); + for ( i=0; ianchor_class_cnt++ ); + class->name = copy(buf); + subtable->anchor_classes = true; + class->subtable = subtable; + class->type = act_curs; + if ( info->ahead==NULL ) + info->ahead = class; + else + info->alast->next = class; + info->alast = class; + + for ( i=0; ichars[glyphs[i]]; + if ( offsets[i].entry!=0 ) { + sc->anchor = readAnchorPoint(ttf,stoffset+offsets[i].entry,class, + at_centry,sc->anchor,info); + } + if ( offsets[i].exit!=0 ) { + sc->anchor = readAnchorPoint(ttf,stoffset+offsets[i].exit,class, + at_cexit,sc->anchor,info); + } + } + free(offsets); + free(glyphs); +} + +static AnchorClass **MarkGlyphsProcessMarks(FILE *ttf,int markoffset, + struct ttfinfo *info,struct lookup *l, struct lookup_subtable *subtable,uint16 *markglyphs, + int classcnt) { + AnchorClass **classes = gcalloc(classcnt,sizeof(AnchorClass *)), *ac; + char buf[50]; + int i, cnt; + struct mr { uint16 class, offset; } *at_offsets; + SplineChar *sc; + + for ( i=0; ianchor_class_cnt+i ); + classes[i] = ac = chunkalloc(sizeof(AnchorClass)); + ac->name = copy(buf); + subtable->anchor_classes = true; + ac->subtable = subtable; + /*ac->merge_with = info->anchor_merge_cnt+1;*/ + ac->type = l->otlookup->lookup_type==gpos_mark2mark ? act_mkmk : act_mark; + /* I don't distinguish between mark to base and mark to lig */ + if ( info->ahead==NULL ) + info->ahead = ac; + else + info->alast->next = ac; + info->alast = ac; + } + + fseek(ttf,markoffset,SEEK_SET); + cnt = getushort(ttf); + if ( feof(ttf) ) { + LogError( _("Bad mark table.\n") ); + info->bad_ot = true; +return( NULL ); + } + at_offsets = galloc(cnt*sizeof(struct mr)); + for ( i=0; i=classcnt ) { + at_offsets[i].class = 0; + if ( markglyphs[i]>=info->glyph_cnt ) + LogError( _("Class out of bounds in GPOS mark sub-table\n") ); + else + LogError( _("Class out of bounds in GPOS mark sub-table for mark %.30s\n"), info->chars[markglyphs[i]]->name); + info->bad_ot = true; + } + } + for ( i=0; i=info->glyph_cnt ) + continue; + sc = info->chars[markglyphs[i]]; + if ( sc==NULL || at_offsets[i].offset==0 ) + continue; + sc->anchor = readAnchorPoint(ttf,markoffset+at_offsets[i].offset, + classes[at_offsets[i].class],at_mark,sc->anchor,info); + } + free(at_offsets); +return( classes ); +} + +static void MarkGlyphsProcessBases(FILE *ttf,int baseoffset, + struct ttfinfo *info,struct lookup *l, struct lookup_subtable *subtable,uint16 *baseglyphs,int classcnt, + AnchorClass **classes,enum anchor_type at) { + int basecnt,i, j, ibase; + uint16 *offsets; + SplineChar *sc; + (void)subtable; /* for -Wall */ + (void)l; /* for -Wall */ + fseek(ttf,baseoffset,SEEK_SET); + basecnt = getushort(ttf); + if ( feof(ttf) ) { + LogError( _("Bad base table.\n") ); + info->bad_ot = true; +return; + } + offsets = galloc(basecnt*classcnt*sizeof(uint16)); + for ( i=0; i=info->glyph_cnt ) + continue; + sc = info->chars[baseglyphs[i]]; + if ( sc==NULL ) + continue; + for ( j=0; janchor = readAnchorPoint(ttf,baseoffset+offsets[ibase+j], + classes[j], at,sc->anchor,info); + } + } + free(offsets); +} + +static void MarkGlyphsProcessLigs(FILE *ttf,int baseoffset, + struct ttfinfo *info,struct lookup *l, struct lookup_subtable *subtable,uint16 *baseglyphs,int classcnt, + AnchorClass **classes) { + int basecnt,compcnt, i, j, k, kbase; + uint16 *loffsets, *aoffsets; + SplineChar *sc; + (void)subtable; /* for -Wall */ + (void)l; /* for -Wall */ + fseek(ttf,baseoffset,SEEK_SET); + basecnt = getushort(ttf); + if ( feof(ttf) ) { + LogError( _("Bad ligature base table.\n") ); + info->bad_ot = true; +return; + } + loffsets = galloc(basecnt*sizeof(uint16)); + for ( i=0; ichars[baseglyphs[i]]; + if ( baseglyphs[i]>=info->glyph_cnt || sc==NULL ) + continue; + fseek(ttf,baseoffset+loffsets[i],SEEK_SET); + compcnt = getushort(ttf); + if ( feof(ttf)) { + LogError(_("Bad ligature anchor count.\n")); + info->bad_ot = true; + continue; + } + aoffsets = galloc(compcnt*classcnt*sizeof(uint16)); + for ( k=0; kanchor = readAnchorPoint(ttf,baseoffset+loffsets[i]+aoffsets[kbase+j], + classes[j], at_baselig,sc->anchor,info); + sc->anchor->lig_index = k; + } + } + free(aoffsets); + } + free(loffsets); +} + +static void gposMarkSubTable(FILE *ttf, uint32 stoffset, + struct ttfinfo *info, struct lookup *l, struct lookup_subtable *subtable) { + int markcoverage, basecoverage, classcnt, markoffset, baseoffset; + uint16 *markglyphs, *baseglyphs; + AnchorClass **classes; + + /* The header for the three different mark tables is the same */ + /* Type = */ getushort(ttf); + markcoverage = getushort(ttf); + basecoverage = getushort(ttf); + classcnt = getushort(ttf); + markoffset = getushort(ttf); + baseoffset = getushort(ttf); + markglyphs = getCoverageTable(ttf,stoffset+markcoverage,info); + baseglyphs = getCoverageTable(ttf,stoffset+basecoverage,info); + if ( baseglyphs==NULL || markglyphs==NULL ) { + free(baseglyphs); free(markglyphs); +return; + } + /* as is the (first) mark table */ + classes = MarkGlyphsProcessMarks(ttf,stoffset+markoffset, + info,l,subtable,markglyphs,classcnt); + if ( classes==NULL ) +return; + switch ( l->otlookup->lookup_type ) { + case gpos_mark2base: + case gpos_mark2mark: + MarkGlyphsProcessBases(ttf,stoffset+baseoffset, + info,l,subtable,baseglyphs,classcnt,classes, + l->otlookup->lookup_type==gpos_mark2base?at_basechar:at_basemark); + break; + case gpos_mark2ligature: + MarkGlyphsProcessLigs(ttf,stoffset+baseoffset, + info,l,subtable,baseglyphs,classcnt,classes); + break; + default: + break; + } + info->anchor_class_cnt += classcnt; + ++ info->anchor_merge_cnt; + free(markglyphs); free(baseglyphs); + free(classes); +} + +static void gposSimplePos(FILE *ttf, int stoffset, struct ttfinfo *info, + struct lookup *l, struct lookup_subtable *subtable) { + int coverage, cnt, i, vf; + uint16 format; + uint16 *glyphs; + struct valuerecord *vr=NULL, _vr, *which; + (void)l; /* for -Wall */ + format=getushort(ttf); + if ( format!=1 && format!=2 ) /* Unknown subtable format */ +return; + coverage = getushort(ttf); + vf = getushort(ttf); +#ifdef FONTFORGE_CONFIG_DEVICETABLES + if ( vf==0 ) +return; +#else + if ( (vf&0xf)==0 ) /* Not interested in things whose data just live in device tables */ +return; +#endif + if ( format==1 ) { + memset(&_vr,0,sizeof(_vr)); + readvaluerecord(&_vr,vf,ttf); + } else { + cnt = getushort(ttf); + vr = gcalloc(cnt,sizeof(struct valuerecord)); + for ( i=0; iglyph_cnt ) { + PST *pos = chunkalloc(sizeof(PST)); + pos->type = pst_position; + pos->subtable = subtable; + pos->next = info->chars[glyphs[i]]->possub; + info->chars[glyphs[i]]->possub = pos; + which = format==1 ? &_vr : &vr[i]; + pos->u.pos.xoff = which->xplacement; + pos->u.pos.yoff = which->yplacement; + pos->u.pos.h_adv_off = which->xadvance; + pos->u.pos.v_adv_off = which->yadvance; +#ifdef FONTFORGE_CONFIG_DEVICETABLES + pos->u.pos.adjust = readValDevTab(ttf,which,stoffset,info); +#endif + } + subtable->per_glyph_pst_or_kern = true; + free(vr); + free(glyphs); +} + +static void ProcessSubLookups(FILE *ttf,struct ttfinfo *info,int gpos, + struct lookup *alllooks,struct seqlookup *sl) { + int i; + (void)ttf; /* for -Wall */ + i = (intpt) sl->lookup; + if ( i<0 || i>=info->lookup_cnt ) { + LogError( _("Attempt to reference lookup %d (within a contextual lookup), but there are\n only %d lookups in %s\n"), + i, info->lookup_cnt, gpos ? "'GPOS'" : "'GSUB'" ); + info->bad_ot = true; + sl->lookup = NULL; +return; + } + sl->lookup = alllooks[i].otlookup; +} + +static void g___ContextSubTable1(FILE *ttf, int stoffset, + struct ttfinfo *info, struct lookup *l, struct lookup_subtable *subtable, int justinuse, + struct lookup *alllooks, int gpos) { + int i, j, k, rcnt, cnt; + uint16 coverage; + uint16 *glyphs; + struct subrule { + uint32 offset; + int gcnt; + int scnt; + uint16 *glyphs; + struct seqlookup *sl; + }; + struct rule { + uint32 offsets; + int scnt; + struct subrule *subrules; + } *rules; + FPST *fpst; + struct fpst_rule *rule; + int warned = false, warned2 = false; + (void)l; /* for -Wall */ + coverage = getushort(ttf); + rcnt = getushort(ttf); /* glyph count in coverage table */ + rules = galloc(rcnt*sizeof(struct rule)); + for ( i=0; i=info->glyph_cnt ) { + if ( !warned ) + LogError( _("Bad contextual or chaining sub table. Glyph %d out of range [0,%d)\n"), + rules[i].subrules[j].glyphs[k], info->glyph_cnt ); + info->bad_ot = true; + warned = true; + rules[i].subrules[j].glyphs[k] = 0; + } + } + rules[i].subrules[j].glyphs[k] = 0xffff; + rules[i].subrules[j].sl = galloc(rules[i].subrules[j].scnt*sizeof(struct seqlookup)); + for ( k=0; k= rules[i].subrules[j].gcnt+1 ) + if ( !warned2 ) { + LogError( _("Attempt to apply a lookup to a location out of the range of this contextual\n lookup seq=%d max=%d\n"), + rules[i].subrules[j].sl[k].seq, rules[i].subrules[j].gcnt ); + info->bad_ot = true; + warned2 = true; + } + rules[i].subrules[j].sl[k].lookup = (void *) (intpt) getushort(ttf); + } + } + } + + if ( justinuse==git_justinuse ) { + /* Nothing to do. This lookup doesn't really reference any glyphs */ + /* any lookups it invokes will be processed on their own */ + } else { + fpst = chunkalloc(sizeof(FPST)); + fpst->type = gpos ? pst_contextpos : pst_contextsub; + fpst->format = pst_glyphs; + fpst->subtable = subtable; + fpst->next = info->possub; + info->possub = fpst; + subtable->fpst = fpst; + + fpst->rules = rule = gcalloc(cnt,sizeof(struct fpst_rule)); + fpst->rule_cnt = cnt; + + cnt = 0; + for ( i=0; ibad_ot = true; +return; + } + rules[i].subrules[j].bglyphs = galloc((rules[i].subrules[j].bcnt+1)*sizeof(uint16)); + for ( k=0; kbad_ot = true; +return; + } + rules[i].subrules[j].glyphs = galloc((rules[i].subrules[j].gcnt+1)*sizeof(uint16)); + rules[i].subrules[j].glyphs[0] = glyphs[i]; + for ( k=1; kbad_ot = true; +return; + } + rules[i].subrules[j].fglyphs = galloc((rules[i].subrules[j].fcnt+1)*sizeof(uint16)); + for ( k=0; k=info->glyph_cnt ) { + if ( !warned ) + LogError( _("Bad contextual or chaining sub table. Glyph %d out of range [0,%d)\n"), + (&rules[i].subrules[j].glyphs)[which][k], info->glyph_cnt ); + info->bad_ot = true; + warned = true; + (&rules[i].subrules[j].glyphs)[which][k] = 0; + } + } + } + + rules[i].subrules[j].scnt = getushort(ttf); + if ( feof(ttf)) { + LogError( _("Unexpected end of file in contextual chaining subtable.\n") ); + info->bad_ot = true; +return; + } + rules[i].subrules[j].sl = galloc(rules[i].subrules[j].scnt*sizeof(struct seqlookup)); + for ( k=0; k= rules[i].subrules[j].gcnt+1 ) + if ( !warned2 ) { + LogError( _("Attempt to apply a lookup to a location out of the range of this contextual\n lookup seq=%d max=%d\n"), + rules[i].subrules[j].sl[k].seq, rules[i].subrules[j].gcnt ); + info->bad_ot = true; + warned2 = true; + } + rules[i].subrules[j].sl[k].lookup = (void *) (intpt) getushort(ttf); + } + } + } + + if ( justinuse==git_justinuse ) { + /* Nothing to do. This lookup doesn't really reference any glyphs */ + /* any lookups it invokes will be processed on their own */ + } else { + fpst = chunkalloc(sizeof(FPST)); + fpst->type = gpos ? pst_chainpos : pst_chainsub; + fpst->format = pst_glyphs; + fpst->subtable = subtable; + fpst->next = info->possub; + info->possub = fpst; + subtable->fpst = fpst; + + fpst->rules = rule = gcalloc(cnt,sizeof(struct fpst_rule)); + fpst->rule_cnt = cnt; + + cnt = 0; + for ( i=0; ibad_ot = true; +return; + } + cnt += rules[i].scnt; + rules[i].subrules = galloc(rules[i].scnt*sizeof(struct subrule)); + for ( j=0; jbad_ot = true; + free(rules); +return; + } + rules[i].subrules[j].classindeces = galloc(rules[i].subrules[j].ccnt*sizeof(uint16)); + rules[i].subrules[j].classindeces[0] = i; + for ( k=1; kbad_ot = true; + free(rules); +return; + } + rules[i].subrules[j].sl = galloc(rules[i].subrules[j].scnt*sizeof(struct seqlookup)); + for ( k=0; k= rules[i].subrules[j].ccnt ) + if ( !warned2 ) { + LogError( _("Attempt to apply a lookup to a location out of the range of this contextual\n lookup seq=%d max=%d\n"), + rules[i].subrules[j].sl[k].seq, rules[i].subrules[j].ccnt-1); + info->bad_ot = true; + warned2 = true; + } + rules[i].subrules[j].sl[k].lookup = (void *) (intpt) getushort(ttf); + } + } + } + + if ( justinuse==git_justinuse ) { + /* Nothing to do. This lookup doesn't really reference any glyphs */ + /* any lookups it invokes will be processed on their own */ + } else { + fpst = chunkalloc(sizeof(FPST)); + fpst->type = gpos ? pst_contextpos : pst_contextsub; + fpst->format = pst_class; + fpst->subtable = subtable; + subtable->fpst = fpst; + fpst->next = info->possub; + info->possub = fpst; + + fpst->rules = rule = gcalloc(cnt,sizeof(struct fpst_rule)); + fpst->rule_cnt = cnt; + class = getClassDefTable(ttf, stoffset+classoff, info); + fpst->nccnt = ClassFindCnt(class,info->glyph_cnt); + fpst->nclass = ClassToNames(info,fpst->nccnt,class,info->glyph_cnt); + + /* Just in case they used the coverage table to redefine class 0 */ + glyphs = getCoverageTable(ttf,stoffset+coverage,info); + fpst->nclass[0] = CoverageMinusClasses(glyphs,class,info); + free(glyphs); free(class); class = NULL; + + cnt = 0; + for ( i=0; ibad_ot = true; +return; + } + cnt += rules[i].scnt; + rules[i].subrules = galloc(rules[i].scnt*sizeof(struct subrule)); + for ( j=0; jbad_ot = true; + free(rules); +return; + } + rules[i].subrules[j].bci = galloc(rules[i].subrules[j].bccnt*sizeof(uint16)); + for ( k=0; kbad_ot = true; + free(rules); +return; + } + rules[i].subrules[j].classindeces = galloc(rules[i].subrules[j].ccnt*sizeof(uint16)); + rules[i].subrules[j].classindeces[0] = i; + for ( k=1; kbad_ot = true; + free(rules); +return; + } + rules[i].subrules[j].fci = galloc(rules[i].subrules[j].fccnt*sizeof(uint16)); + for ( k=0; kbad_ot = true; + free(rules); +return; + } + rules[i].subrules[j].sl = galloc(rules[i].subrules[j].scnt*sizeof(struct seqlookup)); + for ( k=0; k= rules[i].subrules[j].ccnt ) + if ( !warned2 ) { + LogError( _("Attempt to apply a lookup to a location out of the range of this contextual\n lookup seq=%d max=%d\n"), + rules[i].subrules[j].sl[k].seq, rules[i].subrules[j].ccnt-1); + info->bad_ot = true; + warned2 = true; + } + rules[i].subrules[j].sl[k].lookup = (void *) (intpt) getushort(ttf); + } + } + } + + if ( justinuse==git_justinuse ) { + /* Nothing to do. This lookup doesn't really reference any glyphs */ + /* any lookups it invokes will be processed on their own */ + } else { + fpst = chunkalloc(sizeof(FPST)); + fpst->type = gpos ? pst_chainpos : pst_chainsub; + fpst->format = pst_class; + fpst->subtable = subtable; + subtable->fpst = fpst; + fpst->next = info->possub; + info->possub = fpst; + + fpst->rules = rule = gcalloc(cnt,sizeof(struct fpst_rule)); + fpst->rule_cnt = cnt; + + class = getClassDefTable(ttf, stoffset+classoff, info); + fpst->nccnt = ClassFindCnt(class,info->glyph_cnt); + fpst->nclass = ClassToNames(info,fpst->nccnt,class,info->glyph_cnt); + + /* Just in case they used the coverage table to redefine class 0 */ + glyphs = getCoverageTable(ttf,stoffset+coverage,info); + fpst->nclass[0] = CoverageMinusClasses(glyphs,class,info); + free(glyphs); free(class); class = NULL; + + /* The docs don't mention this, but in mangal.ttf fclassoff==0 NULL */ + if ( bclassoff!=0 ) + class = getClassDefTable(ttf, stoffset+bclassoff, info); + else + class = gcalloc(info->glyph_cnt,sizeof(uint16)); + fpst->bccnt = ClassFindCnt(class,info->glyph_cnt); + fpst->bclass = ClassToNames(info,fpst->bccnt,class,info->glyph_cnt); + free(class); + if ( fclassoff!=0 ) + class = getClassDefTable(ttf, stoffset+fclassoff, info); + else + class = gcalloc(info->glyph_cnt,sizeof(uint16)); + fpst->fccnt = ClassFindCnt(class,info->glyph_cnt); + fpst->fclass = ClassToNames(info,fpst->fccnt,class,info->glyph_cnt); + free(class); + + cnt = 0; + for ( i=0; ibad_ot = true; +return; + } + coverage = galloc(gcnt*sizeof(uint16)); + for ( i=0; i= gcnt && !warned2 ) { + LogError( _("Attempt to apply a lookup to a location out of the range of this contextual\n lookup seq=%d, max=%d\n"), + sl[k].seq, gcnt-1 ); + info->bad_ot = true; + warned2 = true; + } + sl[k].lookup = (void *) (intpt) getushort(ttf); + } + + if ( justinuse==git_justinuse ) { + /* Nothing to do. This lookup doesn't really reference any glyphs */ + /* any lookups it invokes will be processed on their own */ + } else { + fpst = chunkalloc(sizeof(FPST)); + fpst->type = gpos ? pst_contextpos : pst_contextsub; + fpst->format = pst_coverage; + fpst->subtable = subtable; + subtable->fpst = fpst; + fpst->next = info->possub; + info->possub = fpst; + + fpst->rules = rule = gcalloc(1,sizeof(struct fpst_rule)); + fpst->rule_cnt = 1; + rule->u.coverage.ncnt = gcnt; + rule->u.coverage.ncovers = galloc(gcnt*sizeof(char **)); + for ( i=0; iu.coverage.ncovers[i] = GlyphsToNames(info,glyphs,true); + free(glyphs); + } + rule->lookup_cnt = scnt; + rule->lookups = sl; + for ( k=0; kbad_ot = true; +return; + } + bcoverage = galloc(bcnt*sizeof(uint16)); + for ( i=0; ibad_ot = true; +return; + } + coverage = galloc(gcnt*sizeof(uint16)); + for ( i=0; ibad_ot = true; +return; + } + fcoverage = galloc(fcnt*sizeof(uint16)); + for ( i=0; ibad_ot = true; +return; + } + sl = galloc(scnt*sizeof(struct seqlookup)); + for ( k=0; k= gcnt && !warned2 ) { + LogError( _("Attempt to apply a lookup to a location out of the range of this contextual\n lookup seq=%d, max=%d\n"), + sl[k].seq, gcnt-1 ); + info->bad_ot = true; + warned2 = true; + } + sl[k].lookup = (void *) (intpt) getushort(ttf); + } + + if ( justinuse==git_justinuse ) { + /* Nothing to do. This lookup doesn't really reference any glyphs */ + /* any lookups it invokes will be processed on their own */ + } else { + fpst = chunkalloc(sizeof(FPST)); + fpst->type = gpos ? pst_chainpos : pst_chainsub; + fpst->format = pst_coverage; + fpst->subtable = subtable; + subtable->fpst = fpst; + fpst->next = info->possub; + info->possub = fpst; + + fpst->rules = rule = gcalloc(1,sizeof(struct fpst_rule)); + fpst->rule_cnt = 1; + + rule->u.coverage.bcnt = bcnt; + rule->u.coverage.bcovers = galloc(bcnt*sizeof(char **)); + for ( i=0; iu.coverage.bcovers[i] = GlyphsToNames(info,glyphs,true); + free(glyphs); + } + + rule->u.coverage.ncnt = gcnt; + rule->u.coverage.ncovers = galloc(gcnt*sizeof(char **)); + for ( i=0; iu.coverage.ncovers[i] = GlyphsToNames(info,glyphs,true); + free(glyphs); + } + + rule->u.coverage.fcnt = fcnt; + rule->u.coverage.fcovers = galloc(fcnt*sizeof(char **)); + for ( i=0; iu.coverage.fcovers[i] = GlyphsToNames(info,glyphs,true); + free(glyphs); + } + + rule->lookup_cnt = scnt; + rule->lookups = sl; + for ( k=0; kotlookup->features; + /* Unnamed glyphs get a name built of the base name and the feature tag */ + /* assuming this lookup is tagged with a feature... */ + if ( fl!=NULL ) + for ( i=0; glyphs[i]!=0xffff; ++i ) if ( glyphs[i]glyph_cnt ) { + if ( info->chars[glyphs[i]]->name!=NULL ) { + which = format==1 ? (uint16) (glyphs[i]+delta) : glyph2s[i]; + if ( whichglyph_cnt && which>=0 && info->chars[which]!=NULL && + info->chars[which]->name==NULL ) { + char *basename = info->chars[glyphs[i]]->name; + char *str; + char tag[5], *pt=tag; + for ( j=0; tagstr[j].tag!=0 && tagstr[j].tag!=fl->featuretag; ++j ); + if ( tagstr[j].tag!=0 ) + pt = tagstr[j].str; + else { + tag[0] = fl->featuretag>>24; + if ( (tag[1] = (fl->featuretag>>16)&0xff)==' ' ) tag[1] = '\0'; + if ( (tag[2] = (fl->featuretag>>8)&0xff)==' ' ) tag[2] = '\0'; + if ( (tag[3] = (fl->featuretag)&0xff)==' ' ) tag[3] = '\0'; + tag[4] = '\0'; + pt = tag; + } + str = galloc(strlen(basename)+strlen(pt)+2); + sprintf(str,"%s.%s", basename, pt ); + info->chars[which]->name = str; + } + } + } + } else if ( justinuse==git_justinuse ) { + for ( i=0; glyphs[i]!=0xffff; ++i ) if ( glyphs[i]glyph_cnt ) { + info->inuse[glyphs[i]]= true; + which = format==1 ? (uint16) (glyphs[i]+delta) : glyph2s[i]; + info->inuse[which]= true; + } + } else if ( justinuse==git_normal ) { + for ( i=0; glyphs[i]!=0xffff; ++i ) if ( glyphs[i]glyph_cnt && info->chars[glyphs[i]]!=NULL ) { + which = format==1 ? (uint16) (glyphs[i]+delta) : glyph2s[i]; + if ( which>=info->glyph_cnt ) { + LogError( _("Bad substitution glyph: GID %d not less than %d\n"), + which, info->glyph_cnt); + info->bad_ot = true; + which = 0; + } + if ( info->chars[which]!=NULL ) { /* Might be in a ttc file */ + PST *pos = chunkalloc(sizeof(PST)); + pos->type = pst_substitution; + pos->subtable = subtable; + pos->next = info->chars[glyphs[i]]->possub; + info->chars[glyphs[i]]->possub = pos; + pos->u.subs.variant = copy(info->chars[which]->name); + } + } + } + subtable->per_glyph_pst_or_kern = true; + free(glyph2s); + free(glyphs); +} + +/* Multiple and alternate substitution lookups have the same format */ +static void gsubMultipleSubTable(FILE *ttf, int stoffset, struct ttfinfo *info, + struct lookup *l, struct lookup_subtable *subtable, int justinuse) { + int coverage, cnt, i, j, len, max; + uint16 format; + uint16 *offsets; + uint16 *glyphs, *glyph2s; + char *pt; + int bad; + int badcnt = 0; + + if ( justinuse==git_findnames ) +return; + + format=getushort(ttf); + if ( format!=1 ) /* Unknown subtable format */ +return; + coverage = getushort(ttf); + cnt = getushort(ttf); + if ( feof(ttf)) { + LogError( _("Unexpected end of file in GSUB sub-table.\n")); + info->bad_ot = true; +return; + } + offsets = galloc(cnt*sizeof(uint16)); + for ( i=0; ibad_ot = true; + if ( cntbad_ot = true; +return; + } + if ( cnt>max ) { + max = cnt+30; + glyph2s = grealloc(glyph2s,max*sizeof(uint16)); + } + len = 0; bad = false; + for ( j=0; jbad_ot = true; +return; + } + if ( glyph2s[j]>=info->glyph_cnt ) { + if ( !justinuse ) + LogError( _("Bad Multiple/Alternate substitution glyph. GID %d not less than %d\n"), + glyph2s[j], info->glyph_cnt ); + info->bad_ot = true; + if ( ++badcnt>20 ) +return; + glyph2s[j] = 0; + } + if ( justinuse==git_justinuse ) + /* Do Nothing */; + else if ( info->chars[glyph2s[j]]==NULL ) + bad = true; + else + len += strlen( info->chars[glyph2s[j]]->name) +1; + } + if ( justinuse==git_justinuse ) { + info->inuse[glyphs[i]] = 1; + for ( j=0; jinuse[glyph2s[j]] = 1; + } else if ( info->chars[glyphs[i]]!=NULL && !bad ) { + alt = chunkalloc(sizeof(PST)); + alt->type = l->otlookup->lookup_type==gsub_multiple?pst_multiple:pst_alternate; + alt->subtable = subtable; + alt->next = info->chars[glyphs[i]]->possub; + info->chars[glyphs[i]]->possub = alt; + pt = alt->u.subs.variant = galloc(len+1); + *pt = '\0'; + for ( j=0; jchars[glyph2s[j]]->name); + strcat(pt," "); + } + if ( *pt!='\0' && pt[strlen(pt)-1]==' ' ) + pt[strlen(pt)-1] = '\0'; + } + } + subtable->per_glyph_pst_or_kern = true; + free(glyphs); + free(glyph2s); + free(offsets); +} + +static void gsubLigatureSubTable(FILE *ttf, int stoffset, + struct ttfinfo *info, struct lookup *l, struct lookup_subtable *subtable, int justinuse) { + int coverage, cnt, i, j, k, lig_cnt, cc, len; + uint16 *ls_offsets, *lig_offsets; + uint16 *glyphs, *lig_glyphs, lig; + char *pt; + PST *liga; + + /* Format = */ getushort(ttf); + coverage = getushort(ttf); + cnt = getushort(ttf); + if ( feof(ttf)) { + LogError( _("Unexpected end of file in GSUB ligature sub-table.\n" )); + info->bad_ot = true; +return; + } + ls_offsets = galloc(cnt*sizeof(uint16)); + for ( i=0; ibad_ot = true; +return; + } + lig_offsets = galloc(lig_cnt*sizeof(uint16)); + for ( j=0; jbad_ot = true; +return; + } + for ( j=0; j=info->glyph_cnt ) { + LogError( _("Bad ligature glyph. GID %d not less than %d\n"), + lig, info->glyph_cnt ); + info->bad_ot = true; + lig = 0; + } + cc = getushort(ttf); + if ( cc<0 || cc>100 ) { + LogError( _("Unlikely count of ligature components (%d), I suspect this ligature sub-\n table is garbage, I'm giving up on it.\n"), cc ); + info->bad_ot = true; + free(glyphs); free(lig_offsets); +return; + } + lig_glyphs = galloc(cc*sizeof(uint16)); + lig_glyphs[0] = glyphs[i]; + for ( k=1; k=info->glyph_cnt ) { + if ( justinuse==git_normal ) + LogError( _("Bad ligature component glyph. GID %d not less than %d (in ligature %d)\n"), + lig_glyphs[k], info->glyph_cnt, lig ); + info->bad_ot = true; + lig_glyphs[k] = 0; + } + } + if ( justinuse==git_justinuse ) { + info->inuse[lig] = 1; + for ( k=0; kinuse[lig_glyphs[k]] = 1; + } else if ( justinuse==git_findnames ) { + FeatureScriptLangList *fl = l->otlookup->features; + /* If our ligature glyph has no name (and its components do) */ + /* give it a name by concatenating components with underscores */ + /* between them, and appending the tag */ + if ( fl!=NULL && info->chars[lig]!=NULL && info->chars[lig]->name==NULL ) { + int len=0; + for ( k=0; kchars[lig_glyphs[k]]==NULL || info->chars[lig_glyphs[k]]->name==NULL ) + break; + len += strlen(info->chars[lig_glyphs[k]]->name)+1; + } + if ( k==cc ) { + char *str = galloc(len+6), *pt; + char tag[5]; + tag[0] = fl->featuretag>>24; + if ( (tag[1] = (fl->featuretag>>16)&0xff)==' ' ) tag[1] = '\0'; + if ( (tag[2] = (fl->featuretag>>8)&0xff)==' ' ) tag[2] = '\0'; + if ( (tag[3] = (fl->featuretag)&0xff)==' ' ) tag[3] = '\0'; + tag[4] = '\0'; + *str='\0'; + for ( k=0; kchars[lig_glyphs[k]]->name); + strcat(str,"_"); + } + pt = str+strlen(str); + pt[-1] = '.'; + strcpy(pt,tag); + info->chars[lig]->name = str; + } + } + } else if ( info->chars[lig]!=NULL ) { + for ( k=len=0; kglyph_cnt && + info->chars[lig_glyphs[k]]!=NULL ) + len += strlen(info->chars[lig_glyphs[k]]->name)+1; + liga = chunkalloc(sizeof(PST)); + liga->type = pst_ligature; + liga->subtable = subtable; + liga->next = info->chars[lig]->possub; + info->chars[lig]->possub = liga; + liga->u.lig.lig = info->chars[lig]; + liga->u.lig.components = pt = galloc(len); + for ( k=0; kglyph_cnt && + info->chars[lig_glyphs[k]]!=NULL ) { + strcpy(pt,info->chars[lig_glyphs[k]]->name); + pt += strlen(pt); + *pt++ = ' '; + } + } + pt[-1] = '\0'; + } + free(lig_glyphs); + } + free(lig_offsets); + } + subtable->per_glyph_pst_or_kern = true; + free(ls_offsets); free(glyphs); +} + +static void gsubContextSubTable(FILE *ttf, int stoffset, + struct ttfinfo *info, struct lookup *l, struct lookup_subtable *subtable, int justinuse, + struct lookup *alllooks) { + if ( justinuse==git_findnames ) +return; /* Don't give names to these guys, they might not be unique */ + /* ie. because these are context based there is not a one to one */ + /* mapping between input glyphs and output glyphs. One input glyph */ + /* may go to several output glyphs (depending on context) and so */ + /* "." would be used for several glyphs */ + switch( getushort(ttf)) { + case 1: + g___ContextSubTable1(ttf,stoffset,info,l,subtable,justinuse,alllooks,false); + break; + case 2: + g___ContextSubTable2(ttf,stoffset,info,l,subtable,justinuse,alllooks,false); + break; + case 3: + g___ContextSubTable3(ttf,stoffset,info,l,subtable,justinuse,alllooks,false); + break; + } +} + +static void gsubChainingSubTable(FILE *ttf, int stoffset, + struct ttfinfo *info, struct lookup *l, struct lookup_subtable *subtable, int justinuse, + struct lookup *alllooks) { + if ( justinuse==git_findnames ) +return; /* Don't give names to these guys, the names might not be unique */ + switch( getushort(ttf)) { + case 1: + g___ChainingSubTable1(ttf,stoffset,info,l,subtable,justinuse,alllooks,false); + break; + case 2: + g___ChainingSubTable2(ttf,stoffset,info,l,subtable,justinuse,alllooks,false); + break; + case 3: + g___ChainingSubTable3(ttf,stoffset,info,l,subtable,justinuse,alllooks,false); + break; + } +} + +static void gsubReverseChainSubTable(FILE *ttf, int stoffset, + struct ttfinfo *info, struct lookup *l, struct lookup_subtable *subtable, int justinuse) { + int scnt, bcnt, fcnt, i; + uint16 coverage, *bcoverage, *fcoverage, *sglyphs, *glyphs; + FPST *fpst; + struct fpst_rule *rule; + (void)l; /* for -Wall */ + if ( justinuse==git_findnames ) +return; /* Don't give names to these guys, they might not be unique */ + if ( getushort(ttf)!=1 ) +return; /* Don't understand this format type */ + + coverage = getushort(ttf); + bcnt = getushort(ttf); + bcoverage = galloc(bcnt*sizeof(uint16)); + for ( i = 0 ; i=info->glyph_cnt ) { + LogError( _("Bad reverse contextual chaining substitution glyph: %d is not less than %d\n"), + sglyphs[i], info->glyph_cnt ); + info->bad_ot = true; + sglyphs[i] = 0; + } + sglyphs[i] = 0xffff; + + if ( justinuse==git_justinuse ) { + for ( i = 0 ; iinuse[sglyphs[i]] = 1; + } else { + fpst = chunkalloc(sizeof(FPST)); + fpst->type = pst_reversesub; + fpst->format = pst_reversecoverage; + fpst->subtable = subtable; + fpst->next = info->possub; + info->possub = fpst; + subtable->fpst = fpst; + + fpst->rules = rule = gcalloc(1,sizeof(struct fpst_rule)); + fpst->rule_cnt = 1; + + rule->u.rcoverage.always1 = 1; + rule->u.rcoverage.bcnt = bcnt; + rule->u.rcoverage.fcnt = fcnt; + rule->u.rcoverage.ncovers = galloc(sizeof(char *)); + rule->u.rcoverage.bcovers = galloc(bcnt*sizeof(char *)); + rule->u.rcoverage.fcovers = galloc(fcnt*sizeof(char *)); + rule->u.rcoverage.replacements = GlyphsToNames(info,sglyphs,false); + glyphs = getCoverageTable(ttf,stoffset+coverage,info); + rule->u.rcoverage.ncovers[0] = GlyphsToNames(info,glyphs,false); + free(glyphs); + for ( i=0; iu.rcoverage.bcovers[i] = GlyphsToNames(info,glyphs,true); + free(glyphs); + } + for ( i=0; iu.rcoverage.fcovers[i] = GlyphsToNames(info,glyphs,true); + free(glyphs); + } + rule->lookup_cnt = 0; /* substitution lookups needed for reverse chaining */ + } + free(sglyphs); + free(fcoverage); + free(bcoverage); +} + +static void readttfsizeparameters(FILE *ttf,int32 broken_pos,int32 correct_pos, + struct ttfinfo *info) { + int32 here; + /* Both of the two fonts I've seen that contain a 'size' feature */ + /* have multiple features all of which point to the same parameter */ + /* area. Odd. */ + /* When Adobe first released fonts containing the 'size' feature */ + /* they did not follow the spec, and the offset to the size parameters */ + /* was relative to the wrong location. They claim (Aug 2006) that */ + /* this has been fixed. Be prepared to read either style of 'size' */ + /* following the heuristics Adobe provides */ + int32 test[2]; + int i, nid; + + if ( info->last_size_pos==broken_pos || info->last_size_pos==correct_pos ) +return; + + if ( info->last_size_pos!=0 ) { + LogError( _("This font, %s, has multiple GPOS 'size' features. I'm not sure how to interpret that. I shall pick one arbitrarily.\n"), + info->fontname==NULL? _("") : info->fontname ); + info->bad_ot = true; +return; + } + + test[0] = correct_pos; test[1] = broken_pos; + here = ftell(ttf); + for ( i=0; i<2; ++i ) { + fseek(ttf,test[i],SEEK_SET); + info->last_size_pos = test[i]; + info->design_size = getushort(ttf); + if ( info->design_size==0 ) + continue; + info->fontstyle_id = getushort(ttf); + nid = getushort(ttf); + info->design_range_bottom = getushort(ttf); + info->design_range_top = getushort(ttf); + if ( info->fontstyle_id == 0 && nid==0 && + info->design_range_bottom==0 && info->design_range_top==0 ) { + /* Reasonable spec, only design size provided */ + info->fontstyle_name = NULL; + break; + } + if ( info->design_size < info->design_range_bottom || + info->design_size > info->design_range_top || + info->design_range_bottom > info->design_range_top || + nid<256 || nid>32767 ) + continue; + info->fontstyle_name = FindAllLangEntries(ttf,info,nid); + if ( info->fontstyle_name==NULL ) + continue; + else + break; + } + if ( i==2 ) { + LogError(_("The 'size' feature does not seem to follow the standard,\nnor does it conform to Adobe's early misinterpretation of\nthe standard. I cannot parse it.\n") ); + info->bad_ot = true; + info->design_size = info->design_range_bottom = info->design_range_top = info->fontstyle_id = 0; + info->fontstyle_name = NULL; + } else if ( i==1 ) { + LogError(_("The 'size' feature of this font conforms to Adobe's early misinterpretation of the otf standard.\n") ); + } + fseek(ttf,here,SEEK_SET); + +#if 0 + printf( "pos=%d size=%g, range=(%g,%g] id=%d name=%d\n", pos, + info->design_size/10.0, info->design_range_bottom/10.0, info->design_range_top/10.0, + info->fontstyle_id, info->fontstyle_name ); +#endif +} + +static struct scripts *readttfscripts(FILE *ttf,int32 pos, struct ttfinfo *info, int isgpos) { + int i,j,k,cnt; + int deflang, lcnt; + struct scripts *scripts; + + if ( pos>=(int32)info->g_bounds ) { + LogError(_("Attempt to read script data beyond end of %s table"), isgpos ? "GPOS" : "GSUB" ); + info->bad_ot = true; +return( NULL ); + } + fseek(ttf,pos,SEEK_SET); + cnt = getushort(ttf); + if ( cnt<=0 ) +return( NULL ); + else if ( cnt>1000 ) { + LogError( _("Too many scripts %d\n"), cnt ); + info->bad_ot = true; +return( NULL ); + } + + scripts = gcalloc(cnt+1,sizeof(struct scripts)); + for ( i=0; i=info->g_bounds ) { + LogError(_("Attempt to read script data beyond end of %s table"), isgpos ? "GPOS" : "GSUB" ); + info->bad_ot = true; +return( NULL ); + } + fseek(ttf,pos+scripts[i].languages[j].offset,SEEK_SET); + (void) getushort(ttf); /* lookup ordering table undefined */ + scripts[i].languages[j].req = getushort(ttf); + scripts[i].languages[j].fcnt = getushort(ttf); + if ( feof(ttf)) { + LogError(_("End of file when reading scripts in %s table"), isgpos ? "GPOS" : "GSUB" ); + info->bad_ot = true; +return( NULL ); + } + scripts[i].languages[j].features = galloc(scripts[i].languages[j].fcnt*sizeof(uint16)); + for ( k=0; kbad_ot = true; +return( NULL ); + } + +return( scripts ); +} + +static struct feature *readttffeatures(FILE *ttf,int32 pos,int isgpos, struct ttfinfo *info) { + /* read the features table returning an array containing all interesting */ + /* features */ + int cnt; + int i,j; + struct feature *features; + int parameters; + + if ( pos>=(int32)info->g_bounds ) { + LogError(_("Attempt to read feature data beyond end of %s table"), isgpos ? "GPOS" : "GSUB" ); + info->bad_ot = true; +return( NULL ); + } + fseek(ttf,pos,SEEK_SET); + info->feature_cnt = cnt = getushort(ttf); + if ( cnt<=0 ) +return( NULL ); + else if ( cnt>1000 ) { + LogError( _("Too many features %d\n"), cnt ); + info->bad_ot = true; +return( NULL ); + } + + features = gcalloc(cnt+1,sizeof(struct feature)); + for ( i=0; i=info->g_bounds ) { + LogError(_("Attempt to read feature data beyond end of %s table"), isgpos ? "GPOS" : "GSUB" ); + info->bad_ot = true; +return( NULL ); + } + fseek(ttf,pos+features[i].offset,SEEK_SET); + parameters = getushort(ttf); + if ( features[i].tag==CHR('s','i','z','e') && parameters!=0 && !feof(ttf)) + readttfsizeparameters(ttf,pos+parameters, + pos+parameters+features[i].offset,info); + features[i].lcnt = getushort(ttf); + if ( feof(ttf) ) { + LogError(_("End of file when reading features in %s table"), isgpos ? "GPOS" : "GSUB" ); + info->bad_ot = true; +return( NULL ); + } + features[i].lookups = galloc(features[i].lcnt*sizeof(uint16)); + for ( j=0; j=(int32)info->g_bounds ) { + LogError(_("Attempt to read lookup data beyond end of %s table"), isgpos ? "GPOS" : "GSUB" ); + info->bad_ot = true; +return( NULL ); + } + + fseek(ttf,pos,SEEK_SET); + info->lookup_cnt = cnt = getushort(ttf); + info->cur_lookups = NULL; + if ( cnt<=0 ) +return( NULL ); + else if ( cnt>1000 ) { + LogError( _("Too many lookups %d\n"), cnt ); + info->bad_ot = true; +return( NULL ); + } + + lookups = gcalloc(cnt+1,sizeof(struct lookup)); + for ( i=0; i=info->g_bounds ) { + LogError(_("Attempt to read lookup data beyond end of %s table"), isgpos ? "GPOS" : "GSUB" ); + info->bad_ot = true; +return( NULL ); + } + fseek(ttf,pos+lookups[i].offset,SEEK_SET); + lookups[i].type = getushort(ttf); + lookups[i].flags = getushort(ttf); + lookups[i].subtabcnt = getushort(ttf); + lookups[i].subtab_offsets = galloc(lookups[i].subtabcnt*sizeof(int32)); + for ( j=0; jlookup_index = i; + if ( last==NULL ) + info->cur_lookups = otlookup; + else + last->next = otlookup; + last = otlookup; + otlookup->lookup_type = (isgpos<<8) | lookups[i].type; + otlookup->lookup_flags = lookups[i].flags; + otlookup->lookup_index = i; + if ( feof(ttf) ) { + LogError(_("End of file when reading lookups in %s table"), isgpos ? "GPOS" : "GSUB" ); + info->bad_ot = true; +return( NULL ); + } + for ( j=0; jnext = otlookup->subtables; + st->lookup = otlookup; + otlookup->subtables = st; + } + } + if ( isgpos ) + info->gpos_lookups = info->cur_lookups; + else + info->gsub_lookups = info->cur_lookups; +return( lookups ); +} + +static void tagLookupsWithFeature(uint32 script_tag,uint32 lang_tag, + int required_feature, struct feature *feature, struct lookup *lookups, + struct ttfinfo *info) { + uint32 feature_tag = required_feature ? REQUIRED_FEATURE : feature->tag; + int i; + OTLookup *otlookup; + FeatureScriptLangList *fl; + + /* The otf docs are ambiguous as to the capitalization of the default */ + /* script. The capitalized version is correct (uncapitalized is used for languages) */ + if ( script_tag == DEFAULT_LANG ) + script_tag = DEFAULT_SCRIPT; + + for ( i=0; i < feature->lcnt; ++i ) { + if ( feature->lookups[i]>=info->lookup_cnt ) { + LogError( _("Lookup out of bounds in feature table.\n") ); + info->bad_ot = true; + } else { + otlookup = lookups[feature->lookups[i]].otlookup; + for ( fl = otlookup->features; fl!=NULL && fl->featuretag!=feature_tag; fl=fl->next ); + if ( fl==NULL ) { + fl = chunkalloc(sizeof(FeatureScriptLangList)); + fl->featuretag = feature_tag; + fl->next = otlookup->features; + otlookup->features = fl; + } + FListAppendScriptLang(fl,script_tag,lang_tag); + } + } +} + +static void tagLookupsWithScript(struct scripts *scripts, + struct feature *features, struct lookup *lookups,struct ttfinfo *info ) { + int i,j; + struct scripts *s; + struct language *lang; + struct lookup *l; + + if ( scripts==NULL || features==NULL ) +return; /* Legal, I'd guess, but not very interesting. Perhaps all lookups are controlled by the JSTF table or something */ + + /* First tag every lookup with all script, lang, feature combinations that*/ + /* invoke it */ + for ( s=scripts; s->tag!=0; ++s ) { + for ( lang=s->languages, i=0; ilangcnt; ++i, ++lang ) { + if ( lang->req==0xffff ) + /* Do Nothing */; + else if ( lang->req>= info->feature_cnt ) { + LogError( _("Required feature out of bounds in script table.\n") ); + info->bad_ot = true; + } else + tagLookupsWithFeature(s->tag,lang->tag,true,&features[lang->req], + lookups,info); + for ( j=0; jfcnt; ++j ) { + if ( lang->features[j]>=info->feature_cnt ) { + LogError( _("Feature out of bounds in script table.\n") ); + info->bad_ot = true; + } else + tagLookupsWithFeature(s->tag,lang->tag,false,&features[lang->features[j]], + lookups,info); + } + } + } + + /* The scripts got added backwards so reverse to put them in */ + /* alphabetic order again */ + for ( l=lookups, i=0; l->offset!=0; ++l, ++i ) { + OTLookup *otl = l->otlookup; + FeatureScriptLangList *fl; + struct scriptlanglist *sl, *next, *prev; + for ( fl=otl->features; fl!=NULL; fl=fl->next ) { + prev = NULL; + for ( sl=fl->scripts; sl!=NULL; sl = next ) { + next = sl->next; + sl->next = prev; + prev = sl; + } + fl->scripts = prev; + } + } +} + +static void gposExtensionSubTable(FILE *ttf, int stoffset, + struct ttfinfo *info, struct lookup *l, struct lookup_subtable *subtable, + struct lookup *alllooks) { + uint32 base = ftell(ttf), st, offset; + int lu_type; + (void)stoffset; /* for -Wall */ + /* Format = */ getushort(ttf); + lu_type = getushort(ttf); + offset = getlong(ttf); + + l->otlookup->lookup_type = 0x100|lu_type; + + fseek(ttf,st = base+offset,SEEK_SET); + switch ( lu_type ) { + case 1: + gposSimplePos(ttf,st,info,l,subtable); + break; + case 2: + gposKernSubTable(ttf,st,info,l,subtable); + break; + case 3: + gposCursiveSubTable(ttf,st,info,l,subtable); + break; + case 4: case 5: case 6: + gposMarkSubTable(ttf,st,info,l,subtable); + break; + case 7: + gposContextSubTable(ttf,st,info,l,subtable,alllooks); + break; + case 8: + gposChainingSubTable(ttf,st,info,l,subtable,alllooks); + break; + case 9: + LogError( _("This font is erroneous: it has a GPOS extension subtable that points to\nanother extension sub-table.\n") ); + info->bad_ot = true; + break; +/* Any cases added here also need to go in the gposLookupSwitch */ + default: + LogError( _("Unknown GPOS sub-table type: %d\n"), lu_type ); + info->bad_ot = true; + break; + } + if ( ftell(ttf)>info->gpos_start+info->gpos_length ) { + LogError( _("Subtable extends beyond end of GPOS table\n") ); + info->bad_ot = true; + } +} + +static void gsubExtensionSubTable(FILE *ttf, int stoffset, + struct ttfinfo *info, struct lookup *l, struct lookup_subtable *subtable, int justinuse, + struct lookup *alllooks) { + uint32 base = ftell(ttf), st, offset; + int lu_type; + (void)stoffset; /* for -Wall */ + /* Format = */ getushort(ttf); + lu_type = getushort(ttf); + offset = getlong(ttf); + + l->otlookup->lookup_type = lu_type; + + fseek(ttf,st = base+offset,SEEK_SET); + switch ( lu_type ) { + case 1: + gsubSimpleSubTable(ttf,st,info,l,subtable,justinuse); + break; + case 2: case 3: /* Multiple and alternate have same format, different semantics */ + gsubMultipleSubTable(ttf,st,info,l,subtable,justinuse); + break; + case 4: + gsubLigatureSubTable(ttf,st,info,l,subtable,justinuse); + break; + case 5: + gsubContextSubTable(ttf,st,info,l,subtable,justinuse,alllooks); + break; + case 6: + gsubChainingSubTable(ttf,st,info,l,subtable,justinuse,alllooks); + break; + case 7: + LogError( _("This font is erroneous: it has a GSUB extension subtable that points to\nanother extension sub-table.\n") ); + info->bad_ot = true; + break; + case 8: + gsubReverseChainSubTable(ttf,st,info,l,subtable,justinuse); + break; +/* Any cases added here also need to go in the gsubLookupSwitch */ + default: + LogError( _("Unknown GSUB sub-table type: %d\n"), lu_type ); + info->bad_ot = true; + break; + } + if ( ftell(ttf)>info->gsub_start+info->gsub_length ) { + LogError( _("Subtable extends beyond end of GSUB table\n") ); + info->bad_ot = true; + } +} + +static void gposLookupSwitch(FILE *ttf, int st, + struct ttfinfo *info, struct lookup *l, struct lookup_subtable *subtable, + struct lookup *alllooks) { + + switch ( l->type | 0x100 ) { + case gpos_single: + gposSimplePos(ttf,st,info,l,subtable); + break; + case gpos_pair: + gposKernSubTable(ttf,st,info,l,subtable); + break; + case gpos_cursive: + gposCursiveSubTable(ttf,st,info,l,subtable); + break; + case gpos_mark2base: case gpos_mark2ligature: case gpos_mark2mark: + gposMarkSubTable(ttf,st,info,l,subtable); + break; + case gpos_context: + gposContextSubTable(ttf,st,info,l,subtable,alllooks); + break; + case gpos_contextchain: + gposChainingSubTable(ttf,st,info,l,subtable,alllooks); + break; + case 0x109: + gposExtensionSubTable(ttf,st,info,l,subtable,alllooks); + break; +/* Any cases added here also need to go in the gposExtensionSubTable */ + default: + LogError( _("Unknown GPOS sub-table type: %d\n"), l->otlookup->lookup_type ); + info->bad_ot = true; + break; + } + if ( ftell(ttf)>info->gpos_start+info->gpos_length ) { + LogError( _("Subtable extends beyond end of GPOS table\n") ); + info->bad_ot = true; + } +} + +static void gsubLookupSwitch(FILE *ttf, int st, + struct ttfinfo *info, struct lookup *l, struct lookup_subtable *subtable, int justinuse, + struct lookup *alllooks) { + + switch ( l->type ) { + case gsub_single: + gsubSimpleSubTable(ttf,st,info,l,subtable,justinuse); + break; + case gsub_multiple: case gsub_alternate: /* Multiple and alternate have same format, different semantics */ + gsubMultipleSubTable(ttf,st,info,l,subtable,justinuse); + break; + case gsub_ligature: + gsubLigatureSubTable(ttf,st,info,l,subtable,justinuse); + break; + case gsub_context: + gsubContextSubTable(ttf,st,info,l,subtable,justinuse,alllooks); + break; + case gsub_contextchain: + gsubChainingSubTable(ttf,st,info,l,subtable,justinuse,alllooks); + break; + case 7: + gsubExtensionSubTable(ttf,st,info,l,subtable,justinuse,alllooks); + break; + case gsub_reversecchain: + gsubReverseChainSubTable(ttf,st,info,l,subtable,justinuse); + break; +/* Any cases added here also need to go in the gsubExtensionSubTable */ + default: + LogError( _("Unknown GSUB sub-table type: %d\n"), l->otlookup->lookup_type ); + info->bad_ot = true; + break; + } + if ( ftell(ttf)>info->g_bounds ) { + LogError( _("Subtable extends beyond end of GSUB table\n" )); + info->bad_ot = true; + } +} + +static void ScriptsFree(struct scripts *scripts) { + int i,j; + + if ( scripts==NULL ) +return; + for ( i=0; scripts[i].offset!=0 ; ++i ) { + for ( j=0; jgpos_start; + info->g_bounds = base + info->gpos_length; + } else { + base = info->gsub_start; + info->g_bounds = base + info->gsub_length; + } + fseek(ttf,base,SEEK_SET); + /* version = */ getlong(ttf); + script_off = getushort(ttf); + feature_off = getushort(ttf); + lookup_start = base+getushort(ttf); + + scripts = readttfscripts(ttf,base+script_off,info,gpos); + features = readttffeatures(ttf,base+feature_off,gpos,info); + /* It is legal to have lookups with no features or scripts */ + /* For example if all the lookups were controlled by the JSTF table */ + lookups = readttflookups(ttf,lookup_start,info,gpos); + if ( lookups==NULL ) { + ScriptsFree(scripts); + FeaturesFree(features); +return; + } + tagLookupsWithScript(scripts,features,lookups,info); + ScriptsFree(scripts); scripts = NULL; + FeaturesFree(features); features = NULL; + + for ( l = lookups; l->offset!=0; ++l ) { + for ( k=0, subtable=l->otlookup->subtables; ksubtabcnt; ++k, subtable=subtable->next ) { + st = l->subtab_offsets[k]; + fseek(ttf,st,SEEK_SET); + if ( gpos ) { + gposLookupSwitch(ttf,st,info,l,subtable,lookups); + } else { + gsubLookupSwitch(ttf,st,info,l,subtable,inusetype,lookups); + } + } + } + + /* Then generate some user-friendly names for the all the lookups */ + if ( inusetype==git_normal ) + for ( l=lookups; l->offset!=0; ++l ) + NameOTLookup(l->otlookup,NULL); + + LookupsFree(lookups); + if ( inusetype!=git_normal && !gpos ) { + OTLookupListFree(info->gsub_lookups); + info->gsub_lookups = info->cur_lookups = NULL; + } +} + +void readttfgsubUsed(FILE *ttf,struct ttfinfo *info) { + ProcessGPOSGSUB(ttf,info,false,git_justinuse); + info->g_bounds = 0; +} + +void GuessNamesFromGSUB(FILE *ttf,struct ttfinfo *info) { + ProcessGPOSGSUB(ttf,info,false,git_findnames); + info->g_bounds = 0; +} + +void readttfgpossub(FILE *ttf,struct ttfinfo *info,int gpos) { + ProcessGPOSGSUB(ttf,info,gpos,git_normal); + info->g_bounds = 0; +} + +void readttfgdef(FILE *ttf,struct ttfinfo *info) { + int lclo, gclass, mac; + int coverage, cnt, i,j, format; + uint16 *glyphs, *lc_offsets, *offsets; + uint32 caret_base; + PST *pst; + SplineChar *sc; + + fseek(ttf,info->gdef_start,SEEK_SET); + if ( getlong(ttf)!=0x00010000 ) +return; + info->g_bounds = info->gdef_start + info->gdef_length; + gclass = getushort(ttf); + /* attach list = */ getushort(ttf); + lclo = getushort(ttf); /* ligature caret list */ + mac = getushort(ttf); /* mark attach class */ + + if ( gclass!=0 ) { + uint16 *gclasses = getClassDefTable(ttf,info->gdef_start+gclass, info); + for ( i=0; iglyph_cnt; ++i ) + if ( info->chars[i]!=NULL && gclasses[i]!=0 ) + info->chars[i]->glyph_class = gclasses[i]+1; + free(gclasses); + } + + if ( mac!=0 ) { + uint16 *mclasses = getClassDefTable(ttf,info->gdef_start+mac, info); + const char *format_spec = _("MarkClass-%d"); + info->mark_class_cnt = ClassFindCnt(mclasses,info->glyph_cnt); + info->mark_classes = ClassToNames(info,info->mark_class_cnt,mclasses,info->glyph_cnt); + info->mark_class_names = galloc(info->mark_class_cnt*sizeof(char *)); + info->mark_class_names[0] = NULL; + for ( i=1; imark_class_cnt; ++i ) { + info->mark_class_names[i] = galloc((strlen(format_spec)+10)); + sprintf( info->mark_class_names[i], format_spec, i ); + } + free(mclasses); + } + + if ( lclo!=0 ) { + lclo += info->gdef_start; + fseek(ttf,lclo,SEEK_SET); + coverage = getushort(ttf); + cnt = getushort(ttf); + if ( cnt==0 ) +return; + lc_offsets = galloc(cnt*sizeof(uint16)); + for ( i=0; iglyph_cnt ) { + fseek(ttf,lclo+lc_offsets[i],SEEK_SET); + sc = info->chars[glyphs[i]]; + for ( pst=sc->possub; pst!=NULL && pst->type!=pst_lcaret; pst=pst->next ); + if ( pst==NULL ) { + pst = chunkalloc(sizeof(PST)); + pst->next = sc->possub; + sc->possub = pst; + pst->type = pst_lcaret; + pst->subtable = NULL; + sc->lig_caret_cnt_fixed = true; + } + caret_base = ftell(ttf); + pst->u.lcaret.cnt = getushort(ttf); + if ( pst->u.lcaret.carets!=NULL ) free(pst->u.lcaret.carets); + offsets = galloc(pst->u.lcaret.cnt*sizeof(uint16)); + for ( j=0; ju.lcaret.cnt; ++j ) + offsets[j] = getushort(ttf); + pst->u.lcaret.carets = galloc(pst->u.lcaret.cnt*sizeof(int16)); + for ( j=0; ju.lcaret.cnt; ++j ) { + fseek(ttf,caret_base+offsets[j],SEEK_SET); + format=getushort(ttf); + if ( format==1 ) { + pst->u.lcaret.carets[j] = getushort(ttf); + } else if ( format==2 ) { + pst->u.lcaret.carets[j] = 0; + /* point = */ getushort(ttf); + } else if ( format==3 ) { + pst->u.lcaret.carets[j] = getushort(ttf); + /* in device table = */ getushort(ttf); + } else { + LogError( _("!!!! Unknown caret format %d !!!!\n"), format ); + info->bad_ot = true; + } + } + free(offsets); + } + free(lc_offsets); + free(glyphs); + } + info->g_bounds = 0; +} + +static void readttf_applelookup(FILE *ttf,struct ttfinfo *info, + void (*apply_values)(struct ttfinfo *info, int gfirst, int glast,FILE *ttf), + void (*apply_value)(struct ttfinfo *info, int gfirst, int glast,FILE *ttf), + void (*apply_default)(struct ttfinfo *info, int gfirst, int glast,void *def), + void *def, int allow_out_of_bounds) { + int format, i, first, last, data_off, cnt, prev; + uint32 here; + uint32 base = ftell(ttf); + + format = getushort(ttf); + switch ( format ) { + case 0: /* Simple array */ + apply_values(info,0,info->glyph_cnt-1,ttf); + break; + case 2: /* Segment Single */ + /* Entry size */ getushort(ttf); + cnt = getushort(ttf); + /* search range */ getushort(ttf); + /* log2(cnt) */ getushort(ttf); + /* range shift */ getushort(ttf); + prev = 0; + for ( i=0; i=0xffff || + (!allow_out_of_bounds && last>=info->glyph_cnt )) { + LogError( _("Bad lookup table: format=2 (%d/%d), first=%d last=%d total glyphs in font=%d\n"), + i,cnt,first,last,info->glyph_cnt ); + info->bad_gx = true; + } else { + if ( apply_default!=NULL ) + apply_default(info,prev,first-1,def); + apply_value(info,first,last,ttf); + prev = last+1; + } + } + break; + case 4: /* Segment multiple */ + /* Entry size */ getushort(ttf); + cnt = getushort(ttf); + /* search range */ getushort(ttf); + /* log2(cnt) */ getushort(ttf); + /* range shift */ getushort(ttf); + prev = 0; + for ( i=0; i=0xffff || + (!allow_out_of_bounds && last>=info->glyph_cnt )) { + LogError( _("Bad lookup table: format=4 (%d/%d), first=%d last=%d total glyphs in font=%d\n"), + i,cnt,first,last,info->glyph_cnt ); + info->bad_gx = true; + } else { + here = ftell(ttf); + if ( apply_default!=NULL ) + apply_default(info,prev,first-1,def); + fseek(ttf,base+data_off,SEEK_SET); + apply_values(info,first,last,ttf); + fseek(ttf,here,SEEK_SET); + prev = last+1; + } + } + break; + case 6: /* Single table */ + /* Entry size */ getushort(ttf); + cnt = getushort(ttf); + /* search range */ getushort(ttf); + /* log2(cnt) */ getushort(ttf); + /* range shift */ getushort(ttf); + prev = 0; + for ( i=0; i=0xffff || (!allow_out_of_bounds && first>=info->glyph_cnt )) { + LogError( _("Bad lookup table: format=6, first=%d total glyphs in font=%d\n"), + first,info->glyph_cnt ); + info->bad_gx = true; + } else { + if ( apply_default!=NULL ) + apply_default(info,prev,first-1,def); + apply_value(info,first,first,ttf); + prev = first+1; + } + } + break; + case 8: /* Simple array */ + first = getushort(ttf); + cnt = getushort(ttf); + if ( first+cnt>=0xffff || (!allow_out_of_bounds && first+cnt>=info->glyph_cnt )) { + LogError( _("Bad lookup table: format=8, first=%d cnt=%d total glyphs in font=%d\n"), + first,cnt,info->glyph_cnt ); + info->bad_gx = true; + } else { + if ( apply_default!=NULL ) { + apply_default(info,0,first-1,def); + apply_default(info,first+cnt,info->glyph_cnt-1,def); + } + apply_values(info,first,first+cnt-1,ttf); + } + break; + default: + LogError( _("Invalid lookup table format. %d\n"), format ); + info->bad_gx = true; + break; + } +} + +static void OTLAppend(struct ttfinfo *info,OTLookup *otl,int gpos) { + OTLookup *prev; + int pos=0; + + if ( gpos && info->gpos_lookups == NULL ) + info->gpos_lookups = otl; + else if ( !gpos && info->gsub_lookups == NULL ) + info->gsub_lookups = otl; + else { + prev = gpos ? info->gpos_lookups : info->gsub_lookups; + pos = 1; + while ( prev->next!=NULL ) { + prev = prev->next; + ++pos; + } + prev->next = otl; + } + otl->lookup_index = pos; +} + +static void OTLRemove(struct ttfinfo *info,OTLookup *otl,int gpos) { + /* Remove the most recent lookup. We got bad data and can't use it */ + OTLookup *prev, **base; + + base = gpos ? &info->gpos_lookups : &info->gsub_lookups; + if ( *base==otl ) + *base = NULL; + else if ( *base!=NULL ) { + for ( prev = *base; prev->next!=NULL && prev->next!=otl; prev = prev->next ); + prev->next = NULL; + } + OTLookupFree(otl); +} + +static OTLookup *NewMacLookup(struct ttfinfo *info,int gpos) { + OTLookup *otl; + + otl = chunkalloc(sizeof(OTLookup)); + otl->lookup_type = gpos ? kern_statemachine : morx_context; + otl->subtables = chunkalloc(sizeof(struct lookup_subtable)); + otl->subtables->lookup = otl; + otl->features = chunkalloc(sizeof(FeatureScriptLangList)); + if ( gpos ) + otl->features->featuretag = CHR('k','e','r','n'); + else { + otl->features->featuretag = (info->mort_feat<<16) | (info->mort_setting); + otl->features->ismac = true; + } + OTLAppend(info,otl,gpos); +return( otl ); +} + +static OTLookup *NewMacSubsLookup(struct ttfinfo *info,OTLookup *parent, + int nest_index, OTLookup **subs) { + OTLookup *otl; + char *name, *format; + + if ( subs[nest_index]!=NULL ) +return( subs[nest_index] ); + + /* These are nested lookups, only to be activated by a state machine */ + /* as such they have no feature tags nor scripts of their own. */ + otl = chunkalloc(sizeof(OTLookup)); + otl->lookup_type = gsub_single; + otl->subtables = chunkalloc(sizeof(struct lookup_subtable)); + otl->subtables->lookup = otl; +/* GT: This is to give the name to a nested substitution lookup invoked by */ +/* GT: a statemachine. The %s is the name of the statemachine('s lookup) */ +/* GT: and the %d is n, where this lookup is the n'th defined for this state */ +/* GT: machine */ +#ifdef LUA_FF_LIB + format = _("%s_ns_%d"); +#else + format = _("%s nested-substitutions %d"); +#endif + name = galloc(strlen(parent->lookup_name)+strlen(format)+10); + sprintf( name, format, parent->lookup_name, nest_index ); + otl->lookup_name = name; +#ifdef LUA_FF_LIB + otl->subtables->subtable_name = strconcat(name,"_s"); +#else + otl->subtables->subtable_name = strconcat3(name," ",_("subtable")); +#endif + OTLAppend(info,otl,false); + subs[nest_index] = otl; +return( otl ); +} + +static void InfoNameOTLookup(OTLookup *otl,struct ttfinfo *info) { + SplineFont sf; + + memset(&sf,0,sizeof(sf)); + sf.features = info->features; + NameOTLookup(otl,&sf); +} + +static void TTF_SetProp(struct ttfinfo *info,int gnum, int prop) { + int offset; + PST *pst; + + if ( gnum<0 || gnum>=info->glyph_cnt ) { + LogError( _("Glyph out of bounds in 'prop' table %d\n"), gnum ); + info->bad_gx = true; +return; + } + + if ( prop&0x1000 ) { /* Mirror */ + offset = (prop<<20)>>28; + if ( gnum+offset>=0 && gnum+offsetglyph_cnt && + info->chars[gnum+offset]->name!=NULL ) { + pst = chunkalloc(sizeof(PST)); + pst->type = pst_substitution; + pst->subtable = info->mort_subs_lookup->subtables; + FListAppendScriptLang(info->mort_subs_lookup->features,SCScriptFromUnicode(info->chars[gnum]), + DEFAULT_LANG); + pst->next = info->chars[gnum]->possub; + info->chars[gnum]->possub = pst; + pst->u.subs.variant = copy(info->chars[gnum+offset]->name); + } + } +} + +static void prop_apply_values(struct ttfinfo *info, int gfirst, int glast,FILE *ttf) { + int i; + + for ( i=gfirst; i<=glast; ++i ) + TTF_SetProp(info,i, getushort(ttf)); +} + +static void prop_apply_value(struct ttfinfo *info, int gfirst, int glast,FILE *ttf) { + int i; + int prop; + + prop = getushort(ttf); + for ( i=gfirst; i<=glast; ++i ) + TTF_SetProp(info,i, prop); +} + +static void prop_apply_default(struct ttfinfo *info, int gfirst, int glast,void *def) { + int def_prop, i; + + def_prop = (intpt) def; + for ( i=gfirst; i<=glast; ++i ) + TTF_SetProp(info,i, def_prop); +} + +void readttfprop(FILE *ttf,struct ttfinfo *info) { + int def; + + fseek(ttf,info->prop_start,SEEK_SET); + /* The one example that I've got has a wierd version, so I don't check it */ + /* the three versions that I know about are all pretty much the same, just a few extra flags */ + /* version = */ getlong(ttf); + /* format = */ getushort(ttf); + def = getushort(ttf); + info->mort_subs_lookup = NewMacLookup(info,false); + info->mort_subs_lookup->lookup_type = gsub_single; + info->mort_subs_lookup->features->featuretag = CHR('r','t','l','a'); + info->mort_subs_lookup->features->ismac = false; + info->mort_subs_lookup->subtables->per_glyph_pst_or_kern = true; + readttf_applelookup(ttf,info, + prop_apply_values,prop_apply_value, + prop_apply_default,(void *) (intpt) def, false); + InfoNameOTLookup(info->mort_subs_lookup,info); +} + +static void TTF_SetLcaret(struct ttfinfo *info, int gnum, int offset, FILE *ttf) { + uint32 here = ftell(ttf); + PST *pst; + SplineChar *sc; + int cnt, i; + + if ( gnum<0 || gnum>=info->glyph_cnt ) { + LogError( _("Glyph out of bounds in 'lcar' table %d\n"), gnum ); + info->bad_gx = true; +return; + } else if ( (sc=info->chars[gnum])==NULL ) +return; + + fseek(ttf,info->lcar_start+offset,SEEK_SET); + cnt = getushort(ttf); + pst = chunkalloc(sizeof(PST)); + pst->type = pst_lcaret; + pst->subtable = NULL; + pst->next = sc->possub; + sc->possub = pst; + sc->lig_caret_cnt_fixed = true; + pst->u.lcaret.cnt = cnt; + pst->u.lcaret.carets = galloc(cnt*sizeof(uint16)); + for ( i=0; iu.lcaret.carets[i] = getushort(ttf); + fseek(ttf,here,SEEK_SET); +} + +static void lcar_apply_values(struct ttfinfo *info, int gfirst, int glast,FILE *ttf) { + int i; + + for ( i=gfirst; i<=glast; ++i ) + TTF_SetLcaret(info,i, getushort(ttf), ttf); +} + +static void lcar_apply_value(struct ttfinfo *info, int gfirst, int glast,FILE *ttf) { + int i; + int offset; + + offset = getushort(ttf); + for ( i=gfirst; i<=glast; ++i ) + TTF_SetLcaret(info,i, offset, ttf); +} + +void readttflcar(FILE *ttf,struct ttfinfo *info) { + + fseek(ttf,info->lcar_start,SEEK_SET); + /* version = */ getlong(ttf); + if ( getushort(ttf)!=0 ) /* A format type of 1 has the caret locations */ +return; /* indicated by points */ + readttf_applelookup(ttf,info, + lcar_apply_values,lcar_apply_value,NULL,NULL,false); +} + +static void TTF_SetOpticalBounds(struct ttfinfo *info, int gnum, int left, int right) { + PST *pst; + SplineChar *sc; + + if ( left==0 && right==0 ) +return; + + if ( gnum<0 || gnum>=info->glyph_cnt ) { + LogError( _("Glyph out of bounds in 'opbd' table %d\n"), gnum ); + info->bad_gx = true; +return; + } else if ( (sc=info->chars[gnum])==NULL ) +return; + + if ( left!=0 ) { + pst = chunkalloc(sizeof(PST)); + pst->type = pst_position; + pst->subtable = info->mort_subs_lookup->subtables; + FListAppendScriptLang(info->mort_subs_lookup->features,SCScriptFromUnicode(sc), + DEFAULT_LANG); + pst->next = sc->possub; + sc->possub = pst; + pst->u.pos.xoff = left; + pst->u.pos.h_adv_off = left; + } + if ( right!=0 ) { + pst = chunkalloc(sizeof(PST)); + pst->type = pst_position; + pst->subtable = info->mort_pos_lookup2->subtables; + FListAppendScriptLang(info->mort_pos_lookup2->features,SCScriptFromUnicode(sc), + DEFAULT_LANG); + pst->next = sc->possub; + sc->possub = pst; + pst->u.pos.h_adv_off = -right; + } +} + +static void opbd_apply_values(struct ttfinfo *info, int gfirst, int glast,FILE *ttf) { + int i, left, right, offset; + uint32 here; + + for ( i=gfirst; i<=glast; ++i ) { + offset = getushort(ttf); + here = ftell(ttf); + fseek(ttf,info->opbd_start+6/*opbd header*/+offset,SEEK_SET); + left = (int16) getushort(ttf); + /* top = (int16) */ getushort(ttf); + right = (int16) getushort(ttf); + /* bottom = (int16) */ getushort(ttf); + fseek(ttf,here,SEEK_SET); + TTF_SetOpticalBounds(info,i, left, right); + } +} + +static void opbd_apply_value(struct ttfinfo *info, int gfirst, int glast,FILE *ttf) { + int i, left, right, offset; + uint32 here; + + offset = getushort(ttf); + here = ftell(ttf); + fseek(ttf,info->opbd_start+offset,SEEK_SET); + left = (int16) getushort(ttf); + /* top = (int16) */ getushort(ttf); + right = (int16) getushort(ttf); + /* bottom = (int16) */ getushort(ttf); + fseek(ttf,here,SEEK_SET); + + for ( i=gfirst; i<=glast; ++i ) + TTF_SetOpticalBounds(info,i, left, right); +} + +void readttfopbd(FILE *ttf,struct ttfinfo *info) { + + fseek(ttf,info->opbd_start,SEEK_SET); + /* version = */ getlong(ttf); + if ( getushort(ttf)!=0 ) /* A format type of 1 has the bounds */ +return; /* indicated by points */ + info->mort_subs_lookup = NewMacLookup(info,true); + info->mort_subs_lookup->lookup_type = gpos_single; + info->mort_subs_lookup->features->featuretag = CHR('l','f','b','d'); + info->mort_subs_lookup->features->ismac = false; + info->mort_subs_lookup->subtables->per_glyph_pst_or_kern = true; + + info->mort_pos_lookup2 = NewMacLookup(info,true); + info->mort_pos_lookup2->lookup_type = gpos_single; + info->mort_pos_lookup2->features->featuretag = CHR('r','t','b','d'); + info->mort_pos_lookup2->features->ismac = false; + info->mort_pos_lookup2->subtables->per_glyph_pst_or_kern = true; + + readttf_applelookup(ttf,info, + opbd_apply_values,opbd_apply_value,NULL,NULL,false); + InfoNameOTLookup(info->mort_subs_lookup,info); + InfoNameOTLookup(info->mort_pos_lookup2,info); +} + +/* Interesting. The mac allows the creation of temporary gids beyond the */ +/* range specified by the font, as long as the user never sees them. So */ +/* it seems perfectly legal for one substitution to use a gid of 1111 */ +/* if that gid never reaches output but will be converted into a real gid */ +/* by a subsequent substitution. I saw this used in a conditional situation */ +/* to provide a temporary context for a later match. */ +static SplineChar *CreateBadGid(struct ttfinfo *info,int badgid) { + int i; + SplineChar *fake; + char name[60]; + + if ( badgid<0 || badgid>=0xffff ) /* <0 should never happen, 0xffff is the special "deleted" glyph, >0xffff should never happen */ +return( NULL ); + + for ( i=0; ibadgid_cnt; ++i ) + if ( info->badgids[i]->orig_pos == badgid ) +return( info->badgids[i] ); + + if ( info->badgid_cnt>=info->badgid_max ) + info->badgids = grealloc(info->badgids,(info->badgid_max += 20)*sizeof(SplineChar *)); + fake = SplineCharCreate(2); + fake->orig_pos = badgid; + sprintf( name, "Out-Of-Range-GID-%d", badgid ); + fake->name = copy(name); + fake->widthset = true; /* So it doesn't just vanish on us */ + fake->width = fake->vwidth = info->emsize; + info->badgids[info->badgid_cnt++] = fake; +return( fake ); +} + +static void TTF_SetMortSubs(struct ttfinfo *info, int gnum, int gsubs) { + PST *pst; + SplineChar *sc, *ssc; + + if ( gsubs==0 ) +return; + + if ( gnum<0 || gnum>=info->glyph_cnt ) { + if ( !info->warned_morx_out_of_bounds_glyph ) { + LogError( _("Glyph out of bounds in 'mort'/'morx' table %d\n"), gnum ); + info->bad_gx = true; + info->warned_morx_out_of_bounds_glyph = true; + } + sc = CreateBadGid(info,gnum); + } else + sc = info->chars[gnum]; + ssc = NULL; + if ( gsubs<0 || (gsubs>=info->glyph_cnt && gsubs!=0xffff)) { + if ( !info->warned_morx_out_of_bounds_glyph ) { + LogError( _("Substitute glyph out of bounds in 'mort'/'morx' table %d\n"), gsubs ); + info->bad_gx = true; + info->warned_morx_out_of_bounds_glyph = true; + } + ssc = CreateBadGid(info,gsubs); + } else if ( gsubs!=0xffff ) + ssc=info->chars[gsubs]; + if ( sc==NULL || (gsubs!=0xffff && ssc==NULL) ) +return; + + pst = chunkalloc(sizeof(PST)); + pst->type = pst_substitution; + pst->subtable = info->mort_subs_lookup->subtables; + if ( info->mort_subs_lookup->features!=NULL ) + FListsAppendScriptLang(info->mort_subs_lookup->features,SCScriptFromUnicode(sc), + DEFAULT_LANG); + pst->next = sc->possub; + sc->possub = pst; + pst->u.subs.variant = gsubs!=0xffff ? copy(ssc->name) : copy(MAC_DELETED_GLYPH_NAME); +} + +static void mort_apply_values(struct ttfinfo *info, int gfirst, int glast,FILE *ttf) { + uint16 gnum; + int i; + + for ( i=gfirst; i<=glast; ++i ) { + gnum = getushort(ttf); + TTF_SetMortSubs(info,i, gnum); + } +} + +static void mort_apply_value(struct ttfinfo *info, int gfirst, int glast,FILE *ttf) { + uint16 gnum; + int i; + + gnum = getushort(ttf); + + for ( i=gfirst; i<=glast; ++i ) + TTF_SetMortSubs(info,i, gnum ); +} + +static void mortclass_apply_values(struct ttfinfo *info, int gfirst, int glast,FILE *ttf) { + int i; + + for ( i=gfirst; i<=glast; ++i ) + info->morx_classes[i] = getushort(ttf); +} + +static void mortclass_apply_value(struct ttfinfo *info, int gfirst, int glast,FILE *ttf) { + uint16 class; + int i; + + class = getushort(ttf); + + for ( i=gfirst; i<=glast; ++i ) + info->morx_classes[i] = class; +} + +int32 memlong(uint8 *data,int len, int offset) { + if ( offset>=0 && offset+3=0 && offset+1>8); + data[offset+1] = val&0xff; +} + +#define MAX_LIG_COMP 16 +struct statemachine { + uint8 *data; + int length; + uint32 nClasses; + uint32 classOffset, stateOffset, entryOffset, ligActOff, compOff, ligOff; + uint16 *classes; + uint16 lig_comp_classes[MAX_LIG_COMP]; + uint16 lig_comp_glyphs[MAX_LIG_COMP]; + int lcp; + uint8 *states_in_use; + int smax; + struct ttfinfo *info; + int cnt; +}; + +static void mort_figure_ligatures(struct statemachine *sm, int lcp, int off, int32 lig_offset, + struct ttfinfo *info) { + uint32 lig; + int i, j, lig_glyph; + PST *pst; + int len; + + if ( lcp<0 || off+3>sm->length ) +return; + + lig = memlong(sm->data,sm->length, off); + off += sizeof(int32); + + for ( i=0; iinfo->glyph_cnt; ++i ) if ( sm->classes[i]==sm->lig_comp_classes[lcp] ) { + sm->lig_comp_glyphs[lcp] = i; + lig_offset += memushort(sm->data,sm->length,2*( ((((int32) lig)<<2)>>2) + i ) ); + if ( lig&0xc0000000 ) { + if ( lig_offset+1 > sm->length ) { + LogError( _("Invalid ligature offset\n") ); + info->bad_gx = true; + break; + } + lig_glyph = memushort(sm->data,sm->length,lig_offset); + if ( lig_glyph>=sm->info->glyph_cnt ) { + LogError( _("Attempt to make a ligature for glyph %d out of "), + lig_glyph ); + for ( j=lcp; jlcp; ++j ) + LogError("%d ",sm->lig_comp_glyphs[j]); + LogError("\n"); + info->bad_gx = true; + } else { + char *comp; + for ( len=0, j=lcp; jlcp; ++j ) + if ( sm->lig_comp_glyphs[j]info->glyph_cnt && + sm->info->chars[sm->lig_comp_glyphs[j]]!=NULL ) + len += strlen(sm->info->chars[sm->lig_comp_glyphs[j]]->name)+1; + comp = galloc(len+1); + *comp = '\0'; + for ( j=lcp; jlcp; ++j ) { + if ( sm->lig_comp_glyphs[j]info->glyph_cnt && + sm->info->chars[sm->lig_comp_glyphs[j]]!=NULL ) { + if ( *comp!='\0' ) + strcat(comp," "); + strcat(comp,sm->info->chars[sm->lig_comp_glyphs[j]]->name); + } + } + if ( lig_glyphinfo->glyph_cnt && sm->info->chars[lig_glyph]!=NULL ) { + for ( pst=sm->info->chars[lig_glyph]->possub; pst!=NULL; pst=pst->next ) + if ( pst->type==pst_ligature && pst->subtable==sm->info->mort_subs_lookup->subtables && + strcmp(comp,pst->u.lig.components)==0 ) + break; + /* There are cases where there will be multiple entries for */ + /* the same lig. ie. if we have "ff" and "ffl" then there */ + /* will be multiple entries for "ff" */ + if ( pst == NULL ) { + pst = chunkalloc(sizeof(PST)); + pst->type = pst_ligature; + pst->subtable = sm->info->mort_subs_lookup->subtables; + if ( sm->info->mort_subs_lookup->features!=NULL ) + FListsAppendScriptLang(sm->info->mort_subs_lookup->features, + SCScriptFromUnicode(sm->info->chars[lig_glyph]), + DEFAULT_LANG); + pst->u.lig.components = comp; + pst->u.lig.lig = sm->info->chars[lig_glyph]; + pst->next = sm->info->chars[lig_glyph]->possub; + sm->info->chars[lig_glyph]->possub = pst; + } else + free(comp); + } else { + LogError( _("Bad font: Ligature glyph %d is missing\n"), lig_glyph ); + info->bad_gx = true; + } + } + } else + mort_figure_ligatures(sm,lcp-1,off,lig_offset,info); + lig_offset -= memushort(sm->data,sm->length,2*( ((((int32) lig)<<2)>>2) + i ) ); + } +} + +static void follow_mort_state(struct statemachine *sm,int offset,int class, + struct ttfinfo *info) { + int state = (offset-sm->stateOffset)/sm->nClasses; + int class_top, class_bottom; + + if ( state<0 || state>=sm->smax || sm->states_in_use[state] || sm->lcp>=MAX_LIG_COMP ) +return; + ++ sm->cnt; + if ( sm->cnt>=10000 ) { + if ( sm->cnt==10000 ) +/* GT: This is a reference to "Much Ado About Nothing". The string should read */ +/* GT: "A ligature sub-table in Apple's 'mort'/'morx' table is too\ncomplex for me to understand. I shall give up on it.\nYour ligatures may not be complete." */ + LogError(_("In an attempt to process the ligatures of this font, I've concluded\nthat the state machine in Apple's mort/morx table is\n(like the learned constable) too cunning to be understood.\nI shall give up on it. Your ligatures may be incomplete.\n") ); + info->bad_gx = true; +return; + } + sm->states_in_use[state] = true; + + if ( class==-1 ) { class_bottom = 0; class_top = sm->nClasses; } + else { class_bottom = class; class_top = class+1; } + for ( class=class_bottom; classdata[offset+class]; + int newState = memushort(sm->data,sm->length,sm->entryOffset+4*ent); + int flags = memushort(sm->data,sm->length,sm->entryOffset+4*ent+2); + /* If we have the same entry as state 0, then presumably we are */ + /* ignoring the components read so far and starting over with a new */ + /* lig (similarly for state 1) */ + if (( state!=0 && sm->data[sm->stateOffset+class] == ent ) || + (state>1 && sm->data[sm->stateOffset+sm->nClasses+class]==ent )) + continue; + if ( flags&0x8000 ) /* Set component */ + sm->lig_comp_classes[sm->lcp++] = class; + if ( flags&0x3fff ) { + mort_figure_ligatures(sm, sm->lcp-1, flags & 0x3fff, 0,info); + } else if ( flags&0x8000 ) + follow_mort_state(sm,newState,(flags&0x4000)?class:-1,info); + if ( flags&0x8000 ) + --sm->lcp; + } + sm->states_in_use[state] = false; +} + +static void morx_figure_ligatures(struct statemachine *sm, int lcp, int ligindex, int32 lig_offset, + struct ttfinfo *info) { + uint32 lig; + int i, j, lig_glyph; + PST *pst; + int len; + + if ( lcp<0 || sm->ligActOff+4*ligindex+3>(unsigned)sm->length ) +return; + + lig = memlong(sm->data,sm->length, sm->ligActOff+4*ligindex); + ++ligindex; + + for ( i=0; iinfo->glyph_cnt; ++i ) if ( sm->classes[i]==sm->lig_comp_classes[lcp] ) { + sm->lig_comp_glyphs[lcp] = i; + lig_offset += memushort(sm->data,sm->length,sm->compOff + 2*( ((((int32) lig)<<2)>>2) + i ) ); + if ( lig&0xc0000000 ) { + if ( sm->ligOff+2*lig_offset+1 > (unsigned)sm->length ) { + LogError( _("Invalid ligature offset\n") ); + info->bad_gx = true; + break; + } + lig_glyph = memushort(sm->data,sm->length,sm->ligOff+2*lig_offset); + if ( lig_glyph>=sm->info->glyph_cnt || sm->info->chars[lig_glyph]==NULL ) { + LogError( _("Attempt to make a ligature for (non-existent) glyph %d out of "), + lig_glyph ); + info->bad_gx = true; + for ( j=lcp; jlcp; ++j ) + LogError("%d ",sm->lig_comp_glyphs[j]); + LogError("\n"); + } else { + char *comp; + for ( len=0, j=lcp; jlcp; ++j ) + len += strlen(sm->info->chars[sm->lig_comp_glyphs[j]]->name)+1; + comp = galloc(len); + *comp = '\0'; + for ( j=lcp; jlcp; ++j ) { + if ( *comp!='\0' ) + strcat(comp," "); + strcat(comp,sm->info->chars[sm->lig_comp_glyphs[j]]->name); + } + for ( pst=sm->info->chars[lig_glyph]->possub; pst!=NULL; pst=pst->next ) + if ( pst->type==pst_ligature && pst->subtable==sm->info->mort_subs_lookup->subtables && + strcmp(comp,pst->u.lig.components)==0 ) + break; + /* There are cases where there will be multiple entries for */ + /* the same lig. ie. if we have "ff" and "ffl" then there */ + /* will be multiple entries for "ff" */ + if ( pst == NULL ) { + pst = chunkalloc(sizeof(PST)); + pst->type = pst_ligature; + pst->subtable = sm->info->mort_subs_lookup->subtables; + if ( sm->info->mort_subs_lookup->features!=NULL ) + FListsAppendScriptLang(sm->info->mort_subs_lookup->features, + SCScriptFromUnicode(sm->info->chars[lig_glyph]), + DEFAULT_LANG); + pst->u.lig.components = comp; + pst->u.lig.lig = sm->info->chars[lig_glyph]; + pst->next = sm->info->chars[lig_glyph]->possub; + sm->info->chars[lig_glyph]->possub = pst; + } else + free(comp); + } + } else + morx_figure_ligatures(sm,lcp-1,ligindex,lig_offset,info); + lig_offset -= memushort(sm->data,sm->length,sm->compOff + 2*( ((((int32) lig)<<2)>>2) + i ) ); + } +} + +static void follow_morx_state(struct statemachine *sm,int state,int class, + struct ttfinfo *info) { + int class_top, class_bottom; + + if ( state<0 || state>=sm->smax || sm->states_in_use[state] || sm->lcp>=MAX_LIG_COMP ) +return; + ++ sm->cnt; + if ( sm->cnt>=10000 ) { + if ( sm->cnt==10000 ) + LogError(_("In an attempt to process the ligatures of this font, I've concluded\nthat the state machine in Apple's mort/morx table is\n(like the learned constable) too cunning to be understood.\nI shall give up on it. Your ligatures may be incomplete.\n") ); + info->bad_gx = true; +return; + } + sm->states_in_use[state] = true; + + if ( class==-1 ) { class_bottom = 0; class_top = sm->nClasses; } + else { class_bottom = class; class_top = class+1; } + for ( class=class_bottom; classdata, sm->length,sm->stateOffset + 2*(state*sm->nClasses+class) ); + int newState = memushort(sm->data,sm->length,sm->entryOffset+6*ent); + int flags = memushort(sm->data,sm->length,sm->entryOffset+6*ent+2); + int ligindex = memushort(sm->data,sm->length,sm->entryOffset+6*ent+4); + /* If we have the same entry as state 0, then presumably we are */ + /* ignoring the components read so far and starting over with a new */ + /* lig (similarly for state 1) */ + if (( state!=0 && memushort(sm->data, sm->length,sm->stateOffset + 2*class) == ent ) || + (state>1 && memushort(sm->data,sm->length, sm->stateOffset + 2*(sm->nClasses+class))==ent )) + continue; + if ( flags&0x8000 ) /* Set component */ + sm->lig_comp_classes[sm->lcp++] = class; + if ( flags&0x2000 ) { + morx_figure_ligatures(sm, sm->lcp-1, ligindex, 0,info); + } else if ( flags&0x8000 ) + follow_morx_state(sm,newState,(flags&0x4000)?class:-1,info); + if ( flags&0x8000 ) + --sm->lcp; + } + sm->states_in_use[state] = false; +} + +static void readttf_mortx_lig(FILE *ttf,struct ttfinfo *info,int ismorx,uint32 base,uint32 length) { + uint32 here; + struct statemachine sm; + int first, cnt, i; + + memset(&sm,0,sizeof(sm)); + sm.info = info; + here = ftell(ttf); + length -= here-base; + sm.data = galloc(length); + sm.length = length; + if ( fread(sm.data,1,length,ttf)!=length ) { + free(sm.data); + LogError( _("Bad mort ligature table. Not long enough\n")); + info->bad_gx = true; +return; + } + fseek(ttf,here,SEEK_SET); + if ( ismorx ) { + sm.nClasses = memlong(sm.data,sm.length, 0); + sm.classOffset = memlong(sm.data,sm.length, sizeof(int32)); + sm.stateOffset = memlong(sm.data,sm.length, 2*sizeof(int32)); + sm.entryOffset = memlong(sm.data,sm.length, 3*sizeof(int32)); + sm.ligActOff = memlong(sm.data,sm.length, 4*sizeof(int32)); + sm.compOff = memlong(sm.data,sm.length, 5*sizeof(int32)); + sm.ligOff = memlong(sm.data,sm.length, 6*sizeof(int32)); + fseek(ttf,here+sm.classOffset,SEEK_SET); + /* I used only to allocate space for info->glyph_cnt entries */ + /* but some fonts use out of bounds gids as flags to contextual */ + /* morx subtables, so allocate a full 65536 */ + sm.classes = info->morx_classes = galloc(65536*sizeof(uint16)); + for ( i=0; i<65536; ++i ) + sm.classes[i] = 1; /* Out of bounds */ + readttf_applelookup(ttf,info, + mortclass_apply_values,mortclass_apply_value,NULL,NULL,true); + sm.smax = length/(2*sm.nClasses); + sm.states_in_use = gcalloc(sm.smax,sizeof(uint8)); + follow_morx_state(&sm,0,-1,info); + } else { + sm.nClasses = memushort(sm.data,sm.length, 0); + sm.classOffset = memushort(sm.data,sm.length, sizeof(uint16)); + sm.stateOffset = memushort(sm.data,sm.length, 2*sizeof(uint16)); + sm.entryOffset = memushort(sm.data,sm.length, 3*sizeof(uint16)); + sm.ligActOff = memushort(sm.data,sm.length, 4*sizeof(uint16)); + sm.compOff = memushort(sm.data,sm.length, 5*sizeof(uint16)); + sm.ligOff = memushort(sm.data,sm.length, 6*sizeof(uint16)); + sm.classes = galloc(info->glyph_cnt*sizeof(uint16)); + for ( i=0; iglyph_cnt; ++i ) + sm.classes[i] = 1; /* Out of bounds */ + first = memushort(sm.data,sm.length, sm.classOffset); + cnt = memushort(sm.data,sm.length, sm.classOffset+sizeof(uint16)); + for ( i=0; istate_start = here; + + if ( ismorx ) { + nclasses = getlong(ttf); + class_off = getlong(ttf); + state_off = getlong(ttf); + entry_off = getlong(ttf); + st->extra_offsets[0] = getlong(ttf); + st->extra_offsets[1] = getlong(ttf); + st->extra_offsets[2] = getlong(ttf); + } else { + nclasses = getushort(ttf); /* Number of bytes per state in state subtable, equal to number of classes */ + class_off = getushort(ttf); + state_off = getushort(ttf); + entry_off = getushort(ttf); + st->extra_offsets[0] = getushort(ttf); + st->extra_offsets[1] = getushort(ttf); + st->extra_offsets[2] = getushort(ttf); + } + st->nclasses = nclasses; + st->state_offset = state_off; + + /* parse class subtable */ + fseek(ttf,here+class_off,SEEK_SET); + error = 0; + if ( ismorx ) { + /* I used only to allocate space for info->glyph_cnt entries */ + /* but some fonts use out of bounds gids as flags to contextual */ + /* morx subtables, so allocate a full 65536 */ + st->classes2 = info->morx_classes = galloc(65536*sizeof(uint16)); + for ( i=0; i<65536; ++i ) + st->classes2[i] = 1; /* Out of bounds */ + readttf_applelookup(ttf,info, + mortclass_apply_values,mortclass_apply_value,NULL,NULL,true); + for ( i=0; i<65536; ++i ) { + if ( /*st->classes2[i]<0 ||*/ st->classes2[i]>=st->nclasses ) { + if ( !error ) + LogError( _("Bad class in state machine.\n" )); + info->bad_gx = true; + error = true; + st->classes2[i] = 1; /* Out of bounds */ + } + } + } else { + st->first_glyph = getushort(ttf); + st->nglyphs = getushort(ttf); + if ( feof(ttf)) { + LogError(_("Bad glyph count in mort table.\n")); + info->bad_gx = true; + st->nglyphs = 0; + } + st->classes = galloc(st->nglyphs); + fread(st->classes,1,st->nglyphs,ttf); + for ( i=0; inglyphs; ++i ) { + if ( /*st->classes[i]<0 ||*/ st->classes[i]>=st->nclasses ) { + if ( !error ) + LogError( _("Bad class in state machine.\n" )); + info->bad_gx = true; + error = true; + st->classes[i] = 1; /* Out of bounds */ + } + } + } + + + /* The size of an entry is variable. There are 2 uint16 fields at the begin-*/ + /* ning of all entries. There may be some number of shorts following these*/ + /* used for indexing special tables. */ + ent_size = 4 + 2*ent_extras; + st->entry_size = ent_size; + st->entry_extras = ent_extras; + + /* Apple does not provide a way of figuring out the size of either of the */ + /* state or entry tables, so we must parse both as we go and try to work */ + /* out the maximum values... */ + /* There are always at least 2 states defined. Parse them and find what */ + /* is the biggest entry they use, then parse those entries and find what */ + /* is the biggest state they use, and then repeat until we don't find any*/ + /* more states or entries */ + old_state_max = 0; old_ent_max = 0; + state_max = 2; ent_max = 0; + while ( old_state_max!=state_max ) { + i = old_state_max*nclasses; + fseek(ttf,here+state_off+(ismorx?(int)(i*sizeof(uint16)):i),SEEK_SET); + old_state_max = state_max; + for ( ; i ent_max ) + ent_max = ent+1; + } + if ( ent_max==old_ent_max ) /* Nothing more */ + break; + if ( ent_max>1000 ) { + LogError( _("It looks to me as though there's a morx sub-table with more than 1000\n transitions. Which makes me think there's probably an error\n" )); + info->bad_gx = true; + free(st); +return( NULL ); + } + fseek(ttf,here+entry_off+old_ent_max*ent_size,SEEK_SET); + i = old_ent_max; + old_ent_max = ent_max; + for ( ; istate_max ) + state_max = new_state+1; + } + if ( state_max>1000 ) { + LogError( _("It looks to me as though there's a morx sub-table with more than 1000\n states. Which makes me think there's probably an error\n" )); + info->bad_gx = true; + free(st); +return( NULL ); + } + } + + st->nstates = state_max; + st->nentries = ent_max; + + fseek(ttf,here+state_off,SEEK_SET); + /* an array of arrays of state transitions, each represented by one byte */ + /* which is an index into the Entry subtable, which comes next. */ + /* One dimension is the number of states, and the other the */ + /* number of classes (classes vary faster than states) */ + /* The first two states are predefined, 0 is start of text, 1 start of line*/ + if ( ismorx ) { + st->state_table2 = galloc(st->nstates*st->nclasses*sizeof(uint16)); + for ( i=0; instates*st->nclasses; ++i ) + st->state_table2[i] = getushort(ttf); + } else { + st->state_table = galloc(st->nstates*st->nclasses); + fread(st->state_table,1,st->nstates*st->nclasses,ttf); + } + + /* parse the entry subtable */ + fseek(ttf,here+entry_off,SEEK_SET); + st->transitions = galloc(st->nentries*st->entry_size); + fread(st->transitions,1,st->nentries*st->entry_size,ttf); +return( st ); +} + +static void statetablefree(struct statetable *st) { + free( st->classes ); + free( st->state_table ); + free( st->classes2 ); + free( st->state_table2 ); + free( st->transitions ); + free( st ); +} + +static void tagSMWithScriptLang(FeatureScriptLangList *fl, + struct statetable *st,int ismorx,struct ttfinfo *info) { + int i; + + if ( ismorx ) { + for ( i=0; iglyph_cnt; ++i ) + if ( st->classes2[i]>=4 && info->chars[i]!=NULL ) + FListsAppendScriptLang(fl,SCScriptFromUnicode(info->chars[i]), + DEFAULT_LANG); + } else { + for ( i=st->first_glyph; ifirst_glyph+st->nglyphs && iglyph_cnt; ++i ) + if ( info->chars[i]!=NULL ) + FListsAppendScriptLang(fl,SCScriptFromUnicode(info->chars[i]), + DEFAULT_LANG); + } +} + +static char **ClassesFromStateTable(struct statetable *st,int ismorx,struct ttfinfo *info) { + /* On the mac the first four classes should be left blank. only class 1 */ + /* (out of bounds) is supposed to be used in the class array anyway */ + char **classes = galloc(st->nclasses*sizeof(char *)); + int *lens = gcalloc(st->nclasses,sizeof(int)); + int i; + + + if ( ismorx ) { + for ( i=0; iglyph_cnt; ++i ) if ( info->chars[i]!=NULL ) + lens[st->classes2[i]] += strlen( info->chars[i]->name )+1; + if ( info->badgids!=NULL ) + for ( i=0; ibadgid_cnt; ++i ) if ( info->badgids[i]!=NULL ) + lens[st->classes2[info->badgids[i]->orig_pos]] += strlen( info->badgids[i]->name )+1; + } else { + for ( i=st->first_glyph; ifirst_glyph+st->nglyphs && iglyph_cnt; ++i ) + if ( info->chars[i]!=NULL ) + lens[st->classes[i-st->first_glyph]] += strlen( info->chars[i]->name )+1; + } + classes[0] = classes[1] = classes[2] = classes[3] = NULL; + for ( i=4; inclasses; ++i ) { + classes[i] = galloc(lens[i]+1); + *classes[i] = '\0'; + } + if ( ismorx ) { + for ( i=0; iglyph_cnt; ++i ) if ( st->classes2[i]>=4 && info->chars[i]!=NULL ) { + strcat(classes[st->classes2[i]],info->chars[i]->name ); + strcat(classes[st->classes2[i]]," "); + } + if ( info->badgids!=NULL ) + for ( i=0; ibadgid_cnt; ++i ) if ( info->badgids[i]!=NULL && st->classes2[info->badgids[i]->orig_pos]>=4) { + strcat(classes[st->classes2[info->badgids[i]->orig_pos]],info->badgids[i]->name ); + strcat(classes[st->classes2[info->badgids[i]->orig_pos]]," "); + } + } else { + for ( i=st->first_glyph; ifirst_glyph+st->nglyphs && iglyph_cnt; ++i ) if ( st->classes[i-st->first_glyph]>=4 && info->chars[i]!=NULL ) { + strcat(classes[st->classes[i-st->first_glyph]],info->chars[i]->name ); + strcat(classes[st->classes[i-st->first_glyph]]," " ); + } + } + for ( i=4; inclasses; ++i ) { + int len = strlen(classes[i]); + if ( len!=0 ) + classes[i][len-1] = '\0'; /* Remove trailing space */ + } + free(lens); +return( classes ); +} + +static char *NamesOfList(uint32 pos,int cnt, FILE *ttf, struct ttfinfo *info) { + int i, len, glyph; + char *str; + + if ( cnt==0 ) +return(NULL); + + fseek(ttf,pos,SEEK_SET); + for ( i=len=0; iglyph_cnt ) + len += strlen(info->chars[glyph]->name)+1; + } + if ( len==0 ) +return( NULL ); + str = galloc(len+1); + fseek(ttf,pos,SEEK_SET); + for ( i=len=0; iglyph_cnt ) { + strcpy(str+len,info->chars[glyph]->name); + len += strlen(info->chars[glyph]->name); + str[len++] = ' '; + } + } + str[len-1] = '\0'; +return( str ); +} + +#if 0 +static void RunStateFindKernDepth_(ASM *as,int state,int kdepth,uint8 *used) { + int j, kd; + + if ( used[state] ) +return; + used[state] = true; + + for ( j=0; jclass_cnt; ++j ) { + kd = kdepth; + flags = as->state[state*as->class_cnt+j]; + if ( flags&0x8000 ) + ++kd; + if ( (flags&0x3fff)!=0 ) { + as->state[state*as->class_cnt+j].u.kern.kcnt = kd; + kd = 0; + } + RunStateFindKernDepth_(as,as->state[state*as->class_cnt+j].next_state,kd,used); + } +} + +static void RunStateFindKernDepth(ASM *as) { + uint8 *used = gcalloc(as->class_cnt); + int i; + + for ( i=0; iclass_cnt*as->state_cnt; ++i ) { + as->state[i].u.kern.kerns = NULL; + as->state[i].u.kern.kcnt = (as->state[i].flags&0x3fff)==0 ? 0 : -1; + } + RunStateFindKernDepth_(as,0,0,used); + RunStateFindKernDepth_(as,1,0,used); +} +#endif + +static void KernReadKernList(FILE *ttf,uint32 pos, struct asm_state *trans) { +/* Apple does not document how to detect the end of the list */ +/* They say "an odd value that depends on coverage" */ +/* They should say "an odd value". Any odd value terminates the list. */ +/* coverage is irrelevant */ +/* Note: List is backwards (glyphs are popped of LIFO so last glyph on */ +/* in stack gets first kern value) */ +/* There are at most 8 glyphs */ + int i,j,k; + int16 buffer[8]; /* At most 8 kerns are supported */ + + fseek(ttf,pos,SEEK_SET); + for ( i=0; i<8; ++i ) { + buffer[i]=(int16) getushort(ttf); + if ( buffer[i]&1 ) { + buffer[i] &= ~1; + ++i; + break; + } + } + if ( i==0 ) { + trans->u.kern.kerns = NULL; + } else { + trans->u.kern.kerns = galloc(i*sizeof(int16)); + for ( j=i-1, k=0; ku.kern.kerns[k] = buffer[j]; + } + trans->u.kern.kcnt = i; +} + +static void read_perglyph_subs(FILE *ttf,struct ttfinfo *info, + int subs_base,int subs_end,struct statetable *st, + uint8 *classes_subbed, int evermarked, uint8 *used) { + /* The file is positioned at the start of a per-glyph substitution table */ + /* Sadly great chunks of this table have been omitted. We are where glyph */ + /* 0 would be if it were present. We've no idea what has been omitted */ + /* Simple checks: if the file pointer is outside of the area devoted to */ + /* substitutions then we know it is ignorable. */ + /* If the current glyph is not in the list of glyphs which could ever */ + /* be substituted then we know it is ignorable. */ + /* Note: the above list is easily figured for substitutions on the current*/ + /* glyph, but if a substitution ever happens to a marked glyph then we */ + /* can't guess. We could check for all classes that get marked, but that*/ + /* doesn't work if there is a current substitution before the class is */ + /* marked, after that we don't know what class the glyph might have */ + /* Instead, for marked subs, we keep track of all locations which were */ + /* used in a current-only sub, and assume that they aren't valid for us */ + /* If the putative substitution glyph is not a valid glyph then we know */ + /* it is ignorable */ + int i, subs, was = info->mort_tag_mac; + uint32 here; + + info->mort_tag_mac = false; + for ( i=0; iglyph_cnt; ++i ) { + here = ftell(ttf); + subs = getushort(ttf); + if ( subs>=info->glyph_cnt && subs!=0xffff ) /* 0xffff means delete the substituted glyph */ + continue; + if ( subs==0 ) /* A little risky, one could substitute notdef */ + continue; /* but they shouldn't */ + if ( here<(unsigned)subs_base ) + continue; + if ( here>=(unsigned)subs_end ) + break; + if ( evermarked ) { + if ( used[(here-subs_base)/2] ) + continue; + } else if ( ifirst_glyph || i>=st->first_glyph+st->nglyphs ) { + if ( !classes_subbed[1]) { /* Out of bounds class */ + if ( i>=st->first_glyph+st->nglyphs ) + break; + continue; + } + } else { + if ( !classes_subbed[st->classes[i-st->first_glyph]] ) + continue; + } + + if ( !evermarked ) + used[(here-subs_base)/2] = true; + TTF_SetMortSubs(info, i, subs); + } + info->mort_tag_mac = was; +} + +static int sm_lookupfind(int32 *lookups,int *_lm,int off) { + int lm = *_lm, i; + for ( i=0; i<=lm; ++i ) + if ( lookups[i]==off ) +return( i ); + (*_lm)++; + lookups[i] = off; +return( i ); +} + +static ASM *readttf_mortx_asm(FILE *ttf,struct ttfinfo *info,int ismorx, + uint32 subtab_len,enum asm_type type,int extras, + uint32 coverage, OTLookup *otl) { + struct statetable *st; + ASM *as; + int i,j; + uint32 here = ftell(ttf); + + st = read_statetable(ttf,extras,ismorx,info); + if ( st==NULL ) +return(NULL); + + as = chunkalloc(sizeof(ASM)); + as->type = type; + as->flags = coverage>>16; + as->class_cnt = st->nclasses; + as->state_cnt = st->nstates; + as->classes = ClassesFromStateTable(st,ismorx,info); + as->state = galloc(st->nclasses*st->nstates*sizeof(struct asm_state)); + if ( otl==NULL ) + otl = NewMacLookup(info,false); + otl->lookup_type = type==asm_indic ? morx_indic : type==asm_context ? morx_context : morx_insert; + as->subtable = otl->subtables; otl->subtables->sm = as; + tagSMWithScriptLang(otl->features,st,ismorx,info); + InfoNameOTLookup(otl,info); + for ( i=0; inclasses*st->nstates; ++i ) { + int trans; + if ( ismorx ) { + trans = st->state_table2[i]; + as->state[i].next_state = memushort(st->transitions,st->nentries*st->entry_size,trans*st->entry_size); + } else { + trans = st->state_table[i]; + as->state[i].next_state = (memushort(st->transitions,st->nentries*st->entry_size,trans*st->entry_size)-st->state_offset)/st->nclasses; + } + as->state[i].flags = memushort(st->transitions,st->nentries*st->entry_size,trans*st->entry_size+2); + if ( extras>0 ) + as->state[i].u.context.mark_lookup = (void *) (intpt) memushort(st->transitions,st->nentries*st->entry_size, trans*st->entry_size+2+2); + if ( extras>1 ) + as->state[i].u.context.cur_lookup = (void *) (intpt) memushort(st->transitions,st->nentries*st->entry_size, trans*st->entry_size+2+2+2); + } + /* Indic tables have no attached subtables, just a verb in the flag field */ + /* so for them we are done. For the others... */ + if ( !ismorx && type==asm_insert ) { + for ( i=0; inclasses*st->nstates; ++i ) { + char *cur=NULL, *mark=NULL; + if ( (as->state[i].flags&0x3e0)!=0 && as->state[i].u.context.mark_lookup!=NULL ) { + cur = NamesOfList(here+(intpt) as->state[i].u.context.mark_lookup, + (as->state[i].flags&0x3e0)>>5,ttf,info); + } + if ( (as->state[i].flags&0x01f)!=0 && as->state[i].u.context.cur_lookup!=NULL ) { + mark = NamesOfList(here+(intpt) as->state[i].u.context.cur_lookup, + as->state[i].flags&0x01f,ttf,info); + } + as->state[i].u.insert.cur_ins=cur; + as->state[i].u.insert.mark_ins=mark; + } + } else if ( ismorx && type == asm_insert ) { + for ( i=0; inclasses*st->nstates; ++i ) { + char *cur=NULL, *mark=NULL; + if ( (as->state[i].flags&0x3e0)!=0 && (intpt) as->state[i].u.context.mark_lookup!=0xffff ) { + cur = NamesOfList(here+st->extra_offsets[0]+((intpt) as->state[i].u.context.mark_lookup)*2, + (as->state[i].flags&0x3e0)>>5,ttf,info); + } + if ( (as->state[i].flags&0x01f)!=0 && ((intpt) as->state[i].u.context.cur_lookup)!=0xffff ) { + mark = NamesOfList(here+st->extra_offsets[0]+((intpt) as->state[i].u.context.cur_lookup)*2, + as->state[i].flags&0x01f,ttf,info); + } + as->state[i].u.insert.cur_ins=cur; + as->state[i].u.insert.mark_ins=mark; + } + } else if ( !ismorx && type == asm_context ) { + /* I don't see any good way to parse a per-glyph substitution table */ + /* the problem being that most of the per-glyph table is missing */ + /* but I don't know which bits. The offsets I'm given point to */ + /* where glyph 0 would be if it were present in the table, but */ + /* mostly only the bit used is present... */ + /* I could walk though the state machine and find all classes that */ + /* go to a specific substitution (which would tell me what glyphs */ + /* were active). That's not hard for substitutions of the current */ + /* glyph, but it is intractibable for marked glyphs. And I can't */ + /* do one without the other. So I do neither. */ + /* One thing I could test fairly easily would be to see whether */ + /* class 1 (out of bounds) is ever available for a substitution */ + /* (if it ever has a mark set on it or has a current substitution)*/ + /* if not, then I can ignore any putative substitutions for class */ + /* 1 glyphs (actually I should do this for all classes)*/ + /* Damn. That doesn't work for marks. Because a current substitution*/ + /* may be applied, and then the glyph gets marked. So we've no idea*/ + /* what class the newly marked glyph might live in */ + /* Apple's docs say the substitutions are offset from the "state */ + /* subtable", but it seems much more likely that they are offset */ + /* from the substitution table (given that Apple's docs are often */ + /* wrong */ /* Apple's docs are right. not clear why that offset */ + /* is there */ + uint8 *classes_subbed = gcalloc(st->nclasses,1); + int lookup_max = -1, index, index_max; + int32 *lookups = galloc(st->nclasses*st->nstates*sizeof(int32)); + uint8 *evermarked = gcalloc(st->nclasses*st->nstates,sizeof(uint8)); + uint8 *used; + OTLookup **subs; + + index_max = 0; + for ( i=0; inclasses*st->nstates; ++i ) { + if ( as->state[i].u.context.mark_lookup!=NULL ) { + index = sm_lookupfind(lookups,&lookup_max,(int16) (intpt) as->state[i].u.context.mark_lookup); + if ( index>index_max ) index_max = index; + } + if ( as->state[i].u.context.cur_lookup!=NULL ) { + index = sm_lookupfind(lookups,&lookup_max,(int16) (intpt) as->state[i].u.context.cur_lookup); + if ( index>index_max ) index_max = index; + } + } + subs = gcalloc(index_max+1,sizeof(OTLookup *)); + + for ( i=0; inclasses*st->nstates; ++i ) { + if ( as->state[i].u.context.mark_lookup!=NULL ) { + index = sm_lookupfind(lookups,&lookup_max,(int16) (intpt) as->state[i].u.context.mark_lookup); + evermarked[index] = true; + as->state[i].u.context.mark_lookup = NewMacSubsLookup(info,otl,index,subs); + } + if ( as->state[i].u.context.cur_lookup!=NULL ) { + index = sm_lookupfind(lookups,&lookup_max,(int16) (intpt) as->state[i].u.context.cur_lookup); + as->state[i].u.context.cur_lookup = NewMacSubsLookup(info,otl,index,subs); + } + } + used = gcalloc((subtab_len-st->extra_offsets[0]+1)/2,sizeof(uint8)); + /* first figure things that only appear in current subs */ + /* then go back and work on things that apply to things which are also in marked subs */ + for ( j=0; j<2; ++j ) for ( i=0; i<=lookup_max; ++i ) if ( evermarked[i]==j ) { + info->mort_subs_lookup = NewMacSubsLookup(info,otl,i,subs); + info->mort_is_nested = true; + if ( !evermarked[i] ) { int k,l; + memset(classes_subbed,0,st->nclasses); + for ( k=0; knstates; ++k ) for ( l=0; lnclasses; ++l ) { + if ( as->state[k*st->nclasses+l].u.context.cur_lookup == info->mort_subs_lookup ) + classes_subbed[l] = true; + } + } + fseek(ttf,here/*+st->extra_offsets[0]*/+lookups[i]*2,SEEK_SET); + read_perglyph_subs(ttf,info,here+st->extra_offsets[0],here+subtab_len, + st,classes_subbed,evermarked[i],used); + } + info->mort_is_nested = false; + free(classes_subbed); + free(lookups); + free(used); + free(evermarked); + free(subs); + } else if ( ismorx && type == asm_context ) { + int lookup_max= -1; + uint32 *lookups; + OTLookup **subs; + + for ( i=0; inclasses*st->nstates; ++i ) { + if ( (intpt) as->state[i].u.context.mark_lookup!=0xffff ) { + if ( ((int) (intpt) as->state[i].u.context.mark_lookup)>lookup_max ) + lookup_max = (intpt) as->state[i].u.context.mark_lookup; + } + if ( (intpt) as->state[i].u.context.cur_lookup!=0xffff ) { + if ( ((int) (intpt) as->state[i].u.context.cur_lookup)>lookup_max ) + lookup_max = (intpt) as->state[i].u.context.cur_lookup; + } + } + ++lookup_max; + subs = gcalloc(lookup_max,sizeof(OTLookup *)); + for ( i=0; inclasses*st->nstates; ++i ) { + if ( (intpt) as->state[i].u.context.mark_lookup!=0xffff ) { + as->state[i].u.context.mark_lookup = NewMacSubsLookup(info,otl,(intpt) as->state[i].u.context.mark_lookup,subs); + } else + as->state[i].u.context.mark_lookup = NULL; + if ( (intpt) as->state[i].u.context.cur_lookup!=0xffff ) { + as->state[i].u.context.cur_lookup = NewMacSubsLookup(info,otl,(intpt) as->state[i].u.context.cur_lookup,subs); + } else + as->state[i].u.context.cur_lookup = NULL; + } + lookups = galloc(lookup_max*sizeof(uint32)); + fseek(ttf,here+st->extra_offsets[0],SEEK_SET); + for ( i=0; iextra_offsets[0]; + for ( i=0; imort_subs_lookup = NewMacSubsLookup(info,otl,i,subs); + info->mort_is_nested = true; + readttf_applelookup(ttf,info, + mort_apply_values,mort_apply_value,NULL,NULL,true); + } + info->mort_is_nested = false; + free(subs); + free(lookups); + } else if ( type == asm_kern ) { + for ( i=0; inclasses*st->nstates; ++i ) { + if ( (as->state[i].flags&0x3fff)!=0 ) { + KernReadKernList(ttf,here+(as->state[i].flags&0x3fff), + &as->state[i]); + as->state[i].flags &= ~0x3fff; + } else { + as->state[i].u.kern.kcnt = 0; + as->state[i].u.kern.kerns = NULL; + } + } + } + as->next = info->sm; + info->sm = as; + statetablefree(st); +return( as ); +} + +static int InfoHasGSUBTag(struct ttfinfo *info, uint32 tag, int apple_lookup_type) { + OTLookup *otl; + FeatureScriptLangList *feat; + + if ( apple_lookup_type==0 || /* Indic rearrangement */ + apple_lookup_type==1 || /* Contextual substitution */ + apple_lookup_type==5 ) /* Contextual insertion */ +return( false ); /* These types can either not be represented in OT */ + /* or not converted to AAT -- so we'd better read them */ + /* We can't really do contextual ligatures either, but we parse that table*/ + /* for the non-contextual ligs (which is most of them) */ + + for ( otl = info->gsub_lookups; otl!=NULL; otl=otl->next ) { + for ( feat = otl->features; feat!=NULL; feat=feat->next ) { + if ( feat->featuretag == tag && + Macable(NULL,otl)) +return( true ); + } + } +return( false ); +} + +static void FeatMarkAsEnabled(struct ttfinfo *info,int featureType, + int featureSetting); + +static uint32 readmortchain(FILE *ttf,struct ttfinfo *info, uint32 base, int ismorx) { + uint32 chain_len, nfeatures, nsubtables, default_flags; + uint32 enable_flags, disable_flags, flags; + int featureType, featureSetting; + int i,j,k; + uint32 length, coverage; + uint32 here; + uint32 tag; + struct tagmaskfeature { uint32 tag, enable_flags; uint16 ismac, feat, set; } tmf[32]; + int r2l; + (void)base; /* for -Wall */ + default_flags = getlong(ttf); + chain_len = getlong(ttf); + if ( ismorx ) { + nfeatures = getlong(ttf); + nsubtables = getlong(ttf); + } else { + nfeatures = getushort(ttf); + nsubtables = getushort(ttf); + } + + k = 0; + for ( i=0; i<(int)nfeatures; ++i ) { + featureType = getushort(ttf); + featureSetting = getushort(ttf); + enable_flags = getlong(ttf); + disable_flags = getlong(ttf); + if ( feof(ttf)) +return( chain_len ); + if ( enable_flags & default_flags ) + FeatMarkAsEnabled(info,featureType,featureSetting); + tag = MacFeatureToOTTag(featureType,featureSetting); + if ( enable_flags!=0 && k<32 ) { + if ( tag==0 ) { + tmf[k].tag = (featureType<<16) | featureSetting; + tmf[k].ismac = true; + } else { + tmf[k].tag = tag; + tmf[k].ismac = false; + } + tmf[k].feat = featureType; + tmf[k].set = featureSetting; + tmf[k++].enable_flags = enable_flags; + } + } + if ( k==0 ) +return( chain_len ); + + for ( i=0; i<(int)nsubtables; ++i ) { + here = ftell(ttf); + if ( ismorx ) { + length = getlong(ttf); + coverage = getlong(ttf); + } else { + length = getushort(ttf); + coverage = getushort(ttf); + coverage = ((coverage&0xe000)<<16) | (coverage&7); /* convert to morx format */ + } + r2l = (coverage & 0x40000000)? 1 : 0; + flags = getlong(ttf); + for ( j=k-1; j>=0 && (!(flags&tmf[j].enable_flags) || (tmf[j].enable_flags&~flags)!=0); --j ); + if ( j==-1 ) + for ( j=k-1; j>=0 && (!(flags&tmf[j].enable_flags) || tmf[j].feat==0); --j ); + if ( j>=0 ) { + if ( !tmf[j].ismac && + ((coverage&0xff)==0 || + (coverage&0xff)==1 || + (coverage&0xff)==5 )) { + /* Only do the opentype tag conversion if we've got a format */ + /* we can convert to opentype. Otherwise it is useless and */ + /* confusing */ + tmf[j].ismac = true; + tmf[j].tag = (tmf[j].feat<<16) | tmf[j].set; + } + info->mort_r2l = r2l; + info->mort_tag_mac = tmf[j].ismac; + info->mort_feat = tmf[j].feat; info->mort_setting = tmf[j].set; + /* If we've already read gsub. And this feature setting matches */ + /* and opentype feature tag. And we've got an OpenType lookup */ + /* attached to that feature tag. And it's a lookup type we can */ + /* convert... Then don't parse this sub-table, we shall assume */ + /* it is simply a duplicate of the OT version */ + if ( info->gsub_start!=0 && + (tag = MacFeatureToOTTag(tmf[j].feat,tmf[j].set))!=0 && + InfoHasGSUBTag(info,tag,coverage&0xff)) + /* Skip it */; + else switch( coverage&0xff ) { + case 0: /* Indic rearangement */ + readttf_mortx_asm(ttf,info,ismorx,length,asm_indic,0, + coverage,NULL); + break; + case 1: /* contextual glyph substitution */ + readttf_mortx_asm(ttf,info,ismorx,length,asm_context,2, + coverage,NULL); + break; + case 2: /* ligature substitution */ + /* Apple's ligature state machines are too weird to be */ + /* represented easily, but I can parse them into a set */ + /* of ligatures -- assuming they are unconditional */ + info->mort_subs_lookup = NewMacLookup(info,false); + info->mort_subs_lookup->lookup_type = gsub_ligature; + if ( !tmf[j].ismac ) { + info->mort_subs_lookup->features->next = chunkalloc(sizeof(FeatureScriptLangList)); + info->mort_subs_lookup->features->next->featuretag = tmf[j].tag; + info->mort_subs_lookup->features->next->ismac = false; + } + info->mort_subs_lookup->subtables->per_glyph_pst_or_kern = true; + readttf_mortx_lig(ttf,info,ismorx,here,length); + InfoNameOTLookup(info->mort_subs_lookup,info); + /* We can give the lookup a better name after we've made a */ + /* guess at what scripts it involves => substitutions first */ + break; + case 4: /* non-contextual glyph substitutions */ + info->mort_subs_lookup = NewMacLookup(info,false); + info->mort_subs_lookup->lookup_type = gsub_single; + if ( !tmf[j].ismac ) { + info->mort_subs_lookup->features->next = chunkalloc(sizeof(FeatureScriptLangList)); + info->mort_subs_lookup->features->next->featuretag = tmf[j].tag; + info->mort_subs_lookup->features->next->ismac = false; + } + info->mort_subs_lookup->subtables->per_glyph_pst_or_kern = true; + readttf_applelookup(ttf,info, + mort_apply_values,mort_apply_value,NULL,NULL,true); + InfoNameOTLookup(info->mort_subs_lookup,info); + break; + case 5: /* contextual glyph insertion */ + readttf_mortx_asm(ttf,info,ismorx,length,asm_insert,2, + coverage,NULL); + break; + } + } + fseek(ttf, here+length, SEEK_SET ); + } + +return( chain_len ); +} + +void readttfmort(FILE *ttf,struct ttfinfo *info) { + uint32 base = info->morx_start!=0 ? info->morx_start : info->mort_start; + uint32 here, len; + int ismorx; + int32 version; + int i, nchains; + + fseek(ttf,base,SEEK_SET); + version = getlong(ttf); + ismorx = version == 0x00020000; + if ( version!=0x00010000 && version != 0x00020000 ) +return; + nchains = getlong(ttf); + if ( feof(ttf)) { + LogError( _("Unexpected end of file found in morx chain.\n" )); + info->bad_gx = true; +return; + } + info->mort_max = nchains*33; /* Maximum of one feature per bit ? */ + for ( i=0; ibad_gx = true; + break; + } + fseek(ttf,here+len,SEEK_SET); + } + /* Some Apple fonts use out of range gids as flags in conditional substitutions */ + /* generally to pass information from one sub-table to another which then */ + /* removes the flag */ + if ( info->badgid_cnt!=0 ) { + /* Merge the fake glyphs in with the real ones */ + info->chars = grealloc(info->chars,(info->glyph_cnt+info->badgid_cnt)*sizeof(SplineChar *)); + for ( i=0; ibadgid_cnt; ++i ) { + info->chars[info->glyph_cnt+i] = info->badgids[i]; + info->badgids[i]->orig_pos = info->glyph_cnt+i; + } + info->glyph_cnt += info->badgid_cnt; + free(info->badgids); + } +} + +/* Apple's docs imply that kerning info is always provided left to right, even*/ +/* for right to left scripts. My guess is that their docs are wrong, as they */ +/* often are, but if that be so then we need code in here to reverse */ +/* the order of the characters for right to left since pfaedit's convention */ +/* is to follow writing order rather than to go left to right */ +void readttfkerns(FILE *ttf,struct ttfinfo *info) { + int tabcnt, len, coverage,i,j, npairs, version, format, flags_good, tab; + int left, right, offset, array, rowWidth; + int header_size; + KernPair *kp; + KernClass *kc; + uint32 begin_table; + uint16 *class1, *class2; + int tupleIndex; + int isv; + SplineChar **chars; + OTLookup *otl; + + fseek(ttf,info->kern_start,SEEK_SET); + version = getushort(ttf); + tabcnt = getushort(ttf); + if ( version!=0 ) { + fseek(ttf,info->kern_start,SEEK_SET); + version = getlong(ttf); + tabcnt = getlong(ttf); + } + for ( tab=0; tab>8; + flags_good = ((coverage&7)<=1); + isv = !(coverage&1); + tupleIndex = -1; + header_size = 6; + } else { + len = getlong(ttf); + coverage = getushort(ttf); + /* Apple has reordered the bits */ + format = (coverage&0xff); + flags_good = ((coverage&0xdf00)==0 || (coverage&0xdf00)==0x8000); + isv = coverage&0x8000? 1 : 0; + tupleIndex = getushort(ttf); + if ( coverage&0x2000 ) { + if ( info->variations==NULL ) + flags_good = false; /* Ignore if we failed to load the tuple data */ + else if ( tupleIndex>=info->variations->tuple_count ) + flags_good = false; /* Bad tuple */ + } else + tupleIndex = -1; + header_size = 8; + } + otl = NULL; + if ( flags_good ) { + otl = NewMacLookup(info,true); + otl->lookup_type = gpos_pair; + if ( isv ) { + otl->features->featuretag = CHR('v','k','r','n'); + otl->features->ismac = false; + } + otl->subtables->per_glyph_pst_or_kern = true; + otl->subtables->vertical_kerning = isv; + } + if ( flags_good && format==0 ) { + /* format 0, horizontal kerning data (as pairs) not perpendicular */ + chars = tupleIndex==-1 ? info->chars : info->variations->tuples[tupleIndex].chars; + npairs = getushort(ttf); + if ( version==0 && (len-14 != 6*npairs || npairs>10920 )) { + LogError( _("In the 'kern' table, a subtable's length does not match the number of kerning pairs.") ); + info->bad_gx = true; + } + /* searchRange = */ getushort(ttf); + /* entrySelector = */ getushort(ttf); + /* rangeShift = */ getushort(ttf); + otl->subtables[0].per_glyph_pst_or_kern = true; + for ( j=0; jglyph_cnt && rightglyph_cnt && + chars[left]!=NULL && chars[right]!=NULL ) { + kp = chunkalloc(sizeof(KernPair)); + kp->sc = chars[right]; + kp->off = offset; + kp->subtable = otl->subtables; + FListsAppendScriptLang(otl->features,SCScriptFromUnicode(chars[left]), + DEFAULT_LANG); + if ( isv ) { + kp->next = chars[left]->vkerns; + chars[left]->vkerns = kp; + } else { + kp->next = chars[left]->kerns; + chars[left]->kerns = kp; + } + } else if ( left>=info->glyph_cnt || right>=info->glyph_cnt ) { + /* Holes happen when reading ttc files. They are probably ok */ + LogError( _("Bad kern pair: glyphs %d & %d must be less than %d\n"), + left, right, info->glyph_cnt ); + info->bad_gx = true; + } + } + InfoNameOTLookup(otl,info); + } else if ( flags_good && format==1 ) { + /* format 1 is an apple state machine which can handle weird cases */ + /* OpenType's spec doesn't document this */ + /* Apple's docs are wrong about this table, they claim */ + /* there is a special value which marks the end of the kerning */ + /* lists. In fact there is no such value, the list is as long */ + /* as there are things on the kern stack */ + otl->lookup_type = kern_statemachine; + readttf_mortx_asm(ttf,info,false,len-header_size,asm_kern,0, + isv ? 0x80000000 : 0 /* coverage doesn't really apply */,otl); + fseek(ttf,begin_table+len,SEEK_SET); + } else if ( flags_good && (format==2 || format==3 )) { + /* two class based formats */ + KernClass **khead, **klast; + if ( isv && tupleIndex==-1 ) { + khead = &info->vkhead; + klast = &info->vklast; + } else if ( tupleIndex==-1 ) { + khead = &info->khead; + klast = &info->klast; + } else if ( isv ) { + khead = &info->variations->tuples[tupleIndex].vkhead; + klast = &info->variations->tuples[tupleIndex].vklast; + } else { + khead = &info->variations->tuples[tupleIndex].khead; + klast = &info->variations->tuples[tupleIndex].klast; + } + if ( *khead==NULL ) + *khead = kc = chunkalloc(sizeof(KernClass)); + else + kc = (*klast)->next = chunkalloc(sizeof(KernClass)); + *klast = kc; + if ( format==2 ) { + rowWidth = getushort(ttf); + left = getushort(ttf); + right = getushort(ttf); + array = getushort(ttf); + kc->second_cnt = rowWidth/sizeof(uint16); + class1 = getAppleClassTable(ttf, begin_table+left, info->glyph_cnt, array, rowWidth, info ); + class2 = getAppleClassTable(ttf, begin_table+right, info->glyph_cnt, 0, sizeof(uint16), info ); + for ( i=0; iglyph_cnt; ++i ) + if ( class1[i]>kc->first_cnt ) + kc->first_cnt = class1[i]; + ++ kc->first_cnt; + kc->offsets = galloc(kc->first_cnt*kc->second_cnt*sizeof(int16)); +#ifdef FONTFORGE_CONFIG_DEVICETABLES + kc->adjusts = gcalloc(kc->first_cnt*kc->second_cnt,sizeof(DeviceTable)); +#endif + fseek(ttf,begin_table+array,SEEK_SET); + for ( i=0; ifirst_cnt*kc->second_cnt; ++i ) + kc->offsets[i] = getushort(ttf); + } else { + /* format 3, horizontal kerning data (as classes limited to 256 entries) */ + /* OpenType's spec doesn't document this */ + int gc, kv, flags; + int16 *kvs; + gc = getushort(ttf); + kv = getc(ttf); + kc->first_cnt = getc(ttf); + kc->second_cnt = getc(ttf); + flags = getc(ttf); + if ( gc>info->glyph_cnt ) { + LogError( _("Kerning subtable 3 says the glyph count is %d, but maxp says %d\n"), + gc, info->glyph_cnt ); + info->bad_gx = true; + } + class1 = gcalloc(gc>info->glyph_cnt?gc:info->glyph_cnt,sizeof(uint16)); + class2 = gcalloc(gc>info->glyph_cnt?gc:info->glyph_cnt,sizeof(uint16)); + kvs = galloc(kv*sizeof(int16)); + kc->offsets = galloc(kc->first_cnt*kc->second_cnt*sizeof(int16)); +#ifdef FONTFORGE_CONFIG_DEVICETABLES + kc->adjusts = gcalloc(kc->first_cnt*kc->second_cnt,sizeof(DeviceTable)); +#endif + for ( i=0; ifirst_cnt*kc->second_cnt; ++i ) + kc->offsets[i] = kvs[getc(ttf)]; + free(kvs); + } + kc->firsts = ClassToNames(info,kc->first_cnt,class1,info->glyph_cnt); + kc->seconds = ClassToNames(info,kc->second_cnt,class2,info->glyph_cnt); + for ( i=0; iglyph_cnt; ++i ) { + if ( class1[i]>=4 && info->chars[i]!=NULL ) + FListsAppendScriptLang(otl->features, + SCScriptFromUnicode(info->chars[i]), + DEFAULT_LANG); + } + free(class1); free(class2); + fseek(ttf,begin_table+len,SEEK_SET); + otl->subtables[0].kc = kc; + kc->subtable = otl->subtables; + InfoNameOTLookup(otl,info); + } else { + LogError(_("Invalid or unsupported format (%d) for subtable of 'kern' table"), format ); + info->bad_gx = true; + fseek(ttf,len-header_size,SEEK_CUR); + if ( otl!=NULL ) + OTLRemove(info,otl,true); + } + } +} + +void readmacfeaturemap(FILE *ttf,struct ttfinfo *info) { + MacFeat *last=NULL, *cur; + struct macsetting *slast, *scur; + struct fs { int n; int off; } *fs; + int featcnt, i, j, flags; + + fseek(ttf,info->feat_start,SEEK_SET); + /* version =*/ getfixed(ttf); + featcnt = getushort(ttf); + /* reserved */ getushort(ttf); + /* reserved */ getlong(ttf); + if ( feof(ttf)) { + LogError( _("End of file in feat table.\n" )); + info->bad_gx = true; +return; + } + + fs = galloc(featcnt*sizeof(struct fs)); + for ( i=0; ifeatures = cur; + else + last->next = cur; + last = cur; + + cur->feature = getushort(ttf); + fs[i].n = getushort(ttf); + fs[i].off = getlong(ttf); + flags = getushort(ttf); + cur->strid = getushort(ttf); + if ( flags&0x8000 ) cur->ismutex = true; + if ( flags&0x4000 ) + cur->default_setting = flags&0xff; + if ( feof(ttf)) { + free(fs); + LogError( _("End of file in feat table.\n" )); + info->bad_gx = true; +return; + } + } + + for ( i=0, cur=info->features; inext ) { + fseek(ttf,info->feat_start+fs[i].off,SEEK_SET); + slast = NULL; + for ( j=0; jsettings = scur; + else + slast->next = scur; + slast = scur; + + scur->setting = getushort(ttf); + scur->strid = getushort(ttf); + if ( feof(ttf)) { + free(fs); + LogError( _("End of file in feat table.\n") ); + info->bad_gx = true; +return; + } + } + } + free(fs); +} + +static void FeatMarkAsEnabled(struct ttfinfo *info,int featureType, + int featureSetting) { + MacFeat *f; + struct macsetting *s; + + for ( f = info->features; f!=NULL && f->feature!=featureType; f=f->next ); + if ( f==NULL ) +return; + if ( f->ismutex ) { + for ( s=f->settings ; s!=NULL; s=s->next ) + s->initially_enabled = ( s->setting==featureSetting ); + f->default_setting = featureSetting; + } else { + for ( s=f->settings ; s!=NULL && s->setting!=featureSetting; s=s->next ); + if ( s!=NULL ) + s->initially_enabled = true; + } +return; +} + +/******************************************************************************/ +/* ******************************* MATH Table ******************************* */ +/* ********************** (Not strictly OpenType yet) *********************** */ +/******************************************************************************/ + +/* ******************************** Read MATH ******************************* */ + +static void ttf_math_read_constants(FILE *ttf,struct ttfinfo *info, uint32 start) { + struct MATH *math; + int i; +#ifdef FONTFORGE_CONFIG_DEVICETABLES + uint16 off; +#endif + + fseek(ttf,start,SEEK_SET); + info->math = math = gcalloc(1,sizeof(struct MATH)); + + for ( i=0; math_constants_descriptor[i].script_name!=NULL; ++i ) { + int16 *pos = (int16 *) (((char *) (math)) + math_constants_descriptor[i].offset ); + if ( pos == (int16 *) &math->MinConnectorOverlap ) + continue; /* Actually lives in the Variant table, not here */ + *pos = getushort(ttf); +#ifdef FONTFORGE_CONFIG_DEVICETABLES + if ( math_constants_descriptor[i].devtab_offset >= 0 ) { + DeviceTable **devtab = (DeviceTable **) (((char *) (math)) + math_constants_descriptor[i].devtab_offset ); + off = getushort(ttf); + if ( off!=0 ) { + *devtab = chunkalloc(sizeof(DeviceTable)); + ReadDeviceTable(ttf,*devtab,start+off,info); + } + } +#else + /* No support for device tables, skip it */ + if ( math_constants_descriptor[i].devtab_offset != -1 ) + (void) getushort(ttf); +#endif + } +} + +static void ttf_math_read_icta(FILE *ttf,struct ttfinfo *info, uint32 start, int is_ic) { + /* The italic correction and top accent sub-tables have the same format */ + int coverage, cnt, i, val, offset; + uint16 *glyphs; + + fseek(ttf,start,SEEK_SET); + coverage = getushort(ttf); + cnt = getushort(ttf); + glyphs = getCoverageTable(ttf,start+coverage,info); + if ( glyphs==NULL ) +return; + fseek(ttf,start+4,SEEK_SET); + for ( i=0; iglyph_cnt && info->chars[ glyphs[i]]!=NULL ) { + val = (int16) getushort(ttf); + if ( is_ic ) + info->chars[ glyphs[i] ]->italic_correction = val; + else + info->chars[ glyphs[i] ]->top_accent_horiz = val; + offset = getushort(ttf); +#ifdef FONTFORGE_CONFIG_DEVICETABLES + if ( offset!=0 ) { + DeviceTable *dv = chunkalloc(sizeof(DeviceTable)); + ReadDeviceTable(ttf,dv,start+offset,info); + if ( is_ic ) + info->chars[ glyphs[i] ]->italic_adjusts = dv; + else + info->chars[ glyphs[i] ]->top_accent_adjusts = dv; + } +#endif + } + free(glyphs); +} + +static void ttf_math_read_extended(FILE *ttf,struct ttfinfo *info, uint32 start) { + int i; + uint16 *glyphs; + + glyphs = getCoverageTable(ttf,start,info); + if ( glyphs==NULL ) +return; + for ( i=0; glyphs[i]!=0xffff; ++i ) if ( glyphs[i]glyph_cnt && info->chars[ glyphs[i]]!=NULL ) + info->chars[ glyphs[i] ]->is_extended_shape = true; + free(glyphs); +} + +static void ttf_math_read_mathkernv(FILE *ttf, uint32 start,struct mathkernvertex *mkv, + SplineChar *sc, int istop, struct ttfinfo *info) { + int cnt, i; + (void)info; /* for -Wall */ + fseek(ttf,start,SEEK_SET); + /* There is one more width than height. I store the width count */ + /* and guess a dummy height later */ + mkv->cnt = cnt = getushort(ttf)+1; + mkv->mkd = gcalloc(cnt,sizeof(struct mathkerndata)); + + for ( i=0; imkd[i].height = getushort(ttf); +#ifdef FONTFORGE_CONFIG_DEVICETABLES + mkv->mkd[i].height_adjusts = (void *) (intpt) getushort(ttf); +#else + (void) getushort(ttf); +#endif + } + + for ( i=0; imkd[i].kern = getushort(ttf); +#ifdef FONTFORGE_CONFIG_DEVICETABLES + mkv->mkd[i].kern_adjusts = (void *) (intpt) getushort(ttf); +#else + (void) getushort(ttf); +#endif + } + +#ifdef FONTFORGE_CONFIG_DEVICETABLES + for ( i=0; imkd[i].height_adjusts!=NULL ) { + offset = start + (intpt) mkv->mkd[i].height_adjusts; + mkv->mkd[i].height_adjusts = dv = chunkalloc(sizeof(DeviceTable)); + ReadDeviceTable(ttf,dv,offset,info); + } + if ( mkv->mkd[i].kern_adjusts!=NULL ) { + offset = start + (intpt) mkv->mkd[i].kern_adjusts; + mkv->mkd[i].kern_adjusts = dv = chunkalloc(sizeof(DeviceTable)); + ReadDeviceTable(ttf,dv,offset,info); + } + } +#endif + + if ( cnt>=3 ) + mkv->mkd[cnt-1].height = 2*mkv->mkd[cnt-2].height - mkv->mkd[cnt-3].height; + else if ( cnt>=2 ) + mkv->mkd[cnt-1].height = mkv->mkd[cnt-2].height + 100; + else if ( cnt==1 ) { + if ( istop ) { + DBounds b; + SplineCharQuickBounds(sc,&b); + mkv->mkd[cnt-1].height = b.maxy; + } else + mkv->mkd[cnt-1].height = 0; + } +} + +static void ttf_math_read_mathkern(FILE *ttf,struct ttfinfo *info, uint32 start) { + int coverage, cnt, i; + uint16 *glyphs; + struct koff { uint16 tr, tl, br, bl; } *koff; + + fseek(ttf,start,SEEK_SET); + coverage = getushort(ttf); + cnt = getushort(ttf); + koff = galloc(cnt*sizeof(struct koff)); + for ( i=0; iglyph_cnt && info->chars[ glyphs[i]]!=NULL ) { + SplineChar *sc = info->chars[ glyphs[i]]; + sc->mathkern = chunkalloc(sizeof(struct mathkern)); + if ( koff[i].tr!=0 ) + ttf_math_read_mathkernv(ttf,start+koff[i].tr,&sc->mathkern->top_right,sc,true,info); + if ( koff[i].tl!=0 ) + ttf_math_read_mathkernv(ttf,start+koff[i].tl,&sc->mathkern->top_left,sc,true,info); + if ( koff[i].br!=0 ) + ttf_math_read_mathkernv(ttf,start+koff[i].br,&sc->mathkern->bottom_right,sc,false,info); + if ( koff[i].bl!=0 ) + ttf_math_read_mathkernv(ttf,start+koff[i].bl,&sc->mathkern->bottom_left,sc,false,info); + } + free(koff); + free(glyphs); +} + +static void ttf_math_read_glyphinfo(FILE *ttf,struct ttfinfo *info, uint32 start) { + int icoff,taoff,esoff,kioff; + + fseek(ttf,start,SEEK_SET); + icoff = getushort(ttf); + taoff = getushort(ttf); + esoff = getushort(ttf); + kioff = getushort(ttf); + + if ( icoff!=0 ) + ttf_math_read_icta(ttf,info,start+icoff,true); + if ( taoff!=0 ) + ttf_math_read_icta(ttf,info,start+taoff,false); + if ( esoff!=0 ) + ttf_math_read_extended(ttf,info,start+esoff); + if ( kioff!=0 ) + ttf_math_read_mathkern(ttf,info,start+kioff); +} + +static struct glyphvariants *ttf_math_read_gvtable(FILE *ttf,struct ttfinfo *info, uint32 start, + enum gsub_inusetype justinuse, SplineChar *basesc, int isv ) { + struct glyphvariants *gv = chunkalloc(sizeof(struct glyphvariants)); + int ga_offset; + int vcnt; + uint16 *glyphs; + int i, j, len; + char *pt; + int ic_offset, pcnt; + SplineChar *sc; + char ebuf[10], buffer[50], *ext; + + fseek(ttf,start,SEEK_SET); + ga_offset = getushort(ttf); + vcnt = getushort(ttf); + if ( vcnt!=0 ) { + if ( justinuse==git_justinuse ) { + for ( i=0; i=0 && gidglyph_cnt ) + info->inuse[gid] = true; + } + } else if ( justinuse==git_findnames ) { + for ( i=0; iname!=NULL && + gid>=0 && gidglyph_cnt && + (sc = info->chars[gid])!=NULL && sc->name==NULL ) { + snprintf(buffer,sizeof(buffer),"%.30s.%csize%d", + basesc->name, isv?'v':'h', i); + sc->name = copy(buffer); + } + } + } else { + glyphs = galloc(vcnt*sizeof(uint16)); + len = 0; + for ( i=0; iglyph_cnt && (sc = info->chars[ glyphs[i]])!=NULL ) + len += strlen(sc->name)+1; + } + if ( len!=0 ) { + gv->variants = pt = galloc(len); + for ( i=len=0; iglyph_cnt && (sc = info->chars[ glyphs[i]])!=NULL ) { + strcpy(pt+len,sc->name); + len += strlen(sc->name); + pt[len++] = ' '; + } + } + pt[len-1] = '\0'; + } + free(glyphs); + } + } + if ( ga_offset!=0 ) { + start += ga_offset; + fseek(ttf,start,SEEK_SET); + gv->italic_correction = getushort(ttf); + ic_offset = getushort(ttf); + gv->part_cnt = pcnt = getushort(ttf); + if ( justinuse==git_normal ) + gv->parts = gcalloc(pcnt,sizeof(struct gv_part)); + for ( i=j=0; ibad_ot = true; + chunkfree(gv,sizeof(*gv)); +return( NULL ); + } + if ( justinuse==git_justinuse ) { + if ( gidglyph_cnt ) + info->inuse[gid] = true; + } else if ( justinuse==git_findnames ) { + if ( basesc!=NULL && basesc->name!=NULL && + gid>=0 && gidglyph_cnt && + (sc = info->chars[gid])!=NULL && sc->name==NULL ) { + if ( pcnt==1 ) + ext = "repeat"; + if ( i==0 ) + ext = isv ? "bot" : "left"; + else if ( i==pcnt-1 ) + ext = isv ? "top" : "right"; + else if ( i==1 && pcnt==3 ) + ext = "mid"; + else { + sprintf( ebuf, "%cpart%d", isv?'v':'h', i ); + ext = ebuf; + } + snprintf(buffer,sizeof(buffer),"%.30s.%s", + basesc->name, ext ); + sc->name = copy(buffer); + } + } else { + if ( gidglyph_cnt && (sc = info->chars[gid])!=NULL ) { + gv->parts[j].component = copy( sc->name ); + gv->parts[j].startConnectorLength = start; + gv->parts[j].endConnectorLength = end; + gv->parts[j].fullAdvance = full; + gv->parts[j++].is_extender = flags&1; + } + } + } + gv->part_cnt = j; +#ifdef FONTFORGE_CONFIG_DEVICETABLES + if ( ic_offset!=0 && justinuse==git_normal ) { + gv->italic_adjusts = chunkalloc(sizeof(DeviceTable)); + ReadDeviceTable(ttf,gv->italic_adjusts,start+ic_offset,info); + } +#endif + } + if ( justinuse==git_justinuse ) { + chunkfree(gv,sizeof(*gv)); +return( NULL ); + } +return( gv ); +} + +static void ttf_math_read_variants(FILE *ttf,struct ttfinfo *info, uint32 start, + enum gsub_inusetype justinuse) { + int vcoverage, hcoverage, vcnt, hcnt; + int *hoffs, *voffs; + uint16 *hglyphs, *vglyphs; + int i; + + fseek(ttf,start,SEEK_SET); + if ( info->math==NULL ) + info->math = gcalloc(1,sizeof(struct MATH)); + info->math->MinConnectorOverlap = getushort(ttf); + vcoverage = getushort(ttf); + hcoverage = getushort(ttf); + vcnt = getushort(ttf); + hcnt = getushort(ttf); + hoffs = galloc(hcnt*sizeof(int)); + voffs = galloc(vcnt*sizeof(int)); + + for ( i=0; iglyph_cnt && voffs[i]!=0) { + if ( justinuse == git_normal || justinuse == git_findnames ) { + SplineChar *sc = info->chars[ vglyphs[i]]; + if ( sc!=NULL ) + sc->vert_variants = ttf_math_read_gvtable(ttf,info,start+voffs[i],justinuse,sc,true); + } else if ( info->inuse[ vglyphs[i]]) + ttf_math_read_gvtable(ttf,info,start+voffs[i],justinuse,NULL,true); + } + } + if ( hglyphs!=NULL ) { + for ( i=0; iglyph_cnt && hoffs[i]!=0) { + if ( justinuse == git_normal || justinuse == git_findnames ) { + SplineChar *sc = info->chars[ hglyphs[i]]; + if ( sc!=NULL ) + sc->horiz_variants = ttf_math_read_gvtable(ttf,info,start+hoffs[i],justinuse,sc,false); + } else if ( info->inuse[ hglyphs[i]]) + ttf_math_read_gvtable(ttf,info,start+hoffs[i],justinuse,NULL,false); + } + } + + free(vglyphs); free(voffs); + free(hglyphs); free(hoffs); +} + +static void _otf_read_math(FILE *ttf,struct ttfinfo *info, + enum gsub_inusetype justinuse) { + int constants, glyphinfo, variants; + if ( info->math_start==0 ) +return; + fseek(ttf,info->math_start,SEEK_SET); + + info->g_bounds = info->math_start+info->math_length; + + if ( getlong(ttf)!=0x00010000 ) +return; + constants = getushort(ttf); + glyphinfo = getushort(ttf); + variants = getushort(ttf); + + if ( justinuse == git_normal ) { + if ( constants!=0 ) + ttf_math_read_constants(ttf,info,info->math_start+constants); + if ( glyphinfo!=0 ) + ttf_math_read_glyphinfo(ttf,info,info->math_start+glyphinfo); + } + if ( variants!=0 ) + ttf_math_read_variants(ttf,info,info->math_start+variants,justinuse); + if ( ftell(ttf)>info->g_bounds ) { + LogError("MATH table extends beyond table bounds"); + info->bad_ot = true; + } + info->g_bounds = 0; +} + +void otf_read_math(FILE *ttf,struct ttfinfo *info) { + _otf_read_math(ttf,info,git_normal); +} + +void otf_read_math_used(FILE *ttf,struct ttfinfo *info) { + _otf_read_math(ttf,info,git_justinuse); +} + +void GuessNamesFromMATH(FILE *ttf,struct ttfinfo *info) { + _otf_read_math(ttf,info,git_findnames); +} + +static struct baselangextent *readttfbaseminmax(FILE *ttf,uint32 offset,struct ttfinfo *info, + uint32 script_tag,uint32 lang_tag) { + int j,feat_cnt; + struct baselangextent *lang, *cur, *last; + (void)info; /* for -Wall */ + (void)script_tag; /* for -Wall */ + fseek(ttf,offset,SEEK_SET); + lang = chunkalloc(sizeof(struct baselangextent)); + lang->lang = lang_tag; + lang->descent = (short) getushort(ttf); + lang->ascent = (short) getushort(ttf); + + feat_cnt = getushort(ttf); + last = NULL; + for ( j=0; jfeatures = cur; + else + last->next = cur; + last = cur; + cur->lang = getlong(ttf); /* Actually feature tag here */ + cur->descent = (short) getushort(ttf); + cur->ascent = (short) getushort(ttf); + } +return( lang ); +} + +void readttfbase(FILE *ttf,struct ttfinfo *info) { + int version; + uint32 axes[2]; + uint32 basetags, basescripts; + int basescriptcnt; + struct tagoff { uint32 tag; uint32 offset; } *bs; + int axis,i,j, tot; + struct Base *curBase; + struct basescript *curScript, *last; + struct baselangextent *cur, *lastLang; + + if ( info->base_start==0 ) +return; + fseek(ttf,info->base_start,SEEK_SET); + + version = getlong(ttf); + if ( version!=0x00010000 ) +return; + axes[0] = getushort(ttf); /* Horizontal */ + axes[1] = getushort(ttf); /* Vertical */ + + for ( axis=0; axis<2; ++axis ) { + if ( axes[axis]==0 ) + continue; + fseek(ttf,info->base_start+axes[axis],SEEK_SET); + curBase = chunkalloc(sizeof(struct Base)); + if ( axis==0 ) info->horiz_base = curBase; else info->vert_base = curBase; + basetags = getushort(ttf); + basescripts = getushort(ttf); + if ( basetags==0 ) { + curBase->baseline_cnt = 0; + curBase->baseline_tags = NULL; + } else { + fseek(ttf,info->base_start+axes[axis]+basetags,SEEK_SET); + curBase->baseline_cnt = getushort(ttf); + curBase->baseline_tags = gcalloc(curBase->baseline_cnt,sizeof(uint32)); + for ( i=0; ibaseline_cnt; ++i ) + curBase->baseline_tags[i] = getlong(ttf); + } + if ( basescripts!=0 ) { + fseek(ttf,info->base_start+axes[axis]+basescripts,SEEK_SET); + basescriptcnt = getushort(ttf); + bs = gcalloc(basescriptcnt,sizeof(struct tagoff)); + for ( i=0; ibase_start+axes[axis]+basescripts; + } + last = NULL; + for ( i=0; iscripts = curScript; + else + last->next = curScript; + last = curScript; + curScript->script = bs[i].tag; + if ( basevalues!=0 ) { + int coordcnt; + int *coords; + + fseek( ttf,bs[i].offset+basevalues,SEEK_SET); + curScript->def_baseline = getushort(ttf); + tot = coordcnt = getushort(ttf); + if ( coordcnt!=curBase->baseline_cnt ) { + info->bad_ot = true; + LogError( "!!!!! Coord count (%d) for '%c%c%c%c' script does not match base tag count (%d) in 'BASE' table\n", + coordcnt, + bs[i].tag>>24, bs[i].tag>>16, bs[i].tag>>8, bs[i].tag, + curBase->baseline_cnt ); + if ( totbaseline_cnt ) + tot = curBase->baseline_cnt; + } + coords = gcalloc(coordcnt,sizeof(int)); + curScript->baseline_pos = gcalloc(tot,sizeof(int16)); + for ( j=0; jbaseline_pos[j] = (short) getushort(ttf); + if ( format!=1 && format!=2 && format!=3 ) { + info->bad_ot = true; + LogError("!!!!! Bad Base Coord format (%d) for '%c%c%c%c' in '%c%c%c%c' script in 'BASE' table\n", + format, + curBase->baseline_tags[j]>>24, curBase->baseline_tags[j]>>16, curBase->baseline_tags[j]>>8, curBase->baseline_tags[j], + bs[i].tag>>24, bs[i].tag>>16, bs[i].tag>>8, bs[i].tag ); + } + } + free(coords); + } + lastLang = NULL; + if ( defminmax!=0 ) + curScript->langs = lastLang = readttfbaseminmax(ttf,bs[i].offset+defminmax,info,bs[i].tag,DEFAULT_LANG); + if ( langsyscnt!=0 ) { + for ( j=0; jlangs = cur; + else + lastLang->next = cur; + lastLang = cur; + } + } + free(ls); + } + free(bs); + } + } +} + +static void bsln_apply_values(struct ttfinfo *info, int gfirst, int glast,FILE *ttf) { + int i; + + for ( i=gfirst; i<=glast; ++i ) + info->bsln_values[i]= getushort(ttf); +} + +static void bsln_apply_value(struct ttfinfo *info, int gfirst, int glast,FILE *ttf) { + int i; + int bsln; + + bsln = getushort(ttf); + for ( i=gfirst; i<=glast; ++i ) + info->bsln_values[i]= bsln; +} + +static void bsln_apply_default(struct ttfinfo *info, int gfirst, int glast,void *def) { + int def_bsln, i; + + def_bsln = (intpt) def; + for ( i=gfirst; i<=glast; ++i ) + info->bsln_values[i]= def_bsln; +} + +void readttfbsln(FILE *ttf,struct ttfinfo *info) { + int def, ap_def, version, format; + uint16 *values; + int offsets[32]; + SplineChar *sc; + BasePoint pos; + int mapping[32]; + int i; + struct Base *base; + struct basescript *bs; + + fseek(ttf,info->bsln_start,SEEK_SET); + version = getlong(ttf); + if ( version!=0x00010000 ) +return; + format = getushort(ttf); + def = getushort(ttf); + if ( format==0 || format==1 ) { + for ( i=0; i<32; ++i ) + offsets[i] = (int16) getushort(ttf); + } else if ( format==2 || format==3 ) { + int stdGID = getushort(ttf); + int ptnum; + if ( stdGID>=info->glyph_cnt || (sc = info->chars[stdGID])==NULL ) +return; + for ( i=0; i<32; ++i ) { + ptnum = getushort(ttf); + if ( ttfFindPointInSC(sc,ly_fore,ptnum,&pos,NULL)!=-1 ) +return; + offsets[i] = pos.y; + } + } + + if ( format&1 ) { + info->bsln_values = values = gcalloc(info->glyph_cnt,sizeof(uint16)); + readttf_applelookup(ttf,info, + bsln_apply_values,bsln_apply_value, + bsln_apply_default,(void *) (intpt) def, false); + } else + values = NULL; + + for ( i=1; i<32; ++i ) mapping[i] = 3; /* Roman */ + + info->horiz_base = base = chunkalloc(sizeof(struct Base)); + base->baseline_cnt = 4; + base->baseline_tags = galloc(4*sizeof(uint32)); + base->baseline_tags[0] = CHR('h','a','n','g'); /* Apple 3 */ + if ( offsets[1]!= offsets[2] ) { + base->baseline_tags[1] = CHR('i','d','e','o'); /* Apple 2 */ + base->baseline_tags[2] = CHR('m','a','t','h'); /* Apple 4 */ + base->baseline_tags[3] = CHR('r','o','m','n'); /* Apple 0 */ + + /* Map from Apple's baseline indeces, to OT tag positions */ + mapping[3] = 0; + mapping[2] = 1; + mapping[4] = 2; + mapping[0] = 3; + /* Apple baseline 1 does not map to an OT tag */ + /* I assume baseline 1 is the normal baseline for CJK on Macs */ + /* (because baseline 2 often (and wrongly) contains the same value */ + } else { + /* baseline 1 (centered ideographic) and baseline 2 (low ideographic) */ + /* are documented to be different. Yet most of the fonts I have looked*/ + /* at (and I've only got about 4 test cases) have the low ideographic*/ + /* baseline set to the centered baseline. If I were to copy that to */ + /* OT it would be really bad. So even though baseline data is provided*/ + /* I shall ignore it if it looks WRONG! */ + base->baseline_cnt = 3; + base->baseline_tags[1] = CHR('m','a','t','h'); /* Apple 4 */ + base->baseline_tags[2] = CHR('r','o','m','n'); /* Apple 0 */ + mapping[3] = 0; + mapping[4] = 1; + mapping[0] = 2; + } + + for ( i=0; iglyph_cnt; ++i ) if ( (sc=info->chars[i])!=NULL ) { + uint32 script = SCScriptFromUnicode(sc); + if ( script==DEFAULT_SCRIPT ) + continue; + for ( bs=base->scripts; bs!=NULL && bs->script!=script; bs=bs->next ); + if ( bs!=NULL ) + continue; + bs = chunkalloc(sizeof(struct basescript)); + bs->script = script; + ap_def = def; + if ( values!=NULL ) + ap_def = values[i]; + bs->def_baseline = mapping[ap_def]; + bs->baseline_pos = galloc(4*sizeof(int16)); + for ( i=0; i<5; ++i ) if ( i!=1 ) + bs->baseline_pos[mapping[i]] = offsets[i] - offsets[ap_def]; + bs->next = base->scripts; + base->scripts = bs; + } +} diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/parsettfvar.c b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/parsettfvar.c new file mode 100644 index 00000000000..1467fcbc06b --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/parsettfvar.c @@ -0,0 +1,771 @@ +/* Copyright (C) 2000-2008 by George Williams */ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "pfaedit.h" +#include +#include +#include +#include +#include +#include +#include "ttf.h" + +/***************************************************************************/ +/* */ +/* Apple documents these tables at */ +/* http:// developer.apple.com/fonts/TTRefMan/RM06/Chap6[fgca]var.html */ +/* The documentation for fvar is inconsistant. At one point it says that */ +/* countSizePairs should be 3, at another point 2. It should be 2. */ +/* The documentation for gvar is not intelligable, cvar refers you to gvar */ +/* and is thus also incomprehensible */ +/* The documentation for avar appears correct, but as Apple has no fonts */ +/* with an 'avar' table, so it's hard to test. */ +/* */ +/***************************************************************************/ + +/* Parse Apple's variation tables (font, glyph, cvt and axis) */ +/* To be interesting a font must have an fvar and a gvar */ +/* If it's hinted it better have a cvar */ +/* It may have an avar if it wants to be complicated */ + +void VariationFree(struct ttfinfo *info) { + int i,j; + struct variations *variation = info->variations; + + if ( variation==NULL ) +return; + if ( variation->axes!=NULL ) { + for ( i=0; iaxis_count; ++i ) { + free(variation->axes[i].mapfrom); + free(variation->axes[i].mapto); + } + free(variation->axes); + } + if ( variation->instances!=NULL ) { + for ( i=0; iinstance_count; ++i ) { + free(variation->instances[i].coords); + } + free(variation->instances); + } + if ( variation->tuples!=NULL ) { + for ( i=0; ituple_count; ++i ) { + free(variation->tuples[i].coords); + if ( variation->tuples[i].chars!=NULL ) + for ( j=0; jglyph_cnt; ++j ) + SplineCharFree(variation->tuples[i].chars[j]); + free(variation->tuples[i].chars); + KernClassListFree(variation->tuples[i].khead); + KernClassListFree(variation->tuples[i].vkhead); + } + free(variation->tuples); + } + free(variation); + info->variations = NULL; +} + +static void parsefvar(struct ttfinfo *info, FILE *ttf) { + int data_off, axis_count, instance_count, cnt; + int i,j; + + fseek(ttf,info->fvar_start,SEEK_SET); + if ( getlong(ttf)!=0x00010000 ) /* I only understand version 1 */ +return; + data_off = getushort(ttf); + cnt = getushort(ttf); + if ( cnt>2 ) + LogError( _("Hmm, this 'fvar' table has more count/size pairs than I expect\n") ); + else if ( cnt<2 ) { + LogError( _("Hmm, this 'fvar' table has too few count/size pairs, I shan't parse it\n") ); +return; + } + axis_count = getushort(ttf); + if ( axis_count==0 || axis_count>4 ) { + if ( axis_count==0 ) + LogError( _("Hmm, this 'fvar' table has no axes, that doesn't make sense.\n") ); + else + LogError( _("Hmm, this 'fvar' table has more axes than FontForge can handle.\n") ); +return; + } + if ( getushort(ttf)!=20 ) { + LogError( _("Hmm, this 'fvar' table has an unexpected size for an axis, I shan't parse it\n") ); +return; + } + instance_count = getushort(ttf); + if ( getushort(ttf)!=4+4*axis_count ) { + LogError( _("Hmm, this 'fvar' table has an unexpected size for an instance, I shan't parse it\n") ); +return; + } + if ( data_off+axis_count*20+instance_count*(4+4*axis_count)> (int)info->fvar_len ) { + LogError( _("Hmm, this 'fvar' table is too short\n") ); +return; + } + + info->variations = gcalloc(1,sizeof(struct variations)); + info->variations->axis_count = axis_count; + info->variations->instance_count = instance_count; + info->variations->axes = gcalloc(axis_count,sizeof(struct taxis)); + info->variations->instances = gcalloc(instance_count,sizeof(struct tinstance)); + for ( i=0; ivariations->instances[i].coords = galloc(axis_count*sizeof(real)); + + fseek(ttf,info->fvar_start+data_off,SEEK_SET); + for ( i=0; ivariations->axes[i]; + a->tag = getlong(ttf); + a->min = getlong(ttf)/65536.0; + a->def = getlong(ttf)/65536.0; + a->max = getlong(ttf)/65536.0; + /* flags = */ getushort(ttf); + a->nameid = getushort(ttf); + } + for ( i=0; ivariations->instances[i]; + ti->nameid = getushort(ttf); + /* flags = */ getushort(ttf); + for ( j=0 ; jcoords[j] = getlong(ttf)/65536.0; + } +} + +static void parseavar(struct ttfinfo *info, FILE *ttf) { + int axis_count, pair_count; + int i,j; + + if ( info->variations==NULL || info->avar_start==0 || info->avar_len==0 ) +return; + + fseek(ttf,info->avar_start,SEEK_SET); + if ( getlong(ttf)!=0x00010000 ) { /* I only understand version 1 */ + VariationFree(info); +return; + } + axis_count = getlong(ttf); + if ( axis_count!=info->variations->axis_count ) { + LogError( _("Hmm, the axis count in the 'avar' table is different from that in the 'fvar' table.\n") ); + VariationFree(info); +return; + } + for ( i=0; ivariations->axes[i].mapfrom = galloc(pair_count*sizeof(real)); + info->variations->axes[i].mapto= galloc(pair_count*sizeof(real)); + for ( j=0; jvariations->axes[i].mapfrom[j] = getushort(ttf)/16384.0; + info->variations->axes[i].mapto[j] = getushort(ttf)/16384.0; + } + } + } + if ( ftell(ttf)-info->avar_start>info->avar_len) { + LogError( _("Hmm, the the 'avar' table is too long.\n") ); + VariationFree(info); +return; + } +} + +static SplineChar **InfoCopyGlyphs(struct ttfinfo *info) { + SplineChar **chars = galloc(info->glyph_cnt*sizeof(SplineChar *)); + int i; + RefChar *r; + + for ( i=0; iglyph_cnt; ++i ) { + if ( info->chars[i]==NULL ) + chars[i] = NULL; + else { + chars[i] = SplineCharCopy(info->chars[i],NULL,NULL); + free(chars[i]->ttf_instrs); chars[i]->ttf_instrs = NULL; + chars[i]->ttf_instrs_len = 0; + PSTFree(chars[i]->possub); chars[i]->possub = NULL; + for ( r=chars[i]->layers[ly_fore].refs; r!=NULL; r=r->next ) + r->sc = NULL; + chars[i]->changed = false; + chars[i]->ticked = false; + } + } + + for ( i=0; iglyph_cnt; ++i ) + ttfFixupRef(chars,i); +return( chars ); +} + +#define BAD_DELTA 0x10001 +static int *readpackeddeltas(FILE *ttf,int n) { + int *deltas; + int runcnt, i, j; + + deltas = galloc(n*sizeof(int)); + + i = 0; + while ( i0 ) + deltas[0] = BAD_DELTA; + } + } +return( deltas ); +} + +#define ALL_POINTS 0x10001 +#define END_OF_POINTS 0x10000 + +static int *readpackedpoints(FILE *ttf) { + int *points; + int n, runcnt, i, j, first; + + n = getc(ttf); + if ( n==EOF ) + n = 0; + if ( n&0x80 ) + n = getc(ttf)|((n&0x7f)<<8); + points = galloc((n+1)*sizeof(int)); + if ( n==0 ) + points[0] = ALL_POINTS; + else { + i = 0; + while ( i=v->tuple_count ) +return( false ); + + if ( vtest==dbase ) +return( true ); + for ( i=0; iaxis_count; ++i ) { + if ( v->tuples[vtest].coords[i]==0 && v->tuples[dbase].coords[i]!=0 ) +return( false ); + if ( v->tuples[dbase].coords[i]!=0 && + v->tuples[dbase].coords[i]!=v->tuples[vtest].coords[i] ) +return( false ); + } +return( true ); +} + +static int PointCount(SplineChar *sc) { + int i; + RefChar *ref; + SplineSet *ss; + SplinePoint *sp; + + if ( sc->layers[ly_fore].refs!=NULL ) + for ( i=0, ref=sc->layers[ly_fore].refs; ref!=NULL; ++i, ref=ref->next ); + else { + for ( i=0, ss = sc->layers[ly_fore].splines; ss!=NULL; ss=ss->next ) { + for ( sp=ss->first; sp!=NULL ; ) { + if ( sp->ttfindex!=0xffff && sp->ttfindex!=0xfffe ) + ++i; + if ( sp->nextcpindex!=0xffff && sp->nextcpindex!=0xfffe ) + ++i; + if ( sp->next==NULL ) + break; + sp = sp->next->to; + if ( sp==ss->first ) + break; + } + } + } +return( i ); +} + +static void SCShiftAllBy(SplineChar *sc,int xd, int yd) { + /* If they change the left/right side-bearing, I think that means everything */ + /* should be shifted over */ + SplineSet *ss; + SplinePoint *sp; + RefChar *ref; + + if ( xd==0 && yd==0 ) +return; + + for ( ss = sc->layers[ly_fore].splines; ss!=NULL; ss=ss->next ) { + for ( sp=ss->first; sp!=NULL ; ) { + if ( sp->ttfindex!=0xffff && sp->ttfindex!=0xfffe ) { + sp->me.x += xd; + sp->me.y += yd; + } + if ( sp->nextcpindex!=0xffff && sp->nextcpindex!=0xfffe ) { + sp->nextcp.x += xd; + sp->nextcp.y += yd; + if ( sp->next!=NULL ) + sp->next->to->prevcp = sp->nextcp; + } + if ( sp->next==NULL ) + break; + sp = sp->next->to; + if ( sp == ss->first ) + break; + } + } + for ( ref=sc->layers[ly_fore].refs; ref!=NULL; ref=ref->next ) { + ref->transform[4] += xd; + ref->transform[5] += yd; + SCReinstanciateRefChar(sc,ref,ly_fore); + } +} + +static void VaryGlyph(SplineChar *sc,int *points, int *xdeltas, int *ydeltas, + int pcnt) { + /* A character contains either composites or contours */ + int i,j; + RefChar *ref; + SplineSet *ss; + SplinePoint *sp; + Spline *s, *first; + + if ( points[0]==ALL_POINTS ) { + if ( sc->layers[ly_fore].refs!=NULL ) { + for ( i=0, ref=sc->layers[ly_fore].refs; ref!=NULL; ++i, ref=ref->next ) { + if ( xdeltas[i]!=0 || ydeltas[i]!=0 ) { + ref->transform[4] += xdeltas[i]; + ref->transform[5] += ydeltas[i]; + SCReinstanciateRefChar(sc,ref,ly_fore); + } + } + } else { + for ( ss = sc->layers[ly_fore].splines; ss!=NULL; ss=ss->next ) { + for ( sp=ss->first; sp!=NULL ; ) { + if ( sp->ttfindex!=0xffff && sp->ttfindex!=0xfffe ) { + sp->me.x += xdeltas[sp->ttfindex]; + sp->me.y += ydeltas[sp->ttfindex]; + } + if ( sp->nextcpindex!=0xffff && sp->nextcpindex!=0xfffe ) { + sp->nextcp.x += xdeltas[sp->nextcpindex]; + sp->nextcp.y += ydeltas[sp->nextcpindex]; + if ( sp->next!=NULL ) + sp->next->to->prevcp = sp->nextcp; + } + if ( sp->next==NULL ) + break; + sp = sp->next->to; + if ( sp == ss->first ) + break; + } + } + } + SCShiftAllBy(sc,-xdeltas[pcnt-4],0); + SCShiftAllBy(sc,0,-ydeltas[pcnt-2]); + sc->width += xdeltas[pcnt-3]; + sc->vwidth += ydeltas[pcnt-1]; + } else { + j = 0; + if ( sc->layers[ly_fore].refs!=NULL ) { + for ( i=0, ref=sc->layers[ly_fore].refs; ref!=NULL; ++i, ref=ref->next ) { + if ( points[j]==i ) { + if ( xdeltas[j]!=0 || ydeltas[j]!=0 ) { + ref->transform[4] += xdeltas[j]; + ref->transform[5] += ydeltas[j]; + SCReinstanciateRefChar(sc,ref,ly_fore); + } + ++j; + } + } + } else { + for ( i=0, ss = sc->layers[ly_fore].splines; ss!=NULL; ss=ss->next ) { + if ( ss->first->prev!=NULL && ss->first->prev->from->nextcpindex==points[j] ) { + ss->first->prevcp.x += xdeltas[j]; + ss->first->prevcp.y += ydeltas[j]; + ss->first->prev->from->nextcp = ss->first->prevcp; + ++j; + } + for ( sp=ss->first; sp!=NULL ; ++i ) { + if ( sp->ttfindex!=0xffff && sp->ttfindex!=0xfffe ) + ++i; + if ( sp->ttfindex==points[j] ) { + sp->me.x += xdeltas[j]; + sp->me.y += ydeltas[j++]; + } + if ( sp->nextcpindex!=0xffff && sp->nextcpindex!=0xfffe ) + ++i; + if ( sp->nextcpindex==points[j] ) { + sp->nextcp.x += xdeltas[j]; + sp->nextcp.y += ydeltas[j++]; + if ( sp->next!=NULL ) + sp->next->to->prevcp = sp->nextcp; + } else if ( sp->nonextcp ) { + sp->nextcp = sp->me; + } + if ( sp->next==NULL ) + break; + sp = sp->next->to; + if ( sp == ss->first ) + break; + } + first = NULL; + } + } + if ( points[j]==i ) + SCShiftAllBy(sc,-xdeltas[j++],0); + if ( points[j]==i+1 ) + sc->width += xdeltas[j++]; + if ( points[j]==i+2 ) + SCShiftAllBy(sc,0,-ydeltas[j++]); + if ( points[j]==i+3 ) + sc->vwidth += ydeltas[j++]; + } + if ( sc->layers[ly_fore].refs==NULL ) { + for ( ss = sc->layers[ly_fore].splines; ss!=NULL; ss=ss->next ) { + for ( sp=ss->first; sp!=NULL ; ++i ) { + if ( sp->ttfindex==0xffff ) { + sp->me.x = ( sp->nextcp.x + sp->prevcp.x )/2; + sp->me.y = ( sp->nextcp.y + sp->prevcp.y )/2; + } + if ( sp->next==NULL ) + break; + sp = sp->next->to; + if ( sp == ss->first ) + break; + } + + first = NULL; + for ( s=ss->first->next; s!=NULL && s!=first; s=s->to->next ) { + SplineRefigure(s); + if ( first==NULL ) first = s; + } + } + } +} + +static void VaryGlyphs(struct ttfinfo *info,int tupleIndex,int gnum, + int *points, FILE *ttf ) { + /* one annoying thing about gvar, is that the variations do not describe */ + /* designs. well variations for [0,1] describes that design, but the */ + /* design for [1,1] includes the variations [0,1], [1,0], and [1,1] */ + int pcnt, tc; + int *xdeltas, *ydeltas; + struct variations *v = info->variations; + + if ( info->chars[gnum]==NULL ) /* Apple doesn't support ttc so this */ +return; /* can't happen */ + if ( points==NULL ) { + LogError( _("Mismatched local and shared tuple flags.\n") ); +return; + } + + if ( points[0]==ALL_POINTS ) + pcnt = PointCount(info->chars[gnum])+4; + else { + for ( pcnt=0; points[pcnt]!=END_OF_POINTS; ++pcnt ); + } + xdeltas = readpackeddeltas(ttf,pcnt); + ydeltas = readpackeddeltas(ttf,pcnt); + if ( xdeltas[0]!=BAD_DELTA && ydeltas[0]!=BAD_DELTA ) + for ( tc = 0; tctuple_count; ++tc ) { + if ( TuplesMatch(v,tc,tupleIndex)) + VaryGlyph(v->tuples[tc].chars[gnum],points,xdeltas,ydeltas,pcnt); + } else { + static int warned = false; + if ( !warned ) + LogError( _("Incorrect number of deltas in glyph %d (%s)\n"), gnum, + info->chars[gnum]->name!=NULL?info->chars[gnum]->name:"" ); + warned = true; + } + free(xdeltas); + free(ydeltas); +} + +static void parsegvar(struct ttfinfo *info, FILE *ttf) { + /* I'm only going to support a subset of the gvar. Only the global tuples */ + int axiscount, globaltc, gvarflags, gc, i,j,g; + uint32 tupoff, dataoff, *gvars; + struct variations *v = info->variations; + int warned=false; + + fseek(ttf,info->gvar_start,SEEK_SET); + if ( getlong(ttf)!=0x00010000 ) { /* I only understand version 1 */ + VariationFree(info); +return; + } + axiscount = getushort(ttf); + if ( axiscount!=info->variations->axis_count ) { + LogError( _("Hmm, the axis count in the 'gvar' table is different from that in the 'fvar' table.\n") ); + VariationFree(info); +return; + } + globaltc = getushort(ttf); + tupoff = getlong(ttf) + info->gvar_start; + gc = getushort(ttf); + gvarflags = getushort(ttf); + dataoff = getlong(ttf) + info->gvar_start; + if ( globaltc==0 || globaltc>AppleMmMax ) { + if ( globaltc==0 ) + LogError( _("Hmm, no global tuples specified in the 'gvar' table.\n") ); + else + LogError( _("Hmm, too many global tuples specified in the 'gvar' table.\n FontForge only supports %d\n"), AppleMmMax ); + VariationFree(info); +return; + } + if ( gc>info->glyph_cnt ) { + LogError( _("Hmm, more glyph variation data specified than there are glyphs in font.\n") ); + VariationFree(info); +return; + } + + gvars = galloc((gc+1)*sizeof(uint32)); + if ( gvarflags&1 ) { /* 32 bit data */ + for ( i=0; i<=gc; ++i ) + gvars[i] = getlong(ttf)+dataoff; + } else { + for ( i=0; i<=gc; ++i ) + gvars[i] = getushort(ttf)*2 +dataoff; /* Undocumented *2 */ + } + + v->tuple_count = globaltc; + v->tuples = gcalloc(globaltc,sizeof(struct tuples)); + fseek(ttf,tupoff,SEEK_SET); + for ( i=0; ituples[i].coords = galloc(axiscount*sizeof(float)); + for ( j=0; jtuples[i].coords[j] = ((short) getushort(ttf))/16384.0; + v->tuples[i].chars = InfoCopyGlyphs(info); + } + + for ( g=0; gdata,cvt->len,2*i); + memputshort(cvt->data,2*i,val+delta); +} + +static void VaryCvt(struct tuples *tuple,int *points, int *deltas, + int pcnt, struct ttf_table *orig_cvt) { + struct ttf_table *cvt; + int i; + + if ( (cvt = tuple->cvt)==NULL ) { + cvt = tuple->cvt = chunkalloc(sizeof(struct ttf_table)); + cvt->tag = orig_cvt->tag; + cvt->len = cvt->maxlen = orig_cvt->len; + cvt->data = galloc(cvt->len); + memcpy(cvt->data,orig_cvt->data,cvt->len); + } + if ( points[0]==ALL_POINTS ) { + for ( i=0; ivariations; + + if ( points[0]==ALL_POINTS ) + pcnt = origcvt->len/sizeof(uint16); + else { + for ( pcnt=0; points[pcnt]!=END_OF_POINTS; ++pcnt ); + } + deltas = readpackeddeltas(ttf,pcnt); + if ( deltas[0]!=BAD_DELTA ) + for ( tc = 0; tctuple_count; ++tc ) { + if ( TuplesMatch(v,tc,tupleIndex)) + VaryCvt(&v->tuples[tc],points,deltas,pcnt,origcvt); + } else { + static int warned = false; + if ( !warned ) + LogError( _("Incorrect number of deltas in cvt\n") ); + warned = true; + } + free(deltas); +} + +static void parsecvar(struct ttfinfo *info, FILE *ttf) { + struct ttf_table *cvt; + int tuplecount; + uint32 offset; + int *sharedpoints=NULL; + int i; + int warned = false; + + for ( cvt = info->tabs; cvt!=NULL && cvt->tag!=CHR('c','v','t',' '); cvt=cvt->next ); + if ( cvt==NULL ) +return; + + fseek(ttf,info->cvar_start,SEEK_SET); + if ( getlong(ttf)!=0x00010000 ) { /* I only understand version 1 */ + /* I think I can live without cvt variations... */ + /* So I shan't free the structure */ +return; + } + + tuplecount = getushort(ttf); + offset = info->cvar_start+getushort(ttf); + /* The documentation implies there are flags packed into the tuplecount */ + /* but John Jenkins tells me that shared points don't apply to cvar */ + /* Might as well parse it just in case */ + if ( tuplecount&0x8000 ) { + uint32 here = ftell(ttf); + fseek(ttf,offset,SEEK_SET); + sharedpoints = readpackedpoints(ttf); + offset = ftell(ttf); + fseek(ttf,here,SEEK_SET); + } + for ( i=0; i<(tuplecount&0xfff); ++i ) { + int tupleDataSize, tupleIndex; + tupleDataSize = getushort(ttf); + tupleIndex = getushort(ttf); + /* there is no provision here for a global tuple coordinate section */ + /* so John says there are no tuple indeces. Just embedded tuples */ + if ( tupleIndex&0x4000 ) { + if ( !warned ) + LogError( _("Warning: 'cvar' contains intermediate tuple data.\n FontForge doesn't support this.\n") ); + warned = true; + if ( tupleIndex&0x8000 ) + fseek(ttf,2*info->variations->axis_count,SEEK_CUR); + if ( tupleIndex&0x4000 ) + fseek(ttf,4*info->variations->axis_count,SEEK_CUR); + } else { + int *localpoints=NULL; + uint32 here; + int j,k,ti; + ti = tupleIndex&0xfff; + if ( tupleIndex&0x8000 ) { + real *coords = galloc(info->variations->axis_count*sizeof(real)); + for ( j=0; jvariations->axis_count; ++j ) + coords[j] = ((int16) getushort(ttf))/16384.0; + for ( k=0 ; kvariations->tuple_count; ++k ) { + for ( j=0; jvariations->axis_count; ++j ) + if ( coords[j]!=info->variations->tuples[k].coords[j] ) + break; + if ( j==info->variations->axis_count ) + break; + } + ti = -1; + if ( k!=info->variations->tuple_count ) + ti = k; + } + if ( ti!=-1 ) { + here = ftell(ttf); + fseek(ttf,offset,SEEK_SET); + if ( tupleIndex&0x2000 ) + localpoints = readpackedpoints(ttf); + VaryCvts(info,ti,(tupleIndex&0x2000)?localpoints:sharedpoints,ttf,cvt); + free(localpoints); + fseek(ttf,here,SEEK_SET); + } + } + offset += tupleDataSize; + } + free(sharedpoints); +} + +void readttfvariations(struct ttfinfo *info, FILE *ttf) { + if ( info->gvar_start==0 || info->gvar_len==0 || info->fvar_start==0 || info->fvar_len==0 ) +return; + + ff_progress_change_line2(_("Processing Variations")); + parsefvar(info,ttf); + if ( info->variations!=NULL && info->avar_start!=0 ) + parseavar(info,ttf); + if ( info->variations!=NULL ) + parsegvar(info,ttf); + if ( info->variations!=NULL && info->cvar_start!=0 && info->cvt_start!=0 ) + parsecvar(info,ttf); +} diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/pfaedit.h b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/pfaedit.h new file mode 100644 index 00000000000..ac10e80f070 --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/pfaedit.h @@ -0,0 +1,103 @@ +/* Copyright (C) 2000-2008 by George Williams */ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef _PFAEDIT_H_ +#define _PFAEDIT_H_ + +#include "configure-pfaedit.h" +#include +#include +#include +#include +#include "splinefont.h" +#include "uiinterface.h" + +static const int unicode4_size = 17*65536; + /* Unicode goes up to 0x10ffff */ + + +extern void ProcessNativeScript(int argc, char *argv[], FILE *script); +extern void CheckIsScript(int argc, char *argv[]); + +extern char *AdobeStandardEncoding[256]; +extern int32 unicode_from_adobestd[256]; + +struct unicode_nameannot { + const char *name, *annot; +}; +extern const struct unicode_nameannot * const *const *_UnicodeNameAnnot; + +extern int default_fv_font_size; +extern int default_fv_antialias; +extern int default_fv_bbsized; +extern Encoding *default_encoding, custom; +extern int adjustwidth; +extern int adjustlbearing; +extern int autohint_before_rasterize; +extern int autohint_before_generate; +extern int seperate_hint_controls; +extern int no_windowing_ui; +extern uint32 default_background; +extern int use_utf8_in_script; + +extern int new_em_size; +extern int new_fonts_are_order2; +extern int loaded_fonts_same_as_new; + +extern char *BDFFoundry, *TTFFoundry; +extern char *xuid; + +extern int pagewidth, pageheight, printtype; /* Printer defaults */ +extern char *printcommand, *printlazyprinter; + +extern Encoding *enclist; + + +#define SCRIPT_MENU_MAX 10 + + +extern MacFeat *default_mac_feature_map; + +typedef struct library_version_configuration { + uint16 major, minor; + long library_source_modtime; + char *library_source_modtime_string; + int library_source_versiondate; + uint16 sizeof_me; + uint16 sizeof_splinefont; + uint16 sizeof_splinechar; + uint16 sizeof_fvbase; + uint16 sizeof_cvbase; + uint16 sizeof_cvcontainer; + uint8 config_had_devicetables; + uint8 config_had_multilayer; + uint8 config_had_python; + uint8 mba1; /* Must be all ones (0xff), config values are 0,1 need to distinquish from both */ +} Library_Version_Configuration; +extern Library_Version_Configuration library_version_configuration; + +extern int check_library_version(Library_Version_Configuration *exe_lib_version, int fatal, int quiet); +#endif diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/plugins.h b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/plugins.h new file mode 100644 index 00000000000..58ae2448484 --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/plugins.h @@ -0,0 +1,99 @@ +/* Copyright (C) 2005-2008 by George Williams */ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* If a user wants to write a fontforge plugin s/he should include this file */ + +/* + I envision that there will eventually be three types of plug-ins. At the + moment I am only supporing two of them. + + * A plug in which adds a new encoding to the encoding/force encoding + menus. + * A plug in which adds a new scripting command + * A plug in which adds a new menu item. + (I haven't figure out how I want to do this last. So I'm not currently + supporting it.) + + A plug-in should be a dynamic library. + Plug-ins will be loaded at start up if they are in the default plugin + directory, or a script may explicitly invoke a LoadPlugin() call + and pass a filename. + Each plug-in should contain an entry-point: + void FontForgeInit(void); + When FF loads a plug-in it will call this entry point. + I expect that this routine in term will call one (or more) of the install + routines (though it can do whatever it likes): + * AddEncoding(name,enc-to-unicode-func,unicode-to-enc-func) + * AddScriptingCommand(name,func,needs-font) + + Once loaded, there is no way to remove a plug in -- but you can map a + plug in's name to do something else. + + I am presuming that plugins will be linked against libfontforge and + that it will have access to all routines declared in fontforge's + header files. I do not expect to turn this into a real library with + a true API. It's just a catch all bag of routines I have needed. + It's not documented either. +*/ + + /* Entry point all plugins must contain */ +extern int FontForgeInit(void); + /* If the load fails, then this routine should return 0, else 1 */ + /* if it returns 0, fontforge will dlclose the shared lib */ + /* FontForge will not complain itself. FontForgeInit should */ + /* call LogError (or gwwv_post_error or whatever) if it wants */ + /* to report failure */ + + /* AddScriptingCommand is documented within */ +#include "scripting.h" + + /* AddEncoding is documented here */ +typedef int (*EncFunc)(int); +extern int AddEncoding(char *name,EncFunc enc_to_uni,EncFunc uni_to_enc,int max); + /* The "Encoding" here is a little different from what you normally see*/ + /* It isn't a mapping from a byte stream to unicode, but from an int */ + /* to unicode. If we have an 8/16 encoding (EUC or SJIS) then the */ + /* single byte entries will be numbers less than <256 and the */ + /* multibyte entries will be numbers >=256. So an encoding might be */ + /* valid for the domain [0x20..0x7f] [0xa1a1..0xfefe] */ + /* In other words, we're interested in the ordering displayed in the */ + /* fontview. Nothing else */ + /* The max value need not be exact (though it should be at least as big)*/ + /* if you create a new font with the given encoding, then the font will */ + /* have max slots in it by default */ + /* A return value of -1 (from an EncFunc) indicates no mapping */ + /* AddEncoding returns 1 if the encoding was added, 2 if it replaced */ + /* an existing encoding, 0 if you attempt to replace a builtin */ + /* encoding */ + + + /* Internal routines. Plugins shouldn't need these */ +extern void LoadPlugin(char *dynamic_lib_name); + /* Loads a single plugin file */ +extern void LoadPluginDir(char *dir); + /* Loads any dynamic libs from this directory. if dir is NULL loads from */ + /* default directory */ diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/psfont.h b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/psfont.h new file mode 100644 index 00000000000..5362ccd3cf1 --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/psfont.h @@ -0,0 +1,191 @@ +/* Copyright (C) 2000-2008 by George Williams */ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef _PSFONT_H_ +#define _PSFONT_H_ + +#include "splinefont.h" + +/* pfb section headers. + There seem to be three and a half of them. the first is a the start of the + file and is 6 bytes long "\200\001x\005\000\000", the second is right after + the newline after eexec and is 6 bytes "\200\002I\224\000\000", the third + is right before the zeros (after the encoded data) and is "\200\001\024\002\000\000" + the last is at the end of file and is only two bytes "\200\003" + I think that the \200 byte indicates a header, the next byte is 1 for ascii, + 2 for binary and 3 for eof, then next 4 bytes are the length (not present + for eof headers) with the first byte the least significant. +*/ + +struct charprocs { + int cnt, next; + char **keys; + SplineChar **values; +}; + +struct fontinfo { + char *familyname; + char *fullname; + char *notice; + char *weight; + char *version; + real italicangle; + unsigned int isfixedpitch:1; + real underlineposition; + real underlinethickness; + int em, ascent, descent; /* Generated by Fontographer (and us) */ + int fstype; /* 2=>no embedding, 4=>print, 8=>edit */ + /* Multiple master */ + char *blenddesignpositions; + char *blenddesignmap; + char *blendaxistypes; +}; + +struct private { + struct psdict *private; + struct pschars *subrs; /* (optional, required if othersubrs is present) */ + /* 0-2 part of Flex, 3 hint replacement, 4 and up for charstrings */ + int leniv; /* (optional) must be 4 for old interpreters (number of rand chars at start of charstrings entries) */ +#if 0 + int bluefuzz; /* (optional) (expand bluezones by this much, def=1) */ + real bluescale; /* (optional) if the current pointsize in pixels is less than this value then do overshoot hinting */ + int blueshift; /* (optional) */ + real bluevalues[14]; /* <=7 pairs of integers, first less than second, (may be empty) */ + /* first pair is baseline overshoots, other pairs above baseline */ + real expansionfactor; /* (optional) only for languagegroup==1 (CJK) */ + real familyblues[14]; /* (optional) bluevalues for family, can override local entry at small pointsizes */ + real familyotherblues[10];/* (optional) otherblues for family */ + unsigned int forcebold:1; /* (optional) */ + int languagegroup; /* (optional) (0=>latin, greek, cyril, etc.), (1=>CJK)*/ + int leniv; /* (optional) must be 4 for old interpreters (number of rand chars at start of charstrings entries) */ + char *minfeature; /* obsolete, required must be {16 16} */ + char *nd; /* "noaccess def" (may also be named "|-") */ + char *np; /* "noaccess put" (may also be named "|") */ + real otherblues[10]; /* (optional) descender blue zones */ + struct pschars *othersubrs; /* (optional) shouldn't contain user defined subs */ + int password; /* obsolete, required must be 5839 */ + char *rd; /* "{string currentfile exch readstring pop}" (may also be named "-|") */ + unsigned int rndstemup:1; /* (optional) obsolete, false if languagegroud==1 */ + real stdhw[1]; /* (optional) dominant horizontal stem width */ + real stdvw[1]; /* (optional) dominant vert */ + real stemsnaph[12]; /* (optional) common h stem widths (at most 12, includes stdhw, sorted by increasing size) */ + real stemsnapv[12]; /* (optional) common v stem widths*/ + struct pschars *subrs; /* (optional, required if othersubrs is present) */ + /* 0-2 part of Flex, 3 hint replacement, 4 and up for charstrings */ + int uniqueid; /* (optional) seems same as fontdict entry. why's it here too? what of XUID? */ +/* CID entries */ + int subrmapoffset; /* Offset to the start of this font's subr strings map */ + int sdbytes; /* bytes in each pointer in the map */ + int subrcnt; /* number of subroutines, number of pointers-1 in the map */ +#endif +}; + +typedef struct fontdict { + int fonttype; + real fontmatrix[6]; + char *fontname; /* (optional) */ + struct fontinfo *fontinfo; + int languagelevel; /* (optional) */ + int wmode; /* (optional) chooses between alternate metric sets */ +/* non-type0 entries */ + char *encoding[256]; + real fontbb[4]; + int uniqueid; /* (optional) open range between 4,000,000 and 4,999,999 */ + int xuid[20]; /* (optional) */ +/* Type1 specific values */ + int painttype; /* 0 (filled) 2 (stroked) */ + real strokewidth; /* (optional) only if painttype==2 */ + struct psdict *metrics; /* (optional) */ + struct psdict *metrics2; /* (optional) */ + struct pschars *chars; + struct charprocs *charprocs; + struct private *private; + unsigned int wasbinary: 1; + unsigned int wascff: 1; + Encoding *encoding_name; +/* CID stuff */ + int fdcnt; /* For the underlying dictionaries */ + struct fontdict **fds; + char *cidfontname; + int cidfonttype; + real cidversion; + char *registry; + char *ordering; + int supplement; + int mapoffset; + int fdbytes; + int gdbytes; + int cidcnt; + uint8 **cidstrs; + int16 *cidlens; + int16 *cidfds; +/* CFF stuff */ + struct splinefont *sf; +/* MM stuff */ + char *blendfunc; + char *weightvector; + char *cdv; + char *ndv; + struct psdict *blendprivate; + struct psdict *blendfontinfo; +#ifdef _HAS_LONGLONG + long long creationtime; /* seconds since 1970 */ + long long modificationtime; +#else + long creationtime; + long modificationtime; +#endif +} FontDict; + +struct cidbytes { + int fdbytes, gdbytes, cidcnt; + int cidmapoffset; + int fdcnt; + struct fddata { + int leniv; + int subrmapoff, sdbytes, subrcnt; + int flexmax; + unsigned int iscjk:1; + struct pschars *subrs; + } *fds; + int *fdind; + int errors; +}; + +struct fd2data { + int defwid, nomwid; /* For Type2 charstrings */ + struct pschars *subrs; + FILE *private; /* Subroutines get stored in the private file immediately after the private dict */ + int eodictmark, fillindictmark; + int privatelen; +}; + +extern char *AdobeStandardEncoding[256]; + +extern FontDict *_ReadPSFont(FILE *ps); +extern FontDict *ReadPSFont(char *fontname); +extern void PSFontFree(FontDict *fd); +#endif diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/psread.c b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/psread.c new file mode 100644 index 00000000000..c5e4958d0f5 --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/psread.c @@ -0,0 +1,4123 @@ +/* Copyright (C) 2000-2008 by George Williams */ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "pfaedit.h" +#include +#include +#include +#include +#include "psfont.h" +#include "sd.h" +#include "views.h" /* For CharViewBase */ +#ifdef HAVE_IEEEFP_H +# include /* Solaris defines isnan in ieeefp rather than math.h */ +#endif + +typedef struct _io { + char *macro, *start; + FILE *ps, *fog; + char fogbuf[60]; + int backedup, cnt, isloop, isstopped, fogns; + struct _io *prev; +} _IO; + +typedef struct io { + struct _io *top; + int endedstopped; + int advance_width; /* Can be set from a PS comment by MF2PT1 */ +} IO; + +typedef struct growbuf { + char *pt; + char *base; + char *end; +} GrowBuf; + +#define GARBAGE_MAX 64 +struct garbage { + int cnt; + struct garbage *next; + struct pskeyval *entries[GARBAGE_MAX]; + int16 cnts[GARBAGE_MAX]; +}; + +static void GrowBuffer(GrowBuf *gb,int len) { + if ( len<400 ) len = 400; + if ( gb->base==NULL ) { + gb->base = gb->pt = galloc(len); + gb->end = gb->base + len; + } else { + int off = gb->pt-gb->base; + len += (gb->end-gb->base); + gb->base = grealloc(gb->base,len); + gb->end = gb->base + len; + gb->pt = gb->base+off; + } +} + +static void AddTok(GrowBuf *gb,char *buf,int islit) { + int len = islit + strlen(buf) + 1; + + if ( gb->pt+len+1 >= gb->end ) + GrowBuffer(gb,len+1); + if ( islit ) + *(gb->pt++) = '/'; + strcpy(gb->pt,buf); + gb->pt += strlen(buf); + *gb->pt++ = ' '; +} + +static struct pskeyval *lookup(struct pskeydict *dict,char *tokbuf) { + int i; + + for ( i=0; icnt; ++i ) + if ( strcmp(dict->entries[i].key,tokbuf)==0 ) +return( &dict->entries[i] ); + +return( NULL ); +} + +static void dictfree(struct pskeydict *dict) { + int i; + + for ( i=0; icnt; ++i ) { + if ( dict->entries[i].type==ps_string || dict->entries[i].type==ps_instr || + dict->entries[i].type==ps_lit ) + free(dict->entries[i].u.str); + else if ( dict->entries[i].type==ps_array || dict->entries[i].type==ps_dict ) + dictfree(&dict->entries[i].u.dict); + } +} + +static void garbagefree(struct garbage *all) { + struct garbage *junk, *next; + int i,j; + + for ( junk = all; junk!=NULL; junk = next ) { + next = junk->next; + for ( j=0; jcnt; ++j ) { + for ( i=0; icnts[j]; ++i ) { + if ( junk->entries[j][i].type==ps_string || junk->entries[j][i].type==ps_instr || + junk->entries[j][i].type==ps_lit ) + free(junk->entries[j][i].u.str); + } + free(junk->entries[j]); + } + if ( junk!=all ) + chunkfree(junk,sizeof(struct garbage)); + } +} +/**************************** Postscript Importer *****************************/ +/* It's really dumb. It ignores almost everything except linetos and curvetos */ +/* anything else, function calls, ... is thrown out, if this breaks a lineto */ +/* or curveto or moveto (if there aren't enough things on the stack) then we */ +/* ignore that too */ + +enum pstoks { pt_eof=-1, pt_moveto, pt_rmoveto, pt_curveto, pt_rcurveto, + pt_lineto, pt_rlineto, pt_arc, pt_arcn, pt_arct, pt_arcto, + pt_newpath, pt_closepath, pt_dup, pt_pop, pt_index, + pt_exch, pt_roll, pt_clear, pt_copy, pt_count, + pt_setcachedevice, pt_setcharwidth, + pt_translate, pt_scale, pt_rotate, pt_concat, pt_end, pt_exec, + pt_add, pt_sub, pt_mul, pt_div, pt_idiv, pt_mod, pt_neg, + pt_abs, pt_round, pt_ceiling, pt_floor, pt_truncate, pt_max, pt_min, + pt_ne, pt_eq, pt_gt, pt_ge, pt_lt, pt_le, pt_and, pt_or, pt_xor, pt_not, + pt_exp, pt_sqrt, pt_ln, pt_log, pt_atan, pt_sin, pt_cos, + pt_true, pt_false, + pt_if, pt_ifelse, pt_for, pt_loop, pt_repeat, pt_exit, + pt_stopped, pt_stop, + pt_def, pt_bind, pt_load, + pt_setlinecap, pt_setlinejoin, pt_setlinewidth, pt_setdash, + pt_currentlinecap, pt_currentlinejoin, pt_currentlinewidth, pt_currentdash, + pt_setgray, pt_currentgray, pt_sethsbcolor, pt_currenthsbcolor, + pt_setrgbcolor, pt_currentrgbcolor, pt_setcmykcolor, pt_currentcmykcolor, + pt_currentpoint, + pt_fill, pt_stroke, pt_clip, + + pt_imagemask, + + pt_transform, pt_itransform, pt_dtransform, pt_idtransform, + + /* things we sort of pretend to do, but actually do something wrong */ + pt_gsave, pt_grestore, pt_save, pt_restore, pt_currentmatrix, pt_setmatrix, + pt_null, + + pt_currentflat, pt_setflat, + pt_currentglobal, pt_setglobal, + pt_currentmiterlimit, pt_setmiterlimit, + pt_currentobjectformat, pt_setobjectformat, + pt_currentoverprint, pt_setoverprint, + pt_currentpacking, pt_setpacking, + pt_currentshared, + pt_currentsmoothness, pt_setsmoothness, + pt_currentstrokeadjust, pt_setstrokeadjust, + + pt_mark, pt_counttomark, pt_cleartomark, pt_array, pt_aload, pt_astore, + pt_print, pt_cvi, pt_cvlit, pt_cvn, pt_cvr, pt_cvrs, pt_cvs, pt_cvx, pt_stringop, + + pt_opencurly, pt_closecurly, pt_openarray, pt_closearray, pt_string, + pt_number, pt_unknown, pt_namelit, pt_output, pt_outputd }; + +static char *toknames[] = { "moveto", "rmoveto", "curveto", "rcurveto", + "lineto", "rlineto", "arc", "arcn", "arct", "arcto", + "newpath", "closepath", "dup", "pop", "index", + "exch", "roll", "clear", "copy", "count", + "setcachedevice", "setcharwidth", + "translate", "scale", "rotate", "concat", "end", "exec", + "add", "sub", "mul", "div", "idiv", "mod", "neg", + "abs", "round", "ceiling", "floor", "truncate", "max", "min", + "ne", "eq", "gt", "ge", "lt", "le", "and", "or", "xor", "not", + "exp", "sqrt", "ln", "log", "atan", "sin", "cos", + "true", "false", + "if", "ifelse", "for", "loop", "repeat", "exit", + "stopped", "stop", + "def", "bind", "load", + "setlinecap", "setlinejoin", "setlinewidth", "setdash", + "currentlinecap", "currentlinejoin", "currentlinewidth", "currentdash", + "setgray", "currentgray", "sethsbcolor", "currenthsbcolor", + "setrgbcolor", "currentrgbcolor", "setcmykcolor", "currentcmykcolor", + "currentpoint", + "fill", "stroke", "clip", + + "imagemask", + + "transform", "itransform", "dtransform", "idtransform", + + "gsave", "grestore", "save", "restore", "currentmatrix", "setmatrix", + "null", + + "currentflat", "setflat", + "currentglobal", "setglobal", + "currentmiterlimit", "setmiterlimit", + "currentobjectformat", "setobjectformat", + "currentoverprint", "setoverprint", + "currentpacking", "setpacking", + "currentshared", + "currentsmoothness", "setsmoothness", + "currentstrokeadjust", "setstrokeadjust", + + "mark", "counttomark", "cleartomark", "array", "aload", "astore", + "print", "cvi", "cvlit", "cvn", "cvr", "cvrs", "cvs", "cvx", "string", + + "opencurly", "closecurly", "openarray", "closearray", "string", + "number", "unknown", "namelit", "=", "==", + + NULL }; + +/* length (of string) + fill eofill stroke + gsave grestore +*/ + +static int getfoghex(_IO *io) { + int ch,val; + + while ( isspace( ch = getc(io->fog))); + if ( isdigit(ch)) + val = ch-'0'; + else if ( ch >= 'A' && ch <= 'F' ) + val = ch-'A'+10; + else if ( ch >= 'a' && ch <= 'f' ) + val = ch-'a'+10; + else +return(EOF); + + val <<= 4; + while ( isspace( ch = getc(io->fog))); + if ( isdigit(ch)) + val |= ch-'0'; + else if ( ch >= 'A' && ch <= 'F' ) + val |= ch-'A'+10; + else if ( ch >= 'a' && ch <= 'f' ) + val |= ch-'a'+10; + else +return(EOF); + +return( val ); +} + +static int nextch(IO *wrapper) { + int ch; + _IO *io = wrapper->top; +/* This works for fog 4.1. Fonts generated by 2.4 seem to use a different */ +/* vector, and a different number parsing scheme */ + static char *foguvec[]= { "moveto ", "rlineto ", "rrcurveto ", " ", " ", + "Cache ", "10 div setlinewidth ", "ShowInt ", " ", " ", " ", " ", + "FillStroke ", " ", " ", "SetWid ", "100 mul add ", "togNS_ ", + " ", "closepath ", " ", "SG " }; + + while ( io!=NULL ) { + if ( io->backedup!=EOF ) { + ch = io->backedup; + io->backedup = EOF; +return( ch ); + } else if ( io->ps!=NULL ) { + if ( (ch = getc(io->ps))!=EOF ) +return( ch ); + } else if ( io->fog!=NULL ) { + if ( io->macro!=NULL && *io->macro!='\0' ) +return( *(io->macro++) ); + ch = getfoghex(io); + if ( ch>=233 ) { + io->macro = foguvec[ch-233]; +return( *(io->macro++) ); + } else if ( ch!=EOF && ch<200 ) { + sprintf( io->fogbuf, "%d ", ch-100); + io->macro=io->fogbuf; +return( *(io->macro++) ); + } else if (ch!=EOF) { + sprintf( io->fogbuf, "%d %s ", ch-233+17, io->fogns + ? "2 exch exp 3 1 roll 100 mul add mul" + : "100 mul add" ); + io->macro=io->fogbuf; +return( *(io->macro++) ); + } + } else { + if ( (ch = *(io->macro++))!='\0' ) +return( ch ); + if ( --io->cnt>0 ) { + io->macro = io->start; +return( nextch(wrapper)); + } + } + wrapper->top = io->prev; + if ( io->isstopped ) + wrapper->endedstopped = true; + free(io->start); + free(io); + io = wrapper->top; + } +return( EOF ); +} + +static void unnextch(int ch,IO *wrapper) { + if ( ch==EOF ) +return; + if ( wrapper->top==NULL ) + LogError( _("Can't back up with nothing on stack\n") ); + else if ( wrapper->top->backedup!=EOF ) + LogError( _("Attempt to back up twice\n") ); + else if ( wrapper->top->ps!=NULL ) + ungetc(ch,wrapper->top->ps); + else + wrapper->top->backedup = ch; +} + +static void pushio(IO *wrapper, FILE *ps, char *macro, int cnt) { + _IO *io = gcalloc(1,sizeof(_IO)); + + io->prev = wrapper->top; + io->ps = ps; + io->macro = io->start = copy(macro); + io->backedup = EOF; + if ( cnt==-1 ) { + io->cnt = 1; + io->isstopped = true; + } else if ( cnt==0 ) { + io->cnt = 1; + io->isloop = false; + } else { + io->cnt = cnt; + io->isloop = true; + } + wrapper->top = io; +} + +static void pushfogio(IO *wrapper, FILE *fog) { + _IO *io = gcalloc(1,sizeof(_IO)); + + io->prev = wrapper->top; + io->fog = fog; + io->backedup = EOF; + io->cnt = 1; + io->isloop = false; + wrapper->top = io; +} + +static void ioescapeloop(IO *wrapper) { + _IO *io = wrapper->top, *iop; + int wasloop; + + while ( io->prev!=NULL && !io->isstopped ) { + iop = io->prev; + wasloop = io->isloop; + free(io->start); + free(io); + if ( wasloop ) { + wrapper->top = iop; +return; + } + io = iop; + } + +/* GT: This is part of the PostScript language. "exit" should not be translated */ +/* GT: as it is a PostScript keyword. (FF contains a small PostScript interpreter */ +/* GT: so it can understand some PostScript fonts, and can generate errors when */ +/* GT: handed bad PostScript). */ + LogError( _("Use of \"exit\" when not in a loop\n") ); + wrapper->top = io; +} + +static int ioescapestopped(IO *wrapper, struct psstack *stack, int sp) { + _IO *io = wrapper->top, *iop; + int wasstopped; + + while ( io->prev!=NULL ) { + iop = io->prev; + wasstopped = io->isstopped; + free(io->start); + free(io); + if ( wasstopped ) { + wrapper->top = iop; + if ( sp<(int)(sizeof(stack)/sizeof(stack[0])) ) { + stack[sp].type = ps_bool; + stack[sp++].u.tf = true; + } +return(sp); + } + io = iop; + } + +/* GT: This is part of the PostScript language. Neither "stop" nor "stopped" */ +/* GT: should be translated as both are PostScript keywords. */ + LogError( _("Use of \"stop\" when not in a stopped\n") ); + wrapper->top = io; +return( sp ); +} + +static int endedstopped(IO *wrapper) { + if ( wrapper->endedstopped ) { + wrapper->endedstopped = false; +return( true ); + } +return( false ); +} + + +static int nextpstoken(IO *wrapper, real *val, char *tokbuf, int tbsize) { + int ch, r, i; + char *pt, *end; + float mf2pt_advance_width; + + pt = tokbuf; + end = pt+tbsize-1; + + /* Eat whitespace and comments. Comments last to eol (or formfeed) */ + while ( 1 ) { + while ( isspace(ch = nextch(wrapper)) ); + if ( ch!='%' ) + break; + while ( (ch=nextch(wrapper))!=EOF && ch!='\r' && ch!='\n' && ch!='\f' ) + if ( ptadvance_width = mf2pt_advance_width; + else if ( sscanf( tokbuf, " MF2PT1: glyph_dimensions %*g %*g %g %*g", &mf2pt_advance_width )==1 ) + wrapper->advance_width = mf2pt_advance_width; + pt = tokbuf; + } + + if ( ch==EOF ) +return( pt_eof ); + + pt = tokbuf; + end = pt+tbsize-1; + *pt++ = ch; *pt='\0'; + + if ( ch=='(' ) { + int nest=1, quote=0; + while ( (ch=nextch(wrapper))!=EOF ) { + if ( pt' ) + /* Done */; + else if ( ch!='~' ) { + while ( (ch=nextch(wrapper))!=EOF && ch!='>' ) + if ( pt' ) + break; + else twiddle = 0; + } + } + *pt='\0'; +return( pt_string ); + } else if ( ch==')' || ch=='>' || ch=='[' || ch==']' || ch=='{' || ch=='}' ) { + if ( ch=='{' ) +return( pt_opencurly ); + else if ( ch=='}' ) +return( pt_closecurly ); + if ( ch=='[' ) +return( pt_openarray ); + else if ( ch==']' ) +return( pt_closearray ); + +return( pt_unknown ); /* single character token */ + } else if ( ch=='/' ) { + pt = tokbuf; + while ( (ch=nextch(wrapper))!=EOF && !isspace(ch) && ch!='%' && + ch!='(' && ch!=')' && ch!='<' && ch!='>' && ch!='[' && ch!=']' && + ch!='{' && ch!='}' && ch!='/' ) + if ( ptx = trans[0]*from->x+trans[2]*from->y+trans[4]; + to->y = trans[1]*from->x+trans[3]*from->y+trans[5]; +} + +void MatMultiply(real m1[6], real m2[6], real to[6]) { + real trans[6]; + + trans[0] = m1[0]*m2[0] + + m1[1]*m2[2]; + trans[1] = m1[0]*m2[1] + + m1[1]*m2[3]; + trans[2] = m1[2]*m2[0] + + m1[3]*m2[2]; + trans[3] = m1[2]*m2[1] + + m1[3]*m2[3]; + trans[4] = m1[4]*m2[0] + + m1[5]*m2[2] + + m2[4]; + trans[5] = m1[4]*m2[1] + + m1[5]*m2[3] + + m2[5]; + memcpy(to,trans,sizeof(trans)); +} + +void MatInverse(real into[6], real orig[6]) { + real det = orig[0]*orig[3] - orig[1]*orig[2]; + + if ( det==0 ) { + LogError( _("Attempt to invert a singular matrix\n") ); + memset(into,0,sizeof(*into)); + } else { + into[0] = orig[3]/det; + into[1] = -orig[1]/det; + into[2] = -orig[2]/det; + into[3] = orig[0]/det; + into[4] = -orig[4]*into[0] - orig[5]*into[2]; + into[5] = -orig[4]*into[1] - orig[5]*into[3]; + } +} + +static void ECCatagorizePoints( EntityChar *ec ) { + Entity *ent; + + for ( ent=ec->splines; ent!=NULL; ent=ent->next ) if ( ent->type == et_splines ) { + SPLCatagorizePoints( ent->u.splines.splines ); + SPLCatagorizePoints( ent->clippath ); + } +} + +static int AddEntry(struct pskeydict *dict,struct psstack *stack, int sp) { + int i; + + if ( dict->cnt>=dict->max ) { + if ( dict->cnt==0 ) { + dict->max = 30; + dict->entries = galloc(dict->max*sizeof(struct pskeyval)); + } else { + dict->max += 30; + dict->entries = grealloc(dict->entries,dict->max*sizeof(struct pskeyval)); + } + } + if ( sp<2 ) +return(sp); + if ( stack[sp-2].type!=ps_string && stack[sp-2].type!=ps_lit ) { +/* GT: Here "def" is a PostScript keyword, (meaning define). */ +/* GT: This "def" should not be translated as it is part of the PostScript language. */ + LogError( _("Key for a def must be a string or name literal\n") ); +return(sp-2); + } + for ( i=0; icnt; ++i ) + if ( strcmp(dict->entries[i].key,stack[sp-2].u.str)==0 ) + break; + if ( i!=dict->cnt ) { + free(stack[sp-2].u.str); + if ( dict->entries[i].type==ps_string || dict->entries[i].type==ps_instr || + dict->entries[i].type==ps_lit ) + free(dict->entries[i].u.str); + } else { + memset(&dict->entries[i],'\0',sizeof(struct pskeyval)); + dict->entries[i].key = stack[sp-2].u.str; + ++dict->cnt; + } + dict->entries[i].type = stack[sp-1].type; + dict->entries[i].u = stack[sp-1].u; +return(sp-2); +} + +static int forgetstack(struct psstack *stack, int forgets, int sp) { + /* forget the bottom most "forgets" entries on the stack */ + /* we presume they are garbage that has accumulated because we */ + /* don't understand all of PS */ + int i; + for ( i=0; i1 ) { + n = stack[sp-2].u.val; + j = stack[sp-1].u.val; + sp-=2; + if ( sp>=n && n>0 ) { + j %= n; + if ( j<0 ) j += n; + temp = galloc(n*sizeof(struct psstack)); + for ( i=0; ix) || test->x>100000 || test->x<-100000 ) { + LogError( _("Value out of bounds in spline.\n") ); + if ( good!=NULL ) + test->x = good->x; + else + test->x = 0; + } + if ( !finite(test->y) || test->y>100000 || test->y<-100000 ) { + LogError( _("Value out of bounds in spline.\n") ); + if ( good!=NULL ) + test->y = good->y; + else + test->y = 0; + } +} + +static void CheckMake(SplinePoint *from, SplinePoint *to) { + CheckMakeB(&from->me,NULL); + CheckMakeB(&from->nextcp,&from->me); + CheckMakeB(&to->prevcp,&from->nextcp); + CheckMakeB(&to->me,&to->prevcp); +} + +static void circlearcto(real a1, real a2, real cx, real cy, real r, + SplineSet *cur, real *transform ) { + SplinePoint *pt; + DBasePoint temp, base, cp; + real cplen; + int sign=1; + real s1, s2, c1, c2; + + if ( a1==a2 ) +return; + + cplen = (a2-a1)/90 * r * .552; + a1 *= 3.1415926535897932/180; a2 *= 3.1415926535897932/180; + s1 = sin(a1); s2 = sin(a2); c1 = cos(a1); c2 = cos(a2); + temp.x = cx+r*c2; temp.y = cy+r*s2; + base.x = cx+r*c1; base.y = cy+r*s1; + pt = chunkalloc(sizeof(SplinePoint)); + Transform(&pt->me,&temp,transform); + cp.x = temp.x-cplen*s2; cp.y = temp.y + cplen*c2; + if ( (cp.x-base.x)*(cp.x-base.x)+(cp.y-base.y)*(cp.y-base.y) > + (temp.x-base.x)*(temp.x-base.x)+(temp.y-base.y)*(temp.y-base.y) ) { + sign = -1; + cp.x = temp.x+cplen*s2; cp.y = temp.y - cplen*c2; + } + Transform(&pt->prevcp,&cp,transform); + pt->nonextcp = true; + cp.x = base.x + sign*cplen*s1; cp.y = base.y - sign*cplen*c1; + Transform(&cur->last->nextcp,&cp,transform); + cur->last->nonextcp = false; + CheckMake(cur->last,pt); + SplineMake3(cur->last,pt); + cur->last = pt; +} + +static void circlearcsto(real a1, real a2, real cx, real cy, real r, + SplineSet *cur, real *transform, int clockwise ) { + int a; + real last; + + while ( a1<0 ) { a1 += 360; a2 +=360;} while ( a2-a1<=-360 ) a2 += 360; + while ( a1>360 ) { a1 -= 360; a2 -= 360; } while ( a2-a1>360 ) a2 -= 360; + if ( !clockwise ) { + if ( a1>a2 ) + a2 += 360; + last = a1; + for ( a=((int) (a1+90)/90)*90; aa1 ) + a1 += 360; + last = a1; + for ( a=((int) (a1-90)/90)*90+90; a>a2; a -= 90 ) { + circlearcto(last,a,cx,cy,r,cur,transform); + last = a; + } + circlearcto(last,a2,cx,cy,r,cur,transform); + } +} + +static void collectgarbage(struct garbage *tofrees,struct pskeydict *to) { + struct garbage *into; + + /* Garbage collection pointers */ + into = tofrees; + if ( tofrees->cnt>=GARBAGE_MAX && tofrees->next!=NULL ) + into = tofrees->next; + if ( into->cnt>=GARBAGE_MAX ) { + into = chunkalloc(sizeof(struct garbage)); + into->next = tofrees->next; + tofrees->next = into; + } + into->cnts[ into->cnt ] = to->cnt; + into->entries[ into->cnt++ ] = to->entries; +} + +static void copyarray(struct pskeydict *to,struct pskeydict *from, struct garbage *tofrees) { + int i; + struct pskeyval *oldent = from->entries; + + *to = *from; + to->entries = gcalloc(to->cnt,sizeof(struct pskeyval)); + for ( i=0; icnt; ++i ) { + to->entries[i] = oldent[i]; + if ( to->entries[i].type==ps_string || to->entries[i].type==ps_instr || + to->entries[i].type==ps_lit ) + to->entries[i].u.str = copy(to->entries[i].u.str); + else if ( to->entries[i].type==ps_array || to->entries[i].type==ps_dict ) + copyarray(&to->entries[i].u.dict,&oldent[i].u.dict,tofrees); + } + collectgarbage(tofrees,to); +} + +static int aload(int sp, struct psstack *stack,int stacktop, struct garbage *tofrees) { + int i; + + if ( sp>=1 && stack[sp-1].type==ps_array ) { + struct pskeydict dict; + --sp; + dict = stack[sp].u.dict; + for ( i=0; icnt; ++i ) { + switch ( dict->entries[i].type ) { + case ps_num: + printf( "%g", (double) dict->entries[i].u.val ); + break; + case ps_bool: + printf( "%s", dict->entries[i].u.tf ? "true" : "false" ); + break; + case ps_string: case ps_instr: case ps_lit: + printf( dict->entries[i].type==ps_lit ? "/" : + dict->entries[i].type==ps_string ? "(" : "{" ); + printf( "%s", dict->entries[i].u.str ); + printf( dict->entries[i].type==ps_lit ? "" : + dict->entries[i].type==ps_string ? ")" : "}" ); + break; + case ps_array: + printarray(&dict->entries[i].u.dict); + break; + case ps_void: + printf( "-- void --" ); + break; + default: + printf( "-- nostringval --" ); + break; + } + printf(" "); + } + printf( "]" ); +} + +static void freestuff(struct psstack *stack, int sp, struct pskeydict *dict, + GrowBuf *gb, struct garbage *tofrees) { + int i; + + free(gb->base); + for ( i=0; icnt; ++i ) { + if ( dict->entries[i].type==ps_string || dict->entries[i].type==ps_instr || + dict->entries[i].type==ps_lit ) + free(dict->entries[i].u.str); + free(dict->entries[i].key); + } + free( dict->entries ); + for ( i=0; i=3 ) { + stack[sp-1].u.dict.entries[5].u.val += stack[sp-3].u.val*t[0]+stack[sp-2].u.val*t[2]; + stack[sp-1].u.dict.entries[4].u.val += stack[sp-3].u.val*t[1]+stack[sp-2].u.val*t[3]; + nsp = sp-2; + } + break; + case pt_scale: + if ( sp>=2 ) { + stack[sp-1].u.dict.entries[0].u.val *= stack[sp-3].u.val; + stack[sp-1].u.dict.entries[1].u.val *= stack[sp-3].u.val; + stack[sp-1].u.dict.entries[2].u.val *= stack[sp-2].u.val; + stack[sp-1].u.dict.entries[3].u.val *= stack[sp-2].u.val; + /* transform[4,5] are unchanged */ + nsp = sp-2; + } + break; + case pt_rotate: + if ( sp>=1 ) { + --sp; + temp[0] = temp[3] = cos(stack[sp].u.val); + temp[1] = sin(stack[sp].u.val); + temp[2] = -temp[1]; + temp[4] = temp[5] = 0; + MatMultiply(temp,t,t); + stack[sp-1].u.dict.entries[5].u.val = t[5]; + stack[sp-1].u.dict.entries[4].u.val = t[4]; + stack[sp-1].u.dict.entries[3].u.val = t[3]; + stack[sp-1].u.dict.entries[2].u.val = t[2]; + stack[sp-1].u.dict.entries[1].u.val = t[1]; + stack[sp-1].u.dict.entries[0].u.val = t[0]; + nsp = sp-1; + } + break; + } + stack[nsp-1] = stack[sp-1]; + } +return(nsp); +} + +static Entity *EntityCreate(SplinePointList *head,int linecap,int linejoin, + real linewidth, real *transform, SplineSet *clippath) { + Entity *ent = gcalloc(1,sizeof(Entity)); + ent->type = et_splines; + ent->u.splines.splines = head; + ent->u.splines.cap = linecap; + ent->u.splines.join = linejoin; + ent->u.splines.stroke_width = linewidth; + ent->u.splines.fill.col = 0xffffffff; + ent->u.splines.stroke.col = 0xffffffff; + ent->u.splines.fill.opacity = 1.0; + ent->u.splines.stroke.opacity = 1.0; + ent->clippath = SplinePointListCopy(clippath); + memcpy(ent->u.splines.transform,transform,6*sizeof(real)); +return( ent ); +} + + +static void HandleType3Reference(IO *wrapper,EntityChar *ec,real transform[6], + char *tokbuf, int toksize) { + int tok; + real dval; + char *glyphname; + RefChar *ref; + + tok = nextpstoken(wrapper,&dval,tokbuf,toksize); + if ( strcmp(tokbuf,"get")!=0 ) +return; /* Hunh. I don't understand it. I give up */ + tok = nextpstoken(wrapper,&dval,tokbuf,toksize); + if ( tok!=pt_namelit ) +return; /* Hunh. I don't understand it. I give up */ + glyphname = copy(tokbuf); + tok = nextpstoken(wrapper,&dval,tokbuf,toksize); + if ( strcmp(tokbuf,"get")!=0 ) +return; /* Hunh. I don't understand it. I give up */ + tok = nextpstoken(wrapper,&dval,tokbuf,toksize); + if ( strcmp(tokbuf,"exec")!=0 ) +return; /* Hunh. I don't understand it. I give up */ + + /* Ok, it looks very much like a reference to glyphname */ + ref = RefCharCreate(); + memcpy(ref->transform,transform,sizeof(ref->transform)); + ref->sc = (SplineChar *) glyphname; + ref->next = ec->refs; + ec->refs = ref; +} + +static void _InterpretPS(IO *wrapper, EntityChar *ec, RetStack *rs) { + SplinePointList *cur=NULL, *head=NULL; + DBasePoint current, temp; + int tok, i, j; + struct psstack stack[100]; + real dval; + int sp=0; + SplinePoint *pt; + RefChar *ref, *lastref=NULL; + real transform[6], t[6]; + struct graphicsstate { + real transform[6]; + DBasePoint current; + real linewidth; + int linecap, linejoin; + Color fore; + DashType dashes[DASH_MAX]; + SplineSet *clippath; + } gsaves[30]; + int gsp = 0; + int ccnt=0; + GrowBuf gb; + struct pskeydict dict; + struct pskeyval *kv; + Color fore=COLOR_INHERITED; + int linecap=lc_inherited, linejoin=lj_inherited; real linewidth=WIDTH_INHERITED; + DashType dashes[DASH_MAX]; + int dash_offset = 0; + Entity *ent; + char *oldloc; + int warned = 0; + struct garbage tofrees; + SplineSet *clippath = NULL; + char tokbuf[100]; + const int tokbufsize = 100; + + oldloc = setlocale(LC_NUMERIC,"C"); + + memset(&gb,'\0',sizeof(GrowBuf)); + memset(&dict,'\0',sizeof(dict)); + tofrees.cnt = 0; tofrees.next = NULL; + + transform[0] = transform[3] = 1.0; + transform[1] = transform[2] = transform[4] = transform[5] = 0; + current.x = current.y = 0; + dashes[0] = 0; dashes[1] = DASH_INHERITED; + + if ( ec->fromtype3 ) { + /* My type3 fonts have two things pushed on the stack when they */ + /* start. One is a dictionary, the other a flag (number). If the */ + /* flag is non-zero then we are a nested call (a reference char) */ + /* if 0, we're normal. We don't want to do setcachedevice for */ + /* reference chars. We can't represent a dictionary on the stack */ + /* so just push two 0s */ + stack[0].type = stack[1].type = ps_num; + stack[0].u.val = stack[1].u.val = 0; + sp = 2; + } + + while ( (tok = nextpstoken(wrapper,&dval,tokbuf,tokbufsize))!=pt_eof ) { + if ( endedstopped(wrapper)) { + if ( sp<(int)(sizeof(stack)/sizeof(stack[0])) ) { + stack[sp].type = ps_bool; + stack[sp++].u.tf = false; + } + } + if ( sp>(int)(sizeof(stack)/sizeof(stack[0])*4/5) ) { + /* We don't interpret all of postscript */ + /* Sometimes we leave garbage on the stack that a real PS interp */ + /* would have handled. If the stack gets too deep, clean out the */ + /* oldest entries */ + sp = forgetstack(stack,sizeof(stack)/sizeof(stack[0])/3,sp ); + } + if ( ccnt>0 ) { + if ( tok==pt_closecurly ) + --ccnt; + else if ( tok==pt_opencurly ) + ++ccnt; + if ( ccnt>0 ) + AddTok(&gb,tokbuf,tok==pt_namelit); + else { + if ( sp<(int)(sizeof(stack)/sizeof(stack[0])) ) { + stack[sp].type = ps_instr; + if ( gb.pt==NULL ) + stack[sp++].u.str = copy(""); + else { + *gb.pt = '\0'; gb.pt = gb.base; + stack[sp++].u.str = copy(gb.base); + } + } + } + } else if ( tok==pt_unknown && (kv=lookup(&dict,tokbuf))!=NULL ) { + if ( kv->type == ps_instr ) + pushio(wrapper,NULL,copy(kv->u.str),0); + else if ( sp<(int)(sizeof(stack)/sizeof(stack[0])) ) { + stack[sp].type = kv->type; + stack[sp++].u = kv->u; + if ( kv->type==ps_instr || kv->type==ps_lit || kv->type==ps_string ) + stack[sp-1].u.str = copy(stack[sp-1].u.str); + else if ( kv->type==ps_array || kv->type==ps_dict ) { + copyarray(&stack[sp-1].u.dict,&stack[sp-1].u.dict,&tofrees); + if ( stack[sp-1].u.dict.is_executable ) + sp = aload(sp,stack,sizeof(stack)/sizeof(stack[0]),&tofrees); + } + } + } else { + if ( tok==pt_unknown ) { + if ( strcmp(tokbuf,"Cache")==0 ) /* Fontographer type3s */ + tok = pt_setcachedevice; + else if ( strcmp(tokbuf,"SetWid")==0 ) { + tok = pt_setcharwidth; + if ( sp<(int)(sizeof(stack)/sizeof(stack[0])) ) { + stack[sp].type = ps_num; + stack[sp++].u.val = 0; + } + } else if ( strcmp(tokbuf,"rrcurveto")==0 ) { + if ( sp>=6 ) { + stack[sp-4].u.val += stack[sp-6].u.val; + stack[sp-3].u.val += stack[sp-5].u.val; + stack[sp-2].u.val += stack[sp-4].u.val; + stack[sp-1].u.val += stack[sp-3].u.val; + tok = pt_rcurveto; + } + } else if ( strcmp(tokbuf,"FillStroke")==0 ) { + if ( sp>0 ) + --sp; + tok = linewidth!=WIDTH_INHERITED ? pt_stroke : pt_fill; + if ( wrapper->top!=NULL && wrapper->top->ps!=NULL && + linewidth!=WIDTH_INHERITED ) + linewidth /= 10.0; /* bug in Fontographer's unencrypted type3 fonts */ + } else if ( strcmp(tokbuf,"SG")==0 ) { + if ( linewidth!=WIDTH_INHERITED && sp>1 ) + stack[sp-2].u.val = stack[sp-1].u.val; + if ( sp>0 ) + --sp; + if ( sp>0 ) + stack[sp-1].u.val = (stack[sp-1].u.val+99)/198.0; + tok = pt_setgray; + } else if ( strcmp(tokbuf,"ShowInt")==0 ) { + /* Fontographer reference */ + if ( (!wrapper->top->fogns && sp>0 && stack[sp-1].type == ps_num && + stack[sp-1].u.val>=0 && stack[sp-1].u.val<=255 ) || + (wrapper->top->fogns && sp>6 && stack[sp-7].type == ps_num && + stack[sp-7].u.val>=0 && stack[sp-7].u.val<=255 )) { + ref = RefCharCreate(); + memcpy(ref->transform,transform,sizeof(ref->transform)); + if ( wrapper->top->fogns ) { + sp -= 6; + t[0] = stack[sp+0].u.val; + t[1] = stack[sp+1].u.val; + t[2] = stack[sp+2].u.val; + t[3] = stack[sp+3].u.val; + t[4] = stack[sp+4].u.val; + t[5] = stack[sp+5].u.val; + MatMultiply(t,ref->transform,ref->transform); + wrapper->top->fogns = false; + } + ref->orig_pos = stack[--sp].u.val; + ref->next = ec->refs; + ec->refs = ref; + continue; + } + } else if ( strcmp(tokbuf,"togNS_")==0 ) { + wrapper->top->fogns = !wrapper->top->fogns; + continue; + } + } + switch ( tok ) { + case pt_number: + if ( sp<(int)(sizeof(stack)/sizeof(stack[0])) ) { + stack[sp].type = ps_num; + stack[sp++].u.val = dval; + } + break; + case pt_string: + if ( sp<(int)(sizeof(stack)/sizeof(stack[0])) ) { + stack[sp].type = ps_string; + stack[sp++].u.str = copyn(tokbuf+1,strlen(tokbuf)-2); + } + break; + case pt_true: case pt_false: + if ( sp<(int)(sizeof(stack)/sizeof(stack[0])) ) { + stack[sp].type = ps_bool; + stack[sp++].u.tf = tok==pt_true; + } + break; + case pt_opencurly: + ++ccnt; + break; + case pt_closecurly: + --ccnt; + if ( ccnt<0 ) { + goto done; + } + break; + case pt_count: + if ( sp<(int)(sizeof(stack)/sizeof(stack[0])) ) { + stack[sp].type = ps_num; + stack[sp].u.val = sp; + ++sp; + } + break; + case pt_pop: + if ( sp>0 ) { + --sp; + if ( stack[sp].type==ps_string || stack[sp].type==ps_instr || + stack[sp].type==ps_lit ) + free(stack[sp].u.str); + else if ( stack[sp].type==ps_array || stack[sp].type==ps_dict ) + dictfree(&stack[sp].u.dict); + } + break; + case pt_clear: + while ( sp>0 ) { + --sp; + if ( stack[sp].type==ps_string || stack[sp].type==ps_instr || + stack[sp].type==ps_lit ) + free(stack[sp].u.str); + else if ( stack[sp].type==ps_array || stack[sp].type==ps_dict ) + dictfree(&stack[sp].u.dict); + } + break; + case pt_dup: + if ( sp>0 && sp<(int)(sizeof(stack)/sizeof(stack[0])) ) { + stack[sp] = stack[sp-1]; + if ( stack[sp].type==ps_string || stack[sp].type==ps_instr || + stack[sp].type==ps_lit ) + stack[sp].u.str = copy(stack[sp].u.str); + /* The following is incorrect behavior, but as I don't do garbage collection */ + /* and I'm not going to implement reference counts, this will work in most cases */ + else if ( stack[sp].type==ps_array ) + copyarray(&stack[sp].u.dict,&stack[sp].u.dict,&tofrees); + ++sp; + } + break; + case pt_copy: + if ( sp>0 ) { + int n = stack[--sp].u.val; + if ( n+sp<(int)(sizeof(stack)/sizeof(stack[0])) ) { + int i; + for ( i=0; i1 ) { + struct psstack temp; + temp = stack[sp-1]; + stack[sp-1] = stack[sp-2]; + stack[sp-2] = temp; + } + break; + case pt_roll: + sp = rollstack(stack,sp); + break; + case pt_index: + if ( sp>0 ) { + i = stack[--sp].u.val; + if ( sp>i && i>=0 ) { + stack[sp] = stack[sp-i-1]; + if ( stack[sp].type==ps_string || stack[sp].type==ps_instr || + stack[sp].type==ps_lit ) + stack[sp].u.str = copy(stack[sp].u.str); + /* The following is incorrect behavior, but as I don't do garbage collection */ + /* and I'm not going to implement reference counts, this will work in most cases */ + else if ( stack[sp].type==ps_array ) + copyarray(&stack[sp].u.dict,&stack[sp].u.dict,&tofrees); + ++sp; + } + } + break; + case pt_add: + if ( sp>=2 && stack[sp-1].type==ps_num && stack[sp-2].type==ps_num ) { + stack[sp-2].u.val += stack[sp-1].u.val; + --sp; + } + break; + case pt_sub: + if ( sp>=2 && stack[sp-1].type==ps_num && stack[sp-2].type==ps_num ) { + stack[sp-2].u.val -= stack[sp-1].u.val; + --sp; + } + break; + case pt_mul: + if ( sp>=2 && stack[sp-1].type==ps_num && stack[sp-2].type==ps_num ) { + stack[sp-2].u.val *= stack[sp-1].u.val; + --sp; + } + break; + case pt_div: + if ( sp>=2 && stack[sp-1].type==ps_num && stack[sp-2].type==ps_num ) { + if ( stack[sp-1].u.val == 0 ) + LogError( _("Divide by zero in postscript code.\n" )); + else + stack[sp-2].u.val /= stack[sp-1].u.val; + --sp; + } + break; + case pt_idiv: + if ( sp>=2 && stack[sp-1].type==ps_num && stack[sp-2].type==ps_num ) { + if ( stack[sp-1].u.val == 0 ) + LogError( _("Divide by zero in postscript code.\n" )); + else + stack[sp-2].u.val = ((int) stack[sp-2].u.val) / ((int) stack[sp-1].u.val); + --sp; + } + break; + case pt_mod: + if ( sp>=2 && stack[sp-1].type==ps_num && stack[sp-2].type==ps_num ) { + if ( stack[sp-1].u.val == 0 ) + LogError( _("Divide by zero in postscript code.\n" )); + else + stack[sp-2].u.val = ((int) stack[sp-2].u.val) % ((int) stack[sp-1].u.val); + --sp; + } + break; + case pt_max: + if ( sp>=2 && stack[sp-1].type==ps_num && stack[sp-2].type==ps_num ) { + if ( stack[sp-2].u.val < stack[sp-1].u.val ) + stack[sp-2].u.val = stack[sp-1].u.val; + --sp; + } + break; + case pt_min: + if ( sp>=2 && stack[sp-1].type==ps_num && stack[sp-2].type==ps_num ) { + if ( stack[sp-2].u.val > stack[sp-1].u.val ) + stack[sp-2].u.val = stack[sp-1].u.val; + --sp; + } + break; + case pt_neg: + if ( sp>=1 ) { + if ( stack[sp-1].type == ps_num ) + stack[sp-1].u.val = -stack[sp-1].u.val; + } + break; + case pt_abs: + if ( sp>=1 ) { + if ( stack[sp-1].type == ps_num ) + if ( stack[sp-1].u.val < 0 ) + stack[sp-1].u.val = -stack[sp-1].u.val; + } + break; + case pt_round: + if ( sp>=1 ) { + if ( stack[sp-1].type == ps_num ) + stack[sp-1].u.val = rint(stack[sp-1].u.val); + /* rint isn't quite right, round will take 6.5 to 7, 5.5 to 6, etc. while rint() will take both to 6 */ + } + break; + case pt_floor: + if ( sp>=1 ) { + if ( stack[sp-1].type == ps_num ) + stack[sp-1].u.val = floor(stack[sp-1].u.val); + } + break; + case pt_ceiling: + if ( sp>=1 ) { + if ( stack[sp-1].type == ps_num ) + stack[sp-1].u.val = ceil(stack[sp-1].u.val); + } + break; + case pt_truncate: + if ( sp>=1 ) { + if ( stack[sp-1].type == ps_num ) { + if ( stack[sp-1].u.val<0 ) + stack[sp-1].u.val = ceil(stack[sp-1].u.val); + else + stack[sp-1].u.val = floor(stack[sp-1].u.val); + } + } + break; + case pt_ne: case pt_eq: + if ( sp>=2 ) { + if ( stack[sp-2].type!=stack[sp-1].type ) + stack[sp-2].u.tf = false; + else if ( stack[sp-2].type==ps_num ) + stack[sp-2].u.tf = (stack[sp-2].u.val == stack[sp-1].u.val); + else if ( stack[sp-2].type==ps_bool ) + stack[sp-2].u.tf = (stack[sp-2].u.tf == stack[sp-1].u.tf); + else + stack[sp-2].u.tf = strcmp(stack[sp-2].u.str,stack[sp-1].u.str)==0 ; + stack[sp-2].type = ps_bool; + if ( tok==pt_ne ) stack[sp-2].u.tf = !stack[sp-2].u.tf; + --sp; + } + break; + case pt_gt: case pt_le: case pt_lt: case pt_ge: + if ( sp>=2 ) { + if ( stack[sp-2].type!=stack[sp-1].type ) + stack[sp-2].u.tf = false; + else if ( stack[sp-2].type==ps_array ) + LogError( _("Can't compare arrays\n" )); + else { + int cmp; + if ( stack[sp-2].type==ps_num ) + cmp = (stack[sp-2].u.val > stack[sp-1].u.val)?1: + (stack[sp-2].u.val == stack[sp-1].u.val)?0:-1; + else if ( stack[sp-2].type==ps_bool ) + cmp = (stack[sp-2].u.tf - stack[sp-1].u.tf); + else + cmp = strcmp(stack[sp-2].u.str,stack[sp-1].u.str); + if ( tok==pt_gt ) + stack[sp-2].u.tf = cmp>0; + else if ( tok==pt_lt ) + stack[sp-2].u.tf = cmp<0; + else if ( tok==pt_le ) + stack[sp-2].u.tf = cmp<=0; + else + stack[sp-2].u.tf = cmp>=0; + } + stack[sp-2].type = ps_bool; + --sp; + } + break; + case pt_not: + if ( sp>=1 ) { + if ( stack[sp-1].type == ps_bool ) + stack[sp-1].u.tf = !stack[sp-1].u.tf; + } + break; + case pt_and: + if ( sp>=2 ) { + if ( stack[sp-2].type == ps_num ) + stack[sp-2].u.val = ((int) stack[sp-1].u.val) & (int) stack[sp-1].u.val; + else if ( stack[sp-2].type == ps_bool ) + stack[sp-2].u.tf &= stack[sp-1].u.tf; + --sp; + } + break; + case pt_or: + if ( sp>=2 ) { + if ( stack[sp-2].type == ps_num ) + stack[sp-2].u.val = ((int) stack[sp-1].u.val) | (int) stack[sp-1].u.val; + else if ( stack[sp-2].type == ps_bool ) + stack[sp-2].u.tf |= stack[sp-1].u.tf; + --sp; + } + break; + case pt_xor: + if ( sp>=2 ) { + if ( stack[sp-2].type == ps_num ) + stack[sp-2].u.val = ((int) stack[sp-1].u.val) ^ (int) stack[sp-1].u.val; + else if ( stack[sp-2].type == ps_bool ) + stack[sp-2].u.tf ^= stack[sp-1].u.tf; + --sp; + } + break; + case pt_exp: + if ( sp>=2 && stack[sp-1].type==ps_num && stack[sp-2].type==ps_num ) { + stack[sp-2].u.val = pow(stack[sp-2].u.val,stack[sp-1].u.val); + --sp; + } + break; + case pt_sqrt: + if ( sp>=1 && stack[sp-1].type==ps_num ) { + stack[sp-1].u.val = sqrt(stack[sp-1].u.val); + } + break; + case pt_ln: + if ( sp>=1 && stack[sp-1].type==ps_num ) { + stack[sp-1].u.val = log(stack[sp-1].u.val); + } + break; + case pt_log: + if ( sp>=1 && stack[sp-1].type==ps_num ) { + stack[sp-1].u.val = log10(stack[sp-1].u.val); + } + break; + case pt_atan: + if ( sp>=2 && stack[sp-1].type==ps_num && stack[sp-2].type==ps_num ) { + stack[sp-2].u.val = atan2(stack[sp-2].u.val,stack[sp-1].u.val)* + 180/3.1415926535897932; + --sp; + } + break; + case pt_sin: + if ( sp>=1 && stack[sp-1].type==ps_num ) { + stack[sp-1].u.val = sin(stack[sp-1].u.val*3.1415926535897932/180); + } + break; + case pt_cos: + if ( sp>=1 && stack[sp-1].type==ps_num ) { + stack[sp-1].u.val = cos(stack[sp-1].u.val*3.1415926535897932/180); + } + break; + case pt_if: + if ( sp>=2 ) { + if ( ((stack[sp-2].type == ps_bool && stack[sp-2].u.tf) || + (stack[sp-2].type == ps_num && strstr(stack[sp-1].u.str,"setcachedevice")!=NULL)) && + stack[sp-1].type==ps_instr ) + pushio(wrapper,NULL,stack[sp-1].u.str,0); + if ( stack[sp-1].type==ps_string || stack[sp-1].type==ps_instr || stack[sp-1].type==ps_lit ) + free(stack[sp-1].u.str); + sp -= 2; + } else if ( sp==1 && stack[sp-1].type==ps_instr ) { + /*This can happen when reading our type3 fonts, we get passed */ + /* values on the stack which the interpreter knows nothing */ + /* about, but the interp needs to learn the width of the char */ + if ( strstr(stack[sp-1].u.str,"setcachedevice")!=NULL || + strstr(stack[sp-1].u.str,"setcharwidth")!=NULL ) + pushio(wrapper,NULL,stack[sp-1].u.str,0); + free(stack[sp-1].u.str); + sp = 0; + } + break; + case pt_ifelse: + if ( sp>=3 ) { + if ( stack[sp-3].type == ps_bool && stack[sp-3].u.tf ) { + if ( stack[sp-2].type==ps_instr ) + pushio(wrapper,NULL,stack[sp-2].u.str,0); + } else { + if ( stack[sp-1].type==ps_instr ) + pushio(wrapper,NULL,stack[sp-1].u.str,0); + } + if ( stack[sp-1].type==ps_string || stack[sp-1].type==ps_instr || stack[sp-1].type==ps_lit ) + free(stack[sp-1].u.str); + if ( stack[sp-2].type==ps_string || stack[sp-2].type==ps_instr || stack[sp-2].type==ps_lit ) + free(stack[sp-2].u.str); + sp -= 3; + } + break; + case pt_for: + if ( sp>=4 ) { + real init, incr, limit; + char *func; + int cnt; + + if ( stack[sp-4].type == ps_num && stack[sp-3].type==ps_num && + stack[sp-2].type==ps_num && stack[sp-1].type==ps_instr ) { + init = stack[sp-4].u.val; + incr = stack[sp-3].u.val; + limit = stack[sp-2].u.val; + func = stack[sp-1].u.str; + sp -= 4; + cnt = 0; + if ( incr>0 ) { + while ( init<=limit ) { ++cnt; init += incr; } + } else if ( incr<0 ) { + while ( init>=limit ) { ++cnt; init += incr; } + } + pushio(wrapper,NULL,func,cnt); + free(func); + } + } + break; + case pt_loop: + if ( sp>=1 ) { + char *func; + int cnt; + + if ( stack[sp-1].type==ps_instr ) { + cnt = 0x7fffffff; /* Loop for ever */ + func = stack[sp-1].u.str; + --sp; + pushio(wrapper,NULL,func,cnt); + free(func); + } + } + break; + case pt_repeat: + if ( sp>=2 ) { + char *func; + int cnt; + + if ( stack[sp-2].type==ps_num && stack[sp-1].type==ps_instr ) { + cnt = stack[sp-2].u.val; + func = stack[sp-1].u.str; + sp -= 2; + pushio(wrapper,NULL,func,cnt); + free(func); + } + } + break; + case pt_exit: + ioescapeloop(wrapper); + break; + case pt_stopped: + if ( sp>=1 ) { + char *func; + + if ( stack[sp-1].type==ps_instr ) { + func = stack[sp-1].u.str; + --sp; + pushio(wrapper,NULL,func,-1); + free(func); + } + } + break; + case pt_stop: + sp = ioescapestopped(wrapper,stack,sp); + break; + case pt_load: + if ( sp>=1 && stack[sp-1].type==ps_lit ) { + kv = lookup(&dict,stack[sp-1].u.str); + if ( kv!=NULL ) { + free( stack[sp-1].u.str ); + stack[sp-1].type = kv->type; + stack[sp-1].u = kv->u; + if ( kv->type==ps_instr || kv->type==ps_lit ) + stack[sp-1].u.str = copy(stack[sp-1].u.str); + } else + stack[sp-1].type = ps_instr; + } + break; + case pt_def: + sp = AddEntry(&dict,stack,sp); + break; + case pt_bind: + /* a noop in this context */ + break; + case pt_setcachedevice: + if ( sp>=6 ) { + ec->width = stack[sp-6].u.val; + ec->vwidth = stack[sp-5].u.val; + /* I don't care about the bounding box */ + sp-=6; + } + break; + case pt_setcharwidth: + if ( sp>=2 ) + ec->width = stack[sp-=2].u.val; + break; + case pt_translate: + if ( sp>=1 && stack[sp-1].type==ps_array ) + sp = DoMatOp(tok,sp,stack); + else if ( sp>=2 ) { + transform[4] += stack[sp-2].u.val*transform[0]+stack[sp-1].u.val*transform[2]; + transform[5] += stack[sp-2].u.val*transform[1]+stack[sp-1].u.val*transform[3]; + sp -= 2; + } + break; + case pt_scale: + if ( sp>=1 && stack[sp-1].type==ps_array ) + sp = DoMatOp(tok,sp,stack); + else if ( sp>=2 ) { + transform[0] *= stack[sp-2].u.val; + transform[1] *= stack[sp-2].u.val; + transform[2] *= stack[sp-1].u.val; + transform[3] *= stack[sp-1].u.val; + /* transform[4,5] are unchanged */ + sp -= 2; + } + break; + case pt_rotate: + if ( sp>=1 && stack[sp-1].type==ps_array ) + sp = DoMatOp(tok,sp,stack); + else if ( sp>=1 ) { + --sp; + t[0] = t[3] = cos(stack[sp].u.val); + t[1] = sin(stack[sp].u.val); + t[2] = -t[1]; + t[4] = t[5] = 0; + MatMultiply(t,transform,transform); + } + break; + case pt_concat: + if ( sp>=1 ) { + if ( stack[sp-1].type==ps_array ) { + if ( stack[sp-1].u.dict.cnt==6 && stack[sp-1].u.dict.entries[0].type==ps_num ) { + --sp; + t[5] = stack[sp].u.dict.entries[5].u.val; + t[4] = stack[sp].u.dict.entries[4].u.val; + t[3] = stack[sp].u.dict.entries[3].u.val; + t[2] = stack[sp].u.dict.entries[2].u.val; + t[1] = stack[sp].u.dict.entries[1].u.val; + t[0] = stack[sp].u.dict.entries[0].u.val; + dictfree(&stack[sp].u.dict); + MatMultiply(t,transform,transform); + } + } + } + break; + case pt_transform: + if ( sp>=1 && stack[sp-1].type==ps_array ) { + if ( sp>=3 ) { + DoMatTransform(tok,sp,stack); + --sp; + } + } else if ( sp>=2 ) { + double x = stack[sp-2].u.val, y = stack[sp-1].u.val; + stack[sp-2].u.val = transform[0]*x + transform[1]*y + transform[4]; + stack[sp-1].u.val = transform[2]*x + transform[3]*y + transform[5]; + } + break; + case pt_itransform: + if ( sp>=1 && stack[sp-1].type==ps_array ) { + if ( sp>=3 ) { + DoMatTransform(tok,sp,stack); + --sp; + } + } else if ( sp>=2 ) { + double x = stack[sp-2].u.val, y = stack[sp-1].u.val; + MatInverse(t,transform); + stack[sp-2].u.val = t[0]*x + t[1]*y + t[4]; + stack[sp-1].u.val = t[2]*x + t[3]*y + t[5]; + } + break; + case pt_dtransform: + if ( sp>=1 && stack[sp-1].type==ps_array ) { + if ( sp>=3 ) { + DoMatTransform(tok,sp,stack); + --sp; + } + } else if ( sp>=2 ) { + double x = stack[sp-2].u.val, y = stack[sp-1].u.val; + stack[sp-2].u.val = transform[0]*x + transform[1]*y; + stack[sp-1].u.val = transform[2]*x + transform[3]*y; + } + break; + case pt_idtransform: + if ( sp>=1 && stack[sp-1].type==ps_array ) { + if ( sp>=3 ) { + DoMatTransform(tok,sp,stack); + --sp; + } + } else if ( sp>=2 ) { + double x = stack[sp-2].u.val, y = stack[sp-1].u.val; + MatInverse(t,transform); + stack[sp-2].u.val = t[0]*x + t[1]*y; + stack[sp-1].u.val = t[2]*x + t[3]*y; + } + break; + case pt_namelit: + if ( strcmp(tokbuf,"CharProcs")==0 && ec!=NULL ) { + HandleType3Reference(wrapper,ec,transform,tokbuf,tokbufsize); + } else if ( sp<(int)(sizeof(stack)/sizeof(stack[0])) ) { + stack[sp].type = ps_lit; + stack[sp++].u.str = copy(tokbuf); + } + break; + case pt_exec: + if ( sp>0 && stack[sp-1].type == ps_lit ) { + ref = RefCharCreate(); + ref->sc = (SplineChar *) stack[--sp].u.str; + memcpy(ref->transform,transform,sizeof(transform)); + if ( ec->refs==NULL ) + ec->refs = ref; + else + lastref->next = ref; + lastref = ref; + } + break; + case pt_newpath: + SplinePointListsFree(head); + head = NULL; + cur = NULL; + break; + case pt_lineto: case pt_rlineto: + case pt_moveto: case pt_rmoveto: + if ( sp>=2 || tok==pt_newpath ) { + if ( tok==pt_rlineto || tok==pt_rmoveto ) { + current.x += stack[sp-2].u.val; + current.y += stack[sp-1].u.val; + sp -= 2; + } else if ( tok==pt_lineto || tok == pt_moveto ) { + current.x = stack[sp-2].u.val; + current.y = stack[sp-1].u.val; + sp -= 2; + } + pt = chunkalloc(sizeof(SplinePoint)); + Transform(&pt->me,¤t,transform); + pt->noprevcp = true; pt->nonextcp = true; + if ( tok==pt_moveto || tok==pt_rmoveto ) { + SplinePointList *spl = chunkalloc(sizeof(SplinePointList)); + spl->first = spl->last = pt; + if ( cur!=NULL ) + cur->next = spl; + else + head = spl; + cur = spl; + } else { + if ( cur!=NULL && cur->first!=NULL && (cur->first!=cur->last || cur->first->next==NULL) ) { + CheckMake(cur->last,pt); + SplineMake3(cur->last,pt); + cur->last = pt; + } + } + } else + sp = 0; + break; + case pt_curveto: case pt_rcurveto: + if ( sp>=6 ) { + if ( tok==pt_rcurveto ) { + stack[sp-1].u.val += current.y; + stack[sp-3].u.val += current.y; + stack[sp-5].u.val += current.y; + stack[sp-2].u.val += current.x; + stack[sp-4].u.val += current.x; + stack[sp-6].u.val += current.x; + } + current.x = stack[sp-2].u.val; + current.y = stack[sp-1].u.val; + if ( cur!=NULL && cur->first!=NULL && (cur->first!=cur->last || cur->first->next==NULL) ) { + temp.x = stack[sp-6].u.val; temp.y = stack[sp-5].u.val; + Transform(&cur->last->nextcp,&temp,transform); + cur->last->nonextcp = false; + pt = chunkalloc(sizeof(SplinePoint)); + temp.x = stack[sp-4].u.val; temp.y = stack[sp-3].u.val; + Transform(&pt->prevcp,&temp,transform); + Transform(&pt->me,¤t,transform); + pt->nonextcp = true; + CheckMake(cur->last,pt); + SplineMake3(cur->last,pt); + cur->last = pt; + } + sp -= 6; + } else + sp = 0; + break; + case pt_arc: case pt_arcn: + if ( sp>=5 ) { + real cx, cy, r, a1, a2; + cx = stack[sp-5].u.val; + cy = stack[sp-4].u.val; + r = stack[sp-3].u.val; + a1 = stack[sp-2].u.val; + a2 = stack[sp-1].u.val; + sp -= 5; + temp.x = cx+r*cos(a1/180 * 3.1415926535897932); + temp.y = cy+r*sin(a1/180 * 3.1415926535897932); + if ( temp.x!=current.x || temp.y!=current.y || + !( cur!=NULL && cur->first!=NULL && (cur->first!=cur->last || cur->first->next==NULL) )) { + pt = chunkalloc(sizeof(SplinePoint)); + Transform(&pt->me,&temp,transform); + pt->noprevcp = true; pt->nonextcp = true; + if ( cur!=NULL && cur->first!=NULL && (cur->first!=cur->last || cur->first->next==NULL) ) { + CheckMake(cur->last,pt); + SplineMake3(cur->last,pt); + cur->last = pt; + } else { /* if no current point, then start here */ + SplinePointList *spl = chunkalloc(sizeof(SplinePointList)); + spl->first = spl->last = pt; + if ( cur!=NULL ) + cur->next = spl; + else + head = spl; + cur = spl; + } + } + circlearcsto(a1,a2,cx,cy,r,cur,transform,tok==pt_arcn); + current.x = cx+r*cos(a2/180 * 3.1415926535897932); + current.y = cy+r*sin(a2/180 * 3.1415926535897932); + } else + sp = 0; + break; + case pt_arct: case pt_arcto: + if ( sp>=5 ) { + real x1, y1, x2, y2, r; + real xt1, xt2, yt1, yt2; + x1 = stack[sp-5].u.val; + y1 = stack[sp-4].u.val; + x2 = stack[sp-3].u.val; + y2 = stack[sp-2].u.val; + r = stack[sp-1].u.val; + sp -= 5; + + xt1 = xt2 = x1; yt1 = yt2 = y1; + if ( cur==NULL || cur->first==NULL || (cur->first==cur->last && cur->first->next!=NULL) ) + /* Error */; + else if ( current.x==x1 && current.y==y1 ) + /* Error */; + else if (( x1==x2 && y1==y2 ) || + (current.x-x1)*(y2-y1) == (x2-x1)*(current.y-y1) ) { + /* Degenerate case */ + current.x = x1; current.y = y1; + pt = chunkalloc(sizeof(SplinePoint)); + Transform(&pt->me,¤t,transform); + pt->noprevcp = true; pt->nonextcp = true; + CheckMake(cur->last,pt); + SplineMake3(cur->last,pt); + cur->last = pt; + } else { + real l1 = sqrt((current.x-x1)*(current.x-x1)+(current.y-y1)*(current.y-y1)); + real l2 = sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)); + real dx = ((current.x-x1)/l1 + (x2-x1)/l2); + real dy = ((current.y-y1)/l1 + (y2-y1)/l2); + /* the line from (x1,y1) to (x1+dx,y1+dy) contains the center*/ + real l3 = sqrt(dx*dx+dy*dy); + real cx, cy, t, tmid; + real a1, amid, a2; + int clockwise = true; + dx /= l3; dy /= l3; + a1 = atan2(current.y-y1,current.x-x1); + a2 = atan2(y2-y1,x2-x1); + amid = atan2(dy,dx) - a1; + tmid = r/sin(amid); + t = r/tan(amid); + if ( t<0 ) { + clockwise = false; + t = -t; + tmid = -tmid; + } + cx = x1+ tmid*dx; cy = y1 + tmid*dy; + xt1 = x1 + t*(current.x-x1)/l1; yt1 = y1 + t*(current.y-y1)/l1; + xt2 = x1 + t*(x2-x1)/l2; yt2 = y1 + t*(y2-y1)/l2; + if ( xt1!=current.x || yt1!=current.y ) { + DBasePoint temp; + temp.x = xt1; temp.y = yt1; + pt = chunkalloc(sizeof(SplinePoint)); + Transform(&pt->me,&temp,transform); + pt->noprevcp = true; pt->nonextcp = true; + CheckMake(cur->last,pt); + SplineMake3(cur->last,pt); + cur->last = pt; + } + a1 = 3*3.1415926535897932/2+a1; + a2 = 3.1415926535897932/2+a2; + if ( !clockwise ) { + a1 += 3.1415926535897932; + a2 += 3.1415926535897932; + } + circlearcsto(a1*180/3.1415926535897932,a2*180/3.1415926535897932, + cx,cy,r,cur,transform,clockwise); + } + if ( tok==pt_arcto ) { + stack[sp].type = stack[sp+1].type = stack[sp+2].type = stack[sp+3].type = ps_num; + stack[sp++].u.val = xt1; + stack[sp++].u.val = yt1; + stack[sp++].u.val = xt2; + stack[sp++].u.val = yt2; + } + current.x = xt2; current.y = yt2; + } + break; + case pt_closepath: + if ( cur!=NULL && cur->first!=NULL && cur->first!=cur->last ) { + if ( RealNear(cur->first->me.x,cur->last->me.x) && RealNear(cur->first->me.y,cur->last->me.y) ) { + SplinePoint *oldlast = cur->last; + cur->first->prevcp = oldlast->prevcp; + cur->first->prevcp.x += (cur->first->me.x-oldlast->me.x); + cur->first->prevcp.y += (cur->first->me.y-oldlast->me.y); + cur->first->noprevcp = oldlast->noprevcp; + oldlast->prev->from->next = NULL; + cur->last = oldlast->prev->from; + SplineFree(oldlast->prev); + SplinePointFree(oldlast); + } + CheckMake(cur->last,cur->first); + SplineMake3(cur->last,cur->first); + cur->last = cur->first; + } + break; + case pt_setlinecap: + if ( sp>=1 ) + linecap = stack[--sp].u.val; + break; + case pt_setlinejoin: + if ( sp>=1 ) + linejoin = stack[--sp].u.val; + break; + case pt_setlinewidth: + if ( sp>=1 ) + linewidth = stack[--sp].u.val; + break; + case pt_setdash: + if ( sp>=2 && stack[sp-1].type==ps_num && stack[sp-2].type==ps_array ) { + sp -= 2; + dash_offset = stack[sp+1].u.val; + for ( i=0; i>16)&0xff) + 6*((fore>>8)&0xff) + (fore&0xff))/2550.; + } + break; + case pt_setgray: + if ( sp>=1 ) { + fore = stack[--sp].u.val*255; + fore *= 0x010101; + } + break; + case pt_setrgbcolor: + if ( sp>=3 ) { + fore = (((int) (stack[sp-3].u.val*255))<<16) + + (((int) (stack[sp-2].u.val*255))<<8) + + (int) (stack[sp-1].u.val*255); + sp -= 3; + } + break; + case pt_currenthsbcolor: case pt_currentrgbcolor: + if ( sp+2<(int)(sizeof(stack)/sizeof(stack[0])) ) { + stack[sp].type = stack[sp+1].type = stack[sp+2].type = ps_num; + if ( tok==pt_currentrgbcolor ) { + stack[sp++].u.val = ((fore>>16)&0xff)/255.; + stack[sp++].u.val = ((fore>>8)&0xff)/255.; + stack[sp++].u.val = (fore&0xff)/255.; + } else { + int r=fore>>16, g=(fore>>8)&0xff, bl=fore&0xff; + int mx, mn; + real h, s, b; + mx = mn = r; + if ( mx>g ) mn=g; else mx=g; + if ( mxbl ) mn = bl; + b = mx/255.; + s = h = 0; + if ( mx>0 ) + s = ((real) (mx-mn))/mx; + if ( s!=0 ) { + real rdiff = ((real) (mx-r))/(mx-mn); + real gdiff = ((real) (mx-g))/(mx-mn); + real bdiff = ((real) (mx-bl))/(mx-mn); + if ( rdiff==0 ) + h = bdiff-gdiff; + else if ( gdiff==0 ) + h = 2 + rdiff-bdiff; + else + h = 4 + gdiff-rdiff; + h /= 6; + if ( h<0 ) h += 1; + } + stack[sp++].u.val = h; + stack[sp++].u.val = s; + stack[sp++].u.val = b; + } + } + break; + case pt_sethsbcolor: + if ( sp>=3 ) { + real h = stack[sp-3].u.val, s = stack[sp-2].u.val, b = stack[sp-1].u.val; + int r=0,g=0,bl=0; + if ( s==0 ) /* it's grey */ + fore = ((int) (b*255)) * 0x010101; + else { + real sextant = (h-floor(h))*6; + real mod = sextant-floor(sextant); + real p = b*(1-s), q = b*(1-s*mod), t = b*(1-s*(1-mod)); + switch( (int) sextant) { + case 0: + r = b*255.; g = t*255.; bl = p*255.; + break; + case 1: + r = q*255.; g = b*255.; bl = p*255.; + break; + case 2: + r = p*255.; g = b*255.; bl = t*255.; + break; + case 3: + r = p*255.; g = q*255.; bl = b*255.; + break; + case 4: + r = t*255.; g = p*255.; bl = b*255.; + break; + case 5: + r = b*255.; g = p*255.; bl = q*255.; + break; + } + fore = COLOR_CREATE(r,g,bl); + } + sp -= 3; + } + break; + case pt_currentcmykcolor: + if ( sp+3<(int)(sizeof(stack)/sizeof(stack[0])) ) { + real c,m,y,k; + stack[sp].type = stack[sp+1].type = stack[sp+2].type = stack[sp+3].type = ps_num; + y = 1.-(fore&0xff)/255.; + m = 1.-((fore>>8)&0xff)/255.; + c = 1.-((fore>>16)&0xff)/255.; + k = y; if ( k>m ) k=m; if ( k>c ) k=c; + if ( k!=1 ) { + y = (y-k)/(1-k); + m = (m-k)/(1-k); + c = (c-k)/(1-k); + } else + y = m = c = 0; + stack[sp++].u.val = c; + stack[sp++].u.val = m; + stack[sp++].u.val = y; + stack[sp++].u.val = k; + } + break; + case pt_setcmykcolor: + if ( sp>=4 ) { + real c=stack[sp-4].u.val,m=stack[sp-3].u.val,y=stack[sp-2].u.val,k=stack[sp-1].u.val; + sp -= 4; + if ( k==1 ) + fore = 0x000000; + else { + if (( y = (1-k)*y+k )<0 ) y=0; else if ( y>1 ) y=1; + if (( m = (1-k)*m+k )<0 ) m=0; else if ( m>1 ) m=1; + if (( c = (1-k)*c+k )<0 ) c=0; else if ( c>1 ) c=1; + fore = ((int) ((1-c)*255.)<<16) | + ((int) ((1-m)*255.)<<8) | + ((int) ((1-y)*255.)); + } + } + break; + case pt_currentpoint: + if ( sp+1<(int)(sizeof(stack)/sizeof(stack[0])) ) { + stack[sp].type = ps_num; + stack[sp++].u.val = current.x; + stack[sp].type = ps_num; + stack[sp++].u.val = current.y; + } + break; + case pt_fill: case pt_stroke: + if ( head==NULL && ec->splines!=NULL ) { + /* assume they did a "gsave fill grestore stroke" (or reverse)*/ + ent = ec->splines; + if ( tok==pt_stroke ) { + ent->u.splines.cap = linecap; ent->u.splines.join = linejoin; + ent->u.splines.stroke_width = linewidth; + memcpy(ent->u.splines.transform,transform,sizeof(transform)); + } + } else { + ent = EntityCreate(head,linecap,linejoin,linewidth,transform,clippath); + ent->next = ec->splines; + ec->splines = ent; + } + if ( tok==pt_fill ) + ent->u.splines.fill.col = fore; + else + ent->u.splines.stroke.col = fore; + head = NULL; cur = NULL; + break; + case pt_clip: + /* I really should intersect the old clip path with the new, but */ + /* I don't trust my intersect routine, crashes too often */ + SplinePointListsFree(clippath); + clippath = SplinePointListCopy(head); + if ( clippath!=NULL && clippath->first!=clippath->last ) { + SplineMake3(clippath->last,clippath->first); + clippath->last = clippath->first; + } + break; + case pt_imagemask: + LogError( _("This version of FontForge does not support the imagemask operator.\nFor support configure --with-multilayer.\n") ); + if ( sp>=5 && (stack[sp-1].type==ps_instr || stack[sp-1].type==ps_string)) + sp -= 5; + break; + + /* We don't do these right, but at least we'll avoid some errors with this hack */ + case pt_save: case pt_currentmatrix: + /* push some junk on the stack */ + if ( sp<(int)(sizeof(stack)/sizeof(stack[0])) ) { + stack[sp].type = ps_num; + stack[sp++].u.val = 0; + } + /* Fall through into gsave */; + case pt_gsave: + if ( gsp<30 ) { + memcpy(gsaves[gsp].transform,transform,sizeof(transform)); + gsaves[gsp].current = current; + gsaves[gsp].linewidth = linewidth; + gsaves[gsp].linecap = linecap; + gsaves[gsp].linejoin = linejoin; + gsaves[gsp].fore = fore; + gsaves[gsp].clippath = SplinePointListCopy(clippath); + ++gsp; + /* I should be saving the "current path" too, but that's too hard */ + } + break; + case pt_restore: case pt_setmatrix: + /* pop some junk off the stack */ + if ( sp>=1 ) + --sp; + /* Fall through into grestore */; + case pt_grestore: + if ( gsp>0 ) { + --gsp; + memcpy(transform,gsaves[gsp].transform,sizeof(transform)); + current = gsaves[gsp].current; + linewidth = gsaves[gsp].linewidth; + linecap = gsaves[gsp].linecap; + linejoin = gsaves[gsp].linejoin; + fore = gsaves[gsp].fore; + SplinePointListsFree(clippath); + clippath = gsaves[gsp].clippath; + } + break; + case pt_null: + /* push a 0. I don't handle pointers properly */ + if ( sp<(int)(sizeof(stack)/sizeof(stack[0])) ) { + stack[sp].u.val = 0; + stack[sp++].type = ps_num; + } + break; + case pt_currentoverprint: + /* push false. I don't handle this properly */ + if ( sp<(int)(sizeof(stack)/sizeof(stack[0])) ) { + stack[sp].u.val = 0; + stack[sp++].type = ps_bool; + } + break; + case pt_setoverprint: + /* pop one item on stack */ + if ( sp>=1 ) + --sp; + break; + case pt_currentflat: + /* push 1.0 (default value). I don't handle this properly */ + if ( sp<(int)(sizeof(stack)/sizeof(stack[0]) )) { + stack[sp].u.val = 1.0; + stack[sp++].type = ps_num; + } + break; + case pt_setflat: + /* pop one item on stack */ + if ( sp>=1 ) + --sp; + break; + case pt_currentmiterlimit: + /* push 10.0 (default value). I don't handle this properly */ + if ( sp<(int)(sizeof(stack)/sizeof(stack[0])) ) { + stack[sp].u.val = 10.0; + stack[sp++].type = ps_num; + } + break; + case pt_setmiterlimit: + /* pop one item off stack */ + if ( sp>=1 ) + --sp; + break; + case pt_currentpacking: + /* push false (default value). I don't handle this properly */ + if ( sp<(int)(sizeof(stack)/sizeof(stack[0])) ) { + stack[sp].u.val = 0; + stack[sp++].type = ps_bool; + } + break; + case pt_setpacking: + /* pop one item on stack */ + if ( sp>=1 ) + --sp; + break; + case pt_currentstrokeadjust: + /* push false (default value). I don't handle this properly */ + if ( sp<(int)(sizeof(stack)/sizeof(stack[0])) ) { + stack[sp].u.val = 0; + stack[sp++].type = ps_bool; + } + break; + case pt_setstrokeadjust: + /* pop one item on stack */ + if ( sp>=1 ) + --sp; + break; + case pt_currentsmoothness: + /* default value is installation dependant. I don't handle this properly */ + if ( sp<(int)(sizeof(stack)/sizeof(stack[0])) ) { + stack[sp].u.val = 1.0; + stack[sp++].type = ps_num; + } + break; + case pt_setsmoothness: + /* pop one item on stack */ + if ( sp>=1 ) + --sp; + break; + case pt_currentobjectformat: + /* default value is installation dependant. I don't handle this properly */ + if ( sp<(int)(sizeof(stack)/sizeof(stack[0])) ) { + stack[sp].u.val = 0.0; + stack[sp++].type = ps_num; + } + break; + case pt_setobjectformat: + /* pop one item on stack */ + if ( sp>=1 ) + --sp; + break; + case pt_currentglobal: case pt_currentshared: + /* push false (default value). I don't handle this properly */ + if ( sp<(int)(sizeof(stack)/sizeof(stack[0])) ) { + stack[sp].u.val = 0; + stack[sp++].type = ps_bool; + } + break; + case pt_setglobal: + /* pop one item on stack */ + if ( sp>=1 ) + --sp; + break; + + case pt_openarray: case pt_mark: + if ( sp<(int)(sizeof(stack)/sizeof(stack[0])) ) { + stack[sp++].type = ps_mark; + } + break; + case pt_counttomark: + for ( i=0; i=i ) { + --sp; + if ( stack[sp].type==ps_string || stack[sp].type==ps_instr || + stack[sp].type==ps_lit ) + free(stack[sp].u.str); + else if ( stack[sp].type==ps_array || stack[sp].type==ps_dict ) + dictfree(&stack[sp].u.dict); + } + } + break; + case pt_closearray: + for ( i=0; i=1 && stack[sp-1].type==ps_num ) { + struct pskeydict dict; + dict.is_executable = 0; + dict.cnt = dict.max = stack[sp-1].u.val; + dict.entries = gcalloc(dict.cnt,sizeof(struct pskeyval)); + /* all entries are inited to void */ + stack[sp-1].type = ps_array; + stack[sp-1].u.dict = dict; + } + break; + case pt_aload: + sp = aload(sp,stack,sizeof(stack)/sizeof(stack[0]),&tofrees); + break; + case pt_astore: + if ( sp>=1 && stack[sp-1].type==ps_array ) { + struct pskeydict dict; + --sp; + dict = stack[sp].u.dict; + if ( sp>=dict.cnt ) { + for ( i=dict.cnt-1; i>=0 ; --i ) { + --sp; + dict.entries[i].type = stack[sp].type; + dict.entries[i].u = stack[sp].u; + } + } + stack[sp].type = ps_array; + stack[sp].u.dict = dict; + ++sp; + } + break; + + case pt_output: case pt_outputd: case pt_print: + if ( sp>=1 ) { + --sp; + switch ( stack[sp].type ) { + case ps_num: + printf( "%g", (double) stack[sp].u.val ); + break; + case ps_bool: + printf( "%s", stack[sp].u.tf ? "true" : "false" ); + break; + case ps_string: case ps_instr: case ps_lit: + if ( tok==pt_outputd ) + printf( stack[sp].type==ps_lit ? "/" : + stack[sp].type==ps_string ? "(" : "{" ); + printf( "%s", stack[sp].u.str ); + if ( tok==pt_outputd ) + printf( stack[sp].type==ps_lit ? "" : + stack[sp].type==ps_string ? ")" : "}" ); + free(stack[sp].u.str); + break; + case ps_void: + printf( "-- void --" ); + break; + case ps_array: + if ( tok==pt_outputd ) { + printarray(&stack[sp].u.dict); + dictfree(&stack[sp].u.dict); + break; + } /* else fall through */ + dictfree(&stack[sp].u.dict); + default: + printf( "-- nostringval --" ); + break; + } + if ( tok==pt_output || tok==pt_outputd ) + printf( "\n" ); + } else + LogError( _("Nothing on stack to print\n") ); + break; + + case pt_cvi: case pt_cvr: + /* I shan't distinguish between integers and reals */ + if ( sp>=1 && stack[sp-1].type==ps_string ) { + double val = strtod(stack[sp-1].u.str,NULL); + free(stack[sp-1].u.str); + stack[sp-1].u.val = val; + stack[sp-1].type = ps_num; + } + break; + case pt_cvlit: + if ( sp>=1 ) { + if ( stack[sp-1].type==ps_array ) + stack[sp-1].u.dict.is_executable = false; + } + case pt_cvn: + if ( sp>=1 ) { + if ( stack[sp-1].type==ps_string ) + stack[sp-1].type = ps_lit; + } + case pt_cvx: + if ( sp>=1 ) { + if ( stack[sp-1].type==ps_array ) + stack[sp-1].u.dict.is_executable = true; + } + break; + case pt_cvrs: + if ( sp>=3 && stack[sp-1].type==ps_string && + stack[sp-2].type==ps_num && + stack[sp-3].type==ps_num ) { + if ( stack[sp-2].u.val==8 ) + sprintf( stack[sp-1].u.str, "%o", (int) stack[sp-3].u.val ); + else if ( stack[sp-2].u.val==16 ) + sprintf( stack[sp-1].u.str, "%X", (int) stack[sp-3].u.val ); + else /* default to radix 10 no matter what they asked for */ + sprintf( stack[sp-1].u.str, "%g", (double) stack[sp-3].u.val ); + stack[sp-3] = stack[sp-1]; + sp-=2; + } + break; + case pt_cvs: + if ( sp>=2 && stack[sp-1].type==ps_string ) { + switch ( stack[sp].type ) { + case ps_num: + sprintf( stack[sp-1].u.str, "%g", (double) stack[sp-2].u.val ); + break; + case ps_bool: + sprintf( stack[sp-1].u.str, "%s", stack[sp-2].u.tf ? "true" : "false" ); + break; + case ps_string: case ps_instr: case ps_lit: + sprintf( stack[sp-1].u.str, "%s", stack[sp-2].u.str ); + free(stack[sp].u.str); + break; + case ps_void: + printf( "-- void --" ); + break; + case ps_array: + dictfree(&stack[sp].u.dict); + default: + sprintf( stack[sp-1].u.str, "-- nostringval --" ); + break; + } + stack[sp-2] = stack[sp-1]; + --sp; + } + break; + case pt_stringop: /* the string keyword, not the () thingy */ + if ( sp>=1 && stack[sp-1].type==ps_num ) { + stack[sp-1].type = ps_string; + stack[sp-1].u.str = gcalloc(stack[sp-1].u.val+1,1); + } + break; + + case pt_unknown: + if ( !warned ) { + LogError( _("Warning: Unable to parse token %s, some features may be lost\n"), tokbuf ); + warned = true; + } + break; + + default: + break; + }} + } + done: + if ( rs!=NULL ) { + int i, cnt, j; + for ( i=sp-1; i>=0; --i ) + if ( stack[i].type!=ps_num ) + break; + cnt = sp-1-i; + if ( cnt>rs->max ) cnt = rs->max; + rs->cnt = cnt; + for ( j=i+1; jstack[j-i-1] = stack[j].u.val; + } + freestuff(stack,sp,&dict,&gb,&tofrees); + if ( head!=NULL ) { + ent = EntityCreate(head,linecap,linejoin,linewidth,transform,clippath); + ent->next = ec->splines; + ec->splines = ent; + } + while ( gsp>0 ) { + --gsp; + SplinePointListsFree(gsaves[gsp].clippath); + } + SplinePointListsFree(clippath); + ECCatagorizePoints(ec); + if ( ec->width == UNDEFINED_WIDTH ) + ec->width = wrapper->advance_width; + setlocale(LC_NUMERIC,oldloc); +} + +static void InterpretPS(FILE *ps, char *psstr, EntityChar *ec, RetStack *rs) { + IO wrapper; + + memset(&wrapper,0,sizeof(wrapper)); + wrapper.advance_width = UNDEFINED_WIDTH; + pushio(&wrapper,ps,psstr,0); + _InterpretPS(&wrapper,ec,rs); +} + +static SplinePointList *EraseStroke(SplineChar *sc,SplinePointList *head,SplinePointList *erase) { + SplineSet *spl, *last; + SplinePoint *sp; + + if ( head==NULL ) { + /* Pointless, but legal */ + SplinePointListsFree(erase); +return( NULL ); + } + + last = NULL; + for ( spl=head; spl!=NULL; spl=spl->next ) { + for ( sp=spl->first; sp!=NULL; ) { + sp->selected = false; + if ( sp->next==NULL ) + break; + sp = sp->next->to; + if ( sp==spl->first ) + break; + } + last = spl; + } + for ( spl=erase; spl!=NULL; spl=spl->next ) { + for ( sp=spl->first; sp!=NULL; ) { + sp->selected = true; + if ( sp->next==NULL ) + break; + sp = sp->next->to; + if ( sp==spl->first ) + break; + } + } + last->next = erase; +return( SplineSetRemoveOverlap(sc,head,over_exclude) ); +} + +static Entity *EntityReverse(Entity *ent) { + Entity *next, *last = NULL; + + while ( ent!=NULL ) { + next = ent->next; + ent->next = last; + last = ent; + ent = next; + } +return( last ); +} + +void SFSplinesFromLayers(SplineFont *sf, int tostroke) { + (void)sf; + (void)tostroke; +} + +static void EntityCharCorrectDir(EntityChar *ec) { + SplineSet *ss; + Entity *ent; + int changed; + + for ( ent=ec->splines; ent!=NULL; ent = ent->next ) { + /* ignore splines which are only stoked, but not filled */ + if ( ent->type == et_splines && ent->u.splines.fill.col!=0xffffffff ) { + /* Correct the direction of each stroke or fill with respect to */ + /* the splines in it */ + SplineSetsCorrect(ent->u.splines.splines,&changed); + if ( ent->u.splines.fill.col==0xffffff ) { + /* If they are filling with white, then assume they mean */ + /* an internal area that should be drawn backwards */ + for ( ss=ent->u.splines.splines; ss!=NULL; ss=ss->next ) + SplineSetReverse(ss); + } + SplineSetsCorrect(ent->clippath,&changed); + } + } +} + +static void EntityDefaultStrokeFill(Entity *ent) { + while ( ent!=NULL ) { + if ( ent->type == et_splines && + ent->u.splines.stroke.col==0xffffffff && + ent->u.splines.fill.col==0xffffffff ) { + SplineSet *spl; + int all=1; + for ( spl=ent->u.splines.splines; spl!=NULL; spl=spl->next ) + if ( spl->first->prev!=NULL ) { + all = false; + break; + } + if ( all && ent->u.splines.splines!=NULL && + (ent->u.splines.stroke_width==0 || ent->u.splines.stroke_width==WIDTH_INHERITED)) + ent->u.splines.stroke_width=40; /* random guess */ + if (ent->u.splines.stroke_width==0 || ent->u.splines.stroke_width==WIDTH_INHERITED) + ent->u.splines.fill.col = COLOR_INHERITED; + else + ent->u.splines.stroke.col = COLOR_INHERITED; + } + ent = ent->next; + } +} + +static SplinePointList *SplinesFromEntityChar(EntityChar *ec,int *flags,int is_stroked) { + Entity *ent, *next; + SplinePointList *head=NULL, *last, *new, *nlast, *temp, *each, *transed; + StrokeInfo si; + real inversetrans[6]; + /*SplineSet *spl;*/ + int handle_eraser = false; + int ask = false; + + EntityDefaultStrokeFill(ec->splines); + + if ( !is_stroked ) { + + if ( *flags==-1 ) { + for ( ent=ec->splines; ent!=NULL; ent = ent->next ) { + if ( ent->type == et_splines && + (ent->u.splines.fill.col==0xffffff || + /*ent->u.splines.clippath!=NULL ||*/ + (ent->u.splines.stroke_width!=0 && ent->u.splines.stroke.col!=0xffffffff))) { + ask = true; + break; + } + } + if ( ask ) + *flags = PsStrokeFlagsDlg(); + } + + if ( *flags & sf_correctdir ) /* Will happen if flags still unset (-1) */ + EntityCharCorrectDir(ec); + + handle_eraser = *flags!=-1 && (*flags & sf_handle_eraser); + if ( handle_eraser ) + ec->splines = EntityReverse(ec->splines); + } + + for ( ent=ec->splines; ent!=NULL; ent = next ) { + next = ent->next; + if ( ent->type == et_splines && is_stroked ) { + if ( head==NULL ) + head = ent->u.splines.splines; + else + last->next = ent->u.splines.splines; + if ( ent->u.splines.splines!=NULL ) + for ( last = ent->u.splines.splines; last->next!=NULL; last=last->next ); + ent->u.splines.splines = NULL; + } else if ( ent->type == et_splines ) { + if ( ent->u.splines.stroke.col!=0xffffffff && + (ent->u.splines.fill.col==0xffffffff || ent->u.splines.stroke_width!=0)) { + /* What does a stroke width of 0 mean? PS Says minimal width line */ + /* How do we implement that? Special case: If filled and stroked 0, then */ + /* ignore the stroke. This idiom is used by MetaPost sometimes and means */ + /* no stroke */ + memset(&si,'\0',sizeof(si)); + si.toobigwarn = *flags & sf_toobigwarn ? 1 : 0; + si.join = ent->u.splines.join; + si.cap = ent->u.splines.cap; + si.removeoverlapifneeded = *flags & sf_removeoverlap ? 1 : 0; + si.radius = ent->u.splines.stroke_width/2; + if ( ent->u.splines.stroke_width==WIDTH_INHERITED ) + si.radius = .5; + if ( si.cap == lc_inherited ) si.cap = lc_butt; + if ( si.join == lc_inherited ) si.join = lj_miter; + new = NULL; +#if 0 + SSBisectTurners(ent->u.splines.splines); +#endif + MatInverse(inversetrans,ent->u.splines.transform); + transed = SplinePointListTransform(SplinePointListCopy( + ent->u.splines.splines),inversetrans,true); + for ( each = transed; each!=NULL; each=each->next ) { + temp = SplineSetStroke(each,&si,ec->sc); + if ( new==NULL ) + new=temp; + else + nlast->next = temp; + if ( temp!=NULL ) + for ( nlast=temp; nlast->next!=NULL; nlast=nlast->next ); + } + new = SplinePointListTransform(new,ent->u.splines.transform,true); + SplinePointListsFree(transed); + if ( handle_eraser && ent->u.splines.stroke.col==0xffffff ) { + head = EraseStroke(ec->sc,head,new); + last = head; + if ( last!=NULL ) + for ( ; last->next!=NULL; last=last->next ); + } else { + if ( head==NULL ) + head = new; + else + last->next = new; + if ( new!=NULL ) + for ( last = new; last->next!=NULL; last=last->next ); + } + if ( si.toobigwarn ) + *flags |= sf_toobigwarn; + } + /* If they have neither a stroke nor a fill, pretend they said fill */ + if ( ent->u.splines.fill.col==0xffffffff && ent->u.splines.stroke.col!=0xffffffff ) + SplinePointListsFree(ent->u.splines.splines); + else if ( handle_eraser && ent->u.splines.fill.col==0xffffff ) { + head = EraseStroke(ec->sc,head,ent->u.splines.splines); + last = head; + if ( last!=NULL ) + for ( ; last->next!=NULL; last=last->next ); + } else { + new = ent->u.splines.splines; + if ( head==NULL ) + head = new; + else + last->next = new; + if ( new!=NULL ) + for ( last = new; last->next!=NULL; last=last->next ); + } + } + SplinePointListsFree(ent->clippath); + free(ent); + } +return( head ); +} + + +static RefChar *revrefs(RefChar *cur) { + RefChar *p, *n; + + if ( cur==NULL ) +return( NULL ); + + p = NULL; + for ( ; (n=cur->next)!=NULL; cur = n ) { + cur->next = p; + p = cur; + } + cur->next = p; +return( cur ); +} + +static void SCInterpretPS(FILE *ps,SplineChar *sc, int *flags) { + EntityChar ec; + real dval; + char tokbuf[10]; + IO wrapper; + int ch; + + while ( isspace(ch = getc(ps)) ); + ungetc(ch,ps); + + memset(&wrapper,0,sizeof(wrapper)); + wrapper.advance_width = UNDEFINED_WIDTH; + if ( ch!='<' ) { + pushio(&wrapper,ps,NULL,0); + + if ( nextpstoken(&wrapper,&dval,tokbuf,sizeof(tokbuf))!=pt_opencurly ) + LogError( _("We don't understand this font\n") ); + } else { + (void) getc(ps); + pushfogio(&wrapper,ps); + } + memset(&ec,'\0',sizeof(ec)); + ec.fromtype3 = true; + ec.sc = sc; + _InterpretPS(&wrapper,&ec,NULL); + sc->width = ec.width; + sc->layers[ly_fore].splines = SplinesFromEntityChar(&ec,flags,false); + sc->layers[ly_fore].refs = revrefs(ec.refs); + free(wrapper.top); +} + +void PSFontInterpretPS(FILE *ps,struct charprocs *cp,char **encoding) { + char tokbuf[100]; + int tok,i, j; + real dval; + SplineChar *sc; EntityChar dummy; + RefChar *p, *ref, *next; + IO wrapper; + int flags = -1; + + wrapper.top = NULL; + wrapper.advance_width = UNDEFINED_WIDTH; + pushio(&wrapper,ps,NULL,0); + + while ( (tok = nextpstoken(&wrapper,&dval,tokbuf,sizeof(tokbuf)))!=pt_eof && tok!=pt_end ) { + if ( tok==pt_namelit ) { + if ( cp->next>=cp->cnt ) { + ++cp->cnt; + cp->keys = grealloc(cp->keys,cp->cnt*sizeof(char *)); + cp->values = grealloc(cp->values,cp->cnt*sizeof(char *)); + } + if ( cp->nextcnt ) { + sc = SplineCharCreate(2); + cp->keys[cp->next] = copy(tokbuf); + cp->values[cp->next++] = sc; + sc->name = copy(tokbuf); + SCInterpretPS(ps,sc,&flags); + ff_progress_next(); + } else { + memset(&dummy,0,sizeof(dummy)); + dummy.fromtype3 = true; + InterpretPS(ps,NULL,&dummy,NULL); + } + } + } + free(wrapper.top); + + /* References were done by name in the postscript. we stored the names in */ + /* ref->sc (which is a hack). Now look up all those names and replace */ + /* with the appropriate splinechar. If we can't find anything then throw */ + /* out the reference */ + /* Further fixups come later, where all ps refs are fixedup */ + for ( i=0; inext; ++i ) { + for ( p=NULL, ref=cp->values[i]->layers[ly_fore].refs; ref!=NULL; ref=next ) { + char *refname = (char *) (ref->sc); + next = ref->next; + if ( ref->sc==NULL ) + refname=encoding[ref->orig_pos]; + for ( j=0; jnext; ++j ) + if ( strcmp(cp->keys[j],refname)==0 ) + break; + free(ref->sc); /* a string, not a splinechar */ + if ( j!=cp->next ) { + ref->sc = cp->values[j]; + SCMakeDependent(cp->values[i],ref->sc); + ref->adobe_enc = getAdobeEnc(ref->sc->name); + ref->checked = true; + p = ref; + } else { + if ( p==NULL ) + cp->values[i]->layers[ly_fore].refs = next; + else + p->next = next; + ref->next = NULL; + RefCharFree(ref); + } + } + } +} + +static void closepath(SplinePointList *cur, int is_type2) { + if ( cur!=NULL && cur->first==cur->last && cur->first->prev==NULL && is_type2 ) +return; /* The "path" is just a single point created by a moveto */ + /* Probably we're just doing another moveto */ + if ( cur!=NULL && cur->first!=NULL && cur->first!=cur->last ) { +/* I allow for greater errors here than I do in the straight postscript code */ +/* because: 1) the rel-rel operators will accumulate more rounding errors */ +/* 2) I only output 2 decimal digits after the decimal in type1 output */ + if ( RealWithin(cur->first->me.x,cur->last->me.x,.05) && RealWithin(cur->first->me.y,cur->last->me.y,.05) ) { + SplinePoint *oldlast = cur->last; + cur->first->prevcp = oldlast->prevcp; + cur->first->prevcp.x += (cur->first->me.x-oldlast->me.x); + cur->first->prevcp.y += (cur->first->me.y-oldlast->me.y); + cur->first->noprevcp = oldlast->noprevcp; + oldlast->prev->from->next = NULL; + cur->last = oldlast->prev->from; + chunkfree(oldlast->prev,sizeof(*oldlast)); + chunkfree(oldlast->hintmask,sizeof(HintMask)); + chunkfree(oldlast,sizeof(*oldlast)); + } + CheckMake(cur->last,cur->first); + SplineMake3(cur->last,cur->first); + cur->last = cur->first; + } +} + +static void UnblendFree(StemInfo *h ) { + while ( h!=NULL ) { + chunkfree(h->u.unblended,sizeof(real [2][MmMax])); + h->u.unblended = NULL; + h = h->next; + } +} + +static StemInfo *HintsAppend(StemInfo *to,StemInfo *extra) { + StemInfo *h; + + if ( to==NULL ) +return( extra ); + if ( extra==NULL ) +return( to ); + for ( h=to; h->next!=NULL; h=h->next ); + h->next = extra; +return( to ); +} + +static StemInfo *HintNew(double start,double width) { + StemInfo *h; + + h = chunkalloc(sizeof(StemInfo)); + h->start = start; + h->width = width; +return( h ); +} + +static void RemapHintMask(HintMask *hm,int mapping[96],int max) { + HintMask rpl; + int i, mb; + + if ( hm==NULL ) +return; + + if ( max>96 ) max = 96; + mb = (max+7)>>3; + + memset(&rpl,0,mb); + for ( i=0; i>3]&(0x80>>(i&0x7)) ) + rpl[mapping[i]>>3] |= (0x80>>(mapping[i]&0x7)); + memcpy(hm,&rpl,mb); +} + +static void HintsRenumber(SplineChar *sc) { + /* In a type1 font the hints may get added to our hint list in a semi- */ + /* random order. In an incorrect type2 font the same thing could happen. */ + /* Force the order to be correct, and then update all masks */ + int mapping[96]; + int i, max; + StemInfo *h; + SplineSet *spl; + SplinePoint *sp; + + for ( i=0; i<96; ++i ) mapping[i] = i; + + i = 0; + for ( h=sc->hstem; h!=NULL; h=h->next ) { + if ( h->hintnumber<96 && i<96 ) { + mapping[h->hintnumber] = i; + h->hintnumber = i++; + } + chunkfree(h->u.unblended,sizeof(real [2][MmMax])); + h->u.unblended = NULL; + } + for ( h=sc->vstem; h!=NULL; h=h->next ) { + if ( h->hintnumber<96 && i<96 ) { + mapping[h->hintnumber] = i; + h->hintnumber = i++; + } + chunkfree(h->u.unblended,sizeof(real [2][MmMax])); + h->u.unblended = NULL; + } + max = i; + for ( i=0; icountermask_cnt; ++i ) + RemapHintMask(&sc->countermasks[i],mapping,max); + for ( spl = sc->layers[ly_fore].splines; spl!=NULL; spl=spl->next ) { + for ( sp = spl->first; ; ) { + RemapHintMask(sp->hintmask,mapping,max); + if ( sp->next==NULL ) + break; + sp = sp->next->to; + if ( sp==spl->first ) + break; + } + } +} + +int UnblendedCompare(real u1[MmMax], real u2[MmMax], int cnt) { + int i; + + for ( i=0; iu2[i]?1:-1 ); + } +return( 0 ); +} + +static StemInfo *SameH(StemInfo *old,real start, real width, + real unblended[2][MmMax], int instance_count) { + StemInfo *sameh; + + if ( instance_count==0 ) { + for ( sameh=old; sameh!=NULL; sameh=sameh->next ) + if ( sameh->start==start && sameh->width==width) + break; + } else { int j; + for ( j=1; jnext ) { + if ( (*sameh->u.unblended)[0] == NULL || (*sameh->u.unblended)[1]==NULL ) + continue; + if ( UnblendedCompare((*sameh->u.unblended)[0],unblended[0],instance_count)==0 && + UnblendedCompare((*sameh->u.unblended)[1],unblended[1],instance_count)==0) + break; + } + } +return( sameh ); +} + +static real Blend(real u[MmMax],struct pscontext *context) { + real sum = u[0]; + int i; + + for ( i=1; iinstance_count; ++i ) + sum += context->blend_values[i]*u[i]; +return( sum ); +} + +/* this handles either Type1 or Type2 charstrings. Type2 charstrings have */ +/* more operators than Type1s and the old operators have extended meanings */ +/* (ie. the rlineto operator can produce more than one line). But pretty */ +/* much it's a superset and if we parse for type2 (with a few additions) */ +/* we'll get it right */ +/* Char width is done differently. Moveto starts a newpath. 0xff starts a 16.16*/ +/* number rather than a 32 bit number */ +SplineChar *PSCharStringToSplines(uint8 *type1, int len, struct pscontext *context, + struct pschars *subrs, struct pschars *gsubrs, const char *name) { + int is_type2 = context->is_type2; + real stack[50]; int sp=0, v; /* Type1 stack is about 25 long, Type2 stack is 48 */ + real transient[32]; + SplineChar *ret = SplineCharCreate(2); + SplinePointList *cur=NULL, *oldcur=NULL; + RefChar *r1, *r2, *rlast=NULL; + DBasePoint current; + real dx, dy, dx2, dy2, dx3, dy3, dx4, dy4, dx5, dy5, dx6=0, dy6; + SplinePoint *pt; + /* subroutines may be nested to a depth of 10 */ + struct substate { unsigned char *type1; int len; int subnum; } pcstack[11]; + int pcsp=0; + StemInfo *hint, *hp; + real pops[30]; + int popsp=0; + int base, polarity; + real coord; + struct pschars *s; + int hint_cnt = 0; + StemInfo *activeh=NULL, *activev=NULL, *sameh; + HintMask *pending_hm = NULL; + HintMask *counters[96]; + int cp=0; + real unblended[2][MmMax]; + int last_was_b1=false, old_last_was_b1; + + if ( !is_type2 && context->instance_count>1 ) + memset(unblended,0,sizeof(unblended)); + + ret->name = copy( name ); + ret->unicodeenc = -1; + ret->width = (int16) 0x8000; + if ( name==NULL ) name = "unnamed"; + ret->manualhints = true; + + current.x = current.y = 0; + while ( len>0 ) { + if ( sp>48 ) { + LogError( _("Stack got too big in %s\n"), name ); + sp = 48; + } + base = 0; + --len; + if ( (v = *type1++)>=32 ) { + if ( v<=246) { + stack[sp++] = v - 139; + } else if ( v<=250 ) { + stack[sp++] = (v-247)*256 + *type1++ + 108; + --len; + } else if ( v<=254 ) { + stack[sp++] = -(v-251)*256 - *type1++ - 108; + --len; + } else { + int val = (*type1<<24) | (type1[1]<<16) | (type1[2]<<8) | type1[3]; + stack[sp++] = val; + type1 += 4; + len -= 4; + if ( is_type2 ) { +#ifndef PSFixed_Is_TTF /* The type2 spec is contradictory. It says this is a */ + /* two's complement number, but it also says it is a */ + /* Fixed, which in truetype is not two's complement */ + /* (mantisa is always unsigned) */ + stack[sp-1] /= 65536.; +#else + int mant = val&0xffff; + stack[sp-1] = (val>>16) + mant/65536.; +#endif + } + } + } else if ( v==28 ) { + stack[sp++] = (short) ((type1[0]<<8) | type1[1]); + type1 += 2; + len -= 2; + /* In the Dict tables of CFF, a 5byte fixed value is prefixed by a */ + /* 29 code. In Type2 strings the prefix is 255. */ + } else if ( v==12 ) { + old_last_was_b1 = last_was_b1; last_was_b1 = false; + v = *type1++; + --len; + switch ( v ) { + case 0: /* dotsection */ + sp = 0; + break; + case 1: /* vstem3 */ /* specifies three v hints zones at once */ + if ( sp<6 ) LogError( _("Stack underflow on vstem3 in %s\n"), name ); + /* according to the standard, if there is a vstem3 there can't */ + /* be any vstems, so there can't be any confusion about hint order */ + /* so we don't need to worry about unblended stuff */ + sameh = NULL; + if ( !is_type2 ) + sameh = SameH(ret->vstem,stack[0] + ret->lsidebearing,stack[1], + unblended,0); + hint = HintNew(stack[0] + ret->lsidebearing,stack[1]); + hint->hintnumber = sameh!=NULL ? sameh->hintnumber : hint_cnt++; + if ( activev==NULL ) + activev = hp = hint; + else { + for ( hp=activev; hp->next!=NULL; hp = hp->next ); + hp->next = hint; + hp = hint; + } + sameh = NULL; + if ( !is_type2 ) + sameh = SameH(ret->vstem,stack[2] + ret->lsidebearing,stack[3], + unblended,0); + hp->next = HintNew(stack[2] + ret->lsidebearing,stack[3]); + hp->next->hintnumber = sameh!=NULL ? sameh->hintnumber : hint_cnt++; + if ( !is_type2 ) + sameh = SameH(ret->vstem,stack[4] + ret->lsidebearing,stack[5], + unblended,0); + hp->next->next = HintNew(stack[4] + ret->lsidebearing,stack[5]); + hp->next->next->hintnumber = sameh!=NULL ? sameh->hintnumber : hint_cnt++; + if ( !is_type2 && hp->next->next->hintnumber<96 ) { + if ( pending_hm==NULL ) + pending_hm = chunkalloc(sizeof(HintMask)); + (*pending_hm)[hint->hintnumber>>3] |= 0x80>>(hint->hintnumber&0x7); + (*pending_hm)[hint->next->hintnumber>>3] |= 0x80>>(hint->next->hintnumber&0x7); + (*pending_hm)[hint->next->next->hintnumber>>3] |= 0x80>>(hint->next->next->hintnumber&0x7); + } + hp = hp->next->next; + sp = 0; + break; + case 2: /* hstem3 */ /* specifies three h hints zones at once */ + if ( sp<6 ) LogError( _("Stack underflow on hstem3 in %s\n"), name ); + sameh = NULL; + if ( !is_type2 ) + sameh = SameH(ret->hstem,stack[0],stack[1], unblended,0); + hint = HintNew(stack[0],stack[1]); + hint->hintnumber = sameh!=NULL ? sameh->hintnumber : hint_cnt++; + if ( activeh==NULL ) + activeh = hp = hint; + else { + for ( hp=activeh; hp->next!=NULL; hp = hp->next ); + hp->next = hint; + hp = hint; + } + sameh = NULL; + if ( !is_type2 ) + sameh = SameH(ret->hstem,stack[2],stack[3], unblended,0); + hp->next = HintNew(stack[2],stack[3]); + hp->next->hintnumber = sameh!=NULL ? sameh->hintnumber : hint_cnt++; + sameh = NULL; + if ( !is_type2 ) + sameh = SameH(ret->hstem,stack[4],stack[5], unblended,0); + hp->next->next = HintNew(stack[4],stack[5]); + hp->next->next->hintnumber = sameh!=NULL ? sameh->hintnumber : hint_cnt++; + if ( !is_type2 && hp->next->next->hintnumber<96 ) { + if ( pending_hm==NULL ) + pending_hm = chunkalloc(sizeof(HintMask)); + (*pending_hm)[hint->hintnumber>>3] |= 0x80>>(hint->hintnumber&0x7); + (*pending_hm)[hint->next->hintnumber>>3] |= 0x80>>(hint->next->hintnumber&0x7); + (*pending_hm)[hint->next->next->hintnumber>>3] |= 0x80>>(hint->next->next->hintnumber&0x7); + } + hp = hp->next->next; + sp = 0; + break; + case 6: /* seac */ /* build accented characters */ + seac: + if ( sp<5 ) LogError( _("Stack underflow on seac in %s\n"), name ); + /* stack[0] must be the lsidebearing of the accent. I'm not sure why */ + r1 = RefCharCreate(); + r2 = RefCharCreate(); + r2->transform[0] = 1; r2->transform[3]=1; + r2->transform[4] = stack[1] - (stack[0]-ret->lsidebearing); + r2->transform[5] = stack[2]; + /* the translation of the accent here is said to be relative */ + /* to the origins of the base character. I think they place */ + /* the origin at the left bearing. And they don't mean the */ + /* base char at all, they mean the current char's lbearing */ + /* (which is normally the same as the base char's, except */ + /* when I has a big accent (like diaerisis) */ + r1->transform[0] = 1; r1->transform[3]=1; + r1->adobe_enc = stack[3]; + r2->adobe_enc = stack[4]; + if ( stack[3]<0 || stack[3]>=256 || stack[4]<0 || stack[4]>=256 ) { + LogError( _("Reference encoding out of bounds in %s\n"), name ); + r1->adobe_enc = 0; + r2->adobe_enc = 0; + } + r1->next = r2; + if ( rlast!=NULL ) rlast->next = r1; + else ret->layers[ly_fore].refs = r1; + ret->changedsincelasthinted = true; /* seac glyphs contain no hints */ + rlast = r2; + sp = 0; + break; + case 7: /* sbw */ /* generalized width/sidebearing command */ + if ( sp<4 ) LogError( _("Stack underflow on sbw in %s\n"), name ); + ret->lsidebearing = stack[0]; + /* stack[1] is lsidebearing y (only for vertical writing styles, CJK) */ + ret->width = stack[2]; + /* stack[3] is height (for vertical writing styles, CJK) */ + sp = 0; + break; + case 5: case 9: case 14: case 26: + if ( sp<1 ) LogError( _("Stack underflow on unary operator in %s\n"), name ); + switch ( v ) { + case 5: stack[sp-1] = (stack[sp-1]==0); break; /* not */ + case 9: if ( stack[sp-1]<0 ) stack[sp-1]= -stack[sp-1]; break; /* abs */ + case 14: stack[sp-1] = -stack[sp-1]; break; /* neg */ + case 26: stack[sp-1] = sqrt(stack[sp-1]); break; /* sqrt */ + } + break; + case 3: case 4: case 10: case 11: case 12: case 15: case 24: + if ( sp<2 ) LogError( _("Stack underflow on binary operator in %s\n"), name ); + else switch ( v ) { + case 3: /* and */ + stack[sp-2] = (stack[sp-1]!=0 && stack[sp-2]!=0); + break; + case 4: /* and */ + stack[sp-2] = (stack[sp-1]!=0 || stack[sp-2]!=0); + break; + case 10: /* add */ + stack[sp-2] += stack[sp-1]; + break; + case 11: /* sub */ + stack[sp-2] -= stack[sp-1]; + break; + case 12: /* div */ + stack[sp-2] /= stack[sp-1]; + break; + case 24: /* mul */ + stack[sp-2] *= stack[sp-1]; + break; + case 15: /* eq */ + stack[sp-2] = (stack[sp-1]==stack[sp-2]); + break; + } + --sp; + break; + case 22: /* ifelse */ + if ( sp<4 ) LogError( _("Stack underflow on ifelse in %s\n"), name ); + else { + if ( stack[sp-2]>stack[sp-1] ) + stack[sp-4] = stack[sp-3]; + sp -= 3; + } + break; + case 23: /* random */ + /* This function returns something (0,1]. It's not clear to me*/ + /* if rand includes 0 and RAND_MAX or not, but this approach */ + /* should work no matter what */ + do { + stack[sp] = (rand()/(RAND_MAX-1)); + } while ( stack[sp]==0 || stack[sp]>1 ); + ++sp; + break; + case 16: /* callothersubr */ + /* stack[sp-1] is the number of the thing to call in the othersubr array */ + /* stack[sp-2] is the number of args to grab off our stack and put on the */ + /* real postscript stack */ + if ( is_type2 ) + LogError( _("Type2 fonts do not support the Type1 callothersubrs operator") ); + if ( sp<2 || sp < 2+stack[sp-2] ) { + LogError( _("Stack underflow on callothersubr in %s\n"), name ); + sp = 0; + } else { + int tot = stack[sp-2], i, k, j; + popsp = 0; + for ( k=sp-3; k>=sp-2-tot; --k ) + pops[popsp++] = stack[k]; + /* othersubrs 0-3 must be interpretted. 0-2 are Flex, 3 is Hint Replacement */ + /* othersubrs 12,13 are for counter hints. We don't need to */ + /* do anything to ignore them */ + /* Subroutines 14-18 are multiple master blenders. We need */ + /* to pay attention to them too */ + switch ( (int) stack[sp-1] ) { + case 3: { + /* when we weren't capabable of hint replacement we */ + /* punted by putting 3 on the stack (T1 spec page 70) */ + /* subroutine 3 is a noop */ + /*pops[popsp-1] = 3;*/ + ret->manualhints = false; + /* We can manage hint substitution from hintmask though*/ + /* well enough that we needn't clear the manualhints bit */ + ret->hstem = HintsAppend(ret->hstem,activeh); activeh=NULL; + ret->vstem = HintsAppend(ret->vstem,activev); activev=NULL; + } break; + case 1: { + /* Essentially what we want to do is draw a line from */ + /* where we are at the beginning to where we are at */ + /* the end. So we save the beginning here (this starts*/ + /* the flex sequence), we ignore all calls to othersub*/ + /* 2, and when we get to othersub 0 we put everything*/ + /* back to where it should be and free up whatever */ + /* extranious junk we created along the way and draw */ + /* our line. */ + /* Let's punt a little less, and actually figure out */ + /* the appropriate rrcurveto commands and put in a */ + /* dished serif */ + /* We should never get here in a type2 font. But we did*/ + /* this code won't work if we follow type2 conventions*/ + /* so turn off type2 until we get 0 callothersubrs */ + /* which marks the end of the flex sequence */ + is_type2 = false; + if ( cur!=NULL ) { + oldcur = cur; + cur->next = NULL; + } else + LogError( _("Bad flex subroutine in %s\n"), name ); + } break; + case 2: { + /* No op */; + } break; + case 0: if ( oldcur!=NULL ) { + SplinePointList *spl = oldcur->next; + if ( spl!=NULL && spl->next!=NULL && + spl->next->next!=NULL && + spl->next->next->next!=NULL && + spl->next->next->next->next!=NULL && + spl->next->next->next->next->next!=NULL && + spl->next->next->next->next->next->next!=NULL ) { + BasePoint old_nextcp, mid_prevcp, mid, mid_nextcp, + end_prevcp, end; + old_nextcp = spl->next->first->me; + mid_prevcp = spl->next->next->first->me; + mid = spl->next->next->next->first->me; + mid_nextcp = spl->next->next->next->next->first->me; + end_prevcp = spl->next->next->next->next->next->first->me; + end = spl->next->next->next->next->next->next->first->me; + cur = oldcur; + if ( cur!=NULL && cur->first!=NULL && (cur->first!=cur->last || cur->first->next==NULL) ) { + cur->last->nextcp = old_nextcp; + cur->last->nonextcp = false; + pt = chunkalloc(sizeof(SplinePoint)); + pt->hintmask = pending_hm; pending_hm = NULL; + pt->prevcp = mid_prevcp; + pt->me = mid; + pt->nextcp = mid_nextcp; + /*pt->flex = pops[2];*/ + CheckMake(cur->last,pt); + SplineMake3(cur->last,pt); + cur->last = pt; + pt = chunkalloc(sizeof(SplinePoint)); + pt->prevcp = end_prevcp; + pt->me = end; + pt->nonextcp = true; + CheckMake(cur->last,pt); + SplineMake3(cur->last,pt); + cur->last = pt; + } else + LogError( _("No previous point on path in curveto from flex 0 in %s\n"), name ); + } else { + /* Um, something's wrong. Let's just draw a line */ + /* do the simple method, which consists of creating */ + /* the appropriate line */ + pt = chunkalloc(sizeof(SplinePoint)); + pt->me.x = pops[1]; pt->me.y = pops[0]; + pt->noprevcp = true; pt->nonextcp = true; + SplinePointListFree(oldcur->next); oldcur->next = NULL; spl = NULL; + cur = oldcur; + if ( cur!=NULL && cur->first!=NULL && (cur->first!=cur->last || cur->first->next==NULL) ) { + CheckMake(cur->last,pt); + SplineMake3(cur->last,pt); + cur->last = pt; + } else + LogError( _("No previous point on path in lineto from flex 0 in %s\n"), name ); + } + --popsp; + cur->next = NULL; + SplinePointListsFree(spl); + oldcur = NULL; + } else + LogError( _("Bad flex subroutine in %s\n"), name ); + + is_type2 = context->is_type2; + /* If we found a type2 font with a type1 flex sequence */ + /* (an illegal idea, but never mind, someone gave us one)*/ + /* then we had to turn off type2 untill the end of the */ + /* flex sequence. Which is here */ + break; + case 14: /* results in 1 blended value */ + case 15: /* results in 2 blended values */ + case 16: /* results in 3 blended values */ + case 17: /* results in 4 blended values */ + case 18: { /* results in 6 blended values */ + int cnt = stack[sp-1]-13; + if ( cnt==5 ) cnt=6; + if ( context->instance_count==0 ) + LogError( _("Attempt to use a multiple master subroutine in a non-mm font in %s.\n"), name ); + else if ( tot!=cnt*context->instance_count ) + LogError( _("Multiple master subroutine called with the wrong number of arguments in %s.\n"), name ); + else { + /* Hints need to keep track of the original blends */ + if ( cnt==1 && !is_type2 ) { + if ( sp-2-tot>=1 && (!old_last_was_b1 || stack[0]!=Blend(unblended[1],context))) { + unblended[0][0] = stack[0]; + for ( i=1; iinstance_count; ++i ) + unblended[0][i] = 0; + } else + memcpy(unblended,unblended+1,context->instance_count*sizeof(real)); + for ( j=0; jinstance_count; ++j ) + unblended[1][j] = stack[sp-2-tot+j]; + } else if ( cnt==2 && !is_type2 ) { + unblended[0][0] = stack[sp-2-tot]; + unblended[1][0] = stack[sp-2-tot+1]; + for ( i=0; i<2; ++i ) + for ( j=1; jinstance_count; ++j ) + unblended[i][j] = stack[sp-2-tot+2+i*(context->instance_count-1)+(j-1)]; + } + popsp = 0; + for ( i=0; iinstance_count; ++j ) + sum += context->blend_values[j]* + stack[sp-2-tot+ cnt +i*(context->instance_count-1)+ j-1]; + pops[cnt-1-popsp++] = sum; + } + } + } break; + } + sp = k+1; + } + break; + case 20: /* put */ + if ( sp<2 ) LogError( _("Too few items on stack for put in %s\n"), name ); + else if ( stack[sp-1]<0 || stack[sp-1]>=32 ) LogError( _("Reference to transient memory out of bounds in put in %s\n"), name ); + else { + transient[(int)stack[sp-1]] = stack[sp-2]; + sp -= 2; + } + break; + case 21: /* get */ + if ( sp<1 ) LogError( _("Too few items on stack for get in %s\n"), name ); + else if ( stack[sp-1]<0 || stack[sp-1]>=32 ) LogError( _("Reference to transient memory out of bounds in put in %s\n"), name ); + else + stack[sp-1] = transient[(int)stack[sp-1]]; + break; + case 17: /* pop */ + /* pops something from the postscript stack and pushes it on ours */ + /* used to get a return value from an othersubr call */ + /* Bleah. Adobe wants the pops to return the arguments if we */ + /* don't understand the call. What use is the subroutine then?*/ + if ( popsp<=0 ) + LogError( _("Pop stack underflow on pop in %s\n"), name ); + else + stack[sp++] = pops[--popsp]; + break; + case 18: /* drop */ + if ( sp>0 ) --sp; + break; + case 27: /* dup */ + if ( sp>=1 ) { + stack[sp] = stack[sp-1]; + ++sp; + } + break; + case 28: /* exch */ + if ( sp>=2 ) { + real temp = stack[sp-1]; + stack[sp-1] = stack[sp-2]; stack[sp-2] = temp; + } + break; + case 29: /* index */ + if ( sp>=1 ) { + int index = stack[--sp]; + if ( index<0 || sp=2 ) { + int j = stack[sp-1], N=stack[sp-2]; + if ( N>sp || j>=N || j<0 || N<0 ) + LogError( _("roll out of range in %s\n"), name ); + else if ( j==0 || N==0 ) + /* No op */; + else { + real *temp = galloc(N*sizeof(real)); + int i; + for ( i=0; iyt ) { + dx6 = stack[base++]; + dy6 = -dy-dy2-dy3-dy4-dy5; + } else { + dy6 = stack[base++]; + dx6 = -dx-dx2-dx3-dx4-dx5; + } + break; + } + if ( cur!=NULL && cur->first!=NULL && (cur->first!=cur->last || cur->first->next==NULL) ) { + current.x = rint((current.x+dx)*1024)/1024; current.y = rint((current.y+dy)*1024)/1024; + cur->last->nextcp.x = current.x; cur->last->nextcp.y = current.y; + cur->last->nonextcp = false; + current.x = rint((current.x+dx2)*1024)/1024; current.y = rint((current.y+dy2)*1024)/1024; + pt = chunkalloc(sizeof(SplinePoint)); + pt->hintmask = pending_hm; pending_hm = NULL; + pt->prevcp.x = current.x; pt->prevcp.y = current.y; + current.x = rint((current.x+dx3)*1024)/1024; current.y = rint((current.y+dy3)*1024)/1024; + pt->me.x = current.x; pt->me.y = current.y; + pt->nonextcp = true; + CheckMake(cur->last,pt); + SplineMake3(cur->last,pt); + cur->last = pt; + + current.x = rint((current.x+dx4)*1024)/1024; current.y = rint((current.y+dy4)*1024)/1024; + cur->last->nextcp.x = current.x; cur->last->nextcp.y = current.y; + cur->last->nonextcp = false; + current.x = rint((current.x+dx5)*1024)/1024; current.y = rint((current.y+dy5)*1024)/1024; + pt = chunkalloc(sizeof(SplinePoint)); + pt->prevcp.x = current.x; pt->prevcp.y = current.y; + current.x = rint((current.x+dx6)*1024)/1024; current.y = rint((current.y+dy6)*1024)/1024; + pt->me.x = current.x; pt->me.y = current.y; + pt->nonextcp = true; + CheckMake(cur->last,pt); + SplineMake3(cur->last,pt); + cur->last = pt; + } else + LogError( _("No previous point on path in flex operator in %s\n"), name ); + sp = 0; + break; + default: + LogError( _("Uninterpreted opcode 12,%d in %s\n"), v, name ); + break; + } + } else { last_was_b1 = false; switch ( v ) { + case 1: /* hstem */ + case 18: /* hstemhm */ + base = 0; + if ( (sp&1) && ret->width == (int16) 0x8000 ) + ret->width = stack[0]; + if ( sp&1 ) + base=1; + if ( sp-base<2 ) + LogError( _("Stack underflow on hstem in %s\n"), name ); + /* stack[0] is absolute y for start of horizontal hint */ + /* (actually relative to the y specified as lsidebearing y in sbw*/ + /* stack[1] is relative y for height of hint zone */ + coord = 0; + hp = NULL; + if ( activeh!=NULL ) + for ( hp=activeh; hp->next!=NULL; hp = hp->next ); + while ( sp-base>=2 ) { + sameh = NULL; + if ( !is_type2 ) + sameh = SameH(ret->hstem,stack[base]+coord,stack[base+1], + unblended,context->instance_count); + hint = HintNew(stack[base]+coord,stack[base+1]); + hint->hintnumber = sameh!=NULL ? sameh->hintnumber : hint_cnt++; + if ( !is_type2 && context->instance_count!=0 ) { + hint->u.unblended = chunkalloc(sizeof(real [2][MmMax])); + memcpy(hint->u.unblended,unblended,sizeof(real [2][MmMax])); + } + if ( activeh==NULL ) + activeh = hint; + else + hp->next = hint; + hp = hint; + if ( !is_type2 && hint->hintnumber<96 ) { + if ( pending_hm==NULL ) + pending_hm = chunkalloc(sizeof(HintMask)); + (*pending_hm)[hint->hintnumber>>3] |= 0x80>>(hint->hintnumber&0x7); + } + base+=2; + coord = hint->start+hint->width; + } + sp = 0; + break; + case 19: /* hintmask */ + case 20: /* cntrmask */ + /* If there's anything on the stack treat it as a vstem hint */ + case 3: /* vstem */ + case 23: /* vstemhm */ + base = 0; + if ( cur==NULL || v==3 || v==23 ) { + if ( (sp&1) && is_type2 && ret->width == (int16) 0x8000 ) { + ret->width = stack[0]; + } + if ( sp&1 ) + base=1; + /* I've seen a vstemhm with no arguments. I've no idea what that */ + /* means. It came right after a hintmask */ + /* I'm confused about v/hstemhm because the manual says it needs */ + /* to be used if one uses a hintmask, but that's not what the */ + /* examples show. Or I'm not understanding. */ + if ( sp-base<2 && v!=19 && v!=20 ) + LogError( _("Stack underflow on vstem in %s\n"), name ); + /* stack[0] is absolute x for start of vertical hint */ + /* (actually relative to the x specified as lsidebearing in h/sbw*/ + /* stack[1] is relative x for height of hint zone */ + coord = ret->lsidebearing; + hp = NULL; + if ( activev!=NULL ) + for ( hp=activev; hp->next!=NULL; hp = hp->next ); + while ( sp-base>=2 ) { + sameh = NULL; + if ( !is_type2 ) + sameh = SameH(ret->vstem,stack[base]+coord,stack[base+1], + unblended,context->instance_count); + hint = HintNew(stack[base]+coord,stack[base+1]); + hint->hintnumber = sameh!=NULL ? sameh->hintnumber : hint_cnt++; + if ( !is_type2 && context->instance_count!=0 ) { + hint->u.unblended = chunkalloc(sizeof(real [2][MmMax])); + memcpy(hint->u.unblended,unblended,sizeof(real [2][MmMax])); + } + if ( !is_type2 && hint->hintnumber<96 ) { + if ( pending_hm==NULL ) + pending_hm = chunkalloc(sizeof(HintMask)); + (*pending_hm)[hint->hintnumber>>3] |= 0x80>>(hint->hintnumber&0x7); + } + if ( activev==NULL ) + activev = hint; + else + hp->next = hint; + hp = hint; + base+=2; + coord = hint->start+hint->width; + } + sp = 0; + } + if ( v==19 || v==20 ) { /* hintmask, cntrmask */ + unsigned bytes = (hint_cnt+7)/8; + if ( bytes>sizeof(HintMask) ) bytes = sizeof(HintMask); + if ( v==19 ) { + ret->hstem = HintsAppend(ret->hstem,activeh); activeh=NULL; + ret->vstem = HintsAppend(ret->vstem,activev); activev=NULL; + if ( pending_hm==NULL ) + pending_hm = chunkalloc(sizeof(HintMask)); + memcpy(pending_hm,type1,bytes); + } else if ( cp<(int)(sizeof(counters)/sizeof(counters[0])) ) { + counters[cp] = chunkalloc(sizeof(HintMask)); + memcpy(counters[cp],type1,bytes); + ++cp; + } + if ( bytes!=(unsigned)hint_cnt/8 ) { + int mask = 0xff>>(hint_cnt&7); + if ( type1[bytes-1]&mask ) + LogError( _("Hint mask (or counter mask) with too many hints in %s\n"), name ); + } + type1 += bytes; + len -= bytes; + } + break; + case 14: /* endchar */ + /* endchar is allowed to terminate processing even within a subroutine */ + if ( (sp&1) && is_type2 && ret->width == (int16) 0x8000 ) + ret->width = stack[0]; + if ( context->painttype!=2 ) + closepath(cur,is_type2); + pcsp = 0; + if ( sp==4 ) { + /* In Type2 strings endchar has a depreciated function of doing */ + /* a seac (which doesn't exist at all). Except enchar takes */ + /* 4 args and seac takes 5. Bleah */ + stack[4] = stack[3]; stack[3] = stack[2]; stack[2] = stack[1]; stack[1] = stack[0]; + stack[0] = 0; + sp = 5; + goto seac; + } else if ( sp==5 ) { + /* same as above except also specified a width */ + stack[0] = 0; + goto seac; + } + /* the docs say that endchar must be the last command in a char */ + /* (or the last command in a subroutine which is the last in the */ + /* char) So in theory if there's anything left we should complain*/ + /* In practice though, the EuroFont has a return statement after */ + /* the endchar in a subroutine. So we won't try to catch that err*/ + /* and just stop. */ + /* Adobe says it's not an error, but I can't understand their */ + /* logic */ + goto done; + break; + case 13: /* hsbw (set left sidebearing and width) */ + if ( sp<2 ) LogError( _("Stack underflow on hsbw in %s\n"), name ); + ret->lsidebearing = stack[0]; + current.x = stack[0]; /* sets the current point too */ + ret->width = stack[1]; + sp = 0; + break; + case 9: /* closepath */ + sp = 0; + closepath(cur,is_type2); + break; + case 21: /* rmoveto */ + case 22: /* hmoveto */ + case 4: /* vmoveto */ + if ( is_type2 ) { + if (( (v==21 && sp==3) || (v!=21 && sp==2)) && ret->width == (int16) 0x8000 ) + /* Character's width may be specified on the first moveto */ + ret->width = stack[0]; + if ( v==21 && sp>2 ) { + stack[0] = stack[sp-2]; stack[1] = stack[sp-1]; + sp = 2; + } else if ( v!=21 && sp>1 ) { + stack[0] = stack[sp-1]; + sp = 1; + } + if ( context->painttype!=2 ) + closepath(cur,true); + } + case 5: /* rlineto */ + case 6: /* hlineto */ + case 7: /* vlineto */ + polarity = 0; + base = 0; + while ( basehintmask = pending_hm; pending_hm = NULL; + pt->me.x = current.x; pt->me.y = current.y; + pt->noprevcp = true; pt->nonextcp = true; + if ( v==4 || v==21 || v==22 ) { + if ( cur!=NULL && cur->first==cur->last && cur->first->prev==NULL && is_type2 ) { + /* Two adjacent movetos should not create single point paths */ + cur->first->me.x = current.x; cur->first->me.y = current.y; + SplinePointFree(pt); + } else { + SplinePointList *spl = chunkalloc(sizeof(SplinePointList)); + spl->first = spl->last = pt; + if ( cur!=NULL ) + cur->next = spl; + else + ret->layers[ly_fore].splines = spl; + cur = spl; + } + break; + } else { + if ( cur!=NULL && cur->first!=NULL && (cur->first!=cur->last || cur->first->next==NULL) ) { + CheckMake(cur->last,pt); + SplineMake3(cur->last,pt); + cur->last = pt; + } else + LogError( _("No previous point on path in lineto in %s\n"), name ); + if ( !is_type2 ) + break; + } + } + sp = 0; + break; + case 25: /* rlinecurve */ + base = 0; + while ( sp>base+6 ) { + current.x = rint((current.x+stack[base++])*1024)/1024; current.y = rint((current.y+stack[base++])*1024)/1024; + if ( cur!=NULL ) { + pt = chunkalloc(sizeof(SplinePoint)); + pt->hintmask = pending_hm; pending_hm = NULL; + pt->me.x = current.x; pt->me.y = current.y; + pt->noprevcp = true; pt->nonextcp = true; + CheckMake(cur->last,pt); + SplineMake3(cur->last,pt); + cur->last = pt; + } + } + case 24: /* rcurveline */ + case 8: /* rrcurveto */ + case 31: /* hvcurveto */ + case 30: /* vhcurveto */ + case 27: /* hhcurveto */ + case 26: /* vvcurveto */ + polarity = 0; + while ( sp>base+2 ) { + dx = dy = dx2 = dy2 = dx3 = dy3 = 0; + if ( v==8 || v==25 || v==24 ) { + if ( sp<6+base ) { + LogError( _("Stack underflow on rrcurveto in %s\n"), name ); + base = sp; + } else { + dx = stack[base++]; + dy = stack[base++]; + dx2 = stack[base++]; + dy2 = stack[base++]; + dx3 = stack[base++]; + dy3 = stack[base++]; + } + } else if ( v==27 ) { /* hhcurveto */ + if ( sp<4+base ) { + LogError( _("Stack underflow on hhcurveto in %s\n"), name ); + base = sp; + } else { + if ( (sp-base)&1 ) dy = stack[base++]; + dx = stack[base++]; + dx2 = stack[base++]; + dy2 = stack[base++]; + dx3 = stack[base++]; + } + } else if ( v==26 ) { /* vvcurveto */ + if ( sp<4+base ) { + LogError( _("Stack underflow on hhcurveto in %s\n"), name ); + base = sp; + } else { + if ( (sp-base)&1 ) dx = stack[base++]; + dy = stack[base++]; + dx2 = stack[base++]; + dy2 = stack[base++]; + dy3 = stack[base++]; + } + } else if ( (v==31 && !(polarity&1)) || (v==30 && (polarity&1)) ) { + if ( sp<4+base ) { + LogError( _("Stack underflow on hvcurveto in %s\n"), name ); + base = sp; + } else { + dx = stack[base++]; + dx2 = stack[base++]; + dy2 = stack[base++]; + dy3 = stack[base++]; + if ( sp==base+1 ) + dx3 = stack[base++]; + } + } else /*if ( (v==30 && !(polarity&1)) || (v==31 && (polarity&1)) )*/ { + if ( sp<4+base ) { + LogError( _("Stack underflow on vhcurveto in %s\n"), name ); + base = sp; + } else { + dy = stack[base++]; + dx2 = stack[base++]; + dy2 = stack[base++]; + dx3 = stack[base++]; + if ( sp==base+1 ) + dy3 = stack[base++]; + } + } + ++polarity; + if ( cur!=NULL && cur->first!=NULL && (cur->first!=cur->last || cur->first->next==NULL) ) { + current.x = rint((current.x+dx)*1024)/1024; current.y = rint((current.y+dy)*1024)/1024; + cur->last->nextcp.x = current.x; cur->last->nextcp.y = current.y; + cur->last->nonextcp = false; + current.x = rint((current.x+dx2)*1024)/1024; current.y = rint((current.y+dy2)*1024)/1024; + pt = chunkalloc(sizeof(SplinePoint)); + pt->hintmask = pending_hm; pending_hm = NULL; + pt->prevcp.x = current.x; pt->prevcp.y = current.y; + current.x = rint((current.x+dx3)*1024)/1024; current.y = rint((current.y+dy3)*1024)/1024; + pt->me.x = current.x; pt->me.y = current.y; + pt->nonextcp = true; + CheckMake(cur->last,pt); + SplineMake3(cur->last,pt); + cur->last = pt; + } else + LogError( _("No previous point on path in curveto in %s\n"), name ); + } + if ( v==24 ) { + current.x = rint((current.x+stack[base++])*1024)/1024; current.y = rint((current.y+stack[base++])*1024)/1024; + if ( cur!=NULL ) { /* In legal code, cur can't be null here, but I got something illegal... */ + pt = chunkalloc(sizeof(SplinePoint)); + pt->hintmask = pending_hm; pending_hm = NULL; + pt->me.x = current.x; pt->me.y = current.y; + pt->noprevcp = true; pt->nonextcp = true; + CheckMake(cur->last,pt); + SplineMake3(cur->last,pt); + cur->last = pt; + } + } + sp = 0; + break; + case 29: /* callgsubr */ + case 10: /* callsubr */ + /* stack[sp-1] contains the number of the subroutine to call */ + if ( sp<1 ) { + LogError( _("Stack underflow on callsubr in %s\n"), name ); + break; + } else if ( pcsp>10 ) { + LogError( _("Too many subroutine calls in %s\n"), name ); + break; + } + s=subrs; if ( v==29 ) s = gsubrs; + if ( s!=NULL ) stack[sp-1] += s->bias; + /* Type2 subrs have a bias that must be added to the subr-number */ + /* Type1 subrs do not. We set the bias on them to 0 */ + if ( s==NULL || stack[sp-1]>=s->cnt || stack[sp-1]<0 || + s->values[(int) stack[sp-1]]==NULL ) + LogError( _("Subroutine number out of bounds in %s\n"), name ); + else { + pcstack[pcsp].type1 = type1; + pcstack[pcsp].len = len; + pcstack[pcsp].subnum = stack[sp-1]; + ++pcsp; + type1 = s->values[(int) stack[sp-1]]; + len = s->lens[(int) stack[sp-1]]; + } + if ( --sp<0 ) sp = 0; + break; + case 11: /* return */ + /* return from a subr outine */ + if ( pcsp<1 ) LogError( _("return when not in subroutine in %s\n"), name ); + else { + --pcsp; + type1 = pcstack[pcsp].type1; + len = pcstack[pcsp].len; + } + break; + case 16: { /* blend -- obsolete type 2 multiple master operator */ + int cnt,i,j; + if ( context->instance_count==0 ) + LogError( _("Attempt to use a multiple master subroutine in a non-mm font.\n") ); + else if ( sp<1 || spinstance_count*stack[sp-1]+1 ) + LogError( _("Too few items on stack for blend in %s\n"), name ); + else { + if ( !context->blend_warn ) { + LogError( _("Use of obsolete blend operator.\n") ); + context->blend_warn = true; + } + cnt = stack[sp-1]; + sp -= context->instance_count*stack[sp-1]+1; + for ( i=0; iinstance_count; ++j ) + stack[sp+i] += context->blend_values[j]*stack[sp+ + cnt+ i*(context->instance_count-1)+ j-1]; + } + /* there will always be fewer pushes than there were pops */ + /* so I don't bother to check the stack */ + sp += cnt; + } + } + break; + default: + LogError( _("Uninterpreted opcode %d in %s\n"), v, name ); + break; + }} + } + done: + if ( pcsp!=0 ) + LogError( _("end of subroutine reached with no return in %s\n"), name ); + SCCatagorizePoints(ret); + + ret->hstem = HintsAppend(ret->hstem,activeh); activeh=NULL; + ret->vstem = HintsAppend(ret->vstem,activev); activev=NULL; + + if ( cp!=0 ) { int i; + ret->countermasks = galloc(cp*sizeof(HintMask)); + ret->countermask_cnt = cp; + for ( i=0; icountermasks[i],counters[i],sizeof(HintMask)); + chunkfree(counters[i],sizeof(HintMask)); + } + } + + /* Even in type1 fonts all paths should be closed. But if we close them at*/ + /* the obvious moveto, that breaks flex hints. So we have a hack here at */ + /* the end which closes any open paths. */ + /* If we do have a PaintType 2 font, then presumably the difference between*/ + /* open and closed paths matters */ + if ( !is_type2 && !context->painttype ) + for ( cur = ret->layers[ly_fore].splines; cur!=NULL; cur = cur->next ) if ( cur->first->prev==NULL ) { + CheckMake(cur->last,cur->first); + SplineMake3(cur->last,cur->first); + cur->last = cur->first; + } + + /* Oh, I see. PS and TT disagree on which direction to use, so Fontographer*/ + /* chose the TT direction and we must reverse postscript */ + for ( cur = ret->layers[ly_fore].splines; cur!=NULL; cur = cur->next ) + SplineSetReverse(cur); + if ( ret->hstem==NULL && ret->vstem==NULL ) + ret->manualhints = false; + if ( !is_type2 && context->instance_count!=0 ) { + UnblendFree(ret->hstem); + UnblendFree(ret->vstem); + } + ret->hstem = HintCleanup(ret->hstem,true,context->instance_count); + ret->vstem = HintCleanup(ret->vstem,true,context->instance_count); + SCGuessHHintInstancesList(ret,ly_fore); + SCGuessVHintInstancesList(ret,ly_fore); + ret->hconflicts = StemListAnyConflicts(ret->hstem); + ret->vconflicts = StemListAnyConflicts(ret->vstem); + if ( context->instance_count==1 && !ret->hconflicts && !ret->vconflicts ) + SCClearHintMasks(ret,ly_fore,false); + HintsRenumber(ret); + if ( name!=NULL && strcmp(name,".notdef")!=0 ) + ret->widthset = true; +return( ret ); +} diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/pua.c b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/pua.c new file mode 100644 index 00000000000..3e7582829bf --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/pua.c @@ -0,0 +1,1612 @@ +/* A number of encodings use the public use area to map to glyphs that are */ +/* defined in planes other than the BMP (chinese), or just multiple encodings*/ +/* for the same glyph (ams) */ + +/* These data are taken from http://www.ams.org/STIX/bnb/stix-tbl.asc-2003-10-10 */ +const int amspua[] = { +/* E000 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E008 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E010 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E018 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E020 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E028 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E030 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E038 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E040 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E048 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E050 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E058 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E060 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E068 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E070 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E078 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E080 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E088 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E090 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E098 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E0A0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E0A8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E0B0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E0B8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E0C0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E0C8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E0D0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E0D8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E0E0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E0E8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E0F0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E0F8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E100 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E108 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E110 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E118 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E120 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E128 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E130 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E138 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E140 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E148 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E150 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E158 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E160 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E168 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E170 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E178 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E180 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E188 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E190 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E198 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E1A0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E1A8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E1B0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E1B8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E1C0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E1C8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E1D0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E1D8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E1E0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E1E8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E1F0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E1F8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E200 */ 0x027f8, 0x027f5, 0x027fa, 0x027f7, 0x027f9, 0x027f6, 0x0290e, 0x0290f, +/* E208 */ 0x027fc, 0x02910, 0x02926, 0x02925, 0x02923, 0x02924, 0x02928, 0x02929, +/* E210 */ 0x0292a, 0x02927, 0x02905, 0x0, 0x0297c, 0x0297d, 0x021f5, 0x0296f, +/* E218 */ 0x0296e, 0x02937, 0x02936, 0x0, 0x02933, 0x0, 0x02945, 0x02946, +/* E220 */ 0x0291f, 0x02920, 0x0291d, 0x0291e, 0x02964, 0x02962, 0x02963, 0x02965, +/* E228 */ 0x0294b, 0x0294a, 0x02968, 0x02966, 0x02967, 0x02969, 0x0296a, 0x0296d, +/* E230 */ 0x0296c, 0x0296b, 0x02192, 0x02190, 0x02972, 0x02975, 0x02971, 0x02949, +/* E238 */ 0x02911, 0x02916, 0x0291a, 0x0291c, 0x02919, 0x0291b, 0x02938, 0x02939, +/* E240 */ 0x02948, 0x021fe, 0x021fd, 0x021ff, 0x021dd, 0x02904, 0x02903, 0x02902, +/* E248 */ 0x0237c, 0x0293c, 0x0293d, 0x0297e, 0x0297f, 0x02974, 0x02973, 0x02af0, +/* E250 */ 0x02aef, 0x02a3f, 0x0, 0x0, 0x02a00, 0x02a01, 0x02a02, 0x02a06, +/* E258 */ 0x02a04, 0x02a3c, 0x02a25, 0x02a2a, 0x02a2d, 0x02a2e, 0x02a34, 0x02a35, +/* E260 */ 0x029b5, 0x02a40, 0x02abd, 0x02abe, 0x02a33, 0x02a5f, 0x02a22, 0x02a72, +/* E268 */ 0x02a71, 0x02a27, 0x02a23, 0x02a24, 0x02a26, 0x02a30, 0x02a46, 0x02a47, +/* E270 */ 0x02a48, 0x02a49, 0x02a4a, 0x02a4b, 0x0, 0x0, 0x0, 0x0, +/* E278 */ 0x02a4c, 0x02a4d, 0x02a50, 0x02a39, 0x02a3a, 0x02a3b, 0x029cd, 0x029c4, +/* E280 */ 0x029c5, 0x02a44, 0x02a45, 0x02a42, 0x02a43, 0x02a38, 0x029bc, 0x029bf, +/* E288 */ 0x029c0, 0x029c1, 0x029b7, 0x029b9, 0x02a37, 0x02a36, 0x02a31, 0x0, +/* E290 */ 0x0, 0x02994, 0x02993, 0x023b1, 0x023b0, 0x02996, 0x02995, 0x02991, +/* E298 */ 0x02992, 0x0298b, 0x0298c, 0x0298d, 0x0298e, 0x0298f, 0x02990, 0x02a8a, +/* E2A0 */ 0x02a88, 0x02269, 0x02a89, 0x02a87, 0x02268, 0x02271, 0x02271, 0x02270, +/* E2A8 */ 0x02270, 0x0, 0x02224, 0x02226, 0x02284, 0x02288, 0x02288, 0x02285, +/* E2B0 */ 0x02289, 0x02289, 0x02ab9, 0x02ab5, 0x02aba, 0x02ab6, 0x02acb, 0x02acc, +/* E2B8 */ 0x02acb, 0x0228a, 0x0228b, 0x02acc, 0x0, 0x0, 0x0, 0x0, +/* E2C0 */ 0x0, 0x02270, 0x02271, 0x0226e, 0x0226f, 0x0, 0x02249, 0x0, +/* E2C8 */ 0x02af3, 0x0f423, 0x0f428, 0x0, 0x0, 0x0, 0x0, 0x022ed, +/* E2D0 */ 0x022ec, 0x02aee, 0x0, 0x0, 0x0, 0x0210f, 0x029a4, 0x029a5, +/* E2D8 */ 0x0, 0x029a8, 0x029a9, 0x029aa, 0x029ab, 0x029ac, 0x029ad, 0x029ae, +/* E2E0 */ 0x029af, 0x0299d, 0x025f9, 0x0, 0x025f8, 0x025fa, 0x029c9, 0x029b1, +/* E2E8 */ 0x029b2, 0x029b3, 0x029b4, 0x0299a, 0x0ee39, 0x0204f, 0x023b5, 0x023b4, +/* E2F0 */ 0x023b6, 0x029c2, 0x029c3, 0x0, 0x02a86, 0x02a8c, 0x02a7e, 0x02aa2, +/* E2F8 */ 0x02a85, 0x02a8b, 0x02a7d, 0x02aa1, 0x0, 0x02ab7, 0x02aaf, 0x02ab8, +/* E300 */ 0x02ab0, 0x02223, 0x02225, 0x02323, 0x02ac5, 0x02ac6, 0x02248, 0x0, +/* E308 */ 0x0, 0x02a77, 0x02adb, 0x02a9d, 0x02a9e, 0x02aeb, 0x02a74, 0x02ae4, +/* E310 */ 0x02ae8, 0x02ae7, 0x02ae9, 0x02ae6, 0x02a6d, 0x02a70, 0x02aae, 0x02a73, +/* E318 */ 0x02a78, 0x02a66, 0x02a29, 0x02ad9, 0x02ada, 0x02a7f, 0x02a80, 0x02a81, +/* E320 */ 0x02a82, 0x02a83, 0x02a84, 0x02a97, 0x02a98, 0x02a79, 0x02a7a, 0x0, +/* E328 */ 0x0, 0x02a7b, 0x02a7c, 0x022da, 0x022db, 0x02a91, 0x02a92, 0x02aa4, +/* E330 */ 0x02aa5, 0x02a93, 0x02a94, 0x02a8d, 0x02a8e, 0x02a8f, 0x02a90, 0x02a9f, +/* E338 */ 0x02aa0, 0x02aaa, 0x02aab, 0x02aac, 0x02aad, 0x0, 0x0, 0x02979, +/* E340 */ 0x0297b, 0x02abf, 0x02ac0, 0x02ac1, 0x02ac2, 0x02ac7, 0x02ac8, 0x02ad3, +/* E348 */ 0x02ad4, 0x02ad5, 0x02ad6, 0x02ad7, 0x02ad8, 0x0ee40, 0x0ee41, 0x02ac3, +/* E350 */ 0x02ac4, 0x02acf, 0x02ad0, 0x02ad1, 0x02ad2, 0x02aa6, 0x02aa7, 0x02aa8, +/* E358 */ 0x02aa9, 0x029ce, 0x02ab3, 0x02ab4, 0x02abb, 0x02abc, 0x02976, 0x02978, +/* E360 */ 0x0, 0x02218, 0x0, 0x022a5, 0x1d453, 0x021d4, 0x0, 0x0, +/* E368 */ 0x0, 0x0, 0x0204e, 0x0, 0x0220c, 0x0220c, 0x02a55, 0x02a56, +/* E370 */ 0x02209, 0x02057, 0x029dc, 0x0299c, 0x02a53, 0x02a54, 0x02a15, 0x02a16, +/* E378 */ 0x02a0c, 0x0, 0x0, 0x022f7, 0x022f6, 0x022fe, 0x022fd, 0x001b5, +/* E380 */ 0x0ee44, 0x0ee45, 0x02afd, 0x02af1, 0x029e3, 0x029e4, 0x029e5, 0x0, +/* E388 */ 0x0, 0x0, 0x0, 0x02a6a, 0x02a6f, 0x02af2, 0x029de, 0x029dd, +/* E390 */ 0x0, 0x02a5a, 0x02a5b, 0x02a5d, 0x02a5c, 0x02a10, 0x02a0d, 0x02a12, +/* E398 */ 0x02a13, 0x02a14, 0x02a17, 0x02a11, 0x022f5, 0x0, 0x022f9, 0x0, +/* E3A0 */ 0x022f2, 0x022fa, 0x022f3, 0x022fb, 0x022f4, 0x022fc, 0x0ee46, 0x0ee47, +/* E3A8 */ 0x029bb, 0x02052, 0x029a6, 0x029a7, 0x02aec, 0x02aed, 0x02a57, 0x02a58, +/* E3B0 */ 0x02a61, 0x02218, 0x0ee24, 0x0, 0x02026, 0x0ee30, 0x00308, 0x02aea, +/* E3B8 */ 0x022f8, 0x0, 0x0, 0x0, 0x02209, 0x02275, 0x02274, 0x0, +/* E3C0 */ 0x02053, 0x0, 0x0, 0x0, 0x02ae2, 0x0, 0x0, 0x0299f, +/* E3C8 */ 0x029e1, 0x0, 0x02a51, 0x02a52, 0x003b1, 0x0026b, 0x0, 0x0, +/* E3D0 */ 0x003c3, 0x00067, 0x025aa, 0x02a0f, 0x022bd, 0x0007c, 0x02934, 0x02935, +/* E3D8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E3E0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E3E8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E3F0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E3F8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E400 */ 0x0, 0x0, 0x0290c, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E408 */ 0x0, 0x029be, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E410 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x02241, 0x0, 0x0, +/* E418 */ 0x0, 0x0, 0x029b0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E420 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E428 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E430 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E438 */ 0x0, 0x0, 0x0, 0x0ee3b, 0x0ee3c, 0x0, 0x0, 0x0, +/* E440 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E448 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E450 */ 0x00308, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E458 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E460 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E468 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E470 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E478 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E480 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E488 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E490 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E498 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E4A0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E4A8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E4B0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E4B8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E4C0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E4C8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E4D0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E4D8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E4E0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E4E8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E4F0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E4F8 */ 0x0, 0x02423, 0x0, 0x0, 0x0ee31, 0x0, 0x0, 0x0ee32, +/* E500 */ 0x1d538, 0x1d539, 0x02102, 0x1d53b, 0x1d53c, 0x1d53d, 0x1d53e, 0x0210d, +/* E508 */ 0x1d540, 0x1d541, 0x1d542, 0x1d543, 0x1d544, 0x02115, 0x1d546, 0x02119, +/* E510 */ 0x0211a, 0x0211d, 0x1d54a, 0x1d54b, 0x1d54c, 0x1d54d, 0x1d54e, 0x1d54f, +/* E518 */ 0x1d550, 0x02124, 0x0213f, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E520 */ 0x1d49c, 0x0212c, 0x1d49e, 0x1d49f, 0x02130, 0x02131, 0x1d4a2, 0x0210b, +/* E528 */ 0x02110, 0x1d4a5, 0x1d4a6, 0x02112, 0x02133, 0x1d4a9, 0x1d4aa, 0x1d4ab, +/* E530 */ 0x1d4ac, 0x0211b, 0x1d4ae, 0x1d4af, 0x1d4b0, 0x1d4b1, 0x1d4b2, 0x1d4b3, +/* E538 */ 0x1d4b4, 0x1d4b5, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E540 */ 0x1d4b6, 0x1d4b7, 0x1d4b8, 0x1d4b9, 0x0212f, 0x1d4bb, 0x0210a, 0x1d4bd, +/* E548 */ 0x1d4be, 0x1d4bf, 0x1d4c0, 0x02113, 0x1d4c2, 0x1d4c3, 0x02134, 0x1d4c5, +/* E550 */ 0x1d4c6, 0x1d4c7, 0x1d4c8, 0x1d4c9, 0x1d4ca, 0x1d4cb, 0x1d4cc, 0x1d4cd, +/* E558 */ 0x1d4ce, 0x1d4cf, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E560 */ 0x1d504, 0x1d505, 0x1d506, 0x1d507, 0x1d508, 0x1d509, 0x1d50a, 0x0210c, +/* E568 */ 0x02111, 0x1d50d, 0x1d50e, 0x1d50f, 0x1d510, 0x1d511, 0x1d512, 0x1d513, +/* E570 */ 0x1d514, 0x0211c, 0x1d516, 0x1d517, 0x1d518, 0x1d519, 0x1d51a, 0x1d51b, +/* E578 */ 0x1d51c, 0x12128, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E580 */ 0x1d51e, 0x1d51f, 0x1d520, 0x1d521, 0x1d522, 0x1d523, 0x1d524, 0x1d525, +/* E588 */ 0x1d526, 0x1d527, 0x1d528, 0x1d529, 0x1d52a, 0x1d52b, 0x1d52c, 0x1d52d, +/* E590 */ 0x1d52e, 0x1d52f, 0x1d530, 0x1d531, 0x1d532, 0x1d533, 0x1d534, 0x1d535, +/* E598 */ 0x1d536, 0x1d537, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E5A0 */ 0x02942, 0x02944, 0x02947, 0x02940, 0x02941, 0x0, 0x0, 0x0, +/* E5A8 */ 0x02985, 0x0, 0x02980, 0x0, 0x0ec01, 0x0, 0x0, 0x02986, +/* E5B0 */ 0x02af6, 0x0, 0x02999, 0x0, 0x0ee33, 0x0ee34, 0x0ee35, 0x0ee36, +/* E5B8 */ 0x025a9, 0x0ee37, 0x0ee38, 0x0, 0x0ee80, 0x0, 0x0, 0x02222, +/* E5C0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x02a08, 0x02a07, 0x02a63, +/* E5C8 */ 0x02a5e, 0x0, 0x029ca, 0x0, 0x0, 0x0, 0x0, 0x02a95, +/* E5D0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E5D8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x02a96, +/* E5E0 */ 0x0, 0x0, 0x0, 0x0, 0x0e84e, 0x0, 0x0, 0x0ee50, +/* E5E8 */ 0x0ee51, 0x0ee52, 0x0ee53, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E5F0 */ 0x0, 0x0, 0x0ee3a, 0x0, 0x0ee54, 0x0, 0x0ee55, 0x0ee56, +/* E5F8 */ 0x0ee57, 0x0ee58, 0x0, 0x0ee59, 0x0ee5a, 0x0ee5b, 0x029f8, 0x029f9, +/* E600 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0ee5c, 0x0ee5d, 0x0ee5e, +/* E608 */ 0x0ee5f, 0x0ee60, 0x0ee61, 0x0ee62, 0x0224c, 0x0224c, 0x0, 0x029cb, +/* E610 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E618 */ 0x0, 0x02a2f, 0x0, 0x029b6, 0x0, 0x0, 0x0, 0x0, +/* E620 */ 0x0, 0x0, 0x0, 0x02205, 0x0ee10, 0x00326, 0x000b7, 0x0, +/* E628 */ 0x0, 0x003f5, 0x0, 0x0, 0x0, 0x0ee14, 0x00061, 0x0, +/* E630 */ 0x0ee15, 0x0, 0x0ee18, 0x0ee19, 0x0ee1a, 0x0ee1b, 0x0ee1c, 0x0, +/* E638 */ 0x0ee1d, 0x0ee1e, 0x0026e, 0x0, 0x002af, 0x0, 0x00235, 0x00236, +/* E640 */ 0x0ee1f, 0x00221, 0x0ee12, 0x02afd, 0x0ee20, 0x0, 0x0, 0x02afb, +/* E648 */ 0x0, 0x0, 0x0005c, 0x0ee13, 0x0ee16, 0x0, 0x0, 0x0, +/* E650 */ 0x021f9, 0x0, 0x0, 0x0, 0x0e215, 0x0, 0x0, 0x0, +/* E658 */ 0x0, 0x1d5b2, 0x0, 0x02a05, 0x0, 0x0, 0x0, 0x0, +/* E660 */ 0x003d8, 0x003d9, 0x0223c, 0x003d2, 0x003f4, 0x0, 0x0, 0x0, +/* E668 */ 0x00062, 0x00063, 0x00064, 0x00065, 0x00066, 0x00068, 0x00069, 0x0006a, +/* E670 */ 0x0006b, 0x0006c, 0x0006d, 0x0006e, 0x0006f, 0x00070, 0x00071, 0x00072, +/* E678 */ 0x00073, 0x00074, 0x00075, 0x00076, 0x00077, 0x00078, 0x00079, 0x0007a, +/* E680 */ 0x0030f, 0x003c7, 0x003b2, 0x001a5, 0x01d1c, 0x01d07, 0x0004d, 0x0002f, +/* E688 */ 0x01d00, 0x0029c, 0x0e2d4, 0x003b8, 0x003bb, 0x02260, 0x00110, 0x003c9, +/* E690 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E698 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E6A0 */ 0x0ee17, 0x0ee70, 0x0ee71, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E6A8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E6B0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E6B8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E6C0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E6C8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E6D0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E6D8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E6E0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E6E8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E6F0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E6F8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E700 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E708 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E710 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E718 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E720 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E728 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E730 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E738 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E740 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E748 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E750 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E758 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E760 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E768 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E770 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E778 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E780 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E788 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E790 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E798 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E7A0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E7A8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E7B0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E7B8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E7C0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E7C8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E7D0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E7D8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E7E0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E7E8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E7F0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E7F8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E800 */ 0x003f6, 0x0213f, 0x0, 0x1d7d9, 0x1d7d8, 0x02a03, 0x0, 0x0, +/* E808 */ 0x0, 0x02a09, 0x0290d, 0x029eb, 0x0, 0x029c6, 0x0, 0x0, +/* E810 */ 0x029c7, 0x0, 0x02a32, 0x02ae3, 0x0, 0x0, 0x0, 0x0, +/* E818 */ 0x0, 0x029df, 0x02adc, 0x02add, 0x02141, 0x0, 0x0, 0x0, +/* E820 */ 0x0, 0x02a0e, 0x02a19, 0x02a1a, 0x02af4, 0x02a18, 0x0, 0x0, +/* E828 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x027fb, 0x027fd, 0x0, +/* E830 */ 0x027fe, 0x0, 0x0, 0x0, 0x02906, 0x02907, 0x0, 0x0, +/* E838 */ 0x0, 0x029b8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E840 */ 0x02aa3, 0x0, 0x0, 0x02322, 0x02216, 0x0, 0x0214b, 0x0221d, +/* E848 */ 0x0, 0x00303, 0x0, 0x0, 0x0, 0x0, 0x0e84e, 0x0, +/* E850 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E858 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E860 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E868 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E870 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E878 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E880 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E888 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E890 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E898 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E8A0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E8A8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E8B0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E8B8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E8C0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E8C8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E8D0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E8D8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E8E0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E8E8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E8F0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E8F8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E900 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E908 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E910 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E918 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E920 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E928 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E930 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E938 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E940 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E948 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E950 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E958 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E960 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E968 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E970 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E978 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E980 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E988 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E990 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E998 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E9A0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E9A8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E9B0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E9B8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E9C0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E9C8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E9D0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E9D8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E9E0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E9E8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E9F0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E9F8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EA00 */ 0x029a2, 0x0299e, 0x029a3, 0x0ee73, 0x0ee74, 0x0, 0x0ee75, 0x02943, +/* EA08 */ 0x02051, 0x00319, 0x0ee11, 0x0, 0x0ee76, 0x0, 0x0, 0x0, +/* EA10 */ 0x0, 0x029f3, 0x029f1, 0x0, 0x0, 0x029bd, 0x029ec, 0x029ed, +/* EA18 */ 0x0, 0x029ba, 0x02050, 0x0ee77, 0x029ef, 0x0, 0x0, 0x0, +/* EA20 */ 0x0, 0x0, 0x025a0, 0x0, 0x0, 0x0223c, 0x0ee21, 0x0ee22, +/* EA28 */ 0x029ea, 0x02908, 0x0ee72, 0x0, 0x0ee78, 0x0ee79, 0x0ee7a, 0x0ee7b, +/* EA30 */ 0x0ee7c, 0x0ee7d, 0x0ee23, 0x0, 0x0, 0x0, 0x0, 0x0ee7e, +/* EA38 */ 0x0, 0x0, 0x0, 0x0, 0x02142, 0x029e0, 0x0293e, 0x029d1, +/* EA40 */ 0x029d4, 0x0, 0x0, 0x02983, 0x02922, 0x02921, 0x029f2, 0x029f0, +/* EA48 */ 0x029ee, 0x0, 0x029d6, 0x02034, 0x021f6, 0x0293b, 0x029d2, 0x029d5, +/* EA50 */ 0x02984, 0x02143, 0x1d5ab, 0x0ee42, 0x0ee43, 0x025fb, 0x025fc, 0x02a0b, +/* EA58 */ 0x020e8, 0x0297a, 0x02a28, 0x029cc, 0x02909, 0x0ee7f, 0x02144, 0x029c8, +/* EA60 */ 0x027d0, 0x029d3, 0x029d7, 0x00318, 0x02977, 0x02278, 0x02279, 0x0, +/* EA68 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EA70 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EA78 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EA80 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EA88 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EA90 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EA98 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EAA0 */ 0x02987, 0x02988, 0x02989, 0x0298a, 0x02982, 0x02a3e, 0x02a1f, 0x02a20, +/* EAA8 */ 0x02040, 0x02a21, 0x02a64, 0x02a65, 0x022ff, 0x02a41, 0x020e6, 0x0, +/* EAB0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EAB8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EAC0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EAC8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EAD0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EAD8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EAE0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EAE8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EAF0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EAF8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EB00 */ 0x0ee3d, 0x0, 0x0ee3e, 0x029e7, 0x0ee81, 0x029e8, 0x029e9, 0x0, +/* EB08 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EB10 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EB18 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EB20 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EB28 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EB30 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EB38 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EB40 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EB48 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EB50 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EB58 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EB60 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EB68 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EB70 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EB78 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EB80 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EB88 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EB90 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EB98 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EBA0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EBA8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EBB0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EBB8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EBC0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EBC8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EBD0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EBD8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EBE0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EBE8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EBF0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EBF8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EC00 */ 0x02a3d, 0x0e5ac, 0x0e5a5, 0x00302, 0x0030c, 0x00330, 0x020e7, 0x029e2, +/* EC08 */ 0x0290a, 0x0290b, 0x02140, 0x02a1b, 0x02a1c, 0x02a1d, 0x02a1e, 0x0, +/* EC10 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EC18 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EC20 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EC28 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EC30 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EC38 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EC40 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EC48 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EC50 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EC58 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EC60 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EC68 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EC70 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EC78 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EC80 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EC88 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EC90 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EC98 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* ECA0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* ECA8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* ECB0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* ECB8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* ECC0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* ECC8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* ECD0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* ECD8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* ECE0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* ECE8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* ECF0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* ECF8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* ED00 */ 0x0292b, 0x0292c, 0x0292d, 0x0292e, 0x0292f, 0x02930, 0x02931, 0x02932, +/* ED08 */ 0x0294c, 0x0294d, 0x021f7, 0x021f8, 0x021fa, 0x0, 0x021fb, 0x021fc, +/* ED10 */ 0x02900, 0x02901, 0x02914, 0x02915, 0x02917, 0x02918, 0x0, 0x0, +/* ED18 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* ED20 */ 0x0293f, 0x0293a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* ED28 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* ED30 */ 0x0e370, 0x0e36c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* ED38 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* ED40 */ 0x0, 0x0, 0x02a2c, 0x02a2b, 0x02a62, 0x02a60, 0x0, 0x0, +/* ED48 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* ED50 */ 0x02a6b, 0x0, 0x0, 0x02a6c, 0x0, 0x0, 0x0, 0x0, +/* ED58 */ 0x0, 0x0, 0x02a67, 0x0, 0x0, 0x0, 0x02a76, 0x0, +/* ED60 */ 0x02270, 0x02271, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* ED68 */ 0x02a99, 0x02a9a, 0x02a9b, 0x02a9c, 0x0, 0x0, 0x0, 0x0, +/* ED70 */ 0x02272, 0x02273, 0x02a9d, 0x02a9e, 0x02ab1, 0x02ab2, 0x0, 0x0, +/* ED78 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* ED80 */ 0x02ac9, 0x02aca, 0x02288, 0x02289, 0x02a59, 0x02a4e, 0x02a4f, 0x02acd, +/* ED88 */ 0x02ace, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* ED90 */ 0x02ae0, 0x02ade, 0x02adf, 0x02ae5, 0x02ae1, 0x0299b, 0x029a0, 0x029a1, +/* ED98 */ 0x0, 0x02af5, 0x02a68, 0x02a69, 0x02af7, 0x02af8, 0x02a0a, 0x0213e, +/* EDA0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EDA8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EDB0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EDB8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EDC0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EDC8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EDD0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EDD8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EDE0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EDE8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EDF0 */ 0x0ee82, 0x0ee83, 0x0ee84, 0x0220a, 0x0220d, 0x0ee85, 0x0, 0x0, +/* EDF8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EE00 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EE08 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EE10 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EE18 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EE20 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EE28 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EE30 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EE38 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EE40 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EE48 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EE50 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EE58 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EE60 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EE68 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EE70 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EE78 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EE80 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EE88 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EE90 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EE98 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EEA0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EEA8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EEB0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EEB8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EEC0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EEC8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EED0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EED8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EEE0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EEE8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EEF0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EEF8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EF00 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EF08 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EF10 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EF18 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EF20 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EF28 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EF30 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EF38 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EF40 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EF48 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EF50 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EF58 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EF60 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EF68 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EF70 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EF78 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EF80 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EF88 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EF90 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EF98 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EFA0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EFA8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EFB0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EFB8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EFC0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EFC8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EFD0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EFD8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EFE0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EFE8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EFF0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EFF8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F000 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F008 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F010 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F018 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F020 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F028 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F030 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F038 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F040 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F048 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F050 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F058 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F060 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F068 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F070 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F078 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F080 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F088 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F090 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F098 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F0A0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F0A8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F0B0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F0B8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F0C0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F0C8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F0D0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F0D8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F0E0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F0E8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F0F0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F0F8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F100 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F108 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F110 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F118 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F120 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F128 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F130 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F138 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F140 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F148 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F150 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F158 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F160 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F168 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F170 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F178 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F180 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F188 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F190 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F198 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F1A0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F1A8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F1B0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F1B8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F1C0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F1C8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F1D0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F1D8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F1E0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F1E8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F1F0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F1F8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F200 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F208 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F210 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F218 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F220 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F228 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F230 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F238 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F240 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F248 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F250 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F258 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F260 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F268 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F270 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F278 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F280 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F288 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F290 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F298 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F2A0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F2A8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F2B0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F2B8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F2C0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F2C8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F2D0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F2D8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F2E0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F2E8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F2F0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F2F8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F300 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F308 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F310 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F318 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F320 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F328 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F330 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F338 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F340 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F348 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F350 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F358 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F360 */ 0x0, 0x0, 0x0, 0x0, 0x0205f, 0x0, 0x0, 0x0, +/* F368 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F370 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F378 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F380 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F388 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F390 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F398 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F3A0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F3A8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F3B0 */ 0x0, 0x0, 0x0ee90, 0x0, 0x0, 0x0, 0x02062, 0x02061, +/* F3B8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F3C0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F3C8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F3D0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F3D8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F3E0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F3E8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F3F0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F3F8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F400 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F408 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F410 */ 0x029cf, 0x029d0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F418 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F420 */ 0x0, 0x0, 0x0, 0x0f423, 0x0, 0x0, 0x0, 0x0, +/* F428 */ 0x0f428, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F430 */ 0x0, 0x02a75, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F438 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F440 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F448 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F450 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F458 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F460 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F468 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F470 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F478 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F480 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F488 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F490 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F498 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F4A0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F4A8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F4B0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F4B8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F4C0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F4C8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F4D0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F4D8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F4E0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F4E8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F4F0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F4F8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F500 */ 0x0, 0x0, 0x0, 0x02912, 0x02913, 0x0294e, 0x0, 0x02952, +/* F508 */ 0x02953, 0x0295a, 0x0295b, 0x02950, 0x02956, 0x02957, 0x0295e, 0x0295f, +/* F510 */ 0x0294f, 0x02954, 0x02955, 0x0295c, 0x0295d, 0x02951, 0x02958, 0x02959, +/* F518 */ 0x02960, 0x02961, 0x0, 0x0, 0x0, 0x0, 0x0, 0x029f4, +/* F520 */ 0x0ee05, 0x0, 0x0, 0x0, 0x02970, 0x0, 0x0, 0x0ee06, +/* F528 */ 0x0ee07, 0x025fe, 0x02191, 0x02193, 0x0, 0x0, 0x0, 0x0, +/* F530 */ 0x025fd, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F538 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F540 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F548 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F550 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F558 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F560 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F568 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F570 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F578 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F580 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F588 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F590 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F598 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F5A0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F5A8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F5B0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F5B8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F5C0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F5C8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F5D0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F5D8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F5E0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F5E8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F5F0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F5F8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F600 */ 0x0, 0x0ee91, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F608 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F610 */ 0x0, 0x0, 0x0, 0x0, 0x00346, 0x0033a, 0x0, 0x0, +/* F618 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F620 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F628 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F630 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F638 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F640 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F648 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F650 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F658 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F660 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F668 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F670 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F678 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F680 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F688 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F690 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F698 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F6A0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F6A8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F6B0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F6B8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F6C0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F6C8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F6D0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F6D8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F6E0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1d552, 0x1d553, +/* F6E8 */ 0x1d554, 0x1d555, 0x1d556, 0x1d557, 0x1d558, 0x1d559, 0x1d55a, 0x1d55b, +/* F6F0 */ 0x1d55c, 0x1d55d, 0x1d55e, 0x1d55f, 0x1d560, 0x1d561, 0x1d562, 0x1d563, +/* F6F8 */ 0x1d564, 0x1d565, 0x1d566, 0x1d567, 0x1d568, 0x1d569, 0x1d56a, 0x1d56b, +/* F700 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F708 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F710 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F718 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F720 */ 0x0, 0x0ee92, 0x0ee93, 0x0ee94, 0x0, 0x026a0, 0x0, 0x0, +/* F728 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F730 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F738 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F740 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F748 */ 0x0, 0x0ee00, 0x0213d, 0x02145, 0x02146, 0x02147, 0x02148, 0x02149, +/* F750 */ 0x02981, 0x0ee95, 0x0ee96, 0x0ee97, 0x0, 0x0, 0x0ee98, 0x0ee99, +/* F758 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F760 */ 0x0, 0x0, 0x0, 0x0ee9d, 0x0ee9a, 0x0, 0x0ee9e, 0x0ee9b, +/* F768 */ 0x0ee9c, 0x0ee9f, 0x0eea0, 0x0eeab, 0x0eeac, 0x0, 0x0, 0x0, +/* F770 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F778 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F780 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F788 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F790 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F798 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F7A0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F7A8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F7B0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F7B8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0eea1, 0x0eea2, +/* F7C0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F7C8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F7D0 */ 0x0eea3, 0x0eea4, 0x0eea5, 0x0eea6, 0x0eea7, 0x0eea8, 0x0eea9, 0x0eeaa, +/* F7D8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F7E0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F7E8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F7F0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F7F8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F800 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F808 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F810 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F818 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F820 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F828 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F830 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F838 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F840 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F848 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F850 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F858 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F860 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F868 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F870 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F878 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F880 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F888 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F890 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F898 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F8A0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F8A8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F8B0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F8B8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F8C0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F8C8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F8D0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F8D8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F8E0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F8E8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F8F0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F8F8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 +}; + +/* These data are taken from adobe's cid2code.txt for ac14 */ +const int cns14pua[] = { /* Big5 and friends */ +/* E000 */ 0x20547, 0x0, 0x205df, 0x23fc5, 0x0, 0x0, 0x0, 0x0, +/* E008 */ 0x0, 0x24942, 0x289e4, 0x0, 0x219db, 0x0, 0x23cc8, 0x0, +/* E010 */ 0x0, 0x0, 0x24933, 0x289aa, 0x202a0, 0x26bb3, 0x21305, 0x0, +/* E018 */ 0x224ed, 0x0, 0x26d29, 0x27a84, 0x23600, 0x24ab1, 0x22513, 0x0, +/* E020 */ 0x2037e, 0x0, 0x20380, 0x20347, 0x0, 0x2041f, 0x0, 0x0, +/* E028 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x249a4, 0x20487, 0x0, +/* E030 */ 0x233b4, 0x0, 0x20bff, 0x220fc, 0x202e5, 0x22530, 0x2058e, 0x23233, +/* E038 */ 0x21983, 0x0, 0x0, 0x205b3, 0x23c99, 0x0, 0x0, 0x0, +/* E040 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x24aa6, 0x0, 0x0, +/* E048 */ 0x0, 0x0, 0x0, 0x0, 0x2372d, 0x0, 0x0, 0x0, +/* E050 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E058 */ 0x0, 0x0, 0x26b13, 0x0, 0x28ade, 0x0, 0x0, 0x23f80, +/* E060 */ 0x20954, 0x23fec, 0x0, 0x0, 0x20be2, 0x0, 0x21726, 0x0, +/* E068 */ 0x0, 0x0, 0x0, 0x0, 0x216e8, 0x0, 0x0, 0x0, +/* E070 */ 0x0, 0x286ab, 0x0, 0x0, 0x21596, 0x21613, 0x0, 0x0, +/* E078 */ 0x28a9b, 0x0, 0x0, 0x0, 0x0, 0x25772, 0x0, 0x0, +/* E080 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x20b8f, +/* E088 */ 0x0, 0x23feb, 0x22da3, 0x0, 0x20c77, 0x0, 0x0, 0x0, +/* E090 */ 0x0, 0x0, 0x0, 0x26b53, 0x20d74, 0x0, 0x0, 0x0, +/* E098 */ 0x0, 0x2170d, 0x20edd, 0x0, 0x20d4d, 0x289bc, 0x22698, 0x0, +/* E0A0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x218d7, 0x2403a, +/* E0A8 */ 0x0, 0x24435, 0x0, 0x210b4, 0x0, 0x0, 0x2328a, 0x0, +/* E0B0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E0B8 */ 0x0, 0x0, 0x28b66, 0x0, 0x2124f, 0x0, 0x241a5, 0x0, +/* E0C0 */ 0x0, 0x0, 0x0, 0x26c7e, 0x0, 0x21416, 0x0, 0x21454, +/* E0C8 */ 0x24363, 0x0, 0x24bf5, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E0D0 */ 0x2123c, 0x0, 0x0, 0x0, 0x2a150, 0x24278, 0x0, 0x0, +/* E0D8 */ 0x0, 0x0, 0x0, 0x0, 0x2163e, 0x0, 0x0, 0x21692, +/* E0E0 */ 0x0, 0x0, 0x20d4e, 0x26c81, 0x26d2a, 0x217dc, 0x0, 0x217fb, +/* E0E8 */ 0x217b2, 0x26da6, 0x0, 0x21828, 0x216d5, 0x0, 0x26e45, 0x0, +/* E0F0 */ 0x0, 0x0, 0x249a9, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E0F8 */ 0x26fa1, 0x22554, 0x0, 0x21911, 0x0, 0x216b8, 0x0, 0x0, +/* E100 */ 0x0, 0x0, 0x0, 0x27a0e, 0x0, 0x0, 0x20204, 0x0, +/* E108 */ 0x0, 0x21a34, 0x259cc, 0x205a5, 0x0, 0x0, 0x0, 0x0, +/* E110 */ 0x21b44, 0x0, 0x0, 0x0, 0x21ca5, 0x26b28, 0x0, 0x0, +/* E118 */ 0x0, 0x0, 0x0, 0x0, 0x21df9, 0x21e37, 0x0, 0x0, +/* E120 */ 0x0, 0x21ea4, 0x0, 0x0, 0x0, 0x0, 0x24901, 0x22049, +/* E128 */ 0x22173, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E130 */ 0x244bc, 0x20cd3, 0x0, 0x0, 0x0, 0x0, 0x21771, 0x0, +/* E138 */ 0x0, 0x28482, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E140 */ 0x0, 0x201c1, 0x2f894, 0x0, 0x0, 0x2133a, 0x0, 0x26888, +/* E148 */ 0x223d0, 0x0, 0x22471, 0x0, 0x0, 0x26e6e, 0x0, 0x0, +/* E150 */ 0x28a36, 0x0, 0x0, 0x0, 0x25250, 0x21f6a, 0x270f8, 0x22668, +/* E158 */ 0x0, 0x2029e, 0x28a29, 0x0, 0x0, 0x21877, 0x0, 0x0, +/* E160 */ 0x0, 0x0, 0x227b4, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E168 */ 0x24982, 0x2498f, 0x27a53, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E170 */ 0x0, 0x2f8a6, 0x26ed2, 0x0, 0x0, 0x20656, 0x0, 0x0, +/* E178 */ 0x23fb7, 0x2285f, 0x0, 0x28b9d, 0x2995d, 0x0, 0x0, 0x22980, +/* E180 */ 0x228c1, 0x0, 0x0, 0x0, 0x0, 0x20118, 0x0, 0x21770, +/* E188 */ 0x0, 0x22e0d, 0x0, 0x249df, 0x0, 0x0, 0x0, 0x2138e, +/* E190 */ 0x217fc, 0x0, 0x0, 0x22e36, 0x0, 0x2408c, 0x2571d, 0x0, +/* E198 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x24a28, +/* E1A0 */ 0x24a23, 0x0, 0x0, 0x0, 0x2307e, 0x0, 0x24940, 0x0, +/* E1A8 */ 0x0, 0x0, 0x21829, 0x0, 0x0, 0x0, 0x23400, 0x0, +/* E1B0 */ 0x231f7, 0x231f8, 0x0, 0x231a4, 0x231a5, 0x0, 0x20e75, 0x0, +/* E1B8 */ 0x251e6, 0x0, 0x0, 0x21e3d, 0x23231, 0x285f4, 0x231c8, 0x25313, +/* E1C0 */ 0x0, 0x228f7, 0x0, 0x0, 0x2439c, 0x24a21, 0x0, 0x0, +/* E1C8 */ 0x237c2, 0x0, 0x0, 0x0, 0x241cd, 0x290ed, 0x0, 0x0, +/* E1D0 */ 0x0, 0x0, 0x0, 0x0, 0x233e6, 0x26da0, 0x0, 0x2346f, +/* E1D8 */ 0x0, 0x0, 0x28adf, 0x0, 0x0, 0x235cd, 0x0, 0x0, +/* E1E0 */ 0x0, 0x0, 0x2363c, 0x0, 0x0, 0x0, 0x28a4a, 0x0, +/* E1E8 */ 0x0, 0x0, 0x0, 0x203c9, 0x0, 0x0, 0x0, 0x23659, +/* E1F0 */ 0x2212a, 0x0, 0x23703, 0x0, 0x0, 0x0, 0x0, 0x2919c, +/* E1F8 */ 0x0, 0x0, 0x20923, 0x0, 0x0, 0x0, 0x227cd, 0x0, +/* E200 */ 0x23adb, 0x203b5, 0x21958, 0x0, 0x0, 0x23b5a, 0x0, 0x23efc, +/* E208 */ 0x0, 0x0, 0x2248b, 0x248f1, 0x26b51, 0x0, 0x0, 0x0, +/* E210 */ 0x23dbc, 0x0, 0x23dbd, 0x241a4, 0x2490c, 0x24900, 0x23cc9, 0x0, +/* E218 */ 0x0, 0x20d32, 0x0, 0x231f9, 0x22491, 0x0, 0x0, 0x26d25, +/* E220 */ 0x26da1, 0x26deb, 0x0, 0x0, 0x0, 0x0, 0x2497f, 0x24085, +/* E228 */ 0x26e72, 0x0, 0x26f74, 0x0, 0x0, 0x0, 0x0, 0x28b21, +/* E230 */ 0x0, 0x23e2f, 0x0, 0x23f82, 0x0, 0x0, 0x0, 0x2304b, +/* E238 */ 0x0, 0x0, 0x0, 0x23e30, 0x0, 0x21497, 0x2403d, 0x0, +/* E240 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x29170, 0x0, 0x0, +/* E248 */ 0x24144, 0x0, 0x24091, 0x24155, 0x24039, 0x23ff0, 0x23fb4, 0x2413f, +/* E250 */ 0x0, 0x24156, 0x24157, 0x24140, 0x261dd, 0x0, 0x0, 0x0, +/* E258 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E260 */ 0x0, 0x24277, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E268 */ 0x24365, 0x0, 0x0, 0x242c1, 0x0, 0x2445a, 0x24a27, 0x24a22, +/* E270 */ 0x0, 0x28be8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E278 */ 0x0, 0x0, 0x25605, 0x0, 0x0, 0x24974, 0x0, 0x0, +/* E280 */ 0x0, 0x0, 0x23044, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E288 */ 0x24823, 0x2882b, 0x0, 0x28804, 0x0, 0x0, 0x0, 0x0, +/* E290 */ 0x20c3a, 0x26a2e, 0x0, 0x0, 0x241e2, 0x216e7, 0x24a24, 0x0, +/* E298 */ 0x0, 0x249b7, 0x2498d, 0x249fb, 0x0, 0x0, 0x0, 0x24a26, +/* E2A0 */ 0x0, 0x205c3, 0x0, 0x0, 0x228ad, 0x0, 0x28eb2, 0x0, +/* E2A8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E2B0 */ 0x0, 0x0, 0x24a8c, 0x2415f, 0x24a79, 0x28b8f, 0x0, 0x28c03, +/* E2B8 */ 0x2189e, 0x0, 0x21988, 0x0, 0x0, 0x0, 0x28ed9, 0x21a4b, +/* E2C0 */ 0x0, 0x28eac, 0x0, 0x0, 0x0, 0x0, 0x0, 0x24f82, +/* E2C8 */ 0x0, 0x24d13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E2D0 */ 0x0, 0x0, 0x0, 0x0, 0x263f5, 0x0, 0x0, 0x0, +/* E2D8 */ 0x26911, 0x2690e, 0x0, 0x0, 0x0, 0x0, 0x26f9f, 0x0, +/* E2E0 */ 0x2509d, 0x2517d, 0x21e1c, 0x0, 0x0, 0x0, 0x0, 0x25220, +/* E2E8 */ 0x0, 0x232ac, 0x0, 0x28964, 0x28968, 0x216c1, 0x0, 0x0, +/* E2F0 */ 0x21376, 0x24a12, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E2F8 */ 0x255e0, 0x0, 0x0, 0x0, 0x2760c, 0x0, 0x0, 0x28b2b, +/* E300 */ 0x26083, 0x2261c, 0x0, 0x0, 0x0, 0x0, 0x25857, 0x0, +/* E308 */ 0x27b39, 0x0, 0x0, 0x0, 0x27126, 0x0, 0x0, 0x2910d, +/* E310 */ 0x0, 0x23ed7, 0x0, 0x26ed3, 0x0, 0x257e0, 0x0, 0x0, +/* E318 */ 0x28be9, 0x0, 0x0, 0x258e1, 0x294d9, 0x0, 0x0, 0x259ac, +/* E320 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x2648d, 0x0, 0x0, +/* E328 */ 0x0, 0x0, 0x0, 0x0, 0x25c01, 0x0, 0x0, 0x0, +/* E330 */ 0x2530e, 0x25cfe, 0x0, 0x0, 0x0, 0x25bb4, 0x26c7f, 0x0, +/* E338 */ 0x0, 0x0, 0x0, 0x25d20, 0x0, 0x25c65, 0x0, 0x0, +/* E340 */ 0x0, 0x0, 0x25cc1, 0x0, 0x0, 0x24882, 0x0, 0x0, +/* E348 */ 0x24578, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E350 */ 0x0, 0x0, 0x26e44, 0x0, 0x26ed6, 0x0, 0x0, 0x0, +/* E358 */ 0x0, 0x0, 0x0, 0x24057, 0x26029, 0x0, 0x0, 0x0, +/* E360 */ 0x217f9, 0x0, 0x2836d, 0x0, 0x26121, 0x2615a, 0x0, 0x0, +/* E368 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x262d0, +/* E370 */ 0x0, 0x0, 0x26351, 0x0, 0x21661, 0x20068, 0x0, 0x23766, +/* E378 */ 0x0, 0x2833a, 0x0, 0x26489, 0x0, 0x0, 0x0, 0x0, +/* E380 */ 0x0, 0x2a087, 0x26cc3, 0x0, 0x0, 0x0, 0x22714, 0x0, +/* E388 */ 0x26626, 0x23de3, 0x266e8, 0x0, 0x0, 0x28a48, 0x0, 0x0, +/* E390 */ 0x0, 0x226f6, 0x0, 0x26498, 0x24fb8, 0x0, 0x2148a, 0x0, +/* E398 */ 0x2185e, 0x0, 0x24a65, 0x24a95, 0x0, 0x0, 0x20b0d, 0x26a52, +/* E3A0 */ 0x23d7e, 0x0, 0x214fd, 0x0, 0x0, 0x26b0a, 0x249a7, 0x23530, +/* E3A8 */ 0x21773, 0x23df8, 0x0, 0x0, 0x2f994, 0x0, 0x0, 0x0, +/* E3B0 */ 0x0, 0x20e16, 0x217b4, 0x0, 0x2317d, 0x2355a, 0x0, 0x0, +/* E3B8 */ 0x0, 0x23e8b, 0x26da3, 0x26b05, 0x26b97, 0x235ce, 0x0, 0x0, +/* E3C0 */ 0x0, 0x0, 0x0, 0x26da5, 0x0, 0x0, 0x0, 0x0, +/* E3C8 */ 0x26ed4, 0x0, 0x0, 0x0, 0x26e42, 0x22eef, 0x0, 0x25be4, +/* E3D0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x23cb5, 0x0, 0x0, +/* E3D8 */ 0x26b96, 0x26e77, 0x26e43, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E3E0 */ 0x0, 0x25c91, 0x0, 0x25cc0, 0x0, 0x0, 0x0, 0x26e99, +/* E3E8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x28625, 0x2863b, 0x0, +/* E3F0 */ 0x27088, 0x0, 0x21582, 0x270cd, 0x2f9b2, 0x0, 0x0, 0x0, +/* E3F8 */ 0x218a2, 0x0, 0x2739a, 0x0, 0x0, 0x2a0f8, 0x0, 0x22c27, +/* E400 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E408 */ 0x0, 0x275e0, 0x23db9, 0x275e4, 0x0, 0x0, 0x0, 0x0, +/* E410 */ 0x0, 0x0, 0x0, 0x0, 0x2770f, 0x0, 0x0, 0x0, +/* E418 */ 0x0, 0x0, 0x0, 0x28a25, 0x0, 0x27924, 0x27abd, 0x0, +/* E420 */ 0x0, 0x0, 0x0, 0x27a59, 0x0, 0x27b3a, 0x23f8f, 0x0, +/* E428 */ 0x27b38, 0x0, 0x0, 0x0, 0x25430, 0x25565, 0x0, 0x0, +/* E430 */ 0x0, 0x0, 0x24a7a, 0x0, 0x0, 0x0, 0x216df, 0x0, +/* E438 */ 0x0, 0x0, 0x27d54, 0x27d8f, 0x2f9d4, 0x0, 0x27d53, 0x0, +/* E440 */ 0x27d98, 0x27dbd, 0x0, 0x0, 0x21910, 0x0, 0x0, 0x0, +/* E448 */ 0x24cc9, 0x0, 0x0, 0x0, 0x28002, 0x21014, 0x2498a, 0x0, +/* E450 */ 0x281bc, 0x2710c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E458 */ 0x0, 0x28365, 0x28412, 0x0, 0x0, 0x2a29f, 0x20a50, 0x0, +/* E460 */ 0x0, 0x289de, 0x2853d, 0x23dbb, 0x0, 0x23262, 0x0, 0x2a014, +/* E468 */ 0x286bc, 0x28501, 0x22325, 0x0, 0x26ed7, 0x0, 0x2853c, 0x27abe, +/* E470 */ 0x0, 0x2856c, 0x2860b, 0x0, 0x28713, 0x0, 0x286e6, 0x0, +/* E478 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x28933, 0x21e89, +/* E480 */ 0x0, 0x0, 0x0, 0x0, 0x255b9, 0x0, 0x28ac6, 0x23c9b, +/* E488 */ 0x28b0c, 0x255db, 0x20d31, 0x0, 0x0, 0x28ae1, 0x28beb, 0x0, +/* E490 */ 0x0, 0x28ae2, 0x28ae5, 0x0, 0x0, 0x28bec, 0x28c39, 0x28bff, +/* E498 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E4A0 */ 0x0, 0x2267a, 0x286d8, 0x2127c, 0x23e2e, 0x0, 0x0, 0x0, +/* E4A8 */ 0x0, 0x0, 0x0, 0x26ed5, 0x0, 0x0, 0x0, 0x28ae0, +/* E4B0 */ 0x0, 0x0, 0x0, 0x26cb8, 0x20274, 0x26410, 0x290af, 0x290e5, +/* E4B8 */ 0x24ad1, 0x21915, 0x2330a, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E4C0 */ 0x0, 0x24ae9, 0x0, 0x0, 0x0, 0x0, 0x291d5, 0x0, +/* E4C8 */ 0x0, 0x291eb, 0x0, 0x0, 0x0, 0x230b7, 0x230bc, 0x0, +/* E4D0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2546c, 0x0, +/* E4D8 */ 0x0, 0x29433, 0x0, 0x0, 0x2941d, 0x2797a, 0x0, 0x0, +/* E4E0 */ 0x0, 0x0, 0x0, 0x0, 0x27175, 0x0, 0x20630, 0x2415c, +/* E4E8 */ 0x25706, 0x0, 0x0, 0x0, 0x0, 0x0, 0x26d27, 0x216d3, +/* E4F0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x24a29, 0x0, +/* E4F8 */ 0x29857, 0x29905, 0x0, 0x0, 0x0, 0x0, 0x0, 0x25725, +/* E500 */ 0x0, 0x290b1, 0x29bd5, 0x0, 0x0, 0x29b05, 0x0, 0x0, +/* E508 */ 0x0, 0x0, 0x28600, 0x0, 0x0, 0x269a8, 0x0, 0x2307d, +/* E510 */ 0x0, 0x0, 0x29d3e, 0x0, 0x21863, 0x0, 0x2424b, 0x0, +/* E518 */ 0x0, 0x0, 0x29e68, 0x0, 0x29fb7, 0x2a192, 0x2a1ab, 0x2a0e1, +/* E520 */ 0x2a123, 0x2a1df, 0x0, 0x0, 0x2a134, 0x0, 0x0, 0x0, +/* E528 */ 0x2215b, 0x2a193, 0x2a220, 0x2193b, 0x2a233, 0x0, 0x2a0b9, 0x2a2b4, +/* E530 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x24364, +/* E538 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x28c2b, 0x0, +/* E540 */ 0x0, 0x0, 0x0, 0x26da2, 0x0, 0x0, 0x0, 0x0, +/* E548 */ 0x0, 0x0, 0x0, 0x2908b, 0x0, 0x0, 0x0, 0x0, +/* E550 */ 0x0, 0x0, 0x0, 0x0, 0x24975, 0x249bb, 0x0, 0x249f8, +/* E558 */ 0x24348, 0x24a51, 0x0, 0x28bda, 0x218fa, 0x0, 0x2897e, 0x28e36, +/* E560 */ 0x0, 0x0, 0x28a44, 0x0, 0x0, 0x0, 0x2896c, 0x244b9, +/* E568 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x24473, 0x243f8, 0x0, +/* E570 */ 0x217ef, 0x0, 0x218be, 0x23599, 0x0, 0x21885, 0x2542f, 0x217f8, +/* E578 */ 0x0, 0x216fb, 0x21839, 0x0, 0x21774, 0x218d1, 0x25f4b, 0x0, +/* E580 */ 0x216c0, 0x0, 0x24a25, 0x213fe, 0x212a8, 0x213c6, 0x214b6, 0x0, +/* E588 */ 0x236a6, 0x0, 0x0, 0x24994, 0x27165, 0x23e31, 0x2555c, 0x23efb, +/* E590 */ 0x27052, 0x0, 0x236ee, 0x2999d, 0x26f26, 0x0, 0x0, 0x0, +/* E598 */ 0x0, 0x0, 0x21922, 0x0, 0x0, 0x2373f, 0x240e1, 0x2408b, +/* E5A0 */ 0x2410f, 0x26c21, 0x0, 0x0, 0x266b1, 0x0, 0x20fdf, 0x20ba8, +/* E5A8 */ 0x20e0d, 0x0, 0x28b13, 0x0, 0x0, 0x0, 0x0, 0x24436, +/* E5B0 */ 0x0, 0x20465, 0x2037f, 0x0, 0x0, 0x25651, 0x0, 0x201ab, +/* E5B8 */ 0x203cb, 0x0, 0x2030a, 0x20414, 0x0, 0x0, 0x202c0, 0x28eb3, +/* E5C0 */ 0x20275, 0x0, 0x2020c, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E5C8 */ 0x24a0e, 0x23e8a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E5D0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x23595, +/* E5D8 */ 0x23e39, 0x23ebf, 0x0, 0x21884, 0x23e89, 0x0, 0x0, 0x205e0, +/* E5E0 */ 0x0, 0x204a3, 0x20492, 0x20491, 0x0, 0x28a9c, 0x2070e, 0x0, +/* E5E8 */ 0x0, 0x20873, 0x0, 0x0, 0x0, 0x0, 0x2438c, 0x20c20, +/* E5F0 */ 0x249ac, 0x210e4, 0x0, 0x20e1d, 0x0, 0x0, 0x0, 0x0, +/* E5F8 */ 0x0, 0x0, 0x0, 0x24abc, 0x2408d, 0x0, 0x0, 0x0, +/* E600 */ 0x240c9, 0x0, 0x20345, 0x0, 0x20bc6, 0x0, 0x0, 0x0, +/* E608 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x28a46, +/* E610 */ 0x216fa, 0x2176f, 0x21710, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E618 */ 0x0, 0x25946, 0x219f3, 0x21861, 0x24295, 0x0, 0x0, 0x0, +/* E620 */ 0x0, 0x25e83, 0x0, 0x28bd7, 0x20413, 0x0, 0x0, 0x21303, +/* E628 */ 0x0, 0x0, 0x0, 0x289fb, 0x0, 0x0, 0x0, 0x0, +/* E630 */ 0x0, 0x0, 0x21996, 0x2197c, 0x23aee, 0x0, 0x0, 0x21903, +/* E638 */ 0x21904, 0x0, 0x218a0, 0x0, 0x216fe, 0x0, 0x0, 0x28a47, +/* E640 */ 0x21dba, 0x23472, 0x289a8, 0x0, 0x0, 0x21927, 0x217ab, 0x0, +/* E648 */ 0x2173b, 0x0, 0x0, 0x275fd, 0x0, 0x0, 0x22860, 0x2262b, +/* E650 */ 0x0, 0x0, 0x225af, 0x225be, 0x29088, 0x26f73, 0x0, 0x2003e, +/* E658 */ 0x20046, 0x2261b, 0x0, 0x0, 0x0, 0x22c9b, 0x22d07, 0x246d4, +/* E660 */ 0x2914d, 0x0, 0x24665, 0x22b6a, 0x0, 0x22b22, 0x23450, 0x298ea, +/* E668 */ 0x22e78, 0x0, 0x2a45b, 0x0, 0x0, 0x0, 0x249e3, 0x22d67, +/* E670 */ 0x0, 0x22ca1, 0x0, 0x0, 0x0, 0x0, 0x2308e, 0x232ad, +/* E678 */ 0x24989, 0x232ab, 0x0, 0x232e0, 0x218d9, 0x2943f, 0x0, 0x23289, +/* E680 */ 0x231b3, 0x0, 0x0, 0x25584, 0x28b22, 0x2558f, 0x216fc, 0x2555b, +/* E688 */ 0x25425, 0x0, 0x23103, 0x2182a, 0x23234, 0x0, 0x2320f, 0x23182, +/* E690 */ 0x242c9, 0x0, 0x26d24, 0x0, 0x0, 0x0, 0x27870, 0x21deb, +/* E698 */ 0x0, 0x232d2, 0x232e1, 0x0, 0x25872, 0x0, 0x2383a, 0x237bc, +/* E6A0 */ 0x0, 0x237a2, 0x233fe, 0x0, 0x0, 0x0, 0x2462a, 0x0, +/* E6A8 */ 0x0, 0x0, 0x0, 0x0, 0x237d5, 0x24487, 0x0, 0x0, +/* E6B0 */ 0x0, 0x0, 0x21912, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E6B8 */ 0x0, 0x23fc0, 0x23c9a, 0x0, 0x0, 0x28bea, 0x28acb, 0x0, +/* E6C0 */ 0x2801e, 0x289dc, 0x0, 0x0, 0x0, 0x249ec, 0x0, 0x23f7f, +/* E6C8 */ 0x0, 0x0, 0x2403c, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E6D0 */ 0x0, 0x2431a, 0x24276, 0x0, 0x0, 0x0, 0x0, 0x2478f, +/* E6D8 */ 0x24725, 0x0, 0x24aa4, 0x205eb, 0x0, 0x23ef8, 0x2365f, 0x24a4a, +/* E6E0 */ 0x24917, 0x25fe1, 0x0, 0x0, 0x24adf, 0x28c23, 0x23f35, 0x0, +/* E6E8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x26dea, 0x0, +/* E6F0 */ 0x0, 0x0, 0x24cd9, 0x24d06, 0x0, 0x0, 0x0, 0x2a5c6, +/* E6F8 */ 0x0, 0x0, 0x28acc, 0x249ab, 0x2498e, 0x0, 0x0, 0x24a4e, +/* E700 */ 0x0, 0x249c5, 0x248f3, 0x0, 0x0, 0x0, 0x28ae3, 0x21864, +/* E708 */ 0x0, 0x25221, 0x251e7, 0x0, 0x23232, 0x0, 0x0, 0x0, +/* E710 */ 0x24697, 0x23781, 0x0, 0x248f0, 0x0, 0x0, 0x0, 0x24aba, +/* E718 */ 0x24ac7, 0x0, 0x24a96, 0x261ae, 0x0, 0x25581, 0x0, 0x0, +/* E720 */ 0x0, 0x0, 0x0, 0x0, 0x27741, 0x256e3, 0x0, 0x0, +/* E728 */ 0x0, 0x0, 0x0, 0x23efa, 0x0, 0x0, 0x0, 0x216e6, +/* E730 */ 0x0, 0x0, 0x0, 0x20d4c, 0x2498c, 0x20299, 0x23dba, 0x2176e, +/* E738 */ 0x0, 0x0, 0x0, 0x0, 0x201d4, 0x20c0d, 0x0, 0x0, +/* E740 */ 0x226f5, 0x25aaf, 0x25a9c, 0x0, 0x2025b, 0x0, 0x0, 0x25bc6, +/* E748 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x25bb3, 0x25ebc, 0x25ea6, +/* E750 */ 0x0, 0x249f9, 0x217b0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E758 */ 0x0, 0x0, 0x0, 0x26261, 0x2615c, 0x27b48, 0x0, 0x25e82, +/* E760 */ 0x0, 0x26b75, 0x20916, 0x0, 0x2004e, 0x235cf, 0x0, 0x26412, +/* E768 */ 0x263f8, 0x24962, 0x0, 0x0, 0x2082c, 0x25ae9, 0x25d43, 0x0, +/* E770 */ 0x25e0e, 0x0, 0x0, 0x0, 0x0, 0x2343f, 0x0, 0x249f7, +/* E778 */ 0x265ad, 0x0, 0x265a0, 0x0, 0x27127, 0x26cd1, 0x0, 0x0, +/* E780 */ 0x0, 0x0, 0x0, 0x0, 0x267b4, 0x0, 0x26a42, 0x0, +/* E788 */ 0x0, 0x26a51, 0x0, 0x26da7, 0x0, 0x2721b, 0x0, 0x0, +/* E790 */ 0x21840, 0x0, 0x218a1, 0x0, 0x218d8, 0x0, 0x2f9bc, 0x23d8f, +/* E798 */ 0x0, 0x27422, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E7A0 */ 0x0, 0x0, 0x25683, 0x0, 0x27785, 0x27784, 0x28bf5, 0x28bd9, +/* E7A8 */ 0x28b9c, 0x289f9, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E7B0 */ 0x0, 0x29448, 0x0, 0x0, 0x24284, 0x0, 0x0, 0x0, +/* E7B8 */ 0x21845, 0x0, 0x0, 0x0, 0x27ddc, 0x0, 0x0, 0x0, +/* E7C0 */ 0x0, 0x0, 0x0, 0x0, 0x24c09, 0x0, 0x0, 0x0, +/* E7C8 */ 0x0, 0x0, 0x22321, 0x0, 0x0, 0x0, 0x217da, 0x0, +/* E7D0 */ 0x0, 0x2492f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E7D8 */ 0x28a4b, 0x0, 0x28afc, 0x0, 0x28c1d, 0x28c3b, 0x0, 0x0, +/* E7E0 */ 0x0, 0x0, 0x0, 0x0, 0x28d34, 0x0, 0x0, 0x248ff, +/* E7E8 */ 0x24a42, 0x243ea, 0x0, 0x23225, 0x0, 0x28ee7, 0x28e66, 0x28e65, +/* E7F0 */ 0x0, 0x249ed, 0x24a78, 0x23fee, 0x0, 0x0, 0x0, 0x0, +/* E7F8 */ 0x290b0, 0x0, 0x0, 0x29093, 0x257df, 0x0, 0x0, 0x28989, +/* E800 */ 0x28c26, 0x28b2f, 0x263be, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E808 */ 0x2421b, 0x0, 0x0, 0x0, 0x20f26, 0x0, 0x28bc5, 0x24ab2, +/* E810 */ 0x0, 0x294da, 0x0, 0x295d7, 0x0, 0x0, 0x28b50, 0x24a67, +/* E818 */ 0x28b64, 0x0, 0x28a45, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E820 */ 0x0, 0x27b06, 0x0, 0x0, 0x0, 0x0, 0x0, 0x28b65, +/* E828 */ 0x258c8, 0x0, 0x0, 0x0, 0x0, 0x298f1, 0x0, 0x29948, +/* E830 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x21302, 0x0, 0x249b8, +/* E838 */ 0x214e8, 0x0, 0x2271f, 0x23db8, 0x0, 0x0, 0x0, 0x0, +/* E840 */ 0x0, 0x22781, 0x2296b, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E848 */ 0x0, 0x0, 0x0, 0x29e2d, 0x0, 0x2a1f5, 0x2a0fe, 0x0, +/* E850 */ 0x0, 0x24104, 0x0, 0x0, 0x0, 0x2a1b4, 0x2a0ed, 0x2a0f3, +/* E858 */ 0x2992f, 0x0, 0x0, 0x26e12, 0x26fdf, 0x26b82, 0x0, 0x0, +/* E860 */ 0x26da4, 0x26e84, 0x26df0, 0x0, 0x0, 0x26e00, 0x237d7, 0x26064, +/* E868 */ 0x0, 0x2359c, 0x23640, 0x0, 0x249de, 0x0, 0x0, 0x0, +/* E870 */ 0x0, 0x202bf, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E878 */ 0x2555d, 0x0, 0x0, 0x0, 0x0, 0x21757, 0x231c9, 0x24941, +/* E880 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x241b5, +/* E888 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x241ac, +/* E890 */ 0x0, 0x26c40, 0x24f97, 0x0, 0x217b5, 0x28a49, 0x0, 0x0, +/* E898 */ 0x0, 0x0, 0x24488, 0x0, 0x0, 0x289fc, 0x0, 0x0, +/* E8A0 */ 0x218d6, 0x20f1d, 0x0, 0x26cc0, 0x21413, 0x242fa, 0x22c26, 0x243c1, +/* E8A8 */ 0x0, 0x23db7, 0x26741, 0x0, 0x2615b, 0x260a4, 0x249b9, 0x2498b, +/* E8B0 */ 0x289fa, 0x0, 0x0, 0x0, 0x0, 0x28b63, 0x2189f, 0x0, +/* E8B8 */ 0x24ab3, 0x0, 0x0, 0x0, 0x0, 0x24a3e, 0x24a94, 0x217d9, +/* E8C0 */ 0x24a66, 0x203a7, 0x21424, 0x249e5, 0x0, 0x24916, 0x0, 0x24976, +/* E8C8 */ 0x0, 0x0, 0x0, 0x204fe, 0x0, 0x28ace, 0x28a16, 0x0, +/* E8D0 */ 0x28be7, 0x255d5, 0x0, 0x28a82, 0x0, 0x24943, 0x20cff, 0x0, +/* E8D8 */ 0x2061a, 0x20beb, 0x20cb8, 0x0, 0x0, 0x217fa, 0x0, 0x216c2, +/* E8E0 */ 0x24a50, 0x21852, 0x0, 0x0, 0x0, 0x28ac0, 0x249ad, 0x0, +/* E8E8 */ 0x218bf, 0x21883, 0x27484, 0x0, 0x0, 0x23d5b, 0x0, 0x0, +/* E8F0 */ 0x0, 0x28a81, 0x21862, 0x0, 0x0, 0x20ab4, 0x0, 0x0, +/* E8F8 */ 0x0, 0x0, 0x0, 0x2139c, 0x0, 0x0, 0x28218, 0x0, +/* E900 */ 0x290e4, 0x0, 0x0, 0x27e4f, 0x0, 0x0, 0x0, 0x23fed, +/* E908 */ 0x23e2d, 0x0, 0x0, 0x0, 0x203f5, 0x0, 0x0, 0x0, +/* E910 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x28c1c, +/* E918 */ 0x26bc0, 0x0, 0x0, 0x0, 0x21452, 0x0, 0x24362, 0x24a71, +/* E920 */ 0x22fe3, 0x212b0, 0x223bd, 0x0, 0x0, 0x21398, 0x234e5, 0x27bf4, +/* E928 */ 0x236df, 0x28a83, 0x237d6, 0x233fa, 0x24c9f, 0x0, 0x236ad, 0x26cb7, +/* E930 */ 0x0, 0x0, 0x0, 0x26d26, 0x26d51, 0x26c82, 0x26fde, 0x0, +/* E938 */ 0x27109, 0x0, 0x2173a, 0x0, 0x26c80, 0x27053, 0x217db, 0x0, +/* E940 */ 0x0, 0x217b3, 0x0, 0x0, 0x21905, 0x241fc, 0x0, 0x0, +/* E948 */ 0x2173c, 0x0, 0x0, 0x0, 0x0, 0x242a5, 0x0, 0x0, +/* E950 */ 0x24293, 0x0, 0x23ef9, 0x27736, 0x2445b, 0x242ca, 0x0, 0x24259, +/* E958 */ 0x289e1, 0x0, 0x26d28, 0x0, 0x244ce, 0x27e4d, 0x243bd, 0x0, +/* E960 */ 0x24256, 0x21304, 0x0, 0x0, 0x243e9, 0x0, 0x0, 0x2f825, +/* E968 */ 0x24a4f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x24a5d, 0x217df, +/* E970 */ 0x0, 0x0, 0x0, 0x23afa, 0x23300, 0x20214, 0x0, 0x208d5, +/* E978 */ 0x20619, 0x0, 0x21f9e, 0x2a2b6, 0x0, 0x2915b, 0x0, 0x0, +/* E980 */ 0x0, 0x28a59, 0x29420, 0x0, 0x0, 0x0, 0x0, 0x27af4, +/* E988 */ 0x0, 0x0, 0x256f6, 0x0, 0x0, 0x0, 0x27b18, 0x0, +/* E990 */ 0x0, 0x248f2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E998 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E9A0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E9A8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E9B0 */ 0x24f5c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E9B8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E9C0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E9C8 */ 0x0, 0x0, 0x0, 0x25535, 0x0, 0x0, 0x0, 0x0, +/* E9D0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E9D8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E9E0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E9E8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x20ccf, +/* E9F0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* E9F8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EA00 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EA08 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EA10 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EA18 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EA20 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EA28 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EA30 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EA38 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EA40 */ 0x0, 0x0, 0x0, 0x27967, 0x0, 0x0, 0x0, 0x0, +/* EA48 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EA50 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EA58 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EA60 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EA68 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EA70 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EA78 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EA80 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EA88 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EA90 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EA98 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EAA0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EAA8 */ 0x0, 0x21bc2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EAB0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EAB8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x20094, +/* EAC0 */ 0x202b7, 0x203a0, 0x0, 0x0, 0x0, 0x204d7, 0x0, 0x0, +/* EAC8 */ 0x0, 0x205d5, 0x20615, 0x20676, 0x216ba, 0x0, 0x0, 0x20ac2, +/* EAD0 */ 0x20acd, 0x20bbf, 0x0, 0x2f83b, 0x20bcb, 0x0, 0x20bfb, 0x20c3b, +/* EAD8 */ 0x20c53, 0x20c65, 0x20c7c, 0x0, 0x20c8d, 0x0, 0x20cb5, 0x20cdd, +/* EAE0 */ 0x20ced, 0x20d6f, 0x20db2, 0x20dc8, 0x0, 0x0, 0x0, 0x20e04, +/* EAE8 */ 0x20e0e, 0x20ed7, 0x20f90, 0x20f2d, 0x20e73, 0x0, 0x20fbc, 0x0, +/* EAF0 */ 0x2105c, 0x2104f, 0x21076, 0x0, 0x2107b, 0x21088, 0x21096, 0x0, +/* EAF8 */ 0x210bf, 0x210d3, 0x2112f, 0x2113b, 0x0, 0x0, 0x212e3, 0x21375, +/* EB00 */ 0x21336, 0x0, 0x21577, 0x21619, 0x217c3, 0x217c7, 0x0, 0x0, +/* EB08 */ 0x2182d, 0x2196a, 0x21a2d, 0x21a45, 0x21c2a, 0x21c70, 0x21cac, 0x21ec8, +/* EB10 */ 0x0, 0x21ed5, 0x21f15, 0x0, 0x0, 0x22045, 0x0, 0x0, +/* EB18 */ 0x2227c, 0x223d7, 0x223fa, 0x2272a, 0x22871, 0x2294f, 0x0, 0x22967, +/* EB20 */ 0x22993, 0x22ad5, 0x0, 0x22ae8, 0x0, 0x22b0e, 0x0, 0x22b3f, +/* EB28 */ 0x0, 0x0, 0x22c4c, 0x0, 0x22c88, 0x22cb7, 0x25be8, 0x22d08, +/* EB30 */ 0x22d12, 0x22db7, 0x22d95, 0x22e42, 0x22f74, 0x22fcc, 0x23033, 0x23066, +/* EB38 */ 0x2331f, 0x233de, 0x0, 0x0, 0x0, 0x27a79, 0x23567, 0x235f3, +/* EB40 */ 0x0, 0x249ba, 0x0, 0x2361a, 0x23716, 0x0, 0x20346, 0x0, +/* EB48 */ 0x0, 0x0, 0x23aa7, 0x27657, 0x25fe2, 0x23e11, 0x23eb9, 0x275fe, +/* EB50 */ 0x2209a, 0x0, 0x0, 0x24119, 0x28a9a, 0x242ee, 0x2430d, 0x2403b, +/* EB58 */ 0x24334, 0x24396, 0x24a45, 0x205ca, 0x0, 0x20611, 0x0, 0x21ea8, +/* EB60 */ 0x0, 0x23cff, 0x24404, 0x244d6, 0x0, 0x24674, 0x0, 0x2472f, +/* EB68 */ 0x285e8, 0x299c9, 0x0, 0x221c3, 0x0, 0x28b4e, 0x0, 0x24812, +/* EB70 */ 0x248fb, 0x24a15, 0x0, 0x24ac0, 0x20c78, 0x0, 0x24ea5, 0x24f86, +/* EB78 */ 0x20779, 0x0, 0x2502c, 0x0, 0x0, 0x0, 0x25299, 0x25419, +/* EB80 */ 0x23f4a, 0x24aa7, 0x0, 0x25446, 0x2546e, 0x26b52, 0x0, 0x0, +/* EB88 */ 0x2553f, 0x27632, 0x2555e, 0x0, 0x25562, 0x25566, 0x257c7, 0x2493f, +/* EB90 */ 0x2585d, 0x0, 0x0, 0x233cc, 0x0, 0x25903, 0x0, 0x28948, +/* EB98 */ 0x25aae, 0x25b89, 0x25c06, 0x21d90, 0x0, 0x0, 0x0, 0x26102, +/* EBA0 */ 0x27c12, 0x0, 0x261b2, 0x24f9a, 0x0, 0x26402, 0x2644a, 0x0, +/* EBA8 */ 0x26bf7, 0x0, 0x26484, 0x2191c, 0x0, 0x249f6, 0x26488, 0x23fef, +/* EBB0 */ 0x26512, 0x0, 0x265bf, 0x266b5, 0x2271b, 0x0, 0x257e1, 0x0, +/* EBB8 */ 0x0, 0x2f8cd, 0x0, 0x0, 0x24521, 0x266fc, 0x0, 0x24934, +/* EBC0 */ 0x0, 0x0, 0x26cbd, 0x0, 0x0, 0x26799, 0x2686e, 0x26411, +/* EBC8 */ 0x2685e, 0x0, 0x268c7, 0x0, 0x290c0, 0x20a11, 0x26926, 0x0, +/* EBD0 */ 0x26939, 0x0, 0x0, 0x269fa, 0x0, 0x26a2d, 0x0, 0x26469, +/* EBD8 */ 0x20021, 0x0, 0x26a34, 0x26b5b, 0x0, 0x23519, 0x0, 0x26b9d, +/* EBE0 */ 0x0, 0x26ca4, 0x0, 0x0, 0x26dae, 0x0, 0x0, 0x2258d, +/* EBE8 */ 0x2704b, 0x271cd, 0x0, 0x27280, 0x27285, 0x0, 0x2217a, 0x2728b, +/* EBF0 */ 0x0, 0x272e6, 0x249d0, 0x0, 0x0, 0x27450, 0x20ef8, 0x0, +/* EBF8 */ 0x0, 0x22926, 0x28473, 0x217b1, 0x0, 0x24a2a, 0x21820, 0x0, +/* EC00 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x29cad, 0x298a4, 0x0, +/* EC08 */ 0x277cc, 0x27858, 0x0, 0x0, 0x2160a, 0x0, 0x2372f, 0x280e8, +/* EC10 */ 0x213c5, 0x0, 0x0, 0x279dd, 0x291a8, 0x0, 0x0, 0x270af, +/* EC18 */ 0x289ab, 0x279fd, 0x27a0a, 0x27b0b, 0x27d66, 0x2417a, 0x0, 0x0, +/* EC20 */ 0x28009, 0x0, 0x2a2df, 0x0, 0x28318, 0x0, 0x26e07, 0x0, +/* EC28 */ 0x0, 0x0, 0x2816f, 0x28023, 0x269b5, 0x213ed, 0x2322f, 0x28048, +/* EC30 */ 0x0, 0x28c30, 0x28083, 0x0, 0x0, 0x28949, 0x0, 0x24988, +/* EC38 */ 0x0, 0x0, 0x0, 0x24aa5, 0x23f81, 0x0, 0x0, 0x28090, +/* EC40 */ 0x280f4, 0x2812e, 0x21fa1, 0x2814f, 0x28189, 0x281af, 0x2821a, 0x28306, +/* EC48 */ 0x2832f, 0x2838a, 0x0, 0x28468, 0x286aa, 0x0, 0x0, 0x28956, +/* EC50 */ 0x0, 0x0, 0x289b8, 0x0, 0x289e7, 0x0, 0x289e8, 0x28b46, +/* EC58 */ 0x28bd4, 0x0, 0x28c09, 0x0, 0x28fc5, 0x290ec, 0x0, 0x29110, +/* EC60 */ 0x2913c, 0x0, 0x2915e, 0x24aca, 0x0, 0x0, 0x0, 0x294e7, +/* EC68 */ 0x295e9, 0x295b0, 0x295b8, 0x29732, 0x298d1, 0x29949, 0x2996a, 0x299c3, +/* EC70 */ 0x29a28, 0x29b0e, 0x29d5a, 0x29d9b, 0x0, 0x29ef8, 0x29f23, 0x0, +/* EC78 */ 0x0, 0x2a293, 0x0, 0x2a2ff, 0x0, 0x0, 0x2a5cb, 0x0, +/* EC80 */ 0x20c9c, 0x0, 0x0, 0x0, 0x224b0, 0x0, 0x24a93, 0x0, +/* EC88 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x28b2c, 0x2789d, 0x0, +/* EC90 */ 0x0, 0x217f5, 0x28024, 0x28b6c, 0x28b99, 0x27a3e, 0x266af, 0x0, +/* EC98 */ 0x27655, 0x23cb7, 0x25635, 0x25956, 0x0, 0x25e81, 0x26258, 0x0, +/* ECA0 */ 0x20e6d, 0x0, 0x0, 0x23e88, 0x24c9e, 0x0, 0x0, 0x217f6, +/* ECA8 */ 0x2187b, 0x0, 0x0, 0x25c4a, 0x0, 0x25311, 0x0, 0x29d98, +/* ECB0 */ 0x0, 0x0, 0x0, 0x0, 0x25ed8, 0x0, 0x23d40, 0x0, +/* ECB8 */ 0x0, 0x20fea, 0x20d49, 0x236ba, 0x0, 0x0, 0x0, 0x0, +/* ECC0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* ECC8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x20e9d, +/* ECD0 */ 0x0, 0x0, 0x0, 0x0, 0x282e2, 0x0, 0x0, 0x0, +/* ECD8 */ 0x0, 0x0, 0x0, 0x20c41, 0x20c96, 0x0, 0x25148, 0x20e76, +/* ECE0 */ 0x22c62, 0x20ea2, 0x0, 0x0, 0x0, 0x21075, 0x0, 0x0, +/* ECE8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* ECF0 */ 0x22b43, 0x0, 0x22eb3, 0x0, 0x0, 0x20da7, 0x0, 0x0, +/* ECF8 */ 0x0, 0x0, 0x0, 0x0, 0x2688a, 0x0, 0x0, 0x0, +/* ED00 */ 0x0, 0x0, 0x0, 0x0, 0x210c1, 0x0, 0x0, 0x24706, +/* ED08 */ 0x0, 0x0, 0x26893, 0x0, 0x226f4, 0x27d2f, 0x241a3, 0x27d73, +/* ED10 */ 0x26ed0, 0x272b6, 0x0, 0x211d9, 0x0, 0x23cfc, 0x2a6a9, 0x20eac, +/* ED18 */ 0x20ef9, 0x0, 0x21ca2, 0x0, 0x24fc2, 0x27ff9, 0x20feb, 0x0, +/* ED20 */ 0x0, 0x0, 0x22da0, 0x0, 0x247e0, 0x29d7c, 0x20fec, 0x20e0a, +/* ED28 */ 0x0, 0x275a3, 0x20fed, 0x0, 0x26048, 0x21187, 0x0, 0x0, +/* ED30 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* ED38 */ 0x0, 0x0, 0x0, 0x24618, 0x0, 0x24b6e, 0x0, 0x0, +/* ED40 */ 0x0, 0x25a95, 0x20979, 0x0, 0x0, 0x22465, 0x0, 0x29eac, +/* ED48 */ 0x0, 0x0, 0x23cfe, 0x29f30, 0x0, 0x24fa9, 0x2959e, 0x29fde, +/* ED50 */ 0x0, 0x23db6, 0x272b2, 0x267b3, 0x23720, 0x0, 0x0, 0x23ef7, +/* ED58 */ 0x23e2c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2048e, +/* ED60 */ 0x0, 0x0, 0x20eb6, 0x0, 0x0, 0x0, 0x0, 0x0, +/* ED68 */ 0x0, 0x0, 0x0, 0x2a434, 0x0, 0x0, 0x0, 0x0, +/* ED70 */ 0x0, 0x230da, 0x243f2, 0x0, 0x0, 0x212a9, 0x0, 0x24963, +/* ED78 */ 0x29e06, 0x0, 0x270ae, 0x0, 0x0, 0x0, 0x0, 0x0, +/* ED80 */ 0x0, 0x2176c, 0x0, 0x0, 0x294d0, 0x26335, 0x27164, 0x0, +/* ED88 */ 0x20d28, 0x26d22, 0x24ae2, 0x20d71, 0x0, 0x0, 0x21f0f, 0x0, +/* ED90 */ 0x0, 0x21dd1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* ED98 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EDA0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2493e, 0x0, +/* EDA8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EDB0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EDB8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EDC0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2176d, 0x0, +/* EDC8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x28e97, +/* EDD0 */ 0x0, 0x26d23, 0x0, 0x0, 0x0, 0x0, 0x0, 0x203fc, +/* EDD8 */ 0x0, 0x0, 0x25c21, 0x23cfd, 0x0, 0x24919, 0x0, 0x0, +/* EDE0 */ 0x0, 0x20cd4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EDE8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x201f2, 0x0, 0x0, +/* EDF0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EDF8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EE00 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EE08 */ 0x2a64a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EE10 */ 0x0, 0x2837d, 0x0, 0x0, 0x0, 0x24a77, 0x0, 0x0, +/* EE18 */ 0x0, 0x0, 0x0, 0x28a5a, 0x0, 0x0, 0x0, 0x0, +/* EE20 */ 0x2a2b2, 0x0, 0x2f840, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EE28 */ 0x0, 0x0, 0x24abb, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EE30 */ 0x2183b, 0x26e05, 0x0, 0x0, 0x2251b, 0x0, 0x0, 0x0, +/* EE38 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EE40 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EE48 */ 0x26159, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EE50 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x233f5, 0x0, +/* EE58 */ 0x0, 0x0, 0x0, 0x28bc2, 0x0, 0x28e39, 0x0, 0x0, +/* EE60 */ 0x21d46, 0x0, 0x0, 0x0, 0x20f3b, 0x0, 0x0, 0x0, +/* EE68 */ 0x0, 0x0, 0x25f1a, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EE70 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x27486, 0x0, +/* EE78 */ 0x0, 0x0, 0x0, 0x0, 0x267cc, 0x0, 0x26ed1, 0x0, +/* EE80 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EE88 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EE90 */ 0x0, 0x24011, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EE98 */ 0x0, 0x0, 0x0, 0x0, 0x28b2d, 0x0, 0x0, 0x0, +/* EEA0 */ 0x0, 0x0, 0x23cc7, 0x25ed7, 0x27656, 0x25531, 0x21944, 0x212fe, +/* EEA8 */ 0x29903, 0x26ddc, 0x270ad, 0x0, 0x261ad, 0x28a0f, 0x23677, 0x200ee, +/* EEB0 */ 0x26846, 0x24f0e, 0x0, 0x0, 0x2634c, 0x0, 0x0, 0x2626b, +/* EEB8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EEC0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EEC8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EED0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EED8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EEE0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EEE8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EEF0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EEF8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EF00 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EF08 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EF10 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EF18 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EF20 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EF28 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EF30 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EF38 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EF40 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EF48 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EF50 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EF58 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EF60 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EF68 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EF70 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EF78 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EF80 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EF88 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EF90 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EF98 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EFA0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EFA8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EFB0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EFB8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EFC0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EFC8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EFD0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EFD8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EFE0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EFE8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EFF0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* EFF8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F000 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F008 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F010 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F018 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F020 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F028 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F030 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F038 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F040 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F048 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F050 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F058 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F060 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F068 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F070 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F078 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F080 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F088 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F090 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F098 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F0A0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F0A8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F0B0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F0B8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F0C0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F0C8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F0D0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F0D8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F0E0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F0E8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F0F0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F0F8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F100 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F108 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F110 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F118 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F120 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F128 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F130 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F138 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F140 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F148 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F150 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F158 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F160 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F168 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F170 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F178 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F180 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F188 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F190 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F198 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F1A0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F1A8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F1B0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F1B8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F1C0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F1C8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F1D0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F1D8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F1E0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F1E8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F1F0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F1F8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F200 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F208 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F210 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F218 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F220 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F228 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F230 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F238 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F240 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F248 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F250 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F258 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F260 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F268 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F270 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F278 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F280 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F288 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F290 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F298 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F2A0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F2A8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F2B0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F2B8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F2C0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F2C8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F2D0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F2D8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F2E0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F2E8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F2F0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F2F8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F300 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F308 */ 0x2010c, 0x0, 0x200d1, 0x200cd, 0x0, 0x0, 0x200cb, 0x21fe8, +/* F310 */ 0x0, 0x200ca, 0x0, 0x0, 0x0, 0x0, 0x2010e, 0x0, +/* F318 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F320 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F328 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F330 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F338 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F340 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F348 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F350 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F358 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F360 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F368 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F370 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F378 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F380 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F388 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F390 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F398 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F3A0 */ 0x2a3a9, 0x21145, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F3A8 */ 0x0, 0x0, 0x0, 0x0, 0x27735, 0x0, 0x0, 0x0, +/* F3B0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F3B8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F3C0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F3C8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F3D0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F3D8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F3E0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F3E8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F3F0 */ 0x209e7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F3F8 */ 0x0, 0x29df6, 0x2700e, 0x0, 0x2a133, 0x0, 0x0, 0x0, +/* F400 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F408 */ 0x2846c, 0x21dca, 0x205d0, 0x22ae6, 0x0, 0x0, 0x0, 0x0, +/* F410 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F418 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F420 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F428 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F430 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F438 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x27d84, 0x0, 0x0, +/* F440 */ 0x20c42, 0x20d15, 0x2512b, 0x0, 0x22cc6, 0x0, 0x20341, 0x0, +/* F448 */ 0x24db8, 0x294e5, 0x0, 0x280be, 0x0, 0x22c38, 0x0, 0x0, +/* F450 */ 0x2815d, 0x269f2, 0x24dea, 0x0, 0x20d7c, 0x20fb4, 0x20cd5, 0x210f4, +/* F458 */ 0x0, 0x0, 0x20e96, 0x20c0b, 0x20f64, 0x22ca9, 0x28256, 0x244d3, +/* F460 */ 0x0, 0x20d46, 0x29a4d, 0x280e9, 0x0, 0x24ea7, 0x22cc2, 0x0, +/* F468 */ 0x0, 0x295f4, 0x0, 0x0, 0x252c7, 0x297d4, 0x278c8, 0x22d44, +/* F470 */ 0x0, 0x0, 0x0, 0x0, 0x260a5, 0x0, 0x0, 0x22d4c, +/* F478 */ 0x22bca, 0x21077, 0x0, 0x2106f, 0x266da, 0x26716, 0x279a0, 0x0, +/* F480 */ 0x25052, 0x20c43, 0x0, 0x221a1, 0x28b4c, 0x20731, 0x0, 0x0, +/* F488 */ 0x201a9, 0x0, 0x0, 0x22d8d, 0x0, 0x245c8, 0x204fc, 0x26097, +/* F490 */ 0x20f4c, 0x20d96, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22a66, +/* F498 */ 0x2109d, 0x0, 0x0, 0x20d9c, 0x0, 0x0, 0x22775, 0x0, +/* F4A0 */ 0x0, 0x0, 0x0, 0x0, 0x2a601, 0x20e09, 0x22acf, 0x22cc9, +/* F4A8 */ 0x0, 0x210c8, 0x239c2, 0x0, 0x0, 0x2829b, 0x0, 0x25e49, +/* F4B0 */ 0x220c7, 0x0, 0x20f31, 0x22cb2, 0x29720, 0x0, 0x0, 0x24e3b, +/* F4B8 */ 0x0, 0x0, 0x27574, 0x22e8b, 0x22208, 0x2a65b, 0x28ccd, 0x20e7a, +/* F4C0 */ 0x20c34, 0x2681c, 0x0, 0x210cf, 0x22803, 0x22939, 0x0, 0x251e3, +/* F4C8 */ 0x20e8c, 0x20f8d, 0x20eaa, 0x0, 0x20f30, 0x20d47, 0x2114f, 0x20e4c, +/* F4D0 */ 0x0, 0x20eab, 0x20ba9, 0x20d48, 0x210c0, 0x2113d, 0x0, 0x22696, +/* F4D8 */ 0x0, 0x20fad, 0x233f4, 0x27639, 0x22bce, 0x20d7e, 0x20d7f, 0x22c51, +/* F4E0 */ 0x22c55, 0x0, 0x20e98, 0x210c7, 0x20f2e, 0x2a632, 0x26b50, 0x28cd2, +/* F4E8 */ 0x28d99, 0x28cca, 0x0, 0x0, 0x0, 0x0, 0x0, 0x29ec3, +/* F4F0 */ 0x0, 0x0, 0x2775e, 0x22dee, 0x0, 0x0, 0x0, 0x0, +/* F4F8 */ 0x26572, 0x0, 0x0, 0x0, 0x280bd, 0x0, 0x20efa, 0x20e0f, +/* F500 */ 0x20e77, 0x20efb, 0x0, 0x24deb, 0x0, 0x20cd6, 0x0, 0x227b5, +/* F508 */ 0x210c9, 0x20e10, 0x20e78, 0x21078, 0x21148, 0x28207, 0x21455, 0x20e79, +/* F510 */ 0x24e50, 0x22da4, 0x0, 0x2101d, 0x2101e, 0x210f5, 0x210f6, 0x0, +/* F518 */ 0x20e11, 0x27694, 0x282cd, 0x20fb5, 0x20e7b, 0x2517e, 0x0, 0x20fb6, +/* F520 */ 0x21180, 0x252d8, 0x2a2bd, 0x249da, 0x2183a, 0x24177, 0x2827c, 0x0, +/* F528 */ 0x0, 0x0, 0x2573d, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F530 */ 0x0, 0x0, 0x0, 0x25b74, 0x2313d, 0x0, 0x0, 0x0, +/* F538 */ 0x0, 0x0, 0x21bc1, 0x2f878, 0x0, 0x20086, 0x0, 0x0, +/* F540 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F548 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x248e9, 0x0, +/* F550 */ 0x0, 0x0, 0x0, 0x2626a, 0x0, 0x0, 0x2634b, 0x0, +/* F558 */ 0x0, 0x26612, 0x26951, 0x0, 0x0, 0x0, 0x278b2, 0x0, +/* F560 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x28e0f, 0x0, 0x0, +/* F568 */ 0x0, 0x0, 0x0, 0x29810, 0x0, 0x0, 0x0, 0x0, +/* F570 */ 0x0, 0x0, 0x20087, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F578 */ 0x0, 0x29c73, 0x0, 0x0, 0x0, 0x2414e, 0x0, 0x0, +/* F580 */ 0x0, 0x251cd, 0x0, 0x25d30, 0x0, 0x28a32, 0x0, 0x0, +/* F588 */ 0x0, 0x0, 0x0, 0x23281, 0x2a107, 0x0, 0x21980, 0x0, +/* F590 */ 0x0, 0x0, 0x0, 0x2870f, 0x0, 0x0, 0x2a2ba, 0x0, +/* F598 */ 0x0, 0x0, 0x0, 0x29947, 0x28aea, 0x0, 0x0, 0x0, +/* F5A0 */ 0x2207e, 0x0, 0x0, 0x289e3, 0x0, 0x0, 0x0, 0x0, +/* F5A8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F5B0 */ 0x21db6, 0x0, 0x0, 0x0, 0x22712, 0x0, 0x233f9, 0x0, +/* F5B8 */ 0x0, 0x23c63, 0x0, 0x0, 0x0, 0x24505, 0x0, 0x0, +/* F5C0 */ 0x24a13, 0x0, 0x0, 0x0, 0x25ca4, 0x25695, 0x0, 0x0, +/* F5C8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F5D0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x28db9, 0x2143f, +/* F5D8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F5E0 */ 0x0, 0x0, 0x0, 0x0, 0x2497b, 0x0, 0x2710d, 0x0, +/* F5E8 */ 0x26d74, 0x0, 0x26b15, 0x26fbe, 0x0, 0x0, 0x0, 0x0, +/* F5F0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F5F8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F600 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F608 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F610 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F618 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F620 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F628 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F630 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F638 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F640 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F648 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F650 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F658 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F660 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F668 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F670 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F678 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F680 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F688 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F690 */ 0x0, 0x0, 0x0, 0x0, 0x289c0, 0x0, 0x0, 0x0, +/* F698 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x23f41, 0x0, +/* F6A0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F6A8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x20325, 0x0, 0x0, +/* F6B0 */ 0x20ed8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F6B8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F6C0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F6C8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F6D0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F6D8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F6E0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F6E8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F6F0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F6F8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F700 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F708 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F710 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F718 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F720 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F728 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F730 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F738 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F740 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F748 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F750 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F758 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F760 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F768 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F770 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F778 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F780 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F788 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F790 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F798 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F7A0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F7A8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F7B0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F7B8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F7C0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F7C8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F7D0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F7D8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F7E0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x200cc, 0x0, +/* F7E8 */ 0x2008a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x27607, 0x0, +/* F7F0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F7F8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F800 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F808 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F810 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F818 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F820 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F828 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F830 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F838 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F840 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F848 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F850 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F858 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F860 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F868 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F870 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F878 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F880 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F888 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F890 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F898 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F8A0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F8A8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F8B0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F8B8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F8C0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F8C8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F8D0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F8D8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F8E0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F8E8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F8F0 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, +/* F8F8 */ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 +}; + diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/python.c b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/python.c new file mode 100644 index 00000000000..e9ddbbecc94 --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/python.c @@ -0,0 +1,320 @@ +/* Copyright (C) 2007,2008 by George Williams */ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +/* Python Interface to FontForge */ + + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include + +#include "uiinterface.h" + +typedef struct flaglist { + const char *name; + int flag; +} flaglist; + +/* These don't get translated. They are a copy of a similar list in fontinfo.c */ +static struct flaglist sfnt_name_str_ids[] = { + { "SubFamily", 2}, + { "Copyright", 0}, + { "Family", 1}, + { "Fullname", 4}, + { "UniqueID", 3}, + { "Version", 5}, + { "PostscriptName", 6}, + { "Trademark", 7}, + { "Manufacturer", 8}, + { "Designer", 9}, + { "Descriptor", 10}, + { "Vendor URL", 11}, + { "Designer URL", 12}, + { "License", 13}, + { "License URL", 14}, +/* slot 15 is reserved */ + { "Preferred Family", 16}, + { "Preferred Styles", 17}, + { "Compatible Full", 18}, + { "Sample Text", 19}, + { "CID findfont Name", 20}, + { "WWS Family", 21}, + { "WWS Subfamily", 22}, + { NULL, 0 } +}; +/* These don't get translated. They are a copy of a similar list in fontinfo.c */ +static struct flaglist sfnt_name_mslangs[] = { + { "Afrikaans", 0x436}, + { "Albanian", 0x41c}, + { "Amharic", 0x45e}, + { "Arabic (Saudi Arabia)", 0x401}, + { "Arabic (Iraq)", 0x801}, + { "Arabic (Egypt)", 0xc01}, + { "Arabic (Libya)", 0x1001}, + { "Arabic (Algeria)", 0x1401}, + { "Arabic (Morocco)", 0x1801}, + { "Arabic (Tunisia)", 0x1C01}, + { "Arabic (Oman)", 0x2001}, + { "Arabic (Yemen)", 0x2401}, + { "Arabic (Syria)", 0x2801}, + { "Arabic (Jordan)", 0x2c01}, + { "Arabic (Lebanon)", 0x3001}, + { "Arabic (Kuwait)", 0x3401}, + { "Arabic (U.A.E.)", 0x3801}, + { "Arabic (Bahrain)", 0x3c01}, + { "Arabic (Qatar)", 0x4001}, + { "Armenian", 0x42b}, + { "Assamese", 0x44d}, + { "Azeri (Latin)", 0x42c}, + { "Azeri (Cyrillic)", 0x82c}, + { "Basque", 0x42d}, + { "Byelorussian", 0x423}, + { "Bengali", 0x445}, + { "Bengali Bangladesh", 0x845}, + { "Bulgarian", 0x402}, + { "Burmese", 0x455}, + { "Catalan", 0x403}, + { "Cambodian", 0x453}, + { "Cherokee", 0x45c}, + { "Chinese (Taiwan)", 0x404}, + { "Chinese (PRC)", 0x804}, + { "Chinese (Hong Kong)", 0xc04}, + { "Chinese (Singapore)", 0x1004}, + { "Chinese (Macau)", 0x1404}, + { "Croatian", 0x41a}, + { "Croatian Bosnia/Herzegovina", 0x101a}, + { "Czech", 0x405}, + { "Danish", 0x406}, + { "Divehi", 0x465}, + { "Dutch", 0x413}, + { "Flemish (Belgian Dutch)", 0x813}, + { "Edo", 0x466}, + { "English (British)", 0x809}, + { "English (US)", 0x409}, + { "English (Canada)", 0x1009}, + { "English (Australian)", 0xc09}, + { "English (New Zealand)", 0x1409}, + { "English (Irish)", 0x1809}, + { "English (South Africa)", 0x1c09}, + { "English (Jamaica)", 0x2009}, + { "English (Caribbean)", 0x2409}, + { "English (Belize)", 0x2809}, + { "English (Trinidad)", 0x2c09}, + { "English (Zimbabwe)", 0x3009}, + { "English (Philippines)", 0x3409}, + { "English (Indonesia)", 0x3809}, + { "English (Hong Kong)", 0x3c09}, + { "English (India)", 0x4009}, + { "English (Malaysia)", 0x4409}, + { "Estonian", 0x425}, + { "Faeroese", 0x438}, + { "Farsi", 0x429}, + { "Filipino", 0x464}, + { "Finnish", 0x40b}, + { "French French", 0x40c}, + { "French Belgium", 0x80c}, + { "French Canadian", 0xc0c}, + { "French Swiss", 0x100c}, + { "French Luxembourg", 0x140c}, + { "French Monaco", 0x180c}, + { "French West Indies", 0x1c0c}, + { "French Réunion", 0x200c}, + { "French D.R. Congo", 0x240c}, + { "French Senegal", 0x280c}, + { "French Camaroon", 0x2c0c}, + { "French Côte d'Ivoire", 0x300c}, + { "French Mali", 0x340c}, + { "French Morocco", 0x380c}, + { "French Haiti", 0x3c0c}, + { "French North Africa", 0xe40c}, + { "Frisian", 0x462}, + { "Fulfulde", 0x467}, + { "Gaelic (Scottish)", 0x43c}, + { "Gaelic (Irish)", 0x83c}, + { "Galician", 0x467}, + { "Georgian", 0x437}, + { "German German", 0x407}, + { "German Swiss", 0x807}, + { "German Austrian", 0xc07}, + { "German Luxembourg", 0x1007}, + { "German Liechtenstein", 0x1407}, + { "Greek", 0x408}, + { "Guarani", 0x474}, + { "Gujarati", 0x447}, + { "Hausa", 0x468}, + { "Hawaiian", 0x475}, + { "Hebrew", 0x40d}, + { "Hindi", 0x439}, + { "Hungarian", 0x40e}, + { "Ibibio", 0x469}, + { "Icelandic", 0x40f}, + { "Igbo", 0x470}, + { "Indonesian", 0x421}, + { "Inuktitut", 0x45d}, + { "Italian", 0x410}, + { "Italian Swiss", 0x810}, + { "Japanese", 0x411}, + { "Kannada", 0x44b}, + { "Kanuri", 0x471}, + { "Kashmiri (India)", 0x860}, + { "Kazakh", 0x43f}, + { "Khmer", 0x453}, + { "Kirghiz", 0x440}, + { "Konkani", 0x457}, + { "Korean", 0x412}, + { "Korean (Johab)", 0x812}, + { "Lao", 0x454}, + { "Latvian", 0x426}, + { "Latin", 0x476}, + { "Lithuanian", 0x427}, + { "Lithuanian (Classic)", 0x827}, + { "Macedonian", 0x42f}, + { "Malay", 0x43e}, + { "Malay (Brunei)", 0x83e}, + { "Malayalam", 0x44c}, + { "Maltese", 0x43a}, + { "Manipuri", 0x458}, + { "Maori", 0x481}, + { "Marathi", 0x44e}, + { "Mongolian (Cyrillic)", 0x450}, + { "Mongolian (Mongolian)", 0x850}, + { "Nepali", 0x461}, + { "Nepali (India)", 0x861}, + { "Norwegian (Bokmal)", 0x414}, + { "Norwegian (Nynorsk)", 0x814}, + { "Oriya", 0x448}, + { "Oromo", 0x472}, + { "Papiamentu", 0x479}, + { "Pashto", 0x463}, + { "Polish", 0x415}, + { "Portugese (Portugal)", 0x416}, + { "Portuguese (Brasil)", 0x816}, + { "Punjabi (India)", 0x446}, + { "Punjabi (Pakistan)", 0x846}, + { "Quecha (Bolivia)", 0x46b}, + { "Quecha (Ecuador)", 0x86b}, + { "Quecha (Peru)", 0xc6b}, + { "Rhaeto-Romanic", 0x417}, + { "Romanian", 0x418}, + { "Romanian (Moldova)", 0x818}, + { "Russian", 0x419}, + { "Russian (Moldova)", 0x819}, + { "Sami (Lappish)", 0x43b}, + { "Sanskrit", 0x43b}, + { "Sepedi", 0x46c}, + { "Serbian (Cyrillic)", 0xc1a}, + { "Serbian (Latin)", 0x81a}, + { "Sindhi India", 0x459}, + { "Sindhi Pakistan", 0x859}, + { "Sinhalese", 0x45b}, + { "Slovak", 0x41b}, + { "Slovenian", 0x424}, + { "Sorbian", 0x42e}, + { "Spanish (Traditional)", 0x40a}, + { "Spanish Mexico", 0x80a}, + { "Spanish (Modern)", 0xc0a}, + { "Spanish (Guatemala)", 0x100a}, + { "Spanish (Costa Rica)", 0x140a}, + { "Spanish (Panama)", 0x180a}, + { "Spanish (Dominican Republic)", 0x1c0a}, + { "Spanish (Venezuela)", 0x200a}, + { "Spanish (Colombia)", 0x240a}, + { "Spanish (Peru)", 0x280a}, + { "Spanish (Argentina)", 0x2c0a}, + { "Spanish (Ecuador)", 0x300a}, + { "Spanish (Chile)", 0x340a}, + { "Spanish (Uruguay)", 0x380a}, + { "Spanish (Paraguay)", 0x3c0a}, + { "Spanish (Bolivia)", 0x400a}, + { "Spanish (El Salvador)", 0x440a}, + { "Spanish (Honduras)", 0x480a}, + { "Spanish (Nicaragua)", 0x4c0a}, + { "Spanish (Puerto Rico)", 0x500a}, + { "Spanish (United States)", 0x540a}, + { "Spanish (Latin America)", 0xe40a}, + { "Sutu", 0x430}, + { "Swahili (Kenyan)", 0x441}, + { "Swedish (Sweden)", 0x41d}, + { "Swedish (Finland)", 0x81d}, + { "Syriac", 0x45a}, + { "Tagalog", 0x464}, + { "Tajik", 0x428}, + { "Tamazight (Arabic)", 0x45f}, + { "Tamazight (Latin)", 0x85f}, + { "Tamil", 0x449}, + { "Tatar (Tatarstan)", 0x444}, + { "Telugu", 0x44a}, + { "Thai", 0x41e}, + { "Tibetan (PRC)", 0x451}, + { "Tibetan Bhutan", 0x851}, + { "Tigrinya Ethiopia", 0x473}, + { "Tigrinyan Eritrea", 0x873}, + { "Tsonga", 0x431}, + { "Tswana", 0x432}, + { "Turkish", 0x41f}, + { "Turkmen", 0x442}, + { "Uighur", 0x480}, + { "Ukrainian", 0x422}, + { "Urdu (Pakistan)", 0x420}, + { "Urdu (India)", 0x820}, + { "Uzbek (Latin)", 0x443}, + { "Uzbek (Cyrillic)", 0x843}, + { "Venda", 0x433}, + { "Vietnamese", 0x42a}, + { "Welsh", 0x452}, + { "Xhosa", 0x434}, + { "Yi", 0x478}, + { "Yiddish", 0x43d}, + { "Yoruba", 0x46a}, + { "Zulu", 0x435}, + { NULL, 0 }}; + +const char *NOUI_TTFNameIds(int id) { + int i; + + for ( i=0; sfnt_name_str_ids[i].name!=NULL; ++i ) + if ( sfnt_name_str_ids[i].flag == id ) +return( (char *) sfnt_name_str_ids[i].name ); + +return( "Unknown" ); +} + +const char *NOUI_MSLangString(int language) { + int i; + + for ( i=0; sfnt_name_mslangs[i].name!=NULL; ++i ) + if ( sfnt_name_mslangs[i].flag == language ) +return( (char *) sfnt_name_mslangs[i].name ); + + language &= 0xff; + for ( i=0; sfnt_name_mslangs[i].name!=NULL; ++i ) + if ( sfnt_name_mslangs[i].flag == language ) +return( (char *) sfnt_name_mslangs[i].name ); + +return( "Unknown" ); +} diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/scripting.h b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/scripting.h new file mode 100644 index 00000000000..f24eecca9be --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/scripting.h @@ -0,0 +1,140 @@ +/* Copyright (C) 2005-2008 by George Williams */ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _SCRIPTING_H +#define _SCRIPTING_H + +#include "fontforgevw.h" +#include +#include + +/* If users want to write user defined scripting built-in functions they will */ +/* need this file. The most relevant structure is the Context */ + +struct dictentry { + char *name; + Val val; +}; + +struct dictionary { + struct dictentry *entries; + int cnt, max; +}; + +typedef struct array { + int argc; + Val *vals; +} Array; + +#define TOK_MAX 256 +enum token_type { tt_name, tt_string, tt_number, tt_unicode, tt_real, + tt_lparen, tt_rparen, tt_comma, tt_eos, /* eos is end of statement, semicolon, newline */ + tt_lbracket, tt_rbracket, + tt_minus, tt_plus, tt_not, tt_bitnot, tt_colon, + tt_mul, tt_div, tt_mod, tt_and, tt_or, tt_bitand, tt_bitor, tt_xor, + tt_eq, tt_ne, tt_gt, tt_lt, tt_ge, tt_le, + tt_assign, tt_pluseq, tt_minuseq, tt_muleq, tt_diveq, tt_modeq, + tt_incr, tt_decr, + + tt_if, tt_else, tt_elseif, tt_endif, tt_while, tt_foreach, tt_endloop, + tt_shift, tt_return, tt_break, + + tt_eof, + + tt_error = -1 +}; + +typedef struct context { + struct context *caller; /* The context of the script that called us */ + Array a; /* The argument array */ + Array **dontfree; /* Irrelevant for user defined funcs */ + struct dictionary locals; /* Irrelevant for user defined funcs */ + FILE *script; /* Irrelevant for user defined funcs */ + unsigned int backedup: 1; /* Irrelevant for user defined funcs */ + unsigned int donteval: 1; /* Irrelevant for user defined funcs */ + unsigned int returned: 1; /* Irrelevant for user defined funcs */ + unsigned int broken: 1; /* Irrelevant for user defined funcs */ + char tok_text[TOK_MAX+1]; /* Irrelevant for user defined funcs */ + enum token_type tok; /* Irrelevant for user defined funcs */ + Val tok_val; /* Irrelevant for user defined funcs */ + Val return_val; /* Initialized to void. If user wants */ + /* return something set the return */ + /* value here */ + Val trace; /* Irrelevant for user defined funcs */ + Val argsval; /* Irrelevant for user defined funcs */ + char *filename; /* Irrelevant for user defined funcs */ + int lineno; /* Irrelevant for user defined funcs */ + int ungotch; /* Irrelevant for user defined funcs */ + FontViewBase *curfv; /* Current fontview */ + jmp_buf *err_env; /* place to longjump to on an error */ +} Context; + +void arrayfree(Array *); + +void FontImage(SplineFont *sf,char *filename,Array *arr,int width,int height); + + /* Adds a user defined scripting function to the interpretter */ + /* (you can't override a built-in name) */ + /* (you can replace a previous user defined function */ + /* Most functions will require a font to be loaded, but a few do not */ + /* Open(), Exit(), Sin() don't. ff uses the needs_font flag to perform */ + /* this check for you */ + /* Returns 1 if the addition was successful, 2 if it replaced a previous func */ + /* Returns 0 on failure (ie. if it attempts to replace a builtin function) */ +typedef void (*UserDefScriptFunc)(Context *); +extern int AddScriptingCommand(char *name,UserDefScriptFunc func,int needs_font); + + /* Returns whether a user defined scripting command already exists with the */ + /* given name */ +extern UserDefScriptFunc HasUserScriptingCommand(char *name); + + /* Scripts used to be in latin1, and we still support that if the user sets */ + /* an environment variable. Now scripts are by default utf8. These two funcs */ + /* will interconvert between latin1 & utf8 if appropriate, or just make a */ + /* utf8 copy if not. They always make a copy. */ +extern char *utf82script_copy(const char *ustr); +extern char *script2utf8_copy(const char *str); + + /* Various error routines. */ +void ScriptError( Context *c, const char *msg ); + /* Prints an error message and exits. msg is in the script's encoding */ +void ScriptErrorString( Context *c, const char *msg, const char *name); + /* Prints an error message followed by a string and exits. */ + /* both strings are in the script's encoding */ +void ScriptErrorF( Context *c, const char *fmt, ... ); + /* Standard printf-style spec. All string arguments assumed to be in */ + /* utf8 */ + +extern int running_script; + +/* Hooks so a scripting dlg can execute fontforge's legacy scripting language */ +extern void ff_VerboseCheck(void); +extern enum token_type ff_NextToken(Context *c); +extern void ff_backuptok(Context *c); +extern void ff_statement(Context*); + +#endif /* _SCRIPTING_H */ diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/sd.h b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/sd.h new file mode 100644 index 00000000000..ab365789148 --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/sd.h @@ -0,0 +1,163 @@ +/* Copyright (C) 2000-2008 by George Williams */ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef _SD_H +#define _SD_H +# include + +/* All coordinates are in millimeters */ +/* they will be displayed to the user scaled by the units field of the design */ + +#include "splinefont.h" + +struct epattern { + struct entity *tile; + real width, height; + DBounds bbox; + real transform[6]; +}; + +typedef struct entpen { + Color col; + struct gradient *grad; + struct epattern *tile; + float scale; + float opacity; +} Pen; + +typedef struct textunit { + unichar_t *text; + SplineFont *sf; + float size; /* in points */ + float kernafter; + Pen fill; + struct textunit *next; +} TextUnit; + +typedef struct entity { + enum entity_type { et_splines, et_text, et_image, et_group } type; + union { + struct filledsplines { + SplineSet *splines; + unsigned int isfillable: 1; /* All splinesets are closed */ + Pen fill, stroke; /* A value of 0xffffffff means do not fill or stroke */ + float stroke_width; + enum linejoin join; + enum linecap cap; + real transform[6]; /* The stroke may be quite different depending on the transformation (ie. ellipse not circle, rotated, etc) */ + } splines; + struct text { + TextUnit *text; + real transform[6]; + struct entity *bound; + } text; + struct image { + GImage *image; + real transform[6]; + Color col; /* that gets poured into imagemasks */ + } image; + struct group { + struct entity *group; + } group; + } u; + SplineSet *clippath; + DBounds bb; + struct entity *next; +} Entity; + +typedef struct entlayer { + Entity *entities; + char *name; + unsigned int isvisible: 1; +} EntLayer; + +typedef struct tile { + Entity *tile; + struct tileinstance { real scale; struct gwindow *pixmap; struct tileinstance *next; } + *instances; + char *name; +} Tile; + +typedef struct splinedesign { + int lcnt, lmax, active; + EntLayer *layers; + + real width, height; /* in millimeters */ + int16 hpages, vpages; + real pwidth, pheight; /* in millimeters */ + real units; /* if user wants to see things in */ + /* centimeters then units will be 10, if inches then 25.4, if points */ + /* then 25.4/72, if 1/1200" then 25.4/1200, etc. */ + struct dview *dvs; +} SplineDesign, Design; + +extern Entity *EntityInterpretPS(FILE *ps,int *width); +extern Entity *EntityInterpretSVG(char *filename,char *memory, int memlen, int em_size,int ascent); +extern Entity *EntityInterpretPDFPage(FILE *pdf,int select_page); +extern SplinePointList *SplinesFromEntities(Entity *ent,int *flags,int is_stroked); +extern void SCAppendEntityLayers(SplineChar *sc, Entity *ent); + + /* Used for type3 fonts briefly */ +/* This is not a "real" structure. It is a temporary hack that encompasses */ +/* various possibilities, the combination of which won't occur in reality */ +typedef struct entitychar { + Entity *splines; + RefChar *refs; + int width, vwidth; + SplineChar *sc; + uint8 fromtype3; +} EntityChar; + +struct pskeydict { + int16 cnt, max; + uint8 is_executable; + struct pskeyval *entries; +}; + +struct psstack { + enum pstype { ps_void, ps_num, ps_bool, ps_string, ps_instr, ps_lit, + ps_mark, ps_array, ps_dict } type; + union vals { + real val; + int tf; + char *str; + struct pskeydict dict; /* and for arrays too */ + } u; +}; + +struct pskeyval { + enum pstype type; + union vals u; + char *key; +}; + +typedef struct retstack { + int max; + int cnt; + real *stack; +} RetStack; + +#endif diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/sfd1.c b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/sfd1.c new file mode 100644 index 00000000000..0cbfbaf1d0a --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/sfd1.c @@ -0,0 +1,48 @@ +/* Copyright (C) 2000-2008 by George Williams */ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "pfaedit.h" +#include "sfd1.h" +#include + + +enum uni_interp interp_from_encoding(Encoding *enc,enum uni_interp interp) { + + if ( enc==NULL ) +return( interp ); + + if ( enc->is_japanese ) + interp = ui_japanese; + else if ( enc->is_korean ) + interp = ui_korean; + else if ( enc->is_tradchinese ) + interp = ui_trad_chinese; + else if ( enc->is_simplechinese ) + interp = ui_simp_chinese; +return( interp ); +} + diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/sfd1.h b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/sfd1.h new file mode 100644 index 00000000000..6d72f3e8630 --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/sfd1.h @@ -0,0 +1,112 @@ +/* Copyright (C) 2000-2008 by George Williams */ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef _SFD1_H +#define _SFD1_H +/* This file contains the data structures needed to read in an old sfd file */ +/* features and lookups and scripts are handled differently. That means that */ +/* the KernPair, KernClass, PST, FPST, AnchorClass, StateMachine data structures */ +/* are organized differently. Also we've got a script language list which */ +/* doesn't exist in the new format and we don't have OTLookup */ + +#include "splinefont.h" + +#define SLI_UNKNOWN 0xffff +#define SLI_NESTED 0xfffe + +typedef struct anchorclass1 { + AnchorClass ac; + uint32 feature_tag; + uint16 script_lang_index; + uint16 flags; + uint16 merge_with; + uint8 has_bases; + uint8 has_ligatures; +} AnchorClass1; + +typedef struct kernpair1 { + KernPair kp; + uint16 sli, flags; +} KernPair1; + +typedef struct kernclass1 { + KernClass kc; + uint16 sli; + uint16 flags; +} KernClass1; + +typedef struct generic_pst1 { + PST pst; + uint8 macfeature; /* tag should be interpretted as rather than 'abcd' */ + uint16 flags; + uint16 script_lang_index; /* 0xffff means none */ + uint32 tag; +} PST1; + +typedef struct generic_fpst1 { + FPST fpst; + uint16 script_lang_index; + uint16 flags; + uint32 tag; +} FPST1; + +typedef struct generic_asm1 { /* Apple State Machine */ + ASM sm; + uint16 feature, setting; + uint32 opentype_tag; /* If converted from opentype */ +} ASM1; + +typedef struct splinefont1 { + SplineFont sf; + + struct table_ordering { uint32 table_tag; uint32 *ordered_features; struct table_ordering *next; } *orders; + + /* Any GPOS/GSUB entry (PST, AnchorClass, kerns, FPST */ + /* Has an entry saying what scripts/languages it should appear it */ + /* Things like fractions will appear in almost all possible script/lang */ + /* combinations, while alphabetic ligatures will only live in one script */ + /* Rather than store the complete list of possibilities in each PST we */ + /* store all choices used here, and just store an index into this list */ + /* in the PST. All lists are terminated by a 0 entry */ + struct script_record { + uint32 script; + uint32 *langs; + } **script_lang; + int16 sli_cnt; + + struct gentagtype { + uint16 tt_cur, tt_max; + struct tagtype { + enum possub_type type; + uint32 tag; + } *tagtype; + } gentags; +} SplineFont1; + +extern int SFFindBiggestScriptLangIndex(SplineFont *_sf,uint32 script,uint32 lang); +extern int SFAddScriptIndex(SplineFont1 *sf,uint32 *scripts,int scnt); +extern void SFD_AssignLookups(SplineFont1 *sf); +#endif /* _SFD1_H */ diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/splinechar.c b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/splinechar.c new file mode 100644 index 00000000000..7245bb926bb --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/splinechar.c @@ -0,0 +1,266 @@ +/* Copyright (C) 2000-2008 by George Williams */ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "fontforgevw.h" +#include +#include +# include +# include +# include +#ifdef HAVE_IEEEFP_H +# include /* Solaris defines isnan in ieeefp rather than math.h */ +#endif +#include "ttf.h" + +int adjustwidth = true; +int adjustlbearing = true; +int allow_utf8_glyphnames = false; +int clear_tt_instructions_when_needed = true; + +void SCClearRounds(SplineChar *sc,int layer) { + SplineSet *ss; + SplinePoint *sp; + + for ( ss=sc->layers[layer].splines; ss!=NULL; ss=ss->next ) { + for ( sp=ss->first; ; ) { + sp->roundx = sp->roundy = false; + if ( sp->next==NULL ) + break; + sp = sp->next->to; + if ( sp==ss->first ) + break; + } + } +} + + +void SCClearLayer(SplineChar *sc,int layer) { + RefChar *refs, *next; + + SplinePointListsFree(sc->layers[layer].splines); + sc->layers[layer].splines = NULL; + for ( refs=sc->layers[layer].refs; refs!=NULL; refs = next ) { + next = refs->next; + SCRemoveDependent(sc,refs,layer); + } + sc->layers[layer].refs = NULL; + ImageListsFree(sc->layers[layer].images); + sc->layers[layer].images = NULL; +} + +void SCClearContents(SplineChar *sc,int layer) { + int ly_first, ly_last; + + if ( sc==NULL ) +return; + if ( sc->parent!=NULL && sc->parent->multilayer ) { + ly_first = ly_fore; + ly_last = sc->layer_cnt-1; + } else + ly_first = ly_last = layer; + for ( layer = ly_first; layer<=ly_last; ++layer ) + SCClearLayer(sc,layer); + --layer; + + if ( sc->parent!=NULL && + (sc->parent->multilayer || + (!sc->parent->layers[layer].background && SCWasEmpty(sc,layer)))) { + sc->widthset = false; + if ( sc->parent!=NULL && sc->width!=0 ) + sc->width = sc->parent->ascent+sc->parent->descent; + AnchorPointsFree(sc->anchor); + sc->anchor = NULL; + StemInfosFree(sc->hstem); sc->hstem = NULL; + StemInfosFree(sc->vstem); sc->vstem = NULL; + DStemInfosFree(sc->dstem); sc->dstem = NULL; + MinimumDistancesFree(sc->md); sc->md = NULL; + free(sc->ttf_instrs); + sc->ttf_instrs = NULL; + sc->ttf_instrs_len = 0; + SCOutOfDateBackground(sc); + } +} + + +void SplinePointRound(SplinePoint *sp,real factor) { + + sp->nextcp.x = rint(sp->nextcp.x*factor)/factor; + sp->nextcp.y = rint(sp->nextcp.y*factor)/factor; + if ( sp->next!=NULL && sp->next->order2 ) + sp->next->to->prevcp = sp->nextcp; + sp->prevcp.x = rint(sp->prevcp.x*factor)/factor; + sp->prevcp.y = rint(sp->prevcp.y*factor)/factor; + if ( sp->prev!=NULL && sp->prev->order2 ) + sp->prev->from->nextcp = sp->prevcp; + if ( sp->prev!=NULL && sp->next!=NULL && sp->next->order2 && + sp->ttfindex == 0xffff ) { + sp->me.x = (sp->nextcp.x + sp->prevcp.x)/2; + sp->me.y = (sp->nextcp.y + sp->prevcp.y)/2; + } else { + sp->me.x = rint(sp->me.x*factor)/factor; + sp->me.y = rint(sp->me.y*factor)/factor; + } +} + +void SplineSetsRound2Int(SplineSet *spl,real factor, int inspiro, int onlysel) { + SplinePoint *sp; + + for ( ; spl!=NULL; spl=spl->next ) { + if ( inspiro ) { + } else { + for ( sp=spl->first; ; ) { + if ( sp->selected || !onlysel ) + SplinePointRound(sp,factor); + if ( sp->prev!=NULL ) + SplineRefigure(sp->prev); + if ( sp->next==NULL ) + break; + sp = sp->next->to; + if ( sp==spl->first ) + break; + } + if ( spl->first->prev!=NULL ) + SplineRefigure(spl->first->prev); + } + } +} + + +void AltUniAdd(SplineChar *sc,int uni) { + struct altuni *altuni; + + if ( sc!=NULL && uni!=-1 && uni!=sc->unicodeenc ) { + for ( altuni = sc->altuni; altuni!=NULL && (altuni->unienc!=uni || + altuni->vs!=-1 || + altuni->fid); altuni=altuni->next ); + if ( altuni==NULL ) { + altuni = chunkalloc(sizeof(struct altuni)); + altuni->next = sc->altuni; + sc->altuni = altuni; + altuni->unienc = uni; + altuni->vs = -1; + altuni->fid = 0; + } + } +} + +void SCOrderAP(SplineChar *sc) { + int lc=0, cnt=0, out=false, i,j; + AnchorPoint *ap, **array; + /* Order so that first ligature index comes first */ + + for ( ap=sc->anchor; ap!=NULL; ap=ap->next ) { + if ( ap->lig_indexlig_index>lc ) lc = ap->lig_index; + ++cnt; + } + if ( !out ) +return; + + array = galloc(cnt*sizeof(AnchorPoint *)); + for ( i=0, ap=sc->anchor; ap!=NULL; ++i, ap=ap->next ) + array[i] = ap; + for ( i=0; ilig_index>array[j]->lig_index ) { + ap = array[i]; + array[i] = array[j]; + array[j] = ap; + } + } + } + sc->anchor = array[0]; + for ( i=0; inext = array[i+1]; + array[cnt-1]->next = NULL; + free( array ); +} + + +static void SCUpdateNothing(SplineChar *sc) { +} + +static void SCHintsChng(SplineChar *sc) { + sc->changedsincelasthinted = false; + if ( !sc->changed ) { + sc->changed = true; + sc->parent->changed = true; + } +} + +static void _SCChngNoUpdate(SplineChar *sc,int layer,int changed) { +} + +static void SCChngNoUpdate(SplineChar *sc,int layer) { + _SCChngNoUpdate(sc,layer,true); +} + +static void SCB_MoreLayers(SplineChar *sc,Layer *old) { +} + +static struct sc_interface noui_sc = { + SCUpdateNothing, + SCUpdateNothing, + SCUpdateNothing, + SCHintsChng, + SCChngNoUpdate, + _SCChngNoUpdate, + SCUpdateNothing, + SCUpdateNothing, + SCB_MoreLayers +}; + +struct sc_interface *sc_interface = &noui_sc; + +void FF_SetSCInterface(struct sc_interface *sci) { + sc_interface = sci; +} + +static void CVChngNoUpdate(CharViewBase *cv) { +} + +static void _CVChngNoUpdate(CharViewBase *cv,int changed) { +} + +static void CVGlphRenameFixup(SplineFont *sf,char *oldname, char *newname) { +} + +static void CV__LayerPaletteCheck(SplineFont *sf) { +} + +static struct cv_interface noui_cv = { + CVChngNoUpdate, + _CVChngNoUpdate, + CVGlphRenameFixup, + CV__LayerPaletteCheck +}; + +struct cv_interface *cv_interface = &noui_cv; + +void FF_SetCVInterface(struct cv_interface *cvi) { + cv_interface = cvi; +} diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/splinefill.c b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/splinefill.c new file mode 100644 index 00000000000..c8f55197d6e --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/splinefill.c @@ -0,0 +1,535 @@ +/* Copyright (C) 2000-2008 by George Williams */ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "pfaedit.h" +#include +#include +#include +#include +#include "gdraw.h" +#include "splinefont.h" +#include "edgelist.h" + +Color default_background = 0xffffff; /* white */ + +static void HintsFree(Hints *h) { + Hints *hnext; + for ( ; h!=NULL; h = hnext ) { + hnext = h->next; + free(h); + } +} + +static void _FreeEdgeList(EdgeList *es) { + int i; + + /* edges will be NULL if the user tries to make an enormous bitmap */ + /* if the linear size is bigger than several thousand, we just */ + /* ignore the request */ + if ( es->edges!=NULL ) { + for ( i=0; icnt; ++i ) { + Edge *e, *next; + for ( e = es->edges[i]; e!=NULL; e = next ) { + next = e->esnext; + free(e); + } + es->edges[i] = NULL; + } + } +} + +void FreeEdges(EdgeList *es) { + _FreeEdgeList(es); + free(es->edges); + free(es->interesting); + HintsFree(es->hhints); + HintsFree(es->vhints); +} + +extended IterateSplineSolve(const Spline1D *sp, extended tmin, extended tmax, + extended sought,double err) { + extended t, low, high, test; + Spline1D temp; + int cnt; + + /* Now the closed form CubicSolver can have rounding errors so if we know */ + /* the spline to be monotonic, an iterative approach is more accurate */ + + temp = *sp; + temp.d -= sought; + + if ( temp.a==0 && temp.b==0 && temp.c!=0 ) { + t = -temp.d/(extended) temp.c; + if ( t<0 || t>1 ) +return( -1 ); +return( t ); + } + + low = ((temp.a*tmin+temp.b)*tmin+temp.c)*tmin+temp.d; + high = ((temp.a*tmax+temp.b)*tmax+temp.c)*tmax+temp.d; + if ( low-err ) +return(tmin); + if ( high-err ) +return(tmax); + if (( low<0 && high>0 ) || + ( low>0 && high<0 )) { + + for ( cnt=0; cnt<1000; ++cnt ) { /* Avoid impossible error limits */ + t = (tmax+tmin)/2; + test = ((temp.a*t+temp.b)*t+temp.c)*t+temp.d; + if ( test>-err && test0 && test>0) ) + tmin=t; + else + tmax = t; + } +return( (tmax+tmin)/2 ); + } +return( -1 ); +} + +double TOfNextMajor(Edge *e, EdgeList *es, double sought_m ) { + /* We want to find t so that Mspline(t) = sought_m */ + /* the curve is monotonic */ + Spline1D *msp = &e->spline->splines[es->major]; + double new_t; + + if ( es->is_overlap ) { + + /* if we've adjusted the height then we won't be able to find it restricting */ + /* t between [0,1] as we do. So it's a special case. (this is to handle */ + /* hstem hints) */ + if ( e->max_adjusted && sought_m==e->mmax ) { + e->m_cur = sought_m; +return( e->up?1.0:0.0 ); + } + + new_t = IterateSplineSolve(msp,e->t_mmin,e->t_mmax,(sought_m+es->mmin)/es->scale,.001); + if ( new_t==-1 ) + IError( "No Solution"); + e->m_cur = (((msp->a*new_t + msp->b)*new_t+msp->c)*new_t + msp->d)*es->scale - es->mmin; +return( new_t ); + } else { + Spline *sp = e->spline; + + if ( sp->islinear ) { + new_t = e->t_cur + (sought_m-e->m_cur)/(es->scale * msp->c); + e->m_cur = (msp->c*new_t + msp->d)*es->scale - es->mmin; +return( new_t ); + } + /* if we have a spline that is nearly horizontal at its max. endpoint */ + /* then finding A value of t for which y has the right value isn't good */ + /* enough (at least not when finding intersections) */ + if ( sought_m+1>e->mmax ) { + e->m_cur = e->mmax; +return( e->t_mmax ); + } + + /* if we've adjusted the height then we won't be able to find it restricting */ + /* t between [0,1] as we do. So it's a special case. (this is to handle */ + /* hstem hints) */ + if ( e->max_adjusted && sought_m==e->mmax ) { + e->m_cur = sought_m; +return( e->up?1.0:0.0 ); + } + new_t = IterateSplineSolve(msp,e->t_mmin,e->t_mmax,(sought_m+es->mmin)/es->scale,.001); + if ( new_t==-1 ) + IError( "No Solution"); + e->m_cur = (((msp->a*new_t + msp->b)*new_t+msp->c)*new_t + msp->d)*es->scale - es->mmin; +return( new_t ); + } +} + +static int SlopeLess(Edge *e, Edge *p, int other) { + Spline1D *osp = &e->spline->splines[other]; + Spline1D *psp = &p->spline->splines[other]; + Spline1D *msp = &e->spline->splines[!other]; + Spline1D *qsp = &p->spline->splines[!other]; + real os = (3*osp->a*e->t_cur+2*osp->b)*e->t_cur+osp->c, + ps = (3*psp->a*p->t_cur+2*psp->b)*p->t_cur+psp->c; + real ms = (3*msp->a*e->t_cur+2*msp->b)*e->t_cur+msp->c, + qs = (3*qsp->a*p->t_cur+2*qsp->b)*p->t_cur+qsp->c; + if ( ms<.0001 && ms>-.0001 ) ms = 0; + if ( qs<.0001 && qs>-.0001 ) qs = 0; + if ( qs==0 ) { + if ( p->t_cur==1 ) { + qs = (3*qsp->a*.9999+2*qsp->b)*.9999+qsp->c; + ps = (3*psp->a*.9999+2*psp->b)*.9999+psp->c; + } else { + qs = (3*qsp->a*(p->t_cur+.0001)+2*qsp->b)*(p->t_cur+.0001)+qsp->c; + ps = (3*psp->a*(p->t_cur+.0001)+2*psp->b)*(p->t_cur+.0001)+psp->c; + } + } + if ( ms==0 ) { + if ( e->t_cur==1 ) { + ms = (3*msp->a*.9999+2*msp->b)*.9999+msp->c; + os = (3*osp->a*.9999+2*osp->b)*.9999+osp->c; + } else { + ms = (3*msp->a*(e->t_cur+.0001)+2*msp->b)*(e->t_cur+.0001)+msp->c; + os = (3*osp->a*(e->t_cur+.0001)+2*osp->b)*(e->t_cur+.0001)+osp->c; + } + } + if ( e->t_cur-e->tmin > e->tmax-e->t_cur ) { os = -os; ms = -ms; } + if ( p->t_cur-p->tmin > p->tmax-p->t_cur ) { ps = -ps; qs = -qs; } + if ( ms!=0 && qs!=0 ) { os /= ms; ps /= qs; } + else if ( ms==0 && qs==0 ) /* Do Nothing */; + else if ( (ms==0 && os>0) || (qs==0 && ps<0) ) /* Does this make sense? */ +return( false ); + else if ( (ms==0 && os<0) || (qs==0 && ps>0) ) /* Does this make sense? */ +return( true ); + + if ( os==ps || ms==0 || qs==0 ) +return( e->o_mmaxo_mmax ); + +return( ossplines[es->major], *osp = &sp->splines[es->other]; + + e = gcalloc(1,sizeof(Edge)); + e->spline = sp; + + m1 = ( ((msp->a*tmin+msp->b)*tmin+msp->c)*tmin + msp->d ) * es->scale; + m2 = ( ((msp->a*tmax+msp->b)*tmax+msp->c)*tmax + msp->d ) * es->scale; + if ( m1>m2 ) { + e->mmin = m2; + e->t_mmin = tmax; + e->mmax = m1; + e->t_mmax = tmin; + e->up = false; + } else { + e->mmax = m2; + e->t_mmax = tmax; + e->mmin = m1; + e->t_mmin = tmin; + e->up = true; + } + if ( RealNear(e->mmin,es->mmin)) e->mmin = es->mmin; + e->o_mmin = ( ((osp->a*e->t_mmin+osp->b)*e->t_mmin+osp->c)*e->t_mmin + osp->d ) * es->scale; + e->o_mmax = ( ((osp->a*e->t_mmax+osp->b)*e->t_mmax+osp->c)*e->t_mmax + osp->d ) * es->scale; + e->mmin -= es->mmin; e->mmax -= es->mmin; + e->t_cur = e->t_mmin; + e->o_cur = e->o_mmin; + e->m_cur = e->mmin; + e->last_opos = e->last_mpos = -2; + e->tmin = tmin; e->tmax = tmax; + + if ( e->mmin<0 || e->mmin>=e->mmax ) { + /*IError("Probably not serious, but we've got a zero length spline in AddEdge in %s",es->sc==NULL?:es->sc->name);*/ + free(e); +return; + } + + if ( es->sc!=NULL ) for ( hint=es->hhints; hint!=NULL; hint=hint->next ) { + if ( hint->adjustb ) { + if ( e->m_cur>hint->b1 && e->m_curb2 ) { + e->m_cur = e->mmin = hint->ab; + e->min_adjusted = true; + } else if ( e->mmax>hint->b1 && e->mmaxb2 ) { + e->mmax = hint->ab; + e->max_adjusted = true; + } + } else if ( hint->adjuste ) { + if ( e->m_cur>hint->e1 && e->m_cure2 ) { + e->m_cur = e->mmin = hint->ae; + e->min_adjusted = true; + } else if ( e->mmax>hint->e1 && e->mmaxe2 ) { + e->mmax = hint->ae; + e->max_adjusted = true; + } + } + } + + mpos = (int) ceil(e->m_cur); + if ( mpos>e->mmax || mpos>=es->cnt ) { + free(e); +return; + } + + if ( e->m_cur!=ceil(e->m_cur) ) { + /* bring the new edge up to its first scan line */ + e->t_cur = TOfNextMajor(e,es,ceil(e->m_cur)); + e->o_cur = ( ((osp->a*e->t_cur+osp->b)*e->t_cur+osp->c)*e->t_cur + osp->d ) * es->scale; + } + + e->before = es->last; + if ( es->last!=NULL ) + es->last->after = e; + if ( es->last==NULL ) + es->splinesetfirst = e; + es->last = e; + + if ( es->edges[mpos]==NULL || e->o_curedges[mpos]->o_cur || + (e->o_cur==es->edges[mpos]->o_cur && SlopeLess(e,es->edges[mpos],es->other))) { + e->esnext = es->edges[mpos]; + es->edges[mpos] = e; + } else { + for ( pr=es->edges[mpos]; pr->esnext!=NULL && pr->esnext->o_curo_cur ; + pr = pr->esnext ); + /* When two splines share a vertex which is a local minimum, then */ + /* o_cur will be equal for both (to the vertex's o value) and so */ + /* the above code randomly picked one to go first. That screws up */ + /* the overlap code, which wants them properly ordered from the */ + /* start. so look at the end point, nope the end point isn't always */ + /* meaningful, look at the slope... */ + if ( pr->esnext!=NULL && pr->esnext->o_cur==e->o_cur && + SlopeLess(e,pr->esnext,es->other)) { + pr = pr->esnext; + } + e->esnext = pr->esnext; + pr->esnext = e; + } + if ( es->interesting ) { + /* Mark the other end of the spline as interesting */ + es->interesting[(int) ceil(e->mmax)]=1; + } +} + +static void AddMajorEdge(EdgeList *es, Spline *sp) { + Edge *e, *pr; + real m1; + Spline1D *msp = &sp->splines[es->major], *osp = &sp->splines[es->other]; + + e = gcalloc(1,sizeof(Edge)); + e->spline = sp; + + e->mmin = e->mmax = m1 = msp->d * es->scale - es->mmin; + e->t_mmin = 0; + e->t_mmax = 1; + e->up = false; + e->o_mmin = osp->d * es->scale; + e->o_mmax = ( osp->a + osp->b + osp->c + osp->d ) * es->scale; + if ( e->o_mmin == e->o_mmax ) { /* Just a point? */ + free(e); +return; + } + if ( e->mmin<0 ) + IError("Grg!"); + + if ( ceil(e->m_cur)>e->mmax ) { + free(e); +return; + } + + if ( es->majors==NULL || es->majors->mmin>=m1 ) { + e->esnext = es->majors; + es->majors = e; + } else { + for ( pr=es->majors; pr->esnext!=NULL && pr->esnext->mminesnext ); + e->esnext = pr->esnext; + pr->esnext = e; + } +} + +static void AddSpline(EdgeList *es, Spline *sp ) { + real t1=2, t2=2, t; + real b2_fourac; + real fm, tm; + Spline1D *msp = &sp->splines[es->major], *osp = &sp->splines[es->other]; + + /* Find the points of extrema on the curve discribing y behavior */ + if ( !RealNear(msp->a,0) ) { + /* cubic, possibly 2 extrema (possibly none) */ + b2_fourac = 4*msp->b*msp->b - 12*msp->a*msp->c; + if ( b2_fourac>=0 ) { + b2_fourac = sqrt(b2_fourac); + t1 = CheckExtremaForSingleBitErrors(msp,(-2*msp->b - b2_fourac) / (6*msp->a)); + t2 = CheckExtremaForSingleBitErrors(msp,(-2*msp->b + b2_fourac) / (6*msp->a)); + if ( t1>t2 ) { real temp = t1; t1 = t2; t2 = temp; } + else if ( t1==t2 ) t2 = 2.0; + + /* check for curves which have such a small slope they might */ + /* as well be horizontal */ + fm = es->major==1?sp->from->me.y:sp->from->me.x; + tm = es->major==1?sp->to->me.y:sp->to->me.x; + if ( fm==tm ) { + real m1, m2, d1, d2; + m1 = m2 = fm; + if ( t1>0 && t1<1 ) + m1 = ((msp->a*t1+msp->b)*t1+msp->c)*t1 + msp->d; + if ( t2>0 && t2<1 ) + m2 = ((msp->a*t2+msp->b)*t2+msp->c)*t2 + msp->d; + d1 = (m1-fm)*es->scale; + d2 = (m2-fm)*es->scale; + if ( d1>-.5 && d1<.5 && d2>-.5 && d2<.5 ) { + sp->ishorvert = true; + if ( es->genmajoredges ) + AddMajorEdge(es,sp); +return; /* Pretend it's horizontal, ignore it */ + } + } + } + } else if ( !RealNear(msp->b,0) ) { + /* Quadratic, at most one extremum */ + t1 = -msp->c/(2.0*msp->b); + } else if ( !RealNear(msp->c,0) ) { + /* linear, no points of extrema */ + } else { + sp->ishorvert = true; + if ( es->genmajoredges ) + AddMajorEdge(es,sp); +return; /* Horizontal line, ignore it */ + } + + if ( RealNear(t1,0)) t1=0; + if ( RealNear(t1,1)) t1=1; + if ( RealNear(t2,0)) t2=0; + if ( RealNear(t2,1)) t2=1; + if ( RealNear(t1,t2)) t2=2; + t=0; + if ( t1>0 && t1<1 ) { + AddEdge(es,sp,0,t1); + t = t1; + } + if ( t2>0 && t2<1 ) { + AddEdge(es,sp,t,t2); + t = t2; + } + AddEdge(es,sp,t,1.0); + if ( es->interesting ) { + /* Also store up points of extrema in X as interesting (we got the endpoints, just internals now)*/ + extended ot1, ot2; + int mpos; + SplineFindExtrema(osp,&ot1,&ot2); + if ( ot1>0 && ot1<1 ) { + mpos = (int) ceil( ( ((msp->a*ot1+msp->b)*ot1+msp->c)*ot1+msp->d )*es->scale-es->mmin ); + es->interesting[mpos] = 1; + } + if ( ot2>0 && ot2<1 ) { + mpos = (int) ceil( ( ((msp->a*ot2+msp->b)*ot2+msp->c)*ot2+msp->d )*es->scale-es->mmin ); + es->interesting[mpos] = 1; + } + } +} + +void FindEdgesSplineSet(SplinePointList *spl, EdgeList *es, int ignore_clip) { + Spline *spline, *first; + + for ( ; spl!=NULL; spl = spl->next ) { + if ( spl->first->prev!=NULL && spl->first->prev->from!=spl->first && + (!ignore_clip || (ignore_clip==1 && !spl->is_clip_path) || (ignore_clip==2 && spl->is_clip_path))) { + first = NULL; + es->last = es->splinesetfirst = NULL; + /* Set so there is no previous point!!! */ + for ( spline = spl->first->next; spline!=NULL && spline!=first; spline=spline->to->next ) { + AddSpline(es,spline); + if ( first==NULL ) first = spline; + } + if ( es->last!=NULL ) { + es->splinesetfirst->before = es->last; + es->last->after = es->splinesetfirst; + } + } + } +} + +Edge *ActiveEdgesInsertNew(EdgeList *es, Edge *active,int i) { + Edge *apt, *pr, *npt; + + for ( pr=NULL, apt=active, npt=es->edges[(int) i]; apt!=NULL && npt!=NULL; ) { + if ( npt->o_curo_cur ) { + npt->aenext = apt; + if ( pr==NULL ) + active = npt; + else + pr->aenext = npt; + pr = npt; + npt = npt->esnext; + } else { + pr = apt; + apt = apt->aenext; + } + } + while ( npt!=NULL ) { + npt->aenext = NULL; + if ( pr==NULL ) + active = npt; + else + pr->aenext = npt; + pr = npt; + npt = npt->esnext; + } +return( active ); +} + +Edge *ActiveEdgesRefigure(EdgeList *es, Edge *active,real i) { + Edge *apt, *pr; + int any; + + /* first remove any entry which doesn't intersect the new scan line */ + /* (ie. stopped on last line) */ + for ( pr=NULL, apt=active; apt!=NULL; apt = apt->aenext ) { + if ( apt->mmaxaenext; + else + pr->aenext = apt->aenext; + } else + pr = apt; + } + /* then move the active list to the next line */ + for ( apt=active; apt!=NULL; apt = apt->aenext ) { + Spline1D *osp = &apt->spline->splines[es->other]; + apt->t_cur = TOfNextMajor(apt,es,i); + apt->o_cur = ( ((osp->a*apt->t_cur+osp->b)*apt->t_cur+osp->c)*apt->t_cur + osp->d ) * es->scale; + } + /* reorder list */ + if ( active!=NULL ) { + any = true; + while ( any ) { + any = false; + for ( pr=NULL, apt=active; apt->aenext!=NULL; ) { + if ( apt->o_cur <= apt->aenext->o_cur ) { + /* still ordered */; + pr = apt; + apt = apt->aenext; + } else if ( pr==NULL ) { + active = apt->aenext; + apt->aenext = apt->aenext->aenext; + active->aenext = apt; + /* don't need to set any, since this reorder can't disorder the list */ + pr = active; + } else { + pr->aenext = apt->aenext; + apt->aenext = apt->aenext->aenext; + pr->aenext->aenext = apt; + any = true; + pr = pr->aenext; + } + } + } + } + /* Insert new nodes */ + active = ActiveEdgesInsertNew(es,active,i); +return( active ); +} + diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/splinefont.c b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/splinefont.c new file mode 100644 index 00000000000..1fa40c46072 --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/splinefont.c @@ -0,0 +1,642 @@ +/* Copyright (C) 2000-2008 by George Williams */ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "fontforgevw.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include "unicoderange.h" +#include "psfont.h" + +#ifdef _WIN32 +#define MKDIR(A,B) mkdir(A) +#else +#define MKDIR(A,B) mkdir(A,B) +#endif + + +void SFUntickAll(SplineFont *sf) { + int i; + + for ( i=0; iglyphcnt; ++i ) if ( sf->glyphs[i]!=NULL ) + sf->glyphs[i]->ticked = false; +} + +SplineChar *SCBuildDummy(SplineChar *dummy,SplineFont *sf,EncMap *map,int i) { + static char namebuf[100]; + static Layer layers[2]; + + memset(dummy,'\0',sizeof(*dummy)); + dummy->color = COLOR_DEFAULT; + dummy->layer_cnt = 2; + dummy->layers = layers; + if ( sf->cidmaster!=NULL ) { + /* CID fonts don't have encodings, instead we must look up the cid */ + if ( sf->cidmaster->loading_cid_map ) + dummy->unicodeenc = -1; + else + dummy->unicodeenc = CID2NameUni(FindCidMap(sf->cidmaster->cidregistry,sf->cidmaster->ordering,sf->cidmaster->supplement,sf->cidmaster), + i,namebuf,sizeof(namebuf)); + } else + dummy->unicodeenc = UniFromEnc(i,map->enc); + + if ( sf->cidmaster!=NULL ) + dummy->name = namebuf; + else if ( map->enc->psnames!=NULL && ienc->char_cnt && + map->enc->psnames[i]!=NULL ) + dummy->name = map->enc->psnames[i]; + else if ( dummy->unicodeenc==-1 ) + dummy->name = NULL; + else + dummy->name = (char *) StdGlyphName(namebuf,dummy->unicodeenc,sf->uni_interp,sf->for_new_glyphs); + if ( dummy->name==NULL ) { + /*if ( dummy->unicodeenc!=-1 || i<256 ) + dummy->name = ".notdef"; + else*/ { + int j; + sprintf( namebuf, "NameMe.%d", i); + j=0; + while ( SFFindExistingSlot(sf,-1,namebuf)!=-1 ) + sprintf( namebuf, "NameMe.%d.%d", i, ++j); + dummy->name = namebuf; + } + } + dummy->width = dummy->vwidth = sf->ascent+sf->descent; + if ( dummy->unicodeenc>0 && dummy->unicodeenc<0x10000 && + iscombining(dummy->unicodeenc)) { + /* Mark characters should be 0 width */ + dummy->width = 0; + /* Except in monospaced fonts on windows, where they should be the */ + /* same width as everything else */ + } + /* Actually, in a monospace font, all glyphs should be the same width */ + /* whether mark or not */ + if ( sf->pfminfo.panose_set && sf->pfminfo.panose[3]==9 && + sf->glyphcnt>0 ) { + for ( i=sf->glyphcnt-1; i>=0; --i ) + if ( SCWorthOutputting(sf->glyphs[i])) { + dummy->width = sf->glyphs[i]->width; + break; + } + } + dummy->parent = sf; + dummy->orig_pos = 0xffff; +return( dummy ); +} + +static SplineChar *_SFMakeChar(SplineFont *sf,EncMap *map,int enc) { + SplineChar dummy, *sc; + SplineFont *ssf; + int j, real_uni, gid; + extern const int cns14pua[], amspua[]; + + if ( enc>=map->enccount ) + gid = -1; + else + gid = map->map[enc]; + if ( sf->subfontcnt!=0 && gid!=-1 ) { + ssf = NULL; + for ( j=0; jsubfontcnt; ++j ) + if ( gidsubfonts[j]->glyphcnt ) { + ssf = sf->subfonts[j]; + if ( ssf->glyphs[gid]!=NULL ) { +return( ssf->glyphs[gid] ); + } + } + sf = ssf; + } + + if ( gid==-1 || (sc = sf->glyphs[gid])==NULL ) { + if (( map->enc->is_unicodebmp || map->enc->is_unicodefull ) && + ( enc>=0xe000 && enc<=0xf8ff ) && + ( sf->uni_interp==ui_ams || sf->uni_interp==ui_trad_chinese ) && + ( real_uni = (sf->uni_interp==ui_ams ? amspua : cns14pua)[enc-0xe000])!=0 ) { + if ( real_unienccount ) { + SplineChar *sc; + /* if necessary, create the real unicode code point */ + /* and then make us be a duplicate of it */ + sc = _SFMakeChar(sf,map,real_uni); + map->map[enc] = gid = sc->orig_pos; + SCCharChangedUpdate(sc,ly_all); +return( sc ); + } + } + + SCBuildDummy(&dummy,sf,map,enc); + /* Let's say a user has a postscript encoding where the glyph ".notdef" */ + /* is assigned to many slots. Once the user creates a .notdef glyph */ + /* all those slots should fill in. If they don't they damn well better*/ + /* when the user clicks on one to edit it */ + /* Used to do that with all encodings. It just confused people */ + if ( map->enc->psnames!=NULL && + (sc = SFGetChar(sf,dummy.unicodeenc,dummy.name))!=NULL ) { + map->map[enc] = sc->orig_pos; + AltUniAdd(sc,dummy.unicodeenc); +return( sc ); + } + sc = SFSplineCharCreate(sf); + sc->unicodeenc = dummy.unicodeenc; + sc->name = copy(dummy.name); + sc->width = dummy.width; + sc->orig_pos = 0xffff; + /*SCLigDefault(sc);*/ + SFAddGlyphAndEncode(sf,sc,map,enc); + } +return( sc ); +} + +SplineChar *SFMakeChar(SplineFont *sf,EncMap *map, int enc) { + int gid; + + if ( enc==-1 ) +return( NULL ); + if ( enc>=map->enccount ) + gid = -1; + else + gid = map->map[enc]; + if ( sf->mm!=NULL && (gid==-1 || sf->glyphs[gid]==NULL) ) { + int j; + _SFMakeChar(sf->mm->normal,map,enc); + for ( j=0; jmm->instance_count; ++j ) + _SFMakeChar(sf->mm->instances[j],map,enc); + } +return( _SFMakeChar(sf,map,enc)); +} + +struct unicoderange specialnames[] = { + { NULL, 0, 0, 0, 0, 0, 0 } +}; + + +static SplineFont *_SFReadPostscript(FILE *file,char *filename) { + FontDict *fd=NULL; + SplineFont *sf=NULL; + + ff_progress_change_stages(2); + fd = _ReadPSFont(file); + ff_progress_next_stage(); + ff_progress_change_line2(_("Interpreting Glyphs")); + if ( fd!=NULL ) { + sf = SplineFontFromPSFont(fd); + PSFontFree(fd); + if ( sf!=NULL ) + CheckAfmOfPostscript(sf,filename,sf->map); + } +return( sf ); +} + +static SplineFont *SFReadPostscript(char *filename) { + FontDict *fd=NULL; + SplineFont *sf=NULL; + + ff_progress_change_stages(2); + fd = ReadPSFont(filename); + ff_progress_next_stage(); + ff_progress_change_line2(_("Interpreting Glyphs")); + if ( fd!=NULL ) { + sf = SplineFontFromPSFont(fd); + PSFontFree(fd); + if ( sf!=NULL ) + CheckAfmOfPostscript(sf,filename,sf->map); + } +return( sf ); +} + + +struct compressors compressors[] = { + { ".gz", "gunzip", "gzip" }, + { ".bz2", "bunzip2", "bzip2" }, + { ".bz", "bunzip2", "bzip2" }, + { ".Z", "gunzip", "compress" }, +/* file types which are both archived and compressed (.tgz, .zip) are handled */ +/* by the archiver above */ + { NULL, NULL, NULL } +}; + +char *Decompress(char *name, int compression) { + char *dir = getenv("TMPDIR"); + char buf[1500]; + char *tmpfile; + + if ( dir==NULL ) dir = P_tmpdir; + tmpfile = galloc(strlen(dir)+strlen(GFileNameTail(name))+2); + strcpy(tmpfile,dir); + strcat(tmpfile,"/"); + strcat(tmpfile,GFileNameTail(name)); + *strrchr(tmpfile,'.') = '\0'; +#if defined( _NO_SNPRINTF ) || defined( __VMS ) + sprintf( buf, "%s < %s > %s", compressors[compression].decomp, name, tmpfile ); +#else + snprintf( buf, sizeof(buf), "%s < %s > %s", compressors[compression].decomp, name, tmpfile ); +#endif + if ( system(buf)==0 ) +return( tmpfile ); + free(tmpfile); +return( NULL ); +} + +static char *ForceFileToHaveName(FILE *file, char *exten) { + char tmpfilename[L_tmpnam+100]; + static int try=0; + FILE *newfile; + + forever { + sprintf( tmpfilename, P_tmpdir "/fontforge%d-%d", getpid(), try++ ); + if ( exten!=NULL ) + strcat(tmpfilename,exten); + if ( access( tmpfilename, F_OK )==-1 && + (newfile = fopen(tmpfilename,"w"))!=NULL ) { + char buffer[1024]; + int len; + while ( (len = fread(buffer,1,sizeof(buffer),file))>0 ) + fwrite(buffer,1,len,newfile); + fclose(newfile); + } +return(copy(tmpfilename)); /* The filename does not exist */ + } +} + +/* This does not check currently existing fontviews, and should only be used */ +/* by LoadSplineFont (which does) and by RevertFile (which knows what it's doing) */ +SplineFont *_ReadSplineFont(FILE *file,char *filename,enum openflags openflags) { + SplineFont *sf; + char ubuf[250], *temp; + int fromsfd = false; + int i; + char *pt, *strippedname, *oldstrippedname, *tmpfile=NULL, *paren=NULL, *fullname=filename, *rparen; + int len; + int checked; + int compression=0; + int wasurl = false, nowlocal = true; + + if ( filename==NULL ) +return( NULL ); + + strippedname = filename; + pt = strrchr(filename,'/'); + if ( pt==NULL ) pt = filename; + /* Someone gave me a font "Nafees Nastaleeq(Updated).ttf" and complained */ + /* that ff wouldn't open it */ + /* Now someone will complain about "Nafees(Updated).ttc(fo(ob)ar)" */ + if ( (paren = strrchr(pt,'('))!=NULL && + (rparen = strrchr(paren,')'))!=NULL && + rparen[1]=='\0' ) { + strippedname = copy(filename); + strippedname[paren-filename] = '\0'; + } + + pt = strrchr(strippedname,'.'); + + i = -1; + if ( pt!=NULL ) for ( i=0; compressors[i].ext!=NULL; ++i ) + if ( strcmp(compressors[i].ext,pt)==0 ) + break; + oldstrippedname = strippedname; + if ( i==-1 || compressors[i].ext==NULL ) + i=-1; + else { + if ( file!=NULL ) { + char *spuriousname = ForceFileToHaveName(file,compressors[i].ext); + tmpfile = Decompress(spuriousname,i); + fclose(file); file = NULL; + unlink(spuriousname); free(spuriousname); + } else + tmpfile = Decompress(strippedname,i); + if ( tmpfile!=NULL ) { + strippedname = tmpfile; + } else { + ff_post_error(_("Decompress Failed!"),_("Decompress Failed!")); +return( NULL ); + } + compression = i+1; + if ( strippedname!=filename && paren!=NULL ) { + fullname = galloc(strlen(strippedname)+strlen(paren)+1); + strcpy(fullname,strippedname); + strcat(fullname,paren); + } else + fullname = strippedname; + } + + /* If there are no pfaedit windows, give them something to look at */ + /* immediately. Otherwise delay a bit */ + strcpy(ubuf,_("Loading font from ")); + len = strlen(ubuf); + if ( !wasurl || i==-1 ) /* If it wasn't compressed, or it wasn't an url, then the fullname is reasonable, else use the original name */ + strncat(ubuf,temp = def2utf8_copy(GFileNameTail(fullname)),100); + else + strncat(ubuf,temp = def2utf8_copy(GFileNameTail(filename)),100); + free(temp); + ubuf[100+len] = '\0'; + ff_progress_start_indicator(FontViewFirst()==NULL?0:10,_("Loading..."),ubuf,_("Reading Glyphs"),0,1); + ff_progress_enable_stop(0); + + if ( file==NULL ) { + file = fopen(strippedname,"rb"); + nowlocal = true; + } + + sf = NULL; + checked = false; +/* checked == false => not checked */ +/* checked == 'u' => UFO */ +/* checked == 't' => TTF/OTF */ +/* checked == 'p' => pfb/general postscript */ +/* checked == 'P' => pdf */ +/* checked == 'c' => cff */ +/* checked == 'S' => svg */ +/* checked == 'f' => sfd */ +/* checked == 'F' => sfdir */ +/* checked == 'b' => bdf */ +/* checked == 'i' => ikarus */ + if ( file!=NULL ) { + /* Try to guess the file type from the first few characters... */ + int ch1 = getc(file); + int ch2 = getc(file); + int ch3 = getc(file); + int ch4 = getc(file); + int ch9, ch10; + fseek(file, 98, SEEK_SET); + ch9 = getc(file); + ch10 = getc(file); + rewind(file); + if (( ch1==0 && ch2==1 && ch3==0 && ch4==0 ) || + (ch1=='O' && ch2=='T' && ch3=='T' && ch4=='O') || + (ch1=='t' && ch2=='r' && ch3=='u' && ch4=='e') || + (ch1=='t' && ch2=='t' && ch3=='c' && ch4=='f') ) { + sf = _SFReadTTF(file,0,openflags,fullname,NULL); + checked = 't'; + } else if (( ch1=='%' && ch2=='!' ) || + ( ch1==0x80 && ch2=='\01' ) ) { /* PFB header */ + sf = _SFReadPostscript(file,fullname); + checked = 'p'; + } else if ( ch1==1 && ch2==0 && ch3==4 ) { + int len; + fseek(file,0,SEEK_END); + len = ftell(file); + fseek(file,0,SEEK_SET); + sf = _CFFParse(file,len,NULL); + checked = 'c'; + } /* Too hard to figure out a valid mark for a mac resource file */ + if ( file!=NULL ) fclose(file); + } + + if ( sf!=NULL ) + /* good */; + else if (( strmatch(fullname+strlen(fullname)-4, ".ttf")==0 || + strmatch(fullname+strlen(strippedname)-4, ".ttc")==0 || + strmatch(fullname+strlen(fullname)-4, ".gai")==0 || + strmatch(fullname+strlen(fullname)-4, ".otf")==0 || + strmatch(fullname+strlen(fullname)-4, ".otb")==0 ) && checked!='t') { + sf = SFReadTTF(fullname,0,openflags); + } else if ( strmatch(fullname+strlen(strippedname)-4, ".bin")==0 || + strmatch(fullname+strlen(strippedname)-4, ".hqx")==0 || + strmatch(fullname+strlen(strippedname)-6, ".dfont")==0 ) { + sf = SFReadMacBinary(fullname,0,openflags); + } else if ( (strmatch(fullname+strlen(fullname)-4, ".pfa")==0 || + strmatch(fullname+strlen(fullname)-4, ".pfb")==0 || + strmatch(fullname+strlen(fullname)-4, ".pf3")==0 || + strmatch(fullname+strlen(fullname)-4, ".cid")==0 || + strmatch(fullname+strlen(fullname)-4, ".gsf")==0 || + strmatch(fullname+strlen(fullname)-4, ".pt3")==0 || + strmatch(fullname+strlen(fullname)-3, ".ps")==0 ) && checked!='p' ) { + sf = SFReadPostscript(fullname); + } else if ( strmatch(fullname+strlen(fullname)-4, ".cff")==0 && checked!='c' ) { + sf = CFFParse(fullname); + } else { + sf = SFReadMacBinary(fullname,0,openflags); + } + ff_progress_end_indicator(); + + if ( sf!=NULL ) { + SplineFont *norm = sf->mm!=NULL ? sf->mm->normal : sf; + if ( compression!=0 ) { + free(sf->filename); + *strrchr(oldstrippedname,'.') = '\0'; + sf->filename = copy( oldstrippedname ); + } + if ( fromsfd ) + sf->compression = compression; + free( norm->origname ); + if ( sf->chosenname!=NULL && strippedname==filename ) { + norm->origname = galloc(strlen(filename)+strlen(sf->chosenname)+8); + strcpy(norm->origname,filename); + strcat(norm->origname,"("); + strcat(norm->origname,sf->chosenname); + strcat(norm->origname,")"); + } else + norm->origname = copy(filename); + free( norm->chosenname ); norm->chosenname = NULL; + if ( sf->mm!=NULL ) { + int j; + for ( j=0; jmm->instance_count; ++j ) { + free(sf->mm->instances[j]->origname); + sf->mm->instances[j]->origname = copy(norm->origname); + } + } + } else if ( !GFileExists(filename) ) + ff_post_error(_("Couldn't open font"),_("The requested file, %.100s, does not exist"),GFileNameTail(filename)); + else if ( !GFileReadable(filename) ) + ff_post_error(_("Couldn't open font"),_("You do not have permission to read %.100s"),GFileNameTail(filename)); + else + ff_post_error(_("Couldn't open font"),_("%.100s is not in a known format (or is so badly corrupted as to be unreadable)"),GFileNameTail(filename)); + + if ( oldstrippedname!=filename ) + free(oldstrippedname); + if ( fullname!=filename && fullname!=strippedname ) + free(fullname); + if ( tmpfile!=NULL ) { + unlink(tmpfile); + free(tmpfile); + } + if ( (openflags&of_fstypepermitted) && sf!=NULL && (sf->pfminfo.fstype&0xff)==0x0002 ) { + /* Ok, they have told us from a script they have access to the font */ + } else if ( !fromsfd && sf!=NULL && (sf->pfminfo.fstype&0xff)==0x0002 ) { + char *buts[3]; + buts[0] = _("_Yes"); buts[1] = _("_No"); buts[2] = NULL; + if ( ff_ask(_("Restricted Font"),(const char **) buts,1,1,_("This font is marked with an FSType of 2 (Restricted\nLicense). That means it is not editable without the\npermission of the legal owner.\n\nDo you have such permission?"))==1 ) { + SplineFontFree(sf); +return( NULL ); + } + } +return( sf ); +} + +SplineFont *ReadSplineFont(char *filename,enum openflags openflags) { +return( _ReadSplineFont(NULL,filename,openflags)); +} + + +SplineFont *ReadSplineFontInfo(char *filename,enum openflags openflags) { + SplineFont *sf, *sf_ptr; + char **fontlist; + char *pt =NULL, *strippedname=filename, *paren=NULL, *fullname=filename; + FILE *foo = NULL; + int checked = 0; + char s[512] = {0}; + + if ( filename==NULL ) +return( NULL ); + + pt = strrchr(filename,'/'); + if ( pt==NULL ) pt = filename; + if ( (paren=strchr(pt,'('))!=NULL && strchr(paren,')')!=NULL ) { + strippedname = copy(filename); + strippedname[paren-filename] = '\0'; + } + + sf = NULL; + foo = fopen(strippedname,"rb"); + checked = false; + if ( foo!=NULL ) { + /* Try to guess the file type from the first few characters... */ + int ch1 = getc(foo); + int ch2 = getc(foo); + int ch3 = getc(foo); + int ch4 = getc(foo); + fclose(foo); + if (( ch1==0 && ch2==1 && ch3==0 && ch4==0 ) || + (ch1=='O' && ch2=='T' && ch3=='T' && ch4=='O') || + (ch1=='t' && ch2=='r' && ch3=='u' && ch4=='e') ) { + sf = SFReadTTFInfo(fullname,0,openflags); + checked = 't'; + } else if ((ch1=='t' && ch2=='t' && ch3=='c' && ch4=='f')) { + /* read all fonts in a collection */ + fontlist = NamesReadTTF(fullname); + if (fontlist) { + while (*fontlist != NULL) { + snprintf(s,511, "%s(%s)", fullname,*fontlist); + sf_ptr = SFReadTTFInfo(s,0,openflags); + if (sf != NULL) + sf_ptr->next = sf; + sf = sf_ptr; + fontlist++; + } + } + } else if ( strmatch(fullname+strlen(strippedname)-4, ".bin")==0 || + strmatch(fullname+strlen(strippedname)-4, ".hqx")==0 || + strmatch(fullname+strlen(strippedname)-6, ".dfont")==0 ) { + fontlist = NamesReadMacBinary(fullname); + if (fontlist) { + while (*fontlist != NULL) { + snprintf(s,511, "%s(%s)", fullname,*fontlist); + sf_ptr = SFReadMacBinaryInfo(s,0,openflags); + if (sf != NULL) + sf_ptr->next = sf; + sf = sf_ptr; + fontlist++; + } + } + } else { + sf = ReadSplineFont (fullname, openflags); + } + } + if ( strippedname!=filename ) + free(strippedname); +return( sf ); +} + + +/* Use URW 4 letter abbreviations */ +char *knownweights[] = { "Demi", "Bold", "Regu", "Medi", "Book", "Thin", + "Ligh", "Heav", "Blac", "Ultr", "Nord", "Norm", "Gras", "Stan", "Halb", + "Fett", "Mage", "Mitt", "Buch", NULL }; +char *realweights[] = { "Demi", "Bold", "Regular", "Medium", "Book", "Thin", + "Light", "Heavy", "Black", "Ultra", "Nord", "Normal", "Gras", "Standard", "Halbfett", + "Fett", "Mager", "Mittel", "Buchschrift", NULL}; +static char *moreweights[] = { "ExtraLight", "VeryLight", NULL }; +char **noticeweights[] = { moreweights, realweights, knownweights, NULL }; + +static char *modifierlist[] = { "Ital", "Obli", "Kursive", "Cursive", "Slanted", + "Expa", "Cond", NULL }; +static char *modifierlistfull[] = { "Italic", "Oblique", "Kursive", "Cursive", "Slanted", + "Expanded", "Condensed", NULL }; +static char **mods[] = { knownweights, modifierlist, NULL }; +static char **fullmods[] = { realweights, modifierlistfull, NULL }; + +char *_GetModifiers(char *fontname, char *familyname,char *weight) { + char *pt, *fpt; + int i, j; + + /* URW fontnames don't match the familyname */ + /* "NimbusSanL-Regu" vs "Nimbus Sans L" (note "San" vs "Sans") */ + /* so look for a '-' if there is one and use that as the break point... */ + + if ( (fpt=strchr(fontname,'-'))!=NULL ) { + ++fpt; + if ( *fpt=='\0' ) + fpt = NULL; + } else if ( familyname!=NULL ) { + for ( pt = fontname, fpt=familyname; *fpt!='\0' && *pt!='\0'; ) { + if ( *fpt == *pt ) { + ++fpt; ++pt; + } else if ( *fpt==' ' ) + ++fpt; + else if ( *pt==' ' ) + ++pt; + else if ( *fpt=='a' || *fpt=='e' || *fpt=='i' || *fpt=='o' || *fpt=='u' ) + ++fpt; /* allow vowels to be omitted from family when in fontname */ + else + break; + } + if ( *fpt=='\0' && *pt!='\0' ) + fpt = pt; + else + fpt = NULL; + } + + if ( fpt == NULL ) { + for ( i=0; mods[i]!=NULL; ++i ) for ( j=0; mods[i][j]!=NULL; ++j ) { + pt = strstr(fontname,mods[i][j]); + if ( pt!=NULL && (fpt==NULL || ptfontname,sf->familyname,sf->weight)); +} + diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/splinefont.h b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/splinefont.h new file mode 100644 index 00000000000..fa989d61543 --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/splinefont.h @@ -0,0 +1,3044 @@ +/* Copyright (C) 2000-2008 by George Williams */ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef _SPLINEFONT_H +#define _SPLINEFONT_H + +#include "basics.h" +#include "configure-pfaedit.h" +#ifdef HAVE_ICONV_H +# include +/* libiconv.h defines iconv as taking a const pointer for inbuf. iconv doesn't*/ +# ifdef _LIBICONV_VERSION +# define ICONV_CONST const +# else +# define ICONV_CONST +# endif +#else +# include +# define ICONV_CONST +#endif + +#if defined( FONTFORGE_CONFIG_USE_LONGDOUBLE ) +# define real long double +# define bigreal long double +#elif defined( FONTFORGE_CONFIG_USE_DOUBLE ) +# define real double +# define bigreal double +#else +# define real float +# define bigreal double +#endif + +#if defined( HAVE_LONG_DOUBLE ) && defined( This_does_not_seem_to_make_a_difference ) +# define extended long double +# define CheckExtremaForSingleBitErrors(sp,t) (t) +# define EXTENDED_IS_LONG_DOUBLE 1 +#else +# define extended double +#endif + /* Solaris wants to define extended to be unsigned [3] unless we do this*/ +#define _EXTENDED + +#define CHR(ch1,ch2,ch3,ch4) (((ch1)<<24)|((ch2)<<16)|((ch3)<<8)|(ch4)) + +#define MmMax 16 /* PS says at most this many instances for type1/2 mm fonts */ +#define AppleMmMax 26 /* Apple sort of has a limit of 4095, but we only support this many */ + +typedef struct ipoint { + int x; + int y; +} IPoint; + +typedef struct basepoint { + real x; + real y; +} BasePoint; + +typedef struct dbasepoint { + bigreal x; + bigreal y; +} DBasePoint; + +typedef struct tpoint { + real x; + real y; + real t; +} TPoint; + +typedef struct dbounds { + real minx, maxx; + real miny, maxy; +} DBounds; + +typedef struct ibounds { + int minx, maxx; + int miny, maxy; +} IBounds; + +typedef struct val { + enum val_type { v_int, v_real, v_str, v_unicode, v_lval, v_arr, v_arrfree, + v_int32pt, v_int16pt, v_int8pt, v_void } type; + union { + int ival; + real fval; + char *sval; + struct val *lval; + struct array *aval; + uint32 *u32ptval; + uint16 *u16ptval; + uint8 *u8ptval; + } u; +} Val; /* Used by scripting */ + +struct psdict { + int cnt, next; + char **keys; + char **values; +}; + +struct pschars { + int cnt, next; + char **keys; + uint8 **values; + int *lens; + int bias; /* for type2 strings */ +}; + +enum linejoin { + lj_miter, /* Extend lines until they meet */ + lj_round, /* circle centered at the join of expand radius */ + lj_bevel, /* Straight line between the ends of next and prev */ + lj_inherited +}; +enum linecap { + lc_butt, /* equiv to lj_bevel, straight line extends from one side to other */ + lc_round, /* semi-circle */ + lc_square, /* Extend lines by radius, then join them */ + lc_inherited +}; +enum spreadMethod { + sm_pad, sm_reflect, sm_repeat +}; +#define COLOR_INHERITED 0xfffffffe +struct gradient { + BasePoint start; /* focal of a radial gradient, start of a linear */ + BasePoint stop; /* center of a radial gradient, end of a linear */ + real radius; /* 0=>linear gradient, else radius of a radial gradient */ + enum spreadMethod sm; + int stop_cnt; + struct grad_stops { + real offset; + uint32 col; + real opacity; + } *grad_stops; +}; + +struct pattern { + char *pattern; + real width, height; /* Pattern is scaled to be repeated every width/height (in user coordinates) */ + real transform[6]; + /* Used during rasterization process */ + struct bdfchar *pat; + real invtrans[6]; + int bminx, bminy, bwidth, bheight; /* of the pattern at bdfchar scale */ +}; + +struct brush { + uint32 col; + float opacity; /* number between [0,1], only for svg/pdf */ + struct pattern *pattern; /* A pattern to be tiled */ + struct gradient *gradient; /* A gradient fill */ +}; +#define WIDTH_INHERITED (-1) +#define DASH_INHERITED 255 /* if the dashes[0]==0 && dashes[1]==DASH_INHERITED */ +#define DASH_MAX 8 +typedef unsigned char DashType; +struct pen { + struct brush brush; + uint8 linejoin; + uint8 linecap; + float width; + real trans[4]; + DashType dashes[DASH_MAX]; +}; + +struct spline; +enum si_type { si_std, si_caligraphic, si_elipse, si_centerline }; +/* If you change this structure you may need to update MakeStrokeDlg */ +/* and cvpalettes.c both contain statically initialized StrokeInfos */ +typedef struct strokeinfo { + real radius; /* or major axis of pen */ + enum linejoin join; + enum linecap cap; + enum si_type stroke_type; + unsigned int toobigwarn: 1; + unsigned int removeinternal: 1; + unsigned int removeexternal: 1; + unsigned int removeoverlapifneeded: 1; + unsigned int gottoobig: 1; + unsigned int gottoobiglocal: 1; + real penangle; + real ratio; /* ratio of minor pen axis to major */ +/* For eplipse */ + real minorradius; +/* For freehand tool */ + real radius2; + int pressure1, pressure2; +/* End freehand tool */ + bigreal c,s; + real xoff[8], yoff[8]; + void *data; + bigreal (*factor)(void *data,struct spline *spline,real t); +} StrokeInfo; + +enum overlap_type { over_remove, over_rmselected, over_intersect, over_intersel, + over_exclude, over_findinter, over_fisel }; + +enum simpify_flags { sf_cleanup=-1, sf_normal=0, sf_ignoreslopes=1, + sf_ignoreextremum=2, sf_smoothcurves=4, sf_choosehv=8, + sf_forcelines=0x10, sf_nearlyhvlines=0x20, + sf_mergelines=0x40, sf_setstart2extremum=0x80, + sf_rmsingletonpoints=0x100 }; +struct simplifyinfo { + int flags; + bigreal err; + bigreal tan_bounds; + bigreal linefixup; + bigreal linelenmax; /* Don't simplify any straight lines longer than this */ + int set_as_default; + int check_selected_contours; +}; + +typedef struct italicinfo { + double italic_angle; + double xheight_percent; + struct hsquash { double lsb_percent, stem_percent, counter_percent, rsb_percent; } + lc, uc, neither; + enum { srf_flat, srf_simpleslant, srf_complexslant } secondary_serif; + /* | | (flat) | | (simple) | | (complex) */ + /* | | | / | / */ + /* | | | / | / */ + /* +----+ |/ \ / */ + + unsigned int transform_bottom_serifs: 1; + unsigned int transform_top_xh_serifs: 1; /* Those at x-height */ + unsigned int transform_top_as_serifs: 1; /* Those at ascender-height */ + unsigned int transform_diagon_serifs: 1; /* Those at baseline/xheight */ + + unsigned int a_from_d: 1; /* replace the "a" glyph with the variant which looks like a "d" without an ascender */ + /* When I say "f" I also mean "f_f" ligature, "longs", cyrillic phi and other things shaped like "f" */ + unsigned int f_long_tail: 1; /* Some Italic fonts have the "f" grow an extension of the main stem below the baseline */ + unsigned int f_rotate_top: 1; /* Most Italic fonts take the top curve of the "f", rotate it 180 and attach to the bottom */ + unsigned int pq_deserif: 1; /* Remove a serif from the descender of p or q and replace with a secondary serif as above */ + + /* Unsupported */ + /* e becomes rounder, cross bar slightly slanted */ + /* g closed counter at bottom */ + /* k closed counter at top */ + /* v-z diagonal stems become more curvatious */ + + unsigned int cyrl_phi: 1; /* Gains an "f" like top, bottom treated like "f" */ + unsigned int cyrl_i: 1; /* Turns into a latin u */ + unsigned int cyrl_pi: 1; /* Turns into a latin n */ + unsigned int cyrl_te: 1; /* Turns into a latin m */ + unsigned int cyrl_sha: 1; /* Turns into a latin m rotated 180 */ + unsigned int cyrl_dje: 1; /* Turns into a latin smallcaps T */ + unsigned int cyrl_dzhe: 1; /* Turns into a latin u */ + /* Is there a difference between dzhe and i? both look like u to me */ + + /* Unsupported */ + /* u432 curved B */ + /* u433 strange gamma */ + /* u434 normal delta */ + /* u436 */ + /* u43b lambda ? */ + /* u43c */ + /* u446 */ + /* u449 */ + /* u449 */ + /* u44a */ + +/* This half of the structure gets filled in later */ + double tan_ia; + double x_height; + double pq_depth; + double ascender_height; + double emsize; + int order2; + struct splinefont *sf; + int layer; + double serif_extent, serif_height; + struct splinepoint *f_start, *f_end; /* start has next pointing into the f head and up */ + struct splinepoint *ff_start1, *ff_end1, *ff_start2, *ff_end2; + double f_height, ff_height; +} ItalicInfo; + +typedef struct bluedata { + real xheight, xheighttop; /* height of "x" and "o" (u,v,w,x,y,z) */ + real caph, caphtop; /* height of "I" and "O" */ + real base, basebelow; /* bottom of "I" and "O" */ + real ascent; /* height of "l" */ + real descent; /* depth of "p" */ + real numh, numhtop; /* height of "7" and "8" */ /* numbers with ascenders */ + int bluecnt; /* If the private dica contains bluevalues... */ + real blues[12][2]; /* 7 pairs from bluevalues, 5 from otherblues */ +} BlueData; + +typedef struct bdffloat { + int16 xmin,xmax,ymin,ymax; + int16 bytes_per_line; + unsigned int byte_data:1; + uint8 depth; + uint8 *bitmap; +} BDFFloat; + +/* OpenType does not document 'dflt' as a language, but we'll use it anyway. */ +/* (Adobe uses it too) we'll turn it into a default entry when we output it. */ +#define DEFAULT_LANG CHR('d','f','l','t') +/* The OpenType spec says in one place that the default script is 'dflt' and */ +/* in another that it is 'DFLT'. 'DFLT' is correct */ +#define DEFAULT_SCRIPT CHR('D','F','L','T') +#define REQUIRED_FEATURE CHR(' ','R','Q','D') + +enum otlookup_type { + ot_undef = 0, /* Not a lookup type */ + gsub_start = 0x000, /* Not a lookup type */ + gsub_single = 0x001, + gsub_multiple = 0x002, + gsub_alternate = 0x003, + gsub_ligature = 0x004, + gsub_context = 0x005, + gsub_contextchain = 0x006, + /* GSUB extension 7 */ + gsub_reversecchain = 0x008, + /* mac state machines */ + morx_indic = 0x0fd, + morx_context = 0x0fe, + morx_insert = 0x0ff, + /* ********************* */ + gpos_start = 0x100, /* Not a lookup type */ + + gpos_single = 0x101, + gpos_pair = 0x102, + gpos_cursive = 0x103, + gpos_mark2base = 0x104, + gpos_mark2ligature = 0x105, + gpos_mark2mark = 0x106, + gpos_context = 0x107, + gpos_contextchain = 0x108, + /* GPOS extension 9 */ + kern_statemachine = 0x1ff + + /* otlookup&0xff == lookup type for the appropriate table */ + /* otlookup>>8: 0=>GSUB, 1=>GPOS */ +}; + +enum otlookup_typemasks { + gsub_single_mask = 0x00001, + gsub_multiple_mask = 0x00002, + gsub_alternate_mask = 0x00004, + gsub_ligature_mask = 0x00008, + gsub_context_mask = 0x00010, + gsub_contextchain_mask = 0x00020, + gsub_reversecchain_mask = 0x00040, + morx_indic_mask = 0x00080, + morx_context_mask = 0x00100, + morx_insert_mask = 0x00200, + /* ********************* */ + gpos_single_mask = 0x00400, + gpos_pair_mask = 0x00800, + gpos_cursive_mask = 0x01000, + gpos_mark2base_mask = 0x02000, + gpos_mark2ligature_mask = 0x04000, + gpos_mark2mark_mask = 0x08000, + gpos_context_mask = 0x10000, + gpos_contextchain_mask = 0x20000, + kern_statemachine_mask = 0x40000 +}; + +#define MAX_LANG 4 /* If more than this we allocate more_langs in chunks of MAX_LANG */ +struct scriptlanglist { + uint32 script; + uint32 langs[MAX_LANG]; + uint32 *morelangs; + int lang_cnt; + struct scriptlanglist *next; +}; + +extern struct opentype_feature_friendlynames { + uint32 tag; + char *tagstr; + char *friendlyname; + int masks; +} friendlies[]; + +typedef struct featurescriptlanglist { + uint32 featuretag; + struct scriptlanglist *scripts; + struct featurescriptlanglist *next; + unsigned int ismac: 1; /* treat the featuretag as a mac feature/setting */ +} FeatureScriptLangList; + +enum pst_flags { pst_r2l=1, pst_ignorebaseglyphs=2, pst_ignoreligatures=4, + pst_ignorecombiningmarks=8 }; + +typedef struct otlookup { + struct otlookup *next; + enum otlookup_type lookup_type; + uint16 lookup_flags; + char *lookup_name; + FeatureScriptLangList *features; + struct lookup_subtable { + char *subtable_name; + char *suffix; /* for gsub_single, used to find a default replacement */ + struct otlookup *lookup; + unsigned int unused: 1; + unsigned int per_glyph_pst_or_kern: 1; + unsigned int anchor_classes: 1; + unsigned int vertical_kerning: 1; + unsigned int ticked: 1; + struct kernclass *kc; + struct generic_fpst *fpst; + struct generic_asm *sm; + /* Each time an item is added to a lookup we must place it into a */ + /* subtable. If it's a kerning class, fpst or state machine it has */ + /* a subtable all to itself. If it's an anchor class it can share */ + /* a subtable with other anchor classes (merge with). If it's a glyph */ + /* PST it may share a subtable with other PSTs */ + /* Note items may only be placed in lookups in which they fit. Can't */ + /* put kerning data in a gpos_single lookup, etc. */ + struct lookup_subtable *next; + int32 subtable_offset; + int32 *extra_subtables; + /* If a kerning subtable has too much stuff in it, we are prepared to */ + /* break it up into several smaller subtables, each of which has */ + /* an offset in this list (extra-subtables[0]==subtable_offset) */ + /* the list is terminated by an entry of -1 */ + } *subtables; + unsigned int unused: 1; /* No subtable is used (call SFFindUnusedLookups before examining) */ + unsigned int empty: 1; /* No subtable is used, and no anchor classes are used */ + unsigned int store_in_afm: 1; /* Used for ligatures, some get stored */ + /* 'liga' generally does, but 'frac' doesn't */ + unsigned int needs_extension: 1; /* Used during opentype generation */ + unsigned int temporary_kern: 1; /* Used when decomposing kerning classes into kern pairs for older formats */ + unsigned int def_lang_checked: 1; + unsigned int def_lang_found: 1; + unsigned int ticked: 1; + int16 subcnt; /* Actual number of subtables we will output */ + /* Some of our subtables may contain no data */ + /* Some may be too big and need to be broken up.*/ + /* So this field may be different than just counting the subtables */ + int lookup_index; /* used during opentype generation */ + uint32 lookup_offset; + uint32 lookup_length; + char *tempname; +} OTLookup; + +#ifdef FONTFORGE_CONFIG_DEVICETABLES +typedef struct devicetab { + uint16 first_pixel_size, last_pixel_size; /* A range of point sizes to which this table applies */ + int8 *corrections; /* a set of pixel corrections, one for each point size */ +} DeviceTable; + +typedef struct valdev { /* Value records can have four associated device tables */ + DeviceTable xadjust; + DeviceTable yadjust; + DeviceTable xadv; + DeviceTable yadv; +} ValDevTab; +#endif + +enum anchorclass_type { act_mark, act_mkmk, act_curs, act_mklg }; +typedef struct anchorclass { + char *name; /* in utf8 */ + struct lookup_subtable *subtable; + uint8 type; /* anchorclass_type */ + uint8 has_base; + uint8 processed, has_mark, matches, ac_num; + uint8 ticked; + struct anchorclass *next; +} AnchorClass; + +enum anchor_type { at_mark, at_basechar, at_baselig, at_basemark, at_centry, at_cexit, at_max }; +typedef struct anchorpoint { + AnchorClass *anchor; + BasePoint me; +#ifdef FONTFORGE_CONFIG_DEVICETABLES + DeviceTable xadjust, yadjust; +#endif + unsigned int type: 4; + unsigned int selected: 1; + unsigned int ticked: 1; + unsigned int has_ttf_pt: 1; + uint16 ttf_pt_index; + int16 lig_index; + struct anchorpoint *next; +} AnchorPoint; + +typedef struct kernpair { + struct lookup_subtable *subtable; + struct splinechar *sc; + int16 off; + uint16 kcid; /* temporary value */ +#ifdef FONTFORGE_CONFIG_DEVICETABLES + DeviceTable *adjust; /* Only adjustment in one dimen, if more needed use pst */ +#endif + struct kernpair *next; +} KernPair; + +typedef struct kernclass { + int first_cnt, second_cnt; /* Count of classes for first and second chars */ + char **firsts; /* list of a space seperated list of char names */ + char **seconds; /* one entry for each class. Entry 0 is null */ + /* and means everything not specified elsewhere */ + struct lookup_subtable *subtable; + uint16 kcid; /* Temporary value, used for many things briefly */ + int16 *offsets; /* array of first_cnt*second_cnt entries */ +#ifdef FONTFORGE_CONFIG_DEVICETABLES + DeviceTable *adjusts; /* array of first_cnt*second_cnt entries */ +#endif + struct kernclass *next; +} KernClass; + +enum possub_type { pst_null, pst_position, pst_pair, + pst_substitution, pst_alternate, + pst_multiple, pst_ligature, + pst_lcaret /* must be pst_max-1, see charinfo.c*/, + pst_max, + /* These are not psts but are related so it's handly to have values for them */ + pst_kerning = pst_max, pst_vkerning, pst_anchors, + /* And these are fpsts */ + pst_contextpos, pst_contextsub, pst_chainpos, pst_chainsub, + pst_reversesub, fpst_max, + /* And these are used to specify a kerning pair where the current */ + /* char is the final glyph rather than the initial one */ + /* A kludge used when cutting and pasting features */ + pst_kernback, pst_vkernback + }; + +struct vr { + int16 xoff, yoff, h_adv_off, v_adv_off; +#ifdef FONTFORGE_CONFIG_DEVICETABLES + ValDevTab *adjust; +#endif +}; + +typedef struct generic_pst { + unsigned int ticked: 1; + unsigned int temporary: 1; /* Used in afm ligature closure */ + /* enum possub_type*/ uint8 type; + struct lookup_subtable *subtable; + struct generic_pst *next; + union { + struct vr pos; + struct { char *paired; struct vr *vr; } pair; + struct { char *variant; } subs; + struct { char *components; } mult, alt; + struct { char *components; struct splinechar *lig; } lig; + struct { int16 *carets; int cnt; } lcaret; /* Ligature caret positions */ + } u; +} PST; + +typedef struct liglist { + PST *lig; + struct splinechar *first; /* First component */ + struct splinecharlist *components; /* Other than the first */ + struct liglist *next; + int ccnt; /* Component count. (includes first component) */ +} LigList; + +enum fpossub_format { pst_glyphs, pst_class, pst_coverage, + pst_reversecoverage, pst_formatmax }; + +typedef struct generic_fpst { + uint16 /*enum sfpossub_type*/ type; + uint16 /*enum fpossub_format*/ format; + struct lookup_subtable *subtable; + struct generic_fpst *next; + uint16 nccnt, bccnt, fccnt; + uint16 rule_cnt; + char **nclass, **bclass, **fclass; + struct fpst_rule { + union { + struct fpg { char *names, *back, *fore; } glyph; + struct fpc { int ncnt, bcnt, fcnt; uint16 *nclasses, *bclasses, *fclasses, *allclasses; } class; + struct fpv { int ncnt, bcnt, fcnt; char **ncovers, **bcovers, **fcovers; } coverage; + struct fpr { int always1, bcnt, fcnt; char **ncovers, **bcovers, **fcovers; char *replacements; } rcoverage; + } u; + int lookup_cnt; + struct seqlookup { + int seq; + struct otlookup *lookup; + } *lookups; + } *rules; + uint8 ticked; + uint8 effectively_by_glyphs; +} FPST; + +enum asm_type { asm_indic, asm_context, asm_lig, asm_simple=4, asm_insert, + asm_kern=0x11 }; +enum asm_flags { asm_vert=0x8000, asm_descending=0x4000, asm_always=0x2000 }; + +typedef struct generic_asm { /* Apple State Machine */ + struct generic_asm *next; + uint16 /*enum asm_type*/ type; + struct lookup_subtable *subtable; /* Lookup contains feature setting info */ + uint16 flags; /* 0x8000=>vert, 0x4000=>r2l, 0x2000=>hor&vert */ + uint8 ticked; + + uint16 class_cnt, state_cnt; + char **classes; + struct asm_state { + uint16 next_state; + uint16 flags; + union { + struct { + struct otlookup *mark_lookup; /* for contextual glyph subs (tag of a nested lookup) */ + struct otlookup *cur_lookup; /* for contextual glyph subs */ + } context; + struct { + char *mark_ins; + char *cur_ins; + } insert; + struct { + int16 *kerns; + int kcnt; + } kern; + } u; + } *state; + /*uint32 opentype_tag; */ /* If converted from opentype */ +} ASM; +/* State Flags: + Indic: + 0x8000 mark current glyph as first in rearrangement + 0x4000 don't advance to next glyph + 0x2000 mark current glyph as last + 0x000f verb + 0 = no change 8 = AxCD => CDxA + 1 = Ax => xA 9 = AxCD => DCxA + 2 = xD => Dx a = ABxD => DxAB + 3 = AxD => DxA b = ABxD => DxBA + 4 = ABx => xAB c = ABxCD => CDxAB + 5 = ABx => xBA d = ABxCD => CDxBA + 6 = xCD => CDx e = ABxCD => DCxAB + 7 = xCD => DCx f = ABxCD => DCxBA + Contextual: + 0x8000 mark current glyph + 0x4000 don't advance to next glyph + Insert: + 0x8000 mark current glyph + 0x4000 don't advance to next glyph + 0x2000 current is Kashida like + 0x1000 mark is Kashida like + 0x0800 current insert before + 0x0400 mark insert before + 0x03e0 count of chars to be inserted at current (31 max) + 0x001f count of chars to be inserted at mark (31 max) + Kern: + 0x8000 add current glyph to kerning stack + 0x4000 don't advance to next glyph + 0x3fff value offset +*/ + +struct opentype_str { + struct splinechar *sc; + struct vr vr; /* Scaled and rounded gpos modifications (device table info included in xoff, etc. not in adjusts) */ + struct kernpair *kp; + struct kernclass *kc; + int16 advance_width; /* Basic advance, modifications in vr, scaled and rounded */ + int16 kc_index; + int16 lig_pos; /* when skipping marks to form a ligature keep track of what ligature element a mark was attached to */ + int16 context_pos; /* When doing a contextual match remember which glyphs are used, and where in the match they occur. Skipped glyphs have -1 */ + int32 orig_index; + void *fl; + unsigned int line_break_after: 1; + unsigned int r2l: 1; + int16 bsln_off; +}; + +struct macname { + struct macname *next; + uint16 enc; /* Platform specific encoding. 0=>mac roman, 1=>sjis, 7=>russian */ + uint16 lang; /* Mac languages 0=>english, 1=>french, 2=>german */ + char *name; /* Not a unicode string, uninterpreted mac encoded string */ +}; + +/* Wow, the GPOS 'size' feature stores a string in the name table just as mac */ +/* features do */ +struct otfname { + struct otfname *next; + uint16 lang; /* windows language code */ + char *name; /* utf8 */ +}; + +typedef struct macfeat { + struct macfeat *next; + uint16 feature; + uint8 ismutex; + uint8 default_setting; /* Apple's docs say both that this is a byte and a short. It's a byte */ + uint16 strid; /* Temporary value, used when reading in */ + struct macname *featname; + struct macsetting { + struct macsetting *next; + uint16 setting; + uint16 strid; + struct macname *setname; + unsigned int initially_enabled: 1; + } *settings; +} MacFeat; + +typedef struct undoes { + struct undoes *next; + enum undotype { ut_none=0, ut_state, ut_tstate, ut_statehint, ut_statename, + ut_statelookup, + ut_anchors, + ut_width, ut_vwidth, ut_lbearing, ut_rbearing, ut_possub, + ut_hints, ut_bitmap, ut_bitmapsel, ut_composit, ut_multiple, ut_layers, + ut_noop } undotype; + unsigned int was_modified: 1; + unsigned int was_order2: 1; + union { + struct { + int16 width, vwidth; + int16 lbearingchange; + int unicodeenc; /* only for ut_statename */ + char *charname; /* only for ut_statename */ + char *comment; /* in utf8 */ + PST *possub; /* only for ut_statename */ + struct splinepointlist *splines; + struct refchar *refs; + + struct imagelist *images; + void *hints; /* ut_statehint, ut_statename */ + uint8 *instrs; + int instrs_len; + AnchorPoint *anchor; +#ifdef FONTFORGE_CONFIG_TYPE3 + struct brush fill_brush; + struct pen stroke_pen; + unsigned int dofill: 1; + unsigned int dostroke: 1; + unsigned int fillfirst: 1; +#endif + } state; + int width; /* used by both ut_width and ut_vwidth */ + int lbearing; /* used by ut_lbearing */ + int rbearing; /* used by ut_rbearing */ + struct { + int16 width; /* width should be controled by postscript, but people don't like that */ + int16 xmin,xmax,ymin,ymax; + int16 bytes_per_line; + int16 pixelsize; + int16 depth; + uint8 *bitmap; + BDFFloat *selection; + } bmpstate; + struct { /* copy contains an outline state and a set of bitmap states */ + struct undoes *state; + struct undoes *bitmaps; + } composit; + struct { + struct undoes *mult; /* copy contains several sub copies (composits, or states or widths or...) */ + /* Also used for ut_layers, each sub copy is a state (first is ly_fore, next ly_fore+1...) */ + } multiple; + struct { + enum possub_type pst; + char **data; /* First 4 bytes is tag, then space then data */ + struct undoes *more_pst; + short cnt,max; /* Not always set */ + } possub; + uint8 *bitmap; + } u; + struct splinefont *copied_from; +} Undoes; + +typedef struct bdfchar { + struct splinechar *sc; + int16 xmin,xmax,ymin,ymax; + int16 width; + int16 bytes_per_line; + uint8 *bitmap; + int orig_pos; + struct bitmapview *views; + Undoes *undoes; + Undoes *redoes; + unsigned int changed: 1; + unsigned int byte_data: 1; /* for anti-aliased chars entries are grey-scale bytes not bw bits */ + unsigned int widthgroup: 1; /* for ttf bitmap output */ + unsigned int isreference: 1; /* for ttf bitmap input, */ + unsigned int ticked: 1; + uint8 depth; /* for ttf bitmap output */ + uint16 vwidth; + BDFFloat *selection; +} BDFChar; + +typedef struct enc { + char *enc_name; + int char_cnt; /* Size of the next two arrays */ + int32 *unicode; /* unicode value for each encoding point */ + char **psnames; /* optional postscript name for each encoding point */ + struct enc *next; + unsigned int builtin: 1; + unsigned int hidden: 1; + unsigned int only_1byte: 1; + unsigned int has_1byte: 1; + unsigned int has_2byte: 1; + unsigned int is_unicodebmp: 1; + unsigned int is_unicodefull: 1; + unsigned int is_custom: 1; + unsigned int is_original: 1; + unsigned int is_compact: 1; + unsigned int is_japanese: 1; + unsigned int is_korean: 1; + unsigned int is_tradchinese: 1; + unsigned int is_simplechinese: 1; + char iso_2022_escape[8]; + int iso_2022_escape_len; + int low_page, high_page; + char *iconv_name; /* For compatibility to old versions we might use a different name from that used by iconv. */ + iconv_t *tounicode; + iconv_t *fromunicode; + int (*tounicode_func)(int); + int (*fromunicode_func)(int); + unsigned int is_temporary: 1; /* freed when the map gets freed */ + int char_max; /* Used by temporary encodings */ +} Encoding; + +typedef struct namelist { + struct namelist *basedon; + char *title; + const char ***unicode[17]; + struct namelist *next; + struct renames { char *from; char *to; } *renames; + int uses_unicode; + char *a_utf8_name; +} NameList; + +enum uni_interp { ui_unset= -1, ui_none, ui_adobe, ui_greek, ui_japanese, + ui_trad_chinese, ui_simp_chinese, ui_korean, ui_ams }; + +struct remap { uint32 firstenc, lastenc; int32 infont; }; + +typedef struct encmap { /* A per-font map of encoding to glyph id */ + int32 *map; /* Map from encoding to glyphid */ + int32 *backmap; /* Map from glyphid to encoding */ + int enccount; /* used size of the map array */ + /* strictly speaking this might include */ + /* glyphs that are not encoded, but which */ + /* are displayed after the proper encoding */ + int encmax; /* allocated size of the map array */ + int backmax; /* allocated size of the backmap array */ + struct remap *remap; + Encoding *enc; + unsigned int ticked: 1; +} EncMap; + +enum property_type { prt_string, prt_atom, prt_int, prt_uint, prt_property=0x10 }; + +typedef struct bdfprops { + char *name; /* These include both properties (like SLANT) and non-properties (like FONT) */ + int type; + union { + char *str; + char *atom; + int val; + } u; +} BDFProperties; + +typedef struct bdffont { + struct splinefont *sf; + int glyphcnt, glyphmax; /* used & allocated sizes of glyphs array */ + BDFChar **glyphs; /* an array of charcnt entries */ + int16 pixelsize; + int16 ascent, descent; + int16 layer; /* for piecemeal fonts */ + unsigned int piecemeal: 1; + unsigned int bbsized: 1; + unsigned int ticked: 1; + unsigned int unhinted_freetype: 1; + struct bdffont *next; + struct clut *clut; + char *foundry; + int res; + void *freetype_context; + uint16 truesize; /* for bbsized fonts */ + int16 prop_cnt; + int16 prop_max; /* only used within bdfinfo dlg */ + BDFProperties *props; +} BDFFont; + +#define HntMax 96 /* PS says at most 96 hints */ +typedef uint8 HintMask[HntMax/8]; + +enum pointtype { pt_curve, pt_corner, pt_tangent, pt_hvcurve }; +typedef struct splinepoint { + BasePoint me; + BasePoint nextcp; /* control point */ + BasePoint prevcp; /* control point */ + unsigned int nonextcp:1; + unsigned int noprevcp:1; + unsigned int nextcpdef:1; + unsigned int prevcpdef:1; + unsigned int selected:1; /* for UI */ + unsigned int pointtype:2; + unsigned int isintersection: 1; + unsigned int flexy: 1; + unsigned int flexx: 1; + unsigned int roundx: 1; /* For true type hinting */ + unsigned int roundy: 1; /* For true type hinting */ + unsigned int dontinterpolate: 1; /* in ttf, don't imply point by interpolating between cps */ + unsigned int ticked: 1; + unsigned int watched: 1; + /* 1 bits left... */ + uint16 ptindex; /* Temporary value used by metafont routine */ + uint16 ttfindex; /* Truetype point index */ + /* Special values 0xffff => point implied by averaging control points */ + /* 0xfffe => point created with no real number yet */ + /* (or perhaps point in context where no number is possible as in a glyph with points & refs) */ + uint16 nextcpindex; /* Truetype point index */ + struct spline *next; + struct spline *prev; + HintMask *hintmask; +} SplinePoint; + +typedef struct linelist { + IPoint here; + struct linelist *next; + /* The first two fields are constant for the linelist, the next ones */ + /* refer to a particular screen. If some portion of the line from */ + /* this point to the next one is on the screen then set cvli_onscreen */ + /* if this point needs to be clipped then set cvli_clipped */ + /* asend and asstart are the actual screen locations where this point */ + /* intersects the clip edge. */ + enum { cvli_onscreen=0x1, cvli_clipped=0x2 } flags; + IPoint asend, asstart; +} LineList; + +typedef struct linearapprox { + real scale; + unsigned int oneline: 1; + unsigned int onepoint: 1; + unsigned int any: 1; /* refers to a particular screen */ + struct linelist *lines; + struct linearapprox *next; +} LinearApprox; + +typedef struct spline1d { + real a, b, c, d; +} Spline1D; + +typedef struct spline { + unsigned int islinear: 1; /* No control points */ + unsigned int isquadratic: 1; /* probably read in from ttf */ + unsigned int isticked: 1; + unsigned int isneeded: 1; /* Used in remove overlap */ + unsigned int isunneeded: 1; /* Used in remove overlap */ + unsigned int exclude: 1; /* Used in remove overlap varient: exclude */ + unsigned int ishorvert: 1; + unsigned int knowncurved: 1; /* We know that it curves */ + unsigned int knownlinear: 1; /* it might have control points, but still traces out a line */ + /* If neither knownlinear nor curved then we haven't checked */ + unsigned int order2: 1; /* It's a bezier curve with only one cp */ + unsigned int touched: 1; + unsigned int leftedge: 1; + unsigned int rightedge: 1; + unsigned int acceptableextrema: 1; /* This spline has extrema, but we don't care */ + SplinePoint *from, *to; + Spline1D splines[2]; /* splines[0] is the x spline, splines[1] is y */ + struct linearapprox *approx; + /* Posible optimizations: + Precalculate bounding box + Precalculate min/max/ points of inflection + */ +} Spline; + + +typedef struct splinepointlist { + SplinePoint *first, *last; + struct splinepointlist *next; + uint8 ticked; + uint8 beziers_need_optimizer; /* If the spiros have changed in spiro mode, then reverting to bezier mode might, someday, run a simplifier */ + uint8 is_clip_path; /* In type3/svg fonts */ + char *contour_name; +} SplinePointList, SplineSet; + +typedef struct imagelist { + struct gimage *image; + real xoff, yoff; /* position in character space of upper left corner of image */ + real xscale, yscale; /* scale to convert one pixel of image to one unit of character space */ + DBounds bb; + struct imagelist *next; + unsigned int selected: 1; +} ImageList; + +typedef struct refchar { + unsigned int checked: 1; + unsigned int selected: 1; + unsigned int point_match: 1; /* match_pt* are point indexes */ + /* and need to be converted to a */ + /* translation after truetype readin */ + unsigned int encoded: 1; /* orig_pos is actually an encoded value, used for old sfd files */ + unsigned int justtranslated: 1; /* The transformation matrix specifies a translation (or is identity) */ + unsigned int use_my_metrics: 1; /* Retain the ttf "use_my_metrics" info. */ + /* important for glyphs with instructions which change the width used */ + /* inside composites */ + unsigned int round_translation_to_grid: 1; /* Retain the ttf "round_to_grid" info. */ + unsigned int point_match_out_of_date: 1; /* Someone has edited a base glyph */ + int16 adobe_enc; + int orig_pos; + int unicode_enc; /* used by paste */ + real transform[6]; /* transformation matrix (first 2 rows of a 3x3 matrix, missing row is 0,0,1) */ + struct reflayer { + unsigned int background: 1; + unsigned int order2: 1; + unsigned int anyflexes: 1; +#ifdef FONTFORGE_CONFIG_TYPE3 + unsigned int dofill: 1; + unsigned int dostroke: 1; + unsigned int fillfirst: 1; + struct brush fill_brush; + struct pen stroke_pen; +#endif + SplinePointList *splines; + ImageList *images; /* Only in background or type3 layer(s) */ + } *layers; + int layer_cnt; + struct refchar *next; + DBounds bb; + struct splinechar *sc; + BasePoint top; + uint16 match_pt_base, match_pt_ref; +} RefChar; + +/* Some stems may appear, disappear, reapear several times */ +/* Serif stems on I which appear at 0, disappear, reappear at top */ +/* Or the major vertical stems on H which disappear at the cross bar */ +typedef struct hintinstance { + real begin; /* location in the non-major direction*/ + real end; /* width/height in non-major direction*/ + unsigned int closed: 1; + short int counternumber; + struct hintinstance *next; +} HintInstance; + +enum hinttypes { ht_unspecified=0, ht_h, ht_v, ht_d }; +typedef real _MMArray[2][MmMax]; + +typedef struct steminfo { + struct steminfo *next; + unsigned int hinttype: 2; /* Only used by undoes */ + unsigned int ghost: 1; /* this is a ghost stem hint. As such truetype should ignore it, type2 output should negate it, and type1 should use as is */ + /* stored width will be either 20 or 21 */ + /* Type2 says: -20 is "width" of top edge, -21 is "width" of bottom edge, type1 accepts either */ + unsigned int haspointleft:1; + unsigned int haspointright:1; + unsigned int hasconflicts:1;/* Does this stem have conflicts within its cluster? */ + unsigned int used: 1; /* Temporary for counter hints or hint substitution */ + unsigned int tobeused: 1; /* Temporary for counter hints or hint substitution */ + unsigned int active: 1; /* Currently active hint in Review Hints dlg */ + /* displayed differently in char display */ + unsigned int enddone: 1; /* Used by ttf instructing, indicates a prev */ + /* hint had the same end as this one (so */ + /* the points on the end line have been */ + /* instructed already */ + unsigned int startdone: 1; /* Used by ttf instructing */ + /*unsigned int backwards: 1;*/ /* If we think this hint is better done with a negative width */ + unsigned int reordered: 1; /* In AutoHinting. Means we changed the start of the hint, need to test for out of order */ + unsigned int pendingpt: 1; /* A pending stem creation, not a true stem */ + unsigned int linearedges: 1;/* If we have a nice rectangle then we aren't */ + /* interested in the orientation which is */ + /* wider than long */ + int16 hintnumber; /* when dumping out hintmasks we need to know */ + /* what bit to set for this hint */ + union { + int mask; /* Mask of all references that use this hint */ + /* in type2 output */ + _MMArray *unblended /*[2][MmMax]*/; /* Used when reading in type1 mm hints */ + } u; + real start; /* location at which the stem starts */ + real width; /* or height */ + HintInstance *where; /* location(s) in the other coord */ +} StemInfo; + +typedef struct dsteminfo { + struct dsteminfo *next; /* First two fields match those in steminfo */ + unsigned int hinttype: 2; /* Only used by undoes */ + unsigned int used: 1; /* used only by tottf.c:gendinstrs, metafont.c to mark a hint that has been dealt with */ + BasePoint left, right, unit; + HintInstance *where; /* location(s) along the unit vector */ +} DStemInfo; + +typedef struct minimumdistance { + /* If either point is NULL it will be assumed to mean either the origin */ + /* or the width point (depending on which is closer). This allows user */ + /* to control metrics... */ + SplinePoint *sp1, *sp2; + unsigned int x: 1; + unsigned int done: 1; + struct minimumdistance *next; +} MinimumDistance; + +typedef struct layer /* : reflayer */{ + unsigned int background: 1; + unsigned int order2: 1; + unsigned int anyflexes: 1; +#ifdef FONTFORGE_CONFIG_TYPE3 + unsigned int dofill: 1; + unsigned int dostroke: 1; + unsigned int fillfirst: 1; + struct brush fill_brush; + struct pen stroke_pen; +#endif + SplinePointList *splines; + ImageList *images; /* Only in background or type3 layer(s) */ + RefChar *refs; /* Only in foreground layer(s) */ + Undoes *undoes; + Undoes *redoes; + uint32 validation_state; + uint32 old_vs; +} Layer; + +enum layer_type { ly_all=-2, ly_grid= -1, ly_back=0, ly_fore=1, + /* Possibly other foreground layers for type3 things */ + /* Possibly other background layers for normal fonts */ + ly_none = -3 + }; + +/* For the 'MATH' table (and for TeX) */ +struct glyphvariants { + char *variants; /* Space separated list of glyph names */ +/* Glyph assembly */ + int16 italic_correction; /* Of the composed glyph */ +#ifdef FONTFORGE_CONFIG_DEVICETABLES + DeviceTable *italic_adjusts; +#endif + int part_cnt; + struct gv_part { + char *component; + unsigned int is_extender: 1; /* This component may be skipped or repeated */ + uint16 startConnectorLength; + uint16 endConnectorLength; + uint16 fullAdvance; + } *parts; +}; + +/* For the 'MATH' table */ +struct mathkernvertex { + int cnt; /* There is one more kern entry than height entry */ + /* So the last mkd should have its height ignored */ + /* The MATH table stores the height count, I think the kern count */ + /* is more useful. They differ by 1 */ + struct mathkerndata { + int16 height,kern; +#ifdef FONTFORGE_CONFIG_DEVICETABLES + DeviceTable *height_adjusts; + DeviceTable *kern_adjusts; +#endif + } *mkd; +}; + +struct mathkern { + struct mathkernvertex top_right; + struct mathkernvertex top_left; + struct mathkernvertex bottom_right; + struct mathkernvertex bottom_left; +}; + +enum privatedict_state { + pds_odd = 0x1, /* Odd number of entries */ + pds_outoforder = 0x2, /* Bluevalues should be listed in order */ + pds_toomany = 0x4, /* arrays are of limited sizes */ + pds_tooclose = 0x8, /* adjacent zones must not be within 2*bluefuzz+1 (or 3, if bluefuzz omitted) */ + pds_notintegral= 0x10, /* Must be integers */ + pds_toobig = 0x20, /* within pair difference have some relation to BlueScale but the docs make no sense to me */ + pds_shift = 8, /* BlueValues/OtherBlues, unshifted, FamilyBlues/FamilyOtherBlues shifted once */ + + pds_missingblue = 0x010000, + pds_badbluefuzz = 0x020000, + pds_badbluescale = 0x040000, + pds_badstdhw = 0x080000, + pds_badstdvw = 0x100000, + pds_badstemsnaph = 0x200000, + pds_badstemsnapv = 0x400000, + pds_stemsnapnostdh = 0x0800000, + pds_stemsnapnostdv = 0x1000000, + pds_badblueshift = 0x2000000 + +}; + +enum validation_state { vs_unknown = 0, + vs_known=0x01, /* It has been validated */ + vs_opencontour=0x02, + vs_selfintersects=0x04, + vs_wrongdirection=0x08, + vs_flippedreferences=0x10, /* special case of wrong direction */ + vs_missingextrema=0x20, + vs_missingglyphnameingsub=0x40, + /* Next few are postscript only */ + vs_toomanypoints=0x80, + vs_toomanyhints=0x100, + vs_badglyphname=0x200, + /* Next few are only for fontlint */ + /* These are relative to maxp values which ff would fix on generating a font */ + vs_maxp_toomanypoints =0x400, + vs_maxp_toomanypaths =0x800, + vs_maxp_toomanycomppoints=0x1000, + vs_maxp_toomanycomppaths =0x2000, + vs_maxp_instrtoolong =0x4000, + vs_maxp_toomanyrefs =0x8000, + vs_maxp_refstoodeep =0x10000, + /* vs_maxp_prepfpgmtoolong=0x20000, */ /* I think I was wrong about this "error" */ + /* Oops, we need another one, two, for the glyphs */ + vs_pointstoofarapart = 0x40000, + vs_nonintegral = 0x80000, /* This will never be interesting in a real font, but might be in an sfd file */ + vs_missinganchor = 0x100000, + vs_dupname = 0x200000, + vs_dupunicode = 0x400000, + + vs_last = vs_dupunicode, + vs_maskps = 0x3fe | vs_pointstoofarapart | vs_missinganchor | vs_dupname | vs_dupunicode, + vs_maskcid = 0x1fe | vs_pointstoofarapart | vs_missinganchor | vs_dupname, + vs_maskttf = 0x7e | vs_pointstoofarapart | vs_nonintegral | vs_missinganchor | vs_dupunicode, + vs_maskfindproblems = 0x1be | vs_pointstoofarapart | vs_nonintegral | vs_missinganchor + }; + +typedef struct splinechar { + char *name; + int unicodeenc; + int orig_pos; /* Original position in the glyph list */ + int16 width, vwidth; + int16 xmin, ymin, xmax, ymax; + int16 lsidebearing; /* only used when reading in a type1 font */ + /* Or an otf font where it is the subr number of a refered character */ + /* or a ttf font without bit 1 of head.flags set */ + /* or (once upon a time, but no longer) a ttf font with vert metrics where it is the ymax value when we had a font-wide vertical offset */ + /* or when generating morx where it is the mask of tables in which the glyph occurs */ + /* Always a temporary value */ + int ttf_glyph; /* only used when writing out a ttf or otf font */ + Layer *layers; /* layer[0] is background, layer[1] foreground */ + /* In type3 fonts 2-n are also foreground, otherwise also background */ + int layer_cnt; + StemInfo *hstem; /* hstem hints have a vertical offset but run horizontally */ + StemInfo *vstem; /* vstem hints have a horizontal offset but run vertically */ + DStemInfo *dstem; /* diagonal hints for ttf */ + MinimumDistance *md; + struct charviewbase *views; + struct charinfo *charinfo; + struct splinefont *parent; + unsigned int changed: 1; + unsigned int changedsincelasthinted: 1; + unsigned int manualhints: 1; + unsigned int ticked: 1; /* For reference character processing */ + /* And fontview processing */ + unsigned int changed_since_autosave: 1; + unsigned int widthset: 1; /* needed so an emspace char doesn't disappear */ + unsigned int vconflicts: 1; /* Any hint overlaps in the vstem list? */ + unsigned int hconflicts: 1; /* Any hint overlaps in the hstem list? */ + unsigned int searcherdummy: 1; + unsigned int changed_since_search: 1; + unsigned int wasopen: 1; + unsigned int namechanged: 1; + unsigned int blended: 1; /* An MM blended character */ + unsigned int ticked2: 1; + unsigned int glyph_class: 3; /* 0=> fontforge determines class automagically, else one more than the class value in gdef so 2+1=>lig, 3+1=>mark */ + unsigned int numberpointsbackards: 1; + unsigned int instructions_out_of_date: 1; + unsigned int complained_about_ptnums: 1; + unsigned int vs_open: 1; + unsigned int unlink_rm_ovrlp_save_undo: 1; + unsigned int inspiro: 1; + unsigned int lig_caret_cnt_fixed: 1; + /* 6 bits left (one more if we ignore compositionunit below) */ +#if HANYANG + unsigned int compositionunit: 1; + int16 jamo, varient; +#endif + struct splinecharlist { struct splinechar *sc; struct splinecharlist *next;} *dependents; + /* The dependents list is a list of all characters which refenence*/ + /* the current character directly */ + KernPair *kerns; + KernPair *vkerns; + PST *possub; /* If we are a ligature then this tells us what */ + /* It may also contain a bunch of other stuff now */ + LigList *ligofme; /* If this is the first character of a ligature then this gives us the list of possible ones */ + /* this field must be regenerated before the font is saved */ + char *comment; /* in utf8 */ + uint32 /*Color*/ color; + AnchorPoint *anchor; + uint8 *ttf_instrs; + int16 ttf_instrs_len; + int16 countermask_cnt; + HintMask *countermasks; + struct altuni { struct altuni *next; int unienc, vs, fid; } *altuni; + /* vs is the "variation selector" a unicode codepoint which modifieds */ + /* the code point before it. If vs is -1 then unienc is just an */ + /* alternate encoding (greek Alpha and latin A), but if vs is one */ + /* of unicode's variation selectors then this glyph is somehow a */ + /* variant shape. The specifics depend on the selector and script */ + /* fid is currently unused, but may, someday, be used to do ttcs */ + /* NOTE: GlyphInfo displays vs==-1 as vs==0, and fixes things up */ +/* for TeX */ + int16 tex_height, tex_depth; +/* TeX also uses italic_correction and glyph variants below */ +/* For the 'MATH' table (and for TeX) */ + unsigned int is_extended_shape: 1; + int16 italic_correction; + int16 top_accent_horiz; /* MATH table allows you to specific a*/ + /* horizontal anchor for accent attachments, vertical */ + /* positioning is done elsewhere */ +#ifdef FONTFORGE_CONFIG_DEVICETABLES + DeviceTable *italic_adjusts; + DeviceTable *top_accent_adjusts; +#endif + struct glyphvariants *vert_variants; + struct glyphvariants *horiz_variants; + struct mathkern *mathkern; +/* End of MATH/TeX fields */ +#ifndef _NO_PYTHON + void *python_sc_object; + void *python_temporary; +#endif + void *python_persistent; /* If python this will hold a python object, if not python this will hold a string containing a pickled object. We do nothing with it (if not python) except save it back out unchanged */ +#ifdef FONTFORGE_CONFIG_TYPE3 + /* If the glyph is used as a tile pattern, then the next two values */ + /* determine the amount of white space around the tile. If extra is*/ + /* non-zero then we add it to the max components of the bbox and */ + /* subtract it from the min components. If extra is 0 then tile_bounds*/ + /* will be used. If tile_bounds is all zeros then the glyph's bbox */ + /* will be used. */ + real tile_margin; /* If the glyph is used as a tile */ + DBounds tile_bounds; +#endif +} SplineChar; + +#define TEX_UNDEF 0x7fff + +enum ttfnames { ttf_copyright=0, ttf_family, ttf_subfamily, ttf_uniqueid, + ttf_fullname, ttf_version, ttf_postscriptname, ttf_trademark, + ttf_manufacturer, ttf_designer, ttf_descriptor, ttf_venderurl, + ttf_designerurl, ttf_license, ttf_licenseurl, ttf_idontknow/*reserved*/, + ttf_preffamilyname, ttf_prefmodifiers, ttf_compatfull, ttf_sampletext, + ttf_cidfindfontname, ttf_wwsfamily, ttf_wwssubfamily, ttf_namemax }; +struct ttflangname { + int lang; + char *names[ttf_namemax]; /* in utf8 */ + int frommac[(ttf_namemax+31)/32]; /* Used when parsing the 'name' table */ + struct ttflangname *next; +}; + +#ifdef FONTFORGE_CONFIG_DEVICETABLES +struct MATH { +/* From the MATH Constants subtable (constants for positioning glyphs. Not PI)*/ + int16 ScriptPercentScaleDown; + int16 ScriptScriptPercentScaleDown; + uint16 DelimitedSubFormulaMinHeight; + uint16 DisplayOperatorMinHeight; + int16 MathLeading; + DeviceTable *MathLeading_adjust; + int16 AxisHeight; + DeviceTable *AxisHeight_adjust; + int16 AccentBaseHeight; + DeviceTable *AccentBaseHeight_adjust; + int16 FlattenedAccentBaseHeight; + DeviceTable *FlattenedAccentBaseHeight_adjust; + int16 SubscriptShiftDown; + DeviceTable *SubscriptShiftDown_adjust; + int16 SubscriptTopMax; + DeviceTable *SubscriptTopMax_adjust; + int16 SubscriptBaselineDropMin; + DeviceTable *SubscriptBaselineDropMin_adjust; + int16 SuperscriptShiftUp; + DeviceTable *SuperscriptShiftUp_adjust; + int16 SuperscriptShiftUpCramped; + DeviceTable *SuperscriptShiftUpCramped_adjust; + int16 SuperscriptBottomMin; + DeviceTable *SuperscriptBottomMin_adjust; + int16 SuperscriptBaselineDropMax; + DeviceTable *SuperscriptBaselineDropMax_adjust; + int16 SubSuperscriptGapMin; + DeviceTable *SubSuperscriptGapMin_adjust; + int16 SuperscriptBottomMaxWithSubscript; + DeviceTable *SuperscriptBottomMaxWithSubscript_adjust; + int16 SpaceAfterScript; + DeviceTable *SpaceAfterScript_adjust; + int16 UpperLimitGapMin; + DeviceTable *UpperLimitGapMin_adjust; + int16 UpperLimitBaselineRiseMin; + DeviceTable *UpperLimitBaselineRiseMin_adjust; + int16 LowerLimitGapMin; + DeviceTable *LowerLimitGapMin_adjust; + int16 LowerLimitBaselineDropMin; + DeviceTable *LowerLimitBaselineDropMin_adjust; + int16 StackTopShiftUp; + DeviceTable *StackTopShiftUp_adjust; + int16 StackTopDisplayStyleShiftUp; + DeviceTable *StackTopDisplayStyleShiftUp_adjust; + int16 StackBottomShiftDown; + DeviceTable *StackBottomShiftDown_adjust; + int16 StackBottomDisplayStyleShiftDown; + DeviceTable *StackBottomDisplayStyleShiftDown_adjust; + int16 StackGapMin; + DeviceTable *StackGapMin_adjust; + int16 StackDisplayStyleGapMin; + DeviceTable *StackDisplayStyleGapMin_adjust; + int16 StretchStackTopShiftUp; + DeviceTable *StretchStackTopShiftUp_adjust; + int16 StretchStackBottomShiftDown; + DeviceTable *StretchStackBottomShiftDown_adjust; + int16 StretchStackGapAboveMin; + DeviceTable *StretchStackGapAboveMin_adjust; + int16 StretchStackGapBelowMin; + DeviceTable *StretchStackGapBelowMin_adjust; + int16 FractionNumeratorShiftUp; + DeviceTable *FractionNumeratorShiftUp_adjust; + int16 FractionNumeratorDisplayStyleShiftUp; + DeviceTable *FractionNumeratorDisplayStyleShiftUp_adjust; + int16 FractionDenominatorShiftDown; + DeviceTable *FractionDenominatorShiftDown_adjust; + int16 FractionDenominatorDisplayStyleShiftDown; + DeviceTable *FractionDenominatorDisplayStyleShiftDown_adjust; + int16 FractionNumeratorGapMin; + DeviceTable *FractionNumeratorGapMin_adjust; + int16 FractionNumeratorDisplayStyleGapMin; + DeviceTable *FractionNumeratorDisplayStyleGapMin_adjust; + int16 FractionRuleThickness; + DeviceTable *FractionRuleThickness_adjust; + int16 FractionDenominatorGapMin; + DeviceTable *FractionDenominatorGapMin_adjust; + int16 FractionDenominatorDisplayStyleGapMin; + DeviceTable *FractionDenominatorDisplayStyleGapMin_adjust; + int16 SkewedFractionHorizontalGap; + DeviceTable *SkewedFractionHorizontalGap_adjust; + int16 SkewedFractionVerticalGap; + DeviceTable *SkewedFractionVerticalGap_adjust; + int16 OverbarVerticalGap; + DeviceTable *OverbarVerticalGap_adjust; + int16 OverbarRuleThickness; + DeviceTable *OverbarRuleThickness_adjust; + int16 OverbarExtraAscender; + DeviceTable *OverbarExtraAscender_adjust; + int16 UnderbarVerticalGap; + DeviceTable *UnderbarVerticalGap_adjust; + int16 UnderbarRuleThickness; + DeviceTable *UnderbarRuleThickness_adjust; + int16 UnderbarExtraDescender; + DeviceTable *UnderbarExtraDescender_adjust; + int16 RadicalVerticalGap; + DeviceTable *RadicalVerticalGap_adjust; + int16 RadicalDisplayStyleVerticalGap; + DeviceTable *RadicalDisplayStyleVerticalGap_adjust; + int16 RadicalRuleThickness; + DeviceTable *RadicalRuleThickness_adjust; + int16 RadicalExtraAscender; + DeviceTable *RadicalExtraAscender_adjust; + int16 RadicalKernBeforeDegree; + DeviceTable *RadicalKernBeforeDegree_adjust; + int16 RadicalKernAfterDegree; + DeviceTable *RadicalKernAfterDegree_adjust; + uint16 RadicalDegreeBottomRaisePercent; +/* Global constants from other subtables */ + uint16 MinConnectorOverlap; /* in the math variants sub-table */ +}; +#else +struct MATH { +/* From the MATH Constants subtable (constants for positioning glyphs. Not PI)*/ + int16 ScriptPercentScaleDown; + int16 ScriptScriptPercentScaleDown; + uint16 DelimitedSubFormulaMinHeight; + uint16 DisplayOperatorMinHeight; + int16 MathLeading; + int16 AxisHeight; + int16 AccentBaseHeight; + int16 FlattenedAccentBaseHeight; + int16 SubscriptShiftDown; + int16 SubscriptTopMax; + int16 SubscriptBaselineDropMin; + int16 SuperscriptShiftUp; + int16 SuperscriptShiftUpCramped; + int16 SuperscriptBottomMin; + int16 SuperscriptBaselineDropMax; + int16 SubSuperscriptGapMin; + int16 SuperscriptBottomMaxWithSubscript; + int16 SpaceAfterScript; + int16 UpperLimitGapMin; + int16 UpperLimitBaselineRiseMin; + int16 LowerLimitGapMin; + int16 LowerLimitBaselineDropMin; + int16 StackTopShiftUp; + int16 StackTopDisplayStyleShiftUp; + int16 StackBottomShiftDown; + int16 StackBottomDisplayStyleShiftDown; + int16 StackGapMin; + int16 StackDisplayStyleGapMin; + int16 StretchStackTopShiftUp; + int16 StretchStackBottomShiftDown; + int16 StretchStackGapAboveMin; + int16 StretchStackGapBelowMin; + int16 FractionNumeratorShiftUp; + int16 FractionNumeratorDisplayStyleShiftUp; + int16 FractionDenominatorShiftDown; + int16 FractionDenominatorDisplayStyleShiftDown; + int16 FractionNumeratorGapMin; + int16 FractionNumeratorDisplayStyleGapMin; + int16 FractionRuleThickness; + int16 FractionDenominatorGapMin; + int16 FractionDenominatorDisplayStyleGapMin; + int16 SkewedFractionHorizontalGap; + int16 SkewedFractionVerticalGap; + int16 OverbarVerticalGap; + int16 OverbarRuleThickness; + int16 OverbarExtraAscender; + int16 UnderbarVerticalGap; + int16 UnderbarRuleThickness; + int16 UnderbarExtraDescender; + int16 RadicalVerticalGap; + int16 RadicalDisplayStyleVerticalGap; + int16 RadicalRuleThickness; + int16 RadicalExtraAscender; + int16 RadicalKernBeforeDegree; + int16 RadicalKernAfterDegree; + uint16 RadicalDegreeBottomRaisePercent; +/* Global constants from other subtables */ + uint16 MinConnectorOverlap; /* in the math variants sub-table */ +}; +#endif + +enum backedup_state { bs_dontknow=0, bs_not=1, bs_backedup=2 }; +enum loadvalidation_state { + lvs_bad_ps_fontname = 0x001, + lvs_bad_glyph_table = 0x002, + lvs_bad_cff_table = 0x004, + lvs_bad_metrics_table = 0x008, + lvs_bad_cmap_table = 0x010, + lvs_bad_bitmaps_table = 0x020, + lvs_bad_gx_table = 0x040, + lvs_bad_ot_table = 0x080, + lvs_bad_os2_version = 0x100, + lvs_bad_sfnt_header = 0x200 + }; + +typedef struct layerinfo { + char *name; + unsigned int background: 1; /* Layer is to be treated as background: No width, images, not worth outputting */ + unsigned int order2: 1; /* Layer's data are order 2 bezier splines (truetype) rather than order 3 (postscript) */ + /* In all glyphs in the font */ + unsigned int ticked: 1; +} LayerInfo; + +/* Baseline data from the 'BASE' table */ +struct baselangextent { + uint32 lang; /* also used for feature tag */ + struct baselangextent *next; + int16 ascent, descent; + struct baselangextent *features; +}; + +struct basescript { + uint32 script; + struct basescript *next; + int def_baseline; /* index [0-baseline_cnt) */ + int16 *baseline_pos; /* baseline_cnt of these */ + struct baselangextent *langs; /* Language specific extents (may be NULL) */ + /* The default one has the tag DEFAULT_LANG */ +}; + +struct Base { + int baseline_cnt; + uint32 *baseline_tags; + /* A font does not need to provide info on all baselines, but if one script */ + /* talks about a baseline, then all must. So the set of baselines is global*/ + struct basescript *scripts; +}; + +typedef struct splinefont { + char *fontname, *fullname, *familyname, *weight; + char *copyright; + char *filename; /* sfd name. NULL if we open a font, that's origname */ + char *defbasefilename; + char *version; + real italicangle, upos, uwidth; /* In font info */ + int units_per_em; + struct splinefont *next; + int ascent, descent; + int uniqueid; /* Not copied when reading in!!!! */ + int glyphcnt, glyphmax; /* allocated size of glyphs array */ + SplineChar **glyphs; + unsigned int changed: 1; + unsigned int changed_since_autosave: 1; + unsigned int changed_since_xuidchanged: 1; + unsigned int display_antialias: 1; + unsigned int display_bbsized: 1; + unsigned int dotlesswarn: 1; /* User warned that font doesn't have a dotless i character */ + unsigned int onlybitmaps: 1; /* it's a bdf editor, not a postscript editor */ + unsigned int serifcheck: 1; /* Have we checked to see if we have serifs? */ + unsigned int issans: 1; /* We have no serifs */ + unsigned int isserif: 1; /* We have serifs. If neither set then we don't know. */ + unsigned int hasvmetrics: 1; /* We've got vertical metric data and should output vhea/vmtx/VORG tables */ + unsigned int loading_cid_map: 1; + unsigned int dupnamewarn: 1; /* Warn about duplicate names when loading bdf font */ + unsigned int encodingchanged: 1; /* Font's encoding has changed since it was loaded */ + unsigned int multilayer: 1; /* only applies if TYPE3 is set, means this font can contain strokes & fills */ + /* I leave it in so as to avoid cluttering up code with #ifdefs */ + unsigned int strokedfont: 1; + unsigned int new: 1; /* A new and unsaved font */ + unsigned int compacted: 1; /* only used when opening a font */ + unsigned int backedup: 2; /* 0=>don't know, 1=>no, 2=>yes */ + unsigned int use_typo_metrics: 1; /* The standard says to. But MS */ + /* seems to feel that isn't good */ + /* enough and has created a bit */ + /* to mean "really use them" */ + unsigned int weight_width_slope_only: 1; /* This bit seems stupid to me */ + unsigned int save_to_dir: 1; /* Loaded from an sfdir collection rather than a simple sfd file */ + unsigned int head_optimized_for_cleartype: 1;/* Bit in the 'head' flags field, if unset "East Asian fonts in the Windows Presentation Framework (Avalon) will not be hinted" */ + unsigned int ticked: 1; + unsigned int internal_temp: 1; /* Internal temporary font to be passed to freetype for rasterizing. Don't complain about oddities */ + unsigned int complained_about_spiros: 1; + unsigned int use_xuid: 1; /* Adobe has deprecated these two */ + unsigned int use_uniqueid: 1; /* fields. Mostly we don't want to use them */ + /* 2 bits left */ + struct fontviewbase *fv; + struct metricsview *metrics; + enum uni_interp uni_interp; + NameList *for_new_glyphs; + EncMap *map; /* only used when opening a font to provide original default encoding */ + Layer grid; + BDFFont *bitmaps; + char *origname; /* filename of font file (ie. if not an sfd) */ + char *autosavename; + int display_size; /* a val <0 => Generate our own images from splines, a value >0 => find a bdf font of that size */ + struct psdict *private; /* read in from type1 file or provided by user */ + char *xuid; + struct pfminfo { /* A misnomer now. OS/2 info would be more accurate, but that's stuff in here from all over ttf files */ + unsigned int pfmset: 1; + unsigned int winascent_add: 1; + unsigned int windescent_add: 1; + unsigned int hheadascent_add: 1; + unsigned int hheaddescent_add: 1; + unsigned int typoascent_add: 1; + unsigned int typodescent_add: 1; + unsigned int subsuper_set: 1; + unsigned int panose_set: 1; + unsigned int hheadset: 1; + unsigned int vheadset: 1; + unsigned int hascodepages: 1; + unsigned int hasunicoderanges: 1; + unsigned char pfmfamily; + int16 weight; + int16 width; + char panose[10]; + int16 fstype; + int16 linegap; /* from hhea */ + int16 vlinegap; /* from vhea */ + int16 hhead_ascent, hhead_descent; + int16 os2_typoascent, os2_typodescent, os2_typolinegap; + int16 os2_winascent, os2_windescent; + int16 os2_subxsize, os2_subysize, os2_subxoff, os2_subyoff; + int16 os2_supxsize, os2_supysize, os2_supxoff, os2_supyoff; + int16 os2_strikeysize, os2_strikeypos; + char os2_vendor[4]; + int16 os2_family_class; + uint32 codepages[2]; + uint32 unicoderanges[4]; + uint16 avgwidth; + uint16 firstchar; + uint16 lastchar; + int16 os2_xheight; + int16 os2_capheight; + uint16 os2_defaultchar; + uint16 os2_breakchar; + } pfminfo; + struct ttflangname *names; + char *cidregistry, *ordering; + int supplement; + int subfontcnt; + struct splinefont **subfonts; + struct splinefont *cidmaster; /* Top level cid font */ + float cidversion; +#if HANYANG + struct compositionrules *rules; +#endif + char *comments; /* Used to be restricted to ASCII, now utf8 */ + char *fontlog; + int tempuniqueid; + int top_enc; + uint16 desired_row_cnt, desired_col_cnt; + struct glyphnamehash *glyphnames; + struct ttf_table { + uint32 tag; + int32 len, maxlen; + uint8 *data; + struct ttf_table *next; + FILE *temp; /* Temporary storage used during generation */ + } *ttf_tables, *ttf_tab_saved; + /* We copy: fpgm, prep, cvt, maxp (into ttf_tables) user can ask for others, into saved*/ + char **cvt_names; + /* The end of this array is marked by a special entry: */ +#define END_CVT_NAMES ((char *) (~(intpt) 0)) + struct instrdata *instr_dlgs; /* Pointer to all table and character instruction dlgs in this font */ + struct shortview *cvt_dlg; + struct kernclasslistdlg *kcld, *vkcld; + struct kernclassdlg *kcd; + struct texdata { + enum { tex_unset, tex_text, tex_math, tex_mathext } type; + int32 params[22]; /* param[6] has different meanings in normal and math fonts */ + } texdata; + OTLookup *gsub_lookups, *gpos_lookups; + /* Apple morx subtables become gsub, and kern subtables become gpos */ + AnchorClass *anchor; + KernClass *kerns, *vkerns; + FPST *possub; + ASM *sm; /* asm is a keyword */ + MacFeat *features; + char *chosenname; /* Set for files with multiple fonts in them */ + struct mmset *mm; /* If part of a multiple master set */ + int16 macstyle; + char *fondname; /* For use in generating mac families */ + /* from the GPOS 'size' feature. design_size, etc. are measured in tenths of a point */ + /* bottom is exclusive, top is inclusive */ + /* if any field is 0, it is undefined. All may be undefined, All may be */ + /* defined, or design_size may be defined without any of the others */ + /* but we can't define the range without defining the other junk */ + /* Name must contain an English language name, may contain others */ + uint16 design_size; + uint16 fontstyle_id; + struct otfname *fontstyle_name; + uint16 design_range_bottom, design_range_top; + real strokewidth; +/* For GDEF Mark Attachment Class -- used in lookup flags */ +/* As usual, class 0 is unused */ + int mark_class_cnt; + char **mark_classes; /* glyph name list */ + char **mark_class_names; /* used within ff, utf8 (the name we've given to this class of marks) */ +#ifdef _HAS_LONGLONG + long long creationtime; /* seconds since 1970 */ + long long modificationtime; +#else + long creationtime; + long modificationtime; +#endif + short os2_version; /* 0 means default rather than the real version 0 */ + short compression; /* If we opened a compressed sfd file, then save it out compressed too */ + short gasp_version; /* 0/1 currently */ + short gasp_cnt; + struct gasp { + uint16 ppem; + uint16 flags; + } *gasp; + struct MATH *MATH; + float sfd_version; /* Used only when reading in an sfd file */ + struct gfi_data *fontinfo; + struct val_data *valwin; + void *python_temporary; + void *python_persistent; /* If python this will hold a python object, if not python this will hold a string containing a pickled object. We do nothing with it (if not python) except save it back out unchanged */ + enum loadvalidation_state loadvalidation_state; + LayerInfo *layers; + int layer_cnt; + int display_layer; + struct Base *horiz_base, *vert_base; + int extrema_bound; /* Splines do not count for extrema complaints when the distance between the endpoints is less than or equal to this */ +} SplineFont; + +/* I am going to simplify my life and not encourage intermediate designs */ +/* this means I can easily calculate ConvertDesignVector, and don't have */ +/* to bother the user with specifying it. */ +/* (NormalizeDesignVector is fairly basic and shouldn't need user help ever) */ +/* (As long as they want piecewise linear) */ +/* I'm not going to support intermediate designs at all for apple var tables */ +typedef struct mmset { + int axis_count; + char *axes[4]; + int instance_count; + SplineFont **instances; + SplineFont *normal; + real *positions; /* array[instance][axis] saying where each instance lies on each axis */ + real *defweights; /* array[instance] saying how much of each instance makes the normal font */ + /* for adobe */ + struct axismap { + int points; /* size of the next two arrays */ + real *blends; /* between [0,1] ordered so that blend[0] original base char) */ + unsigned int ticked: 1; /* Used as a mark to mark */ +} AnchorPos; + +enum ttf_flags { ttf_flag_shortps = 1, ttf_flag_nohints = 2, + ttf_flag_applemode=4, + ttf_flag_pfed_comments=8, ttf_flag_pfed_colors=0x10, + ttf_flag_otmode=0x20, + ttf_flag_glyphmap=0x40, + ttf_flag_TeXtable=0x80, + ttf_flag_ofm=0x100, + ttf_flag_oldkern=0x200, /* never set in conjunction with applemode */ + ttf_flag_brokensize=0x400, /* Adobe originally issued fonts with a bug in the size feature. They now claim (Aug 2006) that this has been fixed. Legacy programs will do the wrong thing with the fixed feature though */ + ttf_flag_pfed_lookupnames=0x800, + ttf_flag_pfed_guides=0x1000, + ttf_flag_pfed_layers=0x2000, + ttf_flag_symbol=0x4000, + ttf_flag_dummyDSIG=0x8000 + }; +enum openflags { of_fstypepermitted=1, of_askcmap=2, of_all_glyphs_in_ttc=4, + of_fontlint=8, of_hidewindow=0x10 }; +enum ps_flags { ps_flag_nohintsubs = 0x10000, ps_flag_noflex=0x20000, + ps_flag_nohints = 0x40000, ps_flag_restrict256=0x80000, + ps_flag_afm = 0x100000, ps_flag_pfm = 0x200000, + ps_flag_tfm = 0x400000, + ps_flag_round = 0x800000, +/* CFF fonts are wrapped up in some postscript sugar -- unless they are to */ +/* go into a pdf file or an otf font */ + ps_flag_nocffsugar = 0x1000000, +/* in type42 cid fonts we sometimes want an identity map from gid to cid */ + ps_flag_identitycidmap = 0x2000000, + ps_flag_afmwithmarks = 0x4000000, + ps_flag_noseac = 0x8000000, + ps_flag_outputfontlog = 0x10000000, + ps_flag_mask = (ps_flag_nohintsubs|ps_flag_noflex| + ps_flag_afm|ps_flag_pfm|ps_flag_tfm|ps_flag_round) + }; + +struct compressors { char *ext, *decomp, *recomp; }; +struct archivers { + char *ext, *unarchive, *archive, *listargs, *extractargs, *appendargs; + enum archive_list_style { ars_tar, ars_zip } ars; +}; + +struct fontdict; +struct pschars; +struct findsel; +struct charprocs; +struct enc; + +extern void *chunkalloc(int size); +extern void chunkfree(void *, int size); + +extern char *strconcat(const char *str, const char *str2); +extern char *strconcat3(const char *str, const char *str2, const char *str3); + +extern char *XUIDFromFD(int xuid[20]); +extern SplineFont *SplineFontFromPSFont(struct fontdict *fd); +extern int CheckAfmOfPostscript(SplineFont *sf,char *psname,EncMap *map); +extern int LoadKerningDataFromAmfm(SplineFont *sf, char *filename, EncMap *map); +extern int LoadKerningDataFromAfm(SplineFont *sf, char *filename, EncMap *map); +extern int LoadKerningDataFromTfm(SplineFont *sf, char *filename, EncMap *map); +extern int LoadKerningDataFromOfm(SplineFont *sf, char *filename, EncMap *map); +extern int LoadKerningDataFromPfm(SplineFont *sf, char *filename, EncMap *map); +extern int LoadKerningDataFromMacFOND(SplineFont *sf, char *filename, EncMap *map); +extern int LoadKerningDataFromMetricsFile(SplineFont *sf, char *filename, EncMap *map); +extern void FeatDumpFontLookups(FILE *out,SplineFont *sf); +extern void FeatDumpOneLookup(FILE *out,SplineFont *sf, OTLookup *otl); +extern void SFApplyFeatureFile(SplineFont *sf,FILE *file,char *filename); +extern void SFApplyFeatureFilename(SplineFont *sf,char *filename); +extern void SubsNew(SplineChar *to,enum possub_type type,int tag,char *components, + SplineChar *default_script); +extern void PosNew(SplineChar *to,int tag,int dx, int dy, int dh, int dv); +extern int SFOneWidth(SplineFont *sf); +extern int CIDOneWidth(SplineFont *sf); +extern int SFOneHeight(SplineFont *sf); +extern int SFIsCJK(SplineFont *sf,EncMap *map); +extern void CIDMasterAsDes(SplineFont *sf); +enum fontformat { ff_pfa, ff_pfb, ff_pfbmacbin, ff_multiple, ff_mma, ff_mmb, + ff_ptype3, ff_ptype0, ff_cid, ff_cff, ff_cffcid, + ff_type42, ff_type42cid, + ff_ttf, ff_ttfsym, ff_ttfmacbin, ff_ttfdfont, ff_otf, ff_otfdfont, + ff_otfcid, ff_otfciddfont, ff_svg, ff_ufo, ff_none }; +extern struct pschars *SplineFont2ChrsSubrs(SplineFont *sf, int iscjk, + struct pschars *subrs,int flags,enum fontformat format,int layer); +extern int CanonicalCombiner(int uni); +struct cidbytes; +struct fd2data; +struct ttfinfo; +struct alltabs; +struct growbuf; +struct glyphdata; +extern int UnitsParallel(BasePoint *u1,BasePoint *u2,int strict); +extern int CvtPsStem3(struct growbuf *gb, SplineChar *scs[MmMax], int instance_count, + int ishstem, int round); +extern struct pschars *CID2ChrsSubrs(SplineFont *cidmaster,struct cidbytes *cidbytes,int flags,int layer); +extern struct pschars *SplineFont2ChrsSubrs2(SplineFont *sf, int nomwid, + int defwid, const int *bygid, int cnt, int flags, + struct pschars **_subrs,int layer); +extern struct pschars *CID2ChrsSubrs2(SplineFont *cidmaster,struct fd2data *fds, + int flags, struct pschars **_glbls,int layer); +enum bitmapformat { bf_bdf, bf_ttf, bf_sfnt_dfont, bf_sfnt_ms, bf_otb, + bf_nfntmacbin, /*bf_nfntdfont, */bf_fon, bf_fnt, bf_palm, + bf_ptype3, + bf_none }; +extern const char *GetAuthor(void); +extern SplineChar *SFFindExistingCharMac(SplineFont *,EncMap *map, int unienc); +extern void SC_PSDump(void (*dumpchar)(int ch,void *data), void *data, + SplineChar *sc, int refs_to_splines, int pdfopers,int layer ); +extern int _WritePSFont(FILE *out,SplineFont *sf,enum fontformat format,int flags,EncMap *enc,SplineFont *fullsf,int layer); +extern int WritePSFont(char *fontname,SplineFont *sf,enum fontformat format,int flags,EncMap *enc,SplineFont *fullsf,int layer); +extern int WriteMacPSFont(char *fontname,SplineFont *sf,enum fontformat format, + int flags,EncMap *enc,int layer); +extern int _WriteTTFFont(FILE *ttf,SplineFont *sf, enum fontformat format, + int32 *bsizes, enum bitmapformat bf,int flags,EncMap *enc,int layer); +extern int WriteTTFFont(char *fontname,SplineFont *sf, enum fontformat format, + int32 *bsizes, enum bitmapformat bf,int flags,EncMap *enc,int layer); +extern int _WriteType42SFNTS(FILE *type42,SplineFont *sf,enum fontformat format, + int flags,EncMap *enc,int layer); +extern int WriteMacTTFFont(char *fontname,SplineFont *sf, enum fontformat format, + int32 *bsizes, enum bitmapformat bf,int flags,EncMap *enc,int layer); +extern int WriteMacBitmaps(char *filename,SplineFont *sf, int32 *sizes, + int is_dfont,EncMap *enc); +extern int WritePalmBitmaps(char *filename,SplineFont *sf, int32 *sizes,EncMap *enc); +extern int WriteMacFamily(char *filename,struct sflist *sfs,enum fontformat format, + enum bitmapformat bf,int flags,EncMap *enc,int layer); +extern long mactime(void); +extern int WriteSVGFont(char *fontname,SplineFont *sf,enum fontformat format,int flags,EncMap *enc,int layer); +extern int WriteUFOFont(char *fontname,SplineFont *sf,enum fontformat format,int flags,EncMap *enc,int layer); +extern void SfListFree(struct sflist *sfs); +extern void TTF_PSDupsDefault(SplineFont *sf); +extern void DefaultTTFEnglishNames(struct ttflangname *dummy, SplineFont *sf); +extern void TeXDefaultParams(SplineFont *sf); +extern int AlreadyMSSymbolArea(SplineFont *sf,EncMap *map); +extern void OS2FigureCodePages(SplineFont *sf, uint32 CodePage[2]); +extern void OS2FigureUnicodeRanges(SplineFont *sf, uint32 Ranges[4]); +extern void SFDefaultOS2Info(struct pfminfo *pfminfo,SplineFont *sf,char *fontname); +extern void SFDefaultOS2Simple(struct pfminfo *pfminfo,SplineFont *sf); +extern void SFDefaultOS2SubSuper(struct pfminfo *pfminfo,int emsize,double italicangle); +extern void VerifyLanguages(SplineFont *sf); +extern int ScriptIsRightToLeft(uint32 script); +extern void ScriptMainRange(uint32 script, int *start, int *end); +extern uint32 ScriptFromUnicode(int u,SplineFont *sf); +extern uint32 SCScriptFromUnicode(SplineChar *sc); +extern int SCRightToLeft(SplineChar *sc); +extern int SLIContainsR2L(SplineFont *sf,int sli); +extern void SFFindNearTop(SplineFont *); +extern void SFRestoreNearTop(SplineFont *); +extern int SFForceEncoding(SplineFont *sf,EncMap *old,Encoding *new_map); +extern int CountOfEncoding(Encoding *encoding_name); +extern void SFMatchGlyphs(SplineFont *sf,SplineFont *target,int addempties); +extern void MMMatchGlyphs(MMSet *mm); +extern char *_GetModifiers(char *fontname, char *familyname,char *weight); +extern char *SFGetModifiers(SplineFont *sf); +extern const unichar_t *_uGetModifiers(const unichar_t *fontname, const unichar_t *familyname, + const unichar_t *weight); +extern void SFSetFontName(SplineFont *sf, char *family, char *mods, char *full); +extern void ttfdumpbitmap(SplineFont *sf,struct alltabs *at,int32 *sizes); +extern void ttfdumpbitmapscaling(SplineFont *sf,struct alltabs *at,int32 *sizes); +extern void SplineFontSetUnChanged(SplineFont *sf); + +extern int RealNear(real a,real b); +extern int RealNearish(real a,real b); +extern int RealApprox(real a,real b); +extern int RealWithin(real a,real b,real fudge); +extern int RealRatio(real a,real b,real fudge); + +extern int PointsDiagonalable(SplineFont *sf,BasePoint **bp,BasePoint *unit); +extern int MergeDStemInfo(SplineFont *sf,DStemInfo **ds, DStemInfo *test); + +extern void LineListFree(LineList *ll); +extern void LinearApproxFree(LinearApprox *la); +extern void SplineFree(Spline *spline); +extern SplinePoint *SplinePointCreate(real x, real y); +extern void SplinePointFree(SplinePoint *sp); +extern void SplinePointMDFree(SplineChar *sc,SplinePoint *sp); +extern void SplinePointsFree(SplinePointList *spl); +extern void SplinePointListFree(SplinePointList *spl); +extern void SplinePointListMDFree(SplineChar *sc,SplinePointList *spl); +extern void SplinePointListsMDFree(SplineChar *sc,SplinePointList *spl); +extern void SplinePointListsFree(SplinePointList *head); +extern void SplineSetBeziersClear(SplineSet *spl); +extern void RefCharFree(RefChar *ref); +extern void RefCharsFree(RefChar *ref); +extern void RefCharsFreeRef(RefChar *ref); +extern void CopyBufferFree(void); +extern void CopyBufferClearCopiedFrom(SplineFont *dying); +extern void UndoesFree(Undoes *undo); +extern void StemInfosFree(StemInfo *h); +extern void StemInfoFree(StemInfo *h); +extern void DStemInfosFree(DStemInfo *h); +extern void DStemInfoFree(DStemInfo *h); +extern void KernPairsFree(KernPair *kp); +extern void SCOrderAP(SplineChar *sc); +extern void AnchorPointsFree(AnchorPoint *ap); +extern AnchorPoint *AnchorPointsCopy(AnchorPoint *alist); +extern void SFRemoveAnchorClass(SplineFont *sf,AnchorClass *an); +extern int AnchorClassesNextMerge(AnchorClass *ac); +extern int IsAnchorClassUsed(SplineChar *sc,AnchorClass *an); +extern AnchorPoint *APAnchorClassMerge(AnchorPoint *anchors,AnchorClass *into,AnchorClass *from); +extern void AnchorClassMerge(SplineFont *sf,AnchorClass *into,AnchorClass *from); +extern void AnchorClassesFree(AnchorClass *kp); +extern void TtfTablesFree(struct ttf_table *tab); +extern void SFRemoveSavedTable(SplineFont *sf, uint32 tag); +extern AnchorClass *AnchorClassMatch(SplineChar *sc1,SplineChar *sc2, + AnchorClass *restrict_, AnchorPoint **_ap1,AnchorPoint **_ap2 ); +extern AnchorClass *AnchorClassMkMkMatch(SplineChar *sc1,SplineChar *sc2, + AnchorPoint **_ap1,AnchorPoint **_ap2 ); +extern AnchorClass *AnchorClassCursMatch(SplineChar *sc1,SplineChar *sc2, + AnchorPoint **_ap1,AnchorPoint **_ap2 ); +extern void SCInsertPST(SplineChar *sc,PST *new); +#ifdef FONTFORGE_CONFIG_DEVICETABLES +extern void ValDevFree(ValDevTab *adjust); +extern ValDevTab *ValDevTabCopy(ValDevTab *orig); +extern void DeviceTableFree(DeviceTable *adjust); +extern DeviceTable *DeviceTableCopy(DeviceTable *orig); +extern void DeviceTableSet(DeviceTable *adjust, int size, int correction); +#endif +extern void PSTFree(PST *lig); +extern uint16 PSTDefaultFlags(enum possub_type type,SplineChar *sc ); +extern int PSTContains(const char *components,const char *name); +extern StemInfo *StemInfoCopy(StemInfo *h); +extern DStemInfo *DStemInfoCopy(DStemInfo *h); +extern MinimumDistance *MinimumDistanceCopy(MinimumDistance *h); +extern void SPChangePointType(SplinePoint *sp, int pointtype); +struct sfmergecontext { + SplineFont *sf_from, *sf_to; + int lcnt; + struct lookup_cvt { OTLookup *from, *to; int old;} *lks; + int scnt; + struct sub_cvt { struct lookup_subtable *from, *to; int old;} *subs; + int acnt; + struct ac_cvt { AnchorClass *from, *to; int old;} *acs; + char *prefix; + int preserveCrossFontKerning; + int lmax; +}; +extern PST *PSTCopy(PST *base,SplineChar *sc,struct sfmergecontext *mc); +extern struct lookup_subtable *MCConvertSubtable(struct sfmergecontext *mc,struct lookup_subtable *sub); +extern AnchorClass *MCConvertAnchorClass(struct sfmergecontext *mc,AnchorClass *ac); +extern void SFFinishMergeContext(struct sfmergecontext *mc); +extern SplineChar *SplineCharCopy(SplineChar *sc,SplineFont *into,struct sfmergecontext *); +extern BDFChar *BDFCharCopy(BDFChar *bc); +extern void BCFlattenFloat(BDFChar *bc); +extern void BitmapsCopy(SplineFont *to, SplineFont *from, int to_index, int from_index ); +extern struct gimage *ImageAlterClut(struct gimage *image); +extern void ImageListsFree(ImageList *imgs); +extern void TTFLangNamesFree(struct ttflangname *l); +extern void AltUniFree(struct altuni *altuni); +extern void AltUniFigure(SplineFont *sf,EncMap *map); +extern void AltUniRemove(SplineChar *sc,int uni); +extern void AltUniAdd(SplineChar *sc,int uni); +extern void MinimumDistancesFree(MinimumDistance *md); +extern void LayerDefault(Layer *); +extern SplineChar *SplineCharCreate(int layer_cnt); +extern SplineChar *SFSplineCharCreate(SplineFont *sf); +extern RefChar *RefCharCreate(void); +extern RefChar *RefCharsCopy(RefChar *ref); /* Still needs to be instanciated and have the dependency list adjusted */ +extern void SCAddRef(SplineChar *sc,SplineChar *rsc,int layer, real xoff, real yoff); +extern void _SCAddRef(SplineChar *sc,SplineChar *rsc,int layer, real transform[6]); +extern KernClass *KernClassCopy(KernClass *kc); +extern void KernClassFreeContents(KernClass *kc); +extern void KernClassListFree(KernClass *kc); +extern int KernClassContains(KernClass *kc, char *name1, char *name2, int ordered ); +extern void OTLookupFree(OTLookup *lookup); +extern void OTLookupListFree(OTLookup *lookup ); +extern FPST *FPSTCopy(FPST *fpst); +extern void FPSTRuleContentsFree(struct fpst_rule *r, enum fpossub_format format); +extern void FPSTRulesFree(struct fpst_rule *r, enum fpossub_format format, int rcnt); +extern void FPSTFree(FPST *fpst); +extern void ASMFree(ASM *sm); +extern struct macname *MacNameCopy(struct macname *mn); +extern void MacNameListFree(struct macname *mn); +extern void MacSettingListFree(struct macsetting *ms); +extern void MacFeatListFree(MacFeat *mf); +extern void GlyphVariantsFree(struct glyphvariants *gv); +extern void MathKernVContentsFree(struct mathkernvertex *mk); +extern void MathKernFree(struct mathkern *mk); +extern struct mathkern *MathKernCopy(struct mathkern *mk); +extern void SplineCharListsFree(struct splinecharlist *dlist); +extern void LayerFreeContents(SplineChar *sc, int layer); +extern void SplineCharFreeContents(SplineChar *sc); +extern void SplineCharFree(SplineChar *sc); +extern void EncMapFree(EncMap *map); +extern EncMap *EncMapFromEncoding(SplineFont *sf,Encoding *enc); +extern EncMap *CompactEncMap(EncMap *map, SplineFont *sf); +extern EncMap *EncMapNew(int encmax, int backmax, Encoding *enc); +extern EncMap *EncMap1to1(int enccount); +extern EncMap *EncMapCopy(EncMap *map); +extern void SFExpandGlyphCount(SplineFont *sf, int newcnt); +extern void ScriptLangListFree(struct scriptlanglist *sl); +extern void FeatureScriptLangListFree(FeatureScriptLangList *fl); +extern void SFBaseSort(SplineFont *sf); +extern struct baselangextent *BaseLangCopy(struct baselangextent *extent); +extern void BaseLangFree(struct baselangextent *extent); +extern void BaseScriptFree(struct basescript *bs); +extern void BaseFree(struct Base *base); +extern void SplineFontFree(SplineFont *sf); +extern void MATHFree(struct MATH *math); +extern struct MATH *MathTableNew(SplineFont *sf); +extern void OtfNameListFree(struct otfname *on); +extern void MarkClassFree(int cnt,char **classes,char **names); +extern void MMSetFreeContents(MMSet *mm); +extern void MMSetFree(MMSet *mm); +extern void SFRemoveUndoes(SplineFont *sf,uint8 *selected,EncMap *map); +extern void SplineRefigure3(Spline *spline); +extern void SplineRefigure(Spline *spline); +extern Spline *SplineMake3(SplinePoint *from, SplinePoint *to); +extern LinearApprox *SplineApproximate(Spline *spline, real scale); +extern int SplinePointListIsClockwise(const SplineSet *spl); +extern void SplineSetFindBounds(const SplinePointList *spl, DBounds *bounds); +extern void SplineCharLayerFindBounds(SplineChar *sc,int layer,DBounds *bounds); +extern void SplineCharFindBounds(SplineChar *sc,DBounds *bounds); +extern void SplineFontLayerFindBounds(SplineFont *sf,int layer,DBounds *bounds); +extern void SplineFontFindBounds(SplineFont *sf,DBounds *bounds); +extern void CIDLayerFindBounds(SplineFont *sf,int layer,DBounds *bounds); +extern void SplineSetQuickBounds(SplineSet *ss,DBounds *b); +extern void SplineCharQuickBounds(SplineChar *sc, DBounds *b); +extern void SplineSetQuickConservativeBounds(SplineSet *ss,DBounds *b); +extern void SplineCharQuickConservativeBounds(SplineChar *sc, DBounds *b); +extern void SplineFontQuickConservativeBounds(SplineFont *sf,DBounds *b); +extern void SplinePointCatagorize(SplinePoint *sp); +extern int SplinePointIsACorner(SplinePoint *sp); +extern void SPLCatagorizePoints(SplinePointList *spl); +extern void SCCatagorizePoints(SplineChar *sc); +extern SplinePointList *SplinePointListCopy1(const SplinePointList *spl); +extern SplinePointList *SplinePointListCopy(const SplinePointList *base); +extern SplinePointList *SplinePointListCopySelected(SplinePointList *base); +extern ImageList *ImageListCopy(ImageList *cimg); +extern ImageList *ImageListTransform(ImageList *cimg,real transform[6]); +extern void ApTransform(AnchorPoint *ap, real transform[6]); +extern SplinePointList *SplinePointListTransform(SplinePointList *base, real transform[6], int allpoints ); +extern SplinePointList *SplinePointListShift(SplinePointList *base, real xoff, int allpoints ); +extern HintMask *HintMaskFromTransformedRef(RefChar *ref,BasePoint *trans, + SplineChar *basesc,HintMask *hm); +extern SplinePointList *SPLCopyTranslatedHintMasks(SplinePointList *base, + SplineChar *basesc, SplineChar *subsc, BasePoint *trans); +extern SplinePointList *SPLCopyTransformedHintMasks(RefChar *r, + SplineChar *basesc, BasePoint *trans,int layer); +extern SplinePointList *SplinePointListRemoveSelected(SplineChar *sc,SplinePointList *base); +extern void SplinePointListSet(SplinePointList *tobase, SplinePointList *frombase); +extern void SplinePointListSelect(SplinePointList *spl,int sel); +extern void SCRefToSplines(SplineChar *sc,RefChar *rf,int layer); +extern void RefCharFindBounds(RefChar *rf); +extern void SCReinstanciateRefChar(SplineChar *sc,RefChar *rf,int layer); +extern void SCReinstanciateRef(SplineChar *sc,SplineChar *rsc,int layer); +extern void SFReinstanciateRefs(SplineFont *sf); +extern void SFInstanciateRefs(SplineFont *sf); +extern SplineChar *MakeDupRef(SplineChar *base, int local_enc, int uni_enc); +extern void SCRemoveDependent(SplineChar *dependent,RefChar *rf,int layer); +extern void SCRemoveLayerDependents(SplineChar *dependent,int layer); +extern void SCRemoveDependents(SplineChar *dependent); +extern int SCDependsOnSC(SplineChar *parent, SplineChar *child); +extern void BCCompressBitmap(BDFChar *bdfc); +extern void BCRegularizeBitmap(BDFChar *bdfc); +extern void BCRegularizeGreymap(BDFChar *bdfc); +extern void BCPasteInto(BDFChar *bc,BDFChar *rbc,int ixoff,int iyoff, int invert, int cleartoo); +extern void BCRotateCharForVert(BDFChar *bc,BDFChar *from, BDFFont *frombdf); +extern int GradientHere(double scale,DBounds *bbox,int iy,int ix, + struct gradient *grad,struct pattern *pat, int defgrey); +extern void PatternPrep(SplineChar *sc,struct brush *brush,double scale); +extern BDFChar *SplineCharRasterize(SplineChar *sc, int layer, double pixelsize); +extern BDFFont *SplineFontToBDFHeader(SplineFont *_sf, int pixelsize, int indicate); +extern BDFFont *SplineFontRasterize(SplineFont *sf, int layer, int pixelsize, int indicate); +extern void BDFCAntiAlias(BDFChar *bc, int linear_scale); +extern BDFChar *SplineCharAntiAlias(SplineChar *sc, int layer, int pixelsize,int linear_scale); +extern BDFFont *SplineFontAntiAlias(SplineFont *sf, int layer, int pixelsize,int linear_scale); +extern struct clut *_BDFClut(int linear_scale); +extern void BDFClut(BDFFont *bdf, int linear_scale); +extern int BDFDepth(BDFFont *bdf); +extern BDFChar *BDFPieceMeal(BDFFont *bdf, int index); +extern BDFChar *BDFPieceMealCheck(BDFFont *bdf, int index); +enum piecemeal_flags { pf_antialias=1, pf_bbsized=2, pf_ft_nohints=4 }; +extern BDFFont *SplineFontPieceMeal(SplineFont *sf,int layer,int pixelsize,int flags,void *freetype_context); +extern void BDFCharFindBounds(BDFChar *bc,IBounds *bb); +extern BDFFont *BitmapFontScaleTo(BDFFont *old, int to); +extern void BDFCharFree(BDFChar *bdfc); +extern void BDFPropsFree(BDFFont *bdf); +extern void BDFFontFree(BDFFont *bdf); +extern void SFDefaultAscent(SplineFont *sf); +extern int PSBitmapDump(char *filename,BDFFont *font, EncMap *map); +extern int BDFFontDump(char *filename,BDFFont *font, EncMap *map, int res); +extern int FNTFontDump(char *filename,BDFFont *font, EncMap *map, int res); +extern int FONFontDump(char *filename,SplineFont *sf, int32 *sizes,int res, + EncMap *map); +extern void SFReplaceEncodingBDFProps(SplineFont *sf,EncMap *map); +extern void SFReplaceFontnameBDFProps(SplineFont *sf); +extern int IsUnsignedBDFKey(char *key); +extern int BdfPropHasInt(BDFFont *font,const char *key, int def ); +extern char *BdfPropHasString(BDFFont *font,const char *key, char *def ); +extern void def_Charset_Enc(EncMap *map,char *reg,char *enc); +extern void Default_XLFD(BDFFont *bdf,EncMap *map, int res); +extern void Default_Properties(BDFFont *bdf,EncMap *map,char *onlyme); +extern void BDFDefaultProps(BDFFont *bdf, EncMap *map, int res); +extern BDFProperties *BdfPropsCopy(BDFProperties *props, int cnt ); +struct xlfd_components { + char foundry[80]; + char family[100]; + char weight[80]; + char slant[40]; + char setwidth[50]; + char add_style[50]; + int pixel_size; + int point_size; + int res_x; + int res_y; + char spacing[40]; + int avg_width; + char cs_reg[80]; /* encoding */ + char cs_enc[80]; /* encoding version? */ + int char_cnt; +}; +struct std_bdf_props { + char *name; + int type; + int defaultable; +}; +extern void XLFD_GetComponents(char *xlfd,struct xlfd_components *comp); +extern void XLFD_CreateComponents(BDFFont *bdf,EncMap *map,int res,struct xlfd_components *comp); +/* Two lines intersect in at most 1 point */ +/* Two quadratics intersect in at most 4 points */ +/* Two cubics intersect in at most 9 points */ /* Plus an extra space for a trailing -1 */ +extern int SplinesIntersect(const Spline *s1, const Spline *s2, BasePoint pts[9], + extended t1s[10], extended t2s[10]); +extern SplineSet *LayerAllSplines(Layer *layer); +extern SplineSet *LayerUnAllSplines(Layer *layer); +extern int SplineSetIntersect(SplineSet *spl, Spline **_spline, Spline **_spline2 ); +extern int LineTangentToSplineThroughPt(Spline *s, BasePoint *pt, extended ts[4], + extended tmin, extended tmax); +extern int CubicSolve(const Spline1D *sp,extended ts[3]); +extern extended IterateSplineSolve(const Spline1D *sp, extended tmin, extended tmax, extended sought_y, double err); +extern extended SplineSolve(const Spline1D *sp, real tmin, real tmax, extended sought_y, real err); +extern int SplineSolveFull(const Spline1D *sp,extended val, extended ts[3]); +extern void SplineFindExtrema(const Spline1D *sp, extended *_t1, extended *_t2 ); + +SplineSet *SplineSetsInterpolate(SplineSet *base, SplineSet *other, real amount, SplineChar *sc); +SplineChar *SplineCharInterpolate(SplineChar *base, SplineChar *other, real amount); +extern SplineFont *InterpolateFont(SplineFont *base, SplineFont *other, real amount, Encoding *enc); + +double SFSerifHeight(SplineFont *sf); + +extern void DumpPfaEditEncodings(void); +extern void ParseEncodingFile(char *filename); +extern void LoadPfaEditEncodings(void); + +extern int GenerateScript(SplineFont *sf,char *filename,char *bitmaptype, + int fmflags,int res, char *subfontdirectory,struct sflist *sfs, + EncMap *map,NameList *rename_to,int layer); + +extern void _SCAutoTrace(SplineChar *sc, int layer, char **args); +extern char **AutoTraceArgs(int ask); + +#define CURVATURE_ERROR -1e9 +extern double SplineCurvature(Spline *s, double t); + +#ifndef EXTENDED_IS_LONG_DOUBLE +extern double CheckExtremaForSingleBitErrors(const Spline1D *sp, double t); +#define esqrt(d) sqrt(d) +#else +extern extended esqrt(extended e); +#endif +extern int Spline2DFindExtrema(const Spline *sp, extended extrema[4] ); +extern int Spline2DFindPointsOfInflection(const Spline *sp, extended poi[2] ); +extern int SplineAtInflection(Spline1D *sp, double t ); +extern int SplineAtMinMax(Spline1D *sp, double t ); +extern void SplineRemoveExtremaTooClose(Spline1D *sp, extended *_t1, extended *_t2 ); +extern int NearSpline(struct findsel *fs, Spline *spline); +extern real SplineNearPoint(Spline *spline, BasePoint *bp, real fudge); +extern void SCMakeDependent(SplineChar *dependent,SplineChar *base); +extern SplinePoint *SplineBisect(Spline *spline, extended t); +extern Spline *SplineSplit(Spline *spline, extended ts[3]); +extern Spline *ApproximateSplineFromPoints(SplinePoint *from, SplinePoint *to, + TPoint *mid, int cnt,int order2); +extern Spline *ApproximateSplineFromPointsSlopes(SplinePoint *from, SplinePoint *to, + TPoint *mid, int cnt,int order2); +extern double SplineLength(Spline *spline); +extern double SplineLengthRange(Spline *spline, real from_t, real to_t); +extern double PathLength(SplineSet *ss); +extern Spline *PathFindDistance(SplineSet *path,double d,double *_t); +extern SplineSet *SplineSetBindToPath(SplineSet *ss,int doscale, int glyph_as_unit, + int align,real offset, SplineSet *path); +extern int SplineIsLinear(Spline *spline); +extern int SplineIsLinearMake(Spline *spline); +extern int SSPointWithin(SplineSet *spl,BasePoint *pt); +extern SplineSet *SSRemoveZeroLengthSplines(SplineSet *base); +extern void SSRemoveStupidControlPoints(SplineSet *base); +extern void SSOverlapClusterCpAngles(SplineSet *base,double within); +extern void SplinesRemoveBetween(SplineChar *sc, SplinePoint *from, SplinePoint *to,int type); +extern void SplineCharMerge(SplineChar *sc,SplineSet **head,int type); +extern void SPLNearlyHvCps(SplineChar *sc,SplineSet *ss,double err); +extern void SPLNearlyHvLines(SplineChar *sc,SplineSet *ss,double err); +extern int SPLNearlyLines(SplineChar *sc,SplineSet *ss,double err); +extern int SPInterpolate(SplinePoint *sp); +extern void SplinePointListSimplify(SplineChar *sc,SplinePointList *spl, + struct simplifyinfo *smpl); +extern SplineSet *SplineCharSimplify(SplineChar *sc,SplineSet *head, + struct simplifyinfo *smpl); +extern void SPLStartToLeftmost(SplineChar *sc,SplinePointList *spl, int *changed); +extern void SPLsStartToLeftmost(SplineChar *sc,int layer); +extern void CanonicalContours(SplineChar *sc,int layer); +extern void SplineSetJoinCpFixup(SplinePoint *sp); +extern SplineSet *SplineSetJoin(SplineSet *start,int doall,real fudge,int *changed); +enum ae_type { ae_all, ae_between_selected, ae_only_good, ae_only_good_rm_later }; +extern Spline *SplineAddExtrema(Spline *s,int always,real lenbound, + real offsetbound,DBounds *b); +extern void SplineSetAddExtrema(SplineChar *sc,SplineSet *ss,enum ae_type between_selected, int emsize); +extern void SplineCharAddExtrema(SplineChar *sc,SplineSet *head,enum ae_type between_selected,int emsize); +extern SplineSet *SplineCharRemoveTiny(SplineChar *sc,SplineSet *head); +extern SplineFont *SplineFontNew(void); +extern char *GetNextUntitledName(void); +extern SplineFont *SplineFontEmpty(void); +extern SplineFont *SplineFontBlank(int charcnt); +extern void SFIncrementXUID(SplineFont *sf); +extern void SFRandomChangeXUID(SplineFont *sf); +extern SplineSet *SplineSetReverse(SplineSet *spl); +extern SplineSet *SplineSetsExtractOpen(SplineSet **tbase); +extern void SplineSetsInsertOpen(SplineSet **tbase,SplineSet *open); +extern SplineSet *SplineSetsCorrect(SplineSet *base,int *changed); +extern SplineSet *SplineSetsAntiCorrect(SplineSet *base); +extern SplineSet *SplineSetsDetectDir(SplineSet **_base, int *lastscan); +extern void SPAverageCps(SplinePoint *sp); +extern void SPLAverageCps(SplinePointList *spl); +extern void SPWeightedAverageCps(SplinePoint *sp); +extern void SplineCharDefaultPrevCP(SplinePoint *base); +extern void SplineCharDefaultNextCP(SplinePoint *base); +extern void SplineCharTangentNextCP(SplinePoint *sp); +extern void SplineCharTangentPrevCP(SplinePoint *sp); +extern void SPHVCurveForce(SplinePoint *sp); +extern void SPSmoothJoint(SplinePoint *sp); +extern int PointListIsSelected(SplinePointList *spl); +extern void SCSplinePointsUntick(SplineChar *sc,int layer); +extern void SFOrderBitmapList(SplineFont *sf); +extern int KernThreshold(SplineFont *sf, int cnt); +extern real SFGuessItalicAngle(SplineFont *sf); + +extern SplinePoint *SplineTtfApprox(Spline *ps); +extern SplineSet *SSttfApprox(SplineSet *ss); +extern SplineSet *SplineSetsTTFApprox(SplineSet *ss); +extern SplineSet *SSPSApprox(SplineSet *ss); +extern SplineSet *SplineSetsPSApprox(SplineSet *ss); +extern SplineSet *SplineSetsConvertOrder(SplineSet *ss, int to_order2); +extern void SplineRefigure2(Spline *spline); +extern void SplineRefigureFixup(Spline *spline); +extern Spline *SplineMake2(SplinePoint *from, SplinePoint *to); +extern Spline *SplineMake(SplinePoint *from, SplinePoint *to, int order2); +extern Spline *SFSplineMake(SplineFont *sf,SplinePoint *from, SplinePoint *to); +extern void SCConvertToOrder2(SplineChar *sc); +extern void SFConvertToOrder2(SplineFont *sf); +extern void SCConvertToOrder3(SplineChar *sc); +extern void SFConvertToOrder3(SplineFont *sf); +extern void SFConvertGridToOrder2(SplineFont *_sf); +extern void SCConvertLayerToOrder2(SplineChar *sc,int layer); +extern void SFConvertLayerToOrder2(SplineFont *sf,int layer); +extern void SFConvertGridToOrder3(SplineFont *_sf); +extern void SCConvertLayerToOrder3(SplineChar *sc,int layer); +extern void SFConvertLayerToOrder3(SplineFont *sf,int layer); +extern void SCConvertOrder(SplineChar *sc, int to_order2); +extern void SplinePointPrevCPChanged2(SplinePoint *sp); +extern void SplinePointNextCPChanged2(SplinePoint *sp); +extern int IntersectLines(BasePoint *inter, + BasePoint *line1_1, BasePoint *line1_2, + BasePoint *line2_1, BasePoint *line2_2); +extern int IntersectLinesClip(BasePoint *inter, + BasePoint *line1_1, BasePoint *line1_2, + BasePoint *line2_1, BasePoint *line2_2); + +#if 0 +extern void SSBisectTurners(SplineSet *spl); +#endif +extern SplineSet *SplineSetStroke(SplineSet *spl,StrokeInfo *si,SplineChar *sc); +extern SplineSet *SSStroke(SplineSet *spl,StrokeInfo *si,SplineChar *sc); +extern SplineSet *SplineSetRemoveOverlap(SplineChar *sc,SplineSet *base,enum overlap_type); +extern SplineSet *SSShadow(SplineSet *spl,real angle, real outline_width, + real shadow_length,SplineChar *sc, int wireframe); + +extern double BlueScaleFigureForced(struct psdict *private,real bluevalues[], real otherblues[]); +extern double BlueScaleFigure(struct psdict *private,real bluevalues[], real otherblues[]); +extern void FindBlues( SplineFont *sf, int layer, real blues[14], real otherblues[10]); +extern void QuickBlues(SplineFont *sf, int layer, BlueData *bd); +extern void FindHStems( SplineFont *sf, real snaps[12], real cnt[12]); +extern void FindVStems( SplineFont *sf, real snaps[12], real cnt[12]); +extern double SFStdVW(SplineFont *sf); +extern int SplineCharIsFlexible(SplineChar *sc,int layer); +extern void SCGuessHintInstancesList(SplineChar *sc,int layer,StemInfo *hstem,StemInfo *vstem,DStemInfo *dstem,int hvforce,int dforce); +extern void SCGuessDHintInstances(SplineChar *sc, int layer,DStemInfo *ds ); +extern void SCGuessHHintInstancesAndAdd(SplineChar *sc, int layer,StemInfo *stem, real guess1, real guess2); +extern void SCGuessVHintInstancesAndAdd(SplineChar *sc, int layer,StemInfo *stem, real guess1, real guess2); +extern void SCGuessHHintInstancesList(SplineChar *sc, int layer); +extern void SCGuessVHintInstancesList(SplineChar *sc, int layer); +extern real HIlen( StemInfo *stems); +extern real HIoverlap( HintInstance *mhi, HintInstance *thi); +extern int StemInfoAnyOverlaps(StemInfo *stems); +extern int StemListAnyConflicts(StemInfo *stems); +extern HintInstance *HICopyTrans(HintInstance *hi, real mul, real offset); +extern void MDAdd(SplineChar *sc, int x, SplinePoint *sp1, SplinePoint *sp2); +extern int SFNeedsAutoHint( SplineFont *_sf,int layer); + +typedef struct bluezone { + real base; + int cvtindex; + real family_base; /* NaN if none */ + int family_cvtindex; + real overshoot; /* relative to baseline, NOT to base */ + int highest; /* used in autoinstructing for HStem positioning */ + int lowest; /* as above */ +} BlueZone; + +typedef struct stdstem { + real width; /* -1 if none */ + int cvtindex; + struct stdstem *snapto;/* NULL means stem isn't snapped to any other */ + int stopat; /* at which ppem stop snapping to snapto */ +} StdStem; + +typedef struct globalinstrct { + SplineFont *sf; + int layer; + BlueData *bd; + double fudge; + + /* Did we initialize the tables needed? 'maxp' is skipped because */ + /* its initialization always succeeds. */ + int cvt_done; + int fpgm_done; + int prep_done; + + /* PS private data with truetype-specific information added */ + BlueZone blues[12]; /* like in BlueData */ + int bluecnt; + StdStem stdhw; + StdStem *stemsnaph; /* StdHW excluded */ + int stemsnaphcnt; + StdStem stdvw; + StdStem *stemsnapv; /* StdVW excluded */ + int stemsnapvcnt; +} GlobalInstrCt; + +extern void InitGlobalInstrCt( GlobalInstrCt *gic,SplineFont *sf,int layer, + BlueData *bd ); +extern void FreeGlobalInstrCt( GlobalInstrCt *gic ); +extern void NowakowskiSCAutoInstr( GlobalInstrCt *gic,SplineChar *sc ); +extern void CVT_ImportPrivate(SplineFont *sf); + +extern void SCModifyHintMasksAdd(SplineChar *sc,int layer,StemInfo *new); +extern void SCClearHints(SplineChar *sc); +extern void SCClearHintMasks(SplineChar *sc,int layer,int counterstoo); +extern void SCFigureVerticalCounterMasks(SplineChar *sc); +extern void SCFigureCounterMasks(SplineChar *sc); +extern void SCFigureHintMasks(SplineChar *sc,int layer); +extern void _SplineCharAutoHint( SplineChar *sc, int layer, BlueData *bd, struct glyphdata *gd2, int gen_undoes ); +extern void SplineCharAutoHint( SplineChar *sc,int layer, BlueData *bd); +extern void SFSCAutoHint( SplineChar *sc,int layer,BlueData *bd); +extern void SplineFontAutoHint( SplineFont *sf, int layer); +extern void SplineFontAutoHintRefs( SplineFont *sf, int layer); +extern StemInfo *HintCleanup(StemInfo *stem,int dosort,int instance_count); +extern int SplineFontIsFlexible(SplineFont *sf,int layer, int flags); +extern int SCDrawsSomething(SplineChar *sc); +#define SCWorthOutputting(a) 1 +extern int SFFindNotdef(SplineFont *sf, int fixed); +extern int doesGlyphExpandHorizontally(SplineChar *sc); +extern int IsntBDFChar(BDFChar *bdfc); +extern int CIDWorthOutputting(SplineFont *cidmaster, int enc); /* Returns -1 on failure, font number on success */ +extern int AmfmSplineFont(FILE *afm, MMSet *mm,int formattype,EncMap *map,int layer); +extern int AfmSplineFont(FILE *afm, SplineFont *sf,int formattype,EncMap *map, int docc, SplineFont *fullsf,int layer); +extern int PfmSplineFont(FILE *pfm, SplineFont *sf,int type0,EncMap *map,int layer); +extern int TfmSplineFont(FILE *afm, SplineFont *sf,int formattype,EncMap *map,int layer); +extern int OfmSplineFont(FILE *afm, SplineFont *sf,int formattype,EncMap *map,int layer); +extern char *EncodingName(Encoding *map); +extern char *SFEncodingName(SplineFont *sf,EncMap *map); +extern void SFLigaturePrepare(SplineFont *sf); +extern void SFLigatureCleanup(SplineFont *sf); +extern void SFKernClassTempDecompose(SplineFont *sf,int isv); +extern void SFKernCleanup(SplineFont *sf,int isv); +extern int SCSetMetaData(SplineChar *sc,char *name,int unienc, + const char *comment); + +extern enum uni_interp interp_from_encoding(Encoding *enc,enum uni_interp interp); +extern const char *EncName(Encoding *encname); +extern const char*FindUnicharName(void); +extern Encoding *_FindOrMakeEncoding(const char *name,int make_it); +extern Encoding *FindOrMakeEncoding(const char *name); +extern void SFDDumpMacFeat(FILE *sfd,MacFeat *mf); +extern MacFeat *SFDParseMacFeatures(FILE *sfd, char *tok); +extern int SFDWrite(char *filename,SplineFont *sf,EncMap *map,EncMap *normal, int todir); +extern int SFDWriteBak(SplineFont *sf,EncMap *map,EncMap *normal); +extern SplineFont *SFDRead(char *filename); +extern SplineFont *_SFDRead(char *filename,FILE *sfd); +extern SplineFont *SFDirRead(char *filename); +extern SplineChar *SFDReadOneChar(SplineFont *sf,const char *name); +extern char *TTFGetFontName(FILE *ttf,int32 offset,int32 off2); +extern void TTFLoadBitmaps(FILE *ttf,struct ttfinfo *info, int onlyone); +enum ttfflags { ttf_onlystrikes=1, ttf_onlyonestrike=2, ttf_onlykerns=4, ttf_onlynames=8 }; +extern SplineFont *_SFReadTTF(FILE *ttf,int flags,enum openflags openflags, + char *filename,struct fontdict *fd); +extern SplineFont *SFReadTTF(char *filename,int flags,enum openflags openflags); +extern SplineFont *SFReadSVG(char *filename,int flags); +extern SplineFont *SFReadUFO(char *filename,int flags); +extern SplineFont *_CFFParse(FILE *temp,int len,char *fontsetname); +extern SplineFont *CFFParse(char *filename); +extern SplineFont *SFReadMacBinary(char *filename,int flags,enum openflags openflags); +extern SplineFont *SFReadWinFON(char *filename,int toback); +extern SplineFont *SFReadPalmPdb(char *filename,int toback); +extern SplineFont *LoadSplineFont(char *filename,enum openflags); +extern SplineFont *_ReadSplineFont(FILE *file,char *filename, enum openflags openflags); +extern SplineFont *ReadSplineFont(char *filename,enum openflags); /* Don't use this, use LoadSF instead */ +extern FILE *URLToTempFile(char *url,void *lock); +extern int URLFromFile(char *url,FILE *from); +extern int HttpGetBuf(char *url, char *databuf, int *datalen, void *mutex); +extern void ArchiveCleanup(char *archivedir); +extern char *Unarchive(char *name, char **_archivedir); +extern char *Decompress(char *name, int compression); +extern SplineFont *SFFromBDF(char *filename,int ispk,int toback); +extern SplineFont *SFFromMF(char *filename); +extern void SFCheckPSBitmap(SplineFont *sf); +extern uint16 _MacStyleCode( char *styles, SplineFont *sf, uint16 *psstyle ); +extern uint16 MacStyleCode( SplineFont *sf, uint16 *psstyle ); +extern SplineFont *SFReadIkarus(char *fontname); +extern SplineFont *_SFReadPdfFont(FILE *ttf,char *filename,char *select_this_font, enum openflags openflags); +extern SplineFont *SFReadPdfFont(char *filename, enum openflags openflags); +extern char **GetFontNames(char *filename); +extern char **NamesReadSFD(char *filename); +extern char **NamesReadTTF(char *filename); +extern char **NamesReadCFF(char *filename); +extern char **NamesReadPostscript(char *filename); +extern char **_NamesReadPostscript(FILE *ps); +extern char **NamesReadSVG(char *filename); +extern char **NamesReadUFO(char *filename); +extern char **NamesReadMacBinary(char *filename); + +extern void SFSetOrder(SplineFont *sf,int order2); +extern int SFFindOrder(SplineFont *sf); + +extern const char *UnicodeRange(int unienc); +extern SplineChar *SCBuildDummy(SplineChar *dummy,SplineFont *sf,EncMap *map,int i); +extern SplineChar *SFMakeChar(SplineFont *sf,EncMap *map,int i); +extern char *AdobeLigatureFormat(char *name); +extern uint32 LigTagFromUnicode(int uni); +extern void SCLigCaretheck(SplineChar *sc,int clean); +extern BDFChar *BDFMakeGID(BDFFont *bdf,int gid); +extern BDFChar *BDFMakeChar(BDFFont *bdf,EncMap *map,int enc); + +extern RefChar *RefCharsCopyState(SplineChar *sc,int layer); +extern int SCWasEmpty(SplineChar *sc, int skip_this_layer); +extern void SCUndoSetLBearingChange(SplineChar *sc,int lb); +extern Undoes *SCPreserveHints(SplineChar *sc,int layer); +extern Undoes *SCPreserveLayer(SplineChar *sc,int layer,int dohints); +extern Undoes *SCPreserveState(SplineChar *sc,int dohints); +extern Undoes *SCPreserveBackground(SplineChar *sc); +extern Undoes *SFPreserveGuide(SplineFont *sf); +extern Undoes *SCPreserveWidth(SplineChar *sc); +extern Undoes *SCPreserveVWidth(SplineChar *sc); +extern Undoes *BCPreserveState(BDFChar *bc); +extern void BCDoRedo(BDFChar *bc); +extern void BCDoUndo(BDFChar *bc); + +extern int isaccent(int uni); +extern int SFIsCompositBuildable(SplineFont *sf,int unicodeenc,SplineChar *sc, int layer); +extern int SFIsSomethingBuildable(SplineFont *sf,SplineChar *sc, int layer,int onlyaccents); +extern int SFIsRotatable(SplineFont *sf,SplineChar *sc, int layer); +extern int SCMakeDotless(SplineFont *sf, SplineChar *dotless, int layer, int copybmp, int doit); +extern void SCBuildComposit(SplineFont *sf, SplineChar *sc, int layer, int copybmp); +extern int SCAppendAccent(SplineChar *sc,int layer, char *glyph_name,int uni,int pos); +extern const unichar_t *SFGetAlternate(SplineFont *sf, int base,SplineChar *sc,int nocheck); + +extern int getAdobeEnc(char *name); + +extern void SFSplinesFromLayers(SplineFont *sf,int tostroke); +extern void SFSetLayerWidthsStroked(SplineFont *sf, real strokewidth); +extern SplineSet *SplinePointListInterpretSVG(char *filename,char *memory, int memlen, int em_size, int ascent,int stroked); +extern SplineSet *SplinePointListInterpretGlif(char *filename,char *memory, int memlen, int em_size, int ascent,int stroked); +#define UNDEFINED_WIDTH -999999 +extern SplinePointList *SplinePointListInterpretPS(FILE *ps,int flags,int stroked,int *width); +extern void PSFontInterpretPS(FILE *ps,struct charprocs *cp,char **encoding); +extern struct enc *PSSlurpEncodings(FILE *file); +extern int EvaluatePS(char *str,real *stack,int size); +struct pscontext { + int is_type2; + int painttype; + int instance_count; + real blend_values[17]; + int blend_warn; +}; +extern int UnblendedCompare(real u1[MmMax], real u2[MmMax], int cnt); +extern SplineChar *PSCharStringToSplines(uint8 *type1, int len, struct pscontext *context, + struct pschars *subrs, struct pschars *gsubrs, const char *name); +extern void MatMultiply(real m1[6], real m2[6], real to[6]); + +extern int NameToEncoding(SplineFont *sf,EncMap *map,const char *uname); +extern void GlyphHashFree(SplineFont *sf); +extern void SFHashGlyph(SplineFont *sf,SplineChar *sc); +extern SplineChar *SFHashName(SplineFont *sf,const char *name); +extern int SFFindGID(SplineFont *sf, int unienc, const char *name ); +extern int SFFindSlot(SplineFont *sf, EncMap *map, int unienc, const char *name ); +extern int SFCIDFindCID(SplineFont *sf, int unienc, const char *name ); +extern SplineChar *SFGetChar(SplineFont *sf, int unienc, const char *name ); +extern int SFHasChar(SplineFont *sf, int unienc, const char *name ); +extern SplineChar *SFGetOrMakeChar(SplineFont *sf, int unienc, const char *name ); +extern int SFFindExistingSlot(SplineFont *sf, int unienc, const char *name ); +extern int SFCIDFindExistingChar(SplineFont *sf, int unienc, const char *name ); +extern int SFHasCID(SplineFont *sf, int cid); + +extern char *getPfaEditDir(char *buffer); +extern void _DoAutoSaves(struct fontviewbase *); +extern void CleanAutoRecovery(void); +extern int DoAutoRecovery(int); +extern SplineFont *SFRecoverFile(char *autosavename,int inquire, int *state); +extern void SFAutoSave(SplineFont *sf,EncMap *map); +extern void SFClearAutoSave(SplineFont *sf); + +extern void PSCharsFree(struct pschars *chrs); +extern void PSDictFree(struct psdict *chrs); +extern struct psdict *PSDictCopy(struct psdict *dict); +extern int PSDictFindEntry(struct psdict *dict, char *key); +extern char *PSDictHasEntry(struct psdict *dict, char *key); +extern int PSDictRemoveEntry(struct psdict *dict, char *key); +extern int PSDictChangeEntry(struct psdict *dict, char *key, char *newval); +extern int SFPrivateGuess(SplineFont *sf,int layer, struct psdict *private, + char *name, int onlyone); + +extern void SFRemoveLayer(SplineFont *sf,int l); +extern void SFAddLayer(SplineFont *sf,char *name,int order2, int background); +extern void SFLayerSetBackground(SplineFont *sf,int layer,int is_back); + +extern void SplineSetsRound2Int(SplineSet *spl,real factor,int inspiro,int onlysel); +extern void SCRound2Int(SplineChar *sc,int layer, real factor); +extern int SCRoundToCluster(SplineChar *sc,int layer,int sel,double within,double max); +extern int SplineSetsRemoveAnnoyingExtrema(SplineSet *ss,double err); +extern int hascomposing(SplineFont *sf,int u,SplineChar *sc); +#if 0 +extern void SFFigureGrid(SplineFont *sf); +#endif + +struct cidmap; /* private structure to encoding.c */ +extern int CIDFromName(char *name,SplineFont *cidmaster); +extern int CID2Uni(struct cidmap *map,int cid); +extern int CID2NameUni(struct cidmap *map,int cid, char *buffer, int len); +extern int NameUni2CID(struct cidmap *map,int uni, const char *name); +extern int MaxCID(struct cidmap *map); +extern struct cidmap *LoadMapFromFile(char *file,char *registry,char *ordering, + int supplement); +extern struct cidmap *FindCidMap(char *registry,char *ordering,int supplement, + SplineFont *sf); +extern void SFEncodeToMap(SplineFont *sf,struct cidmap *map); +extern SplineFont *CIDFlatten(SplineFont *cidmaster,SplineChar **chars,int charcnt); +extern void SFFlatten(SplineFont *cidmaster); +extern int SFFlattenByCMap(SplineFont *sf,char *cmapname); +extern SplineFont *MakeCIDMaster(SplineFont *sf,EncMap *oldmap,int bycmap,char *cmapfilename,struct cidmap *cidmap); + +int getushort(FILE *ttf); +int32 getlong(FILE *ttf); +int get3byte(FILE *ttf); +real getfixed(FILE *ttf); +real get2dot14(FILE *ttf); +void putshort(FILE *file,int sval); +void putlong(FILE *file,int val); +void putfixed(FILE *file,real dval); +int ttfcopyfile(FILE *ttf, FILE *other, int pos, char *table_name); + +extern void SCCopyLayerToLayer(SplineChar *sc, int from, int to,int doclear); + +extern int hasFreeType(void); +extern int hasFreeTypeDebugger(void); +extern int hasFreeTypeByteCode(void); +extern int FreeTypeAtLeast(int major, int minor, int patch); +extern void doneFreeType(void); +extern void *_FreeTypeFontContext(SplineFont *sf,SplineChar *sc,struct fontviewbase *fv, + int layer, enum fontformat ff,int flags,void *shared_ftc); +extern void *FreeTypeFontContext(SplineFont *sf,SplineChar *sc,struct fontviewbase *fv,int layer); +extern BDFFont *SplineFontFreeTypeRasterize(void *freetypecontext,int pixelsize,int depth); +extern BDFChar *SplineCharFreeTypeRasterize(void *freetypecontext,int gid, + int pixelsize,int depth); +extern void FreeTypeFreeContext(void *freetypecontext); +extern SplineSet *FreeType_GridFitChar(void *single_glyph_context, + int enc, real ptsizey, real ptsizex, int dpi, uint16 *width, SplineChar *sc, int depth); +extern struct freetype_raster *FreeType_GetRaster(void *single_glyph_context, + int enc, real ptsizey, real ptsizex, int dpi,int depth); +extern BDFChar *SplineCharFreeTypeRasterizeNoHints(SplineChar *sc,int layer, + int pixelsize,int depth); +extern BDFFont *SplineFontFreeTypeRasterizeNoHints(SplineFont *sf,int layer, + int pixelsize,int depth); +extern void FreeType_FreeRaster(struct freetype_raster *raster); +struct TT_ExecContextRec_; +extern struct freetype_raster *DebuggerCurrentRaster(struct TT_ExecContextRec_ *exc,int depth); + +extern int UniFromName(const char *name,enum uni_interp interp, Encoding *encname); +extern const char *StdGlyphName(char *buffer, int uni, enum uni_interp interp, NameList *for_this_font); +extern char **AllGlyphNames(int uni, NameList *for_this_font,SplineChar *sc/* May be NULL*/); +extern char **AllNamelistNames(void); +extern NameList *DefaultNameListForNewFonts(void); +extern NameList *NameListByName(char *name); +extern NameList *LoadNamelist(char *filename); +extern void LoadNamelistDir(char *dir); +extern const char *RenameGlyphToNamelist(char *buffer, SplineChar *sc,NameList *old,NameList *new); +extern void SFRenameGlyphsToNamelist(SplineFont *sf,NameList *new); +extern char **SFTemporaryRenameGlyphsToNamelist(SplineFont *sf,NameList *new); +extern void SFTemporaryRestoreGlyphNames(SplineFont *sf,char **former); + +extern void doversion(const char *); + +extern AnchorPos *AnchorPositioning(SplineChar *sc,unichar_t *ustr,SplineChar **sstr ); +extern void AnchorPosFree(AnchorPos *apos); + +extern int SF_CloseAllInstrs(SplineFont *sf); +extern int SSTtfNumberPoints(SplineSet *ss); +extern int SCNumberPoints(SplineChar *sc,int layer); +extern int SCPointsNumberedProperly(SplineChar *sc,int layer); +extern int ttfFindPointInSC(SplineChar *sc,int layer,int pnum,BasePoint *pos, + RefChar *bound); + +int SFFigureDefWidth(SplineFont *sf, int *_nomwid); + +extern int SFRenameTheseFeatureTags(SplineFont *sf, uint32 tag, int sli, int flags, + uint32 totag, int tosli, int toflags, int ismac); +extern int SFRemoveUnusedNestedFeatures(SplineFont *sf); +extern int ClassesMatch(int cnt1,char **classes1,int cnt2,char **classes2); +extern FPST *FPSTGlyphToClass(FPST *fpst); + +extern ASM *ASMFromOpenTypeForms(SplineFont *sf,uint32 script); +extern ASM *ASMFromFPST(SplineFont *sf,FPST *fpst,int ordered); + +extern char *utf8_verify_copy(const char *str); + +extern char *MacStrToUtf8(const char *str,int macenc,int maclang); +extern char *Utf8ToMacStr(const char *ustr,int macenc,int maclang); +extern uint8 MacEncFromMacLang(int maclang); +extern uint16 WinLangFromMac(int maclang); +extern uint16 WinLangToMac(int winlang); +extern int CanEncodingWinLangAsMac(int winlang); +extern const int32 *MacEncToUnicode(int script,int lang); +extern int MacLangFromLocale(void); +extern char *MacLanguageFromCode(int code); +extern char *FindEnglishNameInMacName(struct macname *mn); +extern char *PickNameFromMacName(struct macname *mn); +extern MacFeat *FindMacFeature(SplineFont *sf, int feat,MacFeat **secondary); +extern struct macsetting *FindMacSetting(SplineFont *sf, int feat, int set,struct macsetting **secondary); +extern struct macname *FindMacSettingName(SplineFont *sf, int feat, int set); + +extern int32 UniFromEnc(int enc, Encoding *encname); +extern int32 EncFromUni(int32 uni, Encoding *encname); +extern int32 EncFromName(const char *name,enum uni_interp interp,Encoding *encname); + +extern void MatInverse(real into[6], real orig[6]); + +extern int BpColinear(BasePoint *first, BasePoint *mid, BasePoint *last); + +enum psstrokeflags { sf_toobigwarn=1, sf_removeoverlap=2, sf_handle_eraser=4, + sf_correctdir=8, sf_clearbeforeinput=16 }; + +extern char *MMAxisAbrev(char *axis_name); +extern char *MMMakeMasterFontname(MMSet *mm,int ipos,char **fullname); +extern char *MMGuessWeight(MMSet *mm,int ipos,char *def); +extern char *MMExtractNth(char *pt,int ipos); +extern char *MMExtractArrayNth(char *pt,int ipos); +extern int MMValid(MMSet *mm,int complain); +extern void MMKern(SplineFont *sf,SplineChar *first,SplineChar *second,int diff, + struct lookup_subtable *sub,KernPair *oldkp); +extern char *MMBlendChar(MMSet *mm, int gid); + +extern char *EnforcePostScriptName(char *old); + +extern char *ToAbsolute(char *filename); + +enum Compare_Ret { SS_DiffContourCount = 1, + SS_MismatchOpenClosed = 2, + SS_DisorderedContours = 4, + SS_DisorderedStart = 8, + SS_DisorderedDirection = 16, + SS_PointsMatch = 32, + SS_ContourMatch = 64, + SS_NoMatch = 128, + SS_RefMismatch = 256, + SS_WidthMismatch = 512, + SS_VWidthMismatch = 1024, + SS_HintMismatch = 2048, + SS_HintMaskMismatch = 4096, + SS_LayerCntMismatch = 8192, + SS_ContourMismatch = 16384, + SS_UnlinkRefMatch = 32768, + + BC_DepthMismatch = 1<<16, + BC_BoundingBoxMismatch = 2<<16, + BC_BitmapMismatch = 4<<16, + BC_NoMatch = 8<<16, + BC_Match = 16<<16, + + SS_RefPtMismatch = 32<<16 + }; + +extern enum Compare_Ret BitmapCompare(BDFChar *bc1, BDFChar *bc2, int err, int bb_err); +extern enum Compare_Ret SSsCompare(const SplineSet *ss1, const SplineSet *ss2, + real pt_err, real spline_err, SplinePoint **hmfail); +enum font_compare_flags { fcf_outlines=1, fcf_exact=2, fcf_warn_not_exact=4, + fcf_hinting=8, fcf_hintmasks=0x10, fcf_hmonlywithconflicts=0x20, + fcf_warn_not_ref_exact=0x40, + fcf_bitmaps=0x80, fcf_names = 0x100, fcf_gpos=0x200, fcf_gsub=0x400, + fcf_adddiff2sf1=0x800, fcf_addmissing=0x1000 }; +extern int CompareFonts(SplineFont *sf1, EncMap *map1, SplineFont *sf2, + FILE *diffs, int flags); +extern int LayersSimilar(Layer *ly1, Layer *ly2, double spline_err); + + +# if HANYANG +extern void SFDDumpCompositionRules(FILE *sfd,struct compositionrules *rules); +extern struct compositionrules *SFDReadCompositionRules(FILE *sfd); +extern void SFModifyComposition(SplineFont *sf); +extern void SFBuildSyllables(SplineFont *sf); +# endif + +extern void DefaultOtherSubrs(void); +extern int ReadOtherSubrsFile(char *filename); + +extern char *utf8toutf7_copy(const char *_str); +extern char *utf7toutf8_copy(const char *_str); + +extern void SFSetModTime(SplineFont *sf); +extern void SFTimesFromFile(SplineFont *sf,FILE *); + +extern int SFHasInstructions(SplineFont *sf); +extern int RefDepth(RefChar *ref,int layer); + +extern SplineChar *SCHasSubs(SplineChar *sc,uint32 tag); + +extern char *TagFullName(SplineFont *sf,uint32 tag, int ismac, int onlyifknown); + +extern uint32 *SFScriptsInLookups(SplineFont *sf,int gpos); +extern uint32 *SFLangsInScript(SplineFont *sf,int gpos,uint32 script); +extern uint32 *SFFeaturesInScriptLang(SplineFont *sf,int gpos,uint32 script,uint32 lang); +extern OTLookup **SFLookupsInScriptLangFeature(SplineFont *sf,int gpos,uint32 script,uint32 lang, uint32 feature); +extern SplineChar **SFGlyphsWithPSTinSubtable(SplineFont *sf,struct lookup_subtable *subtable); +extern SplineChar **SFGlyphsWithLigatureinLookup(SplineFont *sf,struct lookup_subtable *subtable); +extern void SFFindUnusedLookups(SplineFont *sf); +extern void SFFindClearUnusedLookupBits(SplineFont *sf); +extern int LookupUsedNested(SplineFont *sf,OTLookup *checkme); +extern void SFRemoveUnusedLookupSubTables(SplineFont *sf, + int remove_incomplete_anchorclasses, + int remove_unused_lookups); +extern void SFRemoveLookupSubTable(SplineFont *sf,struct lookup_subtable *sub); +extern void SFRemoveLookup(SplineFont *sf,OTLookup *otl); +extern struct lookup_subtable *SFFindLookupSubtable(SplineFont *sf,char *name); +extern struct lookup_subtable *SFFindLookupSubtableAndFreeName(SplineFont *sf,char *name); +extern OTLookup *SFFindLookup(SplineFont *sf,char *name); +extern void NameOTLookup(OTLookup *otl,SplineFont *sf); +extern void FListAppendScriptLang(FeatureScriptLangList *fl,uint32 script_tag,uint32 lang_tag); +extern void FListsAppendScriptLang(FeatureScriptLangList *fl,uint32 script_tag,uint32 lang_tag); +struct scriptlanglist *SLCopy(struct scriptlanglist *sl); +struct scriptlanglist *SListCopy(struct scriptlanglist *sl); +extern FeatureScriptLangList *FeatureListCopy(FeatureScriptLangList *fl); +extern void SLMerge(FeatureScriptLangList *into, struct scriptlanglist *fsl); +extern void FLMerge(OTLookup *into, OTLookup *from); +extern FeatureScriptLangList *FLOrder(FeatureScriptLangList *fl); +extern int FeatureScriptTagInFeatureScriptList(uint32 tag, uint32 script, FeatureScriptLangList *fl); +extern FeatureScriptLangList *FindFeatureTagInFeatureScriptList(uint32 tag, FeatureScriptLangList *fl); +extern int FeatureTagInFeatureScriptList(uint32 tag, FeatureScriptLangList *fl); +extern int DefaultLangTagInOneScriptList(struct scriptlanglist *sl); +extern struct scriptlanglist *DefaultLangTagInScriptList(struct scriptlanglist *sl, int DFLT_ok); +extern int ScriptInFeatureScriptList(uint32 script, FeatureScriptLangList *fl); +extern int _FeatureOrderId( int isgpos,uint32 tag ); +extern int FeatureOrderId( int isgpos,FeatureScriptLangList *fl ); +extern void SFSubTablesMerge(SplineFont *_sf,struct lookup_subtable *subfirst, + struct lookup_subtable *subsecond); +extern struct lookup_subtable *SFSubTableFindOrMake(SplineFont *sf,uint32 tag,uint32 script, + int lookup_type ); +extern struct lookup_subtable *SFSubTableMake(SplineFont *sf,uint32 tag,uint32 script, + int lookup_type ); +extern OTLookup *OTLookupCopyInto(SplineFont *into_sf,SplineFont *from_sf, OTLookup *from_otl); +extern void OTLookupsCopyInto(SplineFont *into_sf,SplineFont *from_sf, + OTLookup **from_list, OTLookup *before); +extern struct opentype_str *ApplyTickedFeatures(SplineFont *sf,uint32 *flist, uint32 script, uint32 lang, + int pixelsize, SplineChar **glyphs); +extern int VerticalKernFeature(SplineFont *sf, OTLookup *otl, int ask); +extern void SFGlyphRenameFixup(SplineFont *sf, char *old, char *new); + +struct sllk { uint32 script; int cnt, max; OTLookup **lookups; int lcnt, lmax; uint32 *langs; }; +extern void SllkFree(struct sllk *sllk,int sllk_cnt); +extern struct sllk *AddOTLToSllks( OTLookup *otl, struct sllk *sllk, + int *_sllk_cnt, int *_sllk_max ); +extern OTLookup *NewAALTLookup(SplineFont *sf,struct sllk *sllk, int sllk_cnt, int i); +extern void AddNewAALTFeatures(SplineFont *sf); + +extern void SplinePointRound(SplinePoint *,real); + +extern int KCFindName(char *name, char **classnames, int cnt ); +extern int KCFindIndex(KernClass *kc,char *name1, char *name2); +extern KernClass *SFFindKernClass(SplineFont *sf,SplineChar *first,SplineChar *last, + int *index,int allow_zero); +extern KernClass *SFFindVKernClass(SplineFont *sf,SplineChar *first,SplineChar *last, + int *index,int allow_zero); + +extern void SCClearRounds(SplineChar *sc,int layer); +extern void MDReplace(MinimumDistance *md,SplineSet *old,SplineSet *rpl); +extern void SCSynchronizeWidth(SplineChar *sc,real newwidth, real oldwidth,struct fontviewbase *fv); +extern RefChar *HasUseMyMetrics(SplineChar *sc,int layer); +extern void SCSynchronizeLBearing(SplineChar *sc,real off,int layer); +extern void RevertedGlyphReferenceFixup(SplineChar *sc, SplineFont *sf); + +extern void SFUntickAll(SplineFont *sf); + +extern void BDFOrigFixup(BDFFont *bdf,int orig_cnt,SplineFont *sf); + +extern int HasSVG(void); +extern void SCImportSVG(SplineChar *sc,int layer,char *path,char *memory, int memlen,int doclear); +extern int HasUFO(void); +extern void SCImportGlif(SplineChar *sc,int layer,char *path,char *memory, int memlen,int doclear); +extern void SCImportPS(SplineChar *sc,int layer,char *path,int doclear, int flags); +extern void SCImportPSFile(SplineChar *sc,int layer,FILE *ps,int doclear,int flags); +extern void SCImportPDF(SplineChar *sc,int layer,char *path,int doclear, int flags); +extern void SCImportPDFFile(SplineChar *sc,int layer,FILE *ps,int doclear,int flags); +extern void SCImportPlateFile(SplineChar *sc,int layer,FILE *plate,int doclear,int flags); +extern void SCAddScaleImage(SplineChar *sc,struct gimage *image,int doclear,int layer); +extern void SCInsertImage(SplineChar *sc,struct gimage *image,real scale,real yoff, real xoff, int layer); +extern void SCImportFig(SplineChar *sc,int layer,char *path,int doclear); + +extern int _ExportPlate(FILE *pdf,SplineChar *sc,int layer); +extern int _ExportPDF(FILE *pdf,SplineChar *sc,int layer); +extern int _ExportEPS(FILE *eps,SplineChar *sc,int layer, int gen_preview); +extern int _ExportSVG(FILE *svg,SplineChar *sc,int layer); +extern int _ExportGlif(FILE *glif,SplineChar *sc,int layer); +extern int ExportEPS(char *filename,SplineChar *sc,int layer); +extern int ExportPDF(char *filename,SplineChar *sc,int layer); +extern int ExportPlate(char *filename,SplineChar *sc,int layer); +extern int ExportSVG(char *filename,SplineChar *sc,int layer); +extern int ExportGlif(char *filename,SplineChar *sc,int layer); +extern int ExportFig(char *filename,SplineChar *sc,int layer); +extern int BCExportXBM(char *filename,BDFChar *bdfc, int format); +extern int ExportImage(char *filename,SplineChar *sc, int layer, int format, int pixelsize, int bitsperpixel); +extern void ScriptExport(SplineFont *sf, BDFFont *bdf, int format, int gid, + char *format_spec, EncMap *map); + +extern EncMap *EncMapFromEncoding(SplineFont *sf,Encoding *enc); +extern void SFRemoveGlyph(SplineFont *sf,SplineChar *sc, int *flags); +extern void SFAddEncodingSlot(SplineFont *sf,int gid); +extern void SFAddGlyphAndEncode(SplineFont *sf,SplineChar *sc,EncMap *basemap, int baseenc); +extern void SCDoRedo(SplineChar *sc,int layer); +extern void SCDoUndo(SplineChar *sc,int layer); +extern void SCCopyWidth(SplineChar *sc,enum undotype); +extern void SCAppendPosSub(SplineChar *sc,enum possub_type type, char **d,SplineFont *copied_from); +extern void SCClearBackground(SplineChar *sc); +extern void BackgroundImageTransform(SplineChar *sc, ImageList *img,real transform[6]); +extern int SFIsDuplicatable(SplineFont *sf, SplineChar *sc); + +extern void DoAutoSaves(void); + +extern void SCClearLayer(SplineChar *sc,int layer); +extern void SCClearContents(SplineChar *sc,int layer); +extern void SCClearAll(SplineChar *sc,int layer); +extern void BCClearAll(BDFChar *bc); + +#if !defined(_NO_PYTHON) +extern void FontForge_PythonInit(void); +extern void PyFF_ErrorString(const char *msg,const char *str); +extern void PyFF_ErrorF3(const char *frmt, const char *str, int size, int depth); +extern void PyFF_Stdin(void); +extern void PyFF_Main(int argc,char **argv,int start); +extern void PyFF_ScriptFile(struct fontviewbase *fv,SplineChar *sc,char *filename); +extern void PyFF_ScriptString(struct fontviewbase *fv,SplineChar *sc,int layer,char *str); +extern void PyFF_FreeFV(struct fontviewbase *fv); +extern void PyFF_FreeSC(SplineChar *sc); +extern void PyFF_FreeSF(SplineFont *sf); +extern void PyFF_ProcessInitFiles(void); +extern char *PyFF_PickleMeToString(void *pydata); +extern void *PyFF_UnPickleMeToObjects(char *str); +struct _object; /* Python Object */ +extern void PyFF_CallDictFunc(struct _object *dict,char *key,char *argtypes, ... ); +extern void ff_init(void); +#endif +extern void doinitFontForgeMain(void); + +extern void InitSimpleStuff(void); + +extern int SSExistsInLayer(SplineSet *ss,SplineSet *lots ); +extern int SplineExistsInSS(Spline *s,SplineSet *ss); +extern int SpExistsInSS(SplinePoint *sp,SplineSet *ss); + +extern int MSLanguageFromLocale(void); + +extern struct math_constants_descriptor { + char *ui_name; + char *script_name; + int offset; + int devtab_offset; + char *message; + int new_page; +} math_constants_descriptor[]; + +extern int BPTooFar(BasePoint *bp1, BasePoint *bp2); +extern char *VSErrorsFromMask(int mask,int private_mask); +extern int SCValidate(SplineChar *sc, int layer, int force); +extern AnchorClass *SCValidateAnchors(SplineChar *sc); +extern void SCTickValidationState(SplineChar *sc,int layer); +extern int ValidatePrivate(SplineFont *sf); +extern int SFValidate(SplineFont *sf, int layer, int force); +extern int VSMaskFromFormat(SplineFont *sf, int layer, enum fontformat format); + +struct lang_frequencies; +extern unichar_t *PrtBuildDef( SplineFont *sf, void *tf, + void (*langsyscallback)(void *tf, int end, uint32 script, uint32 lang) ); +extern char *RandomParaFromScriptLang(uint32 script, uint32 lang, SplineFont *sf, + struct lang_frequencies *freq); +extern char *RandomParaFromScript(uint32 script, uint32 *lang, SplineFont *sf); +extern int SF2Scripts(SplineFont *sf,uint32 scripts[100]); +extern char **SFScriptLangs(SplineFont *sf,struct lang_frequencies ***freq); + +extern int SSHasClip(SplineSet *ss); +extern int SSHasDrawn(SplineSet *ss); +extern struct gradient *GradientCopy(struct gradient *old); +extern void GradientFree(struct gradient *grad); +extern struct pattern *PatternCopy(struct pattern *old); +extern void PatternFree(struct pattern *pat); +extern void BrushCopy(struct brush *into, struct brush *from); +extern void PenCopy(struct pen *into, struct pen *from); +extern void PatternSCBounds(SplineChar *sc,DBounds *b); + +extern char *SFDefaultImage(SplineFont *sf,char *filename); +extern void SCClearInstrsOrMark(SplineChar *sc, int layer, int complain); +extern void instrcheck(SplineChar *sc,int layer); +extern void TTFPointMatches(SplineChar *sc,int layer,int top); + +#ifdef LUA_FF_LIB +extern SplineFont *ReadSplineFontInfo(char *filename,enum openflags openflags); /* splinefont.c */ +extern SplineFont *SFReadTTFInfo(char *filename, int flags, enum openflags openflags); /* parsettf.c */ +extern SplineFont *SFReadMacBinaryInfo(char *filename,int flags,enum openflags openflags); /* macbinary.c */ +#endif + + + +#endif diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/splineorder2.c b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/splineorder2.c new file mode 100644 index 00000000000..e807b105e38 --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/splineorder2.c @@ -0,0 +1,1508 @@ +/* Copyright (C) 2000-2008 by George Williams */ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "pfaedit.h" +#include +#include +#include +#include +#include +#include +#include +#ifdef HAVE_IEEEFP_H +# include /* Solaris defines isnan in ieeefp rather than math.h */ +#endif + +/* This file contains utility routines for second order bezier splines */ +/* (ie. truetype) */ +/* The most interesting thing */ +/* it does is to figure out a quadratic approximation to the cubic splines */ +/* that postscript uses. We do this by looking at each spline and running */ +/* from the end toward the beginning, checking approximately every emunit */ +/* There is only one quadratic spline possible for any given interval of the */ +/* cubic. The start and end points are the interval end points (obviously) */ +/* the control point is where the two slopes (at start and end) intersect. */ +/* If this spline is a close approximation to the cubic spline (doesn't */ +/* deviate from it by more than an emunit or so), then we use this interval */ +/* as one of our quadratic splines. */ +/* It may turn out that the "quadratic" spline above is actually linear. Well */ +/* that's ok. It may also turn out that we can't find a good approximation. */ +/* If that's true then just insert a linear segment for an emunit stretch. */ +/* (actually this failure mode may not be possible), but I'm not sure */ +/* Then we play the same trick for the rest of the cubic spline (if any) */ + +/* Does the quadratic spline in ttf approximate the cubic spline in ps */ +/* within one pixel between tmin and tmax (on ps. presumably ttf between 0&1 */ +/* dim is the dimension in which there is the greatest change */ +static int comparespline(Spline *ps, Spline *ttf, real tmin, real tmax, real err) { + int dim=0, other; + real dx, dy, ddim, dt, t; + real d, o; + real ttf_t, sq, val; + DBounds bb; + extended ts[3]; + int i; + + /* Are all points on ttf near points on ps? */ + /* This doesn't answer that question, but rules out gross errors */ + bb.minx = bb.maxx = ps->from->me.x; bb.miny = bb.maxy = ps->from->me.y; + if ( ps->from->nextcp.x>bb.maxx ) bb.maxx = ps->from->nextcp.x; + else bb.minx = ps->from->nextcp.x; + if ( ps->from->nextcp.y>bb.maxy ) bb.maxy = ps->from->nextcp.y; + else bb.miny = ps->from->nextcp.y; + if ( ps->to->prevcp.x>bb.maxx ) bb.maxx = ps->to->prevcp.x; + else if ( ps->to->prevcp.xto->prevcp.x; + if ( ps->to->prevcp.y>bb.maxy ) bb.maxy = ps->to->prevcp.y; + else if ( ps->to->prevcp.yto->prevcp.y; + if ( ps->to->me.x>bb.maxx ) bb.maxx = ps->to->me.x; + else if ( ps->to->me.xto->me.x; + if ( ps->to->me.y>bb.maxy ) bb.maxy = ps->to->me.y; + else if ( ps->to->me.yto->me.y; + for ( t=.1; t<1; t+= .1 ) { + d = (ttf->splines[0].b*t+ttf->splines[0].c)*t+ttf->splines[0].d; + o = (ttf->splines[1].b*t+ttf->splines[1].c)*t+ttf->splines[1].d; + if ( dbb.maxx || obb.maxy ) +return( false ); + } + + /* Are all points on ps near points on ttf? */ + dx = ((ps->splines[0].a*tmax+ps->splines[0].b)*tmax+ps->splines[0].c)*tmax - + ((ps->splines[0].a*tmin+ps->splines[0].b)*tmin+ps->splines[0].c)*tmin ; + dy = ((ps->splines[1].a*tmax+ps->splines[1].b)*tmax+ps->splines[1].c)*tmax - + ((ps->splines[1].a*tmin+ps->splines[1].b)*tmin+ps->splines[1].c)*tmin ; + if ( dx<0 ) dx = -dx; + if ( dy<0 ) dy = -dy; + if ( dx>dy ) { + dim = 0; + ddim = dx; + } else { + dim = 1; + ddim = dy; + } + other = !dim; + + t = tmin; + dt = (tmax-tmin)/ddim; + for ( t=tmin; t<=tmax; t+= dt ) { + if ( t>tmax-dt/8. ) t = tmax; /* Avoid rounding errors */ + d = ((ps->splines[dim].a*t+ps->splines[dim].b)*t+ps->splines[dim].c)*t+ps->splines[dim].d; + o = ((ps->splines[other].a*t+ps->splines[other].b)*t+ps->splines[other].c)*t+ps->splines[other].d; + if ( ttf->splines[dim].b == 0 ) { + ttf_t = (d-ttf->splines[dim].d)/ttf->splines[dim].c; + } else { + sq = ttf->splines[dim].c*ttf->splines[dim].c - + 4*ttf->splines[dim].b*(ttf->splines[dim].d-d); + if ( sq<0 ) +return( false ); + sq = sqrt(sq); + ttf_t = (-ttf->splines[dim].c-sq)/(2*ttf->splines[dim].b); + if ( ttf_t>=-0.1 && ttf_t<=1.1 ) { /* Optimizer gives us rounding errors */ + /* And tmin/tmax are no longer exact */ + val = (ttf->splines[other].b*ttf_t+ttf->splines[other].c)*ttf_t+ + ttf->splines[other].d; + if ( val>o-err && valsplines[dim].c+sq)/(2*ttf->splines[dim].b); + } + if ( ttf_t>=-0.1 && ttf_t<=1.1 ) { + val = (ttf->splines[other].b*ttf_t+ttf->splines[other].c)*ttf_t+ + ttf->splines[other].d; + if ( val>o-err && valsplines[dim].b*t+ttf->splines[dim].c)*t+ttf->splines[dim].d; + o = (ttf->splines[other].b*t+ttf->splines[other].c)*t+ttf->splines[other].d; + SplineSolveFull(&ps->splines[dim],d,ts); + for ( i=0; i<3; ++i ) if ( ts[i]!=-1 ) { + val = ((ps->splines[other].a*ts[i]+ps->splines[other].b)*ts[i]+ps->splines[other].c)*ts[i]+ps->splines[other].d; + if ( val>o-err && valroundx = oldend->roundx; end->roundy = oldend->roundy; end->dontinterpolate = oldend->dontinterpolate; + x = oldend->me.x; y = oldend->me.y; /* Want it to compare exactly */ + } + end->ttfindex = 0xfffe; + end->nextcpindex = 0xfffe; + end->me.x = end->nextcp.x = x; + end->me.y = end->nextcp.y = y; + end->nonextcp = true; + + *new = *ttf; + new->from = start; start->next = new; + new->to = end; end->prev = new; + if ( new->splines[0].b==0 && new->splines[1].b==0 ) { + end->noprevcp = true; + end->prevcp.x = x; end->prevcp.y = y; + new->islinear = new->knownlinear = true; + } else { + end->prevcp.x = start->nextcp.x = ttf->splines[0].c/2+ttf->splines[0].d; + end->prevcp.y = start->nextcp.y = ttf->splines[1].c/2+ttf->splines[1].d; + start->nonextcp = end->noprevcp = false; + new->isquadratic = true; + } + new->order2 = true; +return( end ); +} + +static int buildtestquads(Spline *ttf,real xmin,real ymin,real cx,real cy, + real x,real y,real tmin,real t,real err,Spline *ps, DBounds *psbb) { + real fudge; + + /* test the control points are reasonable */ + fudge = (psbb->maxx-psbb->minx) + (psbb->maxy-psbb->miny); + if ( cxminx-fudge || cx>psbb->maxx+fudge ) +return( false ); + if ( cyminy-fudge || cy>psbb->maxy+fudge ) +return( false ); + + ttf->splines[0].d = xmin; + ttf->splines[0].c = 2*(cx-xmin); + ttf->splines[0].b = xmin+x-2*cx; + ttf->splines[1].d = ymin; + ttf->splines[1].c = 2*(cy-ymin); + ttf->splines[1].b = ymin+y-2*cy; + if ( comparespline(ps,ttf,tmin,t,err) ) +return( true ); + +#if 0 + /* In a few cases, the following code will find a match when the above */ + /* would not. We move the control point slightly along a vector normal */ + /* to the vector between the end-points. What I really want is along */ + /* a vector midway between the two slopes, but that's too hard to figure */ + sq = sqrt((x-xmin)*(x-xmin) + (y-ymin)*(y-ymin)); + norm.x = (ymin-y)/sq; norm.y = (x-xmin)/sq; + + ttf->splines[0].c += err*norm.x; + ttf->splines[0].b -= err*norm.x; + ttf->splines[1].c += err*norm.y; + ttf->splines[1].b -= err*norm.y; + if ( comparespline(ps,ttf,tmin,t,err) ) +return( true ); + + ttf->splines[0].c -= 2*err*norm.x; + ttf->splines[0].b += 2*err*norm.x; + ttf->splines[1].c -= 2*err*norm.y; + ttf->splines[1].b += 2*err*norm.y; + if ( comparespline(ps,ttf,tmin,t,err) ) +return( true ); + + ttf->splines[0].c = 2*(cx-xmin); + ttf->splines[0].b = xmin+x-2*cx; + ttf->splines[1].c = 2*(cy-ymin); + ttf->splines[1].b = ymin+y-2*cy; +#endif +return( false ); +} + +static SplinePoint *LinearSpline(Spline *ps,SplinePoint *start, real tmax) { + real x,y; + Spline *new = chunkalloc(sizeof(Spline)); + SplinePoint *end = chunkalloc(sizeof(SplinePoint)); + + x = ((ps->splines[0].a*tmax+ps->splines[0].b)*tmax+ps->splines[0].c)*tmax+ps->splines[0].d; + y = ((ps->splines[1].a*tmax+ps->splines[1].b)*tmax+ps->splines[1].c)*tmax+ps->splines[1].d; + if ( tmax==1 ) { + SplinePoint *oldend = ps->to; + end->roundx = oldend->roundx; end->roundy = oldend->roundy; end->dontinterpolate = oldend->dontinterpolate; + x = oldend->me.x; y = oldend->me.y; /* Want it to compare exactly */ + } + end->ttfindex = 0xfffe; + end->nextcpindex = 0xfffe; + end->me.x = end->nextcp.x = end->prevcp.x = x; + end->me.y = end->nextcp.y = end->prevcp.y = y; + end->nonextcp = end->noprevcp = start->nonextcp = true; + new->from = start; start->next = new; + new->to = end; end->prev = new; + new->splines[0].d = start->me.x; + new->splines[0].c = (x-start->me.x); + new->splines[1].d = start->me.y; + new->splines[1].c = (y-start->me.y); + new->order2 = true; + new->islinear = new->knownlinear = true; +return( end ); +} + +static SplinePoint *_ttfapprox(Spline *ps,real tmin, real tmax, SplinePoint *start) { + int dim=0; + real dx, dy, ddim, dt, t, err; + real x,y, xmin, ymin; + real dxdtmin, dydtmin, dxdt, dydt; + SplinePoint *sp; + real cx, cy; + Spline ttf; + int cnt = -1, forceit, unforceable; + BasePoint end, rend, dend; + DBounds bb; + + rend.x = ((ps->splines[0].a*tmax+ps->splines[0].b)*tmax+ps->splines[0].c)*tmax + ps->splines[0].d; + rend.y = ((ps->splines[1].a*tmax+ps->splines[1].b)*tmax+ps->splines[1].c)*tmax + ps->splines[1].d; + end.x = rint( rend.x ); + end.y = rint( rend.y ); + dend.x = (3*ps->splines[0].a*tmax+2*ps->splines[0].b)*tmax+ps->splines[0].c; + dend.y = (3*ps->splines[1].a*tmax+2*ps->splines[1].b)*tmax+ps->splines[1].c; + memset(&ttf,'\0',sizeof(ttf)); + + bb.minx = bb.maxx = ps->from->me.x; + if ( ps->from->nextcp.x > bb.maxx ) bb.maxx = ps->from->nextcp.x; + else if ( ps->from->nextcp.x < bb.minx ) bb.minx = ps->from->nextcp.x; + if ( ps->to->prevcp.x > bb.maxx ) bb.maxx = ps->to->prevcp.x; + else if ( ps->to->prevcp.x < bb.minx ) bb.minx = ps->to->prevcp.x; + if ( ps->to->me.x > bb.maxx ) bb.maxx = ps->to->me.x; + else if ( ps->to->me.x < bb.minx ) bb.minx = ps->to->me.x; + bb.miny = bb.maxy = ps->from->me.y; + if ( ps->from->nextcp.y > bb.maxy ) bb.maxy = ps->from->nextcp.y; + else if ( ps->from->nextcp.y < bb.miny ) bb.miny = ps->from->nextcp.y; + if ( ps->to->prevcp.y > bb.maxy ) bb.maxy = ps->to->prevcp.y; + else if ( ps->to->prevcp.y < bb.miny ) bb.miny = ps->to->prevcp.y; + if ( ps->to->me.y > bb.maxy ) bb.maxy = ps->to->me.y; + else if ( ps->to->me.y < bb.miny ) bb.miny = ps->to->me.y; + + tail_recursion: + ++cnt; + + xmin = start->me.x; + ymin = start->me.y; + dxdtmin = (3*ps->splines[0].a*tmin+2*ps->splines[0].b)*tmin + ps->splines[0].c; + dydtmin = (3*ps->splines[1].a*tmin+2*ps->splines[1].b)*tmin + ps->splines[1].c; + + dx = ((ps->splines[0].a*tmax+ps->splines[0].b)*tmax+ps->splines[0].c)*tmax - + ((ps->splines[0].a*tmin+ps->splines[0].b)*tmin+ps->splines[0].c)*tmin ; + dy = ((ps->splines[1].a*tmax+ps->splines[1].b)*tmax+ps->splines[1].c)*tmax - + ((ps->splines[1].a*tmin+ps->splines[1].b)*tmin+ps->splines[1].c)*tmin ; + if ( dx<0 ) dx = -dx; + if ( dy<0 ) dy = -dy; + if ( dx>dy ) { + dim = 0; + ddim = dx; + } else { + dim = 1; + ddim = dy; + } + if (( err = ddim/3000 )<1 ) err = 1; + + if ( ddim<2 || + (dend.x==0 && rint(start->me.x)==end.x && dy<=10 && cnt!=0) || + (dend.y==0 && rint(start->me.y)==end.y && dx<=10 && cnt!=0) ) { + if ( cnt==0 || start->noprevcp ) +return( LinearSpline(ps,start,tmax)); + /* If the end point is very close to where we want to be, then just */ + /* pretend it's right */ + start->prev->splines[0].b += ps->to->me.x-start->me.x; + start->prev->splines[1].b += ps->to->me.y-start->me.y; + start->prevcp.x += rend.x-start->me.x; + start->prevcp.y += rend.y-start->me.y; + if ( start->prev!=NULL && !start->prev->from->nonextcp ) + start->prev->from->nextcp = start->prevcp; + start->me = rend; +return( start ); + } + + dt = (tmax-tmin)/ddim; + forceit = false; + force_end: + unforceable = false; + for ( t=tmax; t>tmin+dt/128; t-= dt ) { /* dt/128 is a hack to avoid rounding errors */ + x = ((ps->splines[0].a*t+ps->splines[0].b)*t+ps->splines[0].c)*t+ps->splines[0].d; + y = ((ps->splines[1].a*t+ps->splines[1].b)*t+ps->splines[1].c)*t+ps->splines[1].d; + dxdt = (3*ps->splines[0].a*t+2*ps->splines[0].b)*t + ps->splines[0].c; + dydt = (3*ps->splines[1].a*t+2*ps->splines[1].b)*t + ps->splines[1].c; + /* if the slopes are parallel at the ends there can be no bezier quadratic */ + /* (control point is where the splines intersect. But if they are */ + /* parallel and colinear then there is a line between 'em */ + if ( ( dxdtmin==0 && dxdt==0 ) || (dydtmin==0 && dydt==0) || + ( dxdt!=0 && dxdtmin!=0 && + RealNearish(dydt/dxdt,dydtmin/dxdtmin)) ) + continue; + + if ( dxdt==0 ) + cx=x; + else if ( dxdtmin==0 ) + cx=xmin; + else + cx = -(ymin-(dydtmin/dxdtmin)*xmin-y+(dydt/dxdt)*x)/(dydtmin/dxdtmin-dydt/dxdt); + if ( dydt==0 ) + cy=y; + else if ( dydtmin==0 ) + cy=ymin; + else + cy = -(xmin-(dxdtmin/dydtmin)*ymin-x+(dxdt/dydt)*y)/(dxdtmin/dydtmin-dxdt/dydt); + if ( t==tmax && ((cy==y && cx==x) || (cy==ymin && cx==xmin)) ) + unforceable = true; + /* Make the quadratic spline from (xmin,ymin) through (cx,cy) to (x,y)*/ + if ( forceit || buildtestquads(&ttf,xmin,ymin,cx,cy,x,y,tmin,t,err,ps,&bb)) { + if ( !forceit && !unforceable && (rend.x-x)*(rend.x-x)+(rend.y-y)*(rend.y-y)<4*4 ) { + forceit = true; + goto force_end; + } + sp = MakeQuadSpline(start,&ttf,x,y,t,ps->to); + forceit = false; + if ( t==tmax ) +return( sp ); + tmin = t; + start = sp; + goto tail_recursion; + } + ttf.splines[0].d = xmin; + ttf.splines[0].c = x-xmin; + ttf.splines[0].b = 0; + ttf.splines[1].d = ymin; + ttf.splines[1].c = y-ymin; + ttf.splines[1].b = 0; + if ( comparespline(ps,&ttf,tmin,t,err) ) { + sp = LinearSpline(ps,start,t); + if ( t==tmax ) +return( sp ); + tmin = t; + start = sp; + goto tail_recursion; + } + } + tmin += dt; + start = LinearSpline(ps,start,tmin); + goto tail_recursion; +} + +static SplinePoint *__ttfApprox(Spline *ps,real tmin, real tmax, SplinePoint *start) { + extended inflect[2]; + int i=0; +#if 1 + SplinePoint *end; + Spline *s, *next; + + end = _ttfapprox(ps,tmin,tmax,start); + if ( ps->knownlinear ) +return( end ); + for ( s=start->next; s!=NULL && !s->islinear; s=s->to->next ); + if ( s==NULL ) +return( end ); + for ( s=start->next; s!=NULL ; s=next ) { + next = s->to->next; + SplinePointFree(s->to); + SplineFree(s); + } +#endif +/* Hmm. With my algorithem, checking for points of inflection actually makes */ +/* things worse. It uses more points and the splines don't join as nicely */ +/* However if we get a bad match (a line) in the normal approx, then check */ +/* Err... I was computing POI incorrectly. Above statement might not be correct*/ + /* no points of inflection in quad splines */ + + i = Spline2DFindPointsOfInflection(ps, inflect); + if ( i==2 ) { + if ( RealNearish(inflect[0],inflect[1]) ) + --i; + else if ( inflect[0]>inflect[1] ) { + real temp = inflect[0]; + inflect[0] = inflect[1]; + inflect[1] = temp; + } + } + if ( i!=0 ) { + start = _ttfapprox(ps,tmin,inflect[0],start); + tmin = inflect[0]; + if ( i==2 ) { + start = _ttfapprox(ps,tmin,inflect[1],start); + tmin = inflect[1]; + } + } +return( _ttfapprox(ps,tmin,tmax,start)); +} + +#if !defined(FONTFORGE_CONFIG_NON_SYMMETRIC_QUADRATIC_CONVERSION) +typedef struct qpoint { + BasePoint bp; + BasePoint cp; + double t; +} QPoint; + +static int comparedata(Spline *ps,QPoint *data,int qfirst,int qlast, + int round_to_int ) { + Spline ttf; + int i; + double err = round_to_int ? 1.5 : 1; + + if ( qfirst==qlast ) /* happened (was a bug) */ +return( false ); + + /* Control points diametrically opposed */ + if ( (data[qlast-2].cp.x-ps->to->me.x)*(ps->to->prevcp.x-ps->to->me.x) + + (data[qlast-2].cp.y-ps->to->me.y)*(ps->to->prevcp.y-ps->to->me.y)<0 ) +return( false ); + if ( (data[qfirst-1].cp.x-ps->from->me.x)*(ps->from->nextcp.x-ps->from->me.x) + + (data[qfirst-1].cp.y-ps->from->me.y)*(ps->from->nextcp.y-ps->from->me.y)<0 ) +return( false ); + + memset(&ttf,0,sizeof(ttf)); + for ( i=qfirst; inextcp = end->prevcp = data[i-1].cp; + start->nonextcp = end->noprevcp = false; + if (( data[i-1].cp.x == data[i].bp.x && data[i-1].cp.y == data[i].bp.y ) || + ( data[i-1].cp.x == start->me.x && data[i-1].cp.y == start->me.y )) + start->nonextcp = end->noprevcp = true; + SplineMake2(start,end); + start = end; + } +return( start ); +} + +static int SplineWithWellBehavedControlPoints(Spline *ps) { + BasePoint splineunit; + double splinelen, npos, ppos; + + splineunit.x = ps->to->me.x - ps->from->me.x; + splineunit.y = ps->to->me.y - ps->from->me.y; + splinelen = sqrt(splineunit.x*splineunit.x + splineunit.y*splineunit.y); + if ( splinelen!=0 ) { + splineunit.x /= splinelen; + splineunit.y /= splinelen; + } + + npos = (ps->from->nextcp.x-ps->from->me.x) * splineunit.x + + (ps->from->nextcp.y-ps->from->me.y) * splineunit.y; + ppos = (ps->to->prevcp.x-ps->from->me.x) * splineunit.x + + (ps->to->prevcp.y-ps->from->me.y) * splineunit.y; +return( npos>=0 && /* npos<=ppos &&*/ ppos<=splinelen ); +} + +static int PrettyApprox(Spline *ps,double tmin, double tmax, + QPoint *data, int qcnt, int round_to_int ) { + int ptcnt, q, i; + double distance, dx, dy, tstart; + BasePoint end, mid, slopemin, slopemid, slopeend; + BasePoint splineunit, start; + double splinelen, midpos, lastpos, lastpos2, cppos; + int do_good_spline_check; + QPoint data2[12]; + + if ( qcnt==-1 ) +return( -1 ); + + slopemin.x = (3*ps->splines[0].a*tmin+2*ps->splines[0].b)*tmin+ps->splines[0].c; + slopemin.y = (3*ps->splines[1].a*tmin+2*ps->splines[1].b)*tmin+ps->splines[1].c; + if ( slopemin.x==0 && slopemin.y==0 ) { + double t = tmin + (tmax-tmin)/256; + /* If there is no control point for this end point, then the slope is */ + /* 0/0 at the end point. Which isn't useful, it leads to a quadratic */ + /* control point at the end point, but this one is real because it */ + /* is used to interpolate the next point, but we get all confused */ + /* because we don't expect a real cp to be on the base point. */ + slopemin.x = (3*ps->splines[0].a*t+2*ps->splines[0].b)*t+ps->splines[0].c; + slopemin.y = (3*ps->splines[1].a*t+2*ps->splines[1].b)*t+ps->splines[1].c; + } + + end.x = ((ps->splines[0].a*tmax+ps->splines[0].b)*tmax+ps->splines[0].c)*tmax+ps->splines[0].d; + end.y = ((ps->splines[1].a*tmax+ps->splines[1].b)*tmax+ps->splines[1].c)*tmax+ps->splines[1].d; + slopeend.x = (3*ps->splines[0].a*tmax+2*ps->splines[0].b)*tmax+ps->splines[0].c; + slopeend.y = (3*ps->splines[1].a*tmax+2*ps->splines[1].b)*tmax+ps->splines[1].c; + if ( slopemin.x==0 && slopemin.y==0 ) { + double t = tmax - (tmax-tmin)/256; + /* Same problem as above, except at the other end */ + slopeend.x = (3*ps->splines[0].a*t+2*ps->splines[0].b)*t+ps->splines[0].c; + slopeend.y = (3*ps->splines[1].a*t+2*ps->splines[1].b)*t+ps->splines[1].c; + } + + start.x = data[qcnt-1].bp.x; + start.y = data[qcnt-1].bp.y; + splineunit.x = end.x - start.x; + splineunit.y = end.y - start.y; + splinelen = sqrt(splineunit.x*splineunit.x + splineunit.y*splineunit.y); + if ( splinelen!=0 ) { + splineunit.x /= splinelen; + splineunit.y /= splinelen; + } + do_good_spline_check = SplineWithWellBehavedControlPoints(ps); + + if ( round_to_int && tmax!=1 ) { + end.x = rint( end.x ); + end.y = rint( end.y ); + } + + dx = end.x-data[qcnt-1].bp.x; dy = end.y-data[qcnt-1].bp.y; + distance = dx*dx + dy*dy; + + if ( distance<.3 ) { + /* This is meaningless in truetype, use a line */ + data[qcnt-1].cp = data[qcnt-1].bp; + data[qcnt].bp = end; + data[qcnt].t = 1; +return( qcnt+1 ); + } + + for ( ptcnt=0; ptcnt<10; ++ptcnt ) { + if ( ptcnt>1 && distance/(ptcnt*ptcnt)<100 ) +return( -1 ); /* Points too close for a good approx */ + q = qcnt; + data2[ptcnt+1].bp = end; + lastpos=0; lastpos2 = splinelen; + for ( i=0; i<=ptcnt; ++i ) { + tstart = (tmin*(ptcnt-i) + tmax*(i+1))/(ptcnt+1); + mid.x = ((ps->splines[0].a*tstart+ps->splines[0].b)*tstart+ps->splines[0].c)*tstart+ps->splines[0].d; + mid.y = ((ps->splines[1].a*tstart+ps->splines[1].b)*tstart+ps->splines[1].c)*tstart+ps->splines[1].d; + if ( i==0 ) { + slopemid.x = (3*ps->splines[0].a*tstart+2*ps->splines[0].b)*tstart+ps->splines[0].c; + slopemid.y = (3*ps->splines[1].a*tstart+2*ps->splines[1].b)*tstart+ps->splines[1].c; + if ( slopemid.x==0 ) + data[q-1].cp.x=mid.x; + else if ( slopemin.x==0 ) + data[q-1].cp.x=data[q-1].bp.x; + else if ( RealNear(slopemin.y/slopemin.x,slopemid.y/slopemid.x) ) + break; + else + data[q-1].cp.x = -(data[q-1].bp.y-(slopemin.y/slopemin.x)*data[q-1].bp.x-mid.y+(slopemid.y/slopemid.x)*mid.x)/(slopemin.y/slopemin.x-slopemid.y/slopemid.x); + if ( slopemid.y==0 ) + data[q-1].cp.y=mid.y; + else if ( slopemin.y==0 ) + data[q-1].cp.y=data[q-1].bp.y; + else if ( RealNear(slopemin.x/slopemin.y,slopemid.x/slopemid.y) ) + break; + else + data[q-1].cp.y = -(data[q-1].bp.x-(slopemin.x/slopemin.y)*data[q-1].bp.y-mid.x+(slopemid.x/slopemid.y)*mid.y)/(slopemin.x/slopemin.y-slopemid.x/slopemid.y); + } else { + data[q-1].cp.x = 2*data[q-1].bp.x - data[q-2].cp.x; + data[q-1].cp.y = 2*data[q-1].bp.y - data[q-2].cp.y; + } + + midpos = (mid.x-start.x)*splineunit.x + (mid.y-start.y)*splineunit.y; + cppos = (data[q-1].cp.x-start.x)*splineunit.x + (data[q-1].cp.y-start.y)*splineunit.y; + + if ( ((do_good_spline_check || i!=0 ) && cpposmidpos ) { + i = 0; /* Means we failed */ + break; + } + lastpos = midpos; + + data[q].bp = mid; + data[q++].t = tstart; + + tstart = (tmax*(ptcnt-i) + tmin*(i+1))/(ptcnt+1); + mid.x = ((ps->splines[0].a*tstart+ps->splines[0].b)*tstart+ps->splines[0].c)*tstart+ps->splines[0].d; + mid.y = ((ps->splines[1].a*tstart+ps->splines[1].b)*tstart+ps->splines[1].c)*tstart+ps->splines[1].d; + if ( i==0 ) { + slopemid.x = (3*ps->splines[0].a*tstart+2*ps->splines[0].b)*tstart+ps->splines[0].c; + slopemid.y = (3*ps->splines[1].a*tstart+2*ps->splines[1].b)*tstart+ps->splines[1].c; + if ( slopemid.x==0 ) + data2[ptcnt-i].cp.x=mid.x; + else if ( slopeend.x==0 ) + data2[ptcnt-i].cp.x=data2[ptcnt-i+1].bp.x; + else if ( RealNear(slopeend.y/slopeend.x,slopemid.y/slopemid.x) ) + break; + else + data2[ptcnt-i].cp.x = -(data2[ptcnt-i+1].bp.y-(slopeend.y/slopeend.x)*data2[ptcnt-i+1].bp.x-mid.y+(slopemid.y/slopemid.x)*mid.x)/(slopeend.y/slopeend.x-slopemid.y/slopemid.x); + if ( slopemid.y==0 ) + data2[ptcnt-i].cp.y=mid.y; + else if ( slopeend.y==0 ) + data2[ptcnt-i].cp.y=data2[ptcnt-i+1].bp.y; + else if ( RealNear(slopeend.x/slopeend.y,slopemid.x/slopemid.y) ) + break; + else + data2[ptcnt-i].cp.y = -(data2[ptcnt-i+1].bp.x-(slopeend.x/slopeend.y)*data2[ptcnt-i+1].bp.y-mid.x+(slopemid.x/slopemid.y)*mid.y)/(slopeend.x/slopeend.y-slopemid.x/slopemid.y); + } else { + data2[ptcnt-i].cp.x = 2*data2[ptcnt-i+1].bp.x - data2[ptcnt-i+1].cp.x; + data2[ptcnt-i].cp.y = 2*data2[ptcnt-i+1].bp.y - data2[ptcnt-i+1].cp.y; + } + data2[ptcnt-i].bp = mid; + + midpos = (mid.x-start.x)*splineunit.x + (mid.y-start.y)*splineunit.y; + cppos = (data2[ptcnt-i].cp.x-start.x)*splineunit.x + (data2[ptcnt-i].cp.y-start.y)*splineunit.y; + if ( ((do_good_spline_check || i!=0 ) && cppos>lastpos2) || cppossplines[0].a,0) && RealNearish(ps->splines[1].a,0)) || + ((ps->splines[0].b!=0 && RealNearish(ps->splines[0].a/ps->splines[0].b,0)) && + (ps->splines[1].b!=0 && RealNearish(ps->splines[1].a/ps->splines[1].b,0))) ) { + /* Already Quadratic, just need to find the control point */ + /* Or linear, in which case we don't need to do much of anything */ + Spline *spline; + sp = chunkalloc(sizeof(SplinePoint)); + sp->me.x = ps->to->me.x; sp->me.y = ps->to->me.y; + sp->roundx = ps->to->roundx; sp->roundy = ps->to->roundy; sp->dontinterpolate = ps->to->dontinterpolate; + sp->ttfindex = 0xfffe; + sp->nextcpindex = 0xfffe; + sp->nonextcp = true; + spline = chunkalloc(sizeof(Spline)); + spline->order2 = true; + spline->from = start; + spline->to = sp; + spline->splines[0] = ps->splines[0]; spline->splines[1] = ps->splines[1]; + start->next = sp->prev = spline; + if ( ps->knownlinear ) { + spline->islinear = spline->knownlinear = true; + start->nonextcp = sp->noprevcp = true; + start->nextcp = start->me; + sp->prevcp = sp->me; + } else { + start->nonextcp = sp->noprevcp = false; + start->nextcp.x = sp->prevcp.x = (ps->splines[0].c+2*ps->splines[0].d)/2; + start->nextcp.y = sp->prevcp.y = (ps->splines[1].c+2*ps->splines[1].d)/2; + } +return( sp ); + } +return( NULL ); +} + +static SplinePoint *ttfApprox(Spline *ps, SplinePoint *start) { +#if !defined(FONTFORGE_CONFIG_NON_SYMMETRIC_QUADRATIC_CONVERSION) + extended magicpoints[6], last; + int cnt, i, j, qcnt; + QPoint data[8*10]; + int round_to_int = + /* The end points are at integer points, or one coord is at half while */ + /* the other is at an integer (ie. condition for ttf interpolated point)*/ + ((ps->from->me.x==rint(ps->from->me.x) && + ps->from->me.y==rint(ps->from->me.y)) || + (ps->from->me.x==rint(ps->from->me.x) && + ps->from->me.x==ps->from->nextcp.x && + ps->from->me.y!=ps->from->nextcp.y && + 2*ps->from->me.y==rint(2*ps->from->me.y)) || + (ps->from->me.y==rint(ps->from->me.y) && + ps->from->me.y==ps->from->nextcp.y && + ps->from->me.x!=ps->from->nextcp.x && + 2*ps->from->me.x==rint(2*ps->from->me.x)) ) && + ((ps->to->me.x == rint(ps->to->me.x) && + ps->to->me.y == rint(ps->to->me.y)) || + (ps->to->me.x==rint(ps->to->me.x) && + ps->to->me.x==ps->to->prevcp.x && + ps->to->me.y!=ps->to->prevcp.y && + 2*ps->to->me.y==rint(2*ps->to->me.y)) || + (ps->to->me.y==rint(ps->to->me.y) && + ps->to->me.y==ps->to->prevcp.y && + ps->to->me.x!=ps->to->prevcp.x && + 2*ps->to->me.x==rint(2*ps->to->me.x)) ); +#endif + SplinePoint *ret; +/* Divide the spline up at extrema and points of inflection. The first */ +/* because ttf splines should have points at their extrema, the second */ +/* because quadratic splines can't have points of inflection. */ +/* Let's not do the first (extrema) AddExtrema does this better and we */ +/* don't want unneeded extrema. */ +/* And sometimes we don't want to look at the points of inflection either*/ + + if (( ret = AlreadyQuadraticCheck(ps,start))!=NULL ) +return( ret ); + +#if !defined(FONTFORGE_CONFIG_NON_SYMMETRIC_QUADRATIC_CONVERSION) + qcnt = 1; + data[0].bp = ps->from->me; + data[0].t = 0; + qcnt = PrettyApprox(ps,0,1,data,qcnt,round_to_int); + if ( qcnt!=-1 ) +return( CvtDataToSplines(data,1,qcnt,start)); + + cnt = 0; + /* cnt = Spline2DFindExtrema(ps,magicpoints);*/ + + cnt += Spline2DFindPointsOfInflection(ps,magicpoints+cnt); + + /* remove points outside range */ + for ( i=0; i=1 ) { + for ( j=i+1; jmagicpoints[j] ) { + double temp = magicpoints[i]; + magicpoints[i] = magicpoints[j]; + magicpoints[j] = temp; + } + } + /* Remove duplicates */ + for ( i=1; inext!=NULL; test = next ) { + next = test->next->to; + /* Too close together to be meaningful when output as ttf */ + if ( rint(test->me.x) == rint(next->me.x) && + rint(test->me.y) == rint(next->me.y) ) { + if ( next->next==NULL || next==from ) { + if ( test==from ) + break; + next->prevcp = test->prevcp; + next->noprevcp = test->noprevcp; + next->prev = test->prev; + next->prev->to = next; + SplineFree(test->next); + SplinePointFree(test); + } else { + test->nextcp = next->nextcp; + test->nonextcp = next->nonextcp; + test->next = next->next; + test->next->from = test; + SplineFree(next->prev); + SplinePointFree(next); + next = test->next->to; + } + } + if ( next==from ) + break; + } +} + +SplinePoint *SplineTtfApprox(Spline *ps) { + SplinePoint *from; + from = chunkalloc(sizeof(SplinePoint)); + *from = *ps->from; + from->hintmask = NULL; + ttfApprox(ps,from); +return( from ); +} + +SplineSet *SSttfApprox(SplineSet *ss) { + SplineSet *ret = chunkalloc(sizeof(SplineSet)); + Spline *spline, *first; + + ret->first = chunkalloc(sizeof(SplinePoint)); + *ret->first = *ss->first; + if ( ret->first->hintmask != NULL ) { + ret->first->hintmask = chunkalloc(sizeof(HintMask)); + memcpy(ret->first->hintmask,ss->first->hintmask,sizeof(HintMask)); + } + ret->last = ret->first; + + first = NULL; + for ( spline=ss->first->next; spline!=NULL && spline!=first; spline=spline->to->next ) { + ret->last = ttfApprox(spline,ret->last); + ret->last->ptindex = spline->to->ptindex; + ret->last->ttfindex = spline->to->ttfindex; + ret->last->nextcpindex = spline->to->nextcpindex; + if ( spline->to->hintmask != NULL ) { + ret->last->hintmask = chunkalloc(sizeof(HintMask)); + memcpy(ret->last->hintmask,spline->to->hintmask,sizeof(HintMask)); + } + if ( first==NULL ) first = spline; + } + if ( ss->first==ss->last ) { + if ( ret->last!=ret->first ) { + ret->first->prevcp = ret->last->prevcp; + ret->first->noprevcp = ret->last->noprevcp; + ret->first->prev = ret->last->prev; + ret->last->prev->to = ret->first; + SplinePointFree(ret->last); + ret->last = ret->first; + } + } + ttfCleanup(ret->first); + SPLCatagorizePoints(ret); +return( ret ); +} + +SplineSet *SplineSetsTTFApprox(SplineSet *ss) { + SplineSet *head=NULL, *last, *cur; + + while ( ss!=NULL ) { + cur = SSttfApprox(ss); + if ( head==NULL ) + head = cur; + else + last->next = cur; + last = cur; + ss = ss->next; + } +return( head ); +} + +SplineSet *SSPSApprox(SplineSet *ss) { + SplineSet *ret = chunkalloc(sizeof(SplineSet)); + Spline *spline, *first; + SplinePoint *to; + + ret->first = chunkalloc(sizeof(SplinePoint)); + *ret->first = *ss->first; + if ( ret->first->hintmask != NULL ) { + ret->first->hintmask = chunkalloc(sizeof(HintMask)); + memcpy(ret->first->hintmask,ss->first->hintmask,sizeof(HintMask)); + } + ret->last = ret->first; + + first = NULL; + for ( spline=ss->first->next; spline!=NULL && spline!=first; spline=spline->to->next ) { + to = chunkalloc(sizeof(SplinePoint)); + *to = *spline->to; + if ( to->hintmask != NULL ) { + to->hintmask = chunkalloc(sizeof(HintMask)); + memcpy(to->hintmask,spline->to->hintmask,sizeof(HintMask)); + } + if ( !spline->knownlinear ) { + ret->last->nextcp.x = spline->splines[0].c/3 + ret->last->me.x; + ret->last->nextcp.y = spline->splines[1].c/3 + ret->last->me.y; + to->prevcp.x = ret->last->nextcp.x+ (spline->splines[0].b+spline->splines[0].c)/3; + to->prevcp.y = ret->last->nextcp.y+ (spline->splines[1].b+spline->splines[1].c)/3; + } + SplineMake3(ret->last,to); + ret->last = to; + if ( first==NULL ) first = spline; + } + if ( ss->first==ss->last ) { + if ( ret->last!=ret->first ) { + ret->first->prevcp = ret->last->prevcp; + ret->first->noprevcp = ret->last->noprevcp; + ret->first->prev = ret->last->prev; + ret->last->prev->to = ret->first; + SplinePointFree(ret->last); + ret->last = ret->first; + } + } + ret->is_clip_path = ss->is_clip_path; +return( ret ); +} + +SplineSet *SplineSetsPSApprox(SplineSet *ss) { + SplineSet *head=NULL, *last, *cur; + + while ( ss!=NULL ) { + cur = SSPSApprox(ss); + if ( head==NULL ) + head = cur; + else + last->next = cur; + last = cur; + ss = ss->next; + } +return( head ); +} + +void SCConvertLayerToOrder2(SplineChar *sc,int layer) { + SplineSet *new; + + if ( sc==NULL ) +return; + + new = SplineSetsTTFApprox(sc->layers[layer].splines); + SplinePointListsFree(sc->layers[layer].splines); + sc->layers[layer].splines = new; + + UndoesFree(sc->layers[layer].undoes); + UndoesFree(sc->layers[layer].redoes); + sc->layers[layer].undoes = NULL; + sc->layers[layer].redoes = NULL; + sc->layers[layer].order2 = true; + + MinimumDistancesFree(sc->md); sc->md = NULL; +} + +void SCConvertToOrder2(SplineChar *sc) { + int layer; + + if ( sc==NULL ) +return; + + for ( layer=ly_back; layerlayer_cnt; ++layer ) + SCConvertLayerToOrder2(sc,layer); +} + + +/* ************************************************************************** */ + +void SplineRefigure2(Spline *spline) { + SplinePoint *from = spline->from, *to = spline->to; + Spline1D *xsp = &spline->splines[0], *ysp = &spline->splines[1]; + Spline old; + +#ifdef DEBUG + if ( RealNear(from->me.x,to->me.x) && RealNear(from->me.y,to->me.y)) + IError("Zero length spline created"); +#endif + if ( spline->acceptableextrema ) + old = *spline; + + if ( from->nonextcp || to->noprevcp || + ( from->nextcp.x==from->me.x && from->nextcp.y == from->me.y ) || + ( to->prevcp.x==to->me.x && to->prevcp.y == to->me.y )) { + from->nonextcp = to->noprevcp = true; + from->nextcp = from->me; + to->prevcp = to->me; + } + + if ( from->nonextcp && to->noprevcp ) + /* Ok */; + else if ( from->nonextcp || to->noprevcp || from->nextcp.x!=to->prevcp.x || + from->nextcp.y!=to->prevcp.y ) { + if ( RealNear(from->nextcp.x,to->prevcp.x) && + RealNear(from->nextcp.y,to->prevcp.y)) { + from->nextcp.x = to->prevcp.x = (from->nextcp.x+to->prevcp.x)/2; + from->nextcp.y = to->prevcp.y = (from->nextcp.y+to->prevcp.y)/2; + } else { + IError("Invalid 2nd order spline in SplineRefigure2" ); +#ifndef GWW_TEST + /* I don't want these to go away when I'm debugging. I want to */ + /* know how I got them */ + from->nextcp.x = to->prevcp.x = (from->nextcp.x+to->prevcp.x)/2; + from->nextcp.y = to->prevcp.y = (from->nextcp.y+to->prevcp.y)/2; +#endif + } + } + + xsp->d = from->me.x; ysp->d = from->me.y; + if ( from->nonextcp && to->noprevcp ) { + spline->islinear = true; + xsp->c = to->me.x-from->me.x; + ysp->c = to->me.y-from->me.y; + xsp->a = xsp->b = 0; + ysp->a = ysp->b = 0; + } else { + /* from p. 393 (Operator Details, curveto) Postscript Lang. Ref. Man. (Red book) */ + xsp->c = 2*(from->nextcp.x-from->me.x); + ysp->c = 2*(from->nextcp.y-from->me.y); + xsp->b = to->me.x-from->me.x-xsp->c; + ysp->b = to->me.y-from->me.y-ysp->c; + xsp->a = 0; + ysp->a = 0; + if ( RealNear(xsp->c,0)) xsp->c=0; + if ( RealNear(ysp->c,0)) ysp->c=0; + if ( RealNear(xsp->b,0)) xsp->b=0; + if ( RealNear(ysp->b,0)) ysp->b=0; + spline->islinear = false; + if ( ysp->b==0 && xsp->b==0 ) + spline->islinear = true; /* This seems extremely unlikely... */ + } + if ( isnan(ysp->b) || isnan(xsp->b) ) + IError("NaN value in spline creation"); + LinearApproxFree(spline->approx); + spline->approx = NULL; + spline->knowncurved = false; + spline->knownlinear = spline->islinear; + SplineIsLinear(spline); + spline->isquadratic = !spline->knownlinear; + spline->order2 = true; + + if ( spline->acceptableextrema ) { + /* I don't check "d", because changes to that reflect simple */ + /* translations which will not affect the shape of the spline */ + /* (I don't check "a" because it is always 0 in a quadratic spline) */ + if ( !RealNear(old.splines[0].b,spline->splines[0].b) || + !RealNear(old.splines[0].c,spline->splines[0].c) || + !RealNear(old.splines[1].b,spline->splines[1].b) || + !RealNear(old.splines[1].c,spline->splines[1].c) ) + spline->acceptableextrema = false; + } +} + +void SplineRefigure(Spline *spline) { + if ( spline==NULL ) +return; + if ( spline->order2 ) + SplineRefigure2(spline); + else + SplineRefigure3(spline); +} + +static int IsHV(Spline *spline, int isfrom) { + SplinePoint *sp; + + if ( spline==NULL ) +return( false ); + + if ( !isfrom ) { + sp = spline->to; + if ( sp->noprevcp ) +return( false ); + if ( sp->me.x == sp->prevcp.x ) +return( 2 ); /* Vertical */ + else if ( sp->me.y == sp->prevcp.y ) +return( 1 ); /* Horizontal */ + else +return( 0 ); /* Neither */ + } else { + sp = spline->from; + if ( sp->nonextcp ) +return( false ); + if ( sp->me.x == sp->nextcp.x ) +return( 2 ); /* Vertical */ + else if ( sp->me.y == sp->nextcp.y ) +return( 1 ); /* Horizontal */ + else +return( 0 ); /* Neither */ + } +} + +void SplineRefigureFixup(Spline *spline) { + SplinePoint *from, *to, *prev, *next; + BasePoint foff, toff, unit, new; + double len; + enum pointtype fpt, tpt; + int done = false; + extern int snaptoint; + + if ( !spline->order2 ) { + SplineRefigure3(spline); +return; + } + from = spline->from; to = spline->to; + if ( from->pointtype==pt_hvcurve && to->pointtype==pt_hvcurve ) { + done = true; + if ( !IsHV(from->prev,0) && !IsHV(to->next,1) ) { + if ( to->me.x == from->me.x ) { + from->nextcp.x = to->prevcp.x = to->me.x; + from->nextcp.y = to->prevcp.y = (from->me.y+from->me.y)/2; + } else if ( to->me.y==from->me.y ) { + from->nextcp.y = to->prevcp.y = to->me.y; + from->nextcp.x = to->prevcp.x = (from->me.x+from->me.x)/2; + /* Assume they are drawing clockwise */ + } else if (( to->me.x>from->me.x && to->me.y>=from->me.y ) || + (to->me.xme.x && to->me.y<=from->me.y )) { + from->nextcp.x = to->prevcp.x = from->me.x; + from->nextcp.y = to->prevcp.y = to->me.y; + } else { + from->nextcp.x = to->prevcp.x = to->me.x; + from->nextcp.y = to->prevcp.y = from->me.y; + } + } else if ( !IsHV(to->next,1)) { + if ( IsHV(from->prev,0)==1 ) { + from->nextcp.x = to->prevcp.x = to->me.x; + from->nextcp.y = to->prevcp.y = from->me.y; + } else { + from->nextcp.x = to->prevcp.x = from->me.x; + from->nextcp.y = to->prevcp.y = to->me.y; + } + } else if ( !IsHV(from->prev,0)) { + if ( IsHV(to->next,1)==1 ) { + from->nextcp.x = to->prevcp.x = from->me.x; + from->nextcp.y = to->prevcp.y = to->me.y; + } else { + from->nextcp.x = to->prevcp.x = to->me.x; + from->nextcp.y = to->prevcp.y = from->me.y; + } + } else { + if ( IsHV(from->prev,0)==1 && IsHV(to->next,1)==2 ) { + from->nextcp.x = to->prevcp.x = to->me.x; + from->nextcp.y = to->prevcp.y = from->me.y; + } else if ( IsHV(from->prev,0)==2 && IsHV(to->next,1)==1 ) { + from->nextcp.x = to->prevcp.x = from->me.x; + from->nextcp.y = to->prevcp.y = to->me.y; + } else + done = false; + } + if ( done ) + to->noprevcp = from->nonextcp = false; + } + + if ( !done ) { + unit.x = from->nextcp.x-from->me.x; + unit.y = from->nextcp.y-from->me.y; + len = sqrt(unit.x*unit.x + unit.y*unit.y); + if ( len!=0 ) + unit.x /= len; unit.y /= len; + + if ( (fpt = from->pointtype)==pt_hvcurve ) fpt = pt_curve; + if ( (tpt = to->pointtype)==pt_hvcurve ) tpt = pt_curve; + if ( from->nextcpdef && to->prevcpdef ) switch ( fpt*3+tpt ) { + case pt_corner*3+pt_corner: + case pt_corner*3+pt_tangent: + case pt_tangent*3+pt_corner: + case pt_tangent*3+pt_tangent: + from->nonextcp = to->noprevcp = true; + from->nextcp = from->me; + to->prevcp = to->me; + break; + case pt_curve*3+pt_curve: + case pt_curve*3+pt_corner: + case pt_corner*3+pt_curve: + case pt_tangent*3+pt_curve: + case pt_curve*3+pt_tangent: + if ( from->prev!=NULL && (from->pointtype==pt_tangent || from->pointtype==pt_hvcurve)) { + prev = from->prev->from; + foff.x = prev->me.x; + foff.y = prev->me.y; + } else if ( from->prev!=NULL ) { + prev = from->prev->from; + foff.x = to->me.x-prev->me.x + from->me.x; + foff.y = to->me.y-prev->me.y + from->me.y; + } else { + foff.x = from->me.x + (to->me.x-from->me.x)-(to->me.y-from->me.y); + foff.y = from->me.y + (to->me.x-from->me.x)+(to->me.y-from->me.y); + prev = NULL; + } + if ( to->next!=NULL && (to->pointtype==pt_tangent || to->pointtype==pt_hvcurve)) { + next = to->next->to; + toff.x = next->me.x; + toff.y = next->me.y; + } else if ( to->next!=NULL ) { + next = to->next->to; + toff.x = next->me.x-from->me.x + to->me.x; + toff.y = next->me.y-from->me.y + to->me.y; + } else { + toff.x = to->me.x + (to->me.x-from->me.x)+(to->me.y-from->me.y); + toff.y = to->me.y - (to->me.x-from->me.x)+(to->me.y-from->me.y); + next = NULL; + } + if (( from->pointtype==pt_hvcurve && foff.x!=from->me.x && foff.y!=from->me.y ) || + ( to->pointtype==pt_hvcurve && toff.x!=to->me.x && toff.y!=to->me.y )) { + if ( from->me.x == to->me.x ) { + if ( from->pointtype==pt_hvcurve ) + foff.x = from->me.x; + if ( to->pointtype==pt_hvcurve ) + toff.x = to->me.x; + } else if ( from->me.y == to->me.y ) { + if ( from->pointtype==pt_hvcurve ) + foff.y = from->me.y; + if ( to->pointtype==pt_hvcurve ) + toff.y = to->me.y; + } else { + if ( from->pointtype==pt_hvcurve && foff.x!=from->me.x && foff.y!=from->me.y ) { + if ( fabs(foff.x-from->me.x) > fabs(foff.y-from->me.y) ) + foff.y = from->me.y; + else + foff.x = from->me.x; + } + if ( to->pointtype==pt_hvcurve && toff.x!=to->me.x && toff.y!=to->me.y ) { + if ( from->pointtype==pt_hvcurve ) { + if ( from->me.x==foff.x ) + toff.y = to->me.y; + else + toff.x = to->me.x; + } else if ( fabs(toff.x-to->me.x) > fabs(toff.y-to->me.y) ) + toff.y = to->me.y; + else + toff.x = to->me.x; + } + } + } + if ( IntersectLinesClip(&from->nextcp,&foff,&from->me,&toff,&to->me)) { + from->nonextcp = to->noprevcp = false; + to->prevcp = from->nextcp; + if ( (from->pointtype==pt_curve || from->pointtype==pt_hvcurve ) && + !from->noprevcp && from->prev!=NULL ) { + prev = from->prev->from; + if ( IntersectLinesClip(&from->prevcp,&from->nextcp,&from->me,&prev->nextcp,&prev->me)) { + prev->nextcp = from->prevcp; + SplineRefigure2(from->prev); + } + } + if ( (to->pointtype==pt_curve || to->pointtype==pt_hvcurve) && + !to->nonextcp && to->next!=NULL ) { + next = to->next->to; + if ( IntersectLinesClip(&to->nextcp,&to->prevcp,&to->me,&next->prevcp,&next->me)) { + next->prevcp = to->nextcp; + SplineRefigure(to->next); + } + } + } + break; + } else { + /* Can't set things arbetrarily here, but make sure they are consistant */ + if ( (from->pointtype==pt_curve || from->pointtype==pt_hvcurve ) && + !from->noprevcp && !from->nonextcp ) { + unit.x = from->nextcp.x-from->me.x; + unit.y = from->nextcp.y-from->me.y; + len = sqrt(unit.x*unit.x + unit.y*unit.y); + if ( len!=0 ) { + unit.x /= len; unit.y /= len; + len = sqrt((from->prevcp.x-from->me.x)*(from->prevcp.x-from->me.x) + (from->prevcp.y-from->me.y)*(from->prevcp.y-from->me.y)); + new.x = -len*unit.x + from->me.x; new.y = -len*unit.y + from->me.y; + if ( new.x-from->prevcp.x<-1 || new.x-from->prevcp.x>1 || + new.y-from->prevcp.y<-1 || new.y-from->prevcp.y>1 ) { + prev = NULL; + if ( from->prev!=NULL && (prev = from->prev->from)!=NULL && + IntersectLinesClip(&from->prevcp,&new,&from->me,&prev->nextcp,&prev->me)) { + prev->nextcp = from->prevcp; + SplineRefigure2(from->prev); + } else { + from->prevcp = new; + if ( prev!=NULL ) + prev->nextcp = new; + } + } + } + } else if ( from->pointtype==pt_tangent ) { + if ( from->prev!=NULL ) { + prev = from->prev->from; + if ( !from->noprevcp && !prev->nonextcp && + IntersectLinesClip(&from->prevcp,&to->me,&from->me,&prev->nextcp,&prev->me)) { + prev->nextcp = from->prevcp; + SplineRefigure2(from->prev); + } + if ( !from->nonextcp && !to->noprevcp && + IntersectLinesClip(&from->nextcp,&prev->me,&from->me,&to->prevcp,&to->me)) + to->prevcp = from->nextcp; + } + } + if ( (to->pointtype==pt_curve || to->pointtype==pt_hvcurve ) && + !to->noprevcp && !to->nonextcp ) { + unit.x = to->prevcp.x-to->nextcp.x; + unit.y = to->prevcp.y-to->nextcp.y; + len = sqrt(unit.x*unit.x + unit.y*unit.y); + if ( len!=0 ) { + unit.x /= len; unit.y /= len; + len = sqrt((to->nextcp.x-to->me.x)*(to->nextcp.x-to->me.x) + (to->nextcp.y-to->me.y)*(to->nextcp.y-to->me.y)); + new.x = -len*unit.x + to->me.x; new.y = -len*unit.y + to->me.y; + if ( new.x-to->nextcp.x<-1 || new.x-to->nextcp.x>1 || + new.y-to->nextcp.y<-1 || new.y-to->nextcp.y>1 ) { + if ( to->next!=NULL && (next = to->next->to)!=NULL && + IntersectLinesClip(&to->nextcp,&new,&to->me,&next->prevcp,&next->me)) { + next->prevcp = to->nextcp; + SplineRefigure2(to->next); + } else { + to->nextcp = new; + if ( to->next!=NULL ) { + to->next->to->prevcp = new; + SplineRefigure(to->next); + } + } + } + } + } else if ( to->pointtype==pt_tangent ) { + if ( to->next!=NULL ) { + next = to->next->to; + if ( !to->nonextcp && !next->noprevcp && + IntersectLinesClip(&to->nextcp,&from->me,&to->me,&next->prevcp,&next->me)) { + next->prevcp = to->nextcp; + SplineRefigure2(to->next); + } + if ( !from->nonextcp && !to->noprevcp && + IntersectLinesClip(&from->nextcp,&next->me,&to->me,&from->nextcp,&from->me)) + to->prevcp = from->nextcp; + } + } + } + if ( from->nonextcp && to->noprevcp ) + /* Ok */; + else if ( from->nonextcp || to->noprevcp ) { + from->nonextcp = to->noprevcp = true; + } else if (( from->nextcp.x==from->me.x && from->nextcp.y==from->me.y ) || + ( to->prevcp.x==to->me.x && to->prevcp.y==to->me.y ) ) { + from->nonextcp = to->noprevcp = true; + } else if ( from->nonextcp || to->noprevcp || from->nextcp.x!=to->prevcp.x || + from->nextcp.y!=to->prevcp.y ) { + if ( !IntersectLinesClip(&from->nextcp, + (from->pointtype==pt_tangent && from->prev!=NULL)?&from->prev->from->me:&from->nextcp, &from->me, + (to->pointtype==pt_tangent && to->next!=NULL)?&to->next->to->me:&to->prevcp, &to->me)) { + from->nextcp.x = (from->me.x+to->me.x)/2; + from->nextcp.y = (from->me.y+to->me.y)/2; + } + to->prevcp = from->nextcp; + if (( from->nextcp.x==from->me.x && from->nextcp.y==from->me.y ) || + ( to->prevcp.x==to->me.x && to->prevcp.y==to->me.y ) ) { + from->nonextcp = to->noprevcp = true; + from->nextcp = from->me; + to->prevcp = to->me; + } + } + } + if ( snaptoint && !from->nonextcp ) { + from->nextcp.x = to->prevcp.x = rint(from->nextcp.x); + from->nextcp.y = to->prevcp.y = rint(from->nextcp.y); + } + SplineRefigure2(spline); + + /* Now in order2 splines it is possible to request combinations that are */ + /* mathematically impossible -- two adjacent hv points often don't work */ + if ( to->pointtype==pt_hvcurve && + !(to->prevcp.x == to->me.x && to->prevcp.y != to->me.y ) && + !(to->prevcp.y == to->me.y && to->prevcp.x != to->me.x ) ) + to->pointtype = pt_curve; + if ( from->pointtype==pt_hvcurve && + !(from->nextcp.x == from->me.x && from->nextcp.y != from->me.y ) && + !(from->nextcp.y == from->me.y && from->nextcp.x != from->me.x ) ) + from->pointtype = pt_curve; +} + +Spline *SplineMake2(SplinePoint *from, SplinePoint *to) { + Spline *spline = chunkalloc(sizeof(Spline)); + + spline->from = from; spline->to = to; + from->next = to->prev = spline; + spline->order2 = true; + SplineRefigure2(spline); +return( spline ); +} + +Spline *SplineMake(SplinePoint *from, SplinePoint *to, int order2) { + if ( order2 ) +return( SplineMake2(from,to)); + else +return( SplineMake3(from,to)); +} + +int IntersectLines(BasePoint *inter, + BasePoint *line1_1, BasePoint *line1_2, + BasePoint *line2_1, BasePoint *line2_2) { + double s1, s2; + + if ( line1_1->x == line1_2->x ) { + inter->x = line1_1->x; + if ( line2_1->x == line2_2->x ) { + if ( line2_1->x!=line1_1->x ) +return( false ); /* Parallel vertical lines */ + inter->y = (line1_1->y+line2_1->y)/2; + } else + inter->y = line2_1->y + (inter->x-line2_1->x) * (line2_2->y - line2_1->y)/(line2_2->x - line2_1->x); +return( true ); + } else if ( line2_1->x == line2_2->x ) { + inter->x = line2_1->x; + inter->y = line1_1->y + (inter->x-line1_1->x) * (line1_2->y - line1_1->y)/(line1_2->x - line1_1->x); +return( true ); + } else { + s1 = (line1_2->y - line1_1->y)/(line1_2->x - line1_1->x); + s2 = (line2_2->y - line2_1->y)/(line2_2->x - line2_1->x); + if ( RealNear(s1,s2)) { + if ( !RealNear(line1_1->y + (line2_1->x-line1_1->x) * s1,line2_1->y)) +return( false ); + inter->x = (line1_2->x+line2_2->x)/2; + inter->y = (line1_2->y+line2_2->y)/2; + } else { + inter->x = (s1*line1_1->x - s2*line2_1->x - line1_1->y + line2_1->y)/(s1-s2); + inter->y = line1_1->y + (inter->x-line1_1->x) * s1; + } +return( true ); + } +} + +int IntersectLinesClip(BasePoint *inter, + BasePoint *line1_1, BasePoint *line1_2, + BasePoint *line2_1, BasePoint *line2_2) { + BasePoint old = *inter, unit; + double len, val; + + if ( !IntersectLines(inter,line1_1,line1_2,line2_1,line2_2)) +return( false ); + else { + unit.x = line2_2->x-line1_2->x; + unit.y = line2_2->y-line1_2->y; + len = sqrt(unit.x*unit.x + unit.y*unit.y); + if ( len==0 ) +return( false ); + else { + unit.x /= len; unit.y /= len; + val = unit.x*(inter->x-line1_2->x) + unit.y*(inter->y-line1_2->y); + if ( val<=0 || val>=len ) { + *inter = old; +return( false ); + } + } + } +return( true ); +} + + diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/splineoverlap.c b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/splineoverlap.c new file mode 100644 index 00000000000..1b459508f2a --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/splineoverlap.c @@ -0,0 +1,2396 @@ +/* Copyright (C) 2000-2008 by George Williams */ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "pfaedit.h" +#include "splinefont.h" +#include "edgelist2.h" +#include +#ifdef HAVE_IEEEFP_H +# include /* Solaris defines isnan in ieeefp rather than math.h */ +#endif +#include + +#include /* For PostNotice */ + +/* First thing we do is divide each spline into a set of sub-splines each of */ +/* which is monotonic in both x and y (always increasing or decreasing) */ +/* Then we compare each monotonic spline with every other one and see if they*/ +/* intersect. If they do, split each up into sub-sub-segments and create an*/ +/* intersection point (note we need to be a little careful if an intersec- */ +/* tion happens at an end point. We don't need to create a intersection for */ +/* two adjacent splines, there isn't a real intersection... but if a third */ +/* spline crosses that point (or ends there) then all three (four) splines */ +/* need to be joined into an intersection point) */ +/* Nasty things happen if splines are coincident. They will almost never be */ +/* perfectly coincident and will keep crossing and recrossing as rounding */ +/* errors suggest one is before the other. Look for coincident splines and */ +/* treat the places they start and stop being coincident as intersections */ +/* then when we find needed splines below look for these guys and ignore */ +/* recrossings of splines which are close together */ +/* Figure out if each monotonic sub-spline is needed or not */ +/* (Note: It was tempting to split the bits up into real splines rather */ +/* than keeping them as sub-sections of the original. Unfortunately this */ +/* splitting introduced rounding errors which meant that we got more */ +/* intersections, which meant that splines could be both needed and un. */ +/* so I don't do that until later) */ +/* if the spline hasn't been tagged yet: */ +/* does the spline change greater in x or y? */ +/* draw a line parallel to the OTHER axis which hits our spline and doesn't*/ +/* hit any endpoints (or intersections, which are end points too now) */ +/* count the winding number (as we do this we can mark other splines as */ +/* needed or not) and figure out if our spline is needed */ +/* So run through the list of intersections */ +/* At an intersection there should be an even number of needed monos. */ +/* Use this as the basis of a new splineset, trace it around until */ +/* we get back to the start intersection (should happen) */ +/* (Note: We may need to reverse a monotonic sub-spline or two) */ +/* As we go, mark each monotonic as having been used */ +/* Keep doing this until all needed exits from all intersections have been */ +/* used. */ +/* The free up our temporary data structures, merge in any open splinesets */ +/* free the old closed splinesets */ + +typedef struct mlist { + Spline *s; + Monotonic *m; /* May get slightly munched but will */ + /* always have right spline. we fix when we need it */ + extended t; + int isend; + BasePoint unit; + struct mlist *next; +} MList; + +typedef struct intersection { + MList *monos; + BasePoint inter; + struct intersection *next; +} Intersection; + +static char *glyphname=NULL; + +static void SOError(char *format,...) { + va_list ap; + va_start(ap,format); + if ( glyphname==NULL ) + fprintf(stderr, "Internal Error: " ); + else + fprintf(stderr, "Internal Error in %s: ", glyphname ); + vfprintf(stderr,format,ap); +} + +static Monotonic *SplineToMonotonic(Spline *s,extended startt,extended endt, + Monotonic *last,int exclude) { + Monotonic *m; + BasePoint start, end; + + start.x = ((s->splines[0].a*startt+s->splines[0].b)*startt+s->splines[0].c)*startt + + s->splines[0].d; + start.y = ((s->splines[1].a*startt+s->splines[1].b)*startt+s->splines[1].c)*startt + + s->splines[1].d; + end.x = ((s->splines[0].a*endt+s->splines[0].b)*endt+s->splines[0].c)*endt + + s->splines[0].d; + end.y = ((s->splines[1].a*endt+s->splines[1].b)*endt+s->splines[1].c)*endt + + s->splines[1].d; + if ( (real) (((start.x+end.x)/2)==start.x || (real) ((start.x+end.x)/2)==end.x) && + (real) (((start.y+end.y)/2)==start.y || (real) ((start.y+end.y)/2)==end.y) ) { + /* The distance between the two extrema is so small */ + /* as to be unobservable. In other words we'd end up with a zero*/ + /* length spline */ + if ( endt==1.0 && last!=NULL && last->s==s ) + last->tend = endt; +return( last ); + } + + m = chunkalloc(sizeof(Monotonic)); + m->s = s; + m->tstart = startt; + m->tend = endt; + m->exclude = exclude; + + if ( end.x>start.x ) { + m->xup = true; + m->b.minx = start.x; + m->b.maxx = end.x; + } else { + m->b.minx = end.x; + m->b.maxx = start.x; + } + if ( end.y>start.y ) { + m->yup = true; + m->b.miny = start.y; + m->b.maxy = end.y; + } else { + m->b.miny = end.y; + m->b.maxy = start.y; + } + + if ( last!=NULL ) { + last->next = m; + last->linked = m; + m->prev = last; + } +return( m ); +} + +static int SSIsSelected(SplineSet *spl) { + SplinePoint *sp; + + for ( sp=spl->first; ; ) { + if ( sp->selected ) +return( true ); + if ( sp->next==NULL ) +return( false ); + sp = sp->next->to; + if ( sp==spl->first ) +return( false ); + } +} + +static int BpSame(BasePoint *bp1, BasePoint *bp2) { + BasePoint mid; + + mid.x = (bp1->x+bp2->x)/2; mid.y = (bp1->y+bp2->y)/2; + if ( (bp1->x==mid.x || bp2->x==mid.x) && + (bp1->y==mid.y || bp2->y==mid.y)) +return( true ); + +return( false ); +} + +static int SSRmNullSplines(SplineSet *spl) { + Spline *s, *first, *next; + + first = NULL; + for ( s=spl->first->next ; s!=first; s=next ) { + next = s->to->next; + if ( ((s->splines[0].a>-.01 && s->splines[0].a<.01 && + s->splines[0].b>-.01 && s->splines[0].b<.01 && + s->splines[1].a>-.01 && s->splines[1].a<.01 && + s->splines[1].b>-.01 && s->splines[1].b<.01) || + /* That describes a null spline (a line between the same end-point) */ + RealNear((s->from->nextcp.x-s->from->me.x)*(s->to->me.y-s->to->prevcp.y)- + (s->from->nextcp.y-s->from->me.y)*(s->to->me.x-s->to->prevcp.x),0)) && + /* And the above describes a point with a spline between it */ + /* and itself where the spline covers no area (the two cps */ + /* point in the same direction) */ + BpSame(&s->from->me,&s->to->me)) { + if ( next==s ) +return( true ); + if ( next->from->selected ) s->from->selected = true; + s->from->next = next; + s->from->nextcp = next->from->nextcp; + s->from->nonextcp = next->from->nonextcp; + s->from->nextcpdef = next->from->nextcpdef; + SplinePointFree(next->from); + if ( spl->first==next->from ) + spl->last = spl->first = s->from; + next->from = s->from; + SplineFree(s); + } else { + if ( first==NULL ) + first = s; + } + } +return( false ); +} + +static Monotonic *SSToMContour(SplineSet *spl, Monotonic *start, + Monotonic **end, enum overlap_type ot) { + extended ts[4]; + Spline *first, *s; + Monotonic *head=NULL, *last=NULL; + int cnt, i, selected = false; + extended lastt; + + if ( spl->first->prev==NULL ) +return( start ); /* Open contours have no interior, ignore 'em */ + if ( spl->first->prev->from==spl->first && + spl->first->noprevcp && spl->first->nonextcp ) +return( start ); /* Let's just remove single points */ + + if ( ot==over_rmselected || ot==over_intersel || ot==over_fisel || ot==over_exclude ) { + selected = SSIsSelected(spl); + if ( ot==over_rmselected || ot==over_intersel || ot==over_fisel ) { + if ( !selected ) +return( start ); + selected = false; + } + } + + /* We blow up on zero length splines. And a zero length contour is nasty */ + if ( SSRmNullSplines(spl)) +return( start ); + + first = NULL; + for ( s=spl->first->next; s!=first; s=s->to->next ) { + if ( first==NULL ) first = s; + cnt = Spline2DFindExtrema(s,ts); + lastt = 0; + for ( i=0; iprev = last; + last->next = head; + if ( start==NULL ) + start = head; + else + (*end)->linked = head; + *end = last; +return( start ); +} + +static Monotonic *SSsToMContours(SplineSet *spl, enum overlap_type ot) { + Monotonic *head=NULL, *last = NULL; + + while ( spl!=NULL ) { + if ( spl->first->prev!=NULL ) + head = SSToMContour(spl,head,&last,ot); + spl = spl->next; + } +return( head ); +} + +static void _AddSpline(Intersection *il,Monotonic *m,extended t,int isend) { + MList *ml; + + for ( ml=il->monos; ml!=NULL; ml=ml->next ) { + if ( ml->s==m->s && RealNear( ml->t,t ) && ml->isend==isend ) +return; + } + + ml = chunkalloc(sizeof(MList)); + ml->next = il->monos; + il->monos = ml; + ml->s = m->s; + ml->m = m; /* This may change. We'll fix it up later */ + ml->t = t; + ml->isend = isend; + if ( isend ) { + if ( m->end!=NULL && m->end!=il ) + SOError("Resetting end.\n"); + m->end = il; + } else { + if ( m->start!=NULL && m->start!=il ) + SOError("Resetting start.\n"); + m->start = il; + } +return; +} + +static void AddSpline(Intersection *il,Monotonic *m,extended t) { + MList *ml; + + if ( m->start==il || m->end==il ) +return; + + for ( ml=il->monos; ml!=NULL; ml=ml->next ) { + if ( ml->s==m->s && RealWithin( ml->t,t,.0001 )) +return; + } + + ml = chunkalloc(sizeof(MList)); + ml->next = il->monos; + il->monos = ml; + ml->s = m->s; + ml->m = m; /* This may change. We'll fix it up later */ + ml->t = t; + ml->isend = true; + if ( t-m->tstart < m->tend-t && RealNear(m->tstart,t) ) { + if ( m->start!=NULL && m->start!=il ) + SOError("Resetting start.\n"); + m->start = il; + ml->t = m->tstart; + ml->isend = false; + _AddSpline(il,m->prev,m->prev->tend,true); + } else if ( RealNear(m->tend,t)) { + if ( m->end!=NULL && m->end!=il ) + SOError("Resetting end.\n"); + m->end = il; + ml->t = m->tend; + _AddSpline(il,m->next,m->next->tstart,false); + } else { + /* Ok, if we've got a new intersection on this spline then break up */ + /* the monotonic into two bits which end and start at this inter */ + if ( ttstart || t>m->tend ) + SOError( "Attempt to subset monotonic rejoin inappropriately: %g should be [%g,%g]\n", + t, m->tstart, m->tend ); + else { + /* It is monotonic, so a subset of it must also be */ + Monotonic *m2 = chunkalloc(sizeof(Monotonic)); + BasePoint pt; + *m2 = *m; + m->next = m2; + m2->prev = m; + m2->next->prev = m2; + m->linked = m2; + m->tend = t; + m->end = il; + m2->start = il; + m2->tstart = t; + pt.x = ((m->s->splines[0].a*m->tstart+m->s->splines[0].b)*m->tstart+ + m->s->splines[0].c)*m->tstart+m->s->splines[0].d; + pt.y = ((m->s->splines[1].a*m->tstart+m->s->splines[1].b)*m->tstart+ + m->s->splines[1].c)*m->tstart+m->s->splines[1].d; + if ( pt.x>il->inter.x ) { + m->b.minx = il->inter.x; + m->b.maxx = pt.x; + } else { + m->b.minx = pt.x; + m->b.maxx = il->inter.x; + } + if ( pt.y>il->inter.y ) { + m->b.miny = il->inter.y; + m->b.maxy = pt.y; + } else { + m->b.miny = pt.y; + m->b.maxy = il->inter.y; + } + pt.x = ((m2->s->splines[0].a*m2->tend+m2->s->splines[0].b)*m2->tend+ + m2->s->splines[0].c)*m2->tend+m2->s->splines[0].d; + pt.y = ((m2->s->splines[1].a*m2->tend+m2->s->splines[1].b)*m2->tend+ + m2->s->splines[1].c)*m2->tend+m2->s->splines[1].d; + if ( pt.x>il->inter.x ) { + m2->b.minx = il->inter.x; + m2->b.maxx = pt.x; + } else { + m2->b.minx = pt.x; + m2->b.maxx = il->inter.x; + } + if ( pt.y>il->inter.y ) { + m2->b.miny = il->inter.y; + m2->b.maxy = pt.y; + } else { + m2->b.miny = pt.y; + m2->b.maxy = il->inter.y; + } + _AddSpline(il,m2,t,false); + } + } +} + +static void SetStartPoint(BasePoint *pt,Monotonic *m) { + if ( m->tstart==0 ) + *pt = m->s->from->me; + else if ( m->start!=NULL ) + *pt = m->start->inter; + else { + pt->x = ((m->s->splines[0].a*m->tstart+m->s->splines[0].b)*m->tstart + + m->s->splines[0].c)*m->tstart + m->s->splines[0].d; + pt->y = ((m->s->splines[1].a*m->tstart+m->s->splines[1].b)*m->tstart + + m->s->splines[1].c)*m->tstart + m->s->splines[1].d; + } +} + +static void SetEndPoint(BasePoint *pt,Monotonic *m) { + if ( m->tend==1.0 ) + *pt = m->s->to->me; + else if ( m->end!=NULL ) + *pt = m->end->inter; + else { + pt->x = ((m->s->splines[0].a*m->tend+m->s->splines[0].b)*m->tend + + m->s->splines[0].c)*m->tend + m->s->splines[0].d; + pt->y = ((m->s->splines[1].a*m->tend+m->s->splines[1].b)*m->tend + + m->s->splines[1].c)*m->tend + m->s->splines[1].d; + } +} + +static extended RoundToEndpoints(Monotonic *m,extended t,BasePoint *inter) { + BasePoint end; + extended bound; + + if ( t==0 || t==1 ) { + if ( t==0 ) + *inter = m->s->from->me; + else + *inter = m->s->to->me; +return( t ); + } + + if ( t-m->tstart < m->tend-t ) { + bound = m->tstart; + SetStartPoint(&end,m); + } else { + bound = m->tend; + SetEndPoint(&end,m); + } + if ( BpSame(&end,inter) || RealWithin(t,bound,.00001)) { + *inter = end; +return( bound ); + } + +return( t ); +} + +static extended Grad1(Spline1D *s1, Spline1D *s2, + extended t1,extended t2 ) { + /* d/dt[12] (m1(t1).x-m2(t2).x)^2 + (m1(t1).y-m2(t2).y)^2 */ + /* d/dt[12] (m1(t1).x^2 -2m1(t1).x*m2(t2).x + m2(t2).x^2) + (m1(t1).y^2 -2m1(t1).y*m2(t2).y + m2(t2).y^2) */ + extended val2 = ((s2->a*t2+s2->b)*t2+s2->c)*t2+s2->d; + +return( ((((6*(extended)s1->a*s1->a*t1 + + 5*2*(extended)s1->a*s1->b)*t1 + + 4*(s1->b*(extended)s1->b+2*s1->a*(extended)s1->c))*t1 + + 3*2*(s1->a*(extended)s1->d+s1->b*(extended)s1->c))*t1 + + 2*(s1->c*(extended)s1->c+2*s1->b*(extended)s1->d))*t1 + + 2*s1->c*(extended)s1->d - + 2*val2 * ((3*s1->a*t1 + 2*s1->b)*t1 + s1->c) ); +} + +static void GradImproveInter(Monotonic *m1, Monotonic *m2, + extended *_t1,extended *_t2,BasePoint *inter) { + Spline *s1 = m1->s, *s2 = m2->s; + extended x1, x2, y1, y2; + extended gt1=0, gt2=0, glen=1; + extended error, olderr=1e10; + extended factor = 4096; + extended t1=*_t1, t2=*_t2; + extended off, off2, yoff; + int cnt=0; + /* We want to find (t1,t2) so that (m1(t1)-m2(t2))^2==0 */ + /* Find the gradiant and move in the reverse direction */ + /* We know that the current values of (t1,t2) are close to an intersection*/ + /* so the grad should point correctly */ + /* d/dt[12] (m1(t1).x-m2(t2).x)^2 + (m1(t1).y-m2(t2).y)^2 */ + /* d/dt[12] (m1(t1).x^2 -2m1(t1).x*m2(t2).x + m2(t2).x^2) + (m1(t1).y^2 -2m1(t1).y*m2(t2).y + m2(t2).y^2) */ + + forever { + x1 = ((s1->splines[0].a*t1 + s1->splines[0].b)*t1 + s1->splines[0].c)*t1 + s1->splines[0].d; + x2 = ((s2->splines[0].a*t2 + s2->splines[0].b)*t2 + s2->splines[0].c)*t2 + s2->splines[0].d; + y1 = ((s1->splines[1].a*t1 + s1->splines[1].b)*t1 + s1->splines[1].c)*t1 + s1->splines[1].d; + y2 = ((s2->splines[1].a*t2 + s2->splines[1].b)*t2 + s2->splines[1].c)*t2 + s2->splines[1].d; + error = (x1-x2)*(x1-x2) + (y1-y2)*(y1-y2); + if ( error>olderr ) { + if ( olderr==1e10 ) + break; + factor *= 2; + if ( factor>4096*4096 ) + break; + glen *= 2; + t1 += gt1/glen; + t2 += gt2/glen; + continue; + } else + factor /= 1.4; + if ( error<1e-11 ) /* Error is actually the square of the error */ + break; /* So this isn't as constraining as it looks */ + + gt1 = Grad1(&s1->splines[0],&s2->splines[0],t1,t2) + Grad1(&s1->splines[1],&s2->splines[1],t1,t2); + gt2 = Grad1(&s2->splines[0],&s1->splines[0],t2,t1) + Grad1(&s2->splines[1],&s1->splines[1],t2,t1); + glen = esqrt(gt1*gt1 + gt2*gt2) * factor; + if ( glen==0 ) + break; + *_t1 = t1; *_t2 = t2; + t1 -= gt1/glen; + t2 -= gt2/glen; + if ( isnan(t1) || isnan(t2)) { + IError( "Nan in grad" ); + break; + } + olderr = error; + ++cnt; + if ( cnt>1000 ) + break; + } +#if 0 + if ( cnt<=1 && error>=1e-11 ) + fprintf(stderr,"No Improvement\n" ); + else if ( cnt>1 ) + fprintf(stderr,"Improvement\n" ); +#endif + t1 = *_t1; t2 = *_t2; + if ( t1<0 && t1>-.00001 ) *_t1 = t1 = 0; + else if ( t1>1 && t1<1.00001 ) *_t1 = t1 = 1.0; + if ( t2<0 && t2>-.00001 ) *_t2 = t2 = 0; + else if ( t2>1 && t2<1.00001 ) *_t2 = t2 = 1.0; + x1 = ((s1->splines[0].a*t1 + s1->splines[0].b)*t1 + s1->splines[0].c)*t1 + s1->splines[0].d; + x2 = ((s2->splines[0].a*t2 + s2->splines[0].b)*t2 + s2->splines[0].c)*t2 + s2->splines[0].d; + y1 = ((s1->splines[1].a*t1 + s1->splines[1].b)*t1 + s1->splines[1].c)*t1 + s1->splines[1].d; + y2 = ((s2->splines[1].a*t2 + s2->splines[1].b)*t2 + s2->splines[1].c)*t2 + s2->splines[1].d; + inter->x = (x1+x2)/2; inter->y = (y1+y2)/2; + + if ( (off=x1-x2)<0 ) off = -off; + if ( (yoff=y1-y2)<0 ) yoff = -yoff; + off += yoff; + + if ( t1<.0001 ) { + t1 = 0; + x1 = s1->splines[0].d; + y1 = s1->splines[1].d; + } else if ( t1>.9999 ) { + t1 = 1.0; + x1 = s1->splines[0].a+s1->splines[0].b+s1->splines[0].c+s1->splines[0].d; + y1 = s1->splines[1].a+s1->splines[1].b+s1->splines[1].c+s1->splines[1].d; + } + if ( t2<.0001 ) { + t2=0; + x2 = s2->splines[0].d; + y2 = s2->splines[1].d; + } else if ( t2>.9999 ) { + t2=1.0; + x2 = s2->splines[0].a+s2->splines[0].b+s2->splines[0].c+s2->splines[0].d; + y2 = s2->splines[1].a+s2->splines[1].b+s2->splines[1].c+s2->splines[1].d; + } + if ( (off2=x1-x2)<0 ) off2 = -off2; + if ( (yoff=y1-y2)<0 ) yoff = -yoff; + off2 += yoff; + if ( off2<=off ) { + *_t1 = t1; *_t2 = t2; + inter->x = (x1+x2)/2; inter->y = (y1+y2)/2; + } +} + +static Intersection *AddIntersection(Intersection *ilist,Monotonic *m1, + Monotonic *m2,extended t1,extended t2,BasePoint *inter) { + Intersection *il; + extended ot1 = t1, ot2 = t2; + + /* Fixup some rounding errors */ + GradImproveInter(m1,m2,&t1,&t2,inter); + if ( t1tstart || t1>m1->tend || t2tstart || t2>m2->tend ) +return( ilist ); + + t1 = RoundToEndpoints(m1,t1,inter); + t2 = RoundToEndpoints(m2,t2,inter); + t1 = RoundToEndpoints(m1,t1,inter); /* Do it twice. rounding t2 can mean we now need to round t1 */ + + if (( m1->s->to == m2->s->from && RealWithin(t1,1.0,.01) && RealWithin(t2,0,.01)) || + ( m1->s->from == m2->s->to && RealWithin(t1,0,.01) && RealWithin(t2,1.0,.01))) +return( ilist ); + + if (( t1==m1->tstart && m1->start!=NULL && + (inter->x!=m1->start->inter.x || inter->y!=m1->start->inter.y)) || + ( t1==m1->tend && m1->end!=NULL && + (inter->x!=m1->end->inter.x || inter->y!=m1->end->inter.y))) + t1 = ot1; + if (( t2==m2->tstart && m2->start!=NULL && + (inter->x!=m2->start->inter.x || inter->y!=m2->start->inter.y)) || + ( t2==m2->tend && m2->end!=NULL && + (inter->x!=m2->end->inter.x || inter->y!=m2->end->inter.y))) + t2 = ot2; + + /* The ordinary join of one spline to the next doesn't really count */ + /* Or one monotonic sub-spline to the next either */ + if (( m1->next==m2 && RealNear(t1,m1->tend) && RealNear(t2,m2->tstart)) || + (m2->next==m1 && RealNear(t1,m1->tstart) && RealNear(t2,m2->tend)) ) +return( ilist ); + + if ( RealWithin(m1->tstart,t1,.01) ) + il = m1->start; + else if ( RealWithin(m1->tend,t1,.01) ) + il = m1->end; + else + il = NULL; + if ( il!=NULL && + ((RealWithin(m2->tstart,t2,.01) && m2->start==il) || + (RealWithin(m2->tend,t2,.01) && m2->end==il)) ) +return( ilist ); + + for ( il = ilist; il!=NULL; il=il->next ) { + if ( RealWithin(il->inter.x,inter->x,.01) && RealWithin(il->inter.y,inter->y,.01)) { + AddSpline(il,m1,t1); + AddSpline(il,m2,t2); +return( ilist ); + } + } + + il = chunkalloc(sizeof(Intersection)); + il->inter = *inter; + il->next = ilist; + AddSpline(il,m1,t1); + AddSpline(il,m2,t2); +return( il ); +} + +static extended BoundIterateSplineSolve(Spline1D *sp, extended tmin, extended tmax, + extended sought,double err) { + extended t = IterateSplineSolve(sp,tmin,tmax,sought,err); + if ( ttmax ) +return( -1 ); + +return( t ); +} + +static Intersection *FindMonotonicIntersection(Intersection *ilist,Monotonic *m1,Monotonic *m2) { + /* I believe that two monotonic cubics can still intersect in two points */ + /* so we can't just check if the splines are on oposite sides of each */ + /* other at top and bottom */ + DBounds b; + const double error = .0001; + BasePoint pt; + extended t1,t2; + + b.minx = m1->b.minx>m2->b.minx ? m1->b.minx : m2->b.minx; + b.maxx = m1->b.maxxb.maxx ? m1->b.maxx : m2->b.maxx; + b.miny = m1->b.miny>m2->b.miny ? m1->b.miny : m2->b.miny; + b.maxy = m1->b.maxyb.maxy ? m1->b.maxy : m2->b.maxy; + + if ( b.maxy==b.miny && b.minx==b.maxx ) { + extended x1,y1, x2,y2; + if ( m1->next==m2 || m2->next==m1 ) +return( ilist ); /* Not interesting. Only intersection is at an endpoint */ + if ( ((m1->start==m2->start || m1->end==m2->start) && m2->start!=NULL) || + ((m1->start==m2->end || m1->end==m2->end ) && m2->end!=NULL )) +return( ilist ); + pt.x = b.minx; pt.y = b.miny; + if ( m1->b.maxx-m1->b.minx > m1->b.maxy-m1->b.miny ) + t1 = BoundIterateSplineSolve(&m1->s->splines[0],m1->tstart,m1->tend,b.minx,error); + else + t1 = BoundIterateSplineSolve(&m1->s->splines[1],m1->tstart,m1->tend,b.miny,error); + if ( m2->b.maxx-m2->b.minx > m2->b.maxy-m2->b.miny ) + t2 = BoundIterateSplineSolve(&m2->s->splines[0],m2->tstart,m2->tend,b.minx,error); + else + t2 = BoundIterateSplineSolve(&m2->s->splines[1],m2->tstart,m2->tend,b.miny,error); + if ( t1!=-1 && t2!=-1 ) { + x1 = ((m1->s->splines[0].a*t1+m1->s->splines[0].b)*t1+m1->s->splines[0].c)*t1+m1->s->splines[0].d; + y1 = ((m1->s->splines[1].a*t1+m1->s->splines[1].b)*t1+m1->s->splines[1].c)*t1+m1->s->splines[1].d; + x2 = ((m2->s->splines[0].a*t2+m2->s->splines[0].b)*t2+m2->s->splines[0].c)*t2+m2->s->splines[0].d; + y2 = ((m2->s->splines[1].a*t2+m2->s->splines[1].b)*t2+m2->s->splines[1].c)*t2+m2->s->splines[1].d; + if ( x1-x2>-.01 && x1-x2<.01 && y1-y2>-.01 && y1-y2<.01 ) + ilist = AddIntersection(ilist,m1,m2,t1,t2,&pt); + } + } else if ( b.maxy==b.miny ) { + extended x1,x2; + if ( m1->next==m2 || m2->next==m1 ) +return( ilist ); /* Not interesting. Only intersection is at an endpoint */ + t1 = BoundIterateSplineSolve(&m1->s->splines[1],m1->tstart,m1->tend,b.miny,error); + t2 = BoundIterateSplineSolve(&m2->s->splines[1],m2->tstart,m2->tend,b.miny,error); + if ( t1!=-1 && t2!=-1 ) { + x1 = ((m1->s->splines[0].a*t1+m1->s->splines[0].b)*t1+m1->s->splines[0].c)*t1+m1->s->splines[0].d; + x2 = ((m2->s->splines[0].a*t2+m2->s->splines[0].b)*t2+m2->s->splines[0].c)*t2+m2->s->splines[0].d; + if ( x1-x2>-.01 && x1-x2<.01 ) { + pt.x = (x1+x2)/2; pt.y = b.miny; + ilist = AddIntersection(ilist,m1,m2,t1,t2,&pt); + } + } + } else if ( b.maxx==b.minx ) { + extended y1,y2; + if ( m1->next==m2 || m2->next==m1 ) +return( ilist ); /* Not interesting. Only intersection is at an endpoint */ + t1 = BoundIterateSplineSolve(&m1->s->splines[0],m1->tstart,m1->tend,b.minx,error); + t2 = BoundIterateSplineSolve(&m2->s->splines[0],m2->tstart,m2->tend,b.minx,error); + if ( t1!=-1 && t2!=-1 ) { + y1 = ((m1->s->splines[1].a*t1+m1->s->splines[1].b)*t1+m1->s->splines[1].c)*t1+m1->s->splines[1].d; + y2 = ((m2->s->splines[1].a*t2+m2->s->splines[1].b)*t2+m2->s->splines[1].c)*t2+m2->s->splines[1].d; + if ( y1-y2>-.01 && y1-y2<.01 ) { + pt.x = b.minx; pt.y = (y1+y2)/2; + ilist = AddIntersection(ilist,m1,m2,t1,t2,&pt); + } + } + } else if ( b.maxy-b.miny > b.maxx-b.minx ) { + extended diff, y, x1,x2, x1o,x2o; + extended t1,t2, t1o,t2o ; + + diff = (b.maxy-b.miny)/32; + y = b.miny; + x1o = x2o = 0; + while ( ys->splines[1],m1->tstart,m1->tend,b.miny,error); + t2o = BoundIterateSplineSolve(&m2->s->splines[1],m2->tstart,m2->tend,b.miny,error); + if ( t1o!=-1 && t2o!=-1 ) + break; + y += diff; + } + x1o = ((m1->s->splines[0].a*t1o+m1->s->splines[0].b)*t1o+m1->s->splines[0].c)*t1o+m1->s->splines[0].d; + x2o = ((m2->s->splines[0].a*t2o+m2->s->splines[0].b)*t2o+m2->s->splines[0].c)*t2o+m2->s->splines[0].d; + if ( x1o!=x2o ) + break; + y += diff; + } + for ( y+=diff; ; y += diff ) { + /* I used to say y<=b.maxy in the above for statement. */ + /* that seemed to get rounding errors on the mac, so we do it */ + /* like this now: */ + if ( y>b.maxy ) { + if ( ys->splines[1],m1->tstart,m1->tend,y,error); + t2 = BoundIterateSplineSolve(&m2->s->splines[1],m2->tstart,m2->tend,y,error); + if ( t1==-1 || t2==-1 ) + continue; + x1 = ((m1->s->splines[0].a*t1+m1->s->splines[0].b)*t1+m1->s->splines[0].c)*t1+m1->s->splines[0].d; + x2 = ((m2->s->splines[0].a*t2+m2->s->splines[0].b)*t2+m2->s->splines[0].c)*t2+m2->s->splines[0].d; + if ( x1o!=x2o && (x1o>x2o) != ( x1>x2 ) ) { + /* A cross over has occured. (assume we have a small enough */ + /* region that three cross-overs can't have occurred) */ + /* Use a binary search to track it down */ + extended ytop, ybot; + ytop = y; + ybot = y-diff; + while ( ytop!=ybot ) { + extended ytest = (ytop+ybot)/2; + extended t1t, t2t; + t1t = BoundIterateSplineSolve(&m1->s->splines[1],m1->tstart,m1->tend,ytest,error); + t2t = BoundIterateSplineSolve(&m2->s->splines[1],m2->tstart,m2->tend,ytest,error); + x1 = ((m1->s->splines[0].a*t1t+m1->s->splines[0].b)*t1t+m1->s->splines[0].c)*t1t+m1->s->splines[0].d; + x2 = ((m2->s->splines[0].a*t2t+m2->s->splines[0].b)*t2t+m2->s->splines[0].c)*t2t+m2->s->splines[0].d; + if ( t1t==-1 || t2t==-1 ) { + SOError( "Can't find something in range.\n" ); + break; + } else if (( x1-x2-error ) || ytop==ytest || ybot==ytest ) { + pt.y = ytest; pt.x = (x1+x2)/2; + ilist = AddIntersection(ilist,m1,m2,t1t,t2t,&pt); + b.maxy = m1->b.maxyb.maxy ? m1->b.maxy : m2->b.maxy; + break; + } else if ( (x1o>x2o) != ( x1>x2 ) ) { + ytop = ytest; + } else { + ybot = ytest; + } + } + x1 = x1o; x1o = x2o; x2o = x1; + } else { + x1o = x1; x2o = x2; + } + } + } else { + extended diff, x, y1,y2, y1o,y2o; + extended t1,t2, t1o,t2o ; + + diff = (b.maxx-b.minx)/32; + x = b.minx; + y1o = y2o = 0; + while ( xs->splines[0],m1->tstart,m1->tend,b.minx,error); + t2o = BoundIterateSplineSolve(&m2->s->splines[0],m2->tstart,m2->tend,b.minx,error); + if ( t1o!=-1 && t2o!=-1 ) + break; + x += diff; + } + y1o = ((m1->s->splines[1].a*t1o+m1->s->splines[1].b)*t1o+m1->s->splines[1].c)*t1o+m1->s->splines[1].d; + y2o = ((m2->s->splines[1].a*t2o+m2->s->splines[1].b)*t2o+m2->s->splines[1].c)*t2o+m2->s->splines[1].d; + if ( y1o!=y2o ) + break; + x += diff; + } + y1 = y2 = 0; + for ( x+=diff; ; x += diff ) { + if ( x>b.maxx ) { + if ( xs->splines[0],m1->tstart,m1->tend,x,error); + t2 = BoundIterateSplineSolve(&m2->s->splines[0],m2->tstart,m2->tend,x,error); + if ( t1==-1 || t2==-1 ) + continue; + y1 = ((m1->s->splines[1].a*t1+m1->s->splines[1].b)*t1+m1->s->splines[1].c)*t1+m1->s->splines[1].d; + y2 = ((m2->s->splines[1].a*t2+m2->s->splines[1].b)*t2+m2->s->splines[1].c)*t2+m2->s->splines[1].d; + if ( (y1o>y2o) != ( y1>y2 ) ) { + /* A cross over has occured. (assume we have a small enough */ + /* region that three cross-overs can't have occurred) */ + /* Use a binary search to track it down */ + extended xtop, xbot; + xtop = x; + xbot = x-diff; + while ( xtop!=xbot ) { + extended xtest = (xtop+xbot)/2; + extended t1t, t2t; + t1t = BoundIterateSplineSolve(&m1->s->splines[0],m1->tstart,m1->tend,xtest,error); + t2t = BoundIterateSplineSolve(&m2->s->splines[0],m2->tstart,m2->tend,xtest,error); + y1 = ((m1->s->splines[1].a*t1t+m1->s->splines[1].b)*t1t+m1->s->splines[1].c)*t1t+m1->s->splines[1].d; + y2 = ((m2->s->splines[1].a*t2t+m2->s->splines[1].b)*t2t+m2->s->splines[1].c)*t2t+m2->s->splines[1].d; + if ( t1t==-1 || t2t==-1 ) { + SOError( "Can't find something in range.\n" ); + break; + } else if (( y1-y2-error ) || xtop==xtest || xbot==xtest ) { + pt.x = xtest; pt.y = (y1+y2)/2; + ilist = AddIntersection(ilist,m1,m2,t1t,t2t,&pt); + b.maxx = m1->b.maxxb.maxx ? m1->b.maxx : m2->b.maxx; + break; + } else if ( (y1o>y2o) != ( y1>y2 ) ) { + xtop = xtest; + } else { + xbot = xtest; + } + } + y1 = y1o; y1o = y2o; y2o = y1; + } else { + y1o = y1; y2o = y2; + } + } + } +return( ilist ); +} + + +static extended SplineContainsPoint(Monotonic *m,BasePoint *pt) { + int which, nw; + extended t; + BasePoint slope; + const double error = .0001; + + which = ( m->b.maxx-m->b.minx > m->b.maxy-m->b.miny )? 0 : 1; + nw = !which; + t = BoundIterateSplineSolve(&m->s->splines[which],m->tstart,m->tend,(&pt->x)[which],error); + if ( (slope.x = (3*m->s->splines[0].a*t+2*m->s->splines[0].b)*t+m->s->splines[0].c)<0 ) + slope.x = -slope.x; + if ( (slope.y = (3*m->s->splines[1].a*t+2*m->s->splines[1].b)*t+m->s->splines[1].c)<0 ) + slope.y = -slope.y; + if ( t==-1 || (slope.y>slope.x)!=which ) { + nw = which; + which = 1-which; + t = BoundIterateSplineSolve(&m->s->splines[which],m->tstart,m->tend,(&pt->x)[which],error); + } + if ( t!=-1 && RealWithin((&pt->x)[nw], + ((m->s->splines[nw].a*t+m->s->splines[nw].b)*t + + m->s->splines[nw].c)*t + m->s->splines[nw].d,.1 )) +return( t ); + +return( -1 ); +} + +/* If two splines are coincident, then pretend they intersect at both */ +/* end-points and nowhere else */ +static int CoincidentIntersect(Monotonic *m1,Monotonic *m2,BasePoint *pts, + extended *t1s,extended *t2s) { + const double error = .0001; + int cnt=0; + extended t, t2, diff; + + if ( m1==m2 || m1->next==m2 || m1->prev==m2 ) +return( false ); /* Can't be coincident. Adjacent */ + /* Actually adjacent splines can double back on themselves */ + + if ( (m1->xup==m2->xup && m1->yup==m2->yup) || + ((m1->xup!=m2->xup || (m1->b.minx==m1->b.maxx && m2->b.minx==m2->b.maxx)) || + (m1->yup!=m2->yup || (m1->b.miny==m1->b.maxy && m2->b.miny==m2->b.maxy)))) + /* A match is possible */; + else +return( false ); + + SetStartPoint(&pts[cnt],m1); + t1s[cnt] = m1->tstart; + if ( (t2s[cnt] = SplineContainsPoint(m2,&pts[cnt]))!=-1 ) + ++cnt; + + SetEndPoint(&pts[cnt],m1); + t1s[cnt] = m1->tend; + if ( (t2s[cnt] = SplineContainsPoint(m2,&pts[cnt]))!=-1 ) + ++cnt; + + if ( cnt!=2 ) { + SetStartPoint(&pts[cnt],m2); + t2s[cnt] = m2->tstart; + if ( (t1s[cnt] = SplineContainsPoint(m1,&pts[cnt]))!=-1 ) + ++cnt; + } + + if ( cnt!=2 ) { + SetEndPoint(&pts[cnt],m2); + t2s[cnt] = m2->tend; + if ( (t1s[cnt] = SplineContainsPoint(m1,&pts[cnt]))!=-1 ) + ++cnt; + } + + if ( cnt!=2 ) +return( false ); + + if ( RealWithin(t1s[0],t1s[1],.01) ) +return( false ); + + /* Ok, if we've gotten this far we know that two of the end points are */ + /* on both splines. */ + t1s[2] = t2s[2] = -1; + if ( !m1->s->knownlinear || !m1->s->knownlinear ) { + if ( t1s[1]s->splines[0].a*t+m1->s->splines[0].b)*t+m1->s->splines[0].c)*t+m1->s->splines[0].d; + here.y = ((m1->s->splines[1].a*t+m1->s->splines[1].b)*t+m1->s->splines[1].c)*t+m1->s->splines[1].d; + if ( (slope.x = (3*m1->s->splines[0].a*t+2*m1->s->splines[0].b)*t+m1->s->splines[0].c)<0 ) + slope.x = -slope.x; + if ( (slope.y = (3*m1->s->splines[1].a*t+2*m1->s->splines[1].b)*t+m1->s->splines[1].c)<0 ) + slope.y = -slope.y; + if ( slope.y>slope.x ) { + t2 = BoundIterateSplineSolve(&m2->s->splines[1],t2s[0],t2s[1],here.y,error); + if ( t2==-1 || !RealWithin(here.x,((m2->s->splines[0].a*t2+m2->s->splines[0].b)*t2+m2->s->splines[0].c)*t2+m2->s->splines[0].d,.1)) +return( false ); + } else { + t2 = BoundIterateSplineSolve(&m2->s->splines[0],t2s[0],t2s[1],here.x,error); + if ( t2==-1 || !RealWithin(here.y,((m2->s->splines[1].a*t2+m2->s->splines[1].b)*t2+m2->s->splines[1].c)*t2+m2->s->splines[1].d,.1)) +return( false ); + } + } + } + +return( true ); +} + +static void FigureProperMonotonicsAtIntersections(Intersection *ilist) { + MList *ml, *ml2, *mlnext, *prev, *p2; + + while ( ilist!=NULL ) { + for ( ml=ilist->monos; ml!=NULL; ml=ml->next ) { + if ( (ml->t==ml->m->tstart && !ml->isend) || + (ml->t==ml->m->tend && ml->isend)) + /* It's right */; + else if ( ml->t>ml->m->tstart ) { + while ( ml->t>ml->m->tend ) { + ml->m = ml->m->next; + if ( ml->m->s!=ml->s ) { + SOError("we could not find a matching monotonic\n" ); + break; + } + } + } else { + while ( ml->tm->tstart ) { + ml->m = ml->m->prev; + if ( ml->m->s!=ml->s ) { + SOError( "we could not find a matching monotonic\n" ); + break; + } + } + } + if ( ml->t==ml->m->tstart && ml->isend ) + ml->m = ml->m->prev; + else if ( ml->t==ml->m->tend && !ml->isend ) + ml->m = ml->m->next; + if ( ml->t!=ml->m->tstart && ml->t!=ml->m->tend ) + SOError( "we could not find a matching monotonic time\n" ); + } + for ( prev=NULL, ml=ilist->monos; ml!=NULL; ml = mlnext ) { + mlnext = ml->next; + if ( ml->m->start==ml->m->end ) { + for ( p2 = ml, ml2=ml->next; ml2!=NULL; p2=ml2, ml2 = ml2->next ) { + if ( ml2->m==ml->m ) + break; + } + if ( ml2!=NULL ) { + if ( ml2==mlnext ) mlnext = ml2->next; + p2->next = ml2->next; + chunkfree(ml2,sizeof(*ml2)); + } + if ( prev==NULL ) + ilist->monos = mlnext; + else + prev->next = mlnext; + chunkfree(ml,sizeof(*ml)); + } + } +#if 0 + for ( ml=ilist->monos; ml!=NULL; ml=ml->next ) { + Monotonic *search; + MList *ml2; + extended t; + if ( ml->m->start == ilist ) { + search = ml->m->prev; + t = ( ml->m->tstart==0 ) ? 1.0 : ml->m->tstart; + } else { + search = ml->m->next; + t = ( ml->m->tend==1.0 ) ? 0.0 : ml->m->tend; + } + for ( ml2=ilist->monos; ml2!=NULL && ml2->m!=search; ml2=ml2->next ); + if ( ml2==NULL ) { + ml2 = chunkalloc(sizeof(MList)); + ml2->m = search; + ml2->s = search->s; + ml2->t = t; + ml2->next = ml->next; + ml->next = ml2; + ml = ml2; + } + } +#endif + ilist = ilist->next; + } +} + +static void Validate(Monotonic *ms, Intersection *ilist) { + MList *ml; + int mcnt; + + while ( ilist!=NULL ) { + for ( mcnt=0, ml=ilist->monos; ml!=NULL; ml=ml->next ) { + if ( ml->m->isneeded ) ++mcnt; + if ( ml->m->start!=ilist && ml->m->end!=ilist ) + SOError( "Intersection (%g,%g) not on a monotonic which should contain it.\n", + ilist->inter.x, ilist->inter.y ); + } + if ( mcnt&1 ) + SOError( "Odd number of needed monotonic sections at intersection. (%g,%g)\n", + ilist->inter.x,ilist->inter.y ); + ilist = ilist->next; + } + + while ( ms!=NULL ) { + if ( ms->prev->end!=ms->start ) + SOError( "Mismatched intersection.\n"); + ms = ms->linked; + } +} + +static Intersection *FindIntersections(Monotonic *ms, enum overlap_type ot) { + Monotonic *m1, *m2; + BasePoint pts[9]; + extended t1s[10], t2s[10]; + Intersection *ilist=NULL; + int i; + int wasc; + + for ( m1=ms; m1!=NULL; m1=m1->linked ) { + for ( m2=m1->linked; m2!=NULL; m2=m2->linked ) { + if ( m2->b.minx > m1->b.maxx || + m2->b.maxx < m1->b.minx || + m2->b.miny > m1->b.maxy || + m2->b.maxy < m1->b.miny ) + continue; /* Can't intersect */; + wasc = CoincidentIntersect(m1,m2,pts,t1s,t2s); + if ( wasc || m1->s->knownlinear || m2->s->knownlinear || + (m1->s->splines[0].a==0 && m1->s->splines[1].a==0 && + m2->s->splines[0].a==0 && m2->s->splines[1].a==0 )) { + if ( !wasc && SplinesIntersect(m1->s,m2->s,pts,t1s,t2s)<=0 ) + continue; + for ( i=0; i<4 && t1s[i]!=-1; ++i ) { + if ( t1s[i]>=m1->tstart && t1s[i]<=m1->tend && + t2s[i]>=m2->tstart && t2s[i]<=m2->tend ) { + ilist = AddIntersection(ilist,m1,m2,t1s[i],t2s[i],&pts[i]); + } + } + continue; + } + ilist = FindMonotonicIntersection(ilist,m1,m2); + } + } + + FigureProperMonotonicsAtIntersections(ilist); + + /* Now suppose we have a contour which intersects nothing? */ + /* with no intersections we lose track of it and it will vanish */ + /* That's not a good idea. Make sure each contour has at least one inter */ + if ( ot!=over_findinter && ot!=over_fisel ) { + for ( m1=ms; m1!=NULL; m1=m2->linked ) { + if ( m1->start==NULL && m1->end==NULL ) { + Intersection *il; + il = chunkalloc(sizeof(Intersection)); + il->inter = m1->s->from->me; + il->next = ilist; + AddSpline(il,m1,0); + AddSpline(il,m1->prev,1.0); + ilist = il; + } + for ( m2=m1; m2->linked==m2->next; m2=m2->linked ); + } + } + +return( ilist ); +} + +static int dcmp(const void *_p1, const void *_p2) { + const extended *dpt1 = _p1, *dpt2 = _p2; + if ( *dpt1>*dpt2 ) +return( 1 ); + else if ( *dpt1<*dpt2 ) +return( -1 ); + +return( 0 ); +} + +static extended *FindOrderedEndpoints(Monotonic *ms,int which) { + int cnt; + Monotonic *m; + extended *ends; + int i,j,k; + + for ( m=ms, cnt=0; m!=NULL; m=m->linked, ++cnt ); + ends = galloc((2*cnt+1)*sizeof(extended)); + for ( m=ms, cnt=0; m!=NULL; m=m->linked, cnt+=2 ) { + if ( m->start!=NULL ) + ends[cnt] = (&m->start->inter.x)[which]; + else if ( m->tstart==0 ) + ends[cnt] = (&m->s->from->me.x)[which]; + else + ends[cnt] = ((m->s->splines[which].a*m->tstart+m->s->splines[which].b)*m->tstart+ + m->s->splines[which].c)*m->tstart+m->s->splines[which].d; + if ( m->end!=NULL ) + ends[cnt+1] = (&m->end->inter.x)[which]; + else if ( m->tend==1.0 ) + ends[cnt+1] = (&m->s->to->me.x)[which]; + else + ends[cnt+1] = ((m->s->splines[which].a*m->tend+m->s->splines[which].b)*m->tend+ + m->s->splines[which].c)*m->tend+m->s->splines[which].d; + } + + qsort(ends,cnt,sizeof(extended),dcmp); + for ( i=0; ii+1 ) { + for ( k=i+1; jother>(*mpt2)->other ) +return( 1 ); + else if ( (*mpt1)->other<(*mpt2)->other ) +return( -1 ); + +return( 0 ); +} + +static int MonotonicFindAt(Monotonic *ms,int which, extended test, Monotonic **space ) { + /* Find all monotonic sections which intersect the line (x,y)[which] == test */ + /* find the value of the other coord on that line */ + /* Order them (by the other coord) */ + /* then run along that line figuring out which monotonics are needed */ + extended t; + Monotonic *m, *mm; + int i, j, k, cnt; + const double error = .0001; + int nw = !which; + + for ( m=ms, i=0; m!=NULL; m=m->linked ) { + if (( which==0 && test >= m->b.minx && test <= m->b.maxx ) || + ( which==1 && test >= m->b.miny && test <= m->b.maxy )) { + /* Lines parallel to the direction we are testing just get in the */ + /* way and don't add any useful info */ + if ( m->s->knownlinear && + (( which==1 && m->s->from->me.y==m->s->to->me.y ) || + (which==0 && m->s->from->me.x==m->s->to->me.x))) + continue; + t = BoundIterateSplineSolve(&m->s->splines[which],m->tstart,m->tend,test,error); + if ( t==-1 ) + continue; + m->t = t; + if ( t==m->tend ) t -= (m->tend-m->tstart)/100; + else if ( t==m->tstart ) t += (m->tend-m->tstart)/100; + m->other = ((m->s->splines[nw].a*t+m->s->splines[nw].b)*t+ + m->s->splines[nw].c)*t+m->s->splines[nw].d; + space[i++] = m; + } + } + cnt = i; + + /* Things get a little tricky at end-points */ + for ( i=0; it==m->tend ) { + /* Ignore horizontal/vertical lines (as appropriate) */ + for ( mm=m->next; mm!=m; mm=mm->next ) { + if ( !mm->s->knownlinear ) + break; + if (( which==1 && mm->s->from->me.y!=m->s->to->me.y ) || + (which==0 && mm->s->from->me.x!=m->s->to->me.x)) + break; + } + } else if ( m->t==m->tstart ) { + for ( mm=m->prev; mm!=m; mm=mm->prev ) { + if ( !mm->s->knownlinear ) + break; + if (( which==1 && mm->s->from->me.y!=m->s->to->me.y ) || + (which==0 && mm->s->from->me.x!=m->s->to->me.x)) + break; + } + } else + break; + /* If the next monotonic continues in the same direction, and we found*/ + /* it too, then don't count both. They represent the same intersect */ + /* If they are in oposite directions then they cancel each other out */ + /* and that is correct */ + if ( mm!=m && /* Should always be true */ + (&mm->xup)[which]==(&m->xup)[which] ) { + for ( j=cnt-1; j>=0; --j ) + if ( space[j]==mm ) + break; + if ( j!=-1 ) { + /* remove mm */ + for ( k=j+1; kj ) --i; + } + } + } + + space[cnt] = NULL; space[cnt+1] = NULL; + qsort(space,cnt,sizeof(Monotonic *),mcmp); +return(cnt); +} + +static void FigureNeeds(Monotonic *ms,int which, extended test, Monotonic **space, + enum overlap_type ot, int ignore_close) { + /* Find all monotonic sections which intersect the line (x,y)[which] == test */ + /* find the value of the other coord on that line */ + /* Order them (by the other coord) */ + /* then run along that line figuring out which monotonics are needed */ + int i, j, winding, ew, was_close, close; + + MonotonicFindAt(ms,which,test,space); + + winding = 0; ew = 0; was_close = false; + for ( i=0; space[i]!=NULL; ++i ) { + int needed, unneeded, inverted=false; + Monotonic *m; + int new; + int nwinding; + retry: + needed = false, unneeded = false; + nwinding=winding; + new=ew; + m = space[i]; + if ( m->exclude ) + new += ( (&m->xup)[which] ? 1 : -1 ); + else + nwinding += ( (&m->xup)[which] ? 1 : -1 ); + if ( ot==over_remove || ot==over_rmselected ) { + if ( winding==0 || nwinding==0 ) + needed = true; + else + unneeded = true; + } else if ( ot==over_intersect || ot==over_intersel ) { + if ( (winding>-2 && winding<2 && nwinding>-2 && nwinding<2) || + ((winding<=-2 || winding>=2) && (nwinding<=-2 && nwinding>=2))) + unneeded = true; + else + needed = true; + } else if ( ot == over_exclude ) { + if ( (( winding==0 || nwinding==0 ) && ew==0 && new==0 ) || + (winding!=0 && (( ew!=0 && new==0 ) || ( ew==0 && new!=0))) ) + needed = true; + else + unneeded = true; + } + if ( space[i+1]!=NULL ) + close = space[i+1]->other-space[i]->other < 1; + else + close = false; + if (( !close && !was_close ) || ignore_close ) { + if (( m->isneeded || m->isunneeded ) && m->isneeded!=needed ) { + for ( j=i+1; space[j]!=NULL && space[j]->other-m->other<.5; ++j ) { + if ( space[j]->start==m->start && space[j]->end==m->end && + (space[j]->isneeded == needed || + (!space[j]->isneeded && !space[j]->isunneeded))) { + space[i] = space[j]; + space[j] = m; + m = space[i]; + break; + } else if ( !inverted && space[j]->other-m->other<.001 && + (((&space[j]->xup)[which] == (&m->xup)[which] && + (space[j]->isneeded == needed || + (!space[j]->isneeded && !space[j]->isunneeded))) || + ((&space[j]->xup)[which] != (&m->xup)[which] && + (space[j]->isneeded != needed || + (!space[j]->isneeded && !space[j]->isunneeded)))) ) { + space[i] = space[j]; + space[j] = m; + inverted = true; + goto retry; + } + } + } + if ( !m->isneeded && !m->isunneeded ) { + m->isneeded = needed; m->isunneeded = unneeded; + m->when_set = test; /* Debugging */ + } else if ( m->isneeded!=needed || m->isunneeded!=unneeded ) + SOError( "monotonic is both needed and unneeded.\n" ); + } + winding = nwinding; + ew = new; + was_close = close; + } + if ( winding!=0 ) + SOError( "Winding number did not return to 0 when %s=%g\n", + which ? "y" : "x", test ); +} + +struct gaps { extended test, len; int which; }; + +static int gcmp(const void *_p1, const void *_p2) { + const struct gaps *gpt1 = _p1, *gpt2 = _p2; + if ( gpt1->len > gpt2->len ) +return( 1 ); + else if ( gpt1->len < gpt2->len ) +return( -1 ); + +return( 0 ); +} + +static void FindNeeded(Monotonic *ms,enum overlap_type ot) { + extended *ends[2]; + Monotonic *m, **space; + extended top, bottom, test; + int t,b,i,j,k,cnt,which; + struct gaps *gaps; + extended min_gap; + + if ( ms==NULL ) +return; + + ends[0] = FindOrderedEndpoints(ms,0); + ends[1] = FindOrderedEndpoints(ms,1); + + for ( m=ms, cnt=0; m!=NULL; m=m->linked, ++cnt ); + space = galloc((cnt+2)*sizeof(Monotonic*)); + gaps = galloc(2*cnt*sizeof(struct gaps)); + + /* Look for the longest splines without interruptions first. These are */ + /* least likely to cause problems and will give us a good basis from which*/ + /* to make guesses should rounding errors occur later */ + for ( j=k=0; j<2; ++j ) + for ( i=0; ends[j][i+1]!=1e10; ++i ) { + gaps[k].which = j; + gaps[k].len = (ends[j][i+1]-ends[j][i]); + gaps[k++].test = (ends[j][i+1]+ends[j][i])/2; + } + qsort(gaps,k,sizeof(struct gaps),gcmp); + min_gap = 1e10; + for ( m=ms; m!=NULL; m=m->linked ) { + if ( m->b.maxx-m->b.minx > m->b.maxy-m->b.miny ) { + if ( min_gap > m->b.maxx-m->b.minx ) min_gap = m->b.maxx-m->b.minx; + } else { + if ( m->b.maxy-m->b.miny==0 ) + fprintf( stderr, "Foo\n"); + if ( min_gap > m->b.maxy-m->b.miny ) min_gap = m->b.maxy-m->b.miny; + } + } + if ( min_gap<.5 ) min_gap = .5; + for ( i=0; i=min_gap; ++i ) + FigureNeeds(ms,gaps[i].which,gaps[i].test,space,ot,0); + + for ( m=ms; m!=NULL; m=m->linked ) if ( !m->isneeded && !m->isunneeded ) { + if ( m->b.maxx-m->b.minx > m->b.maxy-m->b.miny ) { + top = m->b.maxx; + bottom = m->b.minx; + which = 0; + } else { + top = m->b.maxy; + bottom = m->b.miny; + which = 1; + } + for ( b=0; ends[which][b]<=bottom; ++b ); + for ( t=b; ends[which][t]next ) { + for ( ml=il->monos; ml!=NULL; ml=ml->next ) { + if ( ml->m->isneeded ) { + Spline *s = ml->m->s; + double t1, t2; + t1 = ml->t; + if ( ml->isend ) + t2 = ml->t - (ml->t-ml->m->tstart)/20.0; + else + t2 = ml->t + (ml->m->tend-ml->t)/20.0; + u.x = ((s->splines[0].a*t1 + s->splines[0].b)*t1 + s->splines[0].c)*t1 - + ((s->splines[0].a*t2 + s->splines[0].b)*t2 + s->splines[0].c)*t2; + u.y = ((s->splines[1].a*t1 + s->splines[1].b)*t1 + s->splines[1].c)*t1 - + ((s->splines[1].a*t2 + s->splines[1].b)*t2 + s->splines[1].c)*t2; + len = u.x*u.x + u.y*u.y; + if ( len!=0 ) { + len = sqrt(len); + u.x /= len; + u.y /= len; + } + ml->unit = u; + } + } + } +} + +static void TestForBadDirections(Intersection *ilist) { + /* If we have a glyph with at least two contours one drawn clockwise, */ + /* one counter, and these two intersect, then our algorithm will */ + /* not remove what appears to the user to be an overlap. Warn about */ + /* this. */ + /* I think it happens iff all exits from an intersection are needed */ + MList *ml, *ml2; + int cnt, ncnt; + Intersection *il; + + /* If we have two splines one going from a->b and the other from b->a */ + /* tracing exactly the same route, then they should cancel each other */ + /* out. But depending on the order we hit them they may both be marked */ + /* needed */ /* OverlapBugs.sfd: asciicircumflex */ + for ( il=ilist; il!=NULL; il=il->next ) { + for ( ml=il->monos; ml!=NULL; ml=ml->next ) { + if ( ml->m->isneeded && ml->m->s->knownlinear && + ml->m->start!=NULL && ml->m->end!=NULL ) { + for ( ml2 = ml->next; ml2!=NULL; ml2=ml2->next ) { + if ( ml2->m->isneeded && ml2->m->s->knownlinear && + ml2->m->start == ml->m->end && + ml2->m->end == ml->m->start ) { + ml2->m->isneeded = false; + ml->m->isneeded = false; + ml2->m->isunneeded = true; + ml->m->isunneeded = true; + break; + } + } + } + } + } + + while ( ilist!=NULL ) { + cnt = ncnt = 0; + for ( ml = ilist->monos; ml!=NULL; ml=ml->next ) { + ++cnt; + if ( ml->m->isneeded ) ++ncnt; + } + ilist = ilist->next; + } +} + +static void MonoFigure(Spline *s,extended firstt,extended endt, SplinePoint *first, + SplinePoint *end) { + extended f; + Spline1D temp; + + f = endt - firstt; + /*temp.d = first->me.x;*/ + /*temp.a = s->splines[0].a*f*f*f;*/ + temp.b = (s->splines[0].b + 3*s->splines[0].a*firstt) *f*f; + temp.c = (s->splines[0].c + 2*s->splines[0].b*firstt + 3*s->splines[0].a*firstt*firstt) * f; + first->nextcp.x = first->me.x + temp.c/3; + end->prevcp.x = first->nextcp.x + (temp.b+temp.c)/3; + if ( temp.c>-.01 && temp.c<.01 ) first->nextcp.x = first->me.x; + if ( (temp.b+temp.c)>-.01 && (temp.b+temp.c)<.01 ) end->prevcp.x = end->me.x; + + temp.b = (s->splines[1].b + 3*s->splines[1].a*firstt) *f*f; + temp.c = (s->splines[1].c + 2*s->splines[1].b*firstt + 3*s->splines[1].a*firstt*firstt) * f; + first->nextcp.y = first->me.y + temp.c/3; + end->prevcp.y = first->nextcp.y + (temp.b+temp.c)/3; + if ( temp.c>-.01 && temp.c<.01 ) first->nextcp.y = first->me.y; + if ( (temp.b+temp.c)>-.01 && (temp.b+temp.c)<.01 ) end->prevcp.y = end->me.y; + first->nonextcp = false; end->noprevcp = false; + SplineMake3(first,end); + if ( SplineIsLinear(first->next)) { + first->nextcp = first->me; + end->prevcp = end->me; + first->nonextcp = end->noprevcp = true; + SplineRefigure(first->next); + } +} + +static Intersection *MonoFollow(Intersection *curil, Monotonic *m) { + Monotonic *mstart=m; + + if ( m->start==curil ) { + while ( m!=NULL && m->end==NULL ) { + m=m->next; + if ( m==mstart ) + break; + } + if ( m==NULL ) +return( NULL ); + +return( m->end ); + } else { + while ( m!=NULL && m->start==NULL ) { + m=m->prev; + if ( m==mstart ) + break; + } + if ( m==NULL ) +return( NULL ); + +return( m->start ); + } +} + +static int MonoGoesSomewhereUseful(Intersection *curil, Monotonic *m) { + Intersection *nextil = MonoFollow(curil,m); + MList *ml; + int cnt; + + if ( nextil==NULL ) +return( false ); + cnt = 0; + for ( ml=nextil->monos; ml!=NULL ; ml=ml->next ) + if ( ml->m->isneeded ) + ++cnt; + if ( cnt>=2 ) /* One for the mono that one in, one for another going out... */ +return( true ); + +return( false ); +} + +static MList *FindMLOfM(Intersection *curil,Monotonic *finalm) { + MList *ml; + + for ( ml=curil->monos; ml!=NULL; ml=ml->next ) { + if ( ml->m==finalm ) +return( ml ); + } +return( NULL ); +} + +static SplinePoint *MonoFollowForward(Intersection **curil, MList *ml, + SplinePoint *last, Monotonic **finalm) { + SplinePoint *mid; + Monotonic *m = ml->m, *mstart; + + forever { + for ( mstart = m; m->s==mstart->s; m=m->next) { + if ( !m->isneeded ) + SOError( "Expected needed monotonic.\n" ); + m->isneeded = false; /* Mark as used */ + if ( m->end!=NULL ) + break; + } + if ( m->s==mstart->s ) { + if ( m->end==NULL ) SOError( "Invariant condition does not hold.\n" ); + mid = SplinePointCreate(m->end->inter.x,m->end->inter.y); + } else { + m = m->prev; + mid = SplinePointCreate(m->s->to->me.x,m->s->to->me.y); + } + if ( mstart->tstart==0 && m->tend==1.0 ) { + /* I check for this special case to avoid rounding errors */ + last->nextcp = m->s->from->nextcp; + last->nonextcp = m->s->from->nonextcp; + mid->prevcp = m->s->to->prevcp; + mid->noprevcp = m->s->to->noprevcp; + SplineMake3(last,mid); + } else { + MonoFigure(m->s,mstart->tstart,m->tend,last,mid); + } + last = mid; + if ( m->end!=NULL ) { + *curil = m->end; + *finalm = m; +return( last ); + } + m = m->next; + } +} + +static SplinePoint *MonoFollowBackward(Intersection **curil, MList *ml, + SplinePoint *last, Monotonic **finalm) { + SplinePoint *mid; + Monotonic *m = ml->m, *mstart; + + forever { + for ( mstart=m; m->s==mstart->s; m=m->prev) { + if ( !m->isneeded ) + SOError( "Expected needed monotonic.\n" ); + m->isneeded = false; /* Mark as used */ + if ( m->start!=NULL ) + break; + } + if ( m->s==mstart->s ) { + if ( m->start==NULL ) SOError( "Invariant condition does not hold.\n" ); + mid = SplinePointCreate(m->start->inter.x,m->start->inter.y); + } else { + m = m->next; + mid = SplinePointCreate(m->s->from->me.x,m->s->from->me.y); + } + if ( m->s->knownlinear ) mid->pointtype = pt_corner; + if ( mstart->tend==1.0 && m->tstart==0 ) { + /* I check for this special case to avoid rounding errors */ + last->nextcp = m->s->to->prevcp; + last->nonextcp = m->s->to->noprevcp; + mid->prevcp = m->s->from->nextcp; + mid->noprevcp = m->s->from->nonextcp; + SplineMake3(last,mid); + } else { + MonoFigure(m->s,mstart->tend,m->tstart,last,mid); + } + last = mid; + if ( m->start!=NULL ) { + *curil = m->start; + *finalm = m; +return( last ); + } + m = m->prev; + } +} + +static SplineSet *JoinAContour(Intersection *startil,MList *ml) { + SplineSet *ss = chunkalloc(sizeof(SplineSet)); + SplinePoint *last; + Intersection *curil; + int allexclude = ml->m->exclude; + Monotonic *finalm; + MList *lastml; + + ss->first = last = SplinePointCreate(startil->inter.x,startil->inter.y); + curil = startil; + forever { + if ( allexclude && !ml->m->exclude ) allexclude = false; + finalm = NULL; + if ( ml->m->start==curil ) { + last = MonoFollowForward(&curil,ml,last,&finalm); + } else if ( ml->m->end==curil ) { + last = MonoFollowBackward(&curil,ml,last,&finalm); + } else { + SOError( "Couldn't find endpoint (%g,%g).\n", + curil->inter.x, curil->inter.y ); + ml->m->isneeded = false; /* Prevent infinite loops */ + ss->last = last; + break; + } + if ( curil==startil ) { + ss->first->prev = last->prev; + ss->first->prevcp = last->prevcp; + ss->first->noprevcp = last->noprevcp; + last->prev->to = ss->first; + SplinePointFree(last); + ss->last = ss->first; + break; + } + lastml = FindMLOfM(curil,finalm); + if ( lastml==NULL ) { + IError("Could not find finalm"); + /* Try to preserve direction */ + for ( ml=curil->monos; ml!=NULL && (!ml->m->isneeded || ml->m->end==curil); ml=ml->next ); + if ( ml==NULL ) + for ( ml=curil->monos; ml!=NULL && !ml->m->isneeded; ml=ml->next ); + } else { + int k; MList *bestml; double bestdot; + for ( k=0; k<2; ++k ) { + bestml = NULL; bestdot = -2; + for ( ml=curil->monos; ml!=NULL ; ml=ml->next ) { + if ( ml->m->isneeded && (ml->m->start==curil || k) ) { + double dot = lastml->unit.x*ml->unit.x + lastml->unit.y*ml->unit.y; + if ( dot>bestdot ) { + bestml = ml; + bestdot = dot; + } + } + } + if ( bestml!=NULL ) + break; + } + ml = bestml; + } + if ( ml==NULL ) { + for ( ml=curil->monos; ml!=NULL ; ml=ml->next ) + if ( ml->m->isunneeded && ml->m->start==curil && + MonoFollow(curil,ml->m)==startil ) + break; + if ( ml==NULL ) + for ( ml=curil->monos; ml!=NULL ; ml=ml->next ) + if ( ml->m->isunneeded && ml->m->end==curil && + MonoFollow(curil,ml->m)==startil ) + break; + if ( ml!=NULL ) { + SOError("Closing contour with unneeded path\n" ); + ml->m->isneeded = true; + } + } + if ( ml==NULL ) { + SOError( "couldn't find a needed exit from an intersection\n" ); + ss->last = last; + break; + } + } + SPLCatagorizePoints(ss); + if ( allexclude && SplinePointListIsClockwise(ss)) + SplineSetReverse(ss); +return( ss ); +} + +static SplineSet *FindMatchingContour(SplineSet *head,SplineSet *cur) { + SplineSet *test; + + for ( test=head; test!=NULL; test=test->next ) { + if ( test->first->prev==NULL && + test->first->me.x==cur->last->me.x && test->first->me.y==cur->last->me.y && + test->last->me.x==cur->first->me.x && test->last->me.y==cur->first->me.y ) + break; + } + if ( test==NULL ) { + for ( test=head; test!=NULL; test=test->next ) { + if ( test->first->prev==NULL && + test->last->me.x==cur->last->me.x && test->last->me.y==cur->last->me.y && + test->first->me.x==cur->first->me.x && test->first->me.y==cur->first->me.y ) { + SplineSetReverse(cur); + break; + } + } + } + if ( test==NULL ) { + for ( test=head; test!=NULL; test=test->next ) { + if ( test->first->prev==NULL && + ((test->first->me.x==cur->last->me.x && test->first->me.y==cur->last->me.y) || + (test->last->me.x==cur->first->me.x && test->last->me.y==cur->first->me.y ))) + break; + } + } + if ( test==NULL ) { + for ( test=head; test!=NULL; test=test->next ) { + if ( test->first->prev==NULL && + ((test->last->me.x==cur->last->me.x && test->last->me.y==cur->last->me.y) || + (test->first->me.x==cur->first->me.x && test->first->me.y==cur->first->me.y ))) { + SplineSetReverse(cur); + break; + } + } + } +return( test ); +} + +static SplineSet *JoinAllNeeded(Intersection *ilist) { + Intersection *il; + SplineSet *head=NULL, *last=NULL, *cur, *test; + MList *ml; + + for ( il=ilist; il!=NULL; il=il->next ) { + /* Try to preserve direction */ + forever { + for ( ml=il->monos; ml!=NULL && (!ml->m->isneeded || ml->m->end==il); ml=ml->next ); + if ( ml==NULL ) + for ( ml=il->monos; ml!=NULL && !ml->m->isneeded; ml=ml->next ); + if ( ml==NULL ) + break; + if ( !MonoGoesSomewhereUseful(il,ml->m)) { + SOError("Humph. This monotonic leads nowhere.\n" ); + /* break; */ + } + cur = JoinAContour(il,ml); + if ( head==NULL ) + head = cur; + else { + if ( cur->first->prev==NULL ) { + /* Open contours are errors. See if we had an earlier error */ + /* to which we can join this */ + test = FindMatchingContour(head,cur); + if ( test!=NULL ) { + if ( test->first->me.x==cur->last->me.x && test->first->me.y==cur->last->me.y ) { + test->first->prev = cur->last->prev; + cur->last->prev->to = test->first; + SplinePointFree(cur->last); + if ( test->last->me.x==cur->first->me.x && test->last->me.y==cur->first->me.y ) { + test->last->next = cur->first->next; + cur->first->next->from = test->last; + SplinePointFree(cur->first); + test->last = test->first; + } else + test->first = cur->first; + } else { + if ( test->last->me.x!=cur->first->me.x || test->last->me.y!=cur->first->me.y ) + SOError( "Join failed"); + else { + test->last->next = cur->first->next; + cur->first->next->from = test->last; + SplinePointFree(cur->first); + test->last = test->first; + } + } + cur->first = cur->last = NULL; + SplinePointListFree(cur); + cur=NULL; + } + } + if ( cur!=NULL ) + last->next = cur; + } + if ( cur!=NULL ) + last = cur; + } + } +return( head ); +} + +static SplineSet *MergeOpenAndFreeClosed(SplineSet *new,SplineSet *old, + enum overlap_type ot) { + SplineSet *next; + + while ( old!=NULL ) { + next = old->next; + if ( old->first->prev==NULL || + (( ot==over_rmselected || ot==over_intersel || ot==over_fisel) && + !SSIsSelected(old)) ) { + old->next = new; + new = old; + } else { + old->next = NULL; + SplinePointListFree(old); + } + old = next; + } +return(new); +} + +static void FreeMonotonics(Monotonic *m) { + Monotonic *next; + + while ( m!=NULL ) { + next = m->linked; + chunkfree(m,sizeof(*m)); + m = next; + } +} + +static void FreeMList(MList *ml) { + MList *next; + + while ( ml!=NULL ) { + next = ml->next; + chunkfree(ml,sizeof(*ml)); + ml = next; + } +} + +static void FreeIntersections(Intersection *ilist) { + Intersection *next; + + while ( ilist!=NULL ) { + next = ilist->next; + FreeMList(ilist->monos); + chunkfree(ilist,sizeof(*ilist)); + ilist = next; + } +} + +static void MonoSplit(Monotonic *m) { + Spline *s = m->s; + SplinePoint *last = s->from; + SplinePoint *final = s->to; + extended lastt = 0; + + last->next = NULL; + final->prev = NULL; + while ( m!=NULL && m->s==s && m->tend<1 ) { + if ( m->end!=NULL ) { + SplinePoint *mid = SplinePointCreate(m->end->inter.x,m->end->inter.y); + if ( m->s->knownlinear ) mid->pointtype = pt_corner; + MonoFigure(s,lastt,m->tend,last,mid); + lastt = m->tend; + last = mid; + } + m = m->linked; + } + MonoFigure(s,lastt,1.0,last,final); + SplineFree(s); +} + +static void FixupIntersectedSplines(Monotonic *ms) { + /* If all we want is intersections, then the contours are already correct */ + /* all we need to do is run through the Monotonic list and when we find */ + /* an intersection, make sure it has real splines around it */ + Monotonic *m; + int needs_split; + + while ( ms!=NULL ) { + needs_split = false; + for ( m=ms; m!=NULL && m->s==ms->s; m=m->linked ) { + if ( (m->tstart!=0 && m->start!=NULL) || (m->tend!=1 && m->end!=NULL)) + needs_split = true; + } + if ( needs_split ) + MonoSplit(ms); + ms = m; + } +} + +static int BpClose(BasePoint *here, BasePoint *there, double error) { + extended dx, dy; + + if ( (dx = here->x-there->x)<0 ) dx= -dx; + if ( (dy = here->y-there->y)<0 ) dy= -dy; + if ( dxerror ) error = test; + if ( (test = b.maxy)<0 ) test = -test; + if ( test>error ) error = test; + if ( (test = b.maxx)<0 ) test = -test; + if ( test>error ) error = test; + error /= 30000; + + while ( base!=NULL ) { + ssnext = base->next; + for ( sp=base->first; ; ) { + if ( sp->next==NULL ) + break; + nsp = sp->next->to; + if ( BpClose(&sp->me,&nsp->me,error) ) { + if ( BpClose(&sp->me,&sp->nextcp,2*error) && + BpClose(&nsp->me,&nsp->prevcp,2*error)) { + /* Remove the spline */ + if ( nsp==sp ) { + /* Only this spline in the contour, so remove the contour */ + base->next = NULL; + SplinePointListFree(base); + if ( prev==NULL ) + head = ssnext; + else + prev->next = ssnext; + base = NULL; + break; + } + SplineFree(sp->next); + if ( nsp->nonextcp ) { + sp->nextcp = sp->me; + sp->nonextcp = true; + } else { + sp->nextcp = nsp->nextcp; + sp->nonextcp = false; + } + sp->nextcpdef = nsp->nextcpdef; + sp->next = nsp->next; + if ( nsp->next!=NULL ) { + nsp->next->from = sp; + SplineRefigure(sp->next); + } + if ( nsp==base->last ) + base->last = sp; + if ( nsp==base->first ) + base->first = sp; + SplinePointFree(nsp); + if ( sp->next==NULL ) + break; + nsp = sp->next->to; + } else { + /* Leave the spline, but move the two points together */ + BasePoint new; + new.x = (sp->me.x+nsp->me.x)/2; + new.y = (sp->me.y+nsp->me.y)/2; + dx = new.x-sp->me.x; dy = new.y-sp->me.y; + sp->me = new; + sp->nextcp.x += dx; sp->nextcp.y += dy; + sp->prevcp.x += dx; sp->prevcp.y += dy; + dx = new.x-nsp->me.x; dy = new.y-nsp->me.y; + nsp->me = new; + nsp->nextcp.x += dx; nsp->nextcp.y += dy; + nsp->prevcp.x += dx; nsp->prevcp.y += dy; + SplineRefigure(sp->next); + if ( sp->prev ) SplineRefigure(sp->prev); + if ( nsp->next ) SplineRefigure(nsp->next); + } + } + sp = nsp; + if ( sp==base->first ) + break; + } + if ( sp->prev!=NULL && !sp->noprevcp ) { + int refigure = false; + if ( sp->me.x-sp->prevcp.x>-error && sp->me.x-sp->prevcp.xprevcp.x = sp->me.x; + refigure = true; + } + if ( sp->me.y-sp->prevcp.y>-error && sp->me.y-sp->prevcp.yprevcp.y = sp->me.y; + refigure = true; + } + if ( sp->me.x==sp->prevcp.x && sp->me.y==sp->prevcp.y ) + sp->noprevcp = true; + if ( refigure ) + SplineRefigure(sp->prev); + } + if ( sp->next!=NULL && !sp->nonextcp ) { + int refigure = false; + if ( sp->me.x-sp->nextcp.x>-error && sp->me.x-sp->nextcp.xnextcp.x = sp->me.x; + refigure = true; + } + if ( sp->me.y-sp->nextcp.y>-error && sp->me.y-sp->nextcp.ynextcp.y = sp->me.y; + refigure = true; + } + if ( sp->me.x==sp->nextcp.x && sp->me.y==sp->nextcp.y ) + sp->nonextcp = true; + if ( refigure ) + SplineRefigure(sp->next); + } + if ( base!=NULL ) + prev = base; + base = ssnext; + } + +return( head ); +} + +static void RemoveNextSP(SplinePoint *psp,SplinePoint *sp,SplinePoint *nsp, + SplineSet *base) { + if ( psp==nsp ) { + SplineFree(psp->next); + psp->next = psp->prev; + psp->next->from = psp; + SplinePointFree(sp); + SplineRefigure(psp->prev); + } else { + psp->next = nsp->next; + psp->next->from = psp; + psp->nextcp = nsp->nextcp; + psp->nonextcp = nsp->nonextcp; + psp->nextcpdef = nsp->nextcpdef; + SplineFree(sp->prev); + SplineFree(sp->next); + SplinePointFree(sp); + SplinePointFree(nsp); + SplineRefigure(psp->next); + } + if ( base->first==sp || base->first==nsp ) + base->first = psp; + if ( base->last==sp || base->last==nsp ) + base->last = psp; +} + +static void RemovePrevSP(SplinePoint *psp,SplinePoint *sp,SplinePoint *nsp, + SplineSet *base) { + if ( psp==nsp ) { + SplineFree(nsp->prev); + nsp->prev = nsp->next; + nsp->prev->to = nsp; + SplinePointFree(sp); + SplineRefigure(nsp->next); + } else { + nsp->prev = psp->prev; + nsp->prev->to = nsp; + nsp->prevcp = nsp->me; + nsp->noprevcp = true; + nsp->prevcpdef = psp->prevcpdef; + SplineFree(sp->prev); + SplineFree(sp->next); + SplinePointFree(sp); + SplinePointFree(psp); + SplineRefigure(nsp->prev); + } + if ( base->first==sp || base->first==psp ) + base->first = nsp; + if ( base->last==sp || base->last==psp ) + base->last = nsp; +} + +static SplinePoint *SameLine(SplinePoint *psp, SplinePoint *sp, SplinePoint *nsp) { + BasePoint noff, poff; + real nlen, plen, normal; + + noff.x = nsp->me.x-sp->me.x; noff.y = nsp->me.y-sp->me.y; + poff.x = psp->me.x-sp->me.x; poff.y = psp->me.y-sp->me.y; + nlen = esqrt(noff.x*noff.x + noff.y*noff.y); + plen = esqrt(poff.x*poff.x + poff.y*poff.y); + if ( nlen==0 ) +return( nsp ); + if ( plen==0 ) +return( psp ); + normal = (noff.x*poff.y - noff.y*poff.x)/nlen/plen; + if ( normal<-.0001 || normal>.0001 ) +return( NULL ); + + if ( noff.x*poff.x < 0 || noff.y*poff.y < 0 ) +return( NULL ); /* Same line, but different directions */ + if ( (noff.x>0 && noff.x>poff.x) || + (noff.x<0 && noff.x0 && noff.y>poff.y) || + (noff.y<0 && noff.yto->me.x-s2->from->me.x)<0 ) xoff = -xoff; + if ( (yoff = s2->to->me.y-s2->from->me.y)<0 ) yoff = -yoff; + if ( xoff>yoff ) + SplineFindExtrema(&s1->splines[0],&ts[0],&ts[1]); + else + SplineFindExtrema(&s1->splines[1],&ts[0],&ts[1]); + if ( s2forward ) { + t = 0; + tdiff = 1/16.0; + t1end = 1; + for ( i=1; i>=0 && ts[i]==-1; --i ); + t1start = i<0 ? 0 : ts[i]; + } else { + t = 1; + tdiff = -1/16.0; + t1start = 0; + t1end = ( ts[0]==-1 ) ? 1.0 : ts[0]; + } + + for ( ; (s2forward && t<=1) || (!s2forward && t>=0 ); t += tdiff ) { + double x1, y1, xo, yo; + double x = ((s2->splines[0].a*t+s2->splines[0].b)*t+s2->splines[0].c)*t+s2->splines[0].d; + double y = ((s2->splines[1].a*t+s2->splines[1].b)*t+s2->splines[1].c)*t+s2->splines[1].d; + if ( xoff>yoff ) + t1 = IterateSplineSolve(&s1->splines[0],t1start,t1end,x,.001); + else + t1 = IterateSplineSolve(&s1->splines[1],t1start,t1end,y,.001); + if ( t1<0 || t1>1 ) +return( -1 ); + x1 = ((s1->splines[0].a*t1+s1->splines[0].b)*t1+s1->splines[0].c)*t1+s1->splines[0].d; + y1 = ((s1->splines[1].a*t1+s1->splines[1].b)*t1+s1->splines[1].c)*t1+s1->splines[1].d; + if ( (xo = (x-x1))<0 ) xo = -xo; + if ( (yo = (y-y1))<0 ) yo = -yo; + if ( xo+yo>.5 ) +return( -1 ); + } +return( t1 ); +} + +static void SSRemoveBacktracks(SplineSet *ss) { + SplinePoint *sp; + + if ( ss==NULL ) +return; + for ( sp=ss->first; ; ) { + if ( sp->next!=NULL && sp->prev!=NULL ) { + SplinePoint *nsp = sp->next->to, *psp = sp->prev->from, *isp; + BasePoint ndir, pdir; + double dot, pdot, nlen, plen, t = -1; + + ndir.x = (nsp->me.x - sp->me.x); ndir.y = (nsp->me.y - sp->me.y); + pdir.x = (psp->me.x - sp->me.x); pdir.y = (psp->me.y - sp->me.y); + nlen = ndir.x*ndir.x + ndir.y*ndir.y; plen = pdir.x*pdir.x + pdir.y*pdir.y; + dot = ndir.x*pdir.x + ndir.y*pdir.y; + if ( (pdot = ndir.x*pdir.y - ndir.y*pdir.x)<0 ) pdot = -pdot; + if ( dot>0 && dot>pdot ) { + if ( nlen>plen && (t=AdjacentSplinesMatch(sp->next,sp->prev,false))!=-1 ) { + isp = SplineBisect(sp->next,t); + psp->nextcp.x = psp->me.x + (isp->nextcp.x-isp->me.x); + psp->nextcp.y = psp->me.y + (isp->nextcp.y-isp->me.y); + psp->nonextcp = isp->nonextcp; + psp->next = isp->next; + isp->next->from = psp; + SplineFree(isp->prev); + SplineFree(sp->prev); + SplinePointFree(isp); + SplinePointFree(sp); + if ( psp->next->order2 ) { + psp->nextcp.x = nsp->prevcp.x = (psp->nextcp.x+nsp->prevcp.x)/2; + psp->nextcp.y = nsp->prevcp.y = (psp->nextcp.y+nsp->prevcp.y)/2; + if ( psp->nonextcp || nsp->noprevcp ) + psp->nonextcp = nsp->noprevcp = true; + } + SplineRefigure(psp->next); + if ( ss->first==sp ) + ss->first = psp; + if ( ss->last==sp ) + ss->last = psp; + sp=psp; + } else if ( nlenprev,sp->next,true))!=-1 ) { + isp = SplineBisect(sp->prev,t); + nsp->prevcp.x = nsp->me.x + (isp->prevcp.x-isp->me.x); + nsp->prevcp.y = nsp->me.y + (isp->prevcp.y-isp->me.y); + nsp->noprevcp = isp->noprevcp; + nsp->prev = isp->prev; + isp->prev->to = nsp; + SplineFree(isp->next); + SplineFree(sp->next); + SplinePointFree(isp); + SplinePointFree(sp); + if ( psp->next->order2 ) { + psp->nextcp.x = nsp->prevcp.x = (psp->nextcp.x+nsp->prevcp.x)/2; + psp->nextcp.y = nsp->prevcp.y = (psp->nextcp.y+nsp->prevcp.y)/2; + if ( psp->nonextcp || nsp->noprevcp ) + psp->nonextcp = nsp->noprevcp = true; + } + SplineRefigure(nsp->prev); + if ( ss->first==sp ) + ss->first = psp; + if ( ss->last==sp ) + ss->last = psp; + sp=psp; + } + } + } + if ( sp->next==NULL ) + break; + sp=sp->next->to; + if ( sp==ss->first ) + break; + } +} + +/* If we have a contour with no width, say a line from A to B and then from B */ +/* to A, then it will be ambiguous, depending on how we hit the contour, as */ +/* to whether it is needed or not. Which will cause us to complain. Since */ +/* they contain no area, they achieve nothing, so we might as well say they */ +/* overlap themselves and remove them here */ +static SplineSet *SSRemoveReversals(SplineSet *base) { + SplineSet *head = base, *prev=NULL, *next; + SplinePoint *sp; + int changed; + + while ( base!=NULL ) { + next = base->next; + changed = true; + while ( changed ) { + changed = false; + if ( base->first->next==NULL || + (base->first->next->to==base->first && + base->first->nextcp.x==base->first->prevcp.x && + base->first->nextcp.y==base->first->prevcp.y)) { + /* remove single points */ + if ( prev==NULL ) + head = next; + else + prev->next = next; + base->next = NULL; + SplinePointListFree(base); + base = prev; + break; + } + for ( sp=base->first; ; ) { + if ( sp->next!=NULL && sp->prev!=NULL && + sp->nextcp.x==sp->prevcp.x && sp->nextcp.y==sp->prevcp.y ) { + SplinePoint *nsp = sp->next->to, *psp = sp->prev->from, *isp; + if ( psp->me.x==nsp->me.x && psp->me.y==nsp->me.y && + psp->nextcp.x==nsp->prevcp.x && psp->nextcp.y==nsp->prevcp.y ) { + /* We wish to remove sp, sp->next, sp->prev & one of nsp/psp */ + RemoveNextSP(psp,sp,nsp,base); + changed = true; + break; + } else if ( sp->nonextcp /* which implies sp->noprevcp */ && + psp->nonextcp && nsp->noprevcp && + (isp = SameLine(psp,sp,nsp))!=NULL ) { + /* We have a line that backtracks, but doesn't cover */ + /* the entire spline, so we intersect */ + /* We want to remove sp, the shorter of sp->next, sp->prev */ + /* and a bit of the other one. Also reomve one of nsp,psp */ + if ( isp==psp ) { + RemoveNextSP(psp,sp,nsp,base); + psp->nextcp = psp->me; + psp->nonextcp = true; + } else { + RemovePrevSP(psp,sp,nsp,base); + } + changed = true; + break; + } + } + if ( sp->next==NULL ) + break; + sp = sp->next->to; + if ( sp==base->first ) + break; + } + } + SSRemoveBacktracks(base); + prev = base; + base = next; + } +return( head ); +} + +SplineSet *SplineSetRemoveOverlap(SplineChar *sc, SplineSet *base,enum overlap_type ot) { + Monotonic *ms; + Intersection *ilist; + SplineSet *ret; + SplineSet *order3 = NULL; + int is_o2 = false; + SplineSet *ss; + + for ( ss=base; ss!=NULL; ss=ss->next ) + if ( ss->first->next!=NULL ) { + is_o2 = ss->first->next->order2; + break; + } + if ( is_o2 ) { + order3 = SplineSetsPSApprox(base); + SplinePointListsFree(base); + base = order3; + } + + if ( sc!=NULL ) + glyphname = sc->name; + + base = SSRemoveTiny(base); + SSRemoveStupidControlPoints(base); + SplineSetsRemoveAnnoyingExtrema(base,.3); + SSOverlapClusterCpAngles(base,.01); + base = SSRemoveReversals(base); + ms = SSsToMContours(base,ot); + ilist = FindIntersections(ms,ot); + Validate(ms,ilist); + if ( ot==over_findinter || ot==over_fisel ) { + FixupIntersectedSplines(ms); + ret = base; + } else { + FindNeeded(ms,ot); + FindUnitVectors(ilist); + if ( ot==over_remove || ot == over_rmselected ) + TestForBadDirections(ilist); + ret = JoinAllNeeded(ilist); + ret = MergeOpenAndFreeClosed(ret,base,ot); + } + FreeMonotonics(ms); + FreeIntersections(ilist); + glyphname = NULL; + if ( order3!=NULL ) { + ss = SplineSetsTTFApprox(ret); + SplinePointListsFree(ret); + ret = ss; + } +return( ret ); +} diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/splinerefigure.c b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/splinerefigure.c new file mode 100644 index 00000000000..b651a241960 --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/splinerefigure.c @@ -0,0 +1,101 @@ +/* Copyright (C) 2000-2008 by George Williams */ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "pfaedit.h" +#include +#include +#include "splinefont.h" +#ifdef HAVE_IEEEFP_H +# include /* Solaris defines isnan in ieeefp rather than math.h */ +#endif + +/* The slight errors introduced by the optimizer turn out to have nasty */ +/* side effects. An error on the order of 7e-8 in splines[1].b caused */ +/* the rasterizer to have kaniptions */ +void SplineRefigure3(Spline *spline) { + SplinePoint *from = spline->from, *to = spline->to; + Spline1D *xsp = &spline->splines[0], *ysp = &spline->splines[1]; + Spline old; + +#ifdef DEBUG + if ( RealNear(from->me.x,to->me.x) && RealNear(from->me.y,to->me.y)) + IError("Zero length spline created"); +#endif + if ( spline->acceptableextrema ) + old = *spline; + xsp->d = from->me.x; ysp->d = from->me.y; + if ( from->nonextcp ) from->nextcp = from->me; + else if ( from->nextcp.x==from->me.x && from->nextcp.y == from->me.y ) from->nonextcp = true; + if ( to->noprevcp ) to->prevcp = to->me; + else if ( to->prevcp.x==to->me.x && to->prevcp.y == to->me.y ) to->noprevcp = true; + if ( from->nonextcp && to->noprevcp ) { + spline->islinear = true; + xsp->c = to->me.x-from->me.x; + ysp->c = to->me.y-from->me.y; + xsp->a = xsp->b = 0; + ysp->a = ysp->b = 0; + } else { + /* from p. 393 (Operator Details, curveto) Postscript Lang. Ref. Man. (Red book) */ + xsp->c = 3*(from->nextcp.x-from->me.x); + ysp->c = 3*(from->nextcp.y-from->me.y); + xsp->b = 3*(to->prevcp.x-from->nextcp.x)-xsp->c; + ysp->b = 3*(to->prevcp.y-from->nextcp.y)-ysp->c; + xsp->a = to->me.x-from->me.x-xsp->c-xsp->b; + ysp->a = to->me.y-from->me.y-ysp->c-ysp->b; + if ( RealNear(xsp->c,0)) xsp->c=0; + if ( RealNear(ysp->c,0)) ysp->c=0; + if ( RealNear(xsp->b,0)) xsp->b=0; + if ( RealNear(ysp->b,0)) ysp->b=0; + if ( RealNear(xsp->a,0)) xsp->a=0; + if ( RealNear(ysp->a,0)) ysp->a=0; + spline->islinear = false; + if ( ysp->a==0 && xsp->a==0 && ysp->b==0 && xsp->b==0 ) + spline->islinear = true; /* This seems extremely unlikely... */ + } + if ( !finite(ysp->a) || !finite(xsp->a) || !finite(ysp->c) || !finite(xsp->c) || !finite(ysp->d) || !finite(xsp->d)) + IError("NaN value in spline creation"); + LinearApproxFree(spline->approx); + spline->approx = NULL; + spline->knowncurved = false; + spline->knownlinear = spline->islinear; + SplineIsLinear(spline); + spline->isquadratic = false; + if ( !spline->knownlinear && xsp->a==0 && ysp->a==0 ) + spline->isquadratic = true; /* Only likely if we read in a TTF */ + spline->order2 = false; + + if ( spline->acceptableextrema ) { + /* I don't check "d", because changes to that reflect simple */ + /* translations which will not affect the shape of the spline */ + if ( !RealNear(old.splines[0].a,spline->splines[0].a) || + !RealNear(old.splines[0].b,spline->splines[0].b) || + !RealNear(old.splines[0].c,spline->splines[0].c) || + !RealNear(old.splines[1].a,spline->splines[1].a) || + !RealNear(old.splines[1].b,spline->splines[1].b) || + !RealNear(old.splines[1].c,spline->splines[1].c) ) + spline->acceptableextrema = false; + } +} diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/splinesave.c b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/splinesave.c new file mode 100644 index 00000000000..91e14934ad2 --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/splinesave.c @@ -0,0 +1,3121 @@ +/* Copyright (C) 2000-2008 by George Williams */ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "pfaedit.h" +#include +#include +#include "splinefont.h" +#include "psfont.h" +#include +#include +#include +#include + +int autohint_before_generate = 1; + +/* Let's talk about references. */ +/* If we are doing Type1 output, then the obvious way of doing them is seac */ +/* but that's so limitting. It only works for exactly two characters both */ +/* of which are in Adobe's Standard Enc. Only translations allowed. Only */ +/* one reference may be translated and the width of the char must match */ +/* that of the non-translated reference */ +/* The first extension we can make is to allow a single character reference */ +/* by making the other character be a space */ +/* But if we want to do more than that we must use subrs. If we have two */ +/* refs in subrs then we can do translations by preceding the subr calls by */ +/* appropriate rmovetos. Actually the specs say that only one rmoveto should */ +/* precede a path, so that means we can't allow the subroutines to position */ +/* themselves, they must just assume that they are called with the current */ +/* position correct for the first point. But then we need to know where the */ +/* first point should be placed, so we allocate a BasePoint to hold that info*/ +/* and store it into the "keys" array (which the subrs don't use). Similarly */ +/* we need to know where the subr will leave us, so we actually allocate 2 */ +/* BasePoints, one containing the start point, one the end point */ +/* But that's still not good enough, hints are defined in such a way that */ +/* they are not relocateable. So our subrs can't include any hint definitions*/ +/* (or if they do then that subr can't be translated at all). So hints must */ +/* be set outside the subrs, and the subrs can't be for chars that need hint */ +/* substitution. Unless... The subr will never be relocated. */ +/* So we generate two types of reference subrs, one containing no hints, the*/ +/* other containing all the hints, stems and flexes. The first type may be */ +/* translated, the second cannot */ +/* Type2 doesn't allow any seacs */ +/* So everything must go in subrs. We have a slightly different problem here:*/ +/* hintmasks need to know exactly how many stem hints there are in the char */ +/* so we can't include any hintmask operators inside a subr (unless we */ +/* guarantee that all invocations of that subr are done with the same number */ +/* of hints in the character). This again means that no char with hint subs- */ +/* titutions may be put in a subr. UNLESS all the other references in a */ +/* refering character contain no hints */ + +/* That's very complex. And it doesn't do a very good job. */ +/* Instead let's take all strings bounded by either moveto or hintmask operators */ +/* store these as potential subroutines. So a glyph becomes a sequence of */ +/* potential subroutine calls preceded by the glyph header (width, hint decl,*/ +/* counter declarations, etc.) and intersperced by hintmask/moveto operators */ +/* Each time we get a potential subr we hash it and see if we've used that */ +/* string before. If we have then we merge the two. Otherwise it's a new one.*/ +/* Then at the end we see what strings get used often enough to go into subrs */ +/* we create the subrs array from that. */ +/* Then each glyph. We insert the preamble. We check of the potential subroutine */ +/* became a real subroutine. If so we call it, else we insert the data inline*/ +/* Do the same for the next hintmask/moveto and potential subroutine... */ + +/* Then, on top of that I tried generating some full glyph subroutines, and */ +/* to my surprise, it just made things worse. */ + +typedef struct growbuf { + unsigned char *pt; + unsigned char *base; + unsigned char *end; +} GrowBuf; + +#define HSH_SIZE 511 +/* In type2 charstrings we divide every character into bits where a bit is */ +/* bounded by a hintmask/moveto. Each of these is a potential subroutine and */ +/* is stored here */ +typedef struct glyphinfo { + struct potentialsubrs { + uint8 *data; /* the charstring of the subr */ + int len; /* the length of the charstring */ + int idx; /* initially index into psubrs array */ + /* then index into subrs array or -1 if none */ + int cnt; /* the usage count */ + int fd; /* Which sub font is it in */ + /* -1 => used in more than one */ + int next; + int full_glyph_index; /* Into the glyphbits array */ + /* for full references */ + BasePoint *startstop; /* Again for full references */ + } *psubrs; + int pcnt, pmax; + int hashed[HSH_SIZE]; + struct glyphbits { + SplineChar *sc; + int fd; /* Which subfont is it in */ + int bcnt; + struct bits { + uint8 *data; + int dlen; + int psub_index; + } *bits; + uint8 wasseac; + } *gb, *active; + SplineFont *sf; + int layer; + int glyphcnt; + int subfontcnt; + int bcnt, bmax; + struct bits *bits; /* For current glyph */ + const int *bygid; + int justbroken; + int instance_count; +} GlyphInfo; + +struct mhlist { + uint8 mask[HntMax/8]; + int subr; + struct mhlist *next; +}; + +struct hintdb { + uint8 mask[HntMax/8]; + int cnt; /* number of hints */ + struct mhlist *sublist; + struct pschars *subrs; + /*SplineChar *sc;*/ + SplineChar **scs; + int instance_count; + unsigned int iscjk: 1; /* If cjk then don't do stem3 hints */ + /* Will be done with counters instead */ + /* actually, most of the time we can't use stem3s, only if those three*/ + /* stems are always active and there are no other stems !(h/v)hasoverlap*/ + unsigned int noconflicts: 1; + unsigned int startset: 1; + unsigned int skiphm: 1; /* Set when coming back to the start point of a contour. hintmask should be set the first time, not the second */ + unsigned int donefirsthm: 1; + int cursub; /* Current subr number */ + DBasePoint current; + GlyphInfo *gi; +}; + +static void GIContentsFree(GlyphInfo *gi,SplineChar *dummynotdef) { + int i,j; + + if ( gi->glyphcnt>0 && gi->gb[0].sc == dummynotdef ) { + if ( dummynotdef->layers!=NULL ) { + SplinePointListsFree(dummynotdef->layers[gi->layer].splines); + dummynotdef->layers[gi->layer].splines = NULL; + } + StemInfosFree(dummynotdef->hstem); + StemInfosFree(dummynotdef->vstem); + dummynotdef->vstem = dummynotdef->hstem = NULL; + free(dummynotdef->layers); + dummynotdef->layers = NULL; + } + + for ( i=0; ipcnt; ++i ) { + free(gi->psubrs[i].data); + free(gi->psubrs[i].startstop); + gi->psubrs[i].data = NULL; + gi->psubrs[i].startstop = NULL; + } + for ( i=0; iglyphcnt; ++i ) { + for ( j=0; jgb[i].bcnt; ++j ) + free(gi->gb[i].bits[j].data); + free(gi->gb[i].bits); + gi->gb[i].bits = NULL; + gi->gb[i].bcnt = 0; + } + + gi->pcnt = 0; + gi->bcnt = 0; + gi->justbroken = 0; +} + +static void GIFree(GlyphInfo *gi,SplineChar *dummynotdef) { + + GIContentsFree(gi,dummynotdef); + + free(gi->gb); + free(gi->psubrs); + free(gi->bits); +} + +static void GrowBuffer(GrowBuf *gb) { + if ( gb->base==NULL ) { + gb->base = gb->pt = galloc(200); + gb->end = gb->base + 200; + } else { + int len = (gb->end-gb->base) + 400; + int off = gb->pt-gb->base; + gb->base = grealloc(gb->base,len); + gb->end = gb->base + len; + gb->pt = gb->base+off; + } +} + +static void StartNextSubroutine(GrowBuf *gb,struct hintdb *hdb) { + GlyphInfo *gi; + + if ( hdb==NULL ) +return; + gi = hdb->gi; + if ( gi==NULL ) +return; + /* Store everything in the grow buf into the data/dlen of the next bit */ + if ( gi->bcnt==-1 ) gi->bcnt = 0; + if ( gi->bcnt>=gi->bmax ) + gi->bits = grealloc(gi->bits,(gi->bmax+=20)*sizeof(struct bits)); + gi->bits[gi->bcnt].dlen = gb->pt-gb->base; + gi->bits[gi->bcnt].data = galloc(gi->bits[gi->bcnt].dlen); + gi->bits[gi->bcnt].psub_index = -1; + memcpy(gi->bits[gi->bcnt].data,gb->base,gi->bits[gi->bcnt].dlen); + gb->pt = gb->base; + gi->justbroken = false; +} + +static int hashfunc(uint8 *data, int len) { + uint8 *end = data+len; + unsigned int hash = 0, r; + + while ( data>30)&3; + hash <<= 2; + hash = (hash|r)&0xffffffff; + hash ^= *data++; + } +return( hash%HSH_SIZE ); +} + +static void BreakSubroutine(GrowBuf *gb,struct hintdb *hdb) { + GlyphInfo *gi; + struct potentialsubrs *ps; + int hash; + int pi; + + if ( hdb==NULL ) +return; + gi = hdb->gi; + if ( gi==NULL ) +return; + /* The stuff before the first moveto in a glyph (the header that sets */ + /* the width, sets up the hints, counters, etc.) can't go into a subr */ + if ( gi->bcnt==-1 ) { + gi->bcnt=0; + gi->justbroken = true; +return; + } else if ( gi->justbroken ) +return; + /* Otherwise stuff everything in the growbuffer into a subr */ + hash = hashfunc(gb->base,gb->pt-gb->base); + ps = NULL; + for ( pi=gi->hashed[hash]; pi!=-1; pi=gi->psubrs[pi].next ) { + ps = &gi->psubrs[pi]; + if ( ps->len==gb->pt-gb->base && memcmp(ps->data,gb->base,gb->pt-gb->base)==0 ) + break; + } + if ( pi==-1 ) { + if ( gi->pcnt>=gi->pmax ) + gi->psubrs = grealloc(gi->psubrs,(gi->pmax+=gi->glyphcnt)*sizeof(struct potentialsubrs)); + ps = &gi->psubrs[gi->pcnt]; + memset(ps,0,sizeof(*ps)); /* set cnt to 0 */ + ps->idx = gi->pcnt++; + ps->len = gb->pt-gb->base; + ps->data = galloc(ps->len); + memcpy(ps->data,gb->base,ps->len); + ps->next = gi->hashed[hash]; + gi->hashed[hash] = ps->idx; + ps->fd = gi->active->fd; + ps->full_glyph_index = -1; + } + if ( ps->fd!=gi->active->fd ) + ps->fd = -1; /* used in multiple cid sub-fonts */ + gi->bits[gi->bcnt].psub_index = ps->idx; + ++ps->cnt; + gb->pt = gb->base; + ++gi->bcnt; + gi->justbroken = true; +} + +static void MoveSubrsToChar(GlyphInfo *gi) { + struct glyphbits *active; + + if ( gi==NULL ) +return; + active = gi->active; + active->bcnt = gi->bcnt; + active->bits = galloc(active->bcnt*sizeof(struct bits)); + memcpy(active->bits,gi->bits,active->bcnt*sizeof(struct bits)); + gi->bcnt = 0; +} + +static int NumberHints(SplineChar *scs[MmMax], int instance_count) { + int i,j, cnt=-1; + StemInfo *s; + + for ( j=0; jhstem, i=0; s!=NULL; s=s->next ) { + if ( ihintnumber = i++; + else + s->hintnumber = -1; + } + for ( s=scs[j]->vstem; s!=NULL; s=s->next ) { + if ( ihintnumber = i++; + else + s->hintnumber = -1; + } + if ( cnt==-1 ) + cnt = i; + else if ( cnt!=i ) + IError("MM font with different hint counts"); + } +return( cnt ); +} + +void RefCharsFreeRef(RefChar *ref) { + RefChar *rnext; + + while ( ref!=NULL ) { + rnext = ref->next; + /* don't free the splines */ + chunkfree(ref,sizeof(RefChar)); + ref = rnext; + } +} + +static void MarkTranslationRefs(SplineFont *sf,int layer) { + int i; + SplineChar *sc; + RefChar *r; + + for ( i=0; iglyphcnt; ++i ) if ( (sc = sf->glyphs[i])!=NULL ) { + for ( r = sc->layers[layer].refs; r!=NULL; r=r->next ) + r->justtranslated = (r->transform[0]==1 && r->transform[3]==1 && + r->transform[1]==0 && r->transform[2]==0); + } +} + +/* ************************************************************************** */ +/* ********************** Type1 PostScript CharStrings ********************** */ +/* ************************************************************************** */ + +static real myround( real pos, int round ) { + if ( round ) +return( rint( pos )); + else +return( rint( pos*100. )/100. ); +} + +static void AddNumber(GrowBuf *gb, real pos, int round) { + int dodiv = 0; + int val; + unsigned char *str; + + if ( gb->pt+8>=gb->end ) + GrowBuffer(gb); + + pos = rint(100*pos)/100; + + if ( !round && pos!=floor(pos)) { + pos *= 100; + dodiv = true; + } + str = gb->pt; + val = rint(pos); + if ( pos>=-107 && pos<=107 ) + *str++ = val+139; + else if ( pos>=108 && pos<=1131 ) { + val -= 108; + *str++ = (val>>8)+247; + *str++ = val&0xff; + } else if ( pos>=-1131 && pos<=-108 ) { + val = -val; + val -= 108; + *str++ = (val>>8)+251; + *str++ = val&0xff; + } else { + *str++ = '\377'; + *str++ = (val>>24)&0xff; + *str++ = (val>>16)&0xff; + *str++ = (val>>8)&0xff; + *str++ = val&0xff; + } + if ( dodiv ) { + *str++ = 100+139; /* 100 */ + *str++ = 12; /* div (byte1) */ + *str++ = 12; /* div (byte2) */ + } + gb->pt = str; +} + +/* When doing a multiple master font we have multiple instances of the same data */ +/* which must all be added, and then a call made to the appropriate blend routine */ +/* This is complicated because all the data may not fit on the stack so we */ +/* may need to make multiple calls */ +static void AddData(GrowBuf *gb, real data[MmMax][6], int instances, int num_coords, + int round) { + int allsame = true, alls[6]; + int i,j, chunk,min,max,subr; + + for ( j=0; jnum_coords ) max = num_coords; + while ( max-1>min && alls[max-1] ) + --max; + if ( max-min==5 ) max=min+4; + if ( minpt+1>=gb->end ) + GrowBuffer(gb); + *gb->pt++ = 10; /* callsubr */ + min = j; + } + } +} + +int CvtPsStem3(GrowBuf *gb, SplineChar *scs[MmMax], int instance_count, + int ishstem, int round) { + StemInfo *h1, *h2, *h3; + StemInfo _h1, _h2, _h3; + real data[MmMax][6]; + int i; + real off; + + for ( i=0; ihconflicts) || (!ishstem && scs[i]->vconflicts)) +return( false ); + h1 = ishstem ? scs[i]->hstem : scs[i]->vstem; + if ( h1==NULL || (h2 = h1->next)==NULL || (h3=h2->next)==NULL ) +return( false ); + if ( h3->next!=NULL ) +return( false ); + off = ishstem ? 0 : scs[i]->lsidebearing; + if ( h1->width<0 ) { + _h1 = *h1; + _h1.start += _h1.width; + _h1.width = -_h1.width; + h1 = &_h1; + } + if ( h2->width<0 ) { + _h2 = *h2; + _h2.start += _h2.width; + _h2.width = -_h2.width; + h2 = &_h2; + } + if ( h3->width<0 ) { + _h3 = *h3; + _h3.start += _h3.width; + _h3.width = -_h3.width; + h3 = &_h3; + } + + if ( h1->start>h2->start ) { + StemInfo *ht = h1; h1 = h2; h2 = ht; + } + if ( h1->start>h3->start ) { + StemInfo *ht = h1; h1 = h3; h3 = ht; + } + if ( h2->start>h3->start ) { + StemInfo *ht = h2; h2 = h3; h3 = ht; + } + if ( h1->width != h3->width ) +return( false ); + if ( (h2->start+h2->width/2) - (h1->start+h1->width/2) != + (h3->start+h3->width/2) - (h2->start+h2->width/2) ) +return( false ); + data[i][0] = h1->start-off; + data[i][1] = h1->width; + data[i][2] = h2->start-off; + data[i][3] = h2->width; + data[i][4] = h3->start-off; + data[i][5] = h3->width; + } + if ( gb==NULL ) +return( true ); + AddData(gb,data,instance_count,6,round); + if ( gb->pt+3>=gb->end ) + GrowBuffer(gb); + *(gb->pt)++ = 12; + *(gb->pt)++ = ishstem?2:1; /* h/v stem3 */ +return( true ); +} + +static void CvtPsHints(GrowBuf *gb, SplineChar *scs[MmMax], int instance_count, + int ishstem, int round, int iscjk, real *offsets ) { + StemInfo *hs[MmMax]; + real data[MmMax][6]; + int i; + real off; + + for ( i=0; ihstem : scs[i]->vstem; + + if ( hs[0]!=NULL && hs[0]->next!=NULL && hs[0]->next->next!=NULL && + hs[0]->next->next->next==NULL ) + if ( !iscjk && CvtPsStem3(gb, scs, instance_count, ishstem, round)) +return; + + while ( hs[0]!=NULL ) { + for ( i=0; ilsidebearing; + if ( hs[i]->ghost ) { + data[i][0] = hs[i]->start-off+hs[i]->width; + data[i][1] = -hs[i]->width; + } else { + data[i][0] = hs[i]->start-off; + data[i][1] = hs[i]->width; + } + } + AddData(gb,data,instance_count,2,round); + if ( gb->pt+1>=gb->end ) + GrowBuffer(gb); + *(gb->pt)++ = ishstem?1:3; /* h/v stem */ + for ( i=0; inext; + } +} + +static void CvtPsMasked(GrowBuf *gb,SplineChar *scs[MmMax], int instance_count, + int ishstem, int round, uint8 mask[12] ) { + StemInfo *hs[MmMax]; + real data[MmMax][6], off; + int i; + + for ( i=0; ihstem : scs[i]->vstem; + + while ( hs[0]!=NULL ) { + if ( hs[0]->hintnumber!=-1 && + (mask[hs[0]->hintnumber>>3]&(0x80>>(hs[0]->hintnumber&7))) ) { + for ( i=0; ilsidebearing; + if ( hs[i]->ghost ) { + data[i][0] = hs[i]->start-off+hs[i]->width; + data[i][1] = -hs[i]->width; + } else { + data[i][0] = hs[i]->start-off; + data[i][1] = hs[i]->width; + } + } + AddData(gb,data,instance_count,2,round); + if ( gb->pt+1>=gb->end ) + GrowBuffer(gb); + *(gb->pt)++ = ishstem?1:3; /* h/v stem */ + } + for ( i=0; inext; + } +} + +static int FigureCounters(StemInfo *stems,real *hints,int base,real offset, + int countermask_cnt, HintMask *counters) { + StemInfo *h; + int pos = base+1, subbase, cnt=0; + real last = offset; + int i; + + for ( i=0; inext ) { + if ( h->hintnumber!=-1 && (counters[i][h->hintnumber>>3]&(0x80>>(h->hintnumber&7))) ) { + hints[pos++] = h->start-last; + hints[pos++] = h->width; + last = h->start+h->width; + } + } + if ( pos!=subbase ) { + hints[pos-2] += hints[pos-1]; + hints[pos-1] = -hints[pos-1]; /* Mark end of group */ + last = offset; /* Each new group starts at 0 or lbearing */ + ++cnt; + } + } + hints[base] = cnt; +return( pos ); +} + +static void CounterHints1(GrowBuf *gb, SplineChar *sc, int round) { + real hints[HntMax*2+2]; /* At most 96 hints, no hint used more than once */ + int pos, i, j; + + if ( sc->countermask_cnt==0 ) +return; + + pos = FigureCounters(sc->hstem,hints,0,0,sc->countermask_cnt, + sc->countermasks); + /* Adobe's docs (T1_Supp.pdf, section 2.4) say these should be offset from*/ + /* the left side bearing. The example (T1_Supp.pdf, 2.6) shows them offset*/ + /* from 0. I've no idea which is correct, so I'll follow the words, think-*/ + /* that the lbearing might have been set to 0 even though it shouldn't */ + /* have been. */ + pos = FigureCounters(sc->vstem,hints,pos,sc->lsidebearing,sc->countermask_cnt, + sc->countermasks); + if ( pos==2 ) /* => no counters, one byte to say 0 h counters, one byte for 0 v counters */ +return; + for ( i=pos; i>22; i-=22 ) { + for ( j=i-22; jpt+2>=gb->end ) + GrowBuffer(gb); + *(gb->pt)++ = 12; + *(gb->pt)++ = 16; /* CallOtherSubr */ + } + for ( j=0; jpt+2>=gb->end ) + GrowBuffer(gb); + *(gb->pt)++ = 12; + *(gb->pt)++ = 16; /* CallOtherSubr */ +} + +static void SubrsCheck(struct pschars *subrs) { + /* 1 3 callother pop callsubr */ + + if ( subrs->next>=subrs->cnt ) { + subrs->cnt += 100; + subrs->values = grealloc(subrs->values,subrs->cnt*sizeof(uint8 *)); + subrs->lens = grealloc(subrs->lens,subrs->cnt*sizeof(int)); + if ( subrs->keys!=NULL ) { + int i; + subrs->keys = grealloc(subrs->keys,subrs->cnt*sizeof(char *)); + for ( i=subrs->cnt-100; icnt; ++i ) + subrs->keys[i] = NULL; + } + } +} + +/* Does the hintmask we need already exist in a subroutine? if so return that */ +/* subr. Else build a new subr with the hints we need. Note we can only use */ +/* *stem3 commands if there are no conflicts in that coordinate, it isn't cjk*/ +/* and all the other conditions are met */ +static int FindOrBuildHintSubr(struct hintdb *hdb, uint8 mask[12], int round) { + struct mhlist *mh; + GrowBuf gb; + + for ( mh=hdb->sublist; mh!=NULL; mh=mh->next ) { + if ( memcmp(mask,mh->mask,sizeof(mask))==0 ) +return( mh->subr ); +#if 0 + /* If we find a subr for which we have all the bits set (with extras */ + /* since we didn't match) then it is safe to replace the old subr */ + /* with ours. This will save use one subr entry, and maybe a call */ + + /* Hmm. Adobe doesn't do this in their code. Doubtless they know more */ + /* about what hints imply about counters than I do */ + for ( i=0; i<12; ++i ) + if ( (mh->mask[i]&mask[i])!=mh->mask[i] ) + break; + if ( i==12 ) + break; +#endif + } + SubrsCheck(hdb->subrs); + + memset(&gb,0,sizeof(gb)); + if ( !hdb->scs[0]->hconflicts ) + CvtPsHints(&gb,hdb->scs,hdb->instance_count,true,round,hdb->iscjk,NULL); + else + CvtPsMasked(&gb,hdb->scs,hdb->instance_count,true,round,mask); + if ( !hdb->scs[0]->vconflicts ) + CvtPsHints(&gb,hdb->scs,hdb->instance_count,false,round,hdb->iscjk,NULL); + else + CvtPsMasked(&gb,hdb->scs,hdb->instance_count,false,round,mask); + if ( gb.pt+1 >= gb.end ) + GrowBuffer(&gb); + *gb.pt++ = 11; /* return */ + + /* Replace an old subroutine */ + if ( mh!=NULL ) { + free( hdb->subrs->values[mh->subr]); + hdb->subrs->values[mh->subr] = (uint8 *) copyn((char *) gb.base,gb.pt-gb.base); + hdb->subrs->lens[mh->subr] = gb.pt-gb.base; + memcpy(mh->mask,mask,sizeof(mh->mask)); + } else { + hdb->subrs->values[hdb->subrs->next] = (uint8 *) copyn((char *) gb.base,gb.pt-gb.base); + hdb->subrs->lens[hdb->subrs->next] = gb.pt-gb.base; + + mh = gcalloc(1,sizeof(struct mhlist)); + memcpy(mh->mask,mask,sizeof(mh->mask)); + mh->subr = hdb->subrs->next++; + mh->next = hdb->sublist; + hdb->sublist = mh; + } + free(gb.base); + +return( mh->subr ); +} + +static void CallTransformedHintSubr(GrowBuf *gb,struct hintdb *hdb, + SplineChar *scs[MmMax], RefChar *refs[MmMax], BasePoint trans[MmMax], + int instance_count, int round) { + HintMask hm; + int s; + + if ( HintMaskFromTransformedRef(refs[0],&trans[0],scs[0],&hm)==NULL ) +return; + s = FindOrBuildHintSubr(hdb, hm, round); + AddNumber(gb,s,round); + AddNumber(gb,4,round); /* subr 4 is (my) magic subr that does the hint subs call */ + if ( gb->pt+1 >= gb->end ) + GrowBuffer(gb); + *gb->pt++ = 10; /* callsubr */ +} + +static void HintSetup(GrowBuf *gb,struct hintdb *hdb, SplinePoint *to, + int round, int break_subr ) { + int s; + int i; + + if ( to->hintmask==NULL || hdb->noconflicts ) +return; + if ( hdb->scs[0]->hstem==NULL && hdb->scs[0]->vstem==NULL ) /* Hints are turned off. Hint mask still remains though */ +return; + for ( i=0; ihintmask[i]!=0 ) + break; + if ( i==HntMax/8 ) /* Empty mask */ +return; + + s = FindOrBuildHintSubr(hdb,*to->hintmask,round); + memcpy(hdb->mask,*to->hintmask,sizeof(HintMask)); + if ( hdb->cursub == s ) { /* If we were able to redefine */ +return; /* the subroutine currently */ + } /* active then we are done */ + + if ( break_subr ) + BreakSubroutine(gb,hdb); + + AddNumber(gb,s,round); + AddNumber(gb,4,round); /* subr 4 is (my) magic subr that does the hint subs call */ + if ( gb->pt+1 >= gb->end ) + GrowBuffer(gb); + *gb->pt++ = 10; /* callsubr */ + hdb->cursub = s; + if ( break_subr ) + StartNextSubroutine(gb,hdb); +} + +static void _moveto(GrowBuf *gb,BasePoint *current,BasePoint *to,int instance_count, + int line, int round, struct hintdb *hdb) { + BasePoint temp[MmMax]; + int i, samex, samey; + real data[MmMax][6]; + + if ( gb->pt+18 >= gb->end ) + GrowBuffer(gb); + +#if 0 + if ( current->x==to->x && current->y==to->y ) { + /* we're already here */ /* Yes, but sometimes a move is required anyway */ + } else +#endif + for ( i=0; ipt)++ = line ? 7 : 4; /* v move/line to */ + } else if ( samey ) { + for ( i=0; ipt)++ = line ? 6 : 22; /* h move/line to */ + } else { + for ( i=0; ipt)++ = line ? 5 : 21; /* r move/line to */ + } + for ( i=0; ito,round,line); + for ( i=0; ito->me; + _moveto(gb,current,to,instance_count,line,round,hdb); +} + +static void splmoveto(GrowBuf *gb,BasePoint *current,SplineSet *spl[MmMax], + int instance_count, int line, int round, struct hintdb *hdb) { + BasePoint to[MmMax]; + int i; + + if ( !line) BreakSubroutine(gb,hdb); + if ( hdb!=NULL ) HintSetup(gb,hdb,spl[0]->first,round,line); + for ( i=0; ifirst->me; + _moveto(gb,current,to,instance_count,line,round,hdb); +} + +static int NeverConflicts(RefChar *refs[MmMax], int instance_count) { + int i; + for ( i=0; isc->hconflicts || refs[i]->sc->vconflicts ) +return( false ); + +return( true ); +} + +static int AllStationary(RefChar *refs[MmMax], BasePoint trans[MmMax], int instance_count) { + int i; + for ( i=0; ijusttranslated || + refs[i]->transform[4]+trans[i].x!=0 || + refs[i]->transform[5]+trans[i].y!=0 ) +return( false ); + +return( true ); +} + +static int AnyRefs(SplineChar *sc,int layer) { + +return( sc->layers[layer].refs!=NULL ); +} + +static void refmoveto(GrowBuf *gb,BasePoint *current,BasePoint rpos[MmMax], + int instance_count, int line, int round, struct hintdb *hdb, RefChar *refs[MmMax]) { + BasePoint to[MmMax]; + int i; + + if ( !line) BreakSubroutine(gb,hdb); + for ( i=0; itransform[4]; + to[i].y += refs[i]->transform[5]; + } + } + _moveto(gb,current,to,instance_count,line,round,hdb); +} + +static void curveto(GrowBuf *gb,BasePoint *current,Spline *splines[MmMax],int instance_count, + int round, struct hintdb *hdb) { + BasePoint temp1[MmMax], temp2[MmMax], temp3[MmMax], *c0[MmMax], *c1[MmMax], *s1[MmMax]; + real data[MmMax][6]; + int i, op, opcnt; + int vh, hv; + + if ( hdb!=NULL ) HintSetup(gb,hdb,splines[0]->to,round,true); + + if ( gb->pt+50 >= gb->end ) + GrowBuffer(gb); + + vh = hv = true; + for ( i=0; ifrom->nextcp; + c1[i] = &splines[i]->to->prevcp; + s1[i] = &splines[i]->to->me; + temp1[i].x = myround(c0[i]->x,round); + temp1[i].y = myround(c0[i]->y,round); + c0[i] = &temp1[i]; + temp2[i].x = myround(c1[i]->x,round); + temp2[i].y = myround(c1[i]->y,round); + c1[i] = &temp2[i]; + temp3[i].x = myround(s1[i]->x,round); + temp3[i].y = myround(s1[i]->y,round); + s1[i] = &temp3[i]; + if ( current[i].x != c0[i]->x || c1[i]->y!=s1[i]->y ) vh = false; + if ( current[i].y != c0[i]->y || c1[i]->x!=s1[i]->x ) hv = false; + } + if ( vh ) { + for ( i=0; iy-current[i].y; + data[i][1] = c1[i]->x-c0[i]->x; + data[i][2] = c1[i]->y-c0[i]->y; + data[i][3] = s1[i]->x-c1[i]->x; + } + op = 30; /* vhcurveto */ + opcnt = 4; + } else if ( hv ) { + for ( i=0; ix-current[i].x; + data[i][1] = c1[i]->x-c0[i]->x; + data[i][2] = c1[i]->y-c0[i]->y; + data[i][3] = s1[i]->y-c1[i]->y; + } + op = 31; /* hvcurveto */ + opcnt = 4; + } else { + for ( i=0; ix-current[i].x; + data[i][1] = c0[i]->y-current[i].y; + data[i][2] = c1[i]->x-c0[i]->x; + data[i][3] = c1[i]->y-c0[i]->y; + data[i][4] = s1[i]->x-c1[i]->x; + data[i][5] = s1[i]->y-c1[i]->y; + } + op = 8; /* rrcurveto */ + opcnt=6; + } + AddData(gb,data,instance_count,opcnt,false); + if ( gb->pt+1 >= gb->end ) + GrowBuffer(gb); + *(gb->pt)++ = op; + + for ( i=0; ito->flexx && !splines[i]->to->flexy ) +return( false ); + if (( x && splines[i]->to->flexy ) || ( y && splines[i]->to->flexx )) +return( false ); + x = splines[i]->to->flexx; + y = splines[i]->to->flexy; + } +return( true ); +} + +static void flexto(GrowBuf *gb,BasePoint current[MmMax],Spline *pspline[MmMax], + int instance_count,int round, struct hintdb *hdb) { + BasePoint *c0, *c1, *mid, *end=NULL; + Spline *nspline; + BasePoint offsets[MmMax][8]; + int i,j; + BasePoint temp1, temp2, temp3, temp; + real data[MmMax][6]; + + for ( j=0; jfrom->nextcp; + c1 = &pspline[j]->to->prevcp; + mid = &pspline[j]->to->me; + + temp1.x = myround(c0->x,round); + temp1.y = myround(c0->y,round); + c0 = &temp1; + temp2.x = myround(c1->x,round); + temp2.y = myround(c1->y,round); + c1 = &temp2; + temp.x = myround(mid->x,round); + temp.y = myround(mid->y,round); + mid = &temp; +/* reference point is same level as current point */ + if ( current[j].y==pspline[j]->to->next->to->me.y ) { + offsets[j][0].x = mid->x-current[j].x; offsets[j][0].y = 0; + offsets[j][1].x = c0->x-mid->x; offsets[j][1].y = c0->y-current[j].y; + } else { + offsets[j][0].x = 0; offsets[j][0].y = mid->y-current[j].y; + offsets[j][1].x = c0->x-current[j].x; offsets[j][1].y = c0->y-mid->y; + } + offsets[j][2].x = c1->x-c0->x; offsets[j][2].y = c1->y-c0->y; + offsets[j][3].x = mid->x-c1->x; offsets[j][3].y = mid->y-c1->y; + nspline = pspline[j]->to->next; + c0 = &nspline->from->nextcp; + c1 = &nspline->to->prevcp; + end = &nspline->to->me; + + temp1.x = myround(c0->x,round); + temp1.y = myround(c0->y,round); + c0 = &temp1; + temp2.x = myround(c1->x,round); + temp2.y = myround(c1->y,round); + c1 = &temp2; + temp3.x = myround(end->x,round); + temp3.y = myround(end->y,round); + end = &temp3; + + offsets[j][4].x = c0->x-mid->x; offsets[j][4].y = c0->y-mid->y; + offsets[j][5].x = c1->x-c0->x; offsets[j][5].y = c1->y-c0->y; + offsets[j][6].x = end->x-c1->x; offsets[j][6].y = end->y-c1->y; + offsets[j][7].x = end->x; offsets[j][7].y = end->y; + current[j] = *end; + } + + if ( hdb!=NULL ) + HintSetup(gb,hdb,pspline[0]->to->next->to,round,false); + + if ( gb->pt+2 >= gb->end ) + GrowBuffer(gb); + + *(gb->pt)++ = 1+139; /* 1 */ + *(gb->pt)++ = 10; /* callsubr */ + for ( i=0; i<7; ++i ) { + if ( gb->pt+20 >= gb->end ) + GrowBuffer(gb); + for ( j=0; jpt)++ = 21; /* rmoveto */ + *(gb->pt)++ = 2+139; /* 2 */ + *(gb->pt)++ = 10; /* callsubr */ + } + if ( gb->pt+20 >= gb->end ) + GrowBuffer(gb); + *(gb->pt)++ = 50+139; /* 50, .50 pixels */ + for ( j=0; jpt)++ = 0+139; /* 0 */ + *(gb->pt)++ = 10; /* callsubr */ + + *current = *end; +} + +static void _CvtPsSplineSet(GrowBuf *gb, SplinePointList *spl[MmMax], int instance_count, + BasePoint current[MmMax], + int round, struct hintdb *hdb, int is_order2, int stroked ) { + Spline *spline[MmMax], *first; + SplinePointList temp[MmMax], *freeme=NULL; + int i; + + if ( is_order2 ) { + freeme = spl[0] = SplineSetsPSApprox(spl[0]); + instance_count = 1; + } + while ( spl[0]!=NULL ) { + first = NULL; + for ( i=0; ifirst->flexy || spl[0]->first->flexx ) { + /* can't handle a flex (mid) point as the first point. rotate the */ + /* list by one, this is possible because only closed paths have */ + /* points marked as flex, and because we can't have two flex mid- */ + /* points in a row */ + for ( i = 0; ifirst->next->to; + spl[i] = &temp[i]; + } + if ( spl[0]->first->flexy || spl[0]->first->flexx ) { + /* well, well, well. We did have two flexes in a row */ + for ( i = 0; ifirst->flexx = spl[i]->first->flexy = false; + } + } + } + splmoveto(gb,current,spl,instance_count,false,round,hdb); + for ( i=0; ifirst->next; + while ( spline[0]!=NULL && spline[0]!=first ) { + if ( first==NULL ) first = spline[0]; + if ( SplinesAreFlexible(spline,instance_count) && + (hdb->noconflicts || spline[0]->to->hintmask==NULL)) { + flexto(gb,current,spline,instance_count,round,hdb); /* does two adjacent splines */ + for ( i=0; ito->next; + } else if ( spline[0]->knownlinear && spline[0]->to==spl[0]->first ) { + /* We can finish this off with the closepath */ + break; + } else if ( spline[0]->knownlinear ) + moveto(gb,current,spline,instance_count,true,round,hdb); + else + curveto(gb,current,spline,instance_count,round,hdb); + for ( i=0; ito->next; + } + if ( !stroked || spl[0]->first->prev!=NULL ) { + if ( gb->pt+1 >= gb->end ) + GrowBuffer(gb); + *(gb->pt)++ = 9; /* closepath */ + } + for ( i=0; inext; + } + } + SplinePointListsFree(freeme); +} + + +static int IsPSSeacable(SplineChar *sc,int layer) { + RefChar *ref; + + if ( sc->layers[layer].refs==NULL || sc->layers[layer].splines!=NULL ) +return( false ); + + for ( ref=sc->layers[layer].refs; ref!=NULL; ref=ref->next ) { + if ( !ref->justtranslated ) +return( false ); + } +return( true ); +} + +static RefChar *RefFindAdobe(RefChar *r, RefChar *t,int layer) { + *t = *r; + while ( t->adobe_enc==-1 && t->sc->layers[layer].refs!=NULL && + t->sc->layers[layer].refs->next==NULL && + t->sc->layers[layer].splines==NULL && + t->sc->layers[layer].refs->justtranslated ) { + t->transform[4] += t->sc->layers[layer].refs->transform[4]; + t->transform[5] += t->sc->layers[layer].refs->transform[5]; + t->adobe_enc = t->sc->layers[layer].refs->adobe_enc; + t->orig_pos = t->sc->layers[layer].refs->orig_pos; + t->sc = t->sc->layers[layer].refs->sc; + } +return( t ); +} + +static int IsSeacable(GrowBuf *gb, SplineChar *scs[MmMax], + int instance_count, int round,int layer) { + /* can be at most two chars in a seac (actually must be exactly 2, but */ + /* I'll put in a space if there's only one (and if splace is blank) */ + RefChar *r1, *r2, *rt, *refs; + RefChar space, t1, t2; + DBounds b; + int i, j, swap; + real data[MmMax][6]; + + for ( j=0 ; jlayers[layer].refs; + if ( refs==NULL ) +return( false ); + + r1 = refs; + if ((r2 = r1->next)==NULL ) { + RefChar *refs = r1->sc->layers[layer].refs; + if ( refs!=NULL && refs->next!=NULL && refs->next->next==NULL && + r1->sc->layers[layer].splines==NULL && + refs->adobe_enc!=-1 && refs->next->adobe_enc!=-1 ) { + r2 = refs->next; + r1 = refs; + } + } + if ( r2==NULL ) { + r2 = &space; + memset(r2,'\0',sizeof(space)); + space.adobe_enc = ' '; + space.transform[0] = space.transform[3] = 1.0; + for ( i=0; iparent->glyphcnt; ++i ) + if ( scs[0]->parent->glyphs[i]!=NULL && + strcmp(scs[0]->parent->glyphs[i]->name,"space")==0 ) + break; + if ( i==scs[0]->parent->glyphcnt ) + r2 = NULL; /* No space???? */ + else { + space.sc = scs[0]->parent->glyphs[i]; + if ( space.sc->layers[layer].splines!=NULL || space.sc->layers[layer].refs!=NULL ) + r2 = NULL; + } + } else if ( r2->next!=NULL ) + r2 = NULL; + + /* check for something like "AcyrillicBreve" which has a ref to Acyril */ + /* (which doesn't have an adobe enc) which in turn has a ref to A (which */ + /* does) */ + if ( r2!=NULL ) { + if ( r1->adobe_enc==-1 ) + r1 = RefFindAdobe(r1,&t1,layer); + if ( r2->adobe_enc==-1 ) + r2 = RefFindAdobe(r2,&t2,layer); + } + +/* CID fonts have no encodings. So we can't use seac to reference characters */ +/* in them. The other requirements are just those of seac */ + if ( r2==NULL || + r1->adobe_enc==-1 || + r2->adobe_enc==-1 || + ((r1->transform[4]!=0 || r1->transform[5]!=0 || r1->sc->width!=scs[0]->width ) && + (r2->transform[4]!=0 || r2->transform[5]!=0 || r2->sc->width!=scs[0]->width)) ) +return( false ); + + swap = false; + if ( r1->transform[4]!=0 || r1->transform[5]!=0 ) { + rt = r1; r1 = r2; r2 = rt; + swap = !swap; + } + + SplineCharFindBounds(r1->sc,&b); + r1->sc->lsidebearing = round?rint(b.minx):b.minx; + SplineCharFindBounds(r2->sc,&b); + r2->sc->lsidebearing = round?rint(b.minx):b.minx; + + if ( (r1->sc->width!=scs[0]->width || r1->sc->lsidebearing!=scs[0]->lsidebearing) && + r2->sc->width==scs[0]->width && r2->sc->lsidebearing==scs[0]->lsidebearing && + r2->transform[4]==0 && r2->transform[5]==0 ) { + rt = r1; r1 = r2; r2 = rt; + swap = !swap; + } + if ( r1->sc->width!=scs[0]->width || r1->sc->lsidebearing!=scs[0]->lsidebearing || + r1->transform[4]!=0 || r1->transform[5]!=0 ) +return( false ); + + for ( j=0; jparent->glyphs[r2->sc->orig_pos]; + RefChar *r3, t3; + + SplineCharFindBounds(r2sc,&b); + if ( scs[j]->layers[layer].refs!=NULL && scs[j]->layers[layer].refs->next==NULL ) + r3 = r2; /* Space, not offset */ + else if ( swap ) + r3 = RefFindAdobe(scs[j]->layers[layer].refs,&t3,layer); + else + r3 = RefFindAdobe(scs[j]->layers[layer].refs->next,&t3,layer); + + b.minx = myround(b.minx,round); + data[j][0] = b.minx; + data[j][1] = r3->transform[4] + b.minx-scs[j]->lsidebearing; + data[j][2] = r3->transform[5]; + } + AddData(gb,data,instance_count,3,round); + AddNumber(gb,r1->adobe_enc,round); + AddNumber(gb,r2->adobe_enc,round); + if ( gb->pt+2>gb->end ) + GrowBuffer(gb); + *(gb->pt)++ = 12; + *(gb->pt)++ = 6; /* seac 12,6 */ + +return( true ); +} + +static int _SCNeedsSubsPts(SplineChar *sc,int layer) { + RefChar *ref; + + if ( sc->hstem==NULL && sc->vstem==NULL ) +return( false ); + + if ( sc->layers[layer].splines!=NULL ) +return( sc->layers[layer].splines->first->hintmask==NULL ); + + for ( ref = sc->layers[layer].refs; ref!=NULL; ref=ref->next ) + if ( ref->layers[0].splines!=NULL ) +return( ref->layers[0].splines->first->hintmask==NULL ); + +return( false ); /* It's empty. that's easy. */ +} + +static int SCNeedsSubsPts(SplineChar *sc,enum fontformat format,int layer) { + if ( (format!=ff_mma && format!=ff_mmb) || sc->parent->mm==NULL ) { + if ( !sc->hconflicts && !sc->vconflicts ) +return( false ); /* No conflicts, no swap-over points needed */ +return( _SCNeedsSubsPts(sc,layer)); + } else { + MMSet *mm = sc->parent->mm; + int i; + for ( i=0; iinstance_count; ++i ) if ( sc->orig_posinstances[i]->glyphcnt ) { + if ( _SCNeedsSubsPts(mm->instances[i]->glyphs[sc->orig_pos],layer) ) +return( true ); + } +return( false ); + } +} + +static void ExpandRef1(GrowBuf *gb, SplineChar *scs[MmMax], int instance_count, + struct hintdb *hdb, RefChar *r[MmMax], BasePoint trans[MmMax], + BasePoint current[MmMax], + struct pschars *subrs, int round, int iscjk, int layer) { + BasePoint *bpt; + BasePoint rtrans[MmMax], rpos[MmMax]; + int i; + + for ( i=0; itransform[4]+trans[i].x; + rtrans[i].y = r[i]->transform[5]+trans[i].y; + if ( round ) { + rtrans[i].x = rint(rtrans[i].x); + rtrans[i].y = rint(rtrans[i].y); + } + } + + BreakSubroutine(gb,hdb); + if ( r[0]->sc == scs[0] ) { + /* Hints for self */ + if ( hdb->cnt>0 && !hdb->noconflicts && NeverConflicts(r,instance_count)) { + CvtPsHints(gb,scs,instance_count,true,round,iscjk,NULL); + CvtPsHints(gb,scs,instance_count,false,round,iscjk,NULL); + } + } else { + /* Hints for a real reference */ + if ( !NeverConflicts(r,instance_count) || r[0]->sc->layers[layer].anyflexes || AnyRefs(r[0]->sc,layer) ) + /* Hints already done */; + else if ( hdb->noconflicts ) + /* Hints already done */; + else if ( r[0]->sc->hstem!=NULL || r[0]->sc->vstem!=NULL ) + CallTransformedHintSubr(gb,hdb,scs,r,trans,instance_count,round); + } + + if ( hdb!=NULL && hdb->gi!=NULL ) + bpt = hdb->gi->psubrs[r[0]->sc->ttf_glyph].startstop; + else + bpt = (BasePoint *) (subrs->keys[r[0]->sc->ttf_glyph]); + for ( i=0; istartset = true; + + if ( hdb!=NULL && hdb->gi!=NULL ) { + GlyphInfo *gi = hdb->gi; + StartNextSubroutine(gb,hdb); + gi->bits[gi->bcnt].psub_index = r[0]->sc->ttf_glyph; + ++gi->bcnt; + gi->justbroken = true; + } else { + AddNumber(gb,r[0]->sc->ttf_glyph,round); + if ( gb->pt+1>=gb->end ) + GrowBuffer(gb); + *gb->pt++ = 10; + } + + for ( i=0; inoconflicts; + + for ( i=0; ilayers[layer].splines; + if ( base[0]!=rsc[0] ) + spls[i] = freeme[i] = SPLCopyTranslatedHintMasks(spls[i],base[i],rsc[i],&trans[i]); + } + _CvtPsSplineSet(gb,spls,instance_count,current,round,hdb, + base[0]->layers[layer].order2,base[0]->parent->strokedfont); + if ( base[0]!=rsc[0] ) + for ( i=0; ilayers[layer].refs; + while ( refs[0]!=NULL ) { + for ( i=0; ilayers[0].splines; + if ( !refs[0]->justtranslated ) { + for ( i=0; inoconflicts && + refs[0]->transform[1]==0 && refs[0]->transform[2]==0 ) + CallTransformedHintSubr(gb,hdb,base,refs,trans,instance_count,round); + _CvtPsSplineSet(gb,spls,instance_count,current,round,hdb, + base[0]->layers[layer].order2,base[0]->parent->strokedfont); + for ( i=0; isc->ttf_glyph!=0x7fff && + ((flags&ps_flag_nohints) || + !refs[0]->sc->layers[layer].anyflexes || + (refs[0]->transform[4]+trans[0].x==0 && refs[0]->transform[5]+trans[0].y==0)) && + ((flags&ps_flag_nohints) || + NeverConflicts(refs,instance_count) || + AllStationary(refs,trans,instance_count)) ) { + ExpandRef1(gb,base,instance_count,hdb,refs,trans, + current,subrs,round,iscjk,layer); + } else { + for ( i=0; itransform[4]; + subtrans[i].y = trans[i].y + refs[i]->transform[5]; + rscs[i] = refs[i]->sc; + } + if ( !hdb->noconflicts && NeverConflicts(refs,instance_count)) { + CallTransformedHintSubr(gb,hdb,base,refs,trans,instance_count,round); + hdb->noconflicts = true; + } + RSC2PS1(gb,base,rscs,hdb,subtrans,subrs,current,flags,iscjk, + instance_count,layer); + hdb->noconflicts = wasntconflicted; + } + for ( i=0; inext; + } +} + +static unsigned char *SplineChar2PS(SplineChar *sc,int *len,int round,int iscjk, + struct pschars *subrs,int flags,enum fontformat format, + GlyphInfo *gi) { + DBounds b; + GrowBuf gb; + BasePoint current[MmMax]; + unsigned char *ret; + struct hintdb hintdb, *hdb=NULL; + StemInfo *oldh[MmMax], *oldv[MmMax]; + int hc[MmMax], vc[MmMax]; + BasePoint trans[MmMax]; + int instance_count, i; + SplineChar *scs[MmMax]; + real data[MmMax][6]; + MMSet *mm = sc->parent->mm; + HintMask *hm[MmMax]; + int fixuphm = false; + + if ( !(flags&ps_flag_nohints) && SCNeedsSubsPts(sc,format,gi->layer)) + SCFigureHintMasks(sc,gi->layer); + + if ( (format==ff_mma || format==ff_mmb) && mm!=NULL ) { + instance_count = mm->instance_count; + if ( instance_count>16 ) + instance_count = 16; + for ( i=0; iinstances[i]->glyphs[sc->orig_pos]; + } else { + instance_count = 1; + scs[0] = sc; + mm = NULL; + } + + if ( flags&ps_flag_nohints ) { + for ( i=0; ihstem; oldv[i] = scs[i]->vstem; + hc[i] = scs[i]->hconflicts; vc[i] = scs[i]->vconflicts; + scs[i]->hstem = NULL; scs[i]->vstem = NULL; + scs[i]->hconflicts = false; scs[i]->vconflicts = false; + } + } else { + for ( i=0; ivconflicts || scs[i]->hconflicts ) + break; + if ( scs[0]->layers[gi->layer].splines!=NULL && i==instance_count ) { /* No conflicts */ + fixuphm = true; + for ( i=0; ilayers[gi->layer].splines->first->hintmask; + scs[i]->layers[gi->layer].splines->first->hintmask = NULL; + } + } + } + + memset(&gb,'\0',sizeof(gb)); + memset(current,'\0',sizeof(current)); + for ( i=0; ilsidebearing = current[i].x = round?rint(b.minx):b.minx; + data[i][0] = b.minx; + data[i][1] = scs[i]->width; + } + AddData(&gb,data,instance_count,2,round); + *gb.pt++ = 13; /* hsbw, lbearing & width */ + + memset(&hintdb,0,sizeof(hintdb)); + hintdb.subrs = subrs; hintdb.iscjk = iscjk&~0x100; hintdb.scs = scs; + hintdb.instance_count = instance_count; + hintdb.cnt = NumberHints(scs,instance_count); + hintdb.noconflicts = true; + hintdb.gi = gi; + for ( i=0; ihconflicts || scs[i]->vconflicts ) + hintdb.noconflicts = false; + hdb = &hintdb; + if ( gi!=NULL ) + gi->bcnt = -1; + + /* If this char is being placed in a subroutine, then we don't want to */ + /* use seac because somebody is going to call that subroutine and */ + /* add another reference to it later. CID keyed fonts also can't use */ + /* seac (they have no encoding so it doesn't work), that's what iscjk&0x100 */ + /* tests for */ + if ( scs[0]->ttf_glyph==0x7fff && !(iscjk&0x100) && !(flags&ps_flag_noseac) && + IsSeacable(&gb,scs,instance_count,round,gi->layer)) { + if ( gi ) + gi->active->wasseac = true; + /* in MM fonts, all should share the same refs, so all should be */ + /* seac-able if one is */ + } else { + iscjk &= ~0x100; + if ( iscjk && instance_count==1 ) + CounterHints1(&gb,sc,round); /* Must come immediately after hsbw */ + if ( hintdb.noconflicts ) { + CvtPsHints(&gb,scs,instance_count,true,round,iscjk,NULL); + CvtPsHints(&gb,scs,instance_count,false,round,iscjk,NULL); + } + memset(&trans,0,sizeof(trans)); + RSC2PS1(&gb,scs,scs,hdb,trans,subrs,current,flags,iscjk, + instance_count,gi->layer); + } + if ( gi->bcnt==-1 ) { /* If it's whitespace */ + gi->bcnt = 0; + StartNextSubroutine(&gb,hdb); + } + BreakSubroutine(&gb,hdb); + MoveSubrsToChar(gi); + ret = NULL; + + if ( hdb!=NULL ) { + struct mhlist *mh, *mhnext; + for ( mh=hdb->sublist; mh!=NULL; mh=mhnext ) { + mhnext = mh->next; + free(mh); + } + } + free(gb.base); + if ( flags&ps_flag_nohints ) { + for ( i=0; ihstem = oldh[i]; scs[i]->vstem = oldv[i]; + scs[i]->hconflicts = hc[i]; scs[i]->vconflicts = vc[i]; + } + } else if ( fixuphm ) { + for ( i=0; ilayers[gi->layer].splines->first->hintmask = hm[i]; + } +return( ret ); +} + + +/* Mark those glyphs which can live totally in subrs */ +static void SplineFont2FullSubrs1(int flags,GlyphInfo *gi) { + int i; + SplineChar *sc; + + for ( i=0; iglyphcnt; ++i ) if ( (sc=gi->gb[i].sc)!=NULL ) + sc->ttf_glyph = 0x7fff; + +} + +int SFOneWidth(SplineFont *sf) { + int width, i; + + width = -2; + for ( i=0; iglyphcnt; ++i ) if ( SCWorthOutputting(sf->glyphs[i]) && + (strcmp(sf->glyphs[i]->name,".notdef")!=0 || sf->glyphs[i]->layers[ly_fore].splines!=NULL)) { + /* Only trust the width of notdef if it's got some content */ + /* (at least as far as fixed pitch determination goes) */ + if ( width==-2 ) width = sf->glyphs[i]->width; + else if ( width!=sf->glyphs[i]->width ) { + width = -1; + break; + } + } +return(width); +} + +int CIDOneWidth(SplineFont *_sf) { + int width, i; + int k; + SplineFont *sf; + + if ( _sf->cidmaster!=NULL ) _sf = _sf->cidmaster; + width = -2; + k=0; + do { + sf = _sf->subfonts==NULL? _sf : _sf->subfonts[k]; + for ( i=0; iglyphcnt; ++i ) if ( SCWorthOutputting(sf->glyphs[i]) && + strcmp(sf->glyphs[i]->name,".null")!=0 && + strcmp(sf->glyphs[i]->name,"nonmarkingreturn")!=0 && + (strcmp(sf->glyphs[i]->name,".notdef")!=0 || sf->glyphs[i]->layers[ly_fore].splines!=NULL)) { + /* Only trust the width of notdef if it's got some content */ + /* (at least as far as fixed pitch determination goes) */ + if ( width==-2 ) width = sf->glyphs[i]->width; + else if ( width!=sf->glyphs[i]->width ) { + width = -1; + break; + } + } + ++k; + } while ( k<_sf->subfontcnt ); +return(width); +} + + +static void SetupType1Subrs(struct pschars *subrs,GlyphInfo *gi) { + int scnt, call_size; + int i; + + scnt = subrs->next; + call_size = gi->pcnt+scnt<1131 ? 3 : 6; + for ( i=0; ipcnt; ++i ) { + /* A subroutine call takes somewhere between 2 and 6 bytes itself. */ + /* and we must add a return statement to the end. We don't want to */ + /* make things bigger */ + if ( gi->psubrs[i].full_glyph_index!=-1 ) + gi->psubrs[i].idx = scnt++; + else if ( gi->psubrs[i].cnt*gi->psubrs[i].len>(gi->psubrs[i].cnt*call_size)+gi->psubrs[i].len+1 ) + gi->psubrs[i].idx = scnt++; + else + gi->psubrs[i].idx = -1; + } + + subrs->cnt = scnt; + subrs->next = scnt; + subrs->lens = grealloc(subrs->lens,scnt*sizeof(int)); + subrs->values = grealloc(subrs->values,scnt*sizeof(unsigned char *)); + + for ( i=0; ipcnt; ++i ) { + scnt = gi->psubrs[i].idx; + if ( scnt==-1 || gi->psubrs[i].full_glyph_index != -1 ) + continue; + subrs->lens[scnt] = gi->psubrs[i].len+1; + subrs->values[scnt] = galloc(subrs->lens[scnt]); + memcpy(subrs->values[scnt],gi->psubrs[i].data,gi->psubrs[i].len); + subrs->values[scnt][gi->psubrs[i].len] = 11; /* Add a return to end of subr */ + } +} + +static void SetupType1Chrs(struct pschars *chrs,struct pschars *subrs,GlyphInfo *gi, int iscid) { + int i,k,j; + + /* If a glyph lives entirely in a subroutine then we need to create both */ + /* the subroutine entry, and the char entry which calls the subr. */ + /* The subroutine entry will be everything EXCEPT the glyph header */ + /* the char entry will be the glyph header and a subroutine call */ + /* If the glyph does not go into a subr then everything goes into the char */ + for ( i=0; iglyphcnt; ++i ) { + int len=0; + struct glyphbits *gb = &gi->gb[i]; + if ( gb->sc==NULL ) + continue; + if ( !iscid ) + chrs->keys[i] = copy(gb->sc->name); + for ( k=0; k<2; ++k ) if ( k!=0 || gb->sc->ttf_glyph!=0x7fff ) { + uint8 *vals; + for ( j=0; jbcnt; ++j ) { + if ( k!=0 || j!=0 ) + len += gb->bits[j].dlen; + if ( k==1 && gb->sc->ttf_glyph!=0x7fff ) { + int si = gi->psubrs[ gb->sc->ttf_glyph ].idx; + len += 1 + (si<=107?1:si<=1131?2:5); + break; + } + if ( gi->psubrs[ gb->bits[j].psub_index ].idx==-1 ) + len += gi->psubrs[ gb->bits[j].psub_index ].len; + else { + int si = gi->psubrs[ gb->bits[j].psub_index ].idx; + len += 1 + (si<=107?1:si<=1131?2:5); + /* Space for a subr call & the sub number to call */ + } + } + if ( k==0 ) { + int si = gi->psubrs[ gb->sc->ttf_glyph ].idx; + subrs->lens[si] = len+1; + vals = subrs->values[si] = galloc(len+2); + } else { + /* Don't need or want and endchar if we are using seac */ + chrs->lens[i] = len + !gb->wasseac; + vals = chrs->values[i] = galloc(len+2); /* space for endchar and a final NUL (which is really meaningless, but makes me feel better) */ + } + + len = 0; + for ( j=0; jbcnt; ++j ) { + int si; + if ( k!=0 || j!=0 ) { + memcpy(vals+len,gb->bits[j].data,gb->bits[j].dlen); + len += gb->bits[j].dlen; + } + si = -1; + if ( k==1 && gb->sc->ttf_glyph!=0x7fff ) + si = gi->psubrs[ gb->sc->ttf_glyph ].idx; + else if ( gi->psubrs[ gb->bits[j].psub_index ].idx==-1 ) { + memcpy(vals+len,gi->psubrs[ gb->bits[j].psub_index ].data, + gi->psubrs[ gb->bits[j].psub_index ].len); + len += gi->psubrs[ gb->bits[j].psub_index ].len; + } else + si = gi->psubrs[ gb->bits[j].psub_index ].idx; + if ( si!=-1 ) { + /* space for the number (subroutine index) */ + if ( si<=107 ) + vals[len++] = si+139; + else if ( si>0 && si<=1131 ) { + si-=108; + vals[len++] = (si>>8)+247; + vals[len++] = si&0xff; + } else { + vals[len++] = '\377'; + vals[len++] = (si>>24)&0xff; + vals[len++] = (si>>16)&0xff; + vals[len++] = (si>>8)&0xff; + vals[len++] = si&0xff; + } + /* space for the subroutine operator */ + vals[len++] = 10; + } + if ( k==1 && gb->sc->ttf_glyph!=0x7fff ) + break; + } + if ( k==0 ) { + vals[len++] = 11; /* return */ + vals[len] = '\0'; + } else if ( gb->wasseac ) { + /* Don't want an endchar */ + vals[len] = '\0'; + } else { + vals[len++] = 14; /* endchar */ + vals[len] = '\0'; + } + } + } +} + + +struct pschars *CID2ChrsSubrs(SplineFont *cidmaster,struct cidbytes *cidbytes,int flags,int layer) { + struct pschars *chrs = gcalloc(1,sizeof(struct pschars)); + int i, cnt, cid; + SplineFont *sf = NULL; + struct fddata *fd; + int round = (flags&ps_flag_round)? true : false; + /* I don't support mm cid files. I don't think adobe does either */ + GlyphInfo gi; + int notdef_subfont; + SplineChar dummynotdef, *sc; + + cnt = 0; notdef_subfont = -1; + for ( i=0; isubfontcnt; ++i ) { + if ( cntsubfonts[i]->glyphcnt ) + cnt = cidmaster->subfonts[i]->glyphcnt; + if ( cidmaster->subfonts[i]->glyphcnt>0 && + SCWorthOutputting(cidmaster->subfonts[i]->glyphs[0]) ) + notdef_subfont = i; + } + cidbytes->cidcnt = cnt; + + if ( notdef_subfont==-1 ) { + memset(&dummynotdef,0,sizeof(dummynotdef)); + dummynotdef.name = ".notdef"; + dummynotdef.parent = cidmaster->subfonts[0]; + dummynotdef.layer_cnt = layer+1; + dummynotdef.layers = gcalloc(layer+1,sizeof(Layer));; + dummynotdef.width = SFOneWidth(dummynotdef.parent); + if ( dummynotdef.width==-1 ) + dummynotdef.width = (dummynotdef.parent->ascent+dummynotdef.parent->descent); + } + + memset(&gi,0,sizeof(gi)); + gi.instance_count = 1; + gi.glyphcnt = cnt; + gi.gb = galloc(cnt*sizeof(struct glyphbits)); + gi.pmax = 3*cnt; + gi.psubrs = galloc(gi.pmax*sizeof(struct potentialsubrs)); + gi.layer = layer; + + chrs->cnt = cnt; + chrs->lens = gcalloc(cnt,sizeof(int)); + chrs->values = gcalloc(cnt,sizeof(unsigned char *)); + cidbytes->fdind = galloc(cnt*sizeof(unsigned char *)); + memset(cidbytes->fdind,-1,cnt*sizeof(unsigned char *)); + + /* In a type1 CID-keyed font we must handle subroutines subfont by subfont*/ + /* as there are no global subrs */ + for ( i=0; isubfontcnt; ++i ) { + gi.sf = sf = cidmaster->subfonts[i]; + MarkTranslationRefs(sf,layer); + fd = &cidbytes->fds[i]; + memset(&gi.hashed,-1,sizeof(gi.hashed)); + gi.instance_count = 1; + gi.glyphcnt = sf->glyphcnt; + memset(gi.gb,0,sf->glyphcnt*sizeof(struct glyphbits)); + for ( cid=0; cidglyphcnt; ++cid ) { + if ( cid==0 && notdef_subfont==-1 && i==cidmaster->subfontcnt-1 ) + gi.gb[0].sc = &dummynotdef; + else if ( SCWorthOutputting(sf->glyphs[cid]) && + strcmp(sf->glyphs[cid]->name,".notdef")!=0) /* We've already added .notdef */ + gi.gb[cid].sc = sf->glyphs[cid]; + if ( gi.gb[cid].sc!=NULL ) + cidbytes->fdind[cid] = i; + } + SplineFont2FullSubrs1(flags,&gi); + + for ( cid=0; cidglyphcnt; ++cid ) { + if ( (sc = gi.gb[cid].sc)==NULL ) + continue; + gi.active = &gi.gb[cid]; + SplineChar2PS(sc,NULL, round,fd->iscjk|0x100,fd->subrs, + flags,ff_cid,&gi); + if ( !ff_progress_next()) { + PSCharsFree(chrs); + GIFree(&gi,&dummynotdef); +return( NULL ); + } + } + + SetupType1Subrs(fd->subrs,&gi); + SetupType1Chrs(chrs,fd->subrs,&gi,true); + GIContentsFree(&gi,&dummynotdef); + } + GIFree(&gi,&dummynotdef); + chrs->next = cnt; +return( chrs ); +} + +/* ************************************************************************** */ +/* ********************** Type2 PostScript CharStrings ********************** */ +/* ************************************************************************** */ + +#if 0 +static int real_warn = false; +#endif + +static real myround2(real pos, int round) { + if ( round ) +return( rint(pos)); + +return( rint(65536*pos)/65536 ); +} + +static void AddNumber2(GrowBuf *gb, real pos, int round) { + int val, factor; + unsigned char *str; + + if ( gb->pt+5>=gb->end ) + GrowBuffer(gb); + + pos = rint(65536*pos)/65536; + if ( round ) + pos = rint(pos); + + str = gb->pt; + if ( pos>32767.99 || pos<-32768 ) { + /* same logic for big ints and reals */ + if ( pos>0x3fffffff || pos<-0x40000000 ) { + LogError( _("Number out of range: %g in type2 output (must be [-65536,65535])\n"), + pos ); + if ( pos>0 ) pos = 0x3fffffff; else pos = -0x40000000; + } + for ( factor=2; factor<32768; factor<<=2 ) + if ( pos/factor<32767.99 && pos/factor>-32768 ) + break; + AddNumber2(gb,pos/factor,false); + AddNumber2(gb,factor,false); + if ( gb->pt+2>=gb->end ) + GrowBuffer(gb); + *(gb->pt++) = 0x0c; /* Multiply operator */ + *(gb->pt++) = 0x18; + } else if ( pos!=floor(pos )) { + val = pos*65536; + *str++ = '\377'; + *str++ = (val>>24)&0xff; + *str++ = (val>>16)&0xff; + *str++ = (val>>8)&0xff; + *str++ = val&0xff; + } else { + val = rint(pos); + if ( pos>=-107 && pos<=107 ) + *str++ = val+139; + else if ( pos>=108 && pos<=1131 ) { + val -= 108; + *str++ = (val>>8)+247; + *str++ = val&0xff; + } else if ( pos>=-1131 && pos<=-108 ) { + val = -val; + val -= 108; + *str++ = (val>>8)+251; + *str++ = val&0xff; + } else { + *str++ = 28; + *str++ = (val>>8)&0xff; + *str++ = val&0xff; + } + } + gb->pt = str; +} + +static void AddMask2(GrowBuf *gb,uint8 mask[12],int cnt, int oper) { + int i; + + if ( gb->pt+1+((cnt+7)>>3)>=gb->end ) + GrowBuffer(gb); + *gb->pt++ = oper; /* hintmask,cntrmask */ + for ( i=0; i< ((cnt+7)>>3); ++i ) + *gb->pt++ = mask[i]; +} + +static void CounterHints2(GrowBuf *gb, SplineChar *sc, int hcnt) { + int i; + + for ( i=0; icountermask_cnt; ++i ) + AddMask2(gb,sc->countermasks[i],hcnt,20); /* cntrmask */ +} + +static int HintSetup2(GrowBuf *gb,struct hintdb *hdb, SplinePoint *to, int break_subr ) { + + /* We might get a point with a hintmask in a glyph with no conflicts */ + /* (ie. the initial point when we return to it at the end of the splineset*/ + /* in that case hdb->cnt will be 0 and we should ignore it */ + /* components in subroutines depend on not having any hintmasks */ + if ( to->hintmask==NULL || hdb->cnt==0 || hdb->noconflicts || hdb->skiphm ) +return( false ); + + if ( memcmp(hdb->mask,*to->hintmask,(hdb->cnt+7)/8)==0 ) +return( false ); + + if ( break_subr ) + BreakSubroutine(gb,hdb); + + AddMask2(gb,*to->hintmask,hdb->cnt,19); /* hintmask */ + memcpy(hdb->mask,*to->hintmask,sizeof(HintMask)); + hdb->donefirsthm = true; + if ( break_subr ) + StartNextSubroutine(gb,hdb); +return( true ); +} + +static void moveto2(GrowBuf *gb,struct hintdb *hdb,SplinePoint *to, int round) { + BasePoint temp, *tom; + + if ( gb->pt+18 >= gb->end ) + GrowBuffer(gb); + + BreakSubroutine(gb,hdb); + HintSetup2(gb,hdb,to,false); + tom = &to->me; + if ( round ) { + temp.x = rint(tom->x); + temp.y = rint(tom->y); + tom = &temp; + } +#if 0 + if ( hdb->current.x==tom->x && hdb->current.y==tom->y ) { + /* we're already here */ + /* Yes, but a move is required anyway at char start */ + } else +#endif + if ( hdb->current.x==tom->x ) { + AddNumber2(gb,tom->y-hdb->current.y,round); + *(gb->pt)++ = 4; /* v move to */ + } else if ( hdb->current.y==tom->y ) { + AddNumber2(gb,tom->x-hdb->current.x,round); + *(gb->pt)++ = 22; /* h move to */ + } else { + AddNumber2(gb,tom->x-hdb->current.x,round); + AddNumber2(gb,tom->y-hdb->current.y,round); + *(gb->pt)++ = 21; /* r move to */ + } + hdb->current.x = rint(32768*tom->x)/32768; + hdb->current.y = rint(32768*tom->y)/32768; + StartNextSubroutine(gb,hdb); +} + +static Spline *lineto2(GrowBuf *gb,struct hintdb *hdb,Spline *spline, Spline *done, int round) { + int cnt, hv, hvcnt; + Spline *test, *lastgood, *lasthvgood; + BasePoint temp1, temp2, *tom, *fromm; + int donehm; + + lastgood = NULL; + for ( test=spline, cnt=0; test->knownlinear && cnt<15; ) { + ++cnt; + lastgood = test; + test = test->to->next; + /* it will be smaller to use a closepath operator so ignore the */ + /* ultimate spline */ + if ( test==done || test==NULL || test->to->next==done ) + break; + } + + HintSetup2(gb,hdb,spline->to,true); + + hv = -1; hvcnt=1; lasthvgood = NULL; + if ( spline->from->me.x==spline->to->me.x ) + hv = 1; /* Vertical */ + else if ( spline->from->me.y==spline->to->me.y ) + hv = 0; /* Horizontal */ + donehm = true; + if ( hv!=-1 ) { + lasthvgood = spline; hvcnt = 1; + if ( cnt!=1 ) { + for ( test=spline->to->next; test!=NULL ; test = test->to->next ) { + fromm = &test->from->me; + if ( round ) { + temp2.x = rint(fromm->x); + temp2.y = rint(fromm->y); + fromm = &temp2; + } + tom = &test->to->me; + if ( round ) { + temp1.x = rint(tom->x); + temp1.y = rint(tom->y); + tom = &temp1; + } + if ( hv==1 && tom->y==fromm->y ) + hv = 0; + else if ( hv==0 && tom->x==fromm->x ) + hv = 1; + else + break; + lasthvgood = test; + ++hvcnt; + if ( test==lastgood ) + break; + } + } + donehm = true; + if ( hvcnt==cnt || hvcnt>=2 ) { + /* It's more efficient to do some h/v linetos */ + for ( test=spline; ; test = test->to->next ) { + if ( !donehm && test->to->hintmask!=NULL ) + break; + donehm = false; + fromm = &test->from->me; + if ( round ) { + temp2.x = rint(fromm->x); + temp2.y = rint(fromm->y); + fromm = &temp2; + } + tom = &test->to->me; + if ( round ) { + temp1.x = rint(tom->x); + temp1.y = rint(tom->y); + tom = &temp1; + } + if ( fromm->x==tom->x ) + AddNumber2(gb,tom->y-fromm->y,round); + else + AddNumber2(gb,tom->x-fromm->x,round); + hdb->current.x = rint(32768*tom->x)/32768; + hdb->current.y = rint(32768*tom->y)/32768; + if ( test==lasthvgood ) { + test = test->to->next; + break; + } + } + if ( gb->pt+1 >= gb->end ) + GrowBuffer(gb); + *(gb->pt)++ = spline->from->me.x==spline->to->me.x? 7 : 6; +return( test ); + } + } + + for ( test=spline; test!=NULL; test = test->to->next ) { + if ( !donehm && test->to->hintmask!=NULL ) + break; + donehm = false; + fromm = &test->from->me; + if ( round ) { + temp2.x = rint(fromm->x); + temp2.y = rint(fromm->y); + fromm = &temp2; + } + tom = &test->to->me; + if ( round ) { + temp1.x = rint(tom->x); + temp1.y = rint(tom->y); + tom = &temp1; + } + AddNumber2(gb,tom->x-fromm->x,round); + AddNumber2(gb,tom->y-fromm->y,round); + hdb->current.x = rint(32768*tom->x)/32768; + hdb->current.y = rint(32768*tom->y)/32768; + if ( test==lastgood ) { + test = test->to->next; + break; + } + } + if ( gb->pt+1 >= gb->end ) + GrowBuffer(gb); + *(gb->pt)++ = 5; /* r line to */ +return( test ); +} + +static Spline *curveto2(GrowBuf *gb,struct hintdb *hdb,Spline *spline, Spline *done, int round) { + int cnt=0, hv; + Spline *first; + DBasePoint start; + int donehm; + + HintSetup2(gb,hdb,spline->to,true); + + hv = -1; + if ( hdb->current.x==myround2(spline->from->nextcp.x,round) && + myround2(spline->to->prevcp.y,round)==myround2(spline->to->me.y,round) ) + hv = 1; + else if ( hdb->current.y==myround2(spline->from->nextcp.y,round) && + myround2(spline->to->prevcp.x,round)==myround2(spline->to->me.x,round) ) + hv = 0; + donehm = true; + if ( hv!=-1 ) { + first = spline; start = hdb->current; + while ( + (hv==1 && hdb->current.x==myround2(spline->from->nextcp.x,round) && + myround2(spline->to->prevcp.y,round)==myround2(spline->to->me.y,round) ) || + (hv==0 && hdb->current.y==myround2(spline->from->nextcp.y,round) && + myround2(spline->to->prevcp.x,round)==myround2(spline->to->me.x,round) ) ) { + if ( !donehm && spline->to->hintmask!=NULL ) + break; + donehm = false; + if ( hv==1 ) { + AddNumber2(gb,myround2(spline->from->nextcp.y,round)-hdb->current.y,round); + AddNumber2(gb,myround2(spline->to->prevcp.x,round)-myround2(spline->from->nextcp.x,round),round); + AddNumber2(gb,myround2(spline->to->prevcp.y,round)-myround2(spline->from->nextcp.y,round),round); + AddNumber2(gb,myround2(spline->to->me.x,round)-myround2(spline->to->prevcp.x,round),round); + hv = 0; + } else { + AddNumber2(gb,myround2(spline->from->nextcp.x,round)-hdb->current.x,round); + AddNumber2(gb,myround2(spline->to->prevcp.x,round)-myround2(spline->from->nextcp.x,round),round); + AddNumber2(gb,myround2(spline->to->prevcp.y,round)-myround2(spline->from->nextcp.y,round),round); + AddNumber2(gb,myround2(spline->to->me.y,round)-myround2(spline->to->prevcp.y,round),round); + hv = 1; + } + hdb->current.x = myround2(spline->to->me.x,round); + hdb->current.y = myround2(spline->to->me.y,round); + ++cnt; + spline = spline->to->next; + if ( spline==done || spline==NULL || cnt>9 || spline->knownlinear ) + break; + } + if ( gb->pt+1 >= gb->end ) + GrowBuffer(gb); + *(gb->pt)++ = ( start.x==myround2(first->from->nextcp.x,round) && myround2(first->to->prevcp.y,round)==myround2(first->to->me.y,round) )? + 30:31; /* vhcurveto:hvcurveto */ +return( spline ); + } + while ( cnt<6 ) { + if ( !donehm && spline->to->hintmask!=NULL ) + break; + donehm = false; + hv = -1; + if ( hdb->current.x==myround2(spline->from->nextcp.x,round) && + myround2(spline->to->prevcp.y,round)==myround2(spline->to->me.y,round) && + spline->to->next!=NULL && + myround2(spline->to->me.y,round)==myround2(spline->to->nextcp.y,round) && + myround2(spline->to->next->to->prevcp.x,round)==myround2(spline->to->next->to->me.x,round) ) + break; + else if ( hdb->current.y==myround2(spline->from->nextcp.y,round) && + myround2(spline->to->prevcp.x,round)==myround2(spline->to->me.x,round) && + spline->to->next!=NULL && + myround2(spline->to->me.x,round)==myround2(spline->to->nextcp.x,round) && + myround2(spline->to->next->to->prevcp.y,round)==myround2(spline->to->next->to->me.y,round) ) + break; + AddNumber2(gb,myround2(spline->from->nextcp.x,round)-hdb->current.x,round); + AddNumber2(gb,myround2(spline->from->nextcp.y,round)-hdb->current.y,round); + AddNumber2(gb,myround2(spline->to->prevcp.x,round)-myround2(spline->from->nextcp.x,round),round); + AddNumber2(gb,myround2(spline->to->prevcp.y,round)-myround2(spline->from->nextcp.y,round),round); + AddNumber2(gb,myround2(spline->to->me.x,round)-myround2(spline->to->prevcp.x,round),round); + AddNumber2(gb,myround2(spline->to->me.y,round)-myround2(spline->to->prevcp.y,round),round); + hdb->current.x = myround2(spline->to->me.x,round); + hdb->current.y = myround2(spline->to->me.y,round); + ++cnt; + spline = spline->to->next; + if ( spline==done || spline==NULL || spline->knownlinear ) + break; + } + if ( gb->pt+1 >= gb->end ) + GrowBuffer(gb); + *(gb->pt)++ = 8; /* rrcurveto */ +return( spline ); +} + +static void flexto2(GrowBuf *gb,struct hintdb *hdb,Spline *pspline,int round) { + BasePoint *c0, *c1, *mid, *end, *nc0, *nc1; + Spline *nspline; + + c0 = &pspline->from->nextcp; + c1 = &pspline->to->prevcp; + mid = &pspline->to->me; + nspline = pspline->to->next; + nc0 = &nspline->from->nextcp; + nc1 = &nspline->to->prevcp; + end = &nspline->to->me; + + HintSetup2(gb,hdb,nspline->to,true); + + if ( myround2(c0->y,round)==hdb->current.y && myround2(nc1->y,round)==hdb->current.y && + myround2(end->y,round)==hdb->current.y && + myround2(c1->y,round)==myround2(mid->y,round) && myround2(nc0->y,round)==myround2(mid->y,round) ) { + if ( gb->pt+7*6+2 >= gb->end ) + GrowBuffer(gb); + AddNumber2(gb,myround2(c0->x,round)-hdb->current.x,round); + AddNumber2(gb,myround2(c1->x,round)-myround2(c0->x,round),round); + AddNumber2(gb,myround2(c1->y,round)-myround2(c0->y,round),round); + AddNumber2(gb,myround2(mid->x,round)-myround2(c1->x,round),round); + AddNumber2(gb,myround2(nc0->x,round)-myround2(mid->x,round),round); + AddNumber2(gb,myround2(nc1->x,round)-myround2(nc0->x,round),round); + AddNumber2(gb,myround2(end->x,round)-myround2(nc1->x,round),round); + *gb->pt++ = 12; *gb->pt++ = 34; /* hflex */ + } else { + if ( gb->pt+11*6+2 >= gb->end ) + GrowBuffer(gb); + AddNumber2(gb,myround2(c0->x,round)-hdb->current.x,round); + AddNumber2(gb,myround2(c0->y,round)-hdb->current.y,round); + AddNumber2(gb,myround2(c1->x,round)-myround2(c0->x,round),round); + AddNumber2(gb,myround2(c1->y,round)-myround2(c0->y,round),round); + AddNumber2(gb,myround2(mid->x,round)-myround2(c1->x,round),round); + AddNumber2(gb,myround2(mid->y,round)-myround2(c1->y,round),round); + AddNumber2(gb,myround2(nc0->x,round)-myround2(mid->x,round),round); + AddNumber2(gb,myround2(nc0->y,round)-myround2(mid->y,round),round); + AddNumber2(gb,myround2(nc1->x,round)-myround2(nc0->x,round),round); + AddNumber2(gb,myround2(nc1->y,round)-myround2(nc0->y,round),round); + if ( hdb->current.y==myround2(end->y,round) ) + AddNumber2(gb,myround2(end->x,round)-myround2(nc1->x,round),round); + else + AddNumber2(gb,myround2(end->y,round)-myround2(nc1->y,round),round); + *gb->pt++ = 12; *gb->pt++ = 37; /* flex1 */ + } + + hdb->current.x = rint(32768*end->x)/32768; + hdb->current.y = rint(32768*end->y)/32768; +} + +static void CvtPsSplineSet2(GrowBuf *gb, SplinePointList *spl, + struct hintdb *hdb, int is_order2,int round ) { + Spline *spline, *first; + SplinePointList temp, *freeme = NULL; + int unhinted = true;; + + if ( is_order2 ) + freeme = spl = SplineSetsPSApprox(spl); + + for ( ; spl!=NULL; spl = spl->next ) { + first = NULL; + SplineSetReverse(spl); + /* PostScript and TrueType store their splines in in reverse */ + /* orientations. Annoying. Oh well. I shall adopt TrueType and */ + /* If I reverse the PS splinesets after reading them in, and then */ + /* again when saving them out, all should be well */ + if ( spl->first->flexy || spl->first->flexx ) { + /* can't handle a flex (mid) point as the first point. rotate the */ + /* list by one, this is possible because only closed paths have */ + /* points marked as flex, and because we can't have two flex mid- */ + /* points in a row */ + if ( spl->first->hintmask==NULL || spl->first->next->to->hintmask!=NULL ) { + /* But we can't rotate it if we expect it to provide us with */ + /* a hintmask. */ + temp = *spl; + temp.first = temp.last = spl->first->next->to; + spl = &temp; + } + if ( spl->first->flexy || spl->first->flexx ) { + /* If we couldn't rotate, or if we rotated to something that */ + /* also is flexible, then just turn off flex. That's safe */ + spl->first->flexx = spl->first->flexy = false; + } + } + if ( unhinted && hdb->cnt>0 && spl->first->hintmask!=NULL ) { + hdb->mask[0] = ~(*spl->first->hintmask)[0]; /* Make it different */ + unhinted = false; + } + moveto2(gb,hdb,spl->first,round); + for ( spline = spl->first->next; spline!=NULL && spline!=first; ) { + if ( first==NULL ) first = spline; + else if ( first->from==spline->to ) + hdb->skiphm = true; + if ( spline->to->flexx || spline->to->flexy ) { + flexto2(gb,hdb,spline,round); /* does two adjacent splines */ + spline = spline->to->next->to->next; + } else if ( spline->knownlinear && spline->to == spl->first ) + /* In Type2 we don't even need a closepath to finish this off */ + /* (which is good, because there isn't a close path) */ + break; + else if ( spline->knownlinear ) + spline = lineto2(gb,hdb,spline,first,round); + else + spline = curveto2(gb,hdb,spline,first,round); + } + hdb->skiphm = false; + /* No closepath oper in type2 fonts, it's implied */ + SplineSetReverse(spl); + /* Of course, I have to Reverse again to get back to my convention after*/ + /* saving */ + } + SplinePointListsFree(freeme); +} + +static void DumpHints(GrowBuf *gb,StemInfo *h,int oper,int midoper,int round) { + real last = 0, cur; + int cnt; + + if ( h==NULL ) +return; + cnt = 0; + while ( h!=NULL && h->hintnumber!=-1 ) { + /* Type2 hints do not support negative widths except in the case of */ + /* ghost (now called edge) hints */ + if ( cnt>24-1 ) { /* stack max = 48 numbers, => 24 hints, leave a bit of slop for the width */ + if ( gb->pt+1>=gb->end ) + GrowBuffer(gb); + *gb->pt++ = midoper; + cnt = 0; + } + cur = myround2(h->start,round) + myround2(h->width,round); + if ( h->width<0 ) { + AddNumber2(gb,cur-last,round); + AddNumber2(gb,-myround2(h->width,round),round); + cur -= myround2(h->width,round); + } else if ( h->ghost ) { + if ( h->width==20 ) { + AddNumber2(gb,myround2(h->start,round)-last+20,round); + AddNumber2(gb,-20,round); + cur = myround2(h->start,round); + } else { + AddNumber2(gb,myround2(h->start+21,round)-last,round); + AddNumber2(gb,-21,round); + cur = myround2(h->start+21,round)-21; + } + } else { + AddNumber2(gb,myround2(h->start,round)-last,round); + AddNumber2(gb,myround2(h->width,round),round); + } + last = cur; + h = h->next; + ++cnt; + } + if ( oper!=-1 ) { + if ( gb->pt+1>=gb->end ) + GrowBuffer(gb); + *gb->pt++ = oper; + } +} + +static void DumpRefsHints(GrowBuf *gb, struct hintdb *hdb,RefChar *cur,StemInfo *h,StemInfo *v, + BasePoint *trans, int round,int layer) { + uint8 masks[12]; + int cnt, sets=0; + StemInfo *rs; + + /* trans has already been rounded (whole char is translated by an integral amount) */ + + /* If we have a subroutine containing conflicts, then its hints will match*/ + /* ours exactly, and we can use its hintmasks directly */ + if (( cur->sc->hconflicts || cur->sc->vconflicts ) && + cur->sc->layers[layer].splines!=NULL && + cur->sc->layers[layer].splines->first->hintmask!=NULL ) { + AddMask2(gb,*cur->sc->layers[layer].splines->first->hintmask,hdb->cnt,19); /* hintmask */ + hdb->donefirsthm = true; + memcpy(hdb->mask,*cur->sc->layers[layer].splines->first->hintmask,sizeof(HintMask)); +return; + } + + if ( h==NULL && v==NULL ) + IError("hintmask invoked when there are no hints"); + memset(masks,'\0',sizeof(masks)); + cnt = 0; + while ( h!=NULL && h->hintnumber>=0 ) { + /* Horizontal stems are defined by vertical bounds */ + real pos = (round ? rint(h->start) : h->start) - trans->y; + for ( rs = cur->sc->hstem; rs!=NULL; rs=rs->next ) { + real rpos = round ? rint(rs->start) : rs->start; + if ( rpos==pos && (round ? (rint(rs->width)==rint(h->width)) : (rs->width==h->width)) ) { + masks[h->hintnumber>>3] |= 0x80>>(h->hintnumber&7); + ++sets; + break; + } else if ( rpos>pos ) + break; + } + h = h->next; ++cnt; + } + while ( v!=NULL && v->hintnumber>=0 ) { + real pos = (round ? rint(v->start) : v->start) - trans->x; + for ( rs = cur->sc->vstem; rs!=NULL; rs=rs->next ) { + real rpos = round ? rint(rs->start) : rs->start; + if ( rpos==pos && (round ? (rint(rs->width)==rint(v->width)) : (rs->width==v->width)) ) { + masks[v->hintnumber>>3] |= 0x80>>(v->hintnumber&7); + ++sets; + break; + } else if ( rpos>pos ) + break; + } + v = v->next; ++cnt; + } + BreakSubroutine(gb,hdb); + hdb->donefirsthm = true; + /* if ( sets!=0 ) */ /* First ref will need a hintmask even if it has no hints (if there are conflicts) */ + AddMask2(gb,masks,cnt,19); /* hintmask */ +} + +static void DummyHintmask(GrowBuf *gb,struct hintdb *hdb) { + HintMask hm; + + memset(hm,0,sizeof(hm)); + if ( hdb->cnt!=0 ) { + BreakSubroutine(gb,hdb); + hdb->donefirsthm = true; + AddMask2(gb,hm,hdb->cnt,19); /* hintmask */ + } +} + +static void SetTransformedHintMask(GrowBuf *gb,struct hintdb *hdb, + SplineChar *sc, RefChar *ref, BasePoint *trans, int round) { + HintMask hm; + + if ( HintMaskFromTransformedRef(ref,trans,sc,&hm)!=NULL ) { + BreakSubroutine(gb,hdb); + hdb->donefirsthm = true; + AddMask2(gb,hm,hdb->cnt,19); /* hintmask */ + } else if ( !hdb->donefirsthm ) + DummyHintmask(gb,hdb); +} + +static void ExpandRef2(GrowBuf *gb, SplineChar *sc, struct hintdb *hdb, + RefChar *r, BasePoint *trans, + struct pschars *subrs, int round,int layer) { + BasePoint *bpt; + BasePoint temp, rtrans; + GlyphInfo *gi; + /* The only refs I deal with here have no hint conflicts within them */ + + rtrans.x = r->transform[4]+trans->x; + rtrans.y = r->transform[5]+trans->y; + if ( round ) { + rtrans.x = rint(rtrans.x); + rtrans.y = rint(rtrans.y); + } + + BreakSubroutine(gb,hdb); + if ( hdb->cnt>0 && !hdb->noconflicts ) + DumpRefsHints(gb,hdb,r,sc->hstem,sc->vstem,&rtrans,round,layer); + + /* Translate from end of last character to where this one should */ + /* start (we must have one moveto operator to start off, none */ + /* in the subr) */ + bpt = hdb->gi->psubrs[r->sc->lsidebearing].startstop; + temp.x = bpt[0].x+rtrans.x; + temp.y = bpt[0].y+rtrans.y; + if ( hdb->current.x!=temp.x ) + AddNumber2(gb,temp.x-hdb->current.x,round); + if ( hdb->current.y!=temp.y || hdb->current.x==temp.x ) + AddNumber2(gb,temp.y-hdb->current.y,round); + if ( gb->pt+1>=gb->end ) + GrowBuffer(gb); + *gb->pt++ = hdb->current.x==temp.x?4: /* vmoveto */ + hdb->current.y==temp.y?22: /* hmoveto */ + 21; /* rmoveto */ + if ( r->sc->lsidebearing==0x7fff ) + IError("Attempt to reference an unreferenceable glyph %s", r->sc->name ); + + gi = hdb->gi; + StartNextSubroutine(gb,hdb); + gi->bits[gi->bcnt].psub_index = r->sc->lsidebearing; + ++gi->bcnt; + gi->justbroken = true; + hdb->current.x = bpt[1].x+rtrans.x; + hdb->current.y = bpt[1].y+rtrans.y; +} + +static void RSC2PS2(GrowBuf *gb, SplineChar *base,SplineChar *rsc, + struct hintdb *hdb, BasePoint *trans, struct pschars *subrs, + int flags, int layer ) { + BasePoint subtrans; + int stationary = trans->x==0 && trans->y==0; + RefChar *r, *unsafe=NULL; + int unsafecnt=0, allwithouthints=true; + int round = (flags&ps_flag_round)? true : false; + StemInfo *oldh, *oldv; + int hc, vc; + SplineSet *freeme, *temp; + int wasntconflicted = hdb->noconflicts; + + if ( flags&ps_flag_nohints ) { + oldh = rsc->hstem; oldv = rsc->vstem; + hc = rsc->hconflicts; vc = rsc->vconflicts; + rsc->hstem = NULL; rsc->vstem = NULL; + rsc->hconflicts = false; rsc->vconflicts = false; + } else { + for ( r=rsc->layers[layer].refs; r!=NULL; r=r->next ) { + if ( !r->justtranslated ) + continue; + if ( r->sc->hconflicts || r->sc->vconflicts ) { + ++unsafecnt; + unsafe = r; + } else if ( r->sc->hstem!=NULL || r->sc->vstem!=NULL ) + allwithouthints = false; + } + if ( !stationary ) + allwithouthints = false; + if ( allwithouthints && unsafe!=NULL && hdb->cnt!=NumberHints(&unsafe->sc,1)) + allwithouthints = false; /* There are other hints elsewhere in the base glyph */ + } + + if ( unsafe && allwithouthints ) { + if ( unsafe->sc->lsidebearing!=0x7fff ) { + ExpandRef2(gb,base,hdb,unsafe,trans,subrs,round,layer); + } else if ( unsafe->transform[4]==0 && unsafe->transform[5]==0 ) + RSC2PS2(gb,base,unsafe->sc,hdb,trans,subrs,flags,layer); + else + unsafe = NULL; + } else + unsafe = NULL; + + /* What is the hintmask state here? It should not matter */ + freeme = NULL; temp = rsc->layers[layer].splines; + if ( base!=rsc ) + temp = freeme = SPLCopyTranslatedHintMasks(temp,base,rsc,trans); + CvtPsSplineSet2(gb,temp,hdb,rsc->layers[layer].order2,round); + SplinePointListsFree(freeme); + + for ( r = rsc->layers[layer].refs; r!=NULL; r = r->next ) if ( r!=unsafe ) { + if ( !r->justtranslated ) { + if ( !r->sc->hconflicts && !r->sc->vconflicts && !hdb->noconflicts && + r->transform[1]==0 && r->transform[2]==0 && + r->transform[0]>0 && r->transform[3]>0 ) + SetTransformedHintMask(gb,hdb,base,r,trans,round); + if ( !hdb->donefirsthm ) + DummyHintmask(gb,hdb); + temp = SPLCopyTransformedHintMasks(r,base,trans,layer); + CvtPsSplineSet2(gb,temp,hdb,rsc->layers[layer].order2,round); + SplinePointListsFree(temp); + } else if ( r->sc->lsidebearing!=0x7fff && + ((flags&ps_flag_nohints) || + (!r->sc->hconflicts && !r->sc->vconflicts)) ) { + ExpandRef2(gb,base,hdb,r,trans,subrs,round,layer); + } else { + subtrans.x = trans->x + r->transform[4]; + subtrans.y = trans->y + r->transform[5]; + if ( !hdb->noconflicts && !r->sc->hconflicts && !r->sc->vconflicts) { + SetTransformedHintMask(gb,hdb,base,r,trans,round); + hdb->noconflicts = true; + } + RSC2PS2(gb,base,r->sc,hdb,&subtrans,subrs,flags,layer); + hdb->noconflicts = wasntconflicted; + } + } + + if ( flags&ps_flag_nohints ) { + rsc->hstem = oldh; rsc->vstem = oldv; + rsc->hconflicts = hc; rsc->vconflicts = vc; + } +} + +static unsigned char *SplineChar2PS2(SplineChar *sc,int *len, int nomwid, + int defwid, struct pschars *subrs, int flags, + GlyphInfo *gi) { + GrowBuf gb; + unsigned char *ret; + struct hintdb hdb; + StemInfo *oldh, *oldv; + int hc, vc; + SplineChar *scs[MmMax]; + int round = (flags&ps_flag_round)? true : false; + HintMask *hm = NULL; + BasePoint trans; + + if ( !(flags&ps_flag_nohints) && SCNeedsSubsPts(sc,ff_otf,gi->layer)) + SCFigureHintMasks(sc,gi->layer); + + if ( flags&ps_flag_nohints ) { + oldh = sc->hstem; oldv = sc->vstem; + hc = sc->hconflicts; vc = sc->vconflicts; + sc->hstem = NULL; sc->vstem = NULL; + sc->hconflicts = false; sc->vconflicts = false; + } else if ( sc->layers[gi->layer].splines!=NULL && !sc->vconflicts && + !sc->hconflicts ) { + hm = sc->layers[gi->layer].splines->first->hintmask; + sc->layers[gi->layer].splines->first->hintmask = NULL; + } + + memset(&gb,'\0',sizeof(gb)); + + GrowBuffer(&gb); + + /* store the width on the stack */ + if ( sc->width==defwid ) + /* Don't need to do anything for the width */; + else + AddNumber2(&gb,sc->width-nomwid,round); + + memset(&trans,'\0',sizeof(trans)); + memset(&hdb,'\0',sizeof(hdb)); + hdb.scs = scs; + hdb.gi = gi; + if ( gi!=NULL ) + gi->bcnt = -1; + scs[0] = sc; + hdb.noconflicts = !sc->hconflicts && !sc->vconflicts; + hdb.cnt = NumberHints(hdb.scs,1); + DumpHints(&gb,sc->hstem,sc->hconflicts || sc->vconflicts?18:1, + sc->hconflicts || sc->vconflicts?18:1,round); + DumpHints(&gb,sc->vstem,sc->hconflicts || sc->vconflicts?-1:3, + sc->hconflicts || sc->vconflicts?23:3,round); + CounterHints2(&gb, sc, hdb.cnt ); + RSC2PS2(&gb,sc,sc,&hdb,&trans,subrs,flags,gi->layer); + + if ( gi->bcnt==-1 ) { /* If it's whitespace */ + gi->bcnt = 0; + StartNextSubroutine(&gb,&hdb); + } + BreakSubroutine(&gb,&hdb); + MoveSubrsToChar(gi); + ret = NULL; + + free(gb.base); + if ( flags&ps_flag_nohints ) { + sc->hstem = oldh; sc->vstem = oldv; + sc->hconflicts = hc; sc->vconflicts = vc; + } else if ( hm!=NULL ) + sc->layers[gi->layer].splines->first->hintmask = hm; +return( ret ); +} + +static SplinePoint *FFLineTo(SplinePoint *last, int x, int y) { + SplinePoint *sp = SplinePointCreate(x,y); + SplineMake3(last,sp); +return( sp ); +} + +static void Type2NotDefSplines(SplineFont *sf,SplineChar *sc,int layer) { + /* I'd always assumed that Type2 notdefs would look like type1 notdefs */ + /* but they don't, they look like truetype notdefs. And Ralf Stubner */ + /* points out that the spec says they should. So make a box here */ + int stem, ymax; + SplineSet *inner, *ss; + StemInfo *h, *hints; + + stem = (sf->ascent+sf->descent)/20; + ymax = 2*sf->ascent/3; + + ss = chunkalloc(sizeof(SplineSet)); + ss->first = ss->last = SplinePointCreate(stem,0); + ss->last = FFLineTo(ss->last,stem,ymax); + ss->last = FFLineTo(ss->last,sc->width-stem,ymax); + ss->last = FFLineTo(ss->last,sc->width-stem,0); + SplineMake3(ss->last,ss->first); + ss->last = ss->first; + + ss->next = inner = chunkalloc(sizeof(SplineSet)); + inner->first = inner->last = SplinePointCreate(2*stem,stem); + inner->last = FFLineTo(inner->last,sc->width-2*stem,stem); + inner->last = FFLineTo(inner->last,sc->width-2*stem,ymax-stem); + inner->last = FFLineTo(inner->last,2*stem,ymax-stem); + SplineMake3(inner->last,inner->first); + inner->last = inner->first; + + sc->layers[layer].splines = ss; + + hints = chunkalloc(sizeof(StemInfo)); + hints->start = stem; + hints->width = stem; + hints->next = h = chunkalloc(sizeof(StemInfo)); + h->start = sc->width-2*stem; + h->width = stem; + sc->vstem = hints; + + hints = chunkalloc(sizeof(StemInfo)); + hints->start = 0; + hints->width = stem; + hints->next = h = chunkalloc(sizeof(StemInfo)); + h->start = ymax-stem; + h->width = stem; + sc->hstem = hints; +} + +/* Mark those glyphs which can live totally in subrs */ +static void SplineFont2FullSubrs2(int flags,GlyphInfo *gi) { + int i; + SplineChar *sc; + + for ( i=0; iglyphcnt; ++i ) if ( (sc=gi->gb[i].sc)!=NULL ) + sc->lsidebearing = 0x7fff; + +} + +struct pschars *SplineFont2ChrsSubrs2(SplineFont *sf, int nomwid, int defwid, + const int *bygid, int cnt, int flags, struct pschars **_subrs, int layer) { + struct pschars *subrs, *chrs; + int i,j,k,scnt; + SplineChar *sc; + GlyphInfo gi; + SplineChar dummynotdef; + + memset(&gi,0,sizeof(gi)); + memset(&gi.hashed,-1,sizeof(gi.hashed)); + gi.instance_count = 1; + gi.sf = sf; + gi.layer = layer; + gi.glyphcnt = cnt; + gi.bygid = bygid; + gi.gb = gcalloc(cnt,sizeof(struct glyphbits)); + gi.pmax = 3*cnt; + gi.psubrs = galloc(gi.pmax*sizeof(struct potentialsubrs)); + for ( i=0; ilayer_cnt; + dummynotdef.layers = gcalloc(sf->layer_cnt,sizeof(Layer)); + dummynotdef.width = SFOneWidth(sf); + if ( dummynotdef.width==-1 ) + dummynotdef.width = (sf->ascent+sf->descent)/2; + Type2NotDefSplines(sf,&dummynotdef,layer); + } else if ( gid!=-1 ) + sc = sf->glyphs[gid]; + else + continue; + gi.gb[i].sc = sc; + sc->lsidebearing = 0x7fff; + } + MarkTranslationRefs(sf,layer); + SplineFont2FullSubrs2(flags,&gi); + + for ( i=0; i(gi.psubrs[i].cnt*4)+gi.psubrs[i].len+1 ) + gi.psubrs[i].idx = scnt++; + else + gi.psubrs[i].idx = -1; + } + subrs = gcalloc(1,sizeof(struct pschars)); + subrs->cnt = scnt; + subrs->next = scnt; + subrs->lens = galloc(scnt*sizeof(int)); + subrs->values = galloc(scnt*sizeof(unsigned char *)); + subrs->bias = scnt<1240 ? 107 : + scnt<33900 ? 1131 : 32768; + for ( i=0; ilens[scnt] = gi.psubrs[i].len+1; + subrs->values[scnt] = galloc(subrs->lens[scnt]); + memcpy(subrs->values[scnt],gi.psubrs[i].data,gi.psubrs[i].len); + subrs->values[scnt][gi.psubrs[i].len] = 11; /* Add a return to end of subr */ + } + } + + chrs = gcalloc(1,sizeof(struct pschars)); + chrs->cnt = cnt; + chrs->next = cnt; + chrs->lens = galloc(cnt*sizeof(int)); + chrs->values = galloc(cnt*sizeof(unsigned char *)); + chrs->keys = galloc(cnt*sizeof(char *)); + for ( i=0; isc==NULL ) + continue; + chrs->keys[i] = copy(gb->sc->name); + for ( k=0; k<2; ++k ) if ( k!=0 || gb->sc->lsidebearing!=0x7fff ) { + for ( j=0; jbcnt; ++j ) { + if ( k!=0 || j!=0 ) + len += gb->bits[j].dlen; + if ( k==1 && gb->sc->lsidebearing!=0x7fff ) { + int si = gi.psubrs[ gb->sc->lsidebearing ].idx; + len += 1 + (si<=107 && si>=-107?1:si<=1131 && si>=-1131?2:si>=-32768 && si<32767?3:8); + break; + } + if ( gi.psubrs[ gb->bits[j].psub_index ].idx==-1 ) + len += gi.psubrs[ gb->bits[j].psub_index ].len; + else { + int si = gi.psubrs[ gb->bits[j].psub_index ].idx - subrs->bias; + /* space for the number (subroutine index) */ + if ( si>=-107 && si<=107 ) + ++len; + else if ( si>=-1131 && si<=1131 ) + len += 2; + else if ( si>=-32768 && si<=32767 ) + len += 3; + else + len += 8; + /* space for the subroutine operator */ + ++len; + } + } + if ( k==0 ) { + int si = gi.psubrs[ gb->sc->lsidebearing ].idx; + subrs->lens[si] = len+1; + vals = subrs->values[si] = galloc(len+2); + } else { + chrs->lens[i] = len+1; + vals = chrs->values[i] = galloc(len+2); /* space for endchar and a final NUL (which is really meaningless, but makes me feel better) */ + } + + len = 0; + for ( j=0; jbcnt; ++j ) { + int si; + if ( k!=0 || j!=0 ) { + memcpy(vals+len,gb->bits[j].data,gb->bits[j].dlen); + len += gb->bits[j].dlen; + } + si = 0x80000000; + if ( k==1 && gb->sc->lsidebearing!=0x7fff ) + si = gi.psubrs[ gb->sc->lsidebearing ].idx - subrs->bias; + else if ( gi.psubrs[ gb->bits[j].psub_index ].idx==-1 ) { + memcpy(vals+len,gi.psubrs[ gb->bits[j].psub_index ].data, + gi.psubrs[ gb->bits[j].psub_index ].len); + len += gi.psubrs[ gb->bits[j].psub_index ].len; + } else + si = gi.psubrs[ gb->bits[j].psub_index ].idx - subrs->bias; + if ( si!=0x80000000 ) { + /* space for the number (subroutine index) */ + if ( si>=-107 && si<=107 ) + vals[len++] = si+139; + else if ( si>0 && si<=1131 ) { + si-=108; + vals[len++] = (si>>8)+247; + vals[len++] = si&0xff; + } else if ( si>=-1131 && si<0 ) { + si=(-si)-108; + vals[len++] = (si>>8)+251; + vals[len++] = si&0xff; + } else if ( si>=-32768 && si<=32767 ) { + vals[len++] = 28; + vals[len++] = (si>>8)&0xff; + vals[len++] = si&0xff; + } else { + /* store as fixed point, then multiply by 64. Takes 8 bytes */ + si *= (65536/64); + vals[len++] = '\377'; + vals[len++] = (si>>24)&0xff; + vals[len++] = (si>>16)&0xff; + vals[len++] = (si>>8)&0xff; + vals[len++] = si&0xff; + vals[len++] = 64 + 139; + vals[len++] = 0xc; vals[len++] = 0x18; /* Multiply */ + } + + /* space for the subroutine operator */ + vals[len++] = 10; + } + if ( k==1 && gb->sc->lsidebearing!=0x7fff ) + break; + } + if ( k==0 ) { + vals[len++] = 11; /* return */ + vals[len] = '\0'; + } else { + vals[len++] = 14; /* endchar */ + vals[len] = '\0'; + } + } + } + + GIFree(&gi,&dummynotdef); + *_subrs = subrs; +return( chrs ); +} + +struct pschars *CID2ChrsSubrs2(SplineFont *cidmaster,struct fd2data *fds, + int flags, struct pschars **_glbls, int layer) { + struct pschars *chrs, *glbls; + int i, j, cnt, cid, max, fd; + int *scnts; + SplineChar *sc; + SplineFont *sf = NULL; + /* In a cid-keyed font, cid 0 is defined to be .notdef so there are no */ + /* special worries. If it is defined we use it. If it is not defined */ + /* we add it. */ + GlyphInfo gi; + SplineChar dummynotdef; + + max = 0; + for ( i=0; isubfontcnt; ++i ) { + if ( maxsubfonts[i]->glyphcnt ) + max = cidmaster->subfonts[i]->glyphcnt; + MarkTranslationRefs(cidmaster->subfonts[i],layer); + } + cnt = 1; /* for .notdef */ + for ( cid = 1; cidsubfontcnt; ++i ) { + sf = cidmaster->subfonts[i]; + if ( cidglyphcnt && (sc=sf->glyphs[cid])!=NULL ) { + sc->ttf_glyph = -1; + sc->lsidebearing = 0x7fff; + if ( SCWorthOutputting(sc)) + ++cnt; + break; + } + } + } + + memset(&gi,0,sizeof(gi)); + memset(&gi.hashed,-1,sizeof(gi.hashed)); + gi.instance_count = 1; + gi.sf = sf; + gi.glyphcnt = cnt; + gi.bygid = NULL; + gi.gb = gcalloc(cnt,sizeof(struct glyphbits)); + gi.pmax = 3*cnt; + gi.psubrs = galloc(gi.pmax*sizeof(struct potentialsubrs)); + gi.layer = layer; + + for ( cid = cnt = 0; cidsubfontcnt; ++i ) { + sf = cidmaster->subfonts[i]; + if ( cidglyphcnt && SCWorthOutputting(sf->glyphs[cid]) ) + break; + } + if ( cid!=0 && i==cidmaster->subfontcnt ) { + sc=NULL; + } else if ( i==cidmaster->subfontcnt ) { + /* They didn't define CID 0 */ + sc = &dummynotdef; + /* Place it in the final subfont (which is what sf points to) */ + memset(sc,0,sizeof(dummynotdef)); + dummynotdef.name = ".notdef"; + dummynotdef.parent = sf; + dummynotdef.layer_cnt = layer+1; + dummynotdef.layers = gcalloc(layer+1,sizeof(Layer)); + dummynotdef.width = SFOneWidth(sf); + if ( dummynotdef.width==-1 ) + dummynotdef.width = (sf->ascent+sf->descent); + Type2NotDefSplines(sf,&dummynotdef,layer); + gi.gb[cnt].sc = sc; + gi.gb[cnt].fd = i = cidmaster->subfontcnt-1; +#if 0 && HANYANG /* Too much stuff knows the glyph cnt, can't refigure it here at the end */ + } else if ( sf->glyphs[cid]->compositionunit ) { + sc=NULL; /* don't output it, should be in a subroutine */; +#endif + } else { + gi.gb[cnt].sc = sc = sf->glyphs[cid]; + gi.gb[cnt].fd = i; + } + if ( sc!=NULL ) { + sc->lsidebearing = 0x7fff; + gi.active = &gi.gb[cnt]; + sc->ttf_glyph = cnt++; + SplineChar2PS2(sc,NULL,fds[i].nomwid,fds[i].defwid,NULL,flags,&gi); + } + ff_progress_next(); + } + + scnts = gcalloc( cidmaster->subfontcnt+1,sizeof(int)); + for ( i=0; i(gi.psubrs[i].cnt*4)+gi.psubrs[i].len+1 ) + gi.psubrs[i].idx = scnts[gi.psubrs[i].fd+1]++; + } + + glbls = gcalloc(1,sizeof(struct pschars)); + glbls->cnt = scnts[0]; + glbls->next = scnts[0]; + glbls->lens = galloc(scnts[0]*sizeof(int)); + glbls->values = galloc(scnts[0]*sizeof(unsigned char *)); + glbls->bias = scnts[0]<1240 ? 107 : + scnts[0]<33900 ? 1131 : 32768; + for ( fd=0; fdsubfontcnt; ++fd ) { + fds[fd].subrs = gcalloc(1,sizeof(struct pschars)); + fds[fd].subrs->cnt = scnts[fd+1]; + fds[fd].subrs->next = scnts[fd+1]; + fds[fd].subrs->lens = galloc(scnts[fd+1]*sizeof(int)); + fds[fd].subrs->values = galloc(scnts[fd+1]*sizeof(unsigned char *)); + fds[fd].subrs->bias = scnts[fd+1]<1240 ? 107 : + scnts[fd+1]<33900 ? 1131 : 32768; + } + free( scnts); + + for ( i=0; ilens[scnt] = gi.psubrs[i].len+1; + subrs->values[scnt] = galloc(subrs->lens[scnt]); + memcpy(subrs->values[scnt],gi.psubrs[i].data,gi.psubrs[i].len); + subrs->values[scnt][gi.psubrs[i].len] = 11; /* Add a return to end of subr */ + } + } + + + chrs = gcalloc(1,sizeof(struct pschars)); + chrs->cnt = cnt; + chrs->next = cnt; + chrs->lens = galloc(cnt*sizeof(int)); + chrs->values = galloc(cnt*sizeof(unsigned char *)); + chrs->keys = galloc(cnt*sizeof(char *)); + for ( i=0; ikeys[i] = copy(gb->sc->name); + for ( j=0; jbcnt; ++j ) { + len += gb->bits[j].dlen; + if ( gi.psubrs[ gb->bits[j].psub_index ].idx==-1 ) + len += gi.psubrs[ gb->bits[j].psub_index ].len; + else { + struct pschars *subrs = gi.psubrs[gb->bits[j].psub_index].fd==-1 ? glbls : fds[gi.psubrs[gb->bits[j].psub_index].fd].subrs; + int si = gi.psubrs[ gb->bits[j].psub_index ].idx - subrs->bias; + /* space for the number (subroutine index) */ + if ( si>=-107 && si<=107 ) + ++len; + else if ( si>=-1131 && si<=1131 ) + len += 2; + else if ( si>=-32768 && si<=32767 ) + len += 3; + else + len += 8; + /* space for the subroutine operator */ + ++len; + } + } + chrs->lens[i] = len+1; + chrs->values[i] = galloc(len+2); /* space for endchar and a final NUL (which is really meaningless, but makes me feel better) */ + + len = 0; + for ( j=0; jbcnt; ++j ) { + memcpy(chrs->values[i]+len,gb->bits[j].data,gb->bits[j].dlen); + len += gb->bits[j].dlen; + if ( gi.psubrs[ gb->bits[j].psub_index ].idx==-1 ) { + memcpy(chrs->values[i]+len,gi.psubrs[ gb->bits[j].psub_index ].data, + gi.psubrs[ gb->bits[j].psub_index ].len); + len += gi.psubrs[ gb->bits[j].psub_index ].len; + } else { + struct pschars *subrs = gi.psubrs[gb->bits[j].psub_index].fd==-1 ? glbls : fds[gi.psubrs[gb->bits[j].psub_index].fd].subrs; + int si = gi.psubrs[ gb->bits[j].psub_index ].idx - subrs->bias; + /* space for the number (subroutine index) */ + if ( si>=-107 && si<=107 ) + chrs->values[i][len++] = si+139; + else if ( si>0 && si<=1131 ) { + si-=108; + chrs->values[i][len++] = (si>>8)+247; + chrs->values[i][len++] = si&0xff; + } else if ( si>=-1131 && si<0 ) { + si=(-si)-108; + chrs->values[i][len++] = (si>>8)+251; + chrs->values[i][len++] = si&0xff; + } else if ( si>=-32768 && si<=32767 ) { + chrs->values[i][len++] = 28; + chrs->values[i][len++] = (si>>8)&0xff; + chrs->values[i][len++] = si&0xff; + } else { + /* store as fixed point, then multiply by 64. Takes 8 bytes */ + si *= (65536/64); + chrs->values[i][len++] = '\377'; + chrs->values[i][len++] = (si>>24)&0xff; + chrs->values[i][len++] = (si>>16)&0xff; + chrs->values[i][len++] = (si>>8)&0xff; + chrs->values[i][len++] = si&0xff; + chrs->values[i][len++] = 64 + 139; + chrs->values[i][len++] = 0xc; chrs->values[i][len++] = 0x18; /* Multiply */ + } + /* space for the subroutine operator */ + if ( gi.psubrs[ gb->bits[j].psub_index ].fd==-1 ) { + chrs->values[i][len++] = 29; + } else + chrs->values[i][len++] = 10; + } + } + chrs->values[i][len++] = 14; /* endchar */ + chrs->values[i][len] = '\0'; + } + GIFree(&gi,&dummynotdef); + *_glbls = glbls; +return( chrs ); +} + diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/splinesaveafm.c b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/splinesaveafm.c new file mode 100644 index 00000000000..4607ee38819 --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/splinesaveafm.c @@ -0,0 +1,261 @@ +/* Copyright (C) 2000-2008 by George Williams */ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "fontforgevw.h" /* For Error */ +#include +#include "splinefont.h" +#include +#include +#include +#include + +#include /* For stat */ +#include +#include + +#ifdef __CygWin + #include + #include + #include +#endif + +static void *mygets(FILE *file,char *buffer,int size) { + char *end = buffer+size-1; + char *pt = buffer; + int ch; + + while ( (ch=getc(file))!=EOF && ch!='\r' && ch!='\n' && ptkerns; kp!=NULL && kp->sc!=sc2; kp = kp->next ); + if ( kp!=NULL ) + kp->off = off; + else if ( off!=0 ) { + kp = chunkalloc(sizeof(KernPair)); + kp->sc = sc2; + kp->off = off; + script = SCScriptFromUnicode(sc1); + if ( script==DEFAULT_SCRIPT ) + script = SCScriptFromUnicode(sc2); + kp->subtable = SFSubTableFindOrMake(sc1->parent, + isv?CHR('v','k','r','n'):CHR('k','e','r','n'), + script, gpos_pair); + if ( isv ) { + kp->next = sc1->vkerns; + sc1->vkerns = kp; + } else { + kp->next = sc1->kerns; + sc1->kerns = kp; + } + } + } +} + +int LoadKerningDataFromAfm(SplineFont *sf, char *filename,EncMap *map) { + FILE *file = fopen(filename,"r"); + char buffer[200], *pt, *ept, ch; + SplineChar *sc1, *sc2; + int off; + char name[44], second[44], lig[44], buf2[100]; + PST *liga; + double scale = (sf->ascent+sf->descent)/1000.0; + + if ( file==NULL ) +return( 0 ); + ff_progress_change_line2(_("Reading AFM file")); + while ( mygets(file,buffer,sizeof(buffer))!=NULL ) { + if ( strncmp(buffer,"KPX",3)==0 || strncmp(buffer,"KPY",3)==0 ) { + int isv = strncmp(buffer,"KPY",3)==0; + for ( pt=buffer+3; isspace(*pt); ++pt); + for ( ept = pt; *ept!='\0' && !isspace(*ept); ++ept ); + ch = *ept; *ept = '\0'; + sc1 = SFGetChar(sf,-1,pt); + *ept = ch; + for ( pt=ept; isspace(*pt); ++pt); + for ( ept = pt; *ept!='\0' && !isspace(*ept); ++ept ); + ch = *ept; *ept = '\0'; + sc2 = SFGetChar(sf,-1,pt); + *ept = ch; + off = strtol(ept,NULL,10); + KPInsert(sc1,sc2,rint(off*scale),isv); + } else if ( buffer[0]=='C' && isspace(buffer[1])) { + char *pt; + sc2 = NULL; + for ( pt= strchr(buffer,';'); pt!=NULL; pt=strchr(pt+1,';') ) { + if ( sscanf( pt, "; N %40s", name )==1 ) + sc2 = SFGetChar(sf,-1,name); + else if ( sc2!=NULL && + sscanf( pt, "; L %40s %40s", second, lig)==2 ) { + sc1 = SFGetChar(sf,-1,lig); + if ( sc1!=NULL ) { + sprintf( buf2, "%s %s", name, second); + for ( liga=sc1->possub; liga!=NULL; liga=liga->next ) { + if ( liga->type == pst_ligature && strcmp(liga->u.lig.components,buf2)==0 ) + break; + } + if ( liga==NULL ) { + liga = chunkalloc(sizeof(PST)); + liga->subtable = SFSubTableFindOrMake(sf, + CHR('l','i','g','a'),SCScriptFromUnicode(sc2), + gsub_ligature); + liga->subtable->lookup->store_in_afm = true; + liga->type = pst_ligature; + liga->next = sc1->possub; + sc1->possub = liga; + liga->u.lig.lig = sc1; + liga->u.lig.components = copy( buf2 ); + } + } + } + } + } + } + fclose(file); +return( 1 ); +} + +static void CheckMMAfmFile(SplineFont *sf,char *amfm_filename,char *fontname,EncMap *map) { + /* the afm file should be in the same directory as the amfm file */ + /* with the fontname as the filename */ + char *temp, *pt; + + free(sf->fontname); + sf->fontname = copy(fontname); + + temp = galloc(strlen(amfm_filename)+strlen(fontname)+strlen(".afm")+1); + strcpy(temp, amfm_filename); + pt = strrchr(temp,'/'); + if ( pt==NULL ) pt = temp; + else ++pt; + strcpy(pt,fontname); + pt += strlen(pt); + strcpy(pt,".afm"); + if ( !LoadKerningDataFromAfm(sf,temp,map) ) { + strcpy(pt,".AFM"); + LoadKerningDataFromAfm(sf,temp,map); + } + free(temp); +} + +int LoadKerningDataFromAmfm(SplineFont *sf, char *filename,EncMap *map) { + FILE *file=NULL; + char buffer[280], *pt, lastname[257]; + int index, i; + MMSet *mm = sf->mm; + + if ( mm!=NULL ) + file = fopen(filename,"r"); + pt = strstrmatch(filename,".amfm"); + if ( pt!=NULL ) { + char *afmname = copy(filename); + strcpy(afmname+(pt-filename),isupper(pt[1])?".AFM":".afm"); + LoadKerningDataFromAfm(mm->normal,afmname,map); + free(afmname); + } + if ( file==NULL ) +return( 0 ); + + ff_progress_change_line2(_("Reading AFM file")); + while ( fgets(buffer,sizeof(buffer),file)!=NULL ) { + if ( strstrmatch(buffer,"StartMaster")!=NULL ) + break; + } + index = -1; lastname[0] = '\0'; + while ( fgets(buffer,sizeof(buffer),file)!=NULL ) { + if ( strstrmatch(buffer,"EndMaster")!=NULL ) { + if ( lastname[0]!='\0' && index!=-1 && indexinstance_count ) + CheckMMAfmFile(mm->instances[index],filename,lastname,map); + index = -1; lastname[0] = '\0'; + } else if ( sscanf(buffer,"FontName %256s", lastname )== 1 ) { + /* Do Nothing, all done */ + } else if ( (pt = strstr(buffer,"WeightVector"))!=NULL ) { + pt += strlen("WeightVector"); + while ( *pt==' ' || *pt=='[' ) ++pt; + i = 0; + while ( *pt!=']' && *pt!='\0' ) { + if ( *pt=='0' ) + ++i; + else if ( *pt=='1' ) { + index = i; + break; + } + ++pt; + } + } + } + fclose(file); +return( true ); +} + +int CheckAfmOfPostscript(SplineFont *sf,char *psname, EncMap *map) { + char *new, *pt; + int ret; + int wasuc=false; + + new = galloc(strlen(psname)+6); + strcpy(new,psname); + pt = strrchr(new,'.'); + if ( pt==NULL ) pt = new+strlen(new); + else wasuc = isupper(pt[1]); + + if ( sf->mm!=NULL ) { + strcpy(pt,wasuc?".AMFM":".amfm"); + if ( !LoadKerningDataFromAmfm(sf,new,map)) { + strcpy(pt,wasuc?".amfm":".AMFM"); + ret = LoadKerningDataFromAmfm(sf,new,map); + } else + ret = true; + /* The above routine reads from the afm file if one exist */ + } else { + strcpy(pt,wasuc?".AFM":".afm"); + if ( !LoadKerningDataFromAfm(sf,new,map)) { + strcpy(pt,wasuc?".afm":".AFM"); + ret = LoadKerningDataFromAfm(sf,new,map); + } else + ret = true; + } + free(new); +return( ret ); +} + diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/splinestroke.c b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/splinestroke.c new file mode 100644 index 00000000000..ad73a9194c6 --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/splinestroke.c @@ -0,0 +1,1875 @@ +/* Copyright (C) 2000-2008 by George Williams */ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "pfaedit.h" +#include "splinefont.h" +#include +#include + +#define PI 3.1415926535897932 + +typedef struct joininfo { + SplinePoint *from, *to; + real tprev; + real tnext; + BasePoint inter; +} JointPoint; + + +static real SplineAngle(Spline *spline,real t) { + Spline1D *xsp = &spline->splines[0], *ysp = &spline->splines[1]; + real xslope = (3*xsp->a*t+2*xsp->b)*t + xsp->c; + real yslope = (3*ysp->a*t+2*ysp->b)*t + ysp->c; + + if ( xslope==0 && yslope==0 ) { + real faket = (t>.5) ? t-.01 : t+.01; + xslope = (3*xsp->a*faket+2*xsp->b)*faket + xsp->c; + yslope = (3*ysp->a*faket+2*ysp->b)*faket + ysp->c; + } + if ( spline->knownlinear || ( xslope==0 && yslope==0 )) { + xslope = spline->to->me.x-spline->from->me.x; + yslope = spline->to->me.y-spline->from->me.y; + } +return( atan2(yslope,xslope) ); +} + +static int PenCorner(double lineangle,StrokeInfo *si) { + + if ( ( lineangle>=si->penangle && lineangle<=si->penangle+PI/2 ) || + ( lineangle+2*PI>=si->penangle && lineangle+2*PI<=si->penangle+PI/2 ) || + ( lineangle-2*PI>=si->penangle && lineangle-2*PI<=si->penangle+PI/2 ) ) { +return( 0 ); + } else if ( ( lineangle>=si->penangle+PI/2 && lineangle<=si->penangle+PI ) || + ( lineangle+2*PI>=si->penangle+PI/2 && lineangle+2*PI<=si->penangle+PI ) || + ( lineangle-2*PI>=si->penangle+PI/2 && lineangle-2*PI<=si->penangle+PI ) ) { +return( 1 ); + } else if ( ( lineangle>=si->penangle+PI && lineangle<=si->penangle+3*PI/2 ) || + ( lineangle+2*PI>=si->penangle+PI && lineangle+2*PI<=si->penangle+3*PI/2 ) || + ( lineangle-2*PI>=si->penangle+PI && lineangle-2*PI<=si->penangle+3*PI/2 ) ) { +return( 2 ); + } else { +return( 3 ); + } +} + +/* the plus point is where we go when we rotate the line's direction by +90degrees */ +/* and then move radius in that direction. minus is when we rotate -90 and */ +/* then move */ /* counter-clockwise */ +static double SplineExpand(Spline *spline,real t,real toff, StrokeInfo *si, + BasePoint *plus, BasePoint *minus) { + Spline1D *xsp = &spline->splines[0], *ysp = &spline->splines[1]; + BasePoint base; + double lineangle, c,s, factor = 1.0; + + if ( si->factor!=NULL ) + factor = (si->factor)(si->data,spline,t); + + base.x = ((xsp->a*t+xsp->b)*t+xsp->c)*t + xsp->d; + base.y = ((ysp->a*t+ysp->b)*t+ysp->c)*t + ysp->d; + + lineangle = SplineAngle(spline,t+toff); + if ( si->stroke_type != si_caligraphic ) { + c = si->radius*factor*cos(lineangle+PI/2); + s = si->radius*factor*sin(lineangle+PI/2); + plus->y = base.y+s; + plus->x = base.x+c; + minus->y = base.y-s; + minus->x = base.x-c; + } else { + int corner = PenCorner(lineangle,si); + plus->x = base.x + factor*si->xoff[corner]; + plus->y = base.y + factor*si->yoff[corner]; + corner += 2; + minus->x = base.x + factor*si->xoff[corner]; + minus->y = base.y + factor*si->yoff[corner]; + } +return( lineangle ); +} + +static SplinePoint *makequartercircle(real x, real y, real radius, + real xmul, real ymul,SplinePoint *prev) { + SplinePoint *here = SplinePointCreate(x,y); + + if ( xmul==0 ) { + here->nextcp.x = here->prevcp.x = x; + here->nextcp.y = y + .552*ymul*radius; + here->prevcp.y = y - .552*ymul*radius; + } else { + here->nextcp.y = here->prevcp.y = y; + here->nextcp.x = x + .552*xmul*radius; + here->prevcp.x = x - .552*xmul*radius; + } + here->nonextcp = here->noprevcp = false; + if ( prev!=NULL ) + SplineMake3(prev,here); +return( here ); +} + +static SplinePoint *makeline(SplinePoint *prev, real x, real y) { + SplinePoint *here = SplinePointCreate(x,y); + here->pointtype = pt_corner; + if ( prev!=NULL ) + SplineMake3(prev,here); +return( here ); +} + +static void SinglePointStroke(SplinePoint *base, StrokeInfo *si, SplinePoint **_plus, SplinePoint **_minus) { + SplinePoint *plus, *cur; + + /* A single point, is kind of dull. + For a caligraphic pen, it's just a copy of the pen + For a linecap of lc_butt it's still a point + For a linecap of lc_round it's a circle + For a linecap of lc_square it should be a square... + but how does one orient that square? probably a circle is best + here too + */ + /* We don't have a spline, so don't try guessing factor */ + if ( si->stroke_type == si_caligraphic ) { + plus = SplinePointCreate(base->me.x+si->xoff[0],base->me.y+si->yoff[0]); + plus->pointtype = pt_corner; + cur = makeline(plus,base->me.x+si->xoff[1],base->me.y+si->yoff[1]); + cur = makeline(cur,base->me.x+si->xoff[2],base->me.y+si->yoff[2]); + cur = makeline(cur,base->me.x+si->xoff[3],base->me.y+si->yoff[3]); + SplineMake3(cur,plus); + *_plus = *_minus = plus; + } else if ( si->cap!=lc_butt ) { + plus = makequartercircle(base->me.x-si->radius,base->me.y,si->radius,0,1,NULL); + cur = makequartercircle(base->me.x,base->me.y+si->radius,si->radius,1,0,plus); + cur = makequartercircle(base->me.x+si->radius,base->me.y,si->radius,0,-1,cur); + cur = makequartercircle(base->me.x,base->me.y-si->radius,si->radius,-1,0,cur); + SplineMake3(cur,plus); + *_plus = *_minus = plus; + } else { + *_plus = *_minus = cur = chunkalloc(sizeof(SplinePoint)); + *cur = *base; + cur->next = cur->prev = NULL; + cur->hintmask = NULL; + } +} + +static SplinePoint *StrokeEnd(SplinePoint *base, StrokeInfo *si, int isstart, + SplinePoint **_to) { + BasePoint junk; + SplinePoint *mid1, *mid2, *cur, *from, *to; + real len; + real c,s; + real angle; + real sign; + real factor = si->factor==NULL ? 1.0 : + base->next!=NULL ? (si->factor)(si->data,base->next,0) : + base->prev!=NULL ? (si->factor)(si->data,base->prev,1) : + 1.0; + + from = chunkalloc(sizeof(SplinePoint)); + to = chunkalloc(sizeof(SplinePoint)); + from->nonextcp = to->nonextcp = from->noprevcp = to->noprevcp = true; + from->pointtype = pt_corner; to->pointtype = pt_corner; + + if ( isstart ) + angle = SplineExpand(base->next,0,0,si,&from->me,&to->me)+ PI; + else + angle = SplineExpand(base->prev,1,0,si,&to->me,&from->me); + + if ( (len = to->me.x-from->me.x)<0 ) + len = -len; + len += ( to->me.y > from->me.y ) ? (to->me.y - from->me.y) : (from->me.y - to->me.y); + + if ( si->stroke_type == si_caligraphic ) { + int corner; + corner = PenCorner(angle,si); + cur = makeline(from,base->me.x+factor*si->xoff[corner+1],base->me.y+factor*si->yoff[corner+1]); + SplineMake3(cur,to); + } else { + if ( isstart ) { + SplineIsLinearMake(base->next); + angle = SplineExpand(base->next,0,0,si,&junk,&junk)+ PI; + sign = -1; + } else { + SplineIsLinearMake(base->prev); + angle = SplineExpand(base->prev,1,0,si,&junk,&junk); + sign = -1; + } + if ( si->cap==lc_butt ) { + SplineMake3(from,to); /* draw a line between */ + } else if ( si->cap==lc_square ) { + mid1 = SplinePointCreate( + from->me.x+ sign*(from->me.y-base->me.y), + from->me.y- sign*(from->me.x-base->me.x)); + mid2 = SplinePointCreate( + to->me.x+ sign*(from->me.y-base->me.y), + to->me.y- sign*(from->me.x-base->me.x)); + mid1->pointtype = pt_corner; mid2->pointtype = pt_corner; + SplineMake3(from,mid1); + SplineMake3(mid1,mid2); + SplineMake3(mid2,to); + } else if ( si->cap==lc_round ) { + mid1 = chunkalloc(sizeof(SplinePoint)); + mid1->me.x = base->me.x+ sign*(from->me.y-base->me.y); + mid1->me.y = base->me.y- sign*(from->me.x-base->me.x); + mid1->pointtype = pt_curve; + c = .552*si->radius*factor*cos(angle); + s = .552*si->radius*factor*sin(angle); + from->nextcp.x = from->me.x + c; + from->nextcp.y = from->me.y + s; + from->nonextcp = false; + to->prevcp.x = to->me.x +c; + to->prevcp.y = to->me.y +s; + to->noprevcp = false; + mid1->prevcp.x = mid1->me.x - sign*s; + mid1->prevcp.y = mid1->me.y + sign*c; + mid1->nextcp.x = mid1->me.x + sign*s; + mid1->nextcp.y = mid1->me.y - sign*c; + SplineMake3(from,mid1); + SplineMake3(mid1,to); + } + } + SplinePointCatagorize(to); + SplinePointCatagorize(from); + *_to = to; +return( from ); +} + +/* Is this the inner intersection or the outer one (the inner one is on both splines) */ +/* the outer one is beyond both */ +static int Intersect_Lines(BasePoint *inter,BasePoint *p1,real sx1, real sy1, + BasePoint *p2, real sx2, real sy2, real radius) { + real t1/*,t2*/; + real denom; + + denom = (sx1*sy2-sx2*sy1); + if ( denom>-.0001 && denom<.0001 ) { + /* Lines are parallel. Might be coincident, might not */ + t1 = 10000; + } else { + /* t2 = (sy1*(p2->x-p1->x)-sx1*(p2->y-p1->y))/denom;*/ + t1 = (sy2*(p2->x-p1->x)-sx2*(p2->y-p1->y))/denom; + } + if ( t1>1000 || t1<-1000 ) { + denom = sqrt(sx1*sx1 + sy1*sy1)/radius; + if ( denom==0 ) { + inter->x = (p1->x+p2->x)/2; + inter->y = (p1->y+p2->y)/2; + } else { + inter->x = (p1->x+p2->x)/2 + sx1/denom; + inter->y = (p1->y+p2->y)/2 + sy1/denom; + } +return( -1 ); + } else { + inter->x = p1->x + t1*sx1; + inter->y = p1->y + t1*sy1; +return( t1<=0 ); /* if t1 < 0 then the intersection point is actually */ + /* on both of the spline segments. if it isn't then */ + /* it will be on the continuation of the spline */ + /* but beyond its endpoint... */ + } +} + +static double CircleCpDist(double angle) { + /* To draw an arc of length angle on a unit circle, the control points */ + /* should be this far from their base points. Determined empirically, */ + /* fit by least squares */ + + if ( angle<0 ) angle = -angle; + while ( angle>2*PI ) angle -= 2*PI; + if ( angle>PI ) angle = 2*PI-angle; +return( ((0.0115445*angle - 0.0111987)*angle + 0.357114)*angle ); +} + +static SplinePoint *ChordMid(double angle,BasePoint *center,BasePoint *from, + double *_cpratio) { + BasePoint off, new; + double s,c,cpratio; + SplinePoint *sp; + + if ( angle<0 ) angle = -angle; + while ( angle>2*PI ) angle -= 2*PI; + if ( angle>PI ) angle = 2*PI-angle; + angle /= 2; + + off.x = from->x-center->x; + off.y = from->y-center->y; + s = sin(angle); c = cos(angle); + new.x = c*off.x - s*off.y; + new.y = s*off.x + c*off.y; + sp = SplinePointCreate(new.x+center->x,new.y+center->y); + + *_cpratio = cpratio = CircleCpDist(angle); + new.x *= cpratio; new.y *= cpratio; /* new is a vector of length radius pointing perp to the direction of the cps */ + /* We need to multiply by cp ratio and rotate 90 degrees */ + sp->prevcp.x = sp->me.x + new.y; + sp->prevcp.y = sp->me.y - new.x; + sp->nextcp.x = sp->me.x - new.y; + sp->nextcp.y = sp->me.y + new.x; + sp->nonextcp = sp->noprevcp = false; +return( sp ); +} + +static int IntersectionTooFar(BasePoint *inter,SplinePoint *from,SplinePoint *to,StrokeInfo *si) { + /* Things look really ugly when we try to miter acute angles -- we get */ + /* huge spikes. So if mitering is going to give bad results, just bevel */ + double len, xoff, yoff; + + xoff = inter->x-from->me.x; yoff = inter->y-from->me.y; + len = xoff*xoff + yoff*yoff; + if ( len > (5*si->radius * 5*si->radius) ) +return( true ); + + xoff = inter->x-to->me.x; yoff = inter->y-to->me.y; + len = xoff*xoff + yoff*yoff; + if ( len > (5*si->radius * 5*si->radius) ) +return( true ); + +return( false ); +} + +static void MakeJoints(SplinePoint *from,SplinePoint *to,StrokeInfo *si, + BasePoint *inter, BasePoint *center, + int incr,double pangle, double nangle, real factor) { + SplinePoint *mid; + int cstart, cend, i; + + if ( si->stroke_type == si_caligraphic ) { + cstart = PenCorner(pangle,si); + cend = PenCorner(nangle,si); + if ( cstart==cend ) { + /* same as a miter join */ + mid = SplinePointCreate(inter->x,inter->y); + mid->pointtype = pt_corner; + SplineMake3(from,mid); + SplineMake3(mid,to); + } else { + if ( incr<0 ) { + if ((cstart += 2)>=4 ) cstart -= 4; + if ((cend += 2)>=4 ) cend -= 4; + incr = 1; /* Why??? */ + } + if ( incr>0 && cstart>cend ) + cend += 4; + else if ( incr<0 && cstartx+factor*si->xoff[i],center->y+factor*si->yoff[i]); + i += incr; + } + SplineMake3(mid,to); + } + } else if ( si->join == lj_miter && !IntersectionTooFar(inter,from,to,si)) { + mid = SplinePointCreate(inter->x,inter->y); + mid->pointtype = pt_corner; + SplineMake3(from,mid); + SplineMake3(mid,to); + if ( from->ptindex == to->ptindex ) + mid->ptindex = from->ptindex; + } else if ( si->join==lj_bevel ) { + SplineMake3(from,to); + } else { + double cplen = CircleCpDist(nangle-pangle); + mid = NULL; + if ( cplen>.6 ) { + /* If angle of the arc is more than about 90 degrees a cubic */ + /* spline is noticeably different from a circle's arc */ + /* So add an extra point to help things out */ + mid = ChordMid(nangle-pangle,center,&from->me,&cplen); + } + cplen *= si->radius*factor; + from->pointtype = to->pointtype = pt_curve; + from->nextcp.x = from->me.x-cplen*cos(nangle); + from->nextcp.y = from->me.y-cplen*sin(nangle); + to->prevcp.x = to->me.x+cplen*cos(pangle); + to->prevcp.y = to->me.y+cplen*sin(pangle); + from->nonextcp = false; to->noprevcp = false; + if ( mid==NULL ) + SplineMake3(from,to); + else { + SplineMake3(from,mid); + SplineMake3(mid,to); + } + } +} + +static int OnEdge(BasePoint *plus,BasePoint *minus,Spline *sp, double t, + double heret, Spline *hsp, + StrokeInfo *si, double *_ppt, double *_pmt, double *_mpt, double *_mmt) { + double rsq = si->radius*si->radius; + double tt, xdiff, ydiff, loopdiff; + double pptval= -1, pmtval= -1, mptval= -1, mmtval = -1; + BasePoint here, test; + + here.x = ((hsp->splines[0].a*heret+hsp->splines[0].b)*heret+hsp->splines[0].c)*heret+hsp->splines[0].d; + here.y = ((hsp->splines[1].a*heret+hsp->splines[1].b)*heret+hsp->splines[1].c)*heret+hsp->splines[1].d; + + if ( (xdiff = sp->to->me.x-sp->from->me.x)<0 ) xdiff = -xdiff; + if ( (ydiff = sp->to->me.y-sp->from->me.y)<0 ) ydiff = -ydiff; + loopdiff = (xdiff+ydiff==0) ? 2 : 1.0/(4*(xdiff+ydiff)/si->radius); + + if ( _ppt!=NULL ) { + for ( tt = t+loopdiff; tt<=1 ; tt += loopdiff ) { + test.x = ((sp->splines[0].a*tt+sp->splines[0].b)*tt+sp->splines[0].c)*tt+sp->splines[0].d; + test.y = ((sp->splines[1].a*tt+sp->splines[1].b)*tt+sp->splines[1].c)*tt+sp->splines[1].d; + if ( (test.x-here.x)*(test.x-here.x)+(test.y-here.y)*(test.y-here.y)> 2*rsq ) + break; + if ( (plus->x-test.x)*(plus->x-test.x)+(plus->y-test.y)*(plus->y-test.y)<= rsq ) + pptval = tt; + if ( (minus->x-test.x)*(minus->x-test.x)+(minus->y-test.y)*(minus->y-test.y)<= rsq ) + pmtval = tt; + } + *_ppt = pptval; *_pmt = pmtval; + } + + if ( _mmt!=NULL ) { + for ( tt = t-loopdiff; tt>=0 ; tt -= loopdiff ) { + test.x = ((sp->splines[0].a*tt+sp->splines[0].b)*tt+sp->splines[0].c)*tt+sp->splines[0].d; + test.y = ((sp->splines[1].a*tt+sp->splines[1].b)*tt+sp->splines[1].c)*tt+sp->splines[1].d; + if ( (test.x-here.x)*(test.x-here.x)+(test.y-here.y)*(test.y-here.y)> 2*rsq ) + break; + if ( (plus->x-test.x)*(plus->x-test.x)+(plus->y-test.y)*(plus->y-test.y)< rsq ) + mptval = tt; + if ( (minus->x-test.x)*(minus->x-test.x)+(minus->y-test.y)*(minus->y-test.y)< rsq ) + mmtval = tt; + } + *_mmt = mmtval; *_mpt = mptval; + } + +return( pptval!=-1 || mmtval!=-1 || pmtval!=-1 || mptval==-1 ); +} + +#define BasePtDistance(pt1, pt2) sqrt(((pt1)->x-(pt2)->x)*((pt1)->x-(pt2)->x) + ((pt1)->y-(pt2)->y)*((pt1)->y-(pt2)->y)) + + +static SplinePoint *MergeSplinePoint(SplinePoint *sp1,SplinePoint *sp2) { + /* sp1 and sp2 should be close together, use their average for the */ + /* new position, get rid of one, and add its spline to the other */ + /* sp1->next==NULL, sp2->prev==NULL */ + double offx, offy; + + offx = (sp1->me.x-sp2->me.x)/2; + offy = (sp1->me.y-sp2->me.y)/2; + sp1->me.x -= offx; sp1->prevcp.x -= offx; + sp1->me.y -= offy; sp1->prevcp.y -= offy; + sp1->nextcp.x = sp2->nextcp.x + offx; + sp1->nextcp.y = sp2->nextcp.y + offy; + sp1->nonextcp = sp2->nonextcp; + sp1->next = sp2->next; + SplinePointFree(sp2); + if ( sp1->next!=NULL ) + sp1->next->from = sp1; + SplinePointCatagorize(sp1); + if ( sp1->prev!=NULL ) + SplineRefigure(sp1->prev); + if ( sp1->next!=NULL ) + SplineRefigure(sp1->next); +return( sp1 ); +} + +static void MSP(SplinePoint *sp1,SplinePoint **sp2, SplinePoint **sp2alt) { + int same2 = *sp2==*sp2alt; + + *sp2 = MergeSplinePoint(sp1,*sp2); + if ( same2 ) + *sp2alt = *sp2; +} + +static SplinePoint *SplineMaybeBisect(Spline *s,double t) { + /* Things get very confused if I have a splineset with just a single point */ + SplinePoint *temp, *sp; + + if ( t<.0001 ) { + temp = chunkalloc(sizeof(SplinePoint)); + sp = s->from; + *temp = *sp; + temp->hintmask = NULL; + temp->next->from = temp; + sp->next = NULL; + sp->nextcp = sp->me; + sp->nonextcp = true; + temp->prevcp = temp->me; + temp->noprevcp = true; + SplineMake3(sp,temp); +return( temp ); + } else if ( t>.9999 ) { + temp = chunkalloc(sizeof(SplinePoint)); + sp = s->to; + *temp = *sp; + temp->hintmask = NULL; + temp->prev->to = temp; + sp->prev = NULL; + sp->prevcp = sp->me; + sp->noprevcp = true; + temp->nextcp = temp->me; + temp->nonextcp = true; + SplineMake3(temp,sp); +return( temp ); + } + +return( SplineBisect(s,t)); +} + +static void SplineFreeBetween(SplinePoint *from,SplinePoint *to,int freefrom,int freeto) { + Spline *s; + + if ( from==to ) { + if ( freefrom && freeto ) + SplinePointFree(from); +return; + } + + while ( from!=to && from!=NULL ) { + s = from->next; + if ( freefrom ) + SplinePointFree(from); + else + from->next = NULL; + if ( s==NULL ) +return; + freefrom = true; + from = s->to; + SplineFree(s); + } + if ( freeto ) + SplinePointFree(to); + else + to->prev = NULL; +} + +static void SplineFreeForeward(SplinePoint *from) { + Spline *s; + + while ( from!=NULL ) { + s = from->next; + SplinePointFree(from); + if ( s==NULL ) +return; + from = s->to; + SplineFree(s); + } +} + +static void SplineFreeBackward(SplinePoint *to) { + Spline *s; + + while ( to!=NULL ) { + s = to->prev; + SplinePointFree(to); + if ( s==NULL ) +return; + to = s->from; + SplineFree(s); + } +} + +static SplinePoint *SplineCopyAfter(SplinePoint *from,SplinePoint **end) { + SplinePoint *head, *last; + + last = head = chunkalloc(sizeof(SplinePoint)); + *head = *from; + head->hintmask = NULL; + head->prev = NULL; + while ( from->next!=NULL ) { + last->next = chunkalloc(sizeof(Spline)); + *last->next = *from->next; + last->next->from = last; + last->next->to = chunkalloc(sizeof(SplinePoint)); + *last->next->to = *from->next->to; + last->next->to->hintmask = NULL; + last->next->to->prev = last->next; + last = last->next->to; + from = from->next->to; + } + *end = last; +return( head ); +} + +static SplinePoint *SplineCopyBefore(SplinePoint *to,SplinePoint **end) { + SplinePoint *head, *last; + + last = head = chunkalloc(sizeof(SplinePoint)); + *head = *to; + head->hintmask = NULL; + head->next = NULL; + while ( to->prev!=NULL ) { + last->prev = chunkalloc(sizeof(Spline)); + *last->prev = *to->prev; + last->prev->to = last; + last->prev->from = chunkalloc(sizeof(SplinePoint)); + *last->prev->from = *to->prev->from; + last->prev->from->hintmask = NULL; + last->prev->from->next = last->prev; + last = last->prev->from; + to = to->prev->from; + } + *end = last; +return( head ); +} + +static SplinePoint *Intersect_Splines(SplinePoint *from,SplinePoint *to, + SplinePoint **ret) { + Spline *test1, *test2; + BasePoint pts[9]; + extended t1s[9], t2s[9]; + + for ( test1=from->next; test1!=NULL; test1=test1->to->next ) { + for ( test2=to->prev; test2!=NULL; test2=test2->from->prev ) { + if ( SplinesIntersect(test1,test2,pts,t1s,t2s)>0 ) { + *ret = SplineMaybeBisect(test2,t2s[0]); +return( SplineMaybeBisect(test1,t1s[0])); + } + } + } + *ret = NULL; +return( NULL ); +} + +struct strokedspline { + Spline *s; + SplinePoint *plusfrom, *plusto, *origplusfrom; + SplinePoint *minusfrom, *minusto, *origminusto; + int8 plusskip, minusskip; /* If this spline is so small that it is totally within the region stroked by an adjacent spline */ + int8 pinnerto, minnerto; /* to and from as defined on original spline s */ + BasePoint minterto, pinterto; + double nangle, pangle; + struct strokedspline *next, *prev; +}; + +static void StrokeEndComplete(struct strokedspline *cur,StrokeInfo *si,int isstart) { + SplinePoint *edgestart, *edgeend, *curat, *edgeat; + struct strokedspline *lastp, *lastm; + + if ( isstart ) { + edgestart = StrokeEnd(cur->s->from,si,true,&edgeend); + for ( lastp=cur; lastp!=NULL && lastp->plusskip ; lastp=lastp->next ); + for ( lastm=cur; lastm!=NULL && lastm->minusskip ; lastm=lastm->next ); + if ( lastm==cur ) + MSP(edgeend,&cur->minusfrom,&cur->minusto); + else { + curat = Intersect_Splines(lastm->minusfrom,edgeend,&edgeat); + if ( curat!=NULL ) { + SplineFreeBetween(lastm->minusfrom,curat,true,false); + SplineFreeBetween(edgeat,edgeend,false,true); + } else + MSP(edgeend,&lastm->minusfrom,&lastm->minusto); + } + if ( lastp==cur ) + MergeSplinePoint(cur->plusto,edgestart); + else { + edgeat = Intersect_Splines(edgestart,lastp->plusto,&curat); + if ( curat!=NULL ) { + SplineFreeBetween(curat,lastp->plusto,false,true); + SplineFreeBetween(edgestart,edgeat,true,false); + } else + MergeSplinePoint(lastp->plusto,edgestart); + } + } else { + edgestart = StrokeEnd(cur->s->to,si,false,&edgeend); + for ( lastp=cur; lastp!=NULL && lastp->plusskip ; lastp=lastp->prev ); + for ( lastm=cur; lastm!=NULL && lastm->minusskip ; lastm=lastm->prev ); + if ( lastp==cur ) + MSP(edgeend,&cur->plusfrom,&cur->plusto); + else { + curat = Intersect_Splines(lastp->plusfrom,edgeend,&edgeat); + if ( curat!=NULL ) { + SplineFreeBetween(lastp->plusfrom,curat,true,false); + lastp->plusfrom = curat; + SplineFreeBetween(edgeat,edgeend,false,true); + lastp->plusfrom = MergeSplinePoint(edgeat,curat); + } else + MSP(edgeend,&lastp->plusfrom,&lastp->plusto); + } + if ( lastm==cur ) + MergeSplinePoint(cur->minusto,edgestart); + else { + edgeat = Intersect_Splines(edgestart,lastm->minusto,&curat); + if ( curat!=NULL ) { + SplineFreeBetween(curat,lastm->minusto,false,true); + lastm->minusto = curat; + SplineFreeBetween(edgestart,edgeat,true,false); + MergeSplinePoint(lastm->minusto,edgeat); + } else + MergeSplinePoint(lastm->minusto,edgestart); + } + } +} + +static void StrokedSplineFree(struct strokedspline *head) { + struct strokedspline *next, *cur=head; + + while ( cur!=NULL ) { + next = cur->next; + chunkfree(cur,sizeof(*cur)); + cur = next; + if ( cur==head ) + break; + } +} + +static void FreeOrigStuff(struct strokedspline *before) { + + if ( before->origminusto!=NULL ) + SplineFreeBackward(before->origminusto); + before->origminusto = NULL; + if ( before->origplusfrom!=NULL ) + SplineFreeForeward(before->origplusfrom); + before->origplusfrom = NULL; +} + +static void SplineMakeRound(SplinePoint *from,SplinePoint *to, real radius) { + /* I believe this only gets called when we have a line join where the */ + /* contour makes a U-Turn (opposite of being colinear) */ + BasePoint dir; + SplinePoint *center; + + dir.x = (to->me.y-from->me.y)/2; + dir.y = -(to->me.x-from->me.x)/2; + center = SplinePointCreate((to->me.x+from->me.x)/2+dir.x, + (to->me.y+from->me.y)/2+dir.y); + from->nextcp.x = from->me.x + .552*dir.x; + from->nextcp.y = from->me.y + .552*dir.y; + to->prevcp.x = to->me.x + .552*dir.x; + to->prevcp.y = to->me.y + .552*dir.y; + from->nonextcp = to->noprevcp = false; + center->prevcp.x = center->me.x + .552*dir.y; + center->nextcp.x = center->me.x - .552*dir.y; + center->prevcp.y = center->me.y - .552*dir.x; + center->nextcp.y = center->me.y + .552*dir.x; + center->nonextcp = center->noprevcp = false; + SplineMake3(from,center); + SplineMake3(center,to); +} + +static int DoIntersect_Splines(struct strokedspline *before, + struct strokedspline *after, int doplus,StrokeInfo *si,SplineChar *sc, + int force_connect ) { + SplinePoint *beforeat, *afterat; + int ret = true; + int toobig = false; + + if ( doplus ) { + beforeat = Intersect_Splines(before->plusfrom,after->plusto,&afterat); + if ( beforeat!=NULL ) { + after->origplusfrom = after->plusfrom; + after->plusto = SplineCopyBefore(afterat,&after->plusfrom); + SplineFreeBetween(before->plusfrom,beforeat,true/*free before->plusfrom*/,false/* keep beforeat */); + before->plusfrom = beforeat; + } else if ( before->origplusfrom!=NULL && + (beforeat = Intersect_Splines(before->origplusfrom,after->plusto,&afterat))!=NULL ) { + toobig = true; + after->origplusfrom = after->plusfrom; + after->plusto = SplineCopyBefore(afterat,&after->plusfrom); + SplineFreeBetween(before->plusfrom,before->plusto,true/*free plusfrom*/,false); + before->plusfrom = SplinePointCreate(afterat->me.x,afterat->me.y); + before->plusfrom->nextcp = before->plusfrom->me; + before->plusfrom->nonextcp = true; + SplineMake3(before->plusfrom,before->plusto); /* This line goes backwards */ +#if 0 /* This introduces lots of bugs, it gets invoked when it */ + /* shouldn't, and I can't figure out how to distinguish */ + } else if ( EntirelyWithin(before->plusfrom,after->s,true,si->radius) ) { + /* the splines at before are all within radius units of the original */ + /* after spline. This means that they will make no contribution */ + /* to the outline. */ + if ( before->prev!=NULL && before->prev!=after ) + ret = DoIntersect_Splines(before->prev,after,doplus,si,sc); + before->plusskip = true; + toobig = ret; + } else if ( EntirelyWithin(after->plusto,before->s,false,si->radius) ) { + /* the splines at after are entirely within radius units of the original */ + if ( after->next!=NULL && after->next!=before ) + ret = DoIntersect_Splines(before,after->next,doplus,si,sc); + after->plusskip = true; + toobig = ret; +#endif + } else { + /* No intersection everything can stay as it is */ + if ( force_connect && BasePtDistance(&after->plusto->me,&before->plusfrom->me)>3 ) { + beforeat = SplinePointCreate(after->plusto->me.x,after->plusto->me.y); + if ( si->join==lj_round ) + SplineMakeRound(beforeat,before->plusfrom,si->radius); + else + SplineMake3(beforeat,before->plusfrom); + before->plusfrom = beforeat; + toobig = true; + } + ret = false; + } + } else { + afterat = Intersect_Splines(after->minusfrom,before->minusto,&beforeat); + if ( afterat!=NULL ) { + after->origminusto = after->minusto; + after->minusfrom = SplineCopyAfter(afterat,&after->minusto); + SplineFreeBetween(beforeat,before->minusto,false/*keep beforeat*/,true); + before->minusto = beforeat; + } else if ( before->origminusto!=NULL && + (afterat = Intersect_Splines(after->minusfrom,before->origminusto,&beforeat))!=NULL ) { + toobig = true; + after->origminusto = after->minusto; + after->minusfrom = SplineCopyAfter(afterat,&after->minusto); + SplineFreeBetween(before->minusfrom,before->minusto,false/*keep minusfrom*/,true); + before->minusto = SplinePointCreate(afterat->me.x,afterat->me.y); + before->minusto->ptindex = afterat->ptindex; + before->minusfrom->nextcp = before->minusfrom->me; + before->minusfrom->nonextcp = true; + SplineMake3(before->minusfrom,before->minusto); /* This line goes backwards */ +#if 0 /* This introduces lots of bugs, it gets invoked when it */ + /* shouldn't, and I can't figure out how to distinguish */ + } else if ( EntirelyWithin(before->minusto,after->s,false,si->radius) ) { + /* the splines at before are all within radius units of the original */ + /* after spline. This means that they will make no contribution */ + /* to the outline. */ + ret = false; + if ( before->prev!=NULL && before->prev!=after && before->prev!=after->next ) + ret = DoIntersect_Splines(before->prev,after,doplus,si,sc); + before->minusskip = true; + toobig = ret; + } else if ( EntirelyWithin(after->minusfrom,before->s,true,si->radius) ) { + /* the splines at after are entirely within radius units of the original */ + ret = false; + if ( after->next!=NULL && after->next!=before && before->prev!=after->next ) + ret = DoIntersect_Splines(before,after->next,doplus,si,sc); + after->minusskip = true; + toobig = ret; +#endif + } else { + /* No intersection everything can stay as it is */ + if ( force_connect && BasePtDistance(&after->minusfrom->me,&before->minusto->me)>3 ) { + beforeat = SplinePointCreate(after->minusfrom->me.x,after->minusfrom->me.y); + beforeat->ptindex = after->minusfrom->ptindex; + if ( si->join==lj_round ) + SplineMakeRound(before->minusto,beforeat,si->radius); + else + SplineMake3(before->minusto,beforeat); + before->minusto = beforeat; + toobig = true; + } + ret = false; + } + } + + if ( toobig ) { + si->gottoobig = si->gottoobiglocal = true; + if ( !si->toobigwarn ) { + si->toobigwarn = true; + ff_post_error( _("Bad Stroke"), _("The stroke width is so big that the generated path\nmay intersect itself in %.100s"), + sc==NULL?"": sc->name ); + } + } +return( ret ); +} + +/* Plus joins run from prev to next, minus joins run from next to prev */ +/* This makes plus joins clockwise and minus joins counter */ +static void StrokeJoint(SplinePoint *base,StrokeInfo *si, + struct strokedspline *before,struct strokedspline *after, + SplineChar *sc) { + BasePoint nplus, nminus, pplus,pminus; + double nangle, pangle; + int pinner, minner; +#if 0 + double pt, mt; + double tt, xdiff, ydiff; +#endif + + before->pangle = pangle = SplineExpand(base->prev,1,0,si,&pplus,&pminus); + before->nangle = nangle = SplineExpand(base->next,0,0,si,&nplus,&nminus); + + if ( RealWithin(pangle,nangle,.1) || RealWithin(pangle+2*PI,nangle,.1) || + RealWithin(pangle,nangle+2*PI,.1)) { + /* If the two splines are tangent at the base, then everything is */ + /* simple, there is no join, things match up perfectly */ + /* Um. No. If there is a sharp bend or a corner nearby then it may */ + /* have the same effect as a corner, in extreme cases the entire */ + /* spline may be eaten up */ + /* Actually, that's probably done best in Remove Overlap. If we try */ + /* to do it here, we unlease lots of potentials for bugs in other */ + /* cases */ + +#if 0 + if ( (xdiff = base->me.x-base->prev->from->me.x)<0 ) xdiff = -xdiff; + if ( (ydiff = base->me.y-base->prev->from->me.y)<0 ) ydiff = -ydiff; + if ( xdiff+ydiff==0 ) xdiff = 1; + tt = si->radius/(2*(xdiff+ydiff)); + if ( tt>.2 ) tt = .2; + OnEdge(&pplus,&pminus,base->next,0,1.0-tt,base->prev, + si,&pt,&mt,NULL,NULL); + if ( pt!=-1 ) + DoIntersect_Splines(before,after,true,si,sc,true); + else { + if ( (xdiff = base->me.x-base->next->to->me.x)<0 ) xdiff = -xdiff; + if ( (ydiff = base->me.y-base->next->to->me.y)<0 ) ydiff = -ydiff; + tt = si->radius/(2*(xdiff+ydiff)); + if ( tt>.2 ) tt = .2; + OnEdge(&nplus,&nminus,base->prev,1.,tt,base->next, + si,NULL,NULL,&pt,&mt); + if ( mt!=-1 ) + DoIntersect_Splines(before,after,false,si,sc,true); + } +#endif + before->pinnerto = before->minnerto = -1; + } else { + pinner = Intersect_Lines(&before->pinterto,&pplus, + 3*base->prev->splines[0].a+2*base->prev->splines[0].b+base->prev->splines[0].c, + 3*base->prev->splines[1].a+2*base->prev->splines[1].b+base->prev->splines[1].c, + &nplus, + base->next->splines[0].c, + base->next->splines[1].c,si->radius); + minner = Intersect_Lines(&before->minterto,&pminus, + 3*base->prev->splines[0].a+2*base->prev->splines[0].b+base->prev->splines[0].c, + 3*base->prev->splines[1].a+2*base->prev->splines[1].b+base->prev->splines[1].c, + &nminus, + base->next->splines[0].c, + base->next->splines[1].c,si->radius); + if ( pinner==-1 && minner!=-1 ) + pinner = !minner; + before->pinnerto = pinner; before->minnerto = (pinner!=-1?!pinner:-1); + if ( pinner==1 ) { + DoIntersect_Splines(before,after,true,si,sc,true); + } else if ( pinner==0 ) { + DoIntersect_Splines(before,after,false,si,sc,true); + } else { /* splines are parallel, but moving in same dir */ + if ( DoIntersect_Splines(before,after,true,si,sc,false)) { + before->pinnerto = 1; + before->minnerto = 0; + } else { + if ( DoIntersect_Splines(before,after,false,si,sc,true)) { + before->pinnerto = 0; + before->minnerto = 1; + } else + DoIntersect_Splines(before,after,true,si,sc,true); + } + } + } +} + +static int SplineSolveForPen(Spline *s,StrokeInfo *si,double *ts,int *pinners, + double tstart,double tend) { + /* Find all the places at which the spline has the same slope as one of the */ + /* edges of the pen. There can be at most 8 (we get four quadratics) */ + double a, b, c, sq, t1, t2; + int i, cnt=0, j; + Spline1D *xsp = &s->splines[0], *ysp = &s->splines[1]; + BasePoint pp, pm, np, nm, testp, testm; + + ts[cnt++] = tstart; + for ( i=0; i<2; ++i ) { + if ( i==0 ) { + a = 3*(ysp->a*si->c-xsp->a*si->s); + b = 2*(ysp->b*si->c-xsp->b*si->s); + c = ysp->c*si->c-xsp->c*si->s; + } else if ( i==1 ) { + a = 3*(-ysp->a*si->c-xsp->a*si->s); + b = 2*(-ysp->b*si->c-xsp->b*si->s); + c = -ysp->c*si->c-xsp->c*si->s; +#if 0 /* These two are just the negatives of the first two and as such have the same roots */ + } else if ( i==2 ) { + a = 3*(-ysp->a*si->c+xsp->a*si->s); + b = 2*(-ysp->b*si->c+xsp->b*si->s); + c = -ysp->c*si->c+xsp->c*si->s; + } else { + a = 3*(ysp->a*si->c+xsp->a*si->s); + b = 2*(ysp->b*si->c+xsp->b*si->s); + c = ysp->c*si->c+xsp->c*si->s; +#endif + } + sq = b*b-4*a*c; + if ( sq==0 ) { + t1 = -b/(2*a); + t2 = -1; + } else if ( sq>0 ) { + sq = sqrt(sq); + t1 = (-b+sq)/(2*a); + t2 = (-b-sq)/(2*a); + } else + t1 = t2 = -1; + if ( t1>tstart && t1tstart && t2ts[j] ) { + double temp = ts[i]; + ts[i] = ts[j]; + ts[j] = temp; + } + /* Figure which side is inner */ + for ( i=1; i 0 ); + } +return( cnt ); +} + + +static void SplineSetFixCPs(SplineSet *ss) { + SplinePoint *sp; + + for ( sp=ss->first; ; ) { + SPWeightedAverageCps(sp); + if ( sp->next==NULL ) + break; + sp = sp->next->to; + if ( sp==ss->first ) + break; + } + SPLCatagorizePoints(ss); +} + +static SplinePoint *SPNew(SplinePoint *base,BasePoint *pos,BasePoint *cp,int isnext) { + SplinePoint *sp = SplinePointCreate(pos->x,pos->y); + + sp->pointtype = base->pointtype; + /* Embolden wants these three preserved */ + sp->ptindex = base->ptindex; + sp->ttfindex = base->ttfindex; + sp->nextcpindex = base->nextcpindex; + if ( isnext ) { + sp->nextcp.x = pos->x + (cp->x-base->me.x); + sp->nextcp.y = pos->y + (cp->y-base->me.y); + sp->nonextcp = (sp->nextcp.x==pos->x) && (sp->nextcp.y==pos->y); + } else { + sp->prevcp.x = pos->x + (cp->x-base->me.x); + sp->prevcp.y = pos->y + (cp->y-base->me.y); + sp->noprevcp = (sp->prevcp.x==pos->x) && (sp->prevcp.y==pos->y); + } +return( sp ); +} + +static void NormalizeT(TPoint *mids,int cnt,double tbase,double tend) { + int i; + + for ( i=0; isplines[0]; + off.x = sp->me.x - ( ((s1->a*t+s1->b)*t+s1->c)*t+s1->d ); + s1 = &spline->splines[1]; + off.y = sp->me.y - ( ((s1->a*t+s1->b)*t+s1->c)*t+s1->d ); + + if ( isnext ) { + double s = (1.0-t); + /* We want to renormalize the spline so that it runs from [t,1] and */ + /* then figure what the control point at t should be */ + s1 = &spline->splines[0]; + temp.splines[0].d = s1->d + t*(s1->c + t*(s1->b + t*s1->a)); + temp.splines[0].c = s*(s1->c + t*(2*s1->b + 3*s1->a*t)); + temp.splines[0].b = s*s*(s1->b+3*s1->a*t); +#if 0 + temp.splines[0].a = s*s*s*s1->a; +#endif + s1 = &spline->splines[1]; + temp.splines[1].d = s1->d + t*(s1->c + t*(s1->b + t*s1->a)); + temp.splines[1].c = s*(s1->c + t*(2*s1->b + 3*s1->a*t)); + temp.splines[1].b = s*s*(s1->b+3*s1->a*t); +#if 0 + temp.splines[1].a = s*s*s*s1->a; +#endif + if ( spline->order2 ) { + sp->nextcp.x = temp.splines[0].d + temp.splines[0].c/2 + off.x; + sp->nextcp.y = temp.splines[1].d + temp.splines[1].c/2 + off.y; + } else { + sp->nextcp.x = temp.splines[0].d + temp.splines[0].c/3 + off.x; + sp->nextcp.y = temp.splines[1].d + temp.splines[1].c/3 + off.y; + } + sp->nonextcp = false; + } else { + /* We want to renormalize the spline so that it runs from [0,t] and */ + /* then figure what the control point at t should be */ + temp = *spline; + temp.splines[0].c *= t; temp.splines[1].c *= t; + tn = t*t; + temp.splines[0].b *= tn; temp.splines[1].b *= tn; +#if 0 + tn *= t; + temp.splines[0].a *= tn; temp.splines[1].a *= tn; +#endif + if ( spline->order2 ) { + sp->prevcp.x = temp.splines[0].d + temp.splines[0].c/2 + off.x; + sp->prevcp.y = temp.splines[1].d + temp.splines[1].c/2 + off.y; + } else { + sp->prevcp.x = temp.splines[0].d + (2*temp.splines[0].c+temp.splines[0].b)/3 + off.x; + sp->prevcp.y = temp.splines[1].d + (2*temp.splines[1].c+temp.splines[1].b)/3 + off.y; + } + sp->noprevcp = false; + } +} + +static void SPFigurePlusCP(SplinePoint *sp,double t,Spline *spline,int isnext) { + SplinePoint dummy; + + /* Plus splines run in the oposite direction */ + dummy = *sp; + SPFigureCP(&dummy,t,spline,!isnext); + if ( isnext ) { + sp->nextcp = dummy.prevcp; + sp->nonextcp = false; + } else { + sp->prevcp = dummy.nextcp; + sp->noprevcp = false; + } +} + +static int Overlaps(TPoint *expanded,TPoint *inner,double rsq) { + double len; + BasePoint dir; + + dir.x = (expanded->x-inner->x); dir.y = (expanded->y-inner->y); + len = (dir.x*dir.x) + (dir.y*dir.y); + if ( len>=rsq ) +return( false ); + len = sqrt(rsq/len); + expanded->x = inner->x + len*dir.x; + expanded->y = inner->y + len*dir.y; +return( true ); +} + +#define Approx 10 + +static struct strokedspline *_SplineSetApprox(SplineSet *spl,StrokeInfo *si,SplineChar *sc) { + struct strokedspline *head=NULL, *last=NULL, *cur; + int max=Approx; + TPoint *pmids=galloc(max*sizeof(TPoint)), + *mmids=galloc(max*sizeof(TPoint)), + *mids=galloc(max*sizeof(TPoint)); + uint8 *knots=galloc(max); + BasePoint pto, mto, pfrom, mfrom; + double approx, xdiff, ydiff, loopdiff; + Spline *spline, *first; + int i,j,k; + SplinePoint *p_to, *m_to, *p_from, *m_from; + int cnt, anyknots; + double ts[9]; + BasePoint m,p,temp; + double mt1, pt1, mt2, pt2, rsq; + int pinners[10]; + int mwascovered, pwascovered; + enum knot_type { kt_knot=1, kt_pgood=2, kt_mgood=4 }; + int toobig; + + first = NULL; + for ( spline = spl->first->next; spline!=NULL && spline!=first; spline = spline->to->next ) { + cur = chunkalloc(sizeof(struct strokedspline)); + if ( last==NULL ) + head = cur; + else { + last->next = cur; + cur->prev = last; + } + last = cur; + cur->s = spline; + SplineIsLinearMake(spline); + SplineExpand(spline,0,0,si,&pto,&mfrom); + SplineExpand(spline,1,0,si,&pfrom,&mto); + cur->minusfrom = SPNew(spline->from,&mfrom,&spline->from->nextcp,true); + cur->plusto = SPNew(spline->from,&pto,&spline->from->nextcp,false); + cur->minusto = SPNew(spline->to,&mto,&spline->to->prevcp,false); + cur->plusfrom = SPNew(spline->to,&pfrom,&spline->to->prevcp,true); + + if ( si->stroke_type == si_caligraphic ) { + /* At each t where the spline is tangent to one of the pen-angles */ + /* we need to figure out which side is inner and which is outer */ + /* the outer side gets a copy of the appropriate pen side (with corner points tangent) */ + /* the inner side is going to be a single corner point at the */ + /* intersection of the splines from the two corners */ + /* And if (god help us) we've got a point of inflection here then */ + /* we get half the pen on each side */ + /* I ignore the case of a point of inflection, and I don't */ + /* find the real intersection point, I just guess that it is */ + /* near the mid point of the pen */ + cnt = SplineSolveForPen(spline,si,ts,pinners+1,0,1); + p_to = m_to = NULL; + p_from = NULL; /* Make gcc happy */ + for ( j=1; jplusto; m_from = cur->minusfrom; + } else if ( pinners[j-1] ) { + p_to = p_from; + SplineExpand(spline,ts[j-1],(ts[j-1]-ts[j-2])/20.,si,&p,&m); + m_from = SplinePointCreate(m.x,m.y); + m_from->pointtype = pt_tangent; + SplineMake3(m_to,m_from); + } else { + m_from = m_to; + SplineExpand(spline,ts[j-1],(ts[j-1]-ts[j-2])/20.,si,&p,&m); + p_to = SplinePointCreate(p.x,p.y); + p_to->pointtype = pt_tangent; + SplineMake3(p_to,p_from); + } + if ( j==cnt-1 ) { + p_from = cur->plusfrom; + m_to = cur->minusto; + } else if ( pinners[j] ) { + SplineExpand(spline,ts[j],(ts[j+1]-ts[j-1])/20.,si,&p,&m); + SplineExpand(spline,ts[j],-(ts[j+1]-ts[j-1])/20.,si,&temp,&m); + p_from = SplinePointCreate((p.x+temp.x)/2,(p.y+temp.y)/2); + p_from->pointtype = pt_corner; + m_to = SplinePointCreate(m.x,m.y); + m_to->pointtype = pt_tangent; + } else { + SplineExpand(spline,ts[j],(ts[j+1]-ts[j-1])/20.,si,&p,&m); + SplineExpand(spline,ts[j],-(ts[j+1]-ts[j-1])/20.,si,&p,&temp); + p_from = SplinePointCreate(p.x,p.y); + p_from->pointtype = pt_tangent; + m_to = SplinePointCreate((m.x+temp.x)/2,(m.y+temp.y)/2); + m_to->pointtype = pt_corner; + } + ApproximateSplineFromPoints(p_from,p_to,pmids,Approx,false); + ApproximateSplineFromPoints(m_from,m_to,mmids,Approx,false); + if ( m_from!=cur->minusfrom && m_from->pointtype!=pt_corner ) + m_from->pointtype = pt_tangent; + } + } else { + /* Figure out where the curve starts to bend sharply, and add */ + /* New points there. I used to strip out the curve where it */ + /* overlapped itself, but I think that's better done by remove */ + /* overlap rather than here */ + if ( (xdiff = spline->to->me.x-spline->from->me.x)<0 ) xdiff = -xdiff; + if ( (ydiff = spline->to->me.y-spline->from->me.y)<0 ) ydiff = -ydiff; + loopdiff = (xdiff+ydiff==0) ? .1 : 1.0/(4*(xdiff+ydiff)/si->radius); + approx = rint(1.0/loopdiff); + if ( approx<0 || approx>3000 ) approx=3000; + if ( approx>max ) { + max = approx+10; + pmids = grealloc(pmids,max*sizeof(TPoint)); + mmids = grealloc(mmids,max*sizeof(TPoint)); + mids = grealloc(mids,max*sizeof(TPoint)); + knots = grealloc(knots,max); + } + + mwascovered = pwascovered = false; + toobig = false; + for ( i=0; iradius*si->radius; + for ( i=0; i0 ) { + Overlaps(&mmids[i],&mids[i-j],rsq); + Overlaps(&pmids[i],&mids[i-j],rsq); + } + } + } + anyknots = false; + for ( i=0; igottoobig = si->gottoobiglocal = true; + if ( !si->toobigwarn ) { + si->toobigwarn = true; + ff_post_error( _("Bad Stroke"), _("The stroke width is so big that the generated path\nmay intersect itself in %.100s"), + sc==NULL?"": sc->name ); + } + } + + /* Look for any sharp bends, they give us problems which are */ + /* eased by creating a new point. */ + if ( !anyknots ) { + double radius = si->radius; + si->radius *= 2; + mwascovered = pwascovered = false; + for ( i=0; iradius = radius; + } + + p_to = cur->plusto; + m_from = cur->minusfrom; + for ( i=0, j=1; i0 && (knots[i-1]&kt_mgood) ) { + if ( i+1pointtype = pt_corner; + SPFigureCP(m_from,(j)/(approx+1),spline,true); + SPFigureCP(m_to,(i+1)/(approx+1),spline,false); + NormalizeT(mmids+j,i-j,mmids[j-1].t,mmids[i].t); + ApproximateSplineFromPointsSlopes(m_from,m_to,mmids+j,i-j,false); + m_from = m_to; + } + + if ( i>0 && (knots[i-1]&kt_pgood) ) { + if ( i+1pointtype = pt_corner; + SPFigurePlusCP(p_to,j/(approx+1),spline,false); + SPFigurePlusCP(p_from,(i+1)/(approx+1),spline,true); + NormalizeT(pmids+j,i-j,pmids[i].t,pmids[j-1].t); + ApproximateSplineFromPointsSlopes(p_from,p_to,pmids+j,i-j,false); + p_to = p_from; + } + + j=i+1; + } + } + + if ( j!=1 ) { + NormalizeT(pmids+j,i-j,0.0,pmids[j-1].t); + NormalizeT(mmids+j,i-j,mmids[j-1].t,1.0); + SPFigureCP(m_from,(j)/(approx+1),spline,true); + SPFigurePlusCP(p_to,(j)/(approx+1),spline,false); + } + ApproximateSplineFromPointsSlopes(cur->plusfrom,p_to,pmids+j,i-j,false); + ApproximateSplineFromPointsSlopes(m_from,cur->minusto,mmids+j,i-j,false); + } + if ( spline->to->next==NULL ) { + /* Done */ + break; + } + if ( first==NULL ) first = spline; + } + if ( spline==first ) { + head->prev = last; + last->next = head; + } + free(mmids); free(pmids); free(knots); free(mids); +return( head ); +} + +static void SPLCheckValidity(SplineSet *ss) { + SplinePoint *sp, *nsp; + + for ( sp=ss->first; ; sp = nsp ) { + if ( sp->next==NULL ) + break; + nsp = sp->next->to; + if ( nsp->prev != sp->next || sp->next->from!=sp ) + IError("Bad SPL"); + if ( nsp==ss->first ) + break; + } + + for ( sp=ss->last; ; sp = nsp ) { + if ( sp->prev==NULL ) + break; + nsp = sp->prev->from; + if ( nsp->next != sp->prev || sp->prev->to!=sp ) + IError("Bad SPL"); + if ( nsp==ss->last ) + break; + } +} + +static SplineSet *_SplineSetStroke(SplineSet *spl,StrokeInfo *si,SplineChar *sc) { + SplineSet *ssplus, *ssminus; + int reversed = false; + struct strokedspline *head, *cur, *first, *lastp, *lastm; + Spline *s1, *s2; + + si->gottoobiglocal = false; + + if ( spl->first->next==NULL || spl->first->next->to==spl->first ) { + /* Only one point in the SplineSet. */ + ssplus = chunkalloc(sizeof(SplineSet)); + SinglePointStroke(spl->first,si,&ssplus->first,&ssplus->last); +return( ssplus ); + } + + SplineSetAddExtrema(NULL,spl,ae_all,1000/* Not used*/); + + if ( spl->first==spl->last && spl->first->next!=NULL ) { + /* My routine gets screwed up by counter-clockwise triangles */ + if ( !SplinePointListIsClockwise(spl)) { + reversed = true; + SplineSetReverse(spl); + } + } + + head = cur = _SplineSetApprox(spl,si,sc); + + first = NULL; + for ( cur=head; cur!=NULL && cur!=first; cur=cur->next ) { + if ( first==NULL ) first = cur; + if ( cur->s->to->next!=NULL ) + StrokeJoint(cur->s->to,si,cur,cur->next,sc); + FreeOrigStuff(cur); + } + FreeOrigStuff(head); /* normally gets freed when we look at the next item on list. But we did that for head first */ + + /* Finish off intersections, before doing joins */ + if ( spl->first->prev==NULL ) { + StrokeEndComplete(head,si,true); + for ( cur=head; cur->next!=NULL; cur=cur->next ); + StrokeEndComplete(cur,si,false); + } + + lastp = lastm = head; + if ( lastp->plusskip ) lastp = NULL; + if ( lastm->minusskip ) lastm = NULL; + + first = NULL; + for ( cur=head; cur!=NULL && cur!=first; cur=cur->next ) { + real factor = si->factor==NULL ? 1.0 : (si->factor)(si->data,cur->s,1.0); + if ( first==NULL ) first = cur; + + if ( cur->s->to->next!=NULL ) { + if ( !cur->plusskip ) lastp = cur; + if ( lastp!=NULL && !cur->next->plusskip ) { + if ( cur->pinnerto==-1 ) + MSP(cur->next->plusto,&lastp->plusfrom,&lastp->plusto); + else if ( cur->pinnerto ) + MSP(cur->next->plusto,&lastp->plusfrom,&lastp->plusto); + else if ( cur==lastp ) + MakeJoints(cur->next->plusto,cur->plusfrom,si,&cur->pinterto, + &cur->s->to->me,-1,cur->pangle,cur->nangle,factor); + else + IError("Lastp not cur" ); + } + if ( !cur->minusskip ) lastm = cur; + if ( lastm!=NULL && !cur->next->minusskip ) { + if ( cur->minnerto==-1 ) + MSP(lastm->minusto,&cur->next->minusfrom,&cur->next->minusto); + else if ( cur->minnerto ) + MSP(lastm->minusto,&cur->next->minusfrom,&cur->next->minusto); + else if ( cur==lastm ) + MakeJoints(lastm->minusto,cur->next->minusfrom,si,&cur->minterto, + &cur->s->to->me,1,PI+cur->nangle,PI+cur->pangle,factor); + else + IError("Lastm not cur"); + } + } + } + + for ( cur=head; cur!=NULL && cur->plusskip; ) { cur=cur->next; if ( cur==head ) cur=NULL; } + if ( cur!=NULL ) { + ssplus = chunkalloc(sizeof(SplineSet)); + ssplus->first = ssplus->last = cur->plusfrom; + SplineSetFixCPs(ssplus); + SPLCheckValidity(ssplus); + } else + /* It is possible to have a contour completely swallowed by the pen */ + ssplus = NULL; + for ( cur=head; cur!=NULL && cur->minusskip; ) { cur=cur->next; if ( cur==head ) cur=NULL; } + if ( spl->first==spl->last && cur!=NULL ) { + ssminus = chunkalloc(sizeof(SplineSet)); + ssminus->first = ssminus->last = cur->minusfrom; + SPLCheckValidity(ssminus); + /*SplineSetFixRidiculous(ssplus); SplineSetFixRidiculous(ssminus);*/ + SplineSetFixCPs(ssminus); + if ( reversed ) { + SplineSet *temp = ssplus; + ssplus = ssminus; + ssminus = temp; + } + SplineSetReverse(ssminus); + if ( ssplus != NULL ) + SplineSetReverse(ssplus); + if ( si->removeinternal && ssplus!=NULL ) { + SplinePointListFree(ssminus); + } else if ( si->removeexternal ) { + SplinePointListFree(ssplus); + SplineSetReverse(ssminus); + ssplus = ssminus; + } else { + if ( ssplus != NULL ) + ssplus->next = ssminus; + else + ssplus = ssminus; + /* I used to do a splineset correct dir here on both, but */ + /* that doesn't work always if a contour self intersects */ + /* I think it should always be correct */ + } + /* I can't always detect an overlap, so let's always do the remove */ + /* Sigh, no. That is still too dangerous */ + if ( si->removeoverlapifneeded && ssplus!=NULL && SplineSetIntersect(ssplus,&s1,&s2)) + ssplus = SplineSetRemoveOverlap(sc,ssplus,over_remove); + if ( reversed ) /* restore original, just in case we want it */ + SplineSetReverse(spl); + } else if ( si->stroke_type==si_std || si->stroke_type==si_elipse ) + SplineSetReverse(ssplus); + StrokedSplineFree(head); +return( ssplus ); +} + +static SplineSet *SSRemoveUTurns(SplineSet *base, StrokeInfo *si) { + /* All too often in MetaPost output splines have tiny cps which */ + /* make the slope at the end-points irrelevant when looking at */ + /* the curve. Since we assume the slope at the end-points is */ + /* similar to the slope at t=.01 this confuses us greatly and */ + /* produces nasty results. In this case try to approximate a new */ + /* spline with very different cps. Note: We break continuity! */ + /* A special case of this is the following: */ + /* My stroking algorithem gets confused by sharp turns. For example */ + /* if we have a spline which is all in a line, but the control points */ + /* are such that it doubles back on itself ( "* + * +", ie. cps */ + /* outside of the points) then things get very unhappy */ + SplineSet *spl= base; + Spline *first, *s, *next, *snew; + double dx,dy, offx,offy, diff, n,l, slen, len, bound; + int linear, bad, i, cnt; + SplinePoint fakefrom, faketo; + TPoint *tps; + + bound = si->radius*si->radius; + first = NULL; + if ( spl->first->next!=NULL && !spl->first->next->order2 ) + for ( s = spl->first->next; s!=NULL && s!=first; s=s->to->next ) { + if ( first==NULL ) first = s; + + bad = false; + dx = s->to->me.x-s->from->me.x; + dy = s->to->me.y-s->from->me.y; + slen = dx*dx + dy*dy; + + offx = s->from->nextcp.x-s->from->me.x; + offy = s->from->nextcp.y-s->from->me.y; + l= offx*dx + offy*dy; + if ( l<0 ) { + l = -l; + if ( (n= offx*dy - offy*dx)<0 ) n = -n; + len = offx*offx + offy*offy; + if ( (n/l>2*len/si->radius || (n>l/3 && s->from->prev==NULL )) && lento->me.x-s->to->prevcp.x; + offy = s->to->me.y-s->to->prevcp.y; + l= offx*dx + offy*dy; + if ( l<0 ) { + l = -l; + if ( (n= offx*dy - offy*dx)<0 ) n = -n; + len = offx*offx + offy*offy; + if ( (n/l>2*len/si->radius || (n>l/3 && s->to->next==NULL)) && lenfrom; fakefrom.next = fakefrom.prev = NULL; + faketo = *s->to; faketo.next = faketo.prev = NULL; + + slen = sqrt(slen); + dx /= slen; dy/=slen; + + if ( bad&1 ) { /* from->nextcp is nasty */ + offx = s->from->nextcp.x-s->from->me.x; + offy = s->from->nextcp.y-s->from->me.y; + len = sqrt(offx*offx + offy*offy); + offx /= len; offy/=len; + + n = offx*dy - offy*dx; + fakefrom.nextcp.x = fakefrom.me.x + slen*dx + 3*len*dy; + fakefrom.nextcp.y = fakefrom.me.y + slen*dy - 3*len*dx; + } + + if ( bad&2 ) { /* from->nextcp is nasty */ + offx = s->to->prevcp.x-s->to->me.x; + offy = s->to->prevcp.y-s->to->me.y; + len = sqrt(offx*offx + offy*offy); + offx /= len; offy/=len; + + n = offx*dy - offy*dx; + faketo.prevcp.x = faketo.me.x - slen*dx + 3*len*dy; + faketo.prevcp.y = faketo.me.y - slen*dy - 3*len*dx; + } + + if (( cnt = slen/2)<10 ) cnt = 10; + tps = galloc(cnt*sizeof(TPoint)); + for ( i=0; isplines[0].a*t + s->splines[0].b)*t + s->splines[0].c)*t + s->splines[0].d; + tps[i].y = ((s->splines[1].a*t + s->splines[1].b)*t + s->splines[1].c)*t + s->splines[1].d; + } + snew = ApproximateSplineFromPointsSlopes(&fakefrom,&faketo,tps,cnt,false); + snew->from = s->from; + snew->to = s->to; + snew->from->next = snew; + snew->to->prev = snew; + snew->from->nextcp = fakefrom.nextcp; + snew->from->nonextcp = fakefrom.nonextcp; + if ( bad&1 ) snew->from->pointtype = pt_corner; + snew->to->prevcp = faketo.prevcp; + snew->to->noprevcp = faketo.noprevcp; + if ( bad&2 ) snew->to->pointtype = pt_corner; + if ( first==s ) first=snew; + SplineFree(s); + free(tps); + s = snew; + } + } + + first = NULL; + for ( s = spl->first->next; s!=NULL && s!=first; s=s->to->next ) { + if ( first==NULL ) first = s; + dx = s->to->me.x-s->from->me.x; + dy = s->to->me.y-s->from->me.y; + offx = s->from->nextcp.x-s->from->me.x; + offy = s->from->nextcp.y-s->from->me.y; + if ( offx*dx + offy*dy<0 ) { + diff = offx*dy-offy*dx; + linear = ( diff<1 && diff>-1 ); + if ( offx<0 ) offx = -offx; + if ( offy<0 ) offy = -offy; + if ( offx+offy<1 || linear ) { + s->from->nextcp = s->from->me; + s->from->nonextcp = true; + if ( s->from->pointtype == pt_curve || s->from->pointtype == pt_hvcurve ) + s->from->pointtype = pt_corner; + if ( s->order2 ) { + s->to->prevcp = s->to->me; + s->to->noprevcp = true; + if ( s->to->pointtype==pt_curve || s->to->pointtype == pt_hvcurve ) + s->to->pointtype = pt_corner; + } + SplineRefigure(s); + } + } + offx = s->to->me.x-s->to->prevcp.x; + offy = s->to->me.y-s->to->prevcp.y; + if ( offx*dx + offy*dy<0 ) { + diff = offx*dy-offy*dx; + linear = ( diff<1 && diff>-1 ); + if ( offx<0 ) offx = -offx; + if ( offy<0 ) offy = -offy; + if ( offx+offy<1 || linear ) { + s->to->prevcp = s->to->me; + s->to->noprevcp = true; + if ( s->to->pointtype==pt_curve || s->to->pointtype == pt_hvcurve ) + s->to->pointtype = pt_corner; + if ( s->order2 ) { + s->from->nextcp = s->from->me; + s->from->nonextcp = true; + if ( s->from->pointtype == pt_curve || s->from->pointtype == pt_hvcurve ) + s->from->pointtype = pt_corner; + } + SplineRefigure(s); + } + } + } + + /* Zero length splines are bad too */ + /* As are splines of length .000003 */ + first = NULL; + for ( s = spl->first->next; s!=NULL && s!=first; s=next ) { + if ( first==NULL ) first = s; + next = s->to->next; + if ( s->from->nonextcp && s->to->noprevcp && s!=next && + s->from->me.x >= s->to->me.x-.1 && s->from->me.x <= s->to->me.x+.1 && + s->from->me.y >= s->to->me.y-.1 && s->from->me.y <= s->to->me.y+.1 ) { + s->from->next = next; + if ( next!=NULL ) { + s->from->nextcp = next->from->nextcp; + s->from->nonextcp = next->from->nonextcp; + s->from->nextcpdef = next->from->nextcpdef; + next->from = s->from; + } + SplinePointCatagorize(s->from); + if ( spl->last == s->to ) { + if ( next==NULL ) + spl->last = s->from; + else + spl->first = spl->last = s->from; + } + if ( spl->first==s->to ) spl->first = s->from; + if ( spl->last==s->to ) spl->last = s->from; + SplinePointFree(s->to); + SplineFree(s); + if ( first==s ) first = NULL; + } + } + +return( base ); +} + +static void SSRemoveColinearPoints(SplineSet *ss) { + SplinePoint *sp, *nsp, *nnsp; + BasePoint dir, ndir; + double len; + int removed; + + sp = ss->first; + if ( sp->prev==NULL ) +return; + nsp = sp->next->to; + if ( nsp==sp ) +return; + dir.x = nsp->me.x - sp->me.x; dir.y = nsp->me.y - sp->me.y; + len = dir.x*dir.x + dir.y*dir.y; + if ( len!=0 ) { + len = sqrt(len); + dir.x /= len; dir.y /= len; + } + nnsp = nsp->next->to; + if ( nnsp==sp ) +return; + memset(&ndir,0,sizeof(ndir)); + forever { + removed = false; + if ( nsp->next->islinear ) { + ndir.x = nnsp->me.x - nsp->me.x; ndir.y = nnsp->me.y - nsp->me.y; + len = ndir.x*ndir.x + ndir.y*ndir.y; + if ( len!=0 ) { + len = sqrt(len); + ndir.x /= len; ndir.y /= len; + } + } + if ( sp->next->islinear && nsp->next->islinear ) { + double dot =dir.x*ndir.y - dir.y*ndir.x; + if ( dot<.001 && dot>-.001 ) { + sp->next->to = nnsp; + nnsp->prev = sp->next; + SplineRefigure(sp->next); + SplineFree(nsp->next); + SplinePointFree(nsp); + if ( ss->first==nsp ) ss->first = sp; + if ( ss->last ==nsp ) ss->last = sp; + removed = true; + } else + sp = nsp; + } else + sp = nsp; + dir = ndir; + nsp = nnsp; + nnsp = nsp->next->to; + if ( !removed && sp==ss->first ) + break; + } +} + +static void SSesRemoveColinearPoints(SplineSet *ss) { + while ( ss!=NULL ) { + SSRemoveColinearPoints(ss); + ss = ss->next; + } +} + +SplineSet *SplineSetStroke(SplineSet *spl,StrokeInfo *si,SplineChar *sc) { + SplineSet *ret, *temp, *temp2; + SplineSet *order3 = NULL; + + if ( spl->first->next!=NULL && spl->first->next->order2 ) + order3 = spl = SSPSApprox(spl); + if ( si->radius==0 ) + si->radius=1; + temp2 = SSRemoveUTurns(SplinePointListCopy(spl),si); + if ( si->stroke_type == si_elipse ) { + real trans[6], factor; + StrokeInfo si2; + trans[0] = trans[3] = si->c; + trans[1] = -si->s; + trans[2] = si->s; + trans[4] = trans[5] = 0; + factor = si->radius/si->minorradius; + trans[0] *= factor; trans[2] *= factor; + temp = SplinePointListCopy(temp2); +#if 0 + BisectTurners(temp); +#endif + temp = SplinePointListTransform(temp,trans,true); + si2 = *si; + si2.stroke_type = si_std; + ret = SplineSetStroke(temp,&si2,sc); + SplinePointListFree(temp); + trans[0] = trans[3] = si->c; + trans[1] = si->s; + trans[2] = -si->s; + trans[4] = trans[5] = 0; + factor = si->minorradius/si->radius; + trans[0] *= factor; trans[1] *= factor; + ret = SplinePointListTransform(ret,trans,true); + } else + ret = _SplineSetStroke(temp2,si,sc); + SplinePointListFree(temp2); + if ( order3!=NULL ) { + temp = SplineSetsTTFApprox(ret); + SplinePointListsFree(ret); + SplinePointListFree(order3); + ret = temp; + } + /* We tend to get (small) rounding errors */ + SplineSetsRound2Int(ret,1024.,false,false); + /* If we use butt line caps or miter joins then we will likely have */ + /* some spurious colinear points. If we do, remove them */ + SSesRemoveColinearPoints(ret); +return( ret ); +} + diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/splineutil.c b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/splineutil.c new file mode 100644 index 00000000000..195c1f0536f --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/splineutil.c @@ -0,0 +1,4624 @@ +/* Copyright (C) 2000-2008 by George Williams */ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "fontforgevw.h" +#include +#include "psfont.h" +#include "ustring.h" +#include "utype.h" +#include "views.h" /* for FindSel structure */ +#ifdef HAVE_IEEEFP_H +# include /* Solaris defines isnan in ieeefp rather than math.h */ +#endif + +/*#define DEBUG 1*/ + +typedef struct quartic { + double a,b,c,d,e; +} Quartic; + +/* In an attempt to make allocation more efficient I just keep preallocated */ +/* lists of certain common sizes. It doesn't seem to make much difference */ +/* when allocating stuff, but does when freeing. If the extra complexity */ +/* is bad then put: */ +/* #define chunkalloc(size) gcalloc(1,size) */ +/* #define chunkfree(item,size) free(item) */ +/* into splinefont.h after (or instead of) the definition of chunkalloc()*/ + +#ifndef chunkalloc +#define ALLOC_CHUNK 100 /* Number of small chunks to malloc at a time */ +#if !defined(FONTFORGE_CONFIG_USE_LONGDOUBLE) && !defined(FONTFORGE_CONFIG_USE_DOUBLE) +# define CHUNK_MAX 100 /* Maximum size (in chunk units) that we are prepared to allocate */ + /* The size of our data structures */ +#else +# define CHUNK_MAX 129 +#endif +# define CHUNK_UNIT sizeof(void *) /* will vary with the word size of */ + /* the machine. if pointers are 64 bits*/ + /* we may need twice as much space as for 32 bits */ + +#ifdef FLAG +#undef FLAG +#define FLAG 0xbadcafe +#endif + +#ifdef CHUNKDEBUG +static int chunkdebug = 0; /* When this is set we never free anything, insuring that each chunk is unique */ +#endif + +#if ALLOC_CHUNK>1 +struct chunk { struct chunk *next; }; +struct chunk2 { struct chunk2 *next; int flag; }; +static struct chunk *chunklists[CHUNK_MAX] = { 0 }; +#endif + +#if defined(FLAG) && ALLOC_CHUNK>1 +void chunktest(void) { + int i; + struct chunk2 *c; + + for ( i=2; inext ) + if ( c->flag!=FLAG ) { + fprintf( stderr, "Chunk memory list has been corrupted\n" ); + abort(); + } +} +#endif + +void *chunkalloc(int size) { +# if ALLOC_CHUNK<=1 +return( gcalloc(1,size)); +# else + struct chunk *item; + int index; + + if ( size&(CHUNK_UNIT-1) ) + size = (size+CHUNK_UNIT-1)&~(CHUNK_UNIT-1); + + if ( (size&(CHUNK_UNIT-1)) || size>=(int)(CHUNK_MAX*CHUNK_UNIT) || size<=(int)sizeof(struct chunk)) { + fprintf( stderr, "Attempt to allocate something of size %d\n", size ); +return( gcalloc(1,size)); + } +#ifdef FLAG + chunktest(); +#endif + index = (size+CHUNK_UNIT-1)/CHUNK_UNIT; + if ( chunklists[index]==NULL ) { + char *pt, *end; + pt = galloc(ALLOC_CHUNK*size); + chunklists[index] = (struct chunk *) pt; + end = pt+(ALLOC_CHUNK-1)*size; + while ( ptnext = (struct chunk *) (pt + size); +#ifdef FLAG + ((struct chunk2 *) pt)->flag = FLAG; +#endif + pt += size; + } + ((struct chunk *) pt)->next = NULL; +#ifdef FLAG + ((struct chunk2 *) pt)->flag = FLAG; +#endif + } + item = chunklists[index]; + chunklists[index] = item->next; + memset(item,'\0',size); +return( item ); +# endif +} + +void chunkfree(void *item,int size) { + int index = (size+CHUNK_UNIT-1)/CHUNK_UNIT; +#ifdef CHUNKDEBUG + if ( chunkdebug ) +return; +#endif +# if ALLOC_CHUNK<=1 + free(item); +# else + if ( item==NULL ) +return; + + if ( size&(CHUNK_UNIT-1) ) + size = (size+CHUNK_UNIT-1)&~(CHUNK_UNIT-1); + + if ( (size&(CHUNK_UNIT-1)) || size>=(int)(CHUNK_MAX*CHUNK_UNIT) || size<=(int)sizeof(struct chunk)) { + fprintf( stderr, "Attempt to free something of size %d\n", size ); + free(item); + } else { +#ifdef LOCAL_DEBUG + if ( (char *) (chunklists[index]) == (char *) item || + ( ((char *) (chunklists[index]))<(char *) item && + ((char *) (chunklists[index]))+size>(char *) item) || + ( ((char *) (chunklists[index]))>(char *) item && + ((char *) (chunklists[index]))<((char *) item)+size)) + IError( "Memory mixup. Chunk list is wrong!!!" ); +#endif + ((struct chunk *) item)->next = chunklists[index]; +# ifdef FLAG + if ( size>=sizeof(struct chunk2)) + ((struct chunk2 *) item)->flag = FLAG; +# endif + chunklists[index] = (struct chunk *) item; + } +# ifdef FLAG + chunktest(); +# endif +# endif +} +#endif + +char *strconcat(const char *str1,const char *str2) { + int len1 = strlen(str1); + char *ret = galloc(len1+strlen(str2)+1); + strcpy(ret,str1); + strcpy(ret+len1,str2); +return( ret ); +} + +char *strconcat3(const char *str1,const char *str2, const char *str3) { + int len1 = strlen(str1), len2 = strlen(str2); + char *ret = galloc(len1+len2+strlen(str3)+1); + strcpy(ret,str1); + strcpy(ret+len1,str2); + strcpy(ret+len1+len2,str3); +return( ret ); +} + +void LineListFree(LineList *ll) { + LineList *next; + + while ( ll!=NULL ) { + next = ll->next; + chunkfree(ll,sizeof(LineList)); + ll = next; + } +} + +void LinearApproxFree(LinearApprox *la) { + LinearApprox *next; + + while ( la!=NULL ) { + next = la->next; + LineListFree(la->lines); + chunkfree(la,sizeof(LinearApprox)); + la = next; + } +} + +void SplineFree(Spline *spline) { + LinearApproxFree(spline->approx); + chunkfree(spline,sizeof(Spline)); +} + +SplinePoint *SplinePointCreate(real x, real y) { + SplinePoint *sp = chunkalloc(sizeof(SplinePoint)); + sp->me.x = x; sp->me.y = y; + sp->nextcp = sp->prevcp = sp->me; + sp->nonextcp = sp->noprevcp = true; + sp->nextcpdef = sp->prevcpdef = false; + sp->ttfindex = sp->nextcpindex = 0xfffe; +return( sp ); +} + +Spline *SplineMake3(SplinePoint *from, SplinePoint *to) { + Spline *spline = chunkalloc(sizeof(Spline)); + + spline->from = from; spline->to = to; + from->next = to->prev = spline; + SplineRefigure3(spline); +return( spline ); +} + +void SplinePointFree(SplinePoint *sp) { + chunkfree(sp->hintmask,sizeof(HintMask)); + chunkfree(sp,sizeof(SplinePoint)); +} + +void SplinePointMDFree(SplineChar *sc, SplinePoint *sp) { + MinimumDistance *md, *prev, *next; + + if ( sc!=NULL ) { + prev = NULL; + for ( md = sc->md; md!=NULL; md = next ) { + next = md->next; + if ( md->sp1==sp || md->sp2==sp ) { + if ( prev==NULL ) + sc->md = next; + else + prev->next = next; + chunkfree(md,sizeof(MinimumDistance)); + } else + prev = md; + } + } + + chunkfree(sp->hintmask,sizeof(HintMask)); + chunkfree(sp,sizeof(SplinePoint)); +} + +void SplinePointsFree(SplinePointList *spl) { + Spline *first, *spline, *next; + int nonext; + + if ( spl==NULL ) +return; + nonext = spl->first->next==NULL; + if ( spl->first!=NULL ) { + first = NULL; + for ( spline = spl->first->next; spline!=NULL && spline!=first; spline = next ) { + next = spline->to->next; + SplinePointFree(spline->to); + SplineFree(spline); + if ( first==NULL ) first = spline; + } + if ( spl->last!=spl->first || nonext ) + SplinePointFree(spl->first); + } +} + +void SplineSetBeziersClear(SplinePointList *spl) { + Spline *first, *spline, *next; + int nonext; + + if ( spl==NULL ) +return; + if ( spl->first!=NULL ) { + nonext = spl->first->next==NULL; + first = NULL; + for ( spline = spl->first->next; spline!=NULL && spline!=first; spline = next ) { + next = spline->to->next; + SplinePointFree(spline->to); + SplineFree(spline); + if ( first==NULL ) first = spline; + } + if ( spl->last!=spl->first || nonext ) + SplinePointFree(spl->first); + } + spl->first = spl->last = NULL; +} + +void SplinePointListFree(SplinePointList *spl) { + Spline *first, *spline, *next; + int nonext; + + if ( spl==NULL ) +return; + if ( spl->first!=NULL ) { + nonext = spl->first->next==NULL; + first = NULL; + for ( spline = spl->first->next; spline!=NULL && spline!=first; spline = next ) { + next = spline->to->next; + SplinePointFree(spline->to); + SplineFree(spline); + if ( first==NULL ) first = spline; + } + if ( spl->last!=spl->first || nonext ) + SplinePointFree(spl->first); + } + free(spl->contour_name); + chunkfree(spl,sizeof(SplinePointList)); +} + +void SplinePointListMDFree(SplineChar *sc,SplinePointList *spl) { + Spline *first, *spline, *next; + int freefirst; + + if ( spl==NULL ) +return; + if ( spl->first!=NULL ) { + first = NULL; + freefirst = ( spl->last!=spl->first || spl->first->next==NULL ); + for ( spline = spl->first->next; spline!=NULL && spline!=first; spline = next ) { + next = spline->to->next; + SplinePointMDFree(sc,spline->to); + SplineFree(spline); + if ( first==NULL ) first = spline; + } + if ( freefirst ) + SplinePointMDFree(sc,spl->first); + } + free(spl->contour_name); + chunkfree(spl,sizeof(SplinePointList)); +} + +void SplinePointListsMDFree(SplineChar *sc,SplinePointList *spl) { + SplinePointList *next; + + while ( spl!=NULL ) { + next = spl->next; + SplinePointListMDFree(sc,spl); + spl = next; + } +} + +void SplinePointListsFree(SplinePointList *head) { + SplinePointList *spl, *next; + + for ( spl=head; spl!=NULL; spl=next ) { + next = spl->next; + SplinePointListFree(spl); + } +} + +void ImageListsFree(ImageList *imgs) { + ImageList *inext; + + while ( imgs!=NULL ) { + inext = imgs->next; + chunkfree(imgs,sizeof(ImageList)); + imgs = inext; + } +} + +void RefCharFree(RefChar *ref) { + int i; + + if ( ref==NULL ) +return; + for ( i=0; ilayer_cnt; ++i ) { + SplinePointListsFree(ref->layers[i].splines); + ImageListsFree(ref->layers[i].images); + } + free(ref->layers); + chunkfree(ref,sizeof(RefChar)); +} + +RefChar *RefCharCreate(void) { + RefChar *ref = chunkalloc(sizeof(RefChar)); + ref->layer_cnt = 1; + ref->layers = gcalloc(1,sizeof(struct reflayer)); + ref->round_translation_to_grid = true; +return( ref ); +} + +void RefCharsFree(RefChar *ref) { + RefChar *rnext; + + while ( ref!=NULL ) { + rnext = ref->next; + RefCharFree(ref); + ref = rnext; + } +} + + +typedef struct spline1 { + Spline1D sp; + real s0, s1; + real c0, c1; +} Spline1; + +static void FigureSpline1(Spline1 *sp1,bigreal t0, bigreal t1, Spline1D *sp ) { + bigreal s = (t1-t0); + if ( sp->a==0 && sp->b==0 ) { + sp1->sp.d = sp->d + t0*sp->c; + sp1->sp.c = s*sp->c; + sp1->sp.b = sp1->sp.a = 0; + } else { + sp1->sp.d = sp->d + t0*(sp->c + t0*(sp->b + t0*sp->a)); + sp1->sp.c = s*(sp->c + t0*(2*sp->b + 3*sp->a*t0)); + sp1->sp.b = s*s*(sp->b+3*sp->a*t0); + sp1->sp.a = s*s*s*sp->a; +#if 0 /* Got invoked once on a perfectly good spline */ + sp1->s1 = sp1->sp.a+sp1->sp.b+sp1->sp.c+sp1->sp.d; + if ( ((sp1->s1>.001 || sp1->s1<-.001) && !RealNear((double) sp1->sp.a+sp1->sp.b+sp1->sp.c+sp1->sp.d,sp1->s1)) || + !RealNear(sp1->sp.d,sp1->s0)) + IError( "Created spline does not work in FigureSpline1"); +#endif + } + sp1->c0 = sp1->sp.c/3 + sp1->sp.d; + sp1->c1 = sp1->c0 + (sp1->sp.b+sp1->sp.c)/3; +} + + +static void SplineFindBounds(const Spline *sp, DBounds *bounds) { + real t, b2_fourac, v; + real min, max; + const Spline1D *sp1; + int i; + + /* first try the end points */ + for ( i=0; i<2; ++i ) { + sp1 = &sp->splines[i]; + if ( i==0 ) { + if ( sp->to->me.xminx ) bounds->minx = sp->to->me.x; + if ( sp->to->me.x>bounds->maxx ) bounds->maxx = sp->to->me.x; + min = bounds->minx; max = bounds->maxx; + } else { + if ( sp->to->me.yminy ) bounds->miny = sp->to->me.y; + if ( sp->to->me.y>bounds->maxy ) bounds->maxy = sp->to->me.y; + min = bounds->miny; max = bounds->maxy; + } + + /* then try the extrema of the spline (assuming they are between t=(0,1) */ + /* (I don't bother fixing up for tiny rounding errors here. they don't matter */ + /* But we could call CheckExtremaForSingleBitErrors */ + if ( sp1->a!=0 ) { + b2_fourac = 4*sp1->b*sp1->b - 12*sp1->a*sp1->c; + if ( b2_fourac>=0 ) { + b2_fourac = sqrt(b2_fourac); + t = (-2*sp1->b + b2_fourac) / (6*sp1->a); + if ( t>0 && t<1 ) { + v = ((sp1->a*t+sp1->b)*t+sp1->c)*t + sp1->d; + if ( vmax ) max = v; + } + t = (-2*sp1->b - b2_fourac) / (6*sp1->a); + if ( t>0 && t<1 ) { + v = ((sp1->a*t+sp1->b)*t+sp1->c)*t + sp1->d; + if ( vmax ) max = v; + } + } + } else if ( sp1->b!=0 ) { + t = -sp1->c/(2.0*sp1->b); + if ( t>0 && t<1 ) { + v = (sp1->b*t+sp1->c)*t + sp1->d; + if ( vmax ) max = v; + } + } + if ( i==0 ) { + bounds->minx = min; bounds->maxx = max; + } else { + bounds->miny = min; bounds->maxy = max; + } + } +} + +static void _SplineSetFindBounds(const SplinePointList *spl, DBounds *bounds) { + Spline *spline, *first; + /* Ignore contours consisting of a single point (used for hinting, anchors */ + /* for mark to base, etc. */ + + for ( ; spl!=NULL; spl = spl->next ) if ( spl->first->next!=NULL && spl->first->next->to != spl->first ) { + first = NULL; + if ( bounds->minx==0 && bounds->maxx==0 && bounds->miny==0 && bounds->maxy == 0 ) { + bounds->minx = bounds->maxx = spl->first->me.x; + bounds->miny = bounds->maxy = spl->first->me.y; + } else { + if ( spl->first->me.xminx ) bounds->minx = spl->first->me.x; + if ( spl->first->me.x>bounds->maxx ) bounds->maxx = spl->first->me.x; + if ( spl->first->me.yminy ) bounds->miny = spl->first->me.y; + if ( spl->first->me.y>bounds->maxy ) bounds->maxy = spl->first->me.y; + } + for ( spline = spl->first->next; spline!=NULL && spline!=first; spline=spline->to->next ) { + SplineFindBounds(spline,bounds); + if ( first==NULL ) first = spline; + } + } +} + + +void SplineSetFindBounds(const SplinePointList *spl, DBounds *bounds) { + memset(bounds,'\0',sizeof(*bounds)); + _SplineSetFindBounds(spl,bounds); +} + +static void _SplineCharLayerFindBounds(SplineChar *sc,int layer, DBounds *bounds) { + RefChar *rf; + + for ( rf=sc->layers[layer].refs; rf!=NULL; rf = rf->next ) { + if ( bounds->minx==0 && bounds->maxx==0 && bounds->miny==0 && bounds->maxy == 0 ) + *bounds = rf->bb; + else if ( rf->bb.minx!=0 || rf->bb.maxx != 0 || rf->bb.maxy != 0 || rf->bb.miny!=0 ) { + if ( rf->bb.minx < bounds->minx ) bounds->minx = rf->bb.minx; + if ( rf->bb.miny < bounds->miny ) bounds->miny = rf->bb.miny; + if ( rf->bb.maxx > bounds->maxx ) bounds->maxx = rf->bb.maxx; + if ( rf->bb.maxy > bounds->maxy ) bounds->maxy = rf->bb.maxy; + } + } + _SplineSetFindBounds(sc->layers[layer].splines,bounds); + + if ( sc->parent!=NULL && sc->parent->strokedfont && + (bounds->minx!=bounds->maxx || bounds->miny!=bounds->maxy)) { + real sw = sc->parent->strokewidth; + bounds->minx -= sw; bounds->miny -= sw; + bounds->maxx += sw; bounds->maxy += sw; + } +} + +void SplineCharLayerFindBounds(SplineChar *sc,int layer,DBounds *bounds) { + + if ( sc->parent!=NULL && sc->parent->multilayer ) { + SplineCharFindBounds(sc,bounds); +return; + } + + /* a char with no splines (ie. a space) must have an lbearing of 0 */ + bounds->minx = bounds->maxx = 0; + bounds->miny = bounds->maxy = 0; + + _SplineCharLayerFindBounds(sc,layer,bounds); +} + +void SplineCharFindBounds(SplineChar *sc,DBounds *bounds) { + int i; + int first,last; + + /* a char with no splines (ie. a space) must have an lbearing of 0 */ + bounds->minx = bounds->maxx = 0; + bounds->miny = bounds->maxy = 0; + + first = last = ly_fore; + if ( sc->parent!=NULL && sc->parent->multilayer ) + last = sc->layer_cnt-1; + for ( i=first; i<=last; ++i ) + _SplineCharLayerFindBounds(sc,i,bounds); +} + +void SplineFontLayerFindBounds(SplineFont *sf,int layer,DBounds *bounds) { + int i, k, first, last; + (void)layer; + if ( sf->multilayer ) { + SplineFontFindBounds(sf,bounds); +return; + } + + bounds->minx = bounds->maxx = 0; + bounds->miny = bounds->maxy = 0; + + for ( i = 0; iglyphcnt; ++i ) { + SplineChar *sc = sf->glyphs[i]; + if ( sc!=NULL ) { + first = last = ly_fore; + if ( sc->parent != NULL && sc->parent->multilayer ) + last = sc->layer_cnt-1; + for ( k=first; k<=last; ++k ) + _SplineCharLayerFindBounds(sc,k,bounds); + } + } +} + +void SplineFontFindBounds(SplineFont *sf,DBounds *bounds) { + int i, k, first, last; + + bounds->minx = bounds->maxx = 0; + bounds->miny = bounds->maxy = 0; + + for ( i = 0; iglyphcnt; ++i ) { + SplineChar *sc = sf->glyphs[i]; + if ( sc!=NULL ) { + first = last = ly_fore; + if ( sf->multilayer ) + last = sc->layer_cnt-1; + for ( k=first; k<=last; ++k ) + _SplineCharLayerFindBounds(sc,k,bounds); + } + } +} + +void CIDLayerFindBounds(SplineFont *cidmaster,int layer,DBounds *bounds) { + SplineFont *sf; + int i; + DBounds b; + real factor; + + if ( cidmaster->cidmaster ) + cidmaster = cidmaster->cidmaster; + if ( cidmaster->subfonts==NULL ) { + SplineFontLayerFindBounds(cidmaster,layer,bounds); +return; + } + + sf = cidmaster->subfonts[0]; + SplineFontLayerFindBounds(sf,layer,bounds); + factor = 1000.0/(sf->ascent+sf->descent); + bounds->maxx *= factor; bounds->minx *= factor; bounds->miny *= factor; bounds->maxy *= factor; + for ( i=1; isubfontcnt; ++i ) { + sf = cidmaster->subfonts[i]; + SplineFontLayerFindBounds(sf,layer,&b); + factor = 1000.0/(sf->ascent+sf->descent); + b.maxx *= factor; b.minx *= factor; b.miny *= factor; b.maxy *= factor; + if ( b.maxx>bounds->maxx ) bounds->maxx = b.maxx; + if ( b.maxy>bounds->maxy ) bounds->maxy = b.maxy; + if ( b.minyminy ) bounds->miny = b.miny; + if ( b.minxminx ) bounds->minx = b.minx; + } +} + +static void _SplineSetFindTop(SplineSet *ss,BasePoint *top) { + SplinePoint *sp; + + for ( ; ss!=NULL; ss=ss->next ) { + for ( sp=ss->first; ; ) { + if ( sp->me.y > top->y ) *top = sp->me; + if ( sp->next==NULL ) + break; + sp = sp->next->to; + if ( sp==ss->first ) + break; + } + } +} + +static void SplineSetFindTop(SplineSet *ss,BasePoint *top) { + + top->y = -1e10; + _SplineSetFindTop(ss,top); + if ( top->y < -65536 ) top->y = top->x = 0; +} + +void SplineSetQuickBounds(SplineSet *ss,DBounds *b) { + SplinePoint *sp; + + b->minx = b->miny = 1e10; + b->maxx = b->maxy = -1e10; + for ( ; ss!=NULL; ss=ss->next ) { + for ( sp=ss->first; ; ) { + if ( sp->me.y < b->miny ) b->miny = sp->me.y; + if ( sp->me.x < b->minx ) b->minx = sp->me.x; + if ( sp->me.y > b->maxy ) b->maxy = sp->me.y; + if ( sp->me.x > b->maxx ) b->maxx = sp->me.x; + if ( sp->next==NULL ) + break; + sp = sp->next->to; + if ( sp==ss->first ) + break; + } + } + if ( b->minx>65536 ) b->minx = 0; + if ( b->miny>65536 ) b->miny = 0; + if ( b->maxx<-65536 ) b->maxx = 0; + if ( b->maxy<-65536 ) b->maxy = 0; +} + +void SplineCharQuickBounds(SplineChar *sc, DBounds *b) { + RefChar *ref; + int i,first, last; + DBounds temp; + + memset(b,0,sizeof(*b)); + first = last = ly_fore; + if ( sc->parent!=NULL && sc->parent->multilayer ) + last = sc->layer_cnt-1; + for ( i=first; i<=last; ++i ) { + SplineSetQuickBounds(sc->layers[i].splines,&temp); + if ( temp.minx!=0 || temp.maxx != 0 || temp.maxy != 0 || temp.miny!=0 ) { + if ( temp.minx < b->minx ) b->minx = temp.minx; + if ( temp.miny < b->miny ) b->miny = temp.miny; + if ( temp.maxx > b->maxx ) b->maxx = temp.maxx; + if ( temp.maxy > b->maxy ) b->maxy = temp.maxy; + } + for ( ref = sc->layers[i].refs; ref!=NULL; ref = ref->next ) { + /*SplineSetQuickBounds(ref->layers[0].splines,&temp);*/ + if ( b->minx==0 && b->maxx==0 && b->miny==0 && b->maxy == 0 ) + *b = ref->bb; + else if ( ref->bb.minx!=0 || ref->bb.maxx != 0 || ref->bb.maxy != 0 || ref->bb.miny!=0 ) { + if ( ref->bb.minx < b->minx ) b->minx = ref->bb.minx; + if ( ref->bb.miny < b->miny ) b->miny = ref->bb.miny; + if ( ref->bb.maxx > b->maxx ) b->maxx = ref->bb.maxx; + if ( ref->bb.maxy > b->maxy ) b->maxy = ref->bb.maxy; + } + } + } + if ( sc->parent!=NULL && sc->parent->strokedfont && + (b->minx!=b->maxx || b->miny!=b->maxy)) { + real sw = sc->parent->strokewidth; + b->minx -= sw; b->miny -= sw; + b->maxx += sw; b->maxy += sw; + } +} + +void SplineSetQuickConservativeBounds(SplineSet *ss,DBounds *b) { + SplinePoint *sp; + + b->minx = b->miny = 1e10; + b->maxx = b->maxy = -1e10; + for ( ; ss!=NULL; ss=ss->next ) { + for ( sp=ss->first; ; ) { + if ( sp->me.y < b->miny ) b->miny = sp->me.y; + if ( sp->me.x < b->minx ) b->minx = sp->me.x; + if ( sp->me.y > b->maxy ) b->maxy = sp->me.y; + if ( sp->me.x > b->maxx ) b->maxx = sp->me.x; + if ( sp->nextcp.y < b->miny ) b->miny = sp->nextcp.y; + if ( sp->nextcp.x < b->minx ) b->minx = sp->nextcp.x; + if ( sp->nextcp.y > b->maxy ) b->maxy = sp->nextcp.y; + if ( sp->nextcp.x > b->maxx ) b->maxx = sp->nextcp.x; + if ( sp->prevcp.y < b->miny ) b->miny = sp->prevcp.y; + if ( sp->prevcp.x < b->minx ) b->minx = sp->prevcp.x; + if ( sp->prevcp.y > b->maxy ) b->maxy = sp->prevcp.y; + if ( sp->prevcp.x > b->maxx ) b->maxx = sp->prevcp.x; + if ( sp->next==NULL ) + break; + sp = sp->next->to; + if ( sp==ss->first ) + break; + } + } + if ( b->minx>65536 ) b->minx = 0; + if ( b->miny>65536 ) b->miny = 0; + if ( b->maxx<-65536 ) b->maxx = 0; + if ( b->maxy<-65536 ) b->maxy = 0; +} + +void SplineCharQuickConservativeBounds(SplineChar *sc, DBounds *b) { + RefChar *ref; + int i, first,last; + DBounds temp; + + memset(b,0,sizeof(*b)); + first = last = ly_fore; + if ( sc->parent!=NULL && sc->parent->multilayer ) + last = sc->layer_cnt-1; + for ( i=first; i<=last; ++i ) { + SplineSetQuickConservativeBounds(sc->layers[i].splines,&temp); + if ( temp.minx!=0 || temp.maxx != 0 || temp.maxy != 0 || temp.miny!=0 ) { + if ( temp.minx < b->minx ) b->minx = temp.minx; + if ( temp.miny < b->miny ) b->miny = temp.miny; + if ( temp.maxx > b->maxx ) b->maxx = temp.maxx; + if ( temp.maxy > b->maxy ) b->maxy = temp.maxy; + } + for ( ref = sc->layers[i].refs; ref!=NULL; ref = ref->next ) { + /*SplineSetQuickConservativeBounds(ref->layers[0].splines,&temp);*/ + if ( b->minx==0 && b->maxx==0 && b->miny==0 && b->maxy == 0 ) + *b = ref->bb; + else if ( ref->bb.minx!=0 || ref->bb.maxx != 0 || ref->bb.maxy != 0 || ref->bb.miny!=0 ) { + if ( ref->bb.minx < b->minx ) b->minx = ref->bb.minx; + if ( ref->bb.miny < b->miny ) b->miny = ref->bb.miny; + if ( ref->bb.maxx > b->maxx ) b->maxx = ref->bb.maxx; + if ( ref->bb.maxy > b->maxy ) b->maxy = ref->bb.maxy; + } + } + } + if ( sc->parent->strokedfont && (b->minx!=b->maxx || b->miny!=b->maxy)) { + real sw = sc->parent->strokewidth; + b->minx -= sw; b->miny -= sw; + b->maxx += sw; b->maxy += sw; + } +} + +void SplineFontQuickConservativeBounds(SplineFont *sf,DBounds *b) { + DBounds bb; + int i; + + b->minx = b->miny = 1e10; + b->maxx = b->maxy = -1e10; + for ( i=0; iglyphcnt; ++i ) if ( sf->glyphs[i]!=NULL ) { + SplineCharQuickConservativeBounds(sf->glyphs[i],&bb); + if ( bb.minx < b->minx ) b->minx = bb.minx; + if ( bb.miny < b->miny ) b->miny = bb.miny; + if ( bb.maxx > b->maxx ) b->maxx = bb.maxx; + if ( bb.maxy > b->maxy ) b->maxy = bb.maxy; + } + if ( b->minx>65536 ) b->minx = 0; + if ( b->miny>65536 ) b->miny = 0; + if ( b->maxx<-65536 ) b->maxx = 0; + if ( b->maxy<-65536 ) b->maxy = 0; +} + +void SplinePointCatagorize(SplinePoint *sp) { + int oldpointtype = sp->pointtype; + + sp->pointtype = pt_corner; + if ( sp->next==NULL && sp->prev==NULL ) + ; + else if ( (sp->next!=NULL && sp->next->to->me.x==sp->me.x && sp->next->to->me.y==sp->me.y) || + (sp->prev!=NULL && sp->prev->from->me.x==sp->me.x && sp->prev->from->me.y==sp->me.y )) + ; + else if ( sp->next==NULL ) { + sp->pointtype = sp->noprevcp ? pt_corner : pt_curve; + } else if ( sp->prev==NULL ) { + sp->pointtype = sp->nonextcp ? pt_corner : pt_curve; + } else if ( sp->nonextcp && sp->noprevcp ) { + ; + } else { + BasePoint ndir, ncdir, ncunit, pdir, pcdir, pcunit; + double nlen, nclen, plen, pclen; + double dot; + + ncdir.x = sp->nextcp.x - sp->me.x; ncdir.y = sp->nextcp.y - sp->me.y; + pcdir.x = sp->prevcp.x - sp->me.x; pcdir.y = sp->prevcp.y - sp->me.y; + ndir.x = ndir.y = pdir.x = pdir.y = 0; + if ( sp->next!=NULL ) { + ndir.x = sp->next->to->me.x - sp->me.x; ndir.y = sp->next->to->me.y - sp->me.y; + } + if ( sp->prev!=NULL ) { + pdir.x = sp->prev->from->me.x - sp->me.x; pdir.y = sp->prev->from->me.y - sp->me.y; + } + nclen = sqrt(ncdir.x*ncdir.x + ncdir.y*ncdir.y); + pclen = sqrt(pcdir.x*pcdir.x + pcdir.y*pcdir.y); + nlen = sqrt(ndir.x*ndir.x + ndir.y*ndir.y); + plen = sqrt(pdir.x*pdir.x + pdir.y*pdir.y); + ncunit = ncdir; pcunit = pcdir; + if ( nclen!=0 ) { ncunit.x /= nclen; ncunit.y /= nclen; } + if ( pclen!=0 ) { pcunit.x /= pclen; pcunit.y /= pclen; } + if ( nlen!=0 ) { ndir.x /= nlen; ndir.y /= nlen; } + if ( plen!=0 ) { pdir.x /= plen; pdir.y /= plen; } + + /* find out which side has the shorter control vector. Dot that vector */ + /* with the normal of the unit vector on the other side. If the */ + /* result is less than 1 em-unit then we've got colinear control points */ + /* (within the resolution of the integer grid) */ + if ( nclen!=0 && pclen!=0 && + ((nclen>=pclen && (dot = pcdir.x*ncunit.y - pcdir.y*ncunit.x)<1.0 && dot>-1.0 ) || + (pclen>nclen && (dot = ncdir.x*pcunit.y - ncdir.y*pcunit.x)<1.0 && dot>-1.0 ))) + sp->pointtype = pt_curve; + /* Dot product of control point with unit vector normal to line in */ + /* opposite direction should be less than an em-unit for a tangent */ + else if (( nclen==0 && pclen!=0 && (dot = pcdir.x*ndir.y-pcdir.y*ndir.x)<1.0 && dot>-1.0 ) || + ( pclen==0 && nclen!=0 && (dot = ncdir.x*pdir.y-ncdir.y*pdir.x)<1.0 && dot>-1.0 )) + sp->pointtype = pt_tangent; + + /* If a point started out hv, and could still be hv, them make it so */ + /* but don't make hv points de novo, Alexey doesn't like change */ + /* (this only works because hv isn't a default setting, so if it's */ + /* there it was done intentionally) */ + if ( sp->pointtype == pt_curve && oldpointtype == pt_hvcurve && + ((sp->nextcp.x==sp->me.x && sp->prevcp.x==sp->me.x && sp->nextcp.y!=sp->me.y) || + (sp->nextcp.y==sp->me.y && sp->prevcp.y==sp->me.y && sp->nextcp.x!=sp->me.x))) + sp->pointtype = pt_hvcurve; + } +} + +int SplinePointIsACorner(SplinePoint *sp) { + enum pointtype old = sp->pointtype, new; + + SplinePointCatagorize(sp); + new = sp->pointtype; + sp->pointtype = old; +return( new==pt_corner ); +} + +void SPLCatagorizePoints(SplinePointList *spl) { + Spline *spline, *first, *last=NULL; + + for ( ; spl!=NULL; spl = spl->next ) { + first = NULL; + for ( spline = spl->first->next; spline!=NULL && spline!=first; spline=spline->to->next ) { + SplinePointCatagorize(spline->from); + last = spline; + if ( first==NULL ) first = spline; + } + if ( spline==NULL && last!=NULL ) + SplinePointCatagorize(last->to); + } +} + +void SCCatagorizePoints(SplineChar *sc) { + SPLCatagorizePoints(sc->layers[ly_fore].splines); +} + +static int CharsNotInEncoding(FontDict *fd) { + int i, cnt, j; + + for ( i=cnt=0; ichars->cnt; ++i ) { + if ( fd->chars->keys[i]!=NULL ) { + for ( j=0; j<256; ++j ) + if ( fd->encoding[j]!=NULL && + strcmp(fd->encoding[j],fd->chars->keys[i])==0 ) + break; + if ( j==256 ) + ++cnt; + } + } + /* And for type 3 fonts... */ + if ( fd->charprocs!=NULL ) for ( i=0; icharprocs->cnt; ++i ) { + if ( fd->charprocs->keys[i]!=NULL ) { + for ( j=0; j<256; ++j ) + if ( fd->encoding[j]!=NULL && + strcmp(fd->encoding[j],fd->charprocs->keys[i])==0 ) + break; + if ( j==256 ) + ++cnt; + } + } +return( cnt ); +} + +static int LookupCharString(char *encname,struct pschars *chars) { + int k; + + if ( encname==NULL ) encname = ".notdef"; /* In case of an incomplete encoding array */ + + for ( k=0; kcnt; ++k ) { + if ( chars->keys[k]!=NULL ) + if ( strcmp(encname,chars->keys[k])==0 ) +return( k ); + } +return( -1 ); +} + +SplinePointList *SplinePointListCopy1(const SplinePointList *spl) { + SplinePointList *cur; + const SplinePoint *pt; SplinePoint *cpt; + Spline *spline; + + cur = chunkalloc(sizeof(SplinePointList)); + cur->is_clip_path = spl->is_clip_path; + + for ( pt=spl->first; ; ) { + cpt = chunkalloc(sizeof(SplinePoint)); + *cpt = *pt; + if ( pt->hintmask!=NULL ) { + cpt->hintmask = chunkalloc(sizeof(HintMask)); + memcpy(cpt->hintmask,pt->hintmask,sizeof(HintMask)); + } + cpt->next = cpt->prev = NULL; + if ( cur->first==NULL ) + cur->first = cur->last = cpt; + else { + spline = chunkalloc(sizeof(Spline)); + *spline = *pt->prev; + spline->from = cur->last; + cur->last->next = spline; + cpt->prev = spline; + spline->to = cpt; + spline->approx = NULL; + cur->last = cpt; + } + if ( pt->next==NULL ) + break; + pt = pt->next->to; + if ( pt==spl->first ) + break; + } + if ( spl->first->prev!=NULL ) { + cpt = cur->first; + spline = chunkalloc(sizeof(Spline)); + *spline = *pt->prev; + spline->from = cur->last; + cur->last->next = spline; + cpt->prev = spline; + spline->to = cpt; + spline->approx = NULL; + cur->last = cpt; + } +return( cur ); +} + +/* If this routine is called we are guarenteed that: + at least one point on the splineset is selected + not all points on the splineset are selected +*/ +static SplinePointList *SplinePointListCopySelected1(SplinePointList *spl) { + SplinePointList *head=NULL, *last=NULL, *cur; + SplinePoint *cpt, *first, *start; + Spline *spline; + + start = spl->first; + if ( spl->first==spl->last ) { + /* If it's a closed contour and the start point is selected then we */ + /* don't know where that selection began (and we have to keep it with */ + /* the things that precede it when we make the new splinesets), so */ + /* loop until we find something unselected */ + while ( start->selected ) + start = start->next->to; + } + first = NULL; + while ( start != NULL && start!=first ) { + while ( start!=NULL && start!=first && !start->selected ) { + if ( first==NULL ) first = start; + if ( start->next==NULL ) { + start = NULL; + break; + } + start = start->next->to; + } + if ( start==NULL || start==first ) + break; + cur = chunkalloc(sizeof(SplinePointList)); + if ( head==NULL ) + head = cur; + else + last->next = cur; + last = cur; + + while ( start!=NULL && start->selected && start!=first ) { + cpt = chunkalloc(sizeof(SplinePoint)); + *cpt = *start; + cpt->hintmask = NULL; + cpt->next = cpt->prev = NULL; + if ( cur->first==NULL ) + cur->first = cur->last = cpt; + else { + spline = chunkalloc(sizeof(Spline)); + *spline = *start->prev; + spline->from = cur->last; + cur->last->next = spline; + cpt->prev = spline; + spline->to = cpt; + spline->approx = NULL; + cur->last = cpt; + } + if ( first==NULL ) first = start; + if ( start->next==NULL ) { + start = NULL; + break; + } + start = start->next->to; + } + } +return( head ); +} + + +SplinePointList *SplinePointListCopy(const SplinePointList *base) { + SplinePointList *head=NULL, *last=NULL, *cur; + + for ( ; base!=NULL; base = base->next ) { + cur = SplinePointListCopy1(base); + if ( head==NULL ) + head = cur; + else + last->next = cur; + last = cur; + } +return( head ); +} + +SplinePointList *SplinePointListCopySelected(SplinePointList *base) { + SplinePointList *head=NULL, *last=NULL, *cur=NULL; + SplinePoint *pt, *first; + int anysel, allsel; + + for ( ; base!=NULL; base = base->next ) { + anysel = false; allsel = true; + first = NULL; + for ( pt=base->first; pt!=NULL && pt!=first; pt = pt->next->to ) { + if ( pt->selected ) anysel = true; + else allsel = false; + if ( first==NULL ) first = pt; + if ( pt->next==NULL ) + break; + } + if ( allsel ) + cur = SplinePointListCopy1(base); + else if ( anysel ) + cur = SplinePointListCopySelected1(base); + if ( anysel ) { + if ( head==NULL ) + head = cur; + else + last->next = cur; + for ( last = cur; last->next ; last = last->next ); + } + } +return( head ); +} + + + +static SplinePointList *SplinePointListSplit(SplineChar *sc,SplinePointList *spl) { + SplinePointList *head=NULL, *last=NULL, *cur; + SplinePoint *first, *start, *next; + + start = spl->first; + if ( spl->first==spl->last ) { + /* If it's a closed contour and the start point is selected then we */ + /* don't know where that selection began (and we have to keep it with */ + /* the things that precede it when we make the new splinesets), so */ + /* loop until we find something unselected */ + while ( !start->selected ) + start = start->next->to; + } + first = NULL; + while ( start != NULL && start!=first ) { + while ( start!=NULL && start!=first && start->selected ) { + if ( first==NULL ) first = start; + if ( start->prev!=NULL ) { + start->prev->from->next = NULL; + SplineFree(start->prev); + } + if ( start->next!=NULL ) { + next = start->next->to; + next->prev = NULL; + SplineFree(start->next); + } else + next = NULL; + SplinePointMDFree(sc,start); + start = next; + } + if ( start==NULL || start==first ) + break; + if ( head==NULL ) { + head = cur = spl; + spl->first = spl->last = NULL; + } else { + cur = chunkalloc(sizeof(SplinePointList)); + last->next = cur; + } + last = cur; + + while ( start!=NULL && !start->selected && start!=first ) { + if ( cur->first==NULL ) + cur->first = start; + cur->last = start; + if ( start->next!=NULL ) { + next = start->next->to; + if ( next->selected ) { + SplineFree(start->next); + start->next = NULL; + next->prev = NULL; + } + } else + next = NULL; + if ( first==NULL ) first = start; + start = next; + } + } +return( last ); +} + +SplinePointList *SplinePointListRemoveSelected(SplineChar *sc,SplinePointList *base) { + SplinePointList *head=NULL, *last=NULL, *next; + SplinePoint *pt, *first; + int anysel, allsel; + + for ( ; base!=NULL; base = next ) { + next = base->next; + anysel = false; allsel = true; + first = NULL; + for ( pt=base->first; pt!=NULL && pt!=first; pt = pt->next->to ) { + if ( pt->selected ) anysel = true; + else allsel = false; + if ( first==NULL ) first = pt; + if ( pt->next==NULL ) + break; + } + if ( allsel ) { + SplinePointListMDFree(sc,base); + continue; + } + if ( !anysel ) { + if ( head==NULL ) + head = base; + else + last->next = base; + last = base; + if ( anysel ) + last = SplinePointListSplit(sc,base); + } + } + if ( last!=NULL ) last->next = NULL; +return( head ); +} + +ImageList *ImageListCopy(ImageList *cimg) { + ImageList *head=NULL, *last=NULL, *new; + + for ( ; cimg!=NULL; cimg=cimg->next ) { + new = chunkalloc(sizeof(ImageList)); + *new = *cimg; + new->next = NULL; + if ( last==NULL ) + head = last = new; + else { + last->next = new; + last = new; + } + } +return( head ); +} + + +void ApTransform(AnchorPoint *ap, real transform[6]) { + BasePoint p; + p.x = transform[0]*ap->me.x + transform[2]*ap->me.y + transform[4]; + p.y = transform[1]*ap->me.x + transform[3]*ap->me.y + transform[5]; + ap->me.x = rint(1024*p.x)/1024; + ap->me.y = rint(1024*p.y)/1024; +} + +static void TransformPoint(SplinePoint *sp, real transform[6]) { + BasePoint p; + p.x = transform[0]*sp->me.x + transform[2]*sp->me.y + transform[4]; + p.y = transform[1]*sp->me.x + transform[3]*sp->me.y + transform[5]; + p.x = rint(1024*p.x)/1024; + p.y = rint(1024*p.y)/1024; + sp->me = p; + if ( !sp->nonextcp ) { + p.x = transform[0]*sp->nextcp.x + transform[2]*sp->nextcp.y + transform[4]; + p.y = transform[1]*sp->nextcp.x + transform[3]*sp->nextcp.y + transform[5]; + p.x = rint(1024*p.x)/1024; + p.y = rint(1024*p.y)/1024; + sp->nextcp = p; + } else + sp->nextcp = sp->me; + if ( !sp->noprevcp ) { + p.x = transform[0]*sp->prevcp.x + transform[2]*sp->prevcp.y + transform[4]; + p.y = transform[1]*sp->prevcp.x + transform[3]*sp->prevcp.y + transform[5]; + p.x = rint(1024*p.x)/1024; + p.y = rint(1024*p.y)/1024; + sp->prevcp = p; + } else + sp->prevcp = sp->me; + if ( sp->pointtype == pt_hvcurve ) { + if ( + ((sp->nextcp.x==sp->me.x && sp->prevcp.x==sp->me.x && sp->nextcp.y!=sp->me.y) || + (sp->nextcp.y==sp->me.y && sp->prevcp.y==sp->me.y && sp->nextcp.x!=sp->me.x))) + /* Do Nothing */; + else + sp->pointtype = pt_curve; + } +} + +SplinePointList *SplinePointListTransform(SplinePointList *base, real transform[6], int allpoints ) { + Spline *spline, *first; + SplinePointList *spl; + SplinePoint *spt, *pfirst; + int allsel, anysel, alldone=true; + + for ( spl = base; spl!=NULL; spl = spl->next ) { + pfirst = NULL; + allsel = true; anysel=false; + for ( spt = spl->first ; spt!=pfirst; spt = spt->next->to ) { + if ( pfirst==NULL ) pfirst = spt; + if ( allpoints || spt->selected ) { + TransformPoint(spt,transform); + if ( !allpoints ) { + if ( spt->next!=NULL && spt->next->order2 && !spt->next->to->selected && spt->next->to->ttfindex==0xffff ) { + SplinePoint *to = spt->next->to; + to->prevcp = spt->nextcp; + to->me.x = (to->prevcp.x+to->nextcp.x)/2; + to->me.y = (to->prevcp.y+to->nextcp.y)/2; + } + if ( spt->prev!=NULL && spt->prev->order2 && !spt->prev->from->selected && spt->prev->from->ttfindex==0xffff ) { + SplinePoint *from = spt->prev->from; + from->nextcp = spt->prevcp; + from->me.x = (from->prevcp.x+from->nextcp.x)/2; + from->me.y = (from->prevcp.y+from->nextcp.y)/2; + } + } + anysel = true; + } else + allsel = alldone = false; + if ( spt->next==NULL ) + break; + } + if ( !anysel ) /* This splineset had no selected points it's unchanged */ + continue; + + /* if we changed all the points then the control points are right */ + /* otherwise those near the edges may be wonky, fix 'em up */ + /* Figuring out where the edges of the selection are is difficult */ + /* so let's just tweak all points, it shouldn't matter */ + /* It does matter. Let's tweak all default points */ + if ( !allpoints && !allsel && spl->first->next!=NULL && !spl->first->next->order2 ) { + pfirst = NULL; + for ( spt = spl->first ; spt!=pfirst; spt = spt->next->to ) { + if ( pfirst==NULL ) pfirst = spt; + if ( spt->selected && spt->prev!=NULL && !spt->prev->from->selected && + spt->prev->from->pointtype == pt_tangent ) + SplineCharTangentPrevCP(spt->prev->from); + if ( spt->selected && spt->next!=NULL && !spt->next->to->selected && + spt->next->to->pointtype == pt_tangent ) + SplineCharTangentNextCP(spt->next->to); + if ( spt->prev!=NULL && spt->prevcpdef ) + SplineCharDefaultPrevCP(spt); + if ( spt->next==NULL ) + break; + if ( spt->nextcpdef ) + SplineCharDefaultNextCP(spt); + } + } + first = NULL; + for ( spline = spl->first->next; spline!=NULL && spline!=first; spline=spline->to->next ) { + if ( !alldone ) SplineRefigureFixup(spline); else SplineRefigure(spline); + if ( first==NULL ) first = spline; + } + } +return( base ); +} + + +SplinePointList *SplinePointListShift(SplinePointList *base,real xoff,int allpoints ) { + real transform[6]; + if ( xoff==0 ) +return( base ); + transform[0] = transform[3] = 1; + transform[1] = transform[2] = transform[5] = 0; + transform[4] = xoff; +return( SplinePointListTransform(base,transform,allpoints)); +} + +HintMask *HintMaskFromTransformedRef(RefChar *ref,BasePoint *trans, + SplineChar *basesc,HintMask *hm) { + StemInfo *st, *st2; + int hst_cnt, bcnt; + real start, width; + int i; + + if ( ref->transform[1]!=0 || ref->transform[2]!=0 ) +return(NULL); + + memset(hm,0,sizeof(HintMask)); + for ( st = ref->sc->hstem; st!=NULL; st=st->next ) { + start = st->start*ref->transform[3] + ref->transform[5] + trans->y; + width = st->width*ref->transform[3]; + for ( st2=basesc->hstem,bcnt=0; st2!=NULL; st2=st2->next, bcnt++ ) + if ( st2->start == start && st2->width == width ) + break; + if ( st2!=NULL ) + (*hm)[bcnt>>3] |= (0x80>>(bcnt&7)); + } + for ( st2=basesc->hstem,hst_cnt=0; st2!=NULL; st2=st2->next, hst_cnt++ ); + + for ( st = ref->sc->vstem; st!=NULL; st=st->next ) { + start = st->start*ref->transform[0] + ref->transform[4] + trans->x; + width = st->width*ref->transform[0]; + for ( st2=basesc->vstem,bcnt=hst_cnt; st2!=NULL; st2=st2->next, bcnt++ ) + if ( st2->start == start && st2->width == width ) + break; + if ( st2!=NULL ) + (*hm)[bcnt>>3] |= (0x80>>(bcnt&7)); + } + for ( i=0; ihstem,cnt = 0; st!=NULL; st=st->next, cnt++ ) { + if ( (*oldhm)[cnt>>3]&(0x80>>(cnt&7)) ) { + start = st->start*transform[3] + transform[5]; + width = st->width*transform[3]; + for ( st2=basesc->hstem,bcnt=0; st2!=NULL; st2=st2->next, bcnt++ ) + if ( st2->start == start && st2->width == width ) + break; + if ( st2!=NULL ) + (*newhm)[bcnt>>3] |= (0x80>>(bcnt&7)); + } + } + for ( st2=basesc->hstem,hst_cnt=0; st2!=NULL; st2=st2->next, hst_cnt++ ); + + for ( st = subsc->vstem; st!=NULL; st=st->next, cnt++ ) { + if ( (*oldhm)[cnt>>3]&(0x80>>(cnt&7)) ) { + start = st->start*transform[0] + transform[4]; + width = st->width*transform[0]; + for ( st2=basesc->vstem,bcnt=hst_cnt; st2!=NULL; st2=st2->next, bcnt++ ) + if ( st2->start == start && st2->width == width ) + break; + if ( st2!=NULL ) + (*newhm)[bcnt>>3] |= (0x80>>(bcnt&7)); + } + } +return( newhm ); +} + +SplinePointList *SPLCopyTranslatedHintMasks(SplinePointList *base, + SplineChar *basesc, SplineChar *subsc, BasePoint *trans ) { + SplinePointList *spl, *spl2, *head; + SplinePoint *spt, *spt2, *pfirst; + real transform[6]; + Spline *s, *first; + + head = SplinePointListCopy(base); + + transform[0] = transform[3] = 1; transform[1] = transform[2] = 0; + transform[4] = trans->x; transform[5] = trans->y; + + for ( spl = head, spl2=base; spl!=NULL; spl = spl->next, spl2 = spl2->next ) { + pfirst = NULL; + for ( spt = spl->first, spt2 = spl2->first ; spt!=pfirst; spt = spt->next->to, spt2 = spt2->next->to ) { + if ( pfirst==NULL ) pfirst = spt; + TransformPoint(spt,transform); + if ( spt2->hintmask ) { + chunkfree(spt->hintmask,sizeof(HintMask)); + spt->hintmask = HintMaskTransform(spt2->hintmask,transform,basesc,subsc); + } + if ( spt->next==NULL ) + break; + } + first = NULL; + for ( s = spl->first->next; s!=NULL && s!=first; s=s->to->next ) { + SplineRefigure(s); + if ( first==NULL ) first = s; + } + } +return( head ); +} + +static SplinePointList *_SPLCopyTransformedHintMasks(SplineChar *subsc,int layer, + real transform[6], SplineChar *basesc ) { + SplinePointList *spl, *spl2, *head, *last=NULL, *cur, *base; + SplinePoint *spt, *spt2, *pfirst; + Spline *s, *first; + real trans[6]; + RefChar *rf; + + base = subsc->layers[layer].splines; + head = SplinePointListCopy(base); + if ( head!=NULL ) + for ( last = head; last->next!=NULL; last=last->next ); + + for ( spl = head, spl2=base; spl!=NULL; spl = spl->next, spl2=spl2->next ) { + pfirst = NULL; + for ( spt = spl->first, spt2 = spl2->first ; spt!=pfirst; spt = spt->next->to, spt2 = spt2->next->to ) { + if ( pfirst==NULL ) pfirst = spt; + TransformPoint(spt,transform); + if ( spt2->hintmask ) { + chunkfree(spt->hintmask,sizeof(HintMask)); + spt->hintmask = HintMaskTransform(spt2->hintmask,transform,basesc,subsc); + } + if ( spt->next==NULL ) + break; + } + first = NULL; + for ( s = spl->first->next; s!=NULL && s!=first; s=s->to->next ) { + SplineRefigure(s); + if ( first==NULL ) first = s; + } + } + for ( rf=subsc->layers[layer].refs; rf!=NULL; rf=rf->next ) { + trans[0] = rf->transform[0]*transform[0] + + rf->transform[1]*transform[2]; + trans[1] = rf->transform[0]*transform[1] + + rf->transform[1]*transform[3]; + trans[2] = rf->transform[2]*transform[0] + + rf->transform[3]*transform[2]; + trans[3] = rf->transform[2]*transform[1] + + rf->transform[3]*transform[3]; + trans[4] = rf->transform[4]*transform[0] + + rf->transform[5]*transform[2] + + transform[4]; + trans[5] = rf->transform[4]*transform[1] + + rf->transform[5]*transform[3] + + transform[5]; + cur = _SPLCopyTransformedHintMasks(rf->sc,layer,trans,basesc); + if ( head==NULL ) + head = cur; + else + last->next = cur; + if ( cur!=NULL ) { + while ( cur->next!=NULL ) cur = cur->next; + last = cur; + } + } +return( head ); +} + +SplinePointList *SPLCopyTransformedHintMasks(RefChar *r, + SplineChar *basesc, BasePoint *trans,int layer ) { + real transform[6]; + + memcpy(transform,r->transform,sizeof(transform)); + transform[4] += trans->x; transform[5] += trans->y; +return( _SPLCopyTransformedHintMasks(r->sc,layer,transform,basesc)); +} + +void SplinePointListSelect(SplinePointList *spl,int sel) { + Spline *spline, *first; + + for ( ; spl!=NULL; spl = spl->next ) { + first = NULL; + spl->first->selected = sel; + for ( spline = spl->first->next; spline!=NULL && spline!=first; spline=spline->to->next ) { + spline->to->selected = sel; + if ( first==NULL ) first = spline; + } + } +} + +void SCMakeDependent(SplineChar *dependent,SplineChar *base) { + struct splinecharlist *dlist; + + if ( dependent->searcherdummy ) +return; + + for ( dlist=base->dependents; dlist!=NULL && dlist->sc!=dependent; dlist = dlist->next); + if ( dlist==NULL ) { + dlist = chunkalloc(sizeof(struct splinecharlist)); + dlist->sc = dependent; + dlist->next = base->dependents; + base->dependents = dlist; + } +} + +static void InstanciateReference(SplineFont *sf, RefChar *topref, RefChar *refs, + real transform[6], SplineChar *dsc, int layer) { + real trans[6]; + RefChar *rf; + SplineChar *rsc; + SplinePointList *spl, *new; + int i; + + if ( !refs->checked ) { + if ( refs->sc!=NULL ) + i = refs->sc->orig_pos; /* Can happen in type3 fonts */ + else for ( i=0; iglyphcnt; ++i ) if ( sf->glyphs[i]!=NULL ) + if ( strcmp(sf->glyphs[i]->name,AdobeStandardEncoding[refs->adobe_enc])==0 ) + break; + if ( i!=sf->glyphcnt && !sf->glyphs[i]->ticked ) { + refs->checked = true; + refs->sc = rsc = sf->glyphs[i]; + refs->orig_pos = rsc->orig_pos; + refs->unicode_enc = rsc->unicodeenc; + SCMakeDependent(dsc,rsc); + } else { + LogError( _("Couldn't find referenced character \"%s\" in %s\n"), + AdobeStandardEncoding[refs->adobe_enc], dsc->name); +return; + } + } else if ( refs->sc->ticked ) +return; + + rsc = refs->sc; + rsc->ticked = true; + + for ( rf=rsc->layers[ly_fore].refs; rf!=NULL; rf = rf->next ) { + trans[0] = rf->transform[0]*transform[0] + + rf->transform[1]*transform[2]; + trans[1] = rf->transform[0]*transform[1] + + rf->transform[1]*transform[3]; + trans[2] = rf->transform[2]*transform[0] + + rf->transform[3]*transform[2]; + trans[3] = rf->transform[2]*transform[1] + + rf->transform[3]*transform[3]; + trans[4] = rf->transform[4]*transform[0] + + rf->transform[5]*transform[2] + + transform[4]; + trans[5] = rf->transform[4]*transform[1] + + rf->transform[5]*transform[3] + + transform[5]; + InstanciateReference(sf,topref,rf,trans,rsc,layer); + } + rsc->ticked = false; + + { + new = SplinePointListTransform(SplinePointListCopy(rsc->layers[layer].splines),transform,true); + if ( new!=NULL ) { + for ( spl = new; spl->next!=NULL; spl = spl->next ); + spl->next = topref->layers[0].splines; + topref->layers[0].splines = new; + } + } +} + +static char *copyparse(char *str) { + char *ret, *rpt; + int ch,i; + + if ( str==NULL ) +return( str ); + + rpt=ret=galloc(strlen(str)+1); + while ( *str ) { + if ( *str=='\\' ) { + ++str; + if ( *str=='n' ) ch = '\n'; + else if ( *str=='r' ) ch = '\r'; + else if ( *str=='t' ) ch = '\t'; + else if ( *str=='b' ) ch = '\b'; + else if ( *str=='f' ) ch = '\f'; + else if ( *str=='\\' ) ch = '\\'; + else if ( *str=='(' ) ch = '('; + else if ( *str==')' ) ch = ')'; + else if ( *str>='0' && *str<='7' ) { + for ( i=ch = 0; i<3 && *str>='0' && *str<='7'; ++i ) + ch = (ch<<3) + *str++-'0'; + --str; + } else + ch = *str; + ++str; + *rpt++ = ch; + } else + *rpt++ = *str++; + } + *rpt = '\0'; + if ( !utf8_valid(ret)) { + /* Assume latin1, convert to utf8 */ + rpt = latin1_2_utf8_copy(ret); + free(ret); + ret = rpt; + } +return(ret); +} + +char *XUIDFromFD(int xuid[20]) { + int i; + char *ret=NULL; + + for ( i=19; i>=0 && xuid[i]==0; --i ); + if ( i>=0 ) { + int j; char *pt; + ret = galloc(2+20*(i+1)); + pt = ret; + *pt++ = '['; + for ( j=0; j<=i; ++j ) { + sprintf(pt,"%d ", xuid[j]); + pt += strlen(pt); + } + pt[-1] = ']'; + } +return( ret ); +} + +static void SplineFontMetaData(SplineFont *sf,struct fontdict *fd) { + int em; + + sf->fontname = utf8_verify_copy(fd->cidfontname?fd->cidfontname:fd->fontname); + sf->display_size = -default_fv_font_size; + sf->display_antialias = default_fv_antialias; + if ( fd->fontinfo!=NULL ) { + if ( sf->fontname==NULL && fd->fontinfo->fullname!=NULL ) { + sf->fontname = EnforcePostScriptName(fd->fontinfo->fullname); + } + if ( sf->fontname==NULL ) sf->fontname = EnforcePostScriptName(fd->fontinfo->familyname); + sf->fullname = copyparse(fd->fontinfo->fullname); + sf->familyname = copyparse(fd->fontinfo->familyname); + sf->weight = copyparse(fd->fontinfo->weight); + sf->version = copyparse(fd->fontinfo->version); + sf->copyright = copyparse(fd->fontinfo->notice); + sf->italicangle = fd->fontinfo->italicangle; + sf->upos = fd->fontinfo->underlineposition; + sf->uwidth = fd->fontinfo->underlinethickness; + sf->strokedfont = fd->painttype==2; + sf->strokewidth = fd->strokewidth; + sf->ascent = fd->fontinfo->ascent; + sf->descent = fd->fontinfo->descent; + } + if ( sf->uniqueid==0 ) sf->uniqueid = fd->uniqueid; + if ( sf->fontname==NULL ) sf->fontname = GetNextUntitledName(); + if ( sf->fullname==NULL ) sf->fullname = copy(sf->fontname); + if ( sf->familyname==NULL ) sf->familyname = copy(sf->fontname); + if ( sf->weight==NULL ) sf->weight = copy(""); + if ( fd->modificationtime!=0 ) { + sf->modificationtime = fd->modificationtime; + sf->creationtime = fd->creationtime; + } + sf->cidversion = fd->cidversion; + sf->xuid = XUIDFromFD(fd->xuid); + /*sf->wasbinary = fd->wasbinary;*/ + if ( fd->fontmatrix[0]==0 ) + em = 1000; + else + em = rint(1/fd->fontmatrix[0]); + if ( sf->ascent==0 && sf->descent!=0 ) + sf->ascent = em-sf->descent; + else if ( fd->fontbb[3]-fd->fontbb[1]==em ) { + if ( sf->ascent==0 ) sf->ascent = fd->fontbb[3]; + if ( sf->descent==0 ) sf->descent = fd->fontbb[1]; + } else if ( sf->ascent==0 ) + sf->ascent = 8*em/10; + sf->descent = em-sf->ascent; + + sf->private = fd->private->private; fd->private->private = NULL; + PSDictRemoveEntry(sf->private, "OtherSubrs"); + + sf->cidregistry = copy(fd->registry); + sf->ordering = copy(fd->ordering); + sf->supplement = fd->supplement; + sf->pfminfo.fstype = fd->fontinfo->fstype; + if ( sf->ordering!=NULL ) { + if ( strnmatch(sf->ordering,"Japan",5)==0 ) + sf->uni_interp = ui_japanese; + else if ( strnmatch(sf->ordering,"Korea",5)==0 ) + sf->uni_interp = ui_korean; + else if ( strnmatch(sf->ordering,"CNS",3)==0 ) + sf->uni_interp = ui_trad_chinese; + else if ( strnmatch(sf->ordering,"GB",2)==0 ) + sf->uni_interp = ui_simp_chinese; + } +} + +static void TransByFontMatrix(SplineFont *sf,real fontmatrix[6]) { + real trans[6]; + int em = sf->ascent+sf->descent, i; + SplineChar *sc; + RefChar *refs; + + if ( fontmatrix[0]==fontmatrix[3] && + fontmatrix[1]==0 && fontmatrix[2]==0 && + fontmatrix[4]==0 && fontmatrix[5]==0 ) +return; /* It's just the expected matrix */ + + trans[0] = 1; + if ( fontmatrix[0]==fontmatrix[3] ) trans[3] = 1; + else trans[3] = rint(fontmatrix[3]*em); + trans[1] = fontmatrix[1]*em; + trans[2] = fontmatrix[2]*em; + trans[4] = rint(fontmatrix[4]*em); + trans[5] = rint(fontmatrix[5]*em); + + for ( i=0; iglyphcnt; ++i ) if ( (sc=sf->glyphs[i])!=NULL ) { + SplinePointListTransform(sc->layers[ly_fore].splines,trans,true); + for ( refs=sc->layers[ly_fore].refs; refs!=NULL; refs=refs->next ) { + /* Just scale the offsets. we'll do all the base characters */ + real temp = refs->transform[4]*trans[0] + + refs->transform[5]*trans[2] + + /*transform[4]*/0; + refs->transform[5] = refs->transform[4]*trans[1] + + refs->transform[5]*trans[3] + + /*transform[5]*/0; + refs->transform[4] = temp; + } + sc->changedsincelasthinted = true; + sc->manualhints = false; + } + for ( i=0; iglyphcnt; ++i ) if ( (sc=sf->glyphs[i])!=NULL ) { + for ( refs=sc->layers[ly_fore].refs; refs!=NULL; refs=refs->next ) + SCReinstanciateRefChar(sc,refs,ly_fore); + } +} + +void SFInstanciateRefs(SplineFont *sf) { + int i, layer; + RefChar *refs, *next, *pr; + + for ( i=0; iglyphcnt; ++i ) if ( sf->glyphs[i]!=NULL ) + sf->glyphs[i]->ticked = false; + + for ( i=0; iglyphcnt; ++i ) if ( sf->glyphs[i]!=NULL ) { + SplineChar *sc = sf->glyphs[i]; + + for ( layer=ly_back; layerlayer_cnt; ++layer ) { + for ( pr=NULL, refs = sc->layers[layer].refs; refs!=NULL; refs=next ) { + next = refs->next; + sc->ticked = true; + InstanciateReference(sf, refs, refs, refs->transform,sc,layer); + if ( refs->sc!=NULL ) { + SplineSetFindBounds(refs->layers[0].splines,&refs->bb); + sc->ticked = false; + pr = refs; + } else { + /* In some mal-formed postscript fonts we can have a reference */ + /* to a character that is not actually in the font. I even */ + /* generated one by mistake once... */ + if ( pr==NULL ) + sc->layers[layer].refs = next; + else + pr->next = next; + refs->next = NULL; + RefCharsFree(refs); + } + } + } + } +} + +/* Also handles type3s */ +static void _SplineFontFromType1(SplineFont *sf, FontDict *fd, struct pscontext *pscontext) { + int i, j, notdefpos; + RefChar *refs, *next; + int istype2 = fd->fonttype==2; /* Easy enough to deal with even though it will never happen... */ + int istype3 = fd->charprocs->next!=0; + EncMap *map; + + if ( istype2 ) + fd->private->subrs->bias = fd->private->subrs->cnt<1240 ? 107 : + fd->private->subrs->cnt<33900 ? 1131 : 32768; + sf->glyphmax = sf->glyphcnt = istype3 ? fd->charprocs->next : fd->chars->next; + if ( sf->map==NULL ) { + sf->map = map = EncMapNew(256+CharsNotInEncoding(fd),sf->glyphcnt,fd->encoding_name); + } else + map = sf->map; + sf->glyphs = gcalloc(map->backmax,sizeof(SplineChar *)); + if ( istype3 ) + notdefpos = LookupCharString(".notdef",(struct pschars *) (fd->charprocs)); + else + notdefpos = LookupCharString(".notdef",fd->chars); + for ( i=0; i<256; ++i ) { + int k; + if ( istype3 ) { + k = LookupCharString(fd->encoding[i],(struct pschars *) (fd->charprocs)); + } else { + k = LookupCharString(fd->encoding[i],fd->chars); + } + if ( k==-1 ) k = notdefpos; + map->map[i] = k; + if ( k!=-1 && map->backmap[k]==-1 ) + map->backmap[k] = i; + } + if ( map->enccount>256 ) { + int k, j; + for ( k=0; kchars->cnt; ++k ) { + if ( fd->chars->keys[k]!=NULL ) { + for ( j=0; j<256; ++j ) + if ( fd->encoding[j]!=NULL && + strcmp(fd->encoding[j],fd->chars->keys[k])==0 ) + break; + if ( j==256 ) { + map->map[i] = k; + if ( map->backmap[k]==-1 ) + map->backmap[k] = i; + ++i; + } + } + } + /* And for type3s */ + for ( k=0; kcharprocs->cnt; ++k ) { + if ( fd->charprocs->keys[k]!=NULL ) { + for ( j=0; j<256; ++j ) + if ( fd->encoding[j]!=NULL && + strcmp(fd->encoding[j],fd->charprocs->keys[k])==0 ) + break; + if ( j==256 ) { + map->map[i] = k; + if ( map->backmap[k]==-1 ) + map->backmap[k] = i; + ++i; + } + } + } + } + for ( i=0; ienccount; ++i ) if ( map->map[i]==-1 ) + map->map[i] = notdefpos; + + for ( i=0; iglyphcnt; ++i ) { + if ( !istype3 ) + sf->glyphs[i] = PSCharStringToSplines(fd->chars->values[i],fd->chars->lens[i], + pscontext,fd->private->subrs,NULL,fd->chars->keys[i]); + else + sf->glyphs[i] = fd->charprocs->values[i]; + if ( sf->glyphs[i]!=NULL ) { + sf->glyphs[i]->orig_pos = i; + sf->glyphs[i]->vwidth = sf->ascent+sf->descent; + sf->glyphs[i]->unicodeenc = UniFromName(sf->glyphs[i]->name,sf->uni_interp,map->enc); + sf->glyphs[i]->parent = sf; + /* SCLigDefault(sf->glyphs[i]);*/ /* Also reads from AFM file, but it probably doesn't exist */ + } + ff_progress_next(); + } + SFInstanciateRefs(sf); + if ( fd->metrics!=NULL ) { + for ( i=0; imetrics->next; ++i ) { + int width = strtol(fd->metrics->values[i],NULL,10); + for ( j=sf->glyphcnt-1; j>=0; --j ) { + if ( sf->glyphs[j]!=NULL && sf->glyphs[j]->name!=NULL && + strcmp(fd->metrics->keys[i],sf->glyphs[j]->name)==0 ) { + sf->glyphs[j]->width = width; + break; + } + } + } + } + for ( i=0; iglyphcnt; ++i ) if ( sf->glyphs[i]!=NULL ) + for ( refs = sf->glyphs[i]->layers[ly_fore].refs; refs!=NULL; refs=next ) { + next = refs->next; + if ( refs->adobe_enc==' ' && refs->layers[0].splines==NULL ) { + /* When I have a link to a single character I will save out a */ + /* seac to that character and a space (since I can only make */ + /* real char links), so if we find a space link, get rid of*/ + /* it. It's an artifact */ + SCRefToSplines(sf->glyphs[i],refs,ly_fore); + } + } + /* sometimes (some apple oblique fonts) the fontmatrix is not just a */ + /* formality, it acutally contains a skew. So be ready */ + if ( fd->fontmatrix[0]!=0 ) + TransByFontMatrix(sf,fd->fontmatrix); + AltUniFigure(sf,sf->map); +} + +static void SplineFontFromType1(SplineFont *sf, FontDict *fd, struct pscontext *pscontext) { + int i; + SplineChar *sc; + + _SplineFontFromType1(sf,fd,pscontext); + + /* Clean up the hint masks, We create an initial hintmask whether we need */ + /* it or not */ + for ( i=0; iglyphcnt; ++i ) { + if ( (sc = sf->glyphs[i])!=NULL && !sc->hconflicts && !sc->vconflicts && + sc->layers[ly_fore].splines!=NULL ) { + chunkfree( sc->layers[ly_fore].splines->first->hintmask,sizeof(HintMask) ); + sc->layers[ly_fore].splines->first->hintmask = NULL; + } + } +} + +static SplineFont *SplineFontFromMMType1(SplineFont *sf, FontDict *fd, struct pscontext *pscontext) { + char *pt, *end, *origweight; + MMSet *mm; + int ipos, apos, ppos, item, i; + real blends[12]; /* At most twelve points/axis in a blenddesignmap */ + real designs[12]; + EncMap *map; + + if ( fd->weightvector==NULL || fd->fontinfo->blenddesignpositions==NULL || + fd->fontinfo->blenddesignmap==NULL || fd->fontinfo->blendaxistypes==NULL ) { + ff_post_error(_("Bad Multiple Master Font"),_("Bad Multiple Master Font")); + SplineFontFree(sf); +return( NULL ); + } + + mm = chunkalloc(sizeof(MMSet)); + + pt = fd->weightvector; + while ( *pt==' ' || *pt=='[' ) ++pt; + while ( *pt!=']' && *pt!='\0' ) { + pscontext->blend_values[ pscontext->instance_count ] = + strtod(pt,&end); + if ( pt==end ) + break; + ++(pscontext->instance_count); + if ( pscontext->instance_count>=(int)(sizeof(pscontext->blend_values)/sizeof(pscontext->blend_values[0]))) { + LogError( _("Multiple master font with more than 16 instances\n") ); + break; + } + for ( pt = end; *pt==' '; ++pt ); + } + + mm->instance_count = pscontext->instance_count; + mm->instances = galloc(pscontext->instance_count*sizeof(SplineFont *)); + mm->defweights = galloc(mm->instance_count*sizeof(real)); + memcpy(mm->defweights,pscontext->blend_values,mm->instance_count*sizeof(real)); + mm->normal = sf; + _SplineFontFromType1(mm->normal,fd,pscontext); + map = sf->map; + for ( i=0; iglyphcnt; ++i ) if ( sf->glyphs[i]!=NULL ) + sf->glyphs[i]->blended = true; + sf->mm = mm; + + pt = fd->fontinfo->blendaxistypes; + while ( *pt==' ' || *pt=='[' ) ++pt; + while ( *pt!=']' && *pt!='\0' ) { + if ( *pt=='/' ) ++pt; + for ( end=pt; *end!=' ' && *end!=']' && *end!='\0'; ++end ); + if ( pt==end ) + break; + if ( mm->axis_count>=(int)(sizeof(mm->axes)/sizeof(mm->axes[0]))) { + LogError( _("Multiple master font with more than 4 axes\n") ); + break; + } + mm->axes[ mm->axis_count++ ] = copyn( pt,end-pt ); + for ( pt = end; *pt==' '; ++pt ); + } + + if ( mm->instance_count < (1<axis_count) ) + ff_post_error(_("Bad Multiple Master Font"),_("This multiple master font has %1$d instance fonts, but it needs at least %2$d master fonts for %3$d axes. FontForge will not be able to edit this correctly"),mm->instance_count,1<axis_count,mm->axis_count); + else if ( mm->instance_count > (1<axis_count) ) + ff_post_error(_("Bad Multiple Master Font"),_("This multiple master font has %1$d instance fonts, but FontForge can only handle %2$d master fonts for %3$d axes. FontForge will not be able to edit this correctly"),mm->instance_count,1<axis_count,mm->axis_count); + mm->positions = gcalloc(mm->axis_count*mm->instance_count,sizeof(real)); + pt = fd->fontinfo->blenddesignpositions; + while ( *pt==' ' ) ++pt; + if ( *pt=='[' ) ++pt; + ipos = 0; + while ( *pt!=']' && *pt!='\0' ) { + while ( *pt==' ' ) ++pt; + if ( *pt==']' || *pt=='\0' ) + break; + if ( ipos>=mm->instance_count ) + break; + if ( *pt=='[' ) { + ++pt; + apos=0; + while ( *pt!=']' && *pt!='\0' ) { + if ( apos>=mm->axis_count ) { + LogError( _("Too many axis positions specified in /BlendDesignPositions.\n") ); + break; + } + mm->positions[ipos*mm->axis_count+apos] = + strtod(pt,&end); + if ( pt==end ) + break; + ++apos; + for ( pt = end; *pt==' '; ++pt ); + } + if ( *pt==']' ) ++pt; + ++ipos; + } else + ++pt; + } + + mm->axismaps = gcalloc(mm->axis_count,sizeof(struct axismap)); + pt = fd->fontinfo->blenddesignmap; + while ( *pt==' ' ) ++pt; + if ( *pt=='[' ) ++pt; + apos = 0; + while ( *pt!=']' && *pt!='\0' ) { + while ( *pt==' ' ) ++pt; + if ( *pt==']' || *pt=='\0' ) + break; + if ( apos>=mm->axis_count ) + break; + if ( *pt=='[' ) { + ++pt; + ppos=0; + while ( *pt!=']' && *pt!='\0' ) { + if ( ppos>=12 ) { + LogError( _("Too many mapping data points specified in /BlendDesignMap for axis %s.\n"), mm->axes[apos] ); + break; + } + while ( *pt==' ' ) ++pt; + if ( *pt=='[' ) { + ++pt; + designs[ppos] = strtod(pt,&end); + blends[ppos] = strtod(end,&end); + if ( blends[ppos]<0 || blends[ppos]>1 ) { + LogError( _("Bad value for blend in /BlendDesignMap for axis %s.\n"), mm->axes[apos] ); + if ( blends[ppos]<0 ) blends[ppos] = 0; + if ( blends[ppos]>1 ) blends[ppos] = 1; + } + pt = end; + while ( *pt!=']' && *pt!='\0' ) ++pt; + ppos ++; + } + ++pt; + while ( *pt==' ' ) ++pt; + } + if ( *pt==']' ) ++pt; + if ( ppos<2 ) + LogError( _("Bad few values in /BlendDesignMap for axis %s.\n"), mm->axes[apos] ); + mm->axismaps[apos].points = ppos; + mm->axismaps[apos].blends = galloc(ppos*sizeof(real)); + mm->axismaps[apos].designs = galloc(ppos*sizeof(real)); + memcpy(mm->axismaps[apos].blends,blends,ppos*sizeof(real)); + memcpy(mm->axismaps[apos].designs,designs,ppos*sizeof(real)); + ++apos; + } else + ++pt; + } + + mm->cdv = copy(fd->cdv); + mm->ndv = copy(fd->ndv); + + origweight = fd->fontinfo->weight; + + /* Now figure out the master designs, being careful to interpolate */ + /* BlueValues, ForceBold, UnderlinePosition etc. We need to copy private */ + /* generate a font name */ + for ( ipos = 0; iposinstance_count; ++ipos ) { + free(fd->fontname); + free(fd->fontinfo->fullname); + fd->fontname = MMMakeMasterFontname(mm,ipos,&fd->fontinfo->fullname); + fd->fontinfo->weight = MMGuessWeight(mm,ipos,copy(origweight)); + if ( fd->blendfontinfo!=NULL ) { + for ( item=0; item<3; ++item ) { + static char *names[] = { "ItalicAngle", "UnderlinePosition", "UnderlineThickness" }; + pt = PSDictHasEntry(fd->blendfontinfo,names[item]); + if ( pt!=NULL ) { + pt = MMExtractNth(pt,ipos); + if ( pt!=NULL ) { + double val = strtod(pt,NULL); + free(pt); + switch ( item ) { + case 0: fd->fontinfo->italicangle = val; break; + case 1: fd->fontinfo->underlineposition = val; break; + case 2: fd->fontinfo->underlinethickness = val; break; + } + } + } + } + } + fd->private->private = PSDictCopy(sf->private); + if ( fd->blendprivate!=NULL ) { + static char *arrnames[] = { "BlueValues", "OtherBlues", "FamilyBlues", "FamilyOtherBlues", "StdHW", "StdVW", "StemSnapH", "StemSnapV", NULL }; + static char *scalarnames[] = { "ForceBold", "BlueFuzz", "BlueScale", "BlueShift", NULL }; + for ( item=0; scalarnames[item]!=NULL; ++item ) { + pt = PSDictHasEntry(fd->blendprivate,scalarnames[item]); + if ( pt!=NULL ) { + pt = MMExtractNth(pt,ipos); + PSDictChangeEntry(fd->private->private,scalarnames[item],pt); + free(pt); + } + } + for ( item=0; arrnames[item]!=NULL; ++item ) { + pt = PSDictHasEntry(fd->blendprivate,arrnames[item]); + if ( pt!=NULL ) { + pt = MMExtractArrayNth(pt,ipos); + PSDictChangeEntry(fd->private->private,arrnames[item],pt); + free(pt); + } + } + } + for ( item=0; iteminstance_count; ++item ) + pscontext->blend_values[item] = 0; + pscontext->blend_values[ipos] = 1; + + mm->instances[ipos] = SplineFontEmpty(); + SplineFontMetaData(mm->instances[ipos],fd); + free(fd->fontinfo->weight); + mm->instances[ipos]->map = map; + _SplineFontFromType1(mm->instances[ipos],fd,pscontext); + mm->instances[ipos]->mm = mm; + } + fd->fontinfo->weight = origweight; + + /* Clean up hintmasks. We always create a hintmask on the first point */ + /* only keep them if we actually have conflicts. */ + for ( i=0; inormal->glyphcnt; ++i ) + if ( mm->normal->glyphs[i]!=NULL && + mm->normal->glyphs[i]->layers[ly_fore].splines != NULL ) { + for ( item=0; iteminstance_count; ++item ) + if ( mm->instances[item]->glyphs[i]->vconflicts || + mm->instances[item]->glyphs[i]->hconflicts ) + break; + if ( item==mm->instance_count ) { /* No conflicts */ + for ( item=0; iteminstance_count; ++item ) { + chunkfree( mm->instances[item]->glyphs[i]->layers[ly_fore].splines->first->hintmask, sizeof(HintMask) ); + mm->instances[item]->glyphs[i]->layers[ly_fore].splines->first->hintmask = NULL; + } + chunkfree( mm->normal->glyphs[i]->layers[ly_fore].splines->first->hintmask, sizeof(HintMask) ); + mm->normal->glyphs[i]->layers[ly_fore].splines->first->hintmask = NULL; + } + } + +return( sf ); +} + +static SplineFont *SplineFontFromCIDType1(SplineFont *sf, FontDict *fd, + struct pscontext *pscontext) { + int i,j,k, uni; + unsigned bad; + SplineChar **chars; + char buffer[100]; + struct cidmap *map; + SplineFont *_sf; + SplineChar *sc; + EncMap *encmap; + + bad = 0x80000000; + for ( i=0; ifdcnt; ++i ) + if ( fd->fds[i]->fonttype!=1 && fd->fds[i]->fonttype!=2 ) + bad = fd->fds[i]->fonttype; + if ( bad!=0x80000000 || fd->cidfonttype!=0 ) { + LogError( _("Could not parse a CID font, %sCIDFontType %d, %sfonttype %d\n"), + ( fd->cidfonttype!=0 ) ? "unexpected " : "", + ( bad!=0x80000000 ) ? "unexpected " : "", + fd->cidfonttype, bad ); + SplineFontFree(sf); +return( NULL ); + } + if ( fd->cidstrs==NULL || fd->cidcnt==0 ) { + LogError( _("CID format doesn't contain what we expected it to.\n") ); + SplineFontFree(sf); +return( NULL ); + } + + encmap = EncMap1to1(fd->cidcnt); + + sf->subfontcnt = fd->fdcnt; + sf->subfonts = galloc((sf->subfontcnt+1)*sizeof(SplineFont *)); + for ( i=0; ifdcnt; ++i ) { + if ( fd->fontmatrix[0]!=0 ) { + MatMultiply(fd->fontmatrix,fd->fds[i]->fontmatrix,fd->fds[i]->fontmatrix); + } + sf->subfonts[i] = SplineFontEmpty(); + SplineFontMetaData(sf->subfonts[i],fd->fds[i]); + sf->subfonts[i]->cidmaster = sf; + sf->subfonts[i]->uni_interp = sf->uni_interp; + sf->subfonts[i]->map = encmap; + if ( fd->fds[i]->fonttype==2 ) + fd->fds[i]->private->subrs->bias = + fd->fds[i]->private->subrs->cnt<1240 ? 107 : + fd->fds[i]->private->subrs->cnt<33900 ? 1131 : 32768; + } + + map = FindCidMap(sf->cidregistry,sf->ordering,sf->supplement,sf); + + chars = gcalloc(fd->cidcnt,sizeof(SplineChar *)); + for ( i=0; icidcnt; ++i ) if ( fd->cidlens[i]>0 ) { + j = fd->cidfds[i]; /* We get font indexes of 255 for non-existant chars */ + uni = CID2NameUni(map,i,buffer,sizeof(buffer)); + pscontext->is_type2 = fd->fds[j]->fonttype==2; + chars[i] = PSCharStringToSplines(fd->cidstrs[i],fd->cidlens[i], + pscontext,fd->fds[j]->private->subrs, + NULL,buffer); + chars[i]->vwidth = sf->subfonts[j]->ascent+sf->subfonts[j]->descent; + chars[i]->unicodeenc = uni; + chars[i]->orig_pos = i; + /* There better not be any references (seac's) because we have no */ + /* encoding on which to base any fixups */ + if ( chars[i]->layers[ly_fore].refs!=NULL ) + IError( "Reference found in CID font. Can't fix it up"); + sf->subfonts[j]->glyphcnt = sf->subfonts[j]->glyphmax = i+1; + ff_progress_next(); + } + for ( i=0; ifdcnt; ++i ) + sf->subfonts[i]->glyphs = gcalloc(sf->subfonts[i]->glyphcnt,sizeof(SplineChar *)); + for ( i=0; icidcnt; ++i ) if ( chars[i]!=NULL ) { + j = fd->cidfds[i]; + if ( jsubfontcnt ) { + sf->subfonts[j]->glyphs[i] = chars[i]; + chars[i]->parent = sf->subfonts[j]; + } + } + free(chars); + + /* Clean up the hint masks, We create an initial hintmask whether we */ + /* need it or not */ + k=0; + do { + _sf = ksubfontcnt?sf->subfonts[k]:sf; + for ( i=0; i<_sf->glyphcnt; ++i ) { + if ( (sc = _sf->glyphs[i])!=NULL && !sc->hconflicts && !sc->vconflicts && + sc->layers[ly_fore].splines!=NULL ) { + chunkfree( sc->layers[ly_fore].splines->first->hintmask,sizeof(HintMask) ); + sc->layers[ly_fore].splines->first->hintmask = NULL; + } + } + ++k; + } while ( ksubfontcnt ); +return( sf ); +} + +SplineFont *SplineFontFromPSFont(FontDict *fd) { + SplineFont *sf; + struct pscontext pscontext; + + if ( fd->sf!=NULL ) + sf = fd->sf; + else { + memset(&pscontext,0,sizeof(pscontext)); + pscontext.is_type2 = fd->fonttype==2; + pscontext.painttype = fd->painttype; + + sf = SplineFontEmpty(); + SplineFontMetaData(sf,fd); + if ( fd->wascff ) { + SplineFontFree(sf); + sf = fd->sf; + } else if ( fd->fdcnt!=0 ) + sf = SplineFontFromCIDType1(sf,fd,&pscontext); + else if ( fd->weightvector!=NULL ) + SplineFontFromMMType1(sf,fd,&pscontext); + else + SplineFontFromType1(sf,fd,&pscontext); + } +return( sf ); +} + +void RefCharFindBounds(RefChar *rf) { + SplineSetFindBounds(rf->layers[0].splines,&rf->bb); + SplineSetFindTop(rf->layers[0].splines,&rf->top); +} + +void SCReinstanciateRefChar(SplineChar *sc,RefChar *rf,int layer) { + SplinePointList *new, *last; + RefChar *refs; + (void)sc; + { + if ( rf->layer_cnt>0 ) { + SplinePointListsFree(rf->layers[0].splines); + rf->layers[0].splines = NULL; + } + rf->layers = gcalloc(1,sizeof(struct reflayer)); + rf->layer_cnt = 1; + new = SplinePointListTransform(SplinePointListCopy(rf->sc->layers[layer].splines),rf->transform,true); + rf->layers[0].splines = new; + last = NULL; + if ( new!=NULL ) + for ( last = new; last->next!=NULL; last = last->next ); + for ( refs = rf->sc->layers[layer].refs; refs!=NULL; refs = refs->next ) { + new = SplinePointListTransform(SplinePointListCopy(refs->layers[0].splines),rf->transform,true); + if ( last!=NULL ) + last->next = new; + else + rf->layers[0].splines = new; + if ( new!=NULL ) + for ( last = new; last->next!=NULL; last = last->next ); + } + } + RefCharFindBounds(rf); +} + +static void _SFReinstanciateRefs(SplineFont *sf) { + int i, undone, undoable, j, cnt; + RefChar *ref; + + for ( i=0; iglyphcnt; ++i ) if ( sf->glyphs[i]!=NULL ) + sf->glyphs[i]->ticked = false; + + undone = true; + cnt = 0; + while ( undone && cnt<200) { + undone = false; + for ( i=0; iglyphcnt; ++i ) if ( sf->glyphs[i]!=NULL && !sf->glyphs[i]->ticked ) { + undoable = false; + for ( j=0; jglyphs[i]->layer_cnt; ++j ) { + for ( ref=sf->glyphs[i]->layers[j].refs; ref!=NULL; ref=ref->next ) { + if ( !ref->sc->ticked ) + undoable = true; + } + } + if ( undoable ) + undone = true; + else { + for ( j=0; jglyphs[i]->layer_cnt; ++j ) { + for ( ref=sf->glyphs[i]->layers[j].refs; ref!=NULL; ref=ref->next ) + SCReinstanciateRefChar(sf->glyphs[i],ref,j); + } + sf->glyphs[i]->ticked = true; + } + } + ++cnt; + } +} + +void SFReinstanciateRefs(SplineFont *sf) { + int i; + + if ( sf->cidmaster!=NULL || sf->subfontcnt!=0 ) { + if ( sf->cidmaster!=NULL ) sf = sf->cidmaster; + for ( i=0; isubfontcnt; ++i ) + _SFReinstanciateRefs(sf->subfonts[i]); + } else + _SFReinstanciateRefs(sf); +} + +void SCReinstanciateRef(SplineChar *sc,SplineChar *rsc,int layer) { + RefChar *rf; + + for ( rf=sc->layers[layer].refs; rf!=NULL; rf=rf->next ) if ( rf->sc==rsc ) { + SCReinstanciateRefChar(sc,rf,layer); + } +} + +void SCRemoveDependent(SplineChar *dependent,RefChar *rf,int layer) { + struct splinecharlist *dlist, *pd; + RefChar *prev; + + if ( dependent->layers[layer].refs==rf ) + dependent->layers[layer].refs = rf->next; + else { + for ( prev = dependent->layers[layer].refs; prev->next!=rf; prev=prev->next ); + prev->next = rf->next; + } + /* Check for multiple dependencies (colon has two refs to period) */ + /* if there are none, then remove dependent from ref->sc's dependents list */ + for ( prev = dependent->layers[ly_fore].refs; prev!=NULL && (prev==rf || prev->sc!=rf->sc); prev = prev->next ); + if ( prev==NULL ) { + dlist = rf->sc->dependents; + if ( dlist==NULL ) + /* Do nothing */; + else if ( dlist->sc==dependent ) { + rf->sc->dependents = dlist->next; + } else { + for ( pd=dlist, dlist = pd->next; dlist!=NULL && dlist->sc!=dependent; pd=dlist, dlist = pd->next ); + if ( dlist!=NULL ) + pd->next = dlist->next; + } + chunkfree(dlist,sizeof(struct splinecharlist)); + } + RefCharFree(rf); +} + +void SCRemoveLayerDependents(SplineChar *dependent,int layer) { + RefChar *rf, *next; + + for ( rf=dependent->layers[layer].refs; rf!=NULL; rf=next ) { + next = rf->next; + SCRemoveDependent(dependent,rf,layer); + } + dependent->layers[layer].refs = NULL; +} + +void SCRemoveDependents(SplineChar *dependent) { + int layer; + + for ( layer=ly_fore; layerlayer_cnt; ++layer ) + SCRemoveLayerDependents(dependent,layer); +} + +void SCRefToSplines(SplineChar *sc,RefChar *rf,int layer) { + SplineSet *spl; + { + if ( (spl = rf->layers[0].splines)!=NULL ) { + while ( spl->next!=NULL ) + spl = spl->next; + spl->next = sc->layers[layer].splines; + sc->layers[layer].splines = rf->layers[0].splines; + rf->layers[0].splines = NULL; + } + } + SCRemoveDependent(sc,rf,layer); +} + +/* This returns all real solutions, even those out of bounds */ +/* I use -999999 as an error flag, since we're really only interested in */ +/* solns near 0 and 1 that should be ok. -1 is perhaps a little too close */ +static int _CubicSolve(const Spline1D *sp,extended ts[3]) { + extended d, xN, yN, delta2, temp, delta, h, t2, t3, theta; + int i=0; + + ts[0] = ts[1] = ts[2] = -999999; + if ( sp->d==0 && sp->a!=0 ) { + /* one of the roots is 0, the other two are the soln of a quadratic */ + ts[0] = 0; + if ( sp->c==0 ) { + ts[1] = -sp->b/(extended) sp->a; /* two zero roots */ + } else { + temp = sp->b*(extended) sp->b-4*(extended) sp->a*sp->c; + if ( RealNear(temp,0)) + ts[1] = -sp->b/(2*(extended) sp->a); + else if ( temp>=0 ) { + temp = sqrt(temp); + ts[1] = (-sp->b+temp)/(2*(extended) sp->a); + ts[2] = (-sp->b-temp)/(2*(extended) sp->a); + } + } + } else if ( sp->a!=0 ) { + /* http://www.m-a.org.uk/eb/mg/mg077ch.pdf */ + /* this nifty solution to the cubic neatly avoids complex arithmatic */ + xN = -sp->b/(3*(extended) sp->a); + yN = ((sp->a*xN + sp->b)*xN+sp->c)*xN + sp->d; + + delta2 = (sp->b*(extended) sp->b-3*(extended) sp->a*sp->c)/(9*(extended) sp->a*sp->a); + if ( RealNear(delta2,0) ) delta2 = 0; + + /* the descriminant is yN^2-h^2, but delta might be <0 so avoid using h */ + d = yN*yN - 4*sp->a*sp->a*delta2*delta2*delta2; + if ( ((yN>.01 || yN<-.01) && RealNear(d/yN,0)) || ((yN<=.01 && yN>=-.01) && RealNear(d,0)) ) + d = 0; + if ( d>0 ) { + temp = sqrt(d); + t2 = (-yN-temp)/(2*sp->a); + t2 = (t2==0) ? 0 : (t2<0) ? -pow(-t2,1./3.) : pow(t2,1./3.); + t3 = (-yN+temp)/(2*sp->a); + t3 = t3==0 ? 0 : (t3<0) ? -pow(-t3,1./3.) : pow(t3,1./3.); + ts[0] = xN + t2 + t3; + } else if ( d<0 ) { + if ( delta2>=0 ) { + delta = sqrt(delta2); + h = 2*sp->a*delta2*delta; + temp = -yN/h; + if ( temp>=-1.0001 && temp<=1.0001 ) { + if ( temp<-1 ) temp = -1; else if ( temp>1 ) temp = 1; + theta = acos(temp)/3; + ts[i++] = xN+2*delta*cos(theta); + ts[i++] = xN+2*delta*cos(2.0943951+theta); + ts[i++] = xN+2*delta*cos(4.1887902+theta); + } + } + } else if ( /* d==0 && */ delta2!=0 ) { + delta = yN/(2*sp->a); + delta = delta==0 ? 0 : delta>0 ? pow(delta,1./3.) : -pow(-delta,1./3.); + ts[i++] = xN + delta; /* this root twice, but that's irrelevant to me */ + ts[i++] = xN - 2*delta; + } else if ( /* d==0 && */ delta2==0 ) { + if ( xN>=-0.0001 && xN<=1.0001 ) ts[0] = xN; + } + } else if ( sp->b!=0 ) { + extended d = sp->c*(extended) sp->c-4*(extended) sp->b*sp->d; + if ( RealNear(d,0)) d=0; + if ( d<0 ) +return(false); /* All roots imaginary */ + d = sqrt(d); + ts[0] = (-sp->c-d)/(2*(extended) sp->b); + ts[1] = (-sp->c+d)/(2*(extended) sp->b); + } else if ( sp->c!=0 ) { + ts[0] = -sp->d/(extended) sp->c; + } else { + /* If it's a point then either everything is a solution, or nothing */ + } +return( ts[0]!=-999999 ); +} + +int CubicSolve(const Spline1D *sp,extended ts[3]) { + extended t; + int i; + /* This routine gives us all solutions between [0,1] with -1 as an error flag */ + /* http://mathforum.org/dr.math/faq/faq.cubic.equations.html */ + + if ( !_CubicSolve(sp,ts)) { + ts[0] = ts[1] = ts[2] = -1; +return( false ); + } + + for ( i=0; i<3; ++i ) + if ( ts[i]==-999999 ) ts[i] = -1; + if (ts[0]>1.0001 || ts[0]<-.0001 ) ts[0] = -1; + else if ( ts[0]<0 ) ts[0] = 0; else if ( ts[0]>1 ) ts[0] = 1; + if (ts[1]>1.0001 || ts[1]<-.0001 ) ts[1] = -1; + else if ( ts[1]<0 ) ts[1] = 0; else if ( ts[1]>1 ) ts[1] = 1; + if (ts[2]>1.0001 || ts[2]<-.0001 ) ts[2] = -1; + else if ( ts[2]<0 ) ts[2] = 0; else if ( ts[2]>1 ) ts[2] = 1; + if ( ts[1]==-1 ) { ts[1] = ts[2]; ts[2] = -1;} + if ( ts[0]==-1 ) { ts[0] = ts[1]; ts[1] = ts[2]; ts[2] = -1; } + if ( ts[0]==-1 ) +return( false ); + if ( ts[0]>ts[2] && ts[2]!=-1 ) { + t = ts[0]; ts[0] = ts[2]; ts[2] = t; + } + if ( ts[0]>ts[1] && ts[1]!=-1 ) { + t = ts[0]; ts[0] = ts[1]; ts[1] = t; + } + if ( ts[1]>ts[2] && ts[2]!=-1 ) { + t = ts[1]; ts[1] = ts[2]; ts[2] = t; + } +return( true ); +} + + +extended SplineSolve(const Spline1D *sp, real tmin, real tmax, extended sought,real err) { + /* We want to find t so that spline(t) = sought */ + /* the curve must be monotonic */ + /* returns t which is near sought or -1 */ + Spline1D temp; + extended ts[3]; + int i; + extended t; + (void)err; + temp = *sp; + temp.d -= sought; + CubicSolve(&temp,ts); + if ( tmax=tmin && ts[i]<=tmax ) +return( ts[i] ); + +return( -1 ); +} + +#ifndef EXTENDED_IS_LONG_DOUBLE +double CheckExtremaForSingleBitErrors(const Spline1D *sp, double t) { + union { double dval; int32 ival[2]; } u1, um1, temp; + double slope, slope1, slopem1; +#ifdef WORDS_BIGENDIAN + const int index = 1; +#else + const int index = 0; +#endif + + slope = (3*(double) sp->a*t+2*sp->b)*t+sp->c; + + u1.dval = t; + u1.ival[index] += 1; + slope1 = (3*(double) sp->a*u1.dval+2*sp->b)*u1.dval+sp->c; + + um1.dval = t; + um1.ival[index] -= 1; + slopem1 = (3*(double) sp->a*um1.dval+2*sp->b)*um1.dval+sp->c; + + if ( slope<0 ) slope = -slope; + if ( slope1<0 ) slope1 = -slope1; + if ( slopem1<0 ) slopem1 = -slopem1; + + if ( slope1a*temp.dval+2*sp->b)*temp.dval+sp->c; + if ( slope<0 ) slope = -slope; + if ( slopea*temp.dval+2*sp->b)*temp.dval+sp->c; + if ( slope<0 ) slope = -slope; + if ( slopea!=0 ) { + /* cubic, possibly 2 extrema (possibly none) */ + b2_fourac = 4*(extended)sp->b*sp->b - 12*(extended)sp->a*sp->c; + if ( b2_fourac>=0 ) { + b2_fourac = esqrt(b2_fourac); + t1 = (-2*sp->b - b2_fourac) / (6*sp->a); + t2 = (-2*sp->b + b2_fourac) / (6*sp->a); + t1 = CheckExtremaForSingleBitErrors(sp,t1); + t2 = CheckExtremaForSingleBitErrors(sp,t2); + if ( t1>t2 ) { extended temp = t1; t1 = t2; t2 = temp; } + else if ( t1==t2 ) t2 = -1; + if ( RealNear(t1,0)) t1=0; else if ( RealNear(t1,1)) t1=1; + if ( RealNear(t2,0)) t2=0; else if ( RealNear(t2,1)) t2=1; + } + } else if ( sp->b!=0 ) { + /* Quadratic, at most one extremum */ + t1 = -sp->c/(2.0*(extended) sp->b); + } else /*if ( sp->c!=0 )*/ { + /* linear, no extrema */ + } + *_t1 = t1; *_t2 = t2; +} + +void SplineFindExtrema(const Spline1D *sp, extended *_t1, extended *_t2 ) { + extended t1= -1, t2= -1; + extended b2_fourac; + + /* Find the extreme points on the curve */ + /* Set to -1 if there are none or if they are outside the range [0,1] */ + /* Order them so that t1a!=0 ) { + /* cubic, possibly 2 extrema (possibly none) */ + b2_fourac = 4*(extended) sp->b*sp->b - 12*(extended) sp->a*sp->c; + if ( b2_fourac>=0 ) { + b2_fourac = esqrt(b2_fourac); + t1 = (-2*sp->b - b2_fourac) / (6*sp->a); + t2 = (-2*sp->b + b2_fourac) / (6*sp->a); + t1 = CheckExtremaForSingleBitErrors(sp,t1); + t2 = CheckExtremaForSingleBitErrors(sp,t2); + if ( t1>t2 ) { extended temp = t1; t1 = t2; t2 = temp; } + else if ( t1==t2 ) t2 = -1; + if ( RealNear(t1,0)) t1=0; else if ( RealNear(t1,1)) t1=1; + if ( RealNear(t2,0)) t2=0; else if ( RealNear(t2,1)) t2=1; + if ( t2<=0 || t2>=1 ) t2 = -1; + if ( t1<=0 || t1>=1 ) { t1 = t2; t2 = -1; } + } + } else if ( sp->b!=0 ) { + /* Quadratic, at most one extremum */ + t1 = -sp->c/(2.0*(extended) sp->b); + if ( t1<=0 || t1>=1 ) t1 = -1; + } else /*if ( sp->c!=0 )*/ { + /* linear, no extrema */ + } + *_t1 = t1; *_t2 = t2; +} + +double SplineCurvature(Spline *s, double t) { + /* Kappa = (x'y'' - y'x'') / (x'^2 + y'^2)^(3/2) */ + double dxdt, dydt, d2xdt2, d2ydt2, denom, numer; + + if ( s==NULL ) +return( CURVATURE_ERROR ); + + dxdt = (3*s->splines[0].a*t+2*s->splines[0].b)*t+s->splines[0].c; + dydt = (3*s->splines[1].a*t+2*s->splines[1].b)*t+s->splines[1].c; + d2xdt2 = 6*s->splines[0].a*t + 2*s->splines[0].b; + d2ydt2 = 6*s->splines[1].a*t + 2*s->splines[1].b; + denom = pow( dxdt*dxdt + dydt*dydt, 3.0/2.0 ); + numer = dxdt*d2ydt2 - dydt*d2xdt2; + + if ( numer==0 ) +return( 0 ); + if ( denom==0 ) +return( CURVATURE_ERROR ); + +return( numer/denom ); +} + +int SplineAtInflection(Spline1D *sp, double t ) { + /* It's a point of inflection if d sp/dt==0 and d2 sp/dt^2==0 */ +return ( RealNear( (3*sp->a*t + 2*sp->b)*t + sp->c,0) && + RealNear( 6*sp->a*t + 2*sp->b, 0)); +} + +int SplineAtMinMax(Spline1D *sp, double t ) { + /* It's a point of inflection if d sp/dt==0 and d2 sp/dt^2!=0 */ +return ( RealNear( (3*sp->a*t + 2*sp->b)*t + sp->c,0) && + !RealNear( 6*sp->a*t + 2*sp->b, 0)); +} + +int Spline2DFindExtrema(const Spline *sp, extended extrema[4] ) { + int i,j; + BasePoint last, cur, mid; + + SplineFindExtrema(&sp->splines[0],&extrema[0],&extrema[1]); + SplineFindExtrema(&sp->splines[1],&extrema[2],&extrema[3]); + + for ( i=0; i<3; ++i ) for ( j=i+1; j<4; ++j ) { + if ( (extrema[i]==-1 && extrema[j]!=-1) || (extrema[i]>extrema[j] && extrema[j]!=-1) ) { + extended temp = extrema[i]; + extrema[i] = extrema[j]; + extrema[j] = temp; + } + } + for ( i=j=0; i<3 && extrema[i]!=-1; ++i ) { + if ( extrema[i]==extrema[i+1] ) { + for ( j=i+1; j<3; ++j ) + extrema[j] = extrema[j+1]; + extrema[3] = -1; + } + } + + /* Extrema which are too close together are not interesting */ + last = sp->from->me; + for ( i=0; i<4 && extrema[i]!=-1; ++i ) { + cur.x = ((sp->splines[0].a*extrema[i]+sp->splines[0].b)*extrema[i]+ + sp->splines[0].c)*extrema[i]+sp->splines[0].d; + cur.y = ((sp->splines[1].a*extrema[i]+sp->splines[1].b)*extrema[i]+ + sp->splines[1].c)*extrema[i]+sp->splines[1].d; + mid.x = (last.x+cur.x)/2; mid.y = (last.y+cur.y)/2; + if ( (mid.x==last.x || mid.x==cur.x) && + (mid.y==last.y || mid.y==cur.y)) { + for ( j=i+1; j<3; ++j ) + extrema[j] = extrema[j+1]; + } else + last = cur; + } + for ( i=0; i<4 && extrema[i]!=-1; ++i ); + if ( i!=0 ) { + cur = sp->to->me; + mid.x = (last.x+cur.x)/2; mid.y = (last.y+cur.y)/2; + if ( (mid.x==last.x || mid.x==cur.x) && + (mid.y==last.y || mid.y==cur.y)) + extrema[--i] = -1; + } + +return( i ); +} + +int Spline2DFindPointsOfInflection(const Spline *sp, extended poi[2] ) { + int cnt=0; + extended a, b, c, b2_fourac, t; + /* A POI happens when d2 y/dx2 is zero. This is not the same as d2y/dt2 / d2x/dt2 */ + /* d2 y/dx^2 = d/dt ( dy/dt / dx/dt ) / dx/dt */ + /* = ( (dx/dt) * d2 y/dt2 - ((dy/dt) * d2 x/dt2) )/ (dx/dt)^3 */ + /* (3ax*t^2+2bx*t+cx) * (6ay*t+2by) - (3ay*t^2+2by*t+cy) * (6ax*t+2bx) == 0 */ + /* (3ax*t^2+2bx*t+cx) * (3ay*t+by) - (3ay*t^2+2by*t+cy) * (3ax*t+bx) == 0 */ + /* 9*ax*ay*t^3 + (3ax*by+6bx*ay)*t^2 + (2bx*by+3cx*ay)*t + cx*by */ + /* -(9*ax*ay*t^3 + (3ay*bx+6by*ax)*t^2 + (2by*bx+3cy*ax)*t + cy*bx)==0 */ + /* 3*(ax*by-ay*bx)*t^2 + 3*(cx*ay-cy*ax)*t+ (cx*by-cy*bx) == 0 */ + + a = 3*((extended) sp->splines[1].a*sp->splines[0].b-(extended) sp->splines[0].a*sp->splines[1].b); + b = 3*((extended) sp->splines[0].c*sp->splines[1].a - (extended) sp->splines[1].c*sp->splines[0].a); + c = (extended) sp->splines[0].c*sp->splines[1].b-(extended) sp->splines[1].c*sp->splines[0].b; + if ( !RealNear(a,0) ) { + b2_fourac = b*b - 4*a*c; + poi[0] = poi[1] = -1; + if ( b2_fourac<0 ) +return( 0 ); + b2_fourac = esqrt( b2_fourac ); + t = (-b+b2_fourac)/(2*a); + if ( t>=0 && t<=1.0 ) + poi[cnt++] = t; + t = (-b-b2_fourac)/(2*a); + if ( t>=0 && t<=1.0 ) { + if ( cnt==1 && poi[0]>t ) { + poi[1] = poi[0]; + poi[0] = t; + ++cnt; + } else + poi[cnt++] = t; + } + } else if ( !RealNear(b,0) ) { + t = -c/b; + if ( t>=0 && t<=1.0 ) + poi[cnt++] = t; + } + if ( cnt<2 ) + poi[cnt] = -1; + +return( cnt ); +} + +/* Ok, if the above routine finds an extremum that less than 1 unit */ +/* from an endpoint or another extremum, then many things are */ +/* just going to skip over it, and other things will be confused by this */ +/* so just remove it. It should be so close the difference won't matter */ +void SplineRemoveExtremaTooClose(Spline1D *sp, extended *_t1, extended *_t2 ) { + extended last, test; + extended t1= *_t1, t2 = *_t2; + + if ( t1>t2 && t2!=-1 ) { + t1 = t2; + t2 = *_t1; + } + last = sp->d; + if ( t1!=-1 ) { + test = ((sp->a*t1+sp->b)*t1+sp->c)*t1+sp->d; + if ( (test-last)*(test-last)<1 ) + t1 = -1; + else + last = test; + } + if ( t2!=-1 ) { + test = ((sp->a*t2+sp->b)*t2+sp->c)*t2+sp->d; + if ( (test-last)*(test-last)<1 ) + t2 = -1; + else + last = test; + } + test = sp->a+sp->b+sp->c+sp->d; + if ( (test-last)*(test-last)<1 ) { + if ( t2!=-1 ) + t2 = -1; + else if ( t1!=-1 ) + t1 = -1; + else { + /* Well we should just remove the whole spline? */; + } + } + *_t1 = t1; *_t2 = t2; +} + +int SplineSolveFull(const Spline1D *sp,extended val, extended ts[3]) { + Spline1D temp; + + temp = *sp; + temp.d -= val; + CubicSolve(&temp,ts); +return( ts[0]!=-1 ); +} + +static int AddPoint(extended x,extended y,extended t,extended s,BasePoint *pts, + extended t1s[3],extended t2s[3], int soln) { + int i; + + for ( i=0; i=9 ) + IError( "Too many solutions!\n" ); + t1s[soln] = t; + t2s[soln] = s; + pts[soln].x = x; + pts[soln].y = y; +return( soln+1 ); +} + +static void IterateSolve(const Spline1D *sp,extended ts[3]) { + /* The closed form solution has too many rounding errors for my taste... */ + int i,j; + + ts[0] = ts[1] = ts[2] = -1; + + if ( sp->a!=0 ) { + extended e[4]; + e[0] = 0; e[1] = e[2] = e[3] = 1.0; + SplineFindExtrema(sp,&e[1],&e[2]); + if ( e[1]==-1 ) e[1] = 1; + if ( e[2]==-1 ) e[2] = 1; + for ( i=j=0; i<3; ++i ) { + ts[j] = IterateSplineSolve(sp,e[i],e[i+1],0,.0001); + if ( ts[j]!=-1 ) ++j; + if ( e[i+1]==1.0 ) + break; + } + } else if ( sp->b!=0 ) { + extended b2_4ac = sp->c*(extended) sp->c - 4*sp->b*(extended) sp->d; + if ( b2_4ac>=0 ) { + b2_4ac = esqrt(b2_4ac); + ts[0] = (-sp->c-b2_4ac)/(2*sp->b); + ts[1] = (-sp->c+b2_4ac)/(2*sp->b); + if ( ts[0]>ts[1] ) { bigreal t = ts[0]; ts[0] = ts[1]; ts[1] = t; } + } + } else if ( sp->c!=0 ) { + ts[0] = -sp->d/(extended) sp->c; + } else { + /* No solutions, or all solutions */; + } + for ( i=j=0; i<3; ++i ) + if ( ts[i]>=0 && ts[i]<=1 ) + ts[j++] = ts[i]; + for ( i=0; its[i+1]) { + ts[i] = (ts[i]+ts[i+1])/2; + --j; + for ( ++i; id; + extended dt = ((sp->a*ts[0]+sp->b)*ts[0]+sp->c)*ts[0]+sp->d; + if ( d0<0 ) d0=-d0; + if ( dt<0 ) dt=-dt; + if ( d0
a+(extended) sp->b+sp->c+sp->d; + extended dt = ((sp->a*ts[j-1]+sp->b)*ts[j-1]+sp->c)*ts[j-1]+sp->d; + if ( d1<0 ) d1=-d1; + if ( dt<0 ) dt=-dt; + if ( d1
=tlow && ts[i]<=thigh ) +return( ts[i] ); + for ( i=0; i<3; ++i ) { + if ( ts[i]>=tlow-1./1024. && ts[i]<=tlow ) +return( tlow ); + if ( ts[i]>=thigh && ts[i]<=thigh+1./1024 ) +return( thigh ); + } + } else { + for ( i=0; i<3; ++i ) + if ( ts[i]>=thigh && ts[i]<=tlow ) +return( ts[i] ); + for ( i=0; i<3; ++i ) { + if ( ts[i]>=thigh-1./1024. && ts[i]<=thigh ) +return( thigh ); + if ( ts[i]>=tlow && ts[i]<=tlow+1./1024 ) +return( tlow ); + } + } +return( -1 ); +} + +static int ICAddInter(int cnt,BasePoint *foundpos,extended *foundt1,extended *foundt2, + const Spline *s1,const Spline *s2,extended t1,extended t2, int maxcnt) { + (void)s2; + if ( cnt>=maxcnt ) +return( cnt ); + + foundt1[cnt] = t1; + foundt2[cnt] = t2; + foundpos[cnt].x = ((s1->splines[0].a*t1+s1->splines[0].b)*t1+ + s1->splines[0].c)*t1+s1->splines[0].d; + foundpos[cnt].y = ((s1->splines[1].a*t1+s1->splines[1].b)*t1+ + s1->splines[1].c)*t1+s1->splines[1].d; +return( cnt+1 ); +} + +static int ICBinarySearch(int cnt,BasePoint *foundpos,extended *foundt1,extended *foundt2, + int other, + const Spline *s1,const Spline *s2,extended t1low,extended t1high,extended t2low,extended t2high, + int maxcnt) { + int major; + extended t1, t2; + extended o1o, o2o, o1n, o2n, m; + + major = !other; + o1o = ((s1->splines[other].a*t1low+s1->splines[other].b)*t1low+ + s1->splines[other].c)*t1low+s1->splines[other].d; + o2o = ((s2->splines[other].a*t2low+s2->splines[other].b)*t2low+ + s2->splines[other].c)*t2low+s2->splines[other].d; + forever { + t1 = (t1low+t1high)/2; + m = ((s1->splines[major].a*t1+s1->splines[major].b)*t1+ + s1->splines[major].c)*t1+s1->splines[major].d; + t2 = ISolveWithin(&s2->splines[major],m,t2low,t2high); + if ( t2==-1 ) +return( cnt ); + + o1n = ((s1->splines[other].a*t1+s1->splines[other].b)*t1+ + s1->splines[other].c)*t1+s1->splines[other].d; + o2n = ((s2->splines[other].a*t2+s2->splines[other].b)*t2+ + s2->splines[other].c)*t2+s2->splines[other].d; + if (( o1n-o2n<.001 && o1n-o2n>-.001) || + (t1-t1low<.0001 && t1-t1low>-.0001)) +return( ICAddInter(cnt,foundpos,foundt1,foundt2,s1,s2,t1,t2,maxcnt)); + if ( (o1o>o2o && o1no2n)) { + t1high = t1; + t2high = t2; + } else { + t1low = t1; + t2low = t2; + } + } +} + +static int CubicsIntersect(const Spline *s1,extended lowt1,extended hight1,BasePoint *min1,BasePoint *max1, + const Spline *s2,extended lowt2,extended hight2,BasePoint *min2,BasePoint *max2, + BasePoint *foundpos,extended *foundt1,extended *foundt2, + int maxcnt) { + int major, other; + BasePoint max, min; + extended t1max, t1min, t2max, t2min, t1, t2, t1diff, oldt2; + extended o1o, o2o, o1n, o2n, m; + int cnt=0; + + if ( (min.x = min1->x)x ) min.x = min2->x; + if ( (min.y = min1->y)y ) min.y = min2->y; + if ( (max.x = max1->x)>max2->x ) max.x = max2->x; + if ( (max.y = max1->y)>max2->y ) max.y = max2->y; + if ( max.x max.y-min.y ) + major = 0; + else + major = 1; + other = 1-major; + + t1max = ISolveWithin(&s1->splines[major],(&max.x)[major],lowt1,hight1); + t1min = ISolveWithin(&s1->splines[major],(&min.x)[major],lowt1,hight1); + t2max = ISolveWithin(&s2->splines[major],(&max.x)[major],lowt2,hight2); + t2min = ISolveWithin(&s2->splines[major],(&min.x)[major],lowt2,hight2); + if ( t1max==-1 || t1min==-1 || t2max==-1 || t1min==-1 ) +return( 0 ); + t1diff = (t1max-t1min)/64.0; + if ( t1diff==0 ) +return( 0 ); + + t1 = t1min; t2 = t2min; + o1o = ((s1->splines[other].a*t1+s1->splines[other].b)*t1+ + s1->splines[other].c)*t1+s1->splines[other].d; + o2o = ((s2->splines[other].a*t2+s2->splines[other].b)*t2+ + s2->splines[other].c)*t2+s2->splines[other].d; + if ( o1o==o2o ) + cnt = ICAddInter(cnt,foundpos,foundt1,foundt2,s1,s2,t1,t2,maxcnt); + forever { + if ( cnt>=maxcnt ) + break; + t1 += t1diff; + if (( t1max>t1min && t1>t1max ) || (t1max3 ) + break; + m = ((s1->splines[major].a*t1+s1->splines[major].b)*t1+ + s1->splines[major].c)*t1+s1->splines[major].d; + oldt2 = t2; + t2 = ISolveWithin(&s2->splines[major],m,lowt2,hight2); + if ( t2==-1 ) + continue; + + o1n = ((s1->splines[other].a*t1+s1->splines[other].b)*t1+ + s1->splines[other].c)*t1+s1->splines[other].d; + o2n = ((s2->splines[other].a*t2+s2->splines[other].b)*t2+ + s2->splines[other].c)*t2+s2->splines[other].d; + if ( o1n==o2n ) + cnt = ICAddInter(cnt,foundpos,foundt1,foundt2,s1,s2,t1,t2,maxcnt); + if ( (o1o>o2o && o1no2n)) + cnt = ICBinarySearch(cnt,foundpos,foundt1,foundt2,other, + s1,s2,t1-t1diff,t1,oldt2,t2,maxcnt); + o1o = o1n; o2o = o2n; + } +return( cnt ); +} + +static int Closer(const Spline *s1,const Spline *s2,extended t1,extended t2,extended t1p,extended t2p) { + double x1 = ((s1->splines[0].a*t1+s1->splines[0].b)*t1+s1->splines[0].c)*t1+s1->splines[0].c; + double y1 = ((s1->splines[1].a*t1+s1->splines[1].b)*t1+s1->splines[1].c)*t1+s1->splines[1].c; + double x2 = ((s2->splines[0].a*t2+s2->splines[0].b)*t2+s2->splines[0].c)*t2+s2->splines[0].c; + double y2 = ((s2->splines[1].a*t2+s2->splines[1].b)*t2+s2->splines[1].c)*t2+s2->splines[1].c; + double diff = abs(x1-x2) + abs(y1-y2); + double x1p = ((s1->splines[0].a*t1p+s1->splines[0].b)*t1p+s1->splines[0].c)*t1p+s1->splines[0].c; + double y1p = ((s1->splines[1].a*t1p+s1->splines[1].b)*t1p+s1->splines[1].c)*t1p+s1->splines[1].c; + double x2p = ((s2->splines[0].a*t2p+s2->splines[0].b)*t2p+s2->splines[0].c)*t2p+s2->splines[0].c; + double y2p = ((s2->splines[1].a*t2p+s2->splines[1].b)*t2p+s2->splines[1].c)*t2p+s2->splines[1].c; + double diffp = abs(x1p-x2p) + abs(y1p-y2p); + + if ( diffno intersection, 1=>at least one, location in pts, t1s, t2s */ +/* -1 => We couldn't figure it out in a closed form, have to do a numerical */ +/* approximation */ +int SplinesIntersect(const Spline *s1, const Spline *s2, BasePoint pts[9], + extended t1s[10], extended t2s[10]) { /* One extra for a trailing -1 */ + BasePoint min1, max1, min2, max2; + int soln = 0; + extended x,y,t, ac0, ac1; + int i,j,found; + Spline1D spline; + extended tempts[4]; /* 3 solns for cubics, 4 for quartics */ + extended extrema1[6], extrema2[6]; + int ecnt1, ecnt2; + + t1s[0] = t1s[1] = t1s[2] = t1s[3] = -1; + t2s[0] = t2s[1] = t2s[2] = t2s[3] = -1; + + if ( s1==s2 && !s1->knownlinear && !s1->isquadratic ) + /* Special case see if it doubles back on itself anywhere */; + else if ( s1==s2 ) +return( 0 ); /* Linear and quadratics can't double back, can't self-intersect */ + else if ( s1->splines[0].a == s2->splines[0].a && + s1->splines[0].b == s2->splines[0].b && + s1->splines[0].c == s2->splines[0].c && + s1->splines[0].d == s2->splines[0].d && + s1->splines[1].a == s2->splines[1].a && + s1->splines[1].b == s2->splines[1].b && + s1->splines[1].c == s2->splines[1].c && + s1->splines[1].d == s2->splines[1].d ) +return( -1 ); /* Same spline. Intersects everywhere */ + + /* Ignore splines which are just a point */ + if ( s1->knownlinear && s1->splines[0].c==0 && s1->splines[1].c==0 ) +return( 0 ); + if ( s2->knownlinear && s2->splines[0].c==0 && s2->splines[1].c==0 ) +return( 0 ); + + if ( s1->knownlinear ) + /* Do Nothing */; + else if ( s2->knownlinear || (!s1->isquadratic && s2->isquadratic)) { + const Spline *stemp = s1; + extended *ts = t1s; + t1s = t2s; t2s = ts; + s1 = s2; s2 = stemp; + } + + min1 = s1->from->me; max1 = min1; + min2 = s2->from->me; max2 = min2; + if ( s1->from->nextcp.x>max1.x ) max1.x = s1->from->nextcp.x; + else if ( s1->from->nextcp.xfrom->nextcp.x; + if ( s1->from->nextcp.y>max1.y ) max1.y = s1->from->nextcp.y; + else if ( s1->from->nextcp.yfrom->nextcp.y; + if ( s1->to->prevcp.x>max1.x ) max1.x = s1->to->prevcp.x; + else if ( s1->to->prevcp.xto->prevcp.x; + if ( s1->to->prevcp.y>max1.y ) max1.y = s1->to->prevcp.y; + else if ( s1->to->prevcp.yto->prevcp.y; + if ( s1->to->me.x>max1.x ) max1.x = s1->to->me.x; + else if ( s1->to->me.xto->me.x; + if ( s1->to->me.y>max1.y ) max1.y = s1->to->me.y; + else if ( s1->to->me.yto->me.y; + + if ( s2->from->nextcp.x>max2.x ) max2.x = s2->from->nextcp.x; + else if ( s2->from->nextcp.xfrom->nextcp.x; + if ( s2->from->nextcp.y>max2.y ) max2.y = s2->from->nextcp.y; + else if ( s2->from->nextcp.yfrom->nextcp.y; + if ( s2->to->prevcp.x>max2.x ) max2.x = s2->to->prevcp.x; + else if ( s2->to->prevcp.xto->prevcp.x; + if ( s2->to->prevcp.y>max2.y ) max2.y = s2->to->prevcp.y; + else if ( s2->to->prevcp.yto->prevcp.y; + if ( s2->to->me.x>max2.x ) max2.x = s2->to->me.x; + else if ( s2->to->me.xto->me.x; + if ( s2->to->me.y>max2.y ) max2.y = s2->to->me.y; + else if ( s2->to->me.yto->me.y; + if ( min1.x>max2.x || min2.x>max1.x || min1.y>max2.y || min2.y>max1.y ) +return( false ); /* no intersection of bounding boxes */ + +#if 0 + soln = CheckEndpoint(&s1->from->me,s2,0,pts,t1s,t2s,soln); + soln = CheckEndpoint(&s1->to->me,s2,1,pts,t1s,t2s,soln); + soln = CheckEndpoint(&s2->from->me,s1,0,pts,t2s,t1s,soln); + soln = CheckEndpoint(&s2->to->me,s1,1,pts,t2s,t1s,soln); +#endif + + if ( s1->knownlinear ) { + spline.d = s1->splines[1].c*((bigreal) s2->splines[0].d-(bigreal) s1->splines[0].d)- + s1->splines[0].c*((bigreal) s2->splines[1].d-(bigreal) s1->splines[1].d); + spline.c = s1->splines[1].c*(bigreal) s2->splines[0].c - s1->splines[0].c*(bigreal) s2->splines[1].c; + spline.b = s1->splines[1].c*(bigreal) s2->splines[0].b - s1->splines[0].c*(bigreal) s2->splines[1].b; + spline.a = s1->splines[1].c*(bigreal) s2->splines[0].a - s1->splines[0].c*(bigreal) s2->splines[1].a; + IterateSolve(&spline,tempts); + if ( tempts[0]==-1 ) +return( false ); + for ( i = 0; i<3 && tempts[i]!=-1; ++i ) { + x = ((s2->splines[0].a*tempts[i]+s2->splines[0].b)*tempts[i]+ + s2->splines[0].c)*tempts[i]+s2->splines[0].d; + y = ((s2->splines[1].a*tempts[i]+s2->splines[1].b)*tempts[i]+ + s2->splines[1].c)*tempts[i]+s2->splines[1].d; + if ( (ac0 = s1->splines[0].c)<0 ) ac0 = -ac0; + if ( (ac1 = s1->splines[1].c)<0 ) ac1 = -ac1; + if ( ac0>ac1 ) + t = (x-s1->splines[0].d)/s1->splines[0].c; + else + t = (y-s1->splines[1].d)/s1->splines[1].c; + if ( tempts[i]>.999 && Closer(s1,s2,tempts[i],t,1,t)) + tempts[i] = 1; + else if ( tempts[i]<.001 && Closer(s1,s2,tempts[i],t,0,t)) + tempts[i] = 0; + if ( t>.999 && Closer(s1,s2,tempts[i],t,tempts[i],1)) + t = 1; + else if ( t<.001 && Closer(s1,s2,tempts[i],t,tempts[i],0)) + t = 0; + if ( t<-.001 || t>1.001 || xmax1.x+.01 || y>max1.y+.01 ) + continue; + if ( t<=0 ) {t=0; x=s1->from->me.x; y = s1->from->me.y; } + else if ( t>=1 ) { t=1; x=s1->to->me.x; y = s1->to->me.y; } + if ( s1->from->me.x==s1->to->me.x ) /* Avoid rounding errors */ + x = s1->from->me.x; /* on hor/vert lines */ + else if ( s1->from->me.y==s1->to->me.y ) + y = s1->from->me.y; + if ( s2->knownlinear ) { + if ( s2->from->me.x==s2->to->me.x ) + x = s2->from->me.x; + else if ( s2->from->me.y==s2->to->me.y ) + y = s2->from->me.y; + } + soln = AddPoint(x,y,t,tempts[i],pts,t1s,t2s,soln); + } +return( soln!=0 ); +#if 0 /* This doesn't work. */ + } else if ( s1->isquadratic && s2->isquadratic ) { + temp.a = 0; + temp.b = s1->splines[1].b*s2->splines[0].b - s1->splines[0].b*s2->splines[1].b; + temp.c = s1->splines[1].b*s2->splines[0].c - s1->splines[0].b*s2->splines[1].c; + temp.d = s1->splines[1].b*(s2->splines[0].d-s1->splines[0].d) - + s1->splines[0].b*(s2->splines[1].d-s1->splines[1].d); + d = s1->splines[1].b*s1->splines[0].c - s1->splines[0].b*s1->splines[1].c; + if ( RealNear(d,0)) d=0; + if ( d!=0 ) { + temp.b /= d; temp.c /= d; temp.d /= d; + /* At this point t= temp.b*s^2 + temp.c*s + temp.d */ + /* We substitute this back into one of our equations and get a */ + /* quartic in s */ + quad.a = s1->splines[0].b*temp.b*temp.b; + quad.b = s1->splines[0].b*2*temp.b*temp.c; + quad.c = s1->splines[0].b*(2*temp.b*temp.d+temp.c*temp.c); + quad.d = s1->splines[0].b*2*temp.d*temp.c; + quad.e = s1->splines[0].b*temp.d*temp.d; + quad.b+= s1->splines[0].c*temp.b; + quad.c+= s1->splines[0].c*temp.c; + quad.d+= s1->splines[0].c*temp.d; + quad.e+= s1->splines[0].d; + quad.e-= s2->splines[0].d; + quad.d-= s2->splines[0].c; + quad.c-= s2->splines[0].b; + if ( QuarticSolve(&quad,tempts)==-1 ) +return( -1 ); + for ( i=0; i<4 && tempts[i]!=-999999; ++i ) + soln = AddQuadraticSoln(tempts[i],s1,s2,pts,t1s,t2s,soln); + } else { + d = temp.c*temp.c-4*temp.b*temp.c; + if ( RealNear(d,0)) d = 0; + if ( d<0 ) +return( soln!=0 ); + d = sqrt(d); + s = (-temp.c-d)/(2*temp.b); + soln = AddQuadraticSoln(s,s1,s2,pts,t1s,t2s,soln); + s = (-temp.c+d)/(2*temp.b); + soln = AddQuadraticSoln(s,s1,s2,pts,t1s,t2s,soln); + } +return( soln!=0 ); +#endif + } + /* if one of the splines is quadratic then we can get an expression */ + /* relating c*t+d to poly(s^3), and substituting this back we get */ + /* a poly of degree 6 in s which could be solved iteratively */ + /* however mixed quadratics and cubics are unlikely */ + + /* but if both splines are degree 3, the t is expressed as the sqrt of */ + /* a third degree poly, which must be substituted into a cubic, and */ + /* then squared to get rid of the sqrts leaving us with an ?18? degree */ + /* poly. Ick. */ + + /* So let's do it the hard way... we break the splines into little bits */ + /* where they are monotonic in both dimensions, then check these for */ + /* possible intersections */ + extrema1[0] = extrema2[0] = 0; + ecnt1 = Spline2DFindExtrema(s1,extrema1+1); + ecnt2 = Spline2DFindExtrema(s2,extrema2+1); + extrema1[++ecnt1] = 1.0; + extrema2[++ecnt2] = 1.0; + found=0; + for ( i=0; isplines[0].a*extrema1[i]+s1->splines[0].b)*extrema1[i]+ + s1->splines[0].c)*extrema1[i]+s1->splines[0].d; + min1.y = ((s1->splines[1].a*extrema1[i]+s1->splines[1].b)*extrema1[i]+ + s1->splines[1].c)*extrema1[i]+s1->splines[1].d; + max1.x = ((s1->splines[0].a*extrema1[i+1]+s1->splines[0].b)*extrema1[i+1]+ + s1->splines[0].c)*extrema1[i+1]+s1->splines[0].d; + max1.y = ((s1->splines[1].a*extrema1[i+1]+s1->splines[1].b)*extrema1[i+1]+ + s1->splines[1].c)*extrema1[i+1]+s1->splines[1].d; + if ( max1.xsplines[0].a*extrema2[j]+s2->splines[0].b)*extrema2[j]+ + s2->splines[0].c)*extrema2[j]+s2->splines[0].d; + min2.y = ((s2->splines[1].a*extrema2[j]+s2->splines[1].b)*extrema2[j]+ + s2->splines[1].c)*extrema2[j]+s2->splines[1].d; + max2.x = ((s2->splines[0].a*extrema2[j+1]+s2->splines[0].b)*extrema2[j+1]+ + s2->splines[0].c)*extrema2[j+1]+s2->splines[0].d; + max2.y = ((s2->splines[1].a*extrema2[j+1]+s2->splines[1].b)*extrema2[j+1]+ + s2->splines[1].c)*extrema2[j+1]+s2->splines[1].d; + if ( max2.xmax2.x || min2.x>max1.x || min1.y>max2.y || min2.y>max1.y ) + /* No possible intersection */; + else if ( s1!=s2 ) + found += CubicsIntersect(s1,extrema1[i],extrema1[i+1],&min1,&max1, + s2,extrema2[j],extrema2[j+1],&min2,&max2, + &pts[found],&t1s[found],&t2s[found],9-found); + else { + int k,l; + int cnt = CubicsIntersect(s1,extrema1[i],extrema1[i+1],&min1,&max1, + s2,extrema2[j],extrema2[j+1],&min2,&max2, + &pts[found],&t1s[found],&t2s[found],9-found); + for ( k=0; k=8 ) { + /* If the splines are colinear then we might get an unbounded */ + /* number of intersections */ + break; + } + } + } + t1s[found] = t2s[found] = -1; +return( found!=0 ); +} + +int SplineSetIntersect(SplineSet *spl, Spline **_spline, Spline **_spline2) { + BasePoint pts[9]; + extended t1s[10], t2s[10]; + int found = false,i; + SplineSet *test, *test2; + Spline *spline, *spline2, *first, *first2; + + for ( test=spl; test!=NULL ; test=test->next ) { + first = NULL; + for ( spline = test->first->next; spline!=NULL && spline!=first; spline=spline->to->next ) { + if ( first==NULL ) first = spline; + for ( test2=test; test2!=NULL; test2=test2->next ) { + first2 = test2==test && first!=spline ? first : NULL; + for ( spline2=(test2==test)?spline : test2->first->next; + spline2!=NULL && spline2!=first2; spline2 = spline2->to->next ) { + if ( first2==NULL ) first2 = spline2; + if ( SplinesIntersect(spline,spline2,pts,t1s,t2s)) { + if ( spline->to->next!=spline2 && spline->from->prev!=spline2 ) + found = true; + else for ( i=0; i<10 && t1s[i]!=-1; ++i ) { + if ( (t1s[i]<.9 && t1s[i]>.1) || (t2s[i]<.9 && t2s[i]>.1)) { + found = true; + break; + } + } + if ( found ) + break; + } + } + if ( found ) + break; + } + if ( found ) + break; + } + if ( found ) + break; + } + if ( found ) { + *_spline = spline; + *_spline2 = spline2; + } +return( found ); +} + +void StemInfoFree(StemInfo *h) { + HintInstance *hi, *n; + + for ( hi=h->where; hi!=NULL; hi=n ) { + n = hi->next; + chunkfree(hi,sizeof(HintInstance)); + } + chunkfree(h,sizeof(StemInfo)); +} + +void StemInfosFree(StemInfo *h) { + StemInfo *hnext; + HintInstance *hi, *n; + + for ( ; h!=NULL; h = hnext ) { + for ( hi=h->where; hi!=NULL; hi=n ) { + n = hi->next; + chunkfree(hi,sizeof(HintInstance)); + } + hnext = h->next; + chunkfree(h,sizeof(StemInfo)); + } +} + +void DStemInfoFree(DStemInfo *h) { + HintInstance *hi, *n; + + for ( hi=h->where; hi!=NULL; hi=n ) { + n = hi->next; + chunkfree(hi,sizeof(HintInstance)); + } + chunkfree(h,sizeof(DStemInfo)); +} + +void DStemInfosFree(DStemInfo *h) { + DStemInfo *hnext; + HintInstance *hi, *n; + + for ( ; h!=NULL; h = hnext ) { + for ( hi=h->where; hi!=NULL; hi=n ) { + n = hi->next; + chunkfree(hi,sizeof(HintInstance)); + } + hnext = h->next; + chunkfree(h,sizeof(DStemInfo)); + } +} + +StemInfo *StemInfoCopy(StemInfo *h) { + StemInfo *head=NULL, *last=NULL, *cur; + HintInstance *hilast, *hicur, *hi; + + for ( ; h!=NULL; h = h->next ) { + cur = chunkalloc(sizeof(StemInfo)); + *cur = *h; + cur->next = NULL; + if ( head==NULL ) + head = last = cur; + else { + last->next = cur; + last = cur; + } + cur->where = hilast = NULL; + for ( hi=h->where; hi!=NULL; hi=hi->next ) { + hicur = chunkalloc(sizeof(StemInfo)); + *hicur = *hi; + hicur->next = NULL; + if ( hilast==NULL ) + cur->where = hilast = hicur; + else { + hilast->next = hicur; + hilast = hicur; + } + } + } +return( head ); +} + +DStemInfo *DStemInfoCopy(DStemInfo *h) { + DStemInfo *head=NULL, *last=NULL, *cur; + HintInstance *hilast, *hicur, *hi; + + for ( ; h!=NULL; h = h->next ) { + cur = chunkalloc(sizeof(DStemInfo)); + *cur = *h; + cur->next = NULL; + if ( head==NULL ) + head = last = cur; + else { + last->next = cur; + last = cur; + } + cur->where = hilast = NULL; + for ( hi=h->where; hi!=NULL; hi=hi->next ) { + hicur = chunkalloc(sizeof(StemInfo)); + *hicur = *hi; + hicur->next = NULL; + if ( hilast==NULL ) + cur->where = hilast = hicur; + else { + hilast->next = hicur; + hilast = hicur; + } + } + } +return( head ); +} + +MinimumDistance *MinimumDistanceCopy(MinimumDistance *md) { + MinimumDistance *head=NULL, *last=NULL, *cur; + + for ( ; md!=NULL; md = md->next ) { + cur = chunkalloc(sizeof(DStemInfo)); + *cur = *md; + cur->next = NULL; + if ( head==NULL ) + head = last = cur; + else { + last->next = cur; + last = cur; + } + } +return( head ); +} + +void KernPairsFree(KernPair *kp) { + KernPair *knext; + for ( ; kp!=NULL; kp = knext ) { + knext = kp->next; + chunkfree(kp,sizeof(KernPair)); + } +} + +static AnchorPoint *AnchorPointsRemoveName(AnchorPoint *alist,AnchorClass *an) { + AnchorPoint *prev=NULL, *ap, *next; + + for ( ap=alist; ap!=NULL; ap=next ) { + next = ap->next; + if ( ap->anchor == an ) { + if ( prev==NULL ) + alist = next; + else + prev->next = next; + ap->next = NULL; + AnchorPointsFree(ap); + if ( an->type == act_mark || (an->type==act_mklg && ap->type==at_mark)) + next = NULL; /* Only one instance of an anchor class in a glyph for mark to base anchors */ + /* Or for the mark glyphs of ligature classes */ + /* Mark to mark & cursive will (probably) have 2 occurances */ + /* and ligatures may have lots */ + } else + prev = ap; + } +return( alist ); +} + +static void SCRemoveAnchorClass(SplineChar *sc,AnchorClass *an) { + Undoes *test; + + if ( sc==NULL ) +return; + sc->anchor = AnchorPointsRemoveName(sc->anchor,an); + for ( test = sc->layers[ly_fore].undoes; test!=NULL; test=test->next ) + if ( test->undotype==ut_state || test->undotype==ut_tstate || + test->undotype==ut_statehint || test->undotype==ut_statename ) + test->u.state.anchor = AnchorPointsRemoveName(test->u.state.anchor,an); + for ( test = sc->layers[ly_fore].redoes; test!=NULL; test=test->next ) + if ( test->undotype==ut_state || test->undotype==ut_tstate || + test->undotype==ut_statehint || test->undotype==ut_statename ) + test->u.state.anchor = AnchorPointsRemoveName(test->u.state.anchor,an); +} + +void SFRemoveAnchorClass(SplineFont *sf,AnchorClass *an) { + int i; + AnchorClass *prev, *test; + + for ( i=0; iglyphcnt; ++i ) + SCRemoveAnchorClass(sf->glyphs[i],an); + prev = NULL; + for ( test=sf->anchor; test!=NULL; test=test->next ) { + if ( test==an ) { + if ( prev==NULL ) + sf->anchor = test->next; + else + prev->next = test->next; + chunkfree(test,sizeof(AnchorClass)); + break; + } else + prev = test; + } +} + +AnchorPoint *APAnchorClassMerge(AnchorPoint *anchors,AnchorClass *into,AnchorClass *from) { + AnchorPoint *api=NULL, *prev, *ap, *next; + + prev = NULL; + for ( ap=anchors; ap!=NULL; ap=next ) { + next = ap->next; + if ( ap->anchor==from ) { + for ( api=anchors; api!=NULL; api=api->next ) { + if ( api->anchor==into && + (api->type!=at_baselig || ap->type!=at_baselig || api->lig_index==ap->lig_index)) + break; + } + if ( api==NULL && into!=NULL ) { + ap->anchor = into; + prev = ap; + } else { + if ( prev==NULL ) + anchors = next; + else + prev->next = next; + ap->next = NULL; + AnchorPointsFree(ap); + } + } else + prev = ap; + } +return( anchors ); +} + +AnchorPoint *AnchorPointsCopy(AnchorPoint *alist) { + AnchorPoint *head=NULL, *last=NULL, *ap; + + while ( alist!=NULL ) { + ap = chunkalloc(sizeof(AnchorPoint)); + *ap = *alist; + if ( head==NULL ) + head = ap; + else + last->next = ap; + last = ap; + alist = alist->next; + } +return( head ); +} + +void AnchorPointsFree(AnchorPoint *ap) { + AnchorPoint *anext; + for ( ; ap!=NULL; ap = anext ) { + anext = ap->next; + chunkfree(ap,sizeof(AnchorPoint)); + } +} + + +void PSTFree(PST *pst) { + PST *pnext; + for ( ; pst!=NULL; pst = pnext ) { + pnext = pst->next; + if ( pst->type==pst_lcaret ) + free(pst->u.lcaret.carets); + else if ( pst->type==pst_pair ) { + free(pst->u.pair.paired); + chunkfree(pst->u.pair.vr,sizeof(struct vr [2])); + } else if ( pst->type!=pst_position ) { + free(pst->u.subs.variant); + } else if ( pst->type==pst_position ) { + } + chunkfree(pst,sizeof(PST)); + } +} + +void FPSTRuleContentsFree(struct fpst_rule *r, enum fpossub_format format) { + int j; + + switch ( format ) { + case pst_glyphs: + free(r->u.glyph.names); + free(r->u.glyph.back); + free(r->u.glyph.fore); + break; + case pst_class: + free(r->u.class.nclasses); + free(r->u.class.bclasses); + free(r->u.class.fclasses); + break; + case pst_reversecoverage: + free(r->u.rcoverage.replacements); + case pst_coverage: + for ( j=0 ; ju.coverage.ncnt ; ++j ) + free(r->u.coverage.ncovers[j]); + free(r->u.coverage.ncovers); + for ( j=0 ; ju.coverage.bcnt ; ++j ) + free(r->u.coverage.bcovers[j]); + free(r->u.coverage.bcovers); + for ( j=0 ; ju.coverage.fcnt ; ++j ) + free(r->u.coverage.fcovers[j]); + free(r->u.coverage.fcovers); + break; + default: + break; + } + free(r->lookups); +} + +void FPSTRulesFree(struct fpst_rule *r, enum fpossub_format format, int rcnt) { + int i; + for ( i=0; iu.glyph.names = copy(f->u.glyph.names); + t->u.glyph.back = copy(f->u.glyph.back); + t->u.glyph.fore = copy(f->u.glyph.fore); + break; + case pst_class: + t->u.class.ncnt = f->u.class.ncnt; + t->u.class.bcnt = f->u.class.bcnt; + t->u.class.fcnt = f->u.class.fcnt; + t->u.class.nclasses = galloc( f->u.class.ncnt*sizeof(uint16)); + memcpy(t->u.class.nclasses,f->u.class.nclasses, + f->u.class.ncnt*sizeof(uint16)); + if ( t->u.class.bcnt!=0 ) { + t->u.class.bclasses = galloc( f->u.class.bcnt*sizeof(uint16)); + memcpy(t->u.class.bclasses,f->u.class.bclasses, + f->u.class.bcnt*sizeof(uint16)); + } + if ( t->u.class.fcnt!=0 ) { + t->u.class.fclasses = galloc( f->u.class.fcnt*sizeof(uint16)); + memcpy(t->u.class.fclasses,f->u.class.fclasses, + f->u.class.fcnt*sizeof(uint16)); + } + break; + case pst_reversecoverage: + t->u.rcoverage.replacements = copy(f->u.rcoverage.replacements); + case pst_coverage: + t->u.coverage.ncnt = f->u.coverage.ncnt; + t->u.coverage.bcnt = f->u.coverage.bcnt; + t->u.coverage.fcnt = f->u.coverage.fcnt; + t->u.coverage.ncovers = galloc( f->u.coverage.ncnt*sizeof(char *)); + for ( j=0; ju.coverage.ncnt; ++j ) + t->u.coverage.ncovers[j] = copy(f->u.coverage.ncovers[j]); + if ( t->u.coverage.bcnt!=0 ) { + t->u.coverage.bcovers = galloc( f->u.coverage.bcnt*sizeof(char *)); + for ( j=0; ju.coverage.bcnt; ++j ) + t->u.coverage.bcovers[j] = copy(f->u.coverage.bcovers[j]); + } + if ( t->u.coverage.fcnt!=0 ) { + t->u.coverage.fcovers = galloc( f->u.coverage.fcnt*sizeof(char *)); + for ( j=0; ju.coverage.fcnt; ++j ) + t->u.coverage.fcovers[j] = copy(f->u.coverage.fcovers[j]); + } + break; + default: + break; + } + if ( f->lookup_cnt!=0 ) { + t->lookup_cnt = f->lookup_cnt; + t->lookups = galloc(t->lookup_cnt*sizeof(struct seqlookup)); + memcpy(t->lookups,f->lookups,t->lookup_cnt*sizeof(struct seqlookup)); + } + } +return( to ); +} + +FPST *FPSTCopy(FPST *fpst) { + FPST *nfpst; + int i; + + nfpst = chunkalloc(sizeof(FPST)); + *nfpst = *fpst; + nfpst->next = NULL; + if ( nfpst->nccnt!=0 ) { + nfpst->nclass = galloc(nfpst->nccnt*sizeof(char *)); + for ( i=0; inccnt; ++i ) + nfpst->nclass[i] = copy(fpst->nclass[i]); + } + if ( nfpst->bccnt!=0 ) { + nfpst->bclass = galloc(nfpst->bccnt*sizeof(char *)); + for ( i=0; ibccnt; ++i ) + nfpst->bclass[i] = copy(fpst->bclass[i]); + } + if ( nfpst->fccnt!=0 ) { + nfpst->fclass = galloc(nfpst->fccnt*sizeof(char *)); + for ( i=0; ifccnt; ++i ) + nfpst->fclass[i] = copy(fpst->fclass[i]); + } + nfpst->rules = RulesCopy(fpst->rules,fpst->rule_cnt,fpst->format); +return( nfpst ); +} + +void FPSTFree(FPST *fpst) { + FPST *next; + int i; + + while ( fpst!=NULL ) { + next = fpst->next; + for ( i=0; inccnt; ++i ) + free(fpst->nclass[i]); + for ( i=0; ibccnt; ++i ) + free(fpst->bclass[i]); + for ( i=0; ifccnt; ++i ) + free(fpst->fclass[i]); + free(fpst->nclass); free(fpst->bclass); free(fpst->fclass); + for ( i=0; irule_cnt; ++i ) { + FPSTRuleContentsFree( &fpst->rules[i],fpst->format ); + } + free(fpst->rules); + chunkfree(fpst,sizeof(FPST)); + fpst = next; + } +} + +void MinimumDistancesFree(MinimumDistance *md) { + MinimumDistance *next; + + while ( md!=NULL ) { + next = md->next; + chunkfree(md,sizeof(MinimumDistance)); + md = next; + } +} + +void TTFLangNamesFree(struct ttflangname *l) { + struct ttflangname *next; + int i; + + while ( l!=NULL ) { + next = l->next; + for ( i=0; inames[i]); + chunkfree(l,sizeof(*l)); + l = next; + } +} + +void AltUniFree(struct altuni *altuni) { + struct altuni *next; + + while ( altuni ) { + next = altuni->next; + chunkfree(altuni,sizeof(struct altuni)); + altuni = next; + } +} + +void LayerDefault(Layer *layer) { + memset(layer,0,sizeof(Layer)); +} + +SplineChar *SplineCharCreate(int layer_cnt) { + SplineChar *sc = chunkalloc(sizeof(SplineChar)); + int i; + + sc->color = COLOR_DEFAULT; + sc->orig_pos = 0xffff; + sc->unicodeenc = -1; + sc->layer_cnt = layer_cnt; + sc->layers = gcalloc(layer_cnt,sizeof(Layer)); + for ( i=0; ilayers[i]); + sc->tex_height = sc->tex_depth = sc->italic_correction = sc->top_accent_horiz = + TEX_UNDEF; +return( sc ); +} + +SplineChar *SFSplineCharCreate(SplineFont *sf) { + SplineChar *sc = SplineCharCreate(sf->layer_cnt); + int i; + + for ( i=0; ilayer_cnt; ++i ) { + sc->layers[i].background = sf->layers[i].background; + sc->layers[i].order2 = sf->layers[i].order2; + } + sc->parent = sf; +return( sc ); +} + +void GlyphVariantsFree(struct glyphvariants *gv) { + int i; + + if ( gv==NULL ) +return; + free(gv->variants); + for ( i=0; ipart_cnt; ++i ) + free( gv->parts[i].component ); + free(gv->parts); + chunkfree(gv,sizeof(*gv)); +} + +struct mathkern *MathKernCopy(struct mathkern *mk) { + int i,j; + struct mathkern *mknew; + + if ( mk==NULL ) +return( NULL ); + mknew = chunkalloc(sizeof(*mknew)); + for ( i=0; i<4; ++i ) { + struct mathkernvertex *mkv = &(&mk->top_right)[i]; + struct mathkernvertex *mknewv = &(&mknew->top_right)[i]; + mknewv->cnt = mkv->cnt; + if ( mknewv->cnt!=0 ) { + mknewv->mkd = gcalloc(mkv->cnt,sizeof(struct mathkerndata)); + for ( j=0; jcnt; ++j ) { + mknewv->mkd[j].height = mkv->mkd[j].height; + mknewv->mkd[j].kern = mkv->mkd[j].kern; + } + } + } +return( mknew ); +} + +void MathKernVContentsFree(struct mathkernvertex *mk) { + free(mk->mkd); +} + +void MathKernFree(struct mathkern *mk) { + int i; + + if ( mk==NULL ) +return; + for ( i=0; i<4; ++i ) + MathKernVContentsFree( &(&mk->top_right)[i] ); + chunkfree(mk,sizeof(*mk)); +} + +void SplineCharListsFree(struct splinecharlist *dlist) { + struct splinecharlist *dnext; + for ( ; dlist!=NULL; dlist = dnext ) { + dnext = dlist->next; + chunkfree(dlist,sizeof(struct splinecharlist)); + } +} + +void LayerFreeContents(SplineChar *sc,int layer) { + SplinePointListsFree(sc->layers[layer].splines); + RefCharsFree(sc->layers[layer].refs); + ImageListsFree(sc->layers[layer].images); + /* image garbage collection????!!!! */ + UndoesFree(sc->layers[layer].undoes); + UndoesFree(sc->layers[layer].redoes); +} + +void SplineCharFreeContents(SplineChar *sc) { + int i; + + if ( sc==NULL ) +return; + free(sc->name); + free(sc->comment); + for ( i=0; ilayer_cnt; ++i ) + LayerFreeContents(sc,i); + StemInfosFree(sc->hstem); + StemInfosFree(sc->vstem); + DStemInfosFree(sc->dstem); + MinimumDistancesFree(sc->md); + KernPairsFree(sc->kerns); + KernPairsFree(sc->vkerns); + AnchorPointsFree(sc->anchor); + SplineCharListsFree(sc->dependents); + PSTFree(sc->possub); + free(sc->ttf_instrs); + free(sc->countermasks); + free(sc->layers); + AltUniFree(sc->altuni); + GlyphVariantsFree(sc->horiz_variants); + GlyphVariantsFree(sc->vert_variants); + MathKernFree(sc->mathkern); +#if defined(_NO_PYTHON) + free( sc->python_persistent ); /* It's a string of pickled data which we leave as a string */ +#else + PyFF_FreeSC(sc); +#endif +} + +void SplineCharFree(SplineChar *sc) { + + if ( sc==NULL ) +return; + SplineCharFreeContents(sc); + chunkfree(sc,sizeof(SplineChar)); +} + +void AnchorClassesFree(AnchorClass *an) { + AnchorClass *anext; + for ( ; an!=NULL; an = anext ) { + anext = an->next; + free(an->name); + chunkfree(an,sizeof(AnchorClass)); + } +} + +void TtfTablesFree(struct ttf_table *tab) { + struct ttf_table *next; + + for ( ; tab!=NULL; tab = next ) { + next = tab->next; + free(tab->data); + chunkfree(tab,sizeof(struct ttf_table)); + } +} + +void ScriptLangListFree(struct scriptlanglist *sl) { + struct scriptlanglist *next; + + while ( sl!=NULL ) { + next = sl->next; + free(sl->morelangs); + chunkfree(sl,sizeof(*sl)); + sl = next; + } +} + +void FeatureScriptLangListFree(FeatureScriptLangList *fl) { + FeatureScriptLangList *next; + + while ( fl!=NULL ) { + next = fl->next; + ScriptLangListFree(fl->scripts); + chunkfree(fl,sizeof(*fl)); + fl = next; + } +} + +void OTLookupFree(OTLookup *lookup) { + struct lookup_subtable *st, *stnext; + + free(lookup->lookup_name); + FeatureScriptLangListFree(lookup->features); + for ( st=lookup->subtables; st!=NULL; st=stnext ) { + stnext = st->next; + free(st->subtable_name); + free(st->suffix); + chunkfree(st,sizeof(struct lookup_subtable)); + } + chunkfree( lookup,sizeof(OTLookup) ); +} + +void OTLookupListFree(OTLookup *lookup ) { + OTLookup *next; + + for ( ; lookup!=NULL; lookup = next ) { + next = lookup->next; + OTLookupFree(lookup); + } +} + +KernClass *KernClassCopy(KernClass *kc) { + KernClass *new; + int i; + + if ( kc==NULL ) +return( NULL ); + new = chunkalloc(sizeof(KernClass)); + *new = *kc; + new->firsts = galloc(new->first_cnt*sizeof(char *)); + new->seconds = galloc(new->second_cnt*sizeof(char *)); + new->offsets = galloc(new->first_cnt*new->second_cnt*sizeof(int16)); + memcpy(new->offsets,kc->offsets, new->first_cnt*new->second_cnt*sizeof(int16)); + for ( i=0; ifirst_cnt; ++i ) + new->firsts[i] = copy(kc->firsts[i]); + for ( i=0; isecond_cnt; ++i ) + new->seconds[i] = copy(kc->seconds[i]); + new->next = NULL; +return( new ); +} + +void KernClassFreeContents(KernClass *kc) { + int i; + + for ( i=1; ifirst_cnt; ++i ) + free(kc->firsts[i]); + for ( i=1; isecond_cnt; ++i ) + free(kc->seconds[i]); + free(kc->firsts); + free(kc->seconds); + free(kc->offsets); +} + +void KernClassListFree(KernClass *kc) { + KernClass *n; + + while ( kc ) { + KernClassFreeContents(kc); + n = kc->next; + chunkfree(kc,sizeof(KernClass)); + kc = n; + } +} + +void MacNameListFree(struct macname *mn) { + struct macname *next; + + while ( mn!=NULL ) { + next = mn->next; + free(mn->name); + chunkfree(mn,sizeof(struct macname)); + mn = next; + } +} + +void MacSettingListFree(struct macsetting *ms) { + struct macsetting *next; + + while ( ms!=NULL ) { + next = ms->next; + MacNameListFree(ms->setname); + chunkfree(ms,sizeof(struct macsetting)); + ms = next; + } +} + +void MacFeatListFree(MacFeat *mf) { + MacFeat *next; + + while ( mf!=NULL ) { + next = mf->next; + MacNameListFree(mf->featname); + MacSettingListFree(mf->settings); + chunkfree(mf,sizeof(MacFeat)); + mf = next; + } +} + +void ASMFree(ASM *sm) { + ASM *next; + int i; + + while ( sm!=NULL ) { + next = sm->next; + if ( sm->type==asm_insert ) { + for ( i=0; iclass_cnt*sm->state_cnt; ++i ) { + free( sm->state[i].u.insert.mark_ins ); + free( sm->state[i].u.insert.cur_ins ); + } + } else if ( sm->type==asm_kern ) { + for ( i=0; iclass_cnt*sm->state_cnt; ++i ) { + free( sm->state[i].u.kern.kerns ); + } + } + for ( i=4; iclass_cnt; ++i ) + free(sm->classes[i]); + free(sm->state); + free(sm->classes); + chunkfree(sm,sizeof(ASM)); + sm = next; + } +} + +void OtfNameListFree(struct otfname *on) { + struct otfname *on_next; + + for ( ; on!=NULL; on = on_next ) { + on_next = on->next; + free(on->name); + chunkfree(on,sizeof(*on)); + } +} + +EncMap *EncMapNew(int enccount,int backmax,Encoding *enc) { + EncMap *map = chunkalloc(sizeof(EncMap)); + + map->enccount = map->encmax = enccount; + map->backmax = backmax; + map->map = galloc(enccount*sizeof(int)); + memset(map->map,-1,enccount*sizeof(int)); + map->backmap = galloc(backmax*sizeof(int)); + memset(map->backmap,-1,backmax*sizeof(int)); + map->enc = enc; +return(map); +} + +EncMap *EncMap1to1(int enccount) { + EncMap *map = chunkalloc(sizeof(EncMap)); + /* Used for CID fonts where CID is same as orig_pos */ + int i; + + map->enccount = map->encmax = map->backmax = enccount; + map->map = galloc(enccount*sizeof(int)); + map->backmap = galloc(enccount*sizeof(int)); + for ( i=0; imap[i] = map->backmap[i] = i; + map->enc = &custom; +return(map); +} + +static void EncodingFree(Encoding *enc) { + int i; + + if ( enc==NULL ) +return; + free(enc->enc_name); + free(enc->unicode); + if ( enc->psnames!=NULL ) { + for ( i=0; ichar_cnt; ++i ) + free(enc->psnames[i]); + free(enc->psnames); + } + free(enc); +} + +void EncMapFree(EncMap *map) { + if ( map==NULL ) +return; + + if ( map->enc->is_temporary ) + EncodingFree(map->enc); + free(map->map); + free(map->backmap); + free(map->remap); + chunkfree(map,sizeof(EncMap)); +} + +EncMap *EncMapCopy(EncMap *map) { + EncMap *new; + + new = chunkalloc(sizeof(EncMap)); + *new = *map; + new->map = galloc(new->encmax*sizeof(int)); + new->backmap = galloc(new->backmax*sizeof(int)); + memcpy(new->map,map->map,new->enccount*sizeof(int)); + memcpy(new->backmap,map->backmap,new->backmax*sizeof(int)); + if ( map->remap ) { + int n; + for ( n=0; map->remap[n].infont!=-1; ++n ); + new->remap = galloc(n*sizeof(struct remap)); + memcpy(new->remap,map->remap,n*sizeof(struct remap)); + } +return( new ); +} + +void MarkClassFree(int cnt,char **classes,char **names) { + int i; + + for ( i=1; inext ) { + cur = chunkalloc(sizeof(struct baselangextent)); + *cur = *extent; + cur->features = BaseLangCopy(cur->features); + if ( head==NULL ) + head = cur; + else + last->next = cur; + last = cur; + } +return( head ); +} + +void BaseLangFree(struct baselangextent *extent) { + struct baselangextent *next; + + while ( extent!=NULL ) { + next = extent->next; + BaseLangFree(extent->features); + chunkfree(extent,sizeof(struct baselangextent)); + extent = next; + } +} + +void BaseScriptFree(struct basescript *bs) { + struct basescript *next; + + while ( bs!=NULL ) { + next = bs->next; + free(bs->baseline_pos); + BaseLangFree(bs->langs); + chunkfree(bs,sizeof(struct basescript)); + bs = next; + } +} + +void BaseFree(struct Base *base) { + if ( base==NULL ) +return; + + free(base->baseline_tags); + BaseScriptFree(base->scripts); + chunkfree(base,sizeof(struct Base)); +} + +void SplineFontFree(SplineFont *sf) { + int i; + + if ( sf==NULL ) +return; + if ( sf->mm!=NULL ) { + MMSetFree(sf->mm); +return; + } + for ( i=0; iglyphcnt; ++i ) if ( sf->glyphs[i]!=NULL ) + SplineCharFree(sf->glyphs[i]); + free(sf->glyphs); + free(sf->fontname); + free(sf->fullname); + free(sf->familyname); + free(sf->weight); + free(sf->copyright); + free(sf->comments); + free(sf->filename); + free(sf->origname); + free(sf->autosavename); + free(sf->version); + free(sf->xuid); + free(sf->cidregistry); + free(sf->ordering); + MacFeatListFree(sf->features); + /* We don't free the EncMap. That field is only a temporary pointer. Let the FontViewBase free it, that's where it really lives */ + SplinePointListsFree(sf->grid.splines); + AnchorClassesFree(sf->anchor); + TtfTablesFree(sf->ttf_tables); + TtfTablesFree(sf->ttf_tab_saved); + UndoesFree(sf->grid.undoes); + UndoesFree(sf->grid.redoes); + PSDictFree(sf->private); + TTFLangNamesFree(sf->names); + for ( i=0; isubfontcnt; ++i ) + SplineFontFree(sf->subfonts[i]); + free(sf->subfonts); + GlyphHashFree(sf); + OTLookupListFree(sf->gpos_lookups); + OTLookupListFree(sf->gsub_lookups); + KernClassListFree(sf->kerns); + KernClassListFree(sf->vkerns); + FPSTFree(sf->possub); + ASMFree(sf->sm); + OtfNameListFree(sf->fontstyle_name); + MarkClassFree(sf->mark_class_cnt,sf->mark_classes,sf->mark_class_names); + free( sf->gasp ); +#if defined(_NO_PYTHON) + free( sf->python_persistent ); /* It's a string of pickled data which we leave as a string */ +#else + PyFF_FreeSF(sf); +#endif + BaseFree(sf->horiz_base); + BaseFree(sf->vert_base); + free(sf); +} + +void MMSetFreeContents(MMSet *mm) { + int i; + + free(mm->instances); + + free(mm->positions); + free(mm->defweights); + + for ( i=0; iaxis_count; ++i ) { + free(mm->axes[i]); + free(mm->axismaps[i].blends); + free(mm->axismaps[i].designs); + MacNameListFree(mm->axismaps[i].axisnames); + } + free(mm->axismaps); + free(mm->cdv); + free(mm->ndv); + for ( i=0; inamed_instance_count; ++i ) { + free(mm->named_instances[i].coords); + MacNameListFree(mm->named_instances[i].names); + } + free(mm->named_instances); +} + +void MMSetFree(MMSet *mm) { + int i; + + for ( i=0; iinstance_count; ++i ) { + mm->instances[i]->mm = NULL; + mm->instances[i]->map = NULL; + SplineFontFree(mm->instances[i]); + } + mm->normal->mm = NULL; + SplineFontFree(mm->normal); /* EncMap gets freed here */ + MMSetFreeContents(mm); + + chunkfree(mm,sizeof(*mm)); +} + +static int SplineRemoveAnnoyingExtrema1(Spline *s,int which,double err_sq) { + /* Remove extrema which are very close to one of the spline end-points */ + /* and which are in the oposite direction (along the normal of the */ + /* close end-point's cp) from the other end-point */ + extended ts[2], t1, t2; + bigreal df, dt; + bigreal dp, d_o; + int i; + BasePoint pos, norm; + SplinePoint *close, *other; + BasePoint *ccp; + bigreal c_, b_, nextcp, prevcp, prop; + int changed = false; + + SplineFindExtrema(&s->splines[which],&ts[0],&ts[1]); + + for ( i=0; i<2; ++i ) if ( ts[i]!=-1 && ts[i]!=0 && ts[i]!=1 ) { + pos.x = ((s->splines[0].a*ts[i]+s->splines[0].b)*ts[i]+s->splines[0].c)*ts[i]+s->splines[0].d; + pos.y = ((s->splines[1].a*ts[i]+s->splines[1].b)*ts[i]+s->splines[1].c)*ts[i]+s->splines[1].d; + df = (pos.x-s->from->me.x)*(pos.x-s->from->me.x) + (pos.y-s->from->me.y)*(pos.y-s->from->me.y); + dt = (pos.x-s->to->me.x)*(pos.x-s->to->me.x) + (pos.y-s->to->me.y)*(pos.y-s->to->me.y); + if ( df
from; + ccp = &s->from->nextcp; + other = s->to; + } else if ( dtto; + ccp = &s->to->prevcp; + other = s->from; + } else + continue; + if ( ccp->x==close->me.x && ccp->y==close->me.y ) + continue; + + norm.x = (ccp->y-close->me.y); + norm.y = -(ccp->x-close->me.x); + dp = (pos.x-close->me.x)*norm.x + (pos.y-close->me.y)*norm.y; + d_o = (other->me.x-close->me.x)*norm.x + (other->me.y-close->me.y)*norm.y; + if ( dp!=0 && dp*d_o>=0 ) + continue; + + _SplineFindExtrema(&s->splines[which],&t1,&t2); + if ( t1==ts[i] ) { + if ( close==s->from ) t1=0; + else t1 = 1; + } else if ( t2==ts[i] ) { + if ( close==s->from ) t2=0; + else t2 = 1; + } else + continue; + + if ( t2==-1 ) /* quadratic */ + continue; /* Can't happen in a quadratic */ + + /* The roots of the "slope" quadratic were t1, t2. We have shifted one*/ + /* root so that that extremum is exactly on an end point */ + /* Figure out the new slope quadratic, from that what the cubic must */ + /* be, and from that what the control points must be */ + /* Quad = 3at^2 + 2bt + c */ + /* New quad = 3a * (t^2 -(t1+t2)t + t1*t2) */ + /* a' = a, b' = -(t1+t2)/6a, c' = t1*t2/3a, d' = d */ + /* nextcp = from + c'/3, prevcp = nextcp + (b' + c')/3 */ + /* Then for each cp figure what percentage of the original cp vector */ + /* (or at least this one dimension of that vector) this represents */ + /* and scale both dimens by this amount */ + b_ = -(t1+t2)*3*s->splines[which].a/2; + c_ = (t1*t2)*3*s->splines[which].a; + nextcp = (&s->from->me.x)[which] + c_/3; + prevcp = nextcp + (b_ + c_)/3; + + if ( (&s->from->nextcp.x)[which] != (&s->from->me.x)[which] ) { + prop = (c_/3) / ( (&s->from->nextcp.x)[which] - (&s->from->me.x)[which] ); + if ( prop<0 && (c_/3 < .1 && c_/3 > -.1)) + (&s->to->prevcp.x)[which] = nextcp; + else if ( prop>=0 && prop<=10 ) { + s->from->nextcp.x = s->from->me.x + prop*(s->from->nextcp.x-s->from->me.x); + s->from->nextcp.y = s->from->me.y + prop*(s->from->nextcp.y-s->from->me.y); + s->from->nonextcp = (prop == 0); + } + } + + if ( (&s->to->prevcp.x)[which] != (&s->to->me.x)[which] ) { + prop = ( prevcp - (&s->to->me.x)[which]) / + ( (&s->to->prevcp.x)[which] - (&s->to->me.x)[which] ); + if ( prop<0 && (prevcp - (&s->to->me.x)[which] < .1 && prevcp - (&s->to->me.x)[which] > -.1)) + (&s->to->prevcp.x)[which] = prevcp; + else if ( prop>=0 && prop<=10 ) { + s->to->prevcp.x = s->to->me.x + prop*(s->to->prevcp.x-s->to->me.x); + s->to->prevcp.y = s->to->me.y + prop*(s->to->prevcp.y-s->to->me.y); + s->to->noprevcp = (prop == 0); + } + } + SplineRefigure(s); + changed = true; + } +return( changed ); +} + +static int SplineRemoveAnnoyingExtrema(Spline *s,double err_sq) { + int changed; + + changed = SplineRemoveAnnoyingExtrema1(s,0,err_sq); + if ( SplineRemoveAnnoyingExtrema1(s,1,err_sq) ) + changed = true; +return( changed ); +} + +int SplineSetsRemoveAnnoyingExtrema(SplineSet *ss,double err) { + int changed = false; + double err_sq = err*err; + Spline *s, *first; + + + while ( ss!=NULL ) { + first = NULL; + for ( s = ss->first->next; s!=NULL && s!=first; s = s->to->next ) { + if ( first == NULL ) first = s; + if ( SplineRemoveAnnoyingExtrema(s,err_sq)) + changed = true; + } + ss = ss->next; + } +return( changed ); +} + +SplinePoint *SplineBisect(Spline *spline, extended t) { + Spline1 xstart, xend; + Spline1 ystart, yend; + Spline *spline1, *spline2; + SplinePoint *mid; + SplinePoint *old0, *old1; + Spline1D *xsp = &spline->splines[0], *ysp = &spline->splines[1]; + int order2 = spline->order2; + +#ifdef DEBUG + if ( t<=1e-3 || t>=1-1e-3 ) + IError("Bisection to create a zero length spline"); +#endif + xstart.s0 = xsp->d; ystart.s0 = ysp->d; + xend.s1 = (extended) xsp->a+xsp->b+xsp->c+xsp->d; + yend.s1 = (extended) ysp->a+ysp->b+ysp->c+ysp->d; + xstart.s1 = xend.s0 = ((xsp->a*t+xsp->b)*t+xsp->c)*t + xsp->d; + ystart.s1 = yend.s0 = ((ysp->a*t+ysp->b)*t+ysp->c)*t + ysp->d; + FigureSpline1(&xstart,0,t,xsp); + FigureSpline1(&xend,t,1,xsp); + FigureSpline1(&ystart,0,t,ysp); + FigureSpline1(¥d,t,1,ysp); + + mid = chunkalloc(sizeof(SplinePoint)); + mid->me.x = xstart.s1; mid->me.y = ystart.s1; + if ( order2 ) { + mid->nextcp.x = xend.sp.d + xend.sp.c/2; + mid->nextcp.y = yend.sp.d + yend.sp.c/2; + mid->prevcp.x = xstart.sp.d + xstart.sp.c/2; + mid->prevcp.y = ystart.sp.d + ystart.sp.c/2; + } else { + mid->nextcp.x = xend.c0; mid->nextcp.y = yend.c0; + mid->prevcp.x = xstart.c1; mid->prevcp.y = ystart.c1; + } + if ( mid->me.x==mid->nextcp.x && mid->me.y==mid->nextcp.y ) + mid->nonextcp = true; + if ( mid->me.x==mid->prevcp.x && mid->me.y==mid->prevcp.y ) + mid->noprevcp = true; + + old0 = spline->from; old1 = spline->to; + if ( order2 ) { + old0->nextcp = mid->prevcp; + old1->prevcp = mid->nextcp; + } else { + old0->nextcp.x = xstart.c0; old0->nextcp.y = ystart.c0; + old1->prevcp.x = xend.c1; old1->prevcp.y = yend.c1; + } + old0->nonextcp = (old0->nextcp.x==old0->me.x && old0->nextcp.y==old0->me.y); + old1->noprevcp = (old1->prevcp.x==old1->me.x && old1->prevcp.y==old1->me.y); + old0->nextcpdef = false; + old1->prevcpdef = false; + SplineFree(spline); + + spline1 = chunkalloc(sizeof(Spline)); + spline1->splines[0] = xstart.sp; spline1->splines[1] = ystart.sp; + spline1->from = old0; + spline1->to = mid; + spline1->order2 = order2; + old0->next = spline1; + mid->prev = spline1; + if ( SplineIsLinear(spline1)) { + spline1->islinear = spline1->from->nonextcp = spline1->to->noprevcp = true; + spline1->from->nextcp = spline1->from->me; + spline1->to->prevcp = spline1->to->me; + } + SplineRefigure(spline1); + + spline2 = chunkalloc(sizeof(Spline)); + spline2->splines[0] = xend.sp; spline2->splines[1] = xend.sp; + spline2->from = mid; + spline2->to = old1; + spline2->order2 = order2; + mid->next = spline2; + old1->prev = spline2; + if ( SplineIsLinear(spline2)) { + spline2->islinear = spline2->from->nonextcp = spline2->to->noprevcp = true; + spline2->from->nextcp = spline2->from->me; + spline2->to->prevcp = spline2->to->me; + } + SplineRefigure(spline2); +return( mid ); +} + diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/splineutil2.c b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/splineutil2.c new file mode 100644 index 00000000000..43626aec6dc --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/splineutil2.c @@ -0,0 +1,2329 @@ +/* Copyright (C) 2000-2008 by George Williams */ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "pfaedit.h" +#include +#include "ustring.h" +#include "chardata.h" +#include +#include +#include +#include "views.h" /* For SCCharChangedUpdate */ + +int new_em_size = 1000; +int new_fonts_are_order2 = false; +int loaded_fonts_same_as_new = false; +int default_fv_row_count = 4; +int default_fv_col_count = 16; +int default_fv_font_size = 24; +int default_fv_antialias=true; +int default_fv_bbsized=true; +int snaptoint=0; + +/*#define DEBUG 1*/ + +int RealNear(real a,real b) { + real d; + +#if 0 /* def FONTFORGE_CONFIG_USE_DOUBLE*/ + if ( a==0 ) +return( b>-1e-8 && b<1e-8 ); + if ( b==0 ) +return( a>-1e-8 && a<1e-8 ); + + d = a/(1024*1024.); + if ( d<0 ) d = -d; +return( b>a-d && b-1e-5 && b<1e-5 ); + if ( b==0 ) +return( a>-1e-5 && a<1e-5 ); + + d = a/(1024*64.); + if ( d<0 ) d = -d; +return( b>a-d && b-.001 ) +return( true ); +return( false ); +} + +int RealApprox(real a,real b) { + + if ( a==0 ) { + if ( b<.0001 && b>-.0001 ) +return( true ); + } else if ( b==0 ) { + if ( a<.0001 && a>-.0001 ) +return( true ); + } else { + a /= b; + if ( a>=.95 && a<=1.05 ) +return( true ); + } +return( false ); +} + +int RealWithin(real a,real b,real fudge) { + +return( b>=a-fudge && b<=a+fudge ); +} + +int RealRatio(real a,real b,real fudge) { + + if ( b==0 ) +return( RealWithin(a,b,fudge)); + +return( RealWithin(a/b,1.0,fudge)); +} + +static int MinMaxWithin(Spline *spline) { + extended dx, dy; + int which; + extended t1, t2; + extended w; + /* We know that this "spline" is basically one dimensional. As long as its*/ + /* extrema are between the start and end points on that line then we can */ + /* treat it as a line. If the extrema are way outside the line segment */ + /* then it's a line that backtracks on itself */ + + if ( (dx = spline->to->me.x - spline->from->me.x)<0 ) dx = -dx; + if ( (dy = spline->to->me.y - spline->from->me.y)<0 ) dy = -dy; + which = dxsplines[which],&t1,&t2); + if ( t1==-1 ) +return( true ); + w = ((spline->splines[which].a*t1 + spline->splines[which].b)*t1 + + spline->splines[which].c)*t1 + spline->splines[which].d; + if ( RealNear(w, (&spline->to->me.x)[which]) || RealNear(w, (&spline->from->me.x)[which]) ) + /* Close enough */; + else if ( (w<(&spline->to->me.x)[which] && w<(&spline->from->me.x)[which]) || + (w>(&spline->to->me.x)[which] && w>(&spline->from->me.x)[which]) ) +return( false ); /* Outside */ + + w = ((spline->splines[which].a*t2 + spline->splines[which].b)*t2 + + spline->splines[which].c)*t2 + spline->splines[which].d; + if ( RealNear(w, (&spline->to->me.x)[which]) || RealNear(w, (&spline->from->me.x)[which]) ) + /* Close enough */; + else if ( (w<(&spline->to->me.x)[which] && w<(&spline->from->me.x)[which]) || + (w>(&spline->to->me.x)[which] && w>(&spline->from->me.x)[which]) ) +return( false ); /* Outside */ + +return( true ); +} + +int SplineIsLinear(Spline *spline) { + double t1,t2, t3,t4; + int ret; + + if ( spline->knownlinear ) +return( true ); + if ( spline->knowncurved ) +return( false ); + + if ( spline->splines[0].a==0 && spline->splines[0].b==0 && + spline->splines[1].a==0 && spline->splines[1].b==0 ) +return( true ); + + /* Something is linear if the control points lie on the line between the */ + /* two base points */ + + /* Vertical lines */ + if ( RealNear(spline->from->me.x,spline->to->me.x) ) { + ret = RealNear(spline->from->me.x,spline->from->nextcp.x) && + RealNear(spline->from->me.x,spline->to->prevcp.x); + if ( ! ((spline->from->nextcp.y >= spline->from->me.y && + spline->from->nextcp.y <= spline->to->me.y && + spline->to->prevcp.y >= spline->from->me.y && + spline->to->prevcp.y <= spline->to->me.y ) || + (spline->from->nextcp.y <= spline->from->me.y && + spline->from->nextcp.y >= spline->to->me.y && + spline->to->prevcp.y <= spline->from->me.y && + spline->to->prevcp.y >= spline->to->me.y )) ) + ret = MinMaxWithin(spline); + /* Horizontal lines */ + } else if ( RealNear(spline->from->me.y,spline->to->me.y) ) { + ret = RealNear(spline->from->me.y,spline->from->nextcp.y) && + RealNear(spline->from->me.y,spline->to->prevcp.y); + if ( ! ((spline->from->nextcp.x >= spline->from->me.x && + spline->from->nextcp.x <= spline->to->me.x && + spline->to->prevcp.x >= spline->from->me.x && + spline->to->prevcp.x <= spline->to->me.x) || + (spline->from->nextcp.x <= spline->from->me.x && + spline->from->nextcp.x >= spline->to->me.x && + spline->to->prevcp.x <= spline->from->me.x && + spline->to->prevcp.x >= spline->to->me.x)) ) + ret = MinMaxWithin(spline); + } else { + ret = true; + t1 = (spline->from->nextcp.y-spline->from->me.y)/(spline->to->me.y-spline->from->me.y); + t2 = (spline->from->nextcp.x-spline->from->me.x)/(spline->to->me.x-spline->from->me.x); + t3 = (spline->to->me.y-spline->to->prevcp.y)/(spline->to->me.y-spline->from->me.y); + t4 = (spline->to->me.x-spline->to->prevcp.x)/(spline->to->me.x-spline->from->me.x); + ret = (RealApprox(t1,t2) || (RealApprox(t1,0) && RealApprox(t2,0))) && + (RealApprox(t3,t4) || (RealApprox(t3,0) && RealApprox(t4,0))); + if ( ret ) { + if ( t1<0 || t2<0 || t3<0 || t4<0 || + t1>1 || t2>1 || t3>1 || t4>1 ) + ret = MinMaxWithin(spline); + } + } + spline->knowncurved = !ret; + spline->knownlinear = ret; + if ( ret ) { + /* A few places that if the spline is knownlinear then its splines[?] */ + /* are linear. So give the linear version and not that suggested by */ + /* the control points */ + spline->splines[0].a = spline->splines[0].b = 0; + spline->splines[0].d = spline->from->me.x; + spline->splines[0].c = spline->to->me.x-spline->from->me.x; + spline->splines[1].a = spline->splines[1].b = 0; + spline->splines[1].d = spline->from->me.y; + spline->splines[1].c = spline->to->me.y-spline->from->me.y; + } +return( ret ); +} + +int SplineIsLinearMake(Spline *spline) { + + if ( spline->islinear ) +return( true ); + if ( SplineIsLinear(spline)) { + spline->islinear = spline->from->nonextcp = spline->to->noprevcp = true; + spline->from->nextcp = spline->from->me; + if ( spline->from->nonextcp && spline->from->noprevcp ) + spline->from->pointtype = pt_corner; + else if ( spline->from->pointtype == pt_curve || spline->from->pointtype == pt_hvcurve ) + spline->from->pointtype = pt_tangent; + spline->to->prevcp = spline->to->me; + if ( spline->to->nonextcp && spline->to->noprevcp ) + spline->to->pointtype = pt_corner; + else if ( spline->to->pointtype == pt_curve || spline->to->pointtype == pt_hvcurve ) + spline->to->pointtype = pt_tangent; + SplineRefigure(spline); + } +return( spline->islinear ); +} + +static Spline *IsLinearApprox(SplinePoint *from, SplinePoint *to, + TPoint *mid, int cnt, int order2) { + double vx, vy, slope; + int i; + + vx = to->me.x-from->me.x; vy = to->me.y-from->me.y; + if ( vx==0 && vy==0 ) { + for ( i=0; ime.x || mid[i].y != from->me.y ) +return( NULL ); + } else if ( fabs(vx)>fabs(vy) ) { + slope = vy/vx; + for ( i=0; ime.y+slope*(mid[i].x-from->me.x),.7) ) +return( NULL ); + } else { + slope = vx/vy; + for ( i=0; ime.x+slope*(mid[i].y-from->me.y),.7) ) +return( NULL ); + } + from->nonextcp = to->noprevcp = true; +return( SplineMake(from,to,order2) ); +} + +/* Least squares tells us that: + | S(xi*ti^3) | | S(ti^6) S(ti^5) S(ti^4) S(ti^3) | | a | + | S(xi*ti^2) | = | S(ti^5) S(ti^4) S(ti^3) S(ti^2) | * | b | + | S(xi*ti) | | S(ti^4) S(ti^3) S(ti^2) S(ti) | | c | + | S(xi) | | S(ti^3) S(ti^2) S(ti) n | | d | + and the definition of a spline tells us: + | x1 | = | 1 1 1 1 | * (a b c d) + | x0 | = | 0 0 0 1 | * (a b c d) +So we're a bit over specified. Let's use the last two lines of least squares +and the 2 from the spline defn. So d==x0. Now we've got three unknowns +and only three equations... + +For order2 splines we've got + | S(xi*ti^2) | | S(ti^4) S(ti^3) S(ti^2) | | b | + | S(xi*ti) | = | S(ti^3) S(ti^2) S(ti) | * | c | + | S(xi) | | S(ti^2) S(ti) n | | d | + and the definition of a spline tells us: + | x1 | = | 1 1 1 | * (b c d) + | x0 | = | 0 0 1 | * (b c d) +=> + d = x0 + b+c = x1-x0 + S(ti^2)*b + S(ti)*c = S(xi)-n*x0 + S(ti^2)*b + S(ti)*(x1-x0-b) = S(xi)-n*x0 + [ S(ti^2)-S(ti) ]*b = S(xi)-S(ti)*(x1-x0) - n*x0 +*/ +static int _ApproximateSplineFromPoints(SplinePoint *from, SplinePoint *to, + TPoint *mid, int cnt, BasePoint *nextcp, BasePoint *prevcp, + int order2) { + double tt, ttn; + int i, j, ret; + double vx[3], vy[3], m[3][3]; + double ts[7], xts[4], yts[4]; + BasePoint nres, pres; + int nrescnt=0, prescnt=0; + double nmin, nmax, pmin, pmax, test, ptest; + double bx, by, cx, cy; + + memset(&nres,0,sizeof(nres)); memset(&pres,0,sizeof(pres)); + + /* Add the initial and end points */ + ts[0] = 2; for ( i=1; i<7; ++i ) ts[i] = 1; + xts[0] = from->me.x+to->me.x; yts[0] = from->me.y+to->me.y; + xts[3] = xts[2] = xts[1] = to->me.x; yts[3] = yts[2] = yts[1] = to->me.y; + nmin = pmin = 0; nmax = pmax = (to->me.x-from->me.x)*(to->me.x-from->me.x)+(to->me.y-from->me.y)*(to->me.y-from->me.y); + for ( i=0; ime.x)*(to->me.x-from->me.x) + (mid[i].y-from->me.y)*(to->me.y-from->me.y); + if ( testnmax ) nmax=test; + test = (mid[i].x-to->me.x)*(from->me.x-to->me.x) + (mid[i].y-to->me.y)*(from->me.y-to->me.y); + if ( testpmax ) pmax=test; + } + pmin *= 1.2; pmax *= 1.2; nmin *= 1.2; nmax *= 1.2; + + for ( j=0; j<3; ++j ) { + if ( order2 ) { + if ( RealNear(ts[j+2],ts[j+1]) ) + continue; + /* This produces really bad results!!!! But I don't see what I can do to improve it */ + bx = (xts[j]-ts[j+1]*(to->me.x-from->me.x) - ts[j]*from->me.x) / (ts[j+2]-ts[j+1]); + by = (yts[j]-ts[j+1]*(to->me.y-from->me.y) - ts[j]*from->me.y) / (ts[j+2]-ts[j+1]); + cx = to->me.x-from->me.x-bx; + cy = to->me.y-from->me.y-by; + + nextcp->x = from->me.x + cx/2; + nextcp->y = from->me.y + cy/2; + *prevcp = *nextcp; + } else { + vx[0] = xts[j+1]-ts[j+1]*from->me.x; + vx[1] = xts[j]-ts[j]*from->me.x; + vx[2] = to->me.x-from->me.x; /* always use the defn of spline */ + + vy[0] = yts[j+1]-ts[j+1]*from->me.y; + vy[1] = yts[j]-ts[j]*from->me.y; + vy[2] = to->me.y-from->me.y; + + m[0][0] = ts[j+4]; m[0][1] = ts[j+3]; m[0][2] = ts[j+2]; + m[1][0] = ts[j+3]; m[1][1] = ts[j+2]; m[1][2] = ts[j+1]; + m[2][0] = 1; m[2][1] = 1; m[2][2] = 1; + + /* Remove a terms from rows 0 and 1 */ + vx[0] -= ts[j+4]*vx[2]; + vy[0] -= ts[j+4]*vy[2]; + m[0][0] = 0; m[0][1] -= ts[j+4]; m[0][2] -= ts[j+4]; + vx[1] -= ts[j+3]*vx[2]; + vy[1] -= ts[j+3]*vy[2]; + m[1][0] = 0; m[1][1] -= ts[j+3]; m[1][2] -= ts[j+3]; + + if ( fabs(m[1][1])x = from->me.x + vx[0]/3; + nextcp->y = from->me.y + vy[0]/3; + prevcp->x = nextcp->x + (vx[0]+vx[1])/3; + prevcp->y = nextcp->y + (vy[0]+vy[1])/3; + } + + test = (nextcp->x-from->me.x)*(to->me.x-from->me.x) + + (nextcp->y-from->me.y)*(to->me.y-from->me.y); + ptest = (prevcp->x-to->me.x)*(from->me.x-to->me.x) + + (prevcp->y-to->me.y)*(from->me.y-to->me.y); + if ( order2 && + (testnmax || ptestpmax)) + continue; + if ( test>=nmin && test<=nmax ) { + nres.x += nextcp->x; nres.y += nextcp->y; + ++nrescnt; + } + if ( test>=pmin && test<=pmax ) { + pres.x += prevcp->x; pres.y += prevcp->y; + ++prescnt; + } + if ( nrescnt==1 && prescnt==1 ) + break; + } + + ret = 0; + if ( nrescnt>0 ) { + ret |= 1; + nextcp->x = nres.x/nrescnt; + nextcp->y = nres.y/nrescnt; + } else + *nextcp = from->nextcp; + if ( prescnt>0 ) { + ret |= 2; + prevcp->x = pres.x/prescnt; + prevcp->y = pres.y/prescnt; + } else + *prevcp = to->prevcp; + if ( order2 && ret!=3 ) { + nextcp->x = (nextcp->x + prevcp->x)/2; + nextcp->y = (nextcp->y + prevcp->y)/2; + } + if ( order2 ) + *prevcp = *nextcp; +return( ret ); +} + +static void TestForLinear(SplinePoint *from,SplinePoint *to) { + BasePoint off, cpoff, cpoff2; + double len, co, co2; + + /* Did we make a line? */ + off.x = to->me.x-from->me.x; off.y = to->me.y-from->me.y; + len = sqrt(off.x*off.x + off.y*off.y); + if ( len!=0 ) { + off.x /= len; off.y /= len; + cpoff.x = from->nextcp.x-from->me.x; cpoff.y = from->nextcp.y-from->me.y; + len = sqrt(cpoff.x*cpoff.x + cpoff.y*cpoff.y); + if ( len!=0 ) { + cpoff.x /= len; cpoff.y /= len; + } + cpoff2.x = to->prevcp.x-from->me.x; cpoff2.y = to->prevcp.y-from->me.y; + len = sqrt(cpoff2.x*cpoff2.x + cpoff2.y*cpoff2.y); + if ( len!=0 ) { + cpoff2.x /= len; cpoff2.y /= len; + } + co = cpoff.x*off.y - cpoff.y*off.x; co2 = cpoff2.x*off.y - cpoff2.y*off.x; + if ( co<.05 && co>-.05 && co2<.05 && co2>-.05 ) { + from->nextcp = from->me; from->nonextcp = true; + to->prevcp = to->me; to->noprevcp = true; + } else { + Spline temp; + memset(&temp,0,sizeof(temp)); + temp.from = from; temp.to = to; + SplineRefigure(&temp); + if ( SplineIsLinear(&temp)) { + from->nextcp = from->me; from->nonextcp = true; + to->prevcp = to->me; to->noprevcp = true; + } + } + } +} + +/* Find a spline which best approximates the list of intermediate points we */ +/* are given. No attempt is made to fix the slopes */ +Spline *ApproximateSplineFromPoints(SplinePoint *from, SplinePoint *to, + TPoint *mid, int cnt, int order2) { + int ret; + Spline *spline; + BasePoint nextcp, prevcp; + + if ( (spline = IsLinearApprox(from,to,mid,cnt,order2))!=NULL ) +return( spline ); + + ret = _ApproximateSplineFromPoints(from,to,mid,cnt,&nextcp,&prevcp,order2); + + if ( ret&1 ) { + from->nextcp = nextcp; + from->nonextcp = false; + } else { + from->nextcp = from->me; + from->nonextcp = true; + } + if ( ret&2 ) { + to->prevcp = prevcp; + to->noprevcp = false; + } else { + to->prevcp = to->me; + to->noprevcp = true; + } + TestForLinear(from,to); + spline = SplineMake(from,to,order2); +return( spline ); +} + +static double ClosestSplineSolve(Spline1D *sp,double sought,double close_to_t) { + /* We want to find t so that spline(t) = sought */ + /* find the value which is closest to close_to_t */ + /* on error return closetot */ + Spline1D temp; + extended ts[3]; + int i; + double t, best, test; + + temp = *sp; + temp.d -= sought; + CubicSolve(&temp,ts); + best = 9e20; t= close_to_t; + for ( i=0; i<3; ++i ) if ( ts[i]!=-1 ) { + if ( (test=ts[i]-close_to_t)<0 ) test = -test; + if ( testlen the spline extends beyond its endpoints */ +}; + +static double SigmaDeltas(Spline *spline,TPoint *mid, int cnt, DBounds *b, struct dotbounds *db) { + int i, lasti; + double xdiff, ydiff, sum, temp, t, lastt; + SplinePoint *to = spline->to, *from = spline->from; + extended ts[2], x,y; + struct dotbounds db2; + double dot; + + if ( (xdiff = to->me.x-from->me.x)<0 ) xdiff = -xdiff; + if ( (ydiff = to->me.y-from->me.y)<0 ) ydiff = -ydiff; + + sum = 0; lastt = -1; lasti = -1; + for ( i=0; i2*xdiff ) { + t = ClosestSplineSolve(&spline->splines[1],mid[i].y,mid[i].t); + } else if ( xdiff>2*ydiff ) { + t = ClosestSplineSolve(&spline->splines[0],mid[i].x,mid[i].t); + } else { + t = (ClosestSplineSolve(&spline->splines[1],mid[i].y,mid[i].t) + + ClosestSplineSolve(&spline->splines[0],mid[i].x,mid[i].t))/2; + } + if ( t==lastt ) /* These last* values appear to be debugging */ + t = lastt + (mid[i].t - mid[lasti].t); + else { + lastt = t; + lasti = i; + } + temp = mid[i].x - ( ((spline->splines[0].a*t+spline->splines[0].b)*t+spline->splines[0].c)*t + spline->splines[0].d ); + sum += temp*temp; + temp = mid[i].y - ( ((spline->splines[1].a*t+spline->splines[1].b)*t+spline->splines[1].c)*t + spline->splines[1].d ); + sum += temp*temp; + } + + /* Ok, we've got distances from a set of points on the old spline to the */ + /* new one. Let's do the reverse: find the extrema of the new and see how*/ + /* close they get to the bounding box of the old */ + /* And get really unhappy if the spline extends beyond the end-points */ + db2.min = 0; db2.max = db->len; + SplineFindExtrema(&spline->splines[0],&ts[0],&ts[1]); + for ( i=0; i<2; ++i ) { + if ( ts[i]!=-1 ) { + x = ((spline->splines[0].a*ts[i]+spline->splines[0].b)*ts[i]+spline->splines[0].c)*ts[i] + spline->splines[0].d; + y = ((spline->splines[1].a*ts[i]+spline->splines[1].b)*ts[i]+spline->splines[1].c)*ts[i] + spline->splines[1].d; + if ( xminx ) + sum += (x-b->minx)*(x-b->minx); + else if ( x>b->maxx ) + sum += (x-b->maxx)*(x-b->maxx); + dot = (x-db->base.x)*db->unit.x + (y-db->base.y)*db->unit.y; + if ( dotdb2.max ) db2.max = dot; + } + } + SplineFindExtrema(&spline->splines[1],&ts[0],&ts[1]); + for ( i=0; i<2; ++i ) { + if ( ts[i]!=-1 ) { + x = ((spline->splines[0].a*ts[i]+spline->splines[0].b)*ts[i]+spline->splines[0].c)*ts[i] + spline->splines[0].d; + y = ((spline->splines[1].a*ts[i]+spline->splines[1].b)*ts[i]+spline->splines[1].c)*ts[i] + spline->splines[1].d; + if ( yminy ) + sum += (y-b->miny)*(y-b->miny); + else if ( y>b->maxy ) + sum += (y-b->maxy)*(y-b->maxy); + dot = (x-db->base.x)*db->unit.x + (y-db->base.y)*db->unit.y; + if ( dotdb2.max ) db2.max = dot; + } + } + + /* Big penalty for going beyond the range of the desired spline */ + if ( db->min==0 && db2.min<0 ) + sum += 10000 + db2.min*db2.min; + else if ( db2.minmin ) + sum += 100 + (db2.min-db->min)*(db2.min-db->min); + if ( db->max==db->len && db2.max>db->len ) + sum += 10000 + (db2.max-db->max)*(db2.max-db->max); + else if ( db2.max>db->max ) + sum += 100 + (db2.max-db->max)*(db2.max-db->max); + +return( sum ); +} + +static void ApproxBounds(DBounds *b,TPoint *mid, int cnt, struct dotbounds *db) { + int i; + double dot; + + b->minx = b->maxx = mid[0].x; + b->miny = b->maxy = mid[0].y; + db->min = 0; db->max = db->len; + for ( i=1; ib->maxx ) b->maxx = mid[i].x; + if ( mid[i].xminx ) b->minx = mid[i].x; + if ( mid[i].y>b->maxy ) b->maxy = mid[i].y; + if ( mid[i].yminy ) b->miny = mid[i].y; + dot = (mid[i].x-db->base.x)*db->unit.x + (mid[i].y-db->base.y)*db->unit.y; + if ( dotmin ) db->min = dot; + if ( dot>db->max ) db->max = dot; + } +} + +static int GoodCurve(SplinePoint *sp, int check_prev ) { + double dx, dy, lenx, leny; + + if ( sp->pointtype!=pt_curve && sp->pointtype!=pt_hvcurve ) +return( false ); + if ( check_prev ) { + dx = sp->me.x - sp->prevcp.x; + dy = sp->me.y - sp->prevcp.y; + } else { + dx = sp->me.x - sp->nextcp.x; + dy = sp->me.y - sp->nextcp.y; + } + /* If the cp is very close to the base point the point might as well be a corner */ + if ( dx<0 ) dx = -dx; + if ( dy<0 ) dy = -dy; + if ( dx+dy<1 ) +return( false ); + + if ( check_prev ) { + if ( sp->prev==NULL ) +return( true ); + lenx = sp->me.x - sp->prev->from->me.x; + leny = sp->me.y - sp->prev->from->me.y; + } else { + if ( sp->next==NULL ) +return( true ); + lenx = sp->me.x - sp->next->to->me.x; + leny = sp->me.y - sp->next->to->me.y; + } + if ( lenx<0 ) lenx = -lenx; + if ( leny<0 ) leny = -leny; + if ( 50*(dx+dy) < lenx+leny ) +return( false ); + +return( true ); +} + +#if 0 +static int totcnt_cnt, nocnt_cnt, incr_cnt, curdiff_cnt; +#endif + +/* I used to do a least squares aproach adding two more to the above set of equations */ +/* which held the slopes constant. But that didn't work very well. So instead*/ +/* Then I tried doing the approximation, and then forcing the control points */ +/* to be in line (witht the original slopes), getting a better approximation */ +/* to "t" for each data point and then calculating an error array, approximating*/ +/* it, and using that to fix up the final result */ +/* Then I tried checking various possible cp lengths in the desired directions*/ +/* finding the best one or two, and doing a 2D binary search using that as a */ +/* starting point. */ +/* And sometimes a least squares approach will give us the right answer, so */ +/* try that too. */ +/* This still isn't as good as I'd like it... But I haven't been able to */ +/* improve it further yet */ +#define TRY_CNT 2 +#define DECIMATION 5 +Spline *ApproximateSplineFromPointsSlopes(SplinePoint *from, SplinePoint *to, + TPoint *mid, int cnt, int order2) { + BasePoint tounit, fromunit, ftunit; + double flen,tlen,ftlen; + Spline *spline, temp; + BasePoint nextcp; + int bettern, betterp; + double offn, offp, incrn, incrp, trylen; + int nocnt = 0, totcnt; + double curdiff, bestdiff[TRY_CNT]; + int i,j,besti[TRY_CNT],bestj[TRY_CNT],k,l; + double fdiff, tdiff, fmax, tmax, fdotft, tdotft; + DBounds b; + struct dotbounds db; + double offn_, offp_, finaldiff; + + /* If all the selected points are at the same spot, and one of the */ + /* end-points is also at that spot, then just copy the control point */ + /* But our caller seems to have done that for us */ + + /* If the two end-points are corner points then allow the slope to vary */ + /* Or if one end-point is a tangent but the point defining the tangent's */ + /* slope is being removed then allow the slope to vary */ + /* Except if the slope is horizontal or vertical then keep it fixed */ + if ( ( !from->nonextcp && ( from->nextcp.x==from->me.x || from->nextcp.y==from->me.y)) || + (!to->noprevcp && ( to->prevcp.x==to->me.x || to->prevcp.y==to->me.y)) ) + /* Preserve the slope */; + else if ( ((from->pointtype == pt_corner && from->nonextcp) || + (from->pointtype == pt_tangent && + ((from->nonextcp && from->noprevcp) || !from->noprevcp))) && + ((to->pointtype == pt_corner && to->noprevcp) || + (to->pointtype == pt_tangent && + ((to->nonextcp && to->noprevcp) || !to->nonextcp))) ) { + from->pointtype = to->pointtype = pt_corner; +return( ApproximateSplineFromPoints(from,to,mid,cnt,order2) ); + } + + /* If we are going to honour the slopes of a quadratic spline, there is */ + /* only one possibility */ + if ( order2 ) { + if ( from->nonextcp ) + from->nextcp = from->next->to->me; + if ( to->noprevcp ) + to->prevcp = to->prev->from->me; + from->nonextcp = to->noprevcp = false; + fromunit.x = from->nextcp.x-from->me.x; fromunit.y = from->nextcp.y-from->me.y; + tounit.x = to->prevcp.x-to->me.x; tounit.y = to->prevcp.y-to->me.y; + + if ( !IntersectLines(&nextcp,&from->nextcp,&from->me,&to->prevcp,&to->me) || + (nextcp.x-from->me.x)*fromunit.x + (nextcp.y-from->me.y)*fromunit.y < 0 || + (nextcp.x-to->me.x)*tounit.x + (nextcp.y-to->me.y)*tounit.y < 0 ) { + /* If the slopes don't intersect then use a line */ + /* (or if the intersection is patently absurd) */ + from->nonextcp = to->noprevcp = true; + from->nextcp = from->me; + to->prevcp = to->me; + TestForLinear(from,to); + } else { + from->nextcp = to->prevcp = nextcp; + from->nonextcp = to->noprevcp = false; + } +return( SplineMake2(from,to)); + } + /* From here down we are only working with cubic splines */ + + if ( cnt==0 ) { + /* Just use what we've got, no data to improve it */ + /* But we do sometimes get some cps which are too big */ + double len = sqrt((to->me.x-from->me.x)*(to->me.x-from->me.x) + (to->me.y-from->me.y)*(to->me.y-from->me.y)); + if ( len==0 ) { + from->nonextcp = to->noprevcp = true; + from->nextcp = from->me; + to->prevcp = to->me; + } else { + BasePoint noff, poff; + double nlen, plen; + noff.x = from->nextcp.x-from->me.x; noff.y = from->nextcp.y-from->me.y; + poff.x = to->me.x-to->prevcp.x; poff.y = to->me.y-to->prevcp.y; + nlen = sqrt(noff.x*noff.x + noff.y+noff.y); + plen = sqrt(poff.x*poff.x + poff.y+poff.y); + if ( nlen>len/3 ) { + noff.x *= len/3/nlen; noff.y *= len/3/nlen; + from->nextcp.x = from->me.x + noff.x; + from->nextcp.y = from->me.y + noff.y; + } + if ( plen>len/3 ) { + poff.x *= len/3/plen; poff.y *= len/3/plen; + to->prevcp.x = to->me.x + poff.x; + to->prevcp.y = to->me.y + poff.y; + } + } +return( SplineMake3(from,to)); + } + + if ( to->prev!=NULL && (( to->noprevcp && to->nonextcp ) || to->prev->knownlinear )) { + tounit.x = to->prev->from->me.x-to->me.x; tounit.y = to->prev->from->me.y-to->me.y; + } else if ( !to->noprevcp || to->pointtype == pt_corner ) { + tounit.x = to->prevcp.x-to->me.x; tounit.y = to->prevcp.y-to->me.y; + } else { + tounit.x = to->me.x-to->nextcp.x; tounit.y = to->me.y-to->nextcp.y; + } + tlen = sqrt(tounit.x*tounit.x + tounit.y*tounit.y); + if ( from->next!=NULL && (( from->noprevcp && from->nonextcp ) || from->next->knownlinear) ) { + fromunit.x = from->next->to->me.x-from->me.x; fromunit.y = from->next->to->me.y-from->me.y; + } else if ( !from->nonextcp || from->pointtype == pt_corner ) { + fromunit.x = from->nextcp.x-from->me.x; fromunit.y = from->nextcp.y-from->me.y; + } else { + fromunit.x = from->me.x-from->prevcp.x; fromunit.y = from->me.y-from->prevcp.y; + } + flen = sqrt(fromunit.x*fromunit.x + fromunit.y*fromunit.y); + if ( tlen==0 || flen==0 ) { + if ( from->next!=NULL ) + temp = *from->next; + else { + memset(&temp,0,sizeof(temp)); + temp.from = from; temp.to = to; + SplineRefigure(&temp); + from->next = to->prev = NULL; + } + } + if ( tlen==0 ) { + if ( (to->pointtype==pt_curve || to->pointtype==pt_hvcurve) && + to->next && !to->nonextcp ) { + tounit.x = to->me.x-to->nextcp.x; tounit.y = to->me.y-to->nextcp.y; +/* Doesn't work + } else if ( to->pointtype==pt_tangent && to->next ) { + tounit.x = to->me.x-to->next->to->me.x; tounit.y = to->me.y-to->next->to->me.y; +*/ + } else { + tounit.x = -( (3*temp.splines[0].a*.9999+2*temp.splines[0].b)*.9999+temp.splines[0].c ); + tounit.y = -( (3*temp.splines[1].a*.9999+2*temp.splines[1].b)*.9999+temp.splines[1].c ); + } + tlen = sqrt(tounit.x*tounit.x + tounit.y*tounit.y); + } + tounit.x /= tlen; tounit.y /= tlen; + + if ( flen==0 ) { + if ( (from->pointtype==pt_curve || from->pointtype==pt_hvcurve) && + from->prev && !from->noprevcp ) { + fromunit.x = from->me.x-from->prevcp.x; fromunit.y = from->me.y-from->prevcp.y; +/* + } else if ( from->pointtype==pt_tangent && from->prev ) { + fromunit.x = from->me.x-from->prev->from->me.x; fromunit.y = from->me.y-from->prev->from->me.y; +*/ + } else { + fromunit.x = ( (3*temp.splines[0].a*.0001+2*temp.splines[0].b)*.0001+temp.splines[0].c ); + fromunit.y = ( (3*temp.splines[1].a*.0001+2*temp.splines[1].b)*.0001+temp.splines[1].c ); + } + flen = sqrt(fromunit.x*fromunit.x + fromunit.y*fromunit.y); + } + fromunit.x /= flen; fromunit.y /= flen; + + trylen = (to->me.x-from->me.x)*fromunit.x + (to->me.y-from->me.y)*fromunit.y; + if ( trylen>flen ) flen = trylen; + + trylen = (from->me.x-to->me.x)*tounit.x + (from->me.y-to->me.y)*tounit.y; + if ( trylen>tlen ) tlen = trylen; + + ftunit.x = (to->me.x-from->me.x); ftunit.y = (to->me.y-from->me.y); + ftlen = sqrt(ftunit.x*ftunit.x + ftunit.y*ftunit.y); + if ( ftlen!=0 ) { + ftunit.x /= ftlen; ftunit.y /= ftlen; + } + fdotft = fromunit.x*ftunit.x + fromunit.y*ftunit.y; + fmax = fdotft>0 ? ftlen/fdotft : 1e10; + tdotft = -tounit.x*ftunit.x - tounit.y*ftunit.y; + tmax = tdotft>0 ? ftlen/tdotft : 1e10; + /* At fmax, tmax the control points will stretch beyond the other endpoint*/ + /* when projected along the line between the two endpoints */ + + db.base = from->me; + db.unit.x = (to->me.x-from->me.x); db.unit.y = (to->me.y-from->me.y); + db.len = sqrt(db.unit.x*db.unit.x + db.unit.y*db.unit.y); + if ( db.len!=0 ) { + db.unit.x /= db.len; + db.unit.y /= db.len; + } + ApproxBounds(&b,mid,cnt,&db); + + for ( k=0; knextcp = from->me; + from->nonextcp = false; + to->noprevcp = false; + memset(&temp,0,sizeof(Spline)); + temp.from = from; temp.to = to; + for ( i=1; inextcp.x += fdiff*fromunit.x; from->nextcp.y += fdiff*fromunit.y; + to->prevcp = to->me; + for ( j=1; jprevcp.x += tdiff*tounit.x; to->prevcp.y += tdiff*tounit.y; + SplineRefigure(&temp); + curdiff = SigmaDeltas(&temp,mid,cnt,&b,&db); + for ( k=0; kk; --l ) { + bestdiff[l] = bestdiff[l-1]; + besti[l] = besti[l-1]; + bestj[l] = bestj[l-1]; + } + bestdiff[k] = curdiff; + besti[k] = i; bestj[k]=j; + break; + } + } + } + } + + finaldiff = 1e20; + offn_ = offp_ = -1; + spline = SplineMake(from,to,false); + for ( k=-1; kme.x)*tounit.x + (prevcp.y-to->me.y)*tounit.y; + temp2 = (nextcp.x-from->me.x)*fromunit.x + (nextcp.y-from->me.y)*fromunit.y; + if ( temp1<=0 || temp2<=0 ) /* A nice solution... but the control points are diametrically opposed to what they should be */ + continue; + tlen = temp1; flen = temp2; + } else { + if ( bestj[k]<0 || besti[k]<0 ) + continue; + tlen = bestj[k]*tdiff; flen = besti[k]*fdiff; + } + to->prevcp.x = to->me.x + tlen*tounit.x; to->prevcp.y = to->me.y + tlen*tounit.y; + from->nextcp.x = from->me.x + flen*fromunit.x; from->nextcp.y = from->me.y + flen*fromunit.y; + SplineRefigure(spline); + + bettern = betterp = false; + incrn = tdiff/2.0; incrp = fdiff/2.0; + offn = flen; offp = tlen; + nocnt = 0; + curdiff = SigmaDeltas(spline,mid,cnt,&b,&db); + totcnt = 0; + forever { + double fadiff, fsdiff; + double tadiff, tsdiff; + + from->nextcp.x = from->me.x + (offn+incrn)*fromunit.x; from->nextcp.y = from->me.y + (offn+incrn)*fromunit.y; + to->prevcp.x = to->me.x + offp*tounit.x; to->prevcp.y = to->me.y + offp*tounit.y; + SplineRefigure(spline); + fadiff = SigmaDeltas(spline,mid,cnt,&b,&db); + from->nextcp.x = from->me.x + (offn-incrn)*fromunit.x; from->nextcp.y = from->me.y + (offn-incrn)*fromunit.y; + SplineRefigure(spline); + fsdiff = SigmaDeltas(spline,mid,cnt,&b,&db); + from->nextcp.x = from->me.x + offn*fromunit.x; from->nextcp.y = from->me.y + offn*fromunit.y; + if ( offn-incrn<=0 ) + fsdiff += 1e10; + + to->prevcp.x = to->me.x + (offp+incrp)*tounit.x; to->prevcp.y = to->me.y + (offp+incrp)*tounit.y; + SplineRefigure(spline); + tadiff = SigmaDeltas(spline,mid,cnt,&b,&db); + to->prevcp.x = to->me.x + (offp-incrp)*tounit.x; to->prevcp.y = to->me.y + (offp-incrp)*tounit.y; + SplineRefigure(spline); + tsdiff = SigmaDeltas(spline,mid,cnt,&b,&db); + to->prevcp.x = to->me.x + offp*tounit.x; to->prevcp.y = to->me.y + offp*tounit.y; + if ( offp-incrp<=0 ) + tsdiff += 1e10; + + if ( offn>=incrn && fsdiff0 ) + incrn /= 2; + bettern = -1; + nocnt = 0; + curdiff = fsdiff; + } else if ( offn+incrn=incrp && tsdiff0 ) + incrp /= 2; + betterp = -1; + nocnt = 0; + curdiff = tsdiff; + } else if ( offp+incrp 6 ) + break; + incrn /= 2; + incrp /= 2; + } + if ( curdiff<1 ) + break; + if ( incrp200 ) + break; + if ( offn<0 || offp<0 ) { + IError("Approximation got inverse control points"); + break; + } + } +#if 0 + if ( nocnt>6 ) + nocnt_cnt++; + else if ( curdiff<1 ) + curdiff_cnt++; + else if ( totcnt>200 ) + totcnt_cnt++; + else + incr_cnt++; +#endif + if ( curdiffnoprevcp = offp_==0; + from->nonextcp = offn_==0; + to->prevcp.x = to->me.x + offp_*tounit.x; to->prevcp.y = to->me.y + offp_*tounit.y; + from->nextcp.x = from->me.x + offn_*fromunit.x; from->nextcp.y = from->me.y + offn_*fromunit.y; + /* I used to check for a spline very close to linear (and if so, make it */ + /* linear). But in when stroking a path with an eliptical pen we transform*/ + /* the coordinate system and our normal definitions of "close to linear" */ + /* don't apply */ + /*TestForLinear(from,to);*/ + SplineRefigure(spline); + +return( spline ); +} +#undef TRY_CNT +#undef DECIMATION + + /* calculating the actual length of a spline is hard, this gives a very */ + /* rough (but quick) approximation */ +static double SplineLenApprox(Spline *spline) { + double len, slen, temp; + + if ( (temp = spline->to->me.x-spline->from->me.x)<0 ) temp = -temp; + len = temp; + if ( (temp = spline->to->me.y-spline->from->me.y)<0 ) temp = -temp; + len += temp; + if ( !spline->to->noprevcp || !spline->from->nonextcp ) { + if ( (temp = spline->from->nextcp.x-spline->from->me.x)<0 ) temp = -temp; + slen = temp; + if ( (temp = spline->from->nextcp.y-spline->from->me.y)<0 ) temp = -temp; + slen += temp; + if ( (temp = spline->to->prevcp.x-spline->from->nextcp.x)<0 ) temp = -temp; + slen += temp; + if ( (temp = spline->to->prevcp.y-spline->from->nextcp.y)<0 ) temp = -temp; + slen += temp; + if ( (temp = spline->to->me.x-spline->to->prevcp.x)<0 ) temp = -temp; + slen += temp; + if ( (temp = spline->to->me.y-spline->to->prevcp.y)<0 ) temp = -temp; + slen += temp; + len = (len + slen)/2; + } +return( len ); +} + +double SplineLength(Spline *spline) { + /* I ignore the constant term. It's just an unneeded addition */ + double len, t; + double lastx = 0, lasty = 0; + double curx, cury; + + len = 0; + for ( t=1.0/128; t<=1.0001 ; t+=1.0/128 ) { + curx = ((spline->splines[0].a*t+spline->splines[0].b)*t+spline->splines[0].c)*t; + cury = ((spline->splines[1].a*t+spline->splines[1].b)*t+spline->splines[1].c)*t; + len += sqrt( (curx-lastx)*(curx-lastx) + (cury-lasty)*(cury-lasty) ); + lastx = curx; lasty = cury; + } +return( len ); +} + + +static TPoint *SplinesFigureTPsBetween(SplinePoint *from, SplinePoint *to, + int *tot) { + int cnt, i, j, pcnt; + double len, slen, lbase; + SplinePoint *np; + TPoint *tp; + double _lens[10], *lens = _lens; + int _cnts[10], *cnts = _cnts; + /* I used just to give every spline 10 points. But that gave much more */ + /* weight to small splines than to big ones */ + + cnt = 0; + for ( np = from->next->to; ; np = np->next->to ) { + ++cnt; + if ( np==to ) + break; + } + if ( cnt>10 ) { + lens = galloc(cnt*sizeof(double)); + cnts = galloc(cnt*sizeof(int)); + } + cnt = 0; len = 0; + for ( np = from->next->to; ; np = np->next->to ) { + lens[cnt] = SplineLenApprox(np->prev); + len += lens[cnt]; + ++cnt; + if ( np==to ) + break; + } + if ( len!=0 ) { + pcnt = 0; + for ( i=0; ime.x; + tp[i].y = from->me.y; + } + } else { + lbase = 0; + for ( i=cnt=0, np = from->next->to; ; np = np->next->to, ++cnt ) { + slen = SplineLenApprox(np->prev); + for ( j=0; jprev->splines[0].a*t+np->prev->splines[0].b)*t+np->prev->splines[0].c)*t + np->prev->splines[0].d; + tp[i++].y = ((np->prev->splines[1].a*t+np->prev->splines[1].b)*t+np->prev->splines[1].c)*t + np->prev->splines[1].d; + } + lbase += slen; + if ( np==to ) + break; + } + } + if ( cnts!=_cnts ) free(cnts); + if ( lens!=_lens ) free(lens); + + *tot = i; + +return( tp ); +} + +static void SplinePointReCatagorize(SplinePoint *sp,int oldpt) { + SplinePointCatagorize(sp); + if ( sp->pointtype!=oldpt ) { + if ( sp->pointtype==pt_curve && oldpt==pt_hvcurve && + ((sp->nextcp.x == sp->me.x && sp->nextcp.y != sp->me.y ) || + (sp->nextcp.y == sp->me.y && sp->nextcp.x != sp->me.x ))) + sp->pointtype = pt_hvcurve; + } +} + +void SplinesRemoveBetween(SplineChar *sc, SplinePoint *from, SplinePoint *to,int type) { + int tot; + TPoint *tp; + SplinePoint *np, oldfrom; + int oldfpt = from->pointtype, oldtpt = to->pointtype; + Spline *sp; + int order2 = from->next->order2; + + oldfrom = *from; + tp = SplinesFigureTPsBetween(from,to,&tot); + + if ( type==1 ) + ApproximateSplineFromPointsSlopes(from,to,tp,tot-1,order2); + else + ApproximateSplineFromPoints(from,to,tp,tot-1,order2); + + /* Have to do the frees after the approximation because the approx */ + /* uses the splines to determine slopes */ + for ( sp = oldfrom.next; ; ) { + np = sp->to; + SplineFree(sp); + if ( np==to ) + break; + sp = np->next; + SplinePointMDFree(sc,np); + } + + free(tp); + + SplinePointReCatagorize(from,oldfpt); + SplinePointReCatagorize(to,oldtpt); +} + + +static void RemoveStupidControlPoints(SplineSet *spl) { + double len, normal, dir; + Spline *s, *first; + BasePoint unit, off; + + /* Also remove really stupid control points: Tiny offsets pointing in */ + /* totally the wrong direction. Some of the TeX fonts we get have these */ + /* We get equally bad results with a control point that points beyond the */ + /* other end point */ + first = NULL; + for ( s = spl->first->next; s!=NULL && s!=first; s=s->to->next ) { + unit.x = s->to->me.x-s->from->me.x; + unit.y = s->to->me.y-s->from->me.y; + len = sqrt(unit.x*unit.x+unit.y*unit.y); + if ( len!=0 ) { + int refigure = false; + unit.x /= len; unit.y /= len; + if ( !s->from->nonextcp ) { + off.x = s->from->nextcp.x-s->from->me.x; + off.y = s->from->nextcp.y-s->from->me.y; + if ((normal = off.x*unit.y - off.y*unit.x)<0 ) normal = -normal; + dir = off.x*unit.x + off.y*unit.y; + if (( normallen)) { + s->from->nextcp = s->from->me; + s->from->nonextcp = true; + refigure = true; + } + } + if ( !s->to->noprevcp ) { + off.x = s->to->me.x - s->to->prevcp.x; + off.y = s->to->me.y - s->to->prevcp.y; + if ((normal = off.x*unit.y - off.y*unit.x)<0 ) normal = -normal; + dir = off.x*unit.x + off.y*unit.y; + if (( normal<-dir && normal<1 && dir<0 ) || (normal<.5 && dir>-.5 && dir<0) || + (normal<.1 && dir>len)) { + s->to->prevcp = s->to->me; + s->to->noprevcp = true; + refigure = true; + } + } + if ( refigure ) + SplineRefigure(s); + } + if ( first==NULL ) first = s; + } +} + +void SSRemoveStupidControlPoints(SplineSet *base) { + SplineSet *spl; + + for (spl=base; spl!=NULL; spl=spl->next ) + RemoveStupidControlPoints(spl); +} + +static void OverlapClusterCpAngles(SplineSet *spl,double within) { + double len, nlen, plen; + double startoff, endoff; + SplinePoint *sp, *nsp, *psp; + BasePoint *nbp, *pbp; + BasePoint pdir, ndir, fpdir, fndir; + int nbad, pbad; + + /* If we have a junction point (right mid of 3) where the two splines */ + /* are almost, but not quite moving in the same direction as they go */ + /* away from the point, and if there is a tiny overlap because of this */ + /* "almost" same, then we will probably get a bit confused in remove */ + /* overlap */ + + for ( sp = spl->first; ; ) { + if ( sp->next==NULL ) + break; + nsp = sp->next->to; + if (( !sp->nonextcp || !sp->noprevcp ) && sp->prev!=NULL ) { + psp = sp->prev->from; + nbp = !sp->nonextcp ? &sp->nextcp : !nsp->noprevcp ? &nsp->prevcp : &nsp->me; + pbp = !sp->noprevcp ? &sp->prevcp : !psp->nonextcp ? &psp->nextcp : &psp->me; + + pdir.x = pbp->x-sp->me.x; pdir.y = pbp->y-sp->me.y; + ndir.x = nbp->x-sp->me.x; ndir.y = nbp->y-sp->me.y; + fpdir.x = psp->me.x-sp->me.x; fpdir.y = psp->me.y-sp->me.y; + fndir.x = nsp->me.x-sp->me.x; fndir.y = nsp->me.y-sp->me.y; + + plen = sqrt(pdir.x*pdir.x+pdir.y*pdir.y); + if ( plen!=0 ) { + pdir.x /= plen; pdir.y /= plen; + } + + nlen = sqrt(ndir.x*ndir.x+ndir.y*ndir.y); + if ( nlen!=0 ) { + ndir.x /= nlen; ndir.y /= nlen; + } + + nbad = pbad = false; + if ( !sp->nonextcp && plen!=0 && nlen!=0 ) { + len = sqrt(fndir.x*fndir.x+fndir.y*fndir.y); + if ( len!=0 ) { + fndir.x /= len; fndir.y /= len; + startoff = ndir.x*pdir.y - ndir.y*pdir.x; + endoff = fndir.x*pdir.y - fndir.y*pdir.x; + if (( (startoff<0 && endoff>0) || (startoff>0 && endoff<0)) && + startoff > -within && startoff < within ) + nbad = true; + } + } + if ( !sp->noprevcp && plen!=0 && nlen!=0 ) { + len = sqrt(fpdir.x*fpdir.x+fpdir.y*fpdir.y); + if ( len!=0 ) { + fpdir.x /= len; fpdir.y /= len; + startoff = pdir.x*ndir.y - pdir.y*ndir.x; + endoff = fpdir.x*ndir.y - fpdir.y*ndir.x; + if (( (startoff<0 && endoff>0) || (startoff>0 && endoff<0)) && + startoff > -within && startoff < within ) + pbad = true; + } + } + if ( nbad && pbad ) { + if ( ndir.x==0 || ndir.y==0 ) + nbad = false; + else if ( pdir.x==0 || pdir.y==0 ) + pbad = false; + } + if ( nbad && pbad ) { + if ( ndir.x*pdir.x + ndir.y*pdir.y > 0 ) { + ndir.x = pdir.x = (ndir.x + pdir.x)/2; + ndir.y = pdir.y = (ndir.x + pdir.x)/2; + } else { + ndir.x = (ndir.x - pdir.x)/2; + ndir.y = (ndir.y - pdir.y)/2; + pdir.x = -ndir.x; pdir.y = -ndir.y; + } + sp->nextcp.x = sp->me.x + nlen*ndir.x; + sp->nextcp.y = sp->me.y + nlen*ndir.y; + sp->prevcp.x = sp->me.x + plen*pdir.x; + sp->prevcp.y = sp->me.y + plen*pdir.y; + SplineRefigure(sp->next); SplineRefigure(sp->prev); + } else if ( nbad ) { + if ( ndir.x*pdir.x + ndir.y*pdir.y < 0 ) { + pdir.x = -pdir.x; + pdir.y = -pdir.y; + } + sp->nextcp.x = sp->me.x + nlen*pdir.x; + sp->nextcp.y = sp->me.y + nlen*pdir.y; + SplineRefigure(sp->next); + } else if ( pbad ) { + if ( ndir.x*pdir.x + ndir.y*pdir.y < 0 ) { + ndir.x = -ndir.x; + ndir.y = -ndir.y; + } + sp->prevcp.x = sp->me.x + plen*ndir.x; + sp->prevcp.y = sp->me.y + plen*ndir.y; + SplineRefigure(sp->prev); + } + } + if ( nsp==spl->first ) + break; + sp = nsp; + } +} + +void SSOverlapClusterCpAngles(SplineSet *base,double within) { + SplineSet *spl; + + for (spl=base; spl!=NULL; spl=spl->next ) + OverlapClusterCpAngles(spl,within); +} + + +Spline *SplineAddExtrema(Spline *s,int always,real lenbound, real offsetbound, + DBounds *b) { + /* First find the extrema, if any */ + bigreal t[4], min; + uint8 rmfrom[4], rmto[4]; + int p, i,j, p_s, mini; + SplinePoint *sp; + real len; + + if ( !always ) { + real xlen, ylen; + xlen = (s->from->me.x-s->to->me.x); + ylen = (s->from->me.y-s->to->me.y); + len = xlen*xlen + ylen*ylen; + lenbound *= lenbound; + if ( len < lenbound ) { + len = SplineLength(s); + len *= len; + } + } + + memset(rmfrom,0,sizeof(rmfrom)); + memset(rmto,0,sizeof(rmto)); + + forever { + if ( s->knownlinear ) +return(s); + p = 0; + if ( s->splines[0].a!=0 ) { + double d = 4*s->splines[0].b*s->splines[0].b-4*3*s->splines[0].a*s->splines[0].c; + if ( d>0 ) { + d = sqrt(d); + t[p++] = CheckExtremaForSingleBitErrors(&s->splines[0],(-2*s->splines[0].b+d)/(2*3*s->splines[0].a)); + t[p++] = CheckExtremaForSingleBitErrors(&s->splines[0],(-2*s->splines[0].b-d)/(2*3*s->splines[0].a)); + } + } else if ( s->splines[0].b!=0 ) + t[p++] = -s->splines[0].c/(2*s->splines[0].b); + if ( !always ) { + /* Generally we are only interested in extrema on long splines, or */ + /* extrema which are extrema for the entire contour, not just this */ + /* spline */ + /* Also extrema which are very close to one of the end-points can */ + /* be ignored. */ + /* No they can't. But we need to remove the original point in this*/ + /* case */ + for ( i=0; isplines[0].a*t[i]+s->splines[0].b)*t[i]+s->splines[0].c)*t[i]+s->splines[0].d; + real y = ((s->splines[1].a*t[i]+s->splines[1].b)*t[i]+s->splines[1].c)*t[i]+s->splines[1].d; + int close_from = ( x-s->from->me.xfrom->me.x>-offsetbound) && + ( y-s->from->me.y<10*offsetbound && y-s->from->me.y>-10*offsetbound ); + int close_to = ( x-s->to->me.xto->me.x>-offsetbound) && + ( y-s->to->me.y<10*offsetbound && y-s->to->me.y>-10*offsetbound ); + int remove_from = close_from && GoodCurve(s->from,true); + int remove_to = close_to && GoodCurve(s->to,false); + if (( x>b->minx && xmaxx && lensplines[1].a!=0 ) { + double d = 4*s->splines[1].b*s->splines[1].b-4*3*s->splines[1].a*s->splines[1].c; + if ( d>0 ) { + d = sqrt(d); + t[p++] = CheckExtremaForSingleBitErrors(&s->splines[1],(-2*s->splines[1].b+d)/(2*3*s->splines[1].a)); + t[p++] = CheckExtremaForSingleBitErrors(&s->splines[1],(-2*s->splines[1].b-d)/(2*3*s->splines[1].a)); + } + } else if ( s->splines[1].b!=0 ) + t[p++] = -s->splines[1].c/(2*s->splines[1].b); + if ( !always ) { + for ( i=p_s; isplines[0].a*t[i]+s->splines[0].b)*t[i]+s->splines[0].c)*t[i]+s->splines[0].d; + real y = ((s->splines[1].a*t[i]+s->splines[1].b)*t[i]+s->splines[1].c)*t[i]+s->splines[1].d; + int close_from =( y-s->from->me.yfrom->me.y>-offsetbound ) && + ( x-s->from->me.xfrom->me.x>-offsetbound); + int close_to = ( y-s->to->me.yto->me.y>-offsetbound ) && + ( x-s->to->me.xto->me.x>-offsetbound); + int remove_from = close_from && GoodCurve(s->from,true); + int remove_to = close_to && GoodCurve(s->to,false); + if (( y>b->miny && ymaxy && len0 && t[i]<.05 ) { + BasePoint test; + /* Expand strong gets very confused on zero-length splines so */ + /* don't let that happen */ + test.x = ((s->splines[0].a*t[i]+s->splines[0].b)*t[i]+s->splines[0].c)*t[i]+s->splines[0].d; + test.y = ((s->splines[1].a*t[i]+s->splines[1].b)*t[i]+s->splines[1].c)*t[i]+s->splines[1].d; + if ( test.x== s->from->me.x && test.y==s->from->me.y ) + t[i] = 0; /* Throw it out */ + } + if ( t[i]<1 && t[i]>.95 ) { + BasePoint test; + test.x = ((s->splines[0].a*t[i]+s->splines[0].b)*t[i]+s->splines[0].c)*t[i]+s->splines[0].d; + test.y = ((s->splines[1].a*t[i]+s->splines[1].b)*t[i]+s->splines[1].c)*t[i]+s->splines[1].d; + if ( test.x== s->to->me.x && test.y==s->to->me.y ) + t[i] = 1.0; /* Throw it out */ + } + + if ( t[i]<.0001 || t[i]>.9999 ) { + --p; + for ( j=i; jme.x - sp->prevcp.x)<0 ) dx=-dx; + if ( (dy = sp->me.y - sp->prevcp.y)<0 ) dy=-dy; + if ( dx!=0 && dy!=0 ) { + if ( dxprevcp.x = sp->me.x; + else + sp->prevcp.y = sp->me.y; + } + if ( (dx = sp->me.x - sp->nextcp.x)<0 ) dx=-dx; + if ( (dy = sp->me.y - sp->nextcp.y)<0 ) dy=-dy; + if ( dx!=0 && dy!=0 ) { + if ( dxnextcp.x = sp->me.x; + else + sp->nextcp.y = sp->me.y; + } + } + + if ( rmfrom[mini] ) sp->prev->from->ticked = true; + if ( rmto[mini] ) sp->next->to->ticked = true; + s = sp->next; + if ( p==1 ) +return( s ); + /* Don't try to use any other computed t values, it is easier to */ + /* recompute them than to try and figure out what they map to on the */ + /* new spline */ + } +} + +void SplineSetAddExtrema(SplineChar *sc, SplineSet *ss,enum ae_type between_selected, int emsize) { + Spline *s, *first; + DBounds b; + int always = true; + real lenbound = 0; + real offsetbound=0; + SplinePoint *sp, *nextp; + + if ( between_selected==ae_only_good ) { + SplineSetQuickBounds(ss,&b); + lenbound = (emsize)/32.0; + always = false; + offsetbound = .5; + between_selected = ae_only_good_rm_later; + for ( sp = ss->first; ; ) { + sp->ticked = false; + if ( sp->next==NULL ) + break; + sp = sp->next->to; + if ( sp==ss->first ) + break; + } + } + + first = NULL; + for ( s = ss->first->next; s!=NULL && s!=first; s = s->to->next ) { + if ( between_selected!=ae_between_selected || + (s->from->selected && s->to->selected)) + s = SplineAddExtrema(s,always,lenbound,offsetbound,&b); + if ( first==NULL ) first = s; + } + if ( between_selected == ae_only_good_rm_later ) { + for ( sp = ss->first; ; ) { + if ( sp->next==NULL ) + break; + nextp = sp->next->to; + if ( sp->ticked ) { + if ( sp==ss->first ) + ss->first = ss->last = nextp; + SplinesRemoveBetween(sc,sp->prev->from,nextp,1); + } + sp = nextp; + if ( sp==ss->first ) + break; + } + } +} + + +char *GetNextUntitledName(void) { + static int untitled_cnt=1; + char buffer[80]; + + sprintf( buffer, "Untitled%d", untitled_cnt++ ); +return( copy(buffer)); +} + +SplineFont *SplineFontEmpty(void) { + extern int default_fv_row_count, default_fv_col_count; + time_t now; + SplineFont *sf; + + sf = gcalloc(1,sizeof(SplineFont)); + sf->pfminfo.fstype = -1; + sf->top_enc = -1; + sf->macstyle = -1; + sf->desired_row_cnt = default_fv_row_count; sf->desired_col_cnt = default_fv_col_count; + sf->display_antialias = default_fv_antialias; + sf->display_bbsized = default_fv_bbsized; + sf->display_size = -default_fv_font_size; + sf->display_layer = ly_fore; + sf->pfminfo.winascent_add = sf->pfminfo.windescent_add = true; + sf->pfminfo.hheadascent_add = sf->pfminfo.hheaddescent_add = true; + sf->pfminfo.typoascent_add = sf->pfminfo.typodescent_add = true; + if ( TTFFoundry!=NULL ) + strncpy(sf->pfminfo.os2_vendor,TTFFoundry,4); + else + memcpy(sf->pfminfo.os2_vendor,"PfEd",4); + sf->for_new_glyphs = DefaultNameListForNewFonts(); + time(&now); + sf->creationtime = sf->modificationtime = now; + + sf->layer_cnt = 2; + sf->layers = gcalloc(2,sizeof(LayerInfo)); + sf->layers[0].name = copy(_("Back")); + sf->layers[0].background = true; + sf->layers[1].name = copy(_("Fore")); + sf->layers[1].background = false; + sf->grid.background = true; + +return( sf ); +} + + +static void SFChangeXUID(SplineFont *sf, int random) { + char *pt, *new, *npt; + int val; + + if ( sf->xuid==NULL ) +return; + pt = strrchr(sf->xuid,' '); + if ( pt==NULL ) + pt = strchr(sf->xuid,'['); + if ( pt==NULL ) + pt = sf->xuid; + else + ++pt; + if ( random ) + val = rand()&0xffffff; + else { + val = strtol(pt,NULL,10); + val = (val+1)&0xffffff; + } + + new = galloc(pt-sf->xuid+12); + strncpy(new,sf->xuid,pt-sf->xuid); + npt = new + (pt-sf->xuid); + if ( npt==new ) *npt++ = '['; + sprintf(npt, "%d]", val ); + free(sf->xuid); sf->xuid = new; + sf->changed = true; + sf->changed_since_xuidchanged = false; +} + +void SFIncrementXUID(SplineFont *sf) { + SFChangeXUID(sf,false); +} + +void SFRandomChangeXUID(SplineFont *sf) { + SFChangeXUID(sf,true); +} + +void SPWeightedAverageCps(SplinePoint *sp) { + double pangle, nangle, angle, plen, nlen, c, s; + if ( sp->noprevcp || sp->nonextcp ) + /*SPAverageCps(sp)*/; /* Expand Stroke wants this case to hold still */ + else if (( sp->pointtype==pt_curve || sp->pointtype==pt_hvcurve) && + sp->prev && sp->next ) { + pangle = atan2(sp->me.y-sp->prevcp.y,sp->me.x-sp->prevcp.x); + nangle = atan2(sp->nextcp.y-sp->me.y,sp->nextcp.x-sp->me.x); + if ( pangle<0 && nangle>0 && nangle-pangle>=3.1415926 ) + pangle += 2*3.1415926535897932; + else if ( pangle>0 && nangle<0 && pangle-nangle>=3.1415926 ) + nangle += 2*3.1415926535897932; + plen = sqrt((sp->me.y-sp->prevcp.y)*(sp->me.y-sp->prevcp.y) + + (sp->me.x-sp->prevcp.x)*(sp->me.x-sp->prevcp.x)); + nlen = sqrt((sp->nextcp.y-sp->me.y)*(sp->nextcp.y-sp->me.y) + + (sp->nextcp.x-sp->me.x)*(sp->nextcp.x-sp->me.x)); + if ( plen+nlen==0 ) + angle = (nangle+pangle)/2; + else + angle = (plen*pangle + nlen*nangle)/(plen+nlen); + plen = -plen; + c = cos(angle); s=sin(angle); + sp->nextcp.x = c*nlen + sp->me.x; + sp->nextcp.y = s*nlen + sp->me.y; + sp->prevcp.x = c*plen + sp->me.x; + sp->prevcp.y = s*plen + sp->me.y; + SplineRefigure(sp->prev); + SplineRefigure(sp->next); + } else + SPAverageCps(sp); +} + +void SPAverageCps(SplinePoint *sp) { + double pangle, nangle, angle, plen, nlen, c, s; + if (( sp->pointtype==pt_curve || sp->pointtype==pt_hvcurve) && + sp->prev && sp->next ) { + if ( sp->noprevcp ) + pangle = atan2(sp->me.y-sp->prev->from->me.y,sp->me.x-sp->prev->from->me.x); + else + pangle = atan2(sp->me.y-sp->prevcp.y,sp->me.x-sp->prevcp.x); + if ( sp->nonextcp ) + nangle = atan2(sp->next->to->me.y-sp->me.y,sp->next->to->me.x-sp->me.x); + else + nangle = atan2(sp->nextcp.y-sp->me.y,sp->nextcp.x-sp->me.x); + if ( pangle<0 && nangle>0 && nangle-pangle>=3.1415926 ) + pangle += 2*3.1415926535897932; + else if ( pangle>0 && nangle<0 && pangle-nangle>=3.1415926 ) + nangle += 2*3.1415926535897932; + angle = (nangle+pangle)/2; + plen = -sqrt((sp->me.y-sp->prevcp.y)*(sp->me.y-sp->prevcp.y) + + (sp->me.x-sp->prevcp.x)*(sp->me.x-sp->prevcp.x)); + nlen = sqrt((sp->nextcp.y-sp->me.y)*(sp->nextcp.y-sp->me.y) + + (sp->nextcp.x-sp->me.x)*(sp->nextcp.x-sp->me.x)); + c = cos(angle); s=sin(angle); + sp->nextcp.x = c*nlen + sp->me.x; + sp->nextcp.y = s*nlen + sp->me.y; + sp->prevcp.x = c*plen + sp->me.x; + sp->prevcp.y = s*plen + sp->me.y; + SplineRefigure(sp->prev); + SplineRefigure(sp->next); + } else if ( sp->pointtype==pt_tangent && sp->prev && sp->next ) { + if ( !sp->noprevcp ) { + nangle = atan2(sp->next->to->me.y-sp->me.y,sp->next->to->me.x-sp->me.x); + plen = -sqrt((sp->me.y-sp->prevcp.y)*(sp->me.y-sp->prevcp.y) + + (sp->me.x-sp->prevcp.x)*(sp->me.x-sp->prevcp.x)); + c = cos(nangle); s=sin(nangle); + sp->prevcp.x = c*plen + sp->me.x; + sp->prevcp.y = s*plen + sp->me.y; + SplineRefigure(sp->prev); + } + if ( !sp->nonextcp ) { + pangle = atan2(sp->me.y-sp->prev->from->me.y,sp->me.x-sp->prev->from->me.x); + nlen = sqrt((sp->nextcp.y-sp->me.y)*(sp->nextcp.y-sp->me.y) + + (sp->nextcp.x-sp->me.x)*(sp->nextcp.x-sp->me.x)); + c = cos(pangle); s=sin(pangle); + sp->nextcp.x = c*nlen + sp->me.x; + sp->nextcp.y = s*nlen + sp->me.y; + SplineRefigure(sp->next); + } + } +} + + +void SplineCharTangentNextCP(SplinePoint *sp) { + double len; + BasePoint *bp, unit; + extern int snaptoint; + + if ( sp->prev==NULL ) +return; + bp = &sp->prev->from->me; + + unit.y = sp->me.y-bp->y; unit.x = sp->me.x-bp->x; + len = sqrt( unit.x*unit.x + unit.y*unit.y ); + if ( len!=0 ) { + unit.x /= len; + unit.y /= len; + } + len = sqrt((sp->nextcp.y-sp->me.y)*(sp->nextcp.y-sp->me.y) + (sp->nextcp.x-sp->me.x)*(sp->nextcp.x-sp->me.x)); + sp->nextcp.x = sp->me.x + len*unit.x; + sp->nextcp.y = sp->me.y + len*unit.y; + if ( snaptoint ) { + sp->nextcp.x = rint(sp->nextcp.x); + sp->nextcp.y = rint(sp->nextcp.y); + } else { + sp->nextcp.x = rint(sp->nextcp.x*1024)/1024; + sp->nextcp.y = rint(sp->nextcp.y*1024)/1024; + } + if ( sp->next!=NULL && sp->next->order2 ) + sp->next->to->prevcp = sp->nextcp; +} + +void SplineCharTangentPrevCP(SplinePoint *sp) { + double len; + BasePoint *bp, unit; + extern int snaptoint; + + if ( sp->next==NULL ) +return; + bp = &sp->next->to->me; + + unit.y = sp->me.y-bp->y; unit.x = sp->me.x-bp->x; + len = sqrt( unit.x*unit.x + unit.y*unit.y ); + if ( len!=0 ) { + unit.x /= len; + unit.y /= len; + } + len = sqrt((sp->prevcp.y-sp->me.y)*(sp->prevcp.y-sp->me.y) + (sp->prevcp.x-sp->me.x)*(sp->prevcp.x-sp->me.x)); + sp->prevcp.x = sp->me.x + len*unit.x; + sp->prevcp.y = sp->me.y + len*unit.y; + if ( snaptoint ) { + sp->prevcp.x = rint(sp->prevcp.x); + sp->prevcp.y = rint(sp->prevcp.y); + } else { + sp->prevcp.x = rint(sp->prevcp.x*1024)/1024; + sp->prevcp.y = rint(sp->prevcp.y*1024)/1024; + } + if ( sp->prev!=NULL && sp->prev->order2 ) + sp->prev->from->nextcp = sp->prevcp; +} + +static void BP_HVForce(BasePoint *vector) { + /* Force vector to be horizontal/vertical */ + double dx, dy, len; + + if ( (dx= vector->x)<0 ) dx = -dx; + if ( (dy= vector->y)<0 ) dy = -dy; + if ( dx==0 || dy==0 ) +return; + len = sqrt(dx*dx + dy*dy); + if ( dx>dy ) { + vector->x = vector->x<0 ? -len : len; + vector->y = 0; + } else { + vector->y = vector->y<0 ? -len : len; + vector->x = 0; + } +} + +#define NICE_PROPORTION .39 +void SplineCharDefaultNextCP(SplinePoint *base) { + SplinePoint *prev=NULL, *next; + double len, plen, ulen; + BasePoint unit; + extern int snaptoint; + + if ( base->next==NULL ) +return; + if ( base->next->order2 ) { + SplineRefigureFixup(base->next); +return; + } + if ( !base->nextcpdef ) { + if ( base->pointtype==pt_tangent ) + SplineCharTangentNextCP(base); +return; + } + next = base->next->to; + if ( base->prev!=NULL ) + prev = base->prev->from; + + len = NICE_PROPORTION * sqrt((base->me.x-next->me.x)*(base->me.x-next->me.x) + + (base->me.y-next->me.y)*(base->me.y-next->me.y)); + unit.x = next->me.x - base->me.x; + unit.y = next->me.y - base->me.y; + ulen = sqrt(unit.x*unit.x + unit.y*unit.y); + if ( ulen!=0 ) + unit.x /= ulen, unit.y /= ulen; + base->nonextcp = false; + + if ( base->pointtype == pt_curve || base->pointtype == pt_hvcurve ) { + if ( prev!=NULL && (base->prevcpdef || base->noprevcp)) { + unit.x = next->me.x - prev->me.x; + unit.y = next->me.y - prev->me.y; + ulen = sqrt(unit.x*unit.x + unit.y*unit.y); + if ( ulen!=0 ) + unit.x /= ulen, unit.y /= ulen; + if ( base->pointtype == pt_hvcurve ) + BP_HVForce(&unit); + plen = sqrt((base->prevcp.x-base->me.x)*(base->prevcp.x-base->me.x) + + (base->prevcp.y-base->me.y)*(base->prevcp.y-base->me.y)); + base->prevcp.x = base->me.x - plen*unit.x; + base->prevcp.y = base->me.y - plen*unit.y; + if ( snaptoint ) { + base->prevcp.x = rint(base->prevcp.x); + base->prevcp.y = rint(base->prevcp.y); + } + SplineRefigureFixup(base->prev); + } else if ( prev!=NULL ) { + /* The prev control point is fixed. So we've got to use the same */ + /* angle it uses */ + unit.x = base->me.x-base->prevcp.x; + unit.y = base->me.y-base->prevcp.y; + ulen = sqrt(unit.x*unit.x + unit.y*unit.y); + if ( ulen!=0 ) + unit.x /= ulen, unit.y /= ulen; + } else { + base->prevcp = base->me; + base->noprevcp = true; + base->prevcpdef = true; + } + if ( base->pointtype == pt_hvcurve ) + BP_HVForce(&unit); + } else if ( base->pointtype == pt_corner ) { + if ( next->pointtype != pt_curve && next->pointtype != pt_hvcurve ) { + base->nonextcp = true; + } + } else /* tangent */ { + if ( next->pointtype != pt_curve ) { + base->nonextcp = true; + } else { + if ( prev!=NULL ) { + if ( !base->noprevcp ) { + plen = sqrt((base->prevcp.x-base->me.x)*(base->prevcp.x-base->me.x) + + (base->prevcp.y-base->me.y)*(base->prevcp.y-base->me.y)); + base->prevcp.x = base->me.x - plen*unit.x; + base->prevcp.y = base->me.y - plen*unit.y; + SplineRefigureFixup(base->prev); + } + unit.x = base->me.x-prev->me.x; + unit.y = base->me.y-prev->me.y; + ulen = sqrt(unit.x*unit.x + unit.y*unit.y); + if ( ulen!=0 ) + unit.x /= ulen, unit.y /= ulen; + } + } + } + if ( base->nonextcp ) + base->nextcp = base->me; + else { + base->nextcp.x = base->me.x + len*unit.x; + base->nextcp.y = base->me.y + len*unit.y; + if ( snaptoint ) { + base->nextcp.x = rint(base->nextcp.x); + base->nextcp.y = rint(base->nextcp.y); + } else { + base->nextcp.x = rint(base->nextcp.x*1024)/1024; + base->nextcp.y = rint(base->nextcp.y*1024)/1024; + } + if ( base->next != NULL ) + SplineRefigureFixup(base->next); + } +} + +void SplineCharDefaultPrevCP(SplinePoint *base) { + SplinePoint *next=NULL, *prev; + double len, nlen, ulen; + BasePoint unit; + extern int snaptoint; + + if ( base->prev==NULL ) +return; + if ( base->prev->order2 ) { + SplineRefigureFixup(base->prev); +return; + } + if ( !base->prevcpdef ) { + if ( base->pointtype==pt_tangent ) + SplineCharTangentPrevCP(base); +return; + } + prev = base->prev->from; + if ( base->next!=NULL ) + next = base->next->to; + + len = NICE_PROPORTION * sqrt((base->me.x-prev->me.x)*(base->me.x-prev->me.x) + + (base->me.y-prev->me.y)*(base->me.y-prev->me.y)); + unit.x = prev->me.x - base->me.x; + unit.y = prev->me.y - base->me.y; + ulen = sqrt(unit.x*unit.x + unit.y*unit.y); + if ( ulen!=0 ) + unit.x /= ulen, unit.y /= ulen; + base->noprevcp = false; + + if ( base->pointtype == pt_curve || base->pointtype == pt_hvcurve ) { + if ( next!=NULL && (base->nextcpdef || base->nonextcp)) { + unit.x = prev->me.x - next->me.x; + unit.y = prev->me.y - next->me.y; + ulen = sqrt(unit.x*unit.x + unit.y*unit.y); + if ( ulen!=0 ) + unit.x /= ulen, unit.y /= ulen; + if ( base->pointtype == pt_hvcurve ) + BP_HVForce(&unit); + nlen = sqrt((base->nextcp.x-base->me.x)*(base->nextcp.x-base->me.x) + + (base->nextcp.y-base->me.y)*(base->nextcp.y-base->me.y)); + base->nextcp.x = base->me.x - nlen*unit.x; + base->nextcp.y = base->me.y - nlen*unit.y; + if ( snaptoint ) { + base->nextcp.x = rint(base->nextcp.x); + base->nextcp.y = rint(base->nextcp.y); + } + SplineRefigureFixup(base->next); + } else if ( next!=NULL ) { + /* The next control point is fixed. So we got to use the same */ + /* angle it uses */ + unit.x = base->me.x-base->nextcp.x; + unit.y = base->me.y-base->nextcp.y; + ulen = sqrt(unit.x*unit.x + unit.y*unit.y); + if ( ulen!=0 ) + unit.x /= ulen, unit.y /= ulen; + } else { + base->nextcp = base->me; + base->nonextcp = true; + base->nextcpdef = true; + } + if ( base->pointtype == pt_hvcurve ) + BP_HVForce(&unit); + } else if ( base->pointtype == pt_corner ) { + if ( prev->pointtype != pt_curve && prev->pointtype != pt_hvcurve ) { + base->noprevcp = true; + } + } else /* tangent */ { + if ( prev->pointtype != pt_curve ) { + base->noprevcp = true; + } else { + if ( next!=NULL ) { + if ( !base->nonextcp ) { + nlen = sqrt((base->nextcp.x-base->me.x)*(base->nextcp.x-base->me.x) + + (base->nextcp.y-base->me.y)*(base->nextcp.y-base->me.y)); + base->nextcp.x = base->me.x - nlen*unit.x; + base->nextcp.y = base->me.y - nlen*unit.y; + SplineRefigureFixup(base->next); + } + unit.x = base->me.x-next->me.x; + unit.y = base->me.y-next->me.y; + ulen = sqrt(unit.x*unit.x + unit.y*unit.y); + if ( ulen!=0 ) + unit.x /= ulen, unit.y /= ulen; + } + } + } + if ( base->noprevcp ) + base->prevcp = base->me; + else { + base->prevcp.x = base->me.x + len*unit.x; + base->prevcp.y = base->me.y + len*unit.y; + if ( snaptoint ) { + base->prevcp.x = rint(base->prevcp.x); + base->prevcp.y = rint(base->prevcp.y); + } else { + base->prevcp.x = rint(base->prevcp.x*1024)/1024; + base->prevcp.y = rint(base->prevcp.y*1024)/1024; + } + if ( base->prev!=NULL ) + SplineRefigureFixup(base->prev); + } +} + + +SplineSet *SplineSetReverse(SplineSet *spl) { + Spline *spline, *first, *next; + BasePoint tp; + SplinePoint *temp; + int bool; + /* reverse the splineset so that what was the start point becomes the end */ + /* and vice versa. This entails reversing every individual spline, and */ + /* each point */ + + first = NULL; + spline = spl->first->next; + if ( spline==NULL ) +return( spl ); /* Only one point, reversal is meaningless */ + + tp = spline->from->nextcp; + spline->from->nextcp = spline->from->prevcp; + spline->from->prevcp = tp; + bool = spline->from->nonextcp; + spline->from->nonextcp = spline->from->noprevcp; + spline->from->noprevcp = bool; + bool = spline->from->nextcpdef; + spline->from->nextcpdef = spline->from->prevcpdef; + spline->from->prevcpdef = bool; + + for ( ; spline!=NULL && spline!=first; spline=next ) { + next = spline->to->next; + + if ( spline->to!=spl->first ) { /* On a closed spline don't want to reverse the first point twice */ + tp = spline->to->nextcp; + spline->to->nextcp = spline->to->prevcp; + spline->to->prevcp = tp; + bool = spline->to->nonextcp; + spline->to->nonextcp = spline->to->noprevcp; + spline->to->noprevcp = bool; + bool = spline->to->nextcpdef; + spline->to->nextcpdef = spline->to->prevcpdef; + spline->to->prevcpdef = bool; + } + + temp = spline->to; + spline->to = spline->from; + spline->from = temp; + spline->from->next = spline; + spline->to->prev = spline; + SplineRefigure(spline); + if ( first==NULL ) first = spline; + } + + if ( spl->first!=spl->last ) { + temp = spl->first; + spl->first = spl->last; + spl->last = temp; + spl->first->prev = NULL; + spl->last->next = NULL; + } + +return( spl ); +} + +static void SplineSetsUntick(SplineSet *spl) { + Spline *spline, *first; + + while ( spl!=NULL ) { + first = NULL; + spl->first->isintersection = false; + for ( spline=spl->first->next; spline!=first && spline!=NULL; spline = spline->to->next ) { + spline->isticked = false; + spline->isneeded = false; + spline->isunneeded = false; + spline->ishorvert = false; + spline->to->isintersection = false; + if ( first==NULL ) first = spline; + } + spl = spl->next; + } +} + +static void SplineSetTick(SplineSet *spl) { + Spline *spline, *first; + + first = NULL; + for ( spline=spl->first->next; spline!=first && spline!=NULL; spline = spline->to->next ) { + spline->isticked = true; + if ( first==NULL ) first = spline; + } +} + +static SplineSet *SplineSetOfSpline(SplineSet *spl,Spline *search) { + Spline *spline, *first; + + while ( spl!=NULL ) { + first = NULL; + for ( spline=spl->first->next; spline!=first && spline!=NULL; spline = spline->to->next ) { + if ( spline==search ) +return( spl ); + if ( first==NULL ) first = spline; + } + spl = spl->next; + } +return( NULL ); +} + +static int SplineInSplineSet(Spline *spline, SplineSet *spl) { + Spline *first, *s; + + first = NULL; + for ( s = spl->first->next; s!=NULL && s!=first; s = s->to->next ) { + if ( s==spline ) +return( true ); + if ( first==NULL ) first = s; + } +return( false ); +} + +#include "edgelist.h" + +static void EdgeListReverse(EdgeList *es, SplineSet *spl) { + int i; + + if ( es->edges!=NULL ) { + for ( i=0; icnt; ++i ) { + Edge *e; + for ( e = es->edges[i]; e!=NULL; e = e->esnext ) { + if ( SplineInSplineSet(e->spline,spl)) { + e->up = !e->up; + e->t_mmin = 1-e->t_mmin; + e->t_mmax = 1-e->t_mmax; + e->t_cur = 1-e->t_cur; + } + } + } + } +} + +static int SSCheck(SplineSet *base,Edge *active, int up, EdgeList *es,int *changed) { + SplineSet *spl; + if ( active->spline->isticked ) +return( 0 ); + spl = SplineSetOfSpline(base,active->spline); + if ( active->up!=up ) { + SplineSetReverse(spl); + *changed = true; + EdgeListReverse(es,spl); + } + SplineSetTick(spl); +return( 1 ); +} + + +/* The idea behind SplineSetsCorrect is simple. However there are many splinesets */ +/* where it is impossible, so bear in mind that this only works for nice */ +/* splines. Figure 8's, interesecting splines all cause problems */ +/* The outermost spline should be clockwise (up), the next splineset we find */ +/* should be down, if it isn't reverse it (if it's already been dealt with */ +/* then ignore it) */ +SplineSet *SplineSetsCorrect(SplineSet *base,int *changed) { + SplineSet *spl; + int sscnt, check_cnt; + EdgeList es; + DBounds b; + Edge *active=NULL, *apt, *pr, *e; + int i, winding; + + *changed = false; + + SplineSetsUntick(base); + for (sscnt=0,spl=base; spl!=NULL; spl=spl->next, ++sscnt ); + + SplineSetFindBounds(base,&b); + memset(&es,'\0',sizeof(es)); + es.scale = 1.0; + es.mmin = floor(b.miny*es.scale); + es.mmax = ceil(b.maxy*es.scale); + es.omin = b.minx*es.scale; + es.omax = b.maxx*es.scale; + es.layer = ly_fore; /* Not meaningful */ + +/* Give up if we are given unreasonable values (ie. if rounding errors might screw us up) */ + if ( es.mmin<1e5 && es.mmax>-1e5 && es.omin<1e5 && es.omax>-1e5 ) { + es.cnt = (int) (es.mmax-es.mmin) + 1; + es.edges = gcalloc(es.cnt,sizeof(Edge *)); + es.interesting = gcalloc(es.cnt,sizeof(char)); + es.sc = NULL; + es.major = 1; es.other = 0; + FindEdgesSplineSet(base,&es,false); + + check_cnt = 0; + for ( i=0; i0 && es.interesting[i-1]) && !(i>0 && es.edges[i-1]!=NULL) && + !(iup?1:-1; + for ( pr=apt, e=apt->aenext; e!=NULL && winding!=0; pr=e, e=e->aenext ) { + if ( !e->spline->isticked ) + check_cnt += SSCheck(base,e,winding<0,&es,changed); + if ( pr->up!=e->up ) + winding += (e->up?1:-1); + else if ( (pr->before==e || pr->after==e ) && + (( pr->mmax==i && e->mmin==i ) || + ( pr->mmin==i && e->mmax==i )) ) + /* This just continues the line and doesn't change count */; + else + winding += (e->up?1:-1); + } + /* color a horizontal line that comes out of the last vertex */ + if ( e!=NULL && (e->before==pr || e->after==pr) && + (( pr->mmax==i && e->mmin==i ) || + ( pr->mmin==i && e->mmax==i )) ) { + pr = e; + e = e->aenext; + } + } + } + FreeEdges(&es); + } +return( base ); +} + + +int SplinePointListIsClockwise(const SplineSet *spl) { + EIList el; + EI *active=NULL, *apt, *e; + int i, change,waschange; + SplineChar dummy; + SplineSet *next; + int ret = -1, maybe=-1; + Layer layers[2]; + + if ( spl->first!=spl->last || spl->first->next == NULL ) +return( -1 ); /* Open paths, (open paths with only one point are a special case) */ + + memset(&el,'\0',sizeof(el)); + memset(&dummy,'\0',sizeof(dummy)); + memset(layers,0,sizeof(layers)); + el.layer = ly_fore; + dummy.layers = layers; + dummy.layer_cnt = 2; + dummy.layers[ly_fore].splines = (SplineSet *) spl; + next = spl->next; ((SplineSet *) spl)->next = NULL; + ELFindEdges(&dummy,&el); + if ( el.coordmax[1]-el.coordmin[1] > 1.e6 ) { + LogError( _("Warning: Unreasonably big splines. They will be ignored.\n") ); +return( -1 ); + } + el.major = 1; + ELOrder(&el,el.major); + + waschange = false; + for ( i=0; iup; + continue; /* Just too hard to get the edges sorted when we are at a start vertex */ + } + waschange = change; + for ( apt=active; apt!=NULL && ret==-1; apt = e) { + if ( EISkipExtremum(apt,i+el.low,1)) { + e = apt->aenext->aenext; + continue; + } + ret = apt->up; + break; + } + } + free(el.ordered); + free(el.ends); + ElFreeEI(&el); + ((SplineSet *) spl)->next = next; + if ( ret==-1 ) + ret = maybe; +return( ret ); +} diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/start.c b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/start.c new file mode 100644 index 00000000000..71fb1b4ee8d --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/start.c @@ -0,0 +1,77 @@ +/* Copyright (C) 2000-2008 by George Williams */ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "fontforgevw.h" +#include +#include +#include +#include +#include + +int32 unicode_from_adobestd[256]; +struct lconv localeinfo; +char *coord_sep = ","; +const struct unicode_nameannot * const *const *_UnicodeNameAnnot = NULL; + +static void initadobeenc(void) { + int i,j; + + for ( i=0; i<0x100; ++i ) { + if ( strcmp(AdobeStandardEncoding[i],".notdef")==0 ) + unicode_from_adobestd[i] = 0xfffd; + else { + j = UniFromName(AdobeStandardEncoding[i],ui_none,&custom); + if ( j==-1 ) j = 0xfffd; + unicode_from_adobestd[i] = j; + } + } +} + +static void initrand(void) { + struct timeval tv; + + gettimeofday(&tv,NULL); + srand(tv.tv_usec); +} + +void InitSimpleStuff(void) { + initrand(); + initadobeenc(); + + setlocale(LC_ALL,""); + localeinfo = *localeconv(); + coord_sep = ","; + if ( *localeinfo.decimal_point=='.' ) coord_sep=","; + else if ( *localeinfo.decimal_point!='.' ) coord_sep=" "; + + SetDefaults(); +} + +void doversion(const char *source_version_str) { + if ( source_version_str!=NULL ) + printf( "fontforge %s\n", source_version_str ); +exit(0); +} diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/stemdb.c b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/stemdb.c new file mode 100644 index 00000000000..60ecac660d5 --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/stemdb.c @@ -0,0 +1,40 @@ +/* Copyright (C) 2005-2008 by George Williams and Alexey Kryukov */ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "pfaedit.h" +#include "edgelist2.h" +#include "stemdb.h" + +#include +#include + +/* A diagonal end is like the top or bottom of a slash. Should we add a vertical stem at the end? */ +/* A diagonal corner is like the bottom of circumflex. Should we add a horizontal stem? */ +int hint_diagonal_ends = 0, + hint_diagonal_intersections = 0, + hint_bounding_boxes = 1, + detect_diagonal_stems = 0; + diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/stemdb.h b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/stemdb.h new file mode 100644 index 00000000000..83a02842a6a --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/stemdb.h @@ -0,0 +1,210 @@ +/* Copyright (C) 2005-2008 by George Williams */ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef _STEMDB_H_ +# define _STEMDB_H_ + +# include "pfaedit.h" + +typedef struct glyphdata { + SplineFont *sf; + BlueData bd; + int fuzz; + SplineChar *sc; + int layer; + int emsize; + int order2; + int has_slant; + BasePoint slant_unit; + int ccnt; + int *contourends; + int realcnt; /* Includes control points, excludes implied points */ + int norefpcnt; /* Does not include points in glyphs with references */ + int pcnt; /* Includes control points, includes implied points */ + struct pointdata *points; /* Entries corresponding to control points are empty */ + int stemcnt; + struct stemdata *stems; + int linecnt; + struct linedata *lines; + struct stembundle *hbundle; + struct stembundle *vbundle; + struct stembundle *ibundle; + + /* Temporary values, quickly freed */ + int mcnt; + struct monotonic *ms; + struct monotonic **space; + int scnt; + Spline **sspace; + struct st *stspace; + DBounds size; + struct pointdata **pspace; + struct segment { + double start, end, sbase, ebase; + int curved, scurved, ecurved; + } *lspace, *rspace, *bothspace, *activespace; + + int only_hv; +} GlyphData; + +typedef struct pointdata { + SplinePoint *sp; + SplineSet *ss; + int ttfindex; /* normally same as sp->ttfindex, but needed for offcurve points */ + BasePoint base; /* normally same as sp->me, but needed for offcurve points */ + BasePoint nextunit, prevunit; /* unit vectors pointing in the next/prev directions */ + struct linedata *nextline, *prevline; /* any other points lying on approximately the same line */ + Spline *nextedges[2], *prevedges[2]; /* There should always be a matching spline, which may end up as part of a stem, and may not */ + Spline *bothedge; + double next_e_t[2], prev_e_t[2]; /* Location on other edge where our normal hits it */ + double both_e_t; + int next_e_cnt, prev_e_cnt; + double next_dist[2], prev_dist[2]; /* Distance from the point to the matching edge */ + struct stemdata **nextstems, **prevstems; + int *next_is_l, *prev_is_l; + int nextcnt, prevcnt; + double nextlen, prevlen; + int value; /* Temporary value, used to compare points assigned to the same edge and determine which one can be used as a reference point*/ + unsigned int nextlinear: 1; + unsigned int nextzero: 1; + unsigned int prevlinear: 1; + unsigned int prevzero: 1; + unsigned int colinear: 1; + unsigned int symetrical_h: 1; /* Are next & prev symetrical? */ + unsigned int symetrical_v: 1; /* Are next & prev symetrical? */ + unsigned int next_hor: 1; + unsigned int next_ver: 1; + unsigned int prev_hor: 1; + unsigned int prev_ver: 1; + unsigned int ticked: 1; + uint8 touched, affected; + uint8 x_extr, y_extr; + uint8 x_corner, y_corner; + BasePoint newpos; + BasePoint newnext, newprev; + BasePoint posdir; /* If point has been positioned in 1 direction, this is that direction */ + double projection; /* temporary value */ +} PointData; + +typedef struct linedata { + BasePoint unit; + BasePoint online; + uint8 is_left; + int pcnt; + double length; + struct pointdata **points; +} LineData; + +typedef struct stemdata { + BasePoint unit; /* Unit vector pointing in direction of stem */ + BasePoint l_to_r; /* Unit vector pointing from left to right (across stem) */ + BasePoint left; /* a point on one side of the stem (not necissarily left, even for vertical stems) */ + BasePoint right; /* and one on the other */ + BasePoint newunit; /* Unit vector after repositioning (e. g. in Metafont routines) */ + BasePoint newleft, newright;/* Left and right edges after repositioning */ + int leftidx, rightidx; /* TTF indices of the left and right key points */ + struct pointdata *keypts[4];/* Uppest and lowest points on left and right edges. Used for positioning diagonal stems */ + double lmin, lmax, rmin, rmax; + double width; + int chunk_cnt; /* number of separate point-pairs on this stem */ + struct stem_chunk { + struct stemdata *parent; + struct pointdata *l; + struct pointdata *r; + uint8 lpotential, rpotential; + uint8 lnext, rnext; /* are we using the next/prev side of the left/right points */ + uint8 ltick, rtick; + uint8 stub; + uint8 stemcheat; /* It's not a real stem, but it's something we'd like PostScript to hint for us */ + uint8 is_ball; /* Specifies if this chunk marks the opposite sides of a ball terminal (useful for TTF instructions) */ + int l_e_idx, r_e_idx; /* Which of the opposed edges assigned to the left and right points corresponds to this chunk */ + } *chunks; + int activecnt; + struct segment *active; + uint8 toobig; /* Stem is fatter than tall, unlikely to be a real stem */ + uint8 positioned; + uint8 ticked; + uint8 ghost; + uint8 bbox; + uint8 ldone, rdone; + uint8 italic; + int blue; /* Blue zone a ghost hint is attached to */ + double len, clen; /* Length of linear segments. clen adds "length" of curved bits */ + struct stembundle *bundle; + int lpcnt, rpcnt; /* Count of points assigned to left and right edges of this stem */ + struct linedata *leftline, *rightline; + struct stemdata *master, *next_c_m, *prev_c_m; + int confl_cnt; + int dep_cnt; + int serif_cnt; + struct dependent_stem { + struct stemdata *stem; + uint8 lbase; + char dep_type; /* can be 'a' (align), 'i' (interpolate), 'm' (move) or 's' (serif) */ + } *dependent; /* Lists other stems dependent from the given stem */ + struct dependent_serif { + struct stemdata *stem; + double width; /* The distance from an edge of the main stem to the opposite edge of the serif stem */ + uint8 lbase; + uint8 is_ball; + } *serifs; /* Lists serifs and other elements protruding from the base stem */ +} StemData; + +typedef struct vchunk { + struct stem_chunk *chunk; + double dist; + int parallel; + int value; +} VChunk; + +struct stembounds { + struct stembounds *next; + struct stemdata *stem; + double tstart, tend; + uint8 isr; +}; + +struct splinesteminfo { + Spline *s; + struct stembounds *sb; +}; + +typedef struct stembundle { + BasePoint unit; /* All these stems are parallel, pointing in unit direction */ + BasePoint l_to_r; /* Axis along which these stems are ordered (normal to unit) */ + BasePoint bp; /* Base point for measuring by l_to_r (stem->lpos,rpos) */ + int cnt; /* Number of stems in the bundle */ + struct stemdata **stemlist; +} StemBundle; + +extern struct glyphdata *GlyphDataBuild(SplineChar *sc, int layer, BlueData *bd, int use_existing); +extern struct glyphdata *GlyphDataInit(SplineChar *sc, int layer, double em_size, int only_hv); +extern struct glyphdata *StemInfoToStemData( struct glyphdata *gd,StemInfo *si,int is_v ); +extern struct glyphdata *DStemInfoToStemData( struct glyphdata *gd,DStemInfo *dsi ); +extern int IsStemAssignedToPoint( struct pointdata *pd,struct stemdata *stem,int is_next ); +extern void GlyphDataFree(struct glyphdata *gd); + +#endif /* _STEMDB_H_ */ diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/tottf.c b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/tottf.c new file mode 100644 index 00000000000..0a89f32fa0e --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/tottf.c @@ -0,0 +1,2048 @@ +/* Copyright (C) 2000-2008 by George Williams */ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "pfaedit.h" +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef __CygWin + #include + #include + #include +#endif + +#include "ttf.h" + +char *TTFFoundry=NULL; + +/* This file produces a ttf file given a splinefont. */ + +/* ************************************************************************** */ + +/* Required tables: + cmap encoding + head header data + hhea horizontal metrics header data + hmtx horizontal metrics (widths, lsidebearing) + maxp various maxima in the font + name various names associated with the font + post postscript names and other stuff +Required by windows but not mac + OS/2 bleah. +Required for TrueType + loca pointers to the glyphs + glyf character shapes +Required for OpenType (Postscript) + CFF A complete postscript CFF font here with all its internal tables +Required for bitmaps + bdat/EBDT bitmap data + bloc/EBLC pointers to bitmaps + bhed for apple bitmap only fonts, replaces head +Optional for bitmaps + EBSC bitmap scaling table (used in windows "bitmap-only" fonts) +"Advanced Typograpy" + Apple + feat (mapping between morx features and 'name' names) + kern (if data are present) + lcar (ligature caret, if data present) + morx (substitutions, if data present) + prop (glyph properties, if data present) + opbd (optical bounds, if data present) + OpenType + GPOS (opentype, if kern,anchor data are present) + GSUB (opentype, if ligature (other subs) data are present) + GDEF (opentype, if anchor data are present) +MATH + MATH (MS proposal, if math data present) +Apple variation tables (for distortable (multiple master type) fonts) + fvar (font variations) + gvar (glyph variations) + cvar (cvt variations) + avar (axis variations) +additional tables + cvt for hinting + gasp to control when things should be hinted + fpgm for hinting (currently only copied and dumped verbatim) + prep for hinting (currently only copied and dumped verbatim) +FontForge + PfEd My own table +TeX + TeX TeX specific info (stuff that used to live in tfm files) +*/ + +const char *ttfstandardnames[258] = { +".notdef", +".null", +"nonmarkingreturn", +"space", +"exclam", +"quotedbl", +"numbersign", +"dollar", +"percent", +"ampersand", +"quotesingle", +"parenleft", +"parenright", +"asterisk", +"plus", +"comma", +"hyphen", +"period", +"slash", +"zero", +"one", +"two", +"three", +"four", +"five", +"six", +"seven", +"eight", +"nine", +"colon", +"semicolon", +"less", +"equal", +"greater", +"question", +"at", +"A", +"B", +"C", +"D", +"E", +"F", +"G", +"H", +"I", +"J", +"K", +"L", +"M", +"N", +"O", +"P", +"Q", +"R", +"S", +"T", +"U", +"V", +"W", +"X", +"Y", +"Z", +"bracketleft", +"backslash", +"bracketright", +"asciicircum", +"underscore", +"grave", +"a", +"b", +"c", +"d", +"e", +"f", +"g", +"h", +"i", +"j", +"k", +"l", +"m", +"n", +"o", +"p", +"q", +"r", +"s", +"t", +"u", +"v", +"w", +"x", +"y", +"z", +"braceleft", +"bar", +"braceright", +"asciitilde", +"Adieresis", +"Aring", +"Ccedilla", +"Eacute", +"Ntilde", +"Odieresis", +"Udieresis", +"aacute", +"agrave", +"acircumflex", +"adieresis", +"atilde", +"aring", +"ccedilla", +"eacute", +"egrave", +"ecircumflex", +"edieresis", +"iacute", +"igrave", +"icircumflex", +"idieresis", +"ntilde", +"oacute", +"ograve", +"ocircumflex", +"odieresis", +"otilde", +"uacute", +"ugrave", +"ucircumflex", +"udieresis", +"dagger", +"degree", +"cent", +"sterling", +"section", +"bullet", +"paragraph", +"germandbls", +"registered", +"copyright", +"trademark", +"acute", +"dieresis", +"notequal", +"AE", +"Oslash", +"infinity", +"plusminus", +"lessequal", +"greaterequal", +"yen", +"mu", +"partialdiff", +"summation", +"product", +"pi", +"integral", +"ordfeminine", +"ordmasculine", +"Omega", +"ae", +"oslash", +"questiondown", +"exclamdown", +"logicalnot", +"radical", +"florin", +"approxequal", +"Delta", +"guillemotleft", +"guillemotright", +"ellipsis", +"nonbreakingspace", +"Agrave", +"Atilde", +"Otilde", +"OE", +"oe", +"endash", +"emdash", +"quotedblleft", +"quotedblright", +"quoteleft", +"quoteright", +"divide", +"lozenge", +"ydieresis", +"Ydieresis", +"fraction", +"currency", +"guilsinglleft", +"guilsinglright", +"fi", +"fl", +"daggerdbl", +"periodcentered", +"quotesinglbase", +"quotedblbase", +"perthousand", +"Acircumflex", +"Ecircumflex", +"Aacute", +"Edieresis", +"Egrave", +"Iacute", +"Icircumflex", +"Idieresis", +"Igrave", +"Oacute", +"Ocircumflex", +"apple", +"Ograve", +"Uacute", +"Ucircumflex", +"Ugrave", +"dotlessi", +"circumflex", +"tilde", +"macron", +"breve", +"dotaccent", +"ring", +"cedilla", +"hungarumlaut", +"ogonek", +"caron", +"Lslash", +"lslash", +"Scaron", +"scaron", +"Zcaron", +"zcaron", +"brokenbar", +"Eth", +"eth", +"Yacute", +"yacute", +"Thorn", +"thorn", +"minus", +"multiply", +"onesuperior", +"twosuperior", +"threesuperior", +"onehalf", +"onequarter", +"threequarters", +"franc", +"Gbreve", +"gbreve", +"Idotaccent", +"Scedilla", +"scedilla", +"Cacute", +"cacute", +"Ccaron", +"ccaron", +"dcroat" +}; + + +void putshort(FILE *file,int sval) { + putc((sval>>8)&0xff,file); + putc(sval&0xff,file); +} + +void putlong(FILE *file,int val) { + putc((val>>24)&0xff,file); + putc((val>>16)&0xff,file); + putc((val>>8)&0xff,file); + putc(val&0xff,file); +} +#define dumpabsoffset putlong + +static void dumpoffset(FILE *file,int offsize,int val) { + if ( offsize==1 ) + putc(val,file); + else if ( offsize==2 ) + putshort(file,val); + else if ( offsize==3 ) { + putc((val>>16)&0xff,file); + putc((val>>8)&0xff,file); + putc(val&0xff,file); + } else + putlong(file,val); +} + +void putfixed(FILE *file,real dval) { + int val; + int mant; + + val = floor(dval); + mant = floor(65536.*(dval-val)); + val = (val<<16) | mant; + putlong(file,val); +} + +int ttfcopyfile(FILE *ttf, FILE *other, int pos, char *tab_name) { + int ch; + int ret = 1; + + if ( ferror(ttf) || ferror(other)) { + IError("Disk error of some nature. Perhaps no space on device?\nGenerated font will be unusable" ); + } else if ( pos!=ftell(ttf)) { + IError("File Offset wrong for ttf table (%s), %d expected %d", tab_name, ftell(ttf), pos ); + } + rewind(other); + while (( ch = getc(other))!=EOF ) + putc(ch,ttf); + if ( ferror(other)) ret = 0; + if ( fclose(other)) ret = 0; +return( ret ); +} + +static void FigureFullMetricsEnd(SplineFont *sf,struct glyphinfo *gi, int istt ) { + /* We can reduce the size of the width array by removing a run at the end */ + /* of the same width. So start at the end, find the width of the last */ + /* character we'll output, then run backwards as long as we've got the */ + /* same width */ + /* (do same thing for vertical metrics too */ + int i, lasti, lastv, lastdefault = istt ? 3 : 1; + int width, vwidth; + + lasti = lastv = gi->gcnt-1; + for ( i=gi->gcnt-1; i>lastdefault && gi->bygid[i]==-1; --i ); + if ( i>=lastdefault ) { + width = sf->glyphs[gi->bygid[i]]->width; + vwidth = sf->glyphs[gi->bygid[i]]->vwidth; + lasti = lastv = i; + for ( i=lasti-1; i>=lastdefault; --i ) { + if ( SCWorthOutputting(sf->glyphs[gi->bygid[i]]) ) { + if ( sf->glyphs[gi->bygid[i]]->width!=width ) + break; + else + lasti = i; + } + } + gi->lasthwidth = lasti; + if ( sf->hasvmetrics ) { + for ( i=lastv-1; i>=lastdefault; --i ) { + if ( SCWorthOutputting(sf->glyphs[gi->bygid[i]]) ) { + if ( sf->glyphs[gi->bygid[i]]->vwidth!=vwidth ) + break; + else + lastv = i; + } + } + gi->lastvwidth = lastv; + } + } else { + gi->lasthwidth = 0; + gi->lastvwidth = 0; + } +} + + +#define _On_Curve 1 +#define _X_Short 2 +#define _Y_Short 4 +#define _Repeat 8 +#define _X_Same 0x10 +#define _Y_Same 0x20 + +int RefDepth(RefChar *ref,int layer) { + int rd, temp; + SplineChar *sc = ref->sc; + + if ( sc->layers[layer].refs==NULL || sc->layers[layer].splines!=NULL ) +return( 1 ); + rd = 0; + for ( ref = sc->layers[layer].refs; ref!=NULL; ref=ref->next ) { + if ( ref->transform[0]>=-2 || ref->transform[0]<=1.999939 || + ref->transform[1]>=-2 || ref->transform[1]<=1.999939 || + ref->transform[2]>=-2 || ref->transform[2]<=1.999939 || + ref->transform[3]>=-2 || ref->transform[3]<=1.999939 ) { + temp = RefDepth(ref,layer); + if ( temp>rd ) rd = temp; + } + } +return( rd+1 ); +} + +void SFDummyUpCIDs(struct glyphinfo *gi,SplineFont *sf) { + int i,j,k,max; + int *bygid; + + max = 0; + for ( k=0; ksubfontcnt; ++k ) + if ( sf->subfonts[k]->glyphcnt>max ) max = sf->subfonts[k]->glyphcnt; + if ( max == 0 ) +return; + + sf->glyphs = gcalloc(max,sizeof(SplineChar *)); + sf->glyphcnt = sf->glyphmax = max; + for ( k=0; ksubfontcnt; ++k ) + for ( i=0; isubfonts[k]->glyphcnt; ++i ) if ( sf->subfonts[k]->glyphs[i]!=NULL ) + sf->glyphs[i] = sf->subfonts[k]->glyphs[i]; + + if ( gi==NULL ) +return; + + bygid = galloc((sf->glyphcnt+3)*sizeof(int)); + memset(bygid,0xff, (sf->glyphcnt+3)*sizeof(int)); + + j=1; + for ( i=0; iglyphcnt; ++i ) if ( sf->glyphs[i]!=NULL ) { + if ( bygid[0]== -1 && strcmp(sf->glyphs[i]->name,".notdef")==0 ) { + sf->glyphs[i]->ttf_glyph = 0; + bygid[0] = i; + } else if ( SCWorthOutputting(sf->glyphs[i])) { + sf->glyphs[i]->ttf_glyph = j; + bygid[j++] = i; + } + } + gi->bygid = bygid; + gi->gcnt = j; +} + +static void AssignNotdefNull(SplineFont *sf,int *bygid, int iscff) { + int i; + + /* The first three glyphs are magic, glyph 0 is .notdef */ + /* glyph 1 is .null and glyph 2 is nonmarking return */ + /* We may generate them automagically */ + + bygid[0] = bygid[1] = bygid[2] = -1; + for ( i=0; iglyphcnt; ++i ) if ( sf->glyphs[i]!=NULL ) { + if ( bygid[0]== -1 && strcmp(sf->glyphs[i]->name,".notdef")==0 ) { + sf->glyphs[i]->ttf_glyph = 0; + bygid[0] = i; + } else if ( !iscff && bygid[1]== -1 && + (strcmp(sf->glyphs[i]->name,".null")==0 || + strcmp(sf->glyphs[i]->name,"uni0000")==0 || + (i==1 && strcmp(sf->glyphs[1]->name,"glyph1")==0)) ) { + sf->glyphs[i]->ttf_glyph = 1; + bygid[1] = i; + } else if ( !iscff && bygid[2]== -1 && + (strcmp(sf->glyphs[i]->name,"nonmarkingreturn")==0 || + strcmp(sf->glyphs[i]->name,"uni000D")==0 || + (i==2 && strcmp(sf->glyphs[2]->name,"glyph2")==0)) ) { + sf->glyphs[i]->ttf_glyph = 2; + bygid[2] = i; + } + } +} + +static int AssignTTFGlyph(struct glyphinfo *gi,SplineFont *sf,EncMap *map,int iscff) { + int *bygid = galloc((sf->glyphcnt+3)*sizeof(int)); + int i,j; + + memset(bygid,0xff, (sf->glyphcnt+3)*sizeof(int)); + + AssignNotdefNull(sf,bygid,iscff); + + j = iscff ? 1 : 3; + for ( i=0; ienccount; ++i ) if ( map->map[i]!=-1 ) { + SplineChar *sc = sf->glyphs[map->map[i]]; + if ( SCWorthOutputting(sc) && sc->ttf_glyph==-1 +#if HANYANG + && (!iscff || !sc->compositionunit) +#endif + ) { + sc->ttf_glyph = j; + bygid[j++] = sc->orig_pos; + } + } + + for ( i=0; iglyphcnt; ++i ) if ( sf->glyphs[i]!=NULL ) { + SplineChar *sc = sf->glyphs[i]; + if ( SCWorthOutputting(sc) && sc->ttf_glyph==-1 +#if HANYANG + && (!iscff || !sc->compositionunit) +#endif + ) { + sc->ttf_glyph = j; + bygid[j++] = i; + } + } + gi->bygid = bygid; + gi->gcnt = j; +return j; +} + +/* Standard names for cff */ +extern const char *cffnames[]; +extern const int nStdStrings; + +static int storesid(struct alltabs *at,char *str) { + int i; + FILE *news; + char *pt; + long pos; + + if ( str!=NULL ) { /* NULL is the magic string at end of array */ + for ( i=0; cffnames[i]!=NULL; ++i ) { + if ( strcmp(cffnames[i],str)==0 ) +return( i ); + } + } + + pos = ftell(at->sidf)+1; + if ( pos>=65536 && !at->sidlongoffset ) { + at->sidlongoffset = true; + news = tmpfile(); + rewind(at->sidh); + for ( i=0; isidcnt; ++i ) + putlong(news,getushort(at->sidh)); + fclose(at->sidh); + at->sidh = news; + } + if ( at->sidlongoffset ) + putlong(at->sidh,pos); + else + putshort(at->sidh,pos); + + if ( str!=NULL ) { + for ( pt=str; *pt; ++pt ) + putc(*pt,at->sidf); + } +return( at->sidcnt++ + nStdStrings ); +} + +static void dumpint(FILE *cfff,int num) { + + if ( num>=-107 && num<=107 ) + putc(num+139,cfff); + else if ( num>=108 && num<=1131 ) { + num -= 108; + putc((num>>8)+247,cfff); + putc(num&0xff,cfff); + } else if ( num>=-1131 && num<=-108 ) { + num = -num; + num -= 108; + putc((num>>8)+251,cfff); + putc(num&0xff,cfff); + } else if ( num>=-32768 && num<32768 ) { + putc(28,cfff); + putc(num>>8,cfff); + putc(num&0xff,cfff); + } else { /* In dict data we have 4 byte ints, in type2 strings we don't */ + putc(29,cfff); + putc((num>>24)&0xff,cfff); + putc((num>>16)&0xff,cfff); + putc((num>>8)&0xff,cfff); + putc(num&0xff,cfff); + } +} + +static void dumpdbl(FILE *cfff,double d) { + if ( d-rint(d)>-.00001 && d-rint(d)<.00001 ) + dumpint(cfff,(int) d); + else { + /* The type2 strings have a fixed format, but the dict data does not */ + char buffer[20], *pt; + int sofar,n,odd; + sprintf( buffer, "%g", d); + sofar = 0; odd=true; + putc(30,cfff); /* Start a double */ + for ( pt=buffer; *pt; ++pt ) { + if ( isdigit(*pt) ) + n = *pt-'0'; + else if ( *pt=='.' ) + n = 0xa; + else if ( *pt=='-' ) + n = 0xe; + else if (( *pt=='E' || *pt=='e') && pt[1]=='-' ) { + n = 0xc; + ++pt; + } else if ( *pt=='E' || *pt=='e') + n = 0xb; + else + n = 0; /* Should never happen */ + if ( odd ) { + sofar = n<<4; + odd = false; + } else { + putc(sofar|n,cfff); + sofar=0; + odd = true; + } + } + if ( sofar==0 ) + putc(0xff,cfff); + else + putc(sofar|0xf,cfff); + } +} + +static void dumpoper(FILE *cfff,int oper ) { + if ( oper!=-1 ) { + if ( oper>=256 ) + putc(oper>>8,cfff); + putc(oper&0xff,cfff); + } +} + +static void dumpdbloper(FILE *cfff,double d, int oper ) { + dumpdbl(cfff,d); + dumpoper(cfff,oper); +} + +static void dumpintoper(FILE *cfff,int v, int oper ) { + dumpint(cfff,v); + dumpoper(cfff,oper); +} + +static void dumpsizedint(FILE *cfff,int big,int num, int oper ) { + if ( big ) { + putc(29,cfff); + putc((num>>24)&0xff,cfff); + putc((num>>16)&0xff,cfff); + putc((num>>8)&0xff,cfff); + putc(num&0xff,cfff); + } else { + putc(28,cfff); + putc(num>>8,cfff); + putc(num&0xff,cfff); + } + dumpoper(cfff,oper); +} + +static void dumpsid(FILE *cfff,struct alltabs *at,char *str,int oper) { + if ( str==NULL ) +return; + dumpint(cfff,storesid(at,str)); + dumpoper(cfff,oper); +} + +static void DumpStrDouble(char *pt,FILE *cfff,int oper) { + real d; + if ( *pt=='[' ) ++pt; /* For StdHW, StdVW */ + d = strtod(pt,NULL); + dumpdbloper(cfff,d,oper); +} + +static void DumpDblArray(real *arr,int n,FILE *cfff, int oper) { + int mi,i; + + for ( mi=n-1; mi>=0 && arr[mi]==0; --mi ); + if ( mi<0 ) +return; + dumpdbl(cfff,arr[0]); + for ( i=1; i<=mi; ++i ) + dumpdbl(cfff,arr[i]-arr[i-1]); + dumpoper(cfff,oper); +} + +static void DumpStrArray(char *pt,FILE *cfff,int oper) { + real d, last=0; + char *end; + + while ( *pt==' ' ) ++pt; + if ( *pt=='\0' ) +return; + if ( *pt=='[' ) ++pt; + while ( *pt==' ' ) ++pt; + while ( *pt!=']' && *pt!='\0' ) { + d = strtod(pt,&end); + if ( pt==end ) /* User screwed up. Should be a number */ + break; + dumpdbl(cfff,d-last); + last = d; + pt = end; + while ( *pt==' ' ) ++pt; + } + dumpoper(cfff,oper); +} + +static void dumpcffheader(SplineFont *sf,FILE *cfff) { + putc('\1',cfff); /* Major version: 1 */ + putc('\0',cfff); /* Minor version: 0 */ + putc('\4',cfff); /* Header size in bytes */ + putc('\4',cfff); /* Absolute Offset size. */ + /* I don't think there are any absolute offsets that aren't encoded */ + /* in a dict as numbers (ie. inherently variable sized items) */ +} + +static void dumpcffnames(SplineFont *sf,FILE *cfff) { + char *pt; + + putshort(cfff,1); /* One font name */ + putc('\1',cfff); /* Offset size */ + putc('\1',cfff); /* Offset to first name */ + putc('\1'+strlen(sf->fontname),cfff); + for ( pt=sf->fontname; *pt; ++pt ) + putc(*pt,cfff); +} + +static void dumpcffcharset(SplineFont *sf,struct alltabs *at) { + int i; + + at->gn_sid = gcalloc(at->gi.gcnt,sizeof(uint32)); + putc(0,at->charset); + /* I always use a format 0 charset. ie. an array of SIDs in random order */ + + /* First element must be ".notdef" and is omitted */ + + for ( i=1; igi.gcnt; ++i ) + if ( at->gi.bygid[i]!=-1 && SCWorthOutputting(sf->glyphs[at->gi.bygid[i]])) { + at->gn_sid[i] = storesid(at,sf->glyphs[at->gi.bygid[i]]->name); + putshort(at->charset,at->gn_sid[i]); + } +} + +static void dumpcffcidset(SplineFont *sf,struct alltabs *at) { + int gid, start; + + putc(2,at->charset); + + start = -1; /* Glyph 0 always maps to CID 0, and is omitted */ + for ( gid = 1; gidgi.gcnt; ++gid ) { + if ( start==-1 ) + start = gid; + else if ( at->gi.bygid[gid]-at->gi.bygid[start]!=gid-start ) { + putshort(at->charset,at->gi.bygid[start]); + putshort(at->charset,at->gi.bygid[gid-1]-at->gi.bygid[start]); + start = gid; + } + } + if ( start!=-1 ) { + putshort(at->charset,at->gi.bygid[start]); + putshort(at->charset,at->gi.bygid[gid-1]-at->gi.bygid[start]); + } +} + +static void dumpcfffdselect(SplineFont *sf,struct alltabs *at) { + int cid, k, lastfd, cnt; + int gid; + + putc(3,at->fdselect); + putshort(at->fdselect,0); /* number of ranges, fill in later */ + + for ( k=0; ksubfontcnt; ++k ) + if ( SCWorthOutputting(sf->subfonts[k]->glyphs[0])) + break; + if ( k==sf->subfontcnt ) --k; /* If CID 0 not defined, put it in last font */ + putshort(at->fdselect,0); + putc(k,at->fdselect); + lastfd = k; + cnt = 1; + for ( gid = 1; gidgi.gcnt; ++gid ) { + cid = at->gi.bygid[gid]; + for ( k=0; ksubfontcnt; ++k ) { + if ( cidsubfonts[k]->glyphcnt && + SCWorthOutputting(sf->subfonts[k]->glyphs[cid]) ) + break; + } + if ( k==sf->subfontcnt ) + /* Doesn't map to a glyph, irrelevant */; + else { + if ( k!=lastfd ) { + putshort(at->fdselect,gid); + putc(k,at->fdselect); + lastfd = k; + ++cnt; + } + } + } + putshort(at->fdselect,gid); + fseek(at->fdselect,1,SEEK_SET); + putshort(at->fdselect,cnt); + fseek(at->fdselect,0,SEEK_END); +} + +static void dumpcffencoding(SplineFont *sf,struct alltabs *at) { + int i, cnt, anydups; + uint32 start_pos = ftell(at->encoding); + SplineChar *sc; + EncMap *map = at->map; + + putc(0,at->encoding); + /* I always use a format 0 encoding. ie. an array of glyph indexes */ + putc(0xff,at->encoding); /* fixup later */ + + for ( i=0; iglyphcnt; ++i ) if ( sf->glyphs[i]!=NULL ) + sf->glyphs[i]->ticked = false; + + cnt = 0; + anydups = 0; + for ( i=0; i<256 && ienccount; ++i ) if ( map->map[i]!=-1 && (sc=sf->glyphs[map->map[i]])!=NULL ) { + if ( sc->ttf_glyph>255 ) + continue; + if ( sc->ticked ) { + ++anydups; + } else if ( sc->ttf_glyph>0 ) { + if ( cnt>=255 ) + break; + putc(i,at->encoding); + ++cnt; + sc->ticked = true; + } + } + if ( anydups ) { + fseek(at->encoding,start_pos,SEEK_SET); + putc(0x80,at->encoding); + putc(cnt,at->encoding); + fseek(at->encoding,0,SEEK_END); + putc(anydups,at->encoding); + + for ( i=0; iglyphcnt; ++i ) if ( sf->glyphs[i]!=NULL ) + sf->glyphs[i]->ticked = false; + for ( i=0; i<256 && ienccount; ++i ) if ( map->map[i]!=-1 && (sc=sf->glyphs[map->map[i]])!=NULL ) { + if ( sc->ttf_glyph>255 ) + continue; + if ( sc->ticked ) { + putc(i,at->encoding); + putshort(at->encoding,at->gn_sid[sc->ttf_glyph]); + } + sc->ticked = true; + } + } else { + fseek(at->encoding,start_pos+1,SEEK_SET); + putc(cnt,at->encoding); + fseek(at->encoding,0,SEEK_END); + } + free( at->gn_sid ); + at->gn_sid = NULL; +} + +static void _dumpcffstrings(FILE *file, struct pschars *strs) { + int i, len, offsize; + + /* First figure out the offset size */ + len = 1; + for ( i=0; inext; ++i ) + len += strs->lens[i]; + + /* Then output the index size and offsets */ + putshort( file, strs->next ); + if ( strs->next!=0 ) { + /* presumably offsets are unsigned. But the docs don't state this in the obvious place */ + offsize = len<=255?1:len<=65535?2:len<=0xffffff?3:4; + putc(offsize,file); + len = 1; + for ( i=0; inext; ++i ) { + dumpoffset(file,offsize,len); + len += strs->lens[i]; + } + dumpoffset(file,offsize,len); + + /* last of all the strings */ + for ( i=0; inext; ++i ) { + uint8 *pt = strs->values[i], *end = pt+strs->lens[i]; + while ( ptglyphcnt; ++i ) + if ( SCWorthOutputting(sf->glyphs[i]) ) { + if ( maxwglyphs[i]->width ) maxw = sf->glyphs[i]->width; + if ( sameval == 0x8000000 ) + sameval = sf->glyphs[i]->width; + else if ( sameval!=sf->glyphs[i]->width ) + allsame = false; + } + if ( allsame ) { + nomwid = defwid = sameval; + } else { + ++maxw; + if ( maxw>65535 ) maxw = 3*(sf->ascent+sf->descent); + widths = gcalloc(maxw,sizeof(uint16)); + cumwid = gcalloc(maxw,sizeof(uint32)); + defwid = 0; cnt=0; + for ( i=0; iglyphcnt; ++i ) + if ( SCWorthOutputting(sf->glyphs[i]) && + sf->glyphs[i]->width>=0 && + sf->glyphs[i]->widthglyphs[i]->width] > cnt ) { + defwid = sf->glyphs[i]->width; + cnt = widths[defwid]; + } + widths[defwid] = 0; + for ( i=0; i=0 && i+jdefwid = defwid; + else + at->fds[subfont].defwid = defwid; + if ( subfont==-1 ) + at->nomwid = nomwid; + else + at->fds[subfont].nomwid = nomwid; +} + +static void dumpcffprivate(SplineFont *sf,struct alltabs *at,int subfont, + int subrcnt) { + char *pt; + FILE *private = subfont==-1?at->private:at->fds[subfont].private; + int mi,i; + real bluevalues[14], otherblues[10]; + real snapcnt[12]; + real stemsnaph[12], stemsnapv[12]; + real stdhw[1], stdvw[1]; + int hasblue=0, hash=0, hasv=0, bs; + int nomwid, defwid; + EncMap *map = at->map; + double bluescale; + + /* The private dict is not in an index, so no index header. Just the data */ + + if ( subfont==-1 ) + defwid = at->defwid; + else + defwid = at->fds[subfont].defwid; + dumpintoper(private,defwid,20); /* Default Width */ + if ( subfont==-1 ) + nomwid = at->nomwid; + else + nomwid = at->fds[subfont].nomwid; + dumpintoper(private,nomwid,21); /* Nominative Width */ + + bs = SplineFontIsFlexible(sf,at->gi.layer,at->gi.flags); + hasblue = PSDictHasEntry(sf->private,"BlueValues")!=NULL; + hash = PSDictHasEntry(sf->private,"StdHW")!=NULL; + hasv = PSDictHasEntry(sf->private,"StdVW")!=NULL; + ff_progress_change_stages(2+autohint_before_generate+!hasblue); + + otherblues[0] = otherblues[1] = bluevalues[0] = bluevalues[1] = 0; + if ( !hasblue ) { + FindBlues(sf,at->gi.layer,bluevalues,otherblues); + ff_progress_next_stage(); + } + + stdhw[0] = stdvw[0] = 0; + if ( !hash ) { + FindHStems(sf,stemsnaph,snapcnt); + mi = -1; + for ( i=0; stemsnaph[i]!=0 && i<12; ++i ) + if ( mi==-1 ) mi = i; + else if ( snapcnt[i]>snapcnt[mi] ) mi = i; + if ( mi!=-1 ) stdhw[0] = stemsnaph[mi]; + } + + if ( !hasv ) { + FindVStems(sf,stemsnapv,snapcnt); + mi = -1; + for ( i=0; stemsnapv[i]!=0 && i<12; ++i ) + if ( mi==-1 ) mi = i; + else if ( snapcnt[i]>snapcnt[mi] ) mi = i; + if ( mi!=-1 ) stdvw[0] = stemsnapv[mi]; + } + ff_progress_change_line1(_("Saving OpenType Font")); + + if ( hasblue ) + DumpStrArray(PSDictHasEntry(sf->private,"BlueValues"),private,6); + else + DumpDblArray(bluevalues,sizeof(bluevalues)/sizeof(bluevalues[0]),private,6); + if ( (pt=PSDictHasEntry(sf->private,"OtherBlues"))!=NULL ) + DumpStrArray(pt,private,7); + else if ( !hasblue ) + DumpDblArray(otherblues,sizeof(otherblues)/sizeof(otherblues[0]),private,7); + if ( (pt=PSDictHasEntry(sf->private,"FamilyBlues"))!=NULL ) + DumpStrArray(pt,private,8); + bluescale = BlueScaleFigure(sf->private,bluevalues,otherblues); + if ( (pt=PSDictHasEntry(sf->private,"FamilyOtherBlues"))!=NULL ) + DumpStrArray(pt,private,9); + if ( (pt=PSDictHasEntry(sf->private,"BlueScale"))!=NULL ) + DumpStrDouble(pt,private,(12<<8)+9); + else if ( bluescale!=-1 ) + dumpdbloper(private,bluescale,(12<<8)+9); + if ( (pt=PSDictHasEntry(sf->private,"BlueShift"))!=NULL ) + DumpStrDouble(pt,private,(12<<8)+10); + else + dumpintoper(private,bs,(12<<8)+10); + if ( (pt=PSDictHasEntry(sf->private,"BlueFuzz"))!=NULL ) + DumpStrDouble(pt,private,(12<<8)+11); + if ( hash ) { + DumpStrDouble(PSDictHasEntry(sf->private,"StdHW"),private,10); + if ( (pt=PSDictHasEntry(sf->private,"StemSnapH"))!=NULL ) + DumpStrArray(pt,private,(12<<8)|12); + } else { + if ( stdhw[0]!=0 ) + dumpdbloper(private,stdhw[0],10); + DumpDblArray(stemsnaph,sizeof(stemsnaph)/sizeof(stemsnaph[0]),private,(12<<8)|12); + } + if ( hasv ) { + DumpStrDouble(PSDictHasEntry(sf->private,"StdVW"),private,11); + if ( (pt=PSDictHasEntry(sf->private,"StemSnapV"))!=NULL ) + DumpStrArray(pt,private,(12<<8)|13); + } else { + if ( stdvw[0]!=0 ) + dumpdbloper(private,stdvw[0],11); + DumpDblArray(stemsnapv,sizeof(stemsnapv)/sizeof(stemsnapv[0]),private,(12<<8)|13); + } + if ( (pt=PSDictHasEntry(sf->private,"ForceBold"))!=NULL ) { + dumpintoper(private,*pt=='t'||*pt=='T',(12<<8)|14); + } else if ( sf->weight!=NULL && + (strstrmatch(sf->weight,"Bold")!=NULL || + strstrmatch(sf->weight,"Demi")!=NULL || + strstrmatch(sf->weight,"Fett")!=NULL || + strstrmatch(sf->weight,"Gras")!=NULL || + strstrmatch(sf->weight,"Heavy")!=NULL || + strstrmatch(sf->weight,"Black")!=NULL)) + dumpintoper(private,1,(12<<8)|14); + if ( (pt=PSDictHasEntry(sf->private,"LanguageGroup"))!=NULL ) + DumpStrDouble(pt,private,(12<<8)+17); + else if ( map->enc->is_japanese || + map->enc->is_korean || + map->enc->is_tradchinese || + map->enc->is_simplechinese ) + dumpintoper(private,1,(12<<8)|17); + if ( (pt=PSDictHasEntry(sf->private,"ExpansionFactor"))!=NULL ) + DumpStrDouble(pt,private,(12<<8)+18); + if ( subrcnt!=0 ) + dumpsizedint(private,false,ftell(private)+3+1,19); /* Subrs */ + + if ( subfont==-1 ) + at->privatelen = ftell(private); + else + at->fds[subfont].privatelen = ftell(private); +} + +/* When we exit this the topdict is not complete, we still need to fill in */ +/* values for charset,encoding,charstrings and private. Then we need to go */ +/* back and fill in the table length (at lenpos) */ +static void dumpcfftopdict(SplineFont *sf,struct alltabs *at) { + char *pt, *end; + FILE *cfff = at->cfff; + DBounds b; + + putshort(cfff,1); /* One top dict */ + putc('\2',cfff); /* Offset size */ + putshort(cfff,1); /* Offset to topdict */ + at->lenpos = ftell(cfff); + putshort(cfff,0); /* placeholder for final position (final offset in index points beyond last element) */ + dumpsid(cfff,at,sf->version,0); + dumpsid(cfff,at,sf->copyright,1); + dumpsid(cfff,at,sf->fullname?sf->fullname:sf->fontname,2); + dumpsid(cfff,at,sf->familyname,3); + dumpsid(cfff,at,sf->weight,4); + if ( at->gi.fixed_width!=-1 ) dumpintoper(cfff,1,(12<<8)|1); + if ( sf->italicangle!=0 ) dumpdbloper(cfff,sf->italicangle,(12<<8)|2); + if ( sf->upos!=-100 ) dumpdbloper(cfff,sf->upos,(12<<8)|3); + if ( sf->uwidth!=50 ) dumpdbloper(cfff,sf->uwidth,(12<<8)|4); + if ( sf->strokedfont ) { + dumpintoper(cfff,2,(12<<8)|5); + dumpdbloper(cfff,sf->strokewidth,(12<<8)|8); + } + /* We'll never set CharstringType */ + if ( sf->ascent+sf->descent!=1000 ) { + dumpdbl(cfff,1.0/(sf->ascent+sf->descent)); + dumpint(cfff,0); + dumpint(cfff,0); + dumpdbl(cfff,1.0/(sf->ascent+sf->descent)); + dumpint(cfff,0); + dumpintoper(cfff,0,(12<<8)|7); + } + if ( sf->uniqueid!=-1 && sf->use_uniqueid ) + dumpintoper(cfff, sf->uniqueid?sf->uniqueid:4000000 + (rand()&0x3ffff), 13 ); + SplineFontLayerFindBounds(sf,at->gi.layer,&b); + at->gi.xmin = b.minx; + at->gi.ymin = b.miny; + at->gi.xmax = b.maxx; + at->gi.ymax = b.maxy; + dumpdbl(cfff,floor(b.minx)); + dumpdbl(cfff,floor(b.miny)); + dumpdbl(cfff,ceil(b.maxx)); + dumpdbloper(cfff,ceil(b.maxy),5); + /* We'll never set StrokeWidth */ + if ( sf->xuid!=NULL && sf->use_xuid ) { + pt = sf->xuid; if ( *pt=='[' ) ++pt; + while ( *pt && *pt!=']' ) { + dumpint(cfff,strtol(pt,&end,10)); + if ( pt==end ) /* garbage in XUID */ + break; + for ( pt = end; *pt==' '; ++pt ); + } + putc(14,cfff); + if ( sf->changed_since_xuidchanged ) + SFIncrementXUID(sf); + } + /* Offset to charset (oper=15) needed here */ + /* Offset to encoding (oper=16) needed here (not for CID )*/ + /* Offset to charstrings (oper=17) needed here */ + /* Length of, and Offset to private (oper=18) needed here (not for CID )*/ +} + +static int dumpcffdict(SplineFont *sf,struct alltabs *at) { + FILE *fdarray = at->fdarray; + int pstart; + /* according to the PSRef Man v3, only fontname, fontmatrix and private */ + /* appear in this dictionary */ + + dumpsid(fdarray,at,sf->fontname,(12<<8)|38); + if ( sf->ascent+sf->descent!=1000 ) { + dumpdbl(fdarray,1.0/(sf->ascent+sf->descent)); + dumpint(fdarray,0); + dumpint(fdarray,0); + dumpdbl(fdarray,1.0/(sf->ascent+sf->descent)); + dumpint(fdarray,0); + dumpintoper(fdarray,0,(12<<8)|7); + } + pstart = ftell(fdarray); + dumpsizedint(fdarray,false,0,-1); /* private length */ + dumpsizedint(fdarray,true,0,18); /* private offset */ +return( pstart ); +} + +static void dumpcffdictindex(SplineFont *sf,struct alltabs *at) { + int i; + int pos; + + putshort(at->fdarray,sf->subfontcnt); + putc('\2',at->fdarray); /* DICTs aren't very big, and there are at most 255 */ + putshort(at->fdarray,1); /* Offset to first dict */ + for ( i=0; isubfontcnt; ++i ) + putshort(at->fdarray,0); /* Dump offset placeholders (note there's one extra to mark the end) */ + pos = ftell(at->fdarray)-1; + for ( i=0; isubfontcnt; ++i ) { + at->fds[i].fillindictmark = dumpcffdict(sf->subfonts[i],at); + at->fds[i].eodictmark = ftell(at->fdarray); + if ( at->fds[i].eodictmark>65536 ) + IError("The DICT INDEX got too big, result won't work"); + } + fseek(at->fdarray,2*sizeof(short)+sizeof(char),SEEK_SET); + for ( i=0; isubfontcnt; ++i ) + putshort(at->fdarray,at->fds[i].eodictmark-pos); + fseek(at->fdarray,0,SEEK_END); +} + +static void dumpcffcidtopdict(SplineFont *sf,struct alltabs *at) { + char *pt, *end; + FILE *cfff = at->cfff; + DBounds b; + int cidcnt=0, k; + + for ( k=0; ksubfontcnt; ++k ) + if ( sf->subfonts[k]->glyphcnt>cidcnt ) cidcnt = sf->subfonts[k]->glyphcnt; + + putshort(cfff,1); /* One top dict */ + putc('\2',cfff); /* Offset size */ + putshort(cfff,1); /* Offset to topdict */ + at->lenpos = ftell(cfff); + putshort(cfff,0); /* placeholder for final position */ + dumpsid(cfff,at,sf->cidregistry,-1); + dumpsid(cfff,at,sf->ordering,-1); + dumpintoper(cfff,sf->supplement,(12<<8)|30); /* ROS operator must be first */ + dumpdbloper(cfff,sf->cidversion,(12<<8)|31); + dumpintoper(cfff,cidcnt,(12<<8)|34); + if ( sf->use_uniqueid ) + dumpintoper(cfff, sf->uniqueid?sf->uniqueid:4000000 + (rand()&0x3ffff), (12<<8)|35 ); + + dumpsid(cfff,at,sf->copyright,1); + dumpsid(cfff,at,sf->fullname?sf->fullname:sf->fontname,2); + dumpsid(cfff,at,sf->familyname,3); + dumpsid(cfff,at,sf->weight,4); + /* FontMatrix (identity here, real ones in sub fonts)*/ + /* Actually there is no fontmatrix in the adobe cid font I'm looking at */ + /* which means it should default to [.001...] but it doesn't so the */ + /* docs aren't completely accurate */ + /* I now see I've no idea what the FontMatrix means in a CID keyed font */ + /* it seems to be ignored everywhere */ +#if 0 + dumpdbl(cfff,1.0); + dumpint(cfff,0); + dumpint(cfff,0); + dumpdbl(cfff,1.0); + dumpint(cfff,0); + dumpintoper(cfff,0,(12<<8)|7); +#endif + + CIDLayerFindBounds(sf,at->gi.layer,&b); + at->gi.xmin = b.minx; + at->gi.ymin = b.miny; + at->gi.xmax = b.maxx; + at->gi.ymax = b.maxy; + dumpdbl(cfff,floor(b.minx)); + dumpdbl(cfff,floor(b.miny)); + dumpdbl(cfff,ceil(b.maxx)); + dumpdbloper(cfff,ceil(b.maxy),5); + /* We'll never set StrokeWidth */ + if ( sf->xuid!=NULL && sf->use_xuid ) { + pt = sf->xuid; if ( *pt=='[' ) ++pt; + while ( *pt && *pt!=']' ) { + dumpint(cfff,strtol(pt,&end,10)); + for ( pt = end; *pt==' '; ++pt ); + } + putc(14,cfff); + if ( sf->changed_since_xuidchanged ) + SFIncrementXUID(sf); + } +#if 0 + /* Acrobat doesn't seem to care about a private dict here. Ghostscript */ + /* dies. Tech Note: 5176.CFF.PDF, top of page 23 says: */ + /* A Private DICT is required, but may be specified as having */ + /* a length of 0 if there are no non-default values to be stored*/ + /* No indication >where< it is required. I assumed everywhere. Perhaps */ + /* just in basefonts? */ + dumpint(cfff,0); /* Docs say a private dict is required and they don't specifically omit CID top dicts */ + dumpintoper(cfff,0,18); /* But they do say it can be zero */ +#endif + /* Offset to charset (oper=15) needed here */ + /* Offset to charstrings (oper=17) needed here */ + /* Offset to FDArray (oper=12,36) needed here */ + /* Offset to FDSelect (oper=12,37) needed here */ +} + +static int isStdEncoding(SplineFont *sf,EncMap *map) { + int i; + + for ( i=0; i<256 && ienccount; ++i ) if ( map->map[i]!=-1 && sf->glyphs[map->map[i]]!=NULL ) + if ( sf->glyphs[map->map[i]]->unicodeenc!=-1 ) + if ( sf->glyphs[map->map[i]]->unicodeenc!=unicode_from_adobestd[i] ) +return( 0 ); + +return( 1 ); +} + +static void finishup(SplineFont *sf,struct alltabs *at) { + int strlen, shlen, glen,enclen,csetlen,cstrlen,prvlen; + int base, eotop, strhead; + int output_enc = ( at->format==ff_cff && !isStdEncoding(sf,at->map)); + + storesid(at,NULL); /* end the strings index */ + strlen = ftell(at->sidf) + (shlen = ftell(at->sidh)); + glen = sizeof(short); /* Single entry: 0, no globals */ + enclen = ftell(at->encoding); + csetlen = ftell(at->charset); + cstrlen = ftell(at->charstrings); + prvlen = ftell(at->private); + base = ftell(at->cfff); + if ( base+6*3+strlen+glen+enclen+csetlen+cstrlen+prvlen > 32767 ) { + at->cfflongoffset = true; + base += 5*5+4; + } else + base += 5*3+4; + strhead = 2+(at->sidcnt>1); + base += strhead; + + dumpsizedint(at->cfff,at->cfflongoffset,base+strlen+glen,15); /* Charset */ + if ( output_enc ) /* encoding offset */ + dumpsizedint(at->cfff,at->cfflongoffset,base+strlen+glen+csetlen,16); /* encoding offset */ + else { + dumpsizedint(at->cfff,at->cfflongoffset,0,16); + enclen = 0; + } + dumpsizedint(at->cfff,at->cfflongoffset,base+strlen+glen+csetlen+enclen,17);/* charstrings */ + dumpsizedint(at->cfff,at->cfflongoffset,at->privatelen,-1); + dumpsizedint(at->cfff,at->cfflongoffset,base+strlen+glen+csetlen+enclen+cstrlen,18); /* private size */ + eotop = base-strhead-at->lenpos-1; + if ( at->cfflongoffset ) { + fseek(at->cfff,3,SEEK_SET); + putc(4,at->cfff); + } + fseek(at->cfff,at->lenpos,SEEK_SET); + putshort(at->cfff,eotop); + fseek(at->cfff,0,SEEK_END); + + /* String Index */ + putshort(at->cfff,at->sidcnt-1); + if ( at->sidcnt!=1 ) { /* Everybody gets an added NULL */ + putc(at->sidlongoffset?4:2,at->cfff); + if ( !ttfcopyfile(at->cfff,at->sidh,base,"CFF-StringBase")) at->error = true; + if ( !ttfcopyfile(at->cfff,at->sidf,base+shlen,"CFF-StringData")) at->error = true; + } + + /* Global Subrs */ + putshort(at->cfff,0); + + /* Charset */ + if ( !ttfcopyfile(at->cfff,at->charset,base+strlen+glen,"CFF-Charset")) at->error = true; + + /* Encoding */ + if ( !ttfcopyfile(at->cfff,at->encoding,base+strlen+glen+csetlen,"CFF-Encoding")) at->error = true; + + /* Char Strings */ + if ( !ttfcopyfile(at->cfff,at->charstrings,base+strlen+glen+csetlen+enclen,"CFF-CharStrings")) at->error = true; + + /* Private & Subrs */ + if ( !ttfcopyfile(at->cfff,at->private,base+strlen+glen+csetlen+enclen+cstrlen,"CFF-Private")) at->error = true; +} + +static void finishupcid(SplineFont *sf,struct alltabs *at) { + int strlen, shlen, glen,csetlen,cstrlen,fdsellen,fdarrlen,prvlen; + int base, eotop, strhead; + int i; + + storesid(at,NULL); /* end the strings index */ + strlen = ftell(at->sidf) + (shlen = ftell(at->sidh)); + glen = ftell(at->globalsubrs); + /* No encodings */ + csetlen = ftell(at->charset); + fdsellen = ftell(at->fdselect); + cstrlen = ftell(at->charstrings); + fdarrlen = ftell(at->fdarray); + base = ftell(at->cfff); + + at->cfflongoffset = true; + base += 5*4+4+2; /* two of the opers below are two byte opers */ + strhead = 2+(at->sidcnt>1); + base += strhead; + + prvlen = 0; + for ( i=0; isubfontcnt; ++i ) { + fseek(at->fdarray,at->fds[i].fillindictmark,SEEK_SET); + dumpsizedint(at->fdarray,false,at->fds[i].privatelen,-1); /* Private len */ + dumpsizedint(at->fdarray,true,base+strlen+glen+csetlen+fdsellen+cstrlen+fdarrlen+prvlen,18); /* Private offset */ + prvlen += ftell(at->fds[i].private); /* private & subrs */ + } + + dumpsizedint(at->cfff,at->cfflongoffset,base+strlen+glen,15); /* charset */ + dumpsizedint(at->cfff,at->cfflongoffset,base+strlen+glen+csetlen,(12<<8)|37); /* fdselect */ + dumpsizedint(at->cfff,at->cfflongoffset,base+strlen+glen+csetlen+fdsellen,17); /* charstrings */ + dumpsizedint(at->cfff,at->cfflongoffset,base+strlen+glen+csetlen+fdsellen+cstrlen,(12<<8)|36); /* fdarray */ + eotop = base-strhead-at->lenpos-1; + fseek(at->cfff,at->lenpos,SEEK_SET); + putshort(at->cfff,eotop); + fseek(at->cfff,0,SEEK_END); + + /* String Index */ + putshort(at->cfff,at->sidcnt-1); + if ( at->sidcnt!=1 ) { /* Everybody gets an added NULL */ + putc(at->sidlongoffset?4:2,at->cfff); + if ( !ttfcopyfile(at->cfff,at->sidh,base,"CFF-StringBase")) at->error = true; + if ( !ttfcopyfile(at->cfff,at->sidf,base+shlen,"CFF-StringData")) at->error = true; + } + + /* Global Subrs */ + if ( !ttfcopyfile(at->cfff,at->globalsubrs,base+strlen,"CFF-GlobalSubrs")) at->error = true; + + /* Charset */ + if ( !ttfcopyfile(at->cfff,at->charset,base+strlen+glen,"CFF-Charset")) at->error = true; + + /* FDSelect */ + if ( !ttfcopyfile(at->cfff,at->fdselect,base+strlen+glen+csetlen,"CFF-FDSelect")) at->error = true; + + /* Char Strings */ + if ( !ttfcopyfile(at->cfff,at->charstrings,base+strlen+glen+csetlen+fdsellen,"CFF-CharStrings")) at->error = true; + + /* FDArray (DICT Index) */ + if ( !ttfcopyfile(at->cfff,at->fdarray,base+strlen+glen+csetlen+fdsellen+cstrlen,"CFF-FDArray")) at->error = true; + + /* Private & Subrs */ + prvlen = 0; + for ( i=0; isubfontcnt; ++i ) { + int temp = ftell(at->fds[i].private); + if ( !ttfcopyfile(at->cfff,at->fds[i].private, + base+strlen+glen+csetlen+fdsellen+cstrlen+fdarrlen+prvlen,"CFF-PrivateSubrs")) at->error = true; + prvlen += temp; + } + + free(at->fds); +} + +static int dumpcffhmtx(struct alltabs *at,SplineFont *sf,int bitmaps) { + DBounds b; + SplineChar *sc; + int i,cnt; + int dovmetrics = sf->hasvmetrics; + int width = at->gi.fixed_width; + + at->gi.hmtx = tmpfile(); + if ( dovmetrics ) + at->gi.vmtx = tmpfile(); + FigureFullMetricsEnd(sf,&at->gi,bitmaps); /* Bitmap fonts use ttf convention of 3 magic glyphs */ + if ( at->gi.bygid[0]!=-1 && (sf->glyphs[at->gi.bygid[0]]->width==width || width==-1 )) { + putshort(at->gi.hmtx,sf->glyphs[at->gi.bygid[0]]->width); + SplineCharLayerFindBounds(sf->glyphs[at->gi.bygid[0]],at->gi.layer,&b); + putshort(at->gi.hmtx,b.minx); + if ( dovmetrics ) { + putshort(at->gi.vmtx,sf->glyphs[at->gi.bygid[0]]->vwidth); + putshort(at->gi.vmtx,/*sf->vertical_origin-*/b.miny); + } + } else { + putshort(at->gi.hmtx,width==-1?(sf->ascent+sf->descent)/2:width); + putshort(at->gi.hmtx,0); + if ( dovmetrics ) { + putshort(at->gi.vmtx,sf->ascent+sf->descent); + putshort(at->gi.vmtx,0); + } + } + cnt = 1; + if ( bitmaps ) { + if ( width==-1 ) width = (sf->ascent+sf->descent)/3; + putshort(at->gi.hmtx,width); + putshort(at->gi.hmtx,0); + if ( dovmetrics ) { + putshort(at->gi.vmtx,sf->ascent+sf->descent); + putshort(at->gi.vmtx,0); + } + putshort(at->gi.hmtx,width); + putshort(at->gi.hmtx,0); + if ( dovmetrics ) { + putshort(at->gi.vmtx,sf->ascent+sf->descent); + putshort(at->gi.vmtx,0); + } + cnt = 3; + } + + for ( i=cnt; igi.gcnt; ++i ) if ( at->gi.bygid[i]!=-1 ) { + sc = sf->glyphs[at->gi.bygid[i]]; + if ( SCWorthOutputting(sc) ) { + if ( i<=at->gi.lasthwidth ) + putshort(at->gi.hmtx,sc->width); + SplineCharLayerFindBounds(sc,at->gi.layer,&b); + putshort(at->gi.hmtx,b.minx); + if ( dovmetrics ) { + if ( i<=at->gi.lastvwidth ) + putshort(at->gi.vmtx,sc->vwidth); + putshort(at->gi.vmtx,/*sf->vertical_origin-*/b.maxy); + } + ++cnt; + if ( i==at->gi.lasthwidth ) + at->gi.hfullcnt = cnt; + if ( i==at->gi.lastvwidth ) + at->gi.vfullcnt = cnt; + } + } + at->gi.hmtxlen = ftell(at->gi.hmtx); + if ( at->gi.hmtxlen&2 ) putshort(at->gi.hmtx,0); + if ( dovmetrics ) { + at->gi.vmtxlen = ftell(at->gi.vmtx); + if ( at->gi.vmtxlen&2 ) putshort(at->gi.vmtx,0); + } + + at->gi.maxp->numGlyphs = cnt; +return( true ); +} + +static void dumpcffcidhmtx(struct alltabs *at,SplineFont *_sf) { + DBounds b; + SplineChar *sc; + int cid,i,cnt=0,max; + SplineFont *sf = NULL; + int dovmetrics = _sf->hasvmetrics; + + at->gi.hmtx = tmpfile(); + if ( dovmetrics ) + at->gi.vmtx = tmpfile(); + FigureFullMetricsEnd(_sf,&at->gi,false); + + max = 0; + for ( i=0; i<_sf->subfontcnt; ++i ) + if ( max<_sf->subfonts[i]->glyphcnt ) + max = _sf->subfonts[i]->glyphcnt; + for ( cid = 0; cidsubfontcnt; ++i ) { + sf = _sf->subfonts[i]; + if ( cidglyphcnt && SCWorthOutputting(sf->glyphs[cid])) + break; + } + if ( i!=_sf->subfontcnt ) { + sc = sf->glyphs[cid]; + if ( sc->ttf_glyph<=at->gi.lasthwidth ) + putshort(at->gi.hmtx,sc->width); + SplineCharLayerFindBounds(sc,at->gi.layer,&b); + putshort(at->gi.hmtx,b.minx); + if ( dovmetrics ) { + if ( sc->ttf_glyph<=at->gi.lastvwidth ) + putshort(at->gi.vmtx,sc->vwidth); + putshort(at->gi.vmtx,/*sf->vertical_origin-*/b.maxy); + } + ++cnt; + if ( sc->ttf_glyph==at->gi.lasthwidth ) + at->gi.hfullcnt = cnt; + if ( sc->ttf_glyph==at->gi.lastvwidth ) + at->gi.vfullcnt = cnt; + } else if ( cid==0 ) { + /* Create a dummy entry for .notdef */ + sf = _sf->subfonts[0]; + putshort(at->gi.hmtx,sf->ascent+sf->descent); + putshort(at->gi.hmtx,0); + ++cnt; + if ( dovmetrics ) { + putshort(at->gi.vmtx,sf->ascent+sf->descent); + putshort(at->gi.vmtx,0); + } + } + } + at->gi.hmtxlen = ftell(at->gi.hmtx); + if ( at->gi.hmtxlen&2 ) putshort(at->gi.hmtx,0); + if ( dovmetrics ) { + at->gi.vmtxlen = ftell(at->gi.vmtx); + if ( at->gi.vmtxlen&2 ) putshort(at->gi.vmtx,0); + } + + at->gi.maxp->numGlyphs = cnt; +} + +static int dumptype2glyphs(SplineFont *sf,struct alltabs *at) { + int i; + struct pschars *subrs, *chrs; + + at->cfff = tmpfile(); + at->sidf = tmpfile(); + at->sidh = tmpfile(); + at->charset = tmpfile(); + at->encoding = tmpfile(); + at->private = tmpfile(); + + dumpcffheader(sf,at->cfff); + dumpcffnames(sf,at->cfff); + dumpcffcharset(sf,at); + ff_progress_change_stages(2+at->gi.strikecnt); + + ATFigureDefWidth(sf,at,-1); + if ((chrs =SplineFont2ChrsSubrs2(sf,at->nomwid,at->defwid,at->gi.bygid,at->gi.gcnt,at->gi.flags,&subrs,at->gi.layer))==NULL ) +return( false ); + dumpcffprivate(sf,at,-1,subrs->next); + if ( subrs->next!=0 ) + _dumpcffstrings(at->private,subrs); + ff_progress_next_stage(); + at->charstrings = dumpcffstrings(chrs); + PSCharsFree(subrs); + if ( at->charstrings == NULL ) +return( false ); + if ( at->format==ff_cff && !isStdEncoding(sf,at->map)) + dumpcffencoding(sf,at); /* Do this after we've assigned glyph ids */ + dumpcfftopdict(sf,at); + finishup(sf,at); + + at->cfflen = ftell(at->cfff); + if ( at->cfflen&3 ) { + for ( i=4-(at->cfflen&3); i>0; --i ) + putc('\0',at->cfff); + } + + if ( at->format!=ff_cff ) + dumpcffhmtx(at,sf,false); + free(at->gn_sid); at->gn_sid=NULL; +return( true ); +} + +static int dumpcidglyphs(SplineFont *sf,struct alltabs *at) { + int i; + struct pschars *glbls = NULL, *chrs; + + at->cfff = tmpfile(); + at->sidf = tmpfile(); + at->sidh = tmpfile(); + at->charset = tmpfile(); + at->fdselect = tmpfile(); + at->fdarray = tmpfile(); + at->globalsubrs = tmpfile(); + + at->fds = gcalloc(sf->subfontcnt,sizeof(struct fd2data)); + for ( i=0; isubfontcnt; ++i ) { + at->fds[i].private = tmpfile(); + ATFigureDefWidth(sf->subfonts[i],at,i); + } + if ( (chrs = CID2ChrsSubrs2(sf,at->fds,at->gi.flags,&glbls,at->gi.layer))==NULL ) +return( false ); + for ( i=0; isubfontcnt; ++i ) { + dumpcffprivate(sf->subfonts[i],at,i,at->fds[i].subrs->next); + if ( at->fds[i].subrs->next!=0 ) + _dumpcffstrings(at->fds[i].private,at->fds[i].subrs); + PSCharsFree(at->fds[i].subrs); + } + _dumpcffstrings(at->globalsubrs,glbls); + PSCharsFree(glbls); + + dumpcffheader(sf,at->cfff); + dumpcffnames(sf,at->cfff); + dumpcffcidset(sf,at); + dumpcfffdselect(sf,at); + dumpcffdictindex(sf,at); + if ( (at->charstrings = dumpcffstrings(chrs))==NULL ) +return( false ); + dumpcffcidtopdict(sf,at); + finishupcid(sf,at); + + at->cfflen = ftell(at->cfff); + if ( at->cfflen&3 ) { + for ( i=4-(at->cfflen&3); i>0; --i ) + putc('\0',at->cfff); + } + + if ( at->format!=ff_cffcid ) + dumpcffcidhmtx(at,sf); +return( true ); +} + + + +static void OS2WeightCheck(struct pfminfo *pfminfo,char *weight) { + if ( weight==NULL ) { + /* default it */ + } else if ( strstrmatch(weight,"medi")!=NULL ) { + pfminfo->weight = 500; + pfminfo->panose[2] = 6; + } else if ( strstrmatch(weight,"demi")!=NULL || + strstrmatch(weight,"halb")!=NULL || + (strstrmatch(weight,"semi")!=NULL && + strstrmatch(weight,"bold")!=NULL) ) { + pfminfo->weight = 600; + pfminfo->panose[2] = 7; + } else if ( strstrmatch(weight,"bold")!=NULL || + strstrmatch(weight,"fett")!=NULL || + strstrmatch(weight,"gras")!=NULL ) { + pfminfo->weight = 700; + pfminfo->panose[2] = 8; + } else if ( strstrmatch(weight,"heavy")!=NULL ) { + pfminfo->weight = 800; + pfminfo->panose[2] = 9; + } else if ( strstrmatch(weight,"black")!=NULL ) { + pfminfo->weight = 900; + pfminfo->panose[2] = 10; + } else if ( strstrmatch(weight,"nord")!=NULL ) { + pfminfo->weight = 950; + pfminfo->panose[2] = 11; + } else if ( strstrmatch(weight,"thin")!=NULL ) { + pfminfo->weight = 100; + pfminfo->panose[2] = 2; + } else if ( strstrmatch(weight,"extra")!=NULL || + strstrmatch(weight,"light")!=NULL ) { + pfminfo->weight = 200; + pfminfo->panose[2] = 3; + } else if ( strstrmatch(weight,"light")!=NULL ) { + pfminfo->weight = 300; + pfminfo->panose[2] = 4; + } +} + +void SFDefaultOS2Simple(struct pfminfo *pfminfo,SplineFont *sf) { + pfminfo->pfmfamily = 0x11; + pfminfo->panose[0] = 2; + pfminfo->weight = 400; + pfminfo->panose[2] = 5; + pfminfo->width = 5; + pfminfo->panose[3] = 3; + pfminfo->winascent_add = pfminfo->windescent_add = true; + pfminfo->hheadascent_add = pfminfo->hheaddescent_add = true; + pfminfo->typoascent_add = pfminfo->typodescent_add = true; + pfminfo->os2_winascent = pfminfo->os2_windescent = 0; + + if ( sf->subfonts!=NULL ) sf = sf->subfonts[0]; + pfminfo->linegap = pfminfo->vlinegap = pfminfo->os2_typolinegap = + rint(.09*(sf->ascent+sf->descent)); +} + +void SFDefaultOS2SubSuper(struct pfminfo *pfminfo,int emsize,double italic_angle) { + double s = sin(italic_angle*3.1415926535897932/180.0); + pfminfo->os2_supysize = pfminfo->os2_subysize = .7*emsize; + pfminfo->os2_supxsize = pfminfo->os2_subxsize = .65*emsize; + pfminfo->os2_subyoff = .14*emsize; + pfminfo->os2_supyoff = .48*emsize; + pfminfo->os2_supxoff = s*pfminfo->os2_supyoff; + pfminfo->os2_subxoff = -s*pfminfo->os2_subyoff; + pfminfo->os2_strikeysize = 102*emsize/2048; + pfminfo->os2_strikeypos = 530*emsize/2048; +} + +void SFDefaultOS2Info(struct pfminfo *pfminfo,SplineFont *sf,char *fontname) { + int samewid= -1; + char *weight = sf->cidmaster==NULL ? sf->weight : sf->cidmaster->weight; + + if ( sf->pfminfo.pfmset ) { + if ( pfminfo!=&sf->pfminfo ) + *pfminfo = sf->pfminfo; + if ( !pfminfo->panose_set ) { + struct pfminfo info; + memset(&info,0,sizeof(info)); + sf->pfminfo.pfmset = false; + SFDefaultOS2Info(&info,sf,fontname); + sf->pfminfo.pfmset = true; + memcpy(pfminfo->panose,info.panose,sizeof(info.panose)); + } + } else { + struct pfminfo hold; + if ( pfminfo->hheadset || pfminfo->vheadset ) + hold = *pfminfo; + else + hold.hheadset = hold.vheadset = false; + memset(pfminfo,'\0',sizeof(*pfminfo)); + SFDefaultOS2Simple(pfminfo,sf); + samewid = CIDOneWidth(sf); + + pfminfo->pfmfamily = 0x10; + if ( samewid>0 ) { + pfminfo->pfmfamily = 0x30; + /* pfminfo->panose[3] = 9; */ /* This is done later */ + } else if ( strstrmatch(fontname,"sans")!=NULL ) + pfminfo->pfmfamily = 0x20; + else if ( strstrmatch(fontname,"script")!=NULL ) { + pfminfo->pfmfamily = 0x40; + pfminfo->panose[0] = 3; + } + if ( samewid==-1 ) + pfminfo->pfmfamily |= 0x1; /* Else it assumes monospace */ + +/* urw uses 4 character abreviations */ + if ( weight!=NULL ) + OS2WeightCheck(pfminfo,weight); + OS2WeightCheck(pfminfo,fontname); + + if ( strstrmatch(fontname,"ultra")!=NULL && + strstrmatch(fontname,"condensed")!=NULL ) { + pfminfo->width = 1; + pfminfo->panose[3] = 8; + } else if ( strstrmatch(fontname,"extra")!=NULL && + strstrmatch(fontname,"condensed")!=NULL ) { + pfminfo->width = 2; + pfminfo->panose[3] = 8; + } else if ( strstrmatch(fontname,"semi")!=NULL && + strstrmatch(fontname,"condensed")!=NULL ) { + pfminfo->width = 4; + pfminfo->panose[3] = 6; + } else if ( strstrmatch(fontname,"condensed")!=NULL || + strstrmatch(fontname,"narrow")!=NULL ) { + pfminfo->width = 3; + pfminfo->panose[3] = 6; + } else if ( strstrmatch(fontname,"ultra")!=NULL && + strstrmatch(fontname,"expanded")!=NULL ) { + pfminfo->width = 9; + pfminfo->panose[3] = 7; + } else if ( strstrmatch(fontname,"extra")!=NULL && + strstrmatch(fontname,"expanded")!=NULL ) { + pfminfo->width = 8; + pfminfo->panose[3] = 7; + } else if ( strstrmatch(fontname,"semi")!=NULL && + strstrmatch(fontname,"expanded")!=NULL ) { + pfminfo->width = 6; + pfminfo->panose[3] = 5; + } else if ( strstrmatch(fontname,"expanded")!=NULL ) { + pfminfo->width = 7; + pfminfo->panose[3] = 5; + } + if ( samewid>0 ) + pfminfo->panose[3] = 9; + if ( hold.hheadset ) { + pfminfo->hheadset = true; + pfminfo->hheadascent_add = hold.hheadascent_add; + pfminfo->hheaddescent_add = hold.hheaddescent_add; + pfminfo->hhead_ascent = hold.hhead_ascent; + pfminfo->hhead_descent = hold.hhead_descent; + pfminfo->linegap = hold.linegap; + } + if ( hold.vheadset ) { + pfminfo->vheadset = true; + pfminfo->vlinegap = hold.vlinegap; + } + } + if ( !pfminfo->subsuper_set ) + SFDefaultOS2SubSuper(pfminfo,sf->ascent+sf->descent,sf->italicangle); +} + +char *utf8_verify_copy(const char *str) { + /* When given a postscript string it SHOULD be in ASCII. But it will often*/ + /* contain a copyright symbol (sometimes in latin1, sometimes in macroman)*/ + /* unfortunately both encodings use 0xa9 for copyright so we can't distinguish */ + /* guess that it's latin1 (or that copyright is the only odd char which */ + /* means a latin1 conversion will work for macs too). */ + + if ( str==NULL ) +return( NULL ); + + if ( utf8_valid(str)) +return( copy(str)); /* Either in ASCII (good) or appears to be utf8*/ +return( latin1_2_utf8_copy(str)); +} + +int SFHasInstructions(SplineFont *sf) { + int i; + + if ( sf->mm!=NULL && sf->mm->apple ) + sf = sf->mm->normal; + + if ( sf->subfontcnt!=0 ) +return( false ); /* Truetype doesn't support cid keyed fonts */ + + for ( i=0; iglyphcnt; ++i ) if ( sf->glyphs[i]!=NULL ) { + if ( strcmp(sf->glyphs[i]->name,".notdef")==0 ) + continue; /* ff produces fonts with instructions in .notdef & not elsewhere. Ignore these */ + if ( sf->glyphs[i]->ttf_instrs!=NULL ) +return( true ); + } +return( false ); +} + +static int dumpcff(struct alltabs *at,SplineFont *sf,enum fontformat format, + FILE *cff) { + int ret; + + if ( format==ff_cff ) { + AssignTTFGlyph(&at->gi,sf,at->map,true); + ret = dumptype2glyphs(sf,at); + } else { + SFDummyUpCIDs(&at->gi,sf); /* life is easier if we ignore the seperate fonts of a cid keyed fonts and treat it as flat */ + ret = dumpcidglyphs(sf,at); + free(sf->glyphs); sf->glyphs = NULL; + sf->glyphcnt = sf->glyphmax = 0; + } + free( at->gi.bygid ); + + if ( !ret ) + at->error = true; + else if ( at->gi.flags & ps_flag_nocffsugar ) { + if ( !ttfcopyfile(cff,at->cfff,0,"CFF")) + at->error = true; + } else { + long len; + char buffer[80]; + fprintf(cff,"%%!PS-Adobe-3.0 Resource-FontSet\n"); + fprintf(cff,"%%%%DocumentNeedResources:ProcSet (FontSetInit)\n"); + fprintf(cff,"%%%%Title: (FontSet/%s)\n", sf->fontname); + fprintf(cff,"%%%%EndComments\n" ); + fprintf(cff,"%%%%IncludeResource: ProcSet(FontSetInit)\n" ); + fprintf(cff,"%%%%BeginResource: FontSet(%s)\n", sf->fontname ); + fprintf(cff,"/FontSetInit /ProcSet findresource begin\n" ); + fseek(at->cfff,0,SEEK_END); + len = ftell(at->cfff); + rewind(at->cfff); + sprintf( buffer, "/%s %ld StartData\n", sf->fontname, len ); + fprintf(cff,"%%%%BeginData: %ld Binary Bytes\n", (long) (len+strlen(buffer)) ); + fputs(buffer,cff); + if ( !ttfcopyfile(cff,at->cfff,ftell(cff),"CFF")) + at->error = true; + fprintf(cff,"\n%%%%EndData\n" ); + fprintf(cff,"%%%%EndResource\n" ); + fprintf(cff,"%%%%EOF\n" ); + } +return( !at->error ); +} + +int _WriteTTFFont(FILE *ttf,SplineFont *sf,enum fontformat format, + int32 *bsizes, enum bitmapformat bf,int flags,EncMap *map, int layer) { + struct alltabs at; + char *oldloc; + int i, anyglyphs; + + oldloc = setlocale(LC_NUMERIC,"C"); /* TrueType probably doesn't need this, but OpenType does for floats in dictionaries */ + if ( format==ff_otfcid || format== ff_cffcid ) { + if ( sf->cidmaster ) sf = sf->cidmaster; + } else { + if ( sf->subfontcnt!=0 ) sf = sf->subfonts[0]; + } + + if ( sf->subfontcnt==0 ) { + anyglyphs = false; + for ( i=sf->glyphcnt-1; i>0 ; --i ) { + if ( SCWorthOutputting(sf->glyphs[i])) { + anyglyphs = true; + if ( sf->glyphs[i]->unicodeenc!=-1 ) + break; + } + } + if ( !anyglyphs && !sf->internal_temp ) { + ff_post_error(_("No Encoded Glyphs"),_("Warning: Font contained no glyphs")); + } + if ( format!=ff_ttfsym && !(flags&ttf_flag_symbol) && !sf->internal_temp ) { + if ( i==0 && anyglyphs ) { + if ( map->enccount<=256 ) { + char *buts[3]; + buts[0] = _("_Yes"); buts[1] = _("_No"); buts[2] = NULL; + if ( ff_ask(_("No Encoded Glyphs"),(const char **) buts,0,1,_("This font contains no glyphs with unicode encodings.\nWould you like to use a \"Symbol\" encoding instead of Unicode?"))==0 ) + flags |= ttf_flag_symbol; + } else + ff_post_error(_("No Encoded Glyphs"),_("This font contains no glyphs with unicode encodings.\nYou will probably not be able to use the output.")); + } + } + } + + for ( i=0; iglyphcnt; ++i ) if ( sf->glyphs[i]!=NULL ) + sf->glyphs[i]->ttf_glyph = -1; + + memset(&at,'\0',sizeof(struct alltabs)); + at.gi.flags = flags; + at.gi.layer = layer; + at.gi.is_ttf = false; + at.applemode = 0; + at.opentypemode = 0; + at.msbitmaps = false; + at.applebitmaps = false; + at.gi.onlybitmaps = false; + at.gi.bsizes = bsizes; + at.gi.fixed_width = CIDOneWidth(sf); + at.isotf = false; + at.format = format; + at.next_strid = 256; + at.sf = sf; + at.map = map; + + if ( format==ff_cff || format==ff_cffcid ) { + dumpcff(&at,sf,format,ttf); + } else { + /* TODO: remove top function layers here */ + } + setlocale(LC_NUMERIC,oldloc); + if ( at.error || ferror(ttf)) +return( 0 ); + +#ifdef __CygWin + /* Modern versions of windows want the execute bit set on a ttf file */ + /* I've no idea what this corresponds to in windows, nor any idea on */ + /* how to set it from the windows UI, but this seems to work */ + { + struct stat buf; + fstat(fileno(ttf),&buf); + fchmod(fileno(ttf),S_IXUSR | buf.st_mode ); + } +#endif + +return( 1 ); +} + +int WriteTTFFont(char *fontname,SplineFont *sf,enum fontformat format, + int32 *bsizes, enum bitmapformat bf,int flags,EncMap *map, int layer) { + FILE *ttf; + int ret; + + if ( strstr(fontname,"://")!=NULL ) { + if (( ttf = tmpfile())==NULL ) +return( 0 ); + } else { + if (( ttf=fopen(fontname,"wb+"))==NULL ) +return( 0 ); + } + ret = _WriteTTFFont(ttf,sf,format,bsizes,bf,flags,map,layer); + if ( fclose(ttf)==-1 ) +return( 0 ); +return( ret ); +} + diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/tottfaat.c b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/tottfaat.c new file mode 100644 index 00000000000..e5722cfc27d --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/tottfaat.c @@ -0,0 +1,134 @@ +/* Copyright (C) 2000-2008 by George Williams */ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "pfaedit.h" +#include + +#include "ttf.h" + +/* This file contains routines to create some of the Apple Advanced Typography Tables */ +/* (or GX fonts) */ + +/* ************************************************************************** */ +/* ************************* The 'morx' table ************************* */ +/* ************************* (and 'feat') ************************* */ +/* ************************************************************************** */ + +/* Each lookup gets its own subtable, so there may be multiple subtables */ +/* with the same feature/setting. The subtables will be ordered the same */ +/* way the lookups are, which might lead to awkwardness if there are many */ +/* chains and the same feature occurs in several of them */ +/* (only the default language will be used) */ +struct feature { + int16 featureType, featureSetting; + MacFeat *mf, *smf; + struct macsetting *ms, *sms; + unsigned int vertOnly: 1; + unsigned int r2l: 1; /* I think this is the "descending" flag */ + unsigned int needsOff: 1; + unsigned int singleMutex: 1; + unsigned int dummyOff: 1; + uint8 subtable_type; + int chain; + int32 flag, offFlags; + uint32 feature_start; + uint32 feature_len; /* Does not include header yet */ + struct feature *next; /* features in output order */ + struct feature *nexttype; /* features in feature/setting order */ + struct feature *nextsame; /* all features with the same feature/setting */ + int setting_cnt, setting_index, real_index; +}; + + + +struct transition { uint16 next_state, dontconsume, ismark, trans_ent; LigList *l; }; +struct trans_entries { uint16 next_state, flags, act_index; LigList *l; }; + + +int Macable(SplineFont *sf, OTLookup *otl) { + int ft, fs; + FeatureScriptLangList *features; + + switch ( otl->lookup_type ) { + /* These lookup types are mac only */ + case kern_statemachine: case morx_indic: case morx_context: case morx_insert: +return( true ); + /* These lookup types or OpenType only */ + case gsub_multiple: case gsub_alternate: + case gpos_single: case gpos_cursive: case gpos_mark2base: + case gpos_mark2ligature: case gpos_mark2mark: +return( false ); + /* These are OpenType only, but they might be convertable to a state */ + /* machine */ + case gsub_context: + case gsub_contextchain: case gsub_reversecchain: + case gpos_context: case gpos_contextchain: + if ( sf==NULL || sf->sm!=NULL ) +return( false ); + /* Else fall through into the test on the feature tag */; + /* These two can be expressed in both, and might be either */ + case gsub_single: case gsub_ligature: case gpos_pair: + for ( features = otl->features; features!=NULL; features = features->next ) { + if ( features->ismac || OTTagToMacFeature(features->featuretag,&ft,&fs)) +return( true ); + } + } +return( false ); +} + + +/* ************************************************************************** */ +/* ************************* utility routines ************************* */ +/* ************************************************************************** */ + +uint32 MacFeatureToOTTag(int featureType,int featureSetting) { + int i; + struct macsettingname *msn = user_macfeat_otftag ? user_macfeat_otftag : macfeat_otftag; + + for ( i=0; msn[i].otf_tag!=0; ++i ) + if ( msn[i].mac_feature_type == featureType && + msn[i].mac_feature_setting == featureSetting ) +return( msn[i].otf_tag ); + +return( 0 ); +} + +int OTTagToMacFeature(uint32 tag, int *featureType,int *featureSetting) { + int i; + struct macsettingname *msn = user_macfeat_otftag ? user_macfeat_otftag : macfeat_otftag; + + for ( i=0; msn[i].otf_tag!=0; ++i ) + if ( msn[i].otf_tag == tag ) { + *featureType = msn[i].mac_feature_type; + *featureSetting = msn[i].mac_feature_setting; +return( true ); + } + + *featureType = 0; + *featureSetting = 0; +return( false ); +} + diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/tottfgpos.c b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/tottfgpos.c new file mode 100644 index 00000000000..d89177e211f --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/tottfgpos.c @@ -0,0 +1,366 @@ +/* Copyright (C) 2000-2008 by George Williams */ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "fontforgevw.h" +#include +#include + +int coverageformatsallowed=3; +int use_second_indic_scripts = false; + +#include "ttf.h" + +/* This file contains routines to create the otf gpos and gsub tables and their */ +/* attendant subtables */ + +/* Undocumented fact: ATM (which does kerning for otf fonts in Word) can't handle features with multiple lookups */ + +/* Undocumented fact: Only one feature with a given tag allowed per script/lang */ +/* So if we have multiple lookups with the same tag they must be merged into */ +/* one feature with many lookups */ + +/* scripts (for opentype) that I understand */ + /* see also list in lookups.c mapping script tags to friendly names */ + +static uint32 scripts[][15] = { +/* Arabic */ { CHR('a','r','a','b'), 0x0600, 0x06ff, 0xfb50, 0xfdff, 0xfe70, 0xfefe }, +/* Aramaic */ { CHR('a','r','a','m'), 0x820, 0x83f }, +/* Armenian */ { CHR('a','r','m','n'), 0x0530, 0x058f, 0xfb13, 0xfb17 }, +/* Balinese */ { CHR('b','a','l','i'), 0x1b00, 0x1b7f }, +/* Bengali */ { CHR('b','e','n','g'), 0x0980, 0x09ff }, +/* Bliss symb */{ CHR('b','l','i','s'), 0x12200, 0x124ff }, +/* Bopomofo */ { CHR('b','o','p','o'), 0x3100, 0x312f, 0x31a0, 0x31bf }, +/* Braille */ { CHR('b','r','a','i'), 0x2800, 0x28ff }, +/* Buginese */ { CHR('b','u','g','i'), 0x1a00, 0x1a1f }, +/* Buhid */ { CHR('b','u','h','d'), 0x1740, 0x1753 }, +/* Byzantine M*/{ CHR('b','y','z','m'), 0x1d000, 0x1d0ff }, +/* Canadian Syl*/{CHR('c','a','n','s'), 0x1400, 0x167f }, +/* Carian */ {CHR('c','a','r','i'), 0x0, 0x0 }, +/* Cham */ {CHR('c','h','a','m'), 0x0, 0x0 }, +/* Cherokee */ { CHR('c','h','e','r'), 0x13a0, 0x13ff }, +/* Cirth */ { CHR('c','i','r','t'), 0x12080, 0x120ff }, +/* CJKIdeogra */{ CHR('h','a','n','i'), 0x3300, 0x9fff, 0xf900, 0xfaff, 0x020000, 0x02ffff }, +/* Coptic */ { CHR('c','o','p','t'), 0x2c80, 0x2cff }, +/* Cypriot */ { CHR('c','p','m','n'), 0x10800, 0x1083f }, +/* Cyrillic */ { CHR('c','y','r','l'), 0x0400, 0x052f, 0x1d2b, 0x1d2b, 0x1d78, 0x1d78, + 0x2de0, 0x2dff, 0xa640, 0xa6ff }, +/* Deseret */ { CHR('d','s','r','t'), 0x10400, 0x1044f }, +/* Devanagari */{ CHR('d','e','v','a'), 0x0900, 0x097f }, +/* Ethiopic */ { CHR('e','t','h','i'), 0x1200, 0x139f }, +/* Georgian */ { CHR('g','e','o','r'), 0x1080, 0x10ff }, +/* Glagolitic */{ CHR('g','l','a','g'), 0x1080, 0x10ff }, +/* Gothic */ { CHR('g','o','t','h'), 0x10330, 0x1034a }, +/* Greek */ { CHR('g','r','e','k'), 0x0370, 0x03ff, 0x1f00, 0x1fff }, +/* Gujarati */ { CHR('g','u','j','r'), 0x0a80, 0x0aff }, +/* Gurmukhi */ { CHR('g','u','r','u'), 0x0a00, 0x0a7f }, +/* Hangul */ { CHR('h','a','n','g'), 0xac00, 0xd7af, 0x3130, 0x319f, 0xffa0, 0xff9f }, +/* Hanunoo */ { CHR('h','a','n','o'), 0x1720, 0x1734 }, + /* I'm not sure what the difference is between the 'hang' tag and the 'jamo' */ + /* tag. 'Jamo' is said to be the precomposed forms, but what's 'hang'? */ +/* Hebrew */ { CHR('h','e','b','r'), 0x0590, 0x05ff, 0xfb1e, 0xfb4f }, +#if 0 /* Hiragana used to have its own tag, but has since been merged with katakana */ +/* Hiragana */ { CHR('h','i','r','a'), 0x3040, 0x309f }, +#endif +/* Hangul Jamo*/{ CHR('j','a','m','o'), 0x1100, 0x11ff, 0x3130, 0x319f, 0xffa0, 0xffdf }, +/* Javanese */ { CHR('j','a','v','a'), 0 }, /* MS has a tag, but there is no unicode range */ +/* Katakana */ { CHR('k','a','n','a'), 0x3040, 0x30ff, 0xff60, 0xff9f }, +/* Kayah Li */ { CHR('k','a','l','i'), 0 }, +/* Kannada */ { CHR('k','n','d','a'), 0x0c80, 0x0cff }, +/* Kharosthi */ { CHR('k','h','a','r'), 0x10a00, 0x10a5f }, +/* Khmer */ { CHR('k','h','m','r'), 0x1780, 0x17ff }, +/* Latin */ { CHR('l','a','t','n'), 0x0041, 0x005a, 0x0061, 0x007a, + 0x00c0, 0x02af, 0x1d00, 0x1eff, 0xfb00, 0xfb0f, 0xff00, 0xff5f, 0xa770, 0xa7ff }, +/* Lao */ { CHR('l','a','o',' '), 0x0e80, 0x0eff }, +/* Lepcha */ { CHR('l','e','p','c'), 0 }, +/* Limbu */ { CHR('l','i','m','b'), 0x1900, 0x194f }, +/* Linear A */ /*{ CHR('l','i','n','a'), 0x10180, 0x102cf },*/ /* What happened to linear A? */ +/* Linear B */ { CHR('l','i','n','b'), 0x10000, 0x100fa }, +/* Lycian */ { CHR('l','y','c','i'), 0 }, +/* Lydian */ { CHR('l','y','d','i'), 0 }, +/* Malayalam */ { CHR('m','l','y','m'), 0x0d00, 0x0d7f }, +/* Mathematical Alphanumeric Symbols */ + { CHR('m','a','t','h'), 0x1d400, 0x1d7ff }, +/* Mongolian */ { CHR('m','o','n','g'), 0x1800, 0x18af }, +/* Musical */ { CHR('m','u','s','i'), 0x1d100, 0x1d1ff }, +/* Myanmar */ { CHR('m','y','m','r'), 0x1000, 0x107f }, +/* New Tai Lue*/{ CHR('t','a','l','u'), 0 }, +/* N'Ko */ { CHR('n','k','o',' '), 0x07c0, 0x07fa }, +/* Ogham */ { CHR('o','g','a','m'), 0x1680, 0x169f }, +/* Ol Chiki */ { CHR('o','l','c','k'), 0 }, +/* Old Italic */{ CHR('i','t','a','l'), 0x10300, 0x1031e }, +/* Old Permic */{ CHR('p','e','r','m'), 0x10350, 0x1037f }, +/* Old Persian cuneiform */ + { CHR('x','p','e','o'), 0x103a0, 0x103df }, +/* Oriya */ { CHR('o','r','y','a'), 0x0b00, 0x0b7f }, +/* Osmanya */ { CHR('o','s','m','a'), 0x10480, 0x104a9 }, +/* Phags-pa */ { CHR('p','h','a','g'), 0xa840, 0xa87f }, +/* Phoenician */{ CHR('p','h','n','x'), 0x10900, 0x1091f }, +/* Pollard */ { CHR('p','l','r','d'), 0x104b0, 0x104d9 }, +/* Rejang */ { CHR('r','j','n','g'), 0 }, +/* Rongorongo */{ CHR('r','o','r','o'), 0 }, +/* Runic */ { CHR('r','u','n','r'), 0x16a0, 0x16ff }, +/* Saurashtra*/ { CHR('s','a','u','r'), 0 }, +/* Shavian */ { CHR('s','h','a','w'), 0x10450, 0x1047f }, +/* Sinhala */ { CHR('s','i','n','h'), 0x0d80, 0x0dff }, +/* Sumero-Akkadian Cuneiform */ + { CHR('x','s','u','x'), 0x12000, 0x1236e }, +/* Sundanese */ { CHR('s','u','n','d'), 0 }, +/* Syloti Nagri */ + { CHR('s','y','l','o'), 0xa800, 0xa82f }, +/* Syriac */ { CHR('s','y','r','c'), 0x0700, 0x074f }, +/* Tagalog */ { CHR('t','a','g','l'), 0x1700, 0x1714 }, +/* Tagbanwa */ { CHR('t','a','g','b'), 0x1760, 0x1773 }, +/* Tai Le */ { CHR('t','a','l','e'), 0x1950, 0x1974 }, +/* Tai Lu */ { CHR('t','a','l','u'), 0x1980, 0x19df }, +/* Tamil */ { CHR('t','a','m','l'), 0x0b80, 0x0bff }, +/* Telugu */ { CHR('t','e','l','u'), 0x0c00, 0x0c7f }, +/* Tengwar */ { CHR('t','e','n','g'), 0x12000, 0x1207f }, +/* Thaana */ { CHR('t','h','a','a'), 0x0780, 0x07bf }, +/* Thai */ { CHR('t','h','a','i'), 0x0e00, 0x0e7f }, +/* Tibetan */ { CHR('t','i','b','t'), 0x0f00, 0x0fff }, +/* Tifinagh */ { CHR('t','f','n','g'), 0x2d30, 0x2d7f }, +/* Ugaritic */ { CHR('u','g','a','r'), 0x10380, 0x1039d }, +/* Yi */ { CHR('y','i',' ',' '), 0xa000, 0xa4c6 }, + { 0 } +}; + +int ScriptIsRightToLeft(uint32 script) { + if ( script==CHR('a','r','a','b') || script==CHR('h','e','b','r') || + script==CHR('c','p','m','n') || script==CHR('k','h','a','r') || + script==CHR('s','y','r','c') || script==CHR('t','h','a','a') || + script==CHR('n','k','o',' ')) +return( true ); + +return( false ); +} + +uint32 ScriptFromUnicode(int u,SplineFont *sf) { + int s, k; + + if ( u!=-1 ) { + for ( s=0; scripts[s][0]!=0; ++s ) { + for ( k=1; scripts[s][k+1]!=0; k += 2 ) + if ( u>=scripts[s][k] && u<=scripts[s][k+1] ) + break; + if ( scripts[s][k+1]!=0 ) + break; + } + if ( scripts[s][0]!=0 ) { + uint32 script = scripts[s][0]; + if ( use_second_indic_scripts ) { + /* MS has a parallel set of script tags for their new */ + /* Indic font shaper */ + if ( script == CHR('b','e','n','g' )) script = CHR('b','n','g','2'); + else if ( script == CHR('d','e','v','a' )) script = CHR('d','e','v','2'); + else if ( script == CHR('g','u','j','r' )) script = CHR('g','j','r','2'); + else if ( script == CHR('g','u','r','u' )) script = CHR('g','u','r','2'); + else if ( script == CHR('k','n','d','a' )) script = CHR('k','n','d','2'); + else if ( script == CHR('m','l','y','m' )) script = CHR('m','l','y','2'); + else if ( script == CHR('o','r','y','a' )) script = CHR('o','r','y','2'); + else if ( script == CHR('t','a','m','l' )) script = CHR('t','m','l','2'); + else if ( script == CHR('t','e','l','u' )) script = CHR('t','e','l','2'); + } +return( script ); + } + } else if ( sf!=NULL ) { + if ( sf->cidmaster!=NULL || sf->subfontcnt!=0 ) { + if ( sf->cidmaster!=NULL ) sf = sf->cidmaster; + if ( strmatch(sf->ordering,"Identity")==0 ) +return( DEFAULT_SCRIPT ); + else if ( strmatch(sf->ordering,"Korean")==0 ) +return( CHR('h','a','n','g')); + else +return( CHR('h','a','n','i') ); + } + } + +return( DEFAULT_SCRIPT ); +} + +uint32 SCScriptFromUnicode(SplineChar *sc) { + char *pt; + PST *pst; + SplineFont *sf; + int i; unsigned uni; + FeatureScriptLangList *features; + + if ( sc==NULL ) +return( DEFAULT_SCRIPT ); + + sf = sc->parent; + if ( sc->unicodeenc!=-1 && + !(sc->unicodeenc>=0xe000 && sc->unicodeenc<0xf8ff) && + !(sc->unicodeenc>=0xf0000 && sc->unicodeenc<0x10ffff)) +return( ScriptFromUnicode( sc->unicodeenc,sf )); + + pt = sc->name; + if ( *pt ) for ( ++pt; *pt!='\0' && *pt!='_' && *pt!='.'; ++pt ); + if ( *pt!='\0' ) { + char *str = copyn(sc->name,pt-sc->name); + int uni = sf==NULL || sf->fv==NULL ? UniFromName(str,ui_none,&custom) : + UniFromName(str,sf->uni_interp,sf->fv->map->enc); + free(str); + if ( uni!=-1 ) +return( ScriptFromUnicode( uni,sf )); + } + /* Adobe ligature uniXXXXXXXX */ + if ( strncmp(sc->name,"uni",3)==0 && sscanf(sc->name+3,"%4x", &uni)==1 ) +return( ScriptFromUnicode( uni,sf )); + + if ( sf==NULL ) +return( DEFAULT_SCRIPT ); + + if ( sf->cidmaster ) sf=sf->cidmaster; + else if ( sf->mm!=NULL ) sf=sf->mm->normal; + for ( i=0; i<2; ++i ) { + for ( pst=sc->possub; pst!=NULL; pst=pst->next ) { + if ( pst->type == pst_lcaret ) + continue; + for ( features = pst->subtable->lookup->features; features!=NULL; features=features->next ) { + if ( features->scripts!=NULL ) +return( features->scripts->script ); + } + } + } +return( ScriptFromUnicode( sc->unicodeenc,sf )); +} + + +SplineChar **SFGlyphsFromNames(SplineFont *sf,char *names) { + int cnt, ch; + char *pt, *end; + SplineChar *sc, **glyphs; + + cnt = 0; + for ( pt = names; *pt; pt = end+1 ) { + ++cnt; + end = strchr(pt,' '); + if ( end==NULL ) + break; + } + + glyphs = galloc((cnt+1)*sizeof(SplineChar *)); + cnt = 0; + for ( pt = names; *pt; pt = end+1 ) { + end = strchr(pt,' '); + if ( end==NULL ) + end = pt+strlen(pt); + ch = *end; + *end = '\0'; + sc = SFGetChar(sf,-1,pt); + if ( sc!=NULL && sc->ttf_glyph!=-1 ) + glyphs[cnt++] = sc; + *end = ch; + if ( ch=='\0' ) + break; + } + glyphs[cnt] = NULL; +return( glyphs ); +} + + +static int glyphnameinlist(char *haystack,char *name) { + char *start, *pt; + int ch, match, slen = strlen(name); + + for ( pt=haystack ; ; ) { + while ( *pt==' ' ) ++pt; + if ( *pt=='\0' ) +return( false ); + start=pt; + while ( *pt!=' ' && *pt!='\0' ) ++pt; + if ( pt-start==slen ) { + ch = *pt; *pt='\0'; + match = strcmp(start,name); + *pt = ch; + if ( match==0 ) +return( true ); + } + } +} + +static int ReferencedByGSUB(SplineChar *sc) { + PST *pst; + SplineFont *sf = sc->parent; + int gid; + SplineChar *testsc; + char *name = sc->name; + + /* If it is itself a ligature it will be referenced by GSUB */ + /* (because we store ligatures on the glyph generated) */ + for ( pst=sc->possub; pst!=NULL; pst=pst->next ) + if ( pst->type == pst_ligature ) +return( true ); + + for ( gid=0; gidglyphcnt; ++gid ) if ( (testsc=sf->glyphs[gid])!=NULL ) { + for ( pst=testsc->possub; pst!=NULL; pst=pst->next ) { + if ( pst->type==pst_substitution || pst->type==pst_alternate || + pst->type==pst_multiple ) { + if ( glyphnameinlist(pst->u.mult.components,name) ) +return( true ); + } + } + } +return( false ); +} + +int gdefclass(SplineChar *sc) { + PST *pst; + AnchorPoint *ap; + + if ( sc->glyph_class!=0 ) +return( sc->glyph_class-1 ); + + if ( strcmp(sc->name,".notdef")==0 ) +return( 0 ); + + /* It isn't clear to me what should be done if a glyph is both a ligature */ + /* and a mark (There are some greek accent ligatures, it is probably more*/ + /* important that they be indicated as marks). Here I chose mark rather */ + /* than ligature as the mark class is far more likely to be used */ + ap=sc->anchor; + while ( ap!=NULL && (ap->type==at_centry || ap->type==at_cexit) ) + ap = ap->next; + if ( ap!=NULL && (ap->type==at_mark || ap->type==at_basemark) ) +return( 3 ); + + for ( pst=sc->possub; pst!=NULL; pst=pst->next ) { + if ( pst->type == pst_ligature ) +return( 2 ); /* Ligature */ + } + + /* I not quite sure what a componant glyph is. Probably something */ + /* that is not in the cmap table and is referenced in other glyphs */ + /* (I've never seen it used by others) */ + /* (Note: No glyph in a CID font can be components as all CIDs mean */ + /* something) (I think) */ + if ( sc->unicodeenc==-1 && sc->dependents!=NULL && + sc->parent->cidmaster!=NULL && !ReferencedByGSUB(sc)) +return( 4 ); + else +return( 1 ); +} + diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/ttf.h b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/ttf.h new file mode 100644 index 00000000000..0827658bf92 --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/ttf.h @@ -0,0 +1,888 @@ +/* Copyright (C) 2001-2008 by George Williams */ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "psfont.h" /* for struct fddata */ + +#define MAC_DELETED_GLYPH_NAME "" + +/* Some glyphs have multiple encodings ("A" might be used for Alpha and Cyrillic A) */ +struct dup { + SplineChar *sc; + int enc; + int uni; + struct dup *prev; +}; + +struct variations { + int axis_count; + struct taxis { + uint32 tag; + real min, def, max; /* in user design space */ + int nameid; + int paircount; + real *mapfrom; /* after conversion from [-1,1] */ + real *mapto; /* secondary conversiont to [-1,1] */ + } *axes; /* Array of axis_count entries */ + int instance_count; /* Not master designs, but named interpolations in design space */ + struct tinstance { + int nameid; + real *coords; /* Location along axes array[axis_count] */ + } *instances; + int tuple_count; + struct tuples { + real *coords; /* Location along axes array[axis_count] */ + SplineChar **chars; /* Varied glyphs, array parallels one in info */ + struct ttf_table *cvt; + KernClass *khead, *klast, *vkhead, *vklast; + /* Varied kern classes */ + } *tuples; +}; + +struct ttfinfo { + int emsize; /* ascent + descent? from the head table */ + int ascent, descent; /* from the hhea table */ + /* not the usWinAscent from the OS/2 table */ + int vertical_origin; /* if vmetrics are present */ + int width_cnt; /* from the hhea table, in the hmtx table */ + int glyph_cnt; /* from maxp table (or cff table) */ + unsigned int index_to_loc_is_long:1; /* in head table */ + unsigned int is_ttc:1; /* Is it a font collection? */ + unsigned int is_onebyte:1; /* Is it a one byte encoding? */ + unsigned int twobytesymbol:1; /* it had a symbol encoding which we converted to unicode */ + unsigned int complainedbeyondglyfend:1; /* Don't complain about this more than once */ + unsigned int extensionrequested:1; /* Only ask once for a copy of a font containing extension subtables */ + unsigned int to_order2:1; /* We are to leave the font as truetype (order2) splines, else convert to ps */ + unsigned int complainedmultname:1; /* Don't complain about this more than once */ + unsigned int strokedfont: 1; /* painttype==2 for otf */ + unsigned int use_typo_metrics: 1; + unsigned int weight_width_slope_only: 1; + unsigned int optimized_for_cleartype: 1; + unsigned int apply_lsb: 1; + enum openflags openflags; + /* Mac fonts platform=0/1, platform specific enc id, roman=0, english is lang code 0 */ + /* iso platform=2, platform specific enc id, latin1=0/2, no language */ + /* microsoft platform=3, platform specific enc id, 1, english is lang code 0x??09 */ + char *copyright; /* from the name table, nameid=0 */ + char *familyname; /* nameid=1 */ + char *fullname; /* nameid=4 */ + char *weight; + char *version; /* nameid=5 */ + char *fontname; /* postscript font name, nameid=6 */ + char *xuid; /* Only for open type cff fonts */ + int uniqueid; + real italicAngle; /* from post table */ + int upos, uwidth; /* underline pos, width from post table */ + real strokewidth; + int fstype; + struct psdict *private; /* Only for open type cff fonts */ + EncMap *map; + enum uni_interp uni_interp; + struct pfminfo pfminfo; + short os2_version; + short gasp_version; + int dupnamestate; + struct ttflangname *names; + char *fontcomments, *fontlog; + char **cvt_names; + SplineChar **chars; /* from all over, glyf table for contours */ + /* cmap table for encodings */ + /* hmtx table for widths */ + /* post table for names */ + /* Or from CFF table for everything in opentype */ + LayerInfo *layers; + int layer_cnt; + BDFFont *bitmaps; + char *cidregistry, *ordering; + int supplement; + real cidfontversion; + int subfontcnt; + SplineFont **subfonts; + char *inuse; /* What glyphs are used by this font in the ttc */ + + int numtables; + /* BASE */ + uint32 base_start; /* Offset from sof to start of 'BASE' table */ + /* CFF */ + uint32 cff_start; /* Offset from sof to start of postscript compact font format */ + uint32 cff_length; + /* cmap */ + uint32 encoding_start; /* Offset from sof to start of encoding table */ + uint32 vs_start; /* Offset within 'cmap' to variant selector table */ + /* gasp */ + uint32 gasp_start; + /* glyf */ + uint32 glyph_start; /* Offset from sof to start of glyph table */ + uint32 glyph_length; + /* GDEF */ + uint32 gdef_start; /* Offset from sof to start of GDEF table (glyph class defn, ligature carets) */ + uint32 gdef_length; + /* GPOS */ + uint32 gpos_start; /* Offset from sof to start of GPOS table */ + uint32 gpos_length; + /* GSUB */ + uint32 gsub_start; /* Offset from sof to start of GSUB table */ + uint32 gsub_length; + uint32 g_bounds; /* Filled in with g???_start+g???_length */ + /* EBDT, bdat */ + uint32 bitmapdata_start; /* Offset to start of bitmap data */ + uint32 bitmapdata_length; + /* EBLT, bloc */ + uint32 bitmaploc_start; /* Offset to start of bitmap locator data */ + uint32 bitmaploc_length; + /* gvar, etc. */ + uint32 gvar_start, gvar_len; + uint32 fvar_start, fvar_len; + uint32 avar_start, avar_len; + uint32 cvar_start, cvar_len; + /* head */ + uint32 head_start; + /* hhea */ + uint32 hhea_start; + /* hmtx */ + uint32 hmetrics_start; + /* kern */ + uint32 kern_start; + /* loca */ + uint32 glyphlocations_start;/* there are glyph_cnt of these, from maxp tab */ + uint32 loca_length; /* actually glypn_cnt is wrong. Use the table length (divided by size) instead */ + /* maxp */ + uint32 maxp_start; /* maximum number of glyphs */ + uint32 maxp_len; + /* name */ + uint32 copyright_start; /* copyright and fontname */ + /* post */ + uint32 postscript_start; /* names for the glyphs, italic angle, etc. */ + /* OS/2 */ + uint32 os2_start; + /* TYP1 */ + uint32 typ1_start; /* For Adobe's? Apple's? attempt to stuff a type1 font into an sfnt wrapper */ + uint32 typ1_length; + /* vhea */ + uint32 vhea_start; + /* vmtx */ + uint32 vmetrics_start; + /* VORG */ + uint32 vorg_start; + + /* PfEd -- FontForge/PfaEdit specific info */ + uint32 pfed_start; + /* TeX -- TeX table, also non-standard */ + uint32 tex_start; + /* BDF -- BDF properties, also non-standard */ + uint32 bdf_start; + /* FFTM -- FontForge timestamps */ + uint32 fftm_start; + + /* Apple Advanced Typography Tables */ + uint32 prop_start; + uint32 lcar_start; + uint32 opbd_start; + uint32 acnt_start; + uint32 feat_start; + uint32 mort_start; + uint32 morx_start; + uint32 bsln_start; + + /* MATH Table */ + uint32 math_start; + uint32 math_length; + + /* Info for instructions */ + uint32 cvt_start, cvt_len; + uint32 prep_start, prep_len; + uint32 fpgm_start, fpgm_len; + + unsigned int one_of_many: 1; /* A TTCF file, or a opentype font with multiple fonts */ + unsigned int obscomplain: 1; /* We've complained about obsolete format 3 in EBDT table */ + unsigned int cmpcomplain: 1; /* We've complained about compressed format 4 in EBDT */ + unsigned int unkcomplain: 1; /* We've complained about unknown formats in EBDT */ + unsigned int comcomplain: 1; /* We've complained about composit formats in EBDT */ + unsigned int onlystrikes: 1; /* Only read in the bitmaps, not the outlines */ + unsigned int onlyonestrike: 1; /* Only read in one bitmap (strike) */ + unsigned int barecff: 1; /* pay attention to the encoding in the cff file, we won't have a cmap */ + + int platform, specific; /* values of the encoding we chose to use */ + + int anchor_class_cnt; /* For GPOS */ + int anchor_merge_cnt; + AnchorClass *ahead, *alast; + + KernClass *khead, *klast, *vkhead, *vklast; + + OTLookup *gpos_lookups, *gsub_lookups, *cur_lookups; + + OTLookup *mort_subs_lookup, *mort_pos_lookup2; + int mort_r2l, mort_tag_mac, mort_feat, mort_setting, mort_is_nested; + uint16 *morx_classes; + uint16 *bsln_values; + + int mort_max; + + struct ttf_table *tabs; + FPST *possub; + ASM *sm; + MacFeat *features; + char *chosenname; + int macstyle; + int lookup_cnt; /* Max lookup in current GPOS/GSUB table */ + int feature_cnt; /* Max feature in current GPOS/GSUB table */ + struct variations *variations; + struct macidname { + int id; + struct macname *head, *last; + struct macidname *next; + } *macstrids; + struct fontdict *fd; /* For reading in Type42 fonts. Glyph names in postscript section must be associated with glyphs in TTF section */ + int savecnt; + struct savetab { + uint32 tag; + uint32 offset; + int len; + } *savetab; + int32 last_size_pos; + uint16 design_size; + uint16 fontstyle_id; + struct otfname *fontstyle_name; + uint16 design_range_bottom, design_range_top; + struct texdata texdata; + int mark_class_cnt; + char **mark_classes; /* glyph name list */ + char **mark_class_names; /* used within ff (utf8) */ + uint8 warned_morx_out_of_bounds_glyph; + int badgid_cnt, badgid_max; /* Used when parsing apple morx tables*/ + SplineChar **badgids; /* which use out of range glyph IDs as temporary flags */ +#ifdef _HAS_LONGLONG + long long creationtime; /* seconds since 1970 */ + long long modificationtime; +#else + long creationtime; + long modificationtime; +#endif + int gasp_cnt; + struct gasp *gasp; + struct MATH *math; + /* Set of errors we found when loading the font */ + unsigned int bad_ps_fontname: 1; + unsigned int bad_glyph_data: 1; + unsigned int bad_cff: 1; + unsigned int bad_metrics: 1; + unsigned int bad_cmap: 1; + unsigned int bad_embedded_bitmap: 1; + unsigned int bad_gx: 1; + unsigned int bad_ot: 1; + unsigned int bad_os2_version: 1; + unsigned int bad_sfnt_header: 1; + Layer guidelines; + struct Base *horiz_base, *vert_base; +}; + +enum gsub_inusetype { git_normal, git_justinuse, git_findnames }; + +#define MAX_TAB 48 +struct tabdir { + int32 version; /* 0x00010000 */ + uint16 numtab; + uint16 searchRange; /* (Max power of 2 <= numtab) *16 */ + uint16 entrySel; /* Log2(Max power of 2 <= numtab ) */ + uint16 rangeShift; /* numtab*16 - searchRange */ + struct taboff { + uint32 tag; /* Table name */ + uint32 checksum;/* for table */ + uint32 offset; /* to start of table in file */ + uint32 length; + FILE *data; + uint16 dup_of; + uint16 orderingval; + } tabs[MAX_TAB]; /* room for all the above tables */ + /* Not in any particular order. */ + struct taboff *ordered[MAX_TAB]; /* Ordered the way the tables should be output in file */ + struct taboff *alpha[MAX_TAB]; /* Ordered alphabetically by tag for the ttf header */ +}; + +struct glyphhead { + int16 numContours; + int16 xmin; + int16 ymin; + int16 xmax; + int16 ymax; +}; + +struct head { + int32 version; /* 0x00010000 */ + int32 revision; /* 0 */ + uint32 checksumAdj; /* set to 0, sum entire font, store 0xb1b0afba-sum */ + uint32 magicNum; /* 0x5f0f3cf5 */ + uint16 flags; /* 1 */ + uint16 emunits; /* sf->ascent+sf->descent */ + int32 createtime[2];/* number of seconds since 1904 */ + int32 modtime[2]; + int16 xmin; /* min for entire font */ + int16 ymin; + int16 xmax; + int16 ymax; + uint16 macstyle; /* 1=>Bold, 2=>Italic */ + uint16 lowestreadable; /* size in pixels. Say about 10? */ + int16 dirhint; /* 0=>mixed directional characters, */ + int16 locais32; /* is the location table 32bits or 16, 0=>16, 1=>32 */ + int16 glyphformat; /* 0 */ + uint16 mbz; /* padding */ +}; + +struct hhead { + int32 version; /* 0x00010000 */ + int16 ascender; /* sf->ascender */ + int16 descender; /* -sf->descender */ + int16 linegap; /* 0 */ + int16 maxwidth; /* of all characters */ + int16 minlsb; /* How is this different from xmin above? */ + int16 minrsb; + int16 maxextent; /* How is this different from xmax above? */ + int16 caretSlopeRise;/* Uh... let's say 1? */ + int16 caretSlopeRun;/* Uh... let's say 0 */ + /* not exactly specified, but FontValidator wants this to match italicangle */ + int16 mbz[5]; + int16 metricformat; /* 0 */ + uint16 numMetrics; /* just set to glyph count */ +}; + +struct hmtx { + uint16 width; /* NOTE: TTF only allows positive widths!!! */ + int16 lsb; +}; + +struct kern { + uint16 version; /* 0 */ + uint16 ntab; /* 1, number of subtables */ + /* first (and only) subtable */ + uint16 stversion; /* 0 */ + uint16 length; /* length of subtable beginning at &stversion */ + uint16 coverage; /* 1, (set of flags&format) */ + uint16 nPairs; /* number of kern pairs */ + uint16 searchRange; /* (Max power of 2 <= nPairs) *6 */ + uint16 entrySel; /* Log2(Max power of 2 <= nPairs ) */ + uint16 rangeShift; /* numtab*6 - searchRange */ + struct kp { + uint16 left; /* left glyph num */ + uint16 right; /* right glyph num */ + /* table is ordered by these two above treated as uint32 */ + int16 offset; /* kern amount */ + } *kerns; /* Array should be nPairs big */ +}; + +struct maxp { + int32 version; /* 0x00010000 */ + uint16 numGlyphs; + uint16 maxPoints; /* max number of points in a simple glyph */ + uint16 maxContours; /* max number of paths in a simple glyph */ + uint16 maxCompositPts; + uint16 maxCompositCtrs; + uint16 maxZones; /* 1 */ + uint16 maxTwilightPts; /* 0 */ + uint16 maxStorage; /* 0 */ + uint16 maxFDEFs; /* 0 */ + uint16 maxIDEFs; /* 0 */ + uint16 maxStack; /* 0 */ + uint16 maxglyphInstr;/* 0 */ + uint16 maxnumcomponents; /* Maximum number of refs in any composit */ + uint16 maxcomponentdepth; + /* Apple docs say: 0 (if no composits), maximum value 1 (one level of composit) */ + /* OpenType docs say: 1 (if no composits), any depth allowed */ +}; + +struct nametab { + uint16 format; /* 0 */ + uint16 numrec; /* 1 */ + uint16 startOfStrings; /* offset from start of table to start of strings */ + struct namerec { + uint16 platform; /* 3 => MS */ + uint16 specific; /* 1 */ + uint16 language; /* 0x0409 */ + uint16 nameid; /* 0=>copyright, 1=>family, 2=>weight, 4=>fullname */ + /* 5=>version, 6=>postscript name */ + uint16 strlen; + uint16 stroff; + } nr[6]; +}; + +struct os2 { + uint16 version; /* 1 */ + int16 avgCharWid; /* average all chars (v3) see v2 definition below */ + uint16 weightClass; /* 100=>thin, 200=>extra-light, 300=>light, 400=>normal, */ + /* 500=>Medium, 600=>semi-bold, 700=>bold, 800=>extra-bold, */ + /* 900=>black */ + uint16 widthClass; /* 75=>condensed, 100, 125=>expanded */ + int16 fstype; /* 0x0008 => allow embedded editing */ + int16 ysubXSize; /* emsize/5 */ + int16 ysubYSize; /* emsize/5 */ + int16 ysubXOff; /* 0 */ + int16 ysubYOff; /* emsize/5 */ + int16 ysupXSize; /* emsize/5 */ + int16 ysupYSize; /* emsize/5 */ + int16 ysupXOff; /* 0 */ + int16 ysupYOff; /* emsize/5 */ + int16 yStrikeoutSize; /* 102/2048 *emsize */ + int16 yStrikeoutPos; /* 530/2048 *emsize */ + int16 sFamilyClass; /* ??? 0 */ + /* high order byte is the "class", low order byte the sub class */ + /* class = 0 => no classification */ + /* class = 1 => old style serifs */ + /* subclass 0, no class; 1 ibm rounded; 2 garalde; 3 venetian; 4 mod venitian; 5 dutch modern; 6 dutch trad; 7 contemporary; 8 caligraphic; 15 misc */ + /* class = 2 => transitional serifs */ + /* subclass 0, no class; 1 drect line; 2 script; 15 misc */ + /* class = 3 => modern serifs */ + /* subclass: 1, italian; 2, script */ + /* class = 4 => clarendon serifs */ + /* subclass: 1, clarendon; 2, modern; 3 trad; 4 newspaper; 5 stub; 6 monotone; 7 typewriter */ + /* class = 5 => slab serifs */ + /* subclass: 1, monotone; 2, humanist; 3 geometric; 4 swiss; 5 typewriter */ + /* class = 7 => freeform serifs */ + /* subclass: 1, modern */ + /* class = 8 => sans serif */ + /* subclass: 1, ibm neogrotesque; 2 humanist; 3 low-x rounded; 4 high-x rounded; 5 neo-grotesque; 6 mod neo-grot; 9 typewriter; 10 matrix */ + /* class = 9 => ornamentals */ + /* subclass: 1, engraver; 2 black letter; 3 decorative; 4 3D */ + /* class = 10 => scripts */ + /* subclass: 1, uncial; 2 brush joined; 3 formal joined; 4 monotone joined; 5 calligraphic; 6 brush unjoined; 7 formal unjoined; 8 monotone unjoined */ + /* class = 12 => symbolic */ + /* subclass: 3 mixed serif; 6 old style serif; 7 neo-grotesque sans; */ + char panose[10]; /* can be set to zero */ + uint32 unicoderange[4]; + /* 1<<0=>ascii, 1<<1 => latin1, 2=>100-17f, 3=>180-24f, 4=>250-2af */ + /* 5=> 2b0-2ff, 6=>300-36f, ... */ + char achVendID[4]; /* can be zero */ + uint16 fsSel; /* 1=> italic, 32=>bold, 64 => regular */ + /* 2=>underscore, 4=>negative, 8->outlined, 16=>strikeout */ + /* version 4 of OS/2 */ + /* 128->don't use win_ascent/descent for line spacing */ + /* 256=>family varies on weight width slope only */ + /* 512=>oblique (as opposed to italic) */ + uint16 firstcharindex; /* minimum unicode encoding */ + uint16 lastcharindex; /* maximum unicode encoding */ + uint16 ascender; /* font ascender height (not ascent) */ + uint16 descender; /* font descender height */ + uint16 linegap; /* 0 */ + uint16 winascent; /* ymax */ + uint16 windescent; /* ymin */ + uint32 ulCodePage[2]; + /* 1<<0 => latin1, 1<<1=>latin2, cyrillic, greek, turkish, hebrew, arabic */ + /* 1<<30 => mac, 1<<31 => symbol */ + /* OTF stuff (version 2 of OS/2) */ + short xHeight; + short capHeight; + short defChar; + short breakChar; + short maxContext; + /* V3 of OS/2 has no additional data */ + /* V4 of OS/2 has no additional data */ + + int v1_avgCharWid; /* 1&2 Weighted average of the lower case letters and space */ + int v3_avgCharWid; /* 3&4 average over all non-zero width glyphs */ +}; + +struct post { + int32 formattype; /* 0x00020000 */ + int32 italicAngle; /* in fixed format */ + int16 upos; + int16 uwidth; + uint32 isfixed; + uint32 minmem42; + uint32 maxmem42; + uint32 minmem1; + uint32 maxmem1; + uint16 numglyphs; + uint16 glyphnameindex[1]; +}; + +struct glyphinfo { + struct maxp *maxp; /* this one is given to dumpglyphs, rest blank */ + uint32 *loca; + FILE *glyphs; + FILE *hmtx; + int hmtxlen; + FILE *vmtx; + int vmtxlen; + int next_glyph; + int glyph_len; + int xmin, ymin, xmax, ymax; + BlueData bd; + int strikecnt; /* number of bitmaps to dump */ + int lasthwidth, lastvwidth; /* encoding of last glyph for which we generate a full metrics entry */ + int hfullcnt, vfullcnt; + int flags; + int fixed_width; + int32 *bsizes; + unsigned int dovariations: 1; + unsigned int onlybitmaps: 1; + unsigned int has_instrs: 1; + unsigned int is_ttf: 1; + SplineFont *sf; + int32 *pointcounts; + int *bygid; /* glyph list */ + int gcnt; + int layer; +}; + +struct vorg { + uint16 majorVersion; /* 1 */ + uint16 minorVersion; /* 0 */ + short defaultVertOriginY; /* Y coord of default vertical origin in the design coordinate system */ + uint16 numVertOriginYMetrics; /* exceptions to the above, elements in following array */ +#if 0 + struct { + uint16 glyphindex; /* ordered */ + short vertOrigin; + } origins[]; +#endif +}; + +struct alltabs { + struct tabdir tabdir; + struct head head; + struct hhead hhead; + struct hhead vhead; + struct maxp maxp; + struct os2 os2; + struct vorg vorg; + FILE *loca; + int localen; + FILE *name; + int namelen; + FILE *post; + int postlen; + FILE *gpos; /* Used instead of kern for opentype (and other glyph positioning) */ + int gposlen; + FILE *gsub; /* Used for ligatures and other substitutions */ + int gsublen; + FILE *gdef; /* If we use mark to base we need this to tell the text processor what things are marks (the opentype docs say it is optional. They are wrong) */ + int gdeflen; + FILE *kern; + int kernlen; + FILE *cmap; + int cmaplen; + FILE *headf; + int headlen; + FILE *hheadf; + int hheadlen; + FILE *maxpf; + int maxplen; + FILE *os2f; + int os2len; + FILE *math; + int mathlen; + FILE *base; + int baselen; + FILE *cvtf; + int cvtlen; + FILE *fpgmf; /* Copied from an original ttf file and dumped out. Never generated */ + int fpgmlen; + FILE *prepf; /* Copied from an original ttf file and dumped out. Never generated */ + int preplen; + FILE *vheadf; + int vheadlen; + FILE *vorgf; + int vorglen; + FILE *gaspf; + int gasplen; + FILE *cfff; + int cfflen; + FILE *sidf; + FILE *sidh; + FILE *charset; + FILE *encoding; + FILE *globalsubrs; + FILE *private; + FILE *charstrings; + FILE *fdselect; + FILE *fdarray; + FILE *bdat; /* might be EBDT */ + int bdatlen; + FILE *bloc; /* might be EBLC */ + int bloclen; + FILE *ebsc; + int ebsclen; + FILE *prop; + int proplen; + FILE *opbd; + int opbdlen; + FILE *acnt; + int acntlen; + FILE *lcar; + int lcarlen; + FILE *feat; + int featlen; + FILE *morx; + int morxlen; + FILE *bsln; + int bslnlen; + FILE *pfed; + int pfedlen; + FILE *tex; + int texlen; + FILE *bdf; + int bdflen; + FILE *gvar; + int gvarlen; + FILE *fvar; + int fvarlen; + FILE *cvar; + int cvarlen; + FILE *avar; + int avarlen; + FILE *fftmf; + int fftmlen; + FILE *dsigf; + int dsiglen; + FILE *hdmxf; + int hdmxlen; + int defwid, nomwid; + int sidcnt; + int lenpos; + int privatelen; + unsigned int sidlongoffset: 1; + unsigned int cfflongoffset: 1; + unsigned int applemode: 1; /* Where apple & ms differ do things apple's way (bitmaps, name table PostScript) */ + unsigned int opentypemode: 1; /* Where apple & ms differ do things opentype's way (bitmaps, name table PostScript) */ + /* If both are set then try to generate both types of tables. Some things can't be fudged though (name table postscript) */ + unsigned int msbitmaps: 1; + unsigned int applebitmaps: 1; + unsigned int otbbitmaps: 1; + unsigned int isotf: 1; + unsigned int dovariations: 1; /* Output Apple *var tables (for mm fonts) */ + unsigned int error: 1; + struct glyphinfo gi; + int isfixed; + struct fd2data *fds; + int next_strid; + + struct feat_name { int strid; struct macname *mn, *smn; } *feat_name; + struct other_names { int strid; struct macname *mn; struct other_names *next; } *other_names; + struct macname2 *ordered_feat; + + int next_lookup; /* for doing nested lookups in contextual features */ + short *gn_sid; + enum fontformat format; + int fontstyle_name_strid; /* For GPOS 'size' */ + SplineFont *sf; + EncMap *map; + struct ttf_table *oldcvt; + int oldcvtlen; +}; + +struct subhead { uint16 first, cnt, delta, rangeoff; }; /* a sub header in 8/16 cmap table */ + +enum touchflags { tf_x=1, tf_y=2, tf_d=4, tf_endcontour=0x80, tf_startcontour=0x40 }; + +struct contexttree { + int depth; + int branch_cnt; /* count of subbranches of this node */ + struct ct_branch { + uint16 classnum; + struct contexttree *branch; + } *branches; + struct fpst_rule *ends_here; + int rule_cnt; /* count of rules which are active here */ + struct ct_subs { + struct fpst_rule *rule; + struct contexttree *branch;/* if the rule ends here this will be null */ + uint16 thisclassnum; + } *rules; + int pending_pos; + OTLookup *applymarkedsubs; + OTLookup *applycursubs; + uint16 marked_index, cur_index; + uint8 markme; + int state, next_state; + struct contexttree *parent; +}; + + /* TrueType Composite glyph flags */ +#define _ARGS_ARE_WORDS 1 +#define _ARGS_ARE_XY 2 +#define _ROUND 4 /* round offsets so componant is on grid */ +#define _SCALE 8 +/* 0x10 is reserved */ +#define _MORE 0x20 +#define _XY_SCALE 0x40 +#define _MATRIX 0x80 +#define _INSTR 0x100 +#define _USE_MY_METRICS 0x200 +#define _OVERLAP_COMPOUND 0x400 /* Used in Apple GX fonts */ + /* Means the components overlap (which? this one and what other?) */ +/* Described in OpenType specs, not by Apple */ +/* amusingly, Apple supports but MS does not */ +/* MS says they support this after Win 2000 */ +#define _SCALED_OFFSETS 0x800 /* Use Apple definition of offset interpretation */ +#define _UNSCALED_OFFSETS 0x1000 /* Use MS definition */ + +extern int ttfFixupRef(SplineChar **chars,int i); + + /* Open type Advanced Typography Tables */ +extern void otf_dumpgpos(struct alltabs *at, SplineFont *sf); +extern void otf_dumpgsub(struct alltabs *at, SplineFont *sf); +extern void otf_dumpgdef(struct alltabs *at, SplineFont *sf); +extern void otf_dumpbase(struct alltabs *at, SplineFont *sf); +extern void otf_dump_dummydsig(struct alltabs *at, SplineFont *sf); +extern int gdefclass(SplineChar *sc); + + /* Apple Advanced Typography Tables */ +extern void aat_dumpacnt(struct alltabs *at, SplineFont *sf); +extern void ttf_dumpkerns(struct alltabs *at, SplineFont *sf); +extern void aat_dumplcar(struct alltabs *at, SplineFont *sf); +extern void aat_dumpmorx(struct alltabs *at, SplineFont *sf); +extern void aat_dumpopbd(struct alltabs *at, SplineFont *sf); +extern void aat_dumpprop(struct alltabs *at, SplineFont *sf); +extern void aat_dumpbsln(struct alltabs *at, SplineFont *sf); +extern int LookupHasDefault(OTLookup *otl); +extern int scriptsHaveDefault(struct scriptlanglist *sl); +extern int FPSTisMacable(SplineFont *sf, FPST *fpst); +extern uint32 MacFeatureToOTTag(int featureType,int featureSetting); +extern int OTTagToMacFeature(uint32 tag, int *featureType,int *featureSetting); +extern uint16 *props_array(SplineFont *sf,struct glyphinfo *gi); +extern int haslrbounds(SplineChar *sc, PST **left, PST **right); +extern int16 *PerGlyphDefBaseline(SplineFont *sf,int *def_baseline); +extern void FigureBaseOffsets(SplineFont *sf,int def_bsln,int offsets[32]); + + /* Apple variation tables */ +extern int ContourPtNumMatch(MMSet *mm, int gid); +extern int16 **SCFindDeltas(MMSet *mm, int gid, int *_ptcnt); +extern int16 **CvtFindDeltas(MMSet *mm, int *_ptcnt); +extern void ttf_dumpvariations(struct alltabs *at, SplineFont *sf); + +extern struct macsettingname { + int mac_feature_type; + int mac_feature_setting; + uint32 otf_tag; +} macfeat_otftag[], *user_macfeat_otftag; + + /* TrueType instructions */ +extern struct ttf_table *SFFindTable(SplineFont *sf,uint32 tag); +extern int32 memlong(uint8 *data,int table_len, int offset); +extern int memushort(uint8 *data,int table_len, int offset); +extern void memputshort(uint8 *data,int offset,uint16 val); +extern int TTF__getcvtval(SplineFont *sf,int val); +extern int TTF_getcvtval(SplineFont *sf,int val); +extern void SCinitforinstrs(SplineChar *sc); +extern int SSAddPoints(SplineSet *ss,int ptcnt,BasePoint *bp, char *flags); +extern int Macable(SplineFont *sf, OTLookup *otl); + + /* Used by both otf and apple */ +extern int LigCaretCnt(SplineChar *sc); +extern uint16 *ClassesFromNames(SplineFont *sf,char **classnames,int class_cnt, + int numGlyphs, SplineChar ***glyphs, int apple_kc); +extern SplineChar **SFGlyphsFromNames(SplineFont *sf,char *names); + + +extern void AnchorClassOrder(SplineFont *sf); +extern SplineChar **EntryExitDecompose(SplineFont *sf,AnchorClass *ac, + struct glyphinfo *gi); +extern void AnchorClassDecompose(SplineFont *sf,AnchorClass *_ac, int classcnt, int *subcnts, + SplineChar ***marks,SplineChar ***base, + SplineChar ***lig,SplineChar ***mkmk, + struct glyphinfo *gi); + +#ifdef _HAS_LONGLONG +extern void cvt_unix_to_1904( long long time, int32 result[2]); +#else +extern void cvt_unix_to_1904( long time, int32 result[2]); +#endif + + + /* Non-standard tables */ + /* My PfEd table for FontForge/PfaEdit specific info */ +extern void pfed_dump(struct alltabs *at, SplineFont *sf); +extern void pfed_read(FILE *ttf,struct ttfinfo *info); + /* The TeX table, to contain stuff the TeX people want */ +extern void tex_dump(struct alltabs *at, SplineFont *sf); +extern void tex_read(FILE *ttf,struct ttfinfo *info); + /* The BDF table, to contain bdf properties the X people want */ +extern int ttf_bdf_dump(SplineFont *sf,struct alltabs *at,int32 *sizes); +extern void ttf_bdf_read(FILE *ttf,struct ttfinfo *info); + /* The FFTM table, to some timestamps I'd like */ +extern int ttf_fftm_dump(SplineFont *sf,struct alltabs *at); + + /* The MATH table */ +extern void otf_dump_math(struct alltabs *at, SplineFont *sf); +extern void otf_read_math(FILE *ttf,struct ttfinfo *info); +extern void otf_read_math_used(FILE *ttf,struct ttfinfo *info); +extern void GuessNamesFromMATH(FILE *ttf,struct ttfinfo *info); + + /* Parsing advanced typography */ +extern void readmacfeaturemap(FILE *ttf,struct ttfinfo *info); +extern void readttfkerns(FILE *ttf,struct ttfinfo *info); +extern void readttfmort(FILE *ttf,struct ttfinfo *info); +extern void readttfopbd(FILE *ttf,struct ttfinfo *info); +extern void readttflcar(FILE *ttf,struct ttfinfo *info); +extern void readttfprop(FILE *ttf,struct ttfinfo *info); +extern void readttfbsln(FILE *ttf,struct ttfinfo *info); +extern void readttfgsubUsed(FILE *ttf,struct ttfinfo *info); +extern void GuessNamesFromGSUB(FILE *ttf,struct ttfinfo *info); +extern void readttfgpossub(FILE *ttf,struct ttfinfo *info,int gpos); +extern void readttfgdef(FILE *ttf,struct ttfinfo *info); +extern void readttfbase(FILE *ttf,struct ttfinfo *info); + +extern void VariationFree(struct ttfinfo *info); +extern void readttfvariations(struct ttfinfo *info, FILE *ttf); + +extern struct otfname *FindAllLangEntries(FILE *ttf, struct ttfinfo *info, int id ); + +/* Known font parameters for 'TeX ' table (fontdims, spacing params, whatever you want to call them) */ + /* Used by all fonts */ +#define TeX_Slant CHR('S','l','n','t') +#define TeX_Space CHR('S','p','a','c') +#define TeX_Stretch CHR('S','t','r','e') +#define TeX_Shrink CHR('S','h','n','k') +#define TeX_XHeight CHR('X','H','g','t') +#define TeX_Quad CHR('Q','u','a','d') + /* Used by text fonts */ +#define TeX_ExtraSp CHR('E','x','S','p') + /* Used by all math fonts */ +#define TeX_MathSp CHR('M','t','S','p') + /* Used by math fonts */ +#define TeX_Num1 CHR('N','u','m','1') +#define TeX_Num2 CHR('N','u','m','2') +#define TeX_Num3 CHR('N','u','m','3') +#define TeX_Denom1 CHR('D','n','m','1') +#define TeX_Denom2 CHR('D','n','m','2') +#define TeX_Sup1 CHR('S','u','p','1') +#define TeX_Sup2 CHR('S','u','p','2') +#define TeX_Sup3 CHR('S','u','p','3') +#define TeX_Sub1 CHR('S','u','b','1') +#define TeX_Sub2 CHR('S','u','b','2') +#define TeX_SupDrop CHR('S','p','D','p') +#define TeX_SubDrop CHR('S','b','D','p') +#define TeX_Delim1 CHR('D','l','m','1') +#define TeX_Delim2 CHR('D','l','m','2') +#define TeX_AxisHeight CHR('A','x','H','t') + /* Used by math extension fonts */ +#define TeX_DefRuleThick CHR('R','l','T','k') +#define TeX_BigOpSpace1 CHR('B','O','S','1') +#define TeX_BigOpSpace2 CHR('B','O','S','2') +#define TeX_BigOpSpace3 CHR('B','O','S','3') +#define TeX_BigOpSpace4 CHR('B','O','S','4') +#define TeX_BigOpSpace5 CHR('B','O','S','5') + +extern void SFDummyUpCIDs(struct glyphinfo *gi,SplineFont *sf); diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/ttfspecial.c b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/ttfspecial.c new file mode 100644 index 00000000000..dad61caa268 --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/ttfspecial.c @@ -0,0 +1,903 @@ +/* Copyright (C) 2000-2008 by George Williams */ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "pfaedit.h" +#include +#include +#include +#include +#include /* For COLOR_DEFAULT */ + +#include "ttf.h" + +/* This file contains routines to generate non-standard true/opentype tables */ +/* The first is the 'PfEd' table containing PfaEdit specific information */ +/* glyph comments & colours ... perhaps other info later */ + +/* ************************************************************************** */ +/* ************************* The 'PfEd' table ************************* */ +/* ************************* Output ************************* */ +/* ************************************************************************** */ + +#include "PfEd.h" /* This describes the format of the 'PfEd' table */ + /* and its many subtables. */ + +#define MAX_SUBTABLE_TYPES 20 + +/* ************************* The 'PfEd' table ************************* */ +/* ************************* Input ************************* */ + +static void pfed_readfontcomment(FILE *ttf,struct ttfinfo *info,uint32 base, + uint32 tag) { + int len; + char *start, *pt, *end; + int use_utf8; + + fseek(ttf,base,SEEK_SET); + use_utf8 = getushort(ttf); + if ( use_utf8!=0 && use_utf8!=1 ) +return; /* Bad version number */ + len = getushort(ttf); + start = pt = galloc(len+1); + + end = pt+len; + if ( use_utf8 ) { + while ( ptfontcomments); + free(start); + start = pt; + } + if ( tag==flog_TAG ) + info->fontlog = start; + else + info->fontcomments = start; +} + +static char *pfed_read_utf8(FILE *ttf, uint32 start) { + int ch, len; + char *str, *pt; + + fseek( ttf, start, SEEK_SET); + len = 0; + while ( (ch=getc(ttf))!='\0' && ch!=EOF ) + ++len; + fseek( ttf, start, SEEK_SET); + str = pt = galloc(len+1); + while ( (ch=getc(ttf))!='\0' && ch!=EOF ) + *pt++ = ch; + *pt = '\0'; +return( str ); +} + +static char *pfed_read_ucs2_len(FILE *ttf,uint32 offset,int len) { + char *pt, *str; + uint32 uch, uch2; + int i; + + if ( len<0 ) +return( NULL ); + + len>>=1; + pt = str = galloc(3*len); + fseek(ttf,offset,SEEK_SET); + for ( i=0; i=0xd800 && uch<0xdc00 ) { + uch2 = getushort(ttf); + if ( uch2>=0xdc00 && uch2<0xe000 ) + uch = ((uch-0xd800)<<10) | (uch2&0x3ff); + else { + pt = utf8_idpb(pt,uch); + uch = uch2; + } + } + pt = utf8_idpb(pt,uch); + } + *pt++ = 0; +return( grealloc(str,pt-str) ); +} + +static char *pfed_read_utf8_len(FILE *ttf,uint32 offset,int len) { + char *pt, *str; + int i; + + if ( len<0 ) +return( NULL ); + + pt = str = galloc(len+1); + fseek(ttf,offset,SEEK_SET); + for ( i=0; icvt_names = galloc((count+1)*sizeof(char *)); + for ( i=0; icvt_names[i] = NULL; + else + info->cvt_names[i] = pfed_read_utf8(ttf,base+offsets[i]); + } + free(offsets); +} + +static void pfed_readglyphcomments(FILE *ttf,struct ttfinfo *info,uint32 base) { + int n, i, j; + struct grange { int start, end; uint32 offset; } *grange; + uint32 offset, next; + int use_utf8; + + fseek(ttf,base,SEEK_SET); + use_utf8 = getushort(ttf); + if ( use_utf8!=0 && use_utf8!=1 ) +return; /* Bad version number */ + n = getushort(ttf); + grange = galloc(n*sizeof(struct grange)); + for ( i=0; igrange[i].end || grange[i].end>info->glyph_cnt ) { + LogError( _("Bad glyph range specified in glyph comment subtable of PfEd table\n") ); + grange[i].start = 1; grange[i].end = 0; + } + } + for ( i=0; ichars[j]->comment = pfed_read_utf8_len(ttf,base+offset,next-offset); + else + info->chars[j]->comment = pfed_read_ucs2_len(ttf,base+offset,next-offset); + if ( info->chars[j]->comment == NULL ) + LogError("Invalid comment string (negative length?) in 'PfEd' table for glyph %s.", + info->chars[j]->name ); + } + } + free(grange); +} + +static void pfed_readcolours(FILE *ttf,struct ttfinfo *info,uint32 base) { + int n, i, j, start, end; + uint32 col; + + fseek(ttf,base,SEEK_SET); + if ( getushort(ttf)!=0 ) +return; /* Bad version number */ + n = getushort(ttf); + for ( i=0; iend || end>info->glyph_cnt ) + LogError( _("Bad glyph range specified in colour subtable of PfEd table\n") ); + else { + for ( j=start; j<=end; ++j ) + info->chars[j]->color = col; + } + } +} + +static void pfed_readlookupnames(FILE *ttf,struct ttfinfo *info,uint32 base, + OTLookup *lookups) { + OTLookup *otl; + struct lookup_subtable *sub; + AnchorClass *ac; + int i, j, k, n, s, a; + struct lstruct { int name_off, subs_off; } *ls, *ss, *as; + + fseek(ttf,base,SEEK_SET); + if ( getushort(ttf)!=0 ) +return; /* Bad version number */ + n = getushort(ttf); + ls = galloc(n*sizeof(struct lstruct)); + for ( i=0; inext ) { + if ( ls[i].name_off!=0 ) { + free( otl->lookup_name ); + otl->lookup_name = pfed_read_utf8(ttf,base+ls[i].name_off); + } + if ( ls[i].subs_off!=0 ) { + fseek(ttf,base+ls[i].subs_off,SEEK_SET); + s = getushort(ttf); + ss = galloc(s*sizeof(struct lstruct)); + for ( j=0; jsubtables; jnext ) { + if ( ss[j].name_off!=0 ) { + free( sub->subtable_name ); + sub->subtable_name = pfed_read_utf8(ttf,base+ss[j].name_off); + } + if ( ss[j].subs_off!=0 ) { + if ( !sub->anchor_classes ) + LogError("Whoops, attempt to name anchors in a subtable which doesn't contain any\n"); + else { + fseek(ttf,base+ss[j].subs_off,SEEK_SET); + a = getushort(ttf); + as = galloc(a*sizeof(struct lstruct)); + for ( k=0; kahead; ac!=NULL; ac=ac->next ) { + if ( ac->subtable==sub ) { + if ( as[k].name_off!=0 ) { + free( ac->name ); + ac->name = pfed_read_utf8(ttf,base+as[k].name_off); + } + ++k; + } + } + free(as); + } + } + } + /* I guess it's ok for some subtables to be unnamed, so no check for sub!=NULL */ + if ( jlookup_name ); + free(ss); + } + } + /* I guess it's ok for some lookups to be unnamed, so no check for otf!=NULL */ + if ( ifirst = ss->last = SplinePointCreate(0,0); +return; + } + offx = pfed_get_coord(ttf,COM_MOD(verb)); + offy = pfed_get_coord(ttf,COM_MOD(verb)); + ss->first = current = SplinePointCreate(offx,offy); + forever { + verb = getc(ttf); + v = COM_VERB(verb); m = COM_MOD(verb); + if ( m==3 ) { + LogError("Bad data modifier in contour command in 'PfEd'\n" ); + break; + } + if ( verb==V_Close || verb==V_End ) + break; + else if ( v>=V_LineTo && v<=V_VLineTo ) { + offx = offy = 0; + if ( v==V_LineTo ) { + offx = pfed_get_coord(ttf,m); + offy = pfed_get_coord(ttf,m); + } else if ( v==V_HLineTo ) + offx = pfed_get_coord(ttf,m); + else if ( v==V_VLineTo ) + offy = pfed_get_coord(ttf,m); + sp = SplinePointCreate(current->me.x+offx,current->me.y+offy); + } else if ( v>=V_QCurveTo && v<=V_QVImplicit ) { + int will_be_implicit = true; + offx = offy = 0; offx1 = offy1 = 1; /* else implicit points become straight lines too soon */ + if ( v==V_QCurveTo ) { + offx = pfed_get_coord(ttf,m); + offy = pfed_get_coord(ttf,m); + offx1 = pfed_get_coord(ttf,m); + offy1 = pfed_get_coord(ttf,m); + will_be_implicit = false; + } else if ( v==V_QImplicit ) { + offx = pfed_get_coord(ttf,m); + offy = pfed_get_coord(ttf,m); + } else if ( v==V_QHImplicit ) { + offx = pfed_get_coord(ttf,m); + } else if ( v==V_QVImplicit ) { + offy = pfed_get_coord(ttf,m); + } + + current->nextcp.x = current->me.x+offx; + current->nextcp.y = current->me.y+offy; + current->nonextcp = false; + sp = SplinePointCreate(current->nextcp.x+offx1,current->nextcp.y+offy1); + sp->prevcp = current->nextcp; + sp->noprevcp = false; + if ( was_implicit ) { + current->me.x = (current->prevcp.x + current->nextcp.x)/2; + current->me.y = (current->prevcp.y + current->nextcp.y)/2; + SplineRefigure(current->prev); + } + was_implicit = will_be_implicit; + } else if ( v>=V_CurveTo && v<=V_HVCurveTo ) { + offx=offy=offx2=offy2=0; + if ( v==V_CurveTo ) { + offx = pfed_get_coord(ttf,m); + offy = pfed_get_coord(ttf,m); + offx1 = pfed_get_coord(ttf,m); + offy1 = pfed_get_coord(ttf,m); + offx2 = pfed_get_coord(ttf,m); + offy2 = pfed_get_coord(ttf,m); + } else if ( v==V_VHCurveTo ) { + offy = pfed_get_coord(ttf,m); + offx1 = pfed_get_coord(ttf,m); + offy1 = pfed_get_coord(ttf,m); + offx2 = pfed_get_coord(ttf,m); + } else if ( v==V_HVCurveTo ) { + offx = pfed_get_coord(ttf,m); + offx1 = pfed_get_coord(ttf,m); + offy1 = pfed_get_coord(ttf,m); + offy2 = pfed_get_coord(ttf,m); + } + current->nextcp.x = current->me.x+offx; + current->nextcp.y = current->me.y+offy; + current->nonextcp = false; + sp = SplinePointCreate(current->nextcp.x+offx1+offx2,current->nextcp.y+offy1+offy2); + sp->prevcp.x = current->nextcp.x+offx1; + sp->prevcp.y = current->nextcp.y+offy1; + sp->noprevcp = false; + } else { + LogError("Whoops, unexpected verb in contour %d.%d\n", v, m ); + break; + } + SplineMake(current,sp,type==2); + current = sp; + } + if ( verb==V_Close ) { + if ( was_implicit ) { + current->me.x = (current->prevcp.x + ss->first->nextcp.x)/2; + current->me.y = (current->prevcp.y + ss->first->nextcp.y)/2; + } + if ( current->me.x==ss->first->me.x && current->me.y==ss->first->me.y ) { + current->prev->to = ss->first; + ss->first->prev = current->prev; + ss->first->prevcp = current->prevcp; + ss->first->noprevcp = current->noprevcp; + SplinePointFree(current); + } else + SplineMake(current,ss->first,type==2); + ss->last = ss->first; + } else { + ss->last = current; + } + SPLCatagorizePoints(ss); +} + + +static void pfed_read_glyph_layer(FILE *ttf,struct ttfinfo *info,Layer *ly, + uint32 base, int type, int version) { + int cc, ic, rc, i, j; + SplineSet *ss; + struct contours { int data_off, name_off; SplineSet *ss; } *contours; + int gid; + RefChar *last, *cur; + + fseek(ttf,base,SEEK_SET); + cc = getushort(ttf); + rc = 0; + if ( version==1 ) + rc = getushort(ttf); + ic = getushort(ttf); + contours = galloc(cc*sizeof(struct contours)); + for ( i=0; itransform[j] = getlong(ttf)/32768.0; + gid = getushort(ttf); + cur->sc = info->chars[gid]; + cur->orig_pos = gid; + cur->unicode_enc = cur->sc->unicodeenc; + if ( last==NULL ) + ly->refs = cur; + else + last->next = cur; + last = cur; + } + + ss = ly->splines; /* Only relevant for spiros where they live in someone else's layer */ + for ( i=0; isplines = contours[i].ss; + else + contours[i-1].ss->next = contours[i].ss; + if ( contours[i].name_off!=0 ) + contours[i].ss->contour_name = pfed_read_utf8(ttf,base+contours[i].name_off); + pfed_read_normal_contour(ttf,contours[i].ss,base+contours[i].data_off,type); + } + } + free(contours); +} + +static void pfed_readguidelines(FILE *ttf,struct ttfinfo *info,uint32 base) { + int i,v,h,off; + int version; + SplinePoint *sp, *nsp; + SplineSet *ss; + + fseek(ttf,base,SEEK_SET); + version = getushort(ttf); + if ( version>1 ) +return; /* Bad version number */ + v = getushort(ttf); + h = getushort(ttf); + (void) getushort(ttf); + off = getushort(ttf); + + if ( off!=0 ) { + pfed_read_glyph_layer(ttf,info,&info->guidelines,base+off,info->to_order2?2:3,version); + } else { + struct npos { int pos; int offset; } *vs, *hs; + vs = galloc(v*sizeof(struct npos)); + hs = galloc(h*sizeof(struct npos)); + for ( i=0; iemsize); + nsp = SplinePointCreate(vs[i].pos,2*info->emsize); + SplineMake(sp,nsp,info->to_order2); + ss = chunkalloc(sizeof(SplineSet)); + ss->first = sp; ss->last = nsp; + if ( vs[i].offset!=0 ) + ss->contour_name = pfed_read_utf8(ttf,base+vs[i].offset); + ss->next = info->guidelines.splines; + info->guidelines.splines = ss; + } + for ( i=0; iemsize,hs[i].pos); + nsp = SplinePointCreate(2*info->emsize,hs[i].pos); + SplineMake(sp,nsp,info->to_order2); + ss = chunkalloc(sizeof(SplineSet)); + ss->first = sp; ss->last = nsp; + if ( hs[i].offset!=0 ) + ss->contour_name = pfed_read_utf8(ttf,base+hs[i].offset); + ss->next = info->guidelines.splines; + info->guidelines.splines = ss; + } + SPLCatagorizePoints(info->guidelines.splines); + free(vs); free(hs); + } +} + +static void pfed_redo_refs(SplineChar *sc,int layer) { + RefChar *refs; + + sc->ticked = true; + for ( refs=sc->layers[layer].refs; refs!=NULL; refs=refs->next ) { + if ( !refs->sc->ticked ) + pfed_redo_refs(refs->sc,layer); + SCReinstanciateRefChar(sc,refs,layer); + } +} + +static void pfed_read_layer(FILE *ttf,struct ttfinfo *info,int layer,int type, uint32 base, + uint32 start,int version) { + uint32 *loca = gcalloc(info->glyph_cnt,sizeof(uint32)); + int i,j; + SplineChar *sc; + int rcnt; + struct range { int start, last; uint32 offset; } *ranges; + + fseek(ttf,start,SEEK_SET); + rcnt = getushort(ttf); + ranges = galloc(rcnt*sizeof(struct range)); + for ( i=0; ichars[j]; + ly = &sc->layers[layer]; + if ( loca[j]!=0 ) + pfed_read_glyph_layer(ttf,info,ly,base+loca[j],type,version); + } + } + free(ranges); free(loca); + + for ( i=0; iglyph_cnt; ++i ) if ( info->chars[i]!=NULL ) + info->chars[i]->ticked = false; + for ( i=0; iglyph_cnt; ++i ) if ( info->chars[i]!=NULL ) + pfed_redo_refs(info->chars[i],layer); +} + +static void pfed_readotherlayers(FILE *ttf,struct ttfinfo *info,uint32 base) { + int i, l, lcnt, spiro_index, gid; + int version; + struct layer_info { int type, name_off, data_off, sf_layer; char *name; } *layers; + int non_spiro_cnt=0; + SplineChar *sc; + + fseek(ttf,base,SEEK_SET); + version = getushort(ttf); + if ( version>1 ) +return; /* Bad version number */ + lcnt = getushort(ttf); + layers = galloc(lcnt*sizeof(struct layer_info)); + for ( i=0; ilayer_cnt = non_spiro_cnt+1; + info->layers = gcalloc(info->layer_cnt+1,sizeof(LayerInfo)); + info->layers[ly_back].background = true; + info->layers[ly_fore].order2 = info->to_order2; + info->layers[ly_fore].background = false; + l = i = 0; + if ( (layers[i].type&0xff)==1 ) + ++i; + if ( layers[i].type&0x100 ) { + /* first layer output is foreground, so it can't replace the background layer */ + ++info->layer_cnt; + l = 2; + info->layers[ly_back].order2 = info->to_order2; + } + for ( ; ilayers[l].name = layers[i].name; + layers[i].name = NULL; + layers[i].sf_layer = l; + info->layers[l].order2 = (layers[i].type&0xff)==2; + info->layers[l].background = (layers[i].type&0x100)?0:1; + if ( l==0 ) l=2; else ++l; + } + if ( info->layer_cnt!=2 ) { + for ( gid = 0; gidglyph_cnt; ++gid ) if ((sc=info->chars[gid])!=NULL ) { + sc->layers = grealloc(sc->layers,info->layer_cnt*sizeof(Layer)); + memset(sc->layers+2,0,(info->layer_cnt-2)*sizeof(Layer)); + sc->layer_cnt = info->layer_cnt; + } + } + } + if ( spiro_index!=-1 ) + pfed_read_layer(ttf,info,ly_fore,layers[spiro_index].type,base,base+layers[spiro_index].data_off,version); + for ( i=0; ipfed_start,SEEK_SET); + + if ( getlong(ttf)!=0x00010000 ) +return; + n = getlong(ttf); + if ( n>=MAX_SUBTABLE_TYPES+30 ) + n = MAX_SUBTABLE_TYPES+30; + for ( i=0; ipfed_start+tagoff[i].offset, tagoff[i].tag); + break; + case cvtc_TAG: + pfed_readcvtcomments(ttf,info,info->pfed_start+tagoff[i].offset); + break; + case cmnt_TAG: + pfed_readglyphcomments(ttf,info,info->pfed_start+tagoff[i].offset); + break; + case colr_TAG: + pfed_readcolours(ttf,info,info->pfed_start+tagoff[i].offset); + break; + case GPOS_TAG: + pfed_readlookupnames(ttf,info,info->pfed_start+tagoff[i].offset,info->gpos_lookups); + break; + case GSUB_TAG: + pfed_readlookupnames(ttf,info,info->pfed_start+tagoff[i].offset,info->gsub_lookups); + break; + case layr_TAG: + pfed_readotherlayers(ttf,info,info->pfed_start+tagoff[i].offset); + break; + case guid_TAG: + pfed_readguidelines(ttf,info,info->pfed_start+tagoff[i].offset); + break; + default: + LogError( _("Unknown subtable '%c%c%c%c' in 'PfEd' table, ignored\n"), + tagoff[i].tag>>24, (tagoff[i].tag>>16)&0xff, (tagoff[i].tag>>8)&0xff, tagoff[i].tag&0xff ); + break; + } +} + +/* 'TeX ' table format is as follows... */ +/* uint32 version number 0x00010000 */ +/* uint32 subtable count */ +/* struct { uint32 tab, offset } tag/offset for first subtable */ +/* struct { uint32 tab, offset } tag/offset for second subtable */ +/* ... */ + +/* 'TeX ' 'ftpm' font parameter subtable format */ +/* short version number 0 */ +/* parameter count */ +/* array of { 4chr tag, value } */ + +/* 'TeX ' 'htdp' per-glyph height/depth subtable format */ +/* short version number 0 */ +/* short glyph-count */ +/* array[glyph-count] of { int16 height,depth } */ + +/* 'TeX ' 'itlc' per-glyph italic correction subtable */ +/* short version number 0 */ +/* short glyph-count */ +/* array[glyph-count] of int16 italic_correction */ + +/* !!!!!!!!!!! OBSOLETE !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! */ +/* 'TeX ' 'sbsp' per-glyph sub/super script positioning subtable */ +/* short version number 0 */ +/* short glyph-count */ +/* array[glyph-count] of { int16 sub,super } */ + +#undef MAX_SUBTABLE_TYPES +#define MAX_SUBTABLE_TYPES 4 + +struct TeX_subtabs { + int next; + struct { + FILE *data; + uint32 tag; + uint32 offset; + } subtabs[MAX_SUBTABLE_TYPES]; +}; + +static uint32 tex_text_params[] = { + TeX_Slant, + TeX_Space, + TeX_Stretch, + TeX_Shrink, + TeX_XHeight, + TeX_Quad, + TeX_ExtraSp, + 0 +}; +static uint32 tex_math_params[] = { + TeX_Slant, + TeX_Space, + TeX_Stretch, + TeX_Shrink, + TeX_XHeight, + TeX_Quad, + TeX_MathSp, + TeX_Num1, + TeX_Num2, + TeX_Num3, + TeX_Denom1, + TeX_Denom2, + TeX_Sup1, + TeX_Sup2, + TeX_Sup3, + TeX_Sub1, + TeX_Sub2, + TeX_SupDrop, + TeX_SubDrop, + TeX_Delim1, + TeX_Delim2, + TeX_AxisHeight, + 0}; +static uint32 tex_mathext_params[] = { + TeX_Slant, + TeX_Space, + TeX_Stretch, + TeX_Shrink, + TeX_XHeight, + TeX_Quad, + TeX_MathSp, + TeX_DefRuleThick, + TeX_BigOpSpace1, + TeX_BigOpSpace2, + TeX_BigOpSpace3, + TeX_BigOpSpace4, + TeX_BigOpSpace5, + 0}; + + +/* ************************* The 'TeX ' table ************************* */ +/* ************************* Input ************************* */ + +static void TeX_readFontParams(FILE *ttf,struct ttfinfo *info,uint32 base) { + int i,pcnt; + static uint32 *alltags[] = { tex_text_params, tex_math_params, tex_mathext_params }; + int j,k; + uint32 tag; + int32 val; + + fseek(ttf,base,SEEK_SET); + if ( getushort(ttf)!=0 ) /* Don't know how to read this version of the subtable */ +return; + pcnt = getushort(ttf); + if ( pcnt==22 ) info->texdata.type = tex_math; + else if ( pcnt==13 ) info->texdata.type = tex_mathext; + else if ( pcnt>=7 ) info->texdata.type = tex_text; + for ( i=0; itexdata.params[k] = val; + } +} + +static void TeX_readHeightDepth(FILE *ttf,struct ttfinfo *info,uint32 base) { + int i,gcnt; + + fseek(ttf,base,SEEK_SET); + if ( getushort(ttf)!=0 ) /* Don't know how to read this version of the subtable */ +return; + gcnt = getushort(ttf); + for ( i=0; iglyph_cnt; ++i ) { + int h, d; + h = getushort(ttf); + d = getushort(ttf); + if ( info->chars[i]!=NULL ) { + info->chars[i]->tex_height = h; + info->chars[i]->tex_depth = d; + } + } +} + +static void TeX_readItalicCorr(FILE *ttf,struct ttfinfo *info,uint32 base) { + int i,gcnt; + + fseek(ttf,base,SEEK_SET); + if ( getushort(ttf)!=0 ) /* Don't know how to read this version of the subtable */ +return; + gcnt = getushort(ttf); + for ( i=0; iglyph_cnt; ++i ) { + int ital; + ital = getushort(ttf); + if ( info->chars[i]!=NULL ) { + info->chars[i]->italic_correction = ital; + } + } +} + +void tex_read(FILE *ttf,struct ttfinfo *info) { + int n,i; + struct tagoff { uint32 tag, offset; } tagoff[MAX_SUBTABLE_TYPES+30]; + + fseek(ttf,info->tex_start,SEEK_SET); + + if ( getlong(ttf)!=0x00010000 ) +return; + n = getlong(ttf); + if ( n>=MAX_SUBTABLE_TYPES+30 ) + n = MAX_SUBTABLE_TYPES+30; + for ( i=0; itex_start+tagoff[i].offset); + break; + case CHR('h','t','d','p'): + TeX_readHeightDepth(ttf,info,info->tex_start+tagoff[i].offset); + break; + case CHR('i','t','l','c'): + TeX_readItalicCorr(ttf,info,info->tex_start+tagoff[i].offset); + break; + default: + LogError( _("Unknown subtable '%c%c%c%c' in 'TeX ' table, ignored\n"), + tagoff[i].tag>>24, (tagoff[i].tag>>16)&0xff, (tagoff[i].tag>>8)&0xff, tagoff[i].tag&0xff ); + break; + } +} + diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/uiinterface.h b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/uiinterface.h new file mode 100644 index 00000000000..81409b72499 --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/uiinterface.h @@ -0,0 +1,511 @@ +/* Copyright (C) 2007,2008 by George Williams */ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef _UIINTERFACE_H +#define _UIINTERFACE_H +# include "basics.h" +/* This encapsulates a set of callbacks and stubs. The callbacks get activated*/ +/* when an event happens (a glyph in a font changes for example, then all */ +/* charviews looking at it must be updated), and the stubs provide some simple*/ +/* UI routines: Post an error, etc. */ + +/* ************************************************************************** */ +/* Basic, low-level UI routines for events we discover deep inside script code*/ +/* ************************************************************************** */ + +struct ui_interface { + /* The following is used to post a fontforge internal error */ + /* currently it puts up a dlg displaying the error text */ + void (*ierror)(const char *fmt,...); + + /* The following is a simple dialog to alert the user that s/he has */ + /* made an error. Currently it posts a modal dlg and waits for the */ + /* user to dismiss it */ + /* The title argument is the window's title. The error argument is the */ + /* text of the message. It may contain printf formatting. It may contain */ + /* newlines to force line breaks -- even if it doesn't contain new lines */ + /* the routine will wrap the text if a line is too long */ + void (*post_error)(const char *title,const char *error,...); + + /* The following is used to post a warning message in such a way that it */ + /* will not impede the user. Currently it creates a little window at the */ + /* bottom right of the screen and writes successive messages there */ + void (*logwarning)(const char *fmt,...); + + /* The following is another way to post a warning message in such a way */ + /* that it will not impede the user. Currently it pops up a little */ + /* non-modal dlg which vanishes after a minute or two (or if the user */ + /* dismisses it, of course */ + void (*post_warning)(const char *title,const char *statement,...); + + /* Occasionally we we be deep in a non-ui routine and we find we must ask */ + /* the user a question. In this routine the choices are displayed as */ + /* buttons, one button is the default, another is a cancel choice */ + int (*ask)(const char *title, const char **answers, + int def, int cancel,const char *question,...); + + /* Similar to the above, except here the choices are presented as a */ + /* scrolled list. Return -1 if the user cancels */ + int (*choose)(const char *title, const char **answers, + int def, int cancel,const char *question,...); + + /* Multiple things can be selected, sel is an in/out parameter, one byte */ + /* per entry in the choice array. 0=> not selected, 1=>selected */ + int (*choose_multiple)(char *title, const char **choices,char *sel, + int cnt, char *buts[2], const char *question,...); + + /* Here we want a string. We are passed a default answer (or NULL) */ + /* The return is NULL on cancel, otherwise a string which must be freed */ + char *(*ask_string)(const char *title, + const char *def,const char *question,...); + /* Same as above, except for entering a password */ + char *(*ask_password)(const char *title, + const char *def,const char *question,...); + + /* The next two routines are only used in the python interface to provide */ + /* a python script running in ff a way to open a file */ + /* Arguments are a window title for the dlg, a default file (or NULL), and */ + /* an initial filter (unix wildcards) or NULL */ + char *(*open_file)(const char *title, const char *defaultfile, + const char *initial_filter); + char *(*saveas_file)(const char *title, const char *defaultfile, + const char *initial_filter); + + /* These routines are for a progress indicator */ + void (*progress_start)(int delay, const char *title, const char *line1, + const char *line2, int tot, int stages); + void (*progress_end)(void); + void (*progress_show)(void); + void (*progress_enable_stop)(int); + int (*progress_next)(void); + int (*progress_next_stage)(void); + int (*progress_increment)(int); + void (*progress_change_line1)(const char *); + void (*progress_change_line2)(const char *); + void (*progress_pause)(void); + void (*progress_resume)(void); + void (*progress_change_stages)(int); + void (*progress_change_total)(int); + int (*progress_reset)(void); + + void (*allow_events)(void); + + /* These next few provide friendly names of various opentype tags */ + /* The ui version will probably be translated, while the non-ui list */ + /* will probably not. The distinction isn't necessary, but is present in ff*/ + const char *(*strid)(int); + const char *(*mslang)(int); + + /* pops up a dlg asking user whether to do remove overlap (and other stuff)*/ + /* when loading an eps file with strokes, etc. */ + int (*stroke_flags)(void); +}; +extern struct ui_interface *ui_interface; + +#define IError (ui_interface->ierror) +#define LogError (ui_interface->logwarning) +#define ff_post_notice (ui_interface->post_warning) +#define ff_post_error (ui_interface->post_error) +#define ff_ask (ui_interface->ask) +#define ff_choose (ui_interface->choose) +#define ff_choose_multiple (ui_interface->choose_multiple) +#define ff_ask_string (ui_interface->ask_string) +#define ff_ask_password (ui_interface->ask_password) + +#define ff_open_filename (ui_interface->open_file) +#define ff_save_filename (ui_interface->saveas_file) + +#define ff_progress_start_indicator (ui_interface->progress_start) +#define ff_progress_end_indicator (ui_interface->progress_end) +#define ff_progress_show (ui_interface->progress_show) +#define ff_progress_enable_stop (ui_interface->progress_enable_stop) +#define ff_progress_next (ui_interface->progress_next) +#define ff_progress_next_stage (ui_interface->progress_next_stage) +#define ff_progress_increment (ui_interface->progress_increment) +#define ff_progress_change_line1 (ui_interface->progress_change_line1) +#define ff_progress_change_line2 (ui_interface->progress_change_line2) +#define ff_progress_pause_timer (ui_interface->progress_pause) +#define ff_progress_resume_timer (ui_interface->progress_resume) +#define ff_progress_change_stages (ui_interface->progress_change_stages) +#define ff_progress_change_total (ui_interface->progress_change_total) +#define ff_progress_reset (ui_interface->progress_reset) + +#define ff_progress_allow_events (ui_interface->allow_events) + +#define TTFNameIds (ui_interface->strid) +#define MSLangString (ui_interface->mslang) + +#define PsStrokeFlagsDlg (ui_interface->stroke_flags) + +void FF_SetUiInterface(struct ui_interface *uii); + +/* ************************************************************************** */ +/* Preferences */ +/* ************************************************************************** */ +struct val; + +struct prefs_interface { + void (*save_prefs)(int not_if_running_script); + void (*load_prefs)(void); + int (*get_prefs)(char *name,struct val *value); + int (*set_prefs)(char *name,struct val *val1, struct val *val2); + char *(*get_exe_share_dir)(void); + void (*init_prefs)(void); +}; +extern struct prefs_interface *prefs_interface; + +#define SavePrefs (prefs_interface->save_prefs) +#define LoadPrefs (prefs_interface->load_prefs) +#define GetPrefs (prefs_interface->get_prefs) +#define SetPrefs (prefs_interface->set_prefs) +#define getFontForgeShareDir (prefs_interface->get_exe_share_dir) +#define SetDefaults (prefs_interface->init_prefs) + +void FF_SetPrefsInterface(struct prefs_interface *prefsi); + +/* ************************************************************************** */ +/* Updating glyph windows */ +/* ************************************************************************** */ + +struct splinechar; +struct layer; + +struct sc_interface { + /* Update all windows looking at this glyph */ + void (*update_all)(struct splinechar *); + + /* Background images or kerning info have changed for this glyph and */ + /* all windows displaying them need to be refreshed */ + void (*out_of_date_background)(struct splinechar *); + + /* The name or code point or encoding of this glyph has changed */ + /* update all window titles of any windows looking at us */ + void (*refresh_titles)(struct splinechar *); + + /* The hints of the glyph have changed */ + void (*hints_changed)(struct splinechar *); + + /* Mark the glyph as changed, and force an update */ + void (*glyph_changed_update)(struct splinechar *,int layer); + + /* As above, except this time the change might take the glyph back to */ + /* an "unchanged" state (ie. an Undo) */ + void (*glyph__changed_update)(struct splinechar *,int layer,int); + + /* The glyph's instructions have changed, so any dlgs looking at */ + /* our instructions need to be updated */ + void (*instructions_changed)(struct splinechar *sc); + + /* We are removing this glyph (or something like it), get rid of any */ + /* glyph outline windows which display it */ + void (*close_all_windows)(struct splinechar *); + + /* Called when a multilayered glyph increases its layer count */ + /* the charview needs to add more layers to its layer window, etc. */ + void (*more_layers)(struct splinechar *, struct layer *); +}; +extern struct sc_interface *sc_interface; + +#define SCUpdateAll (sc_interface->update_all) +#define SCOutOfDateBackground (sc_interface->out_of_date_background) +#define SCRefreshTitles (sc_interface->refresh_titles) +#define SCHintsChanged (sc_interface->hints_changed) +#define _SCCharChangedUpdate (sc_interface->glyph__changed_update) +#define SCCharChangedUpdate (sc_interface->glyph_changed_update) +#define SCMarkInstrDlgAsChanged (sc_interface->instructions_changed) +#define SCCloseAllViews (sc_interface->close_all_windows) +#define SCMoreLayers (sc_interface->more_layers) + +void FF_SetSCInterface(struct sc_interface *sci); + +/* ************************************************************************** */ +/* Updating glyph windows 2 */ +/* ************************************************************************** */ + +struct charviewbase; +struct splinefont; + +struct cv_interface { + /* Update all windows looking at what this char window looks at */ + /* which might be a glyph, or perhaps the grid layer */ + /* And mark as changed */ + void (*glyph_changed_update)(struct charviewbase *); + void (*_glyph_changed_update)(struct charviewbase *, int); + + /* A glyph's name has changed find all charviews with tabs with that name */ + /* and update those tabs */ + void (*glyph_name_change)(struct splinefont *sf, char *oldname, char *newname); + + /* We've added a layer to a font */ + void (*layer_palette_check)(struct splinefont *sf); +}; +extern struct cv_interface *cv_interface; + +#define CVCharChangedUpdate (cv_interface->glyph_changed_update) +#define _CVCharChangedUpdate (cv_interface->_glyph_changed_update) +#define CVGlyphRenameFixup (cv_interface->glyph_name_change) +#define CVLayerPaletteCheck (cv_interface->layer_palette_check) + +void FF_SetCVInterface(struct cv_interface *cvi); + +/* ************************************************************************** */ +/* Updating bitmap windows */ +/* ************************************************************************** */ + +struct bdfchar; + +struct bc_interface { + /* Update all windows looking at this bitmap glyph */ + /* And mark as changed */ + void (*glyph_changed_update)(struct bdfchar *); + + /* Force a refresh on all open bitmap windows of this glyph */ + void (*refresh_all)(struct bdfchar *); + + /* Destroy all open bitmap windows of this glyph */ + void (*destroy_all)(struct bdfchar *); +}; +extern struct bc_interface *bc_interface; + +#define BCCharChangedUpdate (bc_interface->glyph_changed_update) +#define BCRefreshAll (bc_interface->refresh_all) +#define BCDestroyAll (bc_interface->destroy_all) + +void FF_SetBCInterface(struct bc_interface *bci); + +/* ************************************************************************** */ +/* Access to metrics views */ +/* ************************************************************************** */ + +struct metricsview; +struct splinefont; + +struct mv_interface { + /* Number of glyphs displayed in the view */ + int (*glyph_cnt)(struct metricsview *); + + /* Access to the i'th member */ + struct splinechar *(*get_glyph)(struct metricsview *,int); + + /* Kerning information for this font has changed. Remetric the metric views*/ + /* Now-a-days, call this when any kind of lookup information changes, not */ + /* just kerning */ + void (*rekern)(struct splinefont *); + + /* Close any metrics views associated with this font */ + void (*sf_close_metrics)(struct splinefont *sf); +}; +extern struct mv_interface *mv_interface; + +#define MVGlyphCount (mv_interface->glyph_cnt) +#define MVGlyphIndex (mv_interface->get_glyph) +#define MVReKernAll (mv_interface->rekern) +#define MVDestroyAll (mv_interface->sf_close_metrics) + +void FF_SetMVInterface(struct mv_interface *mvi); + +/* ************************************************************************** */ +/* Access to font info */ +/* ************************************************************************** */ +struct otlookup; + +struct fi_interface { + /* Insert a new lookup into the fontinfo lookup list */ + void (*insert_lookup)(struct splinefont *, struct otlookup *); + + /* Merge lookup in from another font */ + void (*copy_into)(struct splinefont *, struct splinefont *, + struct otlookup *, struct otlookup *, int, struct otlookup *); + + /* Removes any font info window for this font */ + void (*destroy)(struct splinefont *); +}; +extern struct fi_interface *fi_interface; + +#define FISortInsertLookup (fi_interface->insert_lookup) +#define FIOTLookupCopyInto (fi_interface->copy_into) +#define FontInfo_Destroy (fi_interface->destroy) + +void FF_SetFIInterface(struct fi_interface *fii); + +/* ************************************************************************** */ +/* Updating font windows */ +/* ************************************************************************** */ + +struct fontviewbase; +struct bdffont; + +struct fv_interface { + /* Create a new font view. Whatever that may entail */ + struct fontviewbase *(*create)(struct splinefont *,int hide); + + /* Create a new font view but without attaching it to a window */ + struct fontviewbase *(*_create)(struct splinefont *); + + /* Free a font view (we assume all windows have already been destroyed) */ + void (*close)(struct fontviewbase *); + + /* Free a font view (we assume all windows have already been destroyed) */ + void (*free)(struct fontviewbase *); + + /* Set the window title of this fontview */ + void (*set_title)(struct fontviewbase *); + + /* Set the window title of all fontviews associated with this font */ + void (*set_titles)(struct splinefont *); + + /* Refresh all displays of all fontviews associated with this font */ + void (*refresh_all)(struct splinefont *); + + /* Reformat this particular fontview (after encoding change, etc) */ + void (*reformat_one)(struct fontviewbase *); + + /* Reformat all fontviews associated with this font */ + void (*reformat_all)(struct splinefont *); + + /* The active layer has changed. Possibly because the old one was deleted */ + void (*layer_changed)(struct fontviewbase *); + + /* toggle the change indicator of this glyph in the font view */ + void (*flag_glyph_changed)(struct splinechar *); + + /* Retrieve the window's size in rows and columns */ + int (*win_info)(struct fontviewbase *, int *cols, int *rows); + + /* Is this font currently open? (It was open once, this check is to make */ + /* sure the user hasn't closed it since they copied from it -- so we can */ + /* follow references appropriately if the font we are pasting into doesn't*/ + /* have the needed glyph */ + int (*font_is_active)(struct splinefont *); + + /* Sometimes we just need a fontview, any fontview as a last resort fallback*/ + struct fontviewbase *(*first_font)(void); + + /* Append this fontview to the list of them */ + struct fontviewbase *(*append)(struct fontviewbase *); + + /* Look through all loaded fontviews and see if any contains a font */ + /* which lives in the given filename */ + struct splinefont *(*font_of_filename)(const char *); + + /* We've just added some extra encoding slots, which means we may need */ + /* to increase the number of rows in the fontview display and perhaps */ + /* adjust its scrollbar */ + void (*extra_enc_slots)(struct fontviewbase *,int new_enc_max); + + /* My fontviews contain a glyph cache (a BDFPieceMeal font) whenever */ + /* more glyphs are added to the font, more bitmap glyph slots need to */ + /* be added to the font cache */ + void (*bigger_glyph_cache)(struct fontviewbase *,int new_glyph_cnt); + + /* If we want to change the font displayed in a fontview */ + void (*change_display_bitmap)(struct fontviewbase *, struct bdffont *); + + /* We just deleted the active bitmap, so switch to a rasteriztion of the outlines */ + void (*display_filled)(struct fontviewbase *); + + /* When we revert a font we need to change the alegence of all outline */ + /* glyph windows to the new value of the font */ + void (*reattach_cvs)(struct splinefont *old, struct splinefont *new); + + /* deselect any selected glyphs */ + void (*deselect_all)(struct fontviewbase *); + + /* Scroll (or whatever) the fontview so that the desired */ + /* gid is displayed */ + void (*display_gid)(struct fontviewbase *,int gid); + + /* Scroll (or whatever) the fontview so that the desired */ + /* encoding is displayed */ + void (*display_enc)(struct fontviewbase *,int enc); + + /* Scroll (or whatever) the fontview so that the desired */ + /* glyph is displayed */ + void (*select_gid)(struct fontviewbase *,int gid); + + /* Close any open glyph instruction windows in the font */ + int (*close_all_instrs)(struct splinefont *); +}; +extern struct fv_interface *fv_interface; + +#define FontViewCreate (fv_interface->create) +#define _FontViewCreate (fv_interface->_create) +#define FontViewClose (fv_interface->close) +#define FontViewFree (fv_interface->free) +#define FVSetTitle (fv_interface->set_title) +#define FVSetTitles (fv_interface->set_titles) +#define FVRefreshAll (fv_interface->refresh_all) +#define FontViewReformatOne (fv_interface->reformat_one) +#define FontViewReformatAll (fv_interface->reformat_all) +#define FontViewLayerChanged (fv_interface->layer_changed) +#define FVToggleCharChanged (fv_interface->flag_glyph_changed) +#define FVWinInfo (fv_interface->win_info) +#define SFIsActive (fv_interface->font_is_active) +#define FontViewFirst (fv_interface->first_font) +#define FVAppend (fv_interface->append) +#define FontWithThisFilename (fv_interface->font_of_filename) +#define FVAdjustScrollBarRows (fv_interface->extra_enc_slots) +#define FVBiggerGlyphCache (fv_interface->bigger_glyph_cache) +#define FVChangeDisplayBitmap (fv_interface->change_display_bitmap) +#define FVShowFilled (fv_interface->display_filled) +#define FVReattachCVs (fv_interface->reattach_cvs) +#define FVDisplayGID (fv_interface->display_gid) +#define FVDisplayEnc (fv_interface->display_enc) +#define FVChangeGID (fv_interface->select_gid) +#define SFCloseAllInstrs (fv_interface->close_all_instrs) + +void FF_SetFVInterface(struct fv_interface *fvi); + +/* ************************************************************************** */ +/* Clibboard access (copy/paste) */ +/* ************************************************************************** */ + +struct clip_interface { + /* Announce we own the clipboard selection */ + void (*grab_clip)(void); + /* Either place data in the clipboard of a given type, or */ + /* provide a routine to call which will give data on demand */ + /* (and another routine to clean things up) */ + void (*add_data_type)(const char *type, void *data, int cnt, int size, + void *(*gendata)(void *,int32 *len), void (*freedata)(void *)); + /* Does the clipboard contain something of the given type? */ + int (*clip_has_type)(const char *mimetype); + /* Ask for the clipboard, and waits (and returns) for the response */ + void *(*request_clip)(const char *mimetype,int *len); + +}; +extern struct clip_interface *clip_interface; + +#define ClipboardGrab (clip_interface->grab_clip) +#define ClipboardAddDataType (clip_interface->add_data_type) +#define ClipboardRequest (clip_interface->request_clip) +#define ClipboardHasType (clip_interface->clip_has_type) + +void FF_SetClipInterface(struct clip_interface *clipi); + +extern const char *NOUI_TTFNameIds(int id); +extern const char *NOUI_MSLangString(int language); +#endif diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/unicoderange.h b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/unicoderange.h new file mode 100644 index 00000000000..02dca59b0cd --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/unicoderange.h @@ -0,0 +1,38 @@ +/* Copyright (C) 2006-2008 by George Williams */ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +extern struct unicoderange { + char *name; /* The range's name */ + int32 first, last, defined; + /* The first codepoint, last codepoint in the range */ + /* and a codepoint which actually has a character */ + /* associated with it */ + uint8 display; + uint8 unassigned; /* No characters in this range are assigned */ + int actual; /* Count of assigned codepoints in this range */ +} unicoderange[]; + diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/views.h b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/views.h new file mode 100644 index 00000000000..a3a02cb6314 --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/views.h @@ -0,0 +1,1087 @@ +/* Copyright (C) 2000-2008 by George Williams */ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef _VIEWS_H +#define _VIEWS_H + +#include "baseviews.h" + +#include + +struct gfi_data; +struct contextchaindlg; +struct statemachinedlg; + +extern struct cvshows { + int showfore, showback, showgrids, showhhints, showvhints, showdhints; + int showpoints, showfilled; + int showrulers; + int showrounds; /* 0=>no, 1=>auto, 2=>always */ + int showmdx, showmdy; /* minimum distances x,y */ + int showhmetrics, showvmetrics; /* show advance width, baseline, etc. */ + int markextrema; + int markpoi; /* Points of inflection */ + int showblues, showfamilyblues; + int showanchor; + int showcpinfo; + int showtabs; /* with the names of former glyphs */ + int showsidebearings; + int showrefnames; + int snapoutlines; + int showalmosthvlines; + int showalmosthvcurves; + int hvoffset; +} CVShows; + +extern struct bvshows { + int showfore, showoutline, showgrid; + int lastpixelsize; +} BVShows; + +enum debug_wins { dw_registers=0x1, dw_stack=0x2, dw_storage=0x4, dw_points=0x8, + dw_cvt=0x10, dw_raster=0x20, dw_gloss=0x40 }; + +struct instrinfo { + int isel_pos; + int16 lheight,lpos; + char *scroll, *offset; + GWindow v; + GGadget *vsb; + int16 sbw; + int16 vheight, vwidth; + int16 lstopped; + int16 as, fh; + struct instrdata *instrdata; + GFont *gfont; + unsigned int showaddr: 1; + unsigned int showhex: 1; + unsigned int mousedown: 1; + void *userdata; + void (*selection_callback)(struct instrinfo *,int ip); + int (*bpcheck)(struct instrinfo *,int ip); + int (*handle_char)(struct instrinfo *,GEvent *e); +}; + +typedef struct debugview { + struct debugger_context *dc; /* Local to freetype.c */ + GWindow dv, v; + /* Windows for twilight points, cvt, registers, stack, storage, stack gloss */ + GWindow regs, stack, storage, points, cvt, raster, gloss; /* order matters */ + GWindow points_v; + GGadget *cvtsb; + GGadget *pts_vsb; + GGadget *glosssb; + GGadget *storagesb; + GGadget *regsb; + GGadget *stacksb; + struct instrdata id; + struct instrinfo ii; + int dwidth, toph; + struct charview *cv; + double scalex, scaley; + int pts_head, cvt_offtop, gloss_offtop, storage_offtop, stack_offtop, reg_offtop; + int points_offtop; + + int codeSize; + uint8 initialbytes[4]; + struct reflist { RefChar *ref; struct reflist *parent; } *active_refs; + int last_npoints; + int layer; +} DebugView; + +enum dv_coderange { cr_none=0, cr_fpgm, cr_prep, cr_glyph }; /* cleverly chosen to match ttobjs.h */ + +typedef struct charview { + CharViewBase b; + uint32 showback[BACK_LAYER_MAX/32]; + unsigned int showfore:1; + unsigned int showgrids:1; + unsigned int showhhints:1; + unsigned int showvhints:1; + unsigned int showdhints:1; + unsigned int showpoints:1; + unsigned int showfilled:1; + unsigned int showrulers:1; + unsigned int showrounds:2; /* 0=>no, 1=>auto, 2=>always */ + unsigned int showmdx:1; + unsigned int showmdy:1; + unsigned int showhmetrics:1; + unsigned int showvmetrics:1; + unsigned int showblues:1; /* 16 */ + unsigned int showfamilyblues:1; + unsigned int showanchor:1; + unsigned int showpointnumbers:1; + unsigned int markextrema:1; + unsigned int markpoi:1; + unsigned int needsrasterize:1; /* Rasterization (of fill or fontview) needed on mouse up */ + unsigned int recentchange:1; /* a change happened in the grids or background. don't need to rasterize */ + unsigned int info_within: 1; /* cursor is within main window */ + unsigned int back_img_out_of_date: 1; /* Force redraw of back image pixmap */ + unsigned int cntrldown:1; + unsigned int joinvalid:1; + unsigned int widthsel:1; + unsigned int vwidthsel:1; + unsigned int icsel:1; + unsigned int tah_sel:1; + unsigned int inactive:1; /* When in a search view */ + unsigned int show_ft_results: 1; /* 32 */ + unsigned int coderange: 2; /* For the debugger */ + unsigned int autonomous_ruler_w: 1; + unsigned int showcpinfo: 1; + unsigned int showtabs: 1; + unsigned int showsidebearings: 1; + unsigned int showing_spiro_pt_menu: 1; + unsigned int ruler_pressed: 1; + unsigned int ruler_pressedv: 1; + unsigned int showrefnames: 1; + unsigned int snapoutlines: 1; + unsigned int showalmosthvlines: 1; + unsigned int showalmosthvcurves: 1; + int hvoffset; /* for showalmosthvlines */ + int layers_off_top; + real scale; + GWindow gw, v; + GGadget *vsb, *hsb, *mb, *tabs; + GFont *small, *normal; + GWindow icon; + GWindow ruler_w; + GFont *rfont; + GTimer *pressed; + GWindow backimgs; + GIC *gic; + GIC *gwgic; + int width, height; + int xoff, yoff; + int mbh, infoh, rulerh; + int16 sas, sfh, sdh, nas, nfh; + BasePoint info; + SplinePoint *info_sp; + Spline *info_spline; + real info_t; + GPoint e; /* mouse location */ + GPoint olde; + BasePoint last_c; + BDFChar *filled; + GImage gi; /* used for fill bitmap only */ + int enc; + EncMap *map_of_enc; /* Only use for comparison against fontview's map to see if our enc be valid */ + /* Will not be updated when fontview is reencoded */ + SplinePoint *lastselpt; + /*GWindow tools, layers;*/ + int8 b1_tool, cb1_tool, b2_tool, cb2_tool; /* Button 3 does a popup */ + int8 s1_tool, s2_tool, er_tool; /* Bindings for wacom stylus and eraser */ + int8 showing_tool, pressed_tool, pressed_display, had_control, active_tool; + SplinePointList *active_spl; + SplinePoint *active_sp; + IPoint handscroll_base; + uint16 rfh, ras; + BasePoint lastknife; + struct freehand { + struct tracedata *head, *last; /* for the freehand tool */ + SplinePointList *current_trace; + int ignore_wobble; /* Ignore wiggles smaller than this */ + int skip_cnt; + } freehand; + enum expandedge { ee_none, ee_nw, ee_up, ee_ne, ee_right, ee_se, ee_down, + ee_sw, ee_left, ee_max } expandedge; + BasePoint expandorigin; + real expandwidth, expandheight; + SplinePointList *active_shape; + SplinePoint joinpos; + SplineChar *template1, *template2; +#if HANYANG + struct jamodisplay *jamodisplay; +#endif + real oldwidth, oldvwidth; + int16 oldic, oldtah; +#if _ModKeysAutoRepeat + GTimer *autorpt; + int keysym, oldstate; + int oldkeyx, oldkeyy; + GWindow oldkeyw; +#endif + PST *lcarets; + int16 nearcaret; + /* freetype results display */ + int16 ft_dpi, ft_ppemy, ft_ppemx, ft_depth; + real ft_pointsizey, ft_pointsizex; + struct freetype_raster *raster, *oldraster; + DebugView *dv; + uint32 mmvisible; + char *former_names[FORMER_MAX]; + int former_cnt; + AnchorPoint *apmine, *apmatch; + SplineChar *apsc; + int guide_pos; +} CharView; + +typedef struct bitmapview { + BDFChar *bc; + BDFFont *bdf; + struct fontview *fv; + EncMap *map_of_enc; + int enc; + GWindow gw, v; + GGadget *vsb, *hsb, *mb; + GGadget *recalc; + GFont *small; + int xoff, yoff; + int width, height; + int infoh, mbh; + int scale; + real scscale; + struct bitmapview *next; + unsigned int showfore:1; + unsigned int showoutline:1; + unsigned int showgrid:1; + unsigned int cntrldown:1; + unsigned int recentchange:1; + unsigned int clearing:1; + unsigned int shades_hidden:1; + unsigned int shades_down:1; + /*GWindow tools, layers;*/ + int8 b1_tool, cb1_tool, b2_tool, cb2_tool; /* Button 3 does a popup */ + int8 s1_tool, s2_tool, er_tool; /* Bindings for wacom stylus and eraser */ + int8 showing_tool, pressed_tool, pressed_display, had_control, active_tool; + int pressed_x, pressed_y; + int info_x, info_y; + int event_x, event_y; + int16 sas, sfh; +#if _ModKeysAutoRepeat + GTimer *autorpt; + int keysym, oldstate; +#endif + int color; /* for greyscale fonts (between 0,255) */ + int color_under_cursor; +} BitmapView; + +struct aplist { AnchorPoint *ap; int connected_to, selected; struct aplist *next; }; + +enum mv_grids { mv_hidegrid, mv_showgrid, mv_partialgrid, mv_hidemovinggrid }; +enum mv_type { mv_kernonly, mv_widthonly, mv_kernwidth }; +typedef struct metricsview { + struct fontview *fv; + SplineFont *sf; + int pixelsize; + BDFFont *bdf; /* We can also see metric info on a bitmap font */ + BDFFont *show; /* Or the rasterized version of the outline font */ + GWindow gw, v; + GFont *font; + GGadget *hsb, *vsb, *mb, *text, *script, *features, *subtable_list; + GGadget *namelab, *widthlab, *lbearinglab, *rbearinglab, *kernlab; + int16 xstart; + int16 width, height, dwidth; + int16 vwidth, vheight; + int16 mbh,sbh; + int16 topend; /* y value of the end of the region containing the text field */ + int16 displayend; /* y value of the end of the region showing filled characters */ + int16 fh, as; + int16 cmax, clen; + SplineChar **chars; /* Character input stream */ + struct opentype_str *glyphs;/* after going through the various gsub/gpos transformations */ + struct metricchar { /* One for each glyph above */ + int16 dx, dwidth; /* position and width of the displayed char */ + int16 dy, dheight; /* displayed info for vertical metrics */ + int xoff, yoff; + int16 mx, mwidth; /* position and width of the text underneath */ + int16 kernafter; + unsigned int selected: 1; + GGadget *width, *lbearing, *rbearing, *kern, *name; + } *perchar; + SplineChar **sstr; /* Character input stream */ + int16 mwidth, mbase; + int16 glyphcnt, max; + int16 pressed_x, pressed_y; + int16 activeoff; + int xoff, coff, yoff; + struct metricsview *next; + unsigned int right_to_left: 1; + unsigned int pressed: 1; + unsigned int pressedwidth: 1; + unsigned int pressedkern: 1; + unsigned int showgrid: 2; + unsigned int antialias: 1; + unsigned int vertical: 1; + unsigned int type: 2; /* enum mv_type */ + int xp, yp, ap_owner; + BasePoint ap_start; + int cursor; + int scale_index; + struct lookup_subtable *cur_subtable; + GTextInfo *scriptlangs; + int word_index; + int layer; + int fake_unicode_base; + GIC *gwgic; +} MetricsView; + +enum fv_metrics { fvm_baseline=1, fvm_origin=2, fvm_advanceat=4, fvm_advanceto=8 }; +typedef struct fontview { + FontViewBase b; + BDFFont *show, *filled; + GWindow gw, v; + GFont **fontset; + GGadget *vsb, *mb; + GTimer *pressed; + GTimer *resize; + GEvent resize_event; + GIC *gic; + GIC *gwgic; + int width, height; /* of v */ + int16 infoh,mbh; + int16 lab_height, lab_as; + int16 colcnt, rowcnt; /* of display window */ + int32 rowoff, rowltot; /* Can be really big in full unicode */ + int16 cbw,cbh; /* width/height of a character box */ + int pressed_pos, end_pos; + unsigned int antialias:1; + unsigned int bbsized:1; /* displayed bitmap should be scaled by bounding box rather than emsize */ + unsigned int wasonlybitmaps:1; + /*unsigned int refstate: 3;*/ /* 0x1 => paste orig of all non exist refs, 0x2=>don't, 0x3 => don't warn about non-exist refs with no source font */ + unsigned int touched: 1; + unsigned int showhmetrics: 4; + unsigned int showvmetrics: 4; + unsigned int drag_and_drop: 1; + unsigned int has_dd_no_cursor: 1; + unsigned int any_dd_events_sent: 1; + unsigned int resize_expected: 1; + /* Some window managers do not honour my resize requests (if window is*/ + /* maximized for example), but we depend on the resize request to */ + /* fix up the window. We do get a configure notify, but the window */ + /* stays the same size, so kludge things */ + unsigned int glyphlabel: 2; + int16 magnify; + int16 user_requested_magnify; + struct searchview *sv; + SplineChar *sc_near_top; + int sel_index; + struct lookup_subtable *cur_subtable; +} FontView; + +typedef struct findsel { + GEvent *e; + real fudge; /* One pixel fudge factor */ + real xl,xh, yl, yh; /* One pixel fudge factor */ + real c_xl,c_xh, c_yl, c_yh; /* fudge rectangle for control points, larger than above if alt is depressed */ + unsigned int select_controls: 1; /* notice control points */ + unsigned int seek_controls: 1; /* notice control points before base points */ + unsigned int all_controls: 1; /* notice control points even if the base points aren't selected (in truetype point numbering mode where all cps are visible) */ + real scale; +} FindSel; + +typedef struct searchview { + struct cvcontainer base; + FontView dummy_fv; + SplineFont dummy_sf; + LayerInfo layerinfo[2]; + SplineChar *chars[2]; + EncMap dummy_map; + int32 map[2], backmap[2]; + uint8 sel[2]; + CharView cv_srch, cv_rpl; + CharView *lastcv; +/* ****** */ + GWindow gw; + GGadget *mb; + GFont *plain, *bold; + int mbh; + int fh, as; + int rpl_x, cv_y; + int cv_width, cv_height; + short button_height, button_width; +/* ****** */ + SearchData sd; + unsigned int showsfindnext: 1; + unsigned int findenabled: 1; + unsigned int rplallenabled: 1; + unsigned int rplenabled: 1; + unsigned int isvisible: 1; +} SearchView; + +typedef struct mathkernview { + struct cvcontainer base; + FontView dummy_fv; + SplineFont dummy_sf; + LayerInfo layerinfo[2]; + SplineChar sc_topright, sc_topleft, sc_bottomright, sc_bottomleft; + SplineChar *chars[4]; + EncMap dummy_map; + int32 map[4], backmap[4]; + uint8 sel[4]; + CharView cv_topright, cv_topleft, cv_bottomright, cv_bottomleft; + CharView *lastcv; +/* ****** */ + GWindow gw; + GWindow cvparent_w; + GGadget *mb; + GFont *plain, *bold; + int mbh; + int fh, as; + int mid_space, cv_y; + int cv_width, cv_height; + short button_height, button_width; +/* ****** */ + SplineChar *cursc; + int def_layer; + struct mathkern *orig_mathkern; + uint8 saved_mathkern; /* Can't just check if orig is non-NULL, because NULL is a perfectly valid initial state */ + uint8 last_aspect; + uint8 done; +} MathKernDlg; + +# ifdef FONTFORGE_CONFIG_TILEPATH + +typedef struct tilepathdlg { + struct cvcontainer base; + FontView dummy_fv; + SplineFont dummy_sf; + LayerInfo layerinfo[2]; + SplineChar sc_first, sc_medial, sc_final, sc_isolated; + SplineChar *chars[4]; + EncMap dummy_map; + int32 map[4], backmap[4]; + uint8 sel[4]; + CharView cv_first, cv_medial, cv_final, cv_isolated; + CharView *lastcv; +/* ****** */ + GWindow gw; + GGadget *mb; + GFont *plain, *bold; + int mbh; + int fh, as; + int mid_space, cv_y; + int cv_width, cv_height; +/* ****** */ + struct tiledata *td; + SplineFont *base_sf; + uint8 done, oked; +} TilePathDlg; +extern void TPDChar(TilePathDlg *tpd, GEvent *event); +extern void TPDCharViewInits(TilePathDlg *tpd, int cid); +extern void PTDChar(TilePathDlg *tpd, GEvent *event); +extern void PTDCharViewInits(TilePathDlg *tpd, int cid); +#endif /* Tile Path */ + +# ifdef FONTFORGE_CONFIG_TYPE3 + +typedef struct gradientdlg { + struct cvcontainer base; + FontView dummy_fv; + SplineFont dummy_sf; + LayerInfo layerinfo[2]; + SplineChar sc_grad; + SplineChar *chars[1]; + EncMap dummy_map; + int32 map[1], backmap[1]; + uint8 sel[1]; + CharView cv_grad; +/* ****** */ + GWindow gw; + GGadget *mb; + GFont *plain, *bold; + int mbh; + int fh, as; + int mid_space, cv_y; + int cv_width, cv_height; +/* ****** */ + uint8 done, oked; + struct gradient *active; +} GradientDlg; +extern void GDDChar(GradientDlg *tpd, GEvent *event); +extern void GDDCharViewInits(GradientDlg *gdd,int cid); +#endif /* Tile Path */ + +struct lkdata { + int cnt, max; + int off_top, off_left; + struct lkinfo { + OTLookup *lookup; + unsigned int open: 1; + unsigned int deleted: 1; + unsigned int new: 1; + unsigned int selected: 1; + unsigned int moved: 1; + int16 subtable_cnt, subtable_max; + struct lksubinfo { + struct lookup_subtable *subtable; + unsigned int deleted: 1; + unsigned int new: 1; + unsigned int selected: 1; + unsigned int moved: 1; + } *subtables; + } *all; +}; + +struct gfi_data { /* FontInfo */ + SplineFont *sf; + int def_layer; + GWindow gw; + int tn_active; + int private_aspect, ttfv_aspect, tn_aspect, tx_aspect, unicode_aspect; + int old_sel, old_aspect, old_lang, old_strid; + int ttf_set, names_set, tex_set; + struct psdict *private; + int langlocalecode; /* MS code for the current locale */ + unsigned int family_untitled: 1; + unsigned int human_untitled: 1; + unsigned int done: 1; + unsigned int mpdone: 1; + unsigned int lk_drag_and_drop: 1; + unsigned int lk_dropablecursor: 1; + struct anchor_shows { CharView *cv; SplineChar *sc; int restart; } anchor_shows[2]; + struct texdata texdata; + struct contextchaindlg *ccd; + struct statemachinedlg *smd; +/* For GDEF Mark Attachment Class -- used in lookup flags */ +/* As usual, class 0 is unused */ + int mark_class_cnt; + char **mark_classes; /* glyph name list */ + char **mark_class_names; /* used within ff */ + struct markclassdlg *mcd; + GFont *font; + int as, fh; + struct lkdata tables[2]; + int lkwidth, lkheight; + int first_sel_lookup, first_sel_subtable; +}; + + +extern void FVMarkHintsOutOfDate(SplineChar *sc); +extern void FVRefreshChar(FontView *fv,int gid); +extern int _FVMenuSave(FontView *fv); +extern int _FVMenuSaveAs(FontView *fv); +extern int _FVMenuGenerate(FontView *fv,int family); +extern void _FVCloseWindows(FontView *fv); +extern char *GetPostscriptFontName(char *defdir,int mult); +extern void MergeKernInfo(SplineFont *sf,EncMap *map); +#ifdef FONTFORGE_CONFIG_WRITE_PFM +extern int WritePfmFile(char *filename,SplineFont *sf, int type0, EncMap *map); +#endif +extern int SFGenerateFont(SplineFont *sf,int layer, int family,EncMap *map); + +extern void NonLinearDlg(FontView *fv,struct charview *cv); +extern void FVChangeChar(FontView *fv,int encoding); +extern void FVMergeFonts(FontView *fv); +extern void FVInterpolateFonts(FontView *fv); + +extern void FVDeselectAll(FontView *fv); + +extern void FVAutoKern(FontView *fv); +extern void FVAutoWidth(FontView *fv); + +extern void SC_MarkInstrDlgAsChanged(SplineChar *sc); + +extern void PythonUI_Init(void); + +extern void SCStroke(SplineChar *sc); + +extern void PfaEditSetFallback(void); +extern void RecentFilesRemember(char *filename); + + +struct debugger_context; +extern void DebuggerTerminate(struct debugger_context *dc); +extern void DebuggerReset(struct debugger_context *dc,real pointsizey, real pointsizex,int dpi,int dbg_fpgm, int is_bitmap); +extern struct debugger_context *DebuggerCreate(SplineChar *sc,int layer,real pointsizey,real pointsizex,int dpi,int dbg_fpgm, int is_bitmap); +enum debug_gotype { dgt_continue, dgt_step, dgt_next, dgt_stepout }; +extern void DebuggerGo(struct debugger_context *dc,enum debug_gotype,DebugView *dv); +extern struct TT_ExecContextRec_ *DebuggerGetEContext(struct debugger_context *dc); +extern void DebuggerToggleBp(struct debugger_context *dc,int range,int ip); +extern int DebuggerBpCheck(struct debugger_context *dc,int range,int ip); +extern void DebuggerSetWatches(struct debugger_context *dc,int n, uint8 *w); +extern uint8 *DebuggerGetWatches(struct debugger_context *dc, int *n); +extern void DebuggerSetWatchStores(struct debugger_context *dc,int n, uint8 *w); +extern uint8 *DebuggerGetWatchStores(struct debugger_context *dc, int *n); +extern int DebuggerIsStorageSet(struct debugger_context *dc, int index); +extern void DebuggerSetWatchCvts(struct debugger_context *dc,int n, uint8 *w); +extern uint8 *DebuggerGetWatchCvts(struct debugger_context *dc, int *n); +extern int DebuggingFpgm(struct debugger_context *dc); + +extern void PrintWindowClose(void); +extern void InsertTextDlg(CharView *cv); + +extern char *Kern2Text(SplineChar *other,KernPair *kp,int isv); +extern char *PST2Text(PST *pst,SplineFont *sf); + + + +void EmboldenDlg(FontView *fv, CharView *cv); +void CondenseExtendDlg(FontView *fv, CharView *cv); +void AddSmallCapsDlg(FontView *fv); +void AddSubSupDlg(FontView *fv); +void ObliqueDlg(FontView *fv, CharView *cv); +void GlyphChangeDlg(FontView *fv, CharView *cv, enum glyphchange_type gc); +void ItalicDlg(FontView *fv, CharView *cv); +void ChangeXHeightDlg(FontView *fv,CharView *cv); + +extern int FVParseSelectByPST(FontView *fv,struct lookup_subtable *sub, + int search_type); +extern void DropChars2Text(GWindow gw, GGadget *glyphs,GEvent *event); + + +extern void FVReplaceOutlineWithReference( FontView *fv, double fudge ); +extern void SVDestroy(struct searchview *sv); + + + +extern int SLICount(SplineFont *sf); +extern unichar_t *ClassName(const char *name,uint32 feature_tag, + uint16 flags, int script_lang_index, int merge_with, int act_type, + int macfeature,SplineFont *sf); +extern unichar_t *DecomposeClassName(const unichar_t *clsnm, unichar_t **name, + uint32 *feature_tag, int *macfeature, + uint16 *flags, uint16 *script_lang_index,int *merge_with,int *act_type, + SplineFont *sf); +extern PST *AddSubs(PST *last,uint32 tag,char *name,uint16 flags, + uint16 sli,SplineChar *sc); + + +extern void FVScrollToChar(FontView *fv,int i); +extern void FVRegenChar(FontView *fv,SplineChar *sc); +extern FontView *FontNew(void); +extern void _MenuWarnings(GWindow gw,struct gmenuitem *mi,GEvent *e); +extern void MenuPrefs(GWindow base,struct gmenuitem *mi,GEvent *e); +extern void MenuSaveAll(GWindow base,struct gmenuitem *mi,GEvent *e); +extern void MenuExit(GWindow base,struct gmenuitem *mi,GEvent *e); +extern void MenuOpen(GWindow base,struct gmenuitem *mi,GEvent *e); +extern void MenuHelp(GWindow base,struct gmenuitem *mi,GEvent *e); +extern void MenuIndex(GWindow base,struct gmenuitem *mi,GEvent *e); +extern void MenuAbout(GWindow base,struct gmenuitem *mi,GEvent *e); +extern void MenuLicense(GWindow base,struct gmenuitem *mi,GEvent *e); +extern void MenuNew(GWindow gw,struct gmenuitem *mi,GEvent *e); +extern void WindowMenuBuild(GWindow base,struct gmenuitem *mi,GEvent *); +extern void MenuRecentBuild(GWindow base,struct gmenuitem *mi,GEvent *); +extern void MenuScriptsBuild(GWindow base,struct gmenuitem *mi,GEvent *); +extern void mb2DoGetText(GMenuItem2 *mb); +extern void mbDoGetText(GMenuItem *mb); +extern void OFLibBrowse(void); +extern int RecentFilesAny(void); +extern void _aplistbuild(struct gmenuitem *mi,SplineFont *sf, + void (*func)(GWindow,struct gmenuitem *,GEvent *)); +extern int32 *ParseBitmapSizes(GGadget *g,char *msg,int *err); +extern GTextInfo *AddMacFeatures(GTextInfo *opentype,enum possub_type type,SplineFont *sf); +extern unichar_t *AskNameTag(char *title,unichar_t *def,uint32 def_tag,uint16 flags, + int script_lang_index, enum possub_type type, SplineFont *sf, SplineChar *default_script, + int merge_with,int act_type); +extern unichar_t *ShowScripts(unichar_t *usedef); +extern GTextInfo *SFLangList(SplineFont *sf,int addfinal,SplineChar *default_script); +extern GTextInfo **SFLangArray(SplineFont *sf,int addfinal); +extern int ScriptLangList(SplineFont *sf,GGadget *list,int sli); +extern void GListDelSelected(GGadget *list); +extern void GListMoveSelected(GGadget *list,int offset); +extern GTextInfo *GListChangeLine(GGadget *list,int pos, const unichar_t *line); +extern GTextInfo *GListAppendLine(GGadget *list,const unichar_t *line,int select); +extern GTextInfo *GListChangeLine8(GGadget *list,int pos, const char *line); +extern GTextInfo *GListAppendLine8(GGadget *list,const char *line,int select); +extern void CharInfoInit(void); +extern void SCLigCaretCheck(SplineChar *sc,int clean); +extern char *DevTab_Dlg(GGadget *g, int r, int c); +extern int DeviceTableOK(char *dvstr, int *_low, int *_high); +extern void VRDevTabParse(struct vr *vr,struct matrix_data *md); +#ifdef FONTFORGE_CONFIG_DEVICETABLES +extern DeviceTable *DeviceTableParse(DeviceTable *dv,char *dvstr); +extern void DevTabToString(char **str,DeviceTable *adjust); +extern void ValDevTabToStrings(struct matrix_data *mds,int first_offset,ValDevTab *adjust); +#endif +extern void KpMDParse(SplineFont *sf,SplineChar *sc,struct lookup_subtable *sub, + struct matrix_data *possub,int rows,int cols,int i); +extern void GFI_LookupEnableButtons(struct gfi_data *gfi, int isgpos); +extern void GFI_LookupScrollbars(struct gfi_data *gfi, int isgpos, int refresh); +extern void FontInfo(SplineFont *sf,int layer,int aspect,int sync); +extern void FontInfoDestroy(SplineFont *sf); +extern void FontMenuFontInfo(void *fv); +extern void GFI_CCDEnd(struct gfi_data *d); +extern struct enc *MakeEncoding(SplineFont *sf, EncMap *map); +extern void LoadEncodingFile(void); +extern void RemoveEncoding(void); +extern void SFPrivateInfo(SplineFont *sf); +extern void FVDelay(FontView *fv,void (*func)(FontView *)); +extern void GFI_FinishContextNew(struct gfi_data *d,FPST *fpst, int success); +extern void SCPreparePopup(GWindow gw,SplineChar *sc, struct remap *remap, int enc, int actualuni); +extern void CVDrawSplineSet(CharView *cv, GWindow pixmap, SplinePointList *set, + Color fg, int dopoints, DRect *clip ); +extern GWindow CVMakeTools(CharView *cv); +extern GWindow CVMakeLayers(CharView *cv); +extern GWindow BVMakeTools(BitmapView *bv); +extern GWindow BVMakeLayers(BitmapView *bv); +extern void CVSetLayer(CharView *cv,int layer); +extern int CVPaletteMnemonicCheck(GEvent *event); +extern int TrueCharState(GEvent *event); +extern void CVToolsPopup(CharView *cv, GEvent *event); +extern void BVToolsPopup(BitmapView *bv, GEvent *event); +extern real CVRoundRectRadius(void); +extern int CVRectElipseCenter(void); +extern void CVRectEllipsePosDlg(CharView *cv); +extern real CVStarRatio(void); +extern int CVPolyStarPoints(void); +extern StrokeInfo *CVFreeHandInfo(void); +extern void BVToolsSetCursor(BitmapView *bv, int state,char *device); +extern void CVToolsSetCursor(CharView *cv, int state,char *device); +extern int CVPaletteIsVisible(CharView *cv,int which); +extern void CVPaletteSetVisible(CharView *cv,int which,int visible); +extern void CVPalettesRaise(CharView *cv); +extern void CVLayersSet(CharView *cv); +extern void _CVPaletteActivate(CharView *cv,int force); +extern void CVPaletteActivate(CharView *cv); +extern void CV_LayerPaletteCheck(SplineFont *sf); +extern void CVPalettesHideIfMine(CharView *cv); +extern int BVPaletteIsVisible(BitmapView *bv,int which); +extern void BVPaletteSetVisible(BitmapView *bv,int which,int visible); +extern void BVPaletteActivate(BitmapView *bv); +extern void BVPalettesHideIfMine(BitmapView *bv); +extern void BVPaletteColorChange(BitmapView *bv); +extern void BVPaletteColorUnderChange(BitmapView *bv,int color); +extern void BVPaletteChangedChar(BitmapView *bv); +extern void CVPaletteDeactivate(void); +extern void PalettesChangeDocking(void); +extern int CVPalettesWidth(void); +extern int BVPalettesWidth(void); + +extern void CVDoTransform(CharView *cv, enum cvtools cvt ); +extern void CVTransFunc(CharView *cv,real transform[6],enum fvtrans_flags); +extern void TransformDlgCreate(void *data,void (*transfunc)(void *,real *,int,BVTFunc *,enum fvtrans_flags), + int (*getorigin)(void *,BasePoint *,int), int enableback, + enum cvtools cvt); +extern void BitmapDlg(FontView *fv,SplineChar *sc, int isavail); +extern int SimplifyDlg(SplineFont *sf,struct simplifyinfo *smpl); +extern void CVReviewHints(CharView *cv); +extern void CVCreateHint(CharView *cv,int ishstem,int preserveundoes); +extern void SCRemoveSelectedMinimumDistances(SplineChar *sc,int inx); +extern int CVExport(CharView *cv); +extern int BVExport(BitmapView *bv); + +extern void DrawAnchorPoint(GWindow pixmap,int x, int y,int selected); +extern void DefaultY(GRect *pos); +extern void CVDrawRubberRect(GWindow pixmap, CharView *cv); +extern void CVInfoDraw(CharView *cv, GWindow pixmap ); +extern void CVChar(CharView *cv, GEvent *event ); +extern void PI_ShowHints(SplineChar *sc, GGadget *list, int set); +extern GTextInfo *SCHintList(SplineChar *sc,HintMask *); +extern void CVResize(CharView *cv ); +extern CharView *CharViewCreate(SplineChar *sc,FontView *fv,int enc); +extern void CharViewFree(CharView *cv); +extern int CVValid(SplineFont *sf, SplineChar *sc, CharView *cv); +extern void CVSetCharChanged(CharView *cv,int changed); +extern int CVAnySel(CharView *cv, int *anyp, int *anyr, int *anyi, int *anya); +extern int CVAnySelPoints(CharView *cv); +extern void CVSelectPointAt(CharView *cv); +extern int CVClearSel(CharView *cv); +extern int CVSetSel(CharView *cv,int mask); +extern void CVInvertSel(CharView *cv); +extern int CVAllSelected(CharView *cv); +extern SplinePointList *CVAnySelPointList(CharView *cv); +extern int CVOneContourSel(CharView *cv, SplinePointList **_spl, + RefChar **ref, ImageList **img); +extern void CVImport(CharView *cv); +extern void BVImport(BitmapView *bv); +extern void FVImport(FontView *bv); +extern void CVFindCenter(CharView *cv, BasePoint *bp, int nosel); +extern void CVStroke(CharView *cv); +extern void FVStroke(FontView *fv); +extern void FreeHandStrokeDlg(StrokeInfo *si); +extern void OutlineDlg(FontView *fv, CharView *cv,MetricsView *mv,int isinline); +extern void ShadowDlg(FontView *fv, CharView *cv,MetricsView *mv,int wireframe); +extern void CVTile(CharView *cv); +extern void FVTile(FontView *fv); +extern void CVPatternTile(CharView *cv); +extern void FVPatternTile(FontView *fv); +extern void SCCharInfo(SplineChar *sc,int deflayer,EncMap *map,int enc); +extern void CharInfoDestroy(struct charinfo *ci); +extern SplineChar *SuffixCheck(SplineChar *sc,char *suffix); +extern void SCSubtableDefaultSubsCheck(SplineChar *sc, struct lookup_subtable *sub, struct matrix_data *possub, int col_cnt, int r); +extern GImage *PST_GetImage(GGadget *pstk,SplineFont *sf,int def_layer, + struct lookup_subtable *sub,int popup_r, SplineChar *sc ); +extern GImage *NameList_GetImage(SplineFont *sf,SplineChar *sc,int def_layer, + char *namelist, int isliga ); +extern GImage *GV_GetConstructedImage(SplineChar *sc,int def_layer, struct glyphvariants *gv, + int is_horiz); +extern GImage *SC_GetLinedImage(SplineChar *sc, int def_layer, int pos, int is_italic_cor); +extern struct glyphvariants *GV_ParseConstruction(struct glyphvariants *gv, + struct matrix_data *stuff, int rows, int cols); +extern void GV_ToMD(GGadget *g, struct glyphvariants *gv); +extern void CVGetInfo(CharView *cv); +extern void CVPGetInfo(CharView *cv); +extern int SCUsedBySubs(SplineChar *sc); +extern void SCSubBy(SplineChar *sc); +extern void SCRefBy(SplineChar *sc); +extern void ApGetInfo(CharView *cv, AnchorPoint *ap); +extern void CVMakeClipPath(CharView *cv); +extern void CVAddAnchor(CharView *cv); +extern AnchorClass *AnchorClassUnused(SplineChar *sc,int *waslig); +extern void FVSetWidth(FontView *fv,enum widthtype wtype); +extern void CVSetWidth(CharView *cv,enum widthtype wtype); +extern void CVChangeSC(CharView *cv, SplineChar *sc ); +extern Undoes *CVPreserveTState(CharView *cv); +extern void CVRestoreTOriginalState(CharView *cv); +extern void CVUndoCleanup(CharView *cv); + +extern void CVAdjustPoint(CharView *cv, SplinePoint *sp); +extern void CVMergeSplineSets(CharView *cv, SplinePoint *active, SplineSet *activess, + SplinePoint *merge, SplineSet *mergess); +extern void CVAdjustControl(CharView *cv,BasePoint *cp, BasePoint *to); +extern int CVMoveSelection(CharView *cv, real dx, real dy, uint32 input_state); +extern int CVTestSelectFromEvent(CharView *cv,GEvent *event); +extern void CVMouseUpPoint(CharView *cv,GEvent *event); +extern int CVMouseMovePointer(CharView *cv, GEvent *event); +extern void CVMouseDownPointer(CharView *cv, FindSel *fs, GEvent *event); +extern void CVMouseDownRuler(CharView *cv, GEvent *event); +extern void CVMouseMoveRuler(CharView *cv, GEvent *event); +extern int CVMouseAtSpline(CharView *cv,GEvent *event); +extern void CVMouseUpRuler(CharView *cv, GEvent *event); +extern void CVMouseMoveHand(CharView *cv, GEvent *event); +extern void CVMouseDownFreeHand(CharView *cv, GEvent *event); +extern void CVMouseMoveFreeHand(CharView *cv, GEvent *event); +extern void CVMouseUpFreeHand(CharView *cv, GEvent *event); +extern void CVMouseDownShape(CharView *cv,GEvent *event); +extern void CPStartInfo(CharView *cv, GEvent *event); +extern void CPUpdateInfo(CharView *cv, GEvent *event); +extern void CPEndInfo(CharView *cv); +extern void BVChar(BitmapView *cv, GEvent *event ); +extern void CVMouseDownPoint(CharView *cv,GEvent *event); +extern void CVMouseUpPointer(CharView *cv ); +extern void CVCheckResizeCursors(CharView *cv); +extern void CVMouseDownHand(CharView *cv); +extern void CVMouseUpHand(CharView *cv); +extern void CVMouseDownTransform(CharView *cv); +extern void CVMouseMoveTransform(CharView *cv); +extern void CVMouseUpTransform(CharView *cv); +extern void CVMouseDownKnife(CharView *cv); +extern void CVMouseUpKnife(CharView *cv,GEvent *event); +extern void CVMouseMoveShape(CharView *cv); +extern void CVMouseUpShape(CharView *cv); +extern void LogoExpose(GWindow pixmap,GEvent *event, GRect *r,enum drawmode dm); +extern void CVDebugPointPopup(CharView *cv); + +extern int GotoChar(SplineFont *sf,EncMap *map); + +extern void CVShowPoint(CharView *cv, BasePoint *me); + +extern BitmapView *BitmapViewCreate(BDFChar *bc, BDFFont *bdf, FontView *fv,int enc); +extern BitmapView *BitmapViewCreatePick(int enc, FontView *fv); +extern void BitmapViewFree(BitmapView *bv); +extern void BVMenuRotateInvoked(GWindow gw,struct gmenuitem *mi, GEvent *e); +extern void BVRotateBitmap(BitmapView *bv,enum bvtools type ); +extern int BVColor(BitmapView *bv); +extern void BCGeneralFunction(BitmapView *bv, + void (*SetPoint)(BitmapView *,int x, int y, void *data),void *data); +extern char *BVFlipNames[]; +extern void BVChangeBC(BitmapView *bv, BDFChar *bc, int fitit ); + +extern void MVSetSCs(MetricsView *mv, SplineChar **scs); +extern void MVRefreshChar(MetricsView *mv, SplineChar *sc); +extern void MVRegenChar(MetricsView *mv, SplineChar *sc); +extern void MVReKern(MetricsView *mv); +extern MetricsView *MetricsViewCreate(FontView *fv,SplineChar *sc,BDFFont *bdf); +extern void MetricsViewFree(MetricsView *mv); +extern void MVRefreshAll(MetricsView *mv); +extern void MV_FriendlyFeatures(GGadget *g, int pos); +extern GTextInfo *SLOfFont(SplineFont *sf); + +extern void DoPrefs(void); +extern void GListAddStr(GGadget *list,unichar_t *str, void *ud); +extern void GListReplaceStr(GGadget *list,int index, unichar_t *str, void *ud); +extern struct macname *NameGadgetsGetNames( GWindow gw ); +extern void NameGadgetsSetEnabled( GWindow gw, int enable ); +extern int GCDBuildNames(GGadgetCreateData *gcd,GTextInfo *label,int pos,struct macname *names); +extern void GCDFillMacFeat(GGadgetCreateData *mfgcd,GTextInfo *mflabels, int width, + MacFeat *all, int fromprefs, GGadgetCreateData *boxes, + GGadgetCreateData **array); +extern void Prefs_ReplaceMacFeatures(GGadget *list); + +extern unichar_t *FVOpenFont(char *title, const char *defaultfile, int mult); + + + + +extern void ShowAboutScreen(void); +extern void DelayEvent(void (*func)(void *), void *data); + +extern void FindProblems(FontView *fv,CharView *cv,SplineChar *sc); +extern void CVConstrainSelection(CharView *cv,int type); +extern void CVMakeParallel(CharView *cv); + +extern void ScriptDlg(FontView *fv,CharView *cv); + +# if HANYANG +extern void MenuNewComposition(GWindow gw, struct gmenuitem *, GEvent *); +extern void CVDisplayCompositions(GWindow gw, struct gmenuitem *, GEvent *); +extern void Disp_DoFinish(struct jamodisplay *d, int cancel); +extern void Disp_RefreshChar(SplineFont *sf,SplineChar *sc); +extern void Disp_DefaultTemplate(CharView *cv); +# endif + +extern SearchView *SVCreate(FontView *fv); +extern void SVCharViewInits(SearchView *sv); +extern void SV_DoClose(struct cvcontainer *cvc); +extern void SVChar(SearchView *sv, GEvent *event); +extern void SVMakeActive(SearchView *sv,CharView *cv); +extern int SVAttachFV(FontView *fv,int ask_if_difficult); +extern void SVDetachFV(FontView *fv); + +extern void MKDMakeActive(MathKernDlg *mkd,CharView *cv); +extern void MKDChar(MathKernDlg *mkd, GEvent *event); +extern void MKD_DoClose(struct cvcontainer *cvc); +extern void MKDCharViewInits(MathKernDlg *mkd); +extern void MathKernDialog(SplineChar *sc,int def_layer); + +extern void ShowAtt(SplineFont *sf,int def_layer); +extern void FontCompareDlg(FontView *fv); +extern void SFShowKernPairs(SplineFont *sf,SplineChar *sc,AnchorClass *ac,int layer); +extern void SFShowLigatures(SplineFont *sf,SplineChar *sc); + +extern void SCEditInstructions(SplineChar *sc); +extern void SFEditTable(SplineFont *sf, uint32 tag); +extern void IIScrollTo(struct instrinfo *ii,int ip,int mark_stop); +extern void IIReinit(struct instrinfo *ii,int ip); +extern int ii_v_e_h(GWindow gw, GEvent *event); +extern void instr_scroll(struct instrinfo *ii,struct sbevent *sb); + +extern void CVGridFitChar(CharView *cv); +extern void CVFtPpemDlg(CharView *cv,int debug); +extern void SCDeGridFit(SplineChar *sc); +extern void SCReGridFit(SplineChar *sc,int layer); + +extern void CVDebugReInit(CharView *cv,int restart_debug,int dbg_fpgm); +extern void CVDebugFree(DebugView *dv); +extern int DVChar(DebugView *dv, GEvent *e); + +extern void KernClassD(KernClass *kc, SplineFont *sf, int layer, int isv); +extern void ShowKernClasses(SplineFont *sf,MetricsView *mv,int layer,int isv); +extern void KCLD_End(struct kernclasslistdlg *kcld); +extern void KCLD_MvDetach(struct kernclasslistdlg *kcld,MetricsView *mv); +extern void KernPairD(SplineFont *sf,SplineChar *sc1,SplineChar *sc2,int layer, int isv); +extern void KCD_DrawGlyph(GWindow pixmap,int x,int baseline,BDFChar *bdfc,int mag); +extern GTextInfo *BuildFontList(FontView *except); +extern void TFFree(GTextInfo *tf); + +extern void AnchorControl(SplineChar *sc,AnchorPoint *ap,int layer); +extern void AnchorControlClass(SplineFont *_sf,AnchorClass *ac,int layer); + +extern void FVSelectByPST(FontView *fv); + +enum hist_type { hist_hstem, hist_vstem, hist_blues }; +struct psdict; +extern void SFHistogram(SplineFont *sf,int layer, struct psdict *private,uint8 *selected, + EncMap *map, enum hist_type which); + +extern void CCD_Close(struct contextchaindlg *ccd); +extern int CCD_NameListCheck(SplineFont *sf,const char *ret,int empty_bad,char *title); +extern struct contextchaindlg *ContextChainEdit(SplineFont *sf,FPST *fpst, + struct gfi_data *gfi,unichar_t *newname); +extern int CCD_InvalidClassList(char *ret,GGadget *list,int wasedit); +extern char *cu_copybetween(const unichar_t *start, const unichar_t *end); + +extern struct statemachinedlg *StateMachineEdit(SplineFont *sf,ASM *sm,struct gfi_data *d); +extern void SMD_Close(struct statemachinedlg *smd); +extern void GFI_FinishSMNew(struct gfi_data *d,ASM *sm, int success,int isnew); +extern void GFI_SMDEnd(struct gfi_data *d); + +extern void MMChangeBlend(MMSet *mm,FontView *fv,int tonew); +extern void MMWizard(MMSet *mm); + +extern int LayerDialog(Layer *layer,SplineFont *sf); +extern void CVLayerChange(CharView *cv); + +extern int PointOfViewDlg(struct pov_data *pov,SplineFont *sf,int flags); + +extern SplineChar *FVMakeChar(FontView *fv,int i); + +extern void CVPointOfView(CharView *cv,struct pov_data *); + +extern void DVCreateGloss(DebugView *dv); +extern int CVXPos(DebugView *dv,int offset,int width); + +extern GMenuItem *GetEncodingMenu(void (*func)(GWindow,GMenuItem *,GEvent *), + Encoding *current); + +extern GTextInfo *TIFromName(const char *name); + +enum subtable_data_flags { + /* I have flags for each alternative because I want "unspecified" to be */ + /* an option */ + sdf_kernclass = 0x01, + sdf_kernpair = 0x02, + sdf_verticalkern = 0x04, + sdf_horizontalkern = 0x08, + sdf_dontedit = 0x10 +}; +struct subtable_data { + int flags; + SplineChar *sc; +}; + +extern GTextInfo **SFLookupListFromType(SplineFont *sf, int lookup_type ); +extern GTextInfo **SFSubtablesOfType(SplineFont *sf, int lookup_type, int kernclass, int add_none); +extern GTextInfo *SFSubtableListOfType(SplineFont *sf, int lookup_type, int kernclass, int add_none); +extern struct lookup_subtable *SFNewLookupSubtableOfType(SplineFont *sf, int lookup_type, struct subtable_data *sd, int def_layer ); +extern int EditLookup(OTLookup *otl,int isgpos,SplineFont *sf); +extern int EditSubtable(struct lookup_subtable *sub,int isgpos,SplineFont *sf, + struct subtable_data *sd,int def_layer); +extern void _LookupSubtableContents(SplineFont *sf, struct lookup_subtable *sub, + struct subtable_data *sd,int def_layer); +extern unichar_t **SFGlyphNameCompletion(SplineFont *sf,GGadget *t,int from_tab, + int new_name_after_space); +extern void AddRmLang(SplineFont *sf, struct lkdata *lk,int add_lang); +extern void FVMassGlyphRename(FontView *fv); + +extern void SFBdfProperties(SplineFont *sf, EncMap *map, BDFFont *thisone); + + + +extern GMenuItem2 helplist[]; +extern BasePoint last_ruler_offset[]; + +extern void CVCopyLayerToLayer(CharView *cv); +extern void FVCopyLayerToLayer(FontView *fv); +extern void CVCompareLayerToLayer(CharView *cv); +extern void FVCompareLayerToLayer(FontView *fv); + +extern void MathInit(void); +extern void SFMathDlg(SplineFont *sf,int def_layer); + +extern GMenuItem2 *cvpy_menu, *fvpy_menu; +extern void cvpy_tllistcheck(GWindow gw,struct gmenuitem *mi,GEvent *e); +extern void fvpy_tllistcheck(GWindow gw,struct gmenuitem *mi,GEvent *e); + +extern void SFValidationWindow(SplineFont *sf,int layer, enum fontformat format); +extern void ValidationDestroy(SplineFont *sf); + + + +extern const char *UI_TTFNameIds(int id); +extern const char *UI_MSLangString(int language); +extern void FontInfoInit(void); +extern void LookupUIInit(void); +extern enum psstrokeflags Ps_StrokeFlagsDlg(void); +extern struct cidmap *AskUserForCIDMap(void); + +extern void DefineGroups(struct fontview *fv); +extern void DisplayGroups(struct fontview *fv); + +extern struct Base *SFBaselines(SplineFont *sf,struct Base *old,int is_vertical); + +extern struct hslrgb *SFFontCols(SplineFont *sf,struct hslrgb fontcols[6]); +#endif /* _VIEWS_H */ diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/gdraw/Makefile.in b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/gdraw/Makefile.in new file mode 100644 index 00000000000..e69de29bb2d diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/gutils/Makefile.in b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/gutils/Makefile.in new file mode 100644 index 00000000000..f03229b8806 --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/gutils/Makefile.in @@ -0,0 +1,45 @@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +top_builddir = .. +VPATH = @srcdir@ +bindir = @bindir@ +libdir = @libdir@ + +GU_VERSION=1 +GU_REVISION=3 +GU_AGE=0 + +LIBTOOL = @LIBTOOL@ +CC = @CC@ + +X_CFLAGS = @X_CFLAGS@ +X_LIBS = @X_LIBS@ +X_11LIB = @X_11LIB@ +X_EXTRA_LIBS = @X_EXTRA_LIBS@ +X_PRE_LIBS = @X_PRE_LIBS@ +STATIC_LIBS = @STATIC_LIBS@ + +libgutils_OBJECTS = fsys.lo gwwintl.lo + +Incs = -I$(top_builddir)/inc -I$(top_srcdir)/inc -I/usr/pkg/include -I/usr/pkg/include/giflib +CFLAGS = @CFLAGS@ @CPPFLAGS@ $(Incs) @WFLAGS@ $(X_CFLAGS) -DNOTHREADS @DEFS@ -DLIBDIR='"$(libdir)"' + +both: ../libgutils.la + +../libgutils.la: $(libgutils_OBJECTS) + $(LIBTOOL) --mode=link $(CC) -no-undefined $(CFLAGS) @LDFLAGS@ -o ../libgutils.la $(libgutils_OBJECTS) \ + ../libgunicode.la @LIBS@ \ + $(STATIC_LIBS) \ + -rpath $(libdir) -version-info $(GU_VERSION):$(GU_REVISION):$(GU_AGE) + +%.lo: %.c + $(LIBTOOL) --mode=compile $(CC) $(CFLAGS) -c $< + +clean: + -rm -f *.lo *.o .libs/* ../libgutils.la + +distclean cleaner: + -rm -f *.lo *.o ../libgutils.la Makefile .libs/* diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/gutils/fsys.c b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/gutils/fsys.c new file mode 100644 index 00000000000..dfad4bd395e --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/gutils/fsys.c @@ -0,0 +1,487 @@ +/* Copyright (C) 2000-2004 by George Williams */ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include "ustring.h" +#include "fileutil.h" +#include "gfile.h" +#include +#include /* for mkdir */ +#include + +#ifdef _WIN32 +#define MKDIR(A,B) mkdir(A) +#else +#define MKDIR(A,B) mkdir(A,B) +#endif + +static char dirname_[1024]; + +char *GFileGetAbsoluteName(char *name, char *result, int rsiz) { + /* result may be the same as name */ + char buffer[1000]; + + if ( *name!='/' ) { + char *pt, *spt, *rpt, *bpt; + + if ( dirname_[0]=='\0' ) { + getcwd(dirname_,sizeof(dirname_)); + } + strcpy(buffer,dirname_); + if ( buffer[strlen(buffer)-1]!='/' ) + strcat(buffer,"/"); + strcat(buffer,name); + + /* Normalize out any .. */ + spt = rpt = buffer; + while ( *spt!='\0' ) { + if ( *spt=='/' ) ++spt; + for ( pt = spt; *pt!='\0' && *pt!='/'; ++pt ); + if ( pt==spt ) /* Found // in a path spec, reduce to / (we've*/ + strcpy(spt,pt); /* skipped past the :// of the machine name) */ + else if ( pt==spt+1 && spt[0]=='.' ) /* Noop */ + strcpy(spt,pt); + else if ( pt==spt+2 && spt[0]=='.' && spt[1]=='.' ) { + for ( bpt=spt-2 ; bpt>rpt && *bpt!='/'; --bpt ); + if ( bpt>=rpt && *bpt=='/' ) { + strcpy(bpt,pt); + spt = bpt; + } else { + rpt = pt; + spt = pt; + } + } else + spt = pt; + } + name = buffer; + if ( rsiz>sizeof(buffer)) rsiz = sizeof(buffer); /* Else valgrind gets unhappy */ + } + if (result!=name) { + strncpy(result,name,rsiz); + result[rsiz-1]='\0'; + } +return(result); +} + +char *GFileMakeAbsoluteName(char *name) { + char buffer[1025]; + + GFileGetAbsoluteName(name,buffer,sizeof(buffer)); +return( copy(buffer)); +} + +char *GFileBuildName(char *dir,char *fname,char *buffer,int size) { + int len; + + if ( dir==NULL || *dir=='\0' ) { + if ( strlen( fname )ret && pt[-1]!='/' ) + *pt++ = '/'; + strcpy(pt,name); + if ( isdir ) { + pt += strlen(pt); + if ( pt>ret && pt[-1]!='/' ) { + *pt++ = '/'; + *pt = '\0'; + } + } +return(ret); +} + +int GFileIsAbsolute(const char *file) { + if ( *file=='/' ) +return( true ); + if ( strstr(file,"://")!=NULL ) +return( true ); + +return( false ); +} + +int GFileIsDir(const char *file) { +#ifdef _WIN32 + struct stat info; + if (stat(file, &info)) +return 0; + else +return ((info.st_mode&_S_IFDIR)); +#else + char buffer[1000]; + sprintf(buffer,"%s/.",file); +return( access(buffer,0)==0 ); +#endif +} + +int GFileExists(const char *file) { +return( access(file,0)==0 ); +} + +int GFileModifyable(const char *file) { +return( access(file,02)==0 ); +} + +int GFileModifyableDir(const char *file) { + char buffer[1024], *pt; + + strcpy(buffer,file); + pt = strrchr(buffer,'/'); + if ( pt==NULL ) + strcpy(buffer,"."); + else + *pt='\0'; +return( GFileModifyable(buffer)); +} + +int GFileReadable(char *file) { +return( access(file,04)==0 ); +} + +int GFileMkDir(char *name) { +return( MKDIR(name,0755)); +} + +int GFileRmDir(char *name) { +return(rmdir(name)); +} + +int GFileUnlink(char *name) { +return(unlink(name)); +} + +char *_GFile_find_program_dir(char *prog) { + char *pt, *path, *program_dir=NULL; + char filename[2000]; + + if ( (pt = strrchr(prog,'/'))!=NULL ) + program_dir = copyn(prog,pt-prog); + else if ( (path = getenv("PATH"))!=NULL ) { + while ((pt = strchr(path,':'))!=NULL ) { + sprintf(filename,"%.*s/%s", (int)(pt-path), path, prog); + /* Under cygwin, applying access to "potrace" will find "potrace.exe" */ + /* no need for special check to add ".exe" */ + if ( access(filename,1)!= -1 ) { + program_dir = copyn(path,pt-path); + break; + } + path = pt+1; + } + if ( program_dir==NULL ) { + sprintf(filename,"%s/%s", path, prog); + if ( access(filename,1)!= -1 ) + program_dir = copy(path); + } + } + if ( program_dir==NULL ) +return( NULL ); + GFileGetAbsoluteName(program_dir,filename,sizeof(filename)); + gfree(program_dir); + program_dir = copy(filename); +return( program_dir ); +} + +unichar_t *u_GFileGetAbsoluteName(unichar_t *name, unichar_t *result, int rsiz) { + /* result may be the same as name */ + unichar_t buffer[1000]; + + if ( *name!='/' ) { + unichar_t *pt, *spt, *rpt, *bpt; + + if ( dirname_[0]=='\0' ) { + getcwd(dirname_,sizeof(dirname_)); + } + uc_strcpy(buffer,dirname_); + if ( buffer[u_strlen(buffer)-1]!='/' ) + uc_strcat(buffer,"/"); + u_strcat(buffer,name); + + /* Normalize out any .. */ + spt = rpt = buffer; + while ( *spt!='\0' ) { + if ( *spt=='/' ) ++spt; + for ( pt = spt; *pt!='\0' && *pt!='/'; ++pt ); + if ( pt==spt ) /* Found // in a path spec, reduce to / (we've*/ + u_strcpy(spt,pt); /* skipped past the :// of the machine name) */ + else if ( pt==spt+1 && spt[0]=='.' ) /* Noop */ + u_strcpy(spt,pt); + else if ( pt==spt+2 && spt[0]=='.' && spt[1]=='.' ) { + for ( bpt=spt-2 ; bpt>rpt && *bpt!='/'; --bpt ); + if ( bpt>=rpt && *bpt=='/' ) { + u_strcpy(bpt,pt); + spt = bpt; + } else { + rpt = pt; + spt = pt; + } + } else + spt = pt; + } + name = buffer; + } + if (result!=name) { + u_strncpy(result,name,rsiz); + result[rsiz-1]='\0'; + } +return(result); +} + +unichar_t *u_GFileBuildName(unichar_t *dir,unichar_t *fname,unichar_t *buffer,int size) { + int len; + + if ( dir==NULL || *dir=='\0' ) { + u_strncpy(buffer,fname,size-1); + buffer[size-1]='\0'; + } else { + if ( buffer!=dir ) { + u_strncpy(buffer,dir,size-3); + buffer[size-3]='\0'; + } + len = u_strlen(buffer); + if ( buffer[len-1]!='/' ) + buffer[len++] = '/'; + u_strncpy(buffer+len,fname,size-len-1); + buffer[size-1]='\0'; + } +return( buffer ); +} + +/* Given a filename in a directory, pick the directory out of it, and */ +/* create a new filename using that directory and the given nametail */ +unichar_t *u_GFileReplaceName(unichar_t *oldname,unichar_t *fname,unichar_t *buffer,int size) { + int len; + unichar_t *dirend; + + dirend = u_strrchr(oldname,'/'); + if ( dirend == NULL ) { + u_strncpy(buffer,fname,size-1); + buffer[size-1]='\0'; + } else { + *dirend = '\0'; + if ( buffer!=oldname ) { + u_strncpy(buffer,oldname,size-3); + buffer[size-3]='\0'; + } + len = u_strlen(buffer); + *dirend = '/'; + buffer[len++] = '/'; + u_strncpy(buffer+len,fname,size-len-1); + buffer[size-1]='\0'; + } +return( buffer ); +} + +unichar_t *u_GFileNameTail(const unichar_t *oldname) { + unichar_t *pt; + + pt = u_strrchr(oldname,'/'); + if ( pt !=NULL ) +return( pt+1); + else +return( (unichar_t *)oldname ); +} + +unichar_t *u_GFileNormalize(unichar_t *name) { + unichar_t *pt, *base, *ppt; + + if ( (pt = uc_strstr(name,"://"))!=NULL ) { + base = u_strchr(pt+3,'/'); + if ( base==NULL ) +return( name ); + ++base; + } else if ( *name=='/' ) + base = name+1; + else + base = name; + for ( pt=base; *pt!='\0'; ) { + if ( *pt=='/' ) + u_strcpy(pt,pt+1); + else if ( uc_strncmp(pt,"./",2)==0 ) + u_strcpy(pt,pt+2); + else if ( uc_strncmp(pt,"../",2)==0 ) { + for ( ppt=pt-2; ppt>=base && *ppt!='/'; --ppt ); + ++ppt; + if ( ppt>=base ) { + u_strcpy(ppt,pt+3); + pt = ppt; + } else + pt += 3; + } else { + while ( *pt!='/' && *pt!='\0' ) ++pt; + if ( *pt == '/' ) ++pt; + } + } +return( name ); +} + +unichar_t *u_GFileAppendFile(unichar_t *dir,unichar_t *name,int isdir) { + unichar_t *ret, *pt; + + ret = galloc((u_strlen(dir)+u_strlen(name)+3)*sizeof(unichar_t)); + u_strcpy(ret,dir); + pt = ret+u_strlen(ret); + if ( pt>ret && pt[-1]!='/' ) + *pt++ = '/'; + u_strcpy(pt,name); + if ( isdir ) { + pt += u_strlen(pt); + if ( pt>ret && pt[-1]!='/' ) { + *pt++ = '/'; + *pt = '\0'; + } + } +return(ret); +} + +int u_GFileIsAbsolute(const unichar_t *file) { + if ( *file=='/' ) +return( true ); + if ( uc_strstr(file,"://")!=NULL ) +return( true ); + +return( false ); +} + +int u_GFileIsDir(const unichar_t *file) { + char buffer[1024]; + cu_strcpy(buffer,file); + strcat(buffer,"/."); +return( access(buffer,0)==0 ); +} + +int u_GFileExists(const unichar_t *file) { + char buffer[1024]; + cu_strcpy(buffer,file); +return( access(buffer,0)==0 ); +} + +int u_GFileModifyable(const unichar_t *file) { + char buffer[1024]; + cu_strcpy(buffer,file); +return( access(buffer,02)==0 ); +} + +int u_GFileModifyableDir(const unichar_t *file) { + char buffer[1024], *pt; + + cu_strcpy(buffer,file); + pt = strrchr(buffer,'/'); + if ( pt==NULL ) + strcpy(buffer,"."); + else + *pt='\0'; +return( GFileModifyable(buffer)); +} + +int u_GFileReadable(unichar_t *file) { + char buffer[1024]; + cu_strcpy(buffer,file); +return( access(buffer,04)==0 ); +} + +int u_GFileMkDir(unichar_t *name) { + char buffer[1024]; + cu_strcpy(buffer,name); +return( MKDIR(buffer,0755)); +} + +int u_GFileRmDir(unichar_t *name) { + char buffer[1024]; + cu_strcpy(buffer,name); +return(rmdir(buffer)); +} + +int u_GFileUnlink(unichar_t *name) { + char buffer[1024]; + cu_strcpy(buffer,name); +return(unlink(buffer)); +} diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/gutils/gwwintl.c b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/gutils/gwwintl.c new file mode 100644 index 00000000000..701f52311c3 --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/gutils/gwwintl.c @@ -0,0 +1,136 @@ +/* Copyright (C) 2000-2008 by George Williams */ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include +#include +#include +#include +#include + +char *sgettext(const char *msgid) { + const char *msgval = _(msgid); + char *found; + if (msgval == msgid) + if ( (found = strrchr (msgid, '|'))!=NULL ) + msgval = found+1; +return (char *) msgval; +} + +#if defined( HAVE_LIBINTL_H ) && !defined( NODYNAMIC ) && !defined ( _STATIC_LIBINTL ) +# include + +static DL_CONST void *libintl = NULL; + +static char *(*_bind_textdomain_codeset)(const char *, const char *); +static char *(*_bindtextdomain)(const char *, const char *); +static char *(*_textdomain)(const char *); +static char *(*_gettext)(const char *); +static char *(*_ngettext)(const char *, const char *, unsigned long int); +static char *(*_dgettext)(const char *, const char *); + +static int init_gettext(void) { + + if ( libintl == (void *) -1 ) +return( false ); + else if ( libintl !=NULL ) +return( true ); + + libintl = dlopen("libintl" SO_EXT,RTLD_LAZY); + if ( libintl==NULL ) { + libintl = (void *) -1; +return( false ); + } + + _bind_textdomain_codeset = (char *(*)(const char *, const char *)) dlsym(libintl,"bind_textdomain_codeset"); + _bindtextdomain = (char *(*)(const char *, const char *)) dlsym(libintl,"bindtextdomain"); + _textdomain = (char *(*)(const char *)) dlsym(libintl,"textdomain"); + _gettext = (char *(*)(const char *)) dlsym(libintl,"gettext"); + _ngettext = (char *(*)(const char *, const char *, unsigned long int)) dlsym(libintl,"ngettext"); + _dgettext = (char *(*)(const char *, const char *)) dlsym(libintl,"dgettext"); + + if ( _bind_textdomain_codeset==NULL || _bindtextdomain==NULL || + _textdomain==NULL || _gettext==NULL || _ngettext==NULL ) { + libintl = (void *) -1; + fprintf( stderr, "Found a copy of libintl but could not use it.\n" ); +return( false ); + } +return( true ); +} + +char *gwwv_bind_textdomain_codeset(const char *domain, const char *dir) { + if ( libintl==NULL ) + init_gettext(); + if ( libintl!=(void *) -1 ) +return( (_bind_textdomain_codeset)(domain,dir)); + +return( NULL ); +} + +char *gwwv_bindtextdomain(const char *domain, const char *dir) { + if ( libintl==NULL ) + init_gettext(); + if ( libintl!=(void *) -1 ) +return( (_bindtextdomain)(domain,dir)); + +return( NULL ); +} + +char *gwwv_textdomain(const char *domain) { + if ( libintl==NULL ) + init_gettext(); + if ( libintl!=(void *) -1 ) +return( (_textdomain)(domain)); + +return( NULL ); +} + +char *gwwv_gettext(const char *msg) { + if ( libintl==NULL ) + init_gettext(); + if ( libintl!=(void *) -1 ) +return( (_gettext)(msg)); + +return( (char *) msg ); +} + +char *gwwv_ngettext(const char *msg, const char *pmsg,unsigned long int n) { + if ( libintl==NULL ) + init_gettext(); + if ( libintl!=(void *) -1 ) +return( (_ngettext)(msg,pmsg,n)); + +return( (char *) (n==1?msg:pmsg) ); +} + +char *gwwv_dgettext(const char *domain, const char *msg) { + if ( libintl==NULL ) + init_gettext(); + if ( libintl!=(void *) -1 && _dgettext!=NULL ) +return( (_dgettext)(domain,msg)); + +return( (char *) msg ); +} +#endif diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/inc/basics.h b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/inc/basics.h new file mode 100644 index 00000000000..54454b5961e --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/inc/basics.h @@ -0,0 +1,78 @@ +/* Copyright (C) 2000-2008 by George Williams */ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef _BASICS_H +#define _BASICS_H + +#ifdef VMS /* these three lines from Jacob Jansen, Open VMS port */ +# include +#endif +#ifdef HAVE_CONFIG_H +/* cross-compiler woes */ +#ifdef __MINGW32__ +#define _CTYPE_H_ +#endif +# include "config.h" +#endif +#define gfree ff_gfree +#define grealloc ff_grealloc + +#include /* for NULL */ +#ifdef HAVE_STDINT_H +# include +#else +# include +#endif +#include /* for free */ +#include + +#define true 1 +#define false 0 + +#define forever for (;;) + +typedef int32_t int32; +typedef uint32_t uint32; +typedef int16_t int16; +typedef uint16_t uint16; +typedef int8_t int8; +typedef uint8_t uint8; + + /* An integral type which can hold a pointer */ +typedef intptr_t intpt; + +#ifdef UNICHAR_16 +typedef uint16 unichar_t; +#else +typedef uint32 unichar_t; +#endif + +extern void *galloc(long size); +extern void *gcalloc(int cnt, long size); +extern void *grealloc(void *,long size); +extern void gfree(void *); +extern void galloc_set_trap(void (*)(void)); +#endif diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/inc/chardata.h b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/inc/chardata.h new file mode 100644 index 00000000000..fd2247f7e1b --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/inc/chardata.h @@ -0,0 +1,78 @@ +#include "basics.h" + +struct charmap { + int first, last; + unsigned char **table; + unichar_t *totable; +}; +struct charmap2 { + int first, last; + unsigned short **table; + unichar_t *totable; +}; + +extern const unichar_t unicode_from_i8859_1[]; +extern struct charmap i8859_1_from_unicode; +extern const unichar_t unicode_from_i8859_2[]; +extern struct charmap i8859_2_from_unicode; +extern const unichar_t unicode_from_i8859_3[]; +extern struct charmap i8859_3_from_unicode; +extern const unichar_t unicode_from_i8859_4[]; +extern struct charmap i8859_4_from_unicode; +extern const unichar_t unicode_from_i8859_5[]; +extern struct charmap i8859_5_from_unicode; +extern const unichar_t unicode_from_i8859_6[]; +extern struct charmap i8859_6_from_unicode; +extern const unichar_t unicode_from_i8859_7[]; +extern struct charmap i8859_7_from_unicode; +extern const unichar_t unicode_from_i8859_8[]; +extern struct charmap i8859_8_from_unicode; +extern const unichar_t unicode_from_i8859_9[]; +extern struct charmap i8859_9_from_unicode; +extern const unichar_t unicode_from_i8859_10[]; +extern struct charmap i8859_10_from_unicode; +extern const unichar_t unicode_from_i8859_11[]; +extern struct charmap i8859_11_from_unicode; +extern const unichar_t unicode_from_i8859_13[]; +extern struct charmap i8859_13_from_unicode; +extern const unichar_t unicode_from_i8859_14[]; +extern struct charmap i8859_14_from_unicode; +extern const unichar_t unicode_from_i8859_15[]; +extern struct charmap i8859_15_from_unicode; +extern const unichar_t unicode_from_koi8_r[]; +extern struct charmap koi8_r_from_unicode; +extern const unichar_t unicode_from_jis201[]; +extern struct charmap jis201_from_unicode; +extern const unichar_t unicode_from_win[]; +extern struct charmap win_from_unicode; +extern const unichar_t unicode_from_mac[]; +extern struct charmap mac_from_unicode; +extern const unichar_t unicode_from_MacSymbol[]; +extern struct charmap MacSymbol_from_unicode; +extern const unichar_t unicode_from_ZapfDingbats[]; +extern struct charmap ZapfDingbats_from_unicode; + +extern unichar_t *unicode_from_alphabets[]; +extern struct charmap *alphabets_from_unicode[]; + +extern const unichar_t unicode_from_jis208[]; +extern const unichar_t unicode_from_jis212[]; +extern struct charmap2 jis_from_unicode; +/* Subtract 0xa100 before indexing this array */ +extern const unichar_t unicode_from_big5[]; +extern struct charmap2 big5_from_unicode; +/* Subtract 0x8100 before indexing this array */ +extern const unichar_t unicode_from_big5hkscs[]; +extern struct charmap2 big5hkscs_from_unicode; +extern const unichar_t unicode_from_ksc5601[]; +extern struct charmap2 ksc5601_from_unicode; +/* Subtract 0x8400 before indexing this array */ +extern const unichar_t unicode_from_johab[]; +extern struct charmap2 johab_from_unicode; +extern const unichar_t unicode_from_gb2312[]; +extern struct charmap2 gb2312_from_unicode; + +/* a mask for each character saying what charset(s) it may be found in */ +extern const unsigned long * const unicode_backtrans[]; + +extern const unichar_t *const * const unicode_alternates[]; diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/inc/charset.h b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/inc/charset.h new file mode 100644 index 00000000000..124c56b6088 --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/inc/charset.h @@ -0,0 +1,71 @@ +/* Copyright (C) 2000-2008 by George Williams */ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef _CHARSET_H +#define _CHARSET_H +/* ASCII is ISO 646, except the ISO version admits national alternatives */ +enum encoding { e_usascii, e_iso646_no, e_iso646_se, e_iso8859_1, + e_iso8859_2, e_iso8859_3, e_iso8859_4, e_iso8859_5, e_iso8859_6, + e_iso8859_7, e_iso8859_8, e_iso8859_9, e_iso8859_10, + e_iso8859_11/* same as TIS */, e_iso8859_13, e_iso8859_14, e_iso8859_15, + e_koi8_r, /* RFC 1489 */ + e_jis201, /* 8 bit, ascii & katakana */ + e_win, e_mac, + e_user, +/* korean appears to fit into the jis/euc encoding schemes */ +/* the difference between jis & jis2 is what the output encoding should be (presence of '(') */ + e_jis, e_jis2, e_jiskorean, e_jisgb, e_sjis, /* multi-byte */ + e_euc, e_euckorean, e_eucgb, + e_wansung, e_johab, + e_big5, + e_big5hkscs, + e_unicode, e_unicode_backwards, /* wide chars */ + e_utf7, e_utf8, /* unicode encodings */ + e_ucs4, /* 4 byte chars */ + e_notrans, /* _inch returns 16bits */ + e_encodingmax, e_unknown=-1, e_first2byte=e_jis }; + +enum charset { em_none = -1, + em_iso8859_1, em_iso8859_2, em_iso8859_3, em_iso8859_4, em_iso8859_5, + em_iso8859_6, em_iso8859_7, em_iso8859_8, em_iso8859_9, em_iso8859_10, + em_iso8859_11/* same as TIS */, em_iso8859_13, em_iso8859_14, em_iso8859_15, + em_koi8_r, + em_jis201, + em_win, em_mac, em_symbol, em_zapfding, em_user, em_adobestandard=em_user, + em_jis208, em_jis212, em_ksc5601, em_gb2312, em_big5, em_big5hkscs, + em_johab /* Korean*/, +/* 28 */ + em_unicode, em_unicode4, em_gb18030 , em_max, em_first2byte=em_jis208, em_last94x94=em_gb2312 }; + +extern int /*enum charset*/ local_encoding; +#if HAVE_ICONV_H +# include +extern char *iconv_local_encoding_name; +#else +# include "gwwiconv.h" /* My fake iconv based on encodings in gdraw/gunicode */ +#endif +extern struct namemap { char *name; int map; } encodingnames[]; +#endif diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/inc/config.h.in b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/inc/config.h.in new file mode 100644 index 00000000000..a27baff5fda --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/inc/config.h.in @@ -0,0 +1,67 @@ +#ifndef _FF_CONFIG_H +# define _FF_CONFIG_H 1 +#define LUA_FF_LIB 1 +#undef HAVE_DLFCN_H +#define _NO_PYTHON 1 +#undef HAVE_ICONV_H +#undef HAVE_STDINT_H +#undef HAVE_LANGINFO_H +#undef HAVE_PTHREAD_H +/* #undef HAVE_LIBINTL_H */ +#undef HAVE_IEEEFP_H +#undef FREETYPE_HAS_DEBUGGER +/* #undef HAVE_LONG_DOUBLE */ /* don't do this */ +/* #undef _HAS_LONGLONG */ /* don't do this */ +#undef _STATIC_LIBINTL +#undef _STATIC_LIBUNGIF +#undef _STATIC_LIBPNG +#undef _STATIC_LIBPNG12 +#undef _STATIC_LIBTIFF +#undef _STATIC_LIBJPEG +#undef _STATIC_LIBSPIRO +#undef _STATIC_LIBXML2 +#undef _STATIC_LIBFREETYPE +#undef _STATIC_LIBUNINAMESLIST +#undef _STATIC_LIBCAIRO +#define _NO_LIBUNINAMESLIST 1 +#undef SHAREDIR +#undef LIBDIR +#undef PREFIX +#undef _CursorsMustBe16x16 +#undef _Keyboard +#undef __Mac +#undef _BrokenBitmapImages +#undef _ModKeysAutoRepeat +#undef __CygWin +#define _NO_XINPUT 1 +/* #undef FONTFORGE_CONFIG_CAPSLOCK_FOR_ALT */ +/* #undef FONTFORGE_CONFIG_SHOW_RAW_POINTS */ +/* #undef FONTFORGE_CONFIG_TYPE3 */ +/* #undef FONTFORGE_CONFIG_DEVICETABLES */ +/* #undef FONTFORGE_CONFIG_USE_DOUBLE */ +/* #undef FONTFORGE_CONFIG_USE_LONGDOUBLE */ +/* #undef FONTFORGE_CONFIG_PASTEAFTER */ +/* #undef FONTFORGE_CONFIG_GB12345 */ +/* #undef FONTFORGE_CONFIG_TILEPATH */ +#define _NO_FFSCRIPT 1 +#undef _NO_TZSET +#define _NO_FREETYPE 1 +#define _NO_LIBXML 1 +#define _NO_LIBUNGIF 1 +#define _NO_LIBPNG 1 +#undef _LIBPNG12 +#define _NO_LIBJPEG 1 +#define _NO_LIBTIFF 1 +#define _NO_LIBSPIRO 1 +#define NODYNAMIC 1 +#define NOPLUGIN 1 +#undef FREETYPE_HAS_DEBUGGER +#undef _NO_SNPRINTF +#define _NO_XKB 1 +#define X_DISPLAY_MISSING 1 +#undef PYTHON_LIB_NAME +#define _NO_LIBCAIRO 1 +#define _NO_LIBPANGO 1 +#undef WORDS_BIGENDIAN + +#endif diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/inc/dynamic.h b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/inc/dynamic.h new file mode 100644 index 00000000000..4c5be9d8ac4 --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/inc/dynamic.h @@ -0,0 +1,62 @@ +/* Vague support for several different shared library formats */ +/* Everyone but the mac uses a varient of dlopen, while the mac uses NSAddImage */ +/* Under cygwin the shared libs have very strange names which bare little */ +/* resemblance to what we expect. GNU creates a .la file that tells us what */ +/* the name should be, so indirect through that */ +#ifndef __DYNAMIC_H +# define __DYNAMIC_H + +# if defined(__Mac) +/* In 10.3 the mac got normal dlopen routines */ +# include +# define SO_EXT ".dylib" +# define SO_0_EXT ".0.dylib" +# define SO_1_EXT ".1.dylib" +# define SO_2_EXT ".2.dylib" +# define SO_6_EXT ".6.dylib" +# define DL_CONST +# define dlopen(name,foo) gwwv_dlopen(name,foo) +extern void *gwwv_dlopen(char *name,int flags); +# elif defined(__Mac) +# include +extern const void *gwwv_NSAddImage(char *name,uint32_t options); +# define SO_EXT ".dylib" +# define SO_0_EXT ".0.dylib" +# define SO_1_EXT ".1.dylib" +# define SO_2_EXT ".2.dylib" +# define SO_6_EXT ".6.dylib" +/* man NSModule */ +# define dlopen(name,foo) gwwv_NSAddImage(name,NSADDIMAGE_OPTION_WITH_SEARCHING|NSADDIMAGE_OPTION_RETURN_ON_ERROR) +/* It would have been nice if the Mac's docs had mentioned that the linker adds*/ +/* an underscore to symbol names.... */ +# define dlsym(image,symname) NSAddressOfSymbol(NSLookupSymbolInImage(image,"_" symname,NSLOOKUPSYMBOLINIMAGE_OPTION_BIND|NSLOOKUPSYMBOLINIMAGE_OPTION_RETURN_ON_ERROR)) +# define dlsymmod(symname) ("_" symname) +# define dlsymbare(image,symname) NSAddressOfSymbol(NSLookupSymbolInImage(image,symname,NSLOOKUPSYMBOLINIMAGE_OPTION_BIND|NSLOOKUPSYMBOLINIMAGE_OPTION_RETURN_ON_ERROR)) +# define DL_CONST const +# define dlclose(image_ptr) /* Don't know how to do this on mac */ +# define dlerror() "Error when loading dynamic library" +# elif defined(__Mac) +# else +# include +# ifdef __CygWin +# define dlopen(name,foo) libtool_laopen(name,foo) +void *libtool_laopen(const char *filename, int flags); +# endif +#ifdef __VMS +# define SO_EXT ".exe" +#else +# define SO_EXT ".so" +# define SO_0_EXT ".so.0" +# define SO_1_EXT ".so.1" +# define SO_2_EXT ".so.2" +# define SO_6_EXT ".so.6" +#endif +#define DL_CONST +# endif + +# ifndef dlsymmod +# define dlsymmod(symname) (symname) +# define dlsymbare(image,symname) dlsym(image,symname) +# endif + +#endif diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/inc/fileutil.h b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/inc/fileutil.h new file mode 100644 index 00000000000..37b022414d3 --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/inc/fileutil.h @@ -0,0 +1,43 @@ +/* Copyright (C) 2000-2008 by George Williams */ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef _FILEUTIL_H +#define _FILEUTIL_H + +extern char *GFileGetAbsoluteName(char *name, char *result, int rsiz); +extern char *GFileBuildName(char *dir,char *fname,char *buffer,int size); +extern char *GFileReplaceName(char *oldname,char *fname,char *buffer,int size); +extern char *GFileNameTail(const char *oldname); +extern int GFileIsDir(const char *file); +extern int GFileExists(const char *file); +extern int GFileModifyable(const char *file); +extern int GFileModifyableDir(const char *file); +extern int GFileReadable(char *file); +extern int GFileMkDir(char *name); +extern int GFileRmDir(char *name); +extern int GFileUnlink(char *name); + +#endif diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/inc/gdraw.h b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/inc/gdraw.h new file mode 100644 index 00000000000..4b4fae77435 --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/inc/gdraw.h @@ -0,0 +1,532 @@ +/* Copyright (C) 2000-2008 by George Williams */ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef _GDRAW_H +#define _GDRAW_H +#include "gimage.h" +#include "charset.h" + +enum font_style { fs_none, fs_italic=1, fs_smallcaps=2, fs_condensed=4, fs_extended=8 }; +enum font_type { ft_unknown, ft_serif, ft_sans, ft_mono, ft_cursive, ft_max }; +enum text_mods { tm_none, tm_upper=1, tm_lower=2, tm_initialcaps=4, tm_showsofthyphen=8 }; +enum text_lines { tl_none, tl_under=1, tl_strike=2, tl_over=4, tl_dash=8 }; + +typedef struct { + const unichar_t *family_name; /* may be more than one */ + int16 point_size; /* negative values are in pixels */ + int16 weight; + enum font_style style; + char *utf8_family_name; +} FontRequest; + +typedef struct { + int16 letter_spacing; /* in point tenths */ + unsigned int starts_word: 1; + unsigned int has_charset: 1; + enum text_mods mods; + enum text_lines lines; + enum charset charset; +} FontMods; + +typedef struct gbidata { + unichar_t *text; + uint8 *level; + uint8 *override; + uint16 *type; + unichar_t **original; + int32 len; + unsigned int base_right_to_left: 1; + unsigned int interpret_arabic: 1; +} GBiText; + +typedef struct font_instance FontInstance, GFont; +enum gic_style { gic_overspot=2, gic_root=1, gic_hidden=0, gic_orlesser=4, gic_type=3 }; +typedef struct ginput_context GIC; + +typedef struct ggc { + struct gwindow *w; + int32 xor_base; + Color fg; + Color bg; + GRect clip; + enum draw_func { df_copy, df_xor } func; + unsigned int copy_through_sub_windows: 1; + unsigned int bitmap_col: 1; /* window is mapped for bitmap */ + int16 skip_len, dash_len; + int16 line_width; + int16 ts; + int32 ts_xoff, ts_yoff; + int dash_offset; + GFont *fi; +} GGC; + +typedef struct gtextbounds { + int16 lbearing; /* of first character */ + /* origin to left edge of first char's raster */ + int32 rbearing; /* origin to right edge of last char's raster */ + int16 as,ds; /* maximum ascent and maximum descent */ + /* (both numbers will be positive for "g" */ + /* so total height = as+ds */ + int16 fas, fds; /* font ascent and descent */ + /* total width = rbearing-lbearing */ + int32 width; /* above are for the bounding rect, not the text */ + /* "width" which may be totally different */ +} GTextBounds; + +enum selnames { sn_primary, sn_clipboard, sn_drag_and_drop, sn_user1, sn_user2, sn_max }; +typedef struct gwindow *GWindow; +typedef struct gdisplay GDisplay; +typedef struct gtimer GTimer; + +enum keystate_mask { ksm_shift=1, ksm_capslock=2, ksm_control=4, ksm_meta=8, + ksm_cmdsuse=0x8, +/* Suse X on a Mac maps command to meta. As of Mac 10.2, the command key is 0x10 */ +/* In 10.0 the command key was 0x20 */ + ksm_cmdmacosx=0x10, /* But not the command key under suse ppc linux*/ + ksm_numlock=0x10, /* It's numlock on my 386 system */ + ksm_super=0x40, /* RedHat mask for the key with the windows flag on it */ + ksm_hyper=0x80, +/* Both Suse and Mac OS/X.2 now map option to 0x2000, but under 10.0 it was meta */ +/* Under 10.4 it is the meta mask again */ + /*ksm_option=0x2000,*/ + ksm_menumask=(ksm_control|ksm_meta|ksm_cmdmacosx|0xf0), + + ksm_button1=(1<<8), ksm_button2=(1<<9), ksm_button3=(1<<10), + ksm_button4=(1<<11), ksm_button5=(1<<12), + ksm_buttons=(ksm_button1|ksm_button2|ksm_button3|ksm_button4|ksm_button5) + }; +enum mnemonic_focus { mf_normal, mf_tab, mf_mnemonic, mf_shortcut }; +typedef struct gevent { + enum event_type { et_noevent = -1, et_char, et_charup, + et_mousemove, et_mousedown, et_mouseup, + et_crossing, /* these four are assumed to be consecutive */ + et_focus, + et_expose, et_visibility, et_resize, et_timer, + et_close/*request by user*/, et_create, + et_map, et_destroy/*window being freed*/, + et_selclear, + et_drag, et_dragout, et_drop, + et_lastnativeevent=et_drop, + et_controlevent, et_user } type; +#define _GD_EVT_CHRLEN 10 + GWindow w; + union { + struct { + char *device; /* for wacom devices */ + uint32 time; + uint16 state; + int16 x,y; + uint16 keysym; + unichar_t chars[_GD_EVT_CHRLEN]; + } chr; + struct { + char *device; /* for wacom devices */ + uint32 time; + int16 state; + int16 x,y; + int16 button; + int16 clicks; + int32 pressure, xtilt, ytilt, separation; + } mouse; + struct { + GRect rect; + } expose; + struct { + enum visibility_state { vs_unobscured, vs_partially, vs_obscured } state; + } visibility; + struct { + GRect size; + int16 dx, dy, dwidth, dheight; + unsigned int moved: 1; + unsigned int sized: 1; + } resize; + struct { + char *device; /* for wacom devices */ + uint32 time; + int16 state; + int16 x,y; + unsigned int entered: 1; + } crossing; + struct { + unsigned int gained_focus: 1; + unsigned int mnemonic_focus: 2; + } focus; + struct { + unsigned int is_visible: 1; + } map; + struct { + enum selnames sel; + } selclear; + struct { + int32 x,y; + } drag_drop; + struct { + GTimer *timer; + void *userdata; + } timer; + struct { + enum { et_buttonpress, et_buttonactivate, et_radiochanged, + et_listselected, et_listdoubleclick, + et_scrollbarchange, + et_textchanged, et_textfocuschanged, + et_lastsubtype } subtype; + struct ggadget *g; + union { + struct sbevent { + enum sb { et_sb_top, et_sb_uppage, et_sb_up, et_sb_left=et_sb_up, + et_sb_down, et_sb_right=et_sb_down, et_sb_downpage, + et_sb_bottom, + et_sb_thumb, et_sb_thumbrelease } type; + int32 pos; + } sb; + struct { + int gained_focus; + } tf_focus; + struct { + int from_pulldown; /* -1 normally, else index into pulldown list */ + } tf_changed; + struct { + int clicks; + int16 button, state; + } button; + struct { + int from_mouse, changed_index; + } list; + } u; + } control; + struct { + long subtype; + void *userdata; + } user; + } u; + void *native_window; +} GEvent; + +typedef enum cursor_types { ct_default, ct_pointer, ct_backpointer, ct_hand, + ct_question, ct_cross, ct_4way, ct_text, ct_watch, ct_draganddrop, + ct_invisible, + ct_user, ct_user2 /* and so on */ } GCursor; + +typedef struct gwindow_attrs { + enum window_attr_mask { wam_events=0x2, wam_bordwidth=0x4, + wam_bordcol=0x8, wam_backcol=0x10, wam_cursor=0x20, wam_wtitle=0x40, + wam_ititle=0x80, wam_icon=0x100, wam_nodecor=0x200, + wam_positioned=0x400, wam_centered=0x800, wam_undercursor=0x1000, + wam_noresize=0x2000, wam_restrict=0x4000, wam_redirect=0x8000, + wam_isdlg=0x10000, wam_notrestricted=0x20000, + wam_transient=0x40000, + wam_utf8_wtitle=0x80000, wam_utf8_ititle=0x100000, + wam_cairo=0x200000 } mask; + uint32 event_masks; /* (1<>24)) +#define COLOR_RED(col) (((col)>>16) & 0xff) +#define COLOR_GREEN(col) (((col)>>8) & 0xff) +#define COLOR_BLUE(col) ((col)&0xff) + +struct hslrgb { + double h,s,l,v; + double r,g,b; + uint8 rgb, hsl, hsv; +}; + +typedef struct clut { + int16 clut_len; + unsigned int is_grey: 1; + uint32 trans_index; /* will be ignored for cluts in images, use base->trans instead */ + Color clut[256]; +} GClut; + +typedef struct revcmap RevCMap; + +enum image_type { it_mono, it_bitmap=it_mono, it_index, it_true, it_rgba }; + +struct _GImage { +/* Format: bitmaps are stored with the most significant bit first in byte units + indexed images are stored in byte units + true color images are stored in 4 byte units, 0,red,green,blue + rgba images are stored in 4 byte units, alpha,red,green blue +*/ + unsigned int image_type: 2; + int16 delay; /* for animated GIFs, delay to next frame */ + int32 width, height; + int32 bytes_per_line; + uint8 *data; + GClut *clut; + Color trans; /* PNG supports more than one transparent color, we don't */ + /* for non-true color images this is the index, not a color */ +}; + +/* We deal with 1 bit, 8 bit and 32 bit images internal. 1 bit images may have*/ +/* a clut (if they don't assume bw, 0==black, 1==white), 8 bit must have a */ +/* clut, 32bit are actually 24 bit RGB images, but we pad them for easy */ +/* accessing. it_screen means that we've got an image that can be drawn */ +/* directly on the screen */ +typedef struct gimage { + short list_len; /* length of list */ + union { /* depends on whether has_list is set */ + struct _GImage *image; + struct _GImage **images; + } u; + void *userdata; +} GImage; + +enum pastetrans_type { ptt_paste_trans_to_trans, ptt_old_shines_through}; + +typedef struct grect { + int32 x,y,width,height; +} GRect; + +typedef struct gpoint { + int16 x,y; +} GPoint; + +extern GImage *GImageCreate(enum image_type type, int32 width, int32 height); +extern GImage *_GImage_Create(enum image_type type, int32 width, int32 height); +extern void GImageDestroy(GImage *gi); +extern GImage *GImageCreateAnimation(GImage **images, int n); +extern GImage *GImageAddImageBefore(GImage *dest, GImage *src, int pos); + +extern GImage *GImageBaseGetSub(struct _GImage *base, enum image_type it, GRect *src, GClut *nclut, RevCMap *rev); +extern GImage *GImageGetSub(GImage *image,enum image_type it, GRect *src, GClut *nclut, RevCMap *rev); +extern int GImageInsertToBase(struct _GImage *tobase, GImage *from, GRect *src, RevCMap *rev, + int to_x, int to_y, enum pastetrans_type ptt ); +extern int GImageInsert(GImage *to, GImage *from, GRect *src, RevCMap *rev, + int to_x, int to_y, enum pastetrans_type ptt ); +extern Color _GImageGetPixelColor(struct _GImage *base,int x, int y); /* Obsolete */ +extern Color GImageGetPixelColor(GImage *base,int x, int y); /* Obsolete */ +extern Color GImageGetPixelRGBA(GImage *base,int x, int y); +extern int GImageGetWidth(GImage *); +extern int GImageGetHeight(GImage *); +extern void *GImageGetUserData(GImage *img); +extern void GImageSetUserData(GImage *img,void *userdata); +extern void GImageResize(struct _GImage *tobase, struct _GImage *fbase, + GRect *src, RevCMap *rev); +extern GImage *GImageResize32(GImage *from, GRect *src, int width, int height, Color trans); +extern GImage *GImageResizeSame(GImage *from, GRect *src, int width, int height, RevCMap *rev); +extern RevCMap *GClutReverse(GClut *clut,int side_size); +void GClut_RevCMapFree(RevCMap *rev); +extern GClut *GImageFindCLUT(GImage *image,GClut *clut,int clutmax); +extern int GImageSameClut(GClut *clut,GClut *nclut); +extern int GImageGreyClut(GClut *clut); +extern Color GImageColourFName(unichar_t *name); +extern Color _GImage_ColourFName(char *name); +extern char *GImageNameFColour(Color col); +extern Color GDrawColorDarken(Color col, int by); +extern Color GDrawColorBrighten(Color col, int by); + +extern int GImageWriteGImage(GImage *gi, char *filename); +extern int GImageWrite_Bmp(GImage *gi, FILE *fp); +extern int GImageWriteBmp(GImage *gi, char *filename); +extern GImage *GImageRead_Bmp(FILE *file); +extern GImage *GImageReadBmp(char *filename); +extern int GImageWriteXbm(GImage *gi, char *filename); +extern GImage *GImageReadXbm(char *filename); +extern int GImageWriteXpm(GImage *gi, char *filename); +extern GImage *GImageReadXpm(char *filename); +extern int GImageWriteEps(GImage *gi, char *filename); +extern GImage *GImageReadTiff(char *filename); +extern GImage *GImageReadJpeg(char *filename); +extern GImage *GImageRead_Jpeg(FILE *fp); +extern int GImageWrite_Jpeg(GImage *gi, FILE *outfile, int quality, int progressive); +extern int GImageWriteJpeg(GImage *gi, char *filename, int quality, int progressive); +extern GImage *GImageRead_Png(FILE *fp); +extern GImage *GImageReadPng(char *filename); +extern int GImageWrite_Png(GImage *gi, FILE *fp, int progressive); +extern int GImageWritePng(GImage *gi, char *filename, int progressive); +extern GImage *GImageReadGif(char *filename); +extern int GImageWriteGif(GImage *gi,char *filename,int progressive); +extern GImage *GImageReadRas(char *filename); /* Sun Raster */ +extern GImage *GImageReadRgb(char *filename); /* SGI */ +extern GImage *GImageRead(char *filename); + +extern void GImageDrawRect(GImage *img,GRect *r,Color col); +extern void GImageDrawImage(GImage *dest,GImage *src,void *junk,int x, int y); + +extern void gRGB2HSL(struct hslrgb *col); +extern void gHSL2RGB(struct hslrgb *col); +extern void gRGB2HSV(struct hslrgb *col); +extern void gHSV2RGB(struct hslrgb *col); +extern void gColor2Hslrgb(struct hslrgb *col,Color from); +extern Color gHslrgb2Color(struct hslrgb *col); + +#endif diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/inc/gio.h b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/inc/gio.h new file mode 100644 index 00000000000..3138b0d2c07 --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/inc/gio.h @@ -0,0 +1,109 @@ +/* Copyright (C) 2000-2008 by George Williams */ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef _GIO_H +#define _GIO_H + +#include "basics.h" +#include + +enum giofuncs { gf_dir, gf_statfile, gf_getfile, gf_putfile, + gf_mkdir, gf_delfile, gf_deldir, gf_renamefile, + /*gf_lockfile, gf_unlockfile,*/ + gf_max }; + +typedef struct giocontrol { + unichar_t *path; + unichar_t *origpath; /* what the user asked for (before any redirects), NULL if path doesn't change */ + unichar_t *topath; /* for renames and copies */ + void *userdata; + struct gio_connectiondata *connectiondata; + struct gio_threaddata *threaddata; + void *iodata; + void (*receivedata)(struct giocontrol *); + void (*receiveintermediate)(struct giocontrol *); + void (*receiveerror)(struct giocontrol *); + unsigned int done: 1; + unsigned int direntrydata: 1; + unsigned int abort: 1; + enum giofuncs gf; + int protocol_index; + struct giocontrol *next; + int return_code; + unichar_t *error; + unichar_t status[80]; +} GIOControl; + +typedef struct gdirentry { + unichar_t *name; + unichar_t *mimetype; + unsigned int isdir: 1; + unsigned int isexe: 1; + unsigned int islnk: 1; + unsigned int hasdir: 1; + unsigned int hasexe: 1; + unsigned int haslnk: 1; + unsigned int hasmode: 1; + unsigned int hassize: 1; + unsigned int hastime: 1; + unsigned int timezoneknown: 1; /* We got a time, but we don't know the timezone. might be off by 24 hours either way */ + unsigned int fcdata: 2; + short mode; + uint32 size; + time_t modtime; + struct gdirentry *next; +} GDirEntry; + +extern void GIOdir(GIOControl *gc); +extern void GIOstatFile(GIOControl *gc); +extern void GIOfileExists(GIOControl *gc); +extern void GIOgetFile(GIOControl *gc); +extern void GIOputFile(GIOControl *gc); +extern void GIOmkDir(GIOControl *gc); +extern void GIOdelFile(GIOControl *gc); +extern void GIOdelDir(GIOControl *gc); +extern void GIOrenameFile(GIOControl *gc); +extern GDirEntry *GIOgetDirData(GIOControl *gc); +extern int32 GIOread(GIOControl *gc,void *buffer,int32 len); +extern int32 GIOwrite(GIOControl *gc,void *buffer,int32 len); +extern void GIOFreeDirEntries(GDirEntry *lst); +extern void GIOcancel(GIOControl *gc); +extern void GIOclose(GIOControl *gc); +extern GIOControl *GIOCreate(unichar_t *path,void *userdata, + void (*receivedata)(struct giocontrol *), + void (*receiveerror)(struct giocontrol *)); +extern void GIOSetDefAuthorizer(int32 (*getauth)(struct giocontrol *)); +extern void GIOSetUserAgent(unichar_t *agent); + +extern unichar_t *GIOguessMimeType(const unichar_t *path,int isdir); +extern unichar_t *_GioMacMime(const char *path); + +extern char *GIO_PasswordCache(char *proto,char *host,char *username,char *password); +extern char *_GIO_decomposeURL(const unichar_t *url,char **host, int *port, char **username, + char **password); + +extern void GIO_SetThreadCallback(void (*callback)(void *,void *,void *)); +#endif diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/inc/gkeysym.h b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/inc/gkeysym.h new file mode 100644 index 00000000000..7d4d2e59f5b --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/inc/gkeysym.h @@ -0,0 +1,298 @@ +#ifndef _GKEYSYM_H_ +#define _GKEYSYM_H_ + +#ifndef X_DISPLAY_MISSING +#include +/* Based on the X keysymdef file */ +/*********************************************************** +Copyright 1987, 1994, 1998 The Open Group + +All Rights Reserved. + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of The Open Group shall +not be used in advertising or otherwise to promote the sale, use or +other dealings in this Software without prior written authorization +from The Open Group. + + +Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts + + All Rights Reserved + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the name of Digital not be +used in advertising or publicity pertaining to distribution of the +software without specific, written prior permission. + +DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING +ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL +DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR +ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +SOFTWARE. + +******************************************************************/ + +#define GK_Special 0xfe00 /* keysyms above this value aren't unicode */ +#define GK_TypeAhead 0x0000 /* no single keysym, unicode value in event string */ + +#define GK_BackSpace XK_BackSpace +#define GK_Tab XK_Tab +#ifndef XK_ISO_Left_Tab +# define GK_BackTab XK_Tab +#else +# define GK_BackTab XK_ISO_Left_Tab +#endif +#define GK_Linefeed XK_Linefeed +#define GK_Clear XK_Clear +#define GK_Return XK_Return +#define GK_Pause XK_Pause +#define GK_Scroll_Lock XK_Scroll_Lock +#define GK_Sys_Req XK_Sys_Req +#define GK_Escape XK_Escape +#define GK_Delete XK_Delete + +#define GK_Home XK_Home +#define GK_Left XK_Left +#define GK_Up XK_Up +#define GK_Right XK_Right +#define GK_Down XK_Down +#define GK_Prior XK_Prior +#define GK_Page_Up XK_Page_Up +#define GK_Next XK_Next +#define GK_Page_Down XK_Page_Down +#define GK_End XK_End +#define GK_Begin XK_Begin + +#define GK_Menu XK_Menu +#define GK_Help XK_Help + +#define GK_KP_Enter XK_KP_Enter +#define GK_KP_Home XK_KP_Home +#define GK_KP_Left XK_KP_Left +#define GK_KP_Up XK_KP_Up +#define GK_KP_Right XK_KP_Right +#define GK_KP_Down XK_KP_Down +#define GK_KP_Prior XK_KP_Prior +#define GK_KP_Page_Up XK_KP_Page_Up +#define GK_KP_Next XK_KP_Next +#define GK_KP_Page_Down XK_KP_Page_Down +#define GK_KP_End XK_KP_End +#define GK_KP_Begin XK_KP_Begin + +#define GK_F1 XK_F1 +#define GK_F2 XK_F2 +#define GK_F3 XK_F3 +#define GK_F4 XK_F4 +#define GK_F5 XK_F5 +#define GK_F6 XK_F6 +#define GK_F7 XK_F7 +#define GK_F8 XK_F8 +#define GK_F9 XK_F9 +#define GK_F10 XK_F10 +#define GK_F11 XK_F11 +#define GK_L1 XK_L1 +#define GK_F12 XK_F12 +#define GK_L2 XK_L2 +#define GK_F13 XK_F13 +#define GK_L3 XK_L3 +#define GK_F14 XK_F14 +#define GK_L4 XK_L4 +#define GK_F15 XK_F15 +#define GK_L5 XK_L5 +#define GK_F16 XK_F16 +#define GK_L6 XK_L6 +#define GK_F17 XK_F17 +#define GK_L7 XK_L7 +#define GK_F18 XK_F18 +#define GK_L8 XK_L8 +#define GK_F19 XK_F19 +#define GK_L9 XK_L9 +#define GK_F20 XK_F20 +#define GK_L10 XK_L10 +#define GK_F21 XK_F21 +#define GK_R1 XK_R1 +#define GK_F22 XK_F22 +#define GK_R2 XK_R2 +#define GK_F23 XK_F23 +#define GK_R3 XK_R3 +#define GK_F24 XK_F24 +#define GK_R4 XK_R4 +#define GK_F25 XK_F25 +#define GK_R5 XK_R5 +#define GK_F26 XK_F26 +#define GK_R6 XK_R6 +#define GK_F27 XK_F27 +#define GK_R7 XK_R7 +#define GK_F28 XK_F28 +#define GK_R8 XK_R8 +#define GK_F29 XK_F29 +#define GK_R9 XK_R9 +#define GK_F30 XK_F30 +#define GK_R10 XK_R10 +#define GK_F31 XK_F31 +#define GK_R11 XK_R11 +#define GK_F32 XK_F32 +#define GK_R12 XK_R12 +#define GK_F33 XK_F33 +#define GK_R13 XK_R13 +#define GK_F34 XK_F34 +#define GK_R14 XK_R14 +#define GK_F35 XK_F35 +#define GK_R15 XK_R15 + +#define GK_Shift_L XK_Shift_L +#define GK_Shift_R XK_Shift_R +#define GK_Control_L XK_Control_L +#define GK_Control_R XK_Control_R +#define GK_Caps_Lock XK_Caps_Lock +#define GK_Shift_Lock XK_Shift_Lock + +#define GK_Meta_L XK_Meta_L +#define GK_Meta_R XK_Meta_R +#define GK_Alt_L XK_Alt_L +#define GK_Alt_R XK_Alt_R +#define GK_Super_L XK_Super_L +#define GK_Super_R XK_Super_R +#define GK_Hyper_L XK_Hyper_L +#define GK_Hyper_R XK_Hyper_R + +#else /* No X */ + +#define GK_Special 0xfe00 /* keysyms above this value aren't unicode */ +#define GK_TypeAhead 0x0000 /* no single keysym, unicode value in event string */ + +#define GK_BackSpace 0xff01 +#define GK_Tab 0xff02 +#define GK_BackTab 0xff03 +#define GK_Linefeed 0xff04 +#define GK_Clear 0xff05 +#define GK_Return 0xff06 +#define GK_Pause 0xff07 +#define GK_Scroll_Lock 0xff08 +#define GK_Sys_Req 0xff09 +#define GK_Escape 0xff0a +#define GK_Delete 0xff0b + +#define GK_Home 0xff0c +#define GK_Left 0xff0d +#define GK_Up 0xff0e +#define GK_Right 0xff0f +#define GK_Down 0xff10 +#define GK_Prior 0xff11 +#define GK_Page_Up 0xff12 +#define GK_Next 0xff13 +#define GK_Page_Down 0xff14 +#define GK_End 0xff15 +#define GK_Begin 0xff16 + +#define GK_Menu 0xff17 +#define GK_Help 0xff18 + +#define GK_KP_Enter 0xFF8D +#define GK_KP_Home 0xff19 +#define GK_KP_Left 0xff1a +#define GK_KP_Up 0xff1b +#define GK_KP_Right 0xff1c +#define GK_KP_Down 0xff1d +#define GK_KP_Prior 0xff1e +#define GK_KP_Page_Up 0xff1f +#define GK_KP_Next 0xff20 +#define GK_KP_Page_Down 0xff21 +#define GK_KP_End 0xff22 +#define GK_KP_Begin 0xff23 + +#define GK_F1 0 +#define GK_F2 0 +#define GK_F3 0 +#define GK_F4 0 +#define GK_F5 0 +#define GK_F6 0 +#define GK_F7 0 +#define GK_F8 0 +#define GK_F9 0 +#define GK_F10 0 +#define GK_F11 0 +#define GK_L1 0 +#define GK_F12 0 +#define GK_L2 0 +#define GK_F13 0 +#define GK_L3 0 +#define GK_F14 0 +#define GK_L4 0 +#define GK_F15 0 +#define GK_L5 0 +#define GK_F16 0 +#define GK_L6 0 +#define GK_F17 0 +#define GK_L7 0 +#define GK_F18 0 +#define GK_L8 0 +#define GK_F19 0 +#define GK_L9 0 +#define GK_F20 0 +#define GK_L10 0 +#define GK_F21 0 +#define GK_R1 0 +#define GK_F22 0 +#define GK_R2 0 +#define GK_F23 0 +#define GK_R3 0 +#define GK_F24 0 +#define GK_R4 0 +#define GK_F25 0 +#define GK_R5 0 +#define GK_F26 0 +#define GK_R6 0 +#define GK_F27 0 +#define GK_R7 0 +#define GK_F28 0 +#define GK_R8 0 +#define GK_F29 0 +#define GK_R9 0 +#define GK_F30 0 +#define GK_R10 0 +#define GK_F31 0 +#define GK_R11 0 +#define GK_F32 0 +#define GK_R12 0 +#define GK_F33 0 +#define GK_R13 0 +#define GK_F34 0 +#define GK_R14 0 +#define GK_F35 0 +#define GK_R15 0 + +#define GK_Shift_L 0 +#define GK_Shift_R 0 +#define GK_Control_L 0 +#define GK_Control_R 0 +#define GK_Caps_Lock 0 +#define GK_Shift_Lock 0 + +#define GK_Meta_L 0 +#define GK_Meta_R 0 +#define GK_Alt_L 0 +#define GK_Alt_R 0 +#define GK_Super_L 0 +#define GK_Super_R 0 +#define GK_Hyper_L 0 +#define GK_Hyper_R 0 +#endif /* No X */ + +#endif diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/inc/gprogress.h b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/inc/gprogress.h new file mode 100644 index 00000000000..14dc596b550 --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/inc/gprogress.h @@ -0,0 +1,79 @@ +/* Copyright (C) 2000-2008 by George Williams */ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _GPROGRESS_H +#define _GPROGRESS_H +#include "basics.h" +#include "intl.h" + +extern void GProgressStartIndicator( + int delay, /* in tenths of seconds */ + const unichar_t *win_title, /* for the window decoration */ + const unichar_t *line1, /* First line of description */ + const unichar_t *line2, /* Second line */ + int tot, /* Number of sub-entities in the operation */ + int stages /* Number of stages, each processing tot sub-entities */ +); +extern void GProgressStartIndicatorR(int delay, int win_titler, int line1r, + int line2r, int tot, int stages); +extern void GProgressEndIndicator(void); /* Ends the topmost indicator */ +extern void GProgressChangeLine1(const unichar_t *line1); /* Changes the text in the topmost */ +extern void GProgressChangeLine2(const unichar_t *line2); /* Changes the text in the topmost */ +extern void GProgressChangeLine1R(int line1r); /* Changes the text in the topmost */ +extern void GProgressChangeLine2R(int line2r); /* Changes the text in the topmost */ +extern void GProgressChangeTotal(int tot); /* Changes the expected length in the topmost */ +extern void GProgressChangeStages(int stages); /* Changes the expected number of stages in the topmost */ +extern void GProgressEnableStop(int enabled); /* Allows you to disable and enable the stop button if it can't be used in a section of code */ + /* if any of the next routines returns false, then abort processing */ +extern int GProgressNextStage(void); /* Move to the next stage in the topmost indicator */ +extern int GProgressNext(void); /* Increment progress by one sub-entity */ +extern int GProgressIncrementBy(int cnt); /* Increment progress by cnt sub-entities */ +extern int GProgressReset(void); /* Set progress to 0 */ +extern void GProgressPauseTimer(void); /* Don't bring up the progress dlg because of */ +extern void GProgressResumeTimer(void); /* time spent between a pause and resume */ +extern void GProgressShow(void); /* Display the damn thing whether we should or not */ + +extern void GProgressStartIndicator8(int delay, const char *title, const char *line1, + const char *line2, int tot, int stages); +extern void GProgressChangeLine1_8(const char *line1); /* Changes the text in the topmost */ +extern void GProgressChangeLine2_8(const char *line2); /* Changes the text in the topmost */ + +#define gwwv_progress_start_indicator GProgressStartIndicator8 +#define gwwv_progress_next GProgressNext +#define gwwv_progress_next_stage GProgressNextStage +#define gwwv_progress_end_indicator GProgressEndIndicator +#define gwwv_progress_show GProgressShow +#define gwwv_progress_change_line1 GProgressChangeLine1_8 +#define gwwv_progress_change_line2 GProgressChangeLine2_8 +#define gwwv_progress_change_total GProgressChangeTotal +#define gwwv_progress_change_stages GProgressChangeStages +#define gwwv_progress_increment GProgressIncrementBy +#define gwwv_progress_reset GProgressReset +#define gwwv_progress_pause_timer GProgressPauseTimer +#define gwwv_progress_resume_timer GProgressResumeTimer +#define gwwv_progress_enable_stop GProgressEnableStop +#endif diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/inc/gresource.h b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/inc/gresource.h new file mode 100644 index 00000000000..33f91bceae1 --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/inc/gresource.h @@ -0,0 +1,58 @@ +/* Copyright (C) 2000-2008 by George Williams */ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef _GRESOURCE_H +#define _GRESOURCE_H + +#include "gdraw.h" + +enum res_type { rt_int, rt_double, rt_bool/* int */, rt_color, rt_string }; + +typedef struct gresstruct { + char *resname; + enum res_type type; + void *val; + void *(*cvt)(char *,void *); /* converts a string into a whatever */ + int found; +} GResStruct; + +extern char *GResourceProgramName, *GResourceFullProgram, *GResourceProgramDir; +extern int local_encoding; +#if HAVE_ICONV_H +# include +extern char *iconv_local_encoding_name; +#endif + +void GResourceSetProg(char *prog); +void GResourceAddResourceFile(char *filename,char *prog); +void GResourceAddResourceString(char *string,char *prog); +void GResourceFind( GResStruct *info, char *prefix); +char *GResourceFindString(char *name); +int GResourceFindBool(char *name, int def); +long GResourceFindInt(char *name, long def); +Color GResourceFindColor(char *name, Color def); +GImage *GResourceFindImage(char *name, GImage *def); +#endif diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/inc/gwidget.h b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/inc/gwidget.h new file mode 100644 index 00000000000..3b701ec5799 --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/inc/gwidget.h @@ -0,0 +1,222 @@ +/* Copyright (C) 2000-2008 by George Williams */ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef _GWIDGET_H +#define _GWIDGET_H + +#include +#include "gdraw.h" +#include "gprogress.h" +#include "ggadget.h" + +struct ggadget; +struct ggadgetcreatedata; +struct gtimer; + +typedef GWindow GWidget; + +typedef struct gwidgetcreatedata { + GRect r; + struct ggadgetcreatedata *gcd; + struct gwidgetcreatedata *wcd; + unichar_t *title; + unsigned int trap_input: 1; + unsigned int tab_navigation: 1; + unsigned int arrow_navigation: 1; + unsigned int do_default: 1; + unsigned int do_cancel: 1; + Color fore, back; + void (*e_h)(GWindow, GEvent *); /* User's event function for window, our eh will call it */ +#if 0 /* should expect these events: */ + void (*create)(Widget *); + void (*close)(Widget *); + void (*expose)(Widget *,XEvent *); + void (*mouse)(Widget *,XEvent *,int count); + void (*key)(Widget *,XEvent *); + void (*resize)(Widget *,XEvent *); + void (*map)(Widget *,XEvent *); + void (*time)(Widget *,struct timer *timer); + void (*paste)(Widget *,void *data, long length); +#endif +} GWidgetData; + +typedef struct gwidgetcreatordata { + GWidget *(*creator)(GWidget *parent, GWidgetData *, void *data); + GWidgetData wd; + void *data; +} GWidgetCreateData; + +extern GWindow GWidgetCreateTopWindow(GDisplay *gdisp, GRect *pos, int (*eh)(GWindow,GEvent *), void *user_data, GWindowAttrs *wattrs); +extern GWindow GWidgetCreateSubWindow(GWindow w, GRect *pos, int (*eh)(GWindow,GEvent *), void *user_data, GWindowAttrs *wattrs); +extern GWindow GWidgetCreatePalette(GWindow w, GRect *pos, int (*eh)(GWindow,GEvent *), void *user_data, GWindowAttrs *wattrs); + +GWindow GWindowGetCurrentFocusTopWindow(void); +GWindow GWidgetGetCurrentFocusWindow(void); +GWindow GWidgetGetPreviousFocusTopWindow(void); +struct ggadget *GWindowGetCurrentFocusGadget(void); +struct ggadget *GWindowGetFocusGadgetOfWindow(GWindow gw); +void GWindowClearFocusGadgetOfWindow(GWindow gw); +void GWidgetIndicateFocusGadget(struct ggadget *g); +void GWidgetNextFocus(GWindow); +void GWidgetPrevFocus(GWindow); +void GWidgetRequestVisiblePalette(GWindow palette,int visible); +void GWidgetHidePalettes(void); +void GPaletteDock(GWindow palette,int x, int y); +void GPaletteUndock(GWindow palette,int x, int y); +int GPaletteIsDocked(GWindow palette); +void GWidgetReparentWindow(GWindow child,GWindow newparent, int x,int y); + +struct ggadget *GWidgetGetControl(GWindow gw, int cid); +struct ggadget *_GWidgetGetGadgets(GWindow gw); +GWindow GWidgetGetParent(GWindow gw); +GWindow GWidgetGetTopWidget(GWindow gw); +extern GDrawEH GWidgetGetEH(GWindow w); +extern void GWidgetSetEH(GWindow w,GDrawEH e_h); +extern void GWidgetFlowGadgets(GWindow gw); +extern void GWidgetToDesiredSize(GWindow gw); + + /* Built in dialogs */ +unichar_t *GWidgetOpenFile(const unichar_t *title, const unichar_t *defaultfile, + const unichar_t *initial_filter, unichar_t **mimetypes,GFileChooserFilterType filter); +unichar_t *GWidgetSaveAsFile(const unichar_t *title, const unichar_t *defaultfile, + const unichar_t *initial_filter, unichar_t **mimetypes,GFileChooserFilterType filter ); +unichar_t *GWidgetSaveAsFileWithGadget(const unichar_t *title, const unichar_t *defaultfile, + const unichar_t *initial_filter, unichar_t **mimetypes, + GFileChooserFilterType filter, GGadgetCreateData *optional_gcd); +char *GWidgetOpenFile8(const char *title, const char *defaultfile, + const char *initial_filter, char **mimetypes,GFileChooserFilterType filter); +char *GWidgetSaveAsFileWithGadget8(const char *title, const char *defaultfile, + const char *initial_filter, char **mimetypes, + GFileChooserFilterType filter, GGadgetCreateData *optional_gcd); +char *GWidgetSaveAsFile8(const char *title, const char *defaultfile, + const char *initial_filter, char **mimetypes,GFileChooserFilterType filter ); +int GWidgetAsk(const unichar_t *title, const unichar_t **answers, const unichar_t *mn, + int def, int cancel,const unichar_t *question,...); +int GWidgetAskCentered(const unichar_t *title, + const unichar_t ** answers, const unichar_t *mn, int def, int cancel,const unichar_t *question,...); +unichar_t *GWidgetAskString(const unichar_t *title, + const unichar_t *def,const unichar_t *question,...); +void GWidgetPostNotice(const unichar_t *title,const unichar_t *statement,...); +void GWidgetError(const unichar_t *title,const unichar_t *statement,...); +void GWidgetErrorR(int title,int statement,...); +int GWidgetAskR(int title, int *answers, int def, int cancel,int question,...); +int GWidgetAskR_(int title, int *answers, int def, int cancel,const unichar_t *question,...); +int GWidgetAskCenteredR(int title, int *answers, int def, int cancel,int question,...); +int GWidgetAskCenteredR_(int title, int *answers, int def, int cancel,const unichar_t *question,...); +unichar_t *GWidgetAskStringR(int title, const unichar_t *def,int question,...); +void GWidgetPostNoticeR(int title,int statement,...); +int GWidgetAsk8(const char *title, const char **answers, + int def, int cancel,const char *question,...); +int GWidgetAskCentered8(const char *title, + const char ** answers, int def, int cancel,const char *question,...); +char *GWidgetAskString8(const char *title, + const char *def,const char *question,...); +char *GWidgetAskPassword8(const char *title, + const char *def,const char *question,...); +void GWidgetPostNotice8(const char *title,const char *statement,...); +void _GWidgetPostNotice8(const char *title,const char *statement,va_list ap,int timeout); +void GWidgetPostNoticeTimeout8(int timeout, const char *title,const char *statement,...); +int GWidgetPostNoticeActive8(const char *title); +void GWidgetError8(const char *title,const char *statement,...); + +int GWidgetChoicesR(int title, const unichar_t **choices,int cnt, int def,int question,...); +int GWidgetChoicesBR(int title, const unichar_t **choices, int cnt, int def, + int buts[2],int question,...); +int GWidgetChoicesBRM(int title, const unichar_t **choices,char *sel, + int cnt, int buts[2], int question,...); +int GWidgetChoices8(const char *title, const char **choices,int cnt, int def, + const char *question,...); +int GWidgetChoicesB8(char *title, const char **choices, int cnt, int def, + char *buts[2], const char *question,...); +int GWidgetChoicesBM8(char *title, const char **choices,char *sel, + int cnt, char *buts[2], const char *question,...); + +extern struct hslrgb GWidgetColor(const char *title,struct hslrgb *defcol,struct hslrgb fontcols[6]); + +#define gwwv_choose_multiple GWidgetChoicesBM8 +#define gwwv_choose_with_buttons GWidgetChoicesB8 +#define gwwv_choose GWidgetChoices8 +#define gwwv_ask_string GWidgetAskString8 +#define gwwv_ask_password GWidgetAskPassword8 +#define gwwv_ask GWidgetAsk8 +#define gwwv_ask_centered GWidgetAskCentered8 +#define gwwv_post_error GWidgetError8 +#define gwwv_post_notice GWidgetPostNotice8 +#define gwwv_post_notice_timeout GWidgetPostNoticeTimeout8 +#define gwwv_open_filename(tit,def,filter,filtfunc) GWidgetOpenFile8(tit,def,filter,NULL,filtfunc) +#define gwwv_save_filename(tit,def,filter) GWidgetSaveAsFile8(tit,def,filter,NULL,NULL) +#define gwwv_save_filename_with_gadget(tit,def,filter,gcd) GWidgetSaveAsFileWithGadget8(tit,def,filter,NULL,NULL,gcd) + +void GWidgetCreateInsChar(void); /* takes input even when a modal dlg is active */ + /* but is not modal itself */ +void GInsCharSetChar(unichar_t ch); /* Sets current selection in ins char dlg */ + +extern GIC *GWidgetCreateInputContext(GWindow w,enum gic_style def_style); +extern GIC *GWidgetGetInputContext(GWindow w); + + +#if 0 +Widget *CreateCenteredDialog(Widget *parent, WidgetData *wd,void *data); +Widget *CreateDialog(Widget *parent, WidgetData *wd,void *data); +Widget *CreateTopWindow(Widget *parent, WidgetData *wd,void *data); +Widget *CreateCanvas(Widget *parent, WidgetData *wd,void *data); +Widget *CreateWidgets(Widget *parent, WidgetCreateData *wcd); + +unichar_t *CreateFileDialog(unichar_t *title,unichar_t *dir,unichar_t *file,unichar_t *mimetypes, unichar_t *wildcard, unichar_t *open, unichar_t *cancel); +int CreateQuestionDialog(unichar_t *title, unichar_t *question,unichar_t *but1, unichar_t *but2, unichar_t *but3, unichar_t *but4, unichar_t *but5); +unichar_t *CreateStringDialog(unichar_t *title, unichar_t *question, unichar_t *def, unichar_t *ok, unichar_t *cancel); +TextInfo *CreateListDialog(unichar_t *title, unichar_t *question, TextInfo *list, unichar_t *ok, unichar_t *cancel); +void CreateNoteDlg(unichar_t *title,unichar_t *text,unichar_t *ok); /* does not take focus, vanishes if ignored */ +void CreateWarningDlg(unichar_t *title,unichar_t *text,unichar_t *ok); /* does not take focus, vanishes if ignored */ +void CreateErrorDlg(unichar_t *title,unichar_t *text,unichar_t *ok); /* does take focus */ +void CreateFatalDlg(unichar_t *title,unichar_t *text,unichar_t *ok); /* does not return, preallocated */ +void CreateCharDialog(); /* takes input even when a modal dlg is active */ + /* but is not modal itself */ +void CreatePrefsDialog(); + +void WidgetSetTitle(Widget *widg,unichar_t *title); +unichar_t_t WidgetGetTitle(Widget *widg); + +void WidgetChangeMenu(Widget *widg,MenuItem *bar); +void WidgetChangeInvisibleCommands(Widget *widg,MenuItem *invisible); +MenuItem *WidgetGetMenu(Widget *widg); +MenuItem *WidgetGetInvisibleCommands(Widget *widg); + +enum handler_mask { hm_close=1, hm_expose=2, hm_mouse=4, hm_key=8, hm_resize=16, hm_map=32, hm_time=64, hm_paste=128 }; +void WidgetSetHandlers(Widget *widg,enum handler_mask hm, WidgetData *wd); + +void WidgetMove(Widget *widg, int x, int y); +void WidgetResize(Widget *widg, int width, int height); +void WidgetReposition(Widget *widg, Rect *r); +Rect *WidgetGetPos(Widget *widg); + +void WidgetRaise(Widget *widg); +void WidgetLower(Widget *widg); + +void WidgetSetIconName(Widget *widg,unichar_t *name); +void WidgetSetIconPixmap(Widget *widg,Pixmap p); +#endif +#endif diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/inc/gwwiconv.h b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/inc/gwwiconv.h new file mode 100644 index 00000000000..fc3cd314a1d --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/inc/gwwiconv.h @@ -0,0 +1,56 @@ +/* Copyright (C) 2004-2008 by George Williams */ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef _GWWICONV_H +#define _GWWICONV_H + +# ifndef HAVE_ICONV_H +# define __need_size_t +# include /* For size_t */ + +typedef void *gww_iconv_t; + +extern gww_iconv_t gww_iconv_open(const char *toenc,const char *fromenc); +extern void gww_iconv_close( gww_iconv_t cd); +extern size_t gww_iconv( gww_iconv_t cd, + char **inbuf, size_t *inlen, + char **outbuf, size_t *outlen); + +#define iconv_t gww_iconv_t +#define iconv_open gww_iconv_open +#define iconv_close gww_iconv_close +#define iconv gww_iconv + +# define iconv_arg2_t char ** +# else /* HAVE_ICONV_H */ +# include +# ifdef iconv /* libiconv has a different calling convention */ +# define iconv_arg2_t const char ** +# else +# define iconv_arg2_t char ** +# endif /* iconv */ +# endif /* HAVE_ICONV_H */ +#endif /* _GWWICONV_H */ diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/inc/intl.h b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/inc/intl.h new file mode 100644 index 00000000000..f5b0005dc0c --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/inc/intl.h @@ -0,0 +1,107 @@ +/* Copyright (C) 2005-2008 by George Williams */ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef _INTL_H +#define _INTL_H + +#if !defined( HAVE_LIBINTL_H ) +# define _(str) (str) +# define P_(str1,str_non1,n) ((n)==1?str1:str_non1) +# define U_(str) (str) + +/* the next if statement is because Solaris includes its libintl.h + (that we dont need) from locale.h (that we do need) */ +#if ! defined(__sun__) && ! defined(__sun) +# ifdef bindtextdomain +# undef bindtextdomain +# endif +# ifdef bind_textdomain_codeset +# undef bind_textdomain_codeset +# endif +# ifdef textdomain +# undef textdomain +# endif + +# define bindtextdomain(domain,dir) +# define bind_textdomain_codeset(domain,enc) +# define textdomain(domain) + +# define dgettext(domain,str) (str) +#endif + +#elif defined( NODYNAMIC ) || defined ( _STATIC_LIBINTL ) + +# include +# define _(str) gettext(str) +# define P_(str1,str_non1,n) ngettext(str1,str_non1,n) +/* For messages including utf8 characters. old xgettexts won't handle them */ +/* so we must do something special. */ +# define U_(str) gettext(str) + +#else + +# include +# define _(str) gwwv_gettext(str) +# define P_(str1,str_non1,n) gwwv_ngettext(str1,str_non1,n) +# define U_(str) gwwv_gettext(str) + +# ifdef bindtextdomain +# undef bindtextdomain +# endif +# ifdef bind_textdomain_codeset +# undef bind_textdomain_codeset +# endif +# ifdef textdomain +# undef textdomain +# endif + +# define bindtextdomain(domain,dir) gwwv_bindtextdomain(domain,dir) +# define bind_textdomain_codeset(domain,enc) gwwv_bind_textdomain_codeset(domain,enc) +# define textdomain(domain) gwwv_textdomain(domain) + +# ifdef dgettext +# undef dgettext +# endif +# define dgettext(domain,str) gwwv_dgettext(domain,str) + +char *gwwv_bindtextdomain(const char *, const char *); +char *gwwv_bind_textdomain_codeset(const char *, const char *); +char *gwwv_textdomain(const char *); +char *gwwv_gettext(const char *); +char *gwwv_ngettext(const char *,const char *, unsigned long int); +char *gwwv_dgettext(const char *,const char *); +#endif +/* For messages including utf8 sequences that need gettext_noop treatment */ +#define NU_(str) (str) +#define N_(str) (str) +#define S_(str) sgettext(str) +/* For messages in the shortcuts domain */ +#define H_(str) (str) + +extern void GResourceUseGetText(void); +char *sgettext(const char *msgid); + +#endif /* _INTL_H */ diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/inc/ustring.h b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/inc/ustring.h new file mode 100644 index 00000000000..a5e21e87dc9 --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/inc/ustring.h @@ -0,0 +1,129 @@ +/* Copyright (C) 2000-2008 by George Williams */ +/* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + + * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#ifndef _UCHAR_H +# define _UCHAR_H +#include +#include +#include +#include "basics.h" +#include "charset.h" + +extern char *copy(const char *); +extern char *copyn(const char *,long); +extern unichar_t *u_copy(const unichar_t*); +extern unichar_t *u_copyn(const unichar_t*, long); +extern unichar_t *uc_copyn(const char *, int); +extern unichar_t *uc_copy(const char*); +extern unichar_t *u_concat(const unichar_t*,const unichar_t*); +extern char *cu_copyn(const unichar_t *pt,int len); +extern char *cu_copy(const unichar_t*); + +extern long uc_strcmp(const unichar_t *,const char *); +extern long u_strcmp(const unichar_t *, const unichar_t *); +extern long uc_strncmp(const unichar_t *,const char *,int); +extern long u_strncmp(const unichar_t *, const unichar_t *,int); +extern long uc_strmatch(const unichar_t *,const char *); +extern long uc_strnmatch(const unichar_t *,const char *,int); +extern long u_strnmatch(const unichar_t *str1, const unichar_t *str2, int len); +extern long u_strmatch(const unichar_t *, const unichar_t *); +extern int strmatch(const char *,const char *); +extern int strnmatch(const char *str1, const char *str2, int n); +extern void uc_strcpy(unichar_t *, const char *); +extern void cu_strcpy(char *, const unichar_t *); +extern void u_strcpy(unichar_t *, const unichar_t *); +extern void u_strncpy(unichar_t *, const unichar_t *,int); +extern void cu_strncpy(char *to, const unichar_t *from, int len); +extern void uc_strncpy(unichar_t *to, const char *from, int len); +extern void uc_strcat(unichar_t *, const char *); +extern void uc_strncat(unichar_t *, const char *,int len); +extern void cu_strcat(char *, const unichar_t *); +extern void cu_strncat(char *, const unichar_t *,int len); +extern void u_strcat(unichar_t *, const unichar_t *); +extern void u_strncat(unichar_t *, const unichar_t *, int len); +extern int u_strlen(const unichar_t *); +extern unichar_t *u_strchr(const unichar_t *,unichar_t); +extern unichar_t *u_strrchr(const unichar_t *,unichar_t); +extern unichar_t *uc_strstr(const unichar_t *,const char *); +extern unichar_t *u_strstr(const unichar_t *,const unichar_t *); +extern unichar_t *uc_strstrmatch(const unichar_t *,const char *); +extern unichar_t *u_strstrmatch(const unichar_t *,const unichar_t *); +extern char * strstrmatch(const char *,const char *); + +extern char *u_to_c(const unichar_t *); +extern unichar_t *c_to_u(const char *); + +extern unsigned long u_strtoul(const unichar_t *,unichar_t **,int); +extern long u_strtol(const unichar_t *,unichar_t **,int); +extern double u_strtod(const unichar_t *,unichar_t **); + +extern char *strstart(const char *initial,const char *full); +extern char *strstartmatch(const char *initial,const char *full); +extern unichar_t *u_strstartmatch(const unichar_t *initial, const unichar_t *full); +extern unichar_t *cu_strstartmatch(const char *initial, const unichar_t *full); + +#ifdef UNICHAR_16 +extern uint32 *utf82u32_strncpy(int32 *ubuf,const char *utf8buf,int len); +extern uint32 *utf82u32_copy(const char *utf8buf); +extern char *u322utf8_copy(const uint32 *ubuf); +extern char *u322utf8_strncpy(char *utf8buf, const uint32 *ubuf,int len); +#else +/* Make sure we have different entry points in the library */ +#define utf82u_strncpy utf82U_strncpy +#endif +extern int32 utf8_ildb(const char **utf8_text); +extern char *utf8_idpb(char *utf8_text,uint32 ch); +extern char *utf8_db(char *utf8_text); +extern char *utf8_ib(char *utf8_text); +extern int utf8_valid(const char *str); +extern char *latin1_2_utf8_strcpy(char *utf8buf,const char *lbuf); +extern char *latin1_2_utf8_copy(const char *lbuf); +extern char *utf8_2_latin1_copy(const char *utf8buf); +extern int utf8_strlen(const char *utf8_str); /* how many characters in the string */ +extern int utf82u_strlen(const char *utf8_str); /* how many long would this be in shorts (UCS2) */ +extern char *def2utf8_copy(const char *from); +extern char *utf82def_copy(const char *ufrom); +extern char *utf8_strchr(const char *utf8_str, int search_char); + +extern unichar_t *utf82u_strncpy(unichar_t *ubuf,const char *utf8buf,int len); +extern unichar_t *utf82u_strcpy(unichar_t *ubuf,const char *utf8buf); +extern void utf82u_strcat(unichar_t *ubuf,const char *utf8buf); +extern unichar_t *utf82u_copyn(const char *utf8buf,int len); +extern unichar_t *utf82u_copy(const char *utf8buf); +extern char *u2utf8_strcpy(char *utf8buf,const unichar_t *ubuf); +extern char *u2utf8_copy(const unichar_t *ubuf); +extern char *u2utf8_copyn(const unichar_t *ubuf,int len); +extern unichar_t *encoding2u_strncpy(unichar_t *uto, const char *from, int n, enum encoding cs); +extern char *u2encoding_strncpy(char *to, const unichar_t *ufrom, int n, enum encoding cs); +extern unichar_t *def2u_strncpy(unichar_t *uto, const char *from, int n); +extern char *u2def_strncpy(char *to, const unichar_t *ufrom, int n); +extern unichar_t *def2u_copy(const char *from); +extern char *u2def_copy(const unichar_t *ufrom); + +extern int u_sprintf(unichar_t *str, const unichar_t *format, ... ); +extern int u_snprintf(unichar_t *str, int len, const unichar_t *format, ... ); +extern int u_vsnprintf(unichar_t *str, int len, const unichar_t *format, va_list ap ); +#endif diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/inc/utype.h b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/inc/utype.h new file mode 100644 index 00000000000..7b55c1cf97a --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/inc/utype.h @@ -0,0 +1,100 @@ +#ifndef _UTYPE_H +#define _UTYPE_H + +#define ____L 0x1 +#define ____U 0x2 +#define ____TITLE 0x4 +#define ____D 0x8 +#define ____S 0x10 +#define ____P 0x20 +#define ____X 0x40 +#define ____ZW 0x80 +#define ____L2R 0x100 +#define ____R2L 0x200 +#define ____ENUM 0x400 +#define ____ANUM 0x800 +#define ____ENS 0x1000 +#define ____CS 0x2000 +#define ____ENT 0x4000 +#define ____COMBINE 0x8000 +#define ____BB 0x10000 +#define ____BA 0x20000 +#define ____NS 0x40000 +#define ____NE 0x80000 +#define ____UB 0x100000 +#define ____NB 0x8000000 +#define ____AL 0x200000 +#define ____ID 0x400000 +#define ____INITIAL 0x800000 +#define ____MEDIAL 0x1000000 +#define ____FINAL 0x2000000 +#define ____ISOLATED 0x4000000 +#define ____DECOMPNORM 0x10000000 + +#define ____COMBININGCLASS 0xff +#define ____ABOVE 0x100 +#define ____BELOW 0x200 +#define ____OVERSTRIKE 0x400 +#define ____LEFT 0x800 +#define ____RIGHT 0x1000 +#define ____JOINS2 0x2000 +#define ____CENTERLEFT 0x4000 +#define ____CENTERRIGHT 0x8000 +#define ____CENTEREDOUTSIDE 0x10000 +#define ____OUTSIDE 0x20000 +#define ____LEFTEDGE 0x80000 +#define ____RIGHTEDGE 0x40000 +#define ____TOUCHING 0x100000 +#define ____COMBININGPOSMASK 0x1fff00 + +extern const unsigned short ____tolower[]; +#if 0 +extern const unsigned short ____toupper[]; +#endif +extern const unsigned int ____utype[]; + +#define tolower(ch) (____tolower[(ch)+1]) +#if 0 +#define toupper(ch) (____toupper[(ch)+1]) +#endif +#define islower(ch) (____utype[(ch)+1]&____L) +#define isupper(ch) (____utype[(ch)+1]&____U) +#define istitle(ch) (____utype[(ch)+1]&____TITLE) +#define isalpha(ch) (____utype[(ch)+1]&(____L|____U|____TITLE|____AL)) +#define isdigit(ch) (____utype[(ch)+1]&____D) +#define isalnum(ch) (____utype[(ch)+1]&(____L|____U|____TITLE|____AL|____D)) +#define isideographic(ch) (____utype[(ch)+1]&____ID) +#define isideoalpha(ch) (____utype[(ch)+1]&(____ID|____L|____U|____TITLE|____AL)) +#define isspace(ch) (____utype[(ch)+1]&____S) +#define ispunct(ch) (____utype[(ch)+1]&_____P) +#define ishexdigit(ch) (____utype[(ch)+1]&____X) +#define iszerowidth(ch) (____utype[(ch)+1]&____ZW) +#define islefttoright(ch) (____utype[(ch)+1]&____L2R) +#define isrighttoleft(ch) (____utype[(ch)+1]&____R2L) +#define iseuronumeric(ch) (____utype[(ch)+1]&____ENUM) +#define isarabnumeric(ch) (____utype[(ch)+1]&____ANUM) +#define iseuronumsep(ch) (____utype[(ch)+1]&____ENS) +#define iscommonsep(ch) (____utype[(ch)+1]&____CS) +#define iseuronumterm(ch) (____utype[(ch)+1]&____ENT) +#define iscombining(ch) (____utype[(ch)+1]&____COMBINE) +#define isbreakbetweenok(ch1,ch2) (((____utype[(ch1)+1]&____BA) && !(____utype[(ch2)+1]&____NS)) || ((____utype[(ch2)+1]&____BB) && !(____utype[(ch1)+1]&____NE)) || (!(____utype[(ch2)+1]&____D) && ch1=='/')) +#define isnobreak(ch) (____utype[(ch)+1]&____NB) +#define isarabinitial(ch) (____utype[(ch)+1]&____INITIAL) +#define isarabmedial(ch) (____utype[(ch)+1]&____MEDIAL) +#define isarabfinal(ch) (____utype[(ch)+1]&____FINAL) +#define isarabisolated(ch) (____utype[(ch)+1]&____ISOLATED) + +#define isdecompositionnormative(ch) (____utype[(ch)+1]&____DECOMPNORM) + +extern struct arabicforms { + unsigned short initial, medial, final, isolated; + unsigned int isletter: 1; + unsigned int joindual: 1; + unsigned int required_lig_with_alef: 1; +} ArabicForms[256]; /* for chars 0x600-0x6ff, subtract 0x600 to use array */ + +#define _SOFT_HYPHEN 0xad + +#define _DOUBLE_S 0xdf + +#endif diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/plugins/Makefile.in b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/plugins/Makefile.in new file mode 100644 index 00000000000..e69de29bb2d diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/src/ffdummies.c b/Build/source/texk/web2c/luatexdir/luafontloader/src/ffdummies.c new file mode 100644 index 00000000000..88757af288c --- /dev/null +++ b/Build/source/texk/web2c/luatexdir/luafontloader/src/ffdummies.c @@ -0,0 +1,256 @@ + +/* some dummy functions and variables so that a few ff source files can be ignored */ + +#include "uiinterface.h" +#include "fontforgevw.h" +#include "splinefont.h" +#include +#include +#include +#include + + +char **gww_errors = NULL; +int gww_error_count = 0; + +void gwwv_errors_free (void) { + int i; + if (gww_error_count>0) { + for (i=0;i +#include +#include +#include + +#include "pfaedit.h" +#include "ustring.h" + +extern char **gww_errors; +extern int gww_error_count; +extern void gwwv_errors_free (void); +extern struct ui_interface luaui_interface; + +extern int readbinfile(FILE *f, unsigned char **b, int *s); + +#define FONT_METATABLE "fontloader.splinefont" + +#define LUA_OTF_VERSION "0.3" + +static char *possub_type_enum[] = { + "null", "position", "pair", "substitution", + "alternate", "multiple", "ligature", "lcaret", + "kerning", "vkerning", "anchors", "contextpos", + "contextsub", "chainpos", "chainsub","reversesub", + "max", "kernback", "vkernback", NULL }; + +#define LAST_POSSUB_TYPE_ENUM 18 + +#define eight_nulls() NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + +static char *asm_type_enum[] = { + "indic", "context", "lig", NULL, "simple", "insert", NULL, NULL, + eight_nulls(), + NULL, "kern" }; + +static char *otf_lookup_type_enum[] = { + "gsub_start", "gsub_single", "gsub_multiple", "gsub_alternate", + "gsub_ligature", "gsub_context", "gsub_contextchain", NULL, + "gsub_reversecontextchain", NULL, NULL, NULL, NULL, NULL, NULL, NULL, /*0x00F */ + eight_nulls(),eight_nulls(), + eight_nulls(),eight_nulls(), + eight_nulls(),eight_nulls(), + eight_nulls(),eight_nulls(), + eight_nulls(),eight_nulls(), + eight_nulls(),eight_nulls(), + eight_nulls(),eight_nulls(), + eight_nulls(),eight_nulls(), + eight_nulls(),eight_nulls(), + eight_nulls(),eight_nulls(), + eight_nulls(),eight_nulls(), + eight_nulls(),eight_nulls(), + eight_nulls(),eight_nulls(), + eight_nulls(),eight_nulls(), + eight_nulls(), NULL, NULL, NULL, NULL, NULL, "morx_indic", "morx_context", "morx_insert", /* 0x0FF*/ + "gpos_start", "gpos_single", "gpos_pair", "gpos_cursive", + "gpos_mark2base", "gpos_mark2ligature", "gpos_mark2mark", "gpos_context", + "gpos_contextchain", NULL, NULL, NULL, NULL, NULL, NULL, NULL, /* 0x10F */ + eight_nulls(),eight_nulls(), + eight_nulls(),eight_nulls(), + eight_nulls(),eight_nulls(), + eight_nulls(),eight_nulls(), + eight_nulls(),eight_nulls(), + eight_nulls(),eight_nulls(), + eight_nulls(),eight_nulls(), + eight_nulls(),eight_nulls(), + eight_nulls(),eight_nulls(), + eight_nulls(),eight_nulls(), + eight_nulls(),eight_nulls(), + eight_nulls(),eight_nulls(), + eight_nulls(),eight_nulls(), + eight_nulls(),eight_nulls(), + eight_nulls(), NULL, NULL, NULL, NULL, NULL, NULL, NULL, "kern_statemachine", /* 0x1FF*/ +}; + + +static char *anchor_type_enum[] = { + "mark", "basechar", "baselig", "basemark", "centry", "cexit", "max", NULL }; + +#define MAX_ANCHOR_TYPE 7 + +static char *anchorclass_type_enum[] = { + "mark", "mkmk", "curs", "mklg", NULL }; + +static char *glyph_class_enum[] = { + "automatic", "none" ,"base", "ligature","mark", "component", NULL }; + +static char *ttfnames_enum[ttf_namemax] = { + "copyright", "family", "subfamily", "uniqueid", + "fullname", "version", "postscriptname", "trademark", + "manufacturer", "designer", "descriptor", "venderurl", + "designerurl", "license", "licenseurl", "idontknow", + "preffamilyname", "prefmodifiers", "compatfull", "sampletext", + "cidfindfontname", "wwsfamily", "wwssubfamily" }; + +static char *fpossub_format_enum [] = { + "glyphs", "class","coverage","reversecoverage" , NULL}; + +static char *tex_type_enum[4] = { "unset", "text", "math", "mathext"}; + +/* has an offset of 1, ui_none = 0. */ +static char *uni_interp_enum[9] = { + "unset", "none", "adobe", "greek", "japanese", + "trad_chinese", "simp_chinese", "korean", "ams" }; + +#define check_isfont(L,b) (SplineFont **)luaL_checkudata(L,b,FONT_METATABLE) + +void handle_generic_pst (lua_State *L, struct generic_pst *pst); /* forward */ +void handle_generic_fpst (lua_State *L, struct generic_fpst *fpst); /* forward */ +void handle_generic_asm (lua_State *L, struct generic_asm *sm) ; +void handle_kernclass (lua_State *L, struct kernclass *kerns); +void handle_anchorclass (lua_State *L, struct anchorclass *anchor); +void handle_splinefont(lua_State *L, struct splinefont *sf) ; + + +void +lua_ff_pushfont(lua_State *L, SplineFont *sf) { + SplineFont **a; + if (sf==NULL) { + lua_pushnil(L); + } else { + a = lua_newuserdata(L,sizeof(SplineFont *)); + *a = sf; + luaL_getmetatable(L,FONT_METATABLE); + lua_setmetatable(L,-2); + } + return; +} + + +static int +ff_open (lua_State *L) { + SplineFont *sf; + const char *fontname; + FILE *l; + char s[511]; + size_t len; + int args,i ; + int openflags = 1; + fontname = luaL_checkstring(L,1); + /* test fontname for existance */ + if ((l = fopen(fontname,"r"))) { + fclose(l); + } else { + lua_pushfstring(L,"font loading failed for %s (read error)\n", fontname); + lua_error(L); + } + args = lua_gettop(L); + if (args>=2 && lua_isstring(L,2)) { + if (*(fontname+strlen(fontname))!=')') { + /* possibly fails for embedded parens in the font name */ + snprintf(s,511,"%s(%s)", fontname, lua_tolstring(L,2,&len)); + if (len==0) { + snprintf(s,511,"%s", fontname); + } + } + } else { + snprintf(s,511,"%s", fontname); + } + if (strlen(s)>0) { + gww_error_count=0; + sf = ReadSplineFont((char *)s,openflags); + if (sf==NULL) { + lua_pushfstring(L,"font loading failed for %s\n", s); + if (gww_error_count>0) { + for (i=0;i0) { + lua_newtable(L); + for (i=0;imap); + + return 0; +} + + + +static void +dump_intfield (lua_State *L, char *name, long int field) { + lua_checkstack(L,2); + lua_pushstring(L,name); + lua_pushnumber(L,field); + lua_rawset(L,-3); +} + +static void +dump_realfield (lua_State *L, char *name, real field) { + lua_checkstack(L,2); + lua_pushstring(L,name); + lua_pushnumber(L,field); + lua_rawset(L,-3); +} + + +#define dump_cond_intfield(a,b,c) if ((c)!=0) { dump_intfield ((a),(b),(c)); } + + +static void +dump_stringfield (lua_State *L, char *name, char *field) { + lua_checkstack(L,2); + lua_pushstring(L,name); + lua_pushstring(L,field); + lua_rawset(L,-3); +} + +static void +dump_char_ref (lua_State *L, struct splinechar *spchar) { + lua_checkstack(L,2); + lua_pushstring(L,"char"); + lua_pushstring(L,spchar->name); + lua_rawset(L,-3); +} + + +static void +dump_lstringfield (lua_State *L, char *name, char *field, int len) { + lua_checkstack(L,2); + lua_pushstring(L,name); + lua_pushlstring(L,field,len); + lua_rawset(L,-3); +} + +static void +dump_enumfield (lua_State *L, char *name, int fid, char **fields) { + lua_checkstack(L,2); + lua_pushstring(L,name); + lua_pushstring(L,fields[fid]); + lua_rawset(L,-3); +} + +static void +dump_floatfield (lua_State *L, char *name, double field) { + lua_checkstack(L,2); + lua_pushstring(L,name); + lua_pushnumber(L,field); + lua_rawset(L,-3); +} + +static char tag_string [5] = {0}; + +static char *make_tag_string (unsigned int field) { + tag_string[0] = (field&0xFF000000) >> 24; + tag_string[1] = (field&0x00FF0000) >> 16; + tag_string[2] = (field&0x0000FF00) >> 8; + tag_string[3] = (field&0x000000FF); + return (char *)tag_string; +} + +static char featbuf[32] = {0}; + +static char *make_mactag_string (unsigned int field) { + sprintf( featbuf, "<%d,%d>", field>>16, field&0xffff ); + return (char *)featbuf; +} + + +static void +dump_tag (lua_State *L, char *name, unsigned int field) { + lua_checkstack(L,2); + lua_pushstring(L,name); + lua_pushlstring(L,make_tag_string(field),4); + lua_rawset(L,-3); +} + +static void +dump_mactag (lua_State *L, char *name, unsigned int field) { + lua_checkstack(L,2); + lua_pushstring(L,name); + lua_pushstring(L,make_mactag_string(field)); + lua_rawset(L,-3); +} + +void +dump_subtable_name (lua_State *L, char *name, struct lookup_subtable *s) { + /* this is likely a backref */ + if (s==NULL) + return; + lua_checkstack(L,2); + if (s->next == NULL) { + dump_stringfield(L,name,s->subtable_name); + } else { + /* can this really happen ? */ + int i = 0; + lua_newtable(L); + while (s!=NULL) { + lua_pushstring(L, s->subtable_name); + lua_rawseti(L, -2, ++i); + s = s->next; + } + lua_setfield(L, -2, name); + } +} + + + +#define NESTED_TABLE(a,b,c) { \ + int k = 1; \ + next = b; \ + while (next != NULL) { \ + lua_checkstack(L,2); \ + lua_pushnumber(L,k); k++; \ + lua_createtable(L,0,c); \ + a(L, next); \ + lua_rawset(L,-3); \ + next = next->next; \ + } } + +void +do_handle_scriptlanglist (lua_State *L, struct scriptlanglist *sl) { + int k; + dump_tag(L,"script", sl->script); + + lua_checkstack(L,3); + lua_newtable(L); + for (k=0;klangs[k] != 0) { + lua_pushnumber(L,(k+1)); + lua_pushstring(L,make_tag_string(sl->langs[k])); + lua_rawset(L,-3); + } + } + + if (sl->lang_cnt>=MAX_LANG) { + for (k=MAX_LANG;klang_cnt;k++) { + lua_pushnumber(L,(k+1)); + lua_pushstring(L,make_tag_string(sl->morelangs[k-MAX_LANG])); + lua_rawset(L,-3); + } + } + lua_setfield(L,-2,"langs"); +} + +void +handle_scriptlanglist (lua_State *L, struct scriptlanglist *sll) { + struct scriptlanglist *next; + NESTED_TABLE(do_handle_scriptlanglist,sll,4); +} + +void +do_handle_featurescriptlanglist (lua_State *L, struct featurescriptlanglist *features) { + if (features->ismac) { + dump_mactag (L,"tag",features->featuretag); + } else { + dump_tag (L,"tag",features->featuretag); + } + lua_newtable(L); + handle_scriptlanglist(L, features->scripts); + lua_setfield(L,-2,"scripts"); + dump_cond_intfield (L,"ismac",features->ismac); +} + +void +handle_featurescriptlanglist (lua_State *L, struct featurescriptlanglist *features) { + struct featurescriptlanglist *next; + NESTED_TABLE(do_handle_featurescriptlanglist,features,3); +} + +void +do_handle_lookup_subtable (lua_State *L, struct lookup_subtable *subtable) { + + dump_stringfield(L,"name", subtable->subtable_name); + dump_stringfield(L,"suffix", subtable->suffix); + + /* struct otlookup *lookup; */ /* this is the parent */ + + /* dump_intfield (L,"unused", subtable->unused); */ + /* The next one is true if there is no fpst, false otherwise */ + /* + dump_intfield (L,"per_glyph_pst_or_kern",subtable->per_glyph_pst_or_kern); + */ + dump_cond_intfield (L,"anchor_classes", subtable->anchor_classes); + dump_cond_intfield (L,"vertical_kerning", subtable->vertical_kerning); + + if (subtable->kc != NULL) { + lua_newtable(L); + handle_kernclass(L, subtable->kc); + lua_setfield(L,-2, "kernclass"); + } + +#if 0 + if (subtable->fpst != NULL) { + /* lua_newtable(L); */ + handle_generic_fpst(L, subtable->fpst); + /* lua_setfield(L,-2, "fpst"); */ + } +#endif + + if (subtable->sm != NULL) { + lua_newtable(L); + handle_generic_asm(L, subtable->sm); + lua_setfield(L,-2, "sm"); + } + /* int subtable_offset; */ /* used by OTF file generation */ + /* int32 *extra_subtables; */ /* used by OTF file generation */ +} + +void +handle_lookup_subtable (lua_State *L, struct lookup_subtable *subtable) { + struct lookup_subtable *next; + NESTED_TABLE(do_handle_lookup_subtable,subtable,2); +} + +void +do_handle_lookup (lua_State *L, struct otlookup *lookup ) { + + dump_enumfield (L,"type", lookup->lookup_type, otf_lookup_type_enum); + + lua_newtable(L); + if (lookup->lookup_flags & pst_r2l) { + lua_pushstring(L,"r2l"); lua_pushboolean(L,1); lua_rawset(L,-3); + } + if (lookup->lookup_flags & pst_ignorebaseglyphs) { + lua_pushstring(L,"ignorebaseglyphs"); lua_pushboolean(L,1); lua_rawset(L,-3); + } + if (lookup->lookup_flags & pst_ignoreligatures) { + lua_pushstring(L,"ignoreligatures"); lua_pushboolean(L,1); lua_rawset(L,-3); + } + if (lookup->lookup_flags & pst_ignorecombiningmarks) { + lua_pushstring(L,"ignorecombiningmarks"); lua_pushboolean(L,1); lua_rawset(L,-3); + } + lua_setfield(L,-2,"flags"); + + + dump_stringfield (L,"name", lookup->lookup_name); + + if (lookup->features != NULL) { + lua_newtable(L); + handle_featurescriptlanglist(L,lookup->features); + lua_setfield(L,-2,"features"); + } + + if (lookup->subtables != NULL) { + lua_newtable(L); + handle_lookup_subtable(L,lookup->subtables); + lua_setfield(L,-2,"subtables"); + } + + /* dump_intfield (L,"unused", lookup->unused); */ + /* dump_intfield (L,"empty", lookup->empty); */ + /* dump_intfield (L,"store_in_afm", lookup->store_in_afm); */ + /* dump_intfield (L,"needs_extension", lookup->needs_extension); */ + /* dump_intfield (L,"temporary_kern", lookup->temporary_kern); */ + /* dump_intfield (L,"def_lang_checked", lookup->def_lang_checked); */ + /* dump_intfield (L,"def_lang_found", lookup->def_lang_found); */ + /* dump_intfield (L,"ticked", lookup->ticked); */ + /* dump_intfield (L,"subcnt", lookup->subcnt); */ + /* dump_intfield (L,"lookup_index", lookup->lookup_index); */ /* identical to array index */ + /* dump_intfield (L,"lookup_offset", lookup->lookup_offset); */ + /* dump_intfield (L,"lookup_length", lookup->lookup_length); */ + /* dump_stringfield(L,"tempname", lookup->tempname); */ + +} + +void +handle_lookup (lua_State *L, struct otlookup *lookup ) { + struct otlookup *next; + NESTED_TABLE(do_handle_lookup,lookup,18); /* 18 is a guess */ +} + +void +do_handle_kernpair (lua_State *L, struct kernpair *kp) { + + if (kp->sc != NULL) + dump_char_ref(L, kp->sc); + dump_intfield(L,"off", kp->off); + /* uint16 kcid; */ /* temporary value */ + dump_subtable_name(L, "lookup", kp->subtable); +} + +void +handle_kernpair (lua_State *L, struct kernpair *kp) { + struct kernpair *next; + NESTED_TABLE(do_handle_kernpair,kp,4); +} + +void +handle_splinecharlist (lua_State *L, struct splinecharlist *scl) { + + struct splinecharlist *next = scl; + int k = 1; + lua_checkstack(L,10); + while( next != NULL) { + if (next->sc != NULL) { + lua_pushnumber(L,k); k++; + lua_pushstring(L,next->sc->name); + lua_rawset(L,-3); + } + next = next->next; + } +} + + + +/* vs is the "variation selector" a unicode codepoint which modifieds */ +/* the code point before it. If vs is -1 then unienc is just an */ +/* alternate encoding (greek Alpha and latin A), but if vs is one */ +/* of unicode's variation selectors then this glyph is somehow a */ +/* variant shape. The specifics depend on the selector and script */ +/* fid is currently unused, but may, someday, be used to do ttcs */ +/* NOTE: GlyphInfo displays vs==-1 as vs==0, and fixes things up */ +void +handle_altuni (lua_State *L, struct altuni *au) { + struct altuni *next = au; + int k = 1; + lua_checkstack(L,3); + while( next != NULL) { + lua_newtable(L); + dump_intfield(L, "unicode", next->unienc); + if (next->vs != -1) + dump_intfield(L, "variant", next->vs); + /* dump_intfield(L, "fid", next->fid); */ + lua_rawseti(L, -2, k++); + next = next->next; + } +} + + + +#define interesting_vr(a) (((a)->xoff!=0) || ((a)->yoff!=0) || ((a)->h_adv_off!=0) || ((a)->v_adv_off!=0)) + +void handle_vr (lua_State *L, struct vr *pos) { + + dump_cond_intfield(L,"x", pos->xoff); + dump_cond_intfield(L,"y", pos->yoff); + dump_cond_intfield(L,"h", pos->h_adv_off); + dump_cond_intfield(L,"v", pos->v_adv_off); + +} + +void +do_handle_generic_pst (lua_State *L, struct generic_pst *pst) { + int k; + if (pst->type>LAST_POSSUB_TYPE_ENUM) { + dump_tag(L,"type", pst->type); + } else { + dump_enumfield(L,"type", pst->type, possub_type_enum); + } + /* unsigned int ticked: 1;*/ + /* unsigned int temporary: 1;*/ /* Used in afm ligature closure */ + /* struct lookup_subtable *subtable; */ /* handled by caller */ + + lua_checkstack(L,4); + lua_pushstring(L,"specification"); + lua_createtable(L,0,4); + if (pst->type == pst_position) { + handle_vr (L, &pst->u.pos); + } else if (pst->type == pst_pair) { + dump_stringfield(L,"paired",pst->u.pair.paired); + if (pst->u.pair.vr != NULL) { + lua_pushstring(L,"offsets"); + lua_createtable(L,2,0); + if (interesting_vr(pst->u.pair.vr)) { + lua_createtable(L,0,4); + handle_vr (L, pst->u.pair.vr); + lua_rawseti(L,-2,1); + } + if (interesting_vr(pst->u.pair.vr+1)) { + lua_createtable(L,0,4); + handle_vr (L, pst->u.pair.vr+1); + lua_rawseti(L,-2,2); + } + lua_rawset(L,-3); + } + } else if (pst->type == pst_substitution) { + dump_stringfield(L,"variant",pst->u.subs.variant); + } else if (pst->type == pst_alternate) { + dump_stringfield(L,"components",pst->u.mult.components); + } else if (pst->type == pst_multiple) { + dump_stringfield(L,"components",pst->u.alt.components); + } else if (pst->type == pst_ligature) { + dump_stringfield(L,"components",pst->u.lig.components); + if (pst->u.lig.lig != NULL) { + dump_char_ref(L,pst->u.lig.lig); + } + } else if (pst->type == pst_lcaret) { + for (k=0;ku.lcaret.cnt;k++) { + lua_pushnumber(L,(k+1)); + lua_pushnumber(L,pst->u.lcaret.carets[k]); + lua_rawset(L,-3); + } + } + lua_rawset(L,-3); +} + + +void +handle_generic_pst (lua_State *L, struct generic_pst *pst) { + struct generic_pst *next; + int k; + int l = 1; + next = pst; + /* most likely everything arrives in proper order. But to prevent + * surprises, better do this is the proper way + */ + while (next != NULL) { + if (next->subtable !=NULL && + next->subtable->subtable_name !=NULL) { + lua_checkstack(L,3); /* just in case */ + lua_getfield(L,-1,next->subtable->subtable_name); + if (!lua_istable(L,-1)) { + lua_pop(L,1); + lua_newtable(L); + lua_setfield(L,-2,next->subtable->subtable_name); + lua_getfield(L,-1,next->subtable->subtable_name); + } + k = lua_objlen(L,-1) + 1; + lua_pushnumber(L,k); + lua_createtable(L,0,4); + do_handle_generic_pst(L, next); + lua_rawset(L,-3); + next = next->next; + lua_pop(L,1); /* pop the subtable */ + } else { + /* Found a pst without subtable, or without subtable name */ + lua_pushnumber(L,l); l++; + lua_createtable(L,0,4); + do_handle_generic_pst(L, next); + lua_rawset(L,-3); + next = next->next; + } + } +} + +void +do_handle_liglist (lua_State *L, struct liglist *ligofme) { + lua_checkstack(L,2); + if(ligofme->lig != NULL) { + lua_createtable(L,0,6); + handle_generic_pst (L,ligofme->lig); + lua_setfield(L,-2,"lig"); + } + dump_char_ref(L,ligofme->first); + if (ligofme->components != NULL) { + lua_newtable(L); + handle_splinecharlist (L,ligofme->components); + lua_setfield(L,-2,"components"); + } + dump_intfield(L,"ccnt",ligofme->ccnt); +} + +void +handle_liglist (lua_State *L, struct liglist *ligofme) { + struct liglist *next; + NESTED_TABLE(do_handle_liglist,ligofme,3); +} + +void +do_handle_anchorpoint (lua_State *L, struct anchorpoint *anchor) { + + if (anchor->anchor==NULL) { + return; + } + if (anchor->type>=0 && anchor->type <= MAX_ANCHOR_TYPE ) { + lua_pushstring(L,anchor_type_enum[anchor->type]); + } else { + lua_pushstring(L,"Anchorpoint has an unknown type!"); + lua_error(L); + } + /* unsigned int selected: 1; */ + /* unsigned int ticked: 1; */ + + lua_rawget(L,-2); + if (!lua_istable(L,-1)) { + /* create the table first */ + lua_pop(L,1); + lua_pushstring(L,anchor_type_enum[anchor->type]); + lua_pushvalue(L,-1); + lua_newtable(L); + lua_rawset(L,-4); + lua_rawget(L,-2); + } + /* now the 'type' table is top of stack */ + if (anchor->type==at_baselig) { + lua_pushstring(L,anchor->anchor->name); + lua_rawget(L,-2); + if (!lua_istable(L,-1)) { + /* create the table first */ + lua_pop(L,1); + lua_pushstring(L,anchor->anchor->name); + lua_pushvalue(L,-1); + lua_newtable(L); + lua_rawset(L,-4); + lua_rawget(L,-2); + } + lua_newtable(L); + dump_intfield(L,"x", anchor->me.x); + dump_intfield(L,"y", anchor->me.y); + if (anchor->has_ttf_pt) + dump_intfield(L,"ttf_pt_index", anchor->ttf_pt_index); + dump_intfield(L,"lig_index", anchor->lig_index); + lua_rawseti(L,-2,(anchor->lig_index+1)); + lua_pop(L,1); + } else { + lua_pushstring(L,anchor->anchor->name); + lua_newtable(L); + dump_intfield(L,"x", anchor->me.x); + dump_intfield(L,"y", anchor->me.y); + if (anchor->has_ttf_pt) + dump_intfield(L,"ttf_pt_index", anchor->ttf_pt_index); + dump_intfield(L,"lig_index", anchor->lig_index); + lua_rawset(L,-3); + } + lua_pop(L,1); +} + +void +handle_anchorpoint (lua_State *L, struct anchorpoint *anchor) { + struct anchorpoint *next; + next = anchor; + while (next != NULL) { + do_handle_anchorpoint(L, next); + next = next->next; + } +} + +void +handle_glyphvariants (lua_State *L, struct glyphvariants *vars) { + int i ; + dump_stringfield(L, "variants", vars->variants); + dump_intfield (L, "italic_correction", vars->italic_correction); + lua_newtable(L); + for (i=0; i< vars->part_cnt; i++) { + lua_newtable(L); + dump_stringfield(L, "component", vars->parts[i].component); + dump_intfield(L, "extender", vars->parts[i].is_extender); + dump_intfield(L, "start", vars->parts[i].startConnectorLength); + dump_intfield(L, "end", vars->parts[i].endConnectorLength); + dump_intfield(L, "advance", vars->parts[i].fullAdvance); + lua_rawseti(L,-2,(i+1)); + } + lua_setfield(L, -2, "parts"); +} + +void handle_mathkernvertex (lua_State *L, struct mathkernvertex *mkv) { + int i; + for (i=0; icnt;i++) { + lua_newtable(L); + dump_intfield(L, "height", mkv->mkd[i].height ); + dump_intfield(L, "kern", mkv->mkd[i].kern ); + lua_rawseti(L,-2, (i+1)); + } +} + +void handle_mathkern (lua_State *L, struct mathkern *mk) { + lua_newtable(L); + handle_mathkernvertex(L, &(mk->top_right)); + lua_setfield(L, -2, "top_right"); + lua_newtable(L); + handle_mathkernvertex(L, &(mk->top_left)); + lua_setfield(L, -2, "top_left"); + lua_newtable(L); + handle_mathkernvertex(L, &(mk->bottom_right)); + lua_setfield(L, -2, "bottom_right"); + lua_newtable(L); + handle_mathkernvertex(L, &(mk->bottom_left)); + lua_setfield(L, -2, "bottom_left"); +} + + + +void +handle_splinechar (lua_State *L,struct splinechar *glyph, int hasvmetrics) { + DBounds bb; + if (glyph->xmax==0 && glyph->ymax==0 && glyph->xmin==0 && glyph->ymin==0) { + SplineCharFindBounds(glyph,&bb); + glyph->xmin = bb.minx; + glyph->ymin = bb.miny; + glyph->xmax = bb.maxx; + glyph->ymax = bb.maxy; + } + dump_stringfield(L,"name", glyph->name); + dump_intfield(L,"unicode", glyph->unicodeenc); + lua_createtable(L,4,0); + lua_pushnumber(L,1); lua_pushnumber(L,glyph->xmin); lua_rawset(L,-3); + lua_pushnumber(L,2); lua_pushnumber(L,glyph->ymin); lua_rawset(L,-3); + lua_pushnumber(L,3); lua_pushnumber(L,glyph->xmax); lua_rawset(L,-3); + lua_pushnumber(L,4); lua_pushnumber(L,glyph->ymax); lua_rawset(L,-3); + lua_setfield(L,-2,"boundingbox"); + /*dump_intfield(L,"orig_pos", glyph->orig_pos);*/ + if (hasvmetrics) + dump_intfield(L,"vwidth", glyph->vwidth); + dump_intfield(L,"width", glyph->width); + + if (glyph->lsidebearing != glyph->xmin) { + dump_cond_intfield(L,"lsidebearing", glyph->lsidebearing); + } + /* dump_intfield(L,"ttf_glyph", glyph->ttf_glyph); */ + + /* Layer layers[2]; */ /* TH Not used */ + /* int layer_cnt; */ /* TH Not used */ + /* StemInfo *hstem; */ /* TH Not used */ + /* StemInfo *vstem; */ /* TH Not used */ + /* DStemInfo *dstem; */ /* TH Not used */ + + /* MinimumDistance *md; */ /* TH Not used */ + /* struct charviewbase *views; */ /* TH Not used */ + /* struct charinfo *charinfo; */ /* TH ? (charinfo.c) */ + /* struct splinefont *parent; */ /* TH Not used */ + + if (glyph->glyph_class>0) { + dump_enumfield(L,"class", glyph->glyph_class, glyph_class_enum); + } + /* TH: internal fontforge stuff + dump_intfield(L,"changed", glyph->changed); + dump_intfield(L,"changedsincelasthinted", glyph->changedsincelasthinted); + dump_intfield(L,"manualhints", glyph->manualhints); + dump_intfield(L,"ticked", glyph->ticked); + dump_intfield(L,"changed_since_autosave", glyph->changed_since_autosave); + dump_intfield(L,"widthset", glyph->widthset); + dump_intfield(L,"vconflicts", glyph->vconflicts); + dump_intfield(L,"hconflicts", glyph->hconflicts); + dump_intfield(L,"searcherdummy", glyph->searcherdummy); + dump_intfield(L,"changed_since_search", glyph->changed_since_search); + dump_intfield(L,"wasopen", glyph->wasopen); + dump_intfield(L,"namechanged", glyph->namechanged); + dump_intfield(L,"blended", glyph->blended); + dump_intfield(L,"ticked2", glyph->ticked2); + dump_intfield(L,"unused_so_far", glyph->unused_so_far); + dump_intfield(L,"numberpointsbackards", glyph->numberpointsbackards); + dump_intfield(L,"instructions_out_of_date", glyph->instructions_out_of_date); + dump_intfield(L,"complained_about_ptnums", glyph->complained_about_ptnums); + unsigned int vs_open: 1; + unsigned int unlink_rm_ovrlp_save_undo: 1; + unsigned int inspiro: 1; + unsigned int lig_caret_cnt_fixed: 1; + + + uint8 *ttf_instrs; + int16 ttf_instrs_len; + int16 countermask_cnt; + HintMask *countermasks; + */ + + if (glyph->kerns != NULL) { + lua_newtable(L); + handle_kernpair(L,glyph->kerns); + lua_setfield(L,-2,"kerns"); + } + if (glyph->vkerns != NULL) { + lua_newtable(L); + handle_kernpair(L,glyph->vkerns); + lua_setfield(L,-2,"vkerns"); + } + + if (glyph->dependents != NULL) { + lua_newtable(L); + handle_splinecharlist(L,glyph->dependents); + lua_setfield(L,-2,"dependents"); + + } + if (glyph->possub != NULL) { + lua_newtable(L); + handle_generic_pst(L,glyph->possub); + lua_setfield(L,-2,"lookups"); + } + + if (glyph->ligofme != NULL) { + lua_newtable(L); + handle_liglist(L,glyph->ligofme); + lua_setfield(L,-2,"ligatures"); + } + + if (glyph->comment != NULL) + dump_stringfield(L,"comment", glyph->comment); + + /* Color color; */ /* dont care */ + + if (glyph->anchor != NULL) { + lua_newtable(L); + handle_anchorpoint(L,glyph->anchor); + lua_setfield(L,-2,"anchors"); + } + + if (glyph->altuni != NULL) { + lua_newtable(L); + handle_altuni(L, glyph->altuni); + lua_setfield(L,-2,"altuni"); + } + + if (glyph->tex_height != TEX_UNDEF) + dump_intfield(L,"tex_height", glyph->tex_height); + if (glyph->tex_depth != TEX_UNDEF) + dump_intfield(L,"tex_depth", glyph->tex_depth); + + dump_cond_intfield(L, "is_extended_shape", glyph->is_extended_shape); + if (glyph->italic_correction != TEX_UNDEF) + dump_intfield(L, "italic_correction", glyph->italic_correction); + if (glyph->top_accent_horiz != TEX_UNDEF) + dump_intfield(L, "top_accent", glyph->top_accent_horiz); + + if (glyph->vert_variants != NULL) { + lua_newtable(L); + handle_glyphvariants(L, glyph->vert_variants); + lua_setfield(L,-2,"vert_variants"); + } + if (glyph->horiz_variants != NULL) { + lua_newtable(L); + handle_glyphvariants(L, glyph->horiz_variants); + lua_setfield(L,-2,"horiz_variants"); + } + if (glyph->mathkern != NULL) { + lua_newtable(L); + handle_mathkern(L, glyph->mathkern); + lua_setfield(L,-2,"mathkern"); + } +} + +char *panose_values_0[] = { "Any", "No Fit", "Text and Display", "Script", "Decorative", "Pictorial" }; + +char *panose_values_1[] = { "Any", "No Fit", "Cove", "Obtuse Cove", "Square Cove", "Obtuse Square Cove", + "Square", "Thin", "Bone", "Exaggerated", "Triangle", "Normal Sans", + "Obtuse Sans", "Perp Sans", "Flared", "Rounded" } ; + +char *panose_values_2[] = { "Any", "No Fit", "Very Light", "Light", "Thin", "Book", + "Medium", "Demi", "Bold", "Heavy", "Black", "Nord" } ; + +char *panose_values_3[] = { "Any", "No Fit", "Old Style", "Modern", "Even Width", + "Expanded", "Condensed", "Very Expanded", "Very Condensed", "Monospaced" }; + +char *panose_values_4[] = { "Any", "No Fit", "None", "Very Low", "Low", "Medium Low", + "Medium", "Medium High", "High", "Very High" }; + +char *panose_values_5[] = { "Any", "No Fit", "Gradual/Diagonal", "Gradual/Transitional","Gradual/Vertical", + "Gradual/Horizontal", "Rapid/Vertical", "Rapid/Horizontal", "Instant/Vertical" }; + +char *panose_values_6[] = {"Any","No Fit","Straight Arms/Horizontal","Straight Arms/Wedge","Straight Arms/Vertical", + "Straight Arms/Single Serif","Straight Arms/Double Serif","Non-Straight Arms/Horizontal", + "Non-Straight Arms/Wedge","Non-Straight Arms/Vertical","Non-Straight Arms/Single Serif", + "Non-Straight Arms/Double Serif" }; + +char *panose_values_7[] = { "Any", "No Fit","Normal/Contact","Normal/Weighted","Normal/Boxed","Normal/Flattened", + "Normal/Rounded","Normal/Off Center","Normal/Square","Oblique/Contact","Oblique/Weighted", + "Oblique/Boxed","Oblique/Flattened","Oblique/Rounded","Oblique/Off Center","Oblique/Square" }; + +char *panose_values_8[] = { "Any","No Fit","Standard/Trimmed","Standard/Pointed","Standard/Serifed","High/Trimmed", + "High/Pointed","High/Serifed","Constant/Trimmed","Constant/Pointed","Constant/Serifed", + "Low/Trimmed","Low/Pointed","Low/Serifed"}; + +char *panose_values_9[] = { "Any","No Fit", "Constant/Small", "Constant/Standard", + "Constant/Large", "Ducking/Small", "Ducking/Standard", "Ducking/Large" }; + + +void +handle_pfminfo (lua_State *L, struct pfminfo pfm) { + + dump_intfield (L, "pfmset", pfm.pfmset); + dump_intfield (L, "winascent_add", pfm.winascent_add); + dump_intfield (L, "windescent_add", pfm.windescent_add); + dump_intfield (L, "hheadascent_add", pfm.hheadascent_add); + dump_intfield (L, "hheaddescent_add", pfm.hheaddescent_add); + dump_intfield (L, "typoascent_add", pfm.typoascent_add); + dump_intfield (L, "typodescent_add", pfm.typodescent_add); + dump_intfield (L, "subsuper_set", pfm.subsuper_set); + dump_intfield (L, "panose_set", pfm.panose_set); + dump_intfield (L, "hheadset", pfm.hheadset); + dump_intfield (L, "vheadset", pfm.vheadset); + dump_intfield (L, "pfmfamily", pfm.pfmfamily); + dump_intfield (L, "weight", pfm.weight); + dump_intfield (L, "width", pfm.width); + dump_intfield (L, "avgwidth", pfm.avgwidth); + dump_intfield (L, "firstchar", pfm.firstchar); + dump_intfield (L, "lastchar", pfm.lastchar); + lua_createtable(L,0,10); + dump_enumfield(L,"familytype", pfm.panose[0], panose_values_0); + dump_enumfield(L,"serifstyle", pfm.panose[1], panose_values_1); + dump_enumfield(L,"weight", pfm.panose[2], panose_values_2); + dump_enumfield(L,"proportion", pfm.panose[3], panose_values_3); + dump_enumfield(L,"contrast", pfm.panose[4], panose_values_4); + dump_enumfield(L,"strokevariation", pfm.panose[5], panose_values_5); + dump_enumfield(L,"armstyle", pfm.panose[6], panose_values_6); + dump_enumfield(L,"letterform", pfm.panose[7], panose_values_7); + dump_enumfield(L,"midline", pfm.panose[8], panose_values_8); + dump_enumfield(L,"xheight", pfm.panose[9], panose_values_9); + lua_setfield (L,-2,"panose"); + + dump_intfield (L, "fstype", pfm.fstype); + dump_intfield (L, "linegap", pfm.linegap); + dump_intfield (L, "vlinegap", pfm.vlinegap); + dump_intfield (L, "hhead_ascent", pfm.hhead_ascent); + dump_intfield (L, "hhead_descent", pfm.hhead_descent); + dump_intfield (L, "hhead_descent", pfm.hhead_descent); + dump_intfield (L, "os2_typoascent", pfm.os2_typoascent ); + dump_intfield (L, "os2_typodescent", pfm.os2_typodescent ); + dump_intfield (L, "os2_typolinegap", pfm.os2_typolinegap ); + dump_intfield (L, "os2_winascent", pfm.os2_winascent ); + dump_intfield (L, "os2_windescent", pfm.os2_windescent ); + dump_intfield (L, "os2_subxsize", pfm.os2_subxsize ); + dump_intfield (L, "os2_subysize", pfm.os2_subysize ); + dump_intfield (L, "os2_subxoff", pfm.os2_subxoff ); + dump_intfield (L, "os2_subyoff", pfm.os2_subyoff ); + dump_intfield (L, "os2_supxsize", pfm.os2_supxsize ); + dump_intfield (L, "os2_supysize", pfm.os2_supysize ); + dump_intfield (L, "os2_supxoff", pfm.os2_supxoff ); + dump_intfield (L, "os2_supyoff", pfm.os2_supyoff ); + dump_intfield (L, "os2_strikeysize", pfm.os2_strikeysize ); + dump_intfield (L, "os2_strikeypos", pfm.os2_strikeypos ); + dump_lstringfield (L, "os2_vendor", pfm.os2_vendor, 4); + dump_intfield (L, "os2_family_class", pfm.os2_family_class); + dump_intfield (L, "os2_xheight", pfm.os2_xheight); + dump_intfield (L, "os2_capheight", pfm.os2_capheight); + dump_intfield (L, "os2_defaultchar", pfm.os2_defaultchar); + dump_intfield (L, "os2_breakchar", pfm.os2_breakchar); + if (pfm.hascodepages) { + lua_newtable(L); + lua_pushnumber(L, pfm.codepages[0]); lua_rawseti(L,-2,1); + lua_pushnumber(L, pfm.codepages[1]); lua_rawseti(L,-2,2); + lua_setfield(L,-2,"codepages"); + } + if (pfm.hasunicoderanges) { + lua_newtable(L); + lua_pushnumber(L, pfm.unicoderanges[0]); lua_rawseti(L,-2,1); + lua_pushnumber(L, pfm.unicoderanges[1]); lua_rawseti(L,-2,2); + lua_pushnumber(L, pfm.unicoderanges[2]); lua_rawseti(L,-2,3); + lua_pushnumber(L, pfm.unicoderanges[3]); lua_rawseti(L,-2,4); + lua_setfield(L,-2,"unicoderanges"); + } +} + + +void +do_handle_enc (lua_State *L, struct enc *enc) { + int i; + + dump_stringfield(L,"enc_name", enc->enc_name); + dump_intfield (L,"char_cnt", enc->char_cnt); + + lua_checkstack(L,4); + if (enc->char_cnt && enc->unicode != NULL) { + lua_createtable(L,enc->char_cnt,1); + for (i=0;ichar_cnt;i++) { + lua_pushnumber(L,i); + lua_pushnumber(L,enc->unicode[i]); + lua_rawset(L,-3); + } + lua_setfield(L,-2,"unicode"); + } + + if (enc->char_cnt && enc->psnames != NULL) { + lua_createtable(L,enc->char_cnt,1); + for (i=0;ichar_cnt;i++) { + lua_pushnumber(L,i); + lua_pushstring(L,enc->psnames[i]); + lua_rawset(L,-3); + } + lua_setfield(L,-2,"psnames"); + } + dump_intfield (L,"builtin", enc->builtin ); + dump_intfield (L,"hidden", enc->hidden ); + dump_intfield (L,"only_1byte", enc->only_1byte ); + dump_intfield (L,"has_1byte", enc->has_1byte ); + dump_intfield (L,"has_2byte", enc->has_2byte ); + dump_cond_intfield (L,"is_unicodebmp", enc->is_unicodebmp ); + dump_cond_intfield (L,"is_unicodefull", enc->is_unicodefull ); + dump_cond_intfield (L,"is_custom", enc->is_custom ); + dump_cond_intfield (L,"is_original", enc->is_original ); + dump_cond_intfield (L,"is_compact", enc->is_compact ); + dump_cond_intfield (L,"is_japanese", enc->is_japanese ); + dump_cond_intfield (L,"is_korean", enc->is_korean ); + dump_cond_intfield (L,"is_tradchinese", enc->is_tradchinese ); + dump_cond_intfield (L,"is_simplechinese", enc->is_simplechinese); + + if (enc->iso_2022_escape_len > 0) { + dump_lstringfield (L,"iso_2022_escape", enc->iso_2022_escape, enc->iso_2022_escape_len); + } + dump_intfield (L,"low_page", enc->low_page); + dump_intfield(L,"high_page", enc->high_page); + + dump_stringfield(L,"iconv_name", enc->iconv_name); + + dump_intfield (L,"char_max", enc->char_max); +} + +void +handle_enc (lua_State *L, struct enc *enc) { + struct enc *next; + NESTED_TABLE(do_handle_enc,enc,24); +} + +void +handle_encmap (lua_State *L, struct encmap *map, int notdef_loc) { + int i; + dump_intfield(L,"enccount", map->enccount) ; + dump_intfield(L,"encmax", map->encmax) ; + dump_intfield(L,"backmax", map->backmax) ; + /*dump_intfield(L,"ticked", map->ticked) ;*/ + if (map->remap != NULL) { + lua_newtable(L); + dump_intfield(L,"firstenc", map->remap->firstenc) ; + dump_intfield(L,"lastenc", map->remap->lastenc) ; + dump_intfield(L,"infont", map->remap->infont) ; + lua_setfield(L,-2,"remap"); + } + lua_checkstack(L,4); + if (map->encmax > 0 && map->map != NULL) { + lua_createtable(L,map->encmax,1); + for (i=0;iencmax;i++) { + if (map->map[i]!=-1) { + int l = map->map[i]; + lua_pushnumber(L,i); + if (lbackmax > 0 && map->backmap != NULL) { + lua_newtable(L); + for (i=0;ibackmax;i++) { + if (map->backmap[i]!=-1) { /* TODO: check this, because valgrind sometimes says + "Conditional jump or move depends on uninitialised value(s)" + needs a test file. + */ + if (ibackmap[i]); + lua_rawset(L,-3); + } + } + lua_setfield(L,-2,"backmap"); + } + + if (map->enc != NULL) { + lua_newtable(L); + handle_enc(L,map->enc); + lua_setfield(L,-2,"enc"); + } +} + +static void +handle_psdict (lua_State *L, struct psdict *private) { + int k; + if (private->keys != NULL && private->values != NULL) { + for (k=0;knext;k++) { + lua_pushstring(L,private->keys[k]); + lua_pushstring(L,private->values[k]); + lua_rawset(L,-3); + } + } +} + +void +do_handle_ttflangname (lua_State *L, struct ttflangname *names) { + int k; + dump_stringfield(L,"lang", (char *)MSLangString(names->lang)) ; + lua_checkstack(L,4); + lua_createtable(L,0,ttf_namemax); + for (k=0;knames[k]); + lua_rawset(L,-3); + } + lua_setfield(L, -2 , "names"); +} + + +void +handle_ttflangname (lua_State *L, struct ttflangname *names) { + struct ttflangname *next; + NESTED_TABLE(do_handle_ttflangname,names,2); +} + + +void +do_handle_anchorclass (lua_State *L, struct anchorclass *anchor) { + + dump_stringfield(L,"name", anchor->name); + dump_subtable_name (L, "lookup", anchor->subtable); + dump_enumfield(L,"type", anchor->type, anchorclass_type_enum); + /* uint8 has_base; */ + /* uint8 processed, has_mark, matches, ac_num; */ + /* uint8 ticked; */ +} + +void +handle_anchorclass (lua_State *L, struct anchorclass *anchor) { + struct anchorclass *next; + NESTED_TABLE(do_handle_anchorclass,anchor,10); +} + +void +do_handle_ttf_table (lua_State *L, struct ttf_table *ttf_tab) { + + dump_tag(L,"tag", ttf_tab->tag); + dump_intfield(L,"len", ttf_tab->len); + dump_intfield(L,"maxlen", ttf_tab->maxlen); + dump_lstringfield(L,"data", (char *)ttf_tab->data, ttf_tab->len); +} + +void +handle_ttf_table (lua_State *L, struct ttf_table *ttf_tab) { + struct ttf_table *next; + NESTED_TABLE(do_handle_ttf_table,ttf_tab,4); +} + +void +do_handle_kernclass (lua_State *L, struct kernclass *kerns) { + int k; + + /* + * dump_intfield(L,"first_cnt", kerns->first_cnt); + * dump_intfield(L,"second_cnt", kerns->second_cnt); + */ + lua_checkstack(L,4); + lua_createtable(L,kerns->first_cnt,1); + for (k=0;kfirst_cnt;k++) { + lua_pushnumber(L,(k+1)); + lua_pushstring(L,kerns->firsts[k]); + lua_rawset(L,-3); + } + lua_setfield(L,-2,"firsts"); + + lua_createtable(L,kerns->second_cnt,1); + for (k=0;ksecond_cnt;k++) { + lua_pushnumber(L,(k+1)); + lua_pushstring(L,kerns->seconds[k]); + lua_rawset(L,-3); + } + lua_setfield(L,-2,"seconds"); + + dump_subtable_name(L, "lookup", kerns->subtable); + /*dump_intfield(L,"kcid", kerns->kcid); *//* probably not needed */ + + lua_createtable(L,kerns->second_cnt*kerns->first_cnt,1); + for (k=0;k<(kerns->second_cnt*kerns->first_cnt);k++) { + if (kerns->offsets[k]!=0) { + lua_pushnumber(L,(k+1)); + lua_pushnumber(L,kerns->offsets[k]); + lua_rawset(L,-3); + } + } + lua_setfield(L,-2,"offsets"); + +} + +void +handle_kernclass (lua_State *L, struct kernclass *kerns) { + struct kernclass *next; + NESTED_TABLE(do_handle_kernclass,kerns,8); +} + + +#define DUMP_NUMBER_ARRAY(s,cnt,item) { \ + if (cnt>0 && item != NULL) { \ + int kk; \ + lua_newtable(L); \ + for (kk=0;kk0 && item!=NULL) { \ + int kk; \ + lua_newtable(L); \ + for (kk=0;kk0 && item!=NULL) { \ + int kk; \ + lua_newtable(L); \ + for (kk=0;kku.glyph.names); + dump_stringfield(L,"back",rule->u.glyph.back); + dump_stringfield(L,"fore",rule->u.glyph.fore); + lua_setfield(L,-2,fpossub_format_enum[format]); + + } else if (format == pst_class) { + + lua_newtable(L); + DUMP_NUMBER_ARRAY("current", rule->u.class.ncnt,rule->u.class.nclasses); + DUMP_NUMBER_ARRAY("before", rule->u.class.bcnt,rule->u.class.bclasses); + DUMP_NUMBER_ARRAY("after", rule->u.class.fcnt,rule->u.class.fclasses); +#if 0 + DUMP_NUMBER_ARRAY("allclasses", 0,rule->u.class.allclasses); +#endif + lua_setfield(L,-2,fpossub_format_enum[format]); + + } else if (format == pst_coverage) { + + lua_newtable(L); + DUMP_STRING_ARRAY("current", rule->u.coverage.ncnt,rule->u.coverage.ncovers); + DUMP_STRING_ARRAY("before", rule->u.coverage.bcnt,rule->u.coverage.bcovers); + DUMP_STRING_ARRAY("after", rule->u.coverage.fcnt,rule->u.coverage.fcovers); + lua_setfield(L,-2,fpossub_format_enum[format]); + + } else if (format == pst_reversecoverage) { + + lua_newtable(L); + DUMP_STRING_ARRAY("current", rule->u.rcoverage.always1,rule->u.rcoverage.ncovers); + DUMP_STRING_ARRAY("before", rule->u.rcoverage.bcnt,rule->u.rcoverage.bcovers); + DUMP_STRING_ARRAY("after", rule->u.rcoverage.fcnt,rule->u.rcoverage.fcovers); + dump_stringfield(L,"replacements", rule->u.rcoverage.replacements); + lua_setfield(L,-2,fpossub_format_enum[format]); + } else { + fprintf(stderr,"handle_fpst_rule(): Unknown rule format: %d\n",format); + } + + if (rule->lookup_cnt>0) { + lua_newtable(L); + for (k=0;klookup_cnt;k++) { + lua_pushnumber(L,(rule->lookups[k].seq+1)); + if (rule->lookups[k].lookup!=NULL) { + lua_pushstring(L,rule->lookups[k].lookup->lookup_name); + } else { + lua_pushnil(L); + } + lua_rawset(L,-3); + } + lua_setfield(L,-2,"lookups"); + } else { + /*fprintf(stderr,"handle_fpst_rule(): No lookups?\n");*/ + } +} + +void +do_handle_generic_fpst(lua_State *L, struct generic_fpst *fpst) { + int k; + + if (fpst->type>LAST_POSSUB_TYPE_ENUM) { + dump_intfield(L,"type", fpst->type); + } else { + dump_enumfield(L,"type", fpst->type, possub_type_enum); + } + dump_enumfield(L,"format", fpst->format, fpossub_format_enum); + + if (fpst->format==pst_class) { + DUMP_EXACT_STRING_ARRAY("current_class",fpst->nccnt,fpst->nclass); + DUMP_EXACT_STRING_ARRAY("before_class",fpst->bccnt,fpst->bclass); + DUMP_EXACT_STRING_ARRAY("after_class",fpst->fccnt,fpst->fclass); + } else { + DUMP_STRING_ARRAY("current_class",fpst->nccnt,fpst->nclass); + DUMP_STRING_ARRAY("before_class",fpst->bccnt,fpst->bclass); + DUMP_STRING_ARRAY("after_class",fpst->fccnt,fpst->fclass); + } + + lua_checkstack(L,4); + if (fpst->rule_cnt>0) { + lua_createtable(L,fpst->rule_cnt,1); + for (k=0;krule_cnt;k++) { + lua_pushnumber(L,(k+1)); + lua_newtable(L); + handle_fpst_rule(L,&(fpst->rules[k]),fpst->format); + lua_rawset(L,-3); + } + lua_setfield(L,-2,"rules"); + } + /*dump_intfield (L,"ticked", fpst->ticked);*/ +} + +void +handle_generic_fpst(lua_State *L, struct generic_fpst *fpst) { + struct generic_fpst *next; + int k = 1; + lua_checkstack(L,3); + if (fpst->subtable != NULL && + fpst->subtable->subtable_name != NULL) { + lua_pushstring(L,fpst->subtable->subtable_name); + } else { + lua_pushnumber(L,k); k++; + } + lua_createtable(L,0,10); + do_handle_generic_fpst(L,fpst); + lua_rawset(L,-3); + next = fpst->next; + while (next != NULL) { + lua_checkstack(L,3); + if (next->subtable != NULL && + next->subtable->subtable_name != NULL) { + lua_pushstring(L,next->subtable->subtable_name); + } else { + lua_pushnumber(L,k); k++; + } + lua_createtable(L,0,10); + do_handle_generic_fpst(L, next); + lua_rawset(L,-3); + next = next->next; + } +} + +void +do_handle_otfname (lua_State *L, struct otfname *oname) { + dump_intfield(L,"lang", oname->lang); + dump_stringfield(L,"name", oname->name); +} + +void +handle_otfname (lua_State *L, struct otfname *oname) { + struct otfname *next; + NESTED_TABLE(do_handle_otfname,oname,2); +} + +void +do_handle_macname (lua_State *L, struct macname *featname) { + dump_intfield(L,"enc", featname->enc); + dump_intfield(L,"lang", featname->lang); + dump_stringfield(L,"name", featname->name); +} + +void +handle_macname (lua_State *L, struct macname *featname) { + struct macname *next; + NESTED_TABLE(do_handle_macname,featname,3); +} + +void +do_handle_macsetting (lua_State *L, struct macsetting *settings) { + dump_intfield(L,"setting", settings->setting); + dump_intfield(L,"strid", settings->strid); + dump_intfield(L,"initially_enabled", settings->initially_enabled); + if (settings->setname != NULL) { + lua_newtable(L); + handle_macname(L,settings->setname); + lua_setfield(L,-2,"setname"); + } +} + +void +handle_macsetting (lua_State *L, struct macsetting *settings) { + struct macsetting *next; + NESTED_TABLE(do_handle_macsetting,settings,4); +} + + +void +do_handle_macfeat (lua_State *L, struct macfeat *features) { + + dump_intfield(L,"feature", features->feature); + dump_intfield(L,"ismutex", features->ismutex); + dump_intfield(L,"default_setting", features->default_setting); + dump_intfield(L,"strid", features->strid); + + if (features->featname != NULL) { + lua_newtable(L); + handle_macname(L,features->featname); + lua_setfield(L,-2,"featname"); + } + + if (features->settings != NULL) { + lua_newtable(L); + handle_macsetting(L,features->settings); + lua_setfield(L,-2,"settings"); + } +} + +void +handle_macfeat (lua_State *L, struct macfeat *features) { + struct macfeat *next; + NESTED_TABLE(do_handle_macfeat,features,6); +} + + +/* asm_state flags: + Indic: + 0x8000 mark current glyph as first in rearrangement + 0x4000 don't advance to next glyph + 0x2000 mark current glyph as last + 0x000f verb + 0 = no change 8 = AxCD => CDxA + 1 = Ax => xA 9 = AxCD => DCxA + 2 = xD => Dx a = ABxD => DxAB + 3 = AxD => DxA b = ABxD => DxBA + 4 = ABx => xAB c = ABxCD => CDxAB + 5 = ABx => xBA d = ABxCD => CDxBA + 6 = xCD => CDx e = ABxCD => DCxAB + 7 = xCD => DCx f = ABxCD => DCxBA + Contextual: + 0x8000 mark current glyph + 0x4000 don't advance to next glyph + Insert: + 0x8000 mark current glyph + 0x4000 don't advance to next glyph + 0x2000 current is Kashida like + 0x1000 mark is Kashida like + 0x0800 current insert before + 0x0400 mark insert before + 0x03e0 count of chars to be inserted at current (31 max) + 0x001f count of chars to be inserted at mark (31 max) + Kern: + 0x8000 add current glyph to kerning stack + 0x4000 don't advance to next glyph + 0x3fff value offset +*/ +/* to be tested */ +void +do_handle_generic_asm (lua_State *L, struct generic_asm *sm) { + int i, k; + + dump_enumfield (L,"type", sm->type, asm_type_enum); + /* backref */ + dump_subtable_name(L, "lookup", sm->subtable); + /* uint8 ticked; */ + lua_newtable(L); + if (sm->flags & asm_vert) { + lua_pushstring(L,"vert"); lua_pushboolean(L,1); lua_rawset(L,-3); + } + if (sm->flags & asm_descending) { + lua_pushstring(L,"descending"); lua_pushboolean(L,1); lua_rawset(L,-3); + } + if (sm->flags & asm_always) { + lua_pushstring(L,"always"); lua_pushboolean(L,1); lua_rawset(L,-3); + } + lua_setfield(L,-2,"flags"); + + if (sm->class_cnt >0) { + lua_newtable(L); + for (i=0; iclass_cnt; i++) { + if (sm->classes[i]!=NULL) { + lua_pushstring(L,sm->classes[i]); + lua_rawseti(L,-2,(i+1)); + } + } + lua_setfield(L,-2,"classes"); + } + if (sm->state_cnt >0) { + lua_newtable(L); + for (i=0; i<(sm->class_cnt * sm->state_cnt); i++) { + struct asm_state as = sm->state[i]; + dump_intfield(L,"next", as.next_state); + dump_intfield(L,"flags", as.flags); + if (sm->type==asm_context) { + lua_newtable(L); + if (as.u.context.mark_lookup!=NULL) + dump_stringfield(L,"mark", as.u.context.mark_lookup->lookup_name); /* backref */ + if (as.u.context.cur_lookup!=NULL) + dump_stringfield(L,"cur", as.u.context.cur_lookup->lookup_name); /* backref */ + lua_setfield(L,-2,"context"); + } else if (sm->type==asm_insert) { + lua_newtable(L); + lua_pushstring(L, as.u.insert.mark_ins); + lua_setfield(L, -2, "mark"); + lua_pushstring(L, as.u.insert.cur_ins); + lua_setfield(L, -2, "cur"); + lua_setfield(L,-2,"insert"); + } else if (sm->type==asm_kern) { + lua_newtable(L); + for (k=0;kScriptPercentScaleDown); + dump_intfield(L,"ScriptScriptPercentScaleDown",MATH->ScriptScriptPercentScaleDown); + dump_intfield(L,"DelimitedSubFormulaMinHeight",MATH->DelimitedSubFormulaMinHeight); + dump_intfield(L,"DisplayOperatorMinHeight",MATH->DisplayOperatorMinHeight); + dump_intfield(L,"MathLeading",MATH->MathLeading); + dump_intfield(L,"AxisHeight",MATH->AxisHeight); + dump_intfield(L,"AccentBaseHeight",MATH->AccentBaseHeight); + dump_intfield(L,"FlattenedAccentBaseHeight",MATH->FlattenedAccentBaseHeight); + dump_intfield(L,"SubscriptShiftDown",MATH->SubscriptShiftDown); + dump_intfield(L,"SubscriptTopMax",MATH->SubscriptTopMax); + dump_intfield(L,"SubscriptBaselineDropMin",MATH->SubscriptBaselineDropMin); + dump_intfield(L,"SuperscriptShiftUp",MATH->SuperscriptShiftUp); + dump_intfield(L,"SuperscriptShiftUpCramped",MATH->SuperscriptShiftUpCramped); + dump_intfield(L,"SuperscriptBottomMin",MATH->SuperscriptBottomMin); + dump_intfield(L,"SuperscriptBaselineDropMax",MATH->SuperscriptBaselineDropMax); + dump_intfield(L,"SubSuperscriptGapMin",MATH->SubSuperscriptGapMin); + dump_intfield(L,"SuperscriptBottomMaxWithSubscript",MATH->SuperscriptBottomMaxWithSubscript); + dump_intfield(L,"SpaceAfterScript",MATH->SpaceAfterScript); + dump_intfield(L,"UpperLimitGapMin",MATH->UpperLimitGapMin); + dump_intfield(L,"UpperLimitBaselineRiseMin",MATH->UpperLimitBaselineRiseMin); + dump_intfield(L,"LowerLimitGapMin",MATH->LowerLimitGapMin); + dump_intfield(L,"LowerLimitBaselineDropMin",MATH->LowerLimitBaselineDropMin); + dump_intfield(L,"StackTopShiftUp",MATH->StackTopShiftUp); + dump_intfield(L,"StackTopDisplayStyleShiftUp",MATH->StackTopDisplayStyleShiftUp); + dump_intfield(L,"StackBottomShiftDown",MATH->StackBottomShiftDown); + dump_intfield(L,"StackBottomDisplayStyleShiftDown",MATH->StackBottomDisplayStyleShiftDown); + dump_intfield(L,"StackGapMin",MATH->StackGapMin); + dump_intfield(L,"StackDisplayStyleGapMin",MATH->StackDisplayStyleGapMin); + dump_intfield(L,"StretchStackTopShiftUp",MATH->StretchStackTopShiftUp); + dump_intfield(L,"StretchStackBottomShiftDown",MATH->StretchStackBottomShiftDown); + dump_intfield(L,"StretchStackGapAboveMin",MATH->StretchStackGapAboveMin); + dump_intfield(L,"StretchStackGapBelowMin",MATH->StretchStackGapBelowMin); + dump_intfield(L,"FractionNumeratorShiftUp",MATH->FractionNumeratorShiftUp); + dump_intfield(L,"FractionNumeratorDisplayStyleShiftUp",MATH->FractionNumeratorDisplayStyleShiftUp); + dump_intfield(L,"FractionDenominatorShiftDown",MATH->FractionDenominatorShiftDown); + dump_intfield(L,"FractionDenominatorDisplayStyleShiftDown",MATH->FractionDenominatorDisplayStyleShiftDown); + dump_intfield(L,"FractionNumeratorGapMin",MATH->FractionNumeratorGapMin); + dump_intfield(L,"FractionNumeratorDisplayStyleGapMin",MATH->FractionNumeratorDisplayStyleGapMin); + dump_intfield(L,"FractionRuleThickness",MATH->FractionRuleThickness); + dump_intfield(L,"FractionDenominatorGapMin",MATH->FractionDenominatorGapMin); + dump_intfield(L,"FractionDenominatorDisplayStyleGapMin",MATH->FractionDenominatorDisplayStyleGapMin); + dump_intfield(L,"SkewedFractionHorizontalGap",MATH->SkewedFractionHorizontalGap); + dump_intfield(L,"SkewedFractionVerticalGap",MATH->SkewedFractionVerticalGap); + dump_intfield(L,"OverbarVerticalGap",MATH->OverbarVerticalGap); + dump_intfield(L,"OverbarRuleThickness",MATH->OverbarRuleThickness); + dump_intfield(L,"OverbarExtraAscender",MATH->OverbarExtraAscender); + dump_intfield(L,"UnderbarVerticalGap",MATH->UnderbarVerticalGap); + dump_intfield(L,"UnderbarRuleThickness",MATH->UnderbarRuleThickness); + dump_intfield(L,"UnderbarExtraDescender",MATH->UnderbarExtraDescender); + dump_intfield(L,"RadicalVerticalGap",MATH->RadicalVerticalGap); + dump_intfield(L,"RadicalDisplayStyleVerticalGap",MATH->RadicalDisplayStyleVerticalGap); + dump_intfield(L,"RadicalRuleThickness",MATH->RadicalRuleThickness); + dump_intfield(L,"RadicalExtraAscender",MATH->RadicalExtraAscender); + dump_intfield(L,"RadicalKernBeforeDegree",MATH->RadicalKernBeforeDegree); + dump_intfield(L,"RadicalKernAfterDegree",MATH->RadicalKernAfterDegree); + dump_intfield(L,"RadicalDegreeBottomRaisePercent",MATH->RadicalDegreeBottomRaisePercent); + dump_intfield(L,"MinConnectorOverlap",MATH->MinConnectorOverlap); +} + +/* the handling of BASE is untested, no font */ +void handle_baselangextent (lua_State *L, struct baselangextent *ble); + +void +do_handle_baselangextent (lua_State *L, struct baselangextent *ble) { + dump_tag(L,"tag",ble->lang); + dump_intfield(L,"ascent",ble->ascent); + dump_intfield(L,"descent",ble->descent); + lua_newtable(L); + handle_baselangextent(L, ble->features); + lua_setfield(L,-2,"features"); +} + + +void handle_baselangextent (lua_State *L, struct baselangextent *ble) { + struct baselangextent *next; + NESTED_TABLE(do_handle_baselangextent,ble,4); +} + + +void handle_base (lua_State *L, struct Base *Base) { + int i; + struct basescript *next = Base->scripts; + lua_newtable(L); + for ( i=0; ibaseline_cnt; i++ ) { + lua_pushstring(L,make_tag_string(Base->baseline_tags[i])); + lua_rawseti(L,-2,(i+1)); + } + lua_setfield(L,-2,"tags"); + if (next != NULL) { + lua_newtable(L); + while (next != NULL) { + lua_pushstring(L,make_tag_string(next->script)); + lua_newtable(L); + dump_intfield(L, "default_baseline", (next->def_baseline+1)) ; + lua_newtable(L); + for ( i=0; ibaseline_cnt; i++ ) { + lua_pushnumber(L, next->baseline_pos[i]) ; + lua_rawseti(L,-2, (i+1)); + } + lua_setfield(L, -2, "baseline"); + lua_newtable(L); + handle_baselangextent(L, next->langs); + lua_setfield(L, -2, "lang"); + lua_rawset(L,-3); + next = next->next; + } + lua_setfield(L,-2,"scripts"); + } +} + + +void +handle_axismap (lua_State *L, struct axismap *am) { + int i; + lua_checkstack(L,3); + lua_newtable(L); + for (i=0;ipoints;i++) { + lua_pushnumber(L, am->blends[i] ) ; + lua_rawseti(L,-2, (i+1)); + } + lua_setfield(L,-2,"blends"); + lua_newtable(L); + for (i=0;ipoints;i++) { + lua_pushnumber(L, am->designs[i] ) ; + lua_rawseti(L,-2, (i+1)); + } + lua_setfield(L,-2,"designs"); + dump_realfield(L, "min", am->min) ; + dump_realfield(L, "def", am->def) ; + dump_realfield(L, "max", am->max) ; + if (am->axisnames != NULL ){ + lua_newtable(L); + handle_macname(L, am->axisnames); + lua_setfield(L,-2,"axisnames"); + } +} + + +void +handle_mmset (lua_State *L, struct mmset *mm) { + int i, k; + lua_newtable(L); + for (i=0;iaxis_count;i++) { + lua_pushstring(L, mm->axes[i]) ; + lua_rawseti(L,-2, (i+1)); + } + lua_setfield(L,-2,"axes"); + + dump_intfield(L,"instance_count",mm->instance_count); + /* SplineFont *normal; */ /* this is the parent */ + if (mm->instance_count>0) { + lua_newtable(L); + for (i=0;iinstance_count*mm->axis_count;i++) { + lua_pushnumber(L, mm->positions[i]) ; + lua_rawseti(L,-2, (i+1)); + } + lua_setfield(L,-2,"positions"); + + /* better not to do this */ +#if 0 + { + struct mmset *mmsave ; + lua_newtable(L); + for (i=0;iinstance_count;i++) { + lua_checkstack(L,20); + lua_createtable(L,0,60); + mmsave = mm->instances[i]->mm; + mm->instances[i]->mm = NULL; + handle_splinefont(L, mm->instances[i]); + mm->instances[i]->mm = mmsave; + lua_rawseti(L,-2, (i+1)); + } + lua_setfield(L,-2,"instances"); + } +#endif + + lua_newtable(L); + for (i=0;iinstance_count;i++) { + lua_pushnumber(L, mm->defweights[i]) ; + lua_rawseti(L,-2, (i+1)); + } + lua_setfield(L,-2,"defweights"); + } + + if (mm->axismaps != NULL) { + lua_newtable(L); + for (i=0;iaxis_count;i++) { + lua_newtable(L); + handle_axismap(L, &(mm->axismaps[i])); + lua_rawseti(L, -2, (i+1)); + } + lua_setfield(L,-2,"axismaps"); + } + dump_stringfield(L,"cdv",mm->cdv); + dump_stringfield(L,"ndv",mm->ndv); + dump_intfield(L,"named_instance_count",mm->named_instance_count); + + if (mm->named_instance_count>0) { + lua_newtable(L); + for (i=0; inamed_instance_count;i++) { + struct named_instance *ni = &(mm->named_instances[i]); + lua_newtable(L); + + lua_newtable(L); + for (k=0;k<=mm->axis_count;k++) { + lua_pushnumber(L,ni->coords[k]); + lua_rawseti(L,-2,(k+1)); + } + lua_setfield(L,-2,"coords"); + + lua_newtable(L); + handle_macname(L, ni->names); + lua_setfield(L,-2,"names"); + + lua_rawseti(L,-2,(i+1)); + } + lua_setfield(L,-2,"named_instances"); + } + /* unsigned int changed: 1; */ + dump_intfield(L,"apple",mm->apple); +} + + + +void +handle_splinefont(lua_State *L, struct splinefont *sf) { + int k; + int fix_notdef = 0; + int l = -1; + + dump_stringfield(L,"table_version", LUA_OTF_VERSION); + dump_stringfield(L,"fontname", sf->fontname); + dump_stringfield(L,"fullname", sf->fullname); + dump_stringfield(L,"familyname", sf->familyname); + dump_stringfield(L,"weight", sf->weight); + dump_stringfield(L,"copyright", sf->copyright); + dump_stringfield(L,"filename", sf->filename); + /* dump_stringfield(L,"defbasefilename", sf->defbasefilename); */ + dump_stringfield(L,"version", sf->version); + dump_floatfield (L,"italicangle", sf->italicangle); + dump_floatfield (L,"upos", sf->upos); + dump_floatfield (L,"uwidth", sf->uwidth); + dump_intfield (L,"ascent", sf->ascent); + dump_intfield (L,"descent", sf->descent); + dump_intfield (L,"uniqueid", sf->uniqueid); + dump_intfield (L,"glyphcnt", sf->glyphcnt); + dump_intfield (L,"glyphmax", sf->glyphmax); + dump_intfield (L,"units_per_em", sf->units_per_em); + + if (sf->possub != NULL) { + lua_newtable(L); + handle_generic_fpst(L,sf->possub); + lua_setfield(L,-2,"lookups"); + } + + lua_checkstack(L,4); + lua_createtable(L,sf->glyphcnt,0); + + /* This after-the-fact type discovery is not brilliant, + I should really add a 'format' key in the structure */ + if ((sf->origname != NULL) && + (strmatch(sf->origname+strlen(sf->origname)-4, ".pfa")==0 || + strmatch(sf->origname+strlen(sf->origname)-4, ".pfb")==0)) { + fix_notdef = 1; + } + + if (fix_notdef) { + /* some code to ensure that the .notdef ends up in slot 0 + (this will actually be enforced by the CFF writer) */ + for (k=0;kglyphcnt;k++) { + if (sf->glyphs[k]) { + if (strcmp(sf->glyphs[k]->name,".notdef") == 0) { + l = k; + } + } + } + if (l==-1) { /* fake a .notdef at the end */ + l = sf->glyphcnt; + } + for (k=0;kglyphs[k]) { + handle_splinechar(L,sf->glyphs[k], sf->hasvmetrics); + } + lua_rawset(L,-3); + } + if (sf->glyphs != NULL && lglyphcnt) { + lua_pushnumber(L,0); + lua_createtable(L,0,12); + if (sf->glyphs[l]) { + handle_splinechar(L,sf->glyphs[l], sf->hasvmetrics); + } + lua_rawset(L,-3); + } + } + if ((l+1)glyphcnt) { + for (k=(l+1);kglyphcnt;k++) { + lua_pushnumber(L,k); + lua_createtable(L,0,12); + if (sf->glyphs[k]) { + handle_splinechar(L,sf->glyphs[k], sf->hasvmetrics); + } + lua_rawset(L,-3); + } + } + lua_setfield(L,-2,"glyphs"); + + /* dump_intfield(L,"changed", sf->changed); */ + dump_intfield(L,"hasvmetrics", sf->hasvmetrics); + dump_intfield(L,"onlybitmaps", sf->onlybitmaps); + dump_intfield(L,"serifcheck", sf->serifcheck); + dump_intfield(L,"isserif", sf->isserif); + dump_intfield(L,"issans", sf->issans); + dump_intfield(L,"encodingchanged", sf->encodingchanged); + dump_intfield(L,"strokedfont", sf->strokedfont); + dump_intfield(L,"use_typo_metrics", sf->use_typo_metrics); + dump_intfield(L,"weight_width_slope_only", sf->weight_width_slope_only); + dump_intfield(L,"head_optimized_for_cleartype",sf->head_optimized_for_cleartype); + + dump_enumfield(L,"uni_interp", (sf->uni_interp+1), uni_interp_enum); + + if (sf->map != NULL ) { + lua_newtable(L); + handle_encmap(L,sf->map, l); + lua_setfield(L,-2,"map"); + } + + dump_stringfield(L,"origname", sf->origname); /* new */ + + if (sf->private != NULL) { + lua_newtable(L); + handle_psdict(L, sf->private); + lua_setfield(L,-2,"private"); + } + + dump_stringfield(L,"xuid", sf->xuid); + + lua_createtable(L,0,40); + handle_pfminfo(L,sf->pfminfo); + lua_setfield(L,-2,"pfminfo"); + + if (sf->names != NULL) { + lua_newtable(L); + handle_ttflangname(L,sf->names); + lua_setfield(L,-2,"names"); + } + + lua_createtable(L,0,4); + dump_stringfield(L,"registry", sf->cidregistry); + dump_stringfield(L,"ordering", sf->ordering); + dump_intfield (L,"version", sf->cidversion); + dump_intfield (L,"supplement", sf->supplement); + lua_setfield(L,-2,"cidinfo"); + + /* SplineFont *cidmaster */ /* parent in a subfont */ + if (sf->subfontcnt>0) { + lua_createtable(L,sf->subfontcnt,0); + for (k=0;ksubfontcnt;k++) { + lua_checkstack(L,10); + lua_newtable(L); + handle_splinefont(L,sf->subfonts[k]); + lua_rawseti(L,-2,(k+1)); + } + lua_setfield(L,-2,"subfonts"); + } + + dump_stringfield(L,"comments", sf->comments); + dump_stringfield(L,"fontlog", sf->fontlog); + + if (sf->cvt_names != NULL) { + lua_newtable(L); + for (k=0; sf->cvt_names[k]!=END_CVT_NAMES; ++k) { + lua_pushstring(L, sf->cvt_names[k]); + lua_rawseti(L,-2,(k+1)); + } + lua_setfield(L,-2,"cvt_names"); + } + + if (sf->ttf_tables != NULL) { + lua_newtable(L); + handle_ttf_table(L,sf->ttf_tables); + lua_setfield(L,-2,"ttf_tables"); + } + + if (sf->ttf_tab_saved != NULL) { + lua_newtable(L); + handle_ttf_table(L,sf->ttf_tab_saved); + lua_setfield(L,-2,"ttf_tab_saved"); + } + + if (sf->texdata.type != tex_unset) { + lua_newtable(L); + dump_enumfield(L,"type", sf->texdata.type, tex_type_enum); + lua_newtable(L); + for (k=0;k<22;k++) { + lua_pushnumber(L,k); + lua_pushnumber(L,sf->texdata.params[k]); + lua_rawset(L,-3); + } + lua_setfield(L,-2,"params"); + lua_setfield(L,-2,"texdata"); + } + if (sf->anchor != NULL) { + lua_newtable(L); + handle_anchorclass(L,sf->anchor); + lua_setfield(L,-2,"anchor_classes"); + } + if (sf->kerns != NULL) { + lua_newtable(L); + handle_kernclass(L,sf->kerns); + lua_setfield(L,-2,"kerns"); + } + if (sf->vkerns != NULL) { + lua_newtable(L); + handle_kernclass(L,sf->vkerns); + lua_setfield(L,-2,"vkerns"); + } + if (sf->gsub_lookups != NULL) { + lua_newtable(L); + handle_lookup(L,sf->gsub_lookups); + lua_setfield(L,-2,"gsub"); + } + if (sf->gpos_lookups != NULL) { + lua_newtable(L); + handle_lookup(L,sf->gpos_lookups); + lua_setfield(L,-2,"gpos"); + } + + if (sf->sm != NULL) { + lua_newtable(L); + handle_generic_asm(L,sf->sm); + lua_setfield(L,-2,"sm"); + } + if (sf->features != NULL) { + lua_newtable(L); + handle_macfeat(L,sf->features); + lua_setfield(L,-2,"features"); + } + if (sf->mm != NULL) { + lua_newtable(L); + handle_mmset (L,sf->mm); + lua_setfield(L,-2,"mm"); + } + dump_stringfield(L,"chosenname", sf->chosenname); + + dump_intfield(L,"macstyle", sf->macstyle); + dump_stringfield(L,"fondname", sf->fondname); + + dump_intfield(L,"design_size", sf->design_size); + dump_intfield(L,"fontstyle_id", sf->fontstyle_id); + + if (sf->fontstyle_name != NULL) { + lua_newtable(L); + handle_otfname(L,sf->fontstyle_name); + lua_setfield(L,-2,"fontstyle_name"); + } + + dump_intfield(L,"design_range_bottom",sf->design_range_bottom); + dump_intfield(L,"design_range_top", sf->design_range_top); + dump_floatfield(L,"strokewidth", sf->strokewidth); + + if (sf->mark_class_cnt>0) { + lua_newtable(L); + for ( k=0; kmark_class_cnt; ++k ) { + lua_pushnumber(L,(k+1)); + lua_pushstring(L,sf->mark_classes[k]); + lua_rawset(L,-3); + } + lua_setfield(L,-1,"mark_classes"); + + lua_newtable(L); + for ( k=0; kmark_class_cnt; ++k ) { + lua_pushnumber(L,(k+1)); + lua_pushstring(L,sf->mark_class_names[k]); + lua_rawset(L,-3); + } + lua_setfield(L,-1,"mark_class_names"); + } + + dump_intfield(L,"creationtime", sf->creationtime); + dump_intfield(L,"modificationtime", sf->modificationtime); + + dump_intfield(L,"os2_version", sf->os2_version); + dump_intfield(L,"sfd_version", sf->sfd_version); + + if (sf->MATH != NULL) { + lua_newtable(L); + handle_MATH(L, sf->MATH); + lua_setfield(L,-2,"math"); + } + + if (sf->loadvalidation_state != 0) { + lua_newtable(L); + int val = 1; + int st = sf->loadvalidation_state; + if (st & lvs_bad_ps_fontname) { + lua_pushliteral(L, "bad_ps_fontname"); lua_rawseti(L,-2,val++); + } + if (st & lvs_bad_glyph_table) { + lua_pushliteral(L, "bad_glyph_table"); lua_rawseti(L,-2,val++); + } + if (st & lvs_bad_cff_table) { + lua_pushliteral(L, "bad_cff_table"); lua_rawseti(L,-2,val++); + } + if (st & lvs_bad_metrics_table) { + lua_pushliteral(L, "bad_metrics_table"); lua_rawseti(L,-2,val++); + } + if (st & lvs_bad_cmap_table) { + lua_pushliteral(L, "bad_cmap_table"); lua_rawseti(L,-2,val++); + } + if (st & lvs_bad_bitmaps_table) { + lua_pushliteral(L, "bad_bitmaps_table"); lua_rawseti(L,-2,val++); + } + if (st & lvs_bad_gx_table) { + lua_pushliteral(L, "bad_gx_table"); lua_rawseti(L,-2,val++); + } + if (st & lvs_bad_ot_table) { + lua_pushliteral(L, "bad_ot_table"); lua_rawseti(L,-2,val++); + } + if (st & lvs_bad_os2_version) { + lua_pushliteral(L, "bad_os2_version"); lua_rawseti(L,-2,val++); + } + if (st & lvs_bad_sfnt_header) { + lua_pushliteral(L, "bad_sfnt_header"); lua_rawseti(L,-2,val++); + } + lua_setfield(L,-2,"validation_state"); + } + + if (sf->horiz_base != NULL) { + lua_newtable(L); + handle_base(L, sf->horiz_base); + lua_setfield(L,-2,"horiz_base"); + } + if (sf->vert_base != NULL) { + lua_newtable(L); + handle_base(L, sf->vert_base); + lua_setfield(L,-2,"vert_base"); + } + dump_intfield(L,"extrema_bound", sf->extrema_bound); +} + +int +ff_make_table (lua_State *L) { + SplineFont *sf; + sf = *(check_isfont(L,1)); + if (sf == NULL) { + lua_pushboolean(L,0); + } else { + lua_createtable(L,0,60); + handle_splinefont(L,sf); + } + return 1; +} + +void do_ff_info (lua_State *L, SplineFont *sf) { + lua_newtable(L); + dump_stringfield(L,"familyname", sf->familyname); + dump_stringfield(L,"fontname", sf->fontname); + dump_stringfield(L,"fullname", sf->fullname); + dump_intfield (L,"italicangle", sf->italicangle); + dump_stringfield(L,"version", sf->version); + dump_stringfield(L,"weight", sf->weight); + +} + +static int +ff_info (lua_State *L) { + SplineFont *sf; + FILE *l; + int i; + const char *fontname; + int openflags = 1; + fontname = luaL_checkstring(L,1); + if (!strlen(fontname)) { + lua_pushfstring(L,"font loading failed: empty string given\n", fontname); + lua_error(L); + return 1; + } + /* test fontname for existance */ + if ((l = fopen(fontname,"r"))) { + fclose(l); + } else { + lua_pushfstring(L,"font loading failed for %s (read error)\n", fontname); + lua_error(L); + } + sf = ReadSplineFontInfo((char *)fontname,openflags); + if (sf==NULL) { + lua_pushfstring(L,"font loading failed for %s\n", fontname); + lua_error(L); + } else { + if (sf->next != NULL) { + SplineFont *sf_next; + i = 1; + lua_newtable(L); + while (sf) { + do_ff_info(L, sf); + lua_rawseti(L,-2,i); + i++; + sf_next = sf->next; + SplineFontFree(sf); + sf = sf_next; + } + } else { + do_ff_info(L, sf); + SplineFontFree(sf); + } + } + return 1; +} + +static void ff_do_cff (SplineFont *sf, char *filename, unsigned char **buf, int *bufsiz) { + FILE *f; + int32 *bsizes = NULL; + int flags = ps_flag_nocffsugar + ps_flag_nohints; + EncMap *map; + + map = EncMap1to1(sf->glyphcnt); + + if(WriteTTFFont(filename, sf, ff_cff, bsizes, bf_none, flags, map, ly_fore)) { + /* success */ + f = fopen(filename,"rb"); + readbinfile(f , buf, bufsiz); + /*fprintf(stdout,"\n%s => CFF, size: %d\n", sf->filename, *bufsiz);*/ + fclose(f); + return; + } + /* errors */ + fprintf(stdout,"\n%s => CFF, failed\n", sf->filename); + +} + +/* exported for writecff.c */ + +int ff_createcff (char *file, unsigned char **buf, int *bufsiz) { + SplineFont *sf; + int k ; + char s[] = "tempfile.cff"; + int openflags = 1; + int notdefpos = 0; + sf = ReadSplineFont(file,openflags); + if (sf) { + /* this is not the best way. nicer to have no temp file at all */ + ff_do_cff(sf, s, buf,bufsiz); + for (k=0;kglyphcnt;k++) { + if (sf->glyphs[k] && strcmp(sf->glyphs[k]->name,".notdef")==0) { + notdefpos=k; + break; + } + } + remove(s); + SplineFontFree(sf); + } + return notdefpos; +} + +int ff_get_ttc_index(char *ffname, char*psname) { + SplineFont *sf; + int i = 0; + int openflags = 1; + int index = 0; + + sf = ReadSplineFontInfo((char *)ffname,openflags); + if (sf==NULL) { + perror("font loading failed unexpectedly\n"); + exit(EXIT_FAILURE); + } + while (sf != NULL) { + if (strcmp(sf->fontname,psname)==0) { + index = i; + break; + } + i++; + sf = sf->next; + } + return index; +} + +static int warning_given = 0; + +static int +ffold_info (lua_State *L) { + if (warning_given<5) { + fprintf (stderr, "Warning: The 'fontforge' table has been renamed to 'fontloader'.\n"); + fprintf (stderr, " Please update your source file(s) accordingly.\n"); + warning_given ++; + } + return ff_info(L); +} + +static int +ffold_open (lua_State *L) { + fprintf (stderr, "Warning: The 'fontforge' table has been renamed to 'fontloader'.\n"); + fprintf (stderr, " Please update your source file(s) accordingly.\n"); + return ff_open(L); +} + + +static struct luaL_reg fflib[] = { + {"open", ffold_open}, + {"info", ffold_info}, + {"close", ff_close}, + {"apply_afmfile", ff_apply_afmfile}, + {"apply_featurefile", ff_apply_featurefile}, + {"to_table", ff_make_table}, + {NULL, NULL} +}; + +static struct luaL_reg fllib[] = { + {"open", ff_open}, + {"info", ff_info}, + {"close", ff_close}, + {"apply_afmfile", ff_apply_afmfile}, + {"apply_featurefile", ff_apply_featurefile}, + {"to_table", ff_make_table}, + {NULL, NULL} +}; + +static const struct luaL_reg fflib_m [] = { + {"__gc", ff_close }, /* doesnt work yet! */ + {NULL, NULL} /* sentinel */ +}; + +extern char *SaveTablesPref; +extern char *coord_sep ; + +int luaopen_ff (lua_State *L) { + InitSimpleStuff(); + setlocale(LC_ALL,"C"); /* undo whatever InitSimpleStuff has caused */ + coord_sep = ","; + FF_SetUiInterface(&luaui_interface); + default_encoding = FindOrMakeEncoding("ISO8859-1"); + SaveTablesPref = "VORG,JSTF,acnt,bsln,fdsc,fmtx,hsty,just,trak,Zapf,LINO"; + luaL_newmetatable(L,FONT_METATABLE); + luaL_register(L, NULL, fflib_m); + luaL_openlib(L, "fontforge", fflib, 0); + luaL_openlib(L, "fontloader", fllib, 0); + return 1; +} + -- cgit v1.2.3